YjBWSU0gOC4wAAAAABAAAMWHfVw8zwAAGlUBAHdzaWxiZXJtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3c2lsYmVybS5zZm8uY29ycC5nb29nbGUuY29tAAAAAAAAAAAAAAAAL2dvb2dsZS9zcmMvY2xvdWQvd3NpbGJlcm0vYnVpbGRfYmF0Y2gvZ29vZ2xlMy9nZW8vb25kZW1hbmQvcmVwby9tYXBzLWJvb2tpbmctdjMvdGVzdGNsaWVudC9ib29raW5nQ2xpZW50LmdvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1dGYtOA0AMzIxMAAAAAAjIiEgExJVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRwBAB/AAAAAgAAAAAAAABDAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAHYAAAAAAAAARAAAAAAAAAABAAAAAAAAAAQAAAAAAAAAegAAAAAAAAC6AAAAAAAAAAEAAAAAAAAAAwAAAAAAAAAtAAAAAAAAADUBAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhZAAAEQAAADkBAAAAEAAAQwAAAAAAAAD9DwAA4g8AAOEPAAChDwAAYA8AADgPAAA3DwAACw8AAAoPAADGDgAAhA4AADsOAAD3DQAA2A0AANUNAADIDQAAxw0AAL4NAAC2DQAArw0AAKgNAACiDQAAkQ0AAIkNAACIDQAAZg0AAEINAABBDQAAGQ0AAPQMAADyDAAA8QwAAMkMAADIDAAAwgwAAEcMAAB1CwAA5goAAJEKAAAuCgAAugkAAFUJAADsCAAAfQgAABMIAAAgBwAAcAYAABMGAADiBAAAFQQAAK8DAAAFAwAAAwMAAAIDAADrAgAAxwIAAKICAAB+AgAAWgIAADYCAAASAgAA7gEAAMoBAAClAQAAgQEAAF0BAAA5AQAAOAEAAAAAAAAAAAAAAAAAAAAAAAAACUNhbmNlbEJvb2tpbmdzU3VjY2VzcyAgICAgICAgICBpbnQACUdldEJvb2tpbmdTdGF0dXNFcnJvcnMgICAgICAgICBpbnQACUdldEJvb2tpbmdTdGF0dXNTdWNjZXNzICAgICAgICBpbnQACUxpc3RCb29raW5nc1N1Y2Nlc3MgICAgICAgICAgICBib29sAAlDcmVhdGVCb29raW5nRXJyb3JzICAgICAgICAgICAgaW50AAlDcmVhdGVCb29raW5nU3VjY2VzcyAgICAgICAgICAgaW50AAlDaGVja0F2YWlsYWJpbGl0eUVycm9ycyAgICAgICAgaW50AAlDaGVja0F2YWlsYWJpbGl0eVN1Y2Nlc3MgICAgICAgaW50AAlCYXRjaEF2YWlsYWJpbGl0eUxvb2t1cFN1Y2Nlc3MgaW50AAlCYXRjaEF2YWlsYWJpbGl0eUxvb2t1cEVycm9ycyAgaW50AAlIZWFsdGhDaGVja1N1Y2Nlc3MgICAgICAgICAgICAgYm9vbAAJVG90YWxTbG90c1Byb2Nlc3NlZCAgICAgICAgICAgIGludAB0eXBlIGNvdW50ZXJzIHN0cnVjdCB7AAApAAl1c2VCYWwgICAgICAgICAgICA9IGZsYWcuQm9vbCgidXNlX2JhdGNoX2F2YWlsYWJpbGl0eV9sb29rdXAiLCBmYWxzZSwgIldoZXRoZXIgdG8gdXNlIHRoZSBCYXRjaEF2YWlsYWJpbGl0eUxvb2t1cCBSUEMgKGFzIG9wcG9zZWQgdG8gdGhlIGRlcHJlY2F0ZWQgQ2hlY2tBdmFpbGFiaWxpdHkpIikACW91dHB1dFRvVGVybWluYWwgID0gZmxhZy5Cb29sKCJvdXRwdXRfdG9fdGVybWluYWwiLCBmYWxzZSwgIk91dHB1dCB0byB0ZXJtaW5hbCByYXRoZXIgdGhhbiBhIGZpbGUuIikACWZ1bGxTZXJ2ZXJOYW1lICAgID0gZmxhZy5TdHJpbmcoImZ1bGxfc2VydmVyX25hbWUiLCAiIiwgIkZ1bGx5IHF1YWxpZmllZCBkb21haW4gbmFtZS4gU2FtZSBuYW1lIHVzZWQgdG8gc2lnbiBDTi4gT25seSBuZWNlc3NhcnkgaWYgY2FfZmlsZSBpcyBzcGVjaWZpZWQgYW5kIHRoZSBiYXNlIFVSTCBkaWZmZXJzIGZyb20gdGhlIHNlcnZlciBhZGRyZXNzLiIpAAljYUZpbGUgICAgICAgICAgICA9IGZsYWcuU3RyaW5nKCJjYV9maWxlIiwgIiIsICJBYnNvbHV0ZSBwYXRoIHRvIHlvdXIgc2VydmVyJ3MgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IHJvb3QgY2VydC4gRG93bmxvYWRpbmcgYWxsIHJvb3RzIGN1cnJlbnRseSByZWNvbW1lbmRlZCBieSB0aGUgR29vZ2xlIEludGVybmV0IEF1dGhvcml0eSBpcyBhIHN1aXRhYmxlIGFsdGVybmF0aXZlIGh0dHBzOi8vcGtpLmdvb2dsZS5jb20vcm9vdHMucGVtLiBMZWF2ZSBibGFuayB0byBjb25uZWN0IHVzaW5nIGh0dHAgcmF0aGVyIHRoYW4gaHR0cHMuIikACW91dHB1dERpciAgICAgICAgID0gZmxhZy5TdHJpbmcoIm91dHB1dF9kaXIiLCAiIiwgIkFic29sdXRlIHBhdGggb2YgZGlyIHRvIGR1bXAgbG9nIGZpbGUuIikACWF2YWlsYWJpbGl0eUZlZWQgID0gZmxhZy5TdHJpbmcoImF2YWlsYWJpbGl0eV9mZWVkIiwgIiIsICJBYnNvbHV0ZSBwYXRoIHRvIGF2YWlsYWJpbGl0eSBmZWVkIHJlcXVpcmVkIGZvciBhbGwgdGVzdHMgZXhjZXB0IGhlYWx0aC4gRmVlZHMgY2FuIGJlIGluIGVpdGhlciBqc29uIG9yIHBiMyBmb3JtYXQiKQAJY2FuY2VsQWxsQm9va2luZ3MgPSBmbGFnLkJvb2woImNhbmNlbF9hbGxfYm9va2luZ3MiLCBmYWxzZSwgIlRoaXMgb3B0aW9uIGFzc3VtZXMgdGhhdCB0aGUgTGlzdEJvb2tpbmdzIGFuZCBVcGRhdGVCb29raW5nIGVuZHBvaW50cyBhcmUgZnVsbHkgZnVuY3Rpb25hbC4gVGhpcyBpcyBhIGNvbnZlbmllbmNlIGZsYWcgZm9yIHB1cmdpbmcgeW91ciBzeXN0ZW0gb2YgYWxsIHByZXZpb3VzbHkgY3JlYXRlZCBib29raW5ncy4iKQAJcmVzY2hlZHVsZUZsb3cgICAgPSBmbGFnLkJvb2woInJlc2NoZWR1bGluZ190ZXN0IiwgZmFsc2UsICJXaGV0aGVyIHRvIHRlc3QgdGhlIFVwZGF0ZUJvb2tpbmcgZW5kcG9pbnQuIikACXN0YXR1c0Zsb3cgICAgICAgID0gZmxhZy5Cb29sKCJib29raW5nX3N0YXR1c190ZXN0IiwgZmFsc2UsICJXaGV0aGVyIHRvIHRlc3QgdGhlIEdldEJvb2tpbmdTdGF0dXMgZW5kcG9pbnQuIikACWxpc3RGbG93ICAgICAgICAgID0gZmxhZy5Cb29sKCJsaXN0X2Jvb2tpbmdzX3Rlc3QiLCBmYWxzZSwgIldoZXRoZXIgdG8gdGVzdCB0aGUgTGlzdEJvb2tpbmdzIGVuZHBvaW50IikACWJvb2tGbG93ICAgICAgICAgID0gZmxhZy5Cb29sKCJib29raW5nX3Rlc3QiLCBmYWxzZSwgIldoZXRoZXIgdG8gdGVzdCB0aGUgQ3JlYXRlQm9va2luZyBlbmRwb2ludC4iKQAJY2hlY2tGbG93ICAgICAgICAgPSBmbGFnLkJvb2woImNoZWNrX2F2YWlsYWJpbGl0eV90ZXN0IiwgZmFsc2UsICJXaGV0aGVyIHRvIHRlc3QgdGhlIENoZWNrQXZhaWxhYmlsaXR5IGVuZHBvaW50LiIpAAloZWFsdGhGbG93ICAgICAgICA9IGZsYWcuQm9vbCgiaGVhbHRoX2NoZWNrX3Rlc3QiLCBmYWxzZSwgIldoZXRoZXIgdG8gdGVzdCB0aGUgSGVhbHRoIGVuZHBvaW50LiIpAAlhbGxGbG93cyAgICAgICAgICA9IGZsYWcuQm9vbCgiYWxsX3Rlc3RzIiwgZmFsc2UsICJXaGV0aGVyIHRvIHRlc3QgYWxsIGVuZHBvaW50cy4iKQAJdGVzdFNsb3RzICAgICAgICAgPSBmbGFnLkludCgibnVtX3Rlc3Rfc2xvdHMiLCAxMCwgIk1heGltdW0gbnVtYmVyIG9mIHNsb3RzIHRvIHRlc3QgZnJvbSBhdmFpbGFiaWxpdHlfZmVlZC4gU2xvdHMgd2lsbCBiZSBzZWxlY3RlZCByYW5kb21seSIpAAljcmVkZW50aWFsc0ZpbGUgICA9IGZsYWcuU3RyaW5nKCJjcmVkZW50aWFsc19maWxlIiwgIiIsICJGaWxlIGNvbnRhaW5pbmcgY3JlZGVudGlhbHMgZm9yIHlvdXIgc2VydmVyLiBMZWF2ZSBibGFuayB0byBieXBhc3MgYXV0aGVudGljYXRpb24uIEZpbGUgc2hvdWxkIGhhdmUgZXhhY3RseSBvbmUgbGluZSBvZiB0aGUgZm9ybSAndXNlcm5hbWU6cGFzc3dvcmQnLiIpAAlzZXJ2ZXJBZGRyICAgICAgICA9IGZsYWcuU3RyaW5nKCJzZXJ2ZXJfYWRkciIsICJleGFtcGxlLmNvbTo4MCIsICJZb3VyIGh0dHAgc2VydmVyJ3MgYWRkcmVzcyBpbiB0aGUgZm9ybWF0IG9mIGhvc3Q6cG9ydCIpAHZhciAoAABjb25zdCBsb2dGaWxlID0gImh0dHBfdGVzdF9jbGllbnRfbG9nXyIAACkACW1wYiAiZ2l0aHViLmNvbS9tYXBzLWJvb2tpbmctdjMvdjMiAAlmcGIgImdpdGh1Yi5jb20vbWFwcy1ib29raW5nLXYzL2ZlZWRzIgAACSJnaXRodWIuY29tL21hcHMtYm9va2luZy12My91dGlscyIACSJnaXRodWIuY29tL21hcHMtYm9va2luZy12My9hcGkiAAAJInRpbWUiAAkicGF0aC9maWxlcGF0aCIACSJvcyIACSJsb2ciAAkiZm10IgAJImZsYWciAGltcG9ydCAoAABwYWNrYWdlIG1haW4AKi8AbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuAFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQAV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuAGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsAFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUAAGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAAAFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuAExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwAAQ29weXJpZ2h0IDIwMTcgR29vZ2xlIEluYy4ALyoAYWQAAIAKAABQCwAAABAAAC0AAAAAAAAA1g8AALwPAAC7DwAAsg8AAJQPAABWDwAACA8AAOUOAADYDgAA0w4AALAOAACeDgAAlw4AAJMOAACHDgAAXw4AAFwOAABFDgAANA4AAAkOAADrDQAAoQ0AAFoNAAA5DQAALA0AACcNAAAGDQAAAg0AANkMAADWDAAA1QwAAKUMAACFDAAAYgwAADkMAAAWDAAA0wsAALcLAACSCwAAjgsAAGcLAABkCwAAYwsAAFILAABQCwAATwsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0ACWxvZ1N0YXRzKHN0YXRzKQAACX0ACQl1dGlscy5Mb2dGbG93KCJSZXNjaGVkdWxpbmciLCAiRW5kIikACQl9AAkJCXN0YXRzLlJlc2NoZWR1bGluZ1N1Y2Nlc3MgPSBmYWxzZQAJCQlsb2cuUHJpbnRsbihlcnIuRXJyb3IoKSkACQlpZiBlcnIgPSBhcGkuUmVzY2hlZHVsaW5nKGF2Rm9yUmVzY2hlZHVsaW5nLCBjb25uKTsgZXJyICE9IG5pbCB7AAkJc3RhdHMuUmVzY2hlZHVsaW5nU3VjY2VzcyA9IHRydWUACQl1dGlscy5Mb2dGbG93KCJSZXNjaGVkdWxpbmciLCAiU3RhcnQiKQAJaWYgKnJlc2NoZWR1bGVGbG93IHx8ICphbGxGbG93cyB7AAkvLyBmcm9tIHRoZSByZXN0IG9mIHRoZSB0ZXN0cy4ACS8vIFJlc2NoZWR1bGluZyBpcyBudWFuY2VkIGFuZCBjYW4gYmUgaXNvbGF0ZWQAAAl9AAkJdXRpbHMuTG9nRmxvdygiQ2FuY2VsIEJvb2tpbmciLCAiRW5kIikACQl9AAkJCXN0YXRzLkNhbmNlbEJvb2tpbmdzU3VjY2VzcysrAAkJCX0ACQkJCWNvbnRpbnVlAAkJCQlzdGF0cy5DYW5jZWxCb29raW5nc0Vycm9ycysrAAkJCQlsb2cuUHJpbnRmKCIlcy4gYWJhbmRvbmluZyBib29raW5nICVkLyVkIiwgZXJyLkVycm9yKCksIGksIGxlbihiKSkACQkJaWYgZXJyID0gYXBpLkNhbmNlbEJvb2tpbmcoYm9va2luZy5HZXRCb29raW5nSWQoKSwgY29ubik7IGVyciAhPSBuaWwgewAJCWZvciBpLCBib29raW5nIDo9IHJhbmdlIGIgewAJCXV0aWxzLkxvZ0Zsb3coIkNhbmNlbCBCb29raW5nIiwgIlN0YXJ0IikACWlmIGxlbihiKSA+IDAgewAJLy8gQ2FuY2VsQm9va2luZyBGbG93AAl9AAkJdXRpbHMuTG9nRmxvdygiQm9va2luZ1N0YXR1cyIsICJFbmQiKQAJCWIgPSBiWzpqXQAJCX0ACQkJaisrAAkJCWJbal0gPSBib29raW5nAAkJCXN0YXRzLkdldEJvb2tpbmdTdGF0dXNTdWNjZXNzKysACQkJfQAJCQkJY29udGludWUACQkJCXN0YXRzLkdldEJvb2tpbmdTdGF0dXNFcnJvcnMrKwAJCQkJbG9nLlByaW50ZigiJXMuIGFiYW5kb25pbmcgYm9va2luZyAlZC8lZCIsIGVyci5FcnJvcigpLCBpLCB0b3RhbEJvb2tpbmdzKQAJCQlpZiBlcnIgPSBhcGkuR2V0Qm9va2luZ1N0YXR1cyhib29raW5nLCBjb25uKTsgZXJyICE9IG5pbCB7AAkJZm9yIGksIGJvb2tpbmcgOj0gcmFuZ2UgYiB7AAkJaiA6PSAwAAAJCXRvdGFsQm9va2luZ3MgOj0gbGVuKGIpAAkJdXRpbHMuTG9nRmxvdygiQm9va2luZ1N0YXR1cyIsICJTdGFydCIpAGFkAAA8AAAAQAIAAAAQAAB6AAAAAAAAAOQPAADSDwAAnw8AAJsPAACJDwAAdg8AAHMPAAByDwAAFA8AAAMPAADMDgAAyQ4AAMgOAAB6DgAACA4AAL4NAAC7DQAAug0AAKUNAACGDQAAZA0AADQNAAAQDQAA9AwAAPAMAADADAAAjAwAAHkMAAB1DAAAcgwAAHEMAABVDAAAKgwAABAMAADuCwAAzwsAAHgLAAB0CwAAKwsAABkLAADcCgAA2AoAALEKAACwCgAAWQoAAEcKAAD0CQAA8AkAAO0JAADsCQAA3gkAAKgJAACWCQAAWQkAAE4JAAARCQAA0QgAAI4IAABjCAAAVggAACoIAAAkCAAAHwgAABsIAADnBwAAwgcAAKYHAAB3BwAAXwcAAF4HAABVBwAAPAcAAAMHAAC9BgAAmQYAAIwGAACHBgAAYwYAAFYGAABPBgAASwYAAD0GAAAQBgAADQYAAPUFAADfBQAAwgUAAJ4FAACGBQAAbQUAAD8FAAAsBQAA5gQAAMYEAAC5BAAAtAQAAJoEAAB6BAAAdgQAAFQEAABRBAAAOwQAAAgEAADeAwAAtAMAALADAACGAwAAYQMAAD4DAAAsAwAABwMAAOsCAADnAgAAvwIAALwCAAC7AgAAoQIAAIICAABvAgAARQIAAEECAABAAgAACQIAAAAAAAAAAAkJfQAJCQliID0gR2VuZXJhdGVCb29raW5ncyhhdiwgJnN0YXRzLCBjb25uKQAJCWlmIGxlbgAJCX0ACQkJYiA9IEdlbmVyYXRlQm9va2luZ3MoYXYsICZzdGF0cywgY29ubikACQlpZiBsZW4oYikgPT0gMCB7AAlpZiAqc3RhdHVzRmxvdyB8fCAqYWxsRmxvd3MgewAJLy8gR2V0Qm9va2luZ1N0YXR1cyBGbG93AAAJfQAJCXV0aWxzLkxvZ0Zsb3coIkxpc3QgQm9va2luZ3MiLCAiRW5kIikACQl9AAkJCWxvZy5QcmludGxuKGVyci5FcnJvcigpKQAJCQlzdGF0cy5MaXN0Qm9va2luZ3NTdWNjZXNzID0gZmFsc2UACQlpZiBlcnIgIT0gbmlsIHsACQlzdGF0cy5MaXN0Qm9va2luZ3NTdWNjZXNzID0gdHJ1ZQAJCWIsIGVyciA9IGFwaS5MaXN0Qm9va2luZ3MoYiwgY29ubikACQl1dGlscy5Mb2dGbG93KCJMaXN0IEJvb2tpbmdzIiwgIlN0YXJ0IikACQl9AAkJCWIgPSBHZW5lcmF0ZUJvb2tpbmdzKGF2LCAmc3RhdHMsIGNvbm4pAAkJaWYgbGVuKGIpID09IDAgJiYgISpjYW5jZWxBbGxCb29raW5ncyB7AAlpZiAqbGlzdEZsb3cgfHwgKmFsbEZsb3dzIHx8ICpjYW5jZWxBbGxCb29raW5ncyB7AAkvLyBMaXN0Qm9va2luZ3MgRmxvdwAJfQAJCXV0aWxzLkxvZ0Zsb3coIkJvb2tpbmciLCAiRW5kIikACQl9AAkJCXN0YXRzLkNyZWF0ZUJvb2tpbmdTdWNjZXNzKysACQkJYiA9IGFwcGVuZChiLCBib29raW5nKQAJCQl9AAkJCQljb250aW51ZQAJCQkJc3RhdHMuQ3JlYXRlQm9va2luZ0Vycm9ycysrAAkJCQlsb2cuUHJpbnRmKCIlcy4gc2tpcHBpbmcgc2xvdCAlZC8lZCIsIGVyci5FcnJvcigpLCBpLCB0b3RhbFNsb3RzKQAJCQlpZiBlcnIgIT0gbmlsIHsACQkJYm9va2luZywgZXJyIDo9IGFwaS5DcmVhdGVCb29raW5nKGEsIGNvbm4pAAkJZm9yIGksIGEgOj0gcmFuZ2UgYXYgewAJCXRvdGFsU2xvdHMgOj0gbGVuKGF2KQAJCXV0aWxzLkxvZ0Zsb3coIkJvb2tpbmciLCAiU3RhcnQiKQAJaWYgKmJvb2tGbG93IHx8ICphbGxGbG93cyB7AAl2YXIgYiBbXSptcGIuQm9va2luZwAJLy8gQ3JlYXRlQm9va2luZyBGbG93LgAJfQAJCXV0aWxzLkxvZ0Zsb3coIkF2YWlsYWJpbGl0eSBDaGVjayIsICJFbmQiKQAJCWF2ID0gYXZbOmpdAAkJfQAJCQlqKysACQkJYXZbal0gPSBhAAkJCXN0YXRzLkNoZWNrQXZhaWxhYmlsaXR5U3VjY2VzcysrAAkJCX0ACQkJCWNvbnRpbnVlAAkJCQlzdGF0cy5DaGVja0F2YWlsYWJpbGl0eUVycm9ycysrAAkJCQlsb2cuUHJpbnRmKCIlcy4gc2tpcHBpbmcgc2xvdCAlZC8lZCIsIGVyci5FcnJvcigpLCBpLCB0b3RhbFNsb3RzKQAJCQlpZiBlcnIgPSBhcGkuQ2hlY2tBdmFpbGFiaWxpdHkoYSwgY29ubik7IGVyciAhPSBuaWwgewAJCWZvciBpLCBhIDo9IHJhbmdlIGF2IHsACQlqIDo9IDAAAAkJdG90YWxTbG90cyA6PSBsZW4oYXYpAAkJdXRpbHMuTG9nRmxvdygiQXZhaWxhYmlsaXR5IENoZWNrIiwgIlN0YXJ0IikACQkvLyBBdmFpbGFiaWxpdHlDaGVjayBGbG93AAl9IGVsc2UgaWYgKmNoZWNrRmxvdyB8fCAqYWxsRmxvd3MgewAJCXV0aWxzLkxvZ0Zsb3coIkJhdGNoIEF2YWlsYWJpbGl0eSBMb29rdXAiLCAiRW5kIikACQl9AAkJCX0ACQkJCX0ACQkJCQlzdGF0cy5CYXRjaEF2YWlsYWJpbGl0eUxvb2t1cFN1Y2Nlc3MrKwAJCQkJfSBlbHNlIHsACQkJCQlzdGF0cy5CYXRjaEF2YWlsYWJpbGl0eUxvb2t1cEVycm9ycysrAAkJCQkJbG9nLlByaW50ZigiQmF0Y2hBdmFpbGFiaWxpdHlMb29rdXAgcmV0dXJuZWQgZXJyb3I6ICV2IiwgZXJyKQAJCQkJaWYgZXJyID0gYXBpLkJhdGNoQXZhaWxhYmlsaXR5TG9va3VwKGEsIGNvbm4pOyBlcnIgIT0gbmlsIHsACQkJZm9yIF8sIGEgOj0gcmFuZ2UgdXRpbHMuU3BsaXRBdmFpbGFiaWxpdHlCeU1lcmNoYW50KGF2KSB7AAkJfSBlbHNlIHsACQkJbG9nLlByaW50ZigiU3BsaXRBdmFpbGFiaWxpdHlCeU1lcmNoYW50IGZhaWxlZDogJXYiLCBlcnIpAAkJaWYgZXJyICE9IG5pbCB7AAkJdXRpbHMuTG9nRmxvdygiQmF0Y2ggQXZhaWxhYmlsaXR5IExvb2t1cCIsICJTdGFydCIpAAlpZiAqdXNlQmFsIHsAAAl9AAkJfQAJCQlsb2cuRmF0YWxmKCJGYWlsZWQgdG8gZ2V0IGF2YWlsYWJpbGl0eSBmb3IgcmVzY2hlZHVsaW5nIHRlc3Q6ICV2IiwgZXJyLkVycm9yKCkpAAkJaWYgZXJyICE9IG5pbCB7AAkJYXZGb3JSZXNjaGVkdWxpbmcsIGVyciA9IHV0aWxzLkF2YWlsYWJpbGl0eUZyb20oKmF2YWlsYWJpbGl0eUZlZWQsICp0ZXN0U2xvdHMsIHRydWUpAAAJCXN0YXRzLlRvdGFsU2xvdHNQcm9jZXNzZWQgKz0gbGVuKGF2KQAJCX0ACQkJbG9nLkZhdGFsZigiRmFpbGVkIHRvIGdldCBhdmFpbGFiaWxpdHk6ICV2IiwgZXJyLkVycm9yKCkpAAkJaWYgZXJyICE9IG5pbCB7AAkJYXYsIGVyciA9IHV0aWxzLkF2YWlsYWJpbGl0eUZyb20oKmF2YWlsYWJpbGl0eUZlZWQsICp0ZXN0U2xvdHMsIGZhbHNlKQAJCX0ACQkJbG9nLkZhdGFsKCJwbGVhc2Ugc2V0IGF2YWlsYWJpbGl0eV9mZWVkIGZsYWcgaWYgeW91IHdpc2ggdG8gdGVzdCBhZGRpdGlvbmFsIGZsb3dzIikACQlpZiAqYXZhaWxhYmlsaXR5RmVlZCA9PSAiIiB7AAkJLy8gQnVpbGQgYXZhaWxhYmxpbGl0eSByZWNvcmRzLgAJaWYgISpjYW5jZWxBbGxCb29raW5ncyB7AAl2YXIgYXZGb3JSZXNjaGVkdWxpbmcgW10qZnBiLkF2YWlsYWJpbGl0eQAJdmFyIGF2IFtdKmZwYi5BdmFpbGFiaWxpdHkAAAl9AAkJfQAJCQlsb2dTdGF0cyhzdGF0cykACQkJISpsaXN0RmxvdyAmJiAhKnN0YXR1c0Zsb3cgJiYgISpyZXNjaGVkdWxlRmxvdyB7AAkJaWYgISphbGxGbG93cyAmJiAhKmNoZWNrRmxvdyAmJiAhKmJvb2tGbG93ICYmAAkJfQAJCQlsb2cuUHJpbnRsbihlcnIuRXJyb3IoKSkACQkJc3RhdHMuSGVhbHRoQ2hlY2tTdWNjZXNzID0gZmFsc2UACQlpZiBlcnIgOj0gYXBpLkhlYWx0aENoZWNrKGNvbm4pOyBl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Qm9va2luZ1N0YXR1c0Vycm9ycytzdGF0cy5HZXRCb29raW5nU3RhdHVzU3VjY2VzcykACQl0b3RhbEVycm9ycyArPSBzdGF0cy5HZXRCb29raW5nU3RhdHVzRXJyb3JzAAlpZiAqc3RhdHVzRmxvdyB8fCAqYWxsRmxvd3MgewAJfQAJCX0ACQkJbG9nLlByaW50bG4oIkxpc3RCb29raW5ncyBGYWlsZWQiKQAJCQl0b3RhbEVycm9ycysrAAkJfSBlbHNlIHsACQkJbG9nLlByaW50bG4oIkxpc3RCb29raW5ncyBTdWNjZWVkZWQiKQAJCWlmIHN0YXRzLkxpc3RCb29raW5nc1N1Y2Nlc3MgewAJaWYgKmxpc3RGbG93IHx8ICphbGxGbG93cyB8fCAqY2FuY2VsQWxsQm9va2luZ3MgewAJfQAJCWxvZy5QcmludGYoIkNyZWF0ZUJvb2tpbmcgRXJyb3JzOiAlZC8lZCIsIHN0YXRzLkNyZWF0ZUJvb2tpbmdFcnJvcnMsIHN0YXRzLkNyZWF0ZUJvb2tpbmdFcnJvcnMrc3RhdHMuQ3JlYXRlQm9va2luZ1N1Y2Nlc3MpAAkJdG90YWxFcnJvcnMgKz0gc3RhdHMuQ3JlYXRlQm9va2luZ0Vycm9ycwAJaWYgKmJvb2tGbG93IHx8ICphbGxGbG93cyB7AAl9AAkJbG9nLlByaW50ZigiQ2hlY2tBdmFpbGFiaWxpdHkgRXJyb3JzOiAlZC8lZCIsIHN0YXRzLkNoZWNrQXZhaWxhYmlsaXR5RXJyb3JzLCBzdGF0cy5DaGVja0F2YWlsYWJpbGl0eUVycm9ycytzdGF0cy5DaGVja0F2YWlsYWJpbGl0eVN1Y2Nlc3MpAAkJdG90YWxFcnJvcnMgKz0gc3RhdHMuQ2hlY2tBdmFpbGFiaWxpdHlFcnJvcnMACX0gZWxzZSBpZiAqY2hlY2tGbG93IHx8ICphbGxGbG93cyB7AAkJbG9nLlByaW50ZigiQmF0Y2hBdmFpbGFiaWxpdHlMb29rdXAgRXJyb3JzOiAlZC8lZCIsIHN0YXRzLkJhdGNoQXZhaWxhYmlsaXR5TG9va3VwRXJyb3JzLCBzdGF0cy5CYXRjaEF2YWlsYWJpbGl0eUxvb2t1cEVycm9ycytzdGF0cy5CYXRjaEF2YWlsYWJpbGl0eUxvb2t1cFN1Y2Nlc3MpAAkJdG90YWxFcnJvcnMgKz0gc3RhdHMuQmF0Y2hBdmFpbGFiaWxpdHlMb29rdXBFcnJvcnMACWlmICp1c2VCYWwgewAJfQAJCX0ACQkJbG9nLlByaW50bG4oIkhlYWx0aENoZWNrIEZhaWxlZCIpAAkJCXRvdGFsRXJyb3JzKysACQl9IGVsc2UgewAJCQlsb2cuUHJpbnRsbigiSGVhbHRoQ2hlY2sgU3VjY2VlZGVkIikACQlpZiBzdGF0cy5IZWFsdGhDaGVja1N1Y2Nlc3MgewAJaWYgKmhlYWx0aEZsb3cgfHwgKmFsbEZsb3dzIHsACXZhciB0b3RhbEVycm9ycyBpbnQACWxvZy5QcmludGxuKCJcbioqKioqKioqKioqKiogQmVnaW4gU3RhdHMgKioqKioqKioqKioqKlxuIikAZnVuYyBsb2dTdGF0cyhzdGF0cyBjb3VudGVycykgewAAfQAJcmV0dXJuIG9zLkNyZWF0ZShvdXRGaWxlKQAACW91dEZpbGUgOj0gZmlsZXBhdGguSm9pbihvdXRQYXRoLCBmbXQuU3ByaW50ZigiJXMlcyIsIGxvZ0ZpbGUsIG5vd1N0cmluZykpAAlub3dTdHJpbmcgOj0gZm10LlNwcmludGYoIiVkLSUwMmQtJTAyZF8lMDJkLSUwMmQtJTAyZCIsIG5vdy5ZZWFyKCksIG5vdy5Nb250aCgpLCBub3cuRGF5KCksIG5vdy5Ib3VyKCksIG5vdy5NaW51dGUoKSwgbm93LlNlY29uZCgpKQAJbm93IDo9IHRpbWUuTm93KCkuVVRDKCkAAAl9AAkJfQAJCQlyZXR1cm4gbmlsLCBlcnIACQlpZiBlcnIgIT0gbmlsIHsACQlvdXRQYXRoLCBlcnIgPSBvcy5HZXR3ZCgpAAlpZiBvdXRQYXRoID09ICIiIHsACW91dFBhdGggOj0gKm91dHB1dERpcgAJdmFyIGVyciBlcnJvcgBmdW5jIGNyZWF0ZUxvZ0ZpbGUoKSAoKm9zLkZpbGUsIGVycm9yKSB7AAB9AAlyZXR1cm4gb3V0AAl9AAkJc3RhdHMuQ3JlYXRlQm9va2luZ1N1Y2Nlc3MrKwAJCW91dCA9IGFwcGVuZChvdXQsIGJvb2tpbmcpAAkJfQAJCQljb250aW51ZQAJCQlzdGF0cy5DcmVhdGVCb29raW5nRXJyb3JzKysACQkJbG9nLlByaW50ZigiJXMuIHNraXBwaW5nIHNsb3QgJWQvJWQiLCBlcnIuRXJyb3IoKSwgaSwgdG90YWxTbG90cykACQlpZiBlcnIgIT0gbmlsIHsACQlib29raW5nLCBlcnIgOj0gYXBpLkNyZWF0ZUJvb2tpbmcoYSwgY29ubikAAAkJfQAJCQlzdGF0cy5DaGVja0F2YWlsYWJpbGl0eVN1Y2Nlc3MrKwAJCQl9AAkJCQljb250aW51ZQAJCQkJc3RhdHMuQ2hlY2tBdmFpbGFiaWxpdHlFcnJvcnMrKwAJCQkJbG9nLlByaW50ZigiJXMuIHNraXBwaW5nIHNsb3QgJWQvJWQiLCBlcnIuRXJyb3IoKSwgaSwgdG90YWxTbG90cykACQkJaWYgZXJyIDo9IGFwaS5DaGVja0F2YWlsYWJpbGl0eShhLCBjb25uKTsgZXJyICE9IG5pbCB7AAkJfSBlbHNlIHsACQkJc3RhdHMuQmF0Y2hBdmFpbGFiaWxpdHlMb29rdXBTdWNjZXNzKysACQkJfQAJCQkJY29udGludWUACQkJCXN0YXRzLkJhdGNoQXZhaWxhYmlsaXR5TG9va3VwRXJyb3JzKysACQkJCWxvZy5QcmludGYoIkJBTCBlcnJvcjogJXMuIHNraXBwaW5nIHNsb3QgJWQvJWQiLCBlcnIuRXJyb3IoKSwgaSwgdG90YWxTbG90cykACQkJaWYgZXJyIDo9IGFwaS5CYXRjaEF2YWlsYWJpbGl0eUxvb2t1cChbXSpmcGIuQXZhaWxhYmlsaXR5e2F9LCBjb25uKTsgZXJyICE9IG5pbCB7AAkJaWYgKnVzZUJhbCB7AAlmb3IgaSwgYSA6PSByYW5nZSBhdiB7AAl0b3RhbFNsb3RzIDo9IGxlbihhdikACXZhciBvdXQgYXBpLkJvb2tpbmdzAAAJZGVmZXIgdXRpbHMuTG9nRmxvdygiR2VuZXJhdGUgRnJlc2ggSW52ZW50b3J5IiwgIkVuZCIpAAl1dGlscy5Mb2dGbG93KCJHZW5lcmF0ZSBGcmVzaCBJbnZlbnRvcnkiLCAiU3RhcnQiKQAJbG9nLlByaW50bG4oIm5vIHByZXZpb3VzIGJvb2tpbmdzIHRvIHVzZSwgYWNxdWlyaW5nIG5ldyBpbnZlbnRvcnkiKQBmdW5jIEdlbmVyYXRlQm9va2luZ3MoYXYgW10qZnBiLkF2YWlsYWJpbGl0eSwgc3RhdHMgKmNvdW50ZXJzLCBjb25uICphcGkuSFRUUENvbm5lY3Rpb24pIGFwaS5Cb29raW5ncyB7AC8vIEdlbmVyYXRlQm9va2luZ3MgY3JlYXRlcyBib29raW5ncyBmcm9tIGFuIGF2YWlsYWJpbGl0eSBmZWVkLgAAfQAJUmVzY2hlZHVsaW5nU3VjY2VzcyAgICAgICAgICAgIGJvb2wACUNhbmNlbEJvb2tpbmdzRXJyb3JzICAgICAgICAgICBpbnQA