autemaliquam
Version:
A simple, maximally extensible, dependency minimized framework for building modern Ethereum dApps
14 lines • 1.17 MB
JavaScript
(window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([[9],{
/***/ "./node_modules/squarelink/lib/squarelink.min.js":
/*!*******************************************************!*\
!*** ./node_modules/squarelink/lib/squarelink.min.js ***!
\*******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("!function(e,t){ true?module.exports=t():undefined}(this,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=257)}([function(e,t){\"function\"==typeof Object.create?e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}}},function(e,t,r){var n=r(7),i=n.Buffer;function o(e,t){for(var r in e)t[r]=e[r]}function a(e,t,r){return i(e,t,r)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?e.exports=n:(o(n,t),t.Buffer=a),a.prototype=Object.create(i.prototype),o(i,a),a.from=function(e,t,r){if(\"number\"==typeof e)throw new TypeError(\"Argument must not be a number\");return i(e,t,r)},a.alloc=function(e,t,r){if(\"number\"!=typeof e)throw new TypeError(\"Argument must be a number\");var n=i(e);return void 0!==t?\"string\"==typeof r?n.fill(t,r):n.fill(t):n.fill(0),n},a.allocUnsafe=function(e){if(\"number\"!=typeof e)throw new TypeError(\"Argument must be a number\");return i(e)},a.allocUnsafeSlow=function(e){if(\"number\"!=typeof e)throw new TypeError(\"Argument must be a number\");return n.SlowBuffer(e)}},function(e,t,r){(function(e){var n=Object.getOwnPropertyDescriptors||function(e){for(var t=Object.keys(e),r={},n=0;n<t.length;n++)r[t[n]]=Object.getOwnPropertyDescriptor(e,t[n]);return r},i=/%[sdj%]/g;t.format=function(e){if(!g(e)){for(var t=[],r=0;r<arguments.length;r++)t.push(s(arguments[r]));return t.join(\" \")}r=1;for(var n=arguments,o=n.length,a=String(e).replace(i,(function(e){if(\"%%\"===e)return\"%\";if(r>=o)return e;switch(e){case\"%s\":return String(n[r++]);case\"%d\":return Number(n[r++]);case\"%j\":try{return JSON.stringify(n[r++])}catch(e){return\"[Circular]\"}default:return e}})),f=n[r];r<o;f=n[++r])b(f)||!_(f)?a+=\" \"+f:a+=\" \"+s(f);return a},t.deprecate=function(r,n){if(void 0!==e&&!0===e.noDeprecation)return r;if(void 0===e)return function(){return t.deprecate(r,n).apply(this,arguments)};var i=!1;return function(){if(!i){if(e.throwDeprecation)throw new Error(n);e.traceDeprecation?console.trace(n):console.error(n),i=!0}return r.apply(this,arguments)}};var o,a={};function s(e,r){var n={seen:[],stylize:c};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),p(r)?n.showHidden=r:r&&t._extend(n,r),v(n.showHidden)&&(n.showHidden=!1),v(n.depth)&&(n.depth=2),v(n.colors)&&(n.colors=!1),v(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=f),u(n,e,n.depth)}function f(e,t){var r=s.styles[t];return r?\"\u001b[\"+s.colors[r][0]+\"m\"+e+\"\u001b[\"+s.colors[r][1]+\"m\":e}function c(e,t){return e}function u(e,r,n){if(e.customInspect&&r&&A(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,e);return g(i)||(i=u(e,i,n)),i}var o=function(e,t){if(v(t))return e.stylize(\"undefined\",\"undefined\");if(g(t)){var r=\"'\"+JSON.stringify(t).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return e.stylize(r,\"string\")}if(y(t))return e.stylize(\"\"+t,\"number\");if(p(t))return e.stylize(\"\"+t,\"boolean\");if(b(t))return e.stylize(\"null\",\"null\")}(e,r);if(o)return o;var a=Object.keys(r),s=function(e){var t={};return e.forEach((function(e,r){t[e]=!0})),t}(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(r)),E(r)&&(a.indexOf(\"message\")>=0||a.indexOf(\"description\")>=0))return h(r);if(0===a.length){if(A(r)){var f=r.name?\": \"+r.name:\"\";return e.stylize(\"[Function\"+f+\"]\",\"special\")}if(m(r))return e.stylize(RegExp.prototype.toString.call(r),\"regexp\");if(w(r))return e.stylize(Date.prototype.toString.call(r),\"date\");if(E(r))return h(r)}var c,_=\"\",S=!1,k=[\"{\",\"}\"];(d(r)&&(S=!0,k=[\"[\",\"]\"]),A(r))&&(_=\" [Function\"+(r.name?\": \"+r.name:\"\")+\"]\");return m(r)&&(_=\" \"+RegExp.prototype.toString.call(r)),w(r)&&(_=\" \"+Date.prototype.toUTCString.call(r)),E(r)&&(_=\" \"+h(r)),0!==a.length||S&&0!=r.length?n<0?m(r)?e.stylize(RegExp.prototype.toString.call(r),\"regexp\"):e.stylize(\"[Object]\",\"special\"):(e.seen.push(r),c=S?function(e,t,r,n,i){for(var o=[],a=0,s=t.length;a<s;++a)M(t,String(a))?o.push(l(e,t,r,n,String(a),!0)):o.push(\"\");return i.forEach((function(i){i.match(/^\\d+$/)||o.push(l(e,t,r,n,i,!0))})),o}(e,r,n,s,a):a.map((function(t){return l(e,r,n,s,t,S)})),e.seen.pop(),function(e,t,r){if(e.reduce((function(e,t){return 0,t.indexOf(\"\\n\")>=0&&0,e+t.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1}),0)>60)return r[0]+(\"\"===t?\"\":t+\"\\n \")+\" \"+e.join(\",\\n \")+\" \"+r[1];return r[0]+t+\" \"+e.join(\", \")+\" \"+r[1]}(c,_,k)):k[0]+_+k[1]}function h(e){return\"[\"+Error.prototype.toString.call(e)+\"]\"}function l(e,t,r,n,i,o){var a,s,f;if((f=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?s=f.set?e.stylize(\"[Getter/Setter]\",\"special\"):e.stylize(\"[Getter]\",\"special\"):f.set&&(s=e.stylize(\"[Setter]\",\"special\")),M(n,i)||(a=\"[\"+i+\"]\"),s||(e.seen.indexOf(f.value)<0?(s=b(r)?u(e,f.value,null):u(e,f.value,r-1)).indexOf(\"\\n\")>-1&&(s=o?s.split(\"\\n\").map((function(e){return\" \"+e})).join(\"\\n\").substr(2):\"\\n\"+s.split(\"\\n\").map((function(e){return\" \"+e})).join(\"\\n\")):s=e.stylize(\"[Circular]\",\"special\")),v(a)){if(o&&i.match(/^\\d+$/))return s;(a=JSON.stringify(\"\"+i)).match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,\"name\")):(a=a.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),a=e.stylize(a,\"string\"))}return a+\": \"+s}function d(e){return Array.isArray(e)}function p(e){return\"boolean\"==typeof e}function b(e){return null===e}function y(e){return\"number\"==typeof e}function g(e){return\"string\"==typeof e}function v(e){return void 0===e}function m(e){return _(e)&&\"[object RegExp]\"===S(e)}function _(e){return\"object\"==typeof e&&null!==e}function w(e){return _(e)&&\"[object Date]\"===S(e)}function E(e){return _(e)&&(\"[object Error]\"===S(e)||e instanceof Error)}function A(e){return\"function\"==typeof e}function S(e){return Object.prototype.toString.call(e)}function k(e){return e<10?\"0\"+e.toString(10):e.toString(10)}t.debuglog=function(r){if(v(o)&&(o=e.env.NODE_DEBUG||\"\"),r=r.toUpperCase(),!a[r])if(new RegExp(\"\\\\b\"+r+\"\\\\b\",\"i\").test(o)){var n=e.pid;a[r]=function(){var e=t.format.apply(t,arguments);console.error(\"%s %d: %s\",r,n,e)}}else a[r]=function(){};return a[r]},t.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:\"cyan\",number:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"},t.isArray=d,t.isBoolean=p,t.isNull=b,t.isNullOrUndefined=function(e){return null==e},t.isNumber=y,t.isString=g,t.isSymbol=function(e){return\"symbol\"==typeof e},t.isUndefined=v,t.isRegExp=m,t.isObject=_,t.isDate=w,t.isError=E,t.isFunction=A,t.isPrimitive=function(e){return null===e||\"boolean\"==typeof e||\"number\"==typeof e||\"string\"==typeof e||\"symbol\"==typeof e||void 0===e},t.isBuffer=r(106);var x=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function I(){var e=new Date,t=[k(e.getHours()),k(e.getMinutes()),k(e.getSeconds())].join(\":\");return[e.getDate(),x[e.getMonth()],t].join(\" \")}function M(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){console.log(\"%s - %s\",I(),t.format.apply(t,arguments))},t.inherits=r(107),t._extend=function(e,t){if(!t||!_(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e};var T=\"undefined\"!=typeof Symbol?Symbol(\"util.promisify.custom\"):void 0;function P(e,t){if(!e){var r=new Error(\"Promise was rejected with a falsy value\");r.reason=e,e=r}return t(e)}t.promisify=function(e){if(\"function\"!=typeof e)throw new TypeError('The \"original\" argument must be of type Function');if(T&&e[T]){var t;if(\"function\"!=typeof(t=e[T]))throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');return Object.defineProperty(t,T,{value:t,enumerable:!1,writable:!1,configurable:!0}),t}function t(){for(var t,r,n=new Promise((function(e,n){t=e,r=n})),i=[],o=0;o<arguments.length;o++)i.push(arguments[o]);i.push((function(e,n){e?r(e):t(n)}));try{e.apply(this,i)}catch(e){r(e)}return n}return Object.setPrototypeOf(t,Object.getPrototypeOf(e)),T&&Object.defineProperty(t,T,{value:t,enumerable:!1,writable:!1,configurable:!0}),Object.defineProperties(t,n(e))},t.promisify.custom=T,t.callbackify=function(t){if(\"function\"!=typeof t)throw new TypeError('The \"original\" argument must be of type Function');function r(){for(var r=[],n=0;n<arguments.length;n++)r.push(arguments[n]);var i=r.pop();if(\"function\"!=typeof i)throw new TypeError(\"The last argument must be of type Function\");var o=this,a=function(){return i.apply(o,arguments)};t.apply(this,r).then((function(t){e.nextTick(a,null,t)}),(function(t){e.nextTick(P,t,a)}))}return Object.setPrototypeOf(r,Object.getPrototypeOf(t)),Object.defineProperties(r,n(t)),r}}).call(this,r(9))},function(e,t,r){(function(e){!function(e,t){\"use strict\";function n(e,t){if(!e)throw new Error(t||\"Assertion failed\")}function i(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}function o(e,t,r){if(o.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&(\"le\"!==t&&\"be\"!==t||(r=t,t=10),this._init(e||0,t||10,r||\"be\"))}var a;\"object\"==typeof e?e.exports=o:t.BN=o,o.BN=o,o.wordSize=26;try{a=r(140).Buffer}catch(e){}function s(e,t,r){for(var n=0,i=Math.min(e.length,r),o=t;o<i;o++){var a=e.charCodeAt(o)-48;n<<=4,n|=a>=49&&a<=54?a-49+10:a>=17&&a<=22?a-17+10:15&a}return n}function f(e,t,r,n){for(var i=0,o=Math.min(e.length,r),a=t;a<o;a++){var s=e.charCodeAt(a)-48;i*=n,i+=s>=49?s-49+10:s>=17?s-17+10:s}return i}o.isBN=function(e){return e instanceof o||null!==e&&\"object\"==typeof e&&e.constructor.wordSize===o.wordSize&&Array.isArray(e.words)},o.max=function(e,t){return e.cmp(t)>0?e:t},o.min=function(e,t){return e.cmp(t)<0?e:t},o.prototype._init=function(e,t,r){if(\"number\"==typeof e)return this._initNumber(e,t,r);if(\"object\"==typeof e)return this._initArray(e,t,r);\"hex\"===t&&(t=16),n(t===(0|t)&&t>=2&&t<=36);var i=0;\"-\"===(e=e.toString().replace(/\\s+/g,\"\"))[0]&&i++,16===t?this._parseHex(e,i):this._parseBase(e,t,i),\"-\"===e[0]&&(this.negative=1),this.strip(),\"le\"===r&&this._initArray(this.toArray(),t,r)},o.prototype._initNumber=function(e,t,r){e<0&&(this.negative=1,e=-e),e<67108864?(this.words=[67108863&e],this.length=1):e<4503599627370496?(this.words=[67108863&e,e/67108864&67108863],this.length=2):(n(e<9007199254740992),this.words=[67108863&e,e/67108864&67108863,1],this.length=3),\"le\"===r&&this._initArray(this.toArray(),t,r)},o.prototype._initArray=function(e,t,r){if(n(\"number\"==typeof e.length),e.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(e.length/3),this.words=new Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var o,a,s=0;if(\"be\"===r)for(i=e.length-1,o=0;i>=0;i-=3)a=e[i]|e[i-1]<<8|e[i-2]<<16,this.words[o]|=a<<s&67108863,this.words[o+1]=a>>>26-s&67108863,(s+=24)>=26&&(s-=26,o++);else if(\"le\"===r)for(i=0,o=0;i<e.length;i+=3)a=e[i]|e[i+1]<<8|e[i+2]<<16,this.words[o]|=a<<s&67108863,this.words[o+1]=a>>>26-s&67108863,(s+=24)>=26&&(s-=26,o++);return this.strip()},o.prototype._parseHex=function(e,t){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var r=0;r<this.length;r++)this.words[r]=0;var n,i,o=0;for(r=e.length-6,n=0;r>=t;r-=6)i=s(e,r,r+6),this.words[n]|=i<<o&67108863,this.words[n+1]|=i>>>26-o&4194303,(o+=24)>=26&&(o-=26,n++);r+6!==t&&(i=s(e,t,r+6),this.words[n]|=i<<o&67108863,this.words[n+1]|=i>>>26-o&4194303),this.strip()},o.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=t)n++;n--,i=i/t|0;for(var o=e.length-r,a=o%n,s=Math.min(o,o-a)+r,c=0,u=r;u<s;u+=n)c=f(e,u,u+n,t),this.imuln(i),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c);if(0!==a){var h=1;for(c=f(e,u,e.length,t),u=0;u<a;u++)h*=t;this.imuln(h),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c)}},o.prototype.copy=function(e){e.words=new Array(this.length);for(var t=0;t<this.length;t++)e.words[t]=this.words[t];e.length=this.length,e.negative=this.negative,e.red=this.red},o.prototype.clone=function(){var e=new o(null);return this.copy(e),e},o.prototype._expand=function(e){for(;this.length<e;)this.words[this.length++]=0;return this},o.prototype.strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?\"<BN-R: \":\"<BN: \")+this.toString(16)+\">\"};var c=[\"\",\"0\",\"00\",\"000\",\"0000\",\"00000\",\"000000\",\"0000000\",\"00000000\",\"000000000\",\"0000000000\",\"00000000000\",\"000000000000\",\"0000000000000\",\"00000000000000\",\"000000000000000\",\"0000000000000000\",\"00000000000000000\",\"000000000000000000\",\"0000000000000000000\",\"00000000000000000000\",\"000000000000000000000\",\"0000000000000000000000\",\"00000000000000000000000\",\"000000000000000000000000\",\"0000000000000000000000000\"],u=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],h=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function l(e,t,r){r.negative=t.negative^e.negative;var n=e.length+t.length|0;r.length=n,n=n-1|0;var i=0|e.words[0],o=0|t.words[0],a=i*o,s=67108863&a,f=a/67108864|0;r.words[0]=s;for(var c=1;c<n;c++){for(var u=f>>>26,h=67108863&f,l=Math.min(c,t.length-1),d=Math.max(0,c-e.length+1);d<=l;d++){var p=c-d|0;u+=(a=(i=0|e.words[p])*(o=0|t.words[d])+h)/67108864|0,h=67108863&a}r.words[c]=0|h,f=0|u}return 0!==f?r.words[c]=0|f:r.length--,r.strip()}o.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||\"hex\"===e){r=\"\";for(var i=0,o=0,a=0;a<this.length;a++){var s=this.words[a],f=(16777215&(s<<i|o)).toString(16);r=0!==(o=s>>>24-i&16777215)||a!==this.length-1?c[6-f.length]+f+r:f+r,(i+=2)>=26&&(i-=26,a--)}for(0!==o&&(r=o.toString(16)+r);r.length%t!=0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}if(e===(0|e)&&e>=2&&e<=36){var l=u[e],d=h[e];r=\"\";var p=this.clone();for(p.negative=0;!p.isZero();){var b=p.modn(d).toString(e);r=(p=p.idivn(d)).isZero()?b+r:c[l-b.length]+b+r}for(this.isZero()&&(r=\"0\"+r);r.length%t!=0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}n(!1,\"Base should be between 2 and 36\")},o.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,\"Number can only safely store up to 53 bits\"),0!==this.negative?-e:e},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(e,t){return n(void 0!==a),this.toArrayLike(a,e,t)},o.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},o.prototype.toArrayLike=function(e,t,r){var i=this.byteLength(),o=r||Math.max(1,i);n(i<=o,\"byte array longer than desired length\"),n(o>0,\"Requested array length <= 0\"),this.strip();var a,s,f=\"le\"===t,c=new e(o),u=this.clone();if(f){for(s=0;!u.isZero();s++)a=u.andln(255),u.iushrn(8),c[s]=a;for(;s<o;s++)c[s]=0}else{for(s=0;s<o-i;s++)c[s]=0;for(s=0;!u.isZero();s++)a=u.andln(255),u.iushrn(8),c[o-s-1]=a}return c},Math.clz32?o.prototype._countBits=function(e){return 32-Math.clz32(e)}:o.prototype._countBits=function(e){var t=e,r=0;return t>=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},o.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},o.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;t<this.length;t++){var r=this._zeroBits(this.words[t]);if(e+=r,26!==r)break}return e},o.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},o.prototype.toTwos=function(e){return 0!==this.negative?this.abs().inotn(e).iaddn(1):this.clone()},o.prototype.fromTwos=function(e){return this.testn(e-1)?this.notn(e).iaddn(1).ineg():this.clone()},o.prototype.isNeg=function(){return 0!==this.negative},o.prototype.neg=function(){return this.clone().ineg()},o.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},o.prototype.iuor=function(e){for(;this.length<e.length;)this.words[this.length++]=0;for(var t=0;t<e.length;t++)this.words[t]=this.words[t]|e.words[t];return this.strip()},o.prototype.ior=function(e){return n(0==(this.negative|e.negative)),this.iuor(e)},o.prototype.or=function(e){return this.length>e.length?this.clone().ior(e):e.clone().ior(this)},o.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},o.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;r<t.length;r++)this.words[r]=this.words[r]&e.words[r];return this.length=t.length,this.strip()},o.prototype.iand=function(e){return n(0==(this.negative|e.negative)),this.iuand(e)},o.prototype.and=function(e){return this.length>e.length?this.clone().iand(e):e.clone().iand(this)},o.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},o.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var n=0;n<r.length;n++)this.words[n]=t.words[n]^r.words[n];if(this!==t)for(;n<t.length;n++)this.words[n]=t.words[n];return this.length=t.length,this.strip()},o.prototype.ixor=function(e){return n(0==(this.negative|e.negative)),this.iuxor(e)},o.prototype.xor=function(e){return this.length>e.length?this.clone().ixor(e):e.clone().ixor(this)},o.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},o.prototype.inotn=function(e){n(\"number\"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var i=0;i<t;i++)this.words[i]=67108863&~this.words[i];return r>0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},o.prototype.notn=function(e){return this.clone().inotn(e)},o.prototype.setn=function(e,t){n(\"number\"==typeof e&&e>=0);var r=e/26|0,i=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<<i:this.words[r]&~(1<<i),this.strip()},o.prototype.iadd=function(e){var t,r,n;if(0!==this.negative&&0===e.negative)return this.negative=0,t=this.isub(e),this.negative^=1,this._normSign();if(0===this.negative&&0!==e.negative)return e.negative=0,t=this.isub(e),e.negative=1,t._normSign();this.length>e.length?(r=this,n=e):(r=e,n=this);for(var i=0,o=0;o<n.length;o++)t=(0|r.words[o])+(0|n.words[o])+i,this.words[o]=67108863&t,i=t>>>26;for(;0!==i&&o<r.length;o++)t=(0|r.words[o])+i,this.words[o]=67108863&t,i=t>>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;o<r.length;o++)this.words[o]=r.words[o];return this},o.prototype.add=function(e){var t;return 0!==e.negative&&0===this.negative?(e.negative=0,t=this.sub(e),e.negative^=1,t):0===e.negative&&0!==this.negative?(this.negative=0,t=e.sub(this),this.negative=1,t):this.length>e.length?this.clone().iadd(e):e.clone().iadd(this)},o.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,n,i=this.cmp(e);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(r=this,n=e):(r=e,n=this);for(var o=0,a=0;a<n.length;a++)o=(t=(0|r.words[a])-(0|n.words[a])+o)>>26,this.words[a]=67108863&t;for(;0!==o&&a<r.length;a++)o=(t=(0|r.words[a])+o)>>26,this.words[a]=67108863&t;if(0===o&&a<r.length&&r!==this)for(;a<r.length;a++)this.words[a]=r.words[a];return this.length=Math.max(this.length,a),r!==this&&(this.negative=1),this.strip()},o.prototype.sub=function(e){return this.clone().isub(e)};var d=function(e,t,r){var n,i,o,a=e.words,s=t.words,f=r.words,c=0,u=0|a[0],h=8191&u,l=u>>>13,d=0|a[1],p=8191&d,b=d>>>13,y=0|a[2],g=8191&y,v=y>>>13,m=0|a[3],_=8191&m,w=m>>>13,E=0|a[4],A=8191&E,S=E>>>13,k=0|a[5],x=8191&k,I=k>>>13,M=0|a[6],T=8191&M,P=M>>>13,B=0|a[7],L=8191&B,R=B>>>13,O=0|a[8],C=8191&O,N=O>>>13,j=0|a[9],D=8191&j,q=j>>>13,U=0|s[0],F=8191&U,z=U>>>13,K=0|s[1],H=8191&K,V=K>>>13,Y=0|s[2],G=8191&Y,$=Y>>>13,W=0|s[3],Z=8191&W,J=W>>>13,X=0|s[4],Q=8191&X,ee=X>>>13,te=0|s[5],re=8191&te,ne=te>>>13,ie=0|s[6],oe=8191&ie,ae=ie>>>13,se=0|s[7],fe=8191&se,ce=se>>>13,ue=0|s[8],he=8191&ue,le=ue>>>13,de=0|s[9],pe=8191&de,be=de>>>13;r.negative=e.negative^t.negative,r.length=19;var ye=(c+(n=Math.imul(h,F))|0)+((8191&(i=(i=Math.imul(h,z))+Math.imul(l,F)|0))<<13)|0;c=((o=Math.imul(l,z))+(i>>>13)|0)+(ye>>>26)|0,ye&=67108863,n=Math.imul(p,F),i=(i=Math.imul(p,z))+Math.imul(b,F)|0,o=Math.imul(b,z);var ge=(c+(n=n+Math.imul(h,H)|0)|0)+((8191&(i=(i=i+Math.imul(h,V)|0)+Math.imul(l,H)|0))<<13)|0;c=((o=o+Math.imul(l,V)|0)+(i>>>13)|0)+(ge>>>26)|0,ge&=67108863,n=Math.imul(g,F),i=(i=Math.imul(g,z))+Math.imul(v,F)|0,o=Math.imul(v,z),n=n+Math.imul(p,H)|0,i=(i=i+Math.imul(p,V)|0)+Math.imul(b,H)|0,o=o+Math.imul(b,V)|0;var ve=(c+(n=n+Math.imul(h,G)|0)|0)+((8191&(i=(i=i+Math.imul(h,$)|0)+Math.imul(l,G)|0))<<13)|0;c=((o=o+Math.imul(l,$)|0)+(i>>>13)|0)+(ve>>>26)|0,ve&=67108863,n=Math.imul(_,F),i=(i=Math.imul(_,z))+Math.imul(w,F)|0,o=Math.imul(w,z),n=n+Math.imul(g,H)|0,i=(i=i+Math.imul(g,V)|0)+Math.imul(v,H)|0,o=o+Math.imul(v,V)|0,n=n+Math.imul(p,G)|0,i=(i=i+Math.imul(p,$)|0)+Math.imul(b,G)|0,o=o+Math.imul(b,$)|0;var me=(c+(n=n+Math.imul(h,Z)|0)|0)+((8191&(i=(i=i+Math.imul(h,J)|0)+Math.imul(l,Z)|0))<<13)|0;c=((o=o+Math.imul(l,J)|0)+(i>>>13)|0)+(me>>>26)|0,me&=67108863,n=Math.imul(A,F),i=(i=Math.imul(A,z))+Math.imul(S,F)|0,o=Math.imul(S,z),n=n+Math.imul(_,H)|0,i=(i=i+Math.imul(_,V)|0)+Math.imul(w,H)|0,o=o+Math.imul(w,V)|0,n=n+Math.imul(g,G)|0,i=(i=i+Math.imul(g,$)|0)+Math.imul(v,G)|0,o=o+Math.imul(v,$)|0,n=n+Math.imul(p,Z)|0,i=(i=i+Math.imul(p,J)|0)+Math.imul(b,Z)|0,o=o+Math.imul(b,J)|0;var _e=(c+(n=n+Math.imul(h,Q)|0)|0)+((8191&(i=(i=i+Math.imul(h,ee)|0)+Math.imul(l,Q)|0))<<13)|0;c=((o=o+Math.imul(l,ee)|0)+(i>>>13)|0)+(_e>>>26)|0,_e&=67108863,n=Math.imul(x,F),i=(i=Math.imul(x,z))+Math.imul(I,F)|0,o=Math.imul(I,z),n=n+Math.imul(A,H)|0,i=(i=i+Math.imul(A,V)|0)+Math.imul(S,H)|0,o=o+Math.imul(S,V)|0,n=n+Math.imul(_,G)|0,i=(i=i+Math.imul(_,$)|0)+Math.imul(w,G)|0,o=o+Math.imul(w,$)|0,n=n+Math.imul(g,Z)|0,i=(i=i+Math.imul(g,J)|0)+Math.imul(v,Z)|0,o=o+Math.imul(v,J)|0,n=n+Math.imul(p,Q)|0,i=(i=i+Math.imul(p,ee)|0)+Math.imul(b,Q)|0,o=o+Math.imul(b,ee)|0;var we=(c+(n=n+Math.imul(h,re)|0)|0)+((8191&(i=(i=i+Math.imul(h,ne)|0)+Math.imul(l,re)|0))<<13)|0;c=((o=o+Math.imul(l,ne)|0)+(i>>>13)|0)+(we>>>26)|0,we&=67108863,n=Math.imul(T,F),i=(i=Math.imul(T,z))+Math.imul(P,F)|0,o=Math.imul(P,z),n=n+Math.imul(x,H)|0,i=(i=i+Math.imul(x,V)|0)+Math.imul(I,H)|0,o=o+Math.imul(I,V)|0,n=n+Math.imul(A,G)|0,i=(i=i+Math.imul(A,$)|0)+Math.imul(S,G)|0,o=o+Math.imul(S,$)|0,n=n+Math.imul(_,Z)|0,i=(i=i+Math.imul(_,J)|0)+Math.imul(w,Z)|0,o=o+Math.imul(w,J)|0,n=n+Math.imul(g,Q)|0,i=(i=i+Math.imul(g,ee)|0)+Math.imul(v,Q)|0,o=o+Math.imul(v,ee)|0,n=n+Math.imul(p,re)|0,i=(i=i+Math.imul(p,ne)|0)+Math.imul(b,re)|0,o=o+Math.imul(b,ne)|0;var Ee=(c+(n=n+Math.imul(h,oe)|0)|0)+((8191&(i=(i=i+Math.imul(h,ae)|0)+Math.imul(l,oe)|0))<<13)|0;c=((o=o+Math.imul(l,ae)|0)+(i>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,n=Math.imul(L,F),i=(i=Math.imul(L,z))+Math.imul(R,F)|0,o=Math.imul(R,z),n=n+Math.imul(T,H)|0,i=(i=i+Math.imul(T,V)|0)+Math.imul(P,H)|0,o=o+Math.imul(P,V)|0,n=n+Math.imul(x,G)|0,i=(i=i+Math.imul(x,$)|0)+Math.imul(I,G)|0,o=o+Math.imul(I,$)|0,n=n+Math.imul(A,Z)|0,i=(i=i+Math.imul(A,J)|0)+Math.imul(S,Z)|0,o=o+Math.imul(S,J)|0,n=n+Math.imul(_,Q)|0,i=(i=i+Math.imul(_,ee)|0)+Math.imul(w,Q)|0,o=o+Math.imul(w,ee)|0,n=n+Math.imul(g,re)|0,i=(i=i+Math.imul(g,ne)|0)+Math.imul(v,re)|0,o=o+Math.imul(v,ne)|0,n=n+Math.imul(p,oe)|0,i=(i=i+Math.imul(p,ae)|0)+Math.imul(b,oe)|0,o=o+Math.imul(b,ae)|0;var Ae=(c+(n=n+Math.imul(h,fe)|0)|0)+((8191&(i=(i=i+Math.imul(h,ce)|0)+Math.imul(l,fe)|0))<<13)|0;c=((o=o+Math.imul(l,ce)|0)+(i>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,n=Math.imul(C,F),i=(i=Math.imul(C,z))+Math.imul(N,F)|0,o=Math.imul(N,z),n=n+Math.imul(L,H)|0,i=(i=i+Math.imul(L,V)|0)+Math.imul(R,H)|0,o=o+Math.imul(R,V)|0,n=n+Math.imul(T,G)|0,i=(i=i+Math.imul(T,$)|0)+Math.imul(P,G)|0,o=o+Math.imul(P,$)|0,n=n+Math.imul(x,Z)|0,i=(i=i+Math.imul(x,J)|0)+Math.imul(I,Z)|0,o=o+Math.imul(I,J)|0,n=n+Math.imul(A,Q)|0,i=(i=i+Math.imul(A,ee)|0)+Math.imul(S,Q)|0,o=o+Math.imul(S,ee)|0,n=n+Math.imul(_,re)|0,i=(i=i+Math.imul(_,ne)|0)+Math.imul(w,re)|0,o=o+Math.imul(w,ne)|0,n=n+Math.imul(g,oe)|0,i=(i=i+Math.imul(g,ae)|0)+Math.imul(v,oe)|0,o=o+Math.imul(v,ae)|0,n=n+Math.imul(p,fe)|0,i=(i=i+Math.imul(p,ce)|0)+Math.imul(b,fe)|0,o=o+Math.imul(b,ce)|0;var Se=(c+(n=n+Math.imul(h,he)|0)|0)+((8191&(i=(i=i+Math.imul(h,le)|0)+Math.imul(l,he)|0))<<13)|0;c=((o=o+Math.imul(l,le)|0)+(i>>>13)|0)+(Se>>>26)|0,Se&=67108863,n=Math.imul(D,F),i=(i=Math.imul(D,z))+Math.imul(q,F)|0,o=Math.imul(q,z),n=n+Math.imul(C,H)|0,i=(i=i+Math.imul(C,V)|0)+Math.imul(N,H)|0,o=o+Math.imul(N,V)|0,n=n+Math.imul(L,G)|0,i=(i=i+Math.imul(L,$)|0)+Math.imul(R,G)|0,o=o+Math.imul(R,$)|0,n=n+Math.imul(T,Z)|0,i=(i=i+Math.imul(T,J)|0)+Math.imul(P,Z)|0,o=o+Math.imul(P,J)|0,n=n+Math.imul(x,Q)|0,i=(i=i+Math.imul(x,ee)|0)+Math.imul(I,Q)|0,o=o+Math.imul(I,ee)|0,n=n+Math.imul(A,re)|0,i=(i=i+Math.imul(A,ne)|0)+Math.imul(S,re)|0,o=o+Math.imul(S,ne)|0,n=n+Math.imul(_,oe)|0,i=(i=i+Math.imul(_,ae)|0)+Math.imul(w,oe)|0,o=o+Math.imul(w,ae)|0,n=n+Math.imul(g,fe)|0,i=(i=i+Math.imul(g,ce)|0)+Math.imul(v,fe)|0,o=o+Math.imul(v,ce)|0,n=n+Math.imul(p,he)|0,i=(i=i+Math.imul(p,le)|0)+Math.imul(b,he)|0,o=o+Math.imul(b,le)|0;var ke=(c+(n=n+Math.imul(h,pe)|0)|0)+((8191&(i=(i=i+Math.imul(h,be)|0)+Math.imul(l,pe)|0))<<13)|0;c=((o=o+Math.imul(l,be)|0)+(i>>>13)|0)+(ke>>>26)|0,ke&=67108863,n=Math.imul(D,H),i=(i=Math.imul(D,V))+Math.imul(q,H)|0,o=Math.imul(q,V),n=n+Math.imul(C,G)|0,i=(i=i+Math.imul(C,$)|0)+Math.imul(N,G)|0,o=o+Math.imul(N,$)|0,n=n+Math.imul(L,Z)|0,i=(i=i+Math.imul(L,J)|0)+Math.imul(R,Z)|0,o=o+Math.imul(R,J)|0,n=n+Math.imul(T,Q)|0,i=(i=i+Math.imul(T,ee)|0)+Math.imul(P,Q)|0,o=o+Math.imul(P,ee)|0,n=n+Math.imul(x,re)|0,i=(i=i+Math.imul(x,ne)|0)+Math.imul(I,re)|0,o=o+Math.imul(I,ne)|0,n=n+Math.imul(A,oe)|0,i=(i=i+Math.imul(A,ae)|0)+Math.imul(S,oe)|0,o=o+Math.imul(S,ae)|0,n=n+Math.imul(_,fe)|0,i=(i=i+Math.imul(_,ce)|0)+Math.imul(w,fe)|0,o=o+Math.imul(w,ce)|0,n=n+Math.imul(g,he)|0,i=(i=i+Math.imul(g,le)|0)+Math.imul(v,he)|0,o=o+Math.imul(v,le)|0;var xe=(c+(n=n+Math.imul(p,pe)|0)|0)+((8191&(i=(i=i+Math.imul(p,be)|0)+Math.imul(b,pe)|0))<<13)|0;c=((o=o+Math.imul(b,be)|0)+(i>>>13)|0)+(xe>>>26)|0,xe&=67108863,n=Math.imul(D,G),i=(i=Math.imul(D,$))+Math.imul(q,G)|0,o=Math.imul(q,$),n=n+Math.imul(C,Z)|0,i=(i=i+Math.imul(C,J)|0)+Math.imul(N,Z)|0,o=o+Math.imul(N,J)|0,n=n+Math.imul(L,Q)|0,i=(i=i+Math.imul(L,ee)|0)+Math.imul(R,Q)|0,o=o+Math.imul(R,ee)|0,n=n+Math.imul(T,re)|0,i=(i=i+Math.imul(T,ne)|0)+Math.imul(P,re)|0,o=o+Math.imul(P,ne)|0,n=n+Math.imul(x,oe)|0,i=(i=i+Math.imul(x,ae)|0)+Math.imul(I,oe)|0,o=o+Math.imul(I,ae)|0,n=n+Math.imul(A,fe)|0,i=(i=i+Math.imul(A,ce)|0)+Math.imul(S,fe)|0,o=o+Math.imul(S,ce)|0,n=n+Math.imul(_,he)|0,i=(i=i+Math.imul(_,le)|0)+Math.imul(w,he)|0,o=o+Math.imul(w,le)|0;var Ie=(c+(n=n+Math.imul(g,pe)|0)|0)+((8191&(i=(i=i+Math.imul(g,be)|0)+Math.imul(v,pe)|0))<<13)|0;c=((o=o+Math.imul(v,be)|0)+(i>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,n=Math.imul(D,Z),i=(i=Math.imul(D,J))+Math.imul(q,Z)|0,o=Math.imul(q,J),n=n+Math.imul(C,Q)|0,i=(i=i+Math.imul(C,ee)|0)+Math.imul(N,Q)|0,o=o+Math.imul(N,ee)|0,n=n+Math.imul(L,re)|0,i=(i=i+Math.imul(L,ne)|0)+Math.imul(R,re)|0,o=o+Math.imul(R,ne)|0,n=n+Math.imul(T,oe)|0,i=(i=i+Math.imul(T,ae)|0)+Math.imul(P,oe)|0,o=o+Math.imul(P,ae)|0,n=n+Math.imul(x,fe)|0,i=(i=i+Math.imul(x,ce)|0)+Math.imul(I,fe)|0,o=o+Math.imul(I,ce)|0,n=n+Math.imul(A,he)|0,i=(i=i+Math.imul(A,le)|0)+Math.imul(S,he)|0,o=o+Math.imul(S,le)|0;var Me=(c+(n=n+Math.imul(_,pe)|0)|0)+((8191&(i=(i=i+Math.imul(_,be)|0)+Math.imul(w,pe)|0))<<13)|0;c=((o=o+Math.imul(w,be)|0)+(i>>>13)|0)+(Me>>>26)|0,Me&=67108863,n=Math.imul(D,Q),i=(i=Math.imul(D,ee))+Math.imul(q,Q)|0,o=Math.imul(q,ee),n=n+Math.imul(C,re)|0,i=(i=i+Math.imul(C,ne)|0)+Math.imul(N,re)|0,o=o+Math.imul(N,ne)|0,n=n+Math.imul(L,oe)|0,i=(i=i+Math.imul(L,ae)|0)+Math.imul(R,oe)|0,o=o+Math.imul(R,ae)|0,n=n+Math.imul(T,fe)|0,i=(i=i+Math.imul(T,ce)|0)+Math.imul(P,fe)|0,o=o+Math.imul(P,ce)|0,n=n+Math.imul(x,he)|0,i=(i=i+Math.imul(x,le)|0)+Math.imul(I,he)|0,o=o+Math.imul(I,le)|0;var Te=(c+(n=n+Math.imul(A,pe)|0)|0)+((8191&(i=(i=i+Math.imul(A,be)|0)+Math.imul(S,pe)|0))<<13)|0;c=((o=o+Math.imul(S,be)|0)+(i>>>13)|0)+(Te>>>26)|0,Te&=67108863,n=Math.imul(D,re),i=(i=Math.imul(D,ne))+Math.imul(q,re)|0,o=Math.imul(q,ne),n=n+Math.imul(C,oe)|0,i=(i=i+Math.imul(C,ae)|0)+Math.imul(N,oe)|0,o=o+Math.imul(N,ae)|0,n=n+Math.imul(L,fe)|0,i=(i=i+Math.imul(L,ce)|0)+Math.imul(R,fe)|0,o=o+Math.imul(R,ce)|0,n=n+Math.imul(T,he)|0,i=(i=i+Math.imul(T,le)|0)+Math.imul(P,he)|0,o=o+Math.imul(P,le)|0;var Pe=(c+(n=n+Math.imul(x,pe)|0)|0)+((8191&(i=(i=i+Math.imul(x,be)|0)+Math.imul(I,pe)|0))<<13)|0;c=((o=o+Math.imul(I,be)|0)+(i>>>13)|0)+(Pe>>>26)|0,Pe&=67108863,n=Math.imul(D,oe),i=(i=Math.imul(D,ae))+Math.imul(q,oe)|0,o=Math.imul(q,ae),n=n+Math.imul(C,fe)|0,i=(i=i+Math.imul(C,ce)|0)+Math.imul(N,fe)|0,o=o+Math.imul(N,ce)|0,n=n+Math.imul(L,he)|0,i=(i=i+Math.imul(L,le)|0)+Math.imul(R,he)|0,o=o+Math.imul(R,le)|0;var Be=(c+(n=n+Math.imul(T,pe)|0)|0)+((8191&(i=(i=i+Math.imul(T,be)|0)+Math.imul(P,pe)|0))<<13)|0;c=((o=o+Math.imul(P,be)|0)+(i>>>13)|0)+(Be>>>26)|0,Be&=67108863,n=Math.imul(D,fe),i=(i=Math.imul(D,ce))+Math.imul(q,fe)|0,o=Math.imul(q,ce),n=n+Math.imul(C,he)|0,i=(i=i+Math.imul(C,le)|0)+Math.imul(N,he)|0,o=o+Math.imul(N,le)|0;var Le=(c+(n=n+Math.imul(L,pe)|0)|0)+((8191&(i=(i=i+Math.imul(L,be)|0)+Math.imul(R,pe)|0))<<13)|0;c=((o=o+Math.imul(R,be)|0)+(i>>>13)|0)+(Le>>>26)|0,Le&=67108863,n=Math.imul(D,he),i=(i=Math.imul(D,le))+Math.imul(q,he)|0,o=Math.imul(q,le);var Re=(c+(n=n+Math.imul(C,pe)|0)|0)+((8191&(i=(i=i+Math.imul(C,be)|0)+Math.imul(N,pe)|0))<<13)|0;c=((o=o+Math.imul(N,be)|0)+(i>>>13)|0)+(Re>>>26)|0,Re&=67108863;var Oe=(c+(n=Math.imul(D,pe))|0)+((8191&(i=(i=Math.imul(D,be))+Math.imul(q,pe)|0))<<13)|0;return c=((o=Math.imul(q,be))+(i>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,f[0]=ye,f[1]=ge,f[2]=ve,f[3]=me,f[4]=_e,f[5]=we,f[6]=Ee,f[7]=Ae,f[8]=Se,f[9]=ke,f[10]=xe,f[11]=Ie,f[12]=Me,f[13]=Te,f[14]=Pe,f[15]=Be,f[16]=Le,f[17]=Re,f[18]=Oe,0!==c&&(f[19]=c,r.length++),r};function p(e,t,r){return(new b).mulp(e,t,r)}function b(e,t){this.x=e,this.y=t}Math.imul||(d=l),o.prototype.mulTo=function(e,t){var r=this.length+e.length;return 10===this.length&&10===e.length?d(this,e,t):r<63?l(this,e,t):r<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var n=0,i=0,o=0;o<r.length-1;o++){var a=i;i=0;for(var s=67108863&n,f=Math.min(o,t.length-1),c=Math.max(0,o-e.length+1);c<=f;c++){var u=o-c,h=(0|e.words[u])*(0|t.words[c]),l=67108863&h;s=67108863&(l=l+s|0),i+=(a=(a=a+(h/67108864|0)|0)+(l>>>26)|0)>>>26,a&=67108863}r.words[o]=s,n=a,a=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}(this,e,t):p(this,e,t)},b.prototype.makeRBT=function(e){for(var t=new Array(e),r=o.prototype._countBits(e)-1,n=0;n<e;n++)t[n]=this.revBin(n,r,e);return t},b.prototype.revBin=function(e,t,r){if(0===e||e===r-1)return e;for(var n=0,i=0;i<t;i++)n|=(1&e)<<t-i-1,e>>=1;return n},b.prototype.permute=function(e,t,r,n,i,o){for(var a=0;a<o;a++)n[a]=t[e[a]],i[a]=r[e[a]]},b.prototype.transform=function(e,t,r,n,i,o){this.permute(o,e,t,r,n,i);for(var a=1;a<i;a<<=1)for(var s=a<<1,f=Math.cos(2*Math.PI/s),c=Math.sin(2*Math.PI/s),u=0;u<i;u+=s)for(var h=f,l=c,d=0;d<a;d++){var p=r[u+d],b=n[u+d],y=r[u+d+a],g=n[u+d+a],v=h*y-l*g;g=h*g+l*y,y=v,r[u+d]=p+y,n[u+d]=b+g,r[u+d+a]=p-y,n[u+d+a]=b-g,d!==s&&(v=f*h-c*l,l=f*l+c*h,h=v)}},b.prototype.guessLen13b=function(e,t){var r=1|Math.max(t,e),n=1&r,i=0;for(r=r/2|0;r;r>>>=1)i++;return 1<<i+1+n},b.prototype.conjugate=function(e,t,r){if(!(r<=1))for(var n=0;n<r/2;n++){var i=e[n];e[n]=e[r-n-1],e[r-n-1]=i,i=t[n],t[n]=-t[r-n-1],t[r-n-1]=-i}},b.prototype.normalize13b=function(e,t){for(var r=0,n=0;n<t/2;n++){var i=8192*Math.round(e[2*n+1]/t)+Math.round(e[2*n]/t)+r;e[n]=67108863&i,r=i<67108864?0:i/67108864|0}return e},b.prototype.convert13b=function(e,t,r,i){for(var o=0,a=0;a<t;a++)o+=0|e[a],r[2*a]=8191&o,o>>>=13,r[2*a+1]=8191&o,o>>>=13;for(a=2*t;a<i;++a)r[a]=0;n(0===o),n(0==(-8192&o))},b.prototype.stub=function(e){for(var t=new Array(e),r=0;r<e;r++)t[r]=0;return t},b.prototype.mulp=function(e,t,r){var n=2*this.guessLen13b(e.length,t.length),i=this.makeRBT(n),o=this.stub(n),a=new Array(n),s=new Array(n),f=new Array(n),c=new Array(n),u=new Array(n),h=new Array(n),l=r.words;l.length=n,this.convert13b(e.words,e.length,a,n),this.convert13b(t.words,t.length,c,n),this.transform(a,o,s,f,n,i),this.transform(c,o,u,h,n,i);for(var d=0;d<n;d++){var p=s[d]*u[d]-f[d]*h[d];f[d]=s[d]*h[d]+f[d]*u[d],s[d]=p}return this.conjugate(s,f,n),this.transform(s,f,l,o,n,i),this.conjugate(l,o,n),this.normalize13b(l,n),r.negative=e.negative^t.negative,r.length=e.length+t.length,r.strip()},o.prototype.mul=function(e){var t=new o(null);return t.words=new Array(this.length+e.length),this.mulTo(e,t)},o.prototype.mulf=function(e){var t=new o(null);return t.words=new Array(this.length+e.length),p(this,e,t)},o.prototype.imul=function(e){return this.clone().mulTo(e,this)},o.prototype.imuln=function(e){n(\"number\"==typeof e),n(e<67108864);for(var t=0,r=0;r<this.length;r++){var i=(0|this.words[r])*e,o=(67108863&i)+(67108863&t);t>>=26,t+=i/67108864|0,t+=o>>>26,this.words[r]=67108863&o}return 0!==t&&(this.words[r]=t,this.length++),this},o.prototype.muln=function(e){return this.clone().imuln(e)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r<t.length;r++){var n=r/26|0,i=r%26;t[r]=(e.words[n]&1<<i)>>>i}return t}(e);if(0===t.length)return new o(1);for(var r=this,n=0;n<t.length&&0===t[n];n++,r=r.sqr());if(++n<t.length)for(var i=r.sqr();n<t.length;n++,i=i.sqr())0!==t[n]&&(r=r.mul(i));return r},o.prototype.iushln=function(e){n(\"number\"==typeof e&&e>=0);var t,r=e%26,i=(e-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(t=0;t<this.length;t++){var s=this.words[t]&o,f=(0|this.words[t])-s<<r;this.words[t]=f|a,a=s>>>26-r}a&&(this.words[t]=a,this.length++)}if(0!==i){for(t=this.length-1;t>=0;t--)this.words[t+i]=this.words[t];for(t=0;t<i;t++)this.words[t]=0;this.length+=i}return this.strip()},o.prototype.ishln=function(e){return n(0===this.negative),this.iushln(e)},o.prototype.iushrn=function(e,t,r){var i;n(\"number\"==typeof e&&e>=0),i=t?(t-t%26)/26:0;var o=e%26,a=Math.min((e-o)/26,this.length),s=67108863^67108863>>>o<<o,f=r;if(i-=a,i=Math.max(0,i),f){for(var c=0;c<a;c++)f.words[c]=this.words[c];f.length=a}if(0===a);else if(this.length>a)for(this.length-=a,c=0;c<this.length;c++)this.words[c]=this.words[c+a];else this.words[0]=0,this.length=1;var u=0;for(c=this.length-1;c>=0&&(0!==u||c>=i);c--){var h=0|this.words[c];this.words[c]=u<<26-o|h>>>o,u=h&s}return f&&0!==u&&(f.words[f.length++]=u),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(e,t,r){return n(0===this.negative),this.iushrn(e,t,r)},o.prototype.shln=function(e){return this.clone().ishln(e)},o.prototype.ushln=function(e){return this.clone().iushln(e)},o.prototype.shrn=function(e){return this.clone().ishrn(e)},o.prototype.ushrn=function(e){return this.clone().iushrn(e)},o.prototype.testn=function(e){n(\"number\"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,i=1<<t;return!(this.length<=r)&&!!(this.words[r]&i)},o.prototype.imaskn=function(e){n(\"number\"==typeof e&&e>=0);var t=e%26,r=(e-t)/26;if(n(0===this.negative,\"imaskn works only with positive numbers\"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var i=67108863^67108863>>>t<<t;this.words[this.length-1]&=i}return this.strip()},o.prototype.maskn=function(e){return this.clone().imaskn(e)},o.prototype.iaddn=function(e){return n(\"number\"==typeof e),n(e<67108864),e<0?this.isubn(-e):0!==this.negative?1===this.length&&(0|this.words[0])<e?(this.words[0]=e-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(e),this.negative=1,this):this._iaddn(e)},o.prototype._iaddn=function(e){this.words[0]+=e;for(var t=0;t<this.length&&this.words[t]>=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},o.prototype.isubn=function(e){if(n(\"number\"==typeof e),n(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t<this.length&&this.words[t]<0;t++)this.words[t]+=67108864,this.words[t+1]-=1;return this.strip()},o.prototype.addn=function(e){return this.clone().iaddn(e)},o.prototype.subn=function(e){return this.clone().isubn(e)},o.prototype.iabs=function(){return this.negative=0,this},o.prototype.abs=function(){return this.clone().iabs()},o.prototype._ishlnsubmul=function(e,t,r){var i,o,a=e.length+r;this._expand(a);var s=0;for(i=0;i<e.length;i++){o=(0|this.words[i+r])+s;var f=(0|e.words[i])*t;s=((o-=67108863&f)>>26)-(f/67108864|0),this.words[i+r]=67108863&o}for(;i<this.length-r;i++)s=(o=(0|this.words[i+r])+s)>>26,this.words[i+r]=67108863&o;if(0===s)return this.strip();for(n(-1===s),s=0,i=0;i<this.length;i++)s=(o=-(0|this.words[i])+s)>>26,this.words[i]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(e,t){var r=(this.length,e.length),n=this.clone(),i=e,a=0|i.words[i.length-1];0!==(r=26-this._countBits(a))&&(i=i.ushln(r),n.iushln(r),a=0|i.words[i.length-1]);var s,f=n.length-i.length;if(\"mod\"!==t){(s=new o(null)).length=f+1,s.words=new Array(s.length);for(var c=0;c<s.length;c++)s.words[c]=0}var u=n.clone()._ishlnsubmul(i,1,f);0===u.negative&&(n=u,s&&(s.words[f]=1));for(var h=f-1;h>=0;h--){var l=67108864*(0|n.words[i.length+h])+(0|n.words[i.length+h-1]);for(l=Math.min(l/a|0,67108863),n._ishlnsubmul(i,l,h);0!==n.negative;)l--,n.negative=0,n._ishlnsubmul(i,1,h),n.isZero()||(n.negative^=1);s&&(s.words[h]=l)}return s&&s.strip(),n.strip(),\"div\"!==t&&0!==r&&n.iushrn(r),{div:s||null,mod:n}},o.prototype.divmod=function(e,t,r){return n(!e.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),\"mod\"!==t&&(i=s.div.neg()),\"div\"!==t&&(a=s.mod.neg(),r&&0!==a.negative&&a.iadd(e)),{div:i,mod:a}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),\"mod\"!==t&&(i=s.div.neg()),{div:i,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),\"div\"!==t&&(a=s.mod.neg(),r&&0!==a.negative&&a.isub(e)),{div:s.div,mod:a}):e.length>this.length||this.cmp(e)<0?{div:new o(0),mod:this}:1===e.length?\"div\"===t?{div:this.divn(e.words[0]),mod:null}:\"mod\"===t?{div:null,mod:new o(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new o(this.modn(e.words[0]))}:this._wordDiv(e,t);var i,a,s},o.prototype.div=function(e){return this.divmod(e,\"div\",!1).div},o.prototype.mod=function(e){return this.divmod(e,\"mod\",!1).mod},o.prototype.umod=function(e){return this.divmod(e,\"mod\",!0).mod},o.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,n=e.ushrn(1),i=e.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},o.prototype.modn=function(e){n(e<=67108863);for(var t=(1<<26)%e,r=0,i=this.length-1;i>=0;i--)r=(t*r+(0|this.words[i]))%e;return r},o.prototype.idivn=function(e){n(e<=67108863);for(var t=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*t;this.words[r]=i/e|0,t=i%e}return this.strip()},o.prototype.divn=function(e){return this.clone().idivn(e)},o.prototype.egcd=function(e){n(0===e.negative),n(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i=new o(1),a=new o(0),s=new o(0),f=new o(1),c=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++c;for(var u=r.clone(),h=t.clone();!t.isZero();){for(var l=0,d=1;0==(t.words[0]&d)&&l<26;++l,d<<=1);if(l>0)for(t.iushrn(l);l-- >0;)(i.isOdd()||a.isOdd())&&(i.iadd(u),a.isub(h)),i.iushrn(1),a.iushrn(1);for(var p=0,b=1;0==(r.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(s.isOdd()||f.isOdd())&&(s.iadd(u),f.isub(h)),s.iushrn(1),f.iushrn(1);t.cmp(r)>=0?(t.isub(r),i.isub(s),a.isub(f)):(r.isub(t),s.isub(i),f.isub(a))}return{a:s,b:f,gcd:r.iushln(c)}},o.prototype._invmp=function(e){n(0===e.negative),n(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i,a=new o(1),s=new o(0),f=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,u=1;0==(t.words[0]&u)&&c<26;++c,u<<=1);if(c>0)for(t.iushrn(c);c-- >0;)a.isOdd()&&a.iadd(f),a.iushrn(1);for(var h=0,l=1;0==(r.words[0]&l)&&h<26;++h,l<<=1);if(h>0)for(r.iushrn(h);h-- >0;)s.isOdd()&&s.iadd(f),s.iushrn(1);t.cmp(r)>=0?(t.isub(r),a.isub(s)):(r.isub(t),s.isub(a))}return(i=0===t.cmpn(1)?a:s).cmpn(0)<0&&i.iadd(e),i},o.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var n=0;t.isEven()&&r.isEven();n++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=t.cmp(r);if(i<0){var o=t;t=r,r=o}else if(0===i||0===r.cmpn(1))break;t.isub(r)}return r.iushln(n)},o.prototype.invm=function(e){return this.egcd(e).a.umod(e)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(e){return this.words[0]&e},o.prototype.bincn=function(e){n(\"number\"==typeof e);var t=e%26,r=(e-t)/26,i=1<<t;if(this.length<=r)return this._expand(r+1),this.words[r]|=i,this;for(var o=i,a=r;0!==o&&a<this.length;a++){var s=0|this.words[a];o=(s+=o)>>>26,s&=67108863,this.words[a]=s}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)t=1;else{r&&(e=-e),n(e<=67108863,\"Number is too big\");var i=0|this.words[0];t=i===e?0:i<e?-1:1}return 0!==this.negative?0|-t:t},o.prototype.cmp=function(e){if(0!==this.negative&&0===e.negative)return-1;if(0===this.negative&&0!==e.negative)return 1;var t=this.ucmp(e);return 0!==this.negative?0|-t:t},o.prototype.ucmp=function(e){if(this.length>e.length)return 1;if(this.length<e.length)return-1;for(var t=0,r=this.length-1;r>=0;r--){var n=0|this.words[r],i=0|e.words[r];if(n!==i){n<i?t=-1:n>i&&(t=1);break}}return t},o.prototype.gtn=function(e){return 1===this.cmpn(e)},o.prototype.gt=function(e){return 1===this.cmp(e)},o.prototype.gten=function(e){return this.cmpn(e)>=0},o.prototype.gte=function(e){return this.cmp(e)>=0},o.prototype.ltn=function(e){return-1===this.cmpn(e)},o.prototype.lt=function(e){return-1===this.cmp(e)},o.prototype.lten=function(e){return this.cmpn(e)<=0},o.prototype.lte=function(e){return this.cmp(e)<=0},o.prototype.eqn=function(e){return 0===this.cmpn(e)},o.prototype.eq=function(e){return 0===this.cmp(e)},o.red=function(e){return new E(e)},o.prototype.toRed=function(e){return n(!this.red,\"Already a number in reduction context\"),n(0===this.negative,\"red works only with positives\"),e.convertTo(this)._forceRed(e)},o.prototype.fromRed=function(){return n(this.red,\"fromRed works only with numbers in reduction context\"),this.red.convertFrom(this)},o.prototype._forceRed=function(e){return this.red=e,this},o.prototype.forceRed=function(e){return n(!this.red,\"Already a number in reduction context\"),this._forceRed(e)},o.prototype.redAdd=function(e){return n(this.red,\"redAdd works only with red numbers\"),this.red.add(this,e)},o.prototype.redIAdd=function(e){return n(this.red,\"redIAdd works only with red numbers\"),this.red.iadd(this,e)},o.prototype.redSub=function(e){return n(this.red,\"redSub works only with red numbers\"),this.red.sub(this,e)},o.prototype.redISub=function(e){return n(this.red,\"redISub works only with red numbers\"),this.red.isub(this,e)},o.prototype.redShl=function(e){return n(this.red,\"redShl works only with red numbers\"),this.red.shl(this,e)},o.prototype.redMul=function(e){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,e),this.red.mul(this,e)},o.prototype.redIMul=function(e){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,e),this.red.imul(this,e)},o.prototype.redSqr=function(){return n(this.red,\"redSqr works only with red numbers\"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return n(this.red,\"redISqr works only with red numbers\"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return n(this.red,\"redSqrt works only with red numbers\"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return n(this.red,\"redInvm works only with red numbers\"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return n(this.red,\"redNeg works only with red numbers\"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(e){return n(this.red&&!e.red,\"redPow(normalNum)\"),this.red._verify1(this),this.red.pow(this,e)};var y={k256:null,p224:null,p192:null,p25519:null};function g(e,t){this.name=e,this.p=new o(t,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function v(){g.call(this,\"k256\",\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\")}function m(){g.call(this,\"p224\",\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\")}function _(){g.call(this,\"p192\",\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\")}function w(){g.call(this,\"25519\",\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\")}function E(e){if(\"string\"==typeof e){var t=o._prime(e);this.m=t.p,this.prime=t}else n(e.gtn(1),\"modulus must be greater than 1\"),this.m=e,this.prime=null}function A(e){E.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}g.prototype._tmp=function(){var e=new o(null);return e.words=new Array(Math.ceil(this.n/13)),e},g.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var n=t<this.n?-1:r.ucmp(this.p);return 0===n?(r.words[0]=0,r.length=1):n>0?r.isub(this.p):r.strip(),r},g.prototype.split=function(e,t){e.iushrn(this.n,0,t)},g.prototype.imulK=function(e){return e.imul(this.k)},i(v,g),v.prototype.split=function(e,t){for(var r=Math.min(e.length,9),n=0;n<r;n++)t.words[n]=e.words[n];if(t.length=r,e.length<=9)return e.words[0]=0,void(e.length=1);var i=e.words[9];for(t.words[t.length++]=4194303&i,n=10;n<e.length;n++){var o=0|e.words[n];e.words[n-10]=(4194303&o)<<4|i>>>22,i=o}i>>>=22,e.words[n-10]=i,0===i&&e.length>10?e.length-=10:e.length-=9},v.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r<e.length;r++){var n=0|e.words[r];t+=977*n,e.words[r]=67108863&t,t=64*n+(t/67108864|0)}return 0===e.words[e.length-1]&&(e.length--,0===e.words[e.length-1]&&e.length--),e},i(m,g),i(_,g),i(w,g),w.prototype.imulK=function(e){for(var t=0,r=0;r<e.length;r++){var n=19*(0|e.words[r])+t,i=67108863&n;n>>>=26,e.words[r]=i,t=n}return 0!==t&&(e.words[e.length++]=t),e},o._prime=function(e){if(y[e])return y[e];var t;if(\"k256\"===e)t=new v;else if(\"p224\"===e)t=new m;else if(\"p192\"===e)t=new _;else{if(\"p25519\"!==e)throw new Error(\"Unknown prime \"+e);t=new w}return y[e]=t,t},E.prototype._verify1=function(e){n(0===e.negative,\"red works only with positives\"),n(e.red,\"red works only with red numbers\")},E.prototype._verify2=function(e,t){n(0==(e.negative|t.negative),\"red works only with positives\"),n(e.red&&e.red===t.red,\"red works only with red numbers\")},E.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},E.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},E.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},E.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},E.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},E.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},E.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},E.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},E.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},E.prototype.isqr=function(e){return this.imul(e,e.clone())},E.prototype.sqr=function(e){return this.mul(e,e)},E.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(n(t%2==1),3===t){var r=this.m.add(new o(1)).iushrn(2);return this.pow(e,r)}for(var i=this.m.subn(1),a=0;!i.isZero()&&0===i.andln(1);)a++,i.iushrn(1);n(!i.isZero());var s=new o(1).toRed(this),f=s.redNeg(),c=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new o(2*u*u).toRed(this);0!==this.pow(u,c).cmp(f);)u.redIAdd(f);for(var h=this.pow(u,i),l=this.pow(e,i.addn(1).iushrn(1)),d=this.pow(e,i),p=a;0!==d.cmp(s);){for(var b=d,y=0;0!==b.cmp(s);y++)b=b.redSqr();n(y<p);var g=this.pow(h,new o(1).iushln(p-y-1));l=l.redMul(g),h=g.redSqr(),d=d.redMul(h),p=y}return l},E.prototype.invm=function(e){var t=e._invmp(this.m);return 0!==t.negative?(t.negative=0,this.imod(t).redNeg()):this.imod(t)},E.prototype.pow=function(e,t){if(t.isZero())return new o(1).toRed(this);if(0===t.cmpn(1))return e.clone();var r=new Array(16);r[0]=new o(1).toRed(this),r[1]=e;for(var n=2;n<r.length;n++)r[n]=this.mul(r[n-1],e);var i=r[0],a=0,s=0,f=t.bitLength()%26;for(0===f&&(f=26),n=t.length-1;n>=0;n--){for(var c=t.words[n],u=f-1;u>=0;u--){var h=c>>u&1;i!==r[0]&&(i=this.sqr(i)),0!==h||0!==a?(a<<=1,a|=h,(4===++s||0===n&&0===u)&&(i=this.mul(i,r[a]),s=0,a=0)):s=0}f=26}return i},E.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},E.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},o.mont=function(e){return new A(e)},i(A,E),A.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},A.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},A.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},A.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new o(0)._forceRed(this);var r=e.mul(t),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},A.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e,this)}).call(this,r(27)(e))},function(e,t){var r;r=function(){return this}();try{r=r||new Function(\"return this\")()}catch(e){\"object\"==typeof window&&(r=window)}e.exports=r},function(e,t,r){\"use strict\";var n=t,i=r(3),o=r(11),a=r(62);n.assert=o,n.toArray=a.toArray,n.zero2=a.zero2,n.toHex=a.toHex,n.encode=a.encode,n.getNAF=function(e,t){for(var r=[],n=1<<t+1,i=e.clone();i.cmpn(1)>=0;){var o;if(i.isOdd()){var a=i.andln(n-1);o=a>(n>>1)-1?(n>>1)-a:a,i.isubn(o)}else o=0;r.push(o);for(var s=0!==i.cmpn(0)&&0===i.andln(n-1)?t+1:1,f=1;f<s;f++)r.push(0);i.iushrn(s)}return r},n.getJSF=function(e,t){var r=[[],[]];e=e.clone(),t=t.clone();for(var n=0,i=0;e.cmpn(-n)>0||t.cmpn(-i)>0;){var o,a,s,f=e.andln(3)+n&3,c=t.andln(3)+i&3;if(3===f&&(f=-1),3===c&&(c=-1),0==(1&f))o=0;else o=3!==(s=e.andln(7)+n&7)&&5!==s||2!==c?f:-f;if(r[0].push(o),0==(1&c))a=0;else a=3!==(s=t.andln(7)+i&7)&&5!==s||2!==f?c:-c;r[1].push(a),2*n===o+1&&(n=1-n),2*i===a+1&&(i=1-i),e.iushrn(1),t.iushrn(1)}return r},n.cachedProperty=function(e,t,r){var n=\"_\"+t;e.prototype[t]=function(){return void 0!==this[n]?this[n]:this[n]=r.call(this)}},n.parseBytes=function(e){return\"string\"==typeof e?n.toArray(e,\"hex\"):e},n.intFromLE=function(e){return new i(e,\"hex\",\"le\")}},function(e,t,r){\"use strict\";var n,i=\"object\"==typeof Reflect?Reflect:null,o=i&&\"function\"==typeof i.apply?i.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)};n=i&&\"function\"==typeof i.ownKeys?i.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var a=Number.isNaN||function(e){return e!=e};function s(){s.init.call(this)}e.exports=s,s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var f=10;function c(e){return void 0===e._maxListeners?s.defaultMaxListeners:e._maxListeners}function u(e,t,r,n){var i,o,a,s;if(\"function\"!=typeof r)throw new TypeError('The \"listener\" argument must be of type Function. Received type '+typeof r);if(void 0===(o=e._events)?(o=e._events=Object.create(null),e._eventsCount=0):(void 0!==o.newListener&&(e.emit(\"newListener\",t,r.listener?r.listener:r),o=e._events),a=o[t]),void 0===a)a=o[t]=r,++e._eventsCount;else if(\"function\"==typeof a?a=o[t]=n?[r,a]:[a,r]:n?a.unshift(r):a.push(r),(i=c(e))>0&&a.length>i&&!a.warned){a.warned=!0;var f=new Error(\"Possible EventEmitter memory leak detected. \"+a.length+\" \"+String(t)+\" listeners added. Use emitter.setMaxListeners() to increase limit\");f.name=\"MaxListenersExceededWarning\",f.emitter=e,f.type=t,f.count=a.length,s=f,console&&console.warn&&console.warn(s)}return e}function h(){for(var e=[],t=0;t<arguments.length;t++)e.push(arguments[t]);this.fired||(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,o(this.listener,this.target,e))}function l(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},i=h.bind(n);return i.listener=r,n.wrapFn=i,i}function d(e,t,r){var n=e._events;if(void 0===n)return[];var i=n[t];return void 0===i?[]:\"function\"==typeof i?r?[i.listener||i]:[i]:r?function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(i):b(i,i.length)}function p(e){var t=this._events;if(void 0!==t){var r=t[e];if(\"function\"==typeof r)return 1;if(void 0!==r)return r.length}return 0}function b(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}Object.defineProperty(s,\"defaultMaxListeners\",{enumerable:!0,get:function(){return f},set:function(e){if(\"number\"!=typeof e||e<0||a(e))throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received '+e+\".\");f=e}}),s.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},s.prototype.setMaxListeners=function(e){if(\"number\"!=typeof e||e<0||a(e))throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received '+e+\".\");return this._maxListeners=e,this},s.prototype.getMaxListeners=function(){return c(this)},s.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var n=\"error\"===e,i=this._events;if(void 0!==i)n=n&&void 0===i.error;else if(!n)return!1;if(n){var a;if(t.length>0&&(a=t[0]),a instanceof Error)throw a;var s=new Error(\"Unhandled error.\"+(a?\" (\"+a.message+\")\":\"\"));throw s.context=a,s}var f=i[e];if(void 0===f)return!1;if(\"function\"==typeof f)o(f,this,t);else{var c=f.length,u=b(f,c);for(r=0;r<c;++r)o(u[r],this,t)}return!0},s.prototype.addListener=function(e,t){return u(this,e,t,!1)},s.prototype.on=s.prototype.addListener,s.prototype.prependListener=function(e,t){return u(this,e,t,!0)},s.prototype.once=function(e,t){if(\"function\"!=typeof t)throw new TypeError('The \"listener\" argument must be of type Function. Received type '+typeof t);return this.on(e,l(this,e,t)),this},s.prototype.prependOnceListener=function(e,t){if(\"function\"!=typeof t)throw new TypeError('The \"listener\" argument must be of type Function. Received type '+typeof t);return this.prependListener(e,l(this,e,t)),this},s.prototype.removeListener=function(e,t){var r,n,i,o,a;if(\"function\"!=typeof t)throw new TypeError('The \"listener\" argument must be of type Function. Received type '+typeof t);if(void 0===(n=this._events))return this;if(void 0===(r=n[e]))return this;if(r===t||r.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit(\"removeListener\",e,r.listener||t));else if(\"function\"!=typeof r){for(i=-1,o=r.length-1;o>=0;o--)if(r[o]===t||r[o].listener===t){a=r[o].listener,i=o;break}if(i<0)return this;0===i?r.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(r,i),1===r.length&&(n[e]=r[0]),void 0!==n.removeListener&&this.emit(\"removeListener\",e,a||t)}return this},s.prototype.off=s.prototype.removeListener,s.prototype.removeAllListeners=function(e){var t,r,n;if(void 0===(r=this._events))return this;if(void 0===r.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==r[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete r[e]),this;if(0===arguments.length){var i,o=Object.keys(r);for(n=0;n<o.length;++n)\"removeListener\"!==(i=o[n])&&this.removeAllListeners(i);return this.removeAllListeners(\"removeListener\"),this._events=Object.create(null),this._eventsCount=0,this}if(\"function\"==typeof(t=r[e]))this.removeListener(e,t);else if(void 0!==t)for(n=t.length-1;n>=0;n--)this.removeListener(e,t[n]);return this},s.prototype.listeners=function(e){return d(this,e,!0)},s.prototype.rawListeners=function(e){return d(this,e,!1)},s.listenerCount=function(e,t){return\"function\"==typeof e.listenerCount?e.listenerCount(t):p.call(e,t)},s.prototype.listenerCount=p,s.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]}},function(e,t,r){\"use strict\";(function(e){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\nvar n=r(110),i=r(111),o=r(112);function a(){return f.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,t){if(a()<t)throw new RangeError(\"Invalid typed array length\");return f.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=f.prototype:(null===e&&(e=new f(t)),e.length=t),e}function f(e,t,r){if(!(f.TYPED_ARRAY_SUPPORT||this instanceof f))return new f(e,t,r);if(\"number\"==typeof e){if(\"string\"==typeof t)throw new Error(\"If encoding is specified then the first argument must be a string\");return h(this,e)}return c(this,e,t,r)}function c(e,t,r,n){if(\"number\"==typeof t)throw new TypeError('\"value\" argument must not be a number');return\"undefined\"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,r,n){if(t.byteLength,r<0||t.byteLength<r)throw new RangeError(\"'offset' is out of bounds\");if(t.byteLength<r+(n||0))throw new RangeError(\"'length' is out of bounds\");t=void 0===r&&void 0===n?new Uint8Array(t):void 0===n?new Uint8Array(t,r):new Uint8Array(t,r,n);f.TYPED_ARRAY_SUPPORT?(e=t).__proto__=f.prototype:e=l(e,t);return e}(e,t,r,n):\"string\"==typeof t?function(e,t,r){\"string\"==typeof r&&\"\"!==r||(r=\"utf8\");if(!f.isEncoding(r))throw new TypeError('\"encoding\" must be a valid string encoding');var n=0|p(t,r),i=(e=s(e,n)).write(t,r);i!==n&&(e=e.slice(0,i));return e}(e,t,r):function(e,t){if(f.isBuffer(t)){var r=0|d(t.length);return 0===(e=s(e,r)).length?e:(t.copy(e,0,0,r),e)}if(t){if(\"undefined\"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||\"length\"in t)return\"number\"!=typeof t.length||(n=t.length)!=n?s(e,0):l(e,t);if(\"Buffer\"===t.type&&o(t.data))return l(e,t.data)}var n;throw new TypeError(\"First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.\")}(e,t)}function u(e){if(\"number\"!=typeof e)throw new TypeError('\"size\" argument must be a number');if(e<0)throw new RangeError('\"size\" argument must not be negative')}function h(e,t){if(u(t),e=s(e,t<0?0:0|d(t)),!f.TYPED_ARRAY_SUPPORT)for(var r=0;r<t;++r)e[r]=0;return e}function l(e,t){var r=t.length<0?0:0|d(t.length);e=s(e,r);for(var n=0;n<r;n+=1)e[n]=255&t[n];return e}function d(e){if(e>=a())throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+a().toString(16)+\" bytes\");return 0|e}function p(e,t){if(f.isBuffer(e))return e.length;if(\"undefined\"!=typeof ArrayBuffer&&\"function\"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;\"string\"!=typeof e&&(e=\"\"+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":case void 0:return F(e).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return z(e).length;default:if(n)return F(e).length;t=(\"\"+t).toLowerCase(),n=!0}}function b(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(t>>>=0))return\"\";for(e||(e=\"utf8\");;)switch(e){case\"hex\":return P(this,t,r);case\"utf8\":case\"utf-8\":return x(this,t,r);case\"ascii\":return M(this,t,r);case\"latin1\":case\"binary\":return T(this,t,r);case\"base64\":return k(this,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return B(this,t,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+e);e=(e+\"\").toLowerCase(),n=!0}}function y(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function g(e,t,r,n,i){if(0===e.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof t&&(t=f.from(t,n)),f.isBuffer(t))return 0===t.length?-1:v(e,t,r,n,i);if(\"number\"==typeof t)return t&=255,f.TYPED_ARRAY_SUPPORT&&\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):v(e,[t],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function v(e,t,r,n,i){var o,a=1,s=e.length,f=t.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(e.length<2||t.length<2)return-1;a=2,s/=2,f/=2,r/=2}function c(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){var u=-1;for(o=r;o<s;o++)if(c(e,o)===c(t,-1===u?0:o-u)){if(-1===u&&(u=o),o-u+1===f)return u*a}else-1!==u&&(o-=o-u),u=-1}else for(r+f>s&&(r=s-f),o=r;o>=0;o--){for(var h=!0,l=0;l<f;l++)if(c(e,o+l)!==c(t,l)){h=!1;break}if(h)return o}return-1}function m(e,t,r,n){r=Number(r)||0;var i=e.length-r;n?(n=Number(n))>i&&(n=i):n=i;var o=t.length;if(o%2!=0)throw new TypeError(\"Invalid hex string\");n>o/2&&(n=o/2);for(var a=0;a<n;++a){var s=parseInt(t.substr(2*a,2),16);if(isNaN(s))return a;e[r+a]=s}return a}function _(e,t,r,n){return K(F(t,e.length-r),e,r,n)}function w(e,t,r,n){return K(function(e){for(var t=[],r=0;r<e.length;++r)t.push(255&e.charCodeAt(r));return t}(t),e,r,n)}function E(e,t,r,n){return w(e,t,r,n)}function A(e,t,r,n){return K(z(t),e,r,n)}function S(e,t,r,n){return K(function(e,t){for(var r,n,i,o=[],a=0;a<e.length&&!((t-=2)<0);++a)r=e.charCodeAt(a),n=r>>8,i=r%256,o.push(i),o.push(n);return o}(t,e.length-r),e,r,n)}function k(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function x(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i<r;){var o,a,s,f,c=e[i],u=null,h=c>239?4:c>223?3:c>191?2:1;if(i+h<=r)switch(h){case 1:c<128&&(u=c);break;case 2:128==(192&(o=e[i+1]))&&(f=(31&c)<<6|63&o)>127&&(u=f);break;case 3:o=e[i+1],a=e[i+2],128==(192&o)&&128==(192&a)&&(f=(15&c)<<12|(63&o)<<6|63&a)>2047&&(f<55296||f>57343)&&(u=f);break;case 4:o=e[i+1],a=e[i+2],s=e[i+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&(f=(15&c)<<18|(63&o)<<12|(63&a)<<6|63&s)>65535&&f<1114112&&(u=f)}null===u?(u=65533,h=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|1023&u),n.push(u),i+=h}return function(e){var t=e.length;if(t<=I)return String.fromCharCode.apply(String,e);var r=\"\",n=0;for(;n<t;)r+=String.fromCharCode.apply(String,e.slice(n,n+=I));return r}(n)}t.Buffer=f,t.SlowBuffer=function(e){+e!=e&&(e=0);return f.alloc(+e)},t.INSPECT_MAX_BYTES=50,f.TYPED_ARRAY_SUPPORT=void 0!==e.TYPED_ARRAY_SUPPORT?e.TYPED_ARRAY_SUPPORT:function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()&&\"function\"==typeof e.subarray&&0===e.subarray(1,1).byteLength}catch(e){return!1}}(),t.kMaxLength=a(),f.poolSize=8192,f._augment=function(e){return e.__proto__=f.prototype,e},f.from=function(e,t,r){return c(null,e,t,r)},f.TYPED_ARRAY_SUPPORT&&(f.prototype.__proto__=Uint8Array.prototype,f.__proto__=Uint8Array,\"undefined\"!=typeof Symbol&&Symbol.species&&f[Symbol.species]===f&&Object.defineProperty(f,Symbol.species,{value:null,configurable:!0})),f.alloc=function(e,t,r){return function(e,t,r,n){return u(t),t<=0?s(e,t):void 0!==r?\"string\"==typeof n?s(e,t).fill(r,n):s(e,t).fill(r):s(e,t)}(null,e,t,r)},f.allocUnsafe=function(e){return h(null,e)},f.allocUnsafeSlow=function(e){return h(null,e)},f.isBuffer=function(e){return!(null==e||!e._isBuffer)},f.compare=function(e,t){if(!f.isBuffer(e)||!f.isBuffer(t))throw new TypeError(\"Arguments must be Buffers\");if(e===t)return 0;for(var r=e.length,n=t.length,i=0,o=Math.min(r,n);i<o;++i)if(e[i]!==t[i]){r=e[i],n=t[i];break}return r<n?-1:n<r?1:0},f.isEncoding=function(e){switch(String(e).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}},f.concat=function(e,t){if(!o(e))throw new TypeError('\"list\" argument must be an Array of Buffers');if(0===e.length)return f.alloc(0);var r;if(void 0===t)for(t=0,r=0;r<e.length;++r)t+=e[r].length;var n=f.allocUnsafe(t),i=0;for(r=0;r<e.length;++r){var a=e[r];if(!f.isBuffer(a))throw new TypeError('\"list\" argument must be an Array of Buffers');a.copy(n,i),i+=a.length}return n},f.byteLength=p,f.prototype._isBuffer=!0,f.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(var t=0;t<e;t+=2)y(this,t,t+1);return this},f.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError(\"Buffer size must be a multiple of 32-bits\");for(var t=0;t<e;t+=4)y(this,t,t+3),y(this,t+1,t+2);return this},f.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError(\"Buffer size must be a multiple of 64-bits\");for(var t=0;t<e;t+=8)y(this,t,t+7),y(this,t+1,t+6),y(this,t+2,t+5),y(this,t+3,t+4);return this},f.prototype.toString=function(){var e=0|this.length;return 0===e?\"\":0===arguments.length?x(this,0,e):b.apply(this,arguments)},f.prototype.equals=function(e){if(!f.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");return this===e||0===f.compare(this,e)},f.prototype.inspect=function(){var e=\"\",r=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString(\"hex\",0,r).match(/.{2}/g).join(\" \"),this.length>r&&(e+=\" ... \")),\"<Buffer \"+e+\">\"},f.prototype.compare=function(e,t,r,n,i){if(!f.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError(\"out of range index\");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(n>>>=0),a=(r>>>=0)-(t>>>=0),s=Math.min(o,a),c=this.slice(n,i),u=e.slice(t,r),h=0;h<s;++h)if(c[h]!==u[h]){o=c[h],a=u[h];break}return o<a?-1:a<o?1:0},f.prototype.includes=function(e,t,r){return-1!==this.indexOf(e,t,r)},f.prototype.indexOf=function(e,t,r){return g(this,e,t,r,!0)},f.prototype.lastIndexOf=function(e,t,r){return g(this,e,t,r,!1)},f.prototype.write=function(e,t,r,n){if(void 0===t)n=\"utf8\",r=this.length,t=0;else if(void 0===r&&\"string\"==typeof t)n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");t|=0,isFinite(r)?(r|=0,void 0===n&&(n=\"utf8\")):(n=r,r=void 0)}var i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var o=!1;;)switch(n){case\"hex\":return m(this,e,t,r);case\"utf8\":case\"utf-8\":return _(this,e,t,r);case\"ascii\":return w(this,e,t,r);case\"latin1\":case\"binary\":return E(this,e,t,r);case\"base64\":return A(this,e,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return S(this,e,t,r);default:if(o)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),o=!0}},f.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var I=4096;function M(e,t,r){var n=\"\";r=Math.min(e.length,r);for(var i=t;i<r;++i)n+=String.fromCharCode(127&e[i]);return n}function T(e,t,r){var n=\"\";r=Math.min(e.length,r);for(var i=t;i<r;++i)n+=String.fromCharCode(e[i]);return n}function P(e,t,r){var n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);for(var i=\"\",o=t;o<r;++o)i+=U(e[o]);return i}function B(e,t,r){for(var n=e.slice(t,r),i=\"\",o=0;o<n.length;o+=2)i+=String.fromCharCode(n[o]+256*n[o+1]);return i}function L(e,t,r){if(e%1!=0||e<0)throw new RangeError(\"offset is not uint\");if(e+t>r)throw new RangeError(\"Trying to access beyond buffer length\")}function R(e,t,r,n,i,o){if(!f.isBuffer(e))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(t>i||t<o)throw new RangeError('\"value\" argument is out of bounds');if(r+n>e.length)throw new RangeError(\"Index out of range\")}function O(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,o=Math.min(e.length-r,2);i<o;++i)e[r+i]=(t&255<<8*(n?i:1-i))>>>8*(n?i:1-i)}function C(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,o=Math.min(e.length-r,4);i<o;++i)e[r+i]=t>>>8*(n?i:3-i)&255}function N(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function j(e,t,r,n,o){return o||N(e,0,r,4),i.write(e,t,r,n,23,4),r+4}function D(e,t,r,n,o){return o||N(e,0,r,8),i.write(e,t,r,n,52,8),r+8}f.prototype.slice=function(e,t){var r,n=this.length;if((e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t<e&&(t=e),f.TYPED_ARRAY_SUPPORT)(r=this.subarray(e,t)).__proto__=f.prototype;else{var i=t-e;r=new f(i,void 0);for(var o=0;o<i;++o)r[o]=this[o+e]}return r},f.prototype.readUIntLE=function(e,t,r){e|=0,t|=0,r||L(e,t,this.length);for(var n=this[e],i=1,o=0;++o<t&&(i*=256);)n+=this[e+o]*i;return n},f.prototype.readUIntBE=function(e,t,r){e|=0,t|=0,r||L(e,t,this.length);for(var n=this[e+--t],i=1;t>0&&(i*=256);)n+=this[e+--t]*i;return n},f.prototype.readUInt8=function(e,t){return t||L(e,1,this.length),this[e]},f.prototype.readUInt16LE=function(e,t){return t||L(e,2,this.length),this[e]|this[e+1]<<8},f.prototype.readUInt16BE=function(e,t){return t||L(e,2,this.length),this[e]<<8|this[e+1]},f.prototype.readUInt32LE=function(e,t){return t||L(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},f.prototype.readUInt32BE=function(e,t){return t||L(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},f.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||L(e,t,this.length);for(var n=this[e],i=1,o=0;++o<t&&(i*=256);)n+=this[e+o]*i;return n>=(i*=128)&&(n-=Math.pow(2,8*t)),n},f.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||L(e,t,this.length);for(var n=t,i=1,o=this[e+--n];n>0&&(i*=256);)o+=this[e+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*t)),o},f.prototype.readInt8=function(e,t){return t||L(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},f.prototype.readInt16LE=function(e,t){t||L(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},f.prototype.readInt16BE=function(e,t){t||L(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},f.prototype.readInt32LE=function(e,t){return t||L(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},f.prototype.readInt32BE=function(e,t){return t||L(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},f.prototype.readFloatLE=function(e,t){return t||L(e,4,this.length),i.read(this,e,!0,23,4)},f.prototype.readFloatBE=function(e,t){return t||L(e,4,this.length),i.read(this,e,!1,23,4)},f.prototype.readDoubleLE=function(e,t){return t||L(e,8,this.length),i.read(this,e,!0,52,8)},f.prototype.readDoubleBE=function(e,t){return t||L(e,8,this.length),i.read(this,e,!1,52,8)},f.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t|=0,r|=0,n)||R(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[t]=255&e;++o<r&&(i*=256);)this[t+o]=e/i&255;return t+r},f.prototype.writeUIntBE=function(e,t,r,n){(e=+e,t|=0,r|=0,n)||R(this,e,t,r,Math.pow(2,8*r)-1,0);var i=r-1,o=1;for(this[t+i]=255&e;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+r},f.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,1,255,0),f.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},f.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,65535,0),f.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):O(this,e,t,!0),t+2},f.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,65535,0),f.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):O(this,e,t,!1),t+2},f.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,4294967295,0),f.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):C(this,e,t,!0),t+4},f.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,4294967295,0),f.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):C(this,e,t,!1),t+4},f.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);R(this,e,t,r,i-1,-i)}var o=0,a=1,s=0;for(this[t]=255&e;++o<r&&(a*=256);)e<0&&0===s&&0!==this[t+o-1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+r},f.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);R(this,e,t,r,i-1,-i)}var o=r-1,a=1,s=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+r},f.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,1,127,-128),f.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},f.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,32767,-32768),f.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):O(this,e,t,!0),t+2},f.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,32767,-32768),f.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):O(this,e,t,!1),t+2},f.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,2147483647,-2147483648),f.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):C(this,e,t,!0),t+4},f.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),f.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):C(this,e,t,!1),t+4},f.prototype.writeFloatLE=function(e,t,r){return j(this,e,t,!0,r)},f.prototype.writeFloatBE=function(e,t,r){return j(this,e,t,!1,r)},f.prototype.writeDoubleLE=function(e,t,r){return D(this,e,t,!0,r)},f.prototype.writeDoubleBE=function(e,t,r){return D(this,e,t,!1,r)},f.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<r&&(n=r),n===r)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError(\"targetStart out of bounds\");if(r<0||r>=this.length)throw new RangeError(\"sourceStart out of bounds\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),e.length-t<n-r&&(n=e.length-t+r);var i,o=n-r;if(this===e&&r<t&&t<n)for(i=o-1;i>=0;--i)e[i+t]=this[i+r];else if(o<1e3||!f.TYPED_ARRAY_SUPPORT)for(i=0;i<o;++i)e[i+t]=this[i+r];else Uint8Array.prototype.set.call(e,this.subarray(r,r+o),t);return o},f.prototype.fill=function(e,t,r,n){if(\"string\"==typeof e){if(\"string\"==typeof t?(n=t,t=0,r=this.length):\"string\"==typeof r&&(n=r,r=this.length),1===e.length){var i=e.charCodeAt(0);i<256&&(e=i)}if(void 0!==n&&\"string\"!=typeof n)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof n&&!f.isEncoding(n))throw new TypeError(\"Unknown encoding: \"+n)}else\"number\"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<r)throw new RangeError(\"Out of range index\");if(r<=t)return this;var o;if(t>>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),\"number\"==typeof e)for(o=t;o<r;++o)this[o]=e;else{var a=f.isBuffer(e)?e:F(new f(e,n).toString()),s=a.length;for(o=0;o<r-t;++o)this[o+t]=a[o%s]}return this};var q=/[^+\\/0-9A-Za-z-_]/g;function U(e){return e<16?\"0\"+e.toString(16):e.toString(16)}function F(e,t){var r;t=t||1/0;for(var n=e.length,i=null,o=[],a=0;a<n;++a){if((r=e.charCodeAt(a))>55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function z(e){return n.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\\s+|\\s+$/g,\"\")}(e).replace(q,\"\")).length<2)return\"\";for(;e.length%4!=0;)e+=\"=\";return e}(e))}function K(e,t,r,n){for(var i=0;i<n&&!(i+r>=t.length||i>=e.length);++i)t[i+r]=e[i];return i}}).call(this,r(4))},function(e,t,r){\"use strict\";var n=r(11),i=r(0);function o(e,t){return 55296==(64512&e.charCodeAt(t))&&(!(t<0||t+1>=e.length)&&56320==(64512&e.charCodeAt(t+1)))}function a(e){return(e>>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24)>>>0}function s(e){return 1===e.length?\"0\"+e:e}function f(e){return 7===e.length?\"0\"+e:6===e.length?\"00\"+e:5===e.length?\"000\"+e:4===e.length?\"0000\"+e:3===e.length?\"00000\"+e:2===e.length?\"000000\"+e:1===e.length?\"0000000\"+e:e}t.inherits=i,t.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if(\"string\"==typeof e)if(t){if(\"hex\"===t)for((e=e.replace(/[^a-z0-9]+/gi,\"\")).length%2!=0&&(e=\"0\"+e),i=0;i<e.length;i+=2)r.push(parseInt(e[i]+e[i+1],16))}else for(var n=0,i=0;i<e.length;i++){var a=e.charCodeAt(i);a<128?r[n++]=a:a<2048?(r[n++]=a>>6|192,r[n++]=63&a|128):o(e,i)?(a=65536+((1023&a)<<10)+(1023&e.charCodeAt(++i)),r[n++]=a>>18|240,r[n++]=a>>12&63|128,r[n++]=a>>6&63|128,r[n++]=63&a|128):(r[n++]=a>>12|224,r[n++]=a>>6&63|128,r[n++]=63&a|128)}else for(i=0;i<e.length;i++)r[i]=0|e[i];return r},t.toHex=function(e){for(var t=\"\",r=0;r<e.length;r++)t+=s(e[r].toString(16));return t},t.htonl=a,t.toHex32=function(e,t){for(var r=\"\",n=0;n<e.length;n++){var i=e[n];\"little\"===t&&(i=a(i)),r+=f(i.toString(16))}return r},t.zero2=s,t.zero8=f,t.join32=function(e,t,r,i){var o=r-t;n(o%4==0);for(var a=new Array(o/4),s=0,f=t;s<a.length;s++,f+=4){var c;c=\"big\"===i?e[f]<<24|e[f+1]<<16|e[f+2]<<8|e[f+3]:e[f+3]<<24|e[f+2]<<16|e[f+1]<<8|e[f],a[s]=c>>>0}return a},t.split32=function(e,t){for(var r=new Array(4*e.length),n=0,i=0;n<e.length;n++,i+=4){var o=e[n];\"big\"===t?(r[i]=o>>>24,r[i+1]=o>>>16&255,r[i+2]=o>>>8&255,r[i+3]=255&o):(r[i+3]=o>>>24,r[i+2]=o>>>16&255,r[i+1]=o>>>8&255,r[i]=255&o)}return r},t.rotr32=function(e,t){return e>>>t|e<<32-t},t.rotl32=function(e,t){return e<<t|e>>>32-t},t.sum32=function(e,t){return e+t>>>0},t.sum32_3=function(e,t,r){return e+t+r>>>0},t.sum32_4=function(e,t,r,n){return e+t+r+n>>>0},t.sum32_5=function(e,t,r,n,i){return e+t+r+n+i>>>0},t.sum64=function(e,t,r,n){var i=e[t],o=n+e[t+1]>>>0,a=(o<n?1:0)+r+i;e[t]=a>>>0,e[t+1]=o},t.sum64_hi=function(e,t,r,n){return(t+n>>>0<t?1:0)+e+r>>>0},t.sum64_lo=function(e,t,r,n){return t+n>>>0},t.sum64_4_hi=function(e,t,r,n,i,o,a,s){var f=0,c=t;return f+=(c=c+n>>>0)<t?1:0,f+=(c=c+o>>>0)<o?1:0,e+r+i+a+(f+=(c=c+s>>>0)<s?1:0)>>>0},t.sum64_4_lo=function(e,t,r,n,i,o,a,s){return t+n+o+s>>>0},t.sum64_5_hi=function(e,t,r,n,i,o,a,s,f,c){var u=0,h=t;return u+=(h=h+n>>>0)<t?1:0,u+=(h=h+o>>>0)<o?1:0,u+=(h=h+s>>>0)<s?1:0,e+r+i+a+f+(u+=(h=h+c>>>0)<c?1:0)>>>0},t.sum64_5_lo=function(e,t,r,n,i,o,a,s,f,c){return t+n+o+s+c>>>0},t.rotr64_hi=function(e,t,r){return(t<<32-r|e>>>r)>>>0},t.rotr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0},t.shr64_hi=function(e,t,r){return e>>>r},t.shr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0}},function(e,t){var r,n,i=e.exports={};function o(){throw new Error(\"setTimeout has not been defined\")}function a(){throw new Error(\"clearTimeout has not been defined\")}function s(e){if(r===setTimeout)return setTimeout(e,0);if((r===o||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}!function(){try{r=\"function\"==typeof setTimeout?setTimeout:o}catch(e){r=o}try{n=\"function\"==typeof clearTimeout?clearTimeout:a}catch(e){n=a}}();var f,c=[],u=!1,h=-1;function l(){u&&f&&(u=!1,f.length?c=f.concat(c):h=-1,c.length&&d())}function d(){if(!u){var e=s(l);u=!0;for(var t=c.length;t;){for(f=c,c=[];++h<t;)f&&f[h].run();h=-1,t=c.length}f=null,u=!1,function(e){if(n===clearTimeout)return clearTimeout(e);if((n===a||!n)&&clearTimeout)return n=clearTimeout,clearTimeout(e);try{n(e)}catch(t){try{return n.call(null,e)}catch(t){return n.call(this,e)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function b(){}i.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];c.push(new p(e,t)),1!==c.length||u||s(d)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title=\"browser\",i.browser=!0,i.env={},i.argv=[],i.version=\"\",i.versions={},i.on=b,i.addListener=b,i.once=b,i.off=b,i.removeListener=b,i.removeAllListeners=b,i.emit=b,i.prependListener=b,i.prependOnceListener=b,i.listeners=function(e){return[]},i.binding=function(e){throw new Error(\"process.binding is not supported\")},i.cwd=function(){return\"/\"},i.chdir=function(e){throw new Error(\"process.chdir is not supported\")},i.umask=function(){return 0}},function(e,t,r){\"use strict\";var n=r(25),i=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=h;var o=r(16);o.inherits=r(0);var a=r(53),s=r(34);o.inherits(h,a);for(var f=i(s.prototype),c=0;c<f.length;c++){var u=f[c];h.prototype[u]||(h.prototype[u]=s.prototype[u])}function h(e){if(!(this instanceof h))return new h(e);a.call(this,e),s.call(this,e),e&&!1===e.readable&&(this.readable=!1),e&&!1===e.writable&&(this.writable=!1),this.allowHalfOpen=!0,e&&!1===e.allowHalfOpen&&(this.allowHalfOpen=!1),this.once(\"end\",l)}function l(){this.allowHalfOpen||this._writableState.ended||n.nextTick(d,this)}function d(e){e.end()}Object.defineProperty(h.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(h.prototype,\"destroyed\",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(e){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=e,this._writableState.destroyed=e)}}),h.prototype._destroy=function(e,t){this.push(null),this.end(),n.nextTick(t,e)}},function(e,t){function r(e,t){if(!e)throw new Error(t||\"Assertion failed\")}e.exports=r,r.equal=function(e,t,r){if(e!=t)throw new Error(r||\"Assertion failed: \"+e+\" != \"+t)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.isAsync=void 0;var n,i=r(189),o=(n=i)&&n.__esModule?n:{default:n};var a=\"function\"==typeof Symbol;function s(e){return a&&\"AsyncFunction\"===e[Symbol.toStringTag]}t.default=function(e){return s(e)?(0,o.default)(e):e},t.isAsync=s},function(e,t,r){\"use strict\";var n=r(19);function i(){}e.exports=i,i.prototype.setEngine=function(e){var t=this;t.engine||(t.engine=e,e.on(\"block\",(function(e){t.currentBlock=e})),e.on(\"start\",(function(){t.start()})),e.on(\"stop\",(function(){t.stop()})))},i.prototype.handleRequest=function(e,t,r){throw new Error(\"Subproviders should override `handleRequest`.\")},i.prototype.emitPayload=function(e,t){this.engine.sendAsync(n(e),t)},i.prototype.stop=function(){},i.prototype.start=function(){}},function(e,t,r){var n=r(1).Buffer;function i(e,t){this._block=n.alloc(e),this._finalSize=t,this._blockSize=e,this._len=0}i.prototype.update=function(e,t){\"string\"==typeof e&&(t=t||\"utf8\",e=n.from(e,t));for(var r=this._block,i=this._blockSize,o=e.length,a=this._len,s=0;s<o;){for(var f=a%i,c=Math.min(o-s,i-f),u=0;u<c;u++)r[f+u]=e[s+u];s+=c,(a+=c)%i==0&&this._update(r)}return this._len+=o,this},i.prototype.digest=function(e){var t=this._len%this._blockSize;this._block[t]=128,this._block.fill(0,t+1),t>=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var n=(4294967295&r)>>>0,i=(r-n)/4294967296;this._block.writeUInt32BE(i,this._blockSize-8),this._block.writeUInt32BE(n,this._blockSize-4)}this._update(this._block);var o=this._hash();return e?o.toString(e):o},i.prototype._update=function(){throw new Error(\"_update must be implemented by subclass\")},e.exports=i},function(e,t,r){\"use strict\";var n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},i=r(52),o=r(57),a=r(68),s=r(69),f=r(3),c=r(36),u=r(1).Buffer;Object.assign(t,r(70)),t.MAX_INTEGER=new f(\"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",16),t.TWO_POW256=new f(\"10000000000000000000000000000000000000000000000000000000000000000\",16),t.KECCAK256_NULL_S=\"c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470\",t.SHA3_NULL_S=t.KECCAK256_NULL_S,t.KECCAK256_NULL=u.from(t.KECCAK256_NULL_S,\"hex\"),t.SHA3_NULL=t.KECCAK256_NULL,t.KECCAK256_RLP_ARRAY_S=\"1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",t.SHA3_RLP_ARRAY_S=t.KECCAK256_RLP_ARRAY_S,t.KECCAK256_RLP_ARRAY=u.from(t.KECCAK256_RLP_ARRAY_S,\"hex\"),t.SHA3_RLP_ARRAY=t.KECCAK256_RLP_ARRAY,t.KECCAK256_RLP_S=\"56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421\",t.SHA3_RLP_S=t.KECCAK256_RLP_S,t.KECCAK256_RLP=u.from(t.KECCAK256_RLP_S,\"hex\"),t.SHA3_RLP=t.KECCAK256_RLP,t.BN=f,t.rlp=s,t.secp256k1=o,t.zeros=function(e){return u.allocUnsafe(e).fill(0)},t.zeroAddress=function(){var e=t.zeros(20);return t.bufferToHex(e)},t.setLengthLeft=t.setLength=function(e,r,n){var i=t.zeros(r);return e=t.toBuffer(e),n?e.length<r?(e.copy(i),i):e.slice(0,r):e.length<r?(e.copy(i,r-e.length),i):e.slice(-r)},t.setLengthRight=function(e,r){return t.setLength(e,r,!0)},t.unpad=t.stripZeros=function(e){for(var r=(e=t.stripHexPrefix(e))[0];e.length>0&&\"0\"===r.toString();)r=(e=e.slice(1))[0];return e},t.toBuffer=function(e){if(!u.isBuffer(e))if(Array.isArray(e))e=u.from(e);else if(\"string\"==typeof e)e=t.isHexString(e)?u.from(t.padToEven(t.stripHexPrefix(e)),\"hex\"):u.from(e);else if(\"number\"==typeof e)e=t.intToBuffer(e);else if(null==e)e=u.allocUnsafe(0);else if(f.isBN(e))e=e.toArrayLike(u);else{if(!e.toArray)throw new Error(\"invalid type\");e=u.from(e.toArray())}return e},t.bufferToInt=function(e){return new f(t.toBuffer(e)).toNumber()},t.bufferToHex=function(e){return\"0x\"+(e=t.toBuffer(e)).toString(\"hex\")},t.fromSigned=function(e){return new f(e).fromTwos(256)},t.toUnsigned=function(e){return u.from(e.toTwos(256).toArray())},t.keccak=function(e,r){return e=t.toBuffer(e),r||(r=256),i(\"keccak\"+r).update(e).digest()},t.keccak256=function(e){return t.keccak(e)},t.sha3=t.keccak,t.sha256=function(e){return e=t.toBuffer(e),c(\"sha256\").update(e).digest()},t.ripemd160=function(e,r){e=t.toBuffer(e);var n=c(\"rmd160\").update(e).digest();return!0===r?t.setLength(n,32):n},t.rlphash=function(e){return t.keccak(s.encode(e))},t.isValidPrivate=function(e){return o.privateKeyVerify(e)},t.isValidPublic=function(e,t){return 64===e.length?o.publicKeyVerify(u.concat([u.from([4]),e])):!!t&&o.publicKeyVerify(e)},t.pubToAddress=t.publicToAddress=function(e,r){return e=t.toBuffer(e),r&&64!==e.length&&(e=o.publicKeyConvert(e,!1).slice(1)),a(64===e.length),t.keccak(e).slice(-20)};var h=t.privateToPublic=function(e){return e=t.toBuffer(e),o.publicKeyCreate(e,!1).slice(1)};t.importPublic=function(e){return 64!==(e=t.toBuffer(e)).length&&(e=o.publicKeyConvert(e,!1).slice(1)),e},t.ecsign=function(e,t){var r=o.sign(e,t),n={};return n.r=r.signature.slice(0,32),n.s=r.signature.slice(32,64),n.v=r.recovery+27,n},t.hashPersonalMessage=function(e){var r=t.toBuffer(\"\u0019Ethereum Signed Message:\\n\"+e.length.toString());return t.keccak(u.concat([r,e]))},t.ecrecover=function(e,r,n,i){var a=u.concat([t.setLength(n,32),t.setLength(i,32)],64),s=r-27;if(0!==s&&1!==s)throw new Error(\"Invalid signature v value\");var f=o.recover(e,a,s);return o.publicKeyConvert(f,!1).slice(1)},t.toRpcSig=function(e,r,n){if(27!==e&&28!==e)throw new Error(\"Invalid recovery id\");return t.bufferToHex(u.concat([t.setLengthLeft(r,32),t.setLengthLeft(n,32),t.toBuffer(e-27)]))},t.fromRpcSig=function(e){if(65!==(e=t.toBuffer(e)).length)throw new Error(\"Invalid signature length\");var r=e[64];return r<27&&(r+=27),{v:r,r:e.slice(0,32),s:e.slice(32,64)}},t.privateToAddress=function(e){return t.publicToAddress(h(e))},t.isValidAddress=function(e){return/^0x[0-9a-fA-F]{40}$/.test(e)},t.isZeroAddress=function(e){return t.zeroAddress()===t.addHexPrefix(e)},t.toChecksumAddress=function(e){e=t.stripHexPrefix(e).toLowerCase();for(var r=t.keccak(e).toString(\"hex\"),n=\"0x\",i=0;i<e.length;i++)parseInt(r[i],16)>=8?n+=e[i].toUpperCase():n+=e[i];return n},t.isValidChecksumAddress=function(e){return t.isValidAddress(e)&&t.toChecksumAddress(e)===e},t.generateAddress=function(e,r){return e=t.toBuffer(e),r=(r=new f(r)).isZero()?null:u.from(r.toArray()),t.rlphash([e,r]).slice(-20)},t.isPrecompiled=function(e){var r=t.unpad(e);return 1===r.length&&r[0]>=1&&r[0]<=8},t.addHexPrefix=function(e){return\"string\"!=typeof e?e:t.isHexPrefixed(e)?e:\"0x\"+e},t.isValidSignature=function(e,t,r,n){var i=new f(\"7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0\",16),o=new f(\"fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\",16);return 32===t.length&&32===r.length&&((27===e||28===e)&&(t=new f(t),r=new f(r),!(t.isZero()||t.gt(o)||r.isZero()||r.gt(o))&&(!1!==n||1!==new f(r).cmp(i))))},t.baToJSON=function(e){if(u.isBuffer(e))return\"0x\"+e.toString(\"hex\");if(e instanceof Array){for(var r=[],n=0;n<e.length;n++)r.push(t.baToJSON(e[n]));return r}},t.defineProperties=function(e,r,i){if(e.raw=[],e._fields=[],e.toJSON=function(r){if(r){var n={};return e._fields.forEach((function(t){n[t]=\"0x\"+e[t].toString(\"hex\")})),n}return t.baToJSON(this.raw)},e.serialize=function(){return s.encode(e.raw)},r.forEach((function(r,n){function i(){return e.raw[n]}function o(i){\"00\"!==(i=t.toBuffer(i)).toString(\"hex\")||r.allowZero||(i=u.allocUnsafe(0)),r.allowLess&&r.length?(i=t.stripZeros(i),a(r.length>=i.length,\"The field \"+r.name+\" must not have more \"+r.length+\" bytes\")):r.allowZero&&0===i.length||!r.length||a(r.length===i.length,\"The field \"+r.name+\" must have byte length of \"+r.length),e.raw[n]=i}e._fields.push(r.name),Object.defineProperty(e,r.name,{enumerable:!0,configurable:!0,get:i,set:o}),r.default&&(e[r.name]=r.default),r.alias&&Object.defineProperty(e,r.alias,{enumerable:!1,configurable:!0,set:o,get:i})})),i)if(\"string\"==typeof i&&(i=u.from(t.stripHexPrefix(i),\"hex\")),u.isBuffer(i)&&(i=s.decode(i)),Array.isArray(i)){if(i.length>e._fields.length)throw new Error(\"wrong number of fields in data\");i.forEach((function(r,n){e[e._fields[n]]=t.toBuffer(r)}))}else{if(\"object\"!==(void 0===i?\"undefined\":n(i)))throw new Error(\"invalid data\");var o=Object.keys(i);r.forEach((function(t){-1!==o.indexOf(t.name)&&(e[t.name]=i[t.name]),-1!==o.indexOf(t.alias)&&(e[t.alias]=i[t.alias])}))}}},function(e,t,r){(function(e){function r(e){return Object.prototype.toString.call(e)}t.isArray=function(e){return Array.isArray?Array.isArray(e):\"[object Array]\"===r(e)},t.isBoolean=function(e){return\"boolean\"==typeof e},t.isNull=function(e){return null===e},t.isNullOrUndefined=function(e){return null==e},t.isNumber=function(e){return\"number\"==typeof e},t.isString=function(e){return\"string\"==typeof e},t.isSymbol=function(e){return\"symbol\"==typeof e},t.isUndefined=function(e){return void 0===e},t.isRegExp=function(e){return\"[object RegExp]\"===r(e)},t.isObject=function(e){return\"object\"==typeof e&&null!==e},t.isDate=function(e){return\"[object Date]\"===r(e)},t.isError=function(e){return\"[object Error]\"===r(e)||e instanceof Error},t.isFunction=function(e){return\"function\"==typeof e},t.isPrimitive=function(e){return null===e||\"boolean\"==typeof e||\"number\"==typeof e||\"string\"==typeof e||\"symbol\"==typeof e||void 0===e},t.isBuffer=e.isBuffer}).call(this,r(7).Buffer)},function(e,t,r){\"use strict\";var n=r(8),i=r(11);function o(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian=\"big\",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}t.BlockHash=o,o.prototype.update=function(e,t){if(e=n.toArray(e,t),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var r=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-r,e.length),0===this.pending.length&&(this.pending=null),e=n.join32(e,0,e.length-r,this.endian);for(var i=0;i<e.length;i+=this._delta32)this._update(e,i,i+this._delta32)}return this},o.prototype.digest=function(e){return this.update(this._pad()),i(null===this.pending),this._digest(e)},o.prototype._pad=function(){var e=this.pendingTotal,t=this._delta8,r=t-(e+this.padLength)%t,n=new Array(r+this.padLength);n[0]=128;for(var i=1;i<r;i++)n[i]=0;if(e<<=3,\"big\"===this.endian){for(var o=8;o<this.padLength;o++)n[i++]=0;n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=e>>>24&255,n[i++]=e>>>16&255,n[i++]=e>>>8&255,n[i++]=255&e}else for(n[i++]=255&e,n[i++]=e>>>8&255,n[i++]=e>>>16&255,n[i++]=e>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,o=8;o<this.padLength;o++)n[i++]=0;return n}},function(e,t){e.exports=function(){}},function(e,t,r){\"use strict\";var n=r(200),i=r(29);e.exports=function(e){return i({id:n(),jsonrpc:\"2.0\",params:[]},e)}},function(e,t){function r(e){return e.sort((e,t)=>\"latest\"===e||\"earliest\"===t?1:\"latest\"===t||\"earliest\"===e?-1:n(e)-n(t))}function n(e){return null==e?e:Number.parseInt(e,16)}function i(e){if(null==e)return e;let t=e.toString(16);return t.length%2&&(t=\"0\"+t),\"0x\"+t}function o(){return Math.floor(16*Math.random()).toString(16)}e.exports={minBlockRef:function(...e){return r(e)[0]},maxBlockRef:function(...e){const t=r(e);return t[t.length-1]},sortBlockRefs:r,bnToHex:function(e){return\"0x\"+e.toString(16)},blockRefIsNumber:function(e){return e&&![\"earliest\",\"latest\",\"pending\"].includes(e)},hexToInt:n,incrementHexInt:function(e){if(null==e)return e;return i(n(e)+1)},intToHex:i,unsafeRandomBytes:function(e){let t=\"0x\";for(let r=0;r<e;r++)t+=o(),t+=o();return t}}},function(e,t,r){\"use strict\";var n=r(229);e.exports=Function.prototype.bind||n},function(e,t,r){\"use strict\";var n=TypeError,i=Object.getOwnPropertyDescriptor?function(){return Object.getOwnPropertyDescriptor(arguments,\"callee\").get}():function(){throw new n},o=r(233)(),a=Object.getPrototypeOf||function(e){return e.__proto__},s=void 0,f=\"undefined\"==typeof Uint8Array?void 0:a(Uint8Array),c={\"$ %Array%\":Array,\"$ %ArrayBuffer%\":\"undefined\"==typeof ArrayBuffer?void 0:ArrayBuffer,\"$ %ArrayBufferPrototype%\":\"undefined\"==typeof ArrayBuffer?void 0:ArrayBuffer.prototype,\"$ %ArrayIteratorPrototype%\":o?a([][Symbol.iterator]()):void 0,\"$ %ArrayPrototype%\":Array.prototype,\"$ %ArrayProto_entries%\":Array.prototype.entries,\"$ %ArrayProto_forEach%\":Array.prototype.forEach,\"$ %ArrayProto_keys%\":Array.prototype.keys,\"$ %ArrayProto_values%\":Array.prototype.values,\"$ %AsyncFromSyncIteratorPrototype%\":void 0,\"$ %AsyncFunction%\":void 0,\"$ %AsyncFunctionPrototype%\":void 0,\"$ %AsyncGenerator%\":void 0,\"$ %AsyncGeneratorFunction%\":void 0,\"$ %AsyncGeneratorPrototype%\":void 0,\"$ %AsyncIteratorPrototype%\":s&&o&&Symbol.asyncIterator?s[Symbol.asyncIterator]():void 0,\"$ %Atomics%\":\"undefined\"==typeof Atomics?void 0:Atomics,\"$ %Boolean%\":Boolean,\"$ %BooleanPrototype%\":Boolean.prototype,\"$ %DataView%\":\"undefined\"==typeof DataView?void 0:DataView,\"$ %DataViewPrototype%\":\"undefined\"==typeof DataView?void 0:DataView.prototype,\"$ %Date%\":Date,\"$ %DatePrototype%\":Date.prototype,\"$ %decodeURI%\":decodeURI,\"$ %decodeURIComponent%\":decodeURIComponent,\"$ %encodeURI%\":encodeURI,\"$ %encodeURIComponent%\":encodeURIComponent,\"$ %Error%\":Error,\"$ %ErrorPrototype%\":Error.prototype,\"$ %eval%\":eval,\"$ %EvalError%\":EvalError,\"$ %EvalErrorPrototype%\":EvalError.prototype,\"$ %Float32Array%\":\"undefined\"==typeof Float32Array?void 0:Float32Array,\"$ %Float32ArrayPrototype%\":\"undefined\"==typeof Float32Array?void 0:Float32Array.prototype,\"$ %Float64Array%\":\"undefined\"==typeof Float64Array?void 0:Float64Array,\"$ %Float64ArrayPrototype%\":\"undefined\"==typeof Float64Array?void 0:Float64Array.prototype,\"$ %Function%\":Function,\"$ %FunctionPrototype%\":Function.prototype,\"$ %Generator%\":void 0,\"$ %GeneratorFunction%\":void 0,\"$ %GeneratorPrototype%\":void 0,\"$ %Int8Array%\":\"undefined\"==typeof Int8Array?void 0:Int8Array,\"$ %Int8ArrayPrototype%\":\"undefined\"==typeof Int8Array?void 0:Int8Array.prototype,\"$ %Int16Array%\":\"undefined\"==typeof Int16Array?void 0:Int16Array,\"$ %Int16ArrayPrototype%\":\"undefined\"==typeof Int16Array?void 0:Int8Array.prototype,\"$ %Int32Array%\":\"undefined\"==typeof Int32Array?void 0:Int32Array,\"$ %Int32ArrayPrototype%\":\"undefined\"==typeof Int32Array?void 0:Int32Array.prototype,\"$ %isFinite%\":isFinite,\"$ %isNaN%\":isNaN,\"$ %IteratorPrototype%\":o?a(a([][Symbol.iterator]())):void 0,\"$ %JSON%\":JSON,\"$ %JSONParse%\":JSON.parse,\"$ %Map%\":\"undefined\"==typeof Map?void 0:Map,\"$ %MapIteratorPrototype%\":\"undefined\"!=typeof Map&&o?a((new Map)[Symbol.iterator]()):void 0,\"$ %MapPrototype%\":\"undefined\"==typeof Map?void 0:Map.prototype,\"$ %Math%\":Math,\"$ %Number%\":Number,\"$ %NumberPrototype%\":Number.prototype,\"$ %Object%\":Object,\"$ %ObjectPrototype%\":Object.prototype,\"$ %ObjProto_toString%\":Object.prototype.toString,\"$ %ObjProto_valueOf%\":Object.prototype.valueOf,\"$ %parseFloat%\":parseFloat,\"$ %parseInt%\":parseInt,\"$ %Promise%\":\"undefined\"==typeof Promise?void 0:Promise,\"$ %PromisePrototype%\":\"undefined\"==typeof Promise?void 0:Promise.prototype,\"$ %PromiseProto_then%\":\"undefined\"==typeof Promise?void 0:Promise.prototype.then,\"$ %Promise_all%\":\"undefined\"==typeof Promise?void 0:Promise.all,\"$ %Promise_reject%\":\"undefined\"==typeof Promise?void 0:Promise.reject,\"$ %Promise_resolve%\":\"undefined\"==typeof Promise?void 0:Promise.resolve,\"$ %Proxy%\":\"undefined\"==typeof Proxy?void 0:Proxy,\"$ %RangeError%\":RangeError,\"$ %RangeErrorPrototype%\":RangeError.prototype,\"$ %ReferenceError%\":ReferenceError,\"$ %ReferenceErrorPrototype%\":ReferenceError.prototype,\"$ %Reflect%\":\"undefined\"==typeof Reflect?void 0:Reflect,\"$ %RegExp%\":RegExp,\"$ %RegExpPrototype%\":RegExp.prototype,\"$ %Set%\":\"undefined\"==typeof Set?void 0:Set,\"$ %SetIteratorPrototype%\":\"undefined\"!=typeof Set&&o?a((new Set)[Symbol.iterator]()):void 0,\"$ %SetPrototype%\":\"undefined\"==typeof Set?void 0:Set.prototype,\"$ %SharedArrayBuffer%\":\"undefined\"==typeof SharedArrayBuffer?void 0:SharedArrayBuffer,\"$ %SharedArrayBufferPrototype%\":\"undefined\"==typeof SharedArrayBuffer?void 0:SharedArrayBuffer.prototype,\"$ %String%\":String,\"$ %StringIteratorPrototype%\":o?a(\"\"[Symbol.iterator]()):void 0,\"$ %StringPrototype%\":String.prototype,\"$ %Symbol%\":o?Symbol:void 0,\"$ %SymbolPrototype%\":o?Symbol.prototype:void 0,\"$ %SyntaxError%\":SyntaxError,\"$ %SyntaxErrorPrototype%\":SyntaxError.prototype,\"$ %ThrowTypeError%\":i,\"$ %TypedArray%\":f,\"$ %TypedArrayPrototype%\":f?f.prototype:void 0,\"$ %TypeError%\":n,\"$ %TypeErrorPrototype%\":n.prototype,\"$ %Uint8Array%\":\"undefined\"==typeof Uint8Array?void 0:Uint8Array,\"$ %Uint8ArrayPrototype%\":\"undefined\"==typeof Uint8Array?void 0:Uint8Array.prototype,\"$ %Uint8ClampedArray%\":\"undefined\"==typeof Uint8ClampedArray?void 0:Uint8ClampedArray,\"$ %Uint8ClampedArrayPrototype%\":\"undefined\"==typeof Uint8ClampedArray?void 0:Uint8ClampedArray.prototype,\"$ %Uint16Array%\":\"undefined\"==typeof Uint16Array?void 0:Uint16Array,\"$ %Uint16ArrayPrototype%\":\"undefined\"==typeof Uint16Array?void 0:Uint16Array.prototype,\"$ %Uint32Array%\":\"undefined\"==typeof Uint32Array?void 0:Uint32Array,\"$ %Uint32ArrayPrototype%\":\"undefined\"==typeof Uint32Array?void 0:Uint32Array.prototype,\"$ %URIError%\":URIError,\"$ %URIErrorPrototype%\":URIError.prototype,\"$ %WeakMap%\":\"undefined\"==typeof WeakMap?void 0:WeakMap,\"$ %WeakMapPrototype%\":\"undefined\"==typeof WeakMap?void 0:WeakMap.prototype,\"$ %WeakSet%\":\"undefined\"==typeof WeakSet?void 0:WeakSet,\"$ %WeakSetPrototype%\":\"undefined\"==typeof WeakSet?void 0:WeakSet.prototype},u=r(21).call(Function.call,String.prototype.replace),h=/[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g,l=/\\\\(\\\\)?/g,d=function(e){var t=[];return u(e,h,(function(e,r,n,i){t[t.length]=n?u(i,l,\"$1\"):r||e})),t},p=function(e,t){var r=\"$ \"+e;if(!(r in c))throw new SyntaxError(\"intrinsic \"+e+\" does not exist!\");if(void 0===c[r]&&!t)throw new n(\"intrinsic \"+e+\" exists, but is not available. Please file an issue!\");return c[r]};e.exports=function(e,t){if(arguments.length>1&&\"boolean\"!=typeof t)throw new TypeError('\"allowMissing\" argument must be a boolean');var r=d(e);if(0===r.length)return p(e,t);for(var n=p(\"%\"+r[0]+\"%\",t),i=1;i<r.length;i+=1)null!=n&&(n=n[r[i]]);return n}},function(e,t,r){var n;!function(i){\"use strict\";var o,a=/^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,s=Math.ceil,f=Math.floor,c=\"[BigNumber Error] \",u=c+\"Number primitive has more than 15 significant digits: \",h=1e14,l=14,d=9007199254740991,p=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],b=1e7,y=1e9;function g(e){var t=0|e;return e>0||e===t?t:t-1}function v(e){for(var t,r,n=1,i=e.length,o=e[0]+\"\";n<i;){for(t=e[n++]+\"\",r=l-t.length;r--;t=\"0\"+t);o+=t}for(i=o.length;48===o.charCodeAt(--i););return o.slice(0,i+1||1)}function m(e,t){var r,n,i=e.c,o=t.c,a=e.s,s=t.s,f=e.e,c=t.e;if(!a||!s)return null;if(r=i&&!i[0],n=o&&!o[0],r||n)return r?n?0:-s:a;if(a!=s)return a;if(r=a<0,n=f==c,!i||!o)return n?0:!i^r?1:-1;if(!n)return f>c^r?1:-1;for(s=(f=i.length)<(c=o.length)?f:c,a=0;a<s;a++)if(i[a]!=o[a])return i[a]>o[a]^r?1:-1;return f==c?0:f>c^r?1:-1}function _(e,t,r,n){if(e<t||e>r||e!==f(e))throw Error(c+(n||\"Argument\")+(\"number\"==typeof e?e<t||e>r?\" out of range: \":\" not an integer: \":\" not a primitive number: \")+String(e))}function w(e){var t=e.c.length-1;return g(e.e/l)==t&&e.c[t]%2!=0}function E(e,t){return(e.length>1?e.charAt(0)+\".\"+e.slice(1):e)+(t<0?\"e\":\"e+\")+t}function A(e,t,r){var n,i;if(t<0){for(i=r+\".\";++t;i+=r);e=i+e}else if(++t>(n=e.length)){for(i=r,t-=n;--t;i+=r);e+=i}else t<n&&(e=e.slice(0,t)+\".\"+e.slice(t));return e}(o=function e(t){var r,n,i,o,S,k,x,I,M,T=z.prototype={constructor:z,toString:null,valueOf:null},P=new z(1),B=20,L=4,R=-7,O=21,C=-1e7,N=1e7,j=!1,D=1,q=0,U={prefix:\"\",groupSize:3,secondaryGroupSize:0,groupSeparator:\",\",decimalSeparator:\".\",fractionGroupSize:0,fractionGroupSeparator:\" \",suffix:\"\"},F=\"0123456789abcdefghijklmnopqrstuvwxyz\";function z(e,t){var r,o,s,c,h,p,b,y,g=this;if(!(g instanceof z))return new z(e,t);if(null==t){if(e&&!0===e._isBigNumber)return g.s=e.s,void(!e.c||e.e>N?g.c=g.e=null:e.e<C?g.c=[g.e=0]:(g.e=e.e,g.c=e.c.slice()));if((p=\"number\"==typeof e)&&0*e==0){if(g.s=1/e<0?(e=-e,-1):1,e===~~e){for(c=0,h=e;h>=10;h/=10,c++);return void(c>N?g.c=g.e=null:(g.e=c,g.c=[e]))}y=String(e)}else{if(!a.test(y=String(e)))return i(g,y,p);g.s=45==y.charCodeAt(0)?(y=y.slice(1),-1):1}(c=y.indexOf(\".\"))>-1&&(y=y.replace(\".\",\"\")),(h=y.search(/e/i))>0?(c<0&&(c=h),c+=+y.slice(h+1),y=y.substring(0,h)):c<0&&(c=y.length)}else{if(_(t,2,F.length,\"Base\"),10==t)return Y(g=new z(e),B+g.e+1,L);if(y=String(e),p=\"number\"==typeof e){if(0*e!=0)return i(g,y,p,t);if(g.s=1/e<0?(y=y.slice(1),-1):1,z.DEBUG&&y.replace(/^0\\.0*|\\./,\"\").length>15)throw Error(u+e)}else g.s=45===y.charCodeAt(0)?(y=y.slice(1),-1):1;for(r=F.slice(0,t),c=h=0,b=y.length;h<b;h++)if(r.indexOf(o=y.charAt(h))<0){if(\".\"==o){if(h>c){c=b;continue}}else if(!s&&(y==y.toUpperCase()&&(y=y.toLowerCase())||y==y.toLowerCase()&&(y=y.toUpperCase()))){s=!0,h=-1,c=0;continue}return i(g,String(e),p,t)}p=!1,(c=(y=n(y,t,10,g.s)).indexOf(\".\"))>-1?y=y.replace(\".\",\"\"):c=y.length}for(h=0;48===y.charCodeAt(h);h++);for(b=y.length;48===y.charCodeAt(--b););if(y=y.slice(h,++b)){if(b-=h,p&&z.DEBUG&&b>15&&(e>d||e!==f(e)))throw Error(u+g.s*e);if((c=c-h-1)>N)g.c=g.e=null;else if(c<C)g.c=[g.e=0];else{if(g.e=c,g.c=[],h=(c+1)%l,c<0&&(h+=l),h<b){for(h&&g.c.push(+y.slice(0,h)),b-=l;h<b;)g.c.push(+y.slice(h,h+=l));h=l-(y=y.slice(h)).length}else h-=b;for(;h--;y+=\"0\");g.c.push(+y)}}else g.c=[g.e=0]}function K(e,t,r,n){var i,o,a,s,f;if(null==r?r=L:_(r,0,8),!e.c)return e.toString();if(i=e.c[0],a=e.e,null==t)f=v(e.c),f=1==n||2==n&&(a<=R||a>=O)?E(f,a):A(f,a,\"0\");else if(o=(e=Y(new z(e),t,r)).e,s=(f=v(e.c)).length,1==n||2==n&&(t<=o||o<=R)){for(;s<t;f+=\"0\",s++);f=E(f,o)}else if(t-=a,f=A(f,o,\"0\"),o+1>s){if(--t>0)for(f+=\".\";t--;f+=\"0\");}else if((t+=o-s)>0)for(o+1==s&&(f+=\".\");t--;f+=\"0\");return e.s<0&&i?\"-\"+f:f}function H(e,t){for(var r,n=1,i=new z(e[0]);n<e.length;n++){if(!(r=new z(e[n])).s){i=r;break}t.call(i,r)&&(i=r)}return i}function V(e,t,r){for(var n=1,i=t.length;!t[--i];t.pop());for(i=t[0];i>=10;i/=10,n++);return(r=n+r*l-1)>N?e.c=e.e=null:r<C?e.c=[e.e=0]:(e.e=r,e.c=t),e}function Y(e,t,r,n){var i,o,a,c,u,d,b,y=e.c,g=p;if(y){e:{for(i=1,c=y[0];c>=10;c/=10,i++);if((o=t-i)<0)o+=l,a=t,b=(u=y[d=0])/g[i-a-1]%10|0;else if((d=s((o+1)/l))>=y.length){if(!n)break e;for(;y.length<=d;y.push(0));u=b=0,i=1,a=(o%=l)-l+1}else{for(u=c=y[d],i=1;c>=10;c/=10,i++);b=(a=(o%=l)-l+i)<0?0:u/g[i-a-1]%10|0}if(n=n||t<0||null!=y[d+1]||(a<0?u:u%g[i-a-1]),n=r<4?(b||n)&&(0==r||r==(e.s<0?3:2)):b>5||5==b&&(4==r||n||6==r&&(o>0?a>0?u/g[i-a]:0:y[d-1])%10&1||r==(e.s<0?8:7)),t<1||!y[0])return y.length=0,n?(t-=e.e+1,y[0]=g[(l-t%l)%l],e.e=-t||0):y[0]=e.e=0,e;if(0==o?(y.length=d,c=1,d--):(y.length=d+1,c=g[l-o],y[d]=a>0?f(u/g[i-a]%g[a])*c:0),n)for(;;){if(0==d){for(o=1,a=y[0];a>=10;a/=10,o++);for(a=y[0]+=c,c=1;a>=10;a/=10,c++);o!=c&&(e.e++,y[0]==h&&(y[0]=1));break}if(y[d]+=c,y[d]!=h)break;y[d--]=0,c=1}for(o=y.length;0===y[--o];y.pop());}e.e>N?e.c=e.e=null:e.e<C&&(e.c=[e.e=0])}return e}function G(e){var t,r=e.e;return null===r?e.toString():(t=v(e.c),t=r<=R||r>=O?E(t,r):A(t,r,\"0\"),e.s<0?\"-\"+t:t)}return z.clone=e,z.ROUND_UP=0,z.ROUND_DOWN=1,z.ROUND_CEIL=2,z.ROUND_FLOOR=3,z.ROUND_HALF_UP=4,z.ROUND_HALF_DOWN=5,z.ROUND_HALF_EVEN=6,z.ROUND_HALF_CEIL=7,z.ROUND_HALF_FLOOR=8,z.EUCLID=9,z.config=z.set=function(e){var t,r;if(null!=e){if(\"object\"!=typeof e)throw Error(c+\"Object expected: \"+e);if(e.hasOwnProperty(t=\"DECIMAL_PLACES\")&&(_(r=e[t],0,y,t),B=r),e.hasOwnProperty(t=\"ROUNDING_MODE\")&&(_(r=e[t],0,8,t),L=r),e.hasOwnProperty(t=\"EXPONENTIAL_AT\")&&((r=e[t])&&r.pop?(_(r[0],-y,0,t),_(r[1],0,y,t),R=r[0],O=r[1]):(_(r,-y,y,t),R=-(O=r<0?-r:r))),e.hasOwnProperty(t=\"RANGE\"))if((r=e[t])&&r.pop)_(r[0],-y,-1,t),_(r[1],1,y,t),C=r[0],N=r[1];else{if(_(r,-y,y,t),!r)throw Error(c+t+\" cannot be zero: \"+r);C=-(N=r<0?-r:r)}if(e.hasOwnProperty(t=\"CRYPTO\")){if((r=e[t])!==!!r)throw Error(c+t+\" not true or false: \"+r);if(r){if(\"undefined\"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw j=!r,Error(c+\"crypto unavailable\");j=r}else j=r}if(e.hasOwnProperty(t=\"MODULO_MODE\")&&(_(r=e[t],0,9,t),D=r),e.hasOwnProperty(t=\"POW_PRECISION\")&&(_(r=e[t],0,y,t),q=r),e.hasOwnProperty(t=\"FORMAT\")){if(\"object\"!=typeof(r=e[t]))throw Error(c+t+\" not an object: \"+r);U=r}if(e.hasOwnProperty(t=\"ALPHABET\")){if(\"string\"!=typeof(r=e[t])||/^.$|[+-.\\s]|(.).*\\1/.test(r))throw Error(c+t+\" invalid: \"+r);F=r}}return{DECIMAL_PLACES:B,ROUNDING_MODE:L,EXPONENTIAL_AT:[R,O],RANGE:[C,N],CRYPTO:j,MODULO_MODE:D,POW_PRECISION:q,FORMAT:U,ALPHABET:F}},z.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!z.DEBUG)return!0;var t,r,n=e.c,i=e.e,o=e.s;e:if(\"[object Array]\"=={}.toString.call(n)){if((1===o||-1===o)&&i>=-y&&i<=y&&i===f(i)){if(0===n[0]){if(0===i&&1===n.length)return!0;break e}if((t=(i+1)%l)<1&&(t+=l),String(n[0]).length==t){for(t=0;t<n.length;t++)if((r=n[t])<0||r>=h||r!==f(r))break e;if(0!==r)return!0}}}else if(null===n&&null===i&&(null===o||1===o||-1===o))return!0;throw Error(c+\"Invalid BigNumber: \"+e)},z.maximum=z.max=function(){return H(arguments,T.lt)},z.minimum=z.min=function(){return H(arguments,T.gt)},z.random=(o=9007199254740992*Math.random()&2097151?function(){return f(9007199254740992*Math.random())}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var t,r,n,i,a,u=0,h=[],d=new z(P);if(null==e?e=B:_(e,0,y),i=s(e/l),j)if(crypto.getRandomValues){for(t=crypto.getRandomValues(new Uint32Array(i*=2));u<i;)(a=131072*t[u]+(t[u+1]>>>11))>=9e15?(r=crypto.getRandomValues(new Uint32Array(2)),t[u]=r[0],t[u+1]=r[1]):(h.push(a%1e14),u+=2);u=i/2}else{if(!crypto.randomBytes)throw j=!1,Error(c+\"crypto unavailable\");for(t=crypto.randomBytes(i*=7);u<i;)(a=281474976710656*(31&t[u])+1099511627776*t[u+1]+4294967296*t[u+2]+16777216*t[u+3]+(t[u+4]<<16)+(t[u+5]<<8)+t[u+6])>=9e15?crypto.randomBytes(7).copy(t,u):(h.push(a%1e14),u+=7);u=i/7}if(!j)for(;u<i;)(a=o())<9e15&&(h[u++]=a%1e14);for(i=h[--u],e%=l,i&&e&&(a=p[l-e],h[u]=f(i/a)*a);0===h[u];h.pop(),u--);if(u<0)h=[n=0];else{for(n=-1;0===h[0];h.splice(0,1),n-=l);for(u=1,a=h[0];a>=10;a/=10,u++);u<l&&(n-=l-u)}return d.e=n,d.c=h,d}),z.sum=function(){for(var e=1,t=arguments,r=new z(t[0]);e<t.length;)r=r.plus(t[e++]);return r},n=function(){function e(e,t,r,n){for(var i,o,a=[0],s=0,f=e.length;s<f;){for(o=a.length;o--;a[o]*=t);for(a[0]+=n.indexOf(e.charAt(s++)),i=0;i<a.length;i++)a[i]>r-1&&(null==a[i+1]&&(a[i+1]=0),a[i+1]+=a[i]/r|0,a[i]%=r)}return a.reverse()}return function(t,n,i,o,a){var s,f,c,u,h,l,d,p,b=t.indexOf(\".\"),y=B,g=L;for(b>=0&&(u=q,q=0,t=t.replace(\".\",\"\"),l=(p=new z(n)).pow(t.length-b),q=u,p.c=e(A(v(l.c),l.e,\"0\"),10,i,\"0123456789\"),p.e=p.c.length),c=u=(d=e(t,n,i,a?(s=F,\"0123456789\"):(s=\"0123456789\",F))).length;0==d[--u];d.pop());if(!d[0])return s.charAt(0);if(b<0?--c:(l.c=d,l.e=c,l.s=o,d=(l=r(l,p,y,g,i)).c,h=l.r,c=l.e),b=d[f=c+y+1],u=i/2,h=h||f<0||null!=d[f+1],h=g<4?(null!=b||h)&&(0==g||g==(l.s<0?3:2)):b>u||b==u&&(4==g||h||6==g&&1&d[f-1]||g==(l.s<0?8:7)),f<1||!d[0])t=h?A(s.charAt(1),-y,s.charAt(0)):s.charAt(0);else{if(d.length=f,h)for(--i;++d[--f]>i;)d[f]=0,f||(++c,d=[1].concat(d));for(u=d.length;!d[--u];);for(b=0,t=\"\";b<=u;t+=s.charAt(d[b++]));t=A(t,c,s.charAt(0))}return t}}(),r=function(){function e(e,t,r){var n,i,o,a,s=0,f=e.length,c=t%b,u=t/b|0;for(e=e.slice();f--;)s=((i=c*(o=e[f]%b)+(n=u*o+(a=e[f]/b|0)*c)%b*b+s)/r|0)+(n/b|0)+u*a,e[f]=i%r;return s&&(e=[s].concat(e)),e}function t(e,t,r,n){var i,o;if(r!=n)o=r>n?1:-1;else for(i=o=0;i<r;i++)if(e[i]!=t[i]){o=e[i]>t[i]?1:-1;break}return o}function r(e,t,r,n){for(var i=0;r--;)e[r]-=i,i=e[r]<t[r]?1:0,e[r]=i*n+e[r]-t[r];for(;!e[0]&&e.length>1;e.splice(0,1));}return function(n,i,o,a,s){var c,u,d,p,b,y,v,m,_,w,E,A,S,k,x,I,M,T=n.s==i.s?1:-1,P=n.c,B=i.c;if(!(P&&P[0]&&B&&B[0]))return new z(n.s&&i.s&&(P?!B||P[0]!=B[0]:B)?P&&0==P[0]||!B?0*T:T/0:NaN);for(_=(m=new z(T)).c=[],T=o+(u=n.e-i.e)+1,s||(s=h,u=g(n.e/l)-g(i.e/l),T=T/l|0),d=0;B[d]==(P[d]||0);d++);if(B[d]>(P[d]||0)&&u--,T<0)_.push(1),p=!0;else{for(k=P.length,I=B.length,d=0,T+=2,(b=f(s/(B[0]+1)))>1&&(B=e(B,b,s),P=e(P,b,s),I=B.length,k=P.length),S=I,E=(w=P.slice(0,I)).length;E<I;w[E++]=0);M=B.slice(),M=[0].concat(M),x=B[0],B[1]>=s/2&&x++;do{if(b=0,(c=t(B,w,I,E))<0){if(A=w[0],I!=E&&(A=A*s+(w[1]||0)),(b=f(A/x))>1)for(b>=s&&(b=s-1),v=(y=e(B,b,s)).length,E=w.length;1==t(y,w,v,E);)b--,r(y,I<v?M:B,v,s),v=y.length,c=1;else 0==b&&(c=b=1),v=(y=B.slice()).length;if(v<E&&(y=[0].concat(y)),r(w,y,E,s),E=w.length,-1==c)for(;t(B,w,I,E)<1;)b++,r(w,I<E?M:B,E,s),E=w.length}else 0===c&&(b++,w=[0]);_[d++]=b,w[0]?w[E++]=P[S]||0:(w=[P[S]],E=1)}while((S++<k||null!=w[0])&&T--);p=null!=w[0],_[0]||_.splice(0,1)}if(s==h){for(d=1,T=_[0];T>=10;T/=10,d++);Y(m,o+(m.e=d+u*l-1)+1,a,p)}else m.e=u,m.r=+p;return m}}(),S=/^(-?)0([xbo])(?=\\w[\\w.]*$)/i,k=/^([^.]+)\\.$/,x=/^\\.([^.]+)$/,I=/^-?(Infinity|NaN)$/,M=/^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g,i=function(e,t,r,n){var i,o=r?t:t.replace(M,\"\");if(I.test(o))e.s=isNaN(o)?null:o<0?-1:1;else{if(!r&&(o=o.replace(S,(function(e,t,r){return i=\"x\"==(r=r.toLowerCase())?16:\"b\"==r?2:8,n&&n!=i?e:t})),n&&(i=n,o=o.replace(k,\"$1\").replace(x,\"0.$1\")),t!=o))return new z(o,i);if(z.DEBUG)throw Error(c+\"Not a\"+(n?\" base \"+n:\"\")+\" number: \"+t);e.s=null}e.c=e.e=null},T.absoluteValue=T.abs=function(){var e=new z(this);return e.s<0&&(e.s=1),e},T.comparedTo=function(e,t){return m(this,new z(e,t))},T.decimalPlaces=T.dp=function(e,t){var r,n,i,o=this;if(null!=e)return _(e,0,y),null==t?t=L:_(t,0,8),Y(new z(o),e+o.e+1,t);if(!(r=o.c))return null;if(n=((i=r.length-1)-g(this.e/l))*l,i=r[i])for(;i%10==0;i/=10,n--);return n<0&&(n=0),n},T.dividedBy=T.div=function(e,t){return r(this,new z(e,t),B,L)},T.dividedToIntegerBy=T.idiv=function(e,t){return r(this,new z(e,t),0,1)},T.exponentiatedBy=T.pow=function(e,t){var r,n,i,o,a,u,h,d,p=this;if((e=new z(e)).c&&!e.isInteger())throw Error(c+\"Exponent not an integer: \"+G(e));if(null!=t&&(t=new z(t)),a=e.e>14,!p.c||!p.c[0]||1==p.c[0]&&!p.e&&1==p.c.length||!e.c||!e.c[0])return d=new z(Math.pow(+G(p),a?2-w(e):+G(e))),t?d.mod(t):d;if(u=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new z(NaN);(n=!u&&p.isInteger()&&t.isInteger())&&(p=p.mod(t))}else{if(e.e>9&&(p.e>0||p.e<-1||(0==p.e?p.c[0]>1||a&&p.c[1]>=24e7:p.c[0]<8e13||a&&p.c[0]<=9999975e7)))return o=p.s<0&&w(e)?-0:0,p.e>-1&&(o=1/o),new z(u?1/o:o);q&&(o=s(q/l+2))}for(a?(r=new z(.5),u&&(e.s=1),h=w(e)):h=(i=Math.abs(+G(e)))%2,d=new z(P);;){if(h){if(!(d=d.times(p)).c)break;o?d.c.length>o&&(d.c.length=o):n&&(d=d.mod(t))}if(i){if(0===(i=f(i/2)))break;h=i%2}else if(Y(e=e.times(r),e.e+1,1),e.e>14)h=w(e);else{if(0===(i=+G(e)))break;h=i%2}p=p.times(p),o?p.c&&p.c.length>o&&(p.c.length=o):n&&(p=p.mod(t))}return n?d:(u&&(d=P.div(d)),t?d.mod(t):o?Y(d,q,L,void 0):d)},T.integerValue=function(e){var t=new z(this);return null==e?e=L:_(e,0,8),Y(t,t.e+1,e)},T.isEqualTo=T.eq=function(e,t){return 0===m(this,new z(e,t))},T.isFinite=function(){return!!this.c},T.isGreaterThan=T.gt=function(e,t){return m(this,new z(e,t))>0},T.isGreaterThanOrEqualTo=T.gte=function(e,t){return 1===(t=m(this,new z(e,t)))||0===t},T.isInteger=function(){return!!this.c&&g(this.e/l)>this.c.length-2},T.isLessThan=T.lt=function(e,t){return m(this,new z(e,t))<0},T.isLessThanOrEqualTo=T.lte=function(e,t){return-1===(t=m(this,new z(e,t)))||0===t},T.isNaN=function(){return!this.s},T.isNegative=function(){return this.s<0},T.isPositive=function(){return this.s>0},T.isZero=function(){return!!this.c&&0==this.c[0]},T.minus=function(e,t){var r,n,i,o,a=this,s=a.s;if(t=(e=new z(e,t)).s,!s||!t)return new z(NaN);if(s!=t)return e.s=-t,a.plus(e);var f=a.e/l,c=e.e/l,u=a.c,d=e.c;if(!f||!c){if(!u||!d)return u?(e.s=-t,e):new z(d?a:NaN);if(!u[0]||!d[0])return d[0]?(e.s=-t,e):new z(u[0]?a:3==L?-0:0)}if(f=g(f),c=g(c),u=u.slice(),s=f-c){for((o=s<0)?(s=-s,i=u):(c=f,i=d),i.reverse(),t=s;t--;i.push(0));i.reverse()}else for(n=(o=(s=u.length)<(t=d.length))?s:t,s=t=0;t<n;t++)if(u[t]!=d[t]){o=u[t]<d[t];break}if(o&&(i=u,u=d,d=i,e.s=-e.s),(t=(n=d.length)-(r=u.length))>0)for(;t--;u[r++]=0);for(t=h-1;n>s;){if(u[--n]<d[n]){for(r=n;r&&!u[--r];u[r]=t);--u[r],u[n]+=h}u[n]-=d[n]}for(;0==u[0];u.splice(0,1),--c);return u[0]?V(e,u,c):(e.s=3==L?-1:1,e.c=[e.e=0],e)},T.modulo=T.mod=function(e,t){var n,i,o=this;return e=new z(e,t),!o.c||!e.s||e.c&&!e.c[0]?new z(NaN):!e.c||o.c&&!o.c[0]?new z(o):(9==D?(i=e.s,e.s=1,n=r(o,e,0,3),e.s=i,n.s*=i):n=r(o,e,0,D),(e=o.minus(n.times(e))).c[0]||1!=D||(e.s=o.s),e)},T.multipliedBy=T.times=function(e,t){var r,n,i,o,a,s,f,c,u,d,p,y,v,m,_,w=this,E=w.c,A=(e=new z(e,t)).c;if(!(E&&A&&E[0]&&A[0]))return!w.s||!e.s||E&&!E[0]&&!A||A&&!A[0]&&!E?e.c=e.e=e.s=null:(e.s*=w.s,E&&A?(e.c=[0],e.e=0):e.c=e.e=null),e;for(n=g(w.e/l)+g(e.e/l),e.s*=w.s,(f=E.length)<(d=A.length)&&(v=E,E=A,A=v,i=f,f=d,d=i),i=f+d,v=[];i--;v.push(0));for(m=h,_=b,i=d;--i>=0;){for(r=0,p=A[i]%_,y=A[i]/_|0,o=i+(a=f);o>i;)r=((c=p*(c=E[--a]%_)+(s=y*c+(u=E[a]/_|0)*p)%_*_+v[o]+r)/m|0)+(s/_|0)+y*u,v[o--]=c%m;v[o]=r}return r?++n:v.splice(0,1),V(e,v,n)},T.negated=function(){var e=new z(this);return e.s=-e.s||null,e},T.plus=function(e,t){var r,n=this,i=n.s;if(t=(e=new z(e,t)).s,!i||!t)return new z(NaN);if(i!=t)return e.s=-t,n.minus(e);var o=n.e/l,a=e.e/l,s=n.c,f=e.c;if(!o||!a){if(!s||!f)return new z(i/0);if(!s[0]||!f[0])return f[0]?e:new z(s[0]?n:0*i)}if(o=g(o),a=g(a),s=s.slice(),i=o-a){for(i>0?(a=o,r=f):(i=-i,r=s),r.reverse();i--;r.push(0));r.reverse()}for((i=s.length)-(t=f.length)<0&&(r=f,f=s,s=r,t=i),i=0;t;)i=(s[--t]=s[t]+f[t]+i)/h|0,s[t]=h===s[t]?0:s[t]%h;return i&&(s=[i].concat(s),++a),V(e,s,a)},T.precision=T.sd=function(e,t){var r,n,i,o=this;if(null!=e&&e!==!!e)return _(e,1,y),null==t?t=L:_(t,0,8),Y(new z(o),e,t);if(!(r=o.c))return null;if(n=(i=r.length-1)*l+1,i=r[i]){for(;i%10==0;i/=10,n--);for(i=r[0];i>=10;i/=10,n++);}return e&&o.e+1>n&&(n=o.e+1),n},T.shiftedBy=function(e){return _(e,-d,d),this.times(\"1e\"+e)},T.squareRoot=T.sqrt=function(){var e,t,n,i,o,a=this,s=a.c,f=a.s,c=a.e,u=B+4,h=new z(\"0.5\");if(1!==f||!s||!s[0])return new z(!f||f<0&&(!s||s[0])?NaN:s?a:1/0);if(0==(f=Math.sqrt(+G(a)))||f==1/0?(((t=v(s)).length+c)%2==0&&(t+=\"0\"),f=Math.sqrt(+t),c=g((c+1)/2)-(c<0||c%2),n=new z(t=f==1/0?\"1e\"+c:(t=f.toExponential()).slice(0,t.indexOf(\"e\")+1)+c)):n=new z(f+\"\"),n.c[0])for((f=(c=n.e)+u)<3&&(f=0);;)if(o=n,n=h.times(o.plus(r(a,o,u,1))),v(o.c).slice(0,f)===(t=v(n.c)).slice(0,f)){if(n.e<c&&--f,\"9999\"!=(t=t.slice(f-3,f+1))&&(i||\"4999\"!=t)){+t&&(+t.slice(1)||\"5\"!=t.charAt(0))||(Y(n,n.e+B+2,1),e=!n.times(n).eq(a));break}if(!i&&(Y(o,o.e+B+2,0),o.times(o).eq(a))){n=o;break}u+=4,f+=4,i=1}return Y(n,n.e+B+1,L,e)},T.toExponential=function(e,t){return null!=e&&(_(e,0,y),e++),K(this,e,t,1)},T.toFixed=function(e,t){return null!=e&&(_(e,0,y),e=e+this.e+1),K(this,e,t)},T.toFormat=function(e,t,r){var n,i=this;if(null==r)null!=e&&t&&\"object\"==typeof t?(r=t,t=null):e&&\"object\"==typeof e?(r=e,e=t=null):r=U;else if(\"object\"!=typeof r)throw Error(c+\"Argument not an object: \"+r);if(n=i.toFixed(e,t),i.c){var o,a=n.split(\".\"),s=+r.groupSize,f=+r.secondaryGroupSize,u=r.groupSeparator||\"\",h=a[0],l=a[1],d=i.s<0,p=d?h.slice(1):h,b=p.length;if(f&&(o=s,s=f,f=o,b-=o),s>0&&b>0){for(o=b%s||s,h=p.substr(0,o);o<b;o+=s)h+=u+p.substr(o,s);f>0&&(h+=u+p.slice(o)),d&&(h=\"-\"+h)}n=l?h+(r.decimalSeparator||\"\")+((f=+r.fractionGroupSize)?l.replace(new RegExp(\"\\\\d{\"+f+\"}\\\\B\",\"g\"),\"$&\"+(r.fractionGroupSeparator||\"\")):l):h}return(r.prefix||\"\")+n+(r.suffix||\"\")},T.toFraction=function(e){var t,n,i,o,a,s,f,u,h,d,b,y,g=this,m=g.c;if(null!=e&&(!(f=new z(e)).isInteger()&&(f.c||1!==f.s)||f.lt(P)))throw Error(c+\"Argument \"+(f.isInteger()?\"out of range: \":\"not an integer: \")+G(f));if(!m)return new z(g);for(t=new z(P),h=n=new z(P),i=u=new z(P),y=v(m),a=t.e=y.length-g.e-1,t.c[0]=p[(s=a%l)<0?l+s:s],e=!e||f.comparedTo(t)>0?a>0?t:h:f,s=N,N=1/0,f=new z(y),u.c[0]=0;d=r(f,t,0,1),1!=(o=n.plus(d.times(i))).comparedTo(e);)n=i,i=o,h=u.plus(d.times(o=h)),u=o,t=f.minus(d.times(o=t)),f=o;return o=r(e.minus(n),i,0,1),u=u.plus(o.times(h)),n=n.plus(o.times(i)),u.s=h.s=g.s,b=r(h,i,a*=2,L).minus(g).abs().comparedTo(r(u,n,a,L).minus(g).abs())<1?[h,i]:[u,n],N=s,b},T.toNumber=function(){return+G(this)},T.toPrecision=function(e,t){return null!=e&&_(e,1,y),K(this,e,t,2)},T.toString=function(e){var t,r=this,i=r.s,o=r.e;return null===o?i?(t=\"Infinity\",i<0&&(t=\"-\"+t)):t=\"NaN\":(null==e?t=o<=R||o>=O?E(v(r.c),o):A(v(r.c),o,\"0\"):10===e?t=A(v((r=Y(new z(r),B+o+1,L)).c),r.e,\"0\"):(_(e,2,F.length,\"Base\"),t=n(A(v(r.c),o,\"0\"),10,e,i,!0)),i<0&&r.c[0]&&(t=\"-\"+t)),t},T.valueOf=T.toJSON=function(){return G(this)},T._isBigNumber=!0,null!=t&&z.set(t),z}()).default=o.BigNumber=o,void 0===(n=function(){return o}.call(t,r,t,e))||(e.exports=n)}()},function(e,t,r){e.exports=i;var n=r(6).EventEmitter;function i(){n.call(this)}r(0)(i,n),i.Readable=r(32),i.Writable=r(120),i.Duplex=r(121),i.Transform=r(122),i.PassThrough=r(123),i.Stream=i,i.prototype.pipe=function(e,t){var r=this;function i(t){e.writable&&!1===e.write(t)&&r.pause&&r.pause()}function o(){r.readable&&r.resume&&r.resume()}r.on(\"data\",i),e.on(\"drain\",o),e._isStdio||t&&!1===t.end||(r.on(\"end\",s),r.on(\"close\",f));var a=!1;function s(){a||(a=!0,e.end())}function f(){a||(a=!0,\"function\"==typeof e.destroy&&e.destroy())}function c(e){if(u(),0===n.listenerCount(this,\"error\"))throw e}function u(){r.removeListener(\"data\",i),e.removeListener(\"drain\",o),r.removeListener(\"end\",s),r.removeListener(\"close\",f),r.removeListener(\"error\",c),e.removeListener(\"error\",c),r.removeListener(\"end\",u),r.removeListener(\"close\",u),e.removeListener(\"close\",u)}return r.on(\"error\",c),e.on(\"error\",c),r.on(\"end\",u),r.on(\"close\",u),e.on(\"close\",u),e.emit(\"pipe\",r),e}},function(e,t,r){\"use strict\";(function(t){void 0===t||!t.version||0===t.version.indexOf(\"v0.\")||0===t.version.indexOf(\"v1.\")&&0!==t.version.indexOf(\"v1.8.\")?e.exports={nextTick:function(e,r,n,i){if(\"function\"!=typeof e)throw new TypeError('\"callback\" argument must be a function');var o,a,s=arguments.length;switch(s){case 0:case 1:return t.nextTick(e);case 2:return t.nextTick((function(){e.call(null,r)}));case 3:return t.nextTick((function(){e.call(null,r,n)}));case 4:return t.nextTick((function(){e.call(null,r,n,i)}));default:for(o=new Array(s-1),a=0;a<o.length;)o[a++]=arguments[a];return t.nextTick((function(){e.apply(null,o)}))}}}:e.exports=t}).call(this,r(9))},function(e,t,r){(function(e){var n=void 0!==e&&e||\"undefined\"!=typeof self&&self||window,i=Function.prototype.apply;function o(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new o(i.call(setTimeout,n,arguments),clearTimeout)},t.setInterval=function(){return new o(i.call(setInterval,n,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(n,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},r(117),t.setImmediate=\"undefined\"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate=\"undefined\"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,r(4))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,\"loaded\",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,\"id\",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,r){\"use strict\";var n=r(3),i=r(5),o=i.getNAF,a=i.getJSF,s=i.assert;function f(e,t){this.type=e,this.p=new n(t.p,16),this.red=t.prime?n.red(t.prime):n.mont(this.p),this.zero=new n(0).toRed(this.red),this.one=new n(1).toRed(this.red),this.two=new n(2).toRed(this.red),this.n=t.n&&new n(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4);var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function c(e,t){this.curve=e,this.type=t,this.precomputed=null}e.exports=f,f.prototype.point=function(){throw new Error(\"Not implemented\")},f.prototype.validate=function(){throw new Error(\"Not implemented\")},f.prototype._fixedNafMul=function(e,t){s(e.precomputed);var r=e._getDoubles(),n=o(t,1),i=(1<<r.step+1)-(r.step%2==0?2:1);i/=3;for(var a=[],f=0;f<n.length;f+=r.step){var c=0;for(t=f+r.step-1;t>=f;t--)c=(c<<1)+n[t];a.push(c)}for(var u=this.jpoint(null,null,null),h=this.jpoint(null,null,null),l=i;l>0;l--){for(f=0;f<a.length;f++){(c=a[f])===l?h=h.mixedAdd(r.points[f]):c===-l&&(h=h.mixedAdd(r.points[f].neg()))}u=u.add(h)}return u.toP()},f.prototype._wnafMul=function(e,t){var r=4,n=e._getNAFPoints(r);r=n.wnd;for(var i=n.points,a=o(t,r),f=this.jpoint(null,null,null),c=a.length-1;c>=0;c--){for(t=0;c>=0&&0===a[c];c--)t++;if(c>=0&&t++,f=f.dblp(t),c<0)break;var u=a[c];s(0!==u),f=\"affine\"===e.type?u>0?f.mixedAdd(i[u-1>>1]):f.mixedAdd(i[-u-1>>1].neg()):u>0?f.add(i[u-1>>1]):f.add(i[-u-1>>1].neg())}return\"affine\"===e.type?f.toP():f},f.prototype._wnafMulAdd=function(e,t,r,n,i){for(var s=this._wnafT1,f=this._wnafT2,c=this._wnafT3,u=0,h=0;h<n;h++){var l=(k=t[h])._getNAFPoints(e);s[h]=l.wnd,f[h]=l.points}for(h=n-1;h>=1;h-=2){var d=h-1,p=h;if(1===s[d]&&1===s[p]){var b=[t[d],null,null,t[p]];0===t[d].y.cmp(t[p].y)?(b[1]=t[d].add(t[p]),b[2]=t[d].toJ().mixedAdd(t[p].neg())):0===t[d].y.cmp(t[p].y.redNeg())?(b[1]=t[d].toJ().mixedAdd(t[p]),b[2]=t[d].add(t[p].neg())):(b[1]=t[d].toJ().mixedAdd(t[p]),b[2]=t[d].toJ().mixedAdd(t[p].neg()));var y=[-3,-1,-5,-7,0,7,5,1,3],g=a(r[d],r[p]);u=Math.max(g[0].length,u),c[d]=new Array(u),c[p]=new Array(u);for(var v=0;v<u;v++){var m=0|g[0][v],_=0|g[1][v];c[d][v]=y[3*(m+1)+(_+1)],c[p][v]=0,f[d]=b}}else c[d]=o(r[d],s[d]),c[p]=o(r[p],s[p]),u=Math.max(c[d].length,u),u=Math.max(c[p].length,u)}var w=this.jpoint(null,null,null),E=this._wnafT4;for(h=u;h>=0;h--){for(var A=0;h>=0;){var S=!0;for(v=0;v<n;v++)E[v]=0|c[v][h],0!==E[v]&&(S=!1);if(!S)break;A++,h--}if(h>=0&&A++,w=w.dblp(A),h<0)break;for(v=0;v<n;v++){var k,x=E[v];0!==x&&(x>0?k=f[v][x-1>>1]:x<0&&(k=f[v][-x-1>>1].neg()),w=\"affine\"===k.type?w.mixedAdd(k):w.add(k))}}for(h=0;h<n;h++)f[h]=null;return i?w:w.toP()},f.BasePoint=c,c.prototype.eq=function(){throw new Error(\"Not implemented\")},c.prototype.validate=function(){return this.curve.validate(this)},f.prototype.decodePoint=function(e,t){e=i.toArray(e,t);var r=this.p.byteLength();if((4===e[0]||6===e[0]||7===e[0])&&e.length-1==2*r)return 6===e[0]?s(e[e.length-1]%2==0):7===e[0]&&s(e[e.length-1]%2==1),this.point(e.slice(1,1+r),e.slice(1+r,1+2*r));if((2===e[0]||3===e[0])&&e.length-1===r)return this.pointFromX(e.slice(1,1+r),3===e[0]);throw new Error(\"Unknown point format\")},c.prototype.encodeCompressed=function(e){return this.encode(e,!0)},c.prototype._encode=function(e){var t=this.curve.p.byteLength(),r=this.getX().toArray(\"be\",t);return e?[this.getY().isEven()?2:3].concat(r):[4].concat(r,this.getY().toArray(\"be\",t))},c.prototype.encode=function(e,t){return i.encode(this._encode(t),e)},c.prototype.precompute=function(e){if(this.precomputed)return this;var t={doubles:null,naf:null,beta:null};return t.naf=this._getNAFPoints(8),t.doubles=this._getDoubles(4,e),t.beta=this._getBeta(),this.precomputed=t,this},c.prototype._hasDoubles=function(e){if(!this.precomputed)return!1;var t=this.precomputed.doubles;return!!t&&t.points.length>=Math.ceil((e.bitLength()+1)/t.step)},c.prototype._getDoubles=function(e,t){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i<t;i+=e){for(var o=0;o<e;o++)n=n.dbl();r.push(n)}return{step:e,points:r}},c.prototype._getNAFPoints=function(e){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;for(var t=[this],r=(1<<e)-1,n=1===r?null:this.dbl(),i=1;i<r;i++)t[i]=t[i-1].add(n);return{wnd:e,points:t}},c.prototype._getBeta=function(){return null},c.prototype.dblp=function(e){for(var t=this,r=0;r<e;r++)t=t.dbl();return t}},function(e,t){e.exports=function(){for(var e={},t=0;t<arguments.length;t++){var n=arguments[t];for(var i in n)r.call(n,i)&&(e[i]=n[i])}return e};var r=Object.prototype.hasOwnProperty},function(e,t,r){var n=r(167),i=r(79);e.exports=function(e){return null!=e&&i(e.length)&&!n(e)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){t|=0;for(var r=Math.max(e.length-t,0),n=Array(r),i=0;i<r;i++)n[i]=e[t+i];return n},e.exports=t.default},function(e,t,r){(t=e.exports=r(53)).Stream=t,t.Readable=t,t.Writable=r(34),t.Duplex=r(10),t.Transform=r(56),t.PassThrough=r(119)},function(e,t,r){var n=r(7),i=n.Buffer;function o(e,t){for(var r in e)t[r]=e[r]}function a(e,t,r){return i(e,t,r)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?e.exports=n:(o(n,t),t.Buffer=a),o(i,a),a.from=function(e,t,r){if(\"number\"==typeof e)throw new TypeError(\"Argument must not be a number\");return i(e,t,r)},a.alloc=function(e,t,r){if(\"number\"!=typeof e)throw new TypeError(\"Argument must be a number\");var n=i(e);return void 0!==t?\"string\"==typeof r?n.fill(t,r):n.fill(t):n.fill(0),n},a.allocUnsafe=function(e){if(\"number\"!=typeof e)throw new TypeError(\"Argument must be a number\");return i(e)},a.allocUnsafeSlow=function(e){if(\"number\"!=typeof e)throw new TypeError(\"Argument must be a number\");return n.SlowBuffer(e)}},function(e,t,r){\"use strict\";(function(t,n,i){var o=r(25);function a(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,r){var n=e.entry;e.entry=null;for(;n;){var i=n.callback;t.pendingcb--,i(r),n=n.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}(t,e)}}e.exports=v;var s,f=!t.browser&&[\"v0.10\",\"v0.9.\"].indexOf(t.version.slice(0,5))>-1?n:o.nextTick;v.WritableState=g;var c=r(16);c.inherits=r(0);var u={deprecate:r(118)},h=r(54),l=r(33).Buffer,d=i.Uint8Array||function(){};var p,b=r(55);function y(){}function g(e,t){s=s||r(10),e=e||{};var n=t instanceof s;this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var i=e.highWaterMark,c=e.writableHighWaterMark,u=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(c||0===c)?c:u,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var h=!1===e.decodeStrings;this.decodeStrings=!h,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,n=r.sync,i=r.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,n,i){--t.pendingcb,r?(o.nextTick(i,n),o.nextTick(S,e,t),e._writableState.errorEmitted=!0,e.emit(\"error\",n)):(i(n),e._writableState.errorEmitted=!0,e.emit(\"error\",n),S(e,t))}(e,r,n,t,i);else{var a=E(r);a||r.corked||r.bufferProcessing||!r.bufferedRequest||w(e,r),n?f(_,e,r,a,i):_(e,r,a,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new a(this)}function v(e){if(s=s||r(10),!(p.call(v,this)||this instanceof s))return new v(e);this._writableState=new g(e,this),this.writable=!0,e&&(\"function\"==typeof e.write&&(this._write=e.write),\"function\"==typeof e.writev&&(this._writev=e.writev),\"function\"==typeof e.destroy&&(this._destroy=e.destroy),\"function\"==typeof e.final&&(this._final=e.final)),h.call(this)}function m(e,t,r,n,i,o,a){t.writelen=n,t.writecb=a,t.writing=!0,t.sync=!0,r?e._writev(i,t.onwrite):e._write(i,o,t.onwrite),t.sync=!1}function _(e,t,r,n){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit(\"drain\"))}(e,t),t.pendingcb--,n(),S(e,t)}function w(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,i=new Array(n),o=t.corkedRequestsFree;o.entry=r;for(var s=0,f=!0;r;)i[s]=r,r.isBuf||(f=!1),r=r.next,s+=1;i.allBuffers=f,m(e,t,!0,t.length,i,\"\",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new a(t),t.bufferedRequestCount=0}else{for(;r;){var c=r.chunk,u=r.encoding,h=r.callback;if(m(e,t,!1,t.objectMode?1:c.length,c,u,h),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function E(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function A(e,t){e._final((function(r){t.pendingcb--,r&&e.emit(\"error\",r),t.prefinished=!0,e.emit(\"prefinish\"),S(e,t)}))}function S(e,t){var r=E(t);return r&&(!function(e,t){t.prefinished||t.finalCalled||(\"function\"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,o.nextTick(A,e,t)):(t.prefinished=!0,e.emit(\"prefinish\")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit(\"finish\"))),r}c.inherits(v,h),g.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(g.prototype,\"buffer\",{get:u.deprecate((function(){return this.getBuffer()}),\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch(e){}}(),\"function\"==typeof Symbol&&Symbol.hasInstance&&\"function\"==typeof Function.prototype[Symbol.hasInstance]?(p=Function.prototype[Symbol.hasInstance],Object.defineProperty(v,Symbol.hasInstance,{value:function(e){return!!p.call(this,e)||this===v&&(e&&e._writableState instanceof g)}})):p=function(e){return e instanceof this},v.prototype.pipe=function(){this.emit(\"error\",new Error(\"Cannot pipe, not readable\"))},v.prototype.write=function(e,t,r){var n,i=this._writableState,a=!1,s=!i.objectMode&&(n=e,l.isBuffer(n)||n instanceof d);return s&&!l.isBuffer(e)&&(e=function(e){return l.from(e)}(e)),\"function\"==typeof t&&(r=t,t=null),s?t=\"buffer\":t||(t=i.defaultEncoding),\"function\"!=typeof r&&(r=y),i.ended?function(e,t){var r=new Error(\"write after end\");e.emit(\"error\",r),o.nextTick(t,r)}(this,r):(s||function(e,t,r,n){var i=!0,a=!1;return null===r?a=new TypeError(\"May not write null values to stream\"):\"string\"==typeof r||void 0===r||t.objectMode||(a=new TypeError(\"Invalid non-string/buffer chunk\")),a&&(e.emit(\"error\",a),o.nextTick(n,a),i=!1),i}(this,i,e,r))&&(i.pendingcb++,a=function(e,t,r,n,i,o){if(!r){var a=function(e,t,r){e.objectMode||!1===e.decodeStrings||\"string\"!=typeof t||(t=l.from(t,r));return t}(t,n,i);n!==a&&(r=!0,i=\"buffer\",n=a)}var s=t.objectMode?1:n.length;t.length+=s;var f=t.length<t.highWaterMark;f||(t.needDrain=!0);if(t.writing||t.corked){var c=t.lastBufferedRequest;t.lastBufferedRequest={chunk:n,encoding:i,isBuf:r,callback:o,next:null},c?c.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+=1}else m(e,t,!1,s,n,i,o);return f}(this,i,s,e,t,r)),a},v.prototype.cork=function(){this._writableState.corked++},v.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,e.writing||e.corked||e.finished||e.bufferProcessing||!e.bufferedRequest||w(this,e))},v.prototype.setDefaultEncoding=function(e){if(\"string\"==typeof e&&(e=e.toLowerCase()),!([\"hex\",\"utf8\",\"utf-8\",\"ascii\",\"binary\",\"base64\",\"ucs2\",\"ucs-2\",\"utf16le\",\"utf-16le\",\"raw\"].indexOf((e+\"\").toLowerCase())>-1))throw new TypeError(\"Unknown encoding: \"+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(v.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),v.prototype._write=function(e,t,r){r(new Error(\"_write() is not implemented\"))},v.prototype._writev=null,v.prototype.end=function(e,t,r){var n=this._writableState;\"function\"==typeof e?(r=e,e=null,t=null):\"function\"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(e,t,r){t.ending=!0,S(e,t),r&&(t.finished?o.nextTick(r):e.once(\"finish\",r));t.ended=!0,e.writable=!1}(this,n,r)},Object.defineProperty(v.prototype,\"destroyed\",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),v.prototype.destroy=b.destroy,v.prototype._undestroy=b.undestroy,v.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,r(9),r(26).setImmediate,r(4))},function(e,t,r){\"use strict\";var n=r(1).Buffer,i=n.isEncoding||function(e){switch((e=\"\"+e)&&e.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function o(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return\"utf8\";for(var t;;)switch(e){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return e;default:if(t)return;e=(\"\"+e).toLowerCase(),t=!0}}(e);if(\"string\"!=typeof t&&(n.isEncoding===i||!i(e)))throw new Error(\"Unknown encoding: \"+e);return t||e}(e),this.encoding){case\"utf16le\":this.text=f,this.end=c,t=4;break;case\"utf8\":this.fillLast=s,t=4;break;case\"base64\":this.text=u,this.end=h,t=3;break;default:return this.write=l,void(this.end=d)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(t)}function a(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function s(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,\"�\";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,\"�\";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,\"�\"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function f(e,t){if((e.length-t)%2==0){var r=e.toString(\"utf16le\",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString(\"utf16le\",t,e.length-1)}function c(e){var t=e&&e.length?this.write(e):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString(\"utf16le\",0,r)}return t}function u(e,t){var r=(e.length-t)%3;return 0===r?e.toString(\"base64\",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString(\"base64\",t,e.length-r))}function h(e){var t=e&&e.length?this.write(e):\"\";return this.lastNeed?t+this.lastChar.toString(\"base64\",0,3-this.lastNeed):t}function l(e){return e.toString(this.encoding)}function d(e){return e&&e.length?this.write(e):\"\"}t.StringDecoder=o,o.prototype.write=function(e){if(0===e.length)return\"\";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r<e.length?t?t+this.text(e,r):this.text(e,r):t||\"\"},o.prototype.end=function(e){var t=e&&e.length?this.write(e):\"\";return this.lastNeed?t+\"�\":t},o.prototype.text=function(e,t){var r=function(e,t,r){var n=t.length-1;if(n<r)return 0;var i=a(t[n]);if(i>=0)return i>0&&(e.lastNeed=i-1),i;if(--n<r||-2===i)return 0;if((i=a(t[n]))>=0)return i>0&&(e.lastNeed=i-2),i;if(--n<r||-2===i)return 0;if((i=a(t[n]))>=0)return i>0&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString(\"utf8\",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString(\"utf8\",t,n)},o.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,r){\"use strict\";var n=r(0),i=r(132),o=r(133),a=r(134),s=r(139);function f(e){s.call(this,\"digest\"),this._hash=e}n(f,s),f.prototype._update=function(e){this._hash.update(e)},f.prototype._final=function(){return this._hash.digest()},e.exports=function(e){return\"md5\"===(e=e.toLowerCase())?new i:\"rmd160\"===e||\"ripemd160\"===e?new o:new f(a(e))}},function(e,t,r){\"use strict\";var n,i=t,o=r(38),a=r(64),s=r(5).assert;function f(e){\"short\"===e.type?this.curve=new a.short(e):\"edwards\"===e.type?this.curve=new a.edwards(e):this.curve=new a.mont(e),this.g=this.curve.g,this.n=this.curve.n,this.hash=e.hash,s(this.g.validate(),\"Invalid curve\"),s(this.g.mul(this.n).isInfinity(),\"Invalid curve, G*N != O\")}function c(e,t){Object.defineProperty(i,e,{configurable:!0,enumerable:!0,get:function(){var r=new f(t);return Object.defineProperty(i,e,{configurable:!0,enumerable:!0,value:r}),r}})}i.PresetCurve=f,c(\"p192\",{type:\"short\",prime:\"p192\",p:\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\",a:\"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc\",b:\"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1\",n:\"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831\",hash:o.sha256,gRed:!1,g:[\"188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012\",\"07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811\"]}),c(\"p224\",{type:\"short\",prime:\"p224\",p:\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\",a:\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe\",b:\"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4\",n:\"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d\",hash:o.sha256,gRed:!1,g:[\"b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21\",\"bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34\"]}),c(\"p256\",{type:\"short\",prime:null,p:\"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff\",a:\"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc\",b:\"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b\",n:\"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551\",hash:o.sha256,gRed:!1,g:[\"6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296\",\"4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5\"]}),c(\"p384\",{type:\"short\",prime:null,p:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff\",a:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc\",b:\"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef\",n:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973\",hash:o.sha384,gRed:!1,g:[\"aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7\",\"3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f\"]}),c(\"p521\",{type:\"short\",prime:null,p:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff\",a:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc\",b:\"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00\",n:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409\",hash:o.sha512,gRed:!1,g:[\"000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66\",\"00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650\"]}),c(\"curve25519\",{type:\"mont\",prime:\"p25519\",p:\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",a:\"76d06\",b:\"1\",n:\"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",hash:o.sha256,gRed:!1,g:[\"9\"]}),c(\"ed25519\",{type:\"edwards\",prime:\"p25519\",p:\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",a:\"-1\",c:\"1\",d:\"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3\",n:\"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",hash:o.sha256,gRed:!1,g:[\"216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a\",\"6666666666666666666666666666666666666666666666666666666666666658\"]});try{n=r(153)}catch(e){n=void 0}c(\"secp256k1\",{type:\"short\",prime:\"k256\",p:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\",a:\"0\",b:\"7\",n:\"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141\",h:\"1\",hash:o.sha256,beta:\"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee\",lambda:\"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72\",basis:[{a:\"3086d221a7d46bcde86c90e49284eb15\",b:\"-e4437ed6010e88286f547fa90abfe4c3\"},{a:\"114ca50f7a8e2f3f657c1108d9d44cfd8\",b:\"3086d221a7d46bcde86c90e49284eb15\"}],gRed:!1,g:[\"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798\",\"483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8\",n]})},function(e,t,r){var n=t;n.utils=r(8),n.common=r(17),n.sha=r(147),n.ripemd=r(151),n.hmac=r(152),n.sha1=n.sha.sha1,n.sha256=n.sha.sha256,n.sha224=n.sha.sha224,n.sha384=n.sha.sha384,n.sha512=n.sha.sha512,n.ripemd160=n.ripemd.ripemd160},function(e,t,r){\"use strict\";const n=(e,t)=>(function(){const r=t.promiseModule,n=new Array(arguments.length);for(let e=0;e<arguments.length;e++)n[e]=arguments[e];return new r((r,i)=>{t.errorFirst?n.push((function(e,n){if(t.multiArgs){const t=new Array(arguments.length-1);for(let e=1;e<arguments.length;e++)t[e-1]=arguments[e];e?(t.unshift(e),i(t)):r(t)}else e?i(e):r(n)})):n.push((function(e){if(t.multiArgs){const e=new Array(arguments.length-1);for(let t=0;t<arguments.length;t++)e[t]=arguments[t];r(e)}else r(e)})),e.apply(this,n)})});e.exports=(e,t)=>{t=Object.assign({exclude:[/.+(Sync|Stream)$/],errorFirst:!0,promiseModule:Promise},t);const r=e=>{const r=t=>\"string\"==typeof t?e===t:t.test(e);return t.include?t.include.some(r):!t.exclude.some(r)};let i;i=\"function\"==typeof e?function(){return t.excludeMain?e.apply(this,arguments):n(e,t).apply(this,arguments)}:Object.create(Object.getPrototypeOf(e));for(const o in e){const a=e[o];i[o]=\"function\"==typeof a&&r(o)?n(a,t):a}return i}},function(e,t,r){const n=r(2),i=r(6);var o=\"object\"==typeof Reflect?Reflect:null,a=o&&\"function\"==typeof o.apply?o.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)};function s(){i.call(this)}function f(e,t,r){try{a(e,t,r)}catch(e){setTimeout(()=>{throw e})}}function c(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}e.exports=s,n.inherits(s,i),s.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var n=\"error\"===e,i=this._events;if(void 0!==i)n=n&&void 0===i.error;else if(!n)return!1;if(n){var o;if(t.length>0&&(o=t[0]),o instanceof Error)throw o;var a=new Error(\"Unhandled error.\"+(o?\" (\"+o.message+\")\":\"\"));throw a.context=o,a}var s=i[e];if(void 0===s)return!1;if(\"function\"==typeof s)f(s,this,t);else{var u=s.length,h=c(s,u);for(r=0;r<u;++r)f(h[r],this,t)}return!0}},function(e,t,r){var n=r(75),i=r(168),o=r(169),a=\"[object Null]\",s=\"[object Undefined]\",f=n?n.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?s:a:f&&f in Object(e)?i(e):o(e)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){return function(){if(null!==e){var t=e;e=null,t.apply(this,arguments)}}},e.exports=t.default},function(e,t){e.exports=function(e){return null!=e&&\"object\"==typeof e}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){return function(){if(null===e)throw new Error(\"Callback was already called.\");var t=e;e=null,t.apply(this,arguments)}},e.exports=t.default},function(e,t,r){\"use strict\";var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}();var i=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));if(!e)throw new Error(\"JsonRpcEngineMiddlewareSubprovider - no constructorFn specified\");return r._constructorFn=e,r}return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),n(t,[{key:\"setEngine\",value:function(e){if(this.middleware)throw new Error(\"JsonRpcEngineMiddlewareSubprovider - subprovider added to engine twice\");var t=e._blockTracker,r=this._constructorFn({engine:e,provider:e,blockTracker:t});if(!r)throw new Error(\"JsonRpcEngineMiddlewareSubprovider - _constructorFn did not return middleware\");if(\"function\"!=typeof r)throw new Error(\"JsonRpcEngineMiddlewareSubprovider - specified middleware is not a function\");this.middleware=r}},{key:\"handleRequest\",value:function(e,t,r){var n={id:e.id};this.middleware(e,n,(function(e){t((function(t,r,i){t?(delete n.result,n.error={message:t.message||t}):n.result=r,e?e(i):i()}))}),(function(e){if(e)return r(e);r(null,n.result)}))}}]),t}(r(13));e.exports=i},function(e,t,r){const n=r(203);e.exports=function(e){return(t,r,i,o)=>{let a=null;const s=e(t,r,(async function(){return a=function(){return new Promise(e=>{i(t=>e(t))})}(),void await a}));n(s)(e=>{a?n(a)((t,r)=>{if(t)return console.error(t),o(t);r(e)}):o(e)})}}},function(e,t,r){const n=r(40);e.exports=class extends n{constructor(){super(),this.updates=[]}async initialize(){}async update(){throw new Error(\"BaseFilter - no update method specified\")}addResults(e){this.updates=this.updates.concat(e),e.forEach(e=>this.emit(\"update\",e))}addInitialResults(e){}getChangesAndClear(){const e=this.updates;return this.updates=[],e}}},function(e,t){function r(e){return null==e?e:Number.parseInt(e,16)}function n(e){if(null==e)return e;return\"0x\"+e.toString(16)}e.exports=async function({provider:e,fromBlock:t,toBlock:i}){t||(t=i);const o=r(t),a=r(i),s=Array(a-o+1).fill().map((e,t)=>o+t).map(n);return await Promise.all(s.map(t=>(function(e,t,r){return new Promise((n,i)=>{e.sendAsync({id:1,jsonrpc:\"2.0\",method:t,params:r},(e,t)=>{if(e)return i(e);n(t.result)})})})(e,\"eth_getBlockByNumber\",[t,!1])))}},function(e,t,r){\"use strict\";var n=r(21);e.exports=n.call(Function.call,Object.prototype.hasOwnProperty)},function(e,t,r){\"use strict\";var n=Function.prototype.toString,i=/^\\s*class\\b/,o=function(e){try{var t=n.call(e);return i.test(t)}catch(e){return!1}},a=Object.prototype.toString,s=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.toStringTag;e.exports=function(e){if(!e)return!1;if(\"function\"!=typeof e&&\"object\"!=typeof e)return!1;if(\"function\"==typeof e&&!e.prototype)return!0;if(s)return function(e){try{return!o(e)&&(n.call(e),!0)}catch(e){return!1}}(e);if(o(e))return!1;var t=a.call(e);return\"[object Function]\"===t||\"[object GeneratorFunction]\"===t}},function(e,t,r){e.exports=r(252)},function(e,t,r){\"use strict\";e.exports=r(108)(r(125))},function(e,t,r){\"use strict\";(function(t,n){var i=r(25);e.exports=m;var o,a=r(113);m.ReadableState=v;r(6).EventEmitter;var s=function(e,t){return e.listeners(t).length},f=r(54),c=r(33).Buffer,u=t.Uint8Array||function(){};var h=r(16);h.inherits=r(0);var l=r(114),d=void 0;d=l&&l.debuglog?l.debuglog(\"stream\"):function(){};var p,b=r(115),y=r(55);h.inherits(m,f);var g=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function v(e,t){e=e||{};var n=t instanceof(o=o||r(10));this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var i=e.highWaterMark,a=e.readableHighWaterMark,s=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(a||0===a)?a:s,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new b,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(p||(p=r(35).StringDecoder),this.decoder=new p(e.encoding),this.encoding=e.encoding)}function m(e){if(o=o||r(10),!(this instanceof m))return new m(e);this._readableState=new v(e,this),this.readable=!0,e&&(\"function\"==typeof e.read&&(this._read=e.read),\"function\"==typeof e.destroy&&(this._destroy=e.destroy)),f.call(this)}function _(e,t,r,n,i){var o,a=e._readableState;null===t?(a.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,S(e)}(e,a)):(i||(o=function(e,t){var r;n=t,c.isBuffer(n)||n instanceof u||\"string\"==typeof t||void 0===t||e.objectMode||(r=new TypeError(\"Invalid non-string/buffer chunk\"));var n;return r}(a,t)),o?e.emit(\"error\",o):a.objectMode||t&&t.length>0?(\"string\"==typeof t||a.objectMode||Object.getPrototypeOf(t)===c.prototype||(t=function(e){return c.from(e)}(t)),n?a.endEmitted?e.emit(\"error\",new Error(\"stream.unshift() after end event\")):w(e,a,t,!0):a.ended?e.emit(\"error\",new Error(\"stream.push() after EOF\")):(a.reading=!1,a.decoder&&!r?(t=a.decoder.write(t),a.objectMode||0!==t.length?w(e,a,t,!1):x(e,a)):w(e,a,t,!1))):n||(a.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.length<e.highWaterMark||0===e.length)}(a)}function w(e,t,r,n){t.flowing&&0===t.length&&!t.sync?(e.emit(\"data\",r),e.read(0)):(t.length+=t.objectMode?1:r.length,n?t.buffer.unshift(r):t.buffer.push(r),t.needReadable&&S(e)),x(e,t)}Object.defineProperty(m.prototype,\"destroyed\",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}}),m.prototype.destroy=y.destroy,m.prototype._undestroy=y.undestroy,m.prototype._destroy=function(e,t){this.push(null),t(e)},m.prototype.push=function(e,t){var r,n=this._readableState;return n.objectMode?r=!0:\"string\"==typeof e&&((t=t||n.defaultEncoding)!==n.encoding&&(e=c.from(e,t),t=\"\"),r=!0),_(this,e,t,!1,r)},m.prototype.unshift=function(e){return _(this,e,null,!0,!1)},m.prototype.isPaused=function(){return!1===this._readableState.flowing},m.prototype.setEncoding=function(e){return p||(p=r(35).StringDecoder),this._readableState.decoder=new p(e),this._readableState.encoding=e,this};var E=8388608;function A(e,t){return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!=e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=function(e){return e>=E?e=E:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function S(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(d(\"emitReadable\",t.flowing),t.emittedReadable=!0,t.sync?i.nextTick(k,e):k(e))}function k(e){d(\"emit readable\"),e.emit(\"readable\"),P(e)}function x(e,t){t.readingMore||(t.readingMore=!0,i.nextTick(I,e,t))}function I(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length<t.highWaterMark&&(d(\"maybeReadMore read 0\"),e.read(0),r!==t.length);)r=t.length;t.readingMore=!1}function M(e){d(\"readable nexttick read 0\"),e.read(0)}function T(e,t){t.reading||(d(\"resume read 0\"),e.read(0)),t.resumeScheduled=!1,t.awaitDrain=0,e.emit(\"resume\"),P(e),t.flowing&&!t.reading&&e.read(0)}function P(e){var t=e._readableState;for(d(\"flow\",t.flowing);t.flowing&&null!==e.read(););}function B(e,t){return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(\"\"):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var n;e<t.head.data.length?(n=t.head.data.slice(0,e),t.head.data=t.head.data.slice(e)):n=e===t.head.data.length?t.shift():r?function(e,t){var r=t.head,n=1,i=r.data;e-=i.length;for(;r=r.next;){var o=r.data,a=e>o.length?o.length:e;if(a===o.length?i+=o:i+=o.slice(0,e),0===(e-=a)){a===o.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=o.slice(a));break}++n}return t.length-=n,i}(e,t):function(e,t){var r=c.allocUnsafe(e),n=t.head,i=1;n.data.copy(r),e-=n.data.length;for(;n=n.next;){var o=n.data,a=e>o.length?o.length:e;if(o.copy(r,r.length-e,0,a),0===(e-=a)){a===o.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=o.slice(a));break}++i}return t.length-=i,r}(e,t);return n}(e,t.buffer,t.decoder),r);var r}function L(e){var t=e._readableState;if(t.length>0)throw new Error('\"endReadable()\" called on non-empty stream');t.endEmitted||(t.ended=!0,i.nextTick(R,t,e))}function R(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit(\"end\"))}function O(e,t){for(var r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1}m.prototype.read=function(e){d(\"read\",e),e=parseInt(e,10);var t=this._readableState,r=e;if(0!==e&&(t.emittedReadable=!1),0===e&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return d(\"read: emitReadable\",t.length,t.ended),0===t.length&&t.ended?L(this):S(this),null;if(0===(e=A(e,t))&&t.ended)return 0===t.length&&L(this),null;var n,i=t.needReadable;return d(\"need readable\",i),(0===t.length||t.length-e<t.highWaterMark)&&d(\"length less than watermark\",i=!0),t.ended||t.reading?d(\"reading or ended\",i=!1):i&&(d(\"do read\"),t.reading=!0,t.sync=!0,0===t.length&&(t.needReadable=!0),this._read(t.highWaterMark),t.sync=!1,t.reading||(e=A(r,t))),null===(n=e>0?B(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&L(this)),null!==n&&this.emit(\"data\",n),n},m.prototype._read=function(e){this.emit(\"error\",new Error(\"_read() is not implemented\"))},m.prototype.pipe=function(e,t){var r=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=e;break;case 1:o.pipes=[o.pipes,e];break;default:o.pipes.push(e)}o.pipesCount+=1,d(\"pipe count=%d opts=%j\",o.pipesCount,t);var f=(!t||!1!==t.end)&&e!==n.stdout&&e!==n.stderr?u:m;function c(t,n){d(\"onunpipe\"),t===r&&n&&!1===n.hasUnpiped&&(n.hasUnpiped=!0,d(\"cleanup\"),e.removeListener(\"close\",g),e.removeListener(\"finish\",v),e.removeListener(\"drain\",h),e.removeListener(\"error\",y),e.removeListener(\"unpipe\",c),r.removeListener(\"end\",u),r.removeListener(\"end\",m),r.removeListener(\"data\",b),l=!0,!o.awaitDrain||e._writableState&&!e._writableState.needDrain||h())}function u(){d(\"onend\"),e.end()}o.endEmitted?i.nextTick(f):r.once(\"end\",f),e.on(\"unpipe\",c);var h=function(e){return function(){var t=e._readableState;d(\"pipeOnDrain\",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(e,\"data\")&&(t.flowing=!0,P(e))}}(r);e.on(\"drain\",h);var l=!1;var p=!1;function b(t){d(\"ondata\"),p=!1,!1!==e.write(t)||p||((1===o.pipesCount&&o.pipes===e||o.pipesCount>1&&-1!==O(o.pipes,e))&&!l&&(d(\"false write response, pause\",r._readableState.awaitDrain),r._readableState.awaitDrain++,p=!0),r.pause())}function y(t){d(\"onerror\",t),m(),e.removeListener(\"error\",y),0===s(e,\"error\")&&e.emit(\"error\",t)}function g(){e.removeListener(\"finish\",v),m()}function v(){d(\"onfinish\"),e.removeListener(\"close\",g),m()}function m(){d(\"unpipe\"),r.unpipe(e)}return r.on(\"data\",b),function(e,t,r){if(\"function\"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?a(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,\"error\",y),e.once(\"close\",g),e.once(\"finish\",v),e.emit(\"pipe\",r),o.flowing||(d(\"pipe resume\"),r.resume()),e},m.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit(\"unpipe\",this,r),this);if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o<i;o++)n[o].emit(\"unpipe\",this,r);return this}var a=O(t.pipes,e);return-1===a?this:(t.pipes.splice(a,1),t.pipesCount-=1,1===t.pipesCount&&(t.pipes=t.pipes[0]),e.emit(\"unpipe\",this,r),this)},m.prototype.on=function(e,t){var r=f.prototype.on.call(this,e,t);if(\"data\"===e)!1!==this._readableState.flowing&&this.resume();else if(\"readable\"===e){var n=this._readableState;n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.emittedReadable=!1,n.reading?n.length&&S(this):i.nextTick(M,this))}return r},m.prototype.addListener=m.prototype.on,m.prototype.resume=function(){var e=this._readableState;return e.flowing||(d(\"resume\"),e.flowing=!0,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,i.nextTick(T,e,t))}(this,e)),this},m.prototype.pause=function(){return d(\"call pause flowing=%j\",this._readableState.flowing),!1!==this._readableState.flowing&&(d(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this},m.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;for(var i in e.on(\"end\",(function(){if(d(\"wrapped end\"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on(\"data\",(function(i){(d(\"wrapped data\"),r.decoder&&(i=r.decoder.write(i)),r.objectMode&&null==i)||(r.objectMode||i&&i.length)&&(t.push(i)||(n=!0,e.pause()))})),e)void 0===this[i]&&\"function\"==typeof e[i]&&(this[i]=function(t){return function(){return e[t].apply(e,arguments)}}(i));for(var o=0;o<g.length;o++)e.on(g[o],this.emit.bind(this,g[o]));return this._read=function(t){d(\"wrapped _read\",t),n&&(n=!1,e.resume())},this},Object.defineProperty(m.prototype,\"readableHighWaterMark\",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),m._fromList=B}).call(this,r(4),r(9))},function(e,t,r){e.exports=r(6).EventEmitter},function(e,t,r){\"use strict\";var n=r(25);function i(e,t){e.emit(\"error\",t)}e.exports={destroy:function(e,t){var r=this,o=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return o||a?(t?t(e):!e||this._writableState&&this._writableState.errorEmitted||n.nextTick(i,this,e),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!t&&e?(n.nextTick(i,r,e),r._writableState&&(r._writableState.errorEmitted=!0)):t&&t(e)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(e,t,r){\"use strict\";e.exports=a;var n=r(10),i=r(16);function o(e,t){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(!n)return this.emit(\"error\",new Error(\"write callback called multiple times\"));r.writechunk=null,r.writecb=null,null!=t&&this.push(t),n(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}function a(e){if(!(this instanceof a))return new a(e);n.call(this,e),this._transformState={afterTransform:o.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&(\"function\"==typeof e.transform&&(this._transform=e.transform),\"function\"==typeof e.flush&&(this._flush=e.flush)),this.on(\"prefinish\",s)}function s(){var e=this;\"function\"==typeof this._flush?this._flush((function(t,r){f(e,t,r)})):f(this,null,null)}function f(e,t,r){if(t)return e.emit(\"error\",t);if(null!=r&&e.push(r),e._writableState.length)throw new Error(\"Calling transform done when ws.length != 0\");if(e._transformState.transforming)throw new Error(\"Calling transform done when still transforming\");return e.push(null)}i.inherits=r(0),i.inherits(a,n),a.prototype.push=function(e,t){return this._transformState.needTransform=!1,n.prototype.push.call(this,e,t)},a.prototype._transform=function(e,t,r){throw new Error(\"_transform() is not implemented\")},a.prototype._write=function(e,t,r){var n=this._transformState;if(n.writecb=r,n.writechunk=e,n.writeencoding=t,!n.transforming){var i=this._readableState;(n.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}},a.prototype._read=function(e){var t=this._transformState;null!==t.writechunk&&t.writecb&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0},a.prototype._destroy=function(e,t){var r=this;n.prototype._destroy.call(this,e,(function(e){t(e),r.emit(\"close\")}))}},function(e,t,r){\"use strict\";e.exports=r(127)(r(131))},function(e){e.exports={COMPRESSED_TYPE_INVALID:\"compressed should be a boolean\",EC_PRIVATE_KEY_TYPE_INVALID:\"private key should be a Buffer\",EC_PRIVATE_KEY_LENGTH_INVALID:\"private key length is invalid\",EC_PRIVATE_KEY_RANGE_INVALID:\"private key range is invalid\",EC_PRIVATE_KEY_TWEAK_ADD_FAIL:\"tweak out of range or resulting private key is invalid\",EC_PRIVATE_KEY_TWEAK_MUL_FAIL:\"tweak out of range\",EC_PRIVATE_KEY_EXPORT_DER_FAIL:\"couldn't export to DER format\",EC_PRIVATE_KEY_IMPORT_DER_FAIL:\"couldn't import from DER format\",EC_PUBLIC_KEYS_TYPE_INVALID:\"public keys should be an Array\",EC_PUBLIC_KEYS_LENGTH_INVALID:\"public keys Array should have at least 1 element\",EC_PUBLIC_KEY_TYPE_INVALID:\"public key should be a Buffer\",EC_PUBLIC_KEY_LENGTH_INVALID:\"public key length is invalid\",EC_PUBLIC_KEY_PARSE_FAIL:\"the public key could not be parsed or is invalid\",EC_PUBLIC_KEY_CREATE_FAIL:\"private was invalid, try again\",EC_PUBLIC_KEY_TWEAK_ADD_FAIL:\"tweak out of range or resulting public key is invalid\",EC_PUBLIC_KEY_TWEAK_MUL_FAIL:\"tweak out of range\",EC_PUBLIC_KEY_COMBINE_FAIL:\"the sum of the public keys is not valid\",ECDH_FAIL:\"scalar was invalid (zero or overflow)\",ECDSA_SIGNATURE_TYPE_INVALID:\"signature should be a Buffer\",ECDSA_SIGNATURE_LENGTH_INVALID:\"signature length is invalid\",ECDSA_SIGNATURE_PARSE_FAIL:\"couldn't parse signature\",ECDSA_SIGNATURE_PARSE_DER_FAIL:\"couldn't parse DER signature\",ECDSA_SIGNATURE_SERIALIZE_DER_FAIL:\"couldn't serialize signature to DER format\",ECDSA_SIGN_FAIL:\"nonce generation function failed or private key is invalid\",ECDSA_RECOVER_FAIL:\"couldn't recover public key from signature\",MSG32_TYPE_INVALID:\"message should be a Buffer\",MSG32_LENGTH_INVALID:\"message length is invalid\",OPTIONS_TYPE_INVALID:\"options should be an Object\",OPTIONS_DATA_TYPE_INVALID:\"options.data should be a Buffer\",OPTIONS_DATA_LENGTH_INVALID:\"options.data length is invalid\",OPTIONS_NONCEFN_TYPE_INVALID:\"options.noncefn should be a Function\",RECOVERY_ID_TYPE_INVALID:\"recovery should be a Number\",RECOVERY_ID_VALUE_INVALID:\"recovery should have value between -1 and 4\",TWEAK_TYPE_INVALID:\"tweak should be a Buffer\",TWEAK_LENGTH_INVALID:\"tweak length is invalid\"}},function(e,t,r){\"use strict\";var n=r(1).Buffer,i=r(24).Transform;function o(e){i.call(this),this._block=n.allocUnsafe(e),this._blockSize=e,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}r(0)(o,i),o.prototype._transform=function(e,t,r){var n=null;try{this.update(e,t)}catch(e){n=e}r(n)},o.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(e){t=e}e(t)},o.prototype.update=function(e,t){if(function(e,t){if(!n.isBuffer(e)&&\"string\"!=typeof e)throw new TypeError(t+\" must be a string or a buffer\")}(e,\"Data\"),this._finalized)throw new Error(\"Digest already called\");n.isBuffer(e)||(e=n.from(e,t));for(var r=this._block,i=0;this._blockOffset+e.length-i>=this._blockSize;){for(var o=this._blockOffset;o<this._blockSize;)r[o++]=e[i++];this._update(),this._blockOffset=0}for(;i<e.length;)r[this._blockOffset++]=e[i++];for(var a=0,s=8*e.length;s>0;++a)this._length[a]+=s,(s=this._length[a]/4294967296|0)>0&&(this._length[a]-=4294967296*s);return this},o.prototype._update=function(){throw new Error(\"_update is not implemented\")},o.prototype.digest=function(e){if(this._finalized)throw new Error(\"Digest already called\");this._finalized=!0;var t=this._digest();void 0!==e&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t},o.prototype._digest=function(){throw new Error(\"_digest is not implemented\")},e.exports=o},function(e,t,r){var n=r(0),i=r(14),o=r(1).Buffer,a=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],s=new Array(64);function f(){this.init(),this._w=s,i.call(this,64,56)}function c(e,t,r){return r^e&(t^r)}function u(e,t,r){return e&t|r&(e|t)}function h(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function l(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function d(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}n(f,i),f.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},f.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,s=0|this._d,f=0|this._e,p=0|this._f,b=0|this._g,y=0|this._h,g=0;g<16;++g)r[g]=e.readInt32BE(4*g);for(;g<64;++g)r[g]=0|(((t=r[g-2])>>>17|t<<15)^(t>>>19|t<<13)^t>>>10)+r[g-7]+d(r[g-15])+r[g-16];for(var v=0;v<64;++v){var m=y+l(f)+c(f,p,b)+a[v]+r[v]|0,_=h(n)+u(n,i,o)|0;y=b,b=p,p=f,f=s+m|0,s=o,o=i,i=n,n=m+_|0}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=s+this._d|0,this._e=f+this._e|0,this._f=p+this._f|0,this._g=b+this._g|0,this._h=y+this._h|0},f.prototype._hash=function(){var e=o.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e},e.exports=f},function(e,t,r){var n=r(0),i=r(14),o=r(1).Buffer,a=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],s=new Array(160);function f(){this.init(),this._w=s,i.call(this,128,112)}function c(e,t,r){return r^e&(t^r)}function u(e,t,r){return e&t|r&(e|t)}function h(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function l(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function d(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function p(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function b(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function y(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function g(e,t){return e>>>0<t>>>0?1:0}n(f,i),f.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},f.prototype._update=function(e){for(var t=this._w,r=0|this._ah,n=0|this._bh,i=0|this._ch,o=0|this._dh,s=0|this._eh,f=0|this._fh,v=0|this._gh,m=0|this._hh,_=0|this._al,w=0|this._bl,E=0|this._cl,A=0|this._dl,S=0|this._el,k=0|this._fl,x=0|this._gl,I=0|this._hl,M=0;M<32;M+=2)t[M]=e.readInt32BE(4*M),t[M+1]=e.readInt32BE(4*M+4);for(;M<160;M+=2){var T=t[M-30],P=t[M-30+1],B=d(T,P),L=p(P,T),R=b(T=t[M-4],P=t[M-4+1]),O=y(P,T),C=t[M-14],N=t[M-14+1],j=t[M-32],D=t[M-32+1],q=L+N|0,U=B+C+g(q,L)|0;U=(U=U+R+g(q=q+O|0,O)|0)+j+g(q=q+D|0,D)|0,t[M]=U,t[M+1]=q}for(var F=0;F<160;F+=2){U=t[F],q=t[F+1];var z=u(r,n,i),K=u(_,w,E),H=h(r,_),V=h(_,r),Y=l(s,S),G=l(S,s),$=a[F],W=a[F+1],Z=c(s,f,v),J=c(S,k,x),X=I+G|0,Q=m+Y+g(X,I)|0;Q=(Q=(Q=Q+Z+g(X=X+J|0,J)|0)+$+g(X=X+W|0,W)|0)+U+g(X=X+q|0,q)|0;var ee=V+K|0,te=H+z+g(ee,V)|0;m=v,I=x,v=f,x=k,f=s,k=S,s=o+Q+g(S=A+X|0,A)|0,o=i,A=E,i=n,E=w,n=r,w=_,r=Q+te+g(_=X+ee|0,X)|0}this._al=this._al+_|0,this._bl=this._bl+w|0,this._cl=this._cl+E|0,this._dl=this._dl+A|0,this._el=this._el+S|0,this._fl=this._fl+k|0,this._gl=this._gl+x|0,this._hl=this._hl+I|0,this._ah=this._ah+r+g(this._al,_)|0,this._bh=this._bh+n+g(this._bl,w)|0,this._ch=this._ch+i+g(this._cl,E)|0,this._dh=this._dh+o+g(this._dl,A)|0,this._eh=this._eh+s+g(this._el,S)|0,this._fh=this._fh+f+g(this._fl,k)|0,this._gh=this._gh+v+g(this._gl,x)|0,this._hh=this._hh+m+g(this._hl,I)|0},f.prototype._hash=function(){var e=o.allocUnsafe(64);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e},e.exports=f},function(e,t,r){\"use strict\";var n=t;function i(e){return 1===e.length?\"0\"+e:e}function o(e){for(var t=\"\",r=0;r<e.length;r++)t+=i(e[r].toString(16));return t}n.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if(\"string\"!=typeof e){for(var n=0;n<e.length;n++)r[n]=0|e[n];return r}if(\"hex\"===t){(e=e.replace(/[^a-z0-9]+/gi,\"\")).length%2!=0&&(e=\"0\"+e);for(n=0;n<e.length;n+=2)r.push(parseInt(e[n]+e[n+1],16))}else for(n=0;n<e.length;n++){var i=e.charCodeAt(n),o=i>>8,a=255&i;o?r.push(o,a):r.push(a)}return r},n.zero2=i,n.toHex=o,n.encode=function(e,t){return\"hex\"===t?o(e):e}},function(e,t,r){var n;function i(e){this.rand=e}if(e.exports=function(e){return n||(n=new i(null)),n.generate(e)},e.exports.Rand=i,i.prototype.generate=function(e){return this._rand(e)},i.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var t=new Uint8Array(e),r=0;r<t.length;r++)t[r]=this.rand.getByte();return t},\"object\"==typeof self)self.crypto&&self.crypto.getRandomValues?i.prototype._rand=function(e){var t=new Uint8Array(e);return self.crypto.getRandomValues(t),t}:self.msCrypto&&self.msCrypto.getRandomValues?i.prototype._rand=function(e){var t=new Uint8Array(e);return self.msCrypto.getRandomValues(t),t}:\"object\"==typeof window&&(i.prototype._rand=function(){throw new Error(\"Not implemented yet\")});else try{var o=r(143);if(\"function\"!=typeof o.randomBytes)throw new Error(\"Not supported\");i.prototype._rand=function(e){return o.randomBytes(e)}}catch(e){}},function(e,t,r){\"use strict\";var n=t;n.base=r(28),n.short=r(144),n.mont=r(145),n.edwards=r(146)},function(e,t,r){\"use strict\";var n=r(8).rotr32;function i(e,t,r){return e&t^~e&r}function o(e,t,r){return e&t^e&r^t&r}function a(e,t,r){return e^t^r}t.ft_1=function(e,t,r,n){return 0===e?i(t,r,n):1===e||3===e?a(t,r,n):2===e?o(t,r,n):void 0},t.ch32=i,t.maj32=o,t.p32=a,t.s0_256=function(e){return n(e,2)^n(e,13)^n(e,22)},t.s1_256=function(e){return n(e,6)^n(e,11)^n(e,25)},t.g0_256=function(e){return n(e,7)^n(e,18)^e>>>3},t.g1_256=function(e){return n(e,17)^n(e,19)^e>>>10}},function(e,t,r){\"use strict\";var n=r(8),i=r(17),o=r(65),a=r(11),s=n.sum32,f=n.sum32_4,c=n.sum32_5,u=o.ch32,h=o.maj32,l=o.s0_256,d=o.s1_256,p=o.g0_256,b=o.g1_256,y=i.BlockHash,g=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function v(){if(!(this instanceof v))return new v;y.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=g,this.W=new Array(64)}n.inherits(v,y),e.exports=v,v.blockSize=512,v.outSize=256,v.hmacStrength=192,v.padLength=64,v.prototype._update=function(e,t){for(var r=this.W,n=0;n<16;n++)r[n]=e[t+n];for(;n<r.length;n++)r[n]=f(b(r[n-2]),r[n-7],p(r[n-15]),r[n-16]);var i=this.h[0],o=this.h[1],y=this.h[2],g=this.h[3],v=this.h[4],m=this.h[5],_=this.h[6],w=this.h[7];for(a(this.k.length===r.length),n=0;n<r.length;n++){var E=c(w,d(v),u(v,m,_),this.k[n],r[n]),A=s(l(i),h(i,o,y));w=_,_=m,m=v,v=s(g,E),g=y,y=o,o=i,i=s(E,A)}this.h[0]=s(this.h[0],i),this.h[1]=s(this.h[1],o),this.h[2]=s(this.h[2],y),this.h[3]=s(this.h[3],g),this.h[4]=s(this.h[4],v),this.h[5]=s(this.h[5],m),this.h[6]=s(this.h[6],_),this.h[7]=s(this.h[7],w)},v.prototype._digest=function(e){return\"hex\"===e?n.toHex32(this.h,\"big\"):n.split32(this.h,\"big\")}},function(e,t,r){\"use strict\";var n=r(8),i=r(17),o=r(11),a=n.rotr64_hi,s=n.rotr64_lo,f=n.shr64_hi,c=n.shr64_lo,u=n.sum64,h=n.sum64_hi,l=n.sum64_lo,d=n.sum64_4_hi,p=n.sum64_4_lo,b=n.sum64_5_hi,y=n.sum64_5_lo,g=i.BlockHash,v=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function m(){if(!(this instanceof m))return new m;g.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=v,this.W=new Array(160)}function _(e,t,r,n,i){var o=e&r^~e&i;return o<0&&(o+=4294967296),o}function w(e,t,r,n,i,o){var a=t&n^~t&o;return a<0&&(a+=4294967296),a}function E(e,t,r,n,i){var o=e&r^e&i^r&i;return o<0&&(o+=4294967296),o}function A(e,t,r,n,i,o){var a=t&n^t&o^n&o;return a<0&&(a+=4294967296),a}function S(e,t){var r=a(e,t,28)^a(t,e,2)^a(t,e,7);return r<0&&(r+=4294967296),r}function k(e,t){var r=s(e,t,28)^s(t,e,2)^s(t,e,7);return r<0&&(r+=4294967296),r}function x(e,t){var r=a(e,t,14)^a(e,t,18)^a(t,e,9);return r<0&&(r+=4294967296),r}function I(e,t){var r=s(e,t,14)^s(e,t,18)^s(t,e,9);return r<0&&(r+=4294967296),r}function M(e,t){var r=a(e,t,1)^a(e,t,8)^f(e,t,7);return r<0&&(r+=4294967296),r}function T(e,t){var r=s(e,t,1)^s(e,t,8)^c(e,t,7);return r<0&&(r+=4294967296),r}function P(e,t){var r=a(e,t,19)^a(t,e,29)^f(e,t,6);return r<0&&(r+=4294967296),r}function B(e,t){var r=s(e,t,19)^s(t,e,29)^c(e,t,6);return r<0&&(r+=4294967296),r}n.inherits(m,g),e.exports=m,m.blockSize=1024,m.outSize=512,m.hmacStrength=192,m.padLength=128,m.prototype._prepareBlock=function(e,t){for(var r=this.W,n=0;n<32;n++)r[n]=e[t+n];for(;n<r.length;n+=2){var i=P(r[n-4],r[n-3]),o=B(r[n-4],r[n-3]),a=r[n-14],s=r[n-13],f=M(r[n-30],r[n-29]),c=T(r[n-30],r[n-29]),u=r[n-32],h=r[n-31];r[n]=d(i,o,a,s,f,c,u,h),r[n+1]=p(i,o,a,s,f,c,u,h)}},m.prototype._update=function(e,t){this._prepareBlock(e,t);var r=this.W,n=this.h[0],i=this.h[1],a=this.h[2],s=this.h[3],f=this.h[4],c=this.h[5],d=this.h[6],p=this.h[7],g=this.h[8],v=this.h[9],m=this.h[10],M=this.h[11],T=this.h[12],P=this.h[13],B=this.h[14],L=this.h[15];o(this.k.length===r.length);for(var R=0;R<r.length;R+=2){var O=B,C=L,N=x(g,v),j=I(g,v),D=_(g,v,m,M,T),q=w(g,v,m,M,T,P),U=this.k[R],F=this.k[R+1],z=r[R],K=r[R+1],H=b(O,C,N,j,D,q,U,F,z,K),V=y(O,C,N,j,D,q,U,F,z,K);O=S(n,i),C=k(n,i),N=E(n,i,a,s,f),j=A(n,i,a,s,f,c);var Y=h(O,C,N,j),G=l(O,C,N,j);B=T,L=P,T=m,P=M,m=g,M=v,g=h(d,p,H,V),v=l(p,p,H,V),d=f,p=c,f=a,c=s,a=n,s=i,n=h(H,V,Y,G),i=l(H,V,Y,G)}u(this.h,0,n,i),u(this.h,2,a,s),u(this.h,4,f,c),u(this.h,6,d,p),u(this.h,8,g,v),u(this.h,10,m,M),u(this.h,12,T,P),u(this.h,14,B,L)},m.prototype._digest=function(e){return\"hex\"===e?n.toHex32(this.h,\"big\"):n.split32(this.h,\"big\")}},function(e,t,r){\"use strict\";(function(t){var n=r(161);\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */function i(e,t){if(e===t)return 0;for(var r=e.length,n=t.length,i=0,o=Math.min(r,n);i<o;++i)if(e[i]!==t[i]){r=e[i],n=t[i];break}return r<n?-1:n<r?1:0}function o(e){return t.Buffer&&\"function\"==typeof t.Buffer.isBuffer?t.Buffer.isBuffer(e):!(null==e||!e._isBuffer)}var a=r(2),s=Object.prototype.hasOwnProperty,f=Array.prototype.slice,c=\"foo\"===function(){}.name;function u(e){return Object.prototype.toString.call(e)}function h(e){return!o(e)&&(\"function\"==typeof t.ArrayBuffer&&(\"function\"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):!!e&&(e instanceof DataView||!!(e.buffer&&e.buffer instanceof ArrayBuffer))))}var l=e.exports=v,d=/\\s*function\\s+([^\\(\\s]*)\\s*/;function p(e){if(a.isFunction(e)){if(c)return e.name;var t=e.toString().match(d);return t&&t[1]}}function b(e,t){return\"string\"==typeof e?e.length<t?e:e.slice(0,t):e}function y(e){if(c||!a.isFunction(e))return a.inspect(e);var t=p(e);return\"[Function\"+(t?\": \"+t:\"\")+\"]\"}function g(e,t,r,n,i){throw new l.AssertionError({message:r,actual:e,expected:t,operator:n,stackStartFunction:i})}function v(e,t){e||g(e,!0,t,\"==\",l.ok)}function m(e,t,r,n){if(e===t)return!0;if(o(e)&&o(t))return 0===i(e,t);if(a.isDate(e)&&a.isDate(t))return e.getTime()===t.getTime();if(a.isRegExp(e)&&a.isRegExp(t))return e.source===t.source&&e.global===t.global&&e.multiline===t.multiline&&e.lastIndex===t.lastIndex&&e.ignoreCase===t.ignoreCase;if(null!==e&&\"object\"==typeof e||null!==t&&\"object\"==typeof t){if(h(e)&&h(t)&&u(e)===u(t)&&!(e instanceof Float32Array||e instanceof Float64Array))return 0===i(new Uint8Array(e.buffer),new Uint8Array(t.buffer));if(o(e)!==o(t))return!1;var s=(n=n||{actual:[],expected:[]}).actual.indexOf(e);return-1!==s&&s===n.expected.indexOf(t)||(n.actual.push(e),n.expected.push(t),function(e,t,r,n){if(null==e||null==t)return!1;if(a.isPrimitive(e)||a.isPrimitive(t))return e===t;if(r&&Object.getPrototypeOf(e)!==Object.getPrototypeOf(t))return!1;var i=_(e),o=_(t);if(i&&!o||!i&&o)return!1;if(i)return e=f.call(e),t=f.call(t),m(e,t,r);var s,c,u=A(e),h=A(t);if(u.length!==h.length)return!1;for(u.sort(),h.sort(),c=u.length-1;c>=0;c--)if(u[c]!==h[c])return!1;for(c=u.length-1;c>=0;c--)if(s=u[c],!m(e[s],t[s],r,n))return!1;return!0}(e,t,r,n))}return r?e===t:e==t}function _(e){return\"[object Arguments]\"==Object.prototype.toString.call(e)}function w(e,t){if(!e||!t)return!1;if(\"[object RegExp]\"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function E(e,t,r,n){var i;if(\"function\"!=typeof t)throw new TypeError('\"block\" argument must be a function');\"string\"==typeof r&&(n=r,r=null),i=function(e){var t;try{e()}catch(e){t=e}return t}(t),n=(r&&r.name?\" (\"+r.name+\").\":\".\")+(n?\" \"+n:\".\"),e&&!i&&g(i,r,\"Missing expected exception\"+n);var o=\"string\"==typeof n,s=!e&&i&&!r;if((!e&&a.isError(i)&&o&&w(i,r)||s)&&g(i,r,\"Got unwanted exception\"+n),e&&i&&r&&!w(i,r)||!e&&i)throw i}l.AssertionError=function(e){this.name=\"AssertionError\",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=function(e){return b(y(e.actual),128)+\" \"+e.operator+\" \"+b(y(e.expected),128)}(this),this.generatedMessage=!0);var t=e.stackStartFunction||g;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var r=new Error;if(r.stack){var n=r.stack,i=p(t),o=n.indexOf(\"\\n\"+i);if(o>=0){var a=n.indexOf(\"\\n\",o+1);n=n.substring(a+1)}this.stack=n}}},a.inherits(l.AssertionError,Error),l.fail=g,l.ok=v,l.equal=function(e,t,r){e!=t&&g(e,t,r,\"==\",l.equal)},l.notEqual=function(e,t,r){e==t&&g(e,t,r,\"!=\",l.notEqual)},l.deepEqual=function(e,t,r){m(e,t,!1)||g(e,t,r,\"deepEqual\",l.deepEqual)},l.deepStrictEqual=function(e,t,r){m(e,t,!0)||g(e,t,r,\"deepStrictEqual\",l.deepStrictEqual)},l.notDeepEqual=function(e,t,r){m(e,t,!1)&&g(e,t,r,\"notDeepEqual\",l.notDeepEqual)},l.notDeepStrictEqual=function e(t,r,n){m(t,r,!0)&&g(t,r,n,\"notDeepStrictEqual\",e)},l.strictEqual=function(e,t,r){e!==t&&g(e,t,r,\"===\",l.strictEqual)},l.notStrictEqual=function(e,t,r){e===t&&g(e,t,r,\"!==\",l.notStrictEqual)},l.throws=function(e,t,r){E(!0,e,t,r)},l.doesNotThrow=function(e,t,r){E(!1,e,t,r)},l.ifError=function(e){if(e)throw e},l.strict=n((function e(t,r){t||g(t,!0,r,\"==\",e)}),l,{equal:l.strictEqual,deepEqual:l.deepStrictEqual,notEqual:l.notStrictEqual,notDeepEqual:l.notDeepStrictEqual}),l.strict.strict=l.strict;var A=Object.keys||function(e){var t=[];for(var r in e)s.call(e,r)&&t.push(r);return t}}).call(this,r(4))},function(e,t,r){\"use strict\";(function(e){Object.defineProperty(t,\"__esModule\",{value:!0});var n=r(3);function i(e,t){if(\"00\"===e.slice(0,2))throw new Error(\"invalid RLP: extra zeros\");return parseInt(e,t)}function o(t,r){if(t<56)return e.from([t+r]);var n=s(t),i=s(r+55+n.length/2);return e.from(i+n,\"hex\")}function a(e){return\"0x\"===e.slice(0,2)}function s(e){if(e<0)throw new Error(\"Invalid integer as argument, must be unsigned!\");var t=e.toString(16);return t.length%2?\"0\"+t:t}function f(t){if(!e.isBuffer(t)){if(\"string\"==typeof t)return a(t)?e.from((i=\"string\"!=typeof(o=t)?o:a(o)?o.slice(2):o).length%2?\"0\"+i:i,\"hex\"):e.from(t);if(\"number\"==typeof t)return t?(r=s(t),e.from(r,\"hex\")):e.from([]);if(null==t)return e.from([]);if(t instanceof Uint8Array)return e.from(t);if(n.isBN(t))return e.from(t.toArray());throw new Error(\"invalid type\")}var r,i,o;return t}t.encode=function t(r){if(Array.isArray(r)){for(var n=[],i=0;i<r.length;i++)n.push(t(r[i]));var a=e.concat(n);return e.concat([o(a.length,192),a])}var s=f(r);return 1===s.length&&s[0]<128?s:e.concat([o(s.length,128),s])},t.decode=function(t,r){if(void 0===r&&(r=!1),!t||0===t.length)return e.from([]);var n=function t(r){var n,o,a,s,f;var c=[];var u=r[0];if(u<=127)return{data:r.slice(0,1),remainder:r.slice(1)};if(u<=183){if(n=u-127,a=128===u?e.from([]):r.slice(1,n),2===n&&a[0]<128)throw new Error(\"invalid rlp encoding: byte must be less 0x80\");return{data:a,remainder:r.slice(n)}}if(u<=191){if(o=u-182,n=i(r.slice(1,o).toString(\"hex\"),16),(a=r.slice(o,n+o)).length<n)throw new Error(\"invalid RLP\");return{data:a,remainder:r.slice(n+o)}}if(u<=247){for(n=u-191,s=r.slice(1,n);s.length;)f=t(s),c.push(f.data),s=f.remainder;return{data:c,remainder:r.slice(n)}}o=u-246,n=i(r.slice(1,o).toString(\"hex\"),16);var h=o+n;if(h>r.length)throw new Error(\"invalid rlp: total length is larger than the data\");if(0===(s=r.slice(o,h)).length)throw new Error(\"invalid rlp, List has a invalid length\");for(;s.length;)f=t(s),c.push(f.data),s=f.remainder;return{data:c,remainder:r.slice(h)}}(f(t));if(r)return n;if(0!==n.remainder.length)throw new Error(\"invalid remainder\");return n.data},t.getLength=function(t){if(!t||0===t.length)return e.from([]);var r=f(t),n=r[0];if(n<=127)return r.length;if(n<=183)return n-127;if(n<=191)return n-182;if(n<=247)return n-191;var o=n-246;return o+i(r.slice(1,o).toString(\"hex\"),16)}}).call(this,r(7).Buffer)},function(e,t,r){\"use strict\";(function(t){var n=r(71),i=r(162);function o(e){var t=e;if(\"string\"!=typeof t)throw new Error(\"[ethjs-util] while padding to even, value must be string, is currently \"+typeof t+\", while padToEven.\");return t.length%2&&(t=\"0\"+t),t}function a(e){return\"0x\"+e.toString(16)}e.exports={arrayContainsArray:function(e,t,r){if(!0!==Array.isArray(e))throw new Error(\"[ethjs-util] method arrayContainsArray requires input 'superset' to be an array got type '\"+typeof e+\"'\");if(!0!==Array.isArray(t))throw new Error(\"[ethjs-util] method arrayContainsArray requires input 'subset' to be an array got type '\"+typeof t+\"'\");return t[Boolean(r)?\"some\":\"every\"]((function(t){return e.indexOf(t)>=0}))},intToBuffer:function(e){var r=a(e);return new t(o(r.slice(2)),\"hex\")},getBinarySize:function(e){if(\"string\"!=typeof e)throw new Error(\"[ethjs-util] while getting binary size, method getBinarySize requires input 'str' to be type String, got '\"+typeof e+\"'.\");return t.byteLength(e,\"utf8\")},isHexPrefixed:n,stripHexPrefix:i,padToEven:o,intToHex:a,fromAscii:function(e){for(var t=\"\",r=0;r<e.length;r++){var n=e.charCodeAt(r).toString(16);t+=n.length<2?\"0\"+n:n}return\"0x\"+t},fromUtf8:function(e){return\"0x\"+o(new t(e,\"utf8\").toString(\"hex\")).replace(/^0+|0+$/g,\"\")},toAscii:function(e){var t=\"\",r=0,n=e.length;for(\"0x\"===e.substring(0,2)&&(r=2);r<n;r+=2){var i=parseInt(e.substr(r,2),16);t+=String.fromCharCode(i)}return t},toUtf8:function(e){return new t(o(i(e).replace(/^0+|0+$/g,\"\")),\"hex\").toString(\"utf8\")},getKeys:function(e,t,r){if(!Array.isArray(e))throw new Error(\"[ethjs-util] method getKeys expecting type Array as 'params' input, got '\"+typeof e+\"'\");if(\"string\"!=typeof t)throw new Error(\"[ethjs-util] method getKeys expecting type String for input 'key' got '\"+typeof t+\"'.\");for(var n=[],i=0;i<e.length;i++){var o=e[i][t];if(r&&!o)o=\"\";else if(\"string\"!=typeof o)throw new Error(\"invalid abi\");n.push(o)}return n},isHexString:function(e,t){return!(\"string\"!=typeof e||!e.match(/^0x[0-9A-Fa-f]*$/))&&(!t||e.length===2+2*t)}}}).call(this,r(7).Buffer)},function(e,t){e.exports=function(e){if(\"string\"!=typeof e)throw new Error(\"[is-hex-prefixed] value must be type 'string', is currently type \"+typeof e+\", while checking isHexPrefixed.\");return\"0x\"===e.slice(0,2)}},function(e,t,r){const n=r(29),i=r(165)();function o(e){this.currentProvider=e}function a(e){return function(){const t=this;var r=[].slice.call(arguments),n=r.pop();t.sendAsync({method:e,params:r},n)}}function s(e,t){return function(){const r=this;var n=[].slice.call(arguments),i=n.pop();n.length<e&&n.push(\"latest\"),r.sendAsync({method:t,params:n},i)}}e.exports=o,o.prototype.getBalance=s(2,\"eth_getBalance\"),o.prototype.getCode=s(2,\"eth_getCode\"),o.prototype.getTransactionCount=s(2,\"eth_getTransactionCount\"),o.prototype.getStorageAt=s(3,\"eth_getStorageAt\"),o.prototype.call=s(2,\"eth_call\"),o.prototype.protocolVersion=a(\"eth_protocolVersion\"),o.prototype.syncing=a(\"eth_syncing\"),o.prototype.coinbase=a(\"eth_coinbase\"),o.prototype.mining=a(\"eth_mining\"),o.prototype.hashrate=a(\"eth_hashrate\"),o.prototype.gasPrice=a(\"eth_gasPrice\"),o.prototype.accounts=a(\"eth_accounts\"),o.prototype.blockNumber=a(\"eth_blockNumber\"),o.prototype.getBlockTransactionCountByHash=a(\"eth_getBlockTransactionCountByHash\"),o.prototype.getBlockTransactionCountByNumber=a(\"eth_getBlockTransactionCountByNumber\"),o.prototype.getUncleCountByBlockHash=a(\"eth_getUncleCountByBlockHash\"),o.prototype.getUncleCountByBlockNumber=a(\"eth_getUncleCountByBlockNumber\"),o.prototype.sign=a(\"eth_sign\"),o.prototype.sendTransaction=a(\"eth_sendTransaction\"),o.prototype.sendRawTransaction=a(\"eth_sendRawTransaction\"),o.prototype.estimateGas=a(\"eth_estimateGas\"),o.prototype.getBlockByHash=a(\"eth_getBlockByHash\"),o.prototype.getBlockByNumber=a(\"eth_getBlockByNumber\"),o.prototype.getTransactionByHash=a(\"eth_getTransactionByHash\"),o.prototype.getTransactionByBlockHashAndIndex=a(\"eth_getTransactionByBlockHashAndIndex\"),o.prototype.getTransactionByBlockNumberAndIndex=a(\"eth_getTransactionByBlockNumberAndIndex\"),o.prototype.getTransactionReceipt=a(\"eth_getTransactionReceipt\"),o.prototype.getUncleByBlockHashAndIndex=a(\"eth_getUncleByBlockHashAndIndex\"),o.prototype.getUncleByBlockNumberAndIndex=a(\"eth_getUncleByBlockNumberAndIndex\"),o.prototype.getCompilers=a(\"eth_getCompilers\"),o.prototype.compileLLL=a(\"eth_compileLLL\"),o.prototype.compileSolidity=a(\"eth_compileSolidity\"),o.prototype.compileSerpent=a(\"eth_compileSerpent\"),o.prototype.newFilter=a(\"eth_newFilter\"),o.prototype.newBlockFilter=a(\"eth_newBlockFilter\"),o.prototype.newPendingTransactionFilter=a(\"eth_newPendingTransactionFilter\"),o.prototype.uninstallFilter=a(\"eth_uninstallFilter\"),o.prototype.getFilterChanges=a(\"eth_getFilterChanges\"),o.prototype.getFilterLogs=a(\"eth_getFilterLogs\"),o.prototype.getLogs=a(\"eth_getLogs\"),o.prototype.getWork=a(\"eth_getWork\"),o.prototype.submitWork=a(\"eth_submitWork\"),o.prototype.submitHashrate=a(\"eth_submitHashrate\"),o.prototype.sendAsync=function(e,t){this.currentProvider.sendAsync(function(e){return n({id:i(),jsonrpc:\"2.0\",params:[]},e)}(e),(function(e,r){if(!e&&r.error&&(e=new Error(\"EthQuery - RPC Error - \"+r.error.message)),e)return t(e);t(null,r.result)}))}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=o(r(166)),i=o(r(192));function o(e){return e&&e.__esModule?e:{default:e}}t.default=(0,n.default)(i.default),e.exports=t.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r){((0,n.default)(e)?l:d)(e,(0,u.default)(t),r)};var n=h(r(30)),i=h(r(80)),o=h(r(170)),a=h(r(83)),s=h(r(18)),f=h(r(42)),c=h(r(44)),u=h(r(12));function h(e){return e&&e.__esModule?e:{default:e}}function l(e,t,r){r=(0,f.default)(r||s.default);var n=0,o=0,a=e.length;function u(e,t){e?r(e):++o!==a&&t!==i.default||r(null)}for(0===a&&r(null);n<a;n++)t(e[n],n,(0,c.default)(u))}var d=(0,a.default)(o.default,1/0);e.exports=t.default},function(e,t,r){var n=r(76).Symbol;e.exports=n},function(e,t,r){var n=r(77),i=\"object\"==typeof self&&self&&self.Object===Object&&self,o=n||i||Function(\"return this\")();e.exports=o},function(e,t,r){(function(t){var r=\"object\"==typeof t&&t&&t.Object===Object&&t;e.exports=r}).call(this,r(4))},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&(\"object\"==t||\"function\"==t)}},function(e,t){var r=9007199254740991;e.exports=function(e){return\"number\"==typeof e&&e>-1&&e%1==0&&e<=r}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={},e.exports=t.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){return function(t,r,f){if(f=(0,i.default)(f||n.default),e<=0||!t)return f(null);var c=(0,o.default)(t),u=!1,h=0,l=!1;function d(e,t){if(h-=1,e)u=!0,f(e);else{if(t===s.default||u&&h<=0)return u=!0,f(null);l||p()}}function p(){for(l=!0;h<e&&!u;){var t=c();if(null===t)return u=!0,void(h<=0&&f(null));h+=1,r(t.value,t.key,(0,a.default)(d))}l=!1}p()}};var n=f(r(18)),i=f(r(42)),o=f(r(171)),a=f(r(44)),s=f(r(80));function f(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t){var r=Array.isArray;e.exports=r},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){return function(r,n,i){return e(r,t,n,i)}},e.exports=t.default},function(e,t,r){\"use strict\";var n=r(85);function i(e){return\"never\"!==s(e)}function o(e){var t=a(e);return t>=e.params.length?e.params:\"eth_getBlockByNumber\"===e.method?e.params.slice(1):e.params.slice(0,t)}function a(e){switch(e.method){case\"eth_getStorageAt\":return 2;case\"eth_getBalance\":case\"eth_getCode\":case\"eth_getTransactionCount\":case\"eth_call\":case\"eth_estimateGas\":return 1;case\"eth_getBlockByNumber\":return 0;default:return}}function s(e){switch(e.method){case\"web3_clientVersion\":case\"web3_sha3\":case\"eth_protocolVersion\":case\"eth_getBlockTransactionCountByHash\":case\"eth_getUncleCountByBlockHash\":case\"eth_getCode\":case\"eth_getBlockByHash\":case\"eth_getTransactionByHash\":case\"eth_getTransactionByBlockHashAndIndex\":case\"eth_getTransactionReceipt\":case\"eth_getUncleByBlockHashAndIndex\":case\"eth_getCompilers\":case\"eth_compileLLL\":case\"eth_compileSolidity\":case\"eth_compileSerpent\":case\"shh_version\":return\"perma\";case\"eth_getBlockByNumber\":case\"eth_getBlockTransactionCountByNumber\":case\"eth_getUncleCountByBlockNumber\":case\"eth_getTransactionByBlockNumberAndIndex\":case\"eth_getUncleByBlockNumberAndIndex\":return\"fork\";case\"eth_gasPrice\":case\"eth_getBalance\":case\"eth_getStorageAt\":case\"eth_getTransactionCount\":case\"eth_call\":case\"eth_estimateGas\":case\"eth_getFilterLogs\":case\"eth_getLogs\":case\"eth_blockNumber\":return\"block\";case\"net_version\":case\"net_peerCount\":case\"net_listening\":case\"eth_syncing\":case\"eth_sign\":case\"eth_coinbase\":case\"eth_mining\":case\"eth_hashrate\":case\"eth_accounts\":case\"eth_sendTransaction\":case\"eth_sendRawTransaction\":case\"eth_newFilter\":case\"eth_newBlockFilter\":case\"eth_newPendingTransactionFilter\":case\"eth_uninstallFilter\":case\"eth_getFilterChanges\":case\"eth_getWork\":case\"eth_submitWork\":case\"eth_submitHashrate\":case\"db_putString\":case\"db_getString\":case\"db_putHex\":case\"db_getHex\":case\"shh_post\":case\"shh_newIdentity\":case\"shh_hasIdentity\":case\"shh_newGroup\":case\"shh_addToGroup\":case\"shh_newFilter\":case\"shh_uninstallFilter\":case\"shh_getFilterChanges\":case\"shh_getMessages\":return\"never\"}}e.exports={cacheIdentifierForPayload:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!i(e))return null;var r=t.includeBlockRef?e.params:o(e);return e.method+\":\"+n(r)},canCache:i,blockTagForPayload:function(e){var t=a(e);if(t>=e.params.length)return null;return e.params[t]},paramsWithoutBlockTag:o,blockTagParamIndex:a,cacheTypeForPayload:s}},function(e,t,r){var n=\"undefined\"!=typeof JSON?JSON:r(197);e.exports=function(e,t){t||(t={}),\"function\"==typeof t&&(t={cmp:t});var r=t.space||\"\";\"number\"==typeof r&&(r=Array(r+1).join(\" \"));var a,s=\"boolean\"==typeof t.cycles&&t.cycles,f=t.replacer||function(e,t){return t},c=t.cmp&&(a=t.cmp,function(e){return function(t,r){var n={key:t,value:e[t]},i={key:r,value:e[r]};return a(n,i)}}),u=[];return function e(t,a,h,l){var d=r?\"\\n\"+new Array(l+1).join(r):\"\",p=r?\": \":\":\";if(h&&h.toJSON&&\"function\"==typeof h.toJSON&&(h=h.toJSON()),void 0!==(h=f.call(t,a,h))){if(\"object\"!=typeof h||null===h)return n.stringify(h);if(i(h)){for(var b=[],y=0;y<h.length;y++){var g=e(h,y,h[y],l+1)||n.stringify(null);b.push(d+r+g)}return\"[\"+b.join(\",\")+d+\"]\"}if(-1!==u.indexOf(h)){if(s)return n.stringify(\"__cycle__\");throw new TypeError(\"Converting circular structure to JSON\")}u.push(h);var v=o(h).sort(c&&c(h));for(b=[],y=0;y<v.length;y++){var m=e(h,a=v[y],h[a],l+1);if(m){var _=n.stringify(a)+p+m;b.push(d+r+_)}}return u.splice(u.indexOf(h),1),\"{\"+b.join(\",\")+d+\"}\"}}({\"\":e},\"\",e,0)};var i=Array.isArray||function(e){return\"[object Array]\"==={}.toString.call(e)},o=Object.keys||function(e){var t=Object.prototype.hasOwnProperty||function(){return!0},r=[];for(var n in e)t.call(e,n)&&r.push(n);return r}},function(e,t,r){const n=r(206).Mutex,i=r(46),o=r(87),a=r(208),s=r(210),f=r(211),{intToHex:c,hexToInt:u}=r(20);function h(e){return l(async(...t)=>{const r=await e(...t);return c(r.id)})}function l(e){return i(async(t,r)=>{const n=await e.apply(null,t.params);r.result=n})}function d(e,t){const r=[];for(let t in e)r.push(e[t]);return r}e.exports=function({blockTracker:e,provider:t}){let r=0,i={};const p=new n,b=function({mutex:e}){return t=>async(r,n,i,o)=>{(await e.acquire())(),t(r,n,i,o)}}({mutex:p}),y=o({eth_newFilter:b(h(v)),eth_newBlockFilter:b(h(m)),eth_newPendingTransactionFilter:b(h(_)),eth_uninstallFilter:b(l(A)),eth_getFilterChanges:b(l(w)),eth_getFilterLogs:b(l(E))}),g=async({oldBlock:e,newBlock:t})=>{if(0===i.length)return;const r=await p.acquire();try{await Promise.all(d(i).map(async r=>{try{await r.update({oldBlock:e,newBlock:t})}catch(e){console.error(e)}}))}catch(e){console.error(e)}r()};return y.newLogFilter=v,y.newBlockFilter=m,y.newPendingTransactionFilter=_,y.uninstallFilter=A,y.getFilterChanges=w,y.getFilterLogs=E,y.destroy=()=>{!async function(){const e=d(i).length;i={},k({prevFilterCount:e,newFilterCount:0})}()},y;async function v(e){const r=new a({provider:t,params:e});await S(r);return r}async function m(){const e=new s({provider:t});await S(e);return e}async function _(){const e=new f({provider:t});await S(e);return e}async function w(e){const t=u(e),r=i[t];if(!r)throw new Error(`No filter for index \"${t}\"`);return r.getChangesAndClear()}async function E(e){const t=u(e),r=i[t];if(!r)throw new Error(`No filter for index \"${t}\"`);return\"log\"===r.type?results=r.getAllResults():results=[],results}async function A(e){const t=u(e),r=i[t],n=Boolean(r);return n&&await async function(e){const t=d(i).length;delete i[e];const r=d(i).length;k({prevFilterCount:t,newFilterCount:r})}(t),n}async function S(t){const n=d(i).length,o=await e.getLatestBlock();return await t.initialize({currentBlock:o}),i[++r]=t,t.id=r,t.idHex=c(r),k({prevFilterCount:n,newFilterCount:d(i).length}),r}function k({prevFilterCount:t,newFilterCount:r}){0===t&&r>0?e.on(\"sync\",g):t>0&&0===r&&e.removeListener(\"sync\",g)}}},function(e,t,r){e.exports=r(207)},function(e,t,r){\"use strict\";var n=r(230),i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol(\"foo\"),o=Object.prototype.toString,a=Array.prototype.concat,s=Object.defineProperty,f=s&&function(){var e={};try{for(var t in s(e,\"x\",{enumerable:!1,value:e}),e)return!1;return e.x===e}catch(e){return!1}}(),c=function(e,t,r,n){var i;t in e&&(\"function\"!=typeof(i=n)||\"[object Function]\"!==o.call(i)||!n())||(f?s(e,t,{configurable:!0,enumerable:!1,value:r,writable:!0}):e[t]=r)},u=function(e,t){var r=arguments.length>2?arguments[2]:{},o=n(t);i&&(o=a.call(o,Object.getOwnPropertySymbols(t)));for(var s=0;s<o.length;s+=1)c(e,o[s],t[o[s]],r[o[s]])};u.supportsDescriptors=!!f,e.exports=u},function(e,t,r){\"use strict\";var n=Object.prototype.toString;e.exports=function(e){var t=n.call(e),r=\"[object Arguments]\"===t;return r||(r=\"[object Array]\"!==t&&null!==e&&\"object\"==typeof e&&\"number\"==typeof e.length&&e.length>=0&&\"[object Function]\"===n.call(e.callee)),r}},function(e,t,r){\"use strict\";var n=r(21),i=r(232),o=n.call(Function.call,String.prototype.replace),a=/^[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]+/,s=/[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]+$/;e.exports=function(){var e=i.ToString(i.CheckObjectCoercible(this));return o(o(e,a,\"\"),s,\"\")}},function(e,t,r){\"use strict\";var n=r(22),i=r(242),o=i(n(\"String.prototype.indexOf\"));e.exports=function(e,t){var r=n(e,!!t);return\"function\"==typeof r&&o(e,\".prototype.\")?i(r):r}},function(e,t,r){\"use strict\";var n=r(90);e.exports=function(){return String.prototype.trim&&\"\"===\"\".trim()?String.prototype.trim:n}},function(e,t,r){var n=r(6),i=r(51);function o(e){n.EventEmitter.call(this),this.backoffStrategy_=e,this.maxNumberOfRetry_=-1,this.backoffNumber_=0,this.backoffDelay_=0,this.timeoutID_=-1,this.handlers={backoff:this.onBackoff_.bind(this)}}r(2).inherits(o,n.EventEmitter),o.prototype.failAfter=function(e){i.checkArgument(e>0,\"Expected a maximum number of retry greater than 0 but got %s.\",e),this.maxNumberOfRetry_=e},o.prototype.backoff=function(e){i.checkState(-1===this.timeoutID_,\"Backoff in progress.\"),this.backoffNumber_===this.maxNumberOfRetry_?(this.emit(\"fail\",e),this.reset()):(this.backoffDelay_=this.backoffStrategy_.next(),this.timeoutID_=setTimeout(this.handlers.backoff,this.backoffDelay_),this.emit(\"backoff\",this.backoffNumber_,this.backoffDelay_,e))},o.prototype.onBackoff_=function(){this.timeoutID_=-1,this.emit(\"ready\",this.backoffNumber_,this.backoffDelay_),this.backoffNumber_++},o.prototype.reset=function(){this.backoffNumber_=0,this.backoffStrategy_.reset(),clearTimeout(this.timeoutID_),this.timeoutID_=-1},e.exports=o},function(e,t,r){r(6),r(2);function n(e){return null!=e}function i(e){if(n((e=e||{}).initialDelay)&&e.initialDelay<1)throw new Error(\"The initial timeout must be greater than 0.\");if(n(e.maxDelay)&&e.maxDelay<1)throw new Error(\"The maximal timeout must be greater than 0.\");if(this.initialDelay_=e.initialDelay||100,this.maxDelay_=e.maxDelay||1e4,this.maxDelay_<=this.initialDelay_)throw new Error(\"The maximal backoff delay must be greater than the initial backoff delay.\");if(n(e.randomisationFactor)&&(e.randomisationFactor<0||e.randomisationFactor>1))throw new Error(\"The randomisation factor must be between 0 and 1.\");this.randomisationFactor_=e.randomisationFactor||0}i.prototype.getMaxDelay=function(){return this.maxDelay_},i.prototype.getInitialDelay=function(){return this.initialDelay_},i.prototype.next=function(){var e=this.next_(),t=1+Math.random()*this.randomisationFactor_;return Math.round(e*t)},i.prototype.next_=function(){throw new Error(\"BackoffStrategy.next_() unimplemented.\")},i.prototype.reset=function(){this.reset_()},i.prototype.reset_=function(){throw new Error(\"BackoffStrategy.reset_() unimplemented.\")},e.exports=i},function(e,t,r){var n=r(2),i=r(94);function o(e){i.call(this,e),this.backoffDelay_=0,this.nextBackoffDelay_=this.getInitialDelay()}n.inherits(o,i),o.prototype.next_=function(){var e=Math.min(this.nextBackoffDelay_,this.getMaxDelay());return this.nextBackoffDelay_+=this.backoffDelay_,this.backoffDelay_=e,e},o.prototype.reset_=function(){this.nextBackoffDelay_=this.getInitialDelay(),this.backoffDelay_=0},e.exports=o},function(e,t,r){\"use strict\";var n=r(6).EventEmitter,i=r(2).inherits,o=r(15),a=r(163),s=r(73),f=r(193),c=r(196),u=(r(84),r(19));function h(e){n.call(this),this.setMaxListeners(30),e=e||{};var t={sendAsync:this._handleAsync.bind(this)},r=e.blockTrackerProvider||t;this._blockTracker=e.blockTracker||new a({provider:r,pollingInterval:e.pollingInterval||4e3,setSkipCacheFlag:void 0===e.setSkipCacheFlag||e.setSkipCacheFlag}),this._ready=new c,this.currentBlock=null,this._providers=[]}function l(e){return e?{number:o.toBuffer(e.number),hash:o.toBuffer(e.hash),parentHash:o.toBuffer(e.parentHash),nonce:o.toBuffer(e.nonce),mixHash:o.toBuffer(e.mixHash),sha3Uncles:o.toBuffer(e.sha3Uncles),logsBloom:o.toBuffer(e.logsBloom),transactionsRoot:o.toBuffer(e.transactionsRoot),stateRoot:o.toBuffer(e.stateRoot),receiptsRoot:o.toBuffer(e.receiptRoot||e.receiptsRoot),miner:o.toBuffer(e.miner),difficulty:o.toBuffer(e.difficulty),totalDifficulty:o.toBuffer(e.totalDifficulty),size:o.toBuffer(e.size),extraData:o.toBuffer(e.extraData),gasLimit:o.toBuffer(e.gasLimit),gasUsed:o.toBuffer(e.gasUsed),timestamp:o.toBuffer(e.timestamp),transactions:e.transactions}:{}}e.exports=h,i(h,n),Object.defineProperty(h,\"name\",{value:\"HttpProvider\"}),h.prototype.start=function(){var e=this,t=(arguments.length>0&&void 0!==arguments[0]&&arguments[0],this);t._ready.go(),t._blockTracker.on(\"latest\",(function(r){t._getBlockByNumber(r,(function(r,n){if(r)e.emit(\"error\",r);else if(n){var i=l(n);t._setCurrentBlock(i),t.emit(\"rawBlock\",n),t.emit(\"latest\",n)}}))})),t._blockTracker.on(\"sync\",t.emit.bind(t,\"sync\")),t._blockTracker.on(\"error\",t.emit.bind(t,\"error\")),t._running=!0,t.emit(\"start\")},h.prototype.stop=function(){this._blockTracker.removeAllListeners(),this._running=!1,this.emit(\"stop\")},h.prototype.isRunning=function(){return this._running},h.prototype.addProvider=function(e,t){\"number\"==typeof t?this._providers.splice(t,0,e):this._providers.push(e),e.setEngine(this)},h.prototype.removeProvider=function(e){var t=this._providers.indexOf(e);if(t<0)throw new Error(\"Provider not found.\");this._providers.splice(t,1)},h.prototype.send=function(e){throw new Error(\"Web3ProviderEngine does not support synchronous requests.\")},h.prototype.sendAsync=function(e,t){var r=this;r._ready.await((function(){Array.isArray(e)?s(e,r._handleAsync.bind(r),t):r._handleAsync(e,t)}))},h.prototype._getBlockByNumber=function(e,t){var r=u({method:\"eth_getBlockByNumber\",params:[e,!1],skipCache:!0});this._handleAsync(r,(function(e,r){return e?t(e):t(null,r.result)}))},h.prototype._handleAsync=function(e,t){var r=this,n=-1,i=null,o=null,a=[];function s(r,n){o=r,i=n,f(a,(function(e,t){e?e(o,i,t):t()}),(function(){var r={id:e.id,jsonrpc:e.jsonrpc,result:i};null!=o?(r.error={message:o.stack||o.message||o,code:-32e3},t(o,r)):t(null,r)}))}!function t(i){n+=1;a.unshift(i);if(n>=r._providers.length)s(new Error('Request for method \"'+e.method+'\" not handled by any subprovider. Please check your subprovider configuration to ensure this method is handled.'));else try{r._providers[n].handleRequest(e,t,s)}catch(e){s(e)}}()},h.prototype._setCurrentBlock=function(e){this.currentBlock=e,this.emit(\"block\",e)}},function(e,t,r){\"use strict\";var n=r(45),i=r(201),o=function(e){function t(e){return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t),function(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,(function(t){var r=t.blockTracker;return i(Object.assign({blockTracker:r},e))})))}return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t}(n);e.exports=o},function(e,t,r){\"use strict\";var n=r(2).inherits,i=r(13);function o(e){e=e||{},this.staticResponses=e}e.exports=o,n(o,i),o.prototype.handleRequest=function(e,t,r){var n=this.staticResponses[e.method];\"function\"==typeof n?n(e,t,r):void 0!==n?setTimeout((function(){return r(null,n)})):t()}},function(e,t,r){\"use strict\";var n=r(45),i=r(86),o=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t),function(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,(function(e){var t=e.blockTracker,r=e.provider;e.engine;return i({blockTracker:t,provider:r})})))}return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t}(n);e.exports=o},function(e,t,r){\"use strict\";var n=r(73),i=r(2).inherits,o=r(13);function a(e){e=e||{},this.numberOfBlocks=e.numberOfBlocks||10,this.delayInBlocks=e.delayInBlocks||5}e.exports=a,i(a,o),a.prototype.handleRequest=function(e,t,r){if(\"eth_gasPrice\"!==e.method)return t();var i=this;i.emitPayload({method:\"eth_blockNumber\"},(function(e,t){for(var o=parseInt(t.result,16)-i.delayInBlocks,a=[],s=0;s<i.numberOfBlocks;s++)a.push(\"0x\"+o.toString(16)),o--;n(a,(function(e,t){i.emitPayload({method:\"eth_getBlockByNumber\",params:[e,!0]},(function(r,n){return r?t(r):n.result?void t(null,n.result.transactions):t(new Error('GaspriceProvider - No block for \"'+e+'\"'))}))}),(function(e,t){(t=(t=t.reduce((function(e,t){return e.concat(t)}),[])).map((function(e){return parseInt(e.gasPrice,16)}),[])).sort((function(e,t){return e-t}));var n,i=Math.floor(t.length/2);n=t.length%2?t[i]:Math.floor((t[i-1]+t[i])/2),r(null,n)}))}))}},function(e,t,r){\"use strict\";var n=r(213),i=(r(214),r(2).inherits),o=r(15),a=r(216),s=r(29),f=r(220),c=r(13),u=r(221),h=/^[0-9A-Fa-f]+$/g;function l(e){this.nonceLock=f(1),e.getAccounts&&(this.getAccounts=e.getAccounts),e.processTransaction&&(this.processTransaction=e.processTransaction),e.processMessage&&(this.processMessage=e.processMessage),e.processPersonalMessage&&(this.processPersonalMessage=e.processPersonalMessage),e.processTypedMessage&&(this.processTypedMessage=e.processTypedMessage),this.approveTransaction=e.approveTransaction||this.autoApprove,this.approveMessage=e.approveMessage||this.autoApprove,this.approvePersonalMessage=e.approvePersonalMessage||this.autoApprove,this.approveTypedMessage=e.approveTypedMessage||this.autoApprove,e.signTransaction&&(this.signTransaction=e.signTransaction||p(\"signTransaction\")),e.signMessage&&(this.signMessage=e.signMessage||p(\"signMessage\")),e.signPersonalMessage&&(this.signPersonalMessage=e.signPersonalMessage||p(\"signPersonalMessage\")),e.signTypedMessage&&(this.signTypedMessage=e.signTypedMessage||p(\"signTypedMessage\")),e.signTypedMessageV3&&(this.signTypedMessageV3=e.signTypedMessageV3||p(\"signTypedMessageV3\")),e.recoverPersonalSignature&&(this.recoverPersonalSignature=e.recoverPersonalSignature),e.publishTransaction&&(this.publishTransaction=e.publishTransaction),this.estimateGas=e.estimateGas||this.estimateGas,this.getGasPrice=e.getGasPrice||this.getGasPrice}function d(e){var t=o.addHexPrefix(e);return o.isValidAddress(t)}function p(e){return function(t,r){r(new Error('ProviderEngine - HookedWalletSubprovider - Must provide \"'+e+'\" fn in constructor options'))}}e.exports=l,i(l,c),l.prototype.handleRequest=function(e,t,r){var i=this;i._parityRequests={},i._parityRequestCount=0;var a,f=void 0,c=void 0,u=void 0,l=void 0,p=void 0;switch(e.method){case\"eth_coinbase\":return void i.getAccounts((function(e,t){if(e)return r(e);var n=t[0]||null;r(null,n)}));case\"eth_accounts\":return void i.getAccounts((function(e,t){if(e)return r(e);r(null,t)}));case\"eth_sendTransaction\":return f=e.params[0],void n([function(e){return i.finalizeAndSubmitTx(f,e)}],r);case\"eth_signTransaction\":return f=e.params[0],void n([function(e){return i.processSignTransaction(f,e)}],r);case\"eth_sign\":return p=e.params[0],l=e.params[1],u=e.params[2]||{},c=s(u,{from:p,data:l}),void n([function(e){return i.processMessage(c,e)}],r);case\"personal_sign\":return function(){var t,a,f=e.params[0],b=e.params[1];if(t=b,a=o.addHexPrefix(t),!o.isValidAddress(a)&&function(e){return\"string\"==typeof e&&\"0x\"===e.slice(0,2)&&e.slice(2).match(h)}(t)&&d(f)){\"[message, address]. This was previously handled incorrectly, \",\"and has been corrected automatically. \",\"Please switch this param order for smooth behavior in the future.\",console.warn(\"The eth_personalSign method requires params ordered [message, address]. This was previously handled incorrectly, and has been corrected automatically. Please switch this param order for smooth behavior in the future.\"),p=e.params[0],l=e.params[1]}else l=e.params[0],p=e.params[1];u=e.params[2]||{},c=s(u,{from:p,data:l}),n([function(e){return i.processPersonalMessage(c,e)}],r)}();case\"personal_ecRecover\":return function(){l=e.params[0];var t=e.params[1];u=e.params[2]||{},c=s(u,{sig:t,data:l}),i.recoverPersonalSignature(c,r)}();case\"eth_signTypedData\":return!d(e.params[1])&&d(e.params[0])?(p=e.params[0],l=e.params[1]):(l=e.params[0],p=e.params[1]),u=e.params[2]||{},c=s(u,{from:p,data:l}),void n([function(e){return i.processTypedMessage(c,e)}],r);case\"eth_signTypedData_v3\":return!d(e.params[1])&&d(e.params[0])?(p=e.params[0],l=e.params[1]):(l=e.params[0],p=e.params[1]),u=e.params[2]||{},c=s(u,{from:p,data:l}),void n([function(e){return i.processTypedMessageV3(c,e)}],r);case\"parity_postTransaction\":return f=e.params[0],void i.parityPostTransaction(f,r);case\"parity_postSign\":return p=e.params[0],l=e.params[1],void i.parityPostSign(p,l,r);case\"parity_checkRequest\":return a=e.params[0],void i.parityCheckRequest(a,r);case\"parity_defaultAccount\":return void i.getAccounts((function(e,t){if(e)return r(e);var n=t[0]||null;r(null,n)}));default:return void t()}},l.prototype.getAccounts=function(e){e(null,[])},l.prototype.processSignTransaction=function(e,t){var r=this;n([function(t){return r.finalizeTx(e,t)}],t)},l.prototype.processMessage=function(e,t){var r=this;n([function(t){return r.approveMessage(e,t)},function(e,t){return r.checkApproval(\"message\",e,t)},function(t){return r.signMessage(e,t)}],t)},l.prototype.processPersonalMessage=function(e,t){var r=this;n([function(t){return r.approvePersonalMessage(e,t)},function(e,t){return r.checkApproval(\"message\",e,t)},function(t){return r.signPersonalMessage(e,t)}],t)},l.prototype.processTypedMessage=function(e,t){var r=this;n([function(t){return r.approveTypedMessage(e,t)},function(e,t){return r.checkApproval(\"message\",e,t)},function(t){return r.signTypedMessage(e,t)}],t)},l.prototype.processTypedMessageV3=function(e,t){var r=this;n([function(t){return r.signTypedMessageV3(e,t)}],t)},l.prototype.autoApprove=function(e,t){t(null,!0)},l.prototype.checkApproval=function(e,t,r){r(t?null:new Error(\"User denied \"+e+\" signature.\"))},l.prototype.parityPostTransaction=function(e,t){var r=this,n=\"0x\"+r._parityRequestCount.toString(16);r._parityRequestCount++,r.emitPayload({method:\"eth_sendTransaction\",params:[e]},(function(e,t){if(e)r._parityRequests[n]={error:e};else{var i=t.result;r._parityRequests[n]=i}})),t(null,n)},l.prototype.parityPostSign=function(e,t,r){var n=this,i=\"0x\"+n._parityRequestCount.toString(16);n._parityRequestCount++,n.emitPayload({method:\"eth_sign\",params:[e,t]},(function(e,t){if(e)n._parityRequests[i]={error:e};else{var r=t.result;n._parityRequests[i]=r}})),r(null,i)},l.prototype.parityCheckRequest=function(e,t){var r=this._parityRequests[e]||null;return r?r.error?t(r.error):void t(null,r):t(null,null)},l.prototype.recoverPersonalSignature=function(e,t){var r=void 0;try{r=a.recoverPersonalSignature(e)}catch(e){return t(e)}t(null,r)},l.prototype.finalizeAndSubmitTx=function(e,t){var r=this;r.nonceLock.take((function(){n([r.signTransaction.bind(r,e),r.publishTransaction.bind(r)],(function(e,n){if(r.nonceLock.leave(),e)return t(e,null);t(null,n)}))}))},l.prototype.finalizeTx=function(e,t){var r=this;r.nonceLock.take((function(){n([r.signTransaction.bind(r,e)],(function(e,n){if(r.nonceLock.leave(),e)return t(e);t(null,n)}))}))},l.prototype.publishTransaction=function(e,t){e.tx;var r=e.raw;this.emitPayload({method:\"eth_sendRawTransaction\",params:[r]},(function(e,r){if(e)return t(e);t(null,r.result)}))},l.prototype.estimateGas=function(e,t){u(this.engine,e,t)},l.prototype.getGasPrice=function(e){this.emitPayload({method:\"eth_gasPrice\",params:[]},(function(t,r){if(t)return e(t);e(null,r.result)}))}},function(e,t,r){\"use strict\";(function(t){var n=r(2).inherits,i=r(222),o=r(15),a=r(13),s=r(84).blockTagForPayload;function f(e){this.nonceCache={}}e.exports=f,n(f,a),f.prototype.handleRequest=function(e,r,n){var a=this;switch(e.method){case\"eth_getTransactionCount\":var f=s(e),c=e.params[0].toLowerCase(),u=a.nonceCache[c];return void(\"pending\"===f?u?n(null,u):r((function(e,t,r){if(e)return r();void 0===a.nonceCache[c]&&(a.nonceCache[c]=t),r()})):r());case\"eth_sendRawTransaction\":return void r((function(r,n,s){if(r)return s();var f=e.params[0],c=(o.stripHexPrefix(f),t.from(o.stripHexPrefix(f),\"hex\"),new i(t.from(o.stripHexPrefix(f),\"hex\"))),u=\"0x\"+c.getSenderAddress().toString(\"hex\").toLowerCase(),h=o.bufferToInt(c.nonce),l=(++h).toString(16);l.length%2&&(l=\"0\"+l),l=\"0x\"+l,a.nonceCache[u]=l,s()}));case\"evm_revert\":return a.nonceCache={},void r();default:return void r()}}}).call(this,r(7).Buffer)},function(e,t,r){\"use strict\";(function(t){var n=t.browser?r(224):r(247),i=r(2).inherits,o=r(19),a=r(13),s=r(248);function f(e){this.rpcUrl=e.rpcUrl}e.exports=f,i(f,a),f.prototype.handleRequest=function(e,t,r){var i=this.rpcUrl,a=o(e);n({uri:i,method:\"POST\",headers:{Accept:\"application/json\",\"Content-Type\":\"application/json\"},body:JSON.stringify(a),rejectUnauthorized:!1,timeout:2e4},(function(e,t,n){if(e)return r(new s.InternalError(e));switch(t.statusCode){case 405:return r(new s.MethodNotFound);case 504:return function(){var e=new Error(\"Gateway timeout. The request took too long to process. This can happen when querying logs over too wide a block range.\");return r(new s.InternalError(e))}();default:if(200!=t.statusCode)return r(new s.InternalError(t.body))}var i=void 0;try{i=JSON.parse(n)}catch(e){return console.error(e.stack),r(new s.InternalError(e))}if(i.error)return r(i.error);r(null,i.result)}))}}).call(this,r(9))},function(e,t,r){\"use strict\";var n=r(45),i=r(250),o=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t),function(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,(function(e){var t=e.blockTracker,r=e.provider,n=e.engine,o=i({blockTracker:t,provider:r}),a=o.events,s=o.middleware;return a.on(\"notification\",(function(e){return n.emit(\"data\",null,e)})),s})))}return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t}(n);e.exports=o},function(e,t,r){\"use strict\";(function(t){var n=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var r=[],n=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(n=(a=s.next()).done)&&(r.push(a.value),!t||r.length!==t);n=!0);}catch(e){i=!0,o=e}finally{try{!n&&s.return&&s.return()}finally{if(i)throw o}}return r}(e,t);throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")},i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}();var o=r(251),a=r(6),s=(r(2).inherits,t.WebSocket||r(256)),f=r(13),c=r(19),u=function(e){function t(e){var r=e.rpcUrl,n=e.debug,i=e.origin;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t);var s=function(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return a.call(s),Object.defineProperties(s,{_backoff:{value:o.exponential({randomisationFactor:.2,maxDelay:5e3})},_connectTime:{value:null,writable:!0},_log:{value:n?function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return console.info.apply(console,[\"[WSProvider]\"].concat(t))}:function(){}},_origin:{value:i},_pendingRequests:{value:new Map},_socket:{value:null,writable:!0},_unhandledRequests:{value:[]},_url:{value:r}}),s._handleSocketClose=s._handleSocketClose.bind(s),s._handleSocketMessage=s._handleSocketMessage.bind(s),s._handleSocketOpen=s._handleSocketOpen.bind(s),s._backoff.on(\"ready\",(function(){s._openSocket()})),s._openSocket(),s}return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),i(t,[{key:\"handleRequest\",value:function(e,t,r){if(!this._socket||this._socket.readyState!==s.OPEN)return this._unhandledRequests.push(Array.from(arguments)),void this._log(\"Socket not open. Request queued.\");this._pendingRequests.set(e.id,[e,r]);var n=c(e);delete n.origin,this._socket.send(JSON.stringify(n)),this._log(\"Sent: \"+n.method+\" #\"+n.id)}},{key:\"_handleSocketClose\",value:function(e){var t=e.reason,r=e.code;this._log(\"Socket closed, code \"+r+\" (\"+(t||\"no reason\")+\")\"),this._connectTime&&Date.now()-this._connectTime>5e3&&this._backoff.reset(),this._socket.removeEventListener(\"close\",this._handleSocketClose),this._socket.removeEventListener(\"message\",this._handleSocketMessage),this._socket.removeEventListener(\"open\",this._handleSocketOpen),this._socket=null,this._backoff.backoff()}},{key:\"_handleSocketMessage\",value:function(e){var t=void 0;try{t=JSON.parse(e.data)}catch(e){return void this._log(\"Received a message that is not valid JSON:\",t)}if(void 0===t.id)return this.engine.emit(\"data\",null,t);if(this._pendingRequests.has(t.id)){var r=this._pendingRequests.get(t.id),i=n(r,2),o=i[0],a=i[1];if(this._pendingRequests.delete(t.id),this._log(\"Received: \"+o.method+\" #\"+t.id),t.error)return a(new Error(t.error.message));a(null,t.result)}}},{key:\"_handleSocketOpen\",value:function(){var e=this;this._log(\"Socket open.\"),this._connectTime=Date.now(),this._pendingRequests.forEach((function(t){var r=n(t,2),i=r[0],o=r[1];e._unhandledRequests.push([i,null,o])})),this._pendingRequests.clear(),this._unhandledRequests.splice(0,this._unhandledRequests.length).forEach((function(t){e.handleRequest.apply(e,t)}))}},{key:\"_openSocket\",value:function(){this._log(\"Opening socket...\"),this._socket=new s(this._url,[],this._origin?{headers:{origin:this._origin}}:{}),this._socket.addEventListener(\"close\",this._handleSocketClose),this._socket.addEventListener(\"message\",this._handleSocketMessage),this._socket.addEventListener(\"open\",this._handleSocketOpen)}}]),t}(f);Object.assign(u.prototype,a.prototype),e.exports=u}).call(this,r(4))},function(e,t){e.exports=function(e){return e&&\"object\"==typeof e&&\"function\"==typeof e.copy&&\"function\"==typeof e.fill&&\"function\"==typeof e.readUInt8}},function(e,t){\"function\"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}},function(e,t,r){\"use strict\";var n=r(109),i=r(124);e.exports=function(e){var t=n(e),r=i(e);return function(e,n){switch(\"string\"==typeof e?e.toLowerCase():e){case\"keccak224\":return new t(1152,448,null,224,n);case\"keccak256\":return new t(1088,512,null,256,n);case\"keccak384\":return new t(832,768,null,384,n);case\"keccak512\":return new t(576,1024,null,512,n);case\"sha3-224\":return new t(1152,448,6,224,n);case\"sha3-256\":return new t(1088,512,6,256,n);case\"sha3-384\":return new t(832,768,6,384,n);case\"sha3-512\":return new t(576,1024,6,512,n);case\"shake128\":return new r(1344,256,31,n);case\"shake256\":return new r(1088,512,31,n);default:throw new Error(\"Invald algorithm: \"+e)}}}},function(e,t,r){\"use strict\";var n=r(1).Buffer,i=r(24).Transform,o=r(0);e.exports=function(e){function t(t,r,n,o,a){i.call(this,a),this._rate=t,this._capacity=r,this._delimitedSuffix=n,this._hashBitLength=o,this._options=a,this._state=new e,this._state.initialize(t,r),this._finalized=!1}return o(t,i),t.prototype._transform=function(e,t,r){var n=null;try{this.update(e,t)}catch(e){n=e}r(n)},t.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(e){t=e}e(t)},t.prototype.update=function(e,t){if(!n.isBuffer(e)&&\"string\"!=typeof e)throw new TypeError(\"Data must be a string or a buffer\");if(this._finalized)throw new Error(\"Digest already called\");return n.isBuffer(e)||(e=n.from(e,t)),this._state.absorb(e),this},t.prototype.digest=function(e){if(this._finalized)throw new Error(\"Digest already called\");this._finalized=!0,this._delimitedSuffix&&this._state.absorbLastFewBits(this._delimitedSuffix);var t=this._state.squeeze(this._hashBitLength/8);return void 0!==e&&(t=t.toString(e)),this._resetState(),t},t.prototype._resetState=function(){return this._state.initialize(this._rate,this._capacity),this},t.prototype._clone=function(){var e=new t(this._rate,this._capacity,this._delimitedSuffix,this._hashBitLength,this._options);return this._state.copy(e._state),e._finalized=this._finalized,e},t}},function(e,t,r){\"use strict\";t.byteLength=function(e){var t=c(e),r=t[0],n=t[1];return 3*(r+n)/4-n},t.toByteArray=function(e){var t,r,n=c(e),a=n[0],s=n[1],f=new o(function(e,t,r){return 3*(t+r)/4-r}(0,a,s)),u=0,h=s>0?a-4:a;for(r=0;r<h;r+=4)t=i[e.charCodeAt(r)]<<18|i[e.charCodeAt(r+1)]<<12|i[e.charCodeAt(r+2)]<<6|i[e.charCodeAt(r+3)],f[u++]=t>>16&255,f[u++]=t>>8&255,f[u++]=255&t;2===s&&(t=i[e.charCodeAt(r)]<<2|i[e.charCodeAt(r+1)]>>4,f[u++]=255&t);1===s&&(t=i[e.charCodeAt(r)]<<10|i[e.charCodeAt(r+1)]<<4|i[e.charCodeAt(r+2)]>>2,f[u++]=t>>8&255,f[u++]=255&t);return f},t.fromByteArray=function(e){for(var t,r=e.length,i=r%3,o=[],a=0,s=r-i;a<s;a+=16383)o.push(u(e,a,a+16383>s?s:a+16383));1===i?(t=e[r-1],o.push(n[t>>2]+n[t<<4&63]+\"==\")):2===i&&(t=(e[r-2]<<8)+e[r-1],o.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+\"=\"));return o.join(\"\")};for(var n=[],i=[],o=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,a=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",s=0,f=a.length;s<f;++s)n[s]=a[s],i[a.charCodeAt(s)]=s;function c(e){var t=e.length;if(t%4>0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=e.indexOf(\"=\");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function u(e,t,r){for(var i,o,a=[],s=t;s<r;s+=3)i=(e[s]<<16&16711680)+(e[s+1]<<8&65280)+(255&e[s+2]),a.push(n[(o=i)>>18&63]+n[o>>12&63]+n[o>>6&63]+n[63&o]);return a.join(\"\")}i[\"-\".charCodeAt(0)]=62,i[\"_\".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,r,n,i){var o,a,s=8*i-n-1,f=(1<<s)-1,c=f>>1,u=-7,h=r?i-1:0,l=r?-1:1,d=e[t+h];for(h+=l,o=d&(1<<-u)-1,d>>=-u,u+=s;u>0;o=256*o+e[t+h],h+=l,u-=8);for(a=o&(1<<-u)-1,o>>=-u,u+=n;u>0;a=256*a+e[t+h],h+=l,u-=8);if(0===o)o=1-c;else{if(o===f)return a?NaN:1/0*(d?-1:1);a+=Math.pow(2,n),o-=c}return(d?-1:1)*a*Math.pow(2,o-n)},t.write=function(e,t,r,n,i,o){var a,s,f,c=8*o-i-1,u=(1<<c)-1,h=u>>1,l=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:o-1,p=n?1:-1,b=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=u):(a=Math.floor(Math.log(t)/Math.LN2),t*(f=Math.pow(2,-a))<1&&(a--,f*=2),(t+=a+h>=1?l/f:l*Math.pow(2,1-h))*f>=2&&(a++,f/=2),a+h>=u?(s=0,a=u):a+h>=1?(s=(t*f-1)*Math.pow(2,i),a+=h):(s=t*Math.pow(2,h-1)*Math.pow(2,i),a=0));i>=8;e[r+d]=255&s,d+=p,s/=256,i-=8);for(a=a<<i|s,c+=i;c>0;e[r+d]=255&a,d+=p,a/=256,c-=8);e[r+d-p]|=128*b}},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return\"[object Array]\"==r.call(e)}},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return\"[object Array]\"==r.call(e)}},function(e,t){},function(e,t,r){\"use strict\";var n=r(33).Buffer,i=r(116);e.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return\"\";for(var t=this.head,r=\"\"+t.data;t=t.next;)r+=e+t.data;return r},e.prototype.concat=function(e){if(0===this.length)return n.alloc(0);if(1===this.length)return this.head.data;for(var t,r,i,o=n.allocUnsafe(e>>>0),a=this.head,s=0;a;)t=a.data,r=o,i=s,t.copy(r,i),s+=a.data.length,a=a.next;return o},e}(),i&&i.inspect&&i.inspect.custom&&(e.exports.prototype[i.inspect.custom]=function(){var e=i.inspect({length:this.length});return this.constructor.name+\" \"+e})},function(e,t){},function(e,t,r){(function(e,t){!function(e,r){\"use strict\";if(!e.setImmediate){var n,i,o,a,s,f=1,c={},u=!1,h=e.document,l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,\"[object process]\"==={}.toString.call(e.process)?n=function(e){t.nextTick((function(){p(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,r=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage(\"\",\"*\"),e.onmessage=r,t}}()?e.MessageChannel?((o=new MessageChannel).port1.onmessage=function(e){p(e.data)},n=function(e){o.port2.postMessage(e)}):h&&\"onreadystatechange\"in h.createElement(\"script\")?(i=h.documentElement,n=function(e){var t=h.createElement(\"script\");t.onreadystatechange=function(){p(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):n=function(e){setTimeout(p,0,e)}:(a=\"setImmediate$\"+Math.random()+\"$\",s=function(t){t.source===e&&\"string\"==typeof t.data&&0===t.data.indexOf(a)&&p(+t.data.slice(a.length))},e.addEventListener?e.addEventListener(\"message\",s,!1):e.attachEvent(\"onmessage\",s),n=function(t){e.postMessage(a+t,\"*\")}),l.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r<t.length;r++)t[r]=arguments[r+1];var i={callback:e,args:t};return c[f]=i,n(f),f++},l.clearImmediate=d}function d(e){delete c[e]}function p(e){if(u)setTimeout(p,0,e);else{var t=c[e];if(t){u=!0;try{!function(e){var t=e.callback,n=e.args;switch(n.length){case 0:t();break;case 1:t(n[0]);break;case 2:t(n[0],n[1]);break;case 3:t(n[0],n[1],n[2]);break;default:t.apply(r,n)}}(t)}finally{d(e),u=!1}}}}}(\"undefined\"==typeof self?void 0===e?this:e:self)}).call(this,r(4),r(9))},function(e,t,r){(function(t){function r(e){try{if(!t.localStorage)return!1}catch(e){return!1}var r=t.localStorage[e];return null!=r&&\"true\"===String(r).toLowerCase()}e.exports=function(e,t){if(r(\"noDeprecation\"))return e;var n=!1;return function(){if(!n){if(r(\"throwDeprecation\"))throw new Error(t);r(\"traceDeprecation\")?console.trace(t):console.warn(t),n=!0}return e.apply(this,arguments)}}}).call(this,r(4))},function(e,t,r){\"use strict\";e.exports=o;var n=r(56),i=r(16);function o(e){if(!(this instanceof o))return new o(e);n.call(this,e)}i.inherits=r(0),i.inherits(o,n),o.prototype._transform=function(e,t,r){r(null,e)}},function(e,t,r){e.exports=r(34)},function(e,t,r){e.exports=r(10)},function(e,t,r){e.exports=r(32).Transform},function(e,t,r){e.exports=r(32).PassThrough},function(e,t,r){\"use strict\";var n=r(1).Buffer,i=r(24).Transform,o=r(0);e.exports=function(e){function t(t,r,n,o){i.call(this,o),this._rate=t,this._capacity=r,this._delimitedSuffix=n,this._options=o,this._state=new e,this._state.initialize(t,r),this._finalized=!1}return o(t,i),t.prototype._transform=function(e,t,r){var n=null;try{this.update(e,t)}catch(e){n=e}r(n)},t.prototype._flush=function(){},t.prototype._read=function(e){this.push(this.squeeze(e))},t.prototype.update=function(e,t){if(!n.isBuffer(e)&&\"string\"!=typeof e)throw new TypeError(\"Data must be a string or a buffer\");if(this._finalized)throw new Error(\"Squeeze already called\");return n.isBuffer(e)||(e=n.from(e,t)),this._state.absorb(e),this},t.prototype.squeeze=function(e,t){this._finalized||(this._finalized=!0,this._state.absorbLastFewBits(this._delimitedSuffix));var r=this._state.squeeze(e);return void 0!==t&&(r=r.toString(t)),r},t.prototype._resetState=function(){return this._state.initialize(this._rate,this._capacity),this},t.prototype._clone=function(){var e=new t(this._rate,this._capacity,this._delimitedSuffix,this._options);return this._state.copy(e._state),e._finalized=this._finalized,e},t}},function(e,t,r){\"use strict\";var n=r(1).Buffer,i=r(126);function o(){this.state=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.blockSize=null,this.count=0,this.squeezing=!1}o.prototype.initialize=function(e,t){for(var r=0;r<50;++r)this.state[r]=0;this.blockSize=e/8,this.count=0,this.squeezing=!1},o.prototype.absorb=function(e){for(var t=0;t<e.length;++t)this.state[~~(this.count/4)]^=e[t]<<this.count%4*8,this.count+=1,this.count===this.blockSize&&(i.p1600(this.state),this.count=0)},o.prototype.absorbLastFewBits=function(e){this.state[~~(this.count/4)]^=e<<this.count%4*8,0!=(128&e)&&this.count===this.blockSize-1&&i.p1600(this.state),this.state[~~((this.blockSize-1)/4)]^=128<<(this.blockSize-1)%4*8,i.p1600(this.state),this.count=0,this.squeezing=!0},o.prototype.squeeze=function(e){this.squeezing||this.absorbLastFewBits(1);for(var t=n.alloc(e),r=0;r<e;++r)t[r]=this.state[~~(this.count/4)]>>>this.count%4*8&255,this.count+=1,this.count===this.blockSize&&(i.p1600(this.state),this.count=0);return t},o.prototype.copy=function(e){for(var t=0;t<50;++t)e.state[t]=this.state[t];e.blockSize=this.blockSize,e.count=this.count,e.squeezing=this.squeezing},e.exports=o},function(e,t,r){\"use strict\";var n=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648];t.p1600=function(e){for(var t=0;t<24;++t){var r=e[0]^e[10]^e[20]^e[30]^e[40],i=e[1]^e[11]^e[21]^e[31]^e[41],o=e[2]^e[12]^e[22]^e[32]^e[42],a=e[3]^e[13]^e[23]^e[33]^e[43],s=e[4]^e[14]^e[24]^e[34]^e[44],f=e[5]^e[15]^e[25]^e[35]^e[45],c=e[6]^e[16]^e[26]^e[36]^e[46],u=e[7]^e[17]^e[27]^e[37]^e[47],h=e[8]^e[18]^e[28]^e[38]^e[48],l=e[9]^e[19]^e[29]^e[39]^e[49],d=h^(o<<1|a>>>31),p=l^(a<<1|o>>>31),b=e[0]^d,y=e[1]^p,g=e[10]^d,v=e[11]^p,m=e[20]^d,_=e[21]^p,w=e[30]^d,E=e[31]^p,A=e[40]^d,S=e[41]^p;d=r^(s<<1|f>>>31),p=i^(f<<1|s>>>31);var k=e[2]^d,x=e[3]^p,I=e[12]^d,M=e[13]^p,T=e[22]^d,P=e[23]^p,B=e[32]^d,L=e[33]^p,R=e[42]^d,O=e[43]^p;d=o^(c<<1|u>>>31),p=a^(u<<1|c>>>31);var C=e[4]^d,N=e[5]^p,j=e[14]^d,D=e[15]^p,q=e[24]^d,U=e[25]^p,F=e[34]^d,z=e[35]^p,K=e[44]^d,H=e[45]^p;d=s^(h<<1|l>>>31),p=f^(l<<1|h>>>31);var V=e[6]^d,Y=e[7]^p,G=e[16]^d,$=e[17]^p,W=e[26]^d,Z=e[27]^p,J=e[36]^d,X=e[37]^p,Q=e[46]^d,ee=e[47]^p;d=c^(r<<1|i>>>31),p=u^(i<<1|r>>>31);var te=e[8]^d,re=e[9]^p,ne=e[18]^d,ie=e[19]^p,oe=e[28]^d,ae=e[29]^p,se=e[38]^d,fe=e[39]^p,ce=e[48]^d,ue=e[49]^p,he=b,le=y,de=v<<4|g>>>28,pe=g<<4|v>>>28,be=m<<3|_>>>29,ye=_<<3|m>>>29,ge=E<<9|w>>>23,ve=w<<9|E>>>23,me=A<<18|S>>>14,_e=S<<18|A>>>14,we=k<<1|x>>>31,Ee=x<<1|k>>>31,Ae=M<<12|I>>>20,Se=I<<12|M>>>20,ke=T<<10|P>>>22,xe=P<<10|T>>>22,Ie=L<<13|B>>>19,Me=B<<13|L>>>19,Te=R<<2|O>>>30,Pe=O<<2|R>>>30,Be=N<<30|C>>>2,Le=C<<30|N>>>2,Re=j<<6|D>>>26,Oe=D<<6|j>>>26,Ce=U<<11|q>>>21,Ne=q<<11|U>>>21,je=F<<15|z>>>17,De=z<<15|F>>>17,qe=H<<29|K>>>3,Ue=K<<29|H>>>3,Fe=V<<28|Y>>>4,ze=Y<<28|V>>>4,Ke=$<<23|G>>>9,He=G<<23|$>>>9,Ve=W<<25|Z>>>7,Ye=Z<<25|W>>>7,Ge=J<<21|X>>>11,$e=X<<21|J>>>11,We=ee<<24|Q>>>8,Ze=Q<<24|ee>>>8,Je=te<<27|re>>>5,Xe=re<<27|te>>>5,Qe=ne<<20|ie>>>12,et=ie<<20|ne>>>12,tt=ae<<7|oe>>>25,rt=oe<<7|ae>>>25,nt=se<<8|fe>>>24,it=fe<<8|se>>>24,ot=ce<<14|ue>>>18,at=ue<<14|ce>>>18;e[0]=he^~Ae&Ce,e[1]=le^~Se&Ne,e[10]=Fe^~Qe&be,e[11]=ze^~et&ye,e[20]=we^~Re&Ve,e[21]=Ee^~Oe&Ye,e[30]=Je^~de&ke,e[31]=Xe^~pe&xe,e[40]=Be^~Ke&tt,e[41]=Le^~He&rt,e[2]=Ae^~Ce&Ge,e[3]=Se^~Ne&$e,e[12]=Qe^~be&Ie,e[13]=et^~ye&Me,e[22]=Re^~Ve&nt,e[23]=Oe^~Ye&it,e[32]=de^~ke&je,e[33]=pe^~xe&De,e[42]=Ke^~tt&ge,e[43]=He^~rt&ve,e[4]=Ce^~Ge&ot,e[5]=Ne^~$e&at,e[14]=be^~Ie&qe,e[15]=ye^~Me&Ue,e[24]=Ve^~nt&me,e[25]=Ye^~it&_e,e[34]=ke^~je&We,e[35]=xe^~De&Ze,e[44]=tt^~ge&Te,e[45]=rt^~ve&Pe,e[6]=Ge^~ot&he,e[7]=$e^~at&le,e[16]=Ie^~qe&Fe,e[17]=Me^~Ue&ze,e[26]=nt^~me&we,e[27]=it^~_e&Ee,e[36]=je^~We&Je,e[37]=De^~Ze&Xe,e[46]=ge^~Te&Be,e[47]=ve^~Pe&Le,e[8]=ot^~he&Ae,e[9]=at^~le&Se,e[18]=qe^~Fe&Qe,e[19]=Ue^~ze&et,e[28]=me^~we&Re,e[29]=_e^~Ee&Oe,e[38]=We^~Je&de,e[39]=Ze^~Xe&pe,e[48]=Te^~Be&Ke,e[49]=Pe^~Le&He,e[0]^=n[2*t],e[1]^=n[2*t+1]}}},function(e,t,r){\"use strict\";var n=r(128),i=r(129),o=r(58);function a(e,t){return void 0===e?t:(n.isBoolean(e,o.COMPRESSED_TYPE_INVALID),e)}e.exports=function(e){return{privateKeyVerify:function(t){return n.isBuffer(t,o.EC_PRIVATE_KEY_TYPE_INVALID),32===t.length&&e.privateKeyVerify(t)},privateKeyExport:function(t,r){n.isBuffer(t,o.EC_PRIVATE_KEY_TYPE_INVALID),n.isBufferLength(t,32,o.EC_PRIVATE_KEY_LENGTH_INVALID),r=a(r,!0);var s=e.privateKeyExport(t,r);return i.privateKeyExport(t,s,r)},privateKeyImport:function(t){if(n.isBuffer(t,o.EC_PRIVATE_KEY_TYPE_INVALID),(t=i.privateKeyImport(t))&&32===t.length&&e.privateKeyVerify(t))return t;throw new Error(o.EC_PRIVATE_KEY_IMPORT_DER_FAIL)},privateKeyNegate:function(t){return n.isBuffer(t,o.EC_PRIVATE_KEY_TYPE_INVALID),n.isBufferLength(t,32,o.EC_PRIVATE_KEY_LENGTH_INVALID),e.privateKeyNegate(t)},privateKeyModInverse:function(t){return n.isBuffer(t,o.EC_PRIVATE_KEY_TYPE_INVALID),n.isBufferLength(t,32,o.EC_PRIVATE_KEY_LENGTH_INVALID),e.privateKeyModInverse(t)},privateKeyTweakAdd:function(t,r){return n.isBuffer(t,o.EC_PRIVATE_KEY_TYPE_INVALID),n.isBufferLength(t,32,o.EC_PRIVATE_KEY_LENGTH_INVALID),n.isBuffer(r,o.TWEAK_TYPE_INVALID),n.isBufferLength(r,32,o.TWEAK_LENGTH_INVALID),e.privateKeyTweakAdd(t,r)},privateKeyTweakMul:function(t,r){return n.isBuffer(t,o.EC_PRIVATE_KEY_TYPE_INVALID),n.isBufferLength(t,32,o.EC_PRIVATE_KEY_LENGTH_INVALID),n.isBuffer(r,o.TWEAK_TYPE_INVALID),n.isBufferLength(r,32,o.TWEAK_LENGTH_INVALID),e.privateKeyTweakMul(t,r)},publicKeyCreate:function(t,r){return n.isBuffer(t,o.EC_PRIVATE_KEY_TYPE_INVALID),n.isBufferLength(t,32,o.EC_PRIVATE_KEY_LENGTH_INVALID),r=a(r,!0),e.publicKeyCreate(t,r)},publicKeyConvert:function(t,r){return n.isBuffer(t,o.EC_PUBLIC_KEY_TYPE_INVALID),n.isBufferLength2(t,33,65,o.EC_PUBLIC_KEY_LENGTH_INVALID),r=a(r,!0),e.publicKeyConvert(t,r)},publicKeyVerify:function(t){return n.isBuffer(t,o.EC_PUBLIC_KEY_TYPE_INVALID),e.publicKeyVerify(t)},publicKeyTweakAdd:function(t,r,i){return n.isBuffer(t,o.EC_PUBLIC_KEY_TYPE_INVALID),n.isBufferLength2(t,33,65,o.EC_PUBLIC_KEY_LENGTH_INVALID),n.isBuffer(r,o.TWEAK_TYPE_INVALID),n.isBufferLength(r,32,o.TWEAK_LENGTH_INVALID),i=a(i,!0),e.publicKeyTweakAdd(t,r,i)},publicKeyTweakMul:function(t,r,i){return n.isBuffer(t,o.EC_PUBLIC_KEY_TYPE_INVALID),n.isBufferLength2(t,33,65,o.EC_PUBLIC_KEY_LENGTH_INVALID),n.isBuffer(r,o.TWEAK_TYPE_INVALID),n.isBufferLength(r,32,o.TWEAK_LENGTH_INVALID),i=a(i,!0),e.publicKeyTweakMul(t,r,i)},publicKeyCombine:function(t,r){n.isArray(t,o.EC_PUBLIC_KEYS_TYPE_INVALID),n.isLengthGTZero(t,o.EC_PUBLIC_KEYS_LENGTH_INVALID);for(var i=0;i<t.length;++i)n.isBuffer(t[i],o.EC_PUBLIC_KEY_TYPE_INVALID),n.isBufferLength2(t[i],33,65,o.EC_PUBLIC_KEY_LENGTH_INVALID);return r=a(r,!0),e.publicKeyCombine(t,r)},signatureNormalize:function(t){return n.isBuffer(t,o.ECDSA_SIGNATURE_TYPE_INVALID),n.isBufferLength(t,64,o.ECDSA_SIGNATURE_LENGTH_INVALID),e.signatureNormalize(t)},signatureExport:function(t){n.isBuffer(t,o.ECDSA_SIGNATURE_TYPE_INVALID),n.isBufferLength(t,64,o.ECDSA_SIGNATURE_LENGTH_INVALID);var r=e.signatureExport(t);return i.signatureExport(r)},signatureImport:function(t){n.isBuffer(t,o.ECDSA_SIGNATURE_TYPE_INVALID),n.isLengthGTZero(t,o.ECDSA_SIGNATURE_LENGTH_INVALID);var r=i.signatureImport(t);if(r)return e.signatureImport(r);throw new Error(o.ECDSA_SIGNATURE_PARSE_DER_FAIL)},signatureImportLax:function(t){n.isBuffer(t,o.ECDSA_SIGNATURE_TYPE_INVALID),n.isLengthGTZero(t,o.ECDSA_SIGNATURE_LENGTH_INVALID);var r=i.signatureImportLax(t);if(r)return e.signatureImport(r);throw new Error(o.ECDSA_SIGNATURE_PARSE_DER_FAIL)},sign:function(t,r,i){n.isBuffer(t,o.MSG32_TYPE_INVALID),n.isBufferLength(t,32,o.MSG32_LENGTH_INVALID),n.isBuffer(r,o.EC_PRIVATE_KEY_TYPE_INVALID),n.isBufferLength(r,32,o.EC_PRIVATE_KEY_LENGTH_INVALID);var a=null,s=null;return void 0!==i&&(n.isObject(i,o.OPTIONS_TYPE_INVALID),void 0!==i.data&&(n.isBuffer(i.data,o.OPTIONS_DATA_TYPE_INVALID),n.isBufferLength(i.data,32,o.OPTIONS_DATA_LENGTH_INVALID),a=i.data),void 0!==i.noncefn&&(n.isFunction(i.noncefn,o.OPTIONS_NONCEFN_TYPE_INVALID),s=i.noncefn)),e.sign(t,r,s,a)},verify:function(t,r,i){return n.isBuffer(t,o.MSG32_TYPE_INVALID),n.isBufferLength(t,32,o.MSG32_LENGTH_INVALID),n.isBuffer(r,o.ECDSA_SIGNATURE_TYPE_INVALID),n.isBufferLength(r,64,o.ECDSA_SIGNATURE_LENGTH_INVALID),n.isBuffer(i,o.EC_PUBLIC_KEY_TYPE_INVALID),n.isBufferLength2(i,33,65,o.EC_PUBLIC_KEY_LENGTH_INVALID),e.verify(t,r,i)},recover:function(t,r,i,s){return n.isBuffer(t,o.MSG32_TYPE_INVALID),n.isBufferLength(t,32,o.MSG32_LENGTH_INVALID),n.isBuffer(r,o.ECDSA_SIGNATURE_TYPE_INVALID),n.isBufferLength(r,64,o.ECDSA_SIGNATURE_LENGTH_INVALID),n.isNumber(i,o.RECOVERY_ID_TYPE_INVALID),n.isNumberInInterval(i,-1,4,o.RECOVERY_ID_VALUE_INVALID),s=a(s,!0),e.recover(t,r,i,s)},ecdh:function(t,r){return n.isBuffer(t,o.EC_PUBLIC_KEY_TYPE_INVALID),n.isBufferLength2(t,33,65,o.EC_PUBLIC_KEY_LENGTH_INVALID),n.isBuffer(r,o.EC_PRIVATE_KEY_TYPE_INVALID),n.isBufferLength(r,32,o.EC_PRIVATE_KEY_LENGTH_INVALID),e.ecdh(t,r)},ecdhUnsafe:function(t,r,i){return n.isBuffer(t,o.EC_PUBLIC_KEY_TYPE_INVALID),n.isBufferLength2(t,33,65,o.EC_PUBLIC_KEY_LENGTH_INVALID),n.isBuffer(r,o.EC_PRIVATE_KEY_TYPE_INVALID),n.isBufferLength(r,32,o.EC_PRIVATE_KEY_LENGTH_INVALID),i=a(i,!0),e.ecdhUnsafe(t,r,i)}}}},function(e,t,r){\"use strict\";(function(e){var r=Object.prototype.toString;t.isArray=function(e,t){if(!Array.isArray(e))throw TypeError(t)},t.isBoolean=function(e,t){if(\"[object Boolean]\"!==r.call(e))throw TypeError(t)},t.isBuffer=function(t,r){if(!e.isBuffer(t))throw TypeError(r)},t.isFunction=function(e,t){if(\"[object Function]\"!==r.call(e))throw TypeError(t)},t.isNumber=function(e,t){if(\"[object Number]\"!==r.call(e))throw TypeError(t)},t.isObject=function(e,t){if(\"[object Object]\"!==r.call(e))throw TypeError(t)},t.isBufferLength=function(e,t,r){if(e.length!==t)throw RangeError(r)},t.isBufferLength2=function(e,t,r,n){if(e.length!==t&&e.length!==r)throw RangeError(n)},t.isLengthGTZero=function(e,t){if(0===e.length)throw RangeError(t)},t.isNumberInInterval=function(e,t,r,n){if(e<=t||e>=r)throw RangeError(n)}}).call(this,r(7).Buffer)},function(e,t,r){\"use strict\";var n=r(1).Buffer,i=r(130),o=n.from([48,129,211,2,1,1,4,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,129,133,48,129,130,2,1,1,48,44,6,7,42,134,72,206,61,1,1,2,33,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,255,255,252,47,48,6,4,1,0,4,1,7,4,33,2,121,190,102,126,249,220,187,172,85,160,98,149,206,135,11,7,2,155,252,219,45,206,40,217,89,242,129,91,22,248,23,152,2,33,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,186,174,220,230,175,72,160,59,191,210,94,140,208,54,65,65,2,1,1,161,36,3,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),a=n.from([48,130,1,19,2,1,1,4,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,129,165,48,129,162,2,1,1,48,44,6,7,42,134,72,206,61,1,1,2,33,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,255,255,252,47,48,6,4,1,0,4,1,7,4,65,4,121,190,102,126,249,220,187,172,85,160,98,149,206,135,11,7,2,155,252,219,45,206,40,217,89,242,129,91,22,248,23,152,72,58,218,119,38,163,196,101,93,164,251,252,14,17,8,168,253,23,180,72,166,133,84,25,156,71,208,143,251,16,212,184,2,33,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,186,174,220,230,175,72,160,59,191,210,94,140,208,54,65,65,2,1,1,161,68,3,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);t.privateKeyExport=function(e,t,r){var i=n.from(r?o:a);return e.copy(i,r?8:9),t.copy(i,r?181:214),i},t.privateKeyImport=function(e){var t=e.length,r=0;if(!(t<r+1||48!==e[r])&&!(t<(r+=1)+1)&&128&e[r]){var n=127&e[r];if(r+=1,!(n<1||n>2||t<r+n)){var i=e[r+n-1]|(n>1?e[r+n-2]<<8:0);if(!(t<(r+=n)+i||t<r+3||2!==e[r]||1!==e[r+1]||1!==e[r+2]||t<(r+=3)+2||4!==e[r]||e[r+1]>32||t<r+2+e[r+1]))return e.slice(r+2,r+2+e[r+1])}}},t.signatureExport=function(e){for(var t=n.concat([n.from([0]),e.r]),r=33,o=0;r>1&&0===t[o]&&!(128&t[o+1]);--r,++o);for(var a=n.concat([n.from([0]),e.s]),s=33,f=0;s>1&&0===a[f]&&!(128&a[f+1]);--s,++f);return i.encode(t.slice(o),a.slice(f))},t.signatureImport=function(e){var t=n.alloc(32,0),r=n.alloc(32,0);try{var o=i.decode(e);if(33===o.r.length&&0===o.r[0]&&(o.r=o.r.slice(1)),o.r.length>32)throw new Error(\"R length is too long\");if(33===o.s.length&&0===o.s[0]&&(o.s=o.s.slice(1)),o.s.length>32)throw new Error(\"S length is too long\")}catch(e){return}return o.r.copy(t,32-o.r.length),o.s.copy(r,32-o.s.length),{r:t,s:r}},t.signatureImportLax=function(e){var t=n.alloc(32,0),r=n.alloc(32,0),i=e.length,o=0;if(48===e[o++]){var a=e[o++];if(!(128&a&&(o+=a-128)>i)&&2===e[o++]){var s=e[o++];if(128&s){if(o+(a=s-128)>i)return;for(;a>0&&0===e[o];o+=1,a-=1);for(s=0;a>0;o+=1,a-=1)s=(s<<8)+e[o]}if(!(s>i-o)){var f=o;if(o+=s,2===e[o++]){var c=e[o++];if(128&c){if(o+(a=c-128)>i)return;for(;a>0&&0===e[o];o+=1,a-=1);for(c=0;a>0;o+=1,a-=1)c=(c<<8)+e[o]}if(!(c>i-o)){var u=o;for(o+=c;s>0&&0===e[f];s-=1,f+=1);if(!(s>32)){var h=e.slice(f,f+s);for(h.copy(t,32-h.length);c>0&&0===e[u];c-=1,u+=1);if(!(c>32)){var l=e.slice(u,u+c);return l.copy(r,32-l.length),{r:t,s:r}}}}}}}}}},function(e,t,r){var n=r(1).Buffer;e.exports={check:function(e){if(e.length<8)return!1;if(e.length>72)return!1;if(48!==e[0])return!1;if(e[1]!==e.length-2)return!1;if(2!==e[2])return!1;var t=e[3];if(0===t)return!1;if(5+t>=e.length)return!1;if(2!==e[4+t])return!1;var r=e[5+t];return 0!==r&&(6+t+r===e.length&&(!(128&e[4])&&(!(t>1&&0===e[4]&&!(128&e[5]))&&(!(128&e[t+6])&&!(r>1&&0===e[t+6]&&!(128&e[t+7]))))))},decode:function(e){if(e.length<8)throw new Error(\"DER sequence length is too short\");if(e.length>72)throw new Error(\"DER sequence length is too long\");if(48!==e[0])throw new Error(\"Expected DER sequence\");if(e[1]!==e.length-2)throw new Error(\"DER sequence length is invalid\");if(2!==e[2])throw new Error(\"Expected DER integer\");var t=e[3];if(0===t)throw new Error(\"R length is zero\");if(5+t>=e.length)throw new Error(\"R length is too long\");if(2!==e[4+t])throw new Error(\"Expected DER integer (2)\");var r=e[5+t];if(0===r)throw new Error(\"S length is zero\");if(6+t+r!==e.length)throw new Error(\"S length is invalid\");if(128&e[4])throw new Error(\"R value is negative\");if(t>1&&0===e[4]&&!(128&e[5]))throw new Error(\"R value excessively padded\");if(128&e[t+6])throw new Error(\"S value is negative\");if(r>1&&0===e[t+6]&&!(128&e[t+7]))throw new Error(\"S value excessively padded\");return{r:e.slice(4,4+t),s:e.slice(6+t)}},encode:function(e,t){var r=e.length,i=t.length;if(0===r)throw new Error(\"R length is zero\");if(0===i)throw new Error(\"S length is zero\");if(r>33)throw new Error(\"R length is too long\");if(i>33)throw new Error(\"S length is too long\");if(128&e[0])throw new Error(\"R value is negative\");if(128&t[0])throw new Error(\"S value is negative\");if(r>1&&0===e[0]&&!(128&e[1]))throw new Error(\"R value excessively padded\");if(i>1&&0===t[0]&&!(128&t[1]))throw new Error(\"S value excessively padded\");var o=n.allocUnsafe(6+r+i);return o[0]=48,o[1]=o.length-2,o[2]=2,o[3]=e.length,e.copy(o,4),o[4+r]=2,o[5+r]=t.length,t.copy(o,6+r),o}}},function(e,t,r){\"use strict\";var n=r(1).Buffer,i=r(36),o=r(3),a=r(141).ec,s=r(58),f=new a(\"secp256k1\"),c=f.curve;function u(e){var t=e[0];switch(t){case 2:case 3:return 33!==e.length?null:function(e,t){var r=new o(t);if(r.cmp(c.p)>=0)return null;var n=(r=r.toRed(c.red)).redSqr().redIMul(r).redIAdd(c.b).redSqrt();return 3===e!==n.isOdd()&&(n=n.redNeg()),f.keyPair({pub:{x:r,y:n}})}(t,e.slice(1,33));case 4:case 6:case 7:return 65!==e.length?null:function(e,t,r){var n=new o(t),i=new o(r);if(n.cmp(c.p)>=0||i.cmp(c.p)>=0)return null;if(n=n.toRed(c.red),i=i.toRed(c.red),(6===e||7===e)&&i.isOdd()!==(7===e))return null;var a=n.redSqr().redIMul(n);return i.redSqr().redISub(a.redIAdd(c.b)).isZero()?f.keyPair({pub:{x:n,y:i}}):null}(t,e.slice(1,33),e.slice(33,65));default:return null}}t.privateKeyVerify=function(e){var t=new o(e);return t.cmp(c.n)<0&&!t.isZero()},t.privateKeyExport=function(e,t){var r=new o(e);if(r.cmp(c.n)>=0||r.isZero())throw new Error(s.EC_PRIVATE_KEY_EXPORT_DER_FAIL);return n.from(f.keyFromPrivate(e).getPublic(t,!0))},t.privateKeyNegate=function(e){var t=new o(e);return t.isZero()?n.alloc(32):c.n.sub(t).umod(c.n).toArrayLike(n,\"be\",32)},t.privateKeyModInverse=function(e){var t=new o(e);if(t.cmp(c.n)>=0||t.isZero())throw new Error(s.EC_PRIVATE_KEY_RANGE_INVALID);return t.invm(c.n).toArrayLike(n,\"be\",32)},t.privateKeyTweakAdd=function(e,t){var r=new o(t);if(r.cmp(c.n)>=0)throw new Error(s.EC_PRIVATE_KEY_TWEAK_ADD_FAIL);if(r.iadd(new o(e)),r.cmp(c.n)>=0&&r.isub(c.n),r.isZero())throw new Error(s.EC_PRIVATE_KEY_TWEAK_ADD_FAIL);return r.toArrayLike(n,\"be\",32)},t.privateKeyTweakMul=function(e,t){var r=new o(t);if(r.cmp(c.n)>=0||r.isZero())throw new Error(s.EC_PRIVATE_KEY_TWEAK_MUL_FAIL);return r.imul(new o(e)),r.cmp(c.n)&&(r=r.umod(c.n)),r.toArrayLike(n,\"be\",32)},t.publicKeyCreate=function(e,t){var r=new o(e);if(r.cmp(c.n)>=0||r.isZero())throw new Error(s.EC_PUBLIC_KEY_CREATE_FAIL);return n.from(f.keyFromPrivate(e).getPublic(t,!0))},t.publicKeyConvert=function(e,t){var r=u(e);if(null===r)throw new Error(s.EC_PUBLIC_KEY_PARSE_FAIL);return n.from(r.getPublic(t,!0))},t.publicKeyVerify=function(e){return null!==u(e)},t.publicKeyTweakAdd=function(e,t,r){var i=u(e);if(null===i)throw new Error(s.EC_PUBLIC_KEY_PARSE_FAIL);if((t=new o(t)).cmp(c.n)>=0)throw new Error(s.EC_PUBLIC_KEY_TWEAK_ADD_FAIL);var a=c.g.mul(t).add(i.pub);if(a.isInfinity())throw new Error(s.EC_PUBLIC_KEY_TWEAK_ADD_FAIL);return n.from(a.encode(!0,r))},t.publicKeyTweakMul=function(e,t,r){var i=u(e);if(null===i)throw new Error(s.EC_PUBLIC_KEY_PARSE_FAIL);if((t=new o(t)).cmp(c.n)>=0||t.isZero())throw new Error(s.EC_PUBLIC_KEY_TWEAK_MUL_FAIL);return n.from(i.pub.mul(t).encode(!0,r))},t.publicKeyCombine=function(e,t){for(var r=new Array(e.length),i=0;i<e.length;++i)if(r[i]=u(e[i]),null===r[i])throw new Error(s.EC_PUBLIC_KEY_PARSE_FAIL);for(var o=r[0].pub,a=1;a<r.length;++a)o=o.add(r[a].pub);if(o.isInfinity())throw new Error(s.EC_PUBLIC_KEY_COMBINE_FAIL);return n.from(o.encode(!0,t))},t.signatureNormalize=function(e){var t=new o(e.slice(0,32)),r=new o(e.slice(32,64));if(t.cmp(c.n)>=0||r.cmp(c.n)>=0)throw new Error(s.ECDSA_SIGNATURE_PARSE_FAIL);var i=n.from(e);return 1===r.cmp(f.nh)&&c.n.sub(r).toArrayLike(n,\"be\",32).copy(i,32),i},t.signatureExport=function(e){var t=e.slice(0,32),r=e.slice(32,64);if(new o(t).cmp(c.n)>=0||new o(r).cmp(c.n)>=0)throw new Error(s.ECDSA_SIGNATURE_PARSE_FAIL);return{r:t,s:r}},t.signatureImport=function(e){var t=new o(e.r);t.cmp(c.n)>=0&&(t=new o(0));var r=new o(e.s);return r.cmp(c.n)>=0&&(r=new o(0)),n.concat([t.toArrayLike(n,\"be\",32),r.toArrayLike(n,\"be\",32)])},t.sign=function(e,t,r,i){if(\"function\"==typeof r){var a=r;r=function(r){var f=a(e,t,null,i,r);if(!n.isBuffer(f)||32!==f.length)throw new Error(s.ECDSA_SIGN_FAIL);return new o(f)}}var u=new o(t);if(u.cmp(c.n)>=0||u.isZero())throw new Error(s.ECDSA_SIGN_FAIL);var h=f.sign(e,t,{canonical:!0,k:r,pers:i});return{signature:n.concat([h.r.toArrayLike(n,\"be\",32),h.s.toArrayLike(n,\"be\",32)]),recovery:h.recoveryParam}},t.verify=function(e,t,r){var n={r:t.slice(0,32),s:t.slice(32,64)},i=new o(n.r),a=new o(n.s);if(i.cmp(c.n)>=0||a.cmp(c.n)>=0)throw new Error(s.ECDSA_SIGNATURE_PARSE_FAIL);if(1===a.cmp(f.nh)||i.isZero()||a.isZero())return!1;var h=u(r);if(null===h)throw new Error(s.EC_PUBLIC_KEY_PARSE_FAIL);return f.verify(e,n,{x:h.pub.x,y:h.pub.y})},t.recover=function(e,t,r,i){var a={r:t.slice(0,32),s:t.slice(32,64)},u=new o(a.r),h=new o(a.s);if(u.cmp(c.n)>=0||h.cmp(c.n)>=0)throw new Error(s.ECDSA_SIGNATURE_PARSE_FAIL);try{if(u.isZero()||h.isZero())throw new Error;var l=f.recoverPubKey(e,a,r);return n.from(l.encode(!0,i))}catch(e){throw new Error(s.ECDSA_RECOVER_FAIL)}},t.ecdh=function(e,r){var n=t.ecdhUnsafe(e,r,!0);return i(\"sha256\").update(n).digest()},t.ecdhUnsafe=function(e,t,r){var i=u(e);if(null===i)throw new Error(s.EC_PUBLIC_KEY_PARSE_FAIL);var a=new o(t);if(a.cmp(c.n)>=0||a.isZero())throw new Error(s.ECDH_FAIL);return n.from(i.pub.mul(a).encode(!0,r))}},function(e,t,r){\"use strict\";var n=r(0),i=r(59),o=r(1).Buffer,a=new Array(16);function s(){i.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function f(e,t){return e<<t|e>>>32-t}function c(e,t,r,n,i,o,a){return f(e+(t&r|~t&n)+i+o|0,a)+t|0}function u(e,t,r,n,i,o,a){return f(e+(t&n|r&~n)+i+o|0,a)+t|0}function h(e,t,r,n,i,o,a){return f(e+(t^r^n)+i+o|0,a)+t|0}function l(e,t,r,n,i,o,a){return f(e+(r^(t|~n))+i+o|0,a)+t|0}n(s,i),s.prototype._update=function(){for(var e=a,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);var r=this._a,n=this._b,i=this._c,o=this._d;r=c(r,n,i,o,e[0],3614090360,7),o=c(o,r,n,i,e[1],3905402710,12),i=c(i,o,r,n,e[2],606105819,17),n=c(n,i,o,r,e[3],3250441966,22),r=c(r,n,i,o,e[4],4118548399,7),o=c(o,r,n,i,e[5],1200080426,12),i=c(i,o,r,n,e[6],2821735955,17),n=c(n,i,o,r,e[7],4249261313,22),r=c(r,n,i,o,e[8],1770035416,7),o=c(o,r,n,i,e[9],2336552879,12),i=c(i,o,r,n,e[10],4294925233,17),n=c(n,i,o,r,e[11],2304563134,22),r=c(r,n,i,o,e[12],1804603682,7),o=c(o,r,n,i,e[13],4254626195,12),i=c(i,o,r,n,e[14],2792965006,17),r=u(r,n=c(n,i,o,r,e[15],1236535329,22),i,o,e[1],4129170786,5),o=u(o,r,n,i,e[6],3225465664,9),i=u(i,o,r,n,e[11],643717713,14),n=u(n,i,o,r,e[0],3921069994,20),r=u(r,n,i,o,e[5],3593408605,5),o=u(o,r,n,i,e[10],38016083,9),i=u(i,o,r,n,e[15],3634488961,14),n=u(n,i,o,r,e[4],3889429448,20),r=u(r,n,i,o,e[9],568446438,5),o=u(o,r,n,i,e[14],3275163606,9),i=u(i,o,r,n,e[3],4107603335,14),n=u(n,i,o,r,e[8],1163531501,20),r=u(r,n,i,o,e[13],2850285829,5),o=u(o,r,n,i,e[2],4243563512,9),i=u(i,o,r,n,e[7],1735328473,14),r=h(r,n=u(n,i,o,r,e[12],2368359562,20),i,o,e[5],4294588738,4),o=h(o,r,n,i,e[8],2272392833,11),i=h(i,o,r,n,e[11],1839030562,16),n=h(n,i,o,r,e[14],4259657740,23),r=h(r,n,i,o,e[1],2763975236,4),o=h(o,r,n,i,e[4],1272893353,11),i=h(i,o,r,n,e[7],4139469664,16),n=h(n,i,o,r,e[10],3200236656,23),r=h(r,n,i,o,e[13],681279174,4),o=h(o,r,n,i,e[0],3936430074,11),i=h(i,o,r,n,e[3],3572445317,16),n=h(n,i,o,r,e[6],76029189,23),r=h(r,n,i,o,e[9],3654602809,4),o=h(o,r,n,i,e[12],3873151461,11),i=h(i,o,r,n,e[15],530742520,16),r=l(r,n=h(n,i,o,r,e[2],3299628645,23),i,o,e[0],4096336452,6),o=l(o,r,n,i,e[7],1126891415,10),i=l(i,o,r,n,e[14],2878612391,15),n=l(n,i,o,r,e[5],4237533241,21),r=l(r,n,i,o,e[12],1700485571,6),o=l(o,r,n,i,e[3],2399980690,10),i=l(i,o,r,n,e[10],4293915773,15),n=l(n,i,o,r,e[1],2240044497,21),r=l(r,n,i,o,e[8],1873313359,6),o=l(o,r,n,i,e[15],4264355552,10),i=l(i,o,r,n,e[6],2734768916,15),n=l(n,i,o,r,e[13],1309151649,21),r=l(r,n,i,o,e[4],4149444226,6),o=l(o,r,n,i,e[11],3174756917,10),i=l(i,o,r,n,e[2],718787259,15),n=l(n,i,o,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+n|0,this._c=this._c+i|0,this._d=this._d+o|0},s.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=o.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e},e.exports=s},function(e,t,r){\"use strict\";var n=r(7).Buffer,i=r(0),o=r(59),a=new Array(16),s=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],f=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],c=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],u=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],h=[0,1518500249,1859775393,2400959708,2840853838],l=[1352829926,1548603684,1836072691,2053994217,0];function d(){o.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function p(e,t){return e<<t|e>>>32-t}function b(e,t,r,n,i,o,a,s){return p(e+(t^r^n)+o+a|0,s)+i|0}function y(e,t,r,n,i,o,a,s){return p(e+(t&r|~t&n)+o+a|0,s)+i|0}function g(e,t,r,n,i,o,a,s){return p(e+((t|~r)^n)+o+a|0,s)+i|0}function v(e,t,r,n,i,o,a,s){return p(e+(t&n|r&~n)+o+a|0,s)+i|0}function m(e,t,r,n,i,o,a,s){return p(e+(t^(r|~n))+o+a|0,s)+i|0}i(d,o),d.prototype._update=function(){for(var e=a,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);for(var r=0|this._a,n=0|this._b,i=0|this._c,o=0|this._d,d=0|this._e,_=0|this._a,w=0|this._b,E=0|this._c,A=0|this._d,S=0|this._e,k=0;k<80;k+=1){var x,I;k<16?(x=b(r,n,i,o,d,e[s[k]],h[0],c[k]),I=m(_,w,E,A,S,e[f[k]],l[0],u[k])):k<32?(x=y(r,n,i,o,d,e[s[k]],h[1],c[k]),I=v(_,w,E,A,S,e[f[k]],l[1],u[k])):k<48?(x=g(r,n,i,o,d,e[s[k]],h[2],c[k]),I=g(_,w,E,A,S,e[f[k]],l[2],u[k])):k<64?(x=v(r,n,i,o,d,e[s[k]],h[3],c[k]),I=y(_,w,E,A,S,e[f[k]],l[3],u[k])):(x=m(r,n,i,o,d,e[s[k]],h[4],c[k]),I=b(_,w,E,A,S,e[f[k]],l[4],u[k])),r=d,d=o,o=p(i,10),i=n,n=x,_=S,S=A,A=p(E,10),E=w,w=I}var M=this._b+i+A|0;this._b=this._c+o+S|0,this._c=this._d+d+_|0,this._d=this._e+r+w|0,this._e=this._a+n+E|0,this._a=M},d.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=n.alloc?n.alloc(20):new n(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e},e.exports=d},function(e,t,r){(t=e.exports=function(e){e=e.toLowerCase();var r=t[e];if(!r)throw new Error(e+\" is not supported (we accept pull requests)\");return new r}).sha=r(135),t.sha1=r(136),t.sha224=r(137),t.sha256=r(60),t.sha384=r(138),t.sha512=r(61)},function(e,t,r){var n=r(0),i=r(14),o=r(1).Buffer,a=[1518500249,1859775393,-1894007588,-899497514],s=new Array(80);function f(){this.init(),this._w=s,i.call(this,64,56)}function c(e){return e<<30|e>>>2}function u(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}n(f,i),f.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},f.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,s=0|this._d,f=0|this._e,h=0;h<16;++h)r[h]=e.readInt32BE(4*h);for(;h<80;++h)r[h]=r[h-3]^r[h-8]^r[h-14]^r[h-16];for(var l=0;l<80;++l){var d=~~(l/20),p=0|((t=n)<<5|t>>>27)+u(d,i,o,s)+f+r[l]+a[d];f=s,s=o,o=c(i),i=n,n=p}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=s+this._d|0,this._e=f+this._e|0},f.prototype._hash=function(){var e=o.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},e.exports=f},function(e,t,r){var n=r(0),i=r(14),o=r(1).Buffer,a=[1518500249,1859775393,-1894007588,-899497514],s=new Array(80);function f(){this.init(),this._w=s,i.call(this,64,56)}function c(e){return e<<5|e>>>27}function u(e){return e<<30|e>>>2}function h(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}n(f,i),f.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},f.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,s=0|this._d,f=0|this._e,l=0;l<16;++l)r[l]=e.readInt32BE(4*l);for(;l<80;++l)r[l]=(t=r[l-3]^r[l-8]^r[l-14]^r[l-16])<<1|t>>>31;for(var d=0;d<80;++d){var p=~~(d/20),b=c(n)+h(p,i,o,s)+f+r[d]+a[p]|0;f=s,s=o,o=u(i),i=n,n=b}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=s+this._d|0,this._e=f+this._e|0},f.prototype._hash=function(){var e=o.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},e.exports=f},function(e,t,r){var n=r(0),i=r(60),o=r(14),a=r(1).Buffer,s=new Array(64);function f(){this.init(),this._w=s,o.call(this,64,56)}n(f,i),f.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},f.prototype._hash=function(){var e=a.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e},e.exports=f},function(e,t,r){var n=r(0),i=r(61),o=r(14),a=r(1).Buffer,s=new Array(160);function f(){this.init(),this._w=s,o.call(this,128,112)}n(f,i),f.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},f.prototype._hash=function(){var e=a.allocUnsafe(48);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e},e.exports=f},function(e,t,r){var n=r(1).Buffer,i=r(24).Transform,o=r(35).StringDecoder;function a(e){i.call(this),this.hashMode=\"string\"==typeof e,this.hashMode?this[e]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}r(0)(a,i),a.prototype.update=function(e,t,r){\"string\"==typeof e&&(e=n.from(e,t));var i=this._update(e);return this.hashMode?this:(r&&(i=this._toString(i,r)),i)},a.prototype.setAutoPadding=function(){},a.prototype.getAuthTag=function(){throw new Error(\"trying to get auth tag in unsupported state\")},a.prototype.setAuthTag=function(){throw new Error(\"trying to set auth tag in unsupported state\")},a.prototype.setAAD=function(){throw new Error(\"trying to set aad in unsupported state\")},a.prototype._transform=function(e,t,r){var n;try{this.hashMode?this._update(e):this.push(this._update(e))}catch(e){n=e}finally{r(n)}},a.prototype._flush=function(e){var t;try{this.push(this.__final())}catch(e){t=e}e(t)},a.prototype._finalOrDigest=function(e){var t=this.__final()||n.alloc(0);return e&&(t=this._toString(t,e,!0)),t},a.prototype._toString=function(e,t,r){if(this._decoder||(this._decoder=new o(t),this._encoding=t),this._encoding!==t)throw new Error(\"can't switch encodings\");var n=this._decoder.write(e);return r&&(n+=this._decoder.end()),n},e.exports=a},function(e,t){},function(e,t,r){\"use strict\";var n=t;n.version=r(142).version,n.utils=r(5),n.rand=r(63),n.curve=r(64),n.curves=r(37),n.ec=r(154),n.eddsa=r(158)},function(e){e.exports={_from:\"elliptic@^6.4.1\",_id:\"elliptic@6.5.1\",_inBundle:!1,_integrity:\"sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg==\",_location:\"/elliptic\",_phantomChildren:{},_requested:{type:\"range\",registry:!0,raw:\"elliptic@^6.4.1\",name:\"elliptic\",escapedName:\"elliptic\",rawSpec:\"^6.4.1\",saveSpec:null,fetchSpec:\"^6.4.1\"},_requiredBy:[\"/browserify-sign\",\"/create-ecdh\",\"/secp256k1\"],_resolved:\"https://registry.npmjs.org/elliptic/-/elliptic-6.5.1.tgz\",_shasum:\"c380f5f909bf1b9b4428d028cd18d3b0efd6b52b\",_spec:\"elliptic@^6.4.1\",_where:\"/Users/alex/Documents/Squarelink/SDKs/Web3/node_modules/secp256k1\",author:{name:\"Fedor Indutny\",email:\"fedor@indutny.com\"},bugs:{url:\"https://github.com/indutny/elliptic/issues\"},bundleDependencies:!1,dependencies:{\"bn.js\":\"^4.4.0\",brorand:\"^1.0.1\",\"hash.js\":\"^1.0.0\",\"hmac-drbg\":\"^1.0.0\",inherits:\"^2.0.1\",\"minimalistic-assert\":\"^1.0.0\",\"minimalistic-crypto-utils\":\"^1.0.0\"},deprecated:!1,description:\"EC cryptography\",devDependencies:{brfs:\"^1.4.3\",coveralls:\"^3.0.4\",grunt:\"^1.0.4\",\"grunt-browserify\":\"^5.0.0\",\"grunt-cli\":\"^1.2.0\",\"grunt-contrib-connect\":\"^1.0.0\",\"grunt-contrib-copy\":\"^1.0.0\",\"grunt-contrib-uglify\":\"^1.0.1\",\"grunt-mocha-istanbul\":\"^3.0.1\",\"grunt-saucelabs\":\"^9.0.1\",istanbul:\"^0.4.2\",jscs:\"^3.0.7\",jshint:\"^2.6.0\",mocha:\"^6.1.4\"},files:[\"lib\"],homepage:\"https://github.com/indutny/elliptic\",keywords:[\"EC\",\"Elliptic\",\"curve\",\"Cryptography\"],license:\"MIT\",main:\"lib/elliptic.js\",name:\"elliptic\",repository:{type:\"git\",url:\"git+ssh://git@github.com/indutny/elliptic.git\"},scripts:{jscs:\"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js\",jshint:\"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js\",lint:\"npm run jscs && npm run jshint\",test:\"npm run lint && npm run unit\",unit:\"istanbul test _mocha --reporter=spec test/index.js\",version:\"grunt dist && git add dist/\"},version:\"6.5.1\"}},function(e,t){},function(e,t,r){\"use strict\";var n=r(5),i=r(3),o=r(0),a=r(28),s=n.assert;function f(e){a.call(this,\"short\",e),this.a=new i(e.a,16).toRed(this.red),this.b=new i(e.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(e),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function c(e,t,r,n){a.BasePoint.call(this,e,\"affine\"),null===t&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new i(t,16),this.y=new i(r,16),n&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function u(e,t,r,n){a.BasePoint.call(this,e,\"jacobian\"),null===t&&null===r&&null===n?(this.x=this.curve.one,this.y=this.curve.one,this.z=new i(0)):(this.x=new i(t,16),this.y=new i(r,16),this.z=new i(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}o(f,a),e.exports=f,f.prototype._getEndomorphism=function(e){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var t,r;if(e.beta)t=new i(e.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);t=(t=n[0].cmp(n[1])<0?n[0]:n[1]).toRed(this.red)}if(e.lambda)r=new i(e.lambda,16);else{var o=this._getEndoRoots(this.n);0===this.g.mul(o[0]).x.cmp(this.g.x.redMul(t))?r=o[0]:(r=o[1],s(0===this.g.mul(r).x.cmp(this.g.x.redMul(t))))}return{beta:t,lambda:r,basis:e.basis?e.basis.map((function(e){return{a:new i(e.a,16),b:new i(e.b,16)}})):this._getEndoBasis(r)}}},f.prototype._getEndoRoots=function(e){var t=e===this.p?this.red:i.mont(e),r=new i(2).toRed(t).redInvm(),n=r.redNeg(),o=new i(3).toRed(t).redNeg().redSqrt().redMul(r);return[n.redAdd(o).fromRed(),n.redSub(o).fromRed()]},f.prototype._getEndoBasis=function(e){for(var t,r,n,o,a,s,f,c,u,h=this.n.ushrn(Math.floor(this.n.bitLength()/2)),l=e,d=this.n.clone(),p=new i(1),b=new i(0),y=new i(0),g=new i(1),v=0;0!==l.cmpn(0);){var m=d.div(l);c=d.sub(m.mul(l)),u=y.sub(m.mul(p));var _=g.sub(m.mul(b));if(!n&&c.cmp(h)<0)t=f.neg(),r=p,n=c.neg(),o=u;else if(n&&2==++v)break;f=c,d=l,l=c,y=p,p=u,g=b,b=_}a=c.neg(),s=u;var w=n.sqr().add(o.sqr());return a.sqr().add(s.sqr()).cmp(w)>=0&&(a=t,s=r),n.negative&&(n=n.neg(),o=o.neg()),a.negative&&(a=a.neg(),s=s.neg()),[{a:n,b:o},{a:a,b:s}]},f.prototype._endoSplit=function(e){var t=this.endo.basis,r=t[0],n=t[1],i=n.b.mul(e).divRound(this.n),o=r.b.neg().mul(e).divRound(this.n),a=i.mul(r.a),s=o.mul(n.a),f=i.mul(r.b),c=o.mul(n.b);return{k1:e.sub(a).sub(s),k2:f.add(c).neg()}},f.prototype.pointFromX=function(e,t){(e=new i(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),n=r.redSqrt();if(0!==n.redSqr().redSub(r).cmp(this.zero))throw new Error(\"invalid point\");var o=n.fromRed().isOdd();return(t&&!o||!t&&o)&&(n=n.redNeg()),this.point(e,n)},f.prototype.validate=function(e){if(e.inf)return!0;var t=e.x,r=e.y,n=this.a.redMul(t),i=t.redSqr().redMul(t).redIAdd(n).redIAdd(this.b);return 0===r.redSqr().redISub(i).cmpn(0)},f.prototype._endoWnafMulAdd=function(e,t,r){for(var n=this._endoWnafT1,i=this._endoWnafT2,o=0;o<e.length;o++){var a=this._endoSplit(t[o]),s=e[o],f=s._getBeta();a.k1.negative&&(a.k1.ineg(),s=s.neg(!0)),a.k2.negative&&(a.k2.ineg(),f=f.neg(!0)),n[2*o]=s,n[2*o+1]=f,i[2*o]=a.k1,i[2*o+1]=a.k2}for(var c=this._wnafMulAdd(1,n,i,2*o,r),u=0;u<2*o;u++)n[u]=null,i[u]=null;return c},o(c,a.BasePoint),f.prototype.point=function(e,t,r){return new c(this,e,t,r)},f.prototype.pointFromJSON=function(e,t){return c.fromJSON(this,e,t)},c.prototype._getBeta=function(){if(this.curve.endo){var e=this.precomputed;if(e&&e.beta)return e.beta;var t=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(e){var r=this.curve,n=function(e){return r.point(e.x.redMul(r.endo.beta),e.y)};e.beta=t,t.precomputed={beta:null,naf:e.naf&&{wnd:e.naf.wnd,points:e.naf.points.map(n)},doubles:e.doubles&&{step:e.doubles.step,points:e.doubles.points.map(n)}}}return t}},c.prototype.toJSON=function(){return this.precomputed?[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]:[this.x,this.y]},c.fromJSON=function(e,t,r){\"string\"==typeof t&&(t=JSON.parse(t));var n=e.point(t[0],t[1],r);if(!t[2])return n;function i(t){return e.point(t[0],t[1],r)}var o=t[2];return n.precomputed={beta:null,doubles:o.doubles&&{step:o.doubles.step,points:[n].concat(o.doubles.points.map(i))},naf:o.naf&&{wnd:o.naf.wnd,points:[n].concat(o.naf.points.map(i))}},n},c.prototype.inspect=function(){return this.isInfinity()?\"<EC Point Infinity>\":\"<EC Point x: \"+this.x.fromRed().toString(16,2)+\" y: \"+this.y.fromRed().toString(16,2)+\">\"},c.prototype.isInfinity=function(){return this.inf},c.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(0===this.x.cmp(e.x))return this.curve.point(null,null);var t=this.y.redSub(e.y);0!==t.cmpn(0)&&(t=t.redMul(this.x.redSub(e.x).redInvm()));var r=t.redSqr().redISub(this.x).redISub(e.x),n=t.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},c.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(0===e.cmpn(0))return this.curve.point(null,null);var t=this.curve.a,r=this.x.redSqr(),n=e.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(t).redMul(n),o=i.redSqr().redISub(this.x.redAdd(this.x)),a=i.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,a)},c.prototype.getX=function(){return this.x.fromRed()},c.prototype.getY=function(){return this.y.fromRed()},c.prototype.mul=function(e){return e=new i(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},c.prototype.mulAdd=function(e,t,r){var n=[this,t],i=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},c.prototype.jmulAdd=function(e,t,r){var n=[this,t],i=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},c.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||0===this.x.cmp(e.x)&&0===this.y.cmp(e.y))},c.prototype.neg=function(e){if(this.inf)return this;var t=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var r=this.precomputed,n=function(e){return e.neg()};t.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return t},c.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},o(u,a.BasePoint),f.prototype.jpoint=function(e,t,r){return new u(this,e,t,r)},u.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),t=e.redSqr(),r=this.x.redMul(t),n=this.y.redMul(t).redMul(e);return this.curve.point(r,n)},u.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},u.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var t=e.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(t),i=e.x.redMul(r),o=this.y.redMul(t.redMul(e.z)),a=e.y.redMul(r.redMul(this.z)),s=n.redSub(i),f=o.redSub(a);if(0===s.cmpn(0))return 0!==f.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var c=s.redSqr(),u=c.redMul(s),h=n.redMul(c),l=f.redSqr().redIAdd(u).redISub(h).redISub(h),d=f.redMul(h.redISub(l)).redISub(o.redMul(u)),p=this.z.redMul(e.z).redMul(s);return this.curve.jpoint(l,d,p)},u.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var t=this.z.redSqr(),r=this.x,n=e.x.redMul(t),i=this.y,o=e.y.redMul(t).redMul(this.z),a=r.redSub(n),s=i.redSub(o);if(0===a.cmpn(0))return 0!==s.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var f=a.redSqr(),c=f.redMul(a),u=r.redMul(f),h=s.redSqr().redIAdd(c).redISub(u).redISub(u),l=s.redMul(u.redISub(h)).redISub(i.redMul(c)),d=this.z.redMul(a);return this.curve.jpoint(h,l,d)},u.prototype.dblp=function(e){if(0===e)return this;if(this.isInfinity())return this;if(!e)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var t=this,r=0;r<e;r++)t=t.dbl();return t}var n=this.curve.a,i=this.curve.tinv,o=this.x,a=this.y,s=this.z,f=s.redSqr().redSqr(),c=a.redAdd(a);for(r=0;r<e;r++){var u=o.redSqr(),h=c.redSqr(),l=h.redSqr(),d=u.redAdd(u).redIAdd(u).redIAdd(n.redMul(f)),p=o.redMul(h),b=d.redSqr().redISub(p.redAdd(p)),y=p.redISub(b),g=d.redMul(y);g=g.redIAdd(g).redISub(l);var v=c.redMul(s);r+1<e&&(f=f.redMul(l)),o=b,s=v,c=g}return this.curve.jpoint(o,c.redMul(i),s)},u.prototype.dbl=function(){return this.isInfinity()?this:this.curve.zeroA?this._zeroDbl():this.curve.threeA?this._threeDbl():this._dbl()},u.prototype._zeroDbl=function(){var e,t,r;if(this.zOne){var n=this.x.redSqr(),i=this.y.redSqr(),o=i.redSqr(),a=this.x.redAdd(i).redSqr().redISub(n).redISub(o);a=a.redIAdd(a);var s=n.redAdd(n).redIAdd(n),f=s.redSqr().redISub(a).redISub(a),c=o.redIAdd(o);c=(c=c.redIAdd(c)).redIAdd(c),e=f,t=s.redMul(a.redISub(f)).redISub(c),r=this.y.redAdd(this.y)}else{var u=this.x.redSqr(),h=this.y.redSqr(),l=h.redSqr(),d=this.x.redAdd(h).redSqr().redISub(u).redISub(l);d=d.redIAdd(d);var p=u.redAdd(u).redIAdd(u),b=p.redSqr(),y=l.redIAdd(l);y=(y=y.redIAdd(y)).redIAdd(y),e=b.redISub(d).redISub(d),t=p.redMul(d.redISub(e)).redISub(y),r=(r=this.y.redMul(this.z)).redIAdd(r)}return this.curve.jpoint(e,t,r)},u.prototype._threeDbl=function(){var e,t,r;if(this.zOne){var n=this.x.redSqr(),i=this.y.redSqr(),o=i.redSqr(),a=this.x.redAdd(i).redSqr().redISub(n).redISub(o);a=a.redIAdd(a);var s=n.redAdd(n).redIAdd(n).redIAdd(this.curve.a),f=s.redSqr().redISub(a).redISub(a);e=f;var c=o.redIAdd(o);c=(c=c.redIAdd(c)).redIAdd(c),t=s.redMul(a.redISub(f)).redISub(c),r=this.y.redAdd(this.y)}else{var u=this.z.redSqr(),h=this.y.redSqr(),l=this.x.redMul(h),d=this.x.redSub(u).redMul(this.x.redAdd(u));d=d.redAdd(d).redIAdd(d);var p=l.redIAdd(l),b=(p=p.redIAdd(p)).redAdd(p);e=d.redSqr().redISub(b),r=this.y.redAdd(this.z).redSqr().redISub(h).redISub(u);var y=h.redSqr();y=(y=(y=y.redIAdd(y)).redIAdd(y)).redIAdd(y),t=d.redMul(p.redISub(e)).redISub(y)}return this.curve.jpoint(e,t,r)},u.prototype._dbl=function(){var e=this.curve.a,t=this.x,r=this.y,n=this.z,i=n.redSqr().redSqr(),o=t.redSqr(),a=r.redSqr(),s=o.redAdd(o).redIAdd(o).redIAdd(e.redMul(i)),f=t.redAdd(t),c=(f=f.redIAdd(f)).redMul(a),u=s.redSqr().redISub(c.redAdd(c)),h=c.redISub(u),l=a.redSqr();l=(l=(l=l.redIAdd(l)).redIAdd(l)).redIAdd(l);var d=s.redMul(h).redISub(l),p=r.redAdd(r).redMul(n);return this.curve.jpoint(u,d,p)},u.prototype.trpl=function(){if(!this.curve.zeroA)return this.dbl().add(this);var e=this.x.redSqr(),t=this.y.redSqr(),r=this.z.redSqr(),n=t.redSqr(),i=e.redAdd(e).redIAdd(e),o=i.redSqr(),a=this.x.redAdd(t).redSqr().redISub(e).redISub(n),s=(a=(a=(a=a.redIAdd(a)).redAdd(a).redIAdd(a)).redISub(o)).redSqr(),f=n.redIAdd(n);f=(f=(f=f.redIAdd(f)).redIAdd(f)).redIAdd(f);var c=i.redIAdd(a).redSqr().redISub(o).redISub(s).redISub(f),u=t.redMul(c);u=(u=u.redIAdd(u)).redIAdd(u);var h=this.x.redMul(s).redISub(u);h=(h=h.redIAdd(h)).redIAdd(h);var l=this.y.redMul(c.redMul(f.redISub(c)).redISub(a.redMul(s)));l=(l=(l=l.redIAdd(l)).redIAdd(l)).redIAdd(l);var d=this.z.redAdd(a).redSqr().redISub(r).redISub(s);return this.curve.jpoint(h,l,d)},u.prototype.mul=function(e,t){return e=new i(e,t),this.curve._wnafMul(this,e)},u.prototype.eq=function(e){if(\"affine\"===e.type)return this.eq(e.toJ());if(this===e)return!0;var t=this.z.redSqr(),r=e.z.redSqr();if(0!==this.x.redMul(r).redISub(e.x.redMul(t)).cmpn(0))return!1;var n=t.redMul(this.z),i=r.redMul(e.z);return 0===this.y.redMul(i).redISub(e.y.redMul(n)).cmpn(0)},u.prototype.eqXToP=function(e){var t=this.z.redSqr(),r=e.toRed(this.curve.red).redMul(t);if(0===this.x.cmp(r))return!0;for(var n=e.clone(),i=this.curve.redN.redMul(t);;){if(n.iadd(this.curve.n),n.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(i),0===this.x.cmp(r))return!0}},u.prototype.inspect=function(){return this.isInfinity()?\"<EC JPoint Infinity>\":\"<EC JPoint x: \"+this.x.toString(16,2)+\" y: \"+this.y.toString(16,2)+\" z: \"+this.z.toString(16,2)+\">\"},u.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},function(e,t,r){\"use strict\";var n=r(3),i=r(0),o=r(28),a=r(5);function s(e){o.call(this,\"mont\",e),this.a=new n(e.a,16).toRed(this.red),this.b=new n(e.b,16).toRed(this.red),this.i4=new n(4).toRed(this.red).redInvm(),this.two=new n(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function f(e,t,r){o.BasePoint.call(this,e,\"projective\"),null===t&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new n(t,16),this.z=new n(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}i(s,o),e.exports=s,s.prototype.validate=function(e){var t=e.normalize().x,r=t.redSqr(),n=r.redMul(t).redAdd(r.redMul(this.a)).redAdd(t);return 0===n.redSqrt().redSqr().cmp(n)},i(f,o.BasePoint),s.prototype.decodePoint=function(e,t){return this.point(a.toArray(e,t),1)},s.prototype.point=function(e,t){return new f(this,e,t)},s.prototype.pointFromJSON=function(e){return f.fromJSON(this,e)},f.prototype.precompute=function(){},f.prototype._encode=function(){return this.getX().toArray(\"be\",this.curve.p.byteLength())},f.fromJSON=function(e,t){return new f(e,t[0],t[1]||e.one)},f.prototype.inspect=function(){return this.isInfinity()?\"<EC Point Infinity>\":\"<EC Point x: \"+this.x.fromRed().toString(16,2)+\" z: \"+this.z.fromRed().toString(16,2)+\">\"},f.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},f.prototype.dbl=function(){var e=this.x.redAdd(this.z).redSqr(),t=this.x.redSub(this.z).redSqr(),r=e.redSub(t),n=e.redMul(t),i=r.redMul(t.redAdd(this.curve.a24.redMul(r)));return this.curve.point(n,i)},f.prototype.add=function(){throw new Error(\"Not supported on Montgomery curve\")},f.prototype.diffAdd=function(e,t){var r=this.x.redAdd(this.z),n=this.x.redSub(this.z),i=e.x.redAdd(e.z),o=e.x.redSub(e.z).redMul(r),a=i.redMul(n),s=t.z.redMul(o.redAdd(a).redSqr()),f=t.x.redMul(o.redISub(a).redSqr());return this.curve.point(s,f)},f.prototype.mul=function(e){for(var t=e.clone(),r=this,n=this.curve.point(null,null),i=[];0!==t.cmpn(0);t.iushrn(1))i.push(t.andln(1));for(var o=i.length-1;o>=0;o--)0===i[o]?(r=r.diffAdd(n,this),n=n.dbl()):(n=r.diffAdd(n,this),r=r.dbl());return n},f.prototype.mulAdd=function(){throw new Error(\"Not supported on Montgomery curve\")},f.prototype.jumlAdd=function(){throw new Error(\"Not supported on Montgomery curve\")},f.prototype.eq=function(e){return 0===this.getX().cmp(e.getX())},f.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},f.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},function(e,t,r){\"use strict\";var n=r(5),i=r(3),o=r(0),a=r(28),s=n.assert;function f(e){this.twisted=1!=(0|e.a),this.mOneA=this.twisted&&-1==(0|e.a),this.extended=this.mOneA,a.call(this,\"edwards\",e),this.a=new i(e.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new i(e.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new i(e.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),s(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|e.c)}function c(e,t,r,n,o){a.BasePoint.call(this,e,\"projective\"),null===t&&null===r&&null===n?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new i(t,16),this.y=new i(r,16),this.z=n?new i(n,16):this.curve.one,this.t=o&&new i(o,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}o(f,a),e.exports=f,f.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)},f.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)},f.prototype.jpoint=function(e,t,r,n){return this.point(e,t,r,n)},f.prototype.pointFromX=function(e,t){(e=new i(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr(),n=this.c2.redSub(this.a.redMul(r)),o=this.one.redSub(this.c2.redMul(this.d).redMul(r)),a=n.redMul(o.redInvm()),s=a.redSqrt();if(0!==s.redSqr().redSub(a).cmp(this.zero))throw new Error(\"invalid point\");var f=s.fromRed().isOdd();return(t&&!f||!t&&f)&&(s=s.redNeg()),this.point(e,s)},f.prototype.pointFromY=function(e,t){(e=new i(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr(),n=r.redSub(this.c2),o=r.redMul(this.d).redMul(this.c2).redSub(this.a),a=n.redMul(o.redInvm());if(0===a.cmp(this.zero)){if(t)throw new Error(\"invalid point\");return this.point(this.zero,e)}var s=a.redSqrt();if(0!==s.redSqr().redSub(a).cmp(this.zero))throw new Error(\"invalid point\");return s.fromRed().isOdd()!==t&&(s=s.redNeg()),this.point(s,e)},f.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var t=e.x.redSqr(),r=e.y.redSqr(),n=t.redMul(this.a).redAdd(r),i=this.c2.redMul(this.one.redAdd(this.d.redMul(t).redMul(r)));return 0===n.cmp(i)},o(c,a.BasePoint),f.prototype.pointFromJSON=function(e){return c.fromJSON(this,e)},f.prototype.point=function(e,t,r,n){return new c(this,e,t,r,n)},c.fromJSON=function(e,t){return new c(e,t[0],t[1],t[2])},c.prototype.inspect=function(){return this.isInfinity()?\"<EC Point Infinity>\":\"<EC Point x: \"+this.x.fromRed().toString(16,2)+\" y: \"+this.y.fromRed().toString(16,2)+\" z: \"+this.z.fromRed().toString(16,2)+\">\"},c.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},c.prototype._extDbl=function(){var e=this.x.redSqr(),t=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var n=this.curve._mulA(e),i=this.x.redAdd(this.y).redSqr().redISub(e).redISub(t),o=n.redAdd(t),a=o.redSub(r),s=n.redSub(t),f=i.redMul(a),c=o.redMul(s),u=i.redMul(s),h=a.redMul(o);return this.curve.point(f,c,h,u)},c.prototype._projDbl=function(){var e,t,r,n=this.x.redAdd(this.y).redSqr(),i=this.x.redSqr(),o=this.y.redSqr();if(this.curve.twisted){var a=(c=this.curve._mulA(i)).redAdd(o);if(this.zOne)e=n.redSub(i).redSub(o).redMul(a.redSub(this.curve.two)),t=a.redMul(c.redSub(o)),r=a.redSqr().redSub(a).redSub(a);else{var s=this.z.redSqr(),f=a.redSub(s).redISub(s);e=n.redSub(i).redISub(o).redMul(f),t=a.redMul(c.redSub(o)),r=a.redMul(f)}}else{var c=i.redAdd(o);s=this.curve._mulC(this.z).redSqr(),f=c.redSub(s).redSub(s);e=this.curve._mulC(n.redISub(c)).redMul(f),t=this.curve._mulC(c).redMul(i.redISub(o)),r=c.redMul(f)}return this.curve.point(e,t,r)},c.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},c.prototype._extAdd=function(e){var t=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),r=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),n=this.t.redMul(this.curve.dd).redMul(e.t),i=this.z.redMul(e.z.redAdd(e.z)),o=r.redSub(t),a=i.redSub(n),s=i.redAdd(n),f=r.redAdd(t),c=o.redMul(a),u=s.redMul(f),h=o.redMul(f),l=a.redMul(s);return this.curve.point(c,u,l,h)},c.prototype._projAdd=function(e){var t,r,n=this.z.redMul(e.z),i=n.redSqr(),o=this.x.redMul(e.x),a=this.y.redMul(e.y),s=this.curve.d.redMul(o).redMul(a),f=i.redSub(s),c=i.redAdd(s),u=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(o).redISub(a),h=n.redMul(f).redMul(u);return this.curve.twisted?(t=n.redMul(c).redMul(a.redSub(this.curve._mulA(o))),r=f.redMul(c)):(t=n.redMul(c).redMul(a.redSub(o)),r=this.curve._mulC(f).redMul(c)),this.curve.point(h,t,r)},c.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)},c.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)},c.prototype.mulAdd=function(e,t,r){return this.curve._wnafMulAdd(1,[this,t],[e,r],2,!1)},c.prototype.jmulAdd=function(e,t,r){return this.curve._wnafMulAdd(1,[this,t],[e,r],2,!0)},c.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this},c.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},c.prototype.getX=function(){return this.normalize(),this.x.fromRed()},c.prototype.getY=function(){return this.normalize(),this.y.fromRed()},c.prototype.eq=function(e){return this===e||0===this.getX().cmp(e.getX())&&0===this.getY().cmp(e.getY())},c.prototype.eqXToP=function(e){var t=e.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(t))return!0;for(var r=e.clone(),n=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(t.redIAdd(n),0===this.x.cmp(t))return!0}},c.prototype.toP=c.prototype.normalize,c.prototype.mixedAdd=c.prototype.add},function(e,t,r){\"use strict\";t.sha1=r(148),t.sha224=r(149),t.sha256=r(66),t.sha384=r(150),t.sha512=r(67)},function(e,t,r){\"use strict\";var n=r(8),i=r(17),o=r(65),a=n.rotl32,s=n.sum32,f=n.sum32_5,c=o.ft_1,u=i.BlockHash,h=[1518500249,1859775393,2400959708,3395469782];function l(){if(!(this instanceof l))return new l;u.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}n.inherits(l,u),e.exports=l,l.blockSize=512,l.outSize=160,l.hmacStrength=80,l.padLength=64,l.prototype._update=function(e,t){for(var r=this.W,n=0;n<16;n++)r[n]=e[t+n];for(;n<r.length;n++)r[n]=a(r[n-3]^r[n-8]^r[n-14]^r[n-16],1);var i=this.h[0],o=this.h[1],u=this.h[2],l=this.h[3],d=this.h[4];for(n=0;n<r.length;n++){var p=~~(n/20),b=f(a(i,5),c(p,o,u,l),d,r[n],h[p]);d=l,l=u,u=a(o,30),o=i,i=b}this.h[0]=s(this.h[0],i),this.h[1]=s(this.h[1],o),this.h[2]=s(this.h[2],u),this.h[3]=s(this.h[3],l),this.h[4]=s(this.h[4],d)},l.prototype._digest=function(e){return\"hex\"===e?n.toHex32(this.h,\"big\"):n.split32(this.h,\"big\")}},function(e,t,r){\"use strict\";var n=r(8),i=r(66);function o(){if(!(this instanceof o))return new o;i.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}n.inherits(o,i),e.exports=o,o.blockSize=512,o.outSize=224,o.hmacStrength=192,o.padLength=64,o.prototype._digest=function(e){return\"hex\"===e?n.toHex32(this.h.slice(0,7),\"big\"):n.split32(this.h.slice(0,7),\"big\")}},function(e,t,r){\"use strict\";var n=r(8),i=r(67);function o(){if(!(this instanceof o))return new o;i.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}n.inherits(o,i),e.exports=o,o.blockSize=1024,o.outSize=384,o.hmacStrength=192,o.padLength=128,o.prototype._digest=function(e){return\"hex\"===e?n.toHex32(this.h.slice(0,12),\"big\"):n.split32(this.h.slice(0,12),\"big\")}},function(e,t,r){\"use strict\";var n=r(8),i=r(17),o=n.rotl32,a=n.sum32,s=n.sum32_3,f=n.sum32_4,c=i.BlockHash;function u(){if(!(this instanceof u))return new u;c.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian=\"little\"}function h(e,t,r,n){return e<=15?t^r^n:e<=31?t&r|~t&n:e<=47?(t|~r)^n:e<=63?t&n|r&~n:t^(r|~n)}function l(e){return e<=15?0:e<=31?1518500249:e<=47?1859775393:e<=63?2400959708:2840853838}function d(e){return e<=15?1352829926:e<=31?1548603684:e<=47?1836072691:e<=63?2053994217:0}n.inherits(u,c),t.ripemd160=u,u.blockSize=512,u.outSize=160,u.hmacStrength=192,u.padLength=64,u.prototype._update=function(e,t){for(var r=this.h[0],n=this.h[1],i=this.h[2],c=this.h[3],u=this.h[4],v=r,m=n,_=i,w=c,E=u,A=0;A<80;A++){var S=a(o(f(r,h(A,n,i,c),e[p[A]+t],l(A)),y[A]),u);r=u,u=c,c=o(i,10),i=n,n=S,S=a(o(f(v,h(79-A,m,_,w),e[b[A]+t],d(A)),g[A]),E),v=E,E=w,w=o(_,10),_=m,m=S}S=s(this.h[1],i,w),this.h[1]=s(this.h[2],c,E),this.h[2]=s(this.h[3],u,v),this.h[3]=s(this.h[4],r,m),this.h[4]=s(this.h[0],n,_),this.h[0]=S},u.prototype._digest=function(e){return\"hex\"===e?n.toHex32(this.h,\"little\"):n.split32(this.h,\"little\")};var p=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],b=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],y=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],g=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]},function(e,t,r){\"use strict\";var n=r(8),i=r(11);function o(e,t,r){if(!(this instanceof o))return new o(e,t,r);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(n.toArray(t,r))}e.exports=o,o.prototype._init=function(e){e.length>this.blockSize&&(e=(new this.Hash).update(e).digest()),i(e.length<=this.blockSize);for(var t=e.length;t<this.blockSize;t++)e.push(0);for(t=0;t<e.length;t++)e[t]^=54;for(this.inner=(new this.Hash).update(e),t=0;t<e.length;t++)e[t]^=106;this.outer=(new this.Hash).update(e)},o.prototype.update=function(e,t){return this.inner.update(e,t),this},o.prototype.digest=function(e){return this.outer.update(this.inner.digest()),this.outer.digest(e)}},function(e,t){e.exports={doubles:{step:4,points:[[\"e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a\",\"f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821\"],[\"8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508\",\"11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf\"],[\"175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739\",\"d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695\"],[\"363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640\",\"4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9\"],[\"8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c\",\"4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36\"],[\"723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda\",\"96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f\"],[\"eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa\",\"5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999\"],[\"100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0\",\"cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09\"],[\"e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d\",\"9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d\"],[\"feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d\",\"e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088\"],[\"da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1\",\"9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d\"],[\"53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0\",\"5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8\"],[\"8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047\",\"10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a\"],[\"385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862\",\"283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453\"],[\"6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7\",\"7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160\"],[\"3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd\",\"56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0\"],[\"85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83\",\"7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6\"],[\"948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a\",\"53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589\"],[\"6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8\",\"bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17\"],[\"e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d\",\"4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda\"],[\"e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725\",\"7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd\"],[\"213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754\",\"4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2\"],[\"4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c\",\"17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6\"],[\"fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6\",\"6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f\"],[\"76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39\",\"c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01\"],[\"c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891\",\"893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3\"],[\"d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b\",\"febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f\"],[\"b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03\",\"2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7\"],[\"e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d\",\"eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78\"],[\"a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070\",\"7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1\"],[\"90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4\",\"e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150\"],[\"8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da\",\"662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82\"],[\"e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11\",\"1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc\"],[\"8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e\",\"efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b\"],[\"e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41\",\"2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51\"],[\"b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef\",\"67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45\"],[\"d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8\",\"db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120\"],[\"324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d\",\"648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84\"],[\"4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96\",\"35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d\"],[\"9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd\",\"ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d\"],[\"6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5\",\"9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8\"],[\"a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266\",\"40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8\"],[\"7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71\",\"34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac\"],[\"928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac\",\"c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f\"],[\"85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751\",\"1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962\"],[\"ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e\",\"493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907\"],[\"827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241\",\"c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec\"],[\"eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3\",\"be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d\"],[\"e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f\",\"4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414\"],[\"1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19\",\"aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd\"],[\"146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be\",\"b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0\"],[\"fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9\",\"6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811\"],[\"da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2\",\"8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1\"],[\"a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13\",\"7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c\"],[\"174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c\",\"ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73\"],[\"959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba\",\"2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd\"],[\"d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151\",\"e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405\"],[\"64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073\",\"d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589\"],[\"8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458\",\"38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e\"],[\"13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b\",\"69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27\"],[\"bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366\",\"d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1\"],[\"8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa\",\"40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482\"],[\"8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0\",\"620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945\"],[\"dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787\",\"7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573\"],[\"f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e\",\"ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82\"]]},naf:{wnd:7,points:[[\"f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9\",\"388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672\"],[\"2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4\",\"d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6\"],[\"5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc\",\"6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da\"],[\"acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe\",\"cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37\"],[\"774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb\",\"d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b\"],[\"f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8\",\"ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81\"],[\"d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e\",\"581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58\"],[\"defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34\",\"4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77\"],[\"2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c\",\"85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a\"],[\"352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5\",\"321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c\"],[\"2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f\",\"2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67\"],[\"9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714\",\"73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402\"],[\"daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729\",\"a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55\"],[\"c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db\",\"2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482\"],[\"6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4\",\"e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82\"],[\"1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5\",\"b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396\"],[\"605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479\",\"2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49\"],[\"62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d\",\"80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf\"],[\"80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f\",\"1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a\"],[\"7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb\",\"d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7\"],[\"d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9\",\"eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933\"],[\"49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963\",\"758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a\"],[\"77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74\",\"958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6\"],[\"f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530\",\"e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37\"],[\"463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b\",\"5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e\"],[\"f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247\",\"cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6\"],[\"caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1\",\"cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476\"],[\"2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120\",\"4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40\"],[\"7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435\",\"91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61\"],[\"754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18\",\"673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683\"],[\"e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8\",\"59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5\"],[\"186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb\",\"3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b\"],[\"df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f\",\"55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417\"],[\"5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143\",\"efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868\"],[\"290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba\",\"e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a\"],[\"af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45\",\"f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6\"],[\"766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a\",\"744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996\"],[\"59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e\",\"c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e\"],[\"f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8\",\"e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d\"],[\"7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c\",\"30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2\"],[\"948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519\",\"e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e\"],[\"7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab\",\"100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437\"],[\"3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca\",\"ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311\"],[\"d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf\",\"8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4\"],[\"1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610\",\"68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575\"],[\"733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4\",\"f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d\"],[\"15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c\",\"d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d\"],[\"a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940\",\"edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629\"],[\"e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980\",\"a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06\"],[\"311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3\",\"66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374\"],[\"34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf\",\"9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee\"],[\"f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63\",\"4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1\"],[\"d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448\",\"fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b\"],[\"32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf\",\"5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661\"],[\"7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5\",\"8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6\"],[\"ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6\",\"8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e\"],[\"16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5\",\"5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d\"],[\"eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99\",\"f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc\"],[\"78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51\",\"f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4\"],[\"494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5\",\"42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c\"],[\"a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5\",\"204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b\"],[\"c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997\",\"4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913\"],[\"841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881\",\"73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154\"],[\"5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5\",\"39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865\"],[\"36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66\",\"d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc\"],[\"336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726\",\"ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224\"],[\"8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede\",\"6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e\"],[\"1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94\",\"60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6\"],[\"85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31\",\"3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511\"],[\"29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51\",\"b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b\"],[\"a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252\",\"ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2\"],[\"4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5\",\"cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c\"],[\"d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b\",\"6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3\"],[\"ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4\",\"322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d\"],[\"af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f\",\"6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700\"],[\"e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889\",\"2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4\"],[\"591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246\",\"b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196\"],[\"11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984\",\"998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4\"],[\"3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a\",\"b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257\"],[\"cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030\",\"bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13\"],[\"c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197\",\"6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096\"],[\"c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593\",\"c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38\"],[\"a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef\",\"21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f\"],[\"347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38\",\"60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448\"],[\"da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a\",\"49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a\"],[\"c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111\",\"5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4\"],[\"4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502\",\"7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437\"],[\"3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea\",\"be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7\"],[\"cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26\",\"8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d\"],[\"b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986\",\"39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a\"],[\"d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e\",\"62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54\"],[\"48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4\",\"25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77\"],[\"dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda\",\"ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517\"],[\"6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859\",\"cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10\"],[\"e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f\",\"f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125\"],[\"eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c\",\"6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e\"],[\"13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942\",\"fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1\"],[\"ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a\",\"1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2\"],[\"b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80\",\"5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423\"],[\"ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d\",\"438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8\"],[\"8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1\",\"cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758\"],[\"52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63\",\"c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375\"],[\"e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352\",\"6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d\"],[\"7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193\",\"ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec\"],[\"5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00\",\"9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0\"],[\"32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58\",\"ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c\"],[\"e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7\",\"d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4\"],[\"8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8\",\"c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f\"],[\"4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e\",\"67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649\"],[\"3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d\",\"cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826\"],[\"674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b\",\"299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5\"],[\"d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f\",\"f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87\"],[\"30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6\",\"462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b\"],[\"be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297\",\"62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc\"],[\"93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a\",\"7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c\"],[\"b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c\",\"ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f\"],[\"d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52\",\"4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a\"],[\"d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb\",\"bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46\"],[\"463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065\",\"bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f\"],[\"7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917\",\"603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03\"],[\"74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9\",\"cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08\"],[\"30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3\",\"553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8\"],[\"9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57\",\"712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373\"],[\"176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66\",\"ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3\"],[\"75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8\",\"9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8\"],[\"809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721\",\"9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1\"],[\"1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180\",\"4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9\"]]}}},function(e,t,r){\"use strict\";var n=r(3),i=r(155),o=r(5),a=r(37),s=r(63),f=o.assert,c=r(156),u=r(157);function h(e){if(!(this instanceof h))return new h(e);\"string\"==typeof e&&(f(a.hasOwnProperty(e),\"Unknown curve \"+e),e=a[e]),e instanceof a.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}e.exports=h,h.prototype.keyPair=function(e){return new c(this,e)},h.prototype.keyFromPrivate=function(e,t){return c.fromPrivate(this,e,t)},h.prototype.keyFromPublic=function(e,t){return c.fromPublic(this,e,t)},h.prototype.genKeyPair=function(e){e||(e={});for(var t=new i({hash:this.hash,pers:e.pers,persEnc:e.persEnc||\"utf8\",entropy:e.entropy||s(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||\"utf8\",nonce:this.n.toArray()}),r=this.n.byteLength(),o=this.n.sub(new n(2));;){var a=new n(t.generate(r));if(!(a.cmp(o)>0))return a.iaddn(1),this.keyFromPrivate(a)}},h.prototype._truncateToN=function(e,t){var r=8*e.byteLength()-this.n.bitLength();return r>0&&(e=e.ushrn(r)),!t&&e.cmp(this.n)>=0?e.sub(this.n):e},h.prototype.sign=function(e,t,r,o){\"object\"==typeof r&&(o=r,r=null),o||(o={}),t=this.keyFromPrivate(t,r),e=this._truncateToN(new n(e,16));for(var a=this.n.byteLength(),s=t.getPrivate().toArray(\"be\",a),f=e.toArray(\"be\",a),c=new i({hash:this.hash,entropy:s,nonce:f,pers:o.pers,persEnc:o.persEnc||\"utf8\"}),h=this.n.sub(new n(1)),l=0;;l++){var d=o.k?o.k(l):new n(c.generate(this.n.byteLength()));if(!((d=this._truncateToN(d,!0)).cmpn(1)<=0||d.cmp(h)>=0)){var p=this.g.mul(d);if(!p.isInfinity()){var b=p.getX(),y=b.umod(this.n);if(0!==y.cmpn(0)){var g=d.invm(this.n).mul(y.mul(t.getPrivate()).iadd(e));if(0!==(g=g.umod(this.n)).cmpn(0)){var v=(p.getY().isOdd()?1:0)|(0!==b.cmp(y)?2:0);return o.canonical&&g.cmp(this.nh)>0&&(g=this.n.sub(g),v^=1),new u({r:y,s:g,recoveryParam:v})}}}}}},h.prototype.verify=function(e,t,r,i){e=this._truncateToN(new n(e,16)),r=this.keyFromPublic(r,i);var o=(t=new u(t,\"hex\")).r,a=t.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(a.cmpn(1)<0||a.cmp(this.n)>=0)return!1;var s,f=a.invm(this.n),c=f.mul(e).umod(this.n),h=f.mul(o).umod(this.n);return this.curve._maxwellTrick?!(s=this.g.jmulAdd(c,r.getPublic(),h)).isInfinity()&&s.eqXToP(o):!(s=this.g.mulAdd(c,r.getPublic(),h)).isInfinity()&&0===s.getX().umod(this.n).cmp(o)},h.prototype.recoverPubKey=function(e,t,r,i){f((3&r)===r,\"The recovery param is more than two bits\"),t=new u(t,i);var o=this.n,a=new n(e),s=t.r,c=t.s,h=1&r,l=r>>1;if(s.cmp(this.curve.p.umod(this.curve.n))>=0&&l)throw new Error(\"Unable to find sencond key candinate\");s=l?this.curve.pointFromX(s.add(this.curve.n),h):this.curve.pointFromX(s,h);var d=t.r.invm(o),p=o.sub(a).mul(d).umod(o),b=c.mul(d).umod(o);return this.g.mulAdd(p,s,b)},h.prototype.getKeyRecoveryParam=function(e,t,r,n){if(null!==(t=new u(t,n)).recoveryParam)return t.recoveryParam;for(var i=0;i<4;i++){var o;try{o=this.recoverPubKey(e,t,i)}catch(e){continue}if(o.eq(r))return i}throw new Error(\"Unable to find valid recovery factor\")}},function(e,t,r){\"use strict\";var n=r(38),i=r(62),o=r(11);function a(e){if(!(this instanceof a))return new a(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=i.toArray(e.entropy,e.entropyEnc||\"hex\"),r=i.toArray(e.nonce,e.nonceEnc||\"hex\"),n=i.toArray(e.pers,e.persEnc||\"hex\");o(t.length>=this.minEntropy/8,\"Not enough entropy. Minimum is: \"+this.minEntropy+\" bits\"),this._init(t,r,n)}e.exports=a,a.prototype._init=function(e,t,r){var n=e.concat(t).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i<this.V.length;i++)this.K[i]=0,this.V[i]=1;this._update(n),this._reseed=1,this.reseedInterval=281474976710656},a.prototype._hmac=function(){return new n.hmac(this.hash,this.K)},a.prototype._update=function(e){var t=this._hmac().update(this.V).update([0]);e&&(t=t.update(e)),this.K=t.digest(),this.V=this._hmac().update(this.V).digest(),e&&(this.K=this._hmac().update(this.V).update([1]).update(e).digest(),this.V=this._hmac().update(this.V).digest())},a.prototype.reseed=function(e,t,r,n){\"string\"!=typeof t&&(n=r,r=t,t=null),e=i.toArray(e,t),r=i.toArray(r,n),o(e.length>=this.minEntropy/8,\"Not enough entropy. Minimum is: \"+this.minEntropy+\" bits\"),this._update(e.concat(r||[])),this._reseed=1},a.prototype.generate=function(e,t,r,n){if(this._reseed>this.reseedInterval)throw new Error(\"Reseed is required\");\"string\"!=typeof t&&(n=r,r=t,t=null),r&&(r=i.toArray(r,n||\"hex\"),this._update(r));for(var o=[];o.length<e;)this.V=this._hmac().update(this.V).digest(),o=o.concat(this.V);var a=o.slice(0,e);return this._update(r),this._reseed++,i.encode(a,t)}},function(e,t,r){\"use strict\";var n=r(3),i=r(5).assert;function o(e,t){this.ec=e,this.priv=null,this.pub=null,t.priv&&this._importPrivate(t.priv,t.privEnc),t.pub&&this._importPublic(t.pub,t.pubEnc)}e.exports=o,o.fromPublic=function(e,t,r){return t instanceof o?t:new o(e,{pub:t,pubEnc:r})},o.fromPrivate=function(e,t,r){return t instanceof o?t:new o(e,{priv:t,privEnc:r})},o.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:\"Invalid public key\"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:\"Public key * N != O\"}:{result:!1,reason:\"Public key is not a point\"}},o.prototype.getPublic=function(e,t){return\"string\"==typeof e&&(t=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),t?this.pub.encode(t,e):this.pub},o.prototype.getPrivate=function(e){return\"hex\"===e?this.priv.toString(16,2):this.priv},o.prototype._importPrivate=function(e,t){this.priv=new n(e,t||16),this.priv=this.priv.umod(this.ec.curve.n)},o.prototype._importPublic=function(e,t){if(e.x||e.y)return\"mont\"===this.ec.curve.type?i(e.x,\"Need x coordinate\"):\"short\"!==this.ec.curve.type&&\"edwards\"!==this.ec.curve.type||i(e.x&&e.y,\"Need both x and y coordinate\"),void(this.pub=this.ec.curve.point(e.x,e.y));this.pub=this.ec.curve.decodePoint(e,t)},o.prototype.derive=function(e){return e.mul(this.priv).getX()},o.prototype.sign=function(e,t,r){return this.ec.sign(e,this,t,r)},o.prototype.verify=function(e,t){return this.ec.verify(e,t,this)},o.prototype.inspect=function(){return\"<Key priv: \"+(this.priv&&this.priv.toString(16,2))+\" pub: \"+(this.pub&&this.pub.inspect())+\" >\"}},function(e,t,r){\"use strict\";var n=r(3),i=r(5),o=i.assert;function a(e,t){if(e instanceof a)return e;this._importDER(e,t)||(o(e.r&&e.s,\"Signature without r or s\"),this.r=new n(e.r,16),this.s=new n(e.s,16),void 0===e.recoveryParam?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}function s(){this.place=0}function f(e,t){var r=e[t.place++];if(!(128&r))return r;for(var n=15&r,i=0,o=0,a=t.place;o<n;o++,a++)i<<=8,i|=e[a];return t.place=a,i}function c(e){for(var t=0,r=e.length-1;!e[t]&&!(128&e[t+1])&&t<r;)t++;return 0===t?e:e.slice(t)}function u(e,t){if(t<128)e.push(t);else{var r=1+(Math.log(t)/Math.LN2>>>3);for(e.push(128|r);--r;)e.push(t>>>(r<<3)&255);e.push(t)}}e.exports=a,a.prototype._importDER=function(e,t){e=i.toArray(e,t);var r=new s;if(48!==e[r.place++])return!1;if(f(e,r)+r.place!==e.length)return!1;if(2!==e[r.place++])return!1;var o=f(e,r),a=e.slice(r.place,o+r.place);if(r.place+=o,2!==e[r.place++])return!1;var c=f(e,r);if(e.length!==c+r.place)return!1;var u=e.slice(r.place,c+r.place);return 0===a[0]&&128&a[1]&&(a=a.slice(1)),0===u[0]&&128&u[1]&&(u=u.slice(1)),this.r=new n(a),this.s=new n(u),this.recoveryParam=null,!0},a.prototype.toDER=function(e){var t=this.r.toArray(),r=this.s.toArray();for(128&t[0]&&(t=[0].concat(t)),128&r[0]&&(r=[0].concat(r)),t=c(t),r=c(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];u(n,t.length),(n=n.concat(t)).push(2),u(n,r.length);var o=n.concat(r),a=[48];return u(a,o.length),a=a.concat(o),i.encode(a,e)}},function(e,t,r){\"use strict\";var n=r(38),i=r(37),o=r(5),a=o.assert,s=o.parseBytes,f=r(159),c=r(160);function u(e){if(a(\"ed25519\"===e,\"only tested with ed25519 so far\"),!(this instanceof u))return new u(e);e=i[e].curve;this.curve=e,this.g=e.g,this.g.precompute(e.n.bitLength()+1),this.pointClass=e.point().constructor,this.encodingLength=Math.ceil(e.n.bitLength()/8),this.hash=n.sha512}e.exports=u,u.prototype.sign=function(e,t){e=s(e);var r=this.keyFromSecret(t),n=this.hashInt(r.messagePrefix(),e),i=this.g.mul(n),o=this.encodePoint(i),a=this.hashInt(o,r.pubBytes(),e).mul(r.priv()),f=n.add(a).umod(this.curve.n);return this.makeSignature({R:i,S:f,Rencoded:o})},u.prototype.verify=function(e,t,r){e=s(e),t=this.makeSignature(t);var n=this.keyFromPublic(r),i=this.hashInt(t.Rencoded(),n.pubBytes(),e),o=this.g.mul(t.S());return t.R().add(n.pub().mul(i)).eq(o)},u.prototype.hashInt=function(){for(var e=this.hash(),t=0;t<arguments.length;t++)e.update(arguments[t]);return o.intFromLE(e.digest()).umod(this.curve.n)},u.prototype.keyFromPublic=function(e){return f.fromPublic(this,e)},u.prototype.keyFromSecret=function(e){return f.fromSecret(this,e)},u.prototype.makeSignature=function(e){return e instanceof c?e:new c(this,e)},u.prototype.encodePoint=function(e){var t=e.getY().toArray(\"le\",this.encodingLength);return t[this.encodingLength-1]|=e.getX().isOdd()?128:0,t},u.prototype.decodePoint=function(e){var t=(e=o.parseBytes(e)).length-1,r=e.slice(0,t).concat(-129&e[t]),n=0!=(128&e[t]),i=o.intFromLE(r);return this.curve.pointFromY(i,n)},u.prototype.encodeInt=function(e){return e.toArray(\"le\",this.encodingLength)},u.prototype.decodeInt=function(e){return o.intFromLE(e)},u.prototype.isPoint=function(e){return e instanceof this.pointClass}},function(e,t,r){\"use strict\";var n=r(5),i=n.assert,o=n.parseBytes,a=n.cachedProperty;function s(e,t){this.eddsa=e,this._secret=o(t.secret),e.isPoint(t.pub)?this._pub=t.pub:this._pubBytes=o(t.pub)}s.fromPublic=function(e,t){return t instanceof s?t:new s(e,{pub:t})},s.fromSecret=function(e,t){return t instanceof s?t:new s(e,{secret:t})},s.prototype.secret=function(){return this._secret},a(s,\"pubBytes\",(function(){return this.eddsa.encodePoint(this.pub())})),a(s,\"pub\",(function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())})),a(s,\"privBytes\",(function(){var e=this.eddsa,t=this.hash(),r=e.encodingLength-1,n=t.slice(0,e.encodingLength);return n[0]&=248,n[r]&=127,n[r]|=64,n})),a(s,\"priv\",(function(){return this.eddsa.decodeInt(this.privBytes())})),a(s,\"hash\",(function(){return this.eddsa.hash().update(this.secret()).digest()})),a(s,\"messagePrefix\",(function(){return this.hash().slice(this.eddsa.encodingLength)})),s.prototype.sign=function(e){return i(this._secret,\"KeyPair can only verify\"),this.eddsa.sign(e,this)},s.prototype.verify=function(e,t){return this.eddsa.verify(e,t,this)},s.prototype.getSecret=function(e){return i(this._secret,\"KeyPair is public only\"),n.encode(this.secret(),e)},s.prototype.getPublic=function(e){return n.encode(this.pubBytes(),e)},e.exports=s},function(e,t,r){\"use strict\";var n=r(3),i=r(5),o=i.assert,a=i.cachedProperty,s=i.parseBytes;function f(e,t){this.eddsa=e,\"object\"!=typeof t&&(t=s(t)),Array.isArray(t)&&(t={R:t.slice(0,e.encodingLength),S:t.slice(e.encodingLength)}),o(t.R&&t.S,\"Signature without R or S\"),e.isPoint(t.R)&&(this._R=t.R),t.S instanceof n&&(this._S=t.S),this._Rencoded=Array.isArray(t.R)?t.R:t.Rencoded,this._Sencoded=Array.isArray(t.S)?t.S:t.Sencoded}a(f,\"S\",(function(){return this.eddsa.decodeInt(this.Sencoded())})),a(f,\"R\",(function(){return this.eddsa.decodePoint(this.Rencoded())})),a(f,\"Rencoded\",(function(){return this.eddsa.encodePoint(this.R())})),a(f,\"Sencoded\",(function(){return this.eddsa.encodeInt(this.S())})),f.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},f.prototype.toHex=function(){return i.encode(this.toBytes(),\"hex\").toUpperCase()},e.exports=f},function(e,t,r){\"use strict\";\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/var n=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError(\"Object.assign cannot be called with null or undefined\");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String(\"abc\");if(e[5]=\"de\",\"5\"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},r=0;r<10;r++)t[\"_\"+String.fromCharCode(r)]=r;if(\"0123456789\"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(\"\"))return!1;var n={};return\"abcdefghijklmnopqrst\".split(\"\").forEach((function(e){n[e]=e})),\"abcdefghijklmnopqrst\"===Object.keys(Object.assign({},n)).join(\"\")}catch(e){return!1}}()?Object.assign:function(e,t){for(var r,s,f=a(e),c=1;c<arguments.length;c++){for(var u in r=Object(arguments[c]))i.call(r,u)&&(f[u]=r[u]);if(n){s=n(r);for(var h=0;h<s.length;h++)o.call(r,s[h])&&(f[s[h]]=r[s[h]])}}return f}},function(e,t,r){var n=r(71);e.exports=function(e){return\"string\"!=typeof e?e:n(e)?e.slice(2):e}},function(e,t,r){const n=r(39),i=r(164),o=1e3;function a(e,t){return new Promise(r=>{const n=setTimeout(r,e);n.unref&&t&&n.unref()})}e.exports=class extends i{constructor(e={}){if(!e.provider)throw new Error(\"PollingBlockTracker - no provider specified.\");const t=e.pollingInterval||20*o,r=e.retryTimeout||t/10,n=void 0===e.keepEventLoopActive||e.keepEventLoopActive,i=e.setSkipCacheFlag||!1;super(Object.assign({blockResetDuration:t},e)),this._provider=e.provider,this._pollingInterval=t,this._retryTimeout=r,this._keepEventLoopActive=n,this._setSkipCacheFlag=i}async checkForLatestBlock(){return await this._updateLatestBlock(),await this.getLatestBlock()}_start(){this._performSync().catch(e=>this.emit(\"error\",e))}async _performSync(){for(;this._isRunning;)try{await this._updateLatestBlock(),await a(this._pollingInterval,!this._keepEventLoopActive)}catch(e){const t=new Error(`PollingBlockTracker - encountered an error while attempting to update latest block:\\n${e.stack}`);try{this.emit(\"error\",t)}catch(e){console.error(t)}await a(this._retryTimeout,!this._keepEventLoopActive)}}async _updateLatestBlock(){const e=await this._fetchLatestBlock();this._newPotentialLatest(e)}async _fetchLatestBlock(){const e={jsonrpc:\"2.0\",id:1,method:\"eth_blockNumber\",params:[]};this._setSkipCacheFlag&&(e.skipCache=!0);const t=await n(t=>this._provider.sendAsync(e,t))();if(t.error)throw new Error(`PollingBlockTracker - encountered error fetching block:\\n${t.error}`);return t.result}}},function(e,t,r){r(72),r(39);const n=r(40),i=1e3,o=(e,t)=>e+t,a=[\"sync\",\"latest\"];function s(e){return Number.parseInt(e,16)}e.exports=class extends n{constructor(e={}){super(),this._blockResetDuration=e.blockResetDuration||20*i,this._blockResetTimeout,this._currentBlock=null,this._isRunning=!1,this._onNewListener=this._onNewListener.bind(this),this._onRemoveListener=this._onRemoveListener.bind(this),this._resetCurrentBlock=this._resetCurrentBlock.bind(this),this._setupInternalEvents()}isRunning(){return this._isRunning}getCurrentBlock(){return this._currentBlock}async getLatestBlock(){if(this._currentBlock)return this._currentBlock;return await new Promise(e=>this.once(\"latest\",e))}removeAllListeners(e){e?super.removeAllListeners(e):super.removeAllListeners(),this._setupInternalEvents(),this._onRemoveListener()}_start(){}_end(){}_setupInternalEvents(){this.removeListener(\"newListener\",this._onNewListener),this.removeListener(\"removeListener\",this._onRemoveListener),this.on(\"newListener\",this._onNewListener),this.on(\"removeListener\",this._onRemoveListener)}_onNewListener(e,t){a.includes(e)&&this._maybeStart()}_onRemoveListener(e,t){this._getBlockTrackerEventCount()>0||this._maybeEnd()}_maybeStart(){this._isRunning||(this._isRunning=!0,this._cancelBlockResetTimeout(),this._start())}_maybeEnd(){this._isRunning&&(this._isRunning=!1,this._setupBlockResetTimeout(),this._end())}_getBlockTrackerEventCount(){return a.map(e=>this.listenerCount(e)).reduce(o)}_newPotentialLatest(e){const t=this._currentBlock;t&&s(e)<=s(t)||this._setCurrentBlock(e)}_setCurrentBlock(e){const t=this._currentBlock;this._currentBlock=e,this.emit(\"latest\",e),this.emit(\"sync\",{oldBlock:t,newBlock:e})}_setupBlockResetTimeout(){this._cancelBlockResetTimeout(),this._blockResetTimeout=setTimeout(this._resetCurrentBlock,this._blockResetDuration),this._blockResetTimeout.unref&&this._blockResetTimeout.unref()}_cancelBlockResetTimeout(){clearTimeout(this._blockResetTimeout)}_resetCurrentBlock(){this._currentBlock=null}}},function(e,t){e.exports=function(e){var t=(e=e||{}).max||Number.MAX_SAFE_INTEGER,r=void 0!==e.start?e.start:Math.floor(Math.random()*t);return function(){return r%=t,r++}}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){return function(t,r,o){return e(n.default,t,(0,i.default)(r),o)}};var n=o(r(74)),i=o(r(12));function o(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t,r){var n=r(41),i=r(78),o=\"[object AsyncFunction]\",a=\"[object Function]\",s=\"[object GeneratorFunction]\",f=\"[object Proxy]\";e.exports=function(e){if(!i(e))return!1;var t=n(e);return t==a||t==s||t==o||t==f}},function(e,t,r){var n=r(75),i=Object.prototype,o=i.hasOwnProperty,a=i.toString,s=n?n.toStringTag:void 0;e.exports=function(e){var t=o.call(e,s),r=e[s];try{e[s]=void 0;var n=!0}catch(e){}var i=a.call(e);return n&&(t?e[s]=r:delete e[s]),i}},function(e,t){var r=Object.prototype.toString;e.exports=function(e){return r.call(e)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r,o){(0,n.default)(t)(e,(0,i.default)(r),o)};var n=o(r(81)),i=o(r(12));function o(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){if((0,n.default)(e))return function(e){var t=-1,r=e.length;return function(){return++t<r?{value:e[t],key:t}:null}}(e);var t=(0,i.default)(e);return t?function(e){var t=-1;return function(){var r=e.next();return r.done?null:(t++,{value:r.value,key:t})}}(t):(r=e,a=(0,o.default)(r),s=-1,f=a.length,function(){var e=a[++s];return s<f?{value:r[e],key:e}:null});var r,a,s,f};var n=a(r(30)),i=a(r(172)),o=a(r(173));function a(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){return n&&e[n]&&e[n]()};var n=\"function\"==typeof Symbol&&Symbol.iterator;e.exports=t.default},function(e,t,r){var n=r(174),i=r(185),o=r(30);e.exports=function(e){return o(e)?n(e):i(e)}},function(e,t,r){var n=r(175),i=r(176),o=r(82),a=r(178),s=r(180),f=r(181),c=Object.prototype.hasOwnProperty;e.exports=function(e,t){var r=o(e),u=!r&&i(e),h=!r&&!u&&a(e),l=!r&&!u&&!h&&f(e),d=r||u||h||l,p=d?n(e.length,String):[],b=p.length;for(var y in e)!t&&!c.call(e,y)||d&&(\"length\"==y||h&&(\"offset\"==y||\"parent\"==y)||l&&(\"buffer\"==y||\"byteLength\"==y||\"byteOffset\"==y)||s(y,b))||p.push(y);return p}},function(e,t){e.exports=function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}},function(e,t,r){var n=r(177),i=r(43),o=Object.prototype,a=o.hasOwnProperty,s=o.propertyIsEnumerable,f=n(function(){return arguments}())?n:function(e){return i(e)&&a.call(e,\"callee\")&&!s.call(e,\"callee\")};e.exports=f},function(e,t,r){var n=r(41),i=r(43),o=\"[object Arguments]\";e.exports=function(e){return i(e)&&n(e)==o}},function(e,t,r){(function(e){var n=r(76),i=r(179),o=t&&!t.nodeType&&t,a=o&&\"object\"==typeof e&&e&&!e.nodeType&&e,s=a&&a.exports===o?n.Buffer:void 0,f=(s?s.isBuffer:void 0)||i;e.exports=f}).call(this,r(27)(e))},function(e,t){e.exports=function(){return!1}},function(e,t){var r=9007199254740991,n=/^(?:0|[1-9]\\d*)$/;e.exports=function(e,t){var i=typeof e;return!!(t=null==t?r:t)&&(\"number\"==i||\"symbol\"!=i&&n.test(e))&&e>-1&&e%1==0&&e<t}},function(e,t,r){var n=r(182),i=r(183),o=r(184),a=o&&o.isTypedArray,s=a?i(a):n;e.exports=s},function(e,t,r){var n=r(41),i=r(79),o=r(43),a={};a[\"[object Float32Array]\"]=a[\"[object Float64Array]\"]=a[\"[object Int8Array]\"]=a[\"[object Int16Array]\"]=a[\"[object Int32Array]\"]=a[\"[object Uint8Array]\"]=a[\"[object Uint8ClampedArray]\"]=a[\"[object Uint16Array]\"]=a[\"[object Uint32Array]\"]=!0,a[\"[object Arguments]\"]=a[\"[object Array]\"]=a[\"[object ArrayBuffer]\"]=a[\"[object Boolean]\"]=a[\"[object DataView]\"]=a[\"[object Date]\"]=a[\"[object Error]\"]=a[\"[object Function]\"]=a[\"[object Map]\"]=a[\"[object Number]\"]=a[\"[object Object]\"]=a[\"[object RegExp]\"]=a[\"[object Set]\"]=a[\"[object String]\"]=a[\"[object WeakMap]\"]=!1,e.exports=function(e){return o(e)&&i(e.length)&&!!a[n(e)]}},function(e,t){e.exports=function(e){return function(t){return e(t)}}},function(e,t,r){(function(e){var n=r(77),i=t&&!t.nodeType&&t,o=i&&\"object\"==typeof e&&e&&!e.nodeType&&e,a=o&&o.exports===i&&n.process,s=function(){try{var e=o&&o.require&&o.require(\"util\").types;return e||a&&a.binding&&a.binding(\"util\")}catch(e){}}();e.exports=s}).call(this,r(27)(e))},function(e,t,r){var n=r(186),i=r(187),o=Object.prototype.hasOwnProperty;e.exports=function(e){if(!n(e))return i(e);var t=[];for(var r in Object(e))o.call(e,r)&&\"constructor\"!=r&&t.push(r);return t}},function(e,t){var r=Object.prototype;e.exports=function(e){var t=e&&e.constructor;return e===(\"function\"==typeof t&&t.prototype||r)}},function(e,t,r){var n=r(188)(Object.keys,Object);e.exports=n},function(e,t){e.exports=function(e,t){return function(r){return e(t(r))}}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){return(0,i.default)((function(t,r){var i;try{i=e.apply(this,t)}catch(e){return r(e)}(0,n.default)(i)&&\"function\"==typeof i.then?i.then((function(e){s(r,null,e)}),(function(e){s(r,e.message?e:new Error(e))})):r(null,i)}))};var n=a(r(78)),i=a(r(190)),o=a(r(191));function a(e){return e&&e.__esModule?e:{default:e}}function s(e,t,r){try{e(t,r)}catch(e){(0,o.default)(f,e)}}function f(e){throw e}e.exports=t.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){return function(){var t=(0,o.default)(arguments),r=t.pop();e.call(this,t,r)}};var n,i=r(31),o=(n=i)&&n.__esModule?n:{default:n};e.exports=t.default},function(e,t,r){\"use strict\";(function(e,n){Object.defineProperty(t,\"__esModule\",{value:!0}),t.hasNextTick=t.hasSetImmediate=void 0,t.fallback=u,t.wrap=h;var i,o=r(31),a=(i=o)&&i.__esModule?i:{default:i};var s,f=t.hasSetImmediate=\"function\"==typeof e&&e,c=t.hasNextTick=\"object\"==typeof n&&\"function\"==typeof n.nextTick;function u(e){setTimeout(e,0)}function h(e){return function(t){var r=(0,a.default)(arguments,1);e((function(){t.apply(null,r)}))}}s=f?e:c?n.nextTick:u,t.default=h(s)}).call(this,r(26).setImmediate,r(9))},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r,o){o=o||n.default,t=t||[];var a=[],s=0,f=(0,i.default)(r);e(t,(function(e,t,r){var n=s++;f(e,(function(e,t){a[n]=t,r(e)}))}),(function(e){o(e,a)}))};var n=o(r(18)),i=o(r(12));function o(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=o(r(194)),i=o(r(83));function o(e){return e&&e.__esModule?e:{default:e}}t.default=(0,i.default)(n.default,1),e.exports=t.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r,a){(0,n.default)(t)(e,(0,i.default)((0,o.default)(r)),a)};var n=a(r(81)),i=a(r(195)),o=a(r(12));function a(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){return function(t,r,n){return e(t,n)}},e.exports=t.default},function(e,t,r){\"use strict\";var n=r(6).EventEmitter,i=r(2).inherits;function o(){n.call(this),this.isLocked=!0}e.exports=o,i(o,n),o.prototype.go=function(){this.isLocked=!1,this.emit(\"unlock\")},o.prototype.stop=function(){this.isLocked=!0,this.emit(\"lock\")},o.prototype.await=function(e){this.isLocked?this.once(\"unlock\",e):setTimeout(e)}},function(e,t,r){t.parse=r(198),t.stringify=r(199)},function(e,t){var r,n,i,o,a={'\"':'\"',\"\\\\\":\"\\\\\",\"/\":\"/\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\\t\"},s=function(e){throw{name:\"SyntaxError\",message:e,at:r,text:i}},f=function(e){return e&&e!==n&&s(\"Expected '\"+e+\"' instead of '\"+n+\"'\"),n=i.charAt(r),r+=1,n},c=function(){var e,t=\"\";for(\"-\"===n&&(t=\"-\",f(\"-\"));n>=\"0\"&&n<=\"9\";)t+=n,f();if(\".\"===n)for(t+=\".\";f()&&n>=\"0\"&&n<=\"9\";)t+=n;if(\"e\"===n||\"E\"===n)for(t+=n,f(),\"-\"!==n&&\"+\"!==n||(t+=n,f());n>=\"0\"&&n<=\"9\";)t+=n,f();if(e=+t,isFinite(e))return e;s(\"Bad number\")},u=function(){var e,t,r,i=\"\";if('\"'===n)for(;f();){if('\"'===n)return f(),i;if(\"\\\\\"===n)if(f(),\"u\"===n){for(r=0,t=0;t<4&&(e=parseInt(f(),16),isFinite(e));t+=1)r=16*r+e;i+=String.fromCharCode(r)}else{if(\"string\"!=typeof a[n])break;i+=a[n]}else i+=n}s(\"Bad string\")},h=function(){for(;n&&n<=\" \";)f()};o=function(){switch(h(),n){case\"{\":return function(){var e,t={};if(\"{\"===n){if(f(\"{\"),h(),\"}\"===n)return f(\"}\"),t;for(;n;){if(e=u(),h(),f(\":\"),Object.hasOwnProperty.call(t,e)&&s('Duplicate key \"'+e+'\"'),t[e]=o(),h(),\"}\"===n)return f(\"}\"),t;f(\",\"),h()}}s(\"Bad object\")}();case\"[\":return function(){var e=[];if(\"[\"===n){if(f(\"[\"),h(),\"]\"===n)return f(\"]\"),e;for(;n;){if(e.push(o()),h(),\"]\"===n)return f(\"]\"),e;f(\",\"),h()}}s(\"Bad array\")}();case'\"':return u();case\"-\":return c();default:return n>=\"0\"&&n<=\"9\"?c():function(){switch(n){case\"t\":return f(\"t\"),f(\"r\"),f(\"u\"),f(\"e\"),!0;case\"f\":return f(\"f\"),f(\"a\"),f(\"l\"),f(\"s\"),f(\"e\"),!1;case\"n\":return f(\"n\"),f(\"u\"),f(\"l\"),f(\"l\"),null}s(\"Unexpected '\"+n+\"'\")}()}},e.exports=function(e,t){var a;return i=e,r=0,n=\" \",a=o(),h(),n&&s(\"Syntax error\"),\"function\"==typeof t?function e(r,n){var i,o,a=r[n];if(a&&\"object\"==typeof a)for(i in a)Object.prototype.hasOwnProperty.call(a,i)&&(void 0!==(o=e(a,i))?a[i]=o:delete a[i]);return t.call(r,n,a)}({\"\":a},\"\"):a}},function(e,t){var r,n,i,o=/[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,a={\"\\b\":\"\\\\b\",\"\\t\":\"\\\\t\",\"\\n\":\"\\\\n\",\"\\f\":\"\\\\f\",\"\\r\":\"\\\\r\",'\"':'\\\\\"',\"\\\\\":\"\\\\\\\\\"};function s(e){return o.lastIndex=0,o.test(e)?'\"'+e.replace(o,(function(e){var t=a[e];return\"string\"==typeof t?t:\"\\\\u\"+(\"0000\"+e.charCodeAt(0).toString(16)).slice(-4)}))+'\"':'\"'+e+'\"'}e.exports=function(e,t,o){var a;if(r=\"\",n=\"\",\"number\"==typeof o)for(a=0;a<o;a+=1)n+=\" \";else\"string\"==typeof o&&(n=o);if(i=t,t&&\"function\"!=typeof t&&(\"object\"!=typeof t||\"number\"!=typeof t.length))throw new Error(\"JSON.stringify\");return function e(t,o){var a,f,c,u,h,l=r,d=o[t];switch(d&&\"object\"==typeof d&&\"function\"==typeof d.toJSON&&(d=d.toJSON(t)),\"function\"==typeof i&&(d=i.call(o,t,d)),typeof d){case\"string\":return s(d);case\"number\":return isFinite(d)?String(d):\"null\";case\"boolean\":case\"null\":return String(d);case\"object\":if(!d)return\"null\";if(r+=n,h=[],\"[object Array]\"===Object.prototype.toString.apply(d)){for(u=d.length,a=0;a<u;a+=1)h[a]=e(a,d)||\"null\";return c=0===h.length?\"[]\":r?\"[\\n\"+r+h.join(\",\\n\"+r)+\"\\n\"+l+\"]\":\"[\"+h.join(\",\")+\"]\",r=l,c}if(i&&\"object\"==typeof i)for(u=i.length,a=0;a<u;a+=1)\"string\"==typeof(f=i[a])&&(c=e(f,d))&&h.push(s(f)+(r?\": \":\":\")+c);else for(f in d)Object.prototype.hasOwnProperty.call(d,f)&&(c=e(f,d))&&h.push(s(f)+(r?\": \":\":\")+c);return c=0===h.length?\"{}\":r?\"{\\n\"+r+h.join(\",\\n\"+r)+\"\\n\"+l+\"}\":\"{\"+h.join(\",\")+\"}\",r=l,c}}(\"\",{\"\":e})}},function(e,t,r){\"use strict\";var n=3;e.exports=function(){var e=(new Date).getTime()*Math.pow(10,n),t=Math.floor(Math.random()*Math.pow(10,n));return e+t}},function(e,t,r){const n=r(202),i=r(46),o=[void 0,null,\"<nil>\"];e.exports=function(e={}){const{blockTracker:t}=e;if(!t)throw new Error(\"createBlockCacheMiddleware - No BlockTracker specified\");const r=new a,o={perma:r,block:r,fork:r};return i(async(e,i,a)=>{if(e.skipCache)return a();const s=n.cacheTypeForPayload(e),f=o[s];if(!f)return a();if(!f.canCacheRequest(e))return a();let c,u=n.blockTagForPayload(e);if(u||(u=\"latest\"),\"earliest\"===u)c=\"0x00\";else if(\"latest\"===u){const e=await t.getLatestBlock();r.clearBefore(e),c=e}else c=u;const h=await f.get(e,c);void 0===h?(await a(),await f.set(e,c,i.result)):i.result=h})};class a{constructor(){this.cache={}}getBlockCacheForPayload(e,t){const r=Number.parseInt(t,16);let n=this.cache[r];if(!n){const e={};this.cache[r]=e,n=e}return n}async get(e,t){const r=this.getBlockCacheForPayload(e,t);if(r)return r[n.cacheIdentifierForPayload(e,!0)]}async set(e,t,r){this.canCacheResult(e,r)&&(this.getBlockCacheForPayload(e,t)[n.cacheIdentifierForPayload(e,!0)]=r)}canCacheRequest(e){if(!n.canCache(e))return!1;return\"pending\"!==n.blockTagForPayload(e)}canCacheResult(e,t){if(!o.includes(t))return!!(![\"eth_getTransactionByHash\",\"eth_getTransactionReceipt\"].includes(e.method)||t&&t.blockHash&&\"0x0000000000000000000000000000000000000000000000000000000000000000\"!==t.blockHash)}clearBefore(e){const t=this,r=Number.parseInt(e,16);Object.keys(t.cache).map(Number).filter(e=>e<r).forEach(e=>delete t.cache[e])}}},function(e,t,r){const n=r(85);function i(e){return\"never\"!==s(e)}function o(e){const t=a(e);return t>=e.params.length?e.params:\"eth_getBlockByNumber\"===e.method?e.params.slice(1):e.params.slice(0,t)}function a(e){switch(e.method){case\"eth_getStorageAt\":return 2;case\"eth_getBalance\":case\"eth_getCode\":case\"eth_getTransactionCount\":case\"eth_call\":return 1;case\"eth_getBlockByNumber\":return 0;default:return}}function s(e){switch(e.method){case\"web3_clientVersion\":case\"web3_sha3\":case\"eth_protocolVersion\":case\"eth_getBlockTransactionCountByHash\":case\"eth_getUncleCountByBlockHash\":case\"eth_getCode\":case\"eth_getBlockByHash\":case\"eth_getTransactionByHash\":case\"eth_getTransactionByBlockHashAndIndex\":case\"eth_getTransactionReceipt\":case\"eth_getUncleByBlockHashAndIndex\":case\"eth_getCompilers\":case\"eth_compileLLL\":case\"eth_compileSolidity\":case\"eth_compileSerpent\":case\"shh_version\":case\"test_permaCache\":return\"perma\";case\"eth_getBlockByNumber\":case\"eth_getBlockTransactionCountByNumber\":case\"eth_getUncleCountByBlockNumber\":case\"eth_getTransactionByBlockNumberAndIndex\":case\"eth_getUncleByBlockNumberAndIndex\":case\"test_forkCache\":return\"fork\";case\"eth_gasPrice\":case\"eth_blockNumber\":case\"eth_getBalance\":case\"eth_getStorageAt\":case\"eth_getTransactionCount\":case\"eth_call\":case\"eth_estimateGas\":case\"eth_getFilterLogs\":case\"eth_getLogs\":case\"test_blockCache\":return\"block\";case\"net_version\":case\"net_peerCount\":case\"net_listening\":case\"eth_syncing\":case\"eth_sign\":case\"eth_coinbase\":case\"eth_mining\":case\"eth_hashrate\":case\"eth_accounts\":case\"eth_sendTransaction\":case\"eth_sendRawTransaction\":case\"eth_newFilter\":case\"eth_newBlockFilter\":case\"eth_newPendingTransactionFilter\":case\"eth_uninstallFilter\":case\"eth_getFilterChanges\":case\"eth_getWork\":case\"eth_submitWork\":case\"eth_submitHashrate\":case\"db_putString\":case\"db_getString\":case\"db_putHex\":case\"db_getHex\":case\"shh_post\":case\"shh_newIdentity\":case\"shh_hasIdentity\":case\"shh_newGroup\":case\"shh_addToGroup\":case\"shh_newFilter\":case\"shh_uninstallFilter\":case\"shh_getFilterChanges\":case\"shh_getMessages\":case\"test_neverCache\":return\"never\"}}e.exports={cacheIdentifierForPayload:function(e,t){const r=t?o(e):e.params;return i(e)?e.method+\":\"+n(r):null},canCache:i,blockTagForPayload:function(e){let t=a(e);if(t>=e.params.length)return null;return e.params[t]},paramsWithoutBlockTag:o,blockTagParamIndex:a,cacheTypeForPayload:s}},function(e,t,r){\"use strict\";var n=r(204),i=r(205);e.exports=function(e){if(!n(e.then))throw new TypeError(\"Expected a promise\");return function(t){e.then((function(e){i(t,null,e)}),(function(e){i(t,e)}))}}},function(e,t,r){\"use strict\";var n=Object.prototype.toString;e.exports=function(e){return\"[object Function]\"===n.call(e)}},function(e,t,r){\"use strict\";(function(t){e.exports=\"function\"==typeof t?t:function(){var e=[].slice.apply(arguments);e.splice(1,0,0),setTimeout.apply(null,e)}}).call(this,r(26).setImmediate)},function(e,t,r){\"use strict\";(function(e,r){class n{constructor(e){this.tasks=[],this.count=e}sched(){if(this.count>0&&this.tasks.length>0){this.count--;let e=this.tasks.shift();if(void 0===e)throw\"Unexpected undefined value in tasks list\";e()}}acquire(){return new Promise((t,n)=>{this.tasks.push(()=>{var e=!1;t(()=>{e||(e=!0,this.count++,this.sched())})}),e&&e.nextTick?e.nextTick(this.sched.bind(this)):r(this.sched.bind(this))})}use(e){return this.acquire().then(t=>e().then(e=>(t(),e)).catch(e=>{throw t(),e}))}}t.Semaphore=n;t.Mutex=class extends n{constructor(){super(1)}}}).call(this,r(9),r(26).setImmediate)},function(e,t){e.exports=function(e){return(t,r,n,i)=>{const o=e[t.method];return void 0===o?n():\"function\"==typeof o?o(t,r,n,i):(r.result=o,void i())}}},function(e,t,r){const n=r(72),i=r(39),o=r(209),{bnToHex:a,hexToInt:s,incrementHexInt:f,minBlockRef:c,blockRefIsNumber:u}=r(20);e.exports=class extends o{constructor({provider:e,params:t}){super(),this.type=\"log\",this.ethQuery=new n(e),this.params=Object.assign({fromBlock:\"latest\",toBlock:\"latest\",address:void 0,topics:[]},t),this.params.address&&(Array.isArray(this.params.address)||(this.params.address=[this.params.address]),this.params.address=this.params.address.map(e=>e.toLowerCase()))}async initialize({currentBlock:e}){let t=this.params.fromBlock;[\"latest\",\"pending\"].includes(t)&&(t=e),\"earliest\"===t&&(t=\"0x0\"),this.params.fromBlock=t;const r=c(this.params.toBlock,e),n=Object.assign({},this.params,{toBlock:r}),i=await this._fetchLogs(n);this.addInitialResults(i)}async update({oldBlock:e,newBlock:t}){const r=t;let n;n=e?f(e):t;const i=Object.assign({},this.params,{fromBlock:n,toBlock:r}),o=(await this._fetchLogs(i)).filter(e=>this.matchLog(e));this.addResults(o)}async _fetchLogs(e){return await i(t=>this.ethQuery.getLogs(e,t))()}matchLog(e){if(s(this.params.fromBlock)>=s(e.blockNumber))return!1;if(u(this.params.toBlock)&&s(this.params.toBlock)<=s(e.blockNumber))return!1;const t=e.address&&e.address.toLowerCase();return!(this.params.address&&t&&!this.params.address.includes(t))&&this.params.topics.every((t,r)=>{let n=e.topics[r];if(!n)return!1;n=n.toLowerCase();let i=Array.isArray(t)?t:[t];return!!i.includes(null)||(i=i.map(e=>e.toLowerCase())).includes(n)})}}},function(e,t,r){const n=r(47);e.exports=class extends n{constructor(){super(),this.allResults=[]}async update(){throw new Error(\"BaseFilterWithHistory - no update method specified\")}addResults(e){this.allResults=this.allResults.concat(e),super.addResults(e)}addInitialResults(e){this.allResults=this.allResults.concat(e),super.addInitialResults(e)}getAllResults(){return this.allResults}}},function(e,t,r){const n=r(47),i=r(48),{incrementHexInt:o}=r(20);e.exports=class extends n{constructor({provider:e,params:t}){super(),this.type=\"block\",this.provider=e}async update({oldBlock:e,newBlock:t}){const r=t,n=o(e),a=(await i({provider:this.provider,fromBlock:n,toBlock:r})).map(e=>e.hash);this.addResults(a)}}},function(e,t,r){const n=r(212),i=r(47),o=r(48),{incrementHexInt:a}=r(20);e.exports=class extends i{constructor({provider:e,params:t}){super(),this.type=\"tx\",this.provider=e}async update({oldBlock:e,newBlock:t}){const r=e,i=a(e),s=await o({provider:this.provider,fromBlock:i,toBlock:r}),f=n(s,e=>e.transactions);this.addResults(f)}}},function(e,t,r){(function(e,r){var n=200,i=\"Expected a function\",o=\"__lodash_hash_undefined__\",a=1,s=2,f=1/0,c=9007199254740991,u=\"[object Arguments]\",h=\"[object Array]\",l=\"[object Boolean]\",d=\"[object Date]\",p=\"[object Error]\",b=\"[object Function]\",y=\"[object GeneratorFunction]\",g=\"[object Map]\",v=\"[object Number]\",m=\"[object Object]\",_=\"[object RegExp]\",w=\"[object Set]\",E=\"[object String]\",A=\"[object Symbol]\",S=\"[object ArrayBuffer]\",k=\"[object DataView]\",x=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,I=/^\\w*$/,M=/^\\./,T=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,P=/\\\\(\\\\)?/g,B=/^\\[object .+?Constructor\\]$/,L=/^(?:0|[1-9]\\d*)$/,R={};R[\"[object Float32Array]\"]=R[\"[object Float64Array]\"]=R[\"[object Int8Array]\"]=R[\"[object Int16Array]\"]=R[\"[object Int32Array]\"]=R[\"[object Uint8Array]\"]=R[\"[object Uint8ClampedArray]\"]=R[\"[object Uint16Array]\"]=R[\"[object Uint32Array]\"]=!0,R[u]=R[h]=R[S]=R[l]=R[k]=R[d]=R[p]=R[b]=R[g]=R[v]=R[m]=R[_]=R[w]=R[E]=R[\"[object WeakMap]\"]=!1;var O=\"object\"==typeof e&&e&&e.Object===Object&&e,C=\"object\"==typeof self&&self&&self.Object===Object&&self,N=O||C||Function(\"return this\")(),j=t&&!t.nodeType&&t,D=j&&\"object\"==typeof r&&r&&!r.nodeType&&r,q=D&&D.exports===j&&O.process,U=function(){try{return q&&q.binding(\"util\")}catch(e){}}(),F=U&&U.isTypedArray;function z(e,t){for(var r=-1,n=e?e.length:0,i=Array(n);++r<n;)i[r]=t(e[r],r,e);return i}function K(e,t){for(var r=-1,n=t.length,i=e.length;++r<n;)e[i+r]=t[r];return e}function H(e,t){for(var r=-1,n=e?e.length:0;++r<n;)if(t(e[r],r,e))return!0;return!1}function V(e){var t=!1;if(null!=e&&\"function\"!=typeof e.toString)try{t=!!(e+\"\")}catch(e){}return t}function Y(e){var t=-1,r=Array(e.size);return e.forEach((function(e,n){r[++t]=[n,e]})),r}function G(e){var t=-1,r=Array(e.size);return e.forEach((function(e){r[++t]=e})),r}var $,W,Z,J=Array.prototype,X=Function.prototype,Q=Object.prototype,ee=N[\"__core-js_shared__\"],te=($=/[^.]+$/.exec(ee&&ee.keys&&ee.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+$:\"\",re=X.toString,ne=Q.hasOwnProperty,ie=Q.toString,oe=RegExp(\"^\"+re.call(ne).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),ae=N.Symbol,se=N.Uint8Array,fe=Q.propertyIsEnumerable,ce=J.splice,ue=ae?ae.isConcatSpreadable:void 0,he=(W=Object.keys,Z=Object,function(e){return W(Z(e))}),le=Ge(N,\"DataView\"),de=Ge(N,\"Map\"),pe=Ge(N,\"Promise\"),be=Ge(N,\"Set\"),ye=Ge(N,\"WeakMap\"),ge=Ge(Object,\"create\"),ve=rt(le),me=rt(de),_e=rt(pe),we=rt(be),Ee=rt(ye),Ae=ae?ae.prototype:void 0,Se=Ae?Ae.valueOf:void 0,ke=Ae?Ae.toString:void 0;function xe(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function Ie(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function Me(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function Te(e){var t=-1,r=e?e.length:0;for(this.__data__=new Me;++t<r;)this.add(e[t])}function Pe(e){this.__data__=new Ie(e)}function Be(e,t){var r=at(e)||ot(e)?function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}(e.length,String):[],n=r.length,i=!!n;for(var o in e)!t&&!ne.call(e,o)||i&&(\"length\"==o||Ze(o,n))||r.push(o);return r}function Le(e,t){for(var r=e.length;r--;)if(it(e[r][0],t))return r;return-1}xe.prototype.clear=function(){this.__data__=ge?ge(null):{}},xe.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},xe.prototype.get=function(e){var t=this.__data__;if(ge){var r=t[e];return r===o?void 0:r}return ne.call(t,e)?t[e]:void 0},xe.prototype.has=function(e){var t=this.__data__;return ge?void 0!==t[e]:ne.call(t,e)},xe.prototype.set=function(e,t){return this.__data__[e]=ge&&void 0===t?o:t,this},Ie.prototype.clear=function(){this.__data__=[]},Ie.prototype.delete=function(e){var t=this.__data__,r=Le(t,e);return!(r<0)&&(r==t.length-1?t.pop():ce.call(t,r,1),!0)},Ie.prototype.get=function(e){var t=this.__data__,r=Le(t,e);return r<0?void 0:t[r][1]},Ie.prototype.has=function(e){return Le(this.__data__,e)>-1},Ie.prototype.set=function(e,t){var r=this.__data__,n=Le(r,e);return n<0?r.push([e,t]):r[n][1]=t,this},Me.prototype.clear=function(){this.__data__={hash:new xe,map:new(de||Ie),string:new xe}},Me.prototype.delete=function(e){return Ye(this,e).delete(e)},Me.prototype.get=function(e){return Ye(this,e).get(e)},Me.prototype.has=function(e){return Ye(this,e).has(e)},Me.prototype.set=function(e,t){return Ye(this,e).set(e,t),this},Te.prototype.add=Te.prototype.push=function(e){return this.__data__.set(e,o),this},Te.prototype.has=function(e){return this.__data__.has(e)},Pe.prototype.clear=function(){this.__data__=new Ie},Pe.prototype.delete=function(e){return this.__data__.delete(e)},Pe.prototype.get=function(e){return this.__data__.get(e)},Pe.prototype.has=function(e){return this.__data__.has(e)},Pe.prototype.set=function(e,t){var r=this.__data__;if(r instanceof Ie){var i=r.__data__;if(!de||i.length<n-1)return i.push([e,t]),this;r=this.__data__=new Me(i)}return r.set(e,t),this};var Re,Oe,Ce=(Re=function(e,t){return e&&Ne(e,t,pt)},function(e,t){if(null==e)return e;if(!st(e))return Re(e,t);for(var r=e.length,n=Oe?r:-1,i=Object(e);(Oe?n--:++n<r)&&!1!==t(i[n],n,i););return e});var Ne=function(e){return function(t,r,n){for(var i=-1,o=Object(t),a=n(t),s=a.length;s--;){var f=a[e?s:++i];if(!1===r(o[f],f,o))break}return t}}();function je(e,t){for(var r=0,n=(t=Je(t,e)?[t]:He(t)).length;null!=e&&r<n;)e=e[tt(t[r++])];return r&&r==n?e:void 0}function De(e,t){return null!=e&&t in Object(e)}function qe(e,t,r,n,i){return e===t||(null==e||null==t||!ut(e)&&!ht(t)?e!=e&&t!=t:function(e,t,r,n,i,o){var f=at(e),c=at(t),b=h,y=h;f||(b=(b=$e(e))==u?m:b);c||(y=(y=$e(t))==u?m:y);var x=b==m&&!V(e),I=y==m&&!V(t),M=b==y;if(M&&!x)return o||(o=new Pe),f||dt(e)?Ve(e,t,r,n,i,o):function(e,t,r,n,i,o,f){switch(r){case k:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case S:return!(e.byteLength!=t.byteLength||!n(new se(e),new se(t)));case l:case d:case v:return it(+e,+t);case p:return e.name==t.name&&e.message==t.message;case _:case E:return e==t+\"\";case g:var c=Y;case w:var u=o&s;if(c||(c=G),e.size!=t.size&&!u)return!1;var h=f.get(e);if(h)return h==t;o|=a,f.set(e,t);var b=Ve(c(e),c(t),n,i,o,f);return f.delete(e),b;case A:if(Se)return Se.call(e)==Se.call(t)}return!1}(e,t,b,r,n,i,o);if(!(i&s)){var T=x&&ne.call(e,\"__wrapped__\"),P=I&&ne.call(t,\"__wrapped__\");if(T||P){var B=T?e.value():e,L=P?t.value():t;return o||(o=new Pe),r(B,L,n,i,o)}}if(!M)return!1;return o||(o=new Pe),function(e,t,r,n,i,o){var a=i&s,f=pt(e),c=f.length,u=pt(t).length;if(c!=u&&!a)return!1;var h=c;for(;h--;){var l=f[h];if(!(a?l in t:ne.call(t,l)))return!1}var d=o.get(e);if(d&&o.get(t))return d==t;var p=!0;o.set(e,t),o.set(t,e);var b=a;for(;++h<c;){l=f[h];var y=e[l],g=t[l];if(n)var v=a?n(g,y,l,t,e,o):n(y,g,l,e,t,o);if(!(void 0===v?y===g||r(y,g,n,i,o):v)){p=!1;break}b||(b=\"constructor\"==l)}if(p&&!b){var m=e.constructor,_=t.constructor;m!=_&&\"constructor\"in e&&\"constructor\"in t&&!(\"function\"==typeof m&&m instanceof m&&\"function\"==typeof _&&_ instanceof _)&&(p=!1)}return o.delete(e),o.delete(t),p}(e,t,r,n,i,o)}(e,t,qe,r,n,i))}function Ue(e){return!(!ut(e)||function(e){return!!te&&te in e}(e))&&(ft(e)||V(e)?oe:B).test(rt(e))}function Fe(e){return\"function\"==typeof e?e:null==e?bt:\"object\"==typeof e?at(e)?function(e,t){if(Je(e)&&Xe(t))return Qe(tt(e),t);return function(r){var n=function(e,t,r){var n=null==e?void 0:je(e,t);return void 0===n?r:n}(r,e);return void 0===n&&n===t?function(e,t){return null!=e&&function(e,t,r){t=Je(t,e)?[t]:He(t);var n,i=-1,o=t.length;for(;++i<o;){var a=tt(t[i]);if(!(n=null!=e&&r(e,a)))break;e=e[a]}if(n)return n;return!!(o=e?e.length:0)&&ct(o)&&Ze(a,o)&&(at(e)||ot(e))}(e,t,De)}(r,e):qe(t,n,void 0,a|s)}}(e[0],e[1]):function(e){var t=function(e){var t=pt(e),r=t.length;for(;r--;){var n=t[r],i=e[n];t[r]=[n,i,Xe(i)]}return t}(e);if(1==t.length&&t[0][2])return Qe(t[0][0],t[0][1]);return function(r){return r===e||function(e,t,r,n){var i=r.length,o=i,f=!n;if(null==e)return!o;for(e=Object(e);i--;){var c=r[i];if(f&&c[2]?c[1]!==e[c[0]]:!(c[0]in e))return!1}for(;++i<o;){var u=(c=r[i])[0],h=e[u],l=c[1];if(f&&c[2]){if(void 0===h&&!(u in e))return!1}else{var d=new Pe;if(n)var p=n(h,l,u,e,t,d);if(!(void 0===p?qe(l,h,n,a|s,d):p))return!1}}return!0}(r,e,t)}}(e):Je(t=e)?(r=tt(t),function(e){return null==e?void 0:e[r]}):function(e){return function(t){return je(t,e)}}(t);var t,r}function ze(e){if(r=(t=e)&&t.constructor,n=\"function\"==typeof r&&r.prototype||Q,t!==n)return he(e);var t,r,n,i=[];for(var o in Object(e))ne.call(e,o)&&\"constructor\"!=o&&i.push(o);return i}function Ke(e,t){var r=-1,n=st(e)?Array(e.length):[];return Ce(e,(function(e,i,o){n[++r]=t(e,i,o)})),n}function He(e){return at(e)?e:et(e)}function Ve(e,t,r,n,i,o){var f=i&s,c=e.length,u=t.length;if(c!=u&&!(f&&u>c))return!1;var h=o.get(e);if(h&&o.get(t))return h==t;var l=-1,d=!0,p=i&a?new Te:void 0;for(o.set(e,t),o.set(t,e);++l<c;){var b=e[l],y=t[l];if(n)var g=f?n(y,b,l,t,e,o):n(b,y,l,e,t,o);if(void 0!==g){if(g)continue;d=!1;break}if(p){if(!H(t,(function(e,t){if(!p.has(t)&&(b===e||r(b,e,n,i,o)))return p.add(t)}))){d=!1;break}}else if(b!==y&&!r(b,y,n,i,o)){d=!1;break}}return o.delete(e),o.delete(t),d}function Ye(e,t){var r,n,i=e.__data__;return(\"string\"==(n=typeof(r=t))||\"number\"==n||\"symbol\"==n||\"boolean\"==n?\"__proto__\"!==r:null===r)?i[\"string\"==typeof t?\"string\":\"hash\"]:i.map}function Ge(e,t){var r=function(e,t){return null==e?void 0:e[t]}(e,t);return Ue(r)?r:void 0}var $e=function(e){return ie.call(e)};function We(e){return at(e)||ot(e)||!!(ue&&e&&e[ue])}function Ze(e,t){return!!(t=null==t?c:t)&&(\"number\"==typeof e||L.test(e))&&e>-1&&e%1==0&&e<t}function Je(e,t){if(at(e))return!1;var r=typeof e;return!(\"number\"!=r&&\"symbol\"!=r&&\"boolean\"!=r&&null!=e&&!lt(e))||(I.test(e)||!x.test(e)||null!=t&&e in Object(t))}function Xe(e){return e==e&&!ut(e)}function Qe(e,t){return function(r){return null!=r&&(r[e]===t&&(void 0!==t||e in Object(r)))}}(le&&$e(new le(new ArrayBuffer(1)))!=k||de&&$e(new de)!=g||pe&&\"[object Promise]\"!=$e(pe.resolve())||be&&$e(new be)!=w||ye&&\"[object WeakMap]\"!=$e(new ye))&&($e=function(e){var t=ie.call(e),r=t==m?e.constructor:void 0,n=r?rt(r):void 0;if(n)switch(n){case ve:return k;case me:return g;case _e:return\"[object Promise]\";case we:return w;case Ee:return\"[object WeakMap]\"}return t});var et=nt((function(e){var t;e=null==(t=e)?\"\":function(e){if(\"string\"==typeof e)return e;if(lt(e))return ke?ke.call(e):\"\";var t=e+\"\";return\"0\"==t&&1/e==-f?\"-0\":t}(t);var r=[];return M.test(e)&&r.push(\"\"),e.replace(T,(function(e,t,n,i){r.push(n?i.replace(P,\"$1\"):t||e)})),r}));function tt(e){if(\"string\"==typeof e||lt(e))return e;var t=e+\"\";return\"0\"==t&&1/e==-f?\"-0\":t}function rt(e){if(null!=e){try{return re.call(e)}catch(e){}try{return e+\"\"}catch(e){}}return\"\"}function nt(e,t){if(\"function\"!=typeof e||t&&\"function\"!=typeof t)throw new TypeError(i);var r=function(){var n=arguments,i=t?t.apply(this,n):n[0],o=r.cache;if(o.has(i))return o.get(i);var a=e.apply(this,n);return r.cache=o.set(i,a),a};return r.cache=new(nt.Cache||Me),r}function it(e,t){return e===t||e!=e&&t!=t}function ot(e){return function(e){return ht(e)&&st(e)}(e)&&ne.call(e,\"callee\")&&(!fe.call(e,\"callee\")||ie.call(e)==u)}nt.Cache=Me;var at=Array.isArray;function st(e){return null!=e&&ct(e.length)&&!ft(e)}function ft(e){var t=ut(e)?ie.call(e):\"\";return t==b||t==y}function ct(e){return\"number\"==typeof e&&e>-1&&e%1==0&&e<=c}function ut(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function ht(e){return!!e&&\"object\"==typeof e}function lt(e){return\"symbol\"==typeof e||ht(e)&&ie.call(e)==A}var dt=F?function(e){return function(t){return e(t)}}(F):function(e){return ht(e)&&ct(e.length)&&!!R[ie.call(e)]};function pt(e){return st(e)?Be(e):ze(e)}function bt(e){return e}r.exports=function(e,t){return function e(t,r,n,i,o){var a=-1,s=t.length;for(n||(n=We),o||(o=[]);++a<s;){var f=t[a];r>0&&n(f)?r>1?e(f,r-1,n,i,o):K(o,f):i||(o[o.length]=f)}return o}(function(e,t){return(at(e)?z:Ke)(e,Fe(t))}(e,t),1)}}).call(this,r(4),r(27)(e))},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){if(t=(0,o.default)(t||i.default),!(0,n.default)(e))return t(new Error(\"First argument to waterfall must be an array of functions\"));if(!e.length)return t();var r=0;function c(t){var n=(0,f.default)(e[r++]);t.push((0,s.default)(u)),n.apply(null,t)}function u(n){if(n||r===e.length)return t.apply(null,arguments);c((0,a.default)(arguments,1))}c([])};var n=c(r(82)),i=c(r(18)),o=c(r(42)),a=c(r(31)),s=c(r(44)),f=c(r(12));function c(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){(0,i.default)(n.default,e,t)};var n=o(r(74)),i=o(r(215));function o(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r){r=r||n.default;var s=(0,i.default)(t)?[]:{};e(t,(function(e,t,r){(0,a.default)(e)((function(e,n){arguments.length>2&&(n=(0,o.default)(arguments,1)),s[t]=n,r(e)}))}),(function(e){r(e,s)}))};var n=s(r(18)),i=s(r(30)),o=s(r(31)),a=s(r(12));function s(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t,r){const n=r(15),i=r(217);function o(e){const t=new Error(\"Expect argument to be non-empty array\");if(\"object\"!=typeof e||!e.length)throw t;const r=e.map((function(e){return\"bytes\"===e.type?n.toBuffer(e.value):e.value})),o=e.map((function(e){return e.type})),a=e.map((function(e){if(!e.name)throw t;return e.type+\" \"+e.name}));return i.soliditySHA3([\"bytes32\",\"bytes32\"],[i.soliditySHA3(new Array(e.length).fill(\"string\"),a),i.soliditySHA3(o,r)])}function a(e,t){const r=n.toBuffer(t),i=n.fromRpcSig(r);return n.ecrecover(e,i.v,i.r,i.s)}function s(e){const t=n.toBuffer(e.data);return a(n.hashPersonalMessage(t),e.sig)}function f(e,t){for(var r=\"\"+e;r.length<t;)r=\"0\"+r;return r}e.exports={concatSig:function(e,t,r){const i=n.fromSigned(t),o=n.fromSigned(r),a=n.bufferToInt(e),s=f(n.toUnsigned(i).toString(\"hex\"),64),c=f(n.toUnsigned(o).toString(\"hex\"),64),u=n.stripHexPrefix(n.intToHex(a));return n.addHexPrefix(s.concat(c,u)).toString(\"hex\")},normalize:function(e){if(e){if(\"number\"==typeof e){const t=n.toBuffer(e);e=n.bufferToHex(t)}if(\"string\"!=typeof e){var t=\"eth-sig-util.normalize() requires hex string or integer input.\";throw new Error(t+=\" received \"+typeof e+\": \"+e)}return n.addHexPrefix(e.toLowerCase())}},personalSign:function(e,t){var r=n.toBuffer(t.data),i=n.hashPersonalMessage(r),o=n.ecsign(i,e);return n.bufferToHex(this.concatSig(o.v,o.r,o.s))},recoverPersonalSignature:function(e){const t=s(e),r=n.publicToAddress(t);return n.bufferToHex(r)},extractPublicKey:function(e){return\"0x\"+s(e).toString(\"hex\")},typedSignatureHash:function(e){const t=o(e);return n.bufferToHex(t)},signTypedData:function(e,t){const r=o(t.data),i=n.ecsign(r,e);return n.bufferToHex(this.concatSig(i.v,i.r,i.s))},recoverTypedSignature:function(e){const t=a(o(e.data),e.sig),r=n.publicToAddress(t);return n.bufferToHex(r)}}},function(e,t,r){e.exports=r(218)},function(e,t,r){(function(t){const n=r(219),i=r(3);var o=function(){};function a(e){return e.startsWith(\"int[\")?\"int256\"+e.slice(3):\"int\"===e?\"int256\":e.startsWith(\"uint[\")?\"uint256\"+e.slice(4):\"uint\"===e?\"uint256\":e.startsWith(\"fixed[\")?\"fixed128x128\"+e.slice(5):\"fixed\"===e?\"fixed128x128\":e.startsWith(\"ufixed[\")?\"ufixed128x128\"+e.slice(6):\"ufixed\"===e?\"ufixed128x128\":e}function s(e){return parseInt(/^\\D+(\\d+)$/.exec(e)[1],10)}function f(e){var t=/^\\D+(\\d+)x(\\d+)$/.exec(e);return[parseInt(t[1],10),parseInt(t[2],10)]}function c(e){var t=e.match(/(.*)\\[(.*?)\\]$/);return t?\"\"===t[2]?\"dynamic\":parseInt(t[2],10):null}function u(e){var t=typeof e;if(\"string\"===t)return n.isHexPrefixed(e)?new i(n.stripHexPrefix(e),16):new i(e,10);if(\"number\"===t)return new i(e);if(e.toArray)return e;throw new Error(\"Argument is not a number\")}function h(e){var t=/^(\\w+)\\((.*)\\)$/.exec(e);if(3!==t.length)throw new Error(\"Invalid method signature\");var r=/^(.+)\\):\\((.+)$/.exec(t[2]);if(null!==r&&3===r.length)return{method:t[1],args:r[1].split(\",\"),retargs:r[2].split(\",\")};var n=t[2].split(\",\");return 1===n.length&&\"\"===n[0]&&(n=[]),{method:t[1],args:n}}function l(e,r){var o,a,h,d;if(\"address\"===e)return l(\"uint160\",u(r));if(\"bool\"===e)return l(\"uint8\",r?1:0);if(\"string\"===e)return l(\"bytes\",t.from(r,\"utf8\"));if(y(e)){if(void 0===r.length)throw new Error(\"Not an array?\");if(\"dynamic\"!==(o=c(e))&&0!==o&&r.length>o)throw new Error(\"Elements exceed array size: \"+o);for(d in h=[],e=e.slice(0,e.lastIndexOf(\"[\")),\"string\"==typeof r&&(r=JSON.parse(r)),r)h.push(l(e,r[d]));if(\"dynamic\"===o){var p=l(\"uint256\",r.length);h.unshift(p)}return t.concat(h)}if(\"bytes\"===e)return r=t.from(r),h=t.concat([l(\"uint256\",r.length),r]),r.length%32!=0&&(h=t.concat([h,n.zeros(32-r.length%32)])),h;if(e.startsWith(\"bytes\")){if((o=s(e))<1||o>32)throw new Error(\"Invalid bytes<N> width: \"+o);return n.setLengthRight(r,32)}if(e.startsWith(\"uint\")){if((o=s(e))%8||o<8||o>256)throw new Error(\"Invalid uint<N> width: \"+o);if((a=u(r)).bitLength()>o)throw new Error(\"Supplied uint exceeds width: \"+o+\" vs \"+a.bitLength());if(a<0)throw new Error(\"Supplied uint is negative\");return a.toArrayLike(t,\"be\",32)}if(e.startsWith(\"int\")){if((o=s(e))%8||o<8||o>256)throw new Error(\"Invalid int<N> width: \"+o);if((a=u(r)).bitLength()>o)throw new Error(\"Supplied int exceeds width: \"+o+\" vs \"+a.bitLength());return a.toTwos(256).toArrayLike(t,\"be\",32)}if(e.startsWith(\"ufixed\")){if(o=f(e),(a=u(r))<0)throw new Error(\"Supplied ufixed is negative\");return l(\"uint256\",a.mul(new i(2).pow(new i(o[1]))))}if(e.startsWith(\"fixed\"))return o=f(e),l(\"int256\",u(r).mul(new i(2).pow(new i(o[1]))));throw new Error(\"Unsupported or invalid type: \"+e)}function d(e,r,n){var o,a,s,f;if(\"string\"==typeof e&&(e=p(e)),\"address\"===e.name)return d(e.rawType,r,n).toArrayLike(t,\"be\",20).toString(\"hex\");if(\"bool\"===e.name)return d(e.rawType,r,n).toString()===new i(1).toString();if(\"string\"===e.name){var c=d(e.rawType,r,n);return t.from(c,\"utf8\").toString()}if(e.isArray){for(s=[],o=e.size,\"dynamic\"===e.size&&(n=d(\"uint256\",r,n).toNumber(),o=d(\"uint256\",r,n).toNumber(),n+=32),f=0;f<o;f++){var u=d(e.subArray,r,n);s.push(u),n+=e.subArray.memoryUsage}return s}if(\"bytes\"===e.name)return n=d(\"uint256\",r,n).toNumber(),o=d(\"uint256\",r,n).toNumber(),r.slice(n+32,n+32+o);if(e.name.startsWith(\"bytes\"))return r.slice(n,n+e.size);if(e.name.startsWith(\"uint\")){if((a=new i(r.slice(n,n+32),16,\"be\")).bitLength()>e.size)throw new Error(\"Decoded int exceeds width: \"+e.size+\" vs \"+a.bitLength());return a}if(e.name.startsWith(\"int\")){if((a=new i(r.slice(n,n+32),16,\"be\").fromTwos(256)).bitLength()>e.size)throw new Error(\"Decoded uint exceeds width: \"+e.size+\" vs \"+a.bitLength());return a}if(e.name.startsWith(\"ufixed\")){if(o=new i(2).pow(new i(e.size[1])),!(a=d(\"uint256\",r,n)).mod(o).isZero())throw new Error(\"Decimals not supported yet\");return a.div(o)}if(e.name.startsWith(\"fixed\")){if(o=new i(2).pow(new i(e.size[1])),!(a=d(\"int256\",r,n)).mod(o).isZero())throw new Error(\"Decimals not supported yet\");return a.div(o)}throw new Error(\"Unsupported or invalid type: \"+e.name)}function p(e){var t,r,n;if(y(e)){t=c(e);var i=e.slice(0,e.lastIndexOf(\"[\"));return i=p(i),r={isArray:!0,name:e,size:t,memoryUsage:\"dynamic\"===t?32:i.memoryUsage*t,subArray:i}}switch(e){case\"address\":n=\"uint160\";break;case\"bool\":n=\"uint8\";break;case\"string\":n=\"bytes\"}if(r={rawType:n,name:e,memoryUsage:32},e.startsWith(\"bytes\")&&\"bytes\"!==e||e.startsWith(\"uint\")||e.startsWith(\"int\")?r.size=s(e):(e.startsWith(\"ufixed\")||e.startsWith(\"fixed\"))&&(r.size=f(e)),e.startsWith(\"bytes\")&&\"bytes\"!==e&&(r.size<1||r.size>32))throw new Error(\"Invalid bytes<N> width: \"+r.size);if((e.startsWith(\"uint\")||e.startsWith(\"int\"))&&(r.size%8||r.size<8||r.size>256))throw new Error(\"Invalid int/uint<N> width: \"+r.size);return r}function b(e){return\"string\"===e||\"bytes\"===e||\"dynamic\"===c(e)}function y(e){return e.lastIndexOf(\"]\")===e.length-1}function g(e,t){return e.startsWith(\"address\")||e.startsWith(\"bytes\")?\"0x\"+t.toString(\"hex\"):t.toString()}o.eventID=function(e,r){var i=e+\"(\"+r.map(a).join(\",\")+\")\";return n.keccak256(t.from(i))},o.methodID=function(e,t){return o.eventID(e,t).slice(0,4)},o.rawEncode=function(e,r){var n=[],i=[],o=0;e.forEach((function(e){if(y(e)){var t=c(e);o+=\"dynamic\"!==t?32*t:32}else o+=32}));for(var s=0;s<e.length;s++){var f=a(e[s]),u=l(f,r[s]);b(f)?(n.push(l(\"uint256\",o)),i.push(u),o+=u.length):n.push(u)}return t.concat(n.concat(i))},o.rawDecode=function(e,r){var n=[];r=t.from(r);for(var i=0,o=0;o<e.length;o++){var s=p(a(e[o])),f=d(s,r,i);i+=s.memoryUsage,n.push(f)}return n},o.simpleEncode=function(e){var r=Array.prototype.slice.call(arguments).slice(1),n=h(e);if(r.length!==n.args.length)throw new Error(\"Argument count mismatch\");return t.concat([o.methodID(n.method,n.args),o.rawEncode(n.args,r)])},o.simpleDecode=function(e,t){var r=h(e);if(!r.retargs)throw new Error(\"No return values in method\");return o.rawDecode(r.retargs,t)},o.stringify=function(e,t){var r=[];for(var n in e){var i=e[n],o=t[n];o=/^[^\\[]+\\[.*\\]$/.test(i)?o.map((function(e){return g(i,e)})).join(\", \"):g(i,o),r.push(o)}return r},o.solidityHexValue=function(e,r,i){var a,f;if(y(e)){var h=e.replace(/\\[.*?\\]/,\"\");if(!y(h)){var l=c(e);if(\"dynamic\"!==l&&0!==l&&r.length>l)throw new Error(\"Elements exceed array size: \"+l)}var d=r.map((function(e){return o.solidityHexValue(h,e,256)}));return t.concat(d)}if(\"bytes\"===e)return r;if(\"string\"===e)return t.from(r,\"utf8\");if(\"bool\"===e){i=i||8;var p=Array(i/4).join(\"0\");return t.from(r?p+\"1\":p+\"0\",\"hex\")}if(\"address\"===e){var b=20;return i&&(b=i/8),n.setLengthLeft(r,b)}if(e.startsWith(\"bytes\")){if((a=s(e))<1||a>32)throw new Error(\"Invalid bytes<N> width: \"+a);return n.setLengthRight(r,a)}if(e.startsWith(\"uint\")){if((a=s(e))%8||a<8||a>256)throw new Error(\"Invalid uint<N> width: \"+a);if((f=u(r)).bitLength()>a)throw new Error(\"Supplied uint exceeds width: \"+a+\" vs \"+f.bitLength());return i=i||a,f.toArrayLike(t,\"be\",i/8)}if(e.startsWith(\"int\")){if((a=s(e))%8||a<8||a>256)throw new Error(\"Invalid int<N> width: \"+a);if((f=u(r)).bitLength()>a)throw new Error(\"Supplied int exceeds width: \"+a+\" vs \"+f.bitLength());return i=i||a,f.toTwos(a).toArrayLike(t,\"be\",i/8)}throw new Error(\"Unsupported or invalid type: \"+e)},o.solidityPack=function(e,r){if(e.length!==r.length)throw new Error(\"Number of types are not matching the values\");for(var n=[],i=0;i<e.length;i++){var s=a(e[i]),f=r[i];n.push(o.solidityHexValue(s,f,null))}return t.concat(n)},o.soliditySHA3=function(e,t){return n.keccak256(o.solidityPack(e,t))},o.soliditySHA256=function(e,t){return n.sha256(o.solidityPack(e,t))},o.solidityRIPEMD160=function(e,t){return n.ripemd160(o.solidityPack(e,t),!0)},o.fromSerpent=function(e){for(var t,r=[],n=0;n<e.length;n++){var i=e[n];if(\"s\"===i)r.push(\"bytes\");else if(\"b\"===i){for(var o=\"bytes\",a=n+1;a<e.length&&((t=e[a])>=\"0\"&&t<=\"9\");)o+=e[a]-\"0\",a++;n=a-1,r.push(o)}else if(\"i\"===i)r.push(\"int256\");else{if(\"a\"!==i)throw new Error(\"Unsupported or invalid type: \"+i);r.push(\"int256[]\")}}return r},o.toSerpent=function(e){for(var t=[],r=0;r<e.length;r++){var n=e[r];if(\"bytes\"===n)t.push(\"s\");else if(n.startsWith(\"bytes\"))t.push(\"b\"+s(n));else if(\"int256\"===n)t.push(\"i\");else{if(\"int256[]\"!==n)throw new Error(\"Unsupported or invalid type: \"+n);t.push(\"a\")}}return t.join(\"\")},e.exports=o}).call(this,r(7).Buffer)},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=r(3);t.BN=n;var i=r(69);t.rlp=i;var o=r(52),a=r(57);t.secp256k1=a;var s=r(68),f=r(36),c=r(1).Buffer,u=r(70);function h(e,t){return t?e-(2*t+35):e-27}function l(e){return 0===e||1===e}Object.assign(t,u),t.MAX_INTEGER=new n(\"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",16),t.TWO_POW256=new n(\"10000000000000000000000000000000000000000000000000000000000000000\",16),t.KECCAK256_NULL_S=\"c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470\",t.KECCAK256_NULL=c.from(t.KECCAK256_NULL_S,\"hex\"),t.KECCAK256_RLP_ARRAY_S=\"1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",t.KECCAK256_RLP_ARRAY=c.from(t.KECCAK256_RLP_ARRAY_S,\"hex\"),t.KECCAK256_RLP_S=\"56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421\",t.KECCAK256_RLP=c.from(t.KECCAK256_RLP_S,\"hex\"),t.zeros=function(e){return c.allocUnsafe(e).fill(0)},t.zeroAddress=function(){var e=t.zeros(20);return t.bufferToHex(e)},t.setLengthLeft=function(e,r,n){void 0===n&&(n=!1);var i=t.zeros(r);return e=t.toBuffer(e),n?e.length<r?(e.copy(i),i):e.slice(0,r):e.length<r?(e.copy(i,r-e.length),i):e.slice(-r)},t.setLength=t.setLengthLeft,t.setLengthRight=function(e,r){return t.setLength(e,r,!0)},t.unpad=function(e){for(var t=(e=u.stripHexPrefix(e))[0];e.length>0&&\"0\"===t.toString();)t=(e=e.slice(1))[0];return e},t.stripZeros=t.unpad,t.toBuffer=function(e){if(!c.isBuffer(e))if(Array.isArray(e))e=c.from(e);else if(\"string\"==typeof e)e=t.isHexString(e)?c.from(t.padToEven(t.stripHexPrefix(e)),\"hex\"):c.from(e);else if(\"number\"==typeof e)e=t.intToBuffer(e);else if(null==e)e=c.allocUnsafe(0);else if(n.isBN(e))e=e.toArrayLike(c);else{if(!e.toArray)throw new Error(\"invalid type\");e=c.from(e.toArray())}return e},t.bufferToInt=function(e){return new n(t.toBuffer(e)).toNumber()},t.bufferToHex=function(e){return\"0x\"+(e=t.toBuffer(e)).toString(\"hex\")},t.fromSigned=function(e){return new n(e).fromTwos(256)},t.toUnsigned=function(e){return c.from(e.toTwos(256).toArray())},t.keccak=function(e,r){return void 0===r&&(r=256),e=t.toBuffer(e),r||(r=256),o(\"keccak\"+r).update(e).digest()},t.keccak256=function(e){return t.keccak(e)},t.sha256=function(e){return e=t.toBuffer(e),f(\"sha256\").update(e).digest()},t.ripemd160=function(e,r){e=t.toBuffer(e);var n=f(\"rmd160\").update(e).digest();return!0===r?t.setLength(n,32):n},t.rlphash=function(e){return t.keccak(i.encode(e))},t.isValidPrivate=function(e){return a.privateKeyVerify(e)},t.isValidPublic=function(e,t){return void 0===t&&(t=!1),64===e.length?a.publicKeyVerify(c.concat([c.from([4]),e])):!!t&&a.publicKeyVerify(e)},t.pubToAddress=function(e,r){return void 0===r&&(r=!1),e=t.toBuffer(e),r&&64!==e.length&&(e=a.publicKeyConvert(e,!1).slice(1)),s(64===e.length),t.keccak(e).slice(-20)},t.publicToAddress=t.pubToAddress,t.privateToPublic=function(e){return e=t.toBuffer(e),a.publicKeyCreate(e,!1).slice(1)},t.importPublic=function(e){return 64!==(e=t.toBuffer(e)).length&&(e=a.publicKeyConvert(e,!1).slice(1)),e},t.ecsign=function(e,t,r){var n=a.sign(e,t),i=n.recovery;return{r:n.signature.slice(0,32),s:n.signature.slice(32,64),v:r?i+(2*r+35):i+27}},t.hashPersonalMessage=function(e){var r=t.toBuffer(\"\u0019Ethereum Signed Message:\\n\"+e.length.toString());return t.keccak(c.concat([r,e]))},t.ecrecover=function(e,r,n,i,o){var s=c.concat([t.setLength(n,32),t.setLength(i,32)],64),f=h(r,o);if(!l(f))throw new Error(\"Invalid signature v value\");var u=a.recover(e,s,f);return a.publicKeyConvert(u,!1).slice(1)},t.toRpcSig=function(e,r,n,i){if(!l(h(e,i)))throw new Error(\"Invalid signature v value\");return t.bufferToHex(c.concat([t.setLengthLeft(r,32),t.setLengthLeft(n,32),t.toBuffer(e)]))},t.fromRpcSig=function(e){var r=t.toBuffer(e);if(65!==r.length)throw new Error(\"Invalid signature length\");var n=r[64];return n<27&&(n+=27),{v:n,r:r.slice(0,32),s:r.slice(32,64)}},t.privateToAddress=function(e){return t.publicToAddress(t.privateToPublic(e))},t.isValidAddress=function(e){return/^0x[0-9a-fA-F]{40}$/.test(e)},t.isZeroAddress=function(e){return t.zeroAddress()===t.addHexPrefix(e)},t.toChecksumAddress=function(e){e=u.stripHexPrefix(e).toLowerCase();for(var r=t.keccak(e).toString(\"hex\"),n=\"0x\",i=0;i<e.length;i++)parseInt(r[i],16)>=8?n+=e[i].toUpperCase():n+=e[i];return n},t.isValidChecksumAddress=function(e){return t.isValidAddress(e)&&t.toChecksumAddress(e)===e},t.generateAddress=function(e,r){e=t.toBuffer(e);var i=new n(r);return i.isZero()?t.rlphash([e,null]).slice(-20):t.rlphash([e,c.from(i.toArray())]).slice(-20)},t.generateAddress2=function(e,r,n){var i=t.toBuffer(e),o=t.toBuffer(r),a=t.toBuffer(n);return s(20===i.length),s(32===o.length),t.keccak256(c.concat([c.from(\"ff\",\"hex\"),i,o,t.keccak256(a)])).slice(-20)},t.isPrecompiled=function(e){var r=t.unpad(e);return 1===r.length&&r[0]>=1&&r[0]<=8},t.addHexPrefix=function(e){return\"string\"!=typeof e?e:u.isHexPrefixed(e)?e:\"0x\"+e},t.isValidSignature=function(e,t,r,i,o){void 0===i&&(i=!0);var a=new n(\"7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0\",16),s=new n(\"fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\",16);if(32!==t.length||32!==r.length)return!1;if(!l(h(e,o)))return!1;var f=new n(t),c=new n(r);return!(f.isZero()||f.gt(s)||c.isZero()||c.gt(s))&&(!i||1!==c.cmp(a))},t.baToJSON=function(e){if(c.isBuffer(e))return\"0x\"+e.toString(\"hex\");if(e instanceof Array){for(var r=[],n=0;n<e.length;n++)r.push(t.baToJSON(e[n]));return r}},t.defineProperties=function(e,r,n){if(e.raw=[],e._fields=[],e.toJSON=function(r){if(void 0===r&&(r=!1),r){var n={};return e._fields.forEach((function(t){n[t]=\"0x\"+e[t].toString(\"hex\")})),n}return t.baToJSON(e.raw)},e.serialize=function(){return i.encode(e.raw)},r.forEach((function(r,n){function i(){return e.raw[n]}function o(i){\"00\"!==(i=t.toBuffer(i)).toString(\"hex\")||r.allowZero||(i=c.allocUnsafe(0)),r.allowLess&&r.length?(i=t.stripZeros(i),s(r.length>=i.length,\"The field \"+r.name+\" must not have more \"+r.length+\" bytes\")):r.allowZero&&0===i.length||!r.length||s(r.length===i.length,\"The field \"+r.name+\" must have byte length of \"+r.length),e.raw[n]=i}e._fields.push(r.name),Object.defineProperty(e,r.name,{enumerable:!0,configurable:!0,get:i,set:o}),r.default&&(e[r.name]=r.default),r.alias&&Object.defineProperty(e,r.alias,{enumerable:!1,configurable:!0,set:o,get:i})})),n)if(\"string\"==typeof n&&(n=c.from(u.stripHexPrefix(n),\"hex\")),c.isBuffer(n)&&(n=i.decode(n)),Array.isArray(n)){if(n.length>e._fields.length)throw new Error(\"wrong number of fields in data\");n.forEach((function(r,n){e[e._fields[n]]=t.toBuffer(r)}))}else{if(\"object\"!=typeof n)throw new Error(\"invalid data\");var o=Object.keys(n);r.forEach((function(t){-1!==o.indexOf(t.name)&&(e[t.name]=n[t.name]),-1!==o.indexOf(t.alias)&&(e[t.alias]=n[t.alias])}))}}},function(e,t,r){(function(t){!function(r){\"use strict\";var n=function(e){setTimeout(e,0)};void 0!==t&&t&&\"function\"==typeof t.nextTick&&(n=t.nextTick),e.exports=function(e){var t={capacity:e||1,current:0,queue:[],firstHere:!1,take:function(){if(!1===t.firstHere){t.current++,t.firstHere=!0;var e=1}else e=0;var r={n:1};\"function\"==typeof arguments[0]?r.task=arguments[0]:r.n=arguments[0],arguments.length>=2&&(\"function\"==typeof arguments[1]?r.task=arguments[1]:r.n=arguments[1]);var n=r.task;if(r.task=function(){n(t.leave)},t.current+r.n-e>t.capacity)return 1===e&&(t.current--,t.firstHere=!1),t.queue.push(r);t.current+=r.n-e,r.task(t.leave),1===e&&(t.firstHere=!1)},leave:function(e){if(e=e||1,t.current-=e,t.queue.length){var r=t.queue[0];r.n+t.current>t.capacity||(t.queue.shift(),t.current+=r.n,n(r.task))}else if(t.current<0)throw new Error(\"leave called too many times.\")},available:function(e){return e=e||1,t.current+e<=t.capacity}};return t}}()}).call(this,r(9))},function(e,t,r){\"use strict\";var n=r(19);e.exports=function(e,t,r){e.sendAsync(n({method:\"eth_estimateGas\",params:[t]}),(function(e,t){if(e)return\"no contract code at given address\"===e.message?r(null,\"0xcf08\"):r(e);r(null,t.result)}))}},function(e,t,r){\"use strict\";(function(t){var n=r(15),i=r(223),o=n.BN,a=new o(\"7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0\",16),s=function(){function e(r){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),r=r||{};var i=[{name:\"nonce\",length:32,allowLess:!0,default:new t([])},{name:\"gasPrice\",length:32,allowLess:!0,default:new t([])},{name:\"gasLimit\",alias:\"gas\",length:32,allowLess:!0,default:new t([])},{name:\"to\",allowZero:!0,length:20,default:new t([])},{name:\"value\",length:32,allowLess:!0,default:new t([])},{name:\"data\",alias:\"input\",allowZero:!0,default:new t([])},{name:\"v\",allowZero:!0,default:new t([28])},{name:\"r\",length:32,allowZero:!0,allowLess:!0,default:new t([])},{name:\"s\",length:32,allowZero:!0,allowLess:!0,default:new t([])}];n.defineProperties(this,i,r),Object.defineProperty(this,\"from\",{enumerable:!0,configurable:!0,get:this.getSenderAddress.bind(this)});var o=n.bufferToInt(this.v),a=Math.floor((o-35)/2);a<0&&(a=0),this._chainId=a||r.chainId||0,this._homestead=!0}return e.prototype.toCreationAddress=function(){return\"\"===this.to.toString(\"hex\")},e.prototype.hash=function(e){void 0===e&&(e=!0);var t=void 0;if(e)t=this.raw;else if(this._chainId>0){var r=this.raw.slice();this.v=this._chainId,this.r=0,this.s=0,t=this.raw,this.raw=r}else t=this.raw.slice(0,6);return n.rlphash(t)},e.prototype.getChainId=function(){return this._chainId},e.prototype.getSenderAddress=function(){if(this._from)return this._from;var e=this.getSenderPublicKey();return this._from=n.publicToAddress(e),this._from},e.prototype.getSenderPublicKey=function(){if(!(this._senderPubKey&&this._senderPubKey.length||this.verifySignature()))throw new Error(\"Invalid Signature\");return this._senderPubKey},e.prototype.verifySignature=function(){var e=this.hash(!1);if(this._homestead&&1===new o(this.s).cmp(a))return!1;try{var t=n.bufferToInt(this.v);this._chainId>0&&(t-=2*this._chainId+8),this._senderPubKey=n.ecrecover(e,t,this.r,this.s)}catch(e){return!1}return!!this._senderPubKey},e.prototype.sign=function(e){var t=this.hash(!1),r=n.ecsign(t,e);this._chainId>0&&(r.v+=2*this._chainId+8),Object.assign(this,r)},e.prototype.getDataFee=function(){for(var e=this.raw[5],t=new o(0),r=0;r<e.length;r++)0===e[r]?t.iaddn(i.txDataZeroGas.v):t.iaddn(i.txDataNonZeroGas.v);return t},e.prototype.getBaseFee=function(){var e=this.getDataFee().iaddn(i.txGas.v);return this._homestead&&this.toCreationAddress()&&e.iaddn(i.txCreation.v),e},e.prototype.getUpfrontCost=function(){return new o(this.gasLimit).imul(new o(this.gasPrice)).iadd(new o(this.value))},e.prototype.validate=function(e){var t=[];return this.verifySignature()||t.push(\"Invalid Signature\"),this.getBaseFee().cmp(new o(this.gasLimit))>0&&t.push([\"gas limit is too low. Need at least \"+this.getBaseFee()]),void 0===e||!1===e?0===t.length:t.join(\" \")},e}();e.exports=s}).call(this,r(7).Buffer)},function(e){e.exports={genesisGasLimit:{v:5e3,d:\"Gas limit of the Genesis block.\"},genesisDifficulty:{v:17179869184,d:\"Difficulty of the Genesis block.\"},genesisNonce:{v:\"0x0000000000000042\",d:\"the geneis nonce\"},genesisExtraData:{v:\"0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa\",d:\"extra data \"},genesisHash:{v:\"0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3\",d:\"genesis hash\"},genesisStateRoot:{v:\"0xd7f8974fb5ac78d9ac099b9ad5018bedc2ce0a72dad1827a1709da30580f0544\",d:\"the genesis state root\"},minGasLimit:{v:5e3,d:\"Minimum the gas limit may ever be.\"},gasLimitBoundDivisor:{v:1024,d:\"The bound divisor of the gas limit, used in update calculations.\"},minimumDifficulty:{v:131072,d:\"The minimum that the difficulty may ever be.\"},difficultyBoundDivisor:{v:2048,d:\"The bound divisor of the difficulty, used in the update calculations.\"},durationLimit:{v:13,d:\"The decision boundary on the blocktime duration used to determine whether difficulty should go up or not.\"},maximumExtraDataSize:{v:32,d:\"Maximum size extra data may be after Genesis.\"},epochDuration:{v:3e4,d:\"Duration between proof-of-work epochs.\"},stackLimit:{v:1024,d:\"Maximum size of VM stack allowed.\"},callCreateDepth:{v:1024,d:\"Maximum depth of call/create stack.\"},tierStepGas:{v:[0,2,3,5,8,10,20],d:\"Once per operation, for a selection of them.\"},expGas:{v:10,d:\"Once per EXP instuction.\"},expByteGas:{v:10,d:\"Times ceil(log256(exponent)) for the EXP instruction.\"},sha3Gas:{v:30,d:\"Once per SHA3 operation.\"},sha3WordGas:{v:6,d:\"Once per word of the SHA3 operation's data.\"},sloadGas:{v:50,d:\"Once per SLOAD operation.\"},sstoreSetGas:{v:2e4,d:\"Once per SSTORE operation if the zeroness changes from zero.\"},sstoreResetGas:{v:5e3,d:\"Once per SSTORE operation if the zeroness does not change from zero.\"},sstoreRefundGas:{v:15e3,d:\"Once per SSTORE operation if the zeroness changes to zero.\"},jumpdestGas:{v:1,d:\"Refunded gas, once per SSTORE operation if the zeroness changes to zero.\"},logGas:{v:375,d:\"Per LOG* operation.\"},logDataGas:{v:8,d:\"Per byte in a LOG* operation's data.\"},logTopicGas:{v:375,d:\"Multiplied by the * of the LOG*, per LOG transaction. e.g. LOG0 incurs 0 * c_txLogTopicGas, LOG4 incurs 4 * c_txLogTopicGas.\"},createGas:{v:32e3,d:\"Once per CREATE operation & contract-creation transaction.\"},callGas:{v:40,d:\"Once per CALL operation & message call transaction.\"},callStipend:{v:2300,d:\"Free gas given at beginning of call.\"},callValueTransferGas:{v:9e3,d:\"Paid for CALL when the value transfor is non-zero.\"},callNewAccountGas:{v:25e3,d:\"Paid for CALL when the destination address didn't exist prior.\"},suicideRefundGas:{v:24e3,d:\"Refunded following a suicide operation.\"},memoryGas:{v:3,d:\"Times the address of the (highest referenced byte in memory + 1). NOTE: referencing happens on read, write and in instructions such as RETURN and CALL.\"},quadCoeffDiv:{v:512,d:\"Divisor for the quadratic particle of the memory cost equation.\"},createDataGas:{v:200,d:\"\"},txGas:{v:21e3,d:\"Per transaction. NOTE: Not payable on data of calls between transactions.\"},txCreation:{v:32e3,d:\"the cost of creating a contract via tx\"},txDataZeroGas:{v:4,d:\"Per byte of data attached to a transaction that equals zero. NOTE: Not payable on data of calls between transactions.\"},txDataNonZeroGas:{v:68,d:\"Per byte of data attached to a transaction that is not equal to zero. NOTE: Not payable on data of calls between transactions.\"},copyGas:{v:3,d:\"Multiplied by the number of 32-byte words that are copied (round up) for any *COPY operation and added.\"},ecrecoverGas:{v:3e3,d:\"\"},sha256Gas:{v:60,d:\"\"},sha256WordGas:{v:12,d:\"\"},ripemd160Gas:{v:600,d:\"\"},ripemd160WordGas:{v:120,d:\"\"},identityGas:{v:15,d:\"\"},identityWordGas:{v:3,d:\"\"},minerReward:{v:\"5000000000000000000\",d:\"the amount a miner get rewarded for mining a block\"},ommerReward:{v:\"625000000000000000\",d:\"The amount of wei a miner of an uncle block gets for being inculded in the blockchain\"},niblingReward:{v:\"156250000000000000\",d:\"the amount a miner gets for inculding a uncle\"},homeSteadForkNumber:{v:115e4,d:\"the block that the Homestead fork started at\"},homesteadRepriceForkNumber:{v:2463e3,d:\"the block that the Homestead Reprice (EIP150) fork started at\"},timebombPeriod:{v:1e5,d:\"Exponential difficulty timebomb period\"},freeBlockPeriod:{v:2}}},function(e,t,r){\"use strict\";var n=r(225),i=r(226),o=r(227),a=r(29);function s(e,t,r){var n=e;return i(t)?(r=t,\"string\"==typeof e&&(n={uri:e})):n=a(t,{uri:e}),n.callback=r,n}function f(e,t,r){return c(t=s(e,t,r))}function c(e){if(void 0===e.callback)throw new Error(\"callback argument missing\");var t=!1,r=function(r,n,i){t||(t=!0,e.callback(r,n,i))};function n(){var e=void 0;if(e=u.response?u.response:u.responseText||function(e){try{if(\"document\"===e.responseType)return e.responseXML;var t=e.responseXML&&\"parsererror\"===e.responseXML.documentElement.nodeName;if(\"\"===e.responseType&&!t)return e.responseXML}catch(e){}return null}(u),g)try{e=JSON.parse(e)}catch(e){}return e}function i(e){return clearTimeout(h),e instanceof Error||(e=new Error(\"\"+(e||\"Unknown XMLHttpRequest Error\"))),e.statusCode=0,r(e,v)}function a(){if(!c){var t;clearTimeout(h),t=e.useXDR&&void 0===u.status?200:1223===u.status?204:u.status;var i=v,a=null;return 0!==t?(i={body:n(),statusCode:t,method:d,headers:{},url:l,rawRequest:u},u.getAllResponseHeaders&&(i.headers=o(u.getAllResponseHeaders()))):a=new Error(\"Internal XMLHttpRequest Error\"),r(a,i,i.body)}}var s,c,u=e.xhr||null;u||(u=e.cors||e.useXDR?new f.XDomainRequest:new f.XMLHttpRequest);var h,l=u.url=e.uri||e.url,d=u.method=e.method||\"GET\",p=e.body||e.data,b=u.headers=e.headers||{},y=!!e.sync,g=!1,v={body:void 0,headers:{},statusCode:0,method:d,url:l,rawRequest:u};if(\"json\"in e&&!1!==e.json&&(g=!0,b.accept||b.Accept||(b.Accept=\"application/json\"),\"GET\"!==d&&\"HEAD\"!==d&&(b[\"content-type\"]||b[\"Content-Type\"]||(b[\"Content-Type\"]=\"application/json\"),p=JSON.stringify(!0===e.json?p:e.json))),u.onreadystatechange=function(){4===u.readyState&&setTimeout(a,0)},u.onload=a,u.onerror=i,u.onprogress=function(){},u.onabort=function(){c=!0},u.ontimeout=i,u.open(d,l,!y,e.username,e.password),y||(u.withCredentials=!!e.withCredentials),!y&&e.timeout>0&&(h=setTimeout((function(){if(!c){c=!0,u.abort(\"timeout\");var e=new Error(\"XMLHttpRequest timeout\");e.code=\"ETIMEDOUT\",i(e)}}),e.timeout)),u.setRequestHeader)for(s in b)b.hasOwnProperty(s)&&u.setRequestHeader(s,b[s]);else if(e.headers&&!function(e){for(var t in e)if(e.hasOwnProperty(t))return!1;return!0}(e.headers))throw new Error(\"Headers cannot be set on an XDomainRequest object\");return\"responseType\"in e&&(u.responseType=e.responseType),\"beforeSend\"in e&&\"function\"==typeof e.beforeSend&&e.beforeSend(u),u.send(p||null),u}e.exports=f,e.exports.default=f,f.XMLHttpRequest=n.XMLHttpRequest||function(){},f.XDomainRequest=\"withCredentials\"in new f.XMLHttpRequest?f.XMLHttpRequest:n.XDomainRequest,function(e,t){for(var r=0;r<e.length;r++)t(e[r])}([\"get\",\"put\",\"post\",\"patch\",\"head\",\"delete\"],(function(e){f[\"delete\"===e?\"del\":e]=function(t,r,n){return(r=s(t,r,n)).method=e.toUpperCase(),c(r)}}))},function(e,t,r){(function(t){var r;r=\"undefined\"!=typeof window?window:void 0!==t?t:\"undefined\"!=typeof self?self:{},e.exports=r}).call(this,r(4))},function(e,t){e.exports=function(e){var t=r.call(e);return\"[object Function]\"===t||\"function\"==typeof e&&\"[object RegExp]\"!==t||\"undefined\"!=typeof window&&(e===window.setTimeout||e===window.alert||e===window.confirm||e===window.prompt)};var r=Object.prototype.toString},function(e,t,r){var n=r(228),i=r(246);e.exports=function(e){if(!e)return{};var t={};return i(n(e).split(\"\\n\"),(function(e){var r,i=e.indexOf(\":\"),o=n(e.slice(0,i)).toLowerCase(),a=n(e.slice(i+1));void 0===t[o]?t[o]=a:(r=t[o],\"[object Array]\"===Object.prototype.toString.call(r)?t[o].push(a):t[o]=[t[o],a])})),t}},function(e,t,r){\"use strict\";var n=r(21),i=r(88),o=r(90),a=r(92),s=r(245),f=n.call(Function.call,a());i(f,{getPolyfill:a,implementation:o,shim:s}),e.exports=f},function(e,t,r){\"use strict\";var n=\"Function.prototype.bind called on incompatible \",i=Array.prototype.slice,o=Object.prototype.toString;e.exports=function(e){var t=this;if(\"function\"!=typeof t||\"[object Function]\"!==o.call(t))throw new TypeError(n+t);for(var r,a=i.call(arguments,1),s=function(){if(this instanceof r){var n=t.apply(this,a.concat(i.call(arguments)));return Object(n)===n?n:this}return t.apply(e,a.concat(i.call(arguments)))},f=Math.max(0,t.length-a.length),c=[],u=0;u<f;u++)c.push(\"$\"+u);if(r=Function(\"binder\",\"return function (\"+c.join(\",\")+\"){ return binder.apply(this,arguments); }\")(s),t.prototype){var h=function(){};h.prototype=t.prototype,r.prototype=new h,h.prototype=null}return r}},function(e,t,r){\"use strict\";var n=Array.prototype.slice,i=r(89),o=Object.keys,a=o?function(e){return o(e)}:r(231),s=Object.keys;a.shim=function(){Object.keys?function(){var e=Object.keys(arguments);return e&&e.length===arguments.length}(1,2)||(Object.keys=function(e){return i(e)?s(n.call(e)):s(e)}):Object.keys=a;return Object.keys||a},e.exports=a},function(e,t,r){\"use strict\";var n;if(!Object.keys){var i=Object.prototype.hasOwnProperty,o=Object.prototype.toString,a=r(89),s=Object.prototype.propertyIsEnumerable,f=!s.call({toString:null},\"toString\"),c=s.call((function(){}),\"prototype\"),u=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],h=function(e){var t=e.constructor;return t&&t.prototype===e},l={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},d=function(){if(\"undefined\"==typeof window)return!1;for(var e in window)try{if(!l[\"$\"+e]&&i.call(window,e)&&null!==window[e]&&\"object\"==typeof window[e])try{h(window[e])}catch(e){return!0}}catch(e){return!0}return!1}();n=function(e){var t=null!==e&&\"object\"==typeof e,r=\"[object Function]\"===o.call(e),n=a(e),s=t&&\"[object String]\"===o.call(e),l=[];if(!t&&!r&&!n)throw new TypeError(\"Object.keys called on a non-object\");var p=c&&r;if(s&&e.length>0&&!i.call(e,0))for(var b=0;b<e.length;++b)l.push(String(b));if(n&&e.length>0)for(var y=0;y<e.length;++y)l.push(String(y));else for(var g in e)p&&\"prototype\"===g||!i.call(e,g)||l.push(String(g));if(f)for(var v=function(e){if(\"undefined\"==typeof window||!d)return h(e);try{return h(e)}catch(e){return!1}}(e),m=0;m<u.length;++m)v&&\"constructor\"===u[m]||!i.call(e,u[m])||l.push(u[m]);return l}}e.exports=n},function(e,t,r){\"use strict\";var n=r(22),i=n(\"%Object%\"),o=n(\"%EvalError%\"),a=n(\"%TypeError%\"),s=n(\"%String%\"),f=n(\"%Date%\"),c=n(\"%Number%\"),u=n(\"%Math.floor%\"),h=n(\"%Date.UTC%\"),l=n(\"%Math.abs%\"),d=r(235),p=r(236),b=r(237),y=r(238),g=r(239),v=r(240),m=r(241),_=r(91),w=r(50),E=r(243),A=r(49),S=_(\"Date.prototype.getUTCFullYear\"),k={ToPrimitive:E,ToBoolean:function(e){return!!e},ToNumber:function(e){return+e},ToInteger:function(e){var t=this.ToNumber(e);return b(t)?0:0!==t&&y(t)?g(t)*Math.floor(Math.abs(t)):t},ToInt32:function(e){return this.ToNumber(e)>>0},ToUint32:function(e){return this.ToNumber(e)>>>0},ToUint16:function(e){var t=this.ToNumber(e);if(b(t)||0===t||!y(t))return 0;var r=g(t)*Math.floor(Math.abs(t));return v(r,65536)},ToString:function(e){return s(e)},ToObject:function(e){return this.CheckObjectCoercible(e),i(e)},CheckObjectCoercible:function(e,t){if(null==e)throw new a(t||\"Cannot call method on \"+e);return e},IsCallable:w,SameValue:function(e,t){return e===t?0!==e||1/e==1/t:b(e)&&b(t)},Type:function(e){return null===e?\"Null\":void 0===e?\"Undefined\":\"function\"==typeof e||\"object\"==typeof e?\"Object\":\"number\"==typeof e?\"Number\":\"boolean\"==typeof e?\"Boolean\":\"string\"==typeof e?\"String\":void 0},IsPropertyDescriptor:function(e){return p(this,e)},IsAccessorDescriptor:function(e){return void 0!==e&&(d(this,\"Property Descriptor\",\"Desc\",e),!(!A(e,\"[[Get]]\")&&!A(e,\"[[Set]]\")))},IsDataDescriptor:function(e){return void 0!==e&&(d(this,\"Property Descriptor\",\"Desc\",e),!(!A(e,\"[[Value]]\")&&!A(e,\"[[Writable]]\")))},IsGenericDescriptor:function(e){return void 0!==e&&(d(this,\"Property Descriptor\",\"Desc\",e),!this.IsAccessorDescriptor(e)&&!this.IsDataDescriptor(e))},FromPropertyDescriptor:function(e){if(void 0===e)return e;if(d(this,\"Property Descriptor\",\"Desc\",e),this.IsDataDescriptor(e))return{value:e[\"[[Value]]\"],writable:!!e[\"[[Writable]]\"],enumerable:!!e[\"[[Enumerable]]\"],configurable:!!e[\"[[Configurable]]\"]};if(this.IsAccessorDescriptor(e))return{get:e[\"[[Get]]\"],set:e[\"[[Set]]\"],enumerable:!!e[\"[[Enumerable]]\"],configurable:!!e[\"[[Configurable]]\"]};throw new a(\"FromPropertyDescriptor must be called with a fully populated Property Descriptor\")},ToPropertyDescriptor:function(e){if(\"Object\"!==this.Type(e))throw new a(\"ToPropertyDescriptor requires an object\");var t={};if(A(e,\"enumerable\")&&(t[\"[[Enumerable]]\"]=this.ToBoolean(e.enumerable)),A(e,\"configurable\")&&(t[\"[[Configurable]]\"]=this.ToBoolean(e.configurable)),A(e,\"value\")&&(t[\"[[Value]]\"]=e.value),A(e,\"writable\")&&(t[\"[[Writable]]\"]=this.ToBoolean(e.writable)),A(e,\"get\")){var r=e.get;if(void 0!==r&&!this.IsCallable(r))throw new TypeError(\"getter must be a function\");t[\"[[Get]]\"]=r}if(A(e,\"set\")){var n=e.set;if(void 0!==n&&!this.IsCallable(n))throw new a(\"setter must be a function\");t[\"[[Set]]\"]=n}if((A(t,\"[[Get]]\")||A(t,\"[[Set]]\"))&&(A(t,\"[[Value]]\")||A(t,\"[[Writable]]\")))throw new a(\"Invalid property descriptor. Cannot both specify accessors and a value or writable attribute\");return t},\"Abstract Equality Comparison\":function(e,t){var r=this.Type(e),n=this.Type(t);return r===n?e===t:null==e&&null==t||(\"Number\"===r&&\"String\"===n?this[\"Abstract Equality Comparison\"](e,this.ToNumber(t)):\"String\"===r&&\"Number\"===n?this[\"Abstract Equality Comparison\"](this.ToNumber(e),t):\"Boolean\"===r?this[\"Abstract Equality Comparison\"](this.ToNumber(e),t):\"Boolean\"===n?this[\"Abstract Equality Comparison\"](e,this.ToNumber(t)):\"String\"!==r&&\"Number\"!==r||\"Object\"!==n?\"Object\"===r&&(\"String\"===n||\"Number\"===n)&&this[\"Abstract Equality Comparison\"](this.ToPrimitive(e),t):this[\"Abstract Equality Comparison\"](e,this.ToPrimitive(t)))},\"Strict Equality Comparison\":function(e,t){var r=this.Type(e);return r===this.Type(t)&&(\"Undefined\"===r||\"Null\"===r||e===t)},\"Abstract Relational Comparison\":function(e,t,r){if(\"Boolean\"!==this.Type(r))throw new a(\"Assertion failed: LeftFirst argument must be a Boolean\");var n,i;if(r?(n=this.ToPrimitive(e,c),i=this.ToPrimitive(t,c)):(i=this.ToPrimitive(t,c),n=this.ToPrimitive(e,c)),!(\"String\"===this.Type(n)&&\"String\"===this.Type(i))){var o=this.ToNumber(n),s=this.ToNumber(i);if(b(o)||b(s))return;return(!y(o)||!y(s)||o!==s)&&((0!==o||0!==s)&&(o!==1/0&&(s===1/0||s!==-1/0&&(o===-1/0||o<s))))}return!m(i,n)&&(!!m(n,i)||n<i)},msFromTime:function(e){return v(e,1e3)},SecFromTime:function(e){return v(u(e/1e3),60)},MinFromTime:function(e){return v(u(e/6e4),60)},HourFromTime:function(e){return v(u(e/36e5),24)},Day:function(e){return u(e/864e5)},TimeWithinDay:function(e){return v(e,864e5)},DayFromYear:function(e){return 365*(e-1970)+u((e-1969)/4)-u((e-1901)/100)+u((e-1601)/400)},TimeFromYear:function(e){return 864e5*this.DayFromYear(e)},YearFromTime:function(e){return S(new f(e))},WeekDay:function(e){return v(this.Day(e)+4,7)},DaysInYear:function(e){return 0!==v(e,4)?365:0!==v(e,100)?366:0!==v(e,400)?365:366},InLeapYear:function(e){var t=this.DaysInYear(this.YearFromTime(e));if(365===t)return 0;if(366===t)return 1;throw new o(\"Assertion failed: there are not 365 or 366 days in a year, got: \"+t)},DayWithinYear:function(e){return this.Day(e)-this.DayFromYear(this.YearFromTime(e))},MonthFromTime:function(e){var t=this.DayWithinYear(e);if(0<=t&&t<31)return 0;var r=this.InLeapYear(e);return 31<=t&&t<59+r?1:59+r<=t&&t<90+r?2:90+r<=t&&t<120+r?3:120+r<=t&&t<151+r?4:151+r<=t&&t<181+r?5:181+r<=t&&t<212+r?6:212+r<=t&&t<243+r?7:243+r<=t&&t<273+r?8:273+r<=t&&t<304+r?9:304+r<=t&&t<334+r?10:334+r<=t&&t<365+r?11:void 0},DateFromTime:function(e){var t=this.MonthFromTime(e),r=this.DayWithinYear(e);if(0===t)return r+1;if(1===t)return r-30;var n=this.InLeapYear(e);if(2===t)return r-58-n;if(3===t)return r-89-n;if(4===t)return r-119-n;if(5===t)return r-150-n;if(6===t)return r-180-n;if(7===t)return r-211-n;if(8===t)return r-242-n;if(9===t)return r-272-n;if(10===t)return r-303-n;if(11===t)return r-333-n;throw new o(\"Assertion failed: MonthFromTime returned an impossible value: \"+t)},MakeDay:function(e,t,r){if(!y(e)||!y(t)||!y(r))return NaN;var n=this.ToInteger(e),i=this.ToInteger(t),o=this.ToInteger(r),a=n+u(i/12),s=v(i,12),f=h(a,s,1);return this.YearFromTime(f)!==a||this.MonthFromTime(f)!==s||1!==this.DateFromTime(f)?NaN:this.Day(f)+o-1},MakeDate:function(e,t){return y(e)&&y(t)?864e5*e+t:NaN},MakeTime:function(e,t,r,n){return y(e)&&y(t)&&y(r)&&y(n)?36e5*this.ToInteger(e)+6e4*this.ToInteger(t)+1e3*this.ToInteger(r)+this.ToInteger(n):NaN},TimeClip:function(e){return!y(e)||l(e)>864e13?NaN:c(new f(this.ToNumber(e)))},modulo:function(e,t){return v(e,t)}};e.exports=k},function(e,t,r){\"use strict\";(function(t){var n=t.Symbol,i=r(234);e.exports=function(){return\"function\"==typeof n&&(\"function\"==typeof Symbol&&(\"symbol\"==typeof n(\"foo\")&&(\"symbol\"==typeof Symbol(\"bar\")&&i())))}}).call(this,r(4))},function(e,t,r){\"use strict\";e.exports=function(){if(\"function\"!=typeof Symbol||\"function\"!=typeof Object.getOwnPropertySymbols)return!1;if(\"symbol\"==typeof Symbol.iterator)return!0;var e={},t=Symbol(\"test\"),r=Object(t);if(\"string\"==typeof t)return!1;if(\"[object Symbol]\"!==Object.prototype.toString.call(t))return!1;if(\"[object Symbol]\"!==Object.prototype.toString.call(r))return!1;for(t in e[t]=42,e)return!1;if(\"function\"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if(\"function\"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var n=Object.getOwnPropertySymbols(e);if(1!==n.length||n[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if(\"function\"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(e,t);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},function(e,t,r){\"use strict\";var n=r(22),i=n(\"%TypeError%\"),o=n(\"%SyntaxError%\"),a=r(49),s={\"Property Descriptor\":function(e,t){if(\"Object\"!==e.Type(t))return!1;var r={\"[[Configurable]]\":!0,\"[[Enumerable]]\":!0,\"[[Get]]\":!0,\"[[Set]]\":!0,\"[[Value]]\":!0,\"[[Writable]]\":!0};for(var n in t)if(a(t,n)&&!r[n])return!1;var o=a(t,\"[[Value]]\"),s=a(t,\"[[Get]]\")||a(t,\"[[Set]]\");if(o&&s)throw new i(\"Property Descriptors may not be both accessor and data descriptors\");return!0}};e.exports=function(e,t,r,n){var a=s[t];if(\"function\"!=typeof a)throw new o(\"unknown record type: \"+t);if(!a(e,n))throw new i(r+\" must be a \"+t)}},function(e,t,r){\"use strict\";var n=r(22),i=r(49),o=n(\"%TypeError%\");e.exports=function(e,t){if(\"Object\"!==e.Type(t))return!1;var r={\"[[Configurable]]\":!0,\"[[Enumerable]]\":!0,\"[[Get]]\":!0,\"[[Set]]\":!0,\"[[Value]]\":!0,\"[[Writable]]\":!0};for(var n in t)if(i(t,n)&&!r[n])return!1;if(e.IsDataDescriptor(t)&&e.IsAccessorDescriptor(t))throw new o(\"Property Descriptors may not be both accessor and data descriptors\");return!0}},function(e,t,r){\"use strict\";e.exports=Number.isNaN||function(e){return e!=e}},function(e,t,r){\"use strict\";var n=Number.isNaN||function(e){return e!=e};e.exports=Number.isFinite||function(e){return\"number\"==typeof e&&!n(e)&&e!==1/0&&e!==-1/0}},function(e,t,r){\"use strict\";e.exports=function(e){return e>=0?1:-1}},function(e,t,r){\"use strict\";e.exports=function(e,t){var r=e%t;return Math.floor(r>=0?r:r+t)}},function(e,t,r){\"use strict\";var n=r(91)(\"String.prototype.slice\");e.exports=function(e,t){return e===t||!(e.length>t.length)&&n(t,0,e.length)===e}},function(e,t,r){\"use strict\";var n=r(21),i=r(22)(\"%Function%\"),o=i.apply,a=i.call;e.exports=function(){return n.apply(a,arguments)},e.exports.apply=function(){return n.apply(o,arguments)}},function(e,t,r){\"use strict\";var n=Object.prototype.toString,i=r(244),o=r(50),a=function(e){var t;if((t=arguments.length>1?arguments[1]:\"[object Date]\"===n.call(e)?String:Number)===String||t===Number){var r,a,s=t===String?[\"toString\",\"valueOf\"]:[\"valueOf\",\"toString\"];for(a=0;a<s.length;++a)if(o(e[s[a]])&&(r=e[s[a]](),i(r)))return r;throw new TypeError(\"No default value\")}throw new TypeError(\"invalid [[DefaultValue]] hint supplied\")};e.exports=function(e){return i(e)?e:arguments.length>1?a(e,arguments[1]):a(e)}},function(e,t){e.exports=function(e){return null===e||\"function\"!=typeof e&&\"object\"!=typeof e}},function(e,t,r){\"use strict\";var n=r(88),i=r(92);e.exports=function(){var e=i();return n(String.prototype,{trim:e},{trim:function(){return String.prototype.trim!==e}}),e}},function(e,t,r){\"use strict\";var n=r(50),i=Object.prototype.toString,o=Object.prototype.hasOwnProperty,a=function(e,t,r){for(var n=0,i=e.length;n<i;n++)o.call(e,n)&&(null==r?t(e[n],n,e):t.call(r,e[n],n,e))},s=function(e,t,r){for(var n=0,i=e.length;n<i;n++)null==r?t(e.charAt(n),n,e):t.call(r,e.charAt(n),n,e)},f=function(e,t,r){for(var n in e)o.call(e,n)&&(null==r?t(e[n],n,e):t.call(r,e[n],n,e))};e.exports=function(e,t,r){if(!n(t))throw new TypeError(\"iterator must be a function\");var o;arguments.length>=3&&(o=r),\"[object Array]\"===i.call(e)?a(e,t,o):\"string\"==typeof e?s(e,t,o):f(e,t,o)}},function(e,t){},function(e,t,r){e.exports=r(249)},function(e,t,r){var n=r(0),i=function(e,t,r){if(!(this instanceof i))return new i(e,t,r);this.message=e,this.code=t,void 0!==r&&(this.data=r)};n(i,Error);var o=function(){if(!(this instanceof o))return new o;i.call(this,\"Parse error\",-32700)};n(o,i);var a=function(){if(!(this instanceof a))return new a;i.call(this,\"Invalid Request\",-32600)};n(a,i);var s=function(){if(!(this instanceof s))return new s;i.call(this,\"Method not found\",-32601)};n(s,i);var f=function(){if(!(this instanceof f))return new f;i.call(this,\"Invalid params\",-32602)};n(f,i);var c=function(e){var t;if(!(this instanceof c))return new c(e);t=e&&e.message?e.message:\"Internal error\",i.call(this,t,-32603)};n(c,i);var u=function(e){if(e<-32099||e>-32e3)throw new Error(\"Invalid error code\");if(!(this instanceof u))return new u(e);i.call(this,\"Server error\",e)};n(u,i),i.ParseError=o,i.InvalidRequest=a,i.MethodNotFound=s,i.InvalidParams=f,i.InternalError=c,i.ServerError=u,e.exports=i},function(e,t,r){const n=r(40),i=r(87),o=r(46),a=r(86),{unsafeRandomBytes:s,incrementHexInt:f}=r(20),c=r(48);function u(e){return{hash:e.hash,parentHash:e.parentHash,sha3Uncles:e.sha3Uncles,miner:e.miner,stateRoot:e.stateRoot,transactionsRoot:e.transactionsRoot,receiptsRoot:e.receiptsRoot,logsBloom:e.logsBloom,difficulty:e.difficulty,number:e.number,gasLimit:e.gasLimit,gasUsed:e.gasUsed,nonce:e.nonce,mixHash:e.mixHash,timestamp:e.timestamp,extraData:e.extraData}}e.exports=function({blockTracker:e,provider:t}){const r={},h=a({blockTracker:e,provider:t}),l=new n,d=i({eth_subscribe:o((async function(n,i){const o=n.params[0],a=s(16);let l;switch(o){case\"newHeads\":l=function({subId:r}){const n={type:o,destroy:async()=>{e.removeListener(\"sync\",n.update)},update:async({oldBlock:e,newBlock:n})=>{const i=n,o=f(e);(await c({provider:t,fromBlock:o,toBlock:i})).map(u).forEach(e=>{p(r,e)})}};return e.on(\"sync\",n.update),n}({subId:a});break;case\"logs\":const r=n.params[1],i=await h.newLogFilter(r);l=function({subId:e,filter:t}){return t.on(\"update\",t=>p(e,t)),{type:o,destroy:async()=>await h.uninstallFilter(t.idHex)}}({subId:a,filter:i});break;default:throw new Error(`SubscriptionManager - unsupported subscription type \"${o}\"`)}return r[a]=l,void(i.result=a)})),eth_unsubscribe:o((async function(e,t){const n=e.params[0],i=r[n];if(!i)return void(t.result=!1);delete r[n],await i.destroy(),t.result=!0}))});return{events:l,middleware:d};function p(e,t){l.emit(\"notification\",{jsonrpc:\"2.0\",method:\"eth_subscription\",params:{subscription:e,result:t}})}}},function(e,t,r){var n=r(93),i=r(254),o=r(95),a=r(255);e.exports.Backoff=n,e.exports.FunctionCall=a,e.exports.FibonacciStrategy=o,e.exports.ExponentialStrategy=i,e.exports.fibonacci=function(e){return new n(new o(e))},e.exports.exponential=function(e){return new n(new i(e))},e.exports.call=function(e,t,r){var n=Array.prototype.slice.call(arguments);return e=n[0],t=n.slice(1,n.length-1),r=n[n.length-1],new a(e,t,r)}},function(e,t,r){var n=r(2),i=e.exports=r(253);function o(e,t,r,i){r=r||\"\";var o=new e(n.format.apply(this,[r].concat(i)));throw Error.captureStackTrace(o,t),o}function a(e,t,r){o(i.IllegalArgumentError,e,t,r)}function s(e,t,r){o(i.IllegalStateError,e,t,r)}function f(e){var t=typeof e;if(\"object\"==t){if(!e)return\"null\";if(e instanceof Array)return\"array\"}return t}function c(e){return function(t,r){var n=f(t);if(n==e)return t;a(arguments.callee,r||'Expected \"'+e+'\" but got \"'+n+'\".',Array.prototype.slice.call(arguments,2))}}e.exports.checkArgument=function(e,t){e||a(arguments.callee,t,Array.prototype.slice.call(arguments,2))},e.exports.checkState=function(e,t){e||s(arguments.callee,t,Array.prototype.slice.call(arguments,2))},e.exports.checkIsDef=function(e,t){if(void 0!==e)return e;a(arguments.callee,t||\"Expected value to be defined but was undefined.\",Array.prototype.slice.call(arguments,2))},e.exports.checkIsDefAndNotNull=function(e,t){if(null!=e)return e;a(arguments.callee,t||'Expected value to be defined and not null but got \"'+f(e)+'\".',Array.prototype.slice.call(arguments,2))},e.exports.checkIsString=c(\"string\"),e.exports.checkIsArray=c(\"array\"),e.exports.checkIsNumber=c(\"number\"),e.exports.checkIsBoolean=c(\"boolean\"),e.exports.checkIsFunction=c(\"function\"),e.exports.checkIsObject=c(\"object\")},function(e,t,r){var n=r(2);function i(e){Error.call(this,e),this.message=e}function o(e){Error.call(this,e),this.message=e}n.inherits(i,Error),i.prototype.name=\"IllegalArgumentError\",n.inherits(o,Error),o.prototype.name=\"IllegalStateError\",e.exports.IllegalStateError=o,e.exports.IllegalArgumentError=i},function(e,t,r){var n=r(2),i=r(51),o=r(94);function a(e){o.call(this,e),this.backoffDelay_=0,this.nextBackoffDelay_=this.getInitialDelay(),this.factor_=a.DEFAULT_FACTOR,e&&void 0!==e.factor&&(i.checkArgument(e.factor>1,\"Exponential factor should be greater than 1 but got %s.\",e.factor),this.factor_=e.factor)}n.inherits(a,o),a.DEFAULT_FACTOR=2,a.prototype.next_=function(){return this.backoffDelay_=Math.min(this.nextBackoffDelay_,this.getMaxDelay()),this.nextBackoffDelay_=this.backoffDelay_*this.factor_,this.backoffDelay_},a.prototype.reset_=function(){this.backoffDelay_=0,this.nextBackoffDelay_=this.getInitialDelay()},e.exports=a},function(e,t,r){var n=r(6),i=r(51),o=r(2),a=r(93),s=r(95);function f(e,t,r){n.EventEmitter.call(this),i.checkIsFunction(e,\"Expected fn to be a function.\"),i.checkIsArray(t,\"Expected args to be an array.\"),i.checkIsFunction(r,\"Expected callback to be a function.\"),this.function_=e,this.arguments_=t,this.callback_=r,this.lastResult_=[],this.numRetries_=0,this.backoff_=null,this.strategy_=null,this.failAfter_=-1,this.retryPredicate_=f.DEFAULT_RETRY_PREDICATE_,this.state_=f.State_.PENDING}o.inherits(f,n.EventEmitter),f.State_={PENDING:0,RUNNING:1,COMPLETED:2,ABORTED:3},f.DEFAULT_RETRY_PREDICATE_=function(e){return!0},f.prototype.isPending=function(){return this.state_==f.State_.PENDING},f.prototype.isRunning=function(){return this.state_==f.State_.RUNNING},f.prototype.isCompleted=function(){return this.state_==f.State_.COMPLETED},f.prototype.isAborted=function(){return this.state_==f.State_.ABORTED},f.prototype.setStrategy=function(e){return i.checkState(this.isPending(),\"FunctionCall in progress.\"),this.strategy_=e,this},f.prototype.retryIf=function(e){return i.checkState(this.isPending(),\"FunctionCall in progress.\"),this.retryPredicate_=e,this},f.prototype.getLastResult=function(){return this.lastResult_.concat()},f.prototype.getNumRetries=function(){return this.numRetries_},f.prototype.failAfter=function(e){return i.checkState(this.isPending(),\"FunctionCall in progress.\"),this.failAfter_=e,this},f.prototype.abort=function(){this.isCompleted()||this.isAborted()||(this.isRunning()&&this.backoff_.reset(),this.state_=f.State_.ABORTED,this.lastResult_=[new Error(\"Backoff aborted.\")],this.emit(\"abort\"),this.doCallback_())},f.prototype.start=function(e){i.checkState(!this.isAborted(),\"FunctionCall is aborted.\"),i.checkState(this.isPending(),\"FunctionCall already started.\");var t=this.strategy_||new s;this.backoff_=e?e(t):new a(t),this.backoff_.on(\"ready\",this.doCall_.bind(this,!0)),this.backoff_.on(\"fail\",this.doCallback_.bind(this)),this.backoff_.on(\"backoff\",this.handleBackoff_.bind(this)),this.failAfter_>0&&this.backoff_.failAfter(this.failAfter_),this.state_=f.State_.RUNNING,this.doCall_(!1)},f.prototype.doCall_=function(e){e&&this.numRetries_++;var t=[\"call\"].concat(this.arguments_);n.EventEmitter.prototype.emit.apply(this,t);var r=this.handleFunctionCallback_.bind(this);this.function_.apply(null,this.arguments_.concat(r))},f.prototype.doCallback_=function(){this.callback_.apply(null,this.lastResult_)},f.prototype.handleFunctionCallback_=function(){if(!this.isAborted()){var e=Array.prototype.slice.call(arguments);this.lastResult_=e,n.EventEmitter.prototype.emit.apply(this,[\"callback\"].concat(e));var t=e[0];t&&this.retryPredicate_(t)?this.backoff_.backoff(t):(this.state_=f.State_.COMPLETED,this.doCallback_())}},f.prototype.handleBackoff_=function(e,t,r){this.emit(\"backoff\",e,t,r)},e.exports=f},function(e,t){},function(e,t,r){\"use strict\";r.r(t);var n,i=r(96),o=r.n(i),a=r(97),s=r.n(a),f=r(98),c=r.n(f),u=r(99),h=r.n(u),l=r(100),d=r.n(l),p=r(101),b=r.n(p),y=r(102),g=r.n(y),v=r(103),m=r.n(v),_=r(104),w=r.n(_),E=r(105),A=r.n(E),S=\"https://app.squarelink.com\",k=(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),x=function(e){function t(t){var r=e.call(this,t)||this;return r.name=\"[Squarelink Error]\",r}return k(t,e),t}(Error),I=function(){function e(e,t){this.url=e,this.params=t,this.open=!0,this._createIframe(),this._addCloseListeners(),this._addMessageListeners()}return e.prototype.close=function(){this.open&&(this.container.parentNode.removeChild(this.container),this.onClosed&&this.onClosed(this.error),this.open=!1)},e.prototype._addCloseListeners=function(){var e=this;this.container.addEventListener(\"click\",(function(){e.close()}));var t=this;document.onkeydown=function(e){27==(e=e||window.event).keyCode&&t.open&&t.close()}},e.prototype._addMessageListeners=function(){var e=this,t=this,r=!1;window.addEventListener(\"message\",(function(n){var i=n.data,o=i.origin,a=i.height,s=i.type,f=i.error;if(\"squarelink-iframe\"===o){if(\"resize\"===s)return void(t.iframe.style=M.iframe(a+\"px\",\"none\"));\"error\"===s?(t.error=f,t.close()):\"onload\"!==s||r||(r=!0,e.iframe.contentWindow.postMessage({origin:\"squarelink-web3-sdk\",params:e.params},\"*\"))}}),!1)},e.prototype._createIframe=function(){var e=document.createElement(\"div\");e.id=\"squarelink-iframe-container\",e.style=M.container;e.innerHTML='<div class=\"squarelink-preloader\" id=\"squarelink-preloader\"><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div>';var t=document.createElement(\"iframe\");t.src=\"https://squarelink.com/popup/?url=\"+encodeURI(this.url),t.id=\"squarelink-iframe\",t.style=M.iframe(),t.onload=function(){var e=document.getElementById(\"squarelink-preloader\");e.parentNode.removeChild(e)},e.appendChild(t),this.iframe=t,this.container=e,document.body.appendChild(e)},e}(),M={iframe:function(e,t){return void 0===e&&(e=\"200px\"),void 0===t&&(t=\"3px solid #fff\"),\"\\n position: absolute;\\n height: \"+e+\";\\n width: 360px;\\n top: 50%;\\n left: 50%;\\n transform:\\n translate(-50%, -50%);\\n border: 0px transparent;\\n border-radius: 10px;\\n -webkit-border-radius: 10px;\\n -moz-border-radius: 10px;\\n border-radius: 10px;\\n -khtml-border-radius: 10px;\\n border: \"+t+\";\\n z-index: 2147483647;\\n box-shadow: 0 10px 30px 4px rgba(0,0,0,.33);\\n background: none;\\n \"},container:\"\\n position: fixed;\\n height: 100%;\\n width: 100%;\\n left: 0;\\n right: 0;\\n top: 0;\\n bottom: 0;\\n z-index: 2147483647;\\n background: rgba(0,0,0,0.5);\\n \"},T=function(e){var t=e.url,r=e.popup,n=e.params;return new Promise((function(e,i){r.location.href=t;var o=!1;window.addEventListener(\"message\",(function(t){if(!o){var i=t.data,a=i.origin,s=i.type;\"squarelink\"===a&&\"onload\"===s&&(o=!0,r.postMessage({origin:\"squarelink-web3-sdk\",params:n},\"*\"),r.focus(),P(r),e({popup:r}),window.removeEventListener(\"message\",(function(){})))}}),!1)}))},P=function(e){var t=document.createElement(\"div\");t.id=\"squarelink-preloader-container\",t.style=\"\\n position: fixed;\\n height: 100%;\\n width: 100%;\\n left: 0;\\n right: 0;\\n top: 0;\\n bottom: 0;\\n z-index: 2147483647;\\n background: rgba(0,0,0,0.5);\\n \";t.innerHTML='<div class=\"squarelink-close\" id=\"squarelink-close-button\"></div><div class=\"squarelink-preloader\" id=\"squarelink-preloader\"><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div>',document.body.appendChild(t),document.getElementById(\"squarelink-close-button\").addEventListener(\"click\",(function(){e.close()}))},B=function(e){var t=e.url,r=e.params,n=document.createElement(\"style\");n.innerHTML=\"\\n.squarelink-close {\\n position: absolute;\\n right: 50px;\\n top: 30px;\\n width: 10px;\\n height: 25px;\\n opacity: 0.6;\\n z-index: 100;\\n cursor: pointer;\\n -webkit-transition-duration:0.5s;\\n transition-duration:0.5s;\\n}\\n.squarelink-close:hover {\\n opacity: 1;\\n}\\n.squarelink-close:before, .squarelink-close:after {\\n position: absolute;\\n left: 15px;\\n content: ' ';\\n height: 30px;\\n width: 3px;\\n background-color: #fff;\\n}\\n.squarelink-close:before {\\n transform: rotate(45deg);\\n}\\n.squarelink-close:after {\\n transform: rotate(-45deg);\\n}\\n\\n.squarelink-preloader {\\n display: inline-block;\\n position: absolute;\\n width: 64px;\\n height: 64px;\\n z-index: 2147483649;\\n top: 50%;\\n left: 50%;\\n transform:\\n translate(-50%, -50%);\\n}\\n.squarelink-preloader div {\\n position: absolute;\\n width: 13px;\\n height: 13px;\\n border-radius: 50%;\\n background: #fff;\\n animation: squarelink-preloader 1.2s linear infinite;\\n}\\n.squarelink-preloader div:nth-child(1) {\\n top: 6px;\\n left: 6px;\\n animation-delay: 0s;\\n}\\n.squarelink-preloader div:nth-child(2) {\\n top: 6px;\\n left: 26px;\\n animation-delay: -0.4s;\\n}\\n.squarelink-preloader div:nth-child(3) {\\n top: 6px;\\n left: 45px;\\n animation-delay: -0.8s;\\n}\\n.squarelink-preloader div:nth-child(4) {\\n top: 26px;\\n left: 6px;\\n animation-delay: -0.4s;\\n}\\n.squarelink-preloader div:nth-child(5) {\\n top: 26px;\\n left: 26px;\\n animation-delay: -0.8s;\\n}\\n.squarelink-preloader div:nth-child(6) {\\n top: 26px;\\n left: 45px;\\n animation-delay: -1.2s;\\n}\\n.squarelink-preloader div:nth-child(7) {\\n top: 45px;\\n left: 6px;\\n animation-delay: -0.8s;\\n}\\n.squarelink-preloader div:nth-child(8) {\\n top: 45px;\\n left: 26px;\\n animation-delay: -1.2s;\\n}\\n.squarelink-preloader div:nth-child(9) {\\n top: 45px;\\n left: 45px;\\n animation-delay: -1.6s;\\n}\\n@keyframes squarelink-preloader {\\n 0%, 100% {\\n opacity: 1;\\n }\\n 50% {\\n opacity: 0.5;\\n }\\n}\",(document.head||document.getElementsByTagName(\"head\")[0]).appendChild(n);var i=window.open(\"\",\"_blank\",\"scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,width=375,height=350,left=-500,top=150\");if(!i||i.closed||void 0===i.closed){try{i.close()}catch(e){}return Promise.resolve({iframe:new I(t,r)})}return T({url:t,popup:i,params:r})},L=function(){return(L=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},R=function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{f(n.next(e))}catch(e){o(e)}}function s(e){try{f(n.throw(e))}catch(e){o(e)}}function f(e){e.done?i(e.value):new r((function(t){t(e.value)})).then(a,s)}f((n=n.apply(e,t||[])).next())}))},O=function(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},\"function\"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=(i=a.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){a.label=o[1];break}if(6===o[0]&&a.label<i[1]){a.label=i[1],i=o;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(o);break}i[2]&&a.ops.pop(),a.trys.pop();continue}o=t.call(e,a)}catch(e){o=[6,e],n=0}finally{r=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,s])}}},C=[\"wallets:admin\",\"wallets:edit\",\"wallets:create\",\"wallets:remove\",\"wallets:read\",\"user\",\"user:name\",\"user:email\",\"user:security\"],N=function(e){return new Promise((function(t,r){var n=new XMLHttpRequest;n.open(\"GET\",e),n.send(),n.onload=function(){403===n.status?r(new x(\"You are not authorized to access that resource\")):200!==n.status?r(new x(\"Issue connecting to Squarelink servers\")):t(JSON.parse(n.response))},n.onerror=function(){r(new x(\"Issue connecting to Squarelink servers\"))}}))},j=function(e){var t=this;return new Promise((function(r,n){return R(t,void 0,void 0,(function(){var t,n,i,o,a;return O(this,(function(s){switch(s.label){case 0:return[4,B(e)];case 1:return t=s.sent(),n=t.popup,i=t.iframe,t.error?[2,r({error:\"Window closed\"})]:(o=!1,n&&(a=setInterval((function(){if(o)clearInterval(a);else if(n.closed){o=!0,window.removeEventListener(\"message\",(function(){})),clearInterval(a),r({error:\"Window closed\"});var e=document.getElementById(\"squarelink-preloader-container\");e.parentNode.removeChild(e)}}),1)),i&&(i.onClosed=function(e){o||(o=!0,window.removeEventListener(\"message\",(function(){})),r({error:e||\"Window closed\"}))}),window.addEventListener(\"message\",(function(e){var t=e.data,a=t.origin;t.height;if(\"onload\"!==t.type&&\"squarelink\"===a&&!o){if(o=!0,window.removeEventListener(\"message\",(function(){})),n){n.close();var s=document.getElementById(\"squarelink-preloader-container\");s.parentNode.removeChild(s)}else i.close();r(L({},e.data,{origin:void 0,height:void 0}))}}),!1),[2])}}))}))}))},D=function(e){e.client_id;var t=e.network,r=e.scope;if(r){if(!Array.isArray(r))throw new x(\"'scope' must be an Array\");for(var n in r)if(!C.includes(r[n]))throw new x(\"We do not support the \"+r[n]+\" scope\")}if(\"object\"==typeof t){if(!t.url)throw new x(\"Please provide an RPC endpoint for your custom network\");if(!t.url.match(/(wss|https){1}?:(\\/?\\/?)[^\\s]+/))throw new x(\"We do not currently support insecure (http://, ws://) RPC connections. Try updating squarelink to its latest version!\");if(t.chainId&&(t.chainId!==parseInt(t.chainId)||t.chainId<0||t.chainId>5e5))throw new x(\"Please provide a valid Chain ID\");if(void 0!==t.skipCache&&\"boolean\"!=typeof t.skipCache)throw new x(\"the `skipCache` paramter must be a boolean\")}else{if(!this.NETWORKS[t])throw new x(\"Invalid network provided\");if(this.NETWORKS[t].sdkVersion){var i=this.NETWORKS[t].sdkVersion,o=\"1.1.4\".split(\".\"),a=i.split(\".\");for(n=0;n<3;n++){if(parseInt(o[n])>parseInt(a[n]))return;if(parseInt(o[n])<parseInt(a[n]))throw new x(\"You need to update Squarelink to squarelink@\"+i+\" to use that network\")}}}},q=function(){var e=\"localhost\"===location.hostname||\"127.0.0.1\"===location.hostname,t=\"https:\"===location.protocol,r=\"chrome-extension:\"===location.protocol;if(!(e||t||r))throw new x(\"Access to the Squarelink Web3 Engine is restricted to secure origins.\\nIf this is a development environment please use http://localhost:\"+location.port+\" instead.\\nOtherwise, please use an SSL certificate.\")},U=function(e){var t,r=!0;if(\"object\"==typeof e)t=e.url,r=void 0===e.skipCache||e.skipCache;else{var n=this.NETWORKS[e];t=n.rpcUrl,r=void 0===n.skipCache||n.skipCache}switch(t.split(\":\")[0].toLowerCase()){case\"http\":case\"https\":return{rpcUrl:t,skipCache:r,connectionType:\"http\"};case\"ws\":case\"wss\":return{rpcUrl:t,skipCache:r,connectionType:\"ws\"};default:throw new x('Unrecognized protocol in \"'+t+'\"')}},F=function(e){return\"object\"==typeof e?e.chainId||null:this.NETWORKS[e].chainId},z=function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{f(n.next(e))}catch(e){o(e)}}function s(e){try{f(n.throw(e))}catch(e){o(e)}}function f(e){e.done?i(e.value):new r((function(t){t(e.value)})).then(a,s)}f((n=n.apply(e,t||[])).next())}))},K=function(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},\"function\"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=(i=a.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){a.label=o[1];break}if(6===o[0]&&a.label<i[1]){a.label=i[1],i=o;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(o);break}i[2]&&a.ops.pop(),a.trys.pop();continue}o=t.call(e,a)}catch(e){o=[6,e],n=0}finally{r=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,s])}}},H=function(){var e=this;this.loadingNetworks=!0,N(\"https://api.squarelink.com/networks\").then((function(t){e.NETWORKS=t,e.loadingNetworks=!1})).catch((function(e){throw new x(\"Issue connecting to Squarelink\")}))},V=function(){return z(this,void 0,void 0,(function(){var e=this;return K(this,(function(t){return[2,new Promise((function(t,r){var n=setInterval((function(){e.loadingNetworks||(clearInterval(n),t())}),1)}))]}))}))},Y=JSON.parse('{\"mainnet\":{\"name\":\"mainnet\",\"label\":\"Ethereum\",\"chainId\":1,\"rpcUrl\":\"https://mainnet.infura.io/v3/97d643e0cb664922a7009a6af33b42aa\",\"skipCache\":true,\"color\":\"rgb(79, 227, 194)\"},\"xdai\":{\"name\":\"xdai\",\"label\":\"xDai\",\"chainId\":100,\"rpcUrl\":\"https://dai.poa.network\",\"skipCache\":false,\"color\":\"rgb(233, 160, 34)\"},\"poa\":{\"name\":\"poa\",\"label\":\"POA Network\",\"chainId\":99,\"rpcUrl\":\"https://core.poa.network\",\"skipCache\":false,\"color\":\"rgb(82, 49, 159)\"},\"sokol\":{\"name\":\"sokol\",\"label\":\"Sokol\",\"chainId\":77,\"rpcUrl\":\"https://sokol.poa.network\",\"skipCache\":false,\"color\":\"rgb(110, 34, 233)\"},\"maticAlpha\":{\"name\":\"maticAlpha\",\"label\":\"α-Matic Network\",\"chainId\":4626,\"rpcUrl\":\"https://alpha.ethereum.matic.network\",\"skipCache\":false,\"color\":\"rgb(34, 120, 233)\"},\"maticTestnet\":{\"name\":\"maticTestnet\",\"label\":\"Matic Testnet\",\"chainId\":8995,\"rpcUrl\":\"https://testnet2.matic.network\",\"skipCache\":false,\"color\":\"rgb(34, 120, 233)\"},\"thundercore\":{\"name\":\"thundercore\",\"label\":\"Thundercore\",\"chainId\":108,\"rpcUrl\":\"https://mainnet-rpc.thundercore.com\",\"skipCache\":false,\"color\":\"rgb(233, 207, 34)\"},\"thundertest\":{\"name\":\"thundertest\",\"label\":\"Thundercore Testnet\",\"chainId\":18,\"rpcUrl\":\"https://mainnet-rpc.thundercore.com\",\"skipCache\":false,\"color\":\"rgb(233, 207, 34)\"},\"lightstreams\":{\"name\":\"lightstreams\",\"label\":\"Lightstreams\",\"chainId\":163,\"rpcUrl\":\"https://node.mainnet.lightstreams.io\",\"skipCache\":false,\"color\":\"rgb(149, 0, 0)\"},\"lightstreamsSirius\":{\"name\":\"lightstreamsSirius\",\"label\":\"Lightstreams Sirius\",\"chainId\":162,\"rpcUrl\":\"https://node.sirius.lightstreams.io\",\"skipCache\":false,\"color\":\"rgb(149, 0, 0)\"},\"rinkeby\":{\"name\":\"rinkeby\",\"label\":\"Rinkeby\",\"chainId\":4,\"rpcUrl\":\"https://rinkeby.infura.io/v3/97d643e0cb664922a7009a6af33b42aa\",\"skipCache\":true,\"color\":\"rgb(227, 79, 159)\"},\"kovan\":{\"name\":\"kovan\",\"label\":\"Kovan\",\"chainId\":42,\"rpcUrl\":\"https://kovan.infura.io/v3/97d643e0cb664922a7009a6af33b42aa\",\"skipCache\":true,\"color\":\"rgb(227, 199, 79)\"},\"ropsten\":{\"name\":\"ropsten\",\"label\":\"Ropsten\",\"chainId\":3,\"rpcUrl\":\"https://ropsten.infura.io/v3/97d643e0cb664922a7009a6af33b42aa\",\"skipCache\":true,\"color\":\"rgb(79, 103, 227)\"},\"goerli\":{\"name\":\"goerli\",\"label\":\"Goerli\",\"chainId\":5,\"rpcUrl\":\"https://goerli.infura.io/v3/97d643e0cb664922a7009a6af33b42aa\",\"skipCache\":true,\"color\":\"rgb(73, 72, 48)\"},\"usterra\":{\"name\":\"usterra\",\"label\":\"Terra\",\"chainId\":69,\"rpcUrl\":\"https://usterra.squarelink.com\",\"skipCache\":false,\"color\":\"rgb(9, 24, 82)\"},\"vipc\":{\"name\":\"vipc\",\"label\":\"VIP Coin\",\"chainId\":69,\"rpcUrl\":\"https://vipc-network.squarelink.com\",\"skipCache\":false,\"color\":\"rgb(82, 9, 9)\"}}'),G=r(23),$=r.n(G),W=function(){return(W=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},Z=function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{f(n.next(e))}catch(e){o(e)}}function s(e){try{f(n.throw(e))}catch(e){o(e)}}function f(e){e.done?i(e.value):new r((function(t){t(e.value)})).then(a,s)}f((n=n.apply(e,t||[])).next())}))},J=function(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},\"function\"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=(i=a.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){a.label=o[1];break}if(6===o[0]&&a.label<i[1]){a.label=i[1],i=o;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(o);break}i[2]&&a.ops.pop(),a.trys.pop();continue}o=t.call(e,a)}catch(e){o=[6,e],n=0}finally{r=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,s])}}},X=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&(r[n[i]]=e[n[i]])}return r},Q=function(e,t){void 0===t&&(t={});var r={\"wallets:read\":1};t.scope&&t.scope.length&&t.scope.forEach((function(e){return r[e]=1})),r=Object.keys(r).toString().replace(/ /g,\"\");var n=[];return n.push(N(\"https://api.squarelink.com/wallets?access_token=\"+e).then((function(e){var t=e.success,r=e.wallets;if(t)return Promise.resolve({accounts:[r.find((function(e){return e.default}))].concat(r.filter((function(e){return!e.default}))).map((function(e){return e.address}))});throw new x(data.message||\"Issue fetching accounts, try again later\")}))),\"wallets:read\"!==r&&n.push(N(\"https://api.squarelink.com/user?access_token=\"+e).then((function(e){var t=e.success,r=X(e,[\"success\"]);if(t)return Promise.resolve({securitySettings:{has2fa:r.has_2fa,hasRecovery:r.has_recovery,emailVerified:r.email_verified},name:r.given_name+\" \"+r.family_name,email:r.email});throw new x(data.message||\"Issue fetching user info, try again later\")}))),Promise.all(n).then((function(e){var t={};return e.forEach((function(e){t=W({},t,e)})),Promise.resolve(t)}))},ee=function(){return(ee=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},te=function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{f(n.next(e))}catch(e){o(e)}}function s(e){try{f(n.throw(e))}catch(e){o(e)}}function f(e){e.done?i(e.value):new r((function(t){t(e.value)})).then(a,s)}f((n=n.apply(e,t||[])).next())}))},re=function(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},\"function\"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=(i=a.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){a.label=o[1];break}if(6===o[0]&&a.label<i[1]){a.label=i[1],i=o;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(o);break}i[2]&&a.ops.pop(),a.trys.pop();continue}o=t.call(e,a)}catch(e){o=[6,e],n=0}finally{r=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,s])}}},ne=function(){function e(e,t,r){void 0===t&&(t=\"mainnet\"),void 0===r&&(r={}),r.useSync?(this.NETWORKS=Y,this.useSync=!0):H.call(this),this.client_id=e,this.network=t,this.token=r.token,this.scope=r.scope||[]}return e.prototype.getProvider=function(e){return te(this,void 0,void 0,(function(){var t,r,n,i,o;return re(this,(function(a){switch(a.label){case 0:if(a.trys.push([0,2,,3]),this.useSync)throw new x(\"Please set `useSync` to false\");return[4,V.call(this)];case 1:return a.sent(),r=(t=this).client_id,n=t.network,i=t.scope,q(),D.call(this,{client_id:r,network:n,scope:i}),this.changeNetwork(n),e?[2,e(this.engine,null)]:[2,Promise.resolve(this.engine)];case 2:return o=a.sent(),e?[2,e(null,o)]:[2,Promise.reject(o)];case 3:return[2]}}))}))},e.prototype.getProviderSync=function(){if(console.warn(\"[Squarelink]: getProviderSync is not recommended as we cannot ensure uptime of RPC providers.\"),!this.useSync)throw new x(\"Please set `useSync` to true\");var e=this.client_id,t=this.network,r=this.scope;return q(),D.call(this,{client_id:e,network:t,scope:r}),this.changeNetwork(t),this.engine},e.prototype.changeNetwork=function(e){var t=this.client_id;D.call(this,{client_id:t,network:e}),this.network=e,this.net_version=F.call(this,e);var r=U.call(this,e),n=r.rpcUrl,i=r.connectionType,o=r.skipCache;this.connectionType=i,this.rpcUrl=n,this._initEngine(o)},e.prototype._initEngine=function(e){var t=this,r=this;this.accounts=[];var n=new o.a({setSkipCacheFlag:e});n.isSquarelink=!0,n.isConnected=function(){return!0},n.send=function(e,r){if(\"string\"==typeof e)return new Promise((function(t,i){n.sendAsync({jsonrpc:\"2.0\",id:42,method:e,params:r||[]},(function(e,r){e?i(e):t(r.result)}))}));if(!r){var i=null;switch(e.method){case\"eth_accounts\":i=t.accounts.length?t.accounts:[];break;case\"eth_coinbase\":i=t.accounts.length?t.accounts[0]:void 0;break;case\"net_version\":i=t.net_version||null;break;default:var o=\"The Squarelink Web3 object does not support synchronous methods like \"+e.method+\" without a callback parameter.\";throw new x(o)}return{id:e.id,jsonrpc:e.jsonrpc,result:i}}n.sendAsync(e,r)};var i=new c.a({web3_clientVersion:\"Squarelink/v1.1.4/javascript\",net_listening:!0,eth_hashrate:\"0x00\",eth_mining:!1,eth_syncing:!0}),a=new g.a,f=new s.a,u=new d.a,l=new b.a({getAccounts:function(e){return te(this,void 0,void 0,(function(){return re(this,(function(t){return e(null,r.accounts),[2]}))}))},getCoinbase:function(e){return te(this,void 0,void 0,(function(){return re(this,(function(t){return this.getAccounts().then((function(t){return e(null,t[0])})).catch((function(t){return e(t,null)})),[2]}))}))},signTransaction:function(e,t){return te(this,void 0,void 0,(function(){var n;return re(this,(function(i){return r.accounts.length?(\"number\"==typeof(n=e.from)&&(n=r.accounts[n]),function(e){var t=e.method,r=e.client_id,n=e.value,i=e.to,o=e.from,a=e.gas,s=e.gasPrice,f=e.nonce,c=e.network,u=e.description,h=e.state,l=e.data;return Z(this,void 0,void 0,(function(){var e;return J(this,(function(d){if(!i)throw new x(\"You must provide a recipient `to` for the request\");return S+\"/tx?widget=true&version=1.1.4\",e={method:t,client_id:r,version:\"1.1.4\",widget:!0,to:i,from:o,data:l,state:h,description:u},n&&(e.value=new $.a(n,16).toString()),a&&(e.gas=new $.a(a,16).toString()),s&&(e.gasPrice=new $.a(s,16).toString()),f&&(e.nonce=new $.a(f,16).toString()),\"object\"==typeof c?(e.network=\"custom\",e.rpc_url=c.url,c.chainId&&(e.chain_id=c.chainId)):e.network=c,[2,j({url:\"https://app.squarelink.com/tx?widget=true&version=1.1.4\",params:e}).then((function(e){var t=e.error,r=e.result;if(t)throw new x(t);return Promise.resolve(r)}))]}))}))}(ee({},e,{from:n,method:\"eth_signTransaction\",client_id:r.client_id,network:r.network})).then((function(e){t(null,e)})).catch((function(e){t(e,null)})),[2]):(t(new x(\"No accounts available\"),null),[2])}))}))},signMessage:function(e,t){return te(this,void 0,void 0,(function(){var n,i,o;return re(this,(function(a){return r.accounts.length?(n=e.from,i=e.data,o=e.method,\"number\"==typeof n&&(n=r.accounts[n]),function(e){var t=e.client_id,r=e.message,n=e.method,i=e.account;return Z(this,void 0,void 0,(function(){var e;return J(this,(function(o){return S+\"/msg?version=1.1.4\",e={client_id:t,method:n,version:\"1.1.4\",account:i},\"eth_signTypedData\"===n?e.params=r:\"eth_signTypedData_v3\"===n?e.paramsV3=r:e.msg=r,[2,j({url:\"https://app.squarelink.com/msg?version=1.1.4\",params:e}).then((function(e){var t=e.error,r=e.result;if(t)throw new x(t);return Promise.resolve(r)}))]}))}))}({client_id:r.client_id,method:o||\"eth_sign\",message:i,account:n}).then((function(e){return t(null,e)})).catch((function(e){return t(e,null)})),[2]):(t(new x(\"No accounts available\"),null),[2])}))}))},signPersonalMessage:function(e,t){return te(this,void 0,void 0,(function(){return re(this,(function(n){return r.accounts.length?(this.signMessage(ee({},e,{method:\"eth_personalSign\"}),(function(e,r){e?t(e,null):t(null,r)})),[2]):(t(new x(\"No accounts available\"),null),[2])}))}))},signTypedMessage:function(e,t){return te(this,void 0,void 0,(function(){return re(this,(function(n){return r.accounts.length?(this.signMessage(ee({},e,{method:\"eth_signTypedData\"}),(function(e,r){e?t(e,null):t(null,r)})),[2]):(t(new x(\"No accounts available\"),null),[2])}))}))},signTypedMessageV3:function(e,t){return te(this,void 0,void 0,(function(){return re(this,(function(n){return r.accounts.length?(this.signMessage(ee({},e,{method:\"eth_signTypedData_v3\"}),(function(e,r){e?t(e,null):t(null,r)})),[2]):(t(new x(\"No accounts available\"),null),[2])}))}))}});n.addProvider(i),n.addProvider(a),n.addProvider(f),n.addProvider(u),n.addProvider(l,0);var p=this.rpcUrl,y=this.connectionType;\"http\"===y?(n.addProvider(new m.a({rpcUrl:p})),n.addProvider(new w.a,2),n.addProvider(new h.a,1)):\"ws\"===y&&n.addProvider(new A.a({rpcUrl:p})),n.on(\"error\",(function(e){console.error(e.stack)})),n.enable=function(){return new Promise((function(e,t){r.token?Q(r.token,{scope:r.scope}).then((function(t){var n=t.email,i=t.name,o=t.securitySettings,a=t.accounts;r.accounts=a,r.defaultEmail=n,r.defaultName=i,r.defaultSecuritySettings=o,e(a)})).catch((function(e){return t(e,null)})):function(e,t){void 0===t&&(t={});var r={\"wallets:read\":1};t.scope&&t.scope.length&&t.scope.forEach((function(e){return r[e]=1})),r=Object.keys(r).toString().replace(/ /g,\"\");return j({url:\"https://app.squarelink.com/authorize?version=1.1.4\",params:{version:\"1.1.4\",client_id:e,scope:\"[\"+r+\"]\",response_type:\"token\",widget:!0}}).then((function(e){var r=e.error,n=e.result;return r?Promise.reject(new x(r)):Q(n,t)}))}(r.client_id,{scope:r.scope}).then((function(t){var n=t.email,i=t.name,o=t.securitySettings,a=t.accounts;r.accounts=a,r.defaultEmail=n,r.defaultName=i,r.defaultSecuritySettings=o,e(a)})).catch((function(e){return t(e)}))}))},n.start(),this.engine=n},e.prototype.getEmail=function(){if(!this.scope.includes(\"user\")&&!this.scope.includes(\"user:email\"))throw new x(\"Please enable the user:email scope when initializing Squarelink\");return this.defaultEmail},e.prototype.getName=function(){if(!this.scope.includes(\"user\")&&!this.scope.includes(\"user:name\"))throw new x(\"Please enable the user:name scope when initializing Squarelink\");return this.defaultName},e.prototype.getSecuritySettings=function(){if(!this.scope.includes(\"user\")&&!this.scope.includes(\"user:security\"))throw new x(\"Please enable the user:security scope when initializing Squarelink\");return this.defaultSecuritySettings},e}();t.default=ne}]).default}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3NxdWFyZWxpbmsvbGliL3NxdWFyZWxpbmsubWluLmpzPzhmYzIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxLQUFpRCxvQkFBb0IsU0FBbUgsQ0FBQyxrQkFBa0IsbUJBQW1CLFNBQVMsY0FBYyw0QkFBNEIsWUFBWSxxQkFBcUIsMkRBQTJELHVDQUF1QyxxQ0FBcUMsb0JBQW9CLEVBQUUsaUJBQWlCLDRGQUE0RixlQUFlLHdDQUF3QyxTQUFTLEVBQUUsbUJBQW1CLDhCQUE4QixxREFBcUQsMEJBQTBCLDZDQUE2QyxzQkFBc0IsNkRBQTZELFlBQVksZUFBZSxTQUFTLGlCQUFpQixpQ0FBaUMsaUJBQWlCLFlBQVksVUFBVSxzQkFBc0IsbUJBQW1CLGlEQUFpRCxtQkFBbUIsZ0JBQWdCLHlEQUF5RCxzREFBc0QsYUFBYSxtREFBbUQsR0FBRyx5QkFBeUIsTUFBTSxXQUFXLG1CQUFtQixzRUFBc0UsaUJBQWlCLHNCQUFzQixnQkFBZ0IseUJBQXlCLGtCQUFrQixnQkFBZ0IsdUpBQXVKLDJFQUEyRSxnQkFBZ0IseUJBQXlCLHVFQUF1RSxXQUFXLHVFQUF1RSwyQkFBMkIsdUVBQXVFLFlBQVksK0JBQStCLHVFQUF1RSx3QkFBd0IsaUJBQWlCLGFBQWEsb0RBQW9ELDZCQUE2QixLQUFLLFdBQVcsb0RBQW9ELFNBQVMsY0FBYyxxQkFBcUIsVUFBVSxpQkFBaUIsbUJBQW1CLDRCQUE0QixtQkFBbUIsSUFBSSxrRUFBa0Usc0JBQXNCLGlCQUFpQixVQUFVLCtCQUErQiwrQkFBK0IsYUFBYSw4QkFBOEIsU0FBUyxtQkFBbUIsa0JBQWtCLFVBQVUsSUFBSSwwQ0FBMEMsU0FBUywyQkFBMkIsNkNBQTZDLGdDQUFnQywrQ0FBK0MsU0FBUyxrQkFBa0IsT0FBTyx5Q0FBeUMsMERBQTBELGlDQUFpQyxXQUFXLGdCQUFnQixPQUFPLG1CQUFtQiw0U0FBNFMsZ0JBQWdCLGtCQUFrQiw2REFBNkQsZ0JBQWdC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cUQsd0NBQXdDLE1BQU0sMkJBQTJCLGlDQUFpQywrQ0FBK0MsMEZBQTBGLDREQUE0RCxvQkFBb0IseUJBQXlCLG9CQUFvQiwwQkFBMEIsSUFBSSxHQUFHLEdBQUcsRUFBRSwrREFBK0Qsb0JBQW9CLGlCQUFpQixzQkFBc0IsaUJBQWlCLHFEQUFxRCxHQUFHLEdBQUcsbUNBQW1DLHlDQUF5Qyw0QkFBNEIsZ0RBQWdELElBQUksMEJBQTBCLGlCQUFpQixzQkFBc0IscURBQXFELEdBQUcsR0FBRyxnQ0FBZ0MseUNBQXlDLDRCQUE0QixnREFBZ0QsSUFBSSwyQkFBMkIsaUJBQWlCLHNCQUFzQixxREFBcUQsR0FBRyxHQUFHLGtDQUFrQyx5Q0FBeUMsNEJBQTRCLGdEQUFnRCxJQUFJLDhCQUE4QixpQkFBaUIsc0JBQXNCLHFEQUFxRCxHQUFHLElBQUksRUFBRSx1RkFBdUYsd0NBQXdDLG1DQUFtQyxTQUFTLHVGQUF1RixTQUFTLDZCQUE2Qix1QkFBdUIsdUJBQXVCLGtDQUFrQyxtQkFBbUIsY0FBYyxvQkFBb0IseURBQXlELCtFQUErRSxzQkFBc0IsaUJBQWlCLGlCQUFpQixpQkFBaUIsRUFBRSxPQUFPLGtCQUFrQixzREFBc0QsY0FBYyxnREFBZ0QsVUFBVSxpRUFBaUUsNkVBQTZFLG9CQUFvQix5QkFBeUIseUNBQXlDLEdBQUcsY0FBYyxjQUFjLG9CQUFvQix5REFBeUQsK0VBQStFLHNCQUFzQixZQUFZLEdBQUcsR0FBRyx5QkFBeUIsaUNBQWlDLG1KQUFtSix5QkFBeUIsZ0NBQWdDLGlKQUFpSix3QkFBd0IsNENBQTRDLHlKQUF5SixvQ0FBb0MsR0FBRyxHQUFHLGFBQWEsV0FBVyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9zcXVhcmVsaW5rL2xpYi9zcXVhcmVsaW5rLm1pbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIiFmdW5jdGlvbihlLHQpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcIm9iamVjdFwiPT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPXQoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtdLHQpOlwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHMuU3F1YXJlbGluaz10KCk6ZS5TcXVhcmVsaW5rPXQoKX0odGhpcywoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9e307ZnVuY3Rpb24gcihuKXtpZih0W25dKXJldHVybiB0W25dLmV4cG9ydHM7dmFyIGk9dFtuXT17aTpuLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIGVbbl0uY2FsbChpLmV4cG9ydHMsaSxpLmV4cG9ydHMsciksaS5sPSEwLGkuZXhwb3J0c31yZXR1cm4gci5tPWUsci5jPXQsci5kPWZ1bmN0aW9uKGUsdCxuKXtyLm8oZSx0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTohMCxnZXQ6bn0pfSxyLnI9ZnVuY3Rpb24oZSl7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOlwiTW9kdWxlXCJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sci50PWZ1bmN0aW9uKGUsdCl7aWYoMSZ0JiYoZT1yKGUpKSw4JnQpcmV0dXJuIGU7aWYoNCZ0JiZcIm9iamVjdFwiPT10eXBlb2YgZSYmZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciBuPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoci5yKG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOmV9KSwyJnQmJlwic3RyaW5nXCIhPXR5cGVvZiBlKWZvcih2YXIgaSBpbiBlKXIuZChuLGksZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19LmJpbmQobnVsbCxpKSk7cmV0dXJuIG59LHIubj1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gZS5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gci5kKHQsXCJhXCIsdCksdH0sci5vPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfSxyLnA9XCJcIixyKHIucz0yNTcpfShbZnVuY3Rpb24oZSx0KXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuY3JlYXRlP2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3QmJihlLnN1cGVyXz10LGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pKX06ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYodCl7ZS5zdXBlcl89dDt2YXIgcj1mdW5jdGlvbigpe307ci5wcm90b3R5cGU9dC5wcm90b3R5cGUsZS5wcm90b3R5cGU9bmV3IHIsZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZX19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig3KSxpPW4uQnVmZmVyO2Z1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHIgaW4gZSl0W3JdPWVbcl19ZnVuY3Rpb24gYShlLHQscil7cmV0dXJuIGkoZSx0LHIpfWkuZnJvbSYmaS5hbGxvYyYmaS5hbGxvY1Vuc2FmZSYmaS5hbGxvY1Vuc2FmZVNsb3c/ZS5leHBvcnRzPW46KG8obix0KSx0LkJ1ZmZlcj1hKSxhLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSxvKGksYSksYS5mcm9tPWZ1bmN0aW9uKGUsdCxyKXtpZihcIm51bWJlclwiPT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXJcIik7cmV0dXJuIGkoZSx0LHIpfSxhLmFsbG9jPWZ1bmN0aW9uKGUsdCxyKXtpZihcIm51bWJlclwiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlclwiKTt2YXIgbj1pKGUpO3JldHVybiB2b2lkIDAhPT10P1wic3RyaW5nXCI9PXR5cGVvZiByP24uZmlsbCh0LHIpOm4uZmlsbCh0KTpuLmZpbGwoMCksbn0sYS5hbGxvY1Vuc2FmZT1mdW5jdGlvbihlKXtpZihcIm51bWJlclwiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlclwiKTtyZXR1cm4gaShlKX0sYS5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oZSl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXJcIik7cmV0dXJuIG4uU2xvd0J1ZmZlcihlKX19LGZ1bmN0aW9uKGUsdCxyKXsoZnVuY3Rpb24oZSl7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnN8fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1PYmplY3Qua2V5cyhlKSxyPXt9LG49MDtuPHQubGVuZ3RoO24rKylyW3Rbbl1dPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0W25dKTtyZXR1cm4gcn0saT0vJVtzZGolXS9nO3QuZm9ybWF0PWZ1bmN0aW9uKGUpe2lmKCFnKGUpKXtmb3IodmFyIHQ9W10scj0wO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspdC5wdXNoKHMoYXJndW1lbnRzW3JdKSk7cmV0dXJuIHQuam9pbihcIiBcIil9cj0xO2Zvcih2YXIgbj1hcmd1bWVudHMsbz1uLmxlbmd0aCxhPVN0cmluZyhlKS5yZXBsYWNlKGksKGZ1bmN0aW9uKGUpe2lmKFwiJSVcIj09PWUpcmV0dXJuXCIlXCI7aWYocj49bylyZXR1cm4gZTtzd2l0Y2goZSl7Y2FzZVwiJXNcIjpyZXR1cm4gU3RyaW5nKG5bcisrXSk7Y2FzZVwiJWRcIjpyZXR1cm4gTnVtYmVyKG5bcisrXSk7Y2FzZVwiJWpcIjp0cnl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KG5bcisrXSl9Y2F0Y2goZSl7cmV0dXJuXCJbQ2lyY3VsYXJdXCJ9ZGVmYXVsdDpyZXR1cm4gZX19KSksZj1uW3JdO3I8bztmPW5bKytyXSliKGYpfHwhXyhmKT9hKz1cIiBcIitmOmErPVwiIFwiK3MoZik7cmV0dXJuIGF9LHQuZGVwcmVjYXRlPWZ1bmN0aW9uKHIsbil7aWYodm9pZCAwIT09ZSYmITA9PT1lLm5vRGVwcmVjYXRpb24pcmV0dXJuIHI7aWYodm9pZCAwPT09ZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5kZXByZWNhdGUocixuKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3ZhciBpPSExO3JldHVybiBmdW5jdGlvbigpe2lmKCFpKXtpZihlLnRocm93RGVwcmVjYXRpb24pdGhyb3cgbmV3IEVycm9yKG4pO2UudHJhY2VEZXByZWNhdGlvbj9jb25zb2xlLnRyYWNlKG4pOmNvbnNvbGUuZXJyb3IobiksaT0hMH1yZXR1cm4gci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fTt2YXIgbyxhPXt9O2Z1bmN0aW9uIHMoZSxyKXt2YXIgbj17c2VlbjpbXSxzdHlsaXplOmN9O3JldHVybiBhcmd1bWVudHMubGVuZ3RoPj0zJiYobi5kZXB0aD1hcmd1bWVudHNbMl0pLGFyZ3VtZW50cy5sZW5ndGg+PTQmJihuLmNvbG9ycz1hcmd1bWVudHNbM10pLHAocik/bi5zaG93SGlkZGVuPXI6ciYmdC5fZXh0ZW5kKG4sciksdihuLnNob3dIaWRkZW4pJiYobi5zaG93SGlkZGVuPSExKSx2KG4uZGVwdGgpJiYobi5kZXB0aD0yKSx2KG4uY29sb3JzKSYmKG4uY29sb3JzPSExKSx2KG4uY3VzdG9tSW5zcGVjdCkmJihuLmN1c3RvbUluc3BlY3Q9ITApLG4uY29sb3JzJiYobi5zdHlsaXplPWYpLHUobixlLG4uZGVwdGgpfWZ1bmN0aW9uIGYoZSx0KXt2YXIgcj1zLnN0eWxlc1t0XTtyZXR1cm4gcj9cIlx1MDAxYltcIitzLmNvbG9yc1tyXVswXStcIm1cIitlK1wiXHUwMDFiW1wiK3MuY29sb3JzW3JdWzFdK1wibVwiOmV9ZnVuY3Rpb24gYyhlLHQpe3JldHVybiBlfWZ1bmN0aW9uIHUoZSxyLG4pe2lmKGUuY3VzdG9tSW5zcGVjdCYmciYmQShyLmluc3BlY3QpJiZyLmluc3BlY3QhPT10Lmluc3BlY3QmJighci5jb25zdHJ1Y3Rvcnx8ci5jb25zdHJ1Y3Rvci5wcm90b3R5cGUhPT1yKSl7dmFyIGk9ci5pbnNwZWN0KG4sZSk7cmV0dXJuIGcoaSl8fChpPXUoZSxpLG4pKSxpfXZhciBvPWZ1bmN0aW9uKGUsdCl7aWYodih0KSlyZXR1cm4gZS5zdHlsaXplKFwidW5kZWZpbmVkXCIsXCJ1bmRlZmluZWRcIik7aWYoZyh0KSl7dmFyIHI9XCInXCIrSlNPTi5zdHJpbmdpZnkodCkucmVwbGFjZSgvXlwifFwiJC9nLFwiXCIpLnJlcGxhY2UoLycvZyxcIlxcXFwnXCIpLnJlcGxhY2UoL1xcXFxcIi9nLCdcIicpK1wiJ1wiO3JldHVybiBlLnN0eWxpemUocixcInN0cmluZ1wiKX1pZih5KHQpKXJldHVybiBlLnN0eWxpemUoXCJcIit0LFwibnVtYmVyXCIpO2lmKHAodCkpcmV0dXJuIGUuc3R5bGl6ZShcIlwiK3QsXCJib29sZWFuXCIpO2lmKGIodCkpcmV0dXJuIGUuc3R5bGl6ZShcIm51bGxcIixcIm51bGxcIil9KGUscik7aWYobylyZXR1cm4gbzt2YXIgYT1PYmplY3Qua2V5cyhyKSxzPWZ1bmN0aW9uKGUpe3ZhciB0PXt9O3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUscil7dFtlXT0hMH0pKSx0fShhKTtpZihlLnNob3dIaWRkZW4mJihhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHIpKSxFKHIpJiYoYS5pbmRleE9mKFwibWVzc2FnZVwiKT49MHx8YS5pbmRleE9mKFwiZGVzY3JpcHRpb25cIik+PTApKXJldHVybiBoKHIpO2lmKDA9PT1hLmxlbmd0aCl7aWYoQShyKSl7dmFyIGY9ci5uYW1lP1wiOiBcIityLm5hbWU6XCJcIjtyZXR1cm4gZS5zdHlsaXplKFwiW0Z1bmN0aW9uXCIrZitcIl1cIixcInNwZWNpYWxcIil9aWYobShyKSlyZXR1cm4gZS5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKSxcInJlZ2V4cFwiKTtpZih3KHIpKXJldHVybiBlLnN0eWxpemUoRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKSxcImRhdGVcIik7aWYoRShyKSlyZXR1cm4gaChyKX12YXIgYyxfPVwiXCIsUz0hMSxrPVtcIntcIixcIn1cIl07KGQocikmJihTPSEwLGs9W1wiW1wiLFwiXVwiXSksQShyKSkmJihfPVwiIFtGdW5jdGlvblwiKyhyLm5hbWU/XCI6IFwiK3IubmFtZTpcIlwiKStcIl1cIik7cmV0dXJuIG0ocikmJihfPVwiIFwiK1JlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKSksdyhyKSYmKF89XCIgXCIrRGF0ZS5wcm90b3R5cGUudG9VVENTdHJpbmcuY2FsbChyKSksRShyKSYmKF89XCIgXCIraChyKSksMCE9PWEubGVuZ3RofHxTJiYwIT1yLmxlbmd0aD9uPDA/bShyKT9lLnN0eWxpemUoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHIpLFwicmVnZXhwXCIpOmUuc3R5bGl6ZShcIltPYmplY3RdXCIsXCJzcGVjaWFsXCIpOihlLnNlZW4ucHVzaChyKSxjPVM/ZnVuY3Rpb24oZSx0LHIsbixpKXtmb3IodmFyIG89W10sYT0wLHM9dC5sZW5ndGg7YTxzOysrYSlNKHQsU3RyaW5nKGEpKT9vLnB1c2gobChlLHQscixuLFN0cmluZyhhKSwhMCkpOm8ucHVzaChcIlwiKTtyZXR1cm4gaS5mb3JFYWNoKChmdW5jdGlvbihpKXtpLm1hdGNoKC9eXFxkKyQvKXx8by5wdXNoKGwoZSx0LHIsbixpLCEwKSl9KSksb30oZSxyLG4scyxhKTphLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGwoZSxyLG4scyx0LFMpfSkpLGUuc2Vlbi5wb3AoKSxmdW5jdGlvbihlLHQscil7aWYoZS5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIDAsdC5pbmRleE9mKFwiXFxuXCIpPj0wJiYwLGUrdC5yZXBsYWNlKC9cXHUwMDFiXFxbXFxkXFxkP20vZyxcIlwiKS5sZW5ndGgrMX0pLDApPjYwKXJldHVybiByWzBdKyhcIlwiPT09dD9cIlwiOnQrXCJcXG4gXCIpK1wiIFwiK2Uuam9pbihcIixcXG4gIFwiKStcIiBcIityWzFdO3JldHVybiByWzBdK3QrXCIgXCIrZS5qb2luKFwiLCBcIikrXCIgXCIrclsxXX0oYyxfLGspKTprWzBdK18ra1sxXX1mdW5jdGlvbiBoKGUpe3JldHVyblwiW1wiK0Vycm9yLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpK1wiXVwifWZ1bmN0aW9uIGwoZSx0LHIsbixpLG8pe3ZhciBhLHMsZjtpZigoZj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsaSl8fHt2YWx1ZTp0W2ldfSkuZ2V0P3M9Zi5zZXQ/ZS5zdHlsaXplKFwiW0dldHRlci9TZXR0ZXJdXCIsXCJzcGVjaWFsXCIpOmUuc3R5bGl6ZShcIltHZXR0ZXJdXCIsXCJzcGVjaWFsXCIpOmYuc2V0JiYocz1lLnN0eWxpemUoXCJbU2V0dGVyXVwiLFwic3BlY2lhbFwiKSksTShuLGkpfHwoYT1cIltcIitpK1wiXVwiKSxzfHwoZS5zZWVuLmluZGV4T2YoZi52YWx1ZSk8MD8ocz1iKHIpP3UoZSxmLnZhbHVlLG51bGwpOnUoZSxmLnZhbHVlLHItMSkpLmluZGV4T2YoXCJcXG5cIik+LTEmJihzPW8/cy5zcGxpdChcIlxcblwiKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVyblwiICBcIitlfSkpLmpvaW4oXCJcXG5cIikuc3Vic3RyKDIpOlwiXFxuXCIrcy5zcGxpdChcIlxcblwiKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVyblwiICAgXCIrZX0pKS5qb2luKFwiXFxuXCIpKTpzPWUuc3R5bGl6ZShcIltDaXJjdWxhcl1cIixcInNwZWNpYWxcIikpLHYoYSkpe2lmKG8mJmkubWF0Y2goL15cXGQrJC8pKXJldHVybiBzOyhhPUpTT04uc3RyaW5naWZ5KFwiXCIraSkpLm1hdGNoKC9eXCIoW2EtekEtWl9dW2EtekEtWl8wLTldKilcIiQvKT8oYT1hLnN1YnN0cigxLGEubGVuZ3RoLTIpLGE9ZS5zdHlsaXplKGEsXCJuYW1lXCIpKTooYT1hLnJlcGxhY2UoLycvZyxcIlxcXFwnXCIpLnJlcGxhY2UoL1xcXFxcIi9nLCdcIicpLnJlcGxhY2UoLyheXCJ8XCIkKS9nLFwiJ1wiKSxhPWUuc3R5bGl6ZShhLFwic3RyaW5nXCIpKX1yZXR1cm4gYStcIjogXCIrc31mdW5jdGlvbiBkKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpfWZ1bmN0aW9uIHAoZSl7cmV0dXJuXCJib29sZWFuXCI9PXR5cGVvZiBlfWZ1bmN0aW9uIGIoZSl7cmV0dXJuIG51bGw9PT1lfWZ1bmN0aW9uIHkoZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGV9ZnVuY3Rpb24gZyhlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZX1mdW5jdGlvbiB2KGUpe3JldHVybiB2b2lkIDA9PT1lfWZ1bmN0aW9uIG0oZSl7cmV0dXJuIF8oZSkmJlwiW29iamVjdCBSZWdFeHBdXCI9PT1TKGUpfWZ1bmN0aW9uIF8oZSl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGUmJm51bGwhPT1lfWZ1bmN0aW9uIHcoZSl7cmV0dXJuIF8oZSkmJlwiW29iamVjdCBEYXRlXVwiPT09UyhlKX1mdW5jdGlvbiBFKGUpe3JldHVybiBfKGUpJiYoXCJbb2JqZWN0IEVycm9yXVwiPT09UyhlKXx8ZSBpbnN0YW5jZW9mIEVycm9yKX1mdW5jdGlvbiBBKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGV9ZnVuY3Rpb24gUyhlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfWZ1bmN0aW9uIGsoZSl7cmV0dXJuIGU8MTA/XCIwXCIrZS50b1N0cmluZygxMCk6ZS50b1N0cmluZygxMCl9dC5kZWJ1Z2xvZz1mdW5jdGlvbihyKXtpZih2KG8pJiYobz1lLmVudi5OT0RFX0RFQlVHfHxcIlwiKSxyPXIudG9VcHBlckNhc2UoKSwhYVtyXSlpZihuZXcgUmVnRXhwKFwiXFxcXGJcIityK1wiXFxcXGJcIixcImlcIikudGVzdChvKSl7dmFyIG49ZS5waWQ7YVtyXT1mdW5jdGlvbigpe3ZhciBlPXQuZm9ybWF0LmFwcGx5KHQsYXJndW1lbnRzKTtjb25zb2xlLmVycm9yKFwiJXMgJWQ6ICVzXCIscixuLGUpfX1lbHNlIGFbcl09ZnVuY3Rpb24oKXt9O3JldHVybiBhW3JdfSx0Lmluc3BlY3Q9cyxzLmNvbG9ycz17Ym9sZDpbMSwyMl0saXRhbGljOlszLDIzXSx1bmRlcmxpbmU6WzQsMjRdLGludmVyc2U6WzcsMjddLHdoaXRlOlszNywzOV0sZ3JleTpbOTAsMzldLGJsYWNrOlszMCwzOV0sYmx1ZTpbMzQsMzldLGN5YW46WzM2LDM5XSxncmVlbjpbMzIsMzldLG1hZ2VudGE6WzM1LDM5XSxyZWQ6WzMxLDM5XSx5ZWxsb3c6WzMzLDM5XX0scy5zdHlsZXM9e3NwZWNpYWw6XCJjeWFuXCIsbnVtYmVyOlwieWVsbG93XCIsYm9vbGVhbjpcInllbGxvd1wiLHVuZGVmaW5lZDpcImdyZXlcIixudWxsOlwiYm9sZFwiLHN0cmluZzpcImdyZWVuXCIsZGF0ZTpcIm1hZ2VudGFcIixyZWdleHA6XCJyZWRcIn0sdC5pc0FycmF5PWQsdC5pc0Jvb2xlYW49cCx0LmlzTnVsbD1iLHQuaXNOdWxsT3JVbmRlZmluZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV9LHQuaXNOdW1iZXI9eSx0LmlzU3RyaW5nPWcsdC5pc1N5bWJvbD1mdW5jdGlvbihlKXtyZXR1cm5cInN5bWJvbFwiPT10eXBlb2YgZX0sdC5pc1VuZGVmaW5lZD12LHQuaXNSZWdFeHA9bSx0LmlzT2JqZWN0PV8sdC5pc0RhdGU9dyx0LmlzRXJyb3I9RSx0LmlzRnVuY3Rpb249QSx0LmlzUHJpbWl0aXZlPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09ZXx8XCJib29sZWFuXCI9PXR5cGVvZiBlfHxcIm51bWJlclwiPT10eXBlb2YgZXx8XCJzdHJpbmdcIj09dHlwZW9mIGV8fFwic3ltYm9sXCI9PXR5cGVvZiBlfHx2b2lkIDA9PT1lfSx0LmlzQnVmZmVyPXIoMTA2KTt2YXIgeD1bXCJKYW5cIixcIkZlYlwiLFwiTWFyXCIsXCJBcHJcIixcIk1heVwiLFwiSnVuXCIsXCJKdWxcIixcIkF1Z1wiLFwiU2VwXCIsXCJPY3RcIixcIk5vdlwiLFwiRGVjXCJdO2Z1bmN0aW9uIEkoKXt2YXIgZT1uZXcgRGF0ZSx0PVtrKGUuZ2V0SG91cnMoKSksayhlLmdldE1pbnV0ZXMoKSksayhlLmdldFNlY29uZHMoKSldLmpvaW4oXCI6XCIpO3JldHVybltlLmdldERhdGUoKSx4W2UuZ2V0TW9udGgoKV0sdF0uam9pbihcIiBcIil9ZnVuY3Rpb24gTShlLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KX10LmxvZz1mdW5jdGlvbigpe2NvbnNvbGUubG9nKFwiJXMgLSAlc1wiLEkoKSx0LmZvcm1hdC5hcHBseSh0LGFyZ3VtZW50cykpfSx0LmluaGVyaXRzPXIoMTA3KSx0Ll9leHRlbmQ9ZnVuY3Rpb24oZSx0KXtpZighdHx8IV8odCkpcmV0dXJuIGU7Zm9yKHZhciByPU9iamVjdC5rZXlzKHQpLG49ci5sZW5ndGg7bi0tOyllW3Jbbl1dPXRbcltuXV07cmV0dXJuIGV9O3ZhciBUPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2w/U3ltYm9sKFwidXRpbC5wcm9taXNpZnkuY3VzdG9tXCIpOnZvaWQgMDtmdW5jdGlvbiBQKGUsdCl7aWYoIWUpe3ZhciByPW5ldyBFcnJvcihcIlByb21pc2Ugd2FzIHJlamVjdGVkIHdpdGggYSBmYWxzeSB2YWx1ZVwiKTtyLnJlYXNvbj1lLGU9cn1yZXR1cm4gdChlKX10LnByb21pc2lmeT1mdW5jdGlvbihlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcIm9yaWdpbmFsXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uJyk7aWYoVCYmZVtUXSl7dmFyIHQ7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YodD1lW1RdKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJ1dGlsLnByb21pc2lmeS5jdXN0b21cIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24nKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsVCx7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHR9ZnVuY3Rpb24gdCgpe2Zvcih2YXIgdCxyLG49bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsbil7dD1lLHI9bn0pKSxpPVtdLG89MDtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKWkucHVzaChhcmd1bWVudHNbb10pO2kucHVzaCgoZnVuY3Rpb24oZSxuKXtlP3IoZSk6dChuKX0pKTt0cnl7ZS5hcHBseSh0aGlzLGkpfWNhdGNoKGUpe3IoZSl9cmV0dXJuIG59cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZih0LE9iamVjdC5nZXRQcm90b3R5cGVPZihlKSksVCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsVCx7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsbihlKSl9LHQucHJvbWlzaWZ5LmN1c3RvbT1ULHQuY2FsbGJhY2tpZnk9ZnVuY3Rpb24odCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJvcmlnaW5hbFwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbicpO2Z1bmN0aW9uIHIoKXtmb3IodmFyIHI9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspci5wdXNoKGFyZ3VtZW50c1tuXSk7dmFyIGk9ci5wb3AoKTtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJUaGUgbGFzdCBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb25cIik7dmFyIG89dGhpcyxhPWZ1bmN0aW9uKCl7cmV0dXJuIGkuYXBwbHkobyxhcmd1bWVudHMpfTt0LmFwcGx5KHRoaXMscikudGhlbigoZnVuY3Rpb24odCl7ZS5uZXh0VGljayhhLG51bGwsdCl9KSwoZnVuY3Rpb24odCl7ZS5uZXh0VGljayhQLHQsYSl9KSl9cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihyLE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMocixuKHQpKSxyfX0pLmNhbGwodGhpcyxyKDkpKX0sZnVuY3Rpb24oZSx0LHIpeyhmdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKGUsdCl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKHR8fFwiQXNzZXJ0aW9uIGZhaWxlZFwiKX1mdW5jdGlvbiBpKGUsdCl7ZS5zdXBlcl89dDt2YXIgcj1mdW5jdGlvbigpe307ci5wcm90b3R5cGU9dC5wcm90b3R5cGUsZS5wcm90b3R5cGU9bmV3IHIsZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZX1mdW5jdGlvbiBvKGUsdCxyKXtpZihvLmlzQk4oZSkpcmV0dXJuIGU7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PWUmJihcImxlXCIhPT10JiZcImJlXCIhPT10fHwocj10LHQ9MTApLHRoaXMuX2luaXQoZXx8MCx0fHwxMCxyfHxcImJlXCIpKX12YXIgYTtcIm9iamVjdFwiPT10eXBlb2YgZT9lLmV4cG9ydHM9bzp0LkJOPW8sby5CTj1vLG8ud29yZFNpemU9MjY7dHJ5e2E9cigxNDApLkJ1ZmZlcn1jYXRjaChlKXt9ZnVuY3Rpb24gcyhlLHQscil7Zm9yKHZhciBuPTAsaT1NYXRoLm1pbihlLmxlbmd0aCxyKSxvPXQ7bzxpO28rKyl7dmFyIGE9ZS5jaGFyQ29kZUF0KG8pLTQ4O248PD00LG58PWE+PTQ5JiZhPD01ND9hLTQ5KzEwOmE+PTE3JiZhPD0yMj9hLTE3KzEwOjE1JmF9cmV0dXJuIG59ZnVuY3Rpb24gZihlLHQscixuKXtmb3IodmFyIGk9MCxvPU1hdGgubWluKGUubGVuZ3RoLHIpLGE9dDthPG87YSsrKXt2YXIgcz1lLmNoYXJDb2RlQXQoYSktNDg7aSo9bixpKz1zPj00OT9zLTQ5KzEwOnM+PTE3P3MtMTcrMTA6c31yZXR1cm4gaX1vLmlzQk49ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBvfHxudWxsIT09ZSYmXCJvYmplY3RcIj09dHlwZW9mIGUmJmUuY29uc3RydWN0b3Iud29yZFNpemU9PT1vLndvcmRTaXplJiZBcnJheS5pc0FycmF5KGUud29yZHMpfSxvLm1heD1mdW5jdGlvbihlLHQpe3JldHVybiBlLmNtcCh0KT4wP2U6dH0sby5taW49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jbXAodCk8MD9lOnR9LG8ucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKGUsdCxyKXtpZihcIm51bWJlclwiPT10eXBlb2YgZSlyZXR1cm4gdGhpcy5faW5pdE51bWJlcihlLHQscik7aWYoXCJvYmplY3RcIj09dHlwZW9mIGUpcmV0dXJuIHRoaXMuX2luaXRBcnJheShlLHQscik7XCJoZXhcIj09PXQmJih0PTE2KSxuKHQ9PT0oMHx0KSYmdD49MiYmdDw9MzYpO3ZhciBpPTA7XCItXCI9PT0oZT1lLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxzKy9nLFwiXCIpKVswXSYmaSsrLDE2PT09dD90aGlzLl9wYXJzZUhleChlLGkpOnRoaXMuX3BhcnNlQmFzZShlLHQsaSksXCItXCI9PT1lWzBdJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCksXCJsZVwiPT09ciYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHQscil9LG8ucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uKGUsdCxyKXtlPDAmJih0aGlzLm5lZ2F0aXZlPTEsZT0tZSksZTw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmZV0sdGhpcy5sZW5ndGg9MSk6ZTw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZlLGUvNjcxMDg4NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOihuKGU8OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmZSxlLzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLFwibGVcIj09PXImJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSx0LHIpfSxvLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKGUsdCxyKXtpZihuKFwibnVtYmVyXCI9PXR5cGVvZiBlLmxlbmd0aCksZS5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoZS5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgaT0wO2k8dGhpcy5sZW5ndGg7aSsrKXRoaXMud29yZHNbaV09MDt2YXIgbyxhLHM9MDtpZihcImJlXCI9PT1yKWZvcihpPWUubGVuZ3RoLTEsbz0wO2k+PTA7aS09MylhPWVbaV18ZVtpLTFdPDw4fGVbaS0yXTw8MTYsdGhpcy53b3Jkc1tvXXw9YTw8cyY2NzEwODg2Myx0aGlzLndvcmRzW28rMV09YT4+PjI2LXMmNjcxMDg4NjMsKHMrPTI0KT49MjYmJihzLT0yNixvKyspO2Vsc2UgaWYoXCJsZVwiPT09cilmb3IoaT0wLG89MDtpPGUubGVuZ3RoO2krPTMpYT1lW2ldfGVbaSsxXTw8OHxlW2krMl08PDE2LHRoaXMud29yZHNbb118PWE8PHMmNjcxMDg4NjMsdGhpcy53b3Jkc1tvKzFdPWE+Pj4yNi1zJjY3MTA4ODYzLChzKz0yNCk+PTI2JiYocy09MjYsbysrKTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oZSx0KXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKGUubGVuZ3RoLXQpLzYpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHI9MDtyPHRoaXMubGVuZ3RoO3IrKyl0aGlzLndvcmRzW3JdPTA7dmFyIG4saSxvPTA7Zm9yKHI9ZS5sZW5ndGgtNixuPTA7cj49dDtyLT02KWk9cyhlLHIscis2KSx0aGlzLndvcmRzW25dfD1pPDxvJjY3MTA4ODYzLHRoaXMud29yZHNbbisxXXw9aT4+PjI2LW8mNDE5NDMwMywobys9MjQpPj0yNiYmKG8tPTI2LG4rKyk7cis2IT09dCYmKGk9cyhlLHQscis2KSx0aGlzLndvcmRzW25dfD1pPDxvJjY3MTA4ODYzLHRoaXMud29yZHNbbisxXXw9aT4+PjI2LW8mNDE5NDMwMyksdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKGUsdCxyKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgbj0wLGk9MTtpPD02NzEwODg2MztpKj10KW4rKztuLS0saT1pL3R8MDtmb3IodmFyIG89ZS5sZW5ndGgtcixhPW8lbixzPU1hdGgubWluKG8sby1hKStyLGM9MCx1PXI7dTxzO3UrPW4pYz1mKGUsdSx1K24sdCksdGhpcy5pbXVsbihpKSx0aGlzLndvcmRzWzBdK2M8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9Yzp0aGlzLl9pYWRkbihjKTtpZigwIT09YSl7dmFyIGg9MTtmb3IoYz1mKGUsdSxlLmxlbmd0aCx0KSx1PTA7dTxhO3UrKyloKj10O3RoaXMuaW11bG4oaCksdGhpcy53b3Jkc1swXStjPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPWM6dGhpcy5faWFkZG4oYyl9fSxvLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGUpe2Uud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHQ9MDt0PHRoaXMubGVuZ3RoO3QrKyllLndvcmRzW3RdPXRoaXMud29yZHNbdF07ZS5sZW5ndGg9dGhpcy5sZW5ndGgsZS5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLGUucmVkPXRoaXMucmVkfSxvLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBlPW5ldyBvKG51bGwpO3JldHVybiB0aGlzLmNvcHkoZSksZX0sby5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbihlKXtmb3IoO3RoaXMubGVuZ3RoPGU7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sby5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSxvLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sby5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD9cIjxCTi1SOiBcIjpcIjxCTjogXCIpK3RoaXMudG9TdHJpbmcoMTYpK1wiPlwifTt2YXIgYz1bXCJcIixcIjBcIixcIjAwXCIsXCIwMDBcIixcIjAwMDBcIixcIjAwMDAwXCIsXCIwMDAwMDBcIixcIjAwMDAwMDBcIixcIjAwMDAwMDAwXCIsXCIwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIl0sdT1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSxoPVswLDAsMzM1NTQ0MzIsNDMwNDY3MjEsMTY3NzcyMTYsNDg4MjgxMjUsNjA0NjYxNzYsNDAzNTM2MDcsMTY3NzcyMTYsNDMwNDY3MjEsMWU3LDE5NDg3MTcxLDM1ODMxODA4LDYyNzQ4NTE3LDc1Mjk1MzYsMTEzOTA2MjUsMTY3NzcyMTYsMjQxMzc1NjksMzQwMTIyMjQsNDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIsNjQzNjM0Myw3OTYyNjI0LDk3NjU2MjUsMTE4ODEzNzYsMTQzNDg5MDcsMTcyMTAzNjgsMjA1MTExNDksMjQzZTUsMjg2MjkxNTEsMzM1NTQ0MzIsMzkxMzUzOTMsNDU0MzU0MjQsNTI1MjE4NzUsNjA0NjYxNzZdO2Z1bmN0aW9uIGwoZSx0LHIpe3IubmVnYXRpdmU9dC5uZWdhdGl2ZV5lLm5lZ2F0aXZlO3ZhciBuPWUubGVuZ3RoK3QubGVuZ3RofDA7ci5sZW5ndGg9bixuPW4tMXwwO3ZhciBpPTB8ZS53b3Jkc1swXSxvPTB8dC53b3Jkc1swXSxhPWkqbyxzPTY3MTA4ODYzJmEsZj1hLzY3MTA4ODY0fDA7ci53b3Jkc1swXT1zO2Zvcih2YXIgYz0xO2M8bjtjKyspe2Zvcih2YXIgdT1mPj4+MjYsaD02NzEwODg2MyZmLGw9TWF0aC5taW4oYyx0Lmxlbmd0aC0xKSxkPU1hdGgubWF4KDAsYy1lLmxlbmd0aCsxKTtkPD1sO2QrKyl7dmFyIHA9Yy1kfDA7dSs9KGE9KGk9MHxlLndvcmRzW3BdKSoobz0wfHQud29yZHNbZF0pK2gpLzY3MTA4ODY0fDAsaD02NzEwODg2MyZhfXIud29yZHNbY109MHxoLGY9MHx1fXJldHVybiAwIT09Zj9yLndvcmRzW2NdPTB8ZjpyLmxlbmd0aC0tLHIuc3RyaXAoKX1vLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihlLHQpe3ZhciByO2lmKHQ9MHx0fHwxLDE2PT09KGU9ZXx8MTApfHxcImhleFwiPT09ZSl7cj1cIlwiO2Zvcih2YXIgaT0wLG89MCxhPTA7YTx0aGlzLmxlbmd0aDthKyspe3ZhciBzPXRoaXMud29yZHNbYV0sZj0oMTY3NzcyMTUmKHM8PGl8bykpLnRvU3RyaW5nKDE2KTtyPTAhPT0obz1zPj4+MjQtaSYxNjc3NzIxNSl8fGEhPT10aGlzLmxlbmd0aC0xP2NbNi1mLmxlbmd0aF0rZityOmYrciwoaSs9Mik+PTI2JiYoaS09MjYsYS0tKX1mb3IoMCE9PW8mJihyPW8udG9TdHJpbmcoMTYpK3IpO3IubGVuZ3RoJXQhPTA7KXI9XCIwXCIrcjtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihyPVwiLVwiK3IpLHJ9aWYoZT09PSgwfGUpJiZlPj0yJiZlPD0zNil7dmFyIGw9dVtlXSxkPWhbZV07cj1cIlwiO3ZhciBwPXRoaXMuY2xvbmUoKTtmb3IocC5uZWdhdGl2ZT0wOyFwLmlzWmVybygpOyl7dmFyIGI9cC5tb2RuKGQpLnRvU3RyaW5nKGUpO3I9KHA9cC5pZGl2bihkKSkuaXNaZXJvKCk/YityOmNbbC1iLmxlbmd0aF0rYityfWZvcih0aGlzLmlzWmVybygpJiYocj1cIjBcIityKTtyLmxlbmd0aCV0IT0wOylyPVwiMFwiK3I7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYocj1cIi1cIityKSxyfW4oITEsXCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2XCIpfSxvLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9lKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/ZSs9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJm4oITEsXCJOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHNcIiksMCE9PXRoaXMubmVnYXRpdmU/LWU6ZX0sby5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpfSxvLnByb3RvdHlwZS50b0J1ZmZlcj1mdW5jdGlvbihlLHQpe3JldHVybiBuKHZvaWQgMCE9PWEpLHRoaXMudG9BcnJheUxpa2UoYSxlLHQpfSxvLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksZSx0KX0sby5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXRoaXMuYnl0ZUxlbmd0aCgpLG89cnx8TWF0aC5tYXgoMSxpKTtuKGk8PW8sXCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoXCIpLG4obz4wLFwiUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwXCIpLHRoaXMuc3RyaXAoKTt2YXIgYSxzLGY9XCJsZVwiPT09dCxjPW5ldyBlKG8pLHU9dGhpcy5jbG9uZSgpO2lmKGYpe2ZvcihzPTA7IXUuaXNaZXJvKCk7cysrKWE9dS5hbmRsbigyNTUpLHUuaXVzaHJuKDgpLGNbc109YTtmb3IoO3M8bztzKyspY1tzXT0wfWVsc2V7Zm9yKHM9MDtzPG8taTtzKyspY1tzXT0wO2ZvcihzPTA7IXUuaXNaZXJvKCk7cysrKWE9dS5hbmRsbigyNTUpLHUuaXVzaHJuKDgpLGNbby1zLTFdPWF9cmV0dXJuIGN9LE1hdGguY2x6MzI/by5wcm90b3R5cGUuX2NvdW50Qml0cz1mdW5jdGlvbihlKXtyZXR1cm4gMzItTWF0aC5jbHozMihlKX06by5wcm90b3R5cGUuX2NvdW50Qml0cz1mdW5jdGlvbihlKXt2YXIgdD1lLHI9MDtyZXR1cm4gdD49NDA5NiYmKHIrPTEzLHQ+Pj49MTMpLHQ+PTY0JiYocis9Nyx0Pj4+PTcpLHQ+PTgmJihyKz00LHQ+Pj49NCksdD49MiYmKHIrPTIsdD4+Pj0yKSxyK3R9LG8ucHJvdG90eXBlLl96ZXJvQml0cz1mdW5jdGlvbihlKXtpZigwPT09ZSlyZXR1cm4gMjY7dmFyIHQ9ZSxyPTA7cmV0dXJuIDA9PSg4MTkxJnQpJiYocis9MTMsdD4+Pj0xMyksMD09KDEyNyZ0KSYmKHIrPTcsdD4+Pj03KSwwPT0oMTUmdCkmJihyKz00LHQ+Pj49NCksMD09KDMmdCkmJihyKz0yLHQ+Pj49MiksMD09KDEmdCkmJnIrKyxyfSxvLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdLHQ9dGhpcy5fY291bnRCaXRzKGUpO3JldHVybiAyNioodGhpcy5sZW5ndGgtMSkrdH0sby5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO2Zvcih2YXIgZT0wLHQ9MDt0PHRoaXMubGVuZ3RoO3QrKyl7dmFyIHI9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1t0XSk7aWYoZSs9ciwyNiE9PXIpYnJlYWt9cmV0dXJuIGV9LG8ucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9LG8ucHJvdG90eXBlLnRvVHdvcz1mdW5jdGlvbihlKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/dGhpcy5hYnMoKS5pbm90bihlKS5pYWRkbigxKTp0aGlzLmNsb25lKCl9LG8ucHJvdG90eXBlLmZyb21Ud29zPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnRlc3RuKGUtMSk/dGhpcy5ub3RuKGUpLmlhZGRuKDEpLmluZWcoKTp0aGlzLmNsb25lKCl9LG8ucHJvdG90eXBlLmlzTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlfSxvLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKX0sby5wcm90b3R5cGUuaW5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzWmVybygpfHwodGhpcy5uZWdhdGl2ZV49MSksdGhpc30sby5wcm90b3R5cGUuaXVvcj1mdW5jdGlvbihlKXtmb3IoO3RoaXMubGVuZ3RoPGUubGVuZ3RoOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspdGhpcy53b3Jkc1t0XT10aGlzLndvcmRzW3RdfGUud29yZHNbdF07cmV0dXJuIHRoaXMuc3RyaXAoKX0sby5wcm90b3R5cGUuaW9yPWZ1bmN0aW9uKGUpe3JldHVybiBuKDA9PSh0aGlzLm5lZ2F0aXZlfGUubmVnYXRpdmUpKSx0aGlzLml1b3IoZSl9LG8ucHJvdG90eXBlLm9yPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmxlbmd0aD5lLmxlbmd0aD90aGlzLmNsb25lKCkuaW9yKGUpOmUuY2xvbmUoKS5pb3IodGhpcyl9LG8ucHJvdG90eXBlLnVvcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5sZW5ndGg+ZS5sZW5ndGg/dGhpcy5jbG9uZSgpLml1b3IoZSk6ZS5jbG9uZSgpLml1b3IodGhpcyl9LG8ucHJvdG90eXBlLml1YW5kPWZ1bmN0aW9uKGUpe3ZhciB0O3Q9dGhpcy5sZW5ndGg+ZS5sZW5ndGg/ZTp0aGlzO2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXRoaXMud29yZHNbcl09dGhpcy53b3Jkc1tyXSZlLndvcmRzW3JdO3JldHVybiB0aGlzLmxlbmd0aD10Lmxlbmd0aCx0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLmlhbmQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG4oMD09KHRoaXMubmVnYXRpdmV8ZS5uZWdhdGl2ZSkpLHRoaXMuaXVhbmQoZSl9LG8ucHJvdG90eXBlLmFuZD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5sZW5ndGg+ZS5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhbmQoZSk6ZS5jbG9uZSgpLmlhbmQodGhpcyl9LG8ucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMubGVuZ3RoPmUubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdWFuZChlKTplLmNsb25lKCkuaXVhbmQodGhpcyl9LG8ucHJvdG90eXBlLml1eG9yPWZ1bmN0aW9uKGUpe3ZhciB0LHI7dGhpcy5sZW5ndGg+ZS5sZW5ndGg/KHQ9dGhpcyxyPWUpOih0PWUscj10aGlzKTtmb3IodmFyIG49MDtuPHIubGVuZ3RoO24rKyl0aGlzLndvcmRzW25dPXQud29yZHNbbl1eci53b3Jkc1tuXTtpZih0aGlzIT09dClmb3IoO248dC5sZW5ndGg7bisrKXRoaXMud29yZHNbbl09dC53b3Jkc1tuXTtyZXR1cm4gdGhpcy5sZW5ndGg9dC5sZW5ndGgsdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5peG9yPWZ1bmN0aW9uKGUpe3JldHVybiBuKDA9PSh0aGlzLm5lZ2F0aXZlfGUubmVnYXRpdmUpKSx0aGlzLml1eG9yKGUpfSxvLnByb3RvdHlwZS54b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMubGVuZ3RoPmUubGVuZ3RoP3RoaXMuY2xvbmUoKS5peG9yKGUpOmUuY2xvbmUoKS5peG9yKHRoaXMpfSxvLnByb3RvdHlwZS51eG9yPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmxlbmd0aD5lLmxlbmd0aD90aGlzLmNsb25lKCkuaXV4b3IoZSk6ZS5jbG9uZSgpLml1eG9yKHRoaXMpfSxvLnByb3RvdHlwZS5pbm90bj1mdW5jdGlvbihlKXtuKFwibnVtYmVyXCI9PXR5cGVvZiBlJiZlPj0wKTt2YXIgdD0wfE1hdGguY2VpbChlLzI2KSxyPWUlMjY7dGhpcy5fZXhwYW5kKHQpLHI+MCYmdC0tO2Zvcih2YXIgaT0wO2k8dDtpKyspdGhpcy53b3Jkc1tpXT02NzEwODg2MyZ+dGhpcy53b3Jkc1tpXTtyZXR1cm4gcj4wJiYodGhpcy53b3Jkc1tpXT1+dGhpcy53b3Jkc1tpXSY2NzEwODg2Mz4+MjYtciksdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oZSl9LG8ucHJvdG90eXBlLnNldG49ZnVuY3Rpb24oZSx0KXtuKFwibnVtYmVyXCI9PXR5cGVvZiBlJiZlPj0wKTt2YXIgcj1lLzI2fDAsaT1lJTI2O3JldHVybiB0aGlzLl9leHBhbmQocisxKSx0aGlzLndvcmRzW3JdPXQ/dGhpcy53b3Jkc1tyXXwxPDxpOnRoaXMud29yZHNbcl0mfigxPDxpKSx0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oZSl7dmFyIHQscixuO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09ZS5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHQ9dGhpcy5pc3ViKGUpLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWUubmVnYXRpdmUpcmV0dXJuIGUubmVnYXRpdmU9MCx0PXRoaXMuaXN1YihlKSxlLm5lZ2F0aXZlPTEsdC5fbm9ybVNpZ24oKTt0aGlzLmxlbmd0aD5lLmxlbmd0aD8ocj10aGlzLG49ZSk6KHI9ZSxuPXRoaXMpO2Zvcih2YXIgaT0wLG89MDtvPG4ubGVuZ3RoO28rKyl0PSgwfHIud29yZHNbb10pKygwfG4ud29yZHNbb10pK2ksdGhpcy53b3Jkc1tvXT02NzEwODg2MyZ0LGk9dD4+PjI2O2Zvcig7MCE9PWkmJm88ci5sZW5ndGg7bysrKXQ9KDB8ci53b3Jkc1tvXSkraSx0aGlzLndvcmRzW29dPTY3MTA4ODYzJnQsaT10Pj4+MjY7aWYodGhpcy5sZW5ndGg9ci5sZW5ndGgsMCE9PWkpdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09aSx0aGlzLmxlbmd0aCsrO2Vsc2UgaWYociE9PXRoaXMpZm9yKDtvPHIubGVuZ3RoO28rKyl0aGlzLndvcmRzW29dPXIud29yZHNbb107cmV0dXJuIHRoaXN9LG8ucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gMCE9PWUubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyhlLm5lZ2F0aXZlPTAsdD10aGlzLnN1YihlKSxlLm5lZ2F0aXZlXj0xLHQpOjA9PT1lLm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLHQ9ZS5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLHQpOnRoaXMubGVuZ3RoPmUubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKGUpOmUuY2xvbmUoKS5pYWRkKHRoaXMpfSxvLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKGUpe2lmKDAhPT1lLm5lZ2F0aXZlKXtlLm5lZ2F0aXZlPTA7dmFyIHQ9dGhpcy5pYWRkKGUpO3JldHVybiBlLm5lZ2F0aXZlPTEsdC5fbm9ybVNpZ24oKX1pZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZChlKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIgcixuLGk9dGhpcy5jbXAoZSk7aWYoMD09PWkpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO2k+MD8ocj10aGlzLG49ZSk6KHI9ZSxuPXRoaXMpO2Zvcih2YXIgbz0wLGE9MDthPG4ubGVuZ3RoO2ErKylvPSh0PSgwfHIud29yZHNbYV0pLSgwfG4ud29yZHNbYV0pK28pPj4yNix0aGlzLndvcmRzW2FdPTY3MTA4ODYzJnQ7Zm9yKDswIT09byYmYTxyLmxlbmd0aDthKyspbz0odD0oMHxyLndvcmRzW2FdKStvKT4+MjYsdGhpcy53b3Jkc1thXT02NzEwODg2MyZ0O2lmKDA9PT1vJiZhPHIubGVuZ3RoJiZyIT09dGhpcylmb3IoO2E8ci5sZW5ndGg7YSsrKXRoaXMud29yZHNbYV09ci53b3Jkc1thXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsYSksciE9PXRoaXMmJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuc3RyaXAoKX0sby5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1YihlKX07dmFyIGQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuLGksbyxhPWUud29yZHMscz10LndvcmRzLGY9ci53b3JkcyxjPTAsdT0wfGFbMF0saD04MTkxJnUsbD11Pj4+MTMsZD0wfGFbMV0scD04MTkxJmQsYj1kPj4+MTMseT0wfGFbMl0sZz04MTkxJnksdj15Pj4+MTMsbT0wfGFbM10sXz04MTkxJm0sdz1tPj4+MTMsRT0wfGFbNF0sQT04MTkxJkUsUz1FPj4+MTMsaz0wfGFbNV0seD04MTkxJmssST1rPj4+MTMsTT0wfGFbNl0sVD04MTkxJk0sUD1NPj4+MTMsQj0wfGFbN10sTD04MTkxJkIsUj1CPj4+MTMsTz0wfGFbOF0sQz04MTkxJk8sTj1PPj4+MTMsaj0wfGFbOV0sRD04MTkxJmoscT1qPj4+MTMsVT0wfHNbMF0sRj04MTkxJlUsej1VPj4+MTMsSz0wfHNbMV0sSD04MTkxJkssVj1LPj4+MTMsWT0wfHNbMl0sRz04MTkxJlksJD1ZPj4+MTMsVz0wfHNbM10sWj04MTkxJlcsSj1XPj4+MTMsWD0wfHNbNF0sUT04MTkxJlgsZWU9WD4+PjEzLHRlPTB8c1s1XSxyZT04MTkxJnRlLG5lPXRlPj4+MTMsaWU9MHxzWzZdLG9lPTgxOTEmaWUsYWU9aWU+Pj4xMyxzZT0wfHNbN10sZmU9ODE5MSZzZSxjZT1zZT4+PjEzLHVlPTB8c1s4XSxoZT04MTkxJnVlLGxlPXVlPj4+MTMsZGU9MHxzWzldLHBlPTgxOTEmZGUsYmU9ZGU+Pj4xMztyLm5lZ2F0aXZlPWUubmVnYXRpdmVedC5uZWdhdGl2ZSxyLmxlbmd0aD0xOTt2YXIgeWU9KGMrKG49TWF0aC5pbXVsKGgsRikpfDApKygoODE5MSYoaT0oaT1NYXRoLmltdWwoaCx6KSkrTWF0aC5pbXVsKGwsRil8MCkpPDwxMyl8MDtjPSgobz1NYXRoLmltdWwobCx6KSkrKGk+Pj4xMyl8MCkrKHllPj4+MjYpfDAseWUmPTY3MTA4ODYzLG49TWF0aC5pbXVsKHAsRiksaT0oaT1NYXRoLmltdWwocCx6KSkrTWF0aC5pbXVsKGIsRil8MCxvPU1hdGguaW11bChiLHopO3ZhciBnZT0oYysobj1uK01hdGguaW11bChoLEgpfDApfDApKygoODE5MSYoaT0oaT1pK01hdGguaW11bChoLFYpfDApK01hdGguaW11bChsLEgpfDApKTw8MTMpfDA7Yz0oKG89bytNYXRoLmltdWwobCxWKXwwKSsoaT4+PjEzKXwwKSsoZ2U+Pj4yNil8MCxnZSY9NjcxMDg4NjMsbj1NYXRoLmltdWwoZyxGKSxpPShpPU1hdGguaW11bChnLHopKStNYXRoLmltdWwodixGKXwwLG89TWF0aC5pbXVsKHYseiksbj1uK01hdGguaW11bChwLEgpfDAsaT0oaT1pK01hdGguaW11bChwLFYpfDApK01hdGguaW11bChiLEgpfDAsbz1vK01hdGguaW11bChiLFYpfDA7dmFyIHZlPShjKyhuPW4rTWF0aC5pbXVsKGgsRyl8MCl8MCkrKCg4MTkxJihpPShpPWkrTWF0aC5pbXVsKGgsJCl8MCkrTWF0aC5pbXVsKGwsRyl8MCkpPDwxMyl8MDtjPSgobz1vK01hdGguaW11bChsLCQpfDApKyhpPj4+MTMpfDApKyh2ZT4+PjI2KXwwLHZlJj02NzEwODg2MyxuPU1hdGguaW11bChfLEYpLGk9KGk9TWF0aC5pbXVsKF8seikpK01hdGguaW11bCh3LEYpfDAsbz1NYXRoLmltdWwodyx6KSxuPW4rTWF0aC5pbXVsKGcsSCl8MCxpPShpPWkrTWF0aC5pbXVsKGcsVil8MCkrTWF0aC5pbXVsKHYsSCl8MCxvPW8rTWF0aC5pbXVsKHYsVil8MCxuPW4rTWF0aC5pbXVsKHAsRyl8MCxpPShpPWkrTWF0aC5pbXVsKHAsJCl8MCkrTWF0aC5pbXVsKGIsRyl8MCxvPW8rTWF0aC5pbXVsKGIsJCl8MDt2YXIgbWU9KGMrKG49bitNYXRoLmltdWwoaCxaKXwwKXwwKSsoKDgxOTEmKGk9KGk9aStNYXRoLmltdWwoaCxKKXwwKStNYXRoLmltdWwobCxaKXwwKSk8PDEzKXwwO2M9KChvPW8rTWF0aC5pbXVsKGwsSil8MCkrKGk+Pj4xMyl8MCkrKG1lPj4+MjYpfDAsbWUmPTY3MTA4ODYzLG49TWF0aC5pbXVsKEEsRiksaT0oaT1NYXRoLmltdWwoQSx6KSkrTWF0aC5pbXVsKFMsRil8MCxvPU1hdGguaW11bChTLHopLG49bitNYXRoLmltdWwoXyxIKXwwLGk9KGk9aStNYXRoLmltdWwoXyxWKXwwKStNYXRoLmltdWwodyxIKXwwLG89bytNYXRoLmltdWwodyxWKXwwLG49bitNYXRoLmltdWwoZyxHKXwwLGk9KGk9aStNYXRoLmltdWwoZywkKXwwKStNYXRoLmltdWwodixHKXwwLG89bytNYXRoLmltdWwodiwkKXwwLG49bitNYXRoLmltdWwocCxaKXwwLGk9KGk9aStNYXRoLmltdWwocCxKKXwwKStNYXRoLmltdWwoYixaKXwwLG89bytNYXRoLmltdWwoYixKKXwwO3ZhciBfZT0oYysobj1uK01hdGguaW11bChoLFEpfDApfDApKygoODE5MSYoaT0oaT1pK01hdGguaW11bChoLGVlKXwwKStNYXRoLmltdWwobCxRKXwwKSk8PDEzKXwwO2M9KChvPW8rTWF0aC5pbXVsKGwsZWUpfDApKyhpPj4+MTMpfDApKyhfZT4+PjI2KXwwLF9lJj02NzEwODg2MyxuPU1hdGguaW11bCh4LEYpLGk9KGk9TWF0aC5pbXVsKHgseikpK01hdGguaW11bChJLEYpfDAsbz1NYXRoLmltdWwoSSx6KSxuPW4rTWF0aC5pbXVsKEEsSCl8MCxpPShpPWkrTWF0aC5pbXVsKEEsVil8MCkrTWF0aC5pbXVsKFMsSCl8MCxvPW8rTWF0aC5pbXVsKFMsVil8MCxuPW4rTWF0aC5pbXVsKF8sRyl8MCxpPShpPWkrTWF0aC5pbXVsKF8sJCl8MCkrTWF0aC5pbXVsKHcsRyl8MCxvPW8rTWF0aC5pbXVsKHcsJCl8MCxuPW4rTWF0aC5pbXVsKGcsWil8MCxpPShpPWkrTWF0aC5pbXVsKGcsSil8MCkrTWF0aC5pbXVsKHYsWil8MCxvPW8rTWF0aC5pbXVsKHYsSil8MCxuPW4rTWF0aC5pbXVsKHAsUSl8MCxpPShpPWkrTWF0aC5pbXVsKHAsZWUpfDApK01hdGguaW11bChiLFEpfDAsbz1vK01hdGguaW11bChiLGVlKXwwO3ZhciB3ZT0oYysobj1uK01hdGguaW11bChoLHJlKXwwKXwwKSsoKDgxOTEmKGk9KGk9aStNYXRoLmltdWwoaCxuZSl8MCkrTWF0aC5pbXVsKGwscmUpfDApKTw8MTMpfDA7Yz0oKG89bytNYXRoLmltdWwobCxuZSl8MCkrKGk+Pj4xMyl8MCkrKHdlPj4+MjYpfDAsd2UmPTY3MTA4ODYzLG49TWF0aC5pbXVsKFQsRiksaT0oaT1NYXRoLmltdWwoVCx6KSkrTWF0aC5pbXVsKFAsRil8MCxvPU1hdGguaW11bChQLHopLG49bitNYXRoLmltdWwoeCxIKXwwLGk9KGk9aStNYXRoLmltdWwoeCxWKXwwKStNYXRoLmltdWwoSSxIKXwwLG89bytNYXRoLmltdWwoSSxWKXwwLG49bitNYXRoLmltdWwoQSxHKXwwLGk9KGk9aStNYXRoLmltdWwoQSwkKXwwKStNYXRoLmltdWwoUyxHKXwwLG89bytNYXRoLmltdWwoUywkKXwwLG49bitNYXRoLmltdWwoXyxaKXwwLGk9KGk9aStNYXRoLmltdWwoXyxKKXwwKStNYXRoLmltdWwodyxaKXwwLG89bytNYXRoLmltdWwodyxKKXwwLG49bitNYXRoLmltdWwoZyxRKXwwLGk9KGk9aStNYXRoLmltdWwoZyxlZSl8MCkrTWF0aC5pbXVsKHYsUSl8MCxvPW8rTWF0aC5pbXVsKHYsZWUpfDAsbj1uK01hdGguaW11bChwLHJlKXwwLGk9KGk9aStNYXRoLmltdWwocCxuZSl8MCkrTWF0aC5pbXVsKGIscmUpfDAsbz1vK01hdGguaW11bChiLG5lKXwwO3ZhciBFZT0oYysobj1uK01hdGguaW11bChoLG9lKXwwKXwwKSsoKDgxOTEmKGk9KGk9aStNYXRoLmltdWwoaCxhZSl8MCkrTWF0aC5pbXVsKGwsb2UpfDApKTw8MTMpfDA7Yz0oKG89bytNYXRoLmltdWwobCxhZSl8MCkrKGk+Pj4xMyl8MCkrKEVlPj4+MjYpfDAsRWUmPTY3MTA4ODYzLG49TWF0aC5pbXVsKEwsRiksaT0oaT1NYXRoLmltdWwoTCx6KSkrTWF0aC5pbXVsKFIsRil8MCxvPU1hdGguaW11bChSLHopLG49bitNYXRoLmltdWwoVCxIKXwwLGk9KGk9aStNYXRoLmltdWwoVCxWKXwwKStNYXRoLmltdWwoUCxIKXwwLG89bytNYXRoLmltdWwoUCxWKXwwLG49bitNYXRoLmltdWwoeCxHKXwwLGk9KGk9aStNYXRoLmltdWwoeCwkKXwwKStNYXRoLmltdWwoSSxHKXwwLG89bytNYXRoLmltdWwoSSwkKXwwLG49bitNYXRoLmltdWwoQSxaKXwwLGk9KGk9aStNYXRoLmltdWwoQSxKKXwwKStNYXRoLmltdWwoUyxaKXwwLG89bytNYXRoLmltdWwoUyxKKXwwLG49bitNYXRoLmltdWwoXyxRKXwwLGk9KGk9aStNYXRoLmltdWwoXyxlZSl8MCkrTWF0aC5pbXVsKHcsUSl8MCxvPW8rTWF0aC5pbXVsKHcsZWUpfDAsbj1uK01hdGguaW11bChnLHJlKXwwLGk9KGk9aStNYXRoLmltdWwoZyxuZSl8MCkrTWF0aC5pbXVsKHYscmUpfDAsbz1vK01hdGguaW11bCh2LG5lKXwwLG49bitNYXRoLmltdWwocCxvZSl8MCxpPShpPWkrTWF0aC5pbXVsKHAsYWUpfDApK01hdGguaW11bChiLG9lKXwwLG89bytNYXRoLmltdWwoYixhZSl8MDt2YXIgQWU9KGMrKG49bitNYXRoLmltdWwoaCxmZSl8MCl8MCkrKCg4MTkxJihpPShpPWkrTWF0aC5pbXVsKGgsY2UpfDApK01hdGguaW11bChsLGZlKXwwKSk8PDEzKXwwO2M9KChvPW8rTWF0aC5pbXVsKGwsY2UpfDApKyhpPj4+MTMpfDApKyhBZT4+PjI2KXwwLEFlJj02NzEwODg2MyxuPU1hdGguaW11bChDLEYpLGk9KGk9TWF0aC5pbXVsKEMseikpK01hdGguaW11bChOLEYpfDAsbz1NYXRoLmltdWwoTix6KSxuPW4rTWF0aC5pbXVsKEwsSCl8MCxpPShpPWkrTWF0aC5pbXVsKEwsVil8MCkrTWF0aC5pbXVsKFIsSCl8MCxvPW8rTWF0aC5pbXVsKFIsVil8MCxuPW4rTWF0aC5pbXVsKFQsRyl8MCxpPShpPWkrTWF0aC5pbXVsKFQsJCl8MCkrTWF0aC5pbXVsKFAsRyl8MCxvPW8rTWF0aC5pbXVsKFAsJCl8MCxuPW4rTWF0aC5pbXVsKHgsWil8MCxpPShpPWkrTWF0aC5pbXVsKHgsSil8MCkrTWF0aC5pbXVsKEksWil8MCxvPW8rTWF0aC5pbXVsKEksSil8MCxuPW4rTWF0aC5pbXVsKEEsUSl8MCxpPShpPWkrTWF0aC5pbXVsKEEsZWUpfDApK01hdGguaW11bChTLFEpfDAsbz1vK01hdGguaW11bChTLGVlKXwwLG49bitNYXRoLmltdWwoXyxyZSl8MCxpPShpPWkrTWF0aC5pbXVsKF8sbmUpfDApK01hdGguaW11bCh3LHJlKXwwLG89bytNYXRoLmltdWwodyxuZSl8MCxuPW4rTWF0aC5pbXVsKGcsb2UpfDAsaT0oaT1pK01hdGguaW11bChnLGFlKXwwKStNYXRoLmltdWwodixvZSl8MCxvPW8rTWF0aC5pbXVsKHYsYWUpfDAsbj1uK01hdGguaW11bChwLGZlKXwwLGk9KGk9aStNYXRoLmltdWwocCxjZSl8MCkrTWF0aC5pbXVsKGIsZmUpfDAsbz1vK01hdGguaW11bChiLGNlKXwwO3ZhciBTZT0oYysobj1uK01hdGguaW11bChoLGhlKXwwKXwwKSsoKDgxOTEmKGk9KGk9aStNYXRoLmltdWwoaCxsZSl8MCkrTWF0aC5pbXVsKGwsaGUpfDApKTw8MTMpfDA7Yz0oKG89bytNYXRoLmltdWwobCxsZSl8MCkrKGk+Pj4xMyl8MCkrKFNlPj4+MjYpfDAsU2UmPTY3MTA4ODYzLG49TWF0aC5pbXVsKEQsRiksaT0oaT1NYXRoLmltdWwoRCx6KSkrTWF0aC5pbXVsKHEsRil8MCxvPU1hdGguaW11bChxLHopLG49bitNYXRoLmltdWwoQyxIKXwwLGk9KGk9aStNYXRoLmltdWwoQyxWKXwwKStNYXRoLmltdWwoTixIKXwwLG89bytNYXRoLmltdWwoTixWKXwwLG49bitNYXRoLmltdWwoTCxHKXwwLGk9KGk9aStNYXRoLmltdWwoTCwkKXwwKStNYXRoLmltdWwoUixHKXwwLG89bytNYXRoLmltdWwoUiwkKXwwLG49bitNYXRoLmltdWwoVCxaKXwwLGk9KGk9aStNYXRoLmltdWwoVCxKKXwwKStNYXRoLmltdWwoUCxaKXwwLG89bytNYXRoLmltdWwoUCxKKXwwLG49bitNYXRoLmltdWwoeCxRKXwwLGk9KGk9aStNYXRoLmltdWwoeCxlZSl8MCkrTWF0aC5pbXVsKEksUSl8MCxvPW8rTWF0aC5pbXVsKEksZWUpfDAsbj1uK01hdGguaW11bChBLHJlKXwwLGk9KGk9aStNYXRoLmltdWwoQSxuZSl8MCkrTWF0aC5pbXVsKFMscmUpfDAsbz1vK01hdGguaW11bChTLG5lKXwwLG49bitNYXRoLmltdWwoXyxvZSl8MCxpPShpPWkrTWF0aC5pbXVsKF8sYWUpfDApK01hdGguaW11bCh3LG9lKXwwLG89bytNYXRoLmltdWwodyxhZSl8MCxuPW4rTWF0aC5pbXVsKGcsZmUpfDAsaT0oaT1pK01hdGguaW11bChnLGNlKXwwKStNYXRoLmltdWwodixmZSl8MCxvPW8rTWF0aC5pbXVsKHYsY2UpfDAsbj1uK01hdGguaW11bChwLGhlKXwwLGk9KGk9aStNYXRoLmltdWwocCxsZSl8MCkrTWF0aC5pbXVsKGIsaGUpfDAsbz1vK01hdGguaW11bChiLGxlKXwwO3ZhciBrZT0oYysobj1uK01hdGguaW11bChoLHBlKXwwKXwwKSsoKDgxOTEmKGk9KGk9aStNYXRoLmltdWwoaCxiZSl8MCkrTWF0aC5pbXVsKGwscGUpfDApKTw8MTMpfDA7Yz0oKG89bytNYXRoLmltdWwobCxiZSl8MCkrKGk+Pj4xMyl8MCkrKGtlPj4+MjYpfDAsa2UmPTY3MTA4ODYzLG49TWF0aC5pbXVsKEQsSCksaT0oaT1NYXRoLmltdWwoRCxWKSkrTWF0aC5pbXVsKHEsSCl8MCxvPU1hdGguaW11bChxLFYpLG49bitNYXRoLmltdWwoQyxHKXwwLGk9KGk9aStNYXRoLmltdWwoQywkKXwwKStNYXRoLmltdWwoTixHKXwwLG89bytNYXRoLmltdWwoTiwkKXwwLG49bitNYXRoLmltdWwoTCxaKXwwLGk9KGk9aStNYXRoLmltdWwoTCxKKXwwKStNYXRoLmltdWwoUixaKXwwLG89bytNYXRoLmltdWwoUixKKXwwLG49bitNYXRoLmltdWwoVCxRKXwwLGk9KGk9aStNYXRoLmltdWwoVCxlZSl8MCkrTWF0aC5pbXVsKFAsUSl8MCxvPW8rTWF0aC5pbXVsKFAsZWUpfDAsbj1uK01hdGguaW11bCh4LHJlKXwwLGk9KGk9aStNYXRoLmltdWwoeCxuZSl8MCkrTWF0aC5pbXVsKEkscmUpfDAsbz1vK01hdGguaW11bChJLG5lKXwwLG49bitNYXRoLmltdWwoQSxvZSl8MCxpPShpPWkrTWF0aC5pbXVsKEEsYWUpfDApK01hdGguaW11bChTLG9lKXwwLG89bytNYXRoLmltdWwoUyxhZSl8MCxuPW4rTWF0aC5pbXVsKF8sZmUpfDAsaT0oaT1pK01hdGguaW11bChfLGNlKXwwKStNYXRoLmltdWwodyxmZSl8MCxvPW8rTWF0aC5pbXVsKHcsY2UpfDAsbj1uK01hdGguaW11bChnLGhlKXwwLGk9KGk9aStNYXRoLmltdWwoZyxsZSl8MCkrTWF0aC5pbXVsKHYsaGUpfDAsbz1vK01hdGguaW11bCh2LGxlKXwwO3ZhciB4ZT0oYysobj1uK01hdGguaW11bChwLHBlKXwwKXwwKSsoKDgxOTEmKGk9KGk9aStNYXRoLmltdWwocCxiZSl8MCkrTWF0aC5pbXVsKGIscGUpfDApKTw8MTMpfDA7Yz0oKG89bytNYXRoLmltdWwoYixiZSl8MCkrKGk+Pj4xMyl8MCkrKHhlPj4+MjYpfDAseGUmPTY3MTA4ODYzLG49TWF0aC5pbXVsKEQsRyksaT0oaT1NYXRoLmltdWwoRCwkKSkrTWF0aC5pbXVsKHEsRyl8MCxvPU1hdGguaW11bChxLCQpLG49bitNYXRoLmltdWwoQyxaKXwwLGk9KGk9aStNYXRoLmltdWwoQyxKKXwwKStNYXRoLmltdWwoTixaKXwwLG89bytNYXRoLmltdWwoTixKKXwwLG49bitNYXRoLmltdWwoTCxRKXwwLGk9KGk9aStNYXRoLmltdWwoTCxlZSl8MCkrTWF0aC5pbXVsKFIsUSl8MCxvPW8rTWF0aC5pbXVsKFIsZWUpfDAsbj1uK01hdGguaW11bChULHJlKXwwLGk9KGk9aStNYXRoLmltdWwoVCxuZSl8MCkrTWF0aC5pbXVsKFAscmUpfDAsbz1vK01hdGguaW11bChQLG5lKXwwLG49bitNYXRoLmltdWwoeCxvZSl8MCxpPShpPWkrTWF0aC5pbXVsKHgsYWUpfDApK01hdGguaW11bChJLG9lKXwwLG89bytNYXRoLmltdWwoSSxhZSl8MCxuPW4rTWF0aC5pbXVsKEEsZmUpfDAsaT0oaT1pK01hdGguaW11bChBLGNlKXwwKStNYXRoLmltdWwoUyxmZSl8MCxvPW8rTWF0aC5pbXVsKFMsY2UpfDAsbj1uK01hdGguaW11bChfLGhlKXwwLGk9KGk9aStNYXRoLmltdWwoXyxsZSl8MCkrTWF0aC5pbXVsKHcsaGUpfDAsbz1vK01hdGguaW11bCh3LGxlKXwwO3ZhciBJZT0oYysobj1uK01hdGguaW11bChnLHBlKXwwKXwwKSsoKDgxOTEmKGk9KGk9aStNYXRoLmltdWwoZyxiZSl8MCkrTWF0aC5pbXVsKHYscGUpfDApKTw8MTMpfDA7Yz0oKG89bytNYXRoLmltdWwodixiZSl8MCkrKGk+Pj4xMyl8MCkrKEllPj4+MjYpfDAsSWUmPTY3MTA4ODYzLG49TWF0aC5pbXVsKEQsWiksaT0oaT1NYXRoLmltdWwoRCxKKSkrTWF0aC5pbXVsKHEsWil8MCxvPU1hdGguaW11bChxLEopLG49bitNYXRoLmltdWwoQyxRKXwwLGk9KGk9aStNYXRoLmltdWwoQyxlZSl8MCkrTWF0aC5pbXVsKE4sUSl8MCxvPW8rTWF0aC5pbXVsKE4sZWUpfDAsbj1uK01hdGguaW11bChMLHJlKXwwLGk9KGk9aStNYXRoLmltdWwoTCxuZSl8MCkrTWF0aC5pbXVsKFIscmUpfDAsbz1vK01hdGguaW11bChSLG5lKXwwLG49bitNYXRoLmltdWwoVCxvZSl8MCxpPShpPWkrTWF0aC5pbXVsKFQsYWUpfDApK01hdGguaW11bChQLG9lKXwwLG89bytNYXRoLmltdWwoUCxhZSl8MCxuPW4rTWF0aC5pbXVsKHgsZmUpfDAsaT0oaT1pK01hdGguaW11bCh4LGNlKXwwKStNYXRoLmltdWwoSSxmZSl8MCxvPW8rTWF0aC5pbXVsKEksY2UpfDAsbj1uK01hdGguaW11bChBLGhlKXwwLGk9KGk9aStNYXRoLmltdWwoQSxsZSl8MCkrTWF0aC5pbXVsKFMsaGUpfDAsbz1vK01hdGguaW11bChTLGxlKXwwO3ZhciBNZT0oYysobj1uK01hdGguaW11bChfLHBlKXwwKXwwKSsoKDgxOTEmKGk9KGk9aStNYXRoLmltdWwoXyxiZSl8MCkrTWF0aC5pbXVsKHcscGUpfDApKTw8MTMpfDA7Yz0oKG89bytNYXRoLmltdWwodyxiZSl8MCkrKGk+Pj4xMyl8MCkrKE1lPj4+MjYpfDAsTWUmPTY3MTA4ODYzLG49TWF0aC5pbXVsKEQsUSksaT0oaT1NYXRoLmltdWwoRCxlZSkpK01hdGguaW11bChxLFEpfDAsbz1NYXRoLmltdWwocSxlZSksbj1uK01hdGguaW11bChDLHJlKXwwLGk9KGk9aStNYXRoLmltdWwoQyxuZSl8MCkrTWF0aC5pbXVsKE4scmUpfDAsbz1vK01hdGguaW11bChOLG5lKXwwLG49bitNYXRoLmltdWwoTCxvZSl8MCxpPShpPWkrTWF0aC5pbXVsKEwsYWUpfDApK01hdGguaW11bChSLG9lKXwwLG89bytNYXRoLmltdWwoUixhZSl8MCxuPW4rTWF0aC5pbXVsKFQsZmUpfDAsaT0oaT1pK01hdGguaW11bChULGNlKXwwKStNYXRoLmltdWwoUCxmZSl8MCxvPW8rTWF0aC5pbXVsKFAsY2UpfDAsbj1uK01hdGguaW11bCh4LGhlKXwwLGk9KGk9aStNYXRoLmltdWwoeCxsZSl8MCkrTWF0aC5pbXVsKEksaGUpfDAsbz1vK01hdGguaW11bChJLGxlKXwwO3ZhciBUZT0oYysobj1uK01hdGguaW11bChBLHBlKXwwKXwwKSsoKDgxOTEmKGk9KGk9aStNYXRoLmltdWwoQSxiZSl8MCkrTWF0aC5pbXVsKFMscGUpfDApKTw8MTMpfDA7Yz0oKG89bytNYXRoLmltdWwoUyxiZSl8MCkrKGk+Pj4xMyl8MCkrKFRlPj4+MjYpfDAsVGUmPTY3MTA4ODYzLG49TWF0aC5pbXVsKEQscmUpLGk9KGk9TWF0aC5pbXVsKEQsbmUpKStNYXRoLmltdWwocSxyZSl8MCxvPU1hdGguaW11bChxLG5lKSxuPW4rTWF0aC5pbXVsKEMsb2UpfDAsaT0oaT1pK01hdGguaW11bChDLGFlKXwwKStNYXRoLmltdWwoTixvZSl8MCxvPW8rTWF0aC5pbXVsKE4sYWUpfDAsbj1uK01hdGguaW11bChMLGZlKXwwLGk9KGk9aStNYXRoLmltdWwoTCxjZSl8MCkrTWF0aC5pbXVsKFIsZmUpfDAsbz1vK01hdGguaW11bChSLGNlKXwwLG49bitNYXRoLmltdWwoVCxoZSl8MCxpPShpPWkrTWF0aC5pbXVsKFQsbGUpfDApK01hdGguaW11bChQLGhlKXwwLG89bytNYXRoLmltdWwoUCxsZSl8MDt2YXIgUGU9KGMrKG49bitNYXRoLmltdWwoeCxwZSl8MCl8MCkrKCg4MTkxJihpPShpPWkrTWF0aC5pbXVsKHgsYmUpfDApK01hdGguaW11bChJLHBlKXwwKSk8PDEzKXwwO2M9KChvPW8rTWF0aC5pbXVsKEksYmUpfDApKyhpPj4+MTMpfDApKyhQZT4+PjI2KXwwLFBlJj02NzEwODg2MyxuPU1hdGguaW11bChELG9lKSxpPShpPU1hdGguaW11bChELGFlKSkrTWF0aC5pbXVsKHEsb2UpfDAsbz1NYXRoLmltdWwocSxhZSksbj1uK01hdGguaW11bChDLGZlKXwwLGk9KGk9aStNYXRoLmltdWwoQyxjZSl8MCkrTWF0aC5pbXVsKE4sZmUpfDAsbz1vK01hdGguaW11bChOLGNlKXwwLG49bitNYXRoLmltdWwoTCxoZSl8MCxpPShpPWkrTWF0aC5pbXVsKEwsbGUpfDApK01hdGguaW11bChSLGhlKXwwLG89bytNYXRoLmltdWwoUixsZSl8MDt2YXIgQmU9KGMrKG49bitNYXRoLmltdWwoVCxwZSl8MCl8MCkrKCg4MTkxJihpPShpPWkrTWF0aC5pbXVsKFQsYmUpfDApK01hdGguaW11bChQLHBlKXwwKSk8PDEzKXwwO2M9KChvPW8rTWF0aC5pbXVsKFAsYmUpfDApKyhpPj4+MTMpfDApKyhCZT4+PjI2KXwwLEJlJj02NzEwODg2MyxuPU1hdGguaW11bChELGZlKSxpPShpPU1hdGguaW11bChELGNlKSkrTWF0aC5pbXVsKHEsZmUpfDAsbz1NYXRoLmltdWwocSxjZSksbj1uK01hdGguaW11bChDLGhlKXwwLGk9KGk9aStNYXRoLmltdWwoQyxsZSl8MCkrTWF0aC5pbXVsKE4saGUpfDAsbz1vK01hdGguaW11bChOLGxlKXwwO3ZhciBMZT0oYysobj1uK01hdGguaW11bChMLHBlKXwwKXwwKSsoKDgxOTEmKGk9KGk9aStNYXRoLmltdWwoTCxiZSl8MCkrTWF0aC5pbXVsKFIscGUpfDApKTw8MTMpfDA7Yz0oKG89bytNYXRoLmltdWwoUixiZSl8MCkrKGk+Pj4xMyl8MCkrKExlPj4+MjYpfDAsTGUmPTY3MTA4ODYzLG49TWF0aC5pbXVsKEQsaGUpLGk9KGk9TWF0aC5pbXVsKEQsbGUpKStNYXRoLmltdWwocSxoZSl8MCxvPU1hdGguaW11bChxLGxlKTt2YXIgUmU9KGMrKG49bitNYXRoLmltdWwoQyxwZSl8MCl8MCkrKCg4MTkxJihpPShpPWkrTWF0aC5pbXVsKEMsYmUpfDApK01hdGguaW11bChOLHBlKXwwKSk8PDEzKXwwO2M9KChvPW8rTWF0aC5pbXVsKE4sYmUpfDApKyhpPj4+MTMpfDApKyhSZT4+PjI2KXwwLFJlJj02NzEwODg2Mzt2YXIgT2U9KGMrKG49TWF0aC5pbXVsKEQscGUpKXwwKSsoKDgxOTEmKGk9KGk9TWF0aC5pbXVsKEQsYmUpKStNYXRoLmltdWwocSxwZSl8MCkpPDwxMyl8MDtyZXR1cm4gYz0oKG89TWF0aC5pbXVsKHEsYmUpKSsoaT4+PjEzKXwwKSsoT2U+Pj4yNil8MCxPZSY9NjcxMDg4NjMsZlswXT15ZSxmWzFdPWdlLGZbMl09dmUsZlszXT1tZSxmWzRdPV9lLGZbNV09d2UsZls2XT1FZSxmWzddPUFlLGZbOF09U2UsZls5XT1rZSxmWzEwXT14ZSxmWzExXT1JZSxmWzEyXT1NZSxmWzEzXT1UZSxmWzE0XT1QZSxmWzE1XT1CZSxmWzE2XT1MZSxmWzE3XT1SZSxmWzE4XT1PZSwwIT09YyYmKGZbMTldPWMsci5sZW5ndGgrKykscn07ZnVuY3Rpb24gcChlLHQscil7cmV0dXJuKG5ldyBiKS5tdWxwKGUsdCxyKX1mdW5jdGlvbiBiKGUsdCl7dGhpcy54PWUsdGhpcy55PXR9TWF0aC5pbXVsfHwoZD1sKSxvLnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXMubGVuZ3RoK2UubGVuZ3RoO3JldHVybiAxMD09PXRoaXMubGVuZ3RoJiYxMD09PWUubGVuZ3RoP2QodGhpcyxlLHQpOnI8NjM/bCh0aGlzLGUsdCk6cjwxMDI0P2Z1bmN0aW9uKGUsdCxyKXtyLm5lZ2F0aXZlPXQubmVnYXRpdmVeZS5uZWdhdGl2ZSxyLmxlbmd0aD1lLmxlbmd0aCt0Lmxlbmd0aDtmb3IodmFyIG49MCxpPTAsbz0wO288ci5sZW5ndGgtMTtvKyspe3ZhciBhPWk7aT0wO2Zvcih2YXIgcz02NzEwODg2MyZuLGY9TWF0aC5taW4obyx0Lmxlbmd0aC0xKSxjPU1hdGgubWF4KDAsby1lLmxlbmd0aCsxKTtjPD1mO2MrKyl7dmFyIHU9by1jLGg9KDB8ZS53b3Jkc1t1XSkqKDB8dC53b3Jkc1tjXSksbD02NzEwODg2MyZoO3M9NjcxMDg4NjMmKGw9bCtzfDApLGkrPShhPShhPWErKGgvNjcxMDg4NjR8MCl8MCkrKGw+Pj4yNil8MCk+Pj4yNixhJj02NzEwODg2M31yLndvcmRzW29dPXMsbj1hLGE9aX1yZXR1cm4gMCE9PW4/ci53b3Jkc1tvXT1uOnIubGVuZ3RoLS0sci5zdHJpcCgpfSh0aGlzLGUsdCk6cCh0aGlzLGUsdCl9LGIucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW5ldyBBcnJheShlKSxyPW8ucHJvdG90eXBlLl9jb3VudEJpdHMoZSktMSxuPTA7bjxlO24rKyl0W25dPXRoaXMucmV2QmluKG4scixlKTtyZXR1cm4gdH0sYi5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uKGUsdCxyKXtpZigwPT09ZXx8ZT09PXItMSlyZXR1cm4gZTtmb3IodmFyIG49MCxpPTA7aTx0O2krKylufD0oMSZlKTw8dC1pLTEsZT4+PTE7cmV0dXJuIG59LGIucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rpb24oZSx0LHIsbixpLG8pe2Zvcih2YXIgYT0wO2E8bzthKyspblthXT10W2VbYV1dLGlbYV09cltlW2FdXX0sYi5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGUsdCxyLG4saSxvKXt0aGlzLnBlcm11dGUobyxlLHQscixuLGkpO2Zvcih2YXIgYT0xO2E8aTthPDw9MSlmb3IodmFyIHM9YTw8MSxmPU1hdGguY29zKDIqTWF0aC5QSS9zKSxjPU1hdGguc2luKDIqTWF0aC5QSS9zKSx1PTA7dTxpO3UrPXMpZm9yKHZhciBoPWYsbD1jLGQ9MDtkPGE7ZCsrKXt2YXIgcD1yW3UrZF0sYj1uW3UrZF0seT1yW3UrZCthXSxnPW5bdStkK2FdLHY9aCp5LWwqZztnPWgqZytsKnkseT12LHJbdStkXT1wK3ksblt1K2RdPWIrZyxyW3UrZCthXT1wLXksblt1K2QrYV09Yi1nLGQhPT1zJiYodj1mKmgtYypsLGw9ZipsK2MqaCxoPXYpfX0sYi5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24oZSx0KXt2YXIgcj0xfE1hdGgubWF4KHQsZSksbj0xJnIsaT0wO2ZvcihyPXIvMnwwO3I7cj4+Pj0xKWkrKztyZXR1cm4gMTw8aSsxK259LGIucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbihlLHQscil7aWYoIShyPD0xKSlmb3IodmFyIG49MDtuPHIvMjtuKyspe3ZhciBpPWVbbl07ZVtuXT1lW3Itbi0xXSxlW3Itbi0xXT1pLGk9dFtuXSx0W25dPS10W3Itbi0xXSx0W3Itbi0xXT0taX19LGIucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wLG49MDtuPHQvMjtuKyspe3ZhciBpPTgxOTIqTWF0aC5yb3VuZChlWzIqbisxXS90KStNYXRoLnJvdW5kKGVbMipuXS90KStyO2Vbbl09NjcxMDg4NjMmaSxyPWk8NjcxMDg4NjQ/MDppLzY3MTA4ODY0fDB9cmV0dXJuIGV9LGIucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24oZSx0LHIsaSl7Zm9yKHZhciBvPTAsYT0wO2E8dDthKyspbys9MHxlW2FdLHJbMiphXT04MTkxJm8sbz4+Pj0xMyxyWzIqYSsxXT04MTkxJm8sbz4+Pj0xMztmb3IoYT0yKnQ7YTxpOysrYSlyW2FdPTA7bigwPT09byksbigwPT0oLTgxOTImbykpfSxiLnByb3RvdHlwZS5zdHViPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspdFtyXT0wO3JldHVybiB0fSxiLnByb3RvdHlwZS5tdWxwPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj0yKnRoaXMuZ3Vlc3NMZW4xM2IoZS5sZW5ndGgsdC5sZW5ndGgpLGk9dGhpcy5tYWtlUkJUKG4pLG89dGhpcy5zdHViKG4pLGE9bmV3IEFycmF5KG4pLHM9bmV3IEFycmF5KG4pLGY9bmV3IEFycmF5KG4pLGM9bmV3IEFycmF5KG4pLHU9bmV3IEFycmF5KG4pLGg9bmV3IEFycmF5KG4pLGw9ci53b3JkcztsLmxlbmd0aD1uLHRoaXMuY29udmVydDEzYihlLndvcmRzLGUubGVuZ3RoLGEsbiksdGhpcy5jb252ZXJ0MTNiKHQud29yZHMsdC5sZW5ndGgsYyxuKSx0aGlzLnRyYW5zZm9ybShhLG8scyxmLG4saSksdGhpcy50cmFuc2Zvcm0oYyxvLHUsaCxuLGkpO2Zvcih2YXIgZD0wO2Q8bjtkKyspe3ZhciBwPXNbZF0qdVtkXS1mW2RdKmhbZF07ZltkXT1zW2RdKmhbZF0rZltkXSp1W2RdLHNbZF09cH1yZXR1cm4gdGhpcy5jb25qdWdhdGUocyxmLG4pLHRoaXMudHJhbnNmb3JtKHMsZixsLG8sbixpKSx0aGlzLmNvbmp1Z2F0ZShsLG8sbiksdGhpcy5ub3JtYWxpemUxM2IobCxuKSxyLm5lZ2F0aXZlPWUubmVnYXRpdmVedC5uZWdhdGl2ZSxyLmxlbmd0aD1lLmxlbmd0aCt0Lmxlbmd0aCxyLnN0cmlwKCl9LG8ucHJvdG90eXBlLm11bD1mdW5jdGlvbihlKXt2YXIgdD1uZXcgbyhudWxsKTtyZXR1cm4gdC53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZS5sZW5ndGgpLHRoaXMubXVsVG8oZSx0KX0sby5wcm90b3R5cGUubXVsZj1mdW5jdGlvbihlKXt2YXIgdD1uZXcgbyhudWxsKTtyZXR1cm4gdC53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZS5sZW5ndGgpLHAodGhpcyxlLHQpfSxvLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNsb25lKCkubXVsVG8oZSx0aGlzKX0sby5wcm90b3R5cGUuaW11bG49ZnVuY3Rpb24oZSl7bihcIm51bWJlclwiPT10eXBlb2YgZSksbihlPDY3MTA4ODY0KTtmb3IodmFyIHQ9MCxyPTA7cjx0aGlzLmxlbmd0aDtyKyspe3ZhciBpPSgwfHRoaXMud29yZHNbcl0pKmUsbz0oNjcxMDg4NjMmaSkrKDY3MTA4ODYzJnQpO3Q+Pj0yNix0Kz1pLzY3MTA4ODY0fDAsdCs9bz4+PjI2LHRoaXMud29yZHNbcl09NjcxMDg4NjMmb31yZXR1cm4gMCE9PXQmJih0aGlzLndvcmRzW3JdPXQsdGhpcy5sZW5ndGgrKyksdGhpc30sby5wcm90b3R5cGUubXVsbj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKGUpfSxvLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9LG8ucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSl9LG8ucHJvdG90eXBlLnBvdz1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9bmV3IEFycmF5KGUuYml0TGVuZ3RoKCkpLHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49ci8yNnwwLGk9ciUyNjt0W3JdPShlLndvcmRzW25dJjE8PGkpPj4+aX1yZXR1cm4gdH0oZSk7aWYoMD09PXQubGVuZ3RoKXJldHVybiBuZXcgbygxKTtmb3IodmFyIHI9dGhpcyxuPTA7bjx0Lmxlbmd0aCYmMD09PXRbbl07bisrLHI9ci5zcXIoKSk7aWYoKytuPHQubGVuZ3RoKWZvcih2YXIgaT1yLnNxcigpO248dC5sZW5ndGg7bisrLGk9aS5zcXIoKSkwIT09dFtuXSYmKHI9ci5tdWwoaSkpO3JldHVybiByfSxvLnByb3RvdHlwZS5pdXNobG49ZnVuY3Rpb24oZSl7bihcIm51bWJlclwiPT10eXBlb2YgZSYmZT49MCk7dmFyIHQscj1lJTI2LGk9KGUtcikvMjYsbz02NzEwODg2Mz4+PjI2LXI8PDI2LXI7aWYoMCE9PXIpe3ZhciBhPTA7Zm9yKHQ9MDt0PHRoaXMubGVuZ3RoO3QrKyl7dmFyIHM9dGhpcy53b3Jkc1t0XSZvLGY9KDB8dGhpcy53b3Jkc1t0XSktczw8cjt0aGlzLndvcmRzW3RdPWZ8YSxhPXM+Pj4yNi1yfWEmJih0aGlzLndvcmRzW3RdPWEsdGhpcy5sZW5ndGgrKyl9aWYoMCE9PWkpe2Zvcih0PXRoaXMubGVuZ3RoLTE7dD49MDt0LS0pdGhpcy53b3Jkc1t0K2ldPXRoaXMud29yZHNbdF07Zm9yKHQ9MDt0PGk7dCsrKXRoaXMud29yZHNbdF09MDt0aGlzLmxlbmd0aCs9aX1yZXR1cm4gdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5pc2hsbj1mdW5jdGlvbihlKXtyZXR1cm4gbigwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNobG4oZSl9LG8ucHJvdG90eXBlLml1c2hybj1mdW5jdGlvbihlLHQscil7dmFyIGk7bihcIm51bWJlclwiPT10eXBlb2YgZSYmZT49MCksaT10Pyh0LXQlMjYpLzI2OjA7dmFyIG89ZSUyNixhPU1hdGgubWluKChlLW8pLzI2LHRoaXMubGVuZ3RoKSxzPTY3MTA4ODYzXjY3MTA4ODYzPj4+bzw8byxmPXI7aWYoaS09YSxpPU1hdGgubWF4KDAsaSksZil7Zm9yKHZhciBjPTA7YzxhO2MrKylmLndvcmRzW2NdPXRoaXMud29yZHNbY107Zi5sZW5ndGg9YX1pZigwPT09YSk7ZWxzZSBpZih0aGlzLmxlbmd0aD5hKWZvcih0aGlzLmxlbmd0aC09YSxjPTA7Yzx0aGlzLmxlbmd0aDtjKyspdGhpcy53b3Jkc1tjXT10aGlzLndvcmRzW2MrYV07ZWxzZSB0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MTt2YXIgdT0wO2ZvcihjPXRoaXMubGVuZ3RoLTE7Yz49MCYmKDAhPT11fHxjPj1pKTtjLS0pe3ZhciBoPTB8dGhpcy53b3Jkc1tjXTt0aGlzLndvcmRzW2NdPXU8PDI2LW98aD4+Pm8sdT1oJnN9cmV0dXJuIGYmJjAhPT11JiYoZi53b3Jkc1tmLmxlbmd0aCsrXT11KSwwPT09dGhpcy5sZW5ndGgmJih0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MSksdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5pc2hybj1mdW5jdGlvbihlLHQscil7cmV0dXJuIG4oMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaHJuKGUsdCxyKX0sby5wcm90b3R5cGUuc2hsbj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKGUpfSxvLnByb3RvdHlwZS51c2hsbj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihlKX0sby5wcm90b3R5cGUuc2hybj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGUpfSxvLnByb3RvdHlwZS51c2hybj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihlKX0sby5wcm90b3R5cGUudGVzdG49ZnVuY3Rpb24oZSl7bihcIm51bWJlclwiPT10eXBlb2YgZSYmZT49MCk7dmFyIHQ9ZSUyNixyPShlLXQpLzI2LGk9MTw8dDtyZXR1cm4hKHRoaXMubGVuZ3RoPD1yKSYmISEodGhpcy53b3Jkc1tyXSZpKX0sby5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKGUpe24oXCJudW1iZXJcIj09dHlwZW9mIGUmJmU+PTApO3ZhciB0PWUlMjYscj0oZS10KS8yNjtpZihuKDA9PT10aGlzLm5lZ2F0aXZlLFwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzXCIpLHRoaXMubGVuZ3RoPD1yKXJldHVybiB0aGlzO2lmKDAhPT10JiZyKyssdGhpcy5sZW5ndGg9TWF0aC5taW4ocix0aGlzLmxlbmd0aCksMCE9PXQpe3ZhciBpPTY3MTA4ODYzXjY3MTA4ODYzPj4+dDw8dDt0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj1pfXJldHVybiB0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGUpfSxvLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbihlKXtyZXR1cm4gbihcIm51bWJlclwiPT10eXBlb2YgZSksbihlPDY3MTA4ODY0KSxlPDA/dGhpcy5pc3VibigtZSk6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMubGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTxlPyh0aGlzLndvcmRzWzBdPWUtKDB8dGhpcy53b3Jkc1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pc3VibihlKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4oZSl9LG8ucHJvdG90eXBlLl9pYWRkbj1mdW5jdGlvbihlKXt0aGlzLndvcmRzWzBdKz1lO2Zvcih2YXIgdD0wO3Q8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbdF0+PTY3MTA4ODY0O3QrKyl0aGlzLndvcmRzW3RdLT02NzEwODg2NCx0PT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW3QrMV09MTp0aGlzLndvcmRzW3QrMV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsdCsxKSx0aGlzfSxvLnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbihlKXtpZihuKFwibnVtYmVyXCI9PXR5cGVvZiBlKSxuKGU8NjcxMDg4NjQpLGU8MClyZXR1cm4gdGhpcy5pYWRkbigtZSk7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKGUpLHRoaXMubmVnYXRpdmU9MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPWUsMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIHQ9MDt0PHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW3RdPDA7dCsrKXRoaXMud29yZHNbdF0rPTY3MTA4ODY0LHRoaXMud29yZHNbdCsxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4oZSl9LG8ucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihlKX0sby5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sby5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LG8ucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbihlLHQscil7dmFyIGksbyxhPWUubGVuZ3RoK3I7dGhpcy5fZXhwYW5kKGEpO3ZhciBzPTA7Zm9yKGk9MDtpPGUubGVuZ3RoO2krKyl7bz0oMHx0aGlzLndvcmRzW2krcl0pK3M7dmFyIGY9KDB8ZS53b3Jkc1tpXSkqdDtzPSgoby09NjcxMDg4NjMmZik+PjI2KS0oZi82NzEwODg2NHwwKSx0aGlzLndvcmRzW2krcl09NjcxMDg4NjMmb31mb3IoO2k8dGhpcy5sZW5ndGgtcjtpKyspcz0obz0oMHx0aGlzLndvcmRzW2krcl0pK3MpPj4yNix0aGlzLndvcmRzW2krcl09NjcxMDg4NjMmbztpZigwPT09cylyZXR1cm4gdGhpcy5zdHJpcCgpO2ZvcihuKC0xPT09cykscz0wLGk9MDtpPHRoaXMubGVuZ3RoO2krKylzPShvPS0oMHx0aGlzLndvcmRzW2ldKStzKT4+MjYsdGhpcy53b3Jkc1tpXT02NzEwODg2MyZvO3JldHVybiB0aGlzLm5lZ2F0aXZlPTEsdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbihlLHQpe3ZhciByPSh0aGlzLmxlbmd0aCxlLmxlbmd0aCksbj10aGlzLmNsb25lKCksaT1lLGE9MHxpLndvcmRzW2kubGVuZ3RoLTFdOzAhPT0ocj0yNi10aGlzLl9jb3VudEJpdHMoYSkpJiYoaT1pLnVzaGxuKHIpLG4uaXVzaGxuKHIpLGE9MHxpLndvcmRzW2kubGVuZ3RoLTFdKTt2YXIgcyxmPW4ubGVuZ3RoLWkubGVuZ3RoO2lmKFwibW9kXCIhPT10KXsocz1uZXcgbyhudWxsKSkubGVuZ3RoPWYrMSxzLndvcmRzPW5ldyBBcnJheShzLmxlbmd0aCk7Zm9yKHZhciBjPTA7YzxzLmxlbmd0aDtjKyspcy53b3Jkc1tjXT0wfXZhciB1PW4uY2xvbmUoKS5faXNobG5zdWJtdWwoaSwxLGYpOzA9PT11Lm5lZ2F0aXZlJiYobj11LHMmJihzLndvcmRzW2ZdPTEpKTtmb3IodmFyIGg9Zi0xO2g+PTA7aC0tKXt2YXIgbD02NzEwODg2NCooMHxuLndvcmRzW2kubGVuZ3RoK2hdKSsoMHxuLndvcmRzW2kubGVuZ3RoK2gtMV0pO2ZvcihsPU1hdGgubWluKGwvYXwwLDY3MTA4ODYzKSxuLl9pc2hsbnN1Ym11bChpLGwsaCk7MCE9PW4ubmVnYXRpdmU7KWwtLSxuLm5lZ2F0aXZlPTAsbi5faXNobG5zdWJtdWwoaSwxLGgpLG4uaXNaZXJvKCl8fChuLm5lZ2F0aXZlXj0xKTtzJiYocy53b3Jkc1toXT1sKX1yZXR1cm4gcyYmcy5zdHJpcCgpLG4uc3RyaXAoKSxcImRpdlwiIT09dCYmMCE9PXImJm4uaXVzaHJuKHIpLHtkaXY6c3x8bnVsbCxtb2Q6bn19LG8ucHJvdG90eXBlLmRpdm1vZD1mdW5jdGlvbihlLHQscil7cmV0dXJuIG4oIWUuaXNaZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgbygwKSxtb2Q6bmV3IG8oMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09ZS5uZWdhdGl2ZT8ocz10aGlzLm5lZygpLmRpdm1vZChlLHQpLFwibW9kXCIhPT10JiYoaT1zLmRpdi5uZWcoKSksXCJkaXZcIiE9PXQmJihhPXMubW9kLm5lZygpLHImJjAhPT1hLm5lZ2F0aXZlJiZhLmlhZGQoZSkpLHtkaXY6aSxtb2Q6YX0pOjA9PT10aGlzLm5lZ2F0aXZlJiYwIT09ZS5uZWdhdGl2ZT8ocz10aGlzLmRpdm1vZChlLm5lZygpLHQpLFwibW9kXCIhPT10JiYoaT1zLmRpdi5uZWcoKSkse2RpdjppLG1vZDpzLm1vZH0pOjAhPSh0aGlzLm5lZ2F0aXZlJmUubmVnYXRpdmUpPyhzPXRoaXMubmVnKCkuZGl2bW9kKGUubmVnKCksdCksXCJkaXZcIiE9PXQmJihhPXMubW9kLm5lZygpLHImJjAhPT1hLm5lZ2F0aXZlJiZhLmlzdWIoZSkpLHtkaXY6cy5kaXYsbW9kOmF9KTplLmxlbmd0aD50aGlzLmxlbmd0aHx8dGhpcy5jbXAoZSk8MD97ZGl2Om5ldyBvKDApLG1vZDp0aGlzfToxPT09ZS5sZW5ndGg/XCJkaXZcIj09PXQ/e2Rpdjp0aGlzLmRpdm4oZS53b3Jkc1swXSksbW9kOm51bGx9OlwibW9kXCI9PT10P3tkaXY6bnVsbCxtb2Q6bmV3IG8odGhpcy5tb2RuKGUud29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oZS53b3Jkc1swXSksbW9kOm5ldyBvKHRoaXMubW9kbihlLndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoZSx0KTt2YXIgaSxhLHN9LG8ucHJvdG90eXBlLmRpdj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kaXZtb2QoZSxcImRpdlwiLCExKS5kaXZ9LG8ucHJvdG90eXBlLm1vZD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kaXZtb2QoZSxcIm1vZFwiLCExKS5tb2R9LG8ucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZGl2bW9kKGUsXCJtb2RcIiwhMCkubW9kfSxvLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmRpdm1vZChlKTtpZih0Lm1vZC5pc1plcm8oKSlyZXR1cm4gdC5kaXY7dmFyIHI9MCE9PXQuZGl2Lm5lZ2F0aXZlP3QubW9kLmlzdWIoZSk6dC5tb2Qsbj1lLnVzaHJuKDEpLGk9ZS5hbmRsbigxKSxvPXIuY21wKG4pO3JldHVybiBvPDB8fDE9PT1pJiYwPT09bz90LmRpdjowIT09dC5kaXYubmVnYXRpdmU/dC5kaXYuaXN1Ym4oMSk6dC5kaXYuaWFkZG4oMSl9LG8ucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oZSl7bihlPD02NzEwODg2Myk7Zm9yKHZhciB0PSgxPDwyNiklZSxyPTAsaT10aGlzLmxlbmd0aC0xO2k+PTA7aS0tKXI9KHQqcisoMHx0aGlzLndvcmRzW2ldKSklZTtyZXR1cm4gcn0sby5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24oZSl7bihlPD02NzEwODg2Myk7Zm9yKHZhciB0PTAscj10aGlzLmxlbmd0aC0xO3I+PTA7ci0tKXt2YXIgaT0oMHx0aGlzLndvcmRzW3JdKSs2NzEwODg2NCp0O3RoaXMud29yZHNbcl09aS9lfDAsdD1pJWV9cmV0dXJuIHRoaXMuc3RyaXAoKX0sby5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKGUpfSxvLnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKGUpe24oMD09PWUubmVnYXRpdmUpLG4oIWUuaXNaZXJvKCkpO3ZhciB0PXRoaXMscj1lLmNsb25lKCk7dD0wIT09dC5uZWdhdGl2ZT90LnVtb2QoZSk6dC5jbG9uZSgpO2Zvcih2YXIgaT1uZXcgbygxKSxhPW5ldyBvKDApLHM9bmV3IG8oMCksZj1uZXcgbygxKSxjPTA7dC5pc0V2ZW4oKSYmci5pc0V2ZW4oKTspdC5pdXNocm4oMSksci5pdXNocm4oMSksKytjO2Zvcih2YXIgdT1yLmNsb25lKCksaD10LmNsb25lKCk7IXQuaXNaZXJvKCk7KXtmb3IodmFyIGw9MCxkPTE7MD09KHQud29yZHNbMF0mZCkmJmw8MjY7KytsLGQ8PD0xKTtpZihsPjApZm9yKHQuaXVzaHJuKGwpO2wtLSA+MDspKGkuaXNPZGQoKXx8YS5pc09kZCgpKSYmKGkuaWFkZCh1KSxhLmlzdWIoaCkpLGkuaXVzaHJuKDEpLGEuaXVzaHJuKDEpO2Zvcih2YXIgcD0wLGI9MTswPT0oci53b3Jkc1swXSZiKSYmcDwyNjsrK3AsYjw8PTEpO2lmKHA+MClmb3Ioci5pdXNocm4ocCk7cC0tID4wOykocy5pc09kZCgpfHxmLmlzT2RkKCkpJiYocy5pYWRkKHUpLGYuaXN1YihoKSkscy5pdXNocm4oMSksZi5pdXNocm4oMSk7dC5jbXAocik+PTA/KHQuaXN1YihyKSxpLmlzdWIocyksYS5pc3ViKGYpKTooci5pc3ViKHQpLHMuaXN1YihpKSxmLmlzdWIoYSkpfXJldHVybnthOnMsYjpmLGdjZDpyLml1c2hsbihjKX19LG8ucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbihlKXtuKDA9PT1lLm5lZ2F0aXZlKSxuKCFlLmlzWmVybygpKTt2YXIgdD10aGlzLHI9ZS5jbG9uZSgpO3Q9MCE9PXQubmVnYXRpdmU/dC51bW9kKGUpOnQuY2xvbmUoKTtmb3IodmFyIGksYT1uZXcgbygxKSxzPW5ldyBvKDApLGY9ci5jbG9uZSgpO3QuY21wbigxKT4wJiZyLmNtcG4oMSk+MDspe2Zvcih2YXIgYz0wLHU9MTswPT0odC53b3Jkc1swXSZ1KSYmYzwyNjsrK2MsdTw8PTEpO2lmKGM+MClmb3IodC5pdXNocm4oYyk7Yy0tID4wOylhLmlzT2RkKCkmJmEuaWFkZChmKSxhLml1c2hybigxKTtmb3IodmFyIGg9MCxsPTE7MD09KHIud29yZHNbMF0mbCkmJmg8MjY7KytoLGw8PD0xKTtpZihoPjApZm9yKHIuaXVzaHJuKGgpO2gtLSA+MDspcy5pc09kZCgpJiZzLmlhZGQoZikscy5pdXNocm4oMSk7dC5jbXAocik+PTA/KHQuaXN1YihyKSxhLmlzdWIocykpOihyLmlzdWIodCkscy5pc3ViKGEpKX1yZXR1cm4oaT0wPT09dC5jbXBuKDEpP2E6cykuY21wbigwKTwwJiZpLmlhZGQoZSksaX0sby5wcm90b3R5cGUuZ2NkPWZ1bmN0aW9uKGUpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIGUuYWJzKCk7aWYoZS5pc1plcm8oKSlyZXR1cm4gdGhpcy5hYnMoKTt2YXIgdD10aGlzLmNsb25lKCkscj1lLmNsb25lKCk7dC5uZWdhdGl2ZT0wLHIubmVnYXRpdmU9MDtmb3IodmFyIG49MDt0LmlzRXZlbigpJiZyLmlzRXZlbigpO24rKyl0Lml1c2hybigxKSxyLml1c2hybigxKTtmb3IoOzspe2Zvcig7dC5pc0V2ZW4oKTspdC5pdXNocm4oMSk7Zm9yKDtyLmlzRXZlbigpOylyLml1c2hybigxKTt2YXIgaT10LmNtcChyKTtpZihpPDApe3ZhciBvPXQ7dD1yLHI9b31lbHNlIGlmKDA9PT1pfHwwPT09ci5jbXBuKDEpKWJyZWFrO3QuaXN1YihyKX1yZXR1cm4gci5pdXNobG4obil9LG8ucHJvdG90eXBlLmludm09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWdjZChlKS5hLnVtb2QoZSl9LG8ucHJvdG90eXBlLmlzRXZlbj1mdW5jdGlvbigpe3JldHVybiAwPT0oMSZ0aGlzLndvcmRzWzBdKX0sby5wcm90b3R5cGUuaXNPZGQ9ZnVuY3Rpb24oKXtyZXR1cm4gMT09KDEmdGhpcy53b3Jkc1swXSl9LG8ucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLndvcmRzWzBdJmV9LG8ucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uKGUpe24oXCJudW1iZXJcIj09dHlwZW9mIGUpO3ZhciB0PWUlMjYscj0oZS10KS8yNixpPTE8PHQ7aWYodGhpcy5sZW5ndGg8PXIpcmV0dXJuIHRoaXMuX2V4cGFuZChyKzEpLHRoaXMud29yZHNbcl18PWksdGhpcztmb3IodmFyIG89aSxhPXI7MCE9PW8mJmE8dGhpcy5sZW5ndGg7YSsrKXt2YXIgcz0wfHRoaXMud29yZHNbYV07bz0ocys9byk+Pj4yNixzJj02NzEwODg2Myx0aGlzLndvcmRzW2FdPXN9cmV0dXJuIDAhPT1vJiYodGhpcy53b3Jkc1thXT1vLHRoaXMubGVuZ3RoKyspLHRoaXN9LG8ucHJvdG90eXBlLmlzWmVybz1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdfSxvLnByb3RvdHlwZS5jbXBuPWZ1bmN0aW9uKGUpe3ZhciB0LHI9ZTwwO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYhcilyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmcilyZXR1cm4gMTtpZih0aGlzLnN0cmlwKCksdGhpcy5sZW5ndGg+MSl0PTE7ZWxzZXtyJiYoZT0tZSksbihlPD02NzEwODg2MyxcIk51bWJlciBpcyB0b28gYmlnXCIpO3ZhciBpPTB8dGhpcy53b3Jkc1swXTt0PWk9PT1lPzA6aTxlPy0xOjF9cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LXQ6dH0sby5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKGUpe2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09ZS5uZWdhdGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWUubmVnYXRpdmUpcmV0dXJuIDE7dmFyIHQ9dGhpcy51Y21wKGUpO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC10OnR9LG8ucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24oZSl7aWYodGhpcy5sZW5ndGg+ZS5sZW5ndGgpcmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8ZS5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciB0PTAscj10aGlzLmxlbmd0aC0xO3I+PTA7ci0tKXt2YXIgbj0wfHRoaXMud29yZHNbcl0saT0wfGUud29yZHNbcl07aWYobiE9PWkpe248aT90PS0xOm4+aSYmKHQ9MSk7YnJlYWt9fXJldHVybiB0fSxvLnByb3RvdHlwZS5ndG49ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT10aGlzLmNtcG4oZSl9LG8ucHJvdG90eXBlLmd0PWZ1bmN0aW9uKGUpe3JldHVybiAxPT09dGhpcy5jbXAoZSl9LG8ucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY21wbihlKT49MH0sby5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNtcChlKT49MH0sby5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKGUpe3JldHVybi0xPT09dGhpcy5jbXBuKGUpfSxvLnByb3RvdHlwZS5sdD1mdW5jdGlvbihlKXtyZXR1cm4tMT09PXRoaXMuY21wKGUpfSxvLnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNtcG4oZSk8PTB9LG8ucHJvdG90eXBlLmx0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbXAoZSk8PTB9LG8ucHJvdG90eXBlLmVxbj1mdW5jdGlvbihlKXtyZXR1cm4gMD09PXRoaXMuY21wbihlKX0sby5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT10aGlzLmNtcChlKX0sby5yZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBFKGUpfSxvLnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbihlKXtyZXR1cm4gbighdGhpcy5yZWQsXCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0XCIpLG4oMD09PXRoaXMubmVnYXRpdmUsXCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlc1wiKSxlLmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoZSl9LG8ucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnJlZCxcImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHRcIiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LG8ucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yZWQ9ZSx0aGlzfSxvLnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbihlKXtyZXR1cm4gbighdGhpcy5yZWQsXCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0XCIpLHRoaXMuX2ZvcmNlUmVkKGUpfSxvLnByb3RvdHlwZS5yZWRBZGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG4odGhpcy5yZWQsXCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpLHRoaXMucmVkLmFkZCh0aGlzLGUpfSxvLnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9uKGUpe3JldHVybiBuKHRoaXMucmVkLFwicmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuaWFkZCh0aGlzLGUpfSxvLnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oZSl7cmV0dXJuIG4odGhpcy5yZWQsXCJyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpLHRoaXMucmVkLnN1Yih0aGlzLGUpfSxvLnByb3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uKGUpe3JldHVybiBuKHRoaXMucmVkLFwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuaXN1Yih0aGlzLGUpfSxvLnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rpb24oZSl7cmV0dXJuIG4odGhpcy5yZWQsXCJyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpLHRoaXMucmVkLnNobCh0aGlzLGUpfSxvLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oZSl7cmV0dXJuIG4odGhpcy5yZWQsXCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsZSksdGhpcy5yZWQubXVsKHRoaXMsZSl9LG8ucHJvdG90eXBlLnJlZElNdWw9ZnVuY3Rpb24oZSl7cmV0dXJuIG4odGhpcy5yZWQsXCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsZSksdGhpcy5yZWQuaW11bCh0aGlzLGUpfSxvLnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSxvLnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcy5yZWQsXCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pc3FyKHRoaXMpfSxvLnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcy5yZWQsXCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSxvLnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcy5yZWQsXCJyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxvLnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQubmVnKHRoaXMpfSxvLnByb3RvdHlwZS5yZWRQb3c9ZnVuY3Rpb24oZSl7cmV0dXJuIG4odGhpcy5yZWQmJiFlLnJlZCxcInJlZFBvdyhub3JtYWxOdW0pXCIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLGUpfTt2YXIgeT17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIGcoZSx0KXt0aGlzLm5hbWU9ZSx0aGlzLnA9bmV3IG8odCwxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IG8oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIHYoKXtnLmNhbGwodGhpcyxcImsyNTZcIixcImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmXCIpfWZ1bmN0aW9uIG0oKXtnLmNhbGwodGhpcyxcInAyMjRcIixcImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxXCIpfWZ1bmN0aW9uIF8oKXtnLmNhbGwodGhpcyxcInAxOTJcIixcImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmXCIpfWZ1bmN0aW9uIHcoKXtnLmNhbGwodGhpcyxcIjI1NTE5XCIsXCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkXCIpfWZ1bmN0aW9uIEUoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpe3ZhciB0PW8uX3ByaW1lKGUpO3RoaXMubT10LnAsdGhpcy5wcmltZT10fWVsc2UgbihlLmd0bigxKSxcIm1vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMVwiKSx0aGlzLm09ZSx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gQShlKXtFLmNhbGwodGhpcyxlKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBvKDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfWcucHJvdG90eXBlLl90bXA9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgbyhudWxsKTtyZXR1cm4gZS53b3Jkcz1uZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpLGV9LGcucHJvdG90eXBlLmlyZWR1Y2U9ZnVuY3Rpb24oZSl7dmFyIHQscj1lO2Rve3RoaXMuc3BsaXQocix0aGlzLnRtcCksdD0ocj0ocj10aGlzLmltdWxLKHIpKS5pYWRkKHRoaXMudG1wKSkuYml0TGVuZ3RoKCl9d2hpbGUodD50aGlzLm4pO3ZhciBuPXQ8dGhpcy5uPy0xOnIudWNtcCh0aGlzLnApO3JldHVybiAwPT09bj8oci53b3Jkc1swXT0wLHIubGVuZ3RoPTEpOm4+MD9yLmlzdWIodGhpcy5wKTpyLnN0cmlwKCkscn0sZy5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oZSx0KXtlLml1c2hybih0aGlzLm4sMCx0KX0sZy5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaW11bCh0aGlzLmspfSxpKHYsZyksdi5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9TWF0aC5taW4oZS5sZW5ndGgsOSksbj0wO248cjtuKyspdC53b3Jkc1tuXT1lLndvcmRzW25dO2lmKHQubGVuZ3RoPXIsZS5sZW5ndGg8PTkpcmV0dXJuIGUud29yZHNbMF09MCx2b2lkKGUubGVuZ3RoPTEpO3ZhciBpPWUud29yZHNbOV07Zm9yKHQud29yZHNbdC5sZW5ndGgrK109NDE5NDMwMyZpLG49MTA7bjxlLmxlbmd0aDtuKyspe3ZhciBvPTB8ZS53b3Jkc1tuXTtlLndvcmRzW24tMTBdPSg0MTk0MzAzJm8pPDw0fGk+Pj4yMixpPW99aT4+Pj0yMixlLndvcmRzW24tMTBdPWksMD09PWkmJmUubGVuZ3RoPjEwP2UubGVuZ3RoLT0xMDplLmxlbmd0aC09OX0sdi5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oZSl7ZS53b3Jkc1tlLmxlbmd0aF09MCxlLndvcmRzW2UubGVuZ3RoKzFdPTAsZS5sZW5ndGgrPTI7Zm9yKHZhciB0PTAscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj0wfGUud29yZHNbcl07dCs9OTc3Km4sZS53b3Jkc1tyXT02NzEwODg2MyZ0LHQ9NjQqbisodC82NzEwODg2NHwwKX1yZXR1cm4gMD09PWUud29yZHNbZS5sZW5ndGgtMV0mJihlLmxlbmd0aC0tLDA9PT1lLndvcmRzW2UubGVuZ3RoLTFdJiZlLmxlbmd0aC0tKSxlfSxpKG0sZyksaShfLGcpLGkodyxnKSx3LnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPTE5KigwfGUud29yZHNbcl0pK3QsaT02NzEwODg2MyZuO24+Pj49MjYsZS53b3Jkc1tyXT1pLHQ9bn1yZXR1cm4gMCE9PXQmJihlLndvcmRzW2UubGVuZ3RoKytdPXQpLGV9LG8uX3ByaW1lPWZ1bmN0aW9uKGUpe2lmKHlbZV0pcmV0dXJuIHlbZV07dmFyIHQ7aWYoXCJrMjU2XCI9PT1lKXQ9bmV3IHY7ZWxzZSBpZihcInAyMjRcIj09PWUpdD1uZXcgbTtlbHNlIGlmKFwicDE5MlwiPT09ZSl0PW5ldyBfO2Vsc2V7aWYoXCJwMjU1MTlcIiE9PWUpdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBwcmltZSBcIitlKTt0PW5ldyB3fXJldHVybiB5W2VdPXQsdH0sRS5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24oZSl7bigwPT09ZS5uZWdhdGl2ZSxcInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzXCIpLG4oZS5yZWQsXCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpfSxFLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihlLHQpe24oMD09KGUubmVnYXRpdmV8dC5uZWdhdGl2ZSksXCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlc1wiKSxuKGUucmVkJiZlLnJlZD09PXQucmVkLFwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKX0sRS5wcm90b3R5cGUuaW1vZD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2UoZSkuX2ZvcmNlUmVkKHRoaXMpOmUudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKX0sRS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKGUpe3JldHVybiBlLmlzWmVybygpP2UuY2xvbmUoKTp0aGlzLm0uc3ViKGUpLl9mb3JjZVJlZCh0aGlzKX0sRS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUsdCl7dGhpcy5fdmVyaWZ5MihlLHQpO3ZhciByPWUuYWRkKHQpO3JldHVybiByLmNtcCh0aGlzLm0pPj0wJiZyLmlzdWIodGhpcy5tKSxyLl9mb3JjZVJlZCh0aGlzKX0sRS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihlLHQpe3RoaXMuX3ZlcmlmeTIoZSx0KTt2YXIgcj1lLmlhZGQodCk7cmV0dXJuIHIuY21wKHRoaXMubSk+PTAmJnIuaXN1Yih0aGlzLm0pLHJ9LEUucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihlLHQpe3RoaXMuX3ZlcmlmeTIoZSx0KTt2YXIgcj1lLnN1Yih0KTtyZXR1cm4gci5jbXBuKDApPDAmJnIuaWFkZCh0aGlzLm0pLHIuX2ZvcmNlUmVkKHRoaXMpfSxFLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKGUsdCl7dGhpcy5fdmVyaWZ5MihlLHQpO3ZhciByPWUuaXN1Yih0KTtyZXR1cm4gci5jbXBuKDApPDAmJnIuaWFkZCh0aGlzLm0pLHJ9LEUucHJvdG90eXBlLnNobD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl92ZXJpZnkxKGUpLHRoaXMuaW1vZChlLnVzaGxuKHQpKX0sRS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl92ZXJpZnkyKGUsdCksdGhpcy5pbW9kKGUuaW11bCh0KSl9LEUucHJvdG90eXBlLm11bD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl92ZXJpZnkyKGUsdCksdGhpcy5pbW9kKGUubXVsKHQpKX0sRS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5pbXVsKGUsZS5jbG9uZSgpKX0sRS5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm11bChlLGUpfSxFLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKGUpe2lmKGUuaXNaZXJvKCkpcmV0dXJuIGUuY2xvbmUoKTt2YXIgdD10aGlzLm0uYW5kbG4oMyk7aWYobih0JTI9PTEpLDM9PT10KXt2YXIgcj10aGlzLm0uYWRkKG5ldyBvKDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KGUscil9Zm9yKHZhciBpPXRoaXMubS5zdWJuKDEpLGE9MDshaS5pc1plcm8oKSYmMD09PWkuYW5kbG4oMSk7KWErKyxpLml1c2hybigxKTtuKCFpLmlzWmVybygpKTt2YXIgcz1uZXcgbygxKS50b1JlZCh0aGlzKSxmPXMucmVkTmVnKCksYz10aGlzLm0uc3VibigxKS5pdXNocm4oMSksdT10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKHU9bmV3IG8oMip1KnUpLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyh1LGMpLmNtcChmKTspdS5yZWRJQWRkKGYpO2Zvcih2YXIgaD10aGlzLnBvdyh1LGkpLGw9dGhpcy5wb3coZSxpLmFkZG4oMSkuaXVzaHJuKDEpKSxkPXRoaXMucG93KGUsaSkscD1hOzAhPT1kLmNtcChzKTspe2Zvcih2YXIgYj1kLHk9MDswIT09Yi5jbXAocyk7eSsrKWI9Yi5yZWRTcXIoKTtuKHk8cCk7dmFyIGc9dGhpcy5wb3coaCxuZXcgbygxKS5pdXNobG4ocC15LTEpKTtsPWwucmVkTXVsKGcpLGg9Zy5yZWRTcXIoKSxkPWQucmVkTXVsKGgpLHA9eX1yZXR1cm4gbH0sRS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihlKXt2YXIgdD1lLl9pbnZtcCh0aGlzLm0pO3JldHVybiAwIT09dC5uZWdhdGl2ZT8odC5uZWdhdGl2ZT0wLHRoaXMuaW1vZCh0KS5yZWROZWcoKSk6dGhpcy5pbW9kKHQpfSxFLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oZSx0KXtpZih0LmlzWmVybygpKXJldHVybiBuZXcgbygxKS50b1JlZCh0aGlzKTtpZigwPT09dC5jbXBuKDEpKXJldHVybiBlLmNsb25lKCk7dmFyIHI9bmV3IEFycmF5KDE2KTtyWzBdPW5ldyBvKDEpLnRvUmVkKHRoaXMpLHJbMV09ZTtmb3IodmFyIG49MjtuPHIubGVuZ3RoO24rKylyW25dPXRoaXMubXVsKHJbbi0xXSxlKTt2YXIgaT1yWzBdLGE9MCxzPTAsZj10LmJpdExlbmd0aCgpJTI2O2ZvcigwPT09ZiYmKGY9MjYpLG49dC5sZW5ndGgtMTtuPj0wO24tLSl7Zm9yKHZhciBjPXQud29yZHNbbl0sdT1mLTE7dT49MDt1LS0pe3ZhciBoPWM+PnUmMTtpIT09clswXSYmKGk9dGhpcy5zcXIoaSkpLDAhPT1ofHwwIT09YT8oYTw8PTEsYXw9aCwoND09PSsrc3x8MD09PW4mJjA9PT11KSYmKGk9dGhpcy5tdWwoaSxyW2FdKSxzPTAsYT0wKSk6cz0wfWY9MjZ9cmV0dXJuIGl9LEUucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihlKXt2YXIgdD1lLnVtb2QodGhpcy5tKTtyZXR1cm4gdD09PWU/dC5jbG9uZSgpOnR9LEUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2xvbmUoKTtyZXR1cm4gdC5yZWQ9bnVsbCx0fSxvLm1vbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBBKGUpfSxpKEEsRSksQS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmltb2QoZS51c2hsbih0aGlzLnNoaWZ0KSl9LEEucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuaW1vZChlLm11bCh0aGlzLnJpbnYpKTtyZXR1cm4gdC5yZWQ9bnVsbCx0fSxBLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGUsdCl7aWYoZS5pc1plcm8oKXx8dC5pc1plcm8oKSlyZXR1cm4gZS53b3Jkc1swXT0wLGUubGVuZ3RoPTEsZTt2YXIgcj1lLmltdWwodCksbj1yLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxpPXIuaXN1YihuKS5pdXNocm4odGhpcy5zaGlmdCksbz1pO3JldHVybiBpLmNtcCh0aGlzLm0pPj0wP289aS5pc3ViKHRoaXMubSk6aS5jbXBuKDApPDAmJihvPWkuaWFkZCh0aGlzLm0pKSxvLl9mb3JjZVJlZCh0aGlzKX0sQS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGUsdCl7aWYoZS5pc1plcm8oKXx8dC5pc1plcm8oKSlyZXR1cm4gbmV3IG8oMCkuX2ZvcmNlUmVkKHRoaXMpO3ZhciByPWUubXVsKHQpLG49ci5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksaT1yLmlzdWIobikuaXVzaHJuKHRoaXMuc2hpZnQpLGE9aTtyZXR1cm4gaS5jbXAodGhpcy5tKT49MD9hPWkuaXN1Yih0aGlzLm0pOmkuY21wbigwKTwwJiYoYT1pLmlhZGQodGhpcy5tKSksYS5fZm9yY2VSZWQodGhpcyl9LEEucHJvdG90eXBlLmludm09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaW1vZChlLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oZSx0aGlzKX0pLmNhbGwodGhpcyxyKDI3KShlKSl9LGZ1bmN0aW9uKGUsdCl7dmFyIHI7cj1mdW5jdGlvbigpe3JldHVybiB0aGlzfSgpO3RyeXtyPXJ8fG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCl9Y2F0Y2goZSl7XCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdyYmKHI9d2luZG93KX1lLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXQsaT1yKDMpLG89cigxMSksYT1yKDYyKTtuLmFzc2VydD1vLG4udG9BcnJheT1hLnRvQXJyYXksbi56ZXJvMj1hLnplcm8yLG4udG9IZXg9YS50b0hleCxuLmVuY29kZT1hLmVuY29kZSxuLmdldE5BRj1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1bXSxuPTE8PHQrMSxpPWUuY2xvbmUoKTtpLmNtcG4oMSk+PTA7KXt2YXIgbztpZihpLmlzT2RkKCkpe3ZhciBhPWkuYW5kbG4obi0xKTtvPWE+KG4+PjEpLTE/KG4+PjEpLWE6YSxpLmlzdWJuKG8pfWVsc2Ugbz0wO3IucHVzaChvKTtmb3IodmFyIHM9MCE9PWkuY21wbigwKSYmMD09PWkuYW5kbG4obi0xKT90KzE6MSxmPTE7ZjxzO2YrKylyLnB1c2goMCk7aS5pdXNocm4ocyl9cmV0dXJuIHJ9LG4uZ2V0SlNGPWZ1bmN0aW9uKGUsdCl7dmFyIHI9W1tdLFtdXTtlPWUuY2xvbmUoKSx0PXQuY2xvbmUoKTtmb3IodmFyIG49MCxpPTA7ZS5jbXBuKC1uKT4wfHx0LmNtcG4oLWkpPjA7KXt2YXIgbyxhLHMsZj1lLmFuZGxuKDMpK24mMyxjPXQuYW5kbG4oMykraSYzO2lmKDM9PT1mJiYoZj0tMSksMz09PWMmJihjPS0xKSwwPT0oMSZmKSlvPTA7ZWxzZSBvPTMhPT0ocz1lLmFuZGxuKDcpK24mNykmJjUhPT1zfHwyIT09Yz9mOi1mO2lmKHJbMF0ucHVzaChvKSwwPT0oMSZjKSlhPTA7ZWxzZSBhPTMhPT0ocz10LmFuZGxuKDcpK2kmNykmJjUhPT1zfHwyIT09Zj9jOi1jO3JbMV0ucHVzaChhKSwyKm49PT1vKzEmJihuPTEtbiksMippPT09YSsxJiYoaT0xLWkpLGUuaXVzaHJuKDEpLHQuaXVzaHJuKDEpfXJldHVybiByfSxuLmNhY2hlZFByb3BlcnR5PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1cIl9cIit0O2UucHJvdG90eXBlW3RdPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXNbbl0/dGhpc1tuXTp0aGlzW25dPXIuY2FsbCh0aGlzKX19LG4ucGFyc2VCeXRlcz1mdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT9uLnRvQXJyYXkoZSxcImhleFwiKTplfSxuLmludEZyb21MRT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IGkoZSxcImhleFwiLFwibGVcIil9fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG4saT1cIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdD9SZWZsZWN0Om51bGwsbz1pJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLmFwcGx5P2kuYXBwbHk6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbChlLHQscil9O249aSYmXCJmdW5jdGlvblwiPT10eXBlb2YgaS5vd25LZXlzP2kub3duS2V5czpPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP2Z1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKS5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKSl9OmZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKX07dmFyIGE9TnVtYmVyLmlzTmFOfHxmdW5jdGlvbihlKXtyZXR1cm4gZSE9ZX07ZnVuY3Rpb24gcygpe3MuaW5pdC5jYWxsKHRoaXMpfWUuZXhwb3J0cz1zLHMuRXZlbnRFbWl0dGVyPXMscy5wcm90b3R5cGUuX2V2ZW50cz12b2lkIDAscy5wcm90b3R5cGUuX2V2ZW50c0NvdW50PTAscy5wcm90b3R5cGUuX21heExpc3RlbmVycz12b2lkIDA7dmFyIGY9MTA7ZnVuY3Rpb24gYyhlKXtyZXR1cm4gdm9pZCAwPT09ZS5fbWF4TGlzdGVuZXJzP3MuZGVmYXVsdE1heExpc3RlbmVyczplLl9tYXhMaXN0ZW5lcnN9ZnVuY3Rpb24gdShlLHQscixuKXt2YXIgaSxvLGEscztpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiByKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImxpc3RlbmVyXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uLiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIHIpO2lmKHZvaWQgMD09PShvPWUuX2V2ZW50cyk/KG89ZS5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksZS5fZXZlbnRzQ291bnQ9MCk6KHZvaWQgMCE9PW8ubmV3TGlzdGVuZXImJihlLmVtaXQoXCJuZXdMaXN0ZW5lclwiLHQsci5saXN0ZW5lcj9yLmxpc3RlbmVyOnIpLG89ZS5fZXZlbnRzKSxhPW9bdF0pLHZvaWQgMD09PWEpYT1vW3RdPXIsKytlLl9ldmVudHNDb3VudDtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGE/YT1vW3RdPW4/W3IsYV06W2Escl06bj9hLnVuc2hpZnQocik6YS5wdXNoKHIpLChpPWMoZSkpPjAmJmEubGVuZ3RoPmkmJiFhLndhcm5lZCl7YS53YXJuZWQ9ITA7dmFyIGY9bmV3IEVycm9yKFwiUG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiBcIithLmxlbmd0aCtcIiBcIitTdHJpbmcodCkrXCIgbGlzdGVuZXJzIGFkZGVkLiBVc2UgZW1pdHRlci5zZXRNYXhMaXN0ZW5lcnMoKSB0byBpbmNyZWFzZSBsaW1pdFwiKTtmLm5hbWU9XCJNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmdcIixmLmVtaXR0ZXI9ZSxmLnR5cGU9dCxmLmNvdW50PWEubGVuZ3RoLHM9Zixjb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybihzKX1yZXR1cm4gZX1mdW5jdGlvbiBoKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWUucHVzaChhcmd1bWVudHNbdF0pO3RoaXMuZmlyZWR8fCh0aGlzLnRhcmdldC5yZW1vdmVMaXN0ZW5lcih0aGlzLnR5cGUsdGhpcy53cmFwRm4pLHRoaXMuZmlyZWQ9ITAsbyh0aGlzLmxpc3RlbmVyLHRoaXMudGFyZ2V0LGUpKX1mdW5jdGlvbiBsKGUsdCxyKXt2YXIgbj17ZmlyZWQ6ITEsd3JhcEZuOnZvaWQgMCx0YXJnZXQ6ZSx0eXBlOnQsbGlzdGVuZXI6cn0saT1oLmJpbmQobik7cmV0dXJuIGkubGlzdGVuZXI9cixuLndyYXBGbj1pLGl9ZnVuY3Rpb24gZChlLHQscil7dmFyIG49ZS5fZXZlbnRzO2lmKHZvaWQgMD09PW4pcmV0dXJuW107dmFyIGk9blt0XTtyZXR1cm4gdm9pZCAwPT09aT9bXTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBpP3I/W2kubGlzdGVuZXJ8fGldOltpXTpyP2Z1bmN0aW9uKGUpe2Zvcih2YXIgdD1uZXcgQXJyYXkoZS5sZW5ndGgpLHI9MDtyPHQubGVuZ3RoOysrcil0W3JdPWVbcl0ubGlzdGVuZXJ8fGVbcl07cmV0dXJuIHR9KGkpOmIoaSxpLmxlbmd0aCl9ZnVuY3Rpb24gcChlKXt2YXIgdD10aGlzLl9ldmVudHM7aWYodm9pZCAwIT09dCl7dmFyIHI9dFtlXTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiByKXJldHVybiAxO2lmKHZvaWQgMCE9PXIpcmV0dXJuIHIubGVuZ3RofXJldHVybiAwfWZ1bmN0aW9uIGIoZSx0KXtmb3IodmFyIHI9bmV3IEFycmF5KHQpLG49MDtuPHQ7KytuKXJbbl09ZVtuXTtyZXR1cm4gcn1PYmplY3QuZGVmaW5lUHJvcGVydHkocyxcImRlZmF1bHRNYXhMaXN0ZW5lcnNcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZn0sc2V0OmZ1bmN0aW9uKGUpe2lmKFwibnVtYmVyXCIhPXR5cGVvZiBlfHxlPDB8fGEoZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiBcImRlZmF1bHRNYXhMaXN0ZW5lcnNcIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnK2UrXCIuXCIpO2Y9ZX19KSxzLmluaXQ9ZnVuY3Rpb24oKXt2b2lkIDAhPT10aGlzLl9ldmVudHMmJnRoaXMuX2V2ZW50cyE9PU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5fZXZlbnRzfHwodGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291bnQ9MCksdGhpcy5fbWF4TGlzdGVuZXJzPXRoaXMuX21heExpc3RlbmVyc3x8dm9pZCAwfSxzLnByb3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIGV8fGU8MHx8YShlKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIG9mIFwiblwiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuIFJlY2VpdmVkICcrZStcIi5cIik7cmV0dXJuIHRoaXMuX21heExpc3RlbmVycz1lLHRoaXN9LHMucHJvdG90eXBlLmdldE1heExpc3RlbmVycz1mdW5jdGlvbigpe3JldHVybiBjKHRoaXMpfSxzLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxyPTE7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl0LnB1c2goYXJndW1lbnRzW3JdKTt2YXIgbj1cImVycm9yXCI9PT1lLGk9dGhpcy5fZXZlbnRzO2lmKHZvaWQgMCE9PWkpbj1uJiZ2b2lkIDA9PT1pLmVycm9yO2Vsc2UgaWYoIW4pcmV0dXJuITE7aWYobil7dmFyIGE7aWYodC5sZW5ndGg+MCYmKGE9dFswXSksYSBpbnN0YW5jZW9mIEVycm9yKXRocm93IGE7dmFyIHM9bmV3IEVycm9yKFwiVW5oYW5kbGVkIGVycm9yLlwiKyhhP1wiIChcIithLm1lc3NhZ2UrXCIpXCI6XCJcIikpO3Rocm93IHMuY29udGV4dD1hLHN9dmFyIGY9aVtlXTtpZih2b2lkIDA9PT1mKXJldHVybiExO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGYpbyhmLHRoaXMsdCk7ZWxzZXt2YXIgYz1mLmxlbmd0aCx1PWIoZixjKTtmb3Iocj0wO3I8YzsrK3Ipbyh1W3JdLHRoaXMsdCl9cmV0dXJuITB9LHMucHJvdG90eXBlLmFkZExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHUodGhpcyxlLHQsITEpfSxzLnByb3RvdHlwZS5vbj1zLnByb3RvdHlwZS5hZGRMaXN0ZW5lcixzLnByb3RvdHlwZS5wcmVwZW5kTGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdSh0aGlzLGUsdCwhMCl9LHMucHJvdG90eXBlLm9uY2U9ZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImxpc3RlbmVyXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uLiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIHQpO3JldHVybiB0aGlzLm9uKGUsbCh0aGlzLGUsdCkpLHRoaXN9LHMucHJvdG90eXBlLnByZXBlbmRPbmNlTGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImxpc3RlbmVyXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uLiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIHQpO3JldHVybiB0aGlzLnByZXBlbmRMaXN0ZW5lcihlLGwodGhpcyxlLHQpKSx0aGlzfSxzLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3ZhciByLG4saSxvLGE7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJsaXN0ZW5lclwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiB0KTtpZih2b2lkIDA9PT0obj10aGlzLl9ldmVudHMpKXJldHVybiB0aGlzO2lmKHZvaWQgMD09PShyPW5bZV0pKXJldHVybiB0aGlzO2lmKHI9PT10fHxyLmxpc3RlbmVyPT09dCkwPT0tLXRoaXMuX2V2ZW50c0NvdW50P3RoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpOihkZWxldGUgbltlXSxuLnJlbW92ZUxpc3RlbmVyJiZ0aGlzLmVtaXQoXCJyZW1vdmVMaXN0ZW5lclwiLGUsci5saXN0ZW5lcnx8dCkpO2Vsc2UgaWYoXCJmdW5jdGlvblwiIT10eXBlb2Ygcil7Zm9yKGk9LTEsbz1yLmxlbmd0aC0xO28+PTA7by0tKWlmKHJbb109PT10fHxyW29dLmxpc3RlbmVyPT09dCl7YT1yW29dLmxpc3RlbmVyLGk9bzticmVha31pZihpPDApcmV0dXJuIHRoaXM7MD09PWk/ci5zaGlmdCgpOmZ1bmN0aW9uKGUsdCl7Zm9yKDt0KzE8ZS5sZW5ndGg7dCsrKWVbdF09ZVt0KzFdO2UucG9wKCl9KHIsaSksMT09PXIubGVuZ3RoJiYobltlXT1yWzBdKSx2b2lkIDAhPT1uLnJlbW92ZUxpc3RlbmVyJiZ0aGlzLmVtaXQoXCJyZW1vdmVMaXN0ZW5lclwiLGUsYXx8dCl9cmV0dXJuIHRoaXN9LHMucHJvdG90eXBlLm9mZj1zLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcixzLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7dmFyIHQscixuO2lmKHZvaWQgMD09PShyPXRoaXMuX2V2ZW50cykpcmV0dXJuIHRoaXM7aWYodm9pZCAwPT09ci5yZW1vdmVMaXN0ZW5lcilyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTApOnZvaWQgMCE9PXJbZV0mJigwPT0tLXRoaXMuX2V2ZW50c0NvdW50P3RoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpOmRlbGV0ZSByW2VdKSx0aGlzO2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXt2YXIgaSxvPU9iamVjdC5rZXlzKHIpO2ZvcihuPTA7bjxvLmxlbmd0aDsrK24pXCJyZW1vdmVMaXN0ZW5lclwiIT09KGk9b1tuXSkmJnRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKGkpO3JldHVybiB0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhcInJlbW92ZUxpc3RlbmVyXCIpLHRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTAsdGhpc31pZihcImZ1bmN0aW9uXCI9PXR5cGVvZih0PXJbZV0pKXRoaXMucmVtb3ZlTGlzdGVuZXIoZSx0KTtlbHNlIGlmKHZvaWQgMCE9PXQpZm9yKG49dC5sZW5ndGgtMTtuPj0wO24tLSl0aGlzLnJlbW92ZUxpc3RlbmVyKGUsdFtuXSk7cmV0dXJuIHRoaXN9LHMucHJvdG90eXBlLmxpc3RlbmVycz1mdW5jdGlvbihlKXtyZXR1cm4gZCh0aGlzLGUsITApfSxzLnByb3RvdHlwZS5yYXdMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7cmV0dXJuIGQodGhpcyxlLCExKX0scy5saXN0ZW5lckNvdW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZS5saXN0ZW5lckNvdW50P2UubGlzdGVuZXJDb3VudCh0KTpwLmNhbGwoZSx0KX0scy5wcm90b3R5cGUubGlzdGVuZXJDb3VudD1wLHMucHJvdG90eXBlLmV2ZW50TmFtZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZXZlbnRzQ291bnQ+MD9uKHRoaXMuX2V2ZW50cyk6W119fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7KGZ1bmN0aW9uKGUpe1xuLyohXG4gKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci5cbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8ZmVyb3NzQGZlcm9zcy5vcmc+IDxodHRwOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xudmFyIG49cigxMTApLGk9cigxMTEpLG89cigxMTIpO2Z1bmN0aW9uIGEoKXtyZXR1cm4gZi5UWVBFRF9BUlJBWV9TVVBQT1JUPzIxNDc0ODM2NDc6MTA3Mzc0MTgyM31mdW5jdGlvbiBzKGUsdCl7aWYoYSgpPHQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbnZhbGlkIHR5cGVkIGFycmF5IGxlbmd0aFwiKTtyZXR1cm4gZi5UWVBFRF9BUlJBWV9TVVBQT1JUPyhlPW5ldyBVaW50OEFycmF5KHQpKS5fX3Byb3RvX189Zi5wcm90b3R5cGU6KG51bGw9PT1lJiYoZT1uZXcgZih0KSksZS5sZW5ndGg9dCksZX1mdW5jdGlvbiBmKGUsdCxyKXtpZighKGYuVFlQRURfQVJSQVlfU1VQUE9SVHx8dGhpcyBpbnN0YW5jZW9mIGYpKXJldHVybiBuZXcgZihlLHQscik7aWYoXCJudW1iZXJcIj09dHlwZW9mIGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcihcIklmIGVuY29kaW5nIGlzIHNwZWNpZmllZCB0aGVuIHRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nXCIpO3JldHVybiBoKHRoaXMsZSl9cmV0dXJuIGModGhpcyxlLHQscil9ZnVuY3Rpb24gYyhlLHQscixuKXtpZihcIm51bWJlclwiPT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKTtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2YgQXJyYXlCdWZmZXImJnQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9mdW5jdGlvbihlLHQscixuKXtpZih0LmJ5dGVMZW5ndGgscjwwfHx0LmJ5dGVMZW5ndGg8cil0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIidvZmZzZXQnIGlzIG91dCBvZiBib3VuZHNcIik7aWYodC5ieXRlTGVuZ3RoPHIrKG58fDApKXRocm93IG5ldyBSYW5nZUVycm9yKFwiJ2xlbmd0aCcgaXMgb3V0IG9mIGJvdW5kc1wiKTt0PXZvaWQgMD09PXImJnZvaWQgMD09PW4/bmV3IFVpbnQ4QXJyYXkodCk6dm9pZCAwPT09bj9uZXcgVWludDhBcnJheSh0LHIpOm5ldyBVaW50OEFycmF5KHQscixuKTtmLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KGU9dCkuX19wcm90b19fPWYucHJvdG90eXBlOmU9bChlLHQpO3JldHVybiBlfShlLHQscixuKTpcInN0cmluZ1wiPT10eXBlb2YgdD9mdW5jdGlvbihlLHQscil7XCJzdHJpbmdcIj09dHlwZW9mIHImJlwiXCIhPT1yfHwocj1cInV0ZjhcIik7aWYoIWYuaXNFbmNvZGluZyhyKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdcImVuY29kaW5nXCIgbXVzdCBiZSBhIHZhbGlkIHN0cmluZyBlbmNvZGluZycpO3ZhciBuPTB8cCh0LHIpLGk9KGU9cyhlLG4pKS53cml0ZSh0LHIpO2khPT1uJiYoZT1lLnNsaWNlKDAsaSkpO3JldHVybiBlfShlLHQscik6ZnVuY3Rpb24oZSx0KXtpZihmLmlzQnVmZmVyKHQpKXt2YXIgcj0wfGQodC5sZW5ndGgpO3JldHVybiAwPT09KGU9cyhlLHIpKS5sZW5ndGg/ZToodC5jb3B5KGUsMCwwLHIpLGUpfWlmKHQpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmdC5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8XCJsZW5ndGhcImluIHQpcmV0dXJuXCJudW1iZXJcIiE9dHlwZW9mIHQubGVuZ3RofHwobj10Lmxlbmd0aCkhPW4/cyhlLDApOmwoZSx0KTtpZihcIkJ1ZmZlclwiPT09dC50eXBlJiZvKHQuZGF0YSkpcmV0dXJuIGwoZSx0LmRhdGEpfXZhciBuO3Rocm93IG5ldyBUeXBlRXJyb3IoXCJGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuXCIpfShlLHQpfWZ1bmN0aW9uIHUoZSl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignXCJzaXplXCIgYXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpO2lmKGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJzaXplXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgbmVnYXRpdmUnKX1mdW5jdGlvbiBoKGUsdCl7aWYodSh0KSxlPXMoZSx0PDA/MDowfGQodCkpLCFmLlRZUEVEX0FSUkFZX1NVUFBPUlQpZm9yKHZhciByPTA7cjx0OysrcillW3JdPTA7cmV0dXJuIGV9ZnVuY3Rpb24gbChlLHQpe3ZhciByPXQubGVuZ3RoPDA/MDowfGQodC5sZW5ndGgpO2U9cyhlLHIpO2Zvcih2YXIgbj0wO248cjtuKz0xKWVbbl09MjU1JnRbbl07cmV0dXJuIGV9ZnVuY3Rpb24gZChlKXtpZihlPj1hKCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4XCIrYSgpLnRvU3RyaW5nKDE2KStcIiBieXRlc1wiKTtyZXR1cm4gMHxlfWZ1bmN0aW9uIHAoZSx0KXtpZihmLmlzQnVmZmVyKGUpKXJldHVybiBlLmxlbmd0aDtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgQXJyYXlCdWZmZXImJlwiZnVuY3Rpb25cIj09dHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyYmKEFycmF5QnVmZmVyLmlzVmlldyhlKXx8ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSlyZXR1cm4gZS5ieXRlTGVuZ3RoO1wic3RyaW5nXCIhPXR5cGVvZiBlJiYoZT1cIlwiK2UpO3ZhciByPWUubGVuZ3RoO2lmKDA9PT1yKXJldHVybiAwO2Zvcih2YXIgbj0hMTs7KXN3aXRjaCh0KXtjYXNlXCJhc2NpaVwiOmNhc2VcImxhdGluMVwiOmNhc2VcImJpbmFyeVwiOnJldHVybiByO2Nhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOmNhc2Ugdm9pZCAwOnJldHVybiBGKGUpLmxlbmd0aDtjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpyZXR1cm4gMipyO2Nhc2VcImhleFwiOnJldHVybiByPj4+MTtjYXNlXCJiYXNlNjRcIjpyZXR1cm4geihlKS5sZW5ndGg7ZGVmYXVsdDppZihuKXJldHVybiBGKGUpLmxlbmd0aDt0PShcIlwiK3QpLnRvTG93ZXJDYXNlKCksbj0hMH19ZnVuY3Rpb24gYihlLHQscil7dmFyIG49ITE7aWYoKHZvaWQgMD09PXR8fHQ8MCkmJih0PTApLHQ+dGhpcy5sZW5ndGgpcmV0dXJuXCJcIjtpZigodm9pZCAwPT09cnx8cj50aGlzLmxlbmd0aCkmJihyPXRoaXMubGVuZ3RoKSxyPD0wKXJldHVyblwiXCI7aWYoKHI+Pj49MCk8PSh0Pj4+PTApKXJldHVyblwiXCI7Zm9yKGV8fChlPVwidXRmOFwiKTs7KXN3aXRjaChlKXtjYXNlXCJoZXhcIjpyZXR1cm4gUCh0aGlzLHQscik7Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6cmV0dXJuIHgodGhpcyx0LHIpO2Nhc2VcImFzY2lpXCI6cmV0dXJuIE0odGhpcyx0LHIpO2Nhc2VcImxhdGluMVwiOmNhc2VcImJpbmFyeVwiOnJldHVybiBUKHRoaXMsdCxyKTtjYXNlXCJiYXNlNjRcIjpyZXR1cm4gayh0aGlzLHQscik7Y2FzZVwidWNzMlwiOmNhc2VcInVjcy0yXCI6Y2FzZVwidXRmMTZsZVwiOmNhc2VcInV0Zi0xNmxlXCI6cmV0dXJuIEIodGhpcyx0LHIpO2RlZmF1bHQ6aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKFwiVW5rbm93biBlbmNvZGluZzogXCIrZSk7ZT0oZStcIlwiKS50b0xvd2VyQ2FzZSgpLG49ITB9fWZ1bmN0aW9uIHkoZSx0LHIpe3ZhciBuPWVbdF07ZVt0XT1lW3JdLGVbcl09bn1mdW5jdGlvbiBnKGUsdCxyLG4saSl7aWYoMD09PWUubGVuZ3RoKXJldHVybi0xO2lmKFwic3RyaW5nXCI9PXR5cGVvZiByPyhuPXIscj0wKTpyPjIxNDc0ODM2NDc/cj0yMTQ3NDgzNjQ3OnI8LTIxNDc0ODM2NDgmJihyPS0yMTQ3NDgzNjQ4KSxyPStyLGlzTmFOKHIpJiYocj1pPzA6ZS5sZW5ndGgtMSkscjwwJiYocj1lLmxlbmd0aCtyKSxyPj1lLmxlbmd0aCl7aWYoaSlyZXR1cm4tMTtyPWUubGVuZ3RoLTF9ZWxzZSBpZihyPDApe2lmKCFpKXJldHVybi0xO3I9MH1pZihcInN0cmluZ1wiPT10eXBlb2YgdCYmKHQ9Zi5mcm9tKHQsbikpLGYuaXNCdWZmZXIodCkpcmV0dXJuIDA9PT10Lmxlbmd0aD8tMTp2KGUsdCxyLG4saSk7aWYoXCJudW1iZXJcIj09dHlwZW9mIHQpcmV0dXJuIHQmPTI1NSxmLlRZUEVEX0FSUkFZX1NVUFBPUlQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/aT9VaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZSx0LHIpOlVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoZSx0LHIpOnYoZSxbdF0scixuLGkpO3Rocm93IG5ldyBUeXBlRXJyb3IoXCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXJcIil9ZnVuY3Rpb24gdihlLHQscixuLGkpe3ZhciBvLGE9MSxzPWUubGVuZ3RoLGY9dC5sZW5ndGg7aWYodm9pZCAwIT09biYmKFwidWNzMlwiPT09KG49U3RyaW5nKG4pLnRvTG93ZXJDYXNlKCkpfHxcInVjcy0yXCI9PT1ufHxcInV0ZjE2bGVcIj09PW58fFwidXRmLTE2bGVcIj09PW4pKXtpZihlLmxlbmd0aDwyfHx0Lmxlbmd0aDwyKXJldHVybi0xO2E9MixzLz0yLGYvPTIsci89Mn1mdW5jdGlvbiBjKGUsdCl7cmV0dXJuIDE9PT1hP2VbdF06ZS5yZWFkVUludDE2QkUodCphKX1pZihpKXt2YXIgdT0tMTtmb3Iobz1yO288cztvKyspaWYoYyhlLG8pPT09Yyh0LC0xPT09dT8wOm8tdSkpe2lmKC0xPT09dSYmKHU9byksby11KzE9PT1mKXJldHVybiB1KmF9ZWxzZS0xIT09dSYmKG8tPW8tdSksdT0tMX1lbHNlIGZvcihyK2Y+cyYmKHI9cy1mKSxvPXI7bz49MDtvLS0pe2Zvcih2YXIgaD0hMCxsPTA7bDxmO2wrKylpZihjKGUsbytsKSE9PWModCxsKSl7aD0hMTticmVha31pZihoKXJldHVybiBvfXJldHVybi0xfWZ1bmN0aW9uIG0oZSx0LHIsbil7cj1OdW1iZXIocil8fDA7dmFyIGk9ZS5sZW5ndGgtcjtuPyhuPU51bWJlcihuKSk+aSYmKG49aSk6bj1pO3ZhciBvPXQubGVuZ3RoO2lmKG8lMiE9MCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBoZXggc3RyaW5nXCIpO24+by8yJiYobj1vLzIpO2Zvcih2YXIgYT0wO2E8bjsrK2Epe3ZhciBzPXBhcnNlSW50KHQuc3Vic3RyKDIqYSwyKSwxNik7aWYoaXNOYU4ocykpcmV0dXJuIGE7ZVtyK2FdPXN9cmV0dXJuIGF9ZnVuY3Rpb24gXyhlLHQscixuKXtyZXR1cm4gSyhGKHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIHcoZSx0LHIsbil7cmV0dXJuIEsoZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLHI9MDtyPGUubGVuZ3RoOysrcil0LnB1c2goMjU1JmUuY2hhckNvZGVBdChyKSk7cmV0dXJuIHR9KHQpLGUscixuKX1mdW5jdGlvbiBFKGUsdCxyLG4pe3JldHVybiB3KGUsdCxyLG4pfWZ1bmN0aW9uIEEoZSx0LHIsbil7cmV0dXJuIEsoeih0KSxlLHIsbil9ZnVuY3Rpb24gUyhlLHQscixuKXtyZXR1cm4gSyhmdW5jdGlvbihlLHQpe2Zvcih2YXIgcixuLGksbz1bXSxhPTA7YTxlLmxlbmd0aCYmISgodC09Mik8MCk7KythKXI9ZS5jaGFyQ29kZUF0KGEpLG49cj4+OCxpPXIlMjU2LG8ucHVzaChpKSxvLnB1c2gobik7cmV0dXJuIG99KHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIGsoZSx0LHIpe3JldHVybiAwPT09dCYmcj09PWUubGVuZ3RoP24uZnJvbUJ5dGVBcnJheShlKTpuLmZyb21CeXRlQXJyYXkoZS5zbGljZSh0LHIpKX1mdW5jdGlvbiB4KGUsdCxyKXtyPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgbj1bXSxpPXQ7aTxyOyl7dmFyIG8sYSxzLGYsYz1lW2ldLHU9bnVsbCxoPWM+MjM5PzQ6Yz4yMjM/MzpjPjE5MT8yOjE7aWYoaStoPD1yKXN3aXRjaChoKXtjYXNlIDE6YzwxMjgmJih1PWMpO2JyZWFrO2Nhc2UgMjoxMjg9PSgxOTImKG89ZVtpKzFdKSkmJihmPSgzMSZjKTw8Nnw2MyZvKT4xMjcmJih1PWYpO2JyZWFrO2Nhc2UgMzpvPWVbaSsxXSxhPWVbaSsyXSwxMjg9PSgxOTImbykmJjEyOD09KDE5MiZhKSYmKGY9KDE1JmMpPDwxMnwoNjMmbyk8PDZ8NjMmYSk+MjA0NyYmKGY8NTUyOTZ8fGY+NTczNDMpJiYodT1mKTticmVhaztjYXNlIDQ6bz1lW2krMV0sYT1lW2krMl0scz1lW2krM10sMTI4PT0oMTkyJm8pJiYxMjg9PSgxOTImYSkmJjEyOD09KDE5MiZzKSYmKGY9KDE1JmMpPDwxOHwoNjMmbyk8PDEyfCg2MyZhKTw8Nnw2MyZzKT42NTUzNSYmZjwxMTE0MTEyJiYodT1mKX1udWxsPT09dT8odT02NTUzMyxoPTEpOnU+NjU1MzUmJih1LT02NTUzNixuLnB1c2godT4+PjEwJjEwMjN8NTUyOTYpLHU9NTYzMjB8MTAyMyZ1KSxuLnB1c2godSksaSs9aH1yZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7aWYodDw9SSlyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsZSk7dmFyIHI9XCJcIixuPTA7Zm9yKDtuPHQ7KXIrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGUuc2xpY2UobixuKz1JKSk7cmV0dXJuIHJ9KG4pfXQuQnVmZmVyPWYsdC5TbG93QnVmZmVyPWZ1bmN0aW9uKGUpeytlIT1lJiYoZT0wKTtyZXR1cm4gZi5hbGxvYygrZSl9LHQuSU5TUEVDVF9NQVhfQllURVM9NTAsZi5UWVBFRF9BUlJBWV9TVVBQT1JUPXZvaWQgMCE9PWUuVFlQRURfQVJSQVlfU1VQUE9SVD9lLlRZUEVEX0FSUkFZX1NVUFBPUlQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9bmV3IFVpbnQ4QXJyYXkoMSk7cmV0dXJuIGUuX19wcm90b19fPXtfX3Byb3RvX186VWludDhBcnJheS5wcm90b3R5cGUsZm9vOmZ1bmN0aW9uKCl7cmV0dXJuIDQyfX0sNDI9PT1lLmZvbygpJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLnN1YmFycmF5JiYwPT09ZS5zdWJhcnJheSgxLDEpLmJ5dGVMZW5ndGh9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLHQua01heExlbmd0aD1hKCksZi5wb29sU2l6ZT04MTkyLGYuX2F1Z21lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19fPWYucHJvdG90eXBlLGV9LGYuZnJvbT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGMobnVsbCxlLHQscil9LGYuVFlQRURfQVJSQVlfU1VQUE9SVCYmKGYucHJvdG90eXBlLl9fcHJvdG9fXz1VaW50OEFycmF5LnByb3RvdHlwZSxmLl9fcHJvdG9fXz1VaW50OEFycmF5LFwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5zcGVjaWVzJiZmW1N5bWJvbC5zcGVjaWVzXT09PWYmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShmLFN5bWJvbC5zcGVjaWVzLHt2YWx1ZTpudWxsLGNvbmZpZ3VyYWJsZTohMH0pKSxmLmFsbG9jPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIHUodCksdDw9MD9zKGUsdCk6dm9pZCAwIT09cj9cInN0cmluZ1wiPT10eXBlb2Ygbj9zKGUsdCkuZmlsbChyLG4pOnMoZSx0KS5maWxsKHIpOnMoZSx0KX0obnVsbCxlLHQscil9LGYuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGgobnVsbCxlKX0sZi5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oZSl7cmV0dXJuIGgobnVsbCxlKX0sZi5pc0J1ZmZlcj1mdW5jdGlvbihlKXtyZXR1cm4hKG51bGw9PWV8fCFlLl9pc0J1ZmZlcil9LGYuY29tcGFyZT1mdW5jdGlvbihlLHQpe2lmKCFmLmlzQnVmZmVyKGUpfHwhZi5pc0J1ZmZlcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnRzIG11c3QgYmUgQnVmZmVyc1wiKTtpZihlPT09dClyZXR1cm4gMDtmb3IodmFyIHI9ZS5sZW5ndGgsbj10Lmxlbmd0aCxpPTAsbz1NYXRoLm1pbihyLG4pO2k8bzsrK2kpaWYoZVtpXSE9PXRbaV0pe3I9ZVtpXSxuPXRbaV07YnJlYWt9cmV0dXJuIHI8bj8tMTpuPHI/MTowfSxmLmlzRW5jb2Rpbmc9ZnVuY3Rpb24oZSl7c3dpdGNoKFN0cmluZyhlKS50b0xvd2VyQ2FzZSgpKXtjYXNlXCJoZXhcIjpjYXNlXCJ1dGY4XCI6Y2FzZVwidXRmLThcIjpjYXNlXCJhc2NpaVwiOmNhc2VcImxhdGluMVwiOmNhc2VcImJpbmFyeVwiOmNhc2VcImJhc2U2NFwiOmNhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSxmLmNvbmNhdD1mdW5jdGlvbihlLHQpe2lmKCFvKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gZi5hbGxvYygwKTt2YXIgcjtpZih2b2lkIDA9PT10KWZvcih0PTAscj0wO3I8ZS5sZW5ndGg7KytyKXQrPWVbcl0ubGVuZ3RoO3ZhciBuPWYuYWxsb2NVbnNhZmUodCksaT0wO2ZvcihyPTA7cjxlLmxlbmd0aDsrK3Ipe3ZhciBhPWVbcl07aWYoIWYuaXNCdWZmZXIoYSkpdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7YS5jb3B5KG4saSksaSs9YS5sZW5ndGh9cmV0dXJuIG59LGYuYnl0ZUxlbmd0aD1wLGYucHJvdG90eXBlLl9pc0J1ZmZlcj0hMCxmLnByb3RvdHlwZS5zd2FwMTY9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlbmd0aDtpZihlJTIhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0c1wiKTtmb3IodmFyIHQ9MDt0PGU7dCs9Mil5KHRoaXMsdCx0KzEpO3JldHVybiB0aGlzfSxmLnByb3RvdHlwZS5zd2FwMzI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlbmd0aDtpZihlJTQhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0c1wiKTtmb3IodmFyIHQ9MDt0PGU7dCs9NCl5KHRoaXMsdCx0KzMpLHkodGhpcyx0KzEsdCsyKTtyZXR1cm4gdGhpc30sZi5wcm90b3R5cGUuc3dhcDY0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSU4IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKFwiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHNcIik7Zm9yKHZhciB0PTA7dDxlO3QrPTgpeSh0aGlzLHQsdCs3KSx5KHRoaXMsdCsxLHQrNikseSh0aGlzLHQrMix0KzUpLHkodGhpcyx0KzMsdCs0KTtyZXR1cm4gdGhpc30sZi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgZT0wfHRoaXMubGVuZ3RoO3JldHVybiAwPT09ZT9cIlwiOjA9PT1hcmd1bWVudHMubGVuZ3RoP3godGhpcywwLGUpOmIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxmLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24oZSl7aWYoIWYuaXNCdWZmZXIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXJcIik7cmV0dXJuIHRoaXM9PT1lfHwwPT09Zi5jb21wYXJlKHRoaXMsZSl9LGYucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXt2YXIgZT1cIlwiLHI9dC5JTlNQRUNUX01BWF9CWVRFUztyZXR1cm4gdGhpcy5sZW5ndGg+MCYmKGU9dGhpcy50b1N0cmluZyhcImhleFwiLDAscikubWF0Y2goLy57Mn0vZykuam9pbihcIiBcIiksdGhpcy5sZW5ndGg+ciYmKGUrPVwiIC4uLiBcIikpLFwiPEJ1ZmZlciBcIitlK1wiPlwifSxmLnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uKGUsdCxyLG4saSl7aWYoIWYuaXNCdWZmZXIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXJcIik7aWYodm9pZCAwPT09dCYmKHQ9MCksdm9pZCAwPT09ciYmKHI9ZT9lLmxlbmd0aDowKSx2b2lkIDA9PT1uJiYobj0wKSx2b2lkIDA9PT1pJiYoaT10aGlzLmxlbmd0aCksdDwwfHxyPmUubGVuZ3RofHxuPDB8fGk+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJvdXQgb2YgcmFuZ2UgaW5kZXhcIik7aWYobj49aSYmdD49cilyZXR1cm4gMDtpZihuPj1pKXJldHVybi0xO2lmKHQ+PXIpcmV0dXJuIDE7aWYodGhpcz09PWUpcmV0dXJuIDA7Zm9yKHZhciBvPShpPj4+PTApLShuPj4+PTApLGE9KHI+Pj49MCktKHQ+Pj49MCkscz1NYXRoLm1pbihvLGEpLGM9dGhpcy5zbGljZShuLGkpLHU9ZS5zbGljZSh0LHIpLGg9MDtoPHM7KytoKWlmKGNbaF0hPT11W2hdKXtvPWNbaF0sYT11W2hdO2JyZWFrfXJldHVybiBvPGE/LTE6YTxvPzE6MH0sZi5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24oZSx0LHIpe3JldHVybi0xIT09dGhpcy5pbmRleE9mKGUsdCxyKX0sZi5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbihlLHQscil7cmV0dXJuIGcodGhpcyxlLHQsciwhMCl9LGYucHJvdG90eXBlLmxhc3RJbmRleE9mPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZyh0aGlzLGUsdCxyLCExKX0sZi5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSx0LHIsbil7aWYodm9pZCAwPT09dCluPVwidXRmOFwiLHI9dGhpcy5sZW5ndGgsdD0wO2Vsc2UgaWYodm9pZCAwPT09ciYmXCJzdHJpbmdcIj09dHlwZW9mIHQpbj10LHI9dGhpcy5sZW5ndGgsdD0wO2Vsc2V7aWYoIWlzRmluaXRlKHQpKXRocm93IG5ldyBFcnJvcihcIkJ1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkXCIpO3R8PTAsaXNGaW5pdGUocik/KHJ8PTAsdm9pZCAwPT09biYmKG49XCJ1dGY4XCIpKToobj1yLHI9dm9pZCAwKX12YXIgaT10aGlzLmxlbmd0aC10O2lmKCh2b2lkIDA9PT1yfHxyPmkpJiYocj1pKSxlLmxlbmd0aD4wJiYocjwwfHx0PDApfHx0PnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKFwiQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHNcIik7bnx8KG49XCJ1dGY4XCIpO2Zvcih2YXIgbz0hMTs7KXN3aXRjaChuKXtjYXNlXCJoZXhcIjpyZXR1cm4gbSh0aGlzLGUsdCxyKTtjYXNlXCJ1dGY4XCI6Y2FzZVwidXRmLThcIjpyZXR1cm4gXyh0aGlzLGUsdCxyKTtjYXNlXCJhc2NpaVwiOnJldHVybiB3KHRoaXMsZSx0LHIpO2Nhc2VcImxhdGluMVwiOmNhc2VcImJpbmFyeVwiOnJldHVybiBFKHRoaXMsZSx0LHIpO2Nhc2VcImJhc2U2NFwiOnJldHVybiBBKHRoaXMsZSx0LHIpO2Nhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOnJldHVybiBTKHRoaXMsZSx0LHIpO2RlZmF1bHQ6aWYobyl0aHJvdyBuZXcgVHlwZUVycm9yKFwiVW5rbm93biBlbmNvZGluZzogXCIrbik7bj0oXCJcIituKS50b0xvd2VyQ2FzZSgpLG89ITB9fSxmLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTpcIkJ1ZmZlclwiLGRhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyfHx0aGlzLDApfX07dmFyIEk9NDA5NjtmdW5jdGlvbiBNKGUsdCxyKXt2YXIgbj1cIlwiO3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBpPXQ7aTxyOysraSluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDEyNyZlW2ldKTtyZXR1cm4gbn1mdW5jdGlvbiBUKGUsdCxyKXt2YXIgbj1cIlwiO3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBpPXQ7aTxyOysraSluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGVbaV0pO3JldHVybiBufWZ1bmN0aW9uIFAoZSx0LHIpe3ZhciBuPWUubGVuZ3RoOyghdHx8dDwwKSYmKHQ9MCksKCFyfHxyPDB8fHI+bikmJihyPW4pO2Zvcih2YXIgaT1cIlwiLG89dDtvPHI7KytvKWkrPVUoZVtvXSk7cmV0dXJuIGl9ZnVuY3Rpb24gQihlLHQscil7Zm9yKHZhciBuPWUuc2xpY2UodCxyKSxpPVwiXCIsbz0wO288bi5sZW5ndGg7bys9MilpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG5bb10rMjU2Km5bbysxXSk7cmV0dXJuIGl9ZnVuY3Rpb24gTChlLHQscil7aWYoZSUxIT0wfHxlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJvZmZzZXQgaXMgbm90IHVpbnRcIik7aWYoZSt0PnIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoXCIpfWZ1bmN0aW9uIFIoZSx0LHIsbixpLG8pe2lmKCFmLmlzQnVmZmVyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmZmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpO2lmKHQ+aXx8dDxvKXRocm93IG5ldyBSYW5nZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKHIrbj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkluZGV4IG91dCBvZiByYW5nZVwiKX1mdW5jdGlvbiBPKGUsdCxyLG4pe3Q8MCYmKHQ9NjU1MzUrdCsxKTtmb3IodmFyIGk9MCxvPU1hdGgubWluKGUubGVuZ3RoLXIsMik7aTxvOysraSllW3IraV09KHQmMjU1PDw4KihuP2k6MS1pKSk+Pj44KihuP2k6MS1pKX1mdW5jdGlvbiBDKGUsdCxyLG4pe3Q8MCYmKHQ9NDI5NDk2NzI5NSt0KzEpO2Zvcih2YXIgaT0wLG89TWF0aC5taW4oZS5sZW5ndGgtciw0KTtpPG87KytpKWVbcitpXT10Pj4+OCoobj9pOjMtaSkmMjU1fWZ1bmN0aW9uIE4oZSx0LHIsbixpLG8pe2lmKHIrbj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkluZGV4IG91dCBvZiByYW5nZVwiKTtpZihyPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbmRleCBvdXQgb2YgcmFuZ2VcIil9ZnVuY3Rpb24gaihlLHQscixuLG8pe3JldHVybiBvfHxOKGUsMCxyLDQpLGkud3JpdGUoZSx0LHIsbiwyMyw0KSxyKzR9ZnVuY3Rpb24gRChlLHQscixuLG8pe3JldHVybiBvfHxOKGUsMCxyLDgpLGkud3JpdGUoZSx0LHIsbiw1Miw4KSxyKzh9Zi5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oZSx0KXt2YXIgcixuPXRoaXMubGVuZ3RoO2lmKChlPX5+ZSk8MD8oZSs9bik8MCYmKGU9MCk6ZT5uJiYoZT1uKSwodD12b2lkIDA9PT10P246fn50KTwwPyh0Kz1uKTwwJiYodD0wKTp0Pm4mJih0PW4pLHQ8ZSYmKHQ9ZSksZi5UWVBFRF9BUlJBWV9TVVBQT1JUKShyPXRoaXMuc3ViYXJyYXkoZSx0KSkuX19wcm90b19fPWYucHJvdG90eXBlO2Vsc2V7dmFyIGk9dC1lO3I9bmV3IGYoaSx2b2lkIDApO2Zvcih2YXIgbz0wO288aTsrK28pcltvXT10aGlzW28rZV19cmV0dXJuIHJ9LGYucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxMKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXRoaXNbZV0saT0xLG89MDsrK288dCYmKGkqPTI1Nik7KW4rPXRoaXNbZStvXSppO3JldHVybiBufSxmLnByb3RvdHlwZS5yZWFkVUludEJFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8TChlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2UrLS10XSxpPTE7dD4wJiYoaSo9MjU2KTspbis9dGhpc1tlKy0tdF0qaTtyZXR1cm4gbn0sZi5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEwoZSwxLHRoaXMubGVuZ3RoKSx0aGlzW2VdfSxmLnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TChlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fSxmLnByb3RvdHlwZS5yZWFkVUludDE2QkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TChlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDh8dGhpc1tlKzFdfSxmLnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TChlLDQsdGhpcy5sZW5ndGgpLCh0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2KSsxNjc3NzIxNip0aGlzW2UrM119LGYucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxMKGUsNCx0aGlzLmxlbmd0aCksMTY3NzcyMTYqdGhpc1tlXSsodGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdKX0sZi5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8TChlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2VdLGk9MSxvPTA7KytvPHQmJihpKj0yNTYpOyluKz10aGlzW2Urb10qaTtyZXR1cm4gbj49KGkqPTEyOCkmJihuLT1NYXRoLnBvdygyLDgqdCkpLG59LGYucHJvdG90eXBlLnJlYWRJbnRCRT1mdW5jdGlvbihlLHQscil7ZXw9MCx0fD0wLHJ8fEwoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dCxpPTEsbz10aGlzW2UrLS1uXTtuPjAmJihpKj0yNTYpOylvKz10aGlzW2UrLS1uXSppO3JldHVybiBvPj0oaSo9MTI4KSYmKG8tPU1hdGgucG93KDIsOCp0KSksb30sZi5wcm90b3R5cGUucmVhZEludDg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TChlLDEsdGhpcy5sZW5ndGgpLDEyOCZ0aGlzW2VdPy0xKigyNTUtdGhpc1tlXSsxKTp0aGlzW2VdfSxmLnByb3RvdHlwZS5yZWFkSW50MTZMRT1mdW5jdGlvbihlLHQpe3R8fEwoZSwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW2VdfHRoaXNbZSsxXTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sZi5wcm90b3R5cGUucmVhZEludDE2QkU9ZnVuY3Rpb24oZSx0KXt0fHxMKGUsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1tlKzFdfHRoaXNbZV08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LGYucHJvdG90eXBlLnJlYWRJbnQzMkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEwoZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2fHRoaXNbZSszXTw8MjR9LGYucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEwoZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdPDwyNHx0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM119LGYucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEwoZSw0LHRoaXMubGVuZ3RoKSxpLnJlYWQodGhpcyxlLCEwLDIzLDQpfSxmLnByb3RvdHlwZS5yZWFkRmxvYXRCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxMKGUsNCx0aGlzLmxlbmd0aCksaS5yZWFkKHRoaXMsZSwhMSwyMyw0KX0sZi5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEwoZSw4LHRoaXMubGVuZ3RoKSxpLnJlYWQodGhpcyxlLCEwLDUyLDgpfSxmLnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TChlLDgsdGhpcy5sZW5ndGgpLGkucmVhZCh0aGlzLGUsITEsNTIsOCl9LGYucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKGUsdCxyLG4peyhlPStlLHR8PTAscnw9MCxuKXx8Uih0aGlzLGUsdCxyLE1hdGgucG93KDIsOCpyKS0xLDApO3ZhciBpPTEsbz0wO2Zvcih0aGlzW3RdPTI1NSZlOysrbzxyJiYoaSo9MjU2KTspdGhpc1t0K29dPWUvaSYyNTU7cmV0dXJuIHQrcn0sZi5wcm90b3R5cGUud3JpdGVVSW50QkU9ZnVuY3Rpb24oZSx0LHIsbil7KGU9K2UsdHw9MCxyfD0wLG4pfHxSKHRoaXMsZSx0LHIsTWF0aC5wb3coMiw4KnIpLTEsMCk7dmFyIGk9ci0xLG89MTtmb3IodGhpc1t0K2ldPTI1NSZlOy0taT49MCYmKG8qPTI1Nik7KXRoaXNbdCtpXT1lL28mMjU1O3JldHVybiB0K3J9LGYucHJvdG90eXBlLndyaXRlVUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8Uih0aGlzLGUsdCwxLDI1NSwwKSxmLlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLHRoaXNbdF09MjU1JmUsdCsxfSxmLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFIodGhpcyxlLHQsMiw2NTUzNSwwKSxmLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTpPKHRoaXMsZSx0LCEwKSx0KzJ9LGYucHJvdG90eXBlLndyaXRlVUludDE2QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8Uih0aGlzLGUsdCwyLDY1NTM1LDApLGYuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+OCx0aGlzW3QrMV09MjU1JmUpOk8odGhpcyxlLHQsITEpLHQrMn0sZi5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxSKHRoaXMsZSx0LDQsNDI5NDk2NzI5NSwwKSxmLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdCszXT1lPj4+MjQsdGhpc1t0KzJdPWU+Pj4xNix0aGlzW3QrMV09ZT4+PjgsdGhpc1t0XT0yNTUmZSk6Qyh0aGlzLGUsdCwhMCksdCs0fSxmLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFIodGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLGYuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpDKHRoaXMsZSx0LCExKSx0KzR9LGYucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24oZSx0LHIsbil7aWYoZT0rZSx0fD0wLCFuKXt2YXIgaT1NYXRoLnBvdygyLDgqci0xKTtSKHRoaXMsZSx0LHIsaS0xLC1pKX12YXIgbz0wLGE9MSxzPTA7Zm9yKHRoaXNbdF09MjU1JmU7KytvPHImJihhKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K28tMV0mJihzPTEpLHRoaXNbdCtvXT0oZS9hPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSxmLnByb3RvdHlwZS53cml0ZUludEJFPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKGU9K2UsdHw9MCwhbil7dmFyIGk9TWF0aC5wb3coMiw4KnItMSk7Uih0aGlzLGUsdCxyLGktMSwtaSl9dmFyIG89ci0xLGE9MSxzPTA7Zm9yKHRoaXNbdCtvXT0yNTUmZTstLW8+PTAmJihhKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K28rMV0mJihzPTEpLHRoaXNbdCtvXT0oZS9hPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSxmLnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8Uih0aGlzLGUsdCwxLDEyNywtMTI4KSxmLlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLGU8MCYmKGU9MjU1K2UrMSksdGhpc1t0XT0yNTUmZSx0KzF9LGYucHJvdG90eXBlLndyaXRlSW50MTZMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxSKHRoaXMsZSx0LDIsMzI3NjcsLTMyNzY4KSxmLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTpPKHRoaXMsZSx0LCEwKSx0KzJ9LGYucHJvdG90eXBlLndyaXRlSW50MTZCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxSKHRoaXMsZSx0LDIsMzI3NjcsLTMyNzY4KSxmLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjgsdGhpc1t0KzFdPTI1NSZlKTpPKHRoaXMsZSx0LCExKSx0KzJ9LGYucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxSKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksZi5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCx0aGlzW3QrMl09ZT4+PjE2LHRoaXNbdCszXT1lPj4+MjQpOkModGhpcyxlLHQsITApLHQrNH0sZi5wcm90b3R5cGUud3JpdGVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFIodGhpcyxlLHQsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSxlPDAmJihlPTQyOTQ5NjcyOTUrZSsxKSxmLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjI0LHRoaXNbdCsxXT1lPj4+MTYsdGhpc1t0KzJdPWU+Pj44LHRoaXNbdCszXT0yNTUmZSk6Qyh0aGlzLGUsdCwhMSksdCs0fSxmLnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBqKHRoaXMsZSx0LCEwLHIpfSxmLnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBqKHRoaXMsZSx0LCExLHIpfSxmLnByb3RvdHlwZS53cml0ZURvdWJsZUxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRCh0aGlzLGUsdCwhMCxyKX0sZi5wcm90b3R5cGUud3JpdGVEb3VibGVCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIEQodGhpcyxlLHQsITEscil9LGYucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oZSx0LHIsbil7aWYocnx8KHI9MCksbnx8MD09PW58fChuPXRoaXMubGVuZ3RoKSx0Pj1lLmxlbmd0aCYmKHQ9ZS5sZW5ndGgpLHR8fCh0PTApLG4+MCYmbjxyJiYobj1yKSxuPT09cilyZXR1cm4gMDtpZigwPT09ZS5sZW5ndGh8fDA9PT10aGlzLmxlbmd0aClyZXR1cm4gMDtpZih0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzXCIpO2lmKHI8MHx8cj49dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJzb3VyY2VTdGFydCBvdXQgb2YgYm91bmRzXCIpO2lmKG48MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcInNvdXJjZUVuZCBvdXQgb2YgYm91bmRzXCIpO24+dGhpcy5sZW5ndGgmJihuPXRoaXMubGVuZ3RoKSxlLmxlbmd0aC10PG4tciYmKG49ZS5sZW5ndGgtdCtyKTt2YXIgaSxvPW4tcjtpZih0aGlzPT09ZSYmcjx0JiZ0PG4pZm9yKGk9by0xO2k+PTA7LS1pKWVbaSt0XT10aGlzW2krcl07ZWxzZSBpZihvPDFlM3x8IWYuVFlQRURfQVJSQVlfU1VQUE9SVClmb3IoaT0wO2k8bzsrK2kpZVtpK3RdPXRoaXNbaStyXTtlbHNlIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKGUsdGhpcy5zdWJhcnJheShyLHIrbyksdCk7cmV0dXJuIG99LGYucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24oZSx0LHIsbil7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0PyhuPXQsdD0wLHI9dGhpcy5sZW5ndGgpOlwic3RyaW5nXCI9PXR5cGVvZiByJiYobj1yLHI9dGhpcy5sZW5ndGgpLDE9PT1lLmxlbmd0aCl7dmFyIGk9ZS5jaGFyQ29kZUF0KDApO2k8MjU2JiYoZT1pKX1pZih2b2lkIDAhPT1uJiZcInN0cmluZ1wiIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKFwiZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZ1wiKTtpZihcInN0cmluZ1wiPT10eXBlb2YgbiYmIWYuaXNFbmNvZGluZyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiVW5rbm93biBlbmNvZGluZzogXCIrbil9ZWxzZVwibnVtYmVyXCI9PXR5cGVvZiBlJiYoZSY9MjU1KTtpZih0PDB8fHRoaXMubGVuZ3RoPHR8fHRoaXMubGVuZ3RoPHIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJPdXQgb2YgcmFuZ2UgaW5kZXhcIik7aWYocjw9dClyZXR1cm4gdGhpczt2YXIgbztpZih0Pj4+PTAscj12b2lkIDA9PT1yP3RoaXMubGVuZ3RoOnI+Pj4wLGV8fChlPTApLFwibnVtYmVyXCI9PXR5cGVvZiBlKWZvcihvPXQ7bzxyOysrbyl0aGlzW29dPWU7ZWxzZXt2YXIgYT1mLmlzQnVmZmVyKGUpP2U6RihuZXcgZihlLG4pLnRvU3RyaW5nKCkpLHM9YS5sZW5ndGg7Zm9yKG89MDtvPHItdDsrK28pdGhpc1tvK3RdPWFbbyVzXX1yZXR1cm4gdGhpc307dmFyIHE9L1teK1xcLzAtOUEtWmEtei1fXS9nO2Z1bmN0aW9uIFUoZSl7cmV0dXJuIGU8MTY/XCIwXCIrZS50b1N0cmluZygxNik6ZS50b1N0cmluZygxNil9ZnVuY3Rpb24gRihlLHQpe3ZhciByO3Q9dHx8MS8wO2Zvcih2YXIgbj1lLmxlbmd0aCxpPW51bGwsbz1bXSxhPTA7YTxuOysrYSl7aWYoKHI9ZS5jaGFyQ29kZUF0KGEpKT41NTI5NSYmcjw1NzM0NCl7aWYoIWkpe2lmKHI+NTYzMTkpeyh0LT0zKT4tMSYmby5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1pZihhKzE9PT1uKXsodC09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aT1yO2NvbnRpbnVlfWlmKHI8NTYzMjApeyh0LT0zKT4tMSYmby5wdXNoKDIzOSwxOTEsMTg5KSxpPXI7Y29udGludWV9cj02NTUzNisoaS01NTI5Njw8MTB8ci01NjMyMCl9ZWxzZSBpJiYodC09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSk7aWYoaT1udWxsLHI8MTI4KXtpZigodC09MSk8MClicmVhaztvLnB1c2gocil9ZWxzZSBpZihyPDIwNDgpe2lmKCh0LT0yKTwwKWJyZWFrO28ucHVzaChyPj42fDE5Miw2MyZyfDEyOCl9ZWxzZSBpZihyPDY1NTM2KXtpZigodC09Myk8MClicmVhaztvLnB1c2gocj4+MTJ8MjI0LHI+PjYmNjN8MTI4LDYzJnJ8MTI4KX1lbHNle2lmKCEocjwxMTE0MTEyKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGNvZGUgcG9pbnRcIik7aWYoKHQtPTQpPDApYnJlYWs7by5wdXNoKHI+PjE4fDI0MCxyPj4xMiY2M3wxMjgscj4+NiY2M3wxMjgsNjMmcnwxMjgpfX1yZXR1cm4gb31mdW5jdGlvbiB6KGUpe3JldHVybiBuLnRvQnl0ZUFycmF5KGZ1bmN0aW9uKGUpe2lmKChlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0/ZS50cmltKCk6ZS5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLFwiXCIpfShlKS5yZXBsYWNlKHEsXCJcIikpLmxlbmd0aDwyKXJldHVyblwiXCI7Zm9yKDtlLmxlbmd0aCU0IT0wOyllKz1cIj1cIjtyZXR1cm4gZX0oZSkpfWZ1bmN0aW9uIEsoZSx0LHIsbil7Zm9yKHZhciBpPTA7aTxuJiYhKGkrcj49dC5sZW5ndGh8fGk+PWUubGVuZ3RoKTsrK2kpdFtpK3JdPWVbaV07cmV0dXJuIGl9fSkuY2FsbCh0aGlzLHIoNCkpfSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigxMSksaT1yKDApO2Z1bmN0aW9uIG8oZSx0KXtyZXR1cm4gNTUyOTY9PSg2NDUxMiZlLmNoYXJDb2RlQXQodCkpJiYoISh0PDB8fHQrMT49ZS5sZW5ndGgpJiY1NjMyMD09KDY0NTEyJmUuY2hhckNvZGVBdCh0KzEpKSl9ZnVuY3Rpb24gYShlKXtyZXR1cm4oZT4+PjI0fGU+Pj44JjY1MjgwfGU8PDgmMTY3MTE2ODB8KDI1NSZlKTw8MjQpPj4+MH1mdW5jdGlvbiBzKGUpe3JldHVybiAxPT09ZS5sZW5ndGg/XCIwXCIrZTplfWZ1bmN0aW9uIGYoZSl7cmV0dXJuIDc9PT1lLmxlbmd0aD9cIjBcIitlOjY9PT1lLmxlbmd0aD9cIjAwXCIrZTo1PT09ZS5sZW5ndGg/XCIwMDBcIitlOjQ9PT1lLmxlbmd0aD9cIjAwMDBcIitlOjM9PT1lLmxlbmd0aD9cIjAwMDAwXCIrZToyPT09ZS5sZW5ndGg/XCIwMDAwMDBcIitlOjE9PT1lLmxlbmd0aD9cIjAwMDAwMDBcIitlOmV9dC5pbmhlcml0cz1pLHQudG9BcnJheT1mdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGUuc2xpY2UoKTtpZighZSlyZXR1cm5bXTt2YXIgcj1bXTtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlpZih0KXtpZihcImhleFwiPT09dClmb3IoKGU9ZS5yZXBsYWNlKC9bXmEtejAtOV0rL2dpLFwiXCIpKS5sZW5ndGglMiE9MCYmKGU9XCIwXCIrZSksaT0wO2k8ZS5sZW5ndGg7aSs9MilyLnB1c2gocGFyc2VJbnQoZVtpXStlW2krMV0sMTYpKX1lbHNlIGZvcih2YXIgbj0wLGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIGE9ZS5jaGFyQ29kZUF0KGkpO2E8MTI4P3JbbisrXT1hOmE8MjA0OD8ocltuKytdPWE+PjZ8MTkyLHJbbisrXT02MyZhfDEyOCk6byhlLGkpPyhhPTY1NTM2KygoMTAyMyZhKTw8MTApKygxMDIzJmUuY2hhckNvZGVBdCgrK2kpKSxyW24rK109YT4+MTh8MjQwLHJbbisrXT1hPj4xMiY2M3wxMjgscltuKytdPWE+PjYmNjN8MTI4LHJbbisrXT02MyZhfDEyOCk6KHJbbisrXT1hPj4xMnwyMjQscltuKytdPWE+PjYmNjN8MTI4LHJbbisrXT02MyZhfDEyOCl9ZWxzZSBmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKXJbaV09MHxlW2ldO3JldHVybiByfSx0LnRvSGV4PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1cIlwiLHI9MDtyPGUubGVuZ3RoO3IrKyl0Kz1zKGVbcl0udG9TdHJpbmcoMTYpKTtyZXR1cm4gdH0sdC5odG9ubD1hLHQudG9IZXgzMj1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1cIlwiLG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIGk9ZVtuXTtcImxpdHRsZVwiPT09dCYmKGk9YShpKSkscis9ZihpLnRvU3RyaW5nKDE2KSl9cmV0dXJuIHJ9LHQuemVybzI9cyx0Lnplcm84PWYsdC5qb2luMzI9ZnVuY3Rpb24oZSx0LHIsaSl7dmFyIG89ci10O24obyU0PT0wKTtmb3IodmFyIGE9bmV3IEFycmF5KG8vNCkscz0wLGY9dDtzPGEubGVuZ3RoO3MrKyxmKz00KXt2YXIgYztjPVwiYmlnXCI9PT1pP2VbZl08PDI0fGVbZisxXTw8MTZ8ZVtmKzJdPDw4fGVbZiszXTplW2YrM108PDI0fGVbZisyXTw8MTZ8ZVtmKzFdPDw4fGVbZl0sYVtzXT1jPj4+MH1yZXR1cm4gYX0sdC5zcGxpdDMyPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPW5ldyBBcnJheSg0KmUubGVuZ3RoKSxuPTAsaT0wO248ZS5sZW5ndGg7bisrLGkrPTQpe3ZhciBvPWVbbl07XCJiaWdcIj09PXQ/KHJbaV09bz4+PjI0LHJbaSsxXT1vPj4+MTYmMjU1LHJbaSsyXT1vPj4+OCYyNTUscltpKzNdPTI1NSZvKToocltpKzNdPW8+Pj4yNCxyW2krMl09bz4+PjE2JjI1NSxyW2krMV09bz4+PjgmMjU1LHJbaV09MjU1Jm8pfXJldHVybiByfSx0LnJvdHIzMj1mdW5jdGlvbihlLHQpe3JldHVybiBlPj4+dHxlPDwzMi10fSx0LnJvdGwzMj1mdW5jdGlvbihlLHQpe3JldHVybiBlPDx0fGU+Pj4zMi10fSx0LnN1bTMyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdD4+PjB9LHQuc3VtMzJfMz1mdW5jdGlvbihlLHQscil7cmV0dXJuIGUrdCtyPj4+MH0sdC5zdW0zMl80PWZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiBlK3QrcituPj4+MH0sdC5zdW0zMl81PWZ1bmN0aW9uKGUsdCxyLG4saSl7cmV0dXJuIGUrdCtyK24raT4+PjB9LHQuc3VtNjQ9ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk9ZVt0XSxvPW4rZVt0KzFdPj4+MCxhPShvPG4/MTowKStyK2k7ZVt0XT1hPj4+MCxlW3QrMV09b30sdC5zdW02NF9oaT1mdW5jdGlvbihlLHQscixuKXtyZXR1cm4odCtuPj4+MDx0PzE6MCkrZStyPj4+MH0sdC5zdW02NF9sbz1mdW5jdGlvbihlLHQscixuKXtyZXR1cm4gdCtuPj4+MH0sdC5zdW02NF80X2hpPWZ1bmN0aW9uKGUsdCxyLG4saSxvLGEscyl7dmFyIGY9MCxjPXQ7cmV0dXJuIGYrPShjPWMrbj4+PjApPHQ/MTowLGYrPShjPWMrbz4+PjApPG8/MTowLGUrcitpK2ErKGYrPShjPWMrcz4+PjApPHM/MTowKT4+PjB9LHQuc3VtNjRfNF9sbz1mdW5jdGlvbihlLHQscixuLGksbyxhLHMpe3JldHVybiB0K24rbytzPj4+MH0sdC5zdW02NF81X2hpPWZ1bmN0aW9uKGUsdCxyLG4saSxvLGEscyxmLGMpe3ZhciB1PTAsaD10O3JldHVybiB1Kz0oaD1oK24+Pj4wKTx0PzE6MCx1Kz0oaD1oK28+Pj4wKTxvPzE6MCx1Kz0oaD1oK3M+Pj4wKTxzPzE6MCxlK3IraSthK2YrKHUrPShoPWgrYz4+PjApPGM/MTowKT4+PjB9LHQuc3VtNjRfNV9sbz1mdW5jdGlvbihlLHQscixuLGksbyxhLHMsZixjKXtyZXR1cm4gdCtuK28rcytjPj4+MH0sdC5yb3RyNjRfaGk9ZnVuY3Rpb24oZSx0LHIpe3JldHVybih0PDwzMi1yfGU+Pj5yKT4+PjB9LHQucm90cjY0X2xvPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4oZTw8MzItcnx0Pj4+cik+Pj4wfSx0LnNocjY0X2hpPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT4+PnJ9LHQuc2hyNjRfbG89ZnVuY3Rpb24oZSx0LHIpe3JldHVybihlPDwzMi1yfHQ+Pj5yKT4+PjB9fSxmdW5jdGlvbihlLHQpe3ZhciByLG4saT1lLmV4cG9ydHM9e307ZnVuY3Rpb24gbygpe3Rocm93IG5ldyBFcnJvcihcInNldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWRcIil9ZnVuY3Rpb24gYSgpe3Rocm93IG5ldyBFcnJvcihcImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZFwiKX1mdW5jdGlvbiBzKGUpe2lmKHI9PT1zZXRUaW1lb3V0KXJldHVybiBzZXRUaW1lb3V0KGUsMCk7aWYoKHI9PT1vfHwhcikmJnNldFRpbWVvdXQpcmV0dXJuIHI9c2V0VGltZW91dCxzZXRUaW1lb3V0KGUsMCk7dHJ5e3JldHVybiByKGUsMCl9Y2F0Y2godCl7dHJ5e3JldHVybiByLmNhbGwobnVsbCxlLDApfWNhdGNoKHQpe3JldHVybiByLmNhbGwodGhpcyxlLDApfX19IWZ1bmN0aW9uKCl7dHJ5e3I9XCJmdW5jdGlvblwiPT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0Om99Y2F0Y2goZSl7cj1vfXRyeXtuPVwiZnVuY3Rpb25cIj09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6YX1jYXRjaChlKXtuPWF9fSgpO3ZhciBmLGM9W10sdT0hMSxoPS0xO2Z1bmN0aW9uIGwoKXt1JiZmJiYodT0hMSxmLmxlbmd0aD9jPWYuY29uY2F0KGMpOmg9LTEsYy5sZW5ndGgmJmQoKSl9ZnVuY3Rpb24gZCgpe2lmKCF1KXt2YXIgZT1zKGwpO3U9ITA7Zm9yKHZhciB0PWMubGVuZ3RoO3Q7KXtmb3IoZj1jLGM9W107KytoPHQ7KWYmJmZbaF0ucnVuKCk7aD0tMSx0PWMubGVuZ3RofWY9bnVsbCx1PSExLGZ1bmN0aW9uKGUpe2lmKG49PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dChlKTtpZigobj09PWF8fCFuKSYmY2xlYXJUaW1lb3V0KXJldHVybiBuPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQoZSk7dHJ5e24oZSl9Y2F0Y2godCl7dHJ5e3JldHVybiBuLmNhbGwobnVsbCxlKX1jYXRjaCh0KXtyZXR1cm4gbi5jYWxsKHRoaXMsZSl9fX0oZSl9fWZ1bmN0aW9uIHAoZSx0KXt0aGlzLmZ1bj1lLHRoaXMuYXJyYXk9dH1mdW5jdGlvbiBiKCl7fWkubmV4dFRpY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgcj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspdFtyLTFdPWFyZ3VtZW50c1tyXTtjLnB1c2gobmV3IHAoZSx0KSksMSE9PWMubGVuZ3RofHx1fHxzKGQpfSxwLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfSxpLnRpdGxlPVwiYnJvd3NlclwiLGkuYnJvd3Nlcj0hMCxpLmVudj17fSxpLmFyZ3Y9W10saS52ZXJzaW9uPVwiXCIsaS52ZXJzaW9ucz17fSxpLm9uPWIsaS5hZGRMaXN0ZW5lcj1iLGkub25jZT1iLGkub2ZmPWIsaS5yZW1vdmVMaXN0ZW5lcj1iLGkucmVtb3ZlQWxsTGlzdGVuZXJzPWIsaS5lbWl0PWIsaS5wcmVwZW5kTGlzdGVuZXI9YixpLnByZXBlbmRPbmNlTGlzdGVuZXI9YixpLmxpc3RlbmVycz1mdW5jdGlvbihlKXtyZXR1cm5bXX0saS5iaW5kaW5nPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihcInByb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkXCIpfSxpLmN3ZD1mdW5jdGlvbigpe3JldHVyblwiL1wifSxpLmNoZGlyPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihcInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZFwiKX0saS51bWFzaz1mdW5jdGlvbigpe3JldHVybiAwfX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMjUpLGk9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKGUpe3ZhciB0PVtdO2Zvcih2YXIgciBpbiBlKXQucHVzaChyKTtyZXR1cm4gdH07ZS5leHBvcnRzPWg7dmFyIG89cigxNik7by5pbmhlcml0cz1yKDApO3ZhciBhPXIoNTMpLHM9cigzNCk7by5pbmhlcml0cyhoLGEpO2Zvcih2YXIgZj1pKHMucHJvdG90eXBlKSxjPTA7YzxmLmxlbmd0aDtjKyspe3ZhciB1PWZbY107aC5wcm90b3R5cGVbdV18fChoLnByb3RvdHlwZVt1XT1zLnByb3RvdHlwZVt1XSl9ZnVuY3Rpb24gaChlKXtpZighKHRoaXMgaW5zdGFuY2VvZiBoKSlyZXR1cm4gbmV3IGgoZSk7YS5jYWxsKHRoaXMsZSkscy5jYWxsKHRoaXMsZSksZSYmITE9PT1lLnJlYWRhYmxlJiYodGhpcy5yZWFkYWJsZT0hMSksZSYmITE9PT1lLndyaXRhYmxlJiYodGhpcy53cml0YWJsZT0hMSksdGhpcy5hbGxvd0hhbGZPcGVuPSEwLGUmJiExPT09ZS5hbGxvd0hhbGZPcGVuJiYodGhpcy5hbGxvd0hhbGZPcGVuPSExKSx0aGlzLm9uY2UoXCJlbmRcIixsKX1mdW5jdGlvbiBsKCl7dGhpcy5hbGxvd0hhbGZPcGVufHx0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkfHxuLm5leHRUaWNrKGQsdGhpcyl9ZnVuY3Rpb24gZChlKXtlLmVuZCgpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLnByb3RvdHlwZSxcIndyaXRhYmxlSGlnaFdhdGVyTWFya1wiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGgucHJvdG90eXBlLFwiZGVzdHJveWVkXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkKX0sc2V0OmZ1bmN0aW9uKGUpe3ZvaWQgMCE9PXRoaXMuX3JlYWRhYmxlU3RhdGUmJnZvaWQgMCE9PXRoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD1lLHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPWUpfX0pLGgucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKGUsdCl7dGhpcy5wdXNoKG51bGwpLHRoaXMuZW5kKCksbi5uZXh0VGljayh0LGUpfX0sZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiByKGUsdCl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKHR8fFwiQXNzZXJ0aW9uIGZhaWxlZFwiKX1lLmV4cG9ydHM9cixyLmVxdWFsPWZ1bmN0aW9uKGUsdCxyKXtpZihlIT10KXRocm93IG5ldyBFcnJvcihyfHxcIkFzc2VydGlvbiBmYWlsZWQ6IFwiK2UrXCIgIT0gXCIrdCl9fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5pc0FzeW5jPXZvaWQgMDt2YXIgbixpPXIoMTg5KSxvPShuPWkpJiZuLl9fZXNNb2R1bGU/bjp7ZGVmYXVsdDpufTt2YXIgYT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2w7ZnVuY3Rpb24gcyhlKXtyZXR1cm4gYSYmXCJBc3luY0Z1bmN0aW9uXCI9PT1lW1N5bWJvbC50b1N0cmluZ1RhZ119dC5kZWZhdWx0PWZ1bmN0aW9uKGUpe3JldHVybiBzKGUpPygwLG8uZGVmYXVsdCkoZSk6ZX0sdC5pc0FzeW5jPXN9LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDE5KTtmdW5jdGlvbiBpKCl7fWUuZXhwb3J0cz1pLGkucHJvdG90eXBlLnNldEVuZ2luZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3QuZW5naW5lfHwodC5lbmdpbmU9ZSxlLm9uKFwiYmxvY2tcIiwoZnVuY3Rpb24oZSl7dC5jdXJyZW50QmxvY2s9ZX0pKSxlLm9uKFwic3RhcnRcIiwoZnVuY3Rpb24oKXt0LnN0YXJ0KCl9KSksZS5vbihcInN0b3BcIiwoZnVuY3Rpb24oKXt0LnN0b3AoKX0pKSl9LGkucHJvdG90eXBlLmhhbmRsZVJlcXVlc3Q9ZnVuY3Rpb24oZSx0LHIpe3Rocm93IG5ldyBFcnJvcihcIlN1YnByb3ZpZGVycyBzaG91bGQgb3ZlcnJpZGUgYGhhbmRsZVJlcXVlc3RgLlwiKX0saS5wcm90b3R5cGUuZW1pdFBheWxvYWQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmVuZ2luZS5zZW5kQXN5bmMobihlKSx0KX0saS5wcm90b3R5cGUuc3RvcD1mdW5jdGlvbigpe30saS5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oKXt9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxKS5CdWZmZXI7ZnVuY3Rpb24gaShlLHQpe3RoaXMuX2Jsb2NrPW4uYWxsb2MoZSksdGhpcy5fZmluYWxTaXplPXQsdGhpcy5fYmxvY2tTaXplPWUsdGhpcy5fbGVuPTB9aS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsdCl7XCJzdHJpbmdcIj09dHlwZW9mIGUmJih0PXR8fFwidXRmOFwiLGU9bi5mcm9tKGUsdCkpO2Zvcih2YXIgcj10aGlzLl9ibG9jayxpPXRoaXMuX2Jsb2NrU2l6ZSxvPWUubGVuZ3RoLGE9dGhpcy5fbGVuLHM9MDtzPG87KXtmb3IodmFyIGY9YSVpLGM9TWF0aC5taW4oby1zLGktZiksdT0wO3U8Yzt1KyspcltmK3VdPWVbcyt1XTtzKz1jLChhKz1jKSVpPT0wJiZ0aGlzLl91cGRhdGUocil9cmV0dXJuIHRoaXMuX2xlbis9byx0aGlzfSxpLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fbGVuJXRoaXMuX2Jsb2NrU2l6ZTt0aGlzLl9ibG9ja1t0XT0xMjgsdGhpcy5fYmxvY2suZmlsbCgwLHQrMSksdD49dGhpcy5fZmluYWxTaXplJiYodGhpcy5fdXBkYXRlKHRoaXMuX2Jsb2NrKSx0aGlzLl9ibG9jay5maWxsKDApKTt2YXIgcj04KnRoaXMuX2xlbjtpZihyPD00Mjk0OTY3Mjk1KXRoaXMuX2Jsb2NrLndyaXRlVUludDMyQkUocix0aGlzLl9ibG9ja1NpemUtNCk7ZWxzZXt2YXIgbj0oNDI5NDk2NzI5NSZyKT4+PjAsaT0oci1uKS80Mjk0OTY3Mjk2O3RoaXMuX2Jsb2NrLndyaXRlVUludDMyQkUoaSx0aGlzLl9ibG9ja1NpemUtOCksdGhpcy5fYmxvY2sud3JpdGVVSW50MzJCRShuLHRoaXMuX2Jsb2NrU2l6ZS00KX10aGlzLl91cGRhdGUodGhpcy5fYmxvY2spO3ZhciBvPXRoaXMuX2hhc2goKTtyZXR1cm4gZT9vLnRvU3RyaW5nKGUpOm99LGkucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJfdXBkYXRlIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3NcIil9LGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0saT1yKDUyKSxvPXIoNTcpLGE9cig2OCkscz1yKDY5KSxmPXIoMyksYz1yKDM2KSx1PXIoMSkuQnVmZmVyO09iamVjdC5hc3NpZ24odCxyKDcwKSksdC5NQVhfSU5URUdFUj1uZXcgZihcImZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZcIiwxNiksdC5UV09fUE9XMjU2PW5ldyBmKFwiMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIiwxNiksdC5LRUNDQUsyNTZfTlVMTF9TPVwiYzVkMjQ2MDE4NmY3MjMzYzkyN2U3ZGIyZGNjNzAzYzBlNTAwYjY1M2NhODIyNzNiN2JmYWQ4MDQ1ZDg1YTQ3MFwiLHQuU0hBM19OVUxMX1M9dC5LRUNDQUsyNTZfTlVMTF9TLHQuS0VDQ0FLMjU2X05VTEw9dS5mcm9tKHQuS0VDQ0FLMjU2X05VTExfUyxcImhleFwiKSx0LlNIQTNfTlVMTD10LktFQ0NBSzI1Nl9OVUxMLHQuS0VDQ0FLMjU2X1JMUF9BUlJBWV9TPVwiMWRjYzRkZThkZWM3NWQ3YWFiODViNTY3YjZjY2Q0MWFkMzEyNDUxYjk0OGE3NDEzZjBhMTQyZmQ0MGQ0OTM0N1wiLHQuU0hBM19STFBfQVJSQVlfUz10LktFQ0NBSzI1Nl9STFBfQVJSQVlfUyx0LktFQ0NBSzI1Nl9STFBfQVJSQVk9dS5mcm9tKHQuS0VDQ0FLMjU2X1JMUF9BUlJBWV9TLFwiaGV4XCIpLHQuU0hBM19STFBfQVJSQVk9dC5LRUNDQUsyNTZfUkxQX0FSUkFZLHQuS0VDQ0FLMjU2X1JMUF9TPVwiNTZlODFmMTcxYmNjNTVhNmZmODM0NWU2OTJjMGY4NmU1YjQ4ZTAxYjk5NmNhZGMwMDE2MjJmYjVlMzYzYjQyMVwiLHQuU0hBM19STFBfUz10LktFQ0NBSzI1Nl9STFBfUyx0LktFQ0NBSzI1Nl9STFA9dS5mcm9tKHQuS0VDQ0FLMjU2X1JMUF9TLFwiaGV4XCIpLHQuU0hBM19STFA9dC5LRUNDQUsyNTZfUkxQLHQuQk49Zix0LnJscD1zLHQuc2VjcDI1NmsxPW8sdC56ZXJvcz1mdW5jdGlvbihlKXtyZXR1cm4gdS5hbGxvY1Vuc2FmZShlKS5maWxsKDApfSx0Lnplcm9BZGRyZXNzPWZ1bmN0aW9uKCl7dmFyIGU9dC56ZXJvcygyMCk7cmV0dXJuIHQuYnVmZmVyVG9IZXgoZSl9LHQuc2V0TGVuZ3RoTGVmdD10LnNldExlbmd0aD1mdW5jdGlvbihlLHIsbil7dmFyIGk9dC56ZXJvcyhyKTtyZXR1cm4gZT10LnRvQnVmZmVyKGUpLG4/ZS5sZW5ndGg8cj8oZS5jb3B5KGkpLGkpOmUuc2xpY2UoMCxyKTplLmxlbmd0aDxyPyhlLmNvcHkoaSxyLWUubGVuZ3RoKSxpKTplLnNsaWNlKC1yKX0sdC5zZXRMZW5ndGhSaWdodD1mdW5jdGlvbihlLHIpe3JldHVybiB0LnNldExlbmd0aChlLHIsITApfSx0LnVucGFkPXQuc3RyaXBaZXJvcz1mdW5jdGlvbihlKXtmb3IodmFyIHI9KGU9dC5zdHJpcEhleFByZWZpeChlKSlbMF07ZS5sZW5ndGg+MCYmXCIwXCI9PT1yLnRvU3RyaW5nKCk7KXI9KGU9ZS5zbGljZSgxKSlbMF07cmV0dXJuIGV9LHQudG9CdWZmZXI9ZnVuY3Rpb24oZSl7aWYoIXUuaXNCdWZmZXIoZSkpaWYoQXJyYXkuaXNBcnJheShlKSllPXUuZnJvbShlKTtlbHNlIGlmKFwic3RyaW5nXCI9PXR5cGVvZiBlKWU9dC5pc0hleFN0cmluZyhlKT91LmZyb20odC5wYWRUb0V2ZW4odC5zdHJpcEhleFByZWZpeChlKSksXCJoZXhcIik6dS5mcm9tKGUpO2Vsc2UgaWYoXCJudW1iZXJcIj09dHlwZW9mIGUpZT10LmludFRvQnVmZmVyKGUpO2Vsc2UgaWYobnVsbD09ZSllPXUuYWxsb2NVbnNhZmUoMCk7ZWxzZSBpZihmLmlzQk4oZSkpZT1lLnRvQXJyYXlMaWtlKHUpO2Vsc2V7aWYoIWUudG9BcnJheSl0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHR5cGVcIik7ZT11LmZyb20oZS50b0FycmF5KCkpfXJldHVybiBlfSx0LmJ1ZmZlclRvSW50PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgZih0LnRvQnVmZmVyKGUpKS50b051bWJlcigpfSx0LmJ1ZmZlclRvSGV4PWZ1bmN0aW9uKGUpe3JldHVyblwiMHhcIisoZT10LnRvQnVmZmVyKGUpKS50b1N0cmluZyhcImhleFwiKX0sdC5mcm9tU2lnbmVkPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgZihlKS5mcm9tVHdvcygyNTYpfSx0LnRvVW5zaWduZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHUuZnJvbShlLnRvVHdvcygyNTYpLnRvQXJyYXkoKSl9LHQua2VjY2FrPWZ1bmN0aW9uKGUscil7cmV0dXJuIGU9dC50b0J1ZmZlcihlKSxyfHwocj0yNTYpLGkoXCJrZWNjYWtcIityKS51cGRhdGUoZSkuZGlnZXN0KCl9LHQua2VjY2FrMjU2PWZ1bmN0aW9uKGUpe3JldHVybiB0LmtlY2NhayhlKX0sdC5zaGEzPXQua2VjY2FrLHQuc2hhMjU2PWZ1bmN0aW9uKGUpe3JldHVybiBlPXQudG9CdWZmZXIoZSksYyhcInNoYTI1NlwiKS51cGRhdGUoZSkuZGlnZXN0KCl9LHQucmlwZW1kMTYwPWZ1bmN0aW9uKGUscil7ZT10LnRvQnVmZmVyKGUpO3ZhciBuPWMoXCJybWQxNjBcIikudXBkYXRlKGUpLmRpZ2VzdCgpO3JldHVybiEwPT09cj90LnNldExlbmd0aChuLDMyKTpufSx0LnJscGhhc2g9ZnVuY3Rpb24oZSl7cmV0dXJuIHQua2VjY2FrKHMuZW5jb2RlKGUpKX0sdC5pc1ZhbGlkUHJpdmF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gby5wcml2YXRlS2V5VmVyaWZ5KGUpfSx0LmlzVmFsaWRQdWJsaWM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gNjQ9PT1lLmxlbmd0aD9vLnB1YmxpY0tleVZlcmlmeSh1LmNvbmNhdChbdS5mcm9tKFs0XSksZV0pKTohIXQmJm8ucHVibGljS2V5VmVyaWZ5KGUpfSx0LnB1YlRvQWRkcmVzcz10LnB1YmxpY1RvQWRkcmVzcz1mdW5jdGlvbihlLHIpe3JldHVybiBlPXQudG9CdWZmZXIoZSksciYmNjQhPT1lLmxlbmd0aCYmKGU9by5wdWJsaWNLZXlDb252ZXJ0KGUsITEpLnNsaWNlKDEpKSxhKDY0PT09ZS5sZW5ndGgpLHQua2VjY2FrKGUpLnNsaWNlKC0yMCl9O3ZhciBoPXQucHJpdmF0ZVRvUHVibGljPWZ1bmN0aW9uKGUpe3JldHVybiBlPXQudG9CdWZmZXIoZSksby5wdWJsaWNLZXlDcmVhdGUoZSwhMSkuc2xpY2UoMSl9O3QuaW1wb3J0UHVibGljPWZ1bmN0aW9uKGUpe3JldHVybiA2NCE9PShlPXQudG9CdWZmZXIoZSkpLmxlbmd0aCYmKGU9by5wdWJsaWNLZXlDb252ZXJ0KGUsITEpLnNsaWNlKDEpKSxlfSx0LmVjc2lnbj1mdW5jdGlvbihlLHQpe3ZhciByPW8uc2lnbihlLHQpLG49e307cmV0dXJuIG4ucj1yLnNpZ25hdHVyZS5zbGljZSgwLDMyKSxuLnM9ci5zaWduYXR1cmUuc2xpY2UoMzIsNjQpLG4udj1yLnJlY292ZXJ5KzI3LG59LHQuaGFzaFBlcnNvbmFsTWVzc2FnZT1mdW5jdGlvbihlKXt2YXIgcj10LnRvQnVmZmVyKFwiXHUwMDE5RXRoZXJldW0gU2lnbmVkIE1lc3NhZ2U6XFxuXCIrZS5sZW5ndGgudG9TdHJpbmcoKSk7cmV0dXJuIHQua2VjY2FrKHUuY29uY2F0KFtyLGVdKSl9LHQuZWNyZWNvdmVyPWZ1bmN0aW9uKGUscixuLGkpe3ZhciBhPXUuY29uY2F0KFt0LnNldExlbmd0aChuLDMyKSx0LnNldExlbmd0aChpLDMyKV0sNjQpLHM9ci0yNztpZigwIT09cyYmMSE9PXMpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzaWduYXR1cmUgdiB2YWx1ZVwiKTt2YXIgZj1vLnJlY292ZXIoZSxhLHMpO3JldHVybiBvLnB1YmxpY0tleUNvbnZlcnQoZiwhMSkuc2xpY2UoMSl9LHQudG9ScGNTaWc9ZnVuY3Rpb24oZSxyLG4pe2lmKDI3IT09ZSYmMjghPT1lKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmVjb3ZlcnkgaWRcIik7cmV0dXJuIHQuYnVmZmVyVG9IZXgodS5jb25jYXQoW3Quc2V0TGVuZ3RoTGVmdChyLDMyKSx0LnNldExlbmd0aExlZnQobiwzMiksdC50b0J1ZmZlcihlLTI3KV0pKX0sdC5mcm9tUnBjU2lnPWZ1bmN0aW9uKGUpe2lmKDY1IT09KGU9dC50b0J1ZmZlcihlKSkubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc2lnbmF0dXJlIGxlbmd0aFwiKTt2YXIgcj1lWzY0XTtyZXR1cm4gcjwyNyYmKHIrPTI3KSx7djpyLHI6ZS5zbGljZSgwLDMyKSxzOmUuc2xpY2UoMzIsNjQpfX0sdC5wcml2YXRlVG9BZGRyZXNzPWZ1bmN0aW9uKGUpe3JldHVybiB0LnB1YmxpY1RvQWRkcmVzcyhoKGUpKX0sdC5pc1ZhbGlkQWRkcmVzcz1mdW5jdGlvbihlKXtyZXR1cm4vXjB4WzAtOWEtZkEtRl17NDB9JC8udGVzdChlKX0sdC5pc1plcm9BZGRyZXNzPWZ1bmN0aW9uKGUpe3JldHVybiB0Lnplcm9BZGRyZXNzKCk9PT10LmFkZEhleFByZWZpeChlKX0sdC50b0NoZWNrc3VtQWRkcmVzcz1mdW5jdGlvbihlKXtlPXQuc3RyaXBIZXhQcmVmaXgoZSkudG9Mb3dlckNhc2UoKTtmb3IodmFyIHI9dC5rZWNjYWsoZSkudG9TdHJpbmcoXCJoZXhcIiksbj1cIjB4XCIsaT0wO2k8ZS5sZW5ndGg7aSsrKXBhcnNlSW50KHJbaV0sMTYpPj04P24rPWVbaV0udG9VcHBlckNhc2UoKTpuKz1lW2ldO3JldHVybiBufSx0LmlzVmFsaWRDaGVja3N1bUFkZHJlc3M9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuaXNWYWxpZEFkZHJlc3MoZSkmJnQudG9DaGVja3N1bUFkZHJlc3MoZSk9PT1lfSx0LmdlbmVyYXRlQWRkcmVzcz1mdW5jdGlvbihlLHIpe3JldHVybiBlPXQudG9CdWZmZXIoZSkscj0ocj1uZXcgZihyKSkuaXNaZXJvKCk/bnVsbDp1LmZyb20oci50b0FycmF5KCkpLHQucmxwaGFzaChbZSxyXSkuc2xpY2UoLTIwKX0sdC5pc1ByZWNvbXBpbGVkPWZ1bmN0aW9uKGUpe3ZhciByPXQudW5wYWQoZSk7cmV0dXJuIDE9PT1yLmxlbmd0aCYmclswXT49MSYmclswXTw9OH0sdC5hZGRIZXhQcmVmaXg9ZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIGU/ZTp0LmlzSGV4UHJlZml4ZWQoZSk/ZTpcIjB4XCIrZX0sdC5pc1ZhbGlkU2lnbmF0dXJlPWZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBpPW5ldyBmKFwiN2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY1ZDU3NmU3MzU3YTQ1MDFkZGZlOTJmNDY2ODFiMjBhMFwiLDE2KSxvPW5ldyBmKFwiZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmViYWFlZGNlNmFmNDhhMDNiYmZkMjVlOGNkMDM2NDE0MVwiLDE2KTtyZXR1cm4gMzI9PT10Lmxlbmd0aCYmMzI9PT1yLmxlbmd0aCYmKCgyNz09PWV8fDI4PT09ZSkmJih0PW5ldyBmKHQpLHI9bmV3IGYociksISh0LmlzWmVybygpfHx0Lmd0KG8pfHxyLmlzWmVybygpfHxyLmd0KG8pKSYmKCExIT09bnx8MSE9PW5ldyBmKHIpLmNtcChpKSkpKX0sdC5iYVRvSlNPTj1mdW5jdGlvbihlKXtpZih1LmlzQnVmZmVyKGUpKXJldHVyblwiMHhcIitlLnRvU3RyaW5nKFwiaGV4XCIpO2lmKGUgaW5zdGFuY2VvZiBBcnJheSl7Zm9yKHZhciByPVtdLG49MDtuPGUubGVuZ3RoO24rKylyLnB1c2godC5iYVRvSlNPTihlW25dKSk7cmV0dXJuIHJ9fSx0LmRlZmluZVByb3BlcnRpZXM9ZnVuY3Rpb24oZSxyLGkpe2lmKGUucmF3PVtdLGUuX2ZpZWxkcz1bXSxlLnRvSlNPTj1mdW5jdGlvbihyKXtpZihyKXt2YXIgbj17fTtyZXR1cm4gZS5fZmllbGRzLmZvckVhY2goKGZ1bmN0aW9uKHQpe25bdF09XCIweFwiK2VbdF0udG9TdHJpbmcoXCJoZXhcIil9KSksbn1yZXR1cm4gdC5iYVRvSlNPTih0aGlzLnJhdyl9LGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHMuZW5jb2RlKGUucmF3KX0sci5mb3JFYWNoKChmdW5jdGlvbihyLG4pe2Z1bmN0aW9uIGkoKXtyZXR1cm4gZS5yYXdbbl19ZnVuY3Rpb24gbyhpKXtcIjAwXCIhPT0oaT10LnRvQnVmZmVyKGkpKS50b1N0cmluZyhcImhleFwiKXx8ci5hbGxvd1plcm98fChpPXUuYWxsb2NVbnNhZmUoMCkpLHIuYWxsb3dMZXNzJiZyLmxlbmd0aD8oaT10LnN0cmlwWmVyb3MoaSksYShyLmxlbmd0aD49aS5sZW5ndGgsXCJUaGUgZmllbGQgXCIrci5uYW1lK1wiIG11c3Qgbm90IGhhdmUgbW9yZSBcIityLmxlbmd0aCtcIiBieXRlc1wiKSk6ci5hbGxvd1plcm8mJjA9PT1pLmxlbmd0aHx8IXIubGVuZ3RofHxhKHIubGVuZ3RoPT09aS5sZW5ndGgsXCJUaGUgZmllbGQgXCIrci5uYW1lK1wiIG11c3QgaGF2ZSBieXRlIGxlbmd0aCBvZiBcIityLmxlbmd0aCksZS5yYXdbbl09aX1lLl9maWVsZHMucHVzaChyLm5hbWUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIubmFtZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0Omksc2V0Om99KSxyLmRlZmF1bHQmJihlW3IubmFtZV09ci5kZWZhdWx0KSxyLmFsaWFzJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmFsaWFzLHtlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMCxzZXQ6byxnZXQ6aX0pfSkpLGkpaWYoXCJzdHJpbmdcIj09dHlwZW9mIGkmJihpPXUuZnJvbSh0LnN0cmlwSGV4UHJlZml4KGkpLFwiaGV4XCIpKSx1LmlzQnVmZmVyKGkpJiYoaT1zLmRlY29kZShpKSksQXJyYXkuaXNBcnJheShpKSl7aWYoaS5sZW5ndGg+ZS5fZmllbGRzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJ3cm9uZyBudW1iZXIgb2YgZmllbGRzIGluIGRhdGFcIik7aS5mb3JFYWNoKChmdW5jdGlvbihyLG4pe2VbZS5fZmllbGRzW25dXT10LnRvQnVmZmVyKHIpfSkpfWVsc2V7aWYoXCJvYmplY3RcIiE9PSh2b2lkIDA9PT1pP1widW5kZWZpbmVkXCI6bihpKSkpdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBkYXRhXCIpO3ZhciBvPU9iamVjdC5rZXlzKGkpO3IuZm9yRWFjaCgoZnVuY3Rpb24odCl7LTEhPT1vLmluZGV4T2YodC5uYW1lKSYmKGVbdC5uYW1lXT1pW3QubmFtZV0pLC0xIT09by5pbmRleE9mKHQuYWxpYXMpJiYoZVt0LmFsaWFzXT1pW3QuYWxpYXNdKX0pKX19fSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIoZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX10LmlzQXJyYXk9ZnVuY3Rpb24oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXk/QXJyYXkuaXNBcnJheShlKTpcIltvYmplY3QgQXJyYXldXCI9PT1yKGUpfSx0LmlzQm9vbGVhbj1mdW5jdGlvbihlKXtyZXR1cm5cImJvb2xlYW5cIj09dHlwZW9mIGV9LHQuaXNOdWxsPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09ZX0sdC5pc051bGxPclVuZGVmaW5lZD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZX0sdC5pc051bWJlcj1mdW5jdGlvbihlKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZX0sdC5pc1N0cmluZz1mdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZX0sdC5pc1N5bWJvbD1mdW5jdGlvbihlKXtyZXR1cm5cInN5bWJvbFwiPT10eXBlb2YgZX0sdC5pc1VuZGVmaW5lZD1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZX0sdC5pc1JlZ0V4cD1mdW5jdGlvbihlKXtyZXR1cm5cIltvYmplY3QgUmVnRXhwXVwiPT09cihlKX0sdC5pc09iamVjdD1mdW5jdGlvbihlKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgZSYmbnVsbCE9PWV9LHQuaXNEYXRlPWZ1bmN0aW9uKGUpe3JldHVyblwiW29iamVjdCBEYXRlXVwiPT09cihlKX0sdC5pc0Vycm9yPWZ1bmN0aW9uKGUpe3JldHVyblwiW29iamVjdCBFcnJvcl1cIj09PXIoZSl8fGUgaW5zdGFuY2VvZiBFcnJvcn0sdC5pc0Z1bmN0aW9uPWZ1bmN0aW9uKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGV9LHQuaXNQcmltaXRpdmU9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfHxcImJvb2xlYW5cIj09dHlwZW9mIGV8fFwibnVtYmVyXCI9PXR5cGVvZiBlfHxcInN0cmluZ1wiPT10eXBlb2YgZXx8XCJzeW1ib2xcIj09dHlwZW9mIGV8fHZvaWQgMD09PWV9LHQuaXNCdWZmZXI9ZS5pc0J1ZmZlcn0pLmNhbGwodGhpcyxyKDcpLkJ1ZmZlcil9LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDgpLGk9cigxMSk7ZnVuY3Rpb24gbygpe3RoaXMucGVuZGluZz1udWxsLHRoaXMucGVuZGluZ1RvdGFsPTAsdGhpcy5ibG9ja1NpemU9dGhpcy5jb25zdHJ1Y3Rvci5ibG9ja1NpemUsdGhpcy5vdXRTaXplPXRoaXMuY29uc3RydWN0b3Iub3V0U2l6ZSx0aGlzLmhtYWNTdHJlbmd0aD10aGlzLmNvbnN0cnVjdG9yLmhtYWNTdHJlbmd0aCx0aGlzLnBhZExlbmd0aD10aGlzLmNvbnN0cnVjdG9yLnBhZExlbmd0aC84LHRoaXMuZW5kaWFuPVwiYmlnXCIsdGhpcy5fZGVsdGE4PXRoaXMuYmxvY2tTaXplLzgsdGhpcy5fZGVsdGEzMj10aGlzLmJsb2NrU2l6ZS8zMn10LkJsb2NrSGFzaD1vLG8ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlLHQpe2lmKGU9bi50b0FycmF5KGUsdCksdGhpcy5wZW5kaW5nP3RoaXMucGVuZGluZz10aGlzLnBlbmRpbmcuY29uY2F0KGUpOnRoaXMucGVuZGluZz1lLHRoaXMucGVuZGluZ1RvdGFsKz1lLmxlbmd0aCx0aGlzLnBlbmRpbmcubGVuZ3RoPj10aGlzLl9kZWx0YTgpe3ZhciByPShlPXRoaXMucGVuZGluZykubGVuZ3RoJXRoaXMuX2RlbHRhODt0aGlzLnBlbmRpbmc9ZS5zbGljZShlLmxlbmd0aC1yLGUubGVuZ3RoKSwwPT09dGhpcy5wZW5kaW5nLmxlbmd0aCYmKHRoaXMucGVuZGluZz1udWxsKSxlPW4uam9pbjMyKGUsMCxlLmxlbmd0aC1yLHRoaXMuZW5kaWFuKTtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krPXRoaXMuX2RlbHRhMzIpdGhpcy5fdXBkYXRlKGUsaSxpK3RoaXMuX2RlbHRhMzIpfXJldHVybiB0aGlzfSxvLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudXBkYXRlKHRoaXMuX3BhZCgpKSxpKG51bGw9PT10aGlzLnBlbmRpbmcpLHRoaXMuX2RpZ2VzdChlKX0sby5wcm90b3R5cGUuX3BhZD1mdW5jdGlvbigpe3ZhciBlPXRoaXMucGVuZGluZ1RvdGFsLHQ9dGhpcy5fZGVsdGE4LHI9dC0oZSt0aGlzLnBhZExlbmd0aCkldCxuPW5ldyBBcnJheShyK3RoaXMucGFkTGVuZ3RoKTtuWzBdPTEyODtmb3IodmFyIGk9MTtpPHI7aSsrKW5baV09MDtpZihlPDw9MyxcImJpZ1wiPT09dGhpcy5lbmRpYW4pe2Zvcih2YXIgbz04O288dGhpcy5wYWRMZW5ndGg7bysrKW5baSsrXT0wO25baSsrXT0wLG5baSsrXT0wLG5baSsrXT0wLG5baSsrXT0wLG5baSsrXT1lPj4+MjQmMjU1LG5baSsrXT1lPj4+MTYmMjU1LG5baSsrXT1lPj4+OCYyNTUsbltpKytdPTI1NSZlfWVsc2UgZm9yKG5baSsrXT0yNTUmZSxuW2krK109ZT4+PjgmMjU1LG5baSsrXT1lPj4+MTYmMjU1LG5baSsrXT1lPj4+MjQmMjU1LG5baSsrXT0wLG5baSsrXT0wLG5baSsrXT0wLG5baSsrXT0wLG89ODtvPHRoaXMucGFkTGVuZ3RoO28rKyluW2krK109MDtyZXR1cm4gbn19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7fX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMjAwKSxpPXIoMjkpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaSh7aWQ6bigpLGpzb25ycGM6XCIyLjBcIixwYXJhbXM6W119LGUpfX0sZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiByKGUpe3JldHVybiBlLnNvcnQoKGUsdCk9PlwibGF0ZXN0XCI9PT1lfHxcImVhcmxpZXN0XCI9PT10PzE6XCJsYXRlc3RcIj09PXR8fFwiZWFybGllc3RcIj09PWU/LTE6bihlKS1uKHQpKX1mdW5jdGlvbiBuKGUpe3JldHVybiBudWxsPT1lP2U6TnVtYmVyLnBhcnNlSW50KGUsMTYpfWZ1bmN0aW9uIGkoZSl7aWYobnVsbD09ZSlyZXR1cm4gZTtsZXQgdD1lLnRvU3RyaW5nKDE2KTtyZXR1cm4gdC5sZW5ndGglMiYmKHQ9XCIwXCIrdCksXCIweFwiK3R9ZnVuY3Rpb24gbygpe3JldHVybiBNYXRoLmZsb29yKDE2Kk1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDE2KX1lLmV4cG9ydHM9e21pbkJsb2NrUmVmOmZ1bmN0aW9uKC4uLmUpe3JldHVybiByKGUpWzBdfSxtYXhCbG9ja1JlZjpmdW5jdGlvbiguLi5lKXtjb25zdCB0PXIoZSk7cmV0dXJuIHRbdC5sZW5ndGgtMV19LHNvcnRCbG9ja1JlZnM6cixiblRvSGV4OmZ1bmN0aW9uKGUpe3JldHVyblwiMHhcIitlLnRvU3RyaW5nKDE2KX0sYmxvY2tSZWZJc051bWJlcjpmdW5jdGlvbihlKXtyZXR1cm4gZSYmIVtcImVhcmxpZXN0XCIsXCJsYXRlc3RcIixcInBlbmRpbmdcIl0uaW5jbHVkZXMoZSl9LGhleFRvSW50Om4saW5jcmVtZW50SGV4SW50OmZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpcmV0dXJuIGU7cmV0dXJuIGkobihlKSsxKX0saW50VG9IZXg6aSx1bnNhZmVSYW5kb21CeXRlczpmdW5jdGlvbihlKXtsZXQgdD1cIjB4XCI7Zm9yKGxldCByPTA7cjxlO3IrKyl0Kz1vKCksdCs9bygpO3JldHVybiB0fX19LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDIyOSk7ZS5leHBvcnRzPUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kfHxufSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49VHlwZUVycm9yLGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcj9mdW5jdGlvbigpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGFyZ3VtZW50cyxcImNhbGxlZVwiKS5nZXR9KCk6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgbn0sbz1yKDIzMykoKSxhPU9iamVjdC5nZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffSxzPXZvaWQgMCxmPVwidW5kZWZpbmVkXCI9PXR5cGVvZiBVaW50OEFycmF5P3ZvaWQgMDphKFVpbnQ4QXJyYXkpLGM9e1wiJCAlQXJyYXklXCI6QXJyYXksXCIkICVBcnJheUJ1ZmZlciVcIjpcInVuZGVmaW5lZFwiPT10eXBlb2YgQXJyYXlCdWZmZXI/dm9pZCAwOkFycmF5QnVmZmVyLFwiJCAlQXJyYXlCdWZmZXJQcm90b3R5cGUlXCI6XCJ1bmRlZmluZWRcIj09dHlwZW9mIEFycmF5QnVmZmVyP3ZvaWQgMDpBcnJheUJ1ZmZlci5wcm90b3R5cGUsXCIkICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJVwiOm8/YShbXVtTeW1ib2wuaXRlcmF0b3JdKCkpOnZvaWQgMCxcIiQgJUFycmF5UHJvdG90eXBlJVwiOkFycmF5LnByb3RvdHlwZSxcIiQgJUFycmF5UHJvdG9fZW50cmllcyVcIjpBcnJheS5wcm90b3R5cGUuZW50cmllcyxcIiQgJUFycmF5UHJvdG9fZm9yRWFjaCVcIjpBcnJheS5wcm90b3R5cGUuZm9yRWFjaCxcIiQgJUFycmF5UHJvdG9fa2V5cyVcIjpBcnJheS5wcm90b3R5cGUua2V5cyxcIiQgJUFycmF5UHJvdG9fdmFsdWVzJVwiOkFycmF5LnByb3RvdHlwZS52YWx1ZXMsXCIkICVBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUlXCI6dm9pZCAwLFwiJCAlQXN5bmNGdW5jdGlvbiVcIjp2b2lkIDAsXCIkICVBc3luY0Z1bmN0aW9uUHJvdG90eXBlJVwiOnZvaWQgMCxcIiQgJUFzeW5jR2VuZXJhdG9yJVwiOnZvaWQgMCxcIiQgJUFzeW5jR2VuZXJhdG9yRnVuY3Rpb24lXCI6dm9pZCAwLFwiJCAlQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUlXCI6dm9pZCAwLFwiJCAlQXN5bmNJdGVyYXRvclByb3RvdHlwZSVcIjpzJiZvJiZTeW1ib2wuYXN5bmNJdGVyYXRvcj9zW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpOnZvaWQgMCxcIiQgJUF0b21pY3MlXCI6XCJ1bmRlZmluZWRcIj09dHlwZW9mIEF0b21pY3M/dm9pZCAwOkF0b21pY3MsXCIkICVCb29sZWFuJVwiOkJvb2xlYW4sXCIkICVCb29sZWFuUHJvdG90eXBlJVwiOkJvb2xlYW4ucHJvdG90eXBlLFwiJCAlRGF0YVZpZXclXCI6XCJ1bmRlZmluZWRcIj09dHlwZW9mIERhdGFWaWV3P3ZvaWQgMDpEYXRhVmlldyxcIiQgJURhdGFWaWV3UHJvdG90eXBlJVwiOlwidW5kZWZpbmVkXCI9PXR5cGVvZiBEYXRhVmlldz92b2lkIDA6RGF0YVZpZXcucHJvdG90eXBlLFwiJCAlRGF0ZSVcIjpEYXRlLFwiJCAlRGF0ZVByb3RvdHlwZSVcIjpEYXRlLnByb3RvdHlwZSxcIiQgJWRlY29kZVVSSSVcIjpkZWNvZGVVUkksXCIkICVkZWNvZGVVUklDb21wb25lbnQlXCI6ZGVjb2RlVVJJQ29tcG9uZW50LFwiJCAlZW5jb2RlVVJJJVwiOmVuY29kZVVSSSxcIiQgJWVuY29kZVVSSUNvbXBvbmVudCVcIjplbmNvZGVVUklDb21wb25lbnQsXCIkICVFcnJvciVcIjpFcnJvcixcIiQgJUVycm9yUHJvdG90eXBlJVwiOkVycm9yLnByb3RvdHlwZSxcIiQgJWV2YWwlXCI6ZXZhbCxcIiQgJUV2YWxFcnJvciVcIjpFdmFsRXJyb3IsXCIkICVFdmFsRXJyb3JQcm90b3R5cGUlXCI6RXZhbEVycm9yLnByb3RvdHlwZSxcIiQgJUZsb2F0MzJBcnJheSVcIjpcInVuZGVmaW5lZFwiPT10eXBlb2YgRmxvYXQzMkFycmF5P3ZvaWQgMDpGbG9hdDMyQXJyYXksXCIkICVGbG9hdDMyQXJyYXlQcm90b3R5cGUlXCI6XCJ1bmRlZmluZWRcIj09dHlwZW9mIEZsb2F0MzJBcnJheT92b2lkIDA6RmxvYXQzMkFycmF5LnByb3RvdHlwZSxcIiQgJUZsb2F0NjRBcnJheSVcIjpcInVuZGVmaW5lZFwiPT10eXBlb2YgRmxvYXQ2NEFycmF5P3ZvaWQgMDpGbG9hdDY0QXJyYXksXCIkICVGbG9hdDY0QXJyYXlQcm90b3R5cGUlXCI6XCJ1bmRlZmluZWRcIj09dHlwZW9mIEZsb2F0NjRBcnJheT92b2lkIDA6RmxvYXQ2NEFycmF5LnByb3RvdHlwZSxcIiQgJUZ1bmN0aW9uJVwiOkZ1bmN0aW9uLFwiJCAlRnVuY3Rpb25Qcm90b3R5cGUlXCI6RnVuY3Rpb24ucHJvdG90eXBlLFwiJCAlR2VuZXJhdG9yJVwiOnZvaWQgMCxcIiQgJUdlbmVyYXRvckZ1bmN0aW9uJVwiOnZvaWQgMCxcIiQgJUdlbmVyYXRvclByb3RvdHlwZSVcIjp2b2lkIDAsXCIkICVJbnQ4QXJyYXklXCI6XCJ1bmRlZmluZWRcIj09dHlwZW9mIEludDhBcnJheT92b2lkIDA6SW50OEFycmF5LFwiJCAlSW50OEFycmF5UHJvdG90eXBlJVwiOlwidW5kZWZpbmVkXCI9PXR5cGVvZiBJbnQ4QXJyYXk/dm9pZCAwOkludDhBcnJheS5wcm90b3R5cGUsXCIkICVJbnQxNkFycmF5JVwiOlwidW5kZWZpbmVkXCI9PXR5cGVvZiBJbnQxNkFycmF5P3ZvaWQgMDpJbnQxNkFycmF5LFwiJCAlSW50MTZBcnJheVByb3RvdHlwZSVcIjpcInVuZGVmaW5lZFwiPT10eXBlb2YgSW50MTZBcnJheT92b2lkIDA6SW50OEFycmF5LnByb3RvdHlwZSxcIiQgJUludDMyQXJyYXklXCI6XCJ1bmRlZmluZWRcIj09dHlwZW9mIEludDMyQXJyYXk/dm9pZCAwOkludDMyQXJyYXksXCIkICVJbnQzMkFycmF5UHJvdG90eXBlJVwiOlwidW5kZWZpbmVkXCI9PXR5cGVvZiBJbnQzMkFycmF5P3ZvaWQgMDpJbnQzMkFycmF5LnByb3RvdHlwZSxcIiQgJWlzRmluaXRlJVwiOmlzRmluaXRlLFwiJCAlaXNOYU4lXCI6aXNOYU4sXCIkICVJdGVyYXRvclByb3RvdHlwZSVcIjpvP2EoYShbXVtTeW1ib2wuaXRlcmF0b3JdKCkpKTp2b2lkIDAsXCIkICVKU09OJVwiOkpTT04sXCIkICVKU09OUGFyc2UlXCI6SlNPTi5wYXJzZSxcIiQgJU1hcCVcIjpcInVuZGVmaW5lZFwiPT10eXBlb2YgTWFwP3ZvaWQgMDpNYXAsXCIkICVNYXBJdGVyYXRvclByb3RvdHlwZSVcIjpcInVuZGVmaW5lZFwiIT10eXBlb2YgTWFwJiZvP2EoKG5ldyBNYXApW1N5bWJvbC5pdGVyYXRvcl0oKSk6dm9pZCAwLFwiJCAlTWFwUHJvdG90eXBlJVwiOlwidW5kZWZpbmVkXCI9PXR5cGVvZiBNYXA/dm9pZCAwOk1hcC5wcm90b3R5cGUsXCIkICVNYXRoJVwiOk1hdGgsXCIkICVOdW1iZXIlXCI6TnVtYmVyLFwiJCAlTnVtYmVyUHJvdG90eXBlJVwiOk51bWJlci5wcm90b3R5cGUsXCIkICVPYmplY3QlXCI6T2JqZWN0LFwiJCAlT2JqZWN0UHJvdG90eXBlJVwiOk9iamVjdC5wcm90b3R5cGUsXCIkICVPYmpQcm90b190b1N0cmluZyVcIjpPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLFwiJCAlT2JqUHJvdG9fdmFsdWVPZiVcIjpPYmplY3QucHJvdG90eXBlLnZhbHVlT2YsXCIkICVwYXJzZUZsb2F0JVwiOnBhcnNlRmxvYXQsXCIkICVwYXJzZUludCVcIjpwYXJzZUludCxcIiQgJVByb21pc2UlXCI6XCJ1bmRlZmluZWRcIj09dHlwZW9mIFByb21pc2U/dm9pZCAwOlByb21pc2UsXCIkICVQcm9taXNlUHJvdG90eXBlJVwiOlwidW5kZWZpbmVkXCI9PXR5cGVvZiBQcm9taXNlP3ZvaWQgMDpQcm9taXNlLnByb3RvdHlwZSxcIiQgJVByb21pc2VQcm90b190aGVuJVwiOlwidW5kZWZpbmVkXCI9PXR5cGVvZiBQcm9taXNlP3ZvaWQgMDpQcm9taXNlLnByb3RvdHlwZS50aGVuLFwiJCAlUHJvbWlzZV9hbGwlXCI6XCJ1bmRlZmluZWRcIj09dHlwZW9mIFByb21pc2U/dm9pZCAwOlByb21pc2UuYWxsLFwiJCAlUHJvbWlzZV9yZWplY3QlXCI6XCJ1bmRlZmluZWRcIj09dHlwZW9mIFByb21pc2U/dm9pZCAwOlByb21pc2UucmVqZWN0LFwiJCAlUHJvbWlzZV9yZXNvbHZlJVwiOlwidW5kZWZpbmVkXCI9PXR5cGVvZiBQcm9taXNlP3ZvaWQgMDpQcm9taXNlLnJlc29sdmUsXCIkICVQcm94eSVcIjpcInVuZGVmaW5lZFwiPT10eXBlb2YgUHJveHk/dm9pZCAwOlByb3h5LFwiJCAlUmFuZ2VFcnJvciVcIjpSYW5nZUVycm9yLFwiJCAlUmFuZ2VFcnJvclByb3RvdHlwZSVcIjpSYW5nZUVycm9yLnByb3RvdHlwZSxcIiQgJVJlZmVyZW5jZUVycm9yJVwiOlJlZmVyZW5jZUVycm9yLFwiJCAlUmVmZXJlbmNlRXJyb3JQcm90b3R5cGUlXCI6UmVmZXJlbmNlRXJyb3IucHJvdG90eXBlLFwiJCAlUmVmbGVjdCVcIjpcInVuZGVmaW5lZFwiPT10eXBlb2YgUmVmbGVjdD92b2lkIDA6UmVmbGVjdCxcIiQgJVJlZ0V4cCVcIjpSZWdFeHAsXCIkICVSZWdFeHBQcm90b3R5cGUlXCI6UmVnRXhwLnByb3RvdHlwZSxcIiQgJVNldCVcIjpcInVuZGVmaW5lZFwiPT10eXBlb2YgU2V0P3ZvaWQgMDpTZXQsXCIkICVTZXRJdGVyYXRvclByb3RvdHlwZSVcIjpcInVuZGVmaW5lZFwiIT10eXBlb2YgU2V0JiZvP2EoKG5ldyBTZXQpW1N5bWJvbC5pdGVyYXRvcl0oKSk6dm9pZCAwLFwiJCAlU2V0UHJvdG90eXBlJVwiOlwidW5kZWZpbmVkXCI9PXR5cGVvZiBTZXQ/dm9pZCAwOlNldC5wcm90b3R5cGUsXCIkICVTaGFyZWRBcnJheUJ1ZmZlciVcIjpcInVuZGVmaW5lZFwiPT10eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXI/dm9pZCAwOlNoYXJlZEFycmF5QnVmZmVyLFwiJCAlU2hhcmVkQXJyYXlCdWZmZXJQcm90b3R5cGUlXCI6XCJ1bmRlZmluZWRcIj09dHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyP3ZvaWQgMDpTaGFyZWRBcnJheUJ1ZmZlci5wcm90b3R5cGUsXCIkICVTdHJpbmclXCI6U3RyaW5nLFwiJCAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlXCI6bz9hKFwiXCJbU3ltYm9sLml0ZXJhdG9yXSgpKTp2b2lkIDAsXCIkICVTdHJpbmdQcm90b3R5cGUlXCI6U3RyaW5nLnByb3RvdHlwZSxcIiQgJVN5bWJvbCVcIjpvP1N5bWJvbDp2b2lkIDAsXCIkICVTeW1ib2xQcm90b3R5cGUlXCI6bz9TeW1ib2wucHJvdG90eXBlOnZvaWQgMCxcIiQgJVN5bnRheEVycm9yJVwiOlN5bnRheEVycm9yLFwiJCAlU3ludGF4RXJyb3JQcm90b3R5cGUlXCI6U3ludGF4RXJyb3IucHJvdG90eXBlLFwiJCAlVGhyb3dUeXBlRXJyb3IlXCI6aSxcIiQgJVR5cGVkQXJyYXklXCI6ZixcIiQgJVR5cGVkQXJyYXlQcm90b3R5cGUlXCI6Zj9mLnByb3RvdHlwZTp2b2lkIDAsXCIkICVUeXBlRXJyb3IlXCI6bixcIiQgJVR5cGVFcnJvclByb3RvdHlwZSVcIjpuLnByb3RvdHlwZSxcIiQgJVVpbnQ4QXJyYXklXCI6XCJ1bmRlZmluZWRcIj09dHlwZW9mIFVpbnQ4QXJyYXk/dm9pZCAwOlVpbnQ4QXJyYXksXCIkICVVaW50OEFycmF5UHJvdG90eXBlJVwiOlwidW5kZWZpbmVkXCI9PXR5cGVvZiBVaW50OEFycmF5P3ZvaWQgMDpVaW50OEFycmF5LnByb3RvdHlwZSxcIiQgJVVpbnQ4Q2xhbXBlZEFycmF5JVwiOlwidW5kZWZpbmVkXCI9PXR5cGVvZiBVaW50OENsYW1wZWRBcnJheT92b2lkIDA6VWludDhDbGFtcGVkQXJyYXksXCIkICVVaW50OENsYW1wZWRBcnJheVByb3RvdHlwZSVcIjpcInVuZGVmaW5lZFwiPT10eXBlb2YgVWludDhDbGFtcGVkQXJyYXk/dm9pZCAwOlVpbnQ4Q2xhbXBlZEFycmF5LnByb3RvdHlwZSxcIiQgJVVpbnQxNkFycmF5JVwiOlwidW5kZWZpbmVkXCI9PXR5cGVvZiBVaW50MTZBcnJheT92b2lkIDA6VWludDE2QXJyYXksXCIkICVVaW50MTZBcnJheVByb3RvdHlwZSVcIjpcInVuZGVmaW5lZFwiPT10eXBlb2YgVWludDE2QXJyYXk/dm9pZCAwOlVpbnQxNkFycmF5LnByb3RvdHlwZSxcIiQgJVVpbnQzMkFycmF5JVwiOlwidW5kZWZpbmVkXCI9PXR5cGVvZiBVaW50MzJBcnJheT92b2lkIDA6VWludDMyQXJyYXksXCIkICVVaW50MzJBcnJheVByb3RvdHlwZSVcIjpcInVuZGVmaW5lZFwiPT10eXBlb2YgVWludDMyQXJyYXk/dm9pZCAwOlVpbnQzMkFycmF5LnByb3RvdHlwZSxcIiQgJVVSSUVycm9yJVwiOlVSSUVycm9yLFwiJCAlVVJJRXJyb3JQcm90b3R5cGUlXCI6VVJJRXJyb3IucHJvdG90eXBlLFwiJCAlV2Vha01hcCVcIjpcInVuZGVmaW5lZFwiPT10eXBlb2YgV2Vha01hcD92b2lkIDA6V2Vha01hcCxcIiQgJVdlYWtNYXBQcm90b3R5cGUlXCI6XCJ1bmRlZmluZWRcIj09dHlwZW9mIFdlYWtNYXA/dm9pZCAwOldlYWtNYXAucHJvdG90eXBlLFwiJCAlV2Vha1NldCVcIjpcInVuZGVmaW5lZFwiPT10eXBlb2YgV2Vha1NldD92b2lkIDA6V2Vha1NldCxcIiQgJVdlYWtTZXRQcm90b3R5cGUlXCI6XCJ1bmRlZmluZWRcIj09dHlwZW9mIFdlYWtTZXQ/dm9pZCAwOldlYWtTZXQucHJvdG90eXBlfSx1PXIoMjEpLmNhbGwoRnVuY3Rpb24uY2FsbCxTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UpLGg9L1teJS5bXFxdXSt8XFxbKD86KC0/XFxkKyg/OlxcLlxcZCspPyl8KFtcIiddKSgoPzooPyFcXDIpW15cXFxcXXxcXFxcLikqPylcXDIpXFxdfCg/PSg/OlxcLnxcXFtcXF0pKD86XFwufFxcW1xcXXwlJCkpL2csbD0vXFxcXChcXFxcKT8vZyxkPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiB1KGUsaCwoZnVuY3Rpb24oZSxyLG4saSl7dFt0Lmxlbmd0aF09bj91KGksbCxcIiQxXCIpOnJ8fGV9KSksdH0scD1mdW5jdGlvbihlLHQpe3ZhciByPVwiJCBcIitlO2lmKCEociBpbiBjKSl0aHJvdyBuZXcgU3ludGF4RXJyb3IoXCJpbnRyaW5zaWMgXCIrZStcIiBkb2VzIG5vdCBleGlzdCFcIik7aWYodm9pZCAwPT09Y1tyXSYmIXQpdGhyb3cgbmV3IG4oXCJpbnRyaW5zaWMgXCIrZStcIiBleGlzdHMsIGJ1dCBpcyBub3QgYXZhaWxhYmxlLiBQbGVhc2UgZmlsZSBhbiBpc3N1ZSFcIik7cmV0dXJuIGNbcl19O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGFyZ3VtZW50cy5sZW5ndGg+MSYmXCJib29sZWFuXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYWxsb3dNaXNzaW5nXCIgYXJndW1lbnQgbXVzdCBiZSBhIGJvb2xlYW4nKTt2YXIgcj1kKGUpO2lmKDA9PT1yLmxlbmd0aClyZXR1cm4gcChlLHQpO2Zvcih2YXIgbj1wKFwiJVwiK3JbMF0rXCIlXCIsdCksaT0xO2k8ci5sZW5ndGg7aSs9MSludWxsIT1uJiYobj1uW3JbaV1dKTtyZXR1cm4gbn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbjshZnVuY3Rpb24oaSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIG8sYT0vXi0/KD86XFxkKyg/OlxcLlxcZCopP3xcXC5cXGQrKSg/OmVbKy1dP1xcZCspPyQvaSxzPU1hdGguY2VpbCxmPU1hdGguZmxvb3IsYz1cIltCaWdOdW1iZXIgRXJyb3JdIFwiLHU9YytcIk51bWJlciBwcmltaXRpdmUgaGFzIG1vcmUgdGhhbiAxNSBzaWduaWZpY2FudCBkaWdpdHM6IFwiLGg9MWUxNCxsPTE0LGQ9OTAwNzE5OTI1NDc0MDk5MSxwPVsxLDEwLDEwMCwxZTMsMWU0LDFlNSwxZTYsMWU3LDFlOCwxZTksMWUxMCwxZTExLDFlMTIsMWUxM10sYj0xZTcseT0xZTk7ZnVuY3Rpb24gZyhlKXt2YXIgdD0wfGU7cmV0dXJuIGU+MHx8ZT09PXQ/dDp0LTF9ZnVuY3Rpb24gdihlKXtmb3IodmFyIHQscixuPTEsaT1lLmxlbmd0aCxvPWVbMF0rXCJcIjtuPGk7KXtmb3IodD1lW24rK10rXCJcIixyPWwtdC5sZW5ndGg7ci0tO3Q9XCIwXCIrdCk7bys9dH1mb3IoaT1vLmxlbmd0aDs0OD09PW8uY2hhckNvZGVBdCgtLWkpOyk7cmV0dXJuIG8uc2xpY2UoMCxpKzF8fDEpfWZ1bmN0aW9uIG0oZSx0KXt2YXIgcixuLGk9ZS5jLG89dC5jLGE9ZS5zLHM9dC5zLGY9ZS5lLGM9dC5lO2lmKCFhfHwhcylyZXR1cm4gbnVsbDtpZihyPWkmJiFpWzBdLG49byYmIW9bMF0scnx8bilyZXR1cm4gcj9uPzA6LXM6YTtpZihhIT1zKXJldHVybiBhO2lmKHI9YTwwLG49Zj09YywhaXx8IW8pcmV0dXJuIG4/MDohaV5yPzE6LTE7aWYoIW4pcmV0dXJuIGY+Y15yPzE6LTE7Zm9yKHM9KGY9aS5sZW5ndGgpPChjPW8ubGVuZ3RoKT9mOmMsYT0wO2E8czthKyspaWYoaVthXSE9b1thXSlyZXR1cm4gaVthXT5vW2FdXnI/MTotMTtyZXR1cm4gZj09Yz8wOmY+Y15yPzE6LTF9ZnVuY3Rpb24gXyhlLHQscixuKXtpZihlPHR8fGU+cnx8ZSE9PWYoZSkpdGhyb3cgRXJyb3IoYysobnx8XCJBcmd1bWVudFwiKSsoXCJudW1iZXJcIj09dHlwZW9mIGU/ZTx0fHxlPnI/XCIgb3V0IG9mIHJhbmdlOiBcIjpcIiBub3QgYW4gaW50ZWdlcjogXCI6XCIgbm90IGEgcHJpbWl0aXZlIG51bWJlcjogXCIpK1N0cmluZyhlKSl9ZnVuY3Rpb24gdyhlKXt2YXIgdD1lLmMubGVuZ3RoLTE7cmV0dXJuIGcoZS5lL2wpPT10JiZlLmNbdF0lMiE9MH1mdW5jdGlvbiBFKGUsdCl7cmV0dXJuKGUubGVuZ3RoPjE/ZS5jaGFyQXQoMCkrXCIuXCIrZS5zbGljZSgxKTplKSsodDwwP1wiZVwiOlwiZStcIikrdH1mdW5jdGlvbiBBKGUsdCxyKXt2YXIgbixpO2lmKHQ8MCl7Zm9yKGk9citcIi5cIjsrK3Q7aSs9cik7ZT1pK2V9ZWxzZSBpZigrK3Q+KG49ZS5sZW5ndGgpKXtmb3IoaT1yLHQtPW47LS10O2krPXIpO2UrPWl9ZWxzZSB0PG4mJihlPWUuc2xpY2UoMCx0KStcIi5cIitlLnNsaWNlKHQpKTtyZXR1cm4gZX0obz1mdW5jdGlvbiBlKHQpe3ZhciByLG4saSxvLFMsayx4LEksTSxUPXoucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp6LHRvU3RyaW5nOm51bGwsdmFsdWVPZjpudWxsfSxQPW5ldyB6KDEpLEI9MjAsTD00LFI9LTcsTz0yMSxDPS0xZTcsTj0xZTcsaj0hMSxEPTEscT0wLFU9e3ByZWZpeDpcIlwiLGdyb3VwU2l6ZTozLHNlY29uZGFyeUdyb3VwU2l6ZTowLGdyb3VwU2VwYXJhdG9yOlwiLFwiLGRlY2ltYWxTZXBhcmF0b3I6XCIuXCIsZnJhY3Rpb25Hcm91cFNpemU6MCxmcmFjdGlvbkdyb3VwU2VwYXJhdG9yOlwiwqBcIixzdWZmaXg6XCJcIn0sRj1cIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5elwiO2Z1bmN0aW9uIHooZSx0KXt2YXIgcixvLHMsYyxoLHAsYix5LGc9dGhpcztpZighKGcgaW5zdGFuY2VvZiB6KSlyZXR1cm4gbmV3IHooZSx0KTtpZihudWxsPT10KXtpZihlJiYhMD09PWUuX2lzQmlnTnVtYmVyKXJldHVybiBnLnM9ZS5zLHZvaWQoIWUuY3x8ZS5lPk4/Zy5jPWcuZT1udWxsOmUuZTxDP2cuYz1bZy5lPTBdOihnLmU9ZS5lLGcuYz1lLmMuc2xpY2UoKSkpO2lmKChwPVwibnVtYmVyXCI9PXR5cGVvZiBlKSYmMCplPT0wKXtpZihnLnM9MS9lPDA/KGU9LWUsLTEpOjEsZT09PX5+ZSl7Zm9yKGM9MCxoPWU7aD49MTA7aC89MTAsYysrKTtyZXR1cm4gdm9pZChjPk4/Zy5jPWcuZT1udWxsOihnLmU9YyxnLmM9W2VdKSl9eT1TdHJpbmcoZSl9ZWxzZXtpZighYS50ZXN0KHk9U3RyaW5nKGUpKSlyZXR1cm4gaShnLHkscCk7Zy5zPTQ1PT15LmNoYXJDb2RlQXQoMCk/KHk9eS5zbGljZSgxKSwtMSk6MX0oYz15LmluZGV4T2YoXCIuXCIpKT4tMSYmKHk9eS5yZXBsYWNlKFwiLlwiLFwiXCIpKSwoaD15LnNlYXJjaCgvZS9pKSk+MD8oYzwwJiYoYz1oKSxjKz0reS5zbGljZShoKzEpLHk9eS5zdWJzdHJpbmcoMCxoKSk6YzwwJiYoYz15Lmxlbmd0aCl9ZWxzZXtpZihfKHQsMixGLmxlbmd0aCxcIkJhc2VcIiksMTA9PXQpcmV0dXJuIFkoZz1uZXcgeihlKSxCK2cuZSsxLEwpO2lmKHk9U3RyaW5nKGUpLHA9XCJudW1iZXJcIj09dHlwZW9mIGUpe2lmKDAqZSE9MClyZXR1cm4gaShnLHkscCx0KTtpZihnLnM9MS9lPDA/KHk9eS5zbGljZSgxKSwtMSk6MSx6LkRFQlVHJiZ5LnJlcGxhY2UoL14wXFwuMCp8XFwuLyxcIlwiKS5sZW5ndGg+MTUpdGhyb3cgRXJyb3IodStlKX1lbHNlIGcucz00NT09PXkuY2hhckNvZGVBdCgwKT8oeT15LnNsaWNlKDEpLC0xKToxO2ZvcihyPUYuc2xpY2UoMCx0KSxjPWg9MCxiPXkubGVuZ3RoO2g8YjtoKyspaWYoci5pbmRleE9mKG89eS5jaGFyQXQoaCkpPDApe2lmKFwiLlwiPT1vKXtpZihoPmMpe2M9Yjtjb250aW51ZX19ZWxzZSBpZighcyYmKHk9PXkudG9VcHBlckNhc2UoKSYmKHk9eS50b0xvd2VyQ2FzZSgpKXx8eT09eS50b0xvd2VyQ2FzZSgpJiYoeT15LnRvVXBwZXJDYXNlKCkpKSl7cz0hMCxoPS0xLGM9MDtjb250aW51ZX1yZXR1cm4gaShnLFN0cmluZyhlKSxwLHQpfXA9ITEsKGM9KHk9bih5LHQsMTAsZy5zKSkuaW5kZXhPZihcIi5cIikpPi0xP3k9eS5yZXBsYWNlKFwiLlwiLFwiXCIpOmM9eS5sZW5ndGh9Zm9yKGg9MDs0OD09PXkuY2hhckNvZGVBdChoKTtoKyspO2ZvcihiPXkubGVuZ3RoOzQ4PT09eS5jaGFyQ29kZUF0KC0tYik7KTtpZih5PXkuc2xpY2UoaCwrK2IpKXtpZihiLT1oLHAmJnouREVCVUcmJmI+MTUmJihlPmR8fGUhPT1mKGUpKSl0aHJvdyBFcnJvcih1K2cucyplKTtpZigoYz1jLWgtMSk+TilnLmM9Zy5lPW51bGw7ZWxzZSBpZihjPEMpZy5jPVtnLmU9MF07ZWxzZXtpZihnLmU9YyxnLmM9W10saD0oYysxKSVsLGM8MCYmKGgrPWwpLGg8Yil7Zm9yKGgmJmcuYy5wdXNoKCt5LnNsaWNlKDAsaCkpLGItPWw7aDxiOylnLmMucHVzaCgreS5zbGljZShoLGgrPWwpKTtoPWwtKHk9eS5zbGljZShoKSkubGVuZ3RofWVsc2UgaC09Yjtmb3IoO2gtLTt5Kz1cIjBcIik7Zy5jLnB1c2goK3kpfX1lbHNlIGcuYz1bZy5lPTBdfWZ1bmN0aW9uIEsoZSx0LHIsbil7dmFyIGksbyxhLHMsZjtpZihudWxsPT1yP3I9TDpfKHIsMCw4KSwhZS5jKXJldHVybiBlLnRvU3RyaW5nKCk7aWYoaT1lLmNbMF0sYT1lLmUsbnVsbD09dClmPXYoZS5jKSxmPTE9PW58fDI9PW4mJihhPD1SfHxhPj1PKT9FKGYsYSk6QShmLGEsXCIwXCIpO2Vsc2UgaWYobz0oZT1ZKG5ldyB6KGUpLHQscikpLmUscz0oZj12KGUuYykpLmxlbmd0aCwxPT1ufHwyPT1uJiYodDw9b3x8bzw9Uikpe2Zvcig7czx0O2YrPVwiMFwiLHMrKyk7Zj1FKGYsbyl9ZWxzZSBpZih0LT1hLGY9QShmLG8sXCIwXCIpLG8rMT5zKXtpZigtLXQ+MClmb3IoZis9XCIuXCI7dC0tO2YrPVwiMFwiKTt9ZWxzZSBpZigodCs9by1zKT4wKWZvcihvKzE9PXMmJihmKz1cIi5cIik7dC0tO2YrPVwiMFwiKTtyZXR1cm4gZS5zPDAmJmk/XCItXCIrZjpmfWZ1bmN0aW9uIEgoZSx0KXtmb3IodmFyIHIsbj0xLGk9bmV3IHooZVswXSk7bjxlLmxlbmd0aDtuKyspe2lmKCEocj1uZXcgeihlW25dKSkucyl7aT1yO2JyZWFrfXQuY2FsbChpLHIpJiYoaT1yKX1yZXR1cm4gaX1mdW5jdGlvbiBWKGUsdCxyKXtmb3IodmFyIG49MSxpPXQubGVuZ3RoOyF0Wy0taV07dC5wb3AoKSk7Zm9yKGk9dFswXTtpPj0xMDtpLz0xMCxuKyspO3JldHVybihyPW4rcipsLTEpPk4/ZS5jPWUuZT1udWxsOnI8Qz9lLmM9W2UuZT0wXTooZS5lPXIsZS5jPXQpLGV9ZnVuY3Rpb24gWShlLHQscixuKXt2YXIgaSxvLGEsYyx1LGQsYix5PWUuYyxnPXA7aWYoeSl7ZTp7Zm9yKGk9MSxjPXlbMF07Yz49MTA7Yy89MTAsaSsrKTtpZigobz10LWkpPDApbys9bCxhPXQsYj0odT15W2Q9MF0pL2dbaS1hLTFdJTEwfDA7ZWxzZSBpZigoZD1zKChvKzEpL2wpKT49eS5sZW5ndGgpe2lmKCFuKWJyZWFrIGU7Zm9yKDt5Lmxlbmd0aDw9ZDt5LnB1c2goMCkpO3U9Yj0wLGk9MSxhPShvJT1sKS1sKzF9ZWxzZXtmb3IodT1jPXlbZF0saT0xO2M+PTEwO2MvPTEwLGkrKyk7Yj0oYT0obyU9bCktbCtpKTwwPzA6dS9nW2ktYS0xXSUxMHwwfWlmKG49bnx8dDwwfHxudWxsIT15W2QrMV18fChhPDA/dTp1JWdbaS1hLTFdKSxuPXI8ND8oYnx8bikmJigwPT1yfHxyPT0oZS5zPDA/MzoyKSk6Yj41fHw1PT1iJiYoND09cnx8bnx8Nj09ciYmKG8+MD9hPjA/dS9nW2ktYV06MDp5W2QtMV0pJTEwJjF8fHI9PShlLnM8MD84OjcpKSx0PDF8fCF5WzBdKXJldHVybiB5Lmxlbmd0aD0wLG4/KHQtPWUuZSsxLHlbMF09Z1sobC10JWwpJWxdLGUuZT0tdHx8MCk6eVswXT1lLmU9MCxlO2lmKDA9PW8/KHkubGVuZ3RoPWQsYz0xLGQtLSk6KHkubGVuZ3RoPWQrMSxjPWdbbC1vXSx5W2RdPWE+MD9mKHUvZ1tpLWFdJWdbYV0pKmM6MCksbilmb3IoOzspe2lmKDA9PWQpe2ZvcihvPTEsYT15WzBdO2E+PTEwO2EvPTEwLG8rKyk7Zm9yKGE9eVswXSs9YyxjPTE7YT49MTA7YS89MTAsYysrKTtvIT1jJiYoZS5lKysseVswXT09aCYmKHlbMF09MSkpO2JyZWFrfWlmKHlbZF0rPWMseVtkXSE9aClicmVhazt5W2QtLV09MCxjPTF9Zm9yKG89eS5sZW5ndGg7MD09PXlbLS1vXTt5LnBvcCgpKTt9ZS5lPk4/ZS5jPWUuZT1udWxsOmUuZTxDJiYoZS5jPVtlLmU9MF0pfXJldHVybiBlfWZ1bmN0aW9uIEcoZSl7dmFyIHQscj1lLmU7cmV0dXJuIG51bGw9PT1yP2UudG9TdHJpbmcoKToodD12KGUuYyksdD1yPD1SfHxyPj1PP0UodCxyKTpBKHQscixcIjBcIiksZS5zPDA/XCItXCIrdDp0KX1yZXR1cm4gei5jbG9uZT1lLHouUk9VTkRfVVA9MCx6LlJPVU5EX0RPV049MSx6LlJPVU5EX0NFSUw9Mix6LlJPVU5EX0ZMT09SPTMsei5ST1VORF9IQUxGX1VQPTQsei5ST1VORF9IQUxGX0RPV049NSx6LlJPVU5EX0hBTEZfRVZFTj02LHouUk9VTkRfSEFMRl9DRUlMPTcsei5ST1VORF9IQUxGX0ZMT09SPTgsei5FVUNMSUQ9OSx6LmNvbmZpZz16LnNldD1mdW5jdGlvbihlKXt2YXIgdCxyO2lmKG51bGwhPWUpe2lmKFwib2JqZWN0XCIhPXR5cGVvZiBlKXRocm93IEVycm9yKGMrXCJPYmplY3QgZXhwZWN0ZWQ6IFwiK2UpO2lmKGUuaGFzT3duUHJvcGVydHkodD1cIkRFQ0lNQUxfUExBQ0VTXCIpJiYoXyhyPWVbdF0sMCx5LHQpLEI9ciksZS5oYXNPd25Qcm9wZXJ0eSh0PVwiUk9VTkRJTkdfTU9ERVwiKSYmKF8ocj1lW3RdLDAsOCx0KSxMPXIpLGUuaGFzT3duUHJvcGVydHkodD1cIkVYUE9ORU5USUFMX0FUXCIpJiYoKHI9ZVt0XSkmJnIucG9wPyhfKHJbMF0sLXksMCx0KSxfKHJbMV0sMCx5LHQpLFI9clswXSxPPXJbMV0pOihfKHIsLXkseSx0KSxSPS0oTz1yPDA/LXI6cikpKSxlLmhhc093blByb3BlcnR5KHQ9XCJSQU5HRVwiKSlpZigocj1lW3RdKSYmci5wb3ApXyhyWzBdLC15LC0xLHQpLF8oclsxXSwxLHksdCksQz1yWzBdLE49clsxXTtlbHNle2lmKF8ociwteSx5LHQpLCFyKXRocm93IEVycm9yKGMrdCtcIiBjYW5ub3QgYmUgemVybzogXCIrcik7Qz0tKE49cjwwPy1yOnIpfWlmKGUuaGFzT3duUHJvcGVydHkodD1cIkNSWVBUT1wiKSl7aWYoKHI9ZVt0XSkhPT0hIXIpdGhyb3cgRXJyb3IoYyt0K1wiIG5vdCB0cnVlIG9yIGZhbHNlOiBcIityKTtpZihyKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgY3J5cHRvfHwhY3J5cHRvfHwhY3J5cHRvLmdldFJhbmRvbVZhbHVlcyYmIWNyeXB0by5yYW5kb21CeXRlcyl0aHJvdyBqPSFyLEVycm9yKGMrXCJjcnlwdG8gdW5hdmFpbGFibGVcIik7aj1yfWVsc2Ugaj1yfWlmKGUuaGFzT3duUHJvcGVydHkodD1cIk1PRFVMT19NT0RFXCIpJiYoXyhyPWVbdF0sMCw5LHQpLEQ9ciksZS5oYXNPd25Qcm9wZXJ0eSh0PVwiUE9XX1BSRUNJU0lPTlwiKSYmKF8ocj1lW3RdLDAseSx0KSxxPXIpLGUuaGFzT3duUHJvcGVydHkodD1cIkZPUk1BVFwiKSl7aWYoXCJvYmplY3RcIiE9dHlwZW9mKHI9ZVt0XSkpdGhyb3cgRXJyb3IoYyt0K1wiIG5vdCBhbiBvYmplY3Q6IFwiK3IpO1U9cn1pZihlLmhhc093blByb3BlcnR5KHQ9XCJBTFBIQUJFVFwiKSl7aWYoXCJzdHJpbmdcIiE9dHlwZW9mKHI9ZVt0XSl8fC9eLiR8WystLlxcc118KC4pLipcXDEvLnRlc3QocikpdGhyb3cgRXJyb3IoYyt0K1wiIGludmFsaWQ6IFwiK3IpO0Y9cn19cmV0dXJue0RFQ0lNQUxfUExBQ0VTOkIsUk9VTkRJTkdfTU9ERTpMLEVYUE9ORU5USUFMX0FUOltSLE9dLFJBTkdFOltDLE5dLENSWVBUTzpqLE1PRFVMT19NT0RFOkQsUE9XX1BSRUNJU0lPTjpxLEZPUk1BVDpVLEFMUEhBQkVUOkZ9fSx6LmlzQmlnTnVtYmVyPWZ1bmN0aW9uKGUpe2lmKCFlfHwhMCE9PWUuX2lzQmlnTnVtYmVyKXJldHVybiExO2lmKCF6LkRFQlVHKXJldHVybiEwO3ZhciB0LHIsbj1lLmMsaT1lLmUsbz1lLnM7ZTppZihcIltvYmplY3QgQXJyYXldXCI9PXt9LnRvU3RyaW5nLmNhbGwobikpe2lmKCgxPT09b3x8LTE9PT1vKSYmaT49LXkmJmk8PXkmJmk9PT1mKGkpKXtpZigwPT09blswXSl7aWYoMD09PWkmJjE9PT1uLmxlbmd0aClyZXR1cm4hMDticmVhayBlfWlmKCh0PShpKzEpJWwpPDEmJih0Kz1sKSxTdHJpbmcoblswXSkubGVuZ3RoPT10KXtmb3IodD0wO3Q8bi5sZW5ndGg7dCsrKWlmKChyPW5bdF0pPDB8fHI+PWh8fHIhPT1mKHIpKWJyZWFrIGU7aWYoMCE9PXIpcmV0dXJuITB9fX1lbHNlIGlmKG51bGw9PT1uJiZudWxsPT09aSYmKG51bGw9PT1vfHwxPT09b3x8LTE9PT1vKSlyZXR1cm4hMDt0aHJvdyBFcnJvcihjK1wiSW52YWxpZCBCaWdOdW1iZXI6IFwiK2UpfSx6Lm1heGltdW09ei5tYXg9ZnVuY3Rpb24oKXtyZXR1cm4gSChhcmd1bWVudHMsVC5sdCl9LHoubWluaW11bT16Lm1pbj1mdW5jdGlvbigpe3JldHVybiBIKGFyZ3VtZW50cyxULmd0KX0sei5yYW5kb209KG89OTAwNzE5OTI1NDc0MDk5MipNYXRoLnJhbmRvbSgpJjIwOTcxNTE/ZnVuY3Rpb24oKXtyZXR1cm4gZig5MDA3MTk5MjU0NzQwOTkyKk1hdGgucmFuZG9tKCkpfTpmdW5jdGlvbigpe3JldHVybiA4Mzg4NjA4KigxMDczNzQxODI0Kk1hdGgucmFuZG9tKCl8MCkrKDgzODg2MDgqTWF0aC5yYW5kb20oKXwwKX0sZnVuY3Rpb24oZSl7dmFyIHQscixuLGksYSx1PTAsaD1bXSxkPW5ldyB6KFApO2lmKG51bGw9PWU/ZT1COl8oZSwwLHkpLGk9cyhlL2wpLGopaWYoY3J5cHRvLmdldFJhbmRvbVZhbHVlcyl7Zm9yKHQ9Y3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDMyQXJyYXkoaSo9MikpO3U8aTspKGE9MTMxMDcyKnRbdV0rKHRbdSsxXT4+PjExKSk+PTllMTU/KHI9Y3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDMyQXJyYXkoMikpLHRbdV09clswXSx0W3UrMV09clsxXSk6KGgucHVzaChhJTFlMTQpLHUrPTIpO3U9aS8yfWVsc2V7aWYoIWNyeXB0by5yYW5kb21CeXRlcyl0aHJvdyBqPSExLEVycm9yKGMrXCJjcnlwdG8gdW5hdmFpbGFibGVcIik7Zm9yKHQ9Y3J5cHRvLnJhbmRvbUJ5dGVzKGkqPTcpO3U8aTspKGE9MjgxNDc0OTc2NzEwNjU2KigzMSZ0W3VdKSsxMDk5NTExNjI3Nzc2KnRbdSsxXSs0Mjk0OTY3Mjk2KnRbdSsyXSsxNjc3NzIxNip0W3UrM10rKHRbdSs0XTw8MTYpKyh0W3UrNV08PDgpK3RbdSs2XSk+PTllMTU/Y3J5cHRvLnJhbmRvbUJ5dGVzKDcpLmNvcHkodCx1KTooaC5wdXNoKGElMWUxNCksdSs9Nyk7dT1pLzd9aWYoIWopZm9yKDt1PGk7KShhPW8oKSk8OWUxNSYmKGhbdSsrXT1hJTFlMTQpO2ZvcihpPWhbLS11XSxlJT1sLGkmJmUmJihhPXBbbC1lXSxoW3VdPWYoaS9hKSphKTswPT09aFt1XTtoLnBvcCgpLHUtLSk7aWYodTwwKWg9W249MF07ZWxzZXtmb3Iobj0tMTswPT09aFswXTtoLnNwbGljZSgwLDEpLG4tPWwpO2Zvcih1PTEsYT1oWzBdO2E+PTEwO2EvPTEwLHUrKyk7dTxsJiYobi09bC11KX1yZXR1cm4gZC5lPW4sZC5jPWgsZH0pLHouc3VtPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTEsdD1hcmd1bWVudHMscj1uZXcgeih0WzBdKTtlPHQubGVuZ3RoOylyPXIucGx1cyh0W2UrK10pO3JldHVybiByfSxuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQscixuKXtmb3IodmFyIGksbyxhPVswXSxzPTAsZj1lLmxlbmd0aDtzPGY7KXtmb3Iobz1hLmxlbmd0aDtvLS07YVtvXSo9dCk7Zm9yKGFbMF0rPW4uaW5kZXhPZihlLmNoYXJBdChzKyspKSxpPTA7aTxhLmxlbmd0aDtpKyspYVtpXT5yLTEmJihudWxsPT1hW2krMV0mJihhW2krMV09MCksYVtpKzFdKz1hW2ldL3J8MCxhW2ldJT1yKX1yZXR1cm4gYS5yZXZlcnNlKCl9cmV0dXJuIGZ1bmN0aW9uKHQsbixpLG8sYSl7dmFyIHMsZixjLHUsaCxsLGQscCxiPXQuaW5kZXhPZihcIi5cIikseT1CLGc9TDtmb3IoYj49MCYmKHU9cSxxPTAsdD10LnJlcGxhY2UoXCIuXCIsXCJcIiksbD0ocD1uZXcgeihuKSkucG93KHQubGVuZ3RoLWIpLHE9dSxwLmM9ZShBKHYobC5jKSxsLmUsXCIwXCIpLDEwLGksXCIwMTIzNDU2Nzg5XCIpLHAuZT1wLmMubGVuZ3RoKSxjPXU9KGQ9ZSh0LG4saSxhPyhzPUYsXCIwMTIzNDU2Nzg5XCIpOihzPVwiMDEyMzQ1Njc4OVwiLEYpKSkubGVuZ3RoOzA9PWRbLS11XTtkLnBvcCgpKTtpZighZFswXSlyZXR1cm4gcy5jaGFyQXQoMCk7aWYoYjwwPy0tYzoobC5jPWQsbC5lPWMsbC5zPW8sZD0obD1yKGwscCx5LGcsaSkpLmMsaD1sLnIsYz1sLmUpLGI9ZFtmPWMreSsxXSx1PWkvMixoPWh8fGY8MHx8bnVsbCE9ZFtmKzFdLGg9Zzw0PyhudWxsIT1ifHxoKSYmKDA9PWd8fGc9PShsLnM8MD8zOjIpKTpiPnV8fGI9PXUmJig0PT1nfHxofHw2PT1nJiYxJmRbZi0xXXx8Zz09KGwuczwwPzg6NykpLGY8MXx8IWRbMF0pdD1oP0Eocy5jaGFyQXQoMSksLXkscy5jaGFyQXQoMCkpOnMuY2hhckF0KDApO2Vsc2V7aWYoZC5sZW5ndGg9ZixoKWZvcigtLWk7KytkWy0tZl0+aTspZFtmXT0wLGZ8fCgrK2MsZD1bMV0uY29uY2F0KGQpKTtmb3IodT1kLmxlbmd0aDshZFstLXVdOyk7Zm9yKGI9MCx0PVwiXCI7Yjw9dTt0Kz1zLmNoYXJBdChkW2IrK10pKTt0PUEodCxjLHMuY2hhckF0KDApKX1yZXR1cm4gdH19KCkscj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LHIpe3ZhciBuLGksbyxhLHM9MCxmPWUubGVuZ3RoLGM9dCViLHU9dC9ifDA7Zm9yKGU9ZS5zbGljZSgpO2YtLTspcz0oKGk9Yyoobz1lW2ZdJWIpKyhuPXUqbysoYT1lW2ZdL2J8MCkqYyklYipiK3MpL3J8MCkrKG4vYnwwKSt1KmEsZVtmXT1pJXI7cmV0dXJuIHMmJihlPVtzXS5jb25jYXQoZSkpLGV9ZnVuY3Rpb24gdChlLHQscixuKXt2YXIgaSxvO2lmKHIhPW4pbz1yPm4/MTotMTtlbHNlIGZvcihpPW89MDtpPHI7aSsrKWlmKGVbaV0hPXRbaV0pe289ZVtpXT50W2ldPzE6LTE7YnJlYWt9cmV0dXJuIG99ZnVuY3Rpb24gcihlLHQscixuKXtmb3IodmFyIGk9MDtyLS07KWVbcl0tPWksaT1lW3JdPHRbcl0/MTowLGVbcl09aSpuK2Vbcl0tdFtyXTtmb3IoOyFlWzBdJiZlLmxlbmd0aD4xO2Uuc3BsaWNlKDAsMSkpO31yZXR1cm4gZnVuY3Rpb24obixpLG8sYSxzKXt2YXIgYyx1LGQscCxiLHksdixtLF8sdyxFLEEsUyxrLHgsSSxNLFQ9bi5zPT1pLnM/MTotMSxQPW4uYyxCPWkuYztpZighKFAmJlBbMF0mJkImJkJbMF0pKXJldHVybiBuZXcgeihuLnMmJmkucyYmKFA/IUJ8fFBbMF0hPUJbMF06Qik/UCYmMD09UFswXXx8IUI/MCpUOlQvMDpOYU4pO2ZvcihfPShtPW5ldyB6KFQpKS5jPVtdLFQ9bysodT1uLmUtaS5lKSsxLHN8fChzPWgsdT1nKG4uZS9sKS1nKGkuZS9sKSxUPVQvbHwwKSxkPTA7QltkXT09KFBbZF18fDApO2QrKyk7aWYoQltkXT4oUFtkXXx8MCkmJnUtLSxUPDApXy5wdXNoKDEpLHA9ITA7ZWxzZXtmb3Ioaz1QLmxlbmd0aCxJPUIubGVuZ3RoLGQ9MCxUKz0yLChiPWYocy8oQlswXSsxKSkpPjEmJihCPWUoQixiLHMpLFA9ZShQLGIscyksST1CLmxlbmd0aCxrPVAubGVuZ3RoKSxTPUksRT0odz1QLnNsaWNlKDAsSSkpLmxlbmd0aDtFPEk7d1tFKytdPTApO009Qi5zbGljZSgpLE09WzBdLmNvbmNhdChNKSx4PUJbMF0sQlsxXT49cy8yJiZ4Kys7ZG97aWYoYj0wLChjPXQoQix3LEksRSkpPDApe2lmKEE9d1swXSxJIT1FJiYoQT1BKnMrKHdbMV18fDApKSwoYj1mKEEveCkpPjEpZm9yKGI+PXMmJihiPXMtMSksdj0oeT1lKEIsYixzKSkubGVuZ3RoLEU9dy5sZW5ndGg7MT09dCh5LHcsdixFKTspYi0tLHIoeSxJPHY/TTpCLHYscyksdj15Lmxlbmd0aCxjPTE7ZWxzZSAwPT1iJiYoYz1iPTEpLHY9KHk9Qi5zbGljZSgpKS5sZW5ndGg7aWYodjxFJiYoeT1bMF0uY29uY2F0KHkpKSxyKHcseSxFLHMpLEU9dy5sZW5ndGgsLTE9PWMpZm9yKDt0KEIsdyxJLEUpPDE7KWIrKyxyKHcsSTxFP006QixFLHMpLEU9dy5sZW5ndGh9ZWxzZSAwPT09YyYmKGIrKyx3PVswXSk7X1tkKytdPWIsd1swXT93W0UrK109UFtTXXx8MDoodz1bUFtTXV0sRT0xKX13aGlsZSgoUysrPGt8fG51bGwhPXdbMF0pJiZULS0pO3A9bnVsbCE9d1swXSxfWzBdfHxfLnNwbGljZSgwLDEpfWlmKHM9PWgpe2ZvcihkPTEsVD1fWzBdO1Q+PTEwO1QvPTEwLGQrKyk7WShtLG8rKG0uZT1kK3UqbC0xKSsxLGEscCl9ZWxzZSBtLmU9dSxtLnI9K3A7cmV0dXJuIG19fSgpLFM9L14oLT8pMChbeGJvXSkoPz1cXHdbXFx3Ll0qJCkvaSxrPS9eKFteLl0rKVxcLiQvLHg9L15cXC4oW14uXSspJC8sST0vXi0/KEluZmluaXR5fE5hTikkLyxNPS9eXFxzKlxcKyg/PVtcXHcuXSl8Xlxccyt8XFxzKyQvZyxpPWZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBpLG89cj90OnQucmVwbGFjZShNLFwiXCIpO2lmKEkudGVzdChvKSllLnM9aXNOYU4obyk/bnVsbDpvPDA/LTE6MTtlbHNle2lmKCFyJiYobz1vLnJlcGxhY2UoUywoZnVuY3Rpb24oZSx0LHIpe3JldHVybiBpPVwieFwiPT0ocj1yLnRvTG93ZXJDYXNlKCkpPzE2OlwiYlwiPT1yPzI6OCxuJiZuIT1pP2U6dH0pKSxuJiYoaT1uLG89by5yZXBsYWNlKGssXCIkMVwiKS5yZXBsYWNlKHgsXCIwLiQxXCIpKSx0IT1vKSlyZXR1cm4gbmV3IHoobyxpKTtpZih6LkRFQlVHKXRocm93IEVycm9yKGMrXCJOb3QgYVwiKyhuP1wiIGJhc2UgXCIrbjpcIlwiKStcIiBudW1iZXI6IFwiK3QpO2Uucz1udWxsfWUuYz1lLmU9bnVsbH0sVC5hYnNvbHV0ZVZhbHVlPVQuYWJzPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IHoodGhpcyk7cmV0dXJuIGUuczwwJiYoZS5zPTEpLGV9LFQuY29tcGFyZWRUbz1mdW5jdGlvbihlLHQpe3JldHVybiBtKHRoaXMsbmV3IHooZSx0KSl9LFQuZGVjaW1hbFBsYWNlcz1ULmRwPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpLG89dGhpcztpZihudWxsIT1lKXJldHVybiBfKGUsMCx5KSxudWxsPT10P3Q9TDpfKHQsMCw4KSxZKG5ldyB6KG8pLGUrby5lKzEsdCk7aWYoIShyPW8uYykpcmV0dXJuIG51bGw7aWYobj0oKGk9ci5sZW5ndGgtMSktZyh0aGlzLmUvbCkpKmwsaT1yW2ldKWZvcig7aSUxMD09MDtpLz0xMCxuLS0pO3JldHVybiBuPDAmJihuPTApLG59LFQuZGl2aWRlZEJ5PVQuZGl2PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIodGhpcyxuZXcgeihlLHQpLEIsTCl9LFQuZGl2aWRlZFRvSW50ZWdlckJ5PVQuaWRpdj1mdW5jdGlvbihlLHQpe3JldHVybiByKHRoaXMsbmV3IHooZSx0KSwwLDEpfSxULmV4cG9uZW50aWF0ZWRCeT1ULnBvdz1mdW5jdGlvbihlLHQpe3ZhciByLG4saSxvLGEsdSxoLGQscD10aGlzO2lmKChlPW5ldyB6KGUpKS5jJiYhZS5pc0ludGVnZXIoKSl0aHJvdyBFcnJvcihjK1wiRXhwb25lbnQgbm90IGFuIGludGVnZXI6IFwiK0coZSkpO2lmKG51bGwhPXQmJih0PW5ldyB6KHQpKSxhPWUuZT4xNCwhcC5jfHwhcC5jWzBdfHwxPT1wLmNbMF0mJiFwLmUmJjE9PXAuYy5sZW5ndGh8fCFlLmN8fCFlLmNbMF0pcmV0dXJuIGQ9bmV3IHooTWF0aC5wb3coK0cocCksYT8yLXcoZSk6K0coZSkpKSx0P2QubW9kKHQpOmQ7aWYodT1lLnM8MCx0KXtpZih0LmM/IXQuY1swXTohdC5zKXJldHVybiBuZXcgeihOYU4pOyhuPSF1JiZwLmlzSW50ZWdlcigpJiZ0LmlzSW50ZWdlcigpKSYmKHA9cC5tb2QodCkpfWVsc2V7aWYoZS5lPjkmJihwLmU+MHx8cC5lPC0xfHwoMD09cC5lP3AuY1swXT4xfHxhJiZwLmNbMV0+PTI0ZTc6cC5jWzBdPDhlMTN8fGEmJnAuY1swXTw9OTk5OTk3NWU3KSkpcmV0dXJuIG89cC5zPDAmJncoZSk/LTA6MCxwLmU+LTEmJihvPTEvbyksbmV3IHoodT8xL286byk7cSYmKG89cyhxL2wrMikpfWZvcihhPyhyPW5ldyB6KC41KSx1JiYoZS5zPTEpLGg9dyhlKSk6aD0oaT1NYXRoLmFicygrRyhlKSkpJTIsZD1uZXcgeihQKTs7KXtpZihoKXtpZighKGQ9ZC50aW1lcyhwKSkuYylicmVhaztvP2QuYy5sZW5ndGg+byYmKGQuYy5sZW5ndGg9byk6biYmKGQ9ZC5tb2QodCkpfWlmKGkpe2lmKDA9PT0oaT1mKGkvMikpKWJyZWFrO2g9aSUyfWVsc2UgaWYoWShlPWUudGltZXMociksZS5lKzEsMSksZS5lPjE0KWg9dyhlKTtlbHNle2lmKDA9PT0oaT0rRyhlKSkpYnJlYWs7aD1pJTJ9cD1wLnRpbWVzKHApLG8/cC5jJiZwLmMubGVuZ3RoPm8mJihwLmMubGVuZ3RoPW8pOm4mJihwPXAubW9kKHQpKX1yZXR1cm4gbj9kOih1JiYoZD1QLmRpdihkKSksdD9kLm1vZCh0KTpvP1koZCxxLEwsdm9pZCAwKTpkKX0sVC5pbnRlZ2VyVmFsdWU9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IHoodGhpcyk7cmV0dXJuIG51bGw9PWU/ZT1MOl8oZSwwLDgpLFkodCx0LmUrMSxlKX0sVC5pc0VxdWFsVG89VC5lcT1mdW5jdGlvbihlLHQpe3JldHVybiAwPT09bSh0aGlzLG5ldyB6KGUsdCkpfSxULmlzRmluaXRlPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmN9LFQuaXNHcmVhdGVyVGhhbj1ULmd0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG0odGhpcyxuZXcgeihlLHQpKT4wfSxULmlzR3JlYXRlclRoYW5PckVxdWFsVG89VC5ndGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gMT09PSh0PW0odGhpcyxuZXcgeihlLHQpKSl8fDA9PT10fSxULmlzSW50ZWdlcj1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5jJiZnKHRoaXMuZS9sKT50aGlzLmMubGVuZ3RoLTJ9LFQuaXNMZXNzVGhhbj1ULmx0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG0odGhpcyxuZXcgeihlLHQpKTwwfSxULmlzTGVzc1RoYW5PckVxdWFsVG89VC5sdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4tMT09PSh0PW0odGhpcyxuZXcgeihlLHQpKSl8fDA9PT10fSxULmlzTmFOPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuc30sVC5pc05lZ2F0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuczwwfSxULmlzUG9zaXRpdmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zPjB9LFQuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmMmJjA9PXRoaXMuY1swXX0sVC5taW51cz1mdW5jdGlvbihlLHQpe3ZhciByLG4saSxvLGE9dGhpcyxzPWEucztpZih0PShlPW5ldyB6KGUsdCkpLnMsIXN8fCF0KXJldHVybiBuZXcgeihOYU4pO2lmKHMhPXQpcmV0dXJuIGUucz0tdCxhLnBsdXMoZSk7dmFyIGY9YS5lL2wsYz1lLmUvbCx1PWEuYyxkPWUuYztpZighZnx8IWMpe2lmKCF1fHwhZClyZXR1cm4gdT8oZS5zPS10LGUpOm5ldyB6KGQ/YTpOYU4pO2lmKCF1WzBdfHwhZFswXSlyZXR1cm4gZFswXT8oZS5zPS10LGUpOm5ldyB6KHVbMF0/YTozPT1MPy0wOjApfWlmKGY9ZyhmKSxjPWcoYyksdT11LnNsaWNlKCkscz1mLWMpe2Zvcigobz1zPDApPyhzPS1zLGk9dSk6KGM9ZixpPWQpLGkucmV2ZXJzZSgpLHQ9czt0LS07aS5wdXNoKDApKTtpLnJldmVyc2UoKX1lbHNlIGZvcihuPShvPShzPXUubGVuZ3RoKTwodD1kLmxlbmd0aCkpP3M6dCxzPXQ9MDt0PG47dCsrKWlmKHVbdF0hPWRbdF0pe289dVt0XTxkW3RdO2JyZWFrfWlmKG8mJihpPXUsdT1kLGQ9aSxlLnM9LWUucyksKHQ9KG49ZC5sZW5ndGgpLShyPXUubGVuZ3RoKSk+MClmb3IoO3QtLTt1W3IrK109MCk7Zm9yKHQ9aC0xO24+czspe2lmKHVbLS1uXTxkW25dKXtmb3Iocj1uO3ImJiF1Wy0tcl07dVtyXT10KTstLXVbcl0sdVtuXSs9aH11W25dLT1kW25dfWZvcig7MD09dVswXTt1LnNwbGljZSgwLDEpLC0tYyk7cmV0dXJuIHVbMF0/VihlLHUsYyk6KGUucz0zPT1MPy0xOjEsZS5jPVtlLmU9MF0sZSl9LFQubW9kdWxvPVQubW9kPWZ1bmN0aW9uKGUsdCl7dmFyIG4saSxvPXRoaXM7cmV0dXJuIGU9bmV3IHooZSx0KSwhby5jfHwhZS5zfHxlLmMmJiFlLmNbMF0/bmV3IHooTmFOKTohZS5jfHxvLmMmJiFvLmNbMF0/bmV3IHoobyk6KDk9PUQ/KGk9ZS5zLGUucz0xLG49cihvLGUsMCwzKSxlLnM9aSxuLnMqPWkpOm49cihvLGUsMCxEKSwoZT1vLm1pbnVzKG4udGltZXMoZSkpKS5jWzBdfHwxIT1EfHwoZS5zPW8ucyksZSl9LFQubXVsdGlwbGllZEJ5PVQudGltZXM9ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGksbyxhLHMsZixjLHUsZCxwLHksdixtLF8sdz10aGlzLEU9dy5jLEE9KGU9bmV3IHooZSx0KSkuYztpZighKEUmJkEmJkVbMF0mJkFbMF0pKXJldHVybiF3LnN8fCFlLnN8fEUmJiFFWzBdJiYhQXx8QSYmIUFbMF0mJiFFP2UuYz1lLmU9ZS5zPW51bGw6KGUucyo9dy5zLEUmJkE/KGUuYz1bMF0sZS5lPTApOmUuYz1lLmU9bnVsbCksZTtmb3Iobj1nKHcuZS9sKStnKGUuZS9sKSxlLnMqPXcucywoZj1FLmxlbmd0aCk8KGQ9QS5sZW5ndGgpJiYodj1FLEU9QSxBPXYsaT1mLGY9ZCxkPWkpLGk9ZitkLHY9W107aS0tO3YucHVzaCgwKSk7Zm9yKG09aCxfPWIsaT1kOy0taT49MDspe2ZvcihyPTAscD1BW2ldJV8seT1BW2ldL198MCxvPWkrKGE9Zik7bz5pOylyPSgoYz1wKihjPUVbLS1hXSVfKSsocz15KmMrKHU9RVthXS9ffDApKnApJV8qXyt2W29dK3IpL218MCkrKHMvX3wwKSt5KnUsdltvLS1dPWMlbTt2W29dPXJ9cmV0dXJuIHI/KytuOnYuc3BsaWNlKDAsMSksVihlLHYsbil9LFQubmVnYXRlZD1mdW5jdGlvbigpe3ZhciBlPW5ldyB6KHRoaXMpO3JldHVybiBlLnM9LWUuc3x8bnVsbCxlfSxULnBsdXM9ZnVuY3Rpb24oZSx0KXt2YXIgcixuPXRoaXMsaT1uLnM7aWYodD0oZT1uZXcgeihlLHQpKS5zLCFpfHwhdClyZXR1cm4gbmV3IHooTmFOKTtpZihpIT10KXJldHVybiBlLnM9LXQsbi5taW51cyhlKTt2YXIgbz1uLmUvbCxhPWUuZS9sLHM9bi5jLGY9ZS5jO2lmKCFvfHwhYSl7aWYoIXN8fCFmKXJldHVybiBuZXcgeihpLzApO2lmKCFzWzBdfHwhZlswXSlyZXR1cm4gZlswXT9lOm5ldyB6KHNbMF0/bjowKmkpfWlmKG89ZyhvKSxhPWcoYSkscz1zLnNsaWNlKCksaT1vLWEpe2ZvcihpPjA/KGE9byxyPWYpOihpPS1pLHI9cyksci5yZXZlcnNlKCk7aS0tO3IucHVzaCgwKSk7ci5yZXZlcnNlKCl9Zm9yKChpPXMubGVuZ3RoKS0odD1mLmxlbmd0aCk8MCYmKHI9ZixmPXMscz1yLHQ9aSksaT0wO3Q7KWk9KHNbLS10XT1zW3RdK2ZbdF0raSkvaHwwLHNbdF09aD09PXNbdF0/MDpzW3RdJWg7cmV0dXJuIGkmJihzPVtpXS5jb25jYXQocyksKythKSxWKGUscyxhKX0sVC5wcmVjaXNpb249VC5zZD1mdW5jdGlvbihlLHQpe3ZhciByLG4saSxvPXRoaXM7aWYobnVsbCE9ZSYmZSE9PSEhZSlyZXR1cm4gXyhlLDEseSksbnVsbD09dD90PUw6Xyh0LDAsOCksWShuZXcgeihvKSxlLHQpO2lmKCEocj1vLmMpKXJldHVybiBudWxsO2lmKG49KGk9ci5sZW5ndGgtMSkqbCsxLGk9cltpXSl7Zm9yKDtpJTEwPT0wO2kvPTEwLG4tLSk7Zm9yKGk9clswXTtpPj0xMDtpLz0xMCxuKyspO31yZXR1cm4gZSYmby5lKzE+biYmKG49by5lKzEpLG59LFQuc2hpZnRlZEJ5PWZ1bmN0aW9uKGUpe3JldHVybiBfKGUsLWQsZCksdGhpcy50aW1lcyhcIjFlXCIrZSl9LFQuc3F1YXJlUm9vdD1ULnNxcnQ9ZnVuY3Rpb24oKXt2YXIgZSx0LG4saSxvLGE9dGhpcyxzPWEuYyxmPWEucyxjPWEuZSx1PUIrNCxoPW5ldyB6KFwiMC41XCIpO2lmKDEhPT1mfHwhc3x8IXNbMF0pcmV0dXJuIG5ldyB6KCFmfHxmPDAmJighc3x8c1swXSk/TmFOOnM/YToxLzApO2lmKDA9PShmPU1hdGguc3FydCgrRyhhKSkpfHxmPT0xLzA/KCgodD12KHMpKS5sZW5ndGgrYyklMj09MCYmKHQrPVwiMFwiKSxmPU1hdGguc3FydCgrdCksYz1nKChjKzEpLzIpLShjPDB8fGMlMiksbj1uZXcgeih0PWY9PTEvMD9cIjFlXCIrYzoodD1mLnRvRXhwb25lbnRpYWwoKSkuc2xpY2UoMCx0LmluZGV4T2YoXCJlXCIpKzEpK2MpKTpuPW5ldyB6KGYrXCJcIiksbi5jWzBdKWZvcigoZj0oYz1uLmUpK3UpPDMmJihmPTApOzspaWYobz1uLG49aC50aW1lcyhvLnBsdXMocihhLG8sdSwxKSkpLHYoby5jKS5zbGljZSgwLGYpPT09KHQ9dihuLmMpKS5zbGljZSgwLGYpKXtpZihuLmU8YyYmLS1mLFwiOTk5OVwiIT0odD10LnNsaWNlKGYtMyxmKzEpKSYmKGl8fFwiNDk5OVwiIT10KSl7K3QmJigrdC5zbGljZSgxKXx8XCI1XCIhPXQuY2hhckF0KDApKXx8KFkobixuLmUrQisyLDEpLGU9IW4udGltZXMobikuZXEoYSkpO2JyZWFrfWlmKCFpJiYoWShvLG8uZStCKzIsMCksby50aW1lcyhvKS5lcShhKSkpe249bzticmVha311Kz00LGYrPTQsaT0xfXJldHVybiBZKG4sbi5lK0IrMSxMLGUpfSxULnRvRXhwb25lbnRpYWw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbCE9ZSYmKF8oZSwwLHkpLGUrKyksSyh0aGlzLGUsdCwxKX0sVC50b0ZpeGVkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGwhPWUmJihfKGUsMCx5KSxlPWUrdGhpcy5lKzEpLEsodGhpcyxlLHQpfSxULnRvRm9ybWF0PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbixpPXRoaXM7aWYobnVsbD09ciludWxsIT1lJiZ0JiZcIm9iamVjdFwiPT10eXBlb2YgdD8ocj10LHQ9bnVsbCk6ZSYmXCJvYmplY3RcIj09dHlwZW9mIGU/KHI9ZSxlPXQ9bnVsbCk6cj1VO2Vsc2UgaWYoXCJvYmplY3RcIiE9dHlwZW9mIHIpdGhyb3cgRXJyb3IoYytcIkFyZ3VtZW50IG5vdCBhbiBvYmplY3Q6IFwiK3IpO2lmKG49aS50b0ZpeGVkKGUsdCksaS5jKXt2YXIgbyxhPW4uc3BsaXQoXCIuXCIpLHM9K3IuZ3JvdXBTaXplLGY9K3Iuc2Vjb25kYXJ5R3JvdXBTaXplLHU9ci5ncm91cFNlcGFyYXRvcnx8XCJcIixoPWFbMF0sbD1hWzFdLGQ9aS5zPDAscD1kP2guc2xpY2UoMSk6aCxiPXAubGVuZ3RoO2lmKGYmJihvPXMscz1mLGY9byxiLT1vKSxzPjAmJmI+MCl7Zm9yKG89YiVzfHxzLGg9cC5zdWJzdHIoMCxvKTtvPGI7bys9cyloKz11K3Auc3Vic3RyKG8scyk7Zj4wJiYoaCs9dStwLnNsaWNlKG8pKSxkJiYoaD1cIi1cIitoKX1uPWw/aCsoci5kZWNpbWFsU2VwYXJhdG9yfHxcIlwiKSsoKGY9K3IuZnJhY3Rpb25Hcm91cFNpemUpP2wucmVwbGFjZShuZXcgUmVnRXhwKFwiXFxcXGR7XCIrZitcIn1cXFxcQlwiLFwiZ1wiKSxcIiQmXCIrKHIuZnJhY3Rpb25Hcm91cFNlcGFyYXRvcnx8XCJcIikpOmwpOmh9cmV0dXJuKHIucHJlZml4fHxcIlwiKStuKyhyLnN1ZmZpeHx8XCJcIil9LFQudG9GcmFjdGlvbj1mdW5jdGlvbihlKXt2YXIgdCxuLGksbyxhLHMsZix1LGgsZCxiLHksZz10aGlzLG09Zy5jO2lmKG51bGwhPWUmJighKGY9bmV3IHooZSkpLmlzSW50ZWdlcigpJiYoZi5jfHwxIT09Zi5zKXx8Zi5sdChQKSkpdGhyb3cgRXJyb3IoYytcIkFyZ3VtZW50IFwiKyhmLmlzSW50ZWdlcigpP1wib3V0IG9mIHJhbmdlOiBcIjpcIm5vdCBhbiBpbnRlZ2VyOiBcIikrRyhmKSk7aWYoIW0pcmV0dXJuIG5ldyB6KGcpO2Zvcih0PW5ldyB6KFApLGg9bj1uZXcgeihQKSxpPXU9bmV3IHooUCkseT12KG0pLGE9dC5lPXkubGVuZ3RoLWcuZS0xLHQuY1swXT1wWyhzPWElbCk8MD9sK3M6c10sZT0hZXx8Zi5jb21wYXJlZFRvKHQpPjA/YT4wP3Q6aDpmLHM9TixOPTEvMCxmPW5ldyB6KHkpLHUuY1swXT0wO2Q9cihmLHQsMCwxKSwxIT0obz1uLnBsdXMoZC50aW1lcyhpKSkpLmNvbXBhcmVkVG8oZSk7KW49aSxpPW8saD11LnBsdXMoZC50aW1lcyhvPWgpKSx1PW8sdD1mLm1pbnVzKGQudGltZXMobz10KSksZj1vO3JldHVybiBvPXIoZS5taW51cyhuKSxpLDAsMSksdT11LnBsdXMoby50aW1lcyhoKSksbj1uLnBsdXMoby50aW1lcyhpKSksdS5zPWgucz1nLnMsYj1yKGgsaSxhKj0yLEwpLm1pbnVzKGcpLmFicygpLmNvbXBhcmVkVG8ocih1LG4sYSxMKS5taW51cyhnKS5hYnMoKSk8MT9baCxpXTpbdSxuXSxOPXMsYn0sVC50b051bWJlcj1mdW5jdGlvbigpe3JldHVybitHKHRoaXMpfSxULnRvUHJlY2lzaW9uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGwhPWUmJl8oZSwxLHkpLEsodGhpcyxlLHQsMil9LFQudG9TdHJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQscj10aGlzLGk9ci5zLG89ci5lO3JldHVybiBudWxsPT09bz9pPyh0PVwiSW5maW5pdHlcIixpPDAmJih0PVwiLVwiK3QpKTp0PVwiTmFOXCI6KG51bGw9PWU/dD1vPD1SfHxvPj1PP0UodihyLmMpLG8pOkEodihyLmMpLG8sXCIwXCIpOjEwPT09ZT90PUEodigocj1ZKG5ldyB6KHIpLEIrbysxLEwpKS5jKSxyLmUsXCIwXCIpOihfKGUsMixGLmxlbmd0aCxcIkJhc2VcIiksdD1uKEEodihyLmMpLG8sXCIwXCIpLDEwLGUsaSwhMCkpLGk8MCYmci5jWzBdJiYodD1cIi1cIit0KSksdH0sVC52YWx1ZU9mPVQudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIEcodGhpcyl9LFQuX2lzQmlnTnVtYmVyPSEwLG51bGwhPXQmJnouc2V0KHQpLHp9KCkpLmRlZmF1bHQ9by5CaWdOdW1iZXI9byx2b2lkIDA9PT0obj1mdW5jdGlvbigpe3JldHVybiBvfS5jYWxsKHQscix0LGUpKXx8KGUuZXhwb3J0cz1uKX0oKX0sZnVuY3Rpb24oZSx0LHIpe2UuZXhwb3J0cz1pO3ZhciBuPXIoNikuRXZlbnRFbWl0dGVyO2Z1bmN0aW9uIGkoKXtuLmNhbGwodGhpcyl9cigwKShpLG4pLGkuUmVhZGFibGU9cigzMiksaS5Xcml0YWJsZT1yKDEyMCksaS5EdXBsZXg9cigxMjEpLGkuVHJhbnNmb3JtPXIoMTIyKSxpLlBhc3NUaHJvdWdoPXIoMTIzKSxpLlN0cmVhbT1pLGkucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzO2Z1bmN0aW9uIGkodCl7ZS53cml0YWJsZSYmITE9PT1lLndyaXRlKHQpJiZyLnBhdXNlJiZyLnBhdXNlKCl9ZnVuY3Rpb24gbygpe3IucmVhZGFibGUmJnIucmVzdW1lJiZyLnJlc3VtZSgpfXIub24oXCJkYXRhXCIsaSksZS5vbihcImRyYWluXCIsbyksZS5faXNTdGRpb3x8dCYmITE9PT10LmVuZHx8KHIub24oXCJlbmRcIixzKSxyLm9uKFwiY2xvc2VcIixmKSk7dmFyIGE9ITE7ZnVuY3Rpb24gcygpe2F8fChhPSEwLGUuZW5kKCkpfWZ1bmN0aW9uIGYoKXthfHwoYT0hMCxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmRlc3Ryb3kmJmUuZGVzdHJveSgpKX1mdW5jdGlvbiBjKGUpe2lmKHUoKSwwPT09bi5saXN0ZW5lckNvdW50KHRoaXMsXCJlcnJvclwiKSl0aHJvdyBlfWZ1bmN0aW9uIHUoKXtyLnJlbW92ZUxpc3RlbmVyKFwiZGF0YVwiLGkpLGUucmVtb3ZlTGlzdGVuZXIoXCJkcmFpblwiLG8pLHIucmVtb3ZlTGlzdGVuZXIoXCJlbmRcIixzKSxyLnJlbW92ZUxpc3RlbmVyKFwiY2xvc2VcIixmKSxyLnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIixjKSxlLnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIixjKSxyLnJlbW92ZUxpc3RlbmVyKFwiZW5kXCIsdSksci5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIsdSksZS5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIsdSl9cmV0dXJuIHIub24oXCJlcnJvclwiLGMpLGUub24oXCJlcnJvclwiLGMpLHIub24oXCJlbmRcIix1KSxyLm9uKFwiY2xvc2VcIix1KSxlLm9uKFwiY2xvc2VcIix1KSxlLmVtaXQoXCJwaXBlXCIsciksZX19LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjsoZnVuY3Rpb24odCl7dm9pZCAwPT09dHx8IXQudmVyc2lvbnx8MD09PXQudmVyc2lvbi5pbmRleE9mKFwidjAuXCIpfHwwPT09dC52ZXJzaW9uLmluZGV4T2YoXCJ2MS5cIikmJjAhPT10LnZlcnNpb24uaW5kZXhPZihcInYxLjguXCIpP2UuZXhwb3J0cz17bmV4dFRpY2s6ZnVuY3Rpb24oZSxyLG4saSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdcImNhbGxiYWNrXCIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7dmFyIG8sYSxzPWFyZ3VtZW50cy5sZW5ndGg7c3dpdGNoKHMpe2Nhc2UgMDpjYXNlIDE6cmV0dXJuIHQubmV4dFRpY2soZSk7Y2FzZSAyOnJldHVybiB0Lm5leHRUaWNrKChmdW5jdGlvbigpe2UuY2FsbChudWxsLHIpfSkpO2Nhc2UgMzpyZXR1cm4gdC5uZXh0VGljaygoZnVuY3Rpb24oKXtlLmNhbGwobnVsbCxyLG4pfSkpO2Nhc2UgNDpyZXR1cm4gdC5uZXh0VGljaygoZnVuY3Rpb24oKXtlLmNhbGwobnVsbCxyLG4saSl9KSk7ZGVmYXVsdDpmb3Iobz1uZXcgQXJyYXkocy0xKSxhPTA7YTxvLmxlbmd0aDspb1thKytdPWFyZ3VtZW50c1thXTtyZXR1cm4gdC5uZXh0VGljaygoZnVuY3Rpb24oKXtlLmFwcGx5KG51bGwsbyl9KSl9fX06ZS5leHBvcnRzPXR9KS5jYWxsKHRoaXMscig5KSl9LGZ1bmN0aW9uKGUsdCxyKXsoZnVuY3Rpb24oZSl7dmFyIG49dm9pZCAwIT09ZSYmZXx8XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGYmJnNlbGZ8fHdpbmRvdyxpPUZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseTtmdW5jdGlvbiBvKGUsdCl7dGhpcy5faWQ9ZSx0aGlzLl9jbGVhckZuPXR9dC5zZXRUaW1lb3V0PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBvKGkuY2FsbChzZXRUaW1lb3V0LG4sYXJndW1lbnRzKSxjbGVhclRpbWVvdXQpfSx0LnNldEludGVydmFsPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBvKGkuY2FsbChzZXRJbnRlcnZhbCxuLGFyZ3VtZW50cyksY2xlYXJJbnRlcnZhbCl9LHQuY2xlYXJUaW1lb3V0PXQuY2xlYXJJbnRlcnZhbD1mdW5jdGlvbihlKXtlJiZlLmNsb3NlKCl9LG8ucHJvdG90eXBlLnVucmVmPW8ucHJvdG90eXBlLnJlZj1mdW5jdGlvbigpe30sby5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oKXt0aGlzLl9jbGVhckZuLmNhbGwobix0aGlzLl9pZCl9LHQuZW5yb2xsPWZ1bmN0aW9uKGUsdCl7Y2xlYXJUaW1lb3V0KGUuX2lkbGVUaW1lb3V0SWQpLGUuX2lkbGVUaW1lb3V0PXR9LHQudW5lbnJvbGw9ZnVuY3Rpb24oZSl7Y2xlYXJUaW1lb3V0KGUuX2lkbGVUaW1lb3V0SWQpLGUuX2lkbGVUaW1lb3V0PS0xfSx0Ll91bnJlZkFjdGl2ZT10LmFjdGl2ZT1mdW5jdGlvbihlKXtjbGVhclRpbWVvdXQoZS5faWRsZVRpbWVvdXRJZCk7dmFyIHQ9ZS5faWRsZVRpbWVvdXQ7dD49MCYmKGUuX2lkbGVUaW1lb3V0SWQ9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlLl9vblRpbWVvdXQmJmUuX29uVGltZW91dCgpfSksdCkpfSxyKDExNyksdC5zZXRJbW1lZGlhdGU9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGYmJnNlbGYuc2V0SW1tZWRpYXRlfHx2b2lkIDAhPT1lJiZlLnNldEltbWVkaWF0ZXx8dGhpcyYmdGhpcy5zZXRJbW1lZGlhdGUsdC5jbGVhckltbWVkaWF0ZT1cInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZiYmc2VsZi5jbGVhckltbWVkaWF0ZXx8dm9pZCAwIT09ZSYmZS5jbGVhckltbWVkaWF0ZXx8dGhpcyYmdGhpcy5jbGVhckltbWVkaWF0ZX0pLmNhbGwodGhpcyxyKDQpKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUud2VicGFja1BvbHlmaWxsfHwoZS5kZXByZWNhdGU9ZnVuY3Rpb24oKXt9LGUucGF0aHM9W10sZS5jaGlsZHJlbnx8KGUuY2hpbGRyZW49W10pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwibG9hZGVkXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUubH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImlkXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuaX19KSxlLndlYnBhY2tQb2x5ZmlsbD0xKSxlfX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMyksaT1yKDUpLG89aS5nZXROQUYsYT1pLmdldEpTRixzPWkuYXNzZXJ0O2Z1bmN0aW9uIGYoZSx0KXt0aGlzLnR5cGU9ZSx0aGlzLnA9bmV3IG4odC5wLDE2KSx0aGlzLnJlZD10LnByaW1lP24ucmVkKHQucHJpbWUpOm4ubW9udCh0aGlzLnApLHRoaXMuemVybz1uZXcgbigwKS50b1JlZCh0aGlzLnJlZCksdGhpcy5vbmU9bmV3IG4oMSkudG9SZWQodGhpcy5yZWQpLHRoaXMudHdvPW5ldyBuKDIpLnRvUmVkKHRoaXMucmVkKSx0aGlzLm49dC5uJiZuZXcgbih0Lm4sMTYpLHRoaXMuZz10LmcmJnRoaXMucG9pbnRGcm9tSlNPTih0LmcsdC5nUmVkKSx0aGlzLl93bmFmVDE9bmV3IEFycmF5KDQpLHRoaXMuX3duYWZUMj1uZXcgQXJyYXkoNCksdGhpcy5fd25hZlQzPW5ldyBBcnJheSg0KSx0aGlzLl93bmFmVDQ9bmV3IEFycmF5KDQpO3ZhciByPXRoaXMubiYmdGhpcy5wLmRpdih0aGlzLm4pOyFyfHxyLmNtcG4oMTAwKT4wP3RoaXMucmVkTj1udWxsOih0aGlzLl9tYXh3ZWxsVHJpY2s9ITAsdGhpcy5yZWROPXRoaXMubi50b1JlZCh0aGlzLnJlZCkpfWZ1bmN0aW9uIGMoZSx0KXt0aGlzLmN1cnZlPWUsdGhpcy50eXBlPXQsdGhpcy5wcmVjb21wdXRlZD1udWxsfWUuZXhwb3J0cz1mLGYucHJvdG90eXBlLnBvaW50PWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwiTm90IGltcGxlbWVudGVkXCIpfSxmLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihcIk5vdCBpbXBsZW1lbnRlZFwiKX0sZi5wcm90b3R5cGUuX2ZpeGVkTmFmTXVsPWZ1bmN0aW9uKGUsdCl7cyhlLnByZWNvbXB1dGVkKTt2YXIgcj1lLl9nZXREb3VibGVzKCksbj1vKHQsMSksaT0oMTw8ci5zdGVwKzEpLShyLnN0ZXAlMj09MD8yOjEpO2kvPTM7Zm9yKHZhciBhPVtdLGY9MDtmPG4ubGVuZ3RoO2YrPXIuc3RlcCl7dmFyIGM9MDtmb3IodD1mK3Iuc3RlcC0xO3Q+PWY7dC0tKWM9KGM8PDEpK25bdF07YS5wdXNoKGMpfWZvcih2YXIgdT10aGlzLmpwb2ludChudWxsLG51bGwsbnVsbCksaD10aGlzLmpwb2ludChudWxsLG51bGwsbnVsbCksbD1pO2w+MDtsLS0pe2ZvcihmPTA7ZjxhLmxlbmd0aDtmKyspeyhjPWFbZl0pPT09bD9oPWgubWl4ZWRBZGQoci5wb2ludHNbZl0pOmM9PT0tbCYmKGg9aC5taXhlZEFkZChyLnBvaW50c1tmXS5uZWcoKSkpfXU9dS5hZGQoaCl9cmV0dXJuIHUudG9QKCl9LGYucHJvdG90eXBlLl93bmFmTXVsPWZ1bmN0aW9uKGUsdCl7dmFyIHI9NCxuPWUuX2dldE5BRlBvaW50cyhyKTtyPW4ud25kO2Zvcih2YXIgaT1uLnBvaW50cyxhPW8odCxyKSxmPXRoaXMuanBvaW50KG51bGwsbnVsbCxudWxsKSxjPWEubGVuZ3RoLTE7Yz49MDtjLS0pe2Zvcih0PTA7Yz49MCYmMD09PWFbY107Yy0tKXQrKztpZihjPj0wJiZ0KyssZj1mLmRibHAodCksYzwwKWJyZWFrO3ZhciB1PWFbY107cygwIT09dSksZj1cImFmZmluZVwiPT09ZS50eXBlP3U+MD9mLm1peGVkQWRkKGlbdS0xPj4xXSk6Zi5taXhlZEFkZChpWy11LTE+PjFdLm5lZygpKTp1PjA/Zi5hZGQoaVt1LTE+PjFdKTpmLmFkZChpWy11LTE+PjFdLm5lZygpKX1yZXR1cm5cImFmZmluZVwiPT09ZS50eXBlP2YudG9QKCk6Zn0sZi5wcm90b3R5cGUuX3duYWZNdWxBZGQ9ZnVuY3Rpb24oZSx0LHIsbixpKXtmb3IodmFyIHM9dGhpcy5fd25hZlQxLGY9dGhpcy5fd25hZlQyLGM9dGhpcy5fd25hZlQzLHU9MCxoPTA7aDxuO2grKyl7dmFyIGw9KGs9dFtoXSkuX2dldE5BRlBvaW50cyhlKTtzW2hdPWwud25kLGZbaF09bC5wb2ludHN9Zm9yKGg9bi0xO2g+PTE7aC09Mil7dmFyIGQ9aC0xLHA9aDtpZigxPT09c1tkXSYmMT09PXNbcF0pe3ZhciBiPVt0W2RdLG51bGwsbnVsbCx0W3BdXTswPT09dFtkXS55LmNtcCh0W3BdLnkpPyhiWzFdPXRbZF0uYWRkKHRbcF0pLGJbMl09dFtkXS50b0ooKS5taXhlZEFkZCh0W3BdLm5lZygpKSk6MD09PXRbZF0ueS5jbXAodFtwXS55LnJlZE5lZygpKT8oYlsxXT10W2RdLnRvSigpLm1peGVkQWRkKHRbcF0pLGJbMl09dFtkXS5hZGQodFtwXS5uZWcoKSkpOihiWzFdPXRbZF0udG9KKCkubWl4ZWRBZGQodFtwXSksYlsyXT10W2RdLnRvSigpLm1peGVkQWRkKHRbcF0ubmVnKCkpKTt2YXIgeT1bLTMsLTEsLTUsLTcsMCw3LDUsMSwzXSxnPWEocltkXSxyW3BdKTt1PU1hdGgubWF4KGdbMF0ubGVuZ3RoLHUpLGNbZF09bmV3IEFycmF5KHUpLGNbcF09bmV3IEFycmF5KHUpO2Zvcih2YXIgdj0wO3Y8dTt2Kyspe3ZhciBtPTB8Z1swXVt2XSxfPTB8Z1sxXVt2XTtjW2RdW3ZdPXlbMyoobSsxKSsoXysxKV0sY1twXVt2XT0wLGZbZF09Yn19ZWxzZSBjW2RdPW8ocltkXSxzW2RdKSxjW3BdPW8ocltwXSxzW3BdKSx1PU1hdGgubWF4KGNbZF0ubGVuZ3RoLHUpLHU9TWF0aC5tYXgoY1twXS5sZW5ndGgsdSl9dmFyIHc9dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpLEU9dGhpcy5fd25hZlQ0O2ZvcihoPXU7aD49MDtoLS0pe2Zvcih2YXIgQT0wO2g+PTA7KXt2YXIgUz0hMDtmb3Iodj0wO3Y8bjt2KyspRVt2XT0wfGNbdl1baF0sMCE9PUVbdl0mJihTPSExKTtpZighUylicmVhaztBKyssaC0tfWlmKGg+PTAmJkErKyx3PXcuZGJscChBKSxoPDApYnJlYWs7Zm9yKHY9MDt2PG47disrKXt2YXIgayx4PUVbdl07MCE9PXgmJih4PjA/az1mW3ZdW3gtMT4+MV06eDwwJiYoaz1mW3ZdWy14LTE+PjFdLm5lZygpKSx3PVwiYWZmaW5lXCI9PT1rLnR5cGU/dy5taXhlZEFkZChrKTp3LmFkZChrKSl9fWZvcihoPTA7aDxuO2grKylmW2hdPW51bGw7cmV0dXJuIGk/dzp3LnRvUCgpfSxmLkJhc2VQb2ludD1jLGMucHJvdG90eXBlLmVxPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwiTm90IGltcGxlbWVudGVkXCIpfSxjLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnZlLnZhbGlkYXRlKHRoaXMpfSxmLnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlvbihlLHQpe2U9aS50b0FycmF5KGUsdCk7dmFyIHI9dGhpcy5wLmJ5dGVMZW5ndGgoKTtpZigoND09PWVbMF18fDY9PT1lWzBdfHw3PT09ZVswXSkmJmUubGVuZ3RoLTE9PTIqcilyZXR1cm4gNj09PWVbMF0/cyhlW2UubGVuZ3RoLTFdJTI9PTApOjc9PT1lWzBdJiZzKGVbZS5sZW5ndGgtMV0lMj09MSksdGhpcy5wb2ludChlLnNsaWNlKDEsMStyKSxlLnNsaWNlKDErciwxKzIqcikpO2lmKCgyPT09ZVswXXx8Mz09PWVbMF0pJiZlLmxlbmd0aC0xPT09cilyZXR1cm4gdGhpcy5wb2ludEZyb21YKGUuc2xpY2UoMSwxK3IpLDM9PT1lWzBdKTt0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIHBvaW50IGZvcm1hdFwiKX0sYy5wcm90b3R5cGUuZW5jb2RlQ29tcHJlc3NlZD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lbmNvZGUoZSwhMCl9LGMucHJvdG90eXBlLl9lbmNvZGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5jdXJ2ZS5wLmJ5dGVMZW5ndGgoKSxyPXRoaXMuZ2V0WCgpLnRvQXJyYXkoXCJiZVwiLHQpO3JldHVybiBlP1t0aGlzLmdldFkoKS5pc0V2ZW4oKT8yOjNdLmNvbmNhdChyKTpbNF0uY29uY2F0KHIsdGhpcy5nZXRZKCkudG9BcnJheShcImJlXCIsdCkpfSxjLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaS5lbmNvZGUodGhpcy5fZW5jb2RlKHQpLGUpfSxjLnByb3RvdHlwZS5wcmVjb21wdXRlPWZ1bmN0aW9uKGUpe2lmKHRoaXMucHJlY29tcHV0ZWQpcmV0dXJuIHRoaXM7dmFyIHQ9e2RvdWJsZXM6bnVsbCxuYWY6bnVsbCxiZXRhOm51bGx9O3JldHVybiB0Lm5hZj10aGlzLl9nZXROQUZQb2ludHMoOCksdC5kb3VibGVzPXRoaXMuX2dldERvdWJsZXMoNCxlKSx0LmJldGE9dGhpcy5fZ2V0QmV0YSgpLHRoaXMucHJlY29tcHV0ZWQ9dCx0aGlzfSxjLnByb3RvdHlwZS5faGFzRG91Ymxlcz1mdW5jdGlvbihlKXtpZighdGhpcy5wcmVjb21wdXRlZClyZXR1cm4hMTt2YXIgdD10aGlzLnByZWNvbXB1dGVkLmRvdWJsZXM7cmV0dXJuISF0JiZ0LnBvaW50cy5sZW5ndGg+PU1hdGguY2VpbCgoZS5iaXRMZW5ndGgoKSsxKS90LnN0ZXApfSxjLnByb3RvdHlwZS5fZ2V0RG91Ymxlcz1mdW5jdGlvbihlLHQpe2lmKHRoaXMucHJlY29tcHV0ZWQmJnRoaXMucHJlY29tcHV0ZWQuZG91YmxlcylyZXR1cm4gdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzO2Zvcih2YXIgcj1bdGhpc10sbj10aGlzLGk9MDtpPHQ7aSs9ZSl7Zm9yKHZhciBvPTA7bzxlO28rKyluPW4uZGJsKCk7ci5wdXNoKG4pfXJldHVybntzdGVwOmUscG9pbnRzOnJ9fSxjLnByb3RvdHlwZS5fZ2V0TkFGUG9pbnRzPWZ1bmN0aW9uKGUpe2lmKHRoaXMucHJlY29tcHV0ZWQmJnRoaXMucHJlY29tcHV0ZWQubmFmKXJldHVybiB0aGlzLnByZWNvbXB1dGVkLm5hZjtmb3IodmFyIHQ9W3RoaXNdLHI9KDE8PGUpLTEsbj0xPT09cj9udWxsOnRoaXMuZGJsKCksaT0xO2k8cjtpKyspdFtpXT10W2ktMV0uYWRkKG4pO3JldHVybnt3bmQ6ZSxwb2ludHM6dH19LGMucHJvdG90eXBlLl9nZXRCZXRhPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGMucHJvdG90eXBlLmRibHA9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMscj0wO3I8ZTtyKyspdD10LmRibCgpO3JldHVybiB0fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtmb3IodmFyIGU9e30sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIGkgaW4gbilyLmNhbGwobixpKSYmKGVbaV09bltpXSl9cmV0dXJuIGV9O3ZhciByPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2NyksaT1yKDc5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJmkoZS5sZW5ndGgpJiYhbihlKX19LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSx0KXt0fD0wO2Zvcih2YXIgcj1NYXRoLm1heChlLmxlbmd0aC10LDApLG49QXJyYXkociksaT0wO2k8cjtpKyspbltpXT1lW3QraV07cmV0dXJuIG59LGUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxyKXsodD1lLmV4cG9ydHM9cig1MykpLlN0cmVhbT10LHQuUmVhZGFibGU9dCx0LldyaXRhYmxlPXIoMzQpLHQuRHVwbGV4PXIoMTApLHQuVHJhbnNmb3JtPXIoNTYpLHQuUGFzc1Rocm91Z2g9cigxMTkpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig3KSxpPW4uQnVmZmVyO2Z1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHIgaW4gZSl0W3JdPWVbcl19ZnVuY3Rpb24gYShlLHQscil7cmV0dXJuIGkoZSx0LHIpfWkuZnJvbSYmaS5hbGxvYyYmaS5hbGxvY1Vuc2FmZSYmaS5hbGxvY1Vuc2FmZVNsb3c/ZS5leHBvcnRzPW46KG8obix0KSx0LkJ1ZmZlcj1hKSxvKGksYSksYS5mcm9tPWZ1bmN0aW9uKGUsdCxyKXtpZihcIm51bWJlclwiPT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXJcIik7cmV0dXJuIGkoZSx0LHIpfSxhLmFsbG9jPWZ1bmN0aW9uKGUsdCxyKXtpZihcIm51bWJlclwiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlclwiKTt2YXIgbj1pKGUpO3JldHVybiB2b2lkIDAhPT10P1wic3RyaW5nXCI9PXR5cGVvZiByP24uZmlsbCh0LHIpOm4uZmlsbCh0KTpuLmZpbGwoMCksbn0sYS5hbGxvY1Vuc2FmZT1mdW5jdGlvbihlKXtpZihcIm51bWJlclwiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlclwiKTtyZXR1cm4gaShlKX0sYS5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oZSl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXJcIik7cmV0dXJuIG4uU2xvd0J1ZmZlcihlKX19LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjsoZnVuY3Rpb24odCxuLGkpe3ZhciBvPXIoMjUpO2Z1bmN0aW9uIGEoZSl7dmFyIHQ9dGhpczt0aGlzLm5leHQ9bnVsbCx0aGlzLmVudHJ5PW51bGwsdGhpcy5maW5pc2g9ZnVuY3Rpb24oKXshZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWUuZW50cnk7ZS5lbnRyeT1udWxsO2Zvcig7bjspe3ZhciBpPW4uY2FsbGJhY2s7dC5wZW5kaW5nY2ItLSxpKHIpLG49bi5uZXh0fXQuY29ya2VkUmVxdWVzdHNGcmVlP3QuY29ya2VkUmVxdWVzdHNGcmVlLm5leHQ9ZTp0LmNvcmtlZFJlcXVlc3RzRnJlZT1lfSh0LGUpfX1lLmV4cG9ydHM9djt2YXIgcyxmPSF0LmJyb3dzZXImJltcInYwLjEwXCIsXCJ2MC45LlwiXS5pbmRleE9mKHQudmVyc2lvbi5zbGljZSgwLDUpKT4tMT9uOm8ubmV4dFRpY2s7di5Xcml0YWJsZVN0YXRlPWc7dmFyIGM9cigxNik7Yy5pbmhlcml0cz1yKDApO3ZhciB1PXtkZXByZWNhdGU6cigxMTgpfSxoPXIoNTQpLGw9cigzMykuQnVmZmVyLGQ9aS5VaW50OEFycmF5fHxmdW5jdGlvbigpe307dmFyIHAsYj1yKDU1KTtmdW5jdGlvbiB5KCl7fWZ1bmN0aW9uIGcoZSx0KXtzPXN8fHIoMTApLGU9ZXx8e307dmFyIG49dCBpbnN0YW5jZW9mIHM7dGhpcy5vYmplY3RNb2RlPSEhZS5vYmplY3RNb2RlLG4mJih0aGlzLm9iamVjdE1vZGU9dGhpcy5vYmplY3RNb2RlfHwhIWUud3JpdGFibGVPYmplY3RNb2RlKTt2YXIgaT1lLmhpZ2hXYXRlck1hcmssYz1lLndyaXRhYmxlSGlnaFdhdGVyTWFyayx1PXRoaXMub2JqZWN0TW9kZT8xNjoxNjM4NDt0aGlzLmhpZ2hXYXRlck1hcms9aXx8MD09PWk/aTpuJiYoY3x8MD09PWMpP2M6dSx0aGlzLmhpZ2hXYXRlck1hcms9TWF0aC5mbG9vcih0aGlzLmhpZ2hXYXRlck1hcmspLHRoaXMuZmluYWxDYWxsZWQ9ITEsdGhpcy5uZWVkRHJhaW49ITEsdGhpcy5lbmRpbmc9ITEsdGhpcy5lbmRlZD0hMSx0aGlzLmZpbmlzaGVkPSExLHRoaXMuZGVzdHJveWVkPSExO3ZhciBoPSExPT09ZS5kZWNvZGVTdHJpbmdzO3RoaXMuZGVjb2RlU3RyaW5ncz0haCx0aGlzLmRlZmF1bHRFbmNvZGluZz1lLmRlZmF1bHRFbmNvZGluZ3x8XCJ1dGY4XCIsdGhpcy5sZW5ndGg9MCx0aGlzLndyaXRpbmc9ITEsdGhpcy5jb3JrZWQ9MCx0aGlzLnN5bmM9ITAsdGhpcy5idWZmZXJQcm9jZXNzaW5nPSExLHRoaXMub253cml0ZT1mdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXt2YXIgcj1lLl93cml0YWJsZVN0YXRlLG49ci5zeW5jLGk9ci53cml0ZWNiO2lmKGZ1bmN0aW9uKGUpe2Uud3JpdGluZz0hMSxlLndyaXRlY2I9bnVsbCxlLmxlbmd0aC09ZS53cml0ZWxlbixlLndyaXRlbGVuPTB9KHIpLHQpIWZ1bmN0aW9uKGUsdCxyLG4saSl7LS10LnBlbmRpbmdjYixyPyhvLm5leHRUaWNrKGksbiksby5uZXh0VGljayhTLGUsdCksZS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAsZS5lbWl0KFwiZXJyb3JcIixuKSk6KGkobiksZS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAsZS5lbWl0KFwiZXJyb3JcIixuKSxTKGUsdCkpfShlLHIsbix0LGkpO2Vsc2V7dmFyIGE9RShyKTthfHxyLmNvcmtlZHx8ci5idWZmZXJQcm9jZXNzaW5nfHwhci5idWZmZXJlZFJlcXVlc3R8fHcoZSxyKSxuP2YoXyxlLHIsYSxpKTpfKGUscixhLGkpfX0odCxlKX0sdGhpcy53cml0ZWNiPW51bGwsdGhpcy53cml0ZWxlbj0wLHRoaXMuYnVmZmVyZWRSZXF1ZXN0PW51bGwsdGhpcy5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGwsdGhpcy5wZW5kaW5nY2I9MCx0aGlzLnByZWZpbmlzaGVkPSExLHRoaXMuZXJyb3JFbWl0dGVkPSExLHRoaXMuYnVmZmVyZWRSZXF1ZXN0Q291bnQ9MCx0aGlzLmNvcmtlZFJlcXVlc3RzRnJlZT1uZXcgYSh0aGlzKX1mdW5jdGlvbiB2KGUpe2lmKHM9c3x8cigxMCksIShwLmNhbGwodix0aGlzKXx8dGhpcyBpbnN0YW5jZW9mIHMpKXJldHVybiBuZXcgdihlKTt0aGlzLl93cml0YWJsZVN0YXRlPW5ldyBnKGUsdGhpcyksdGhpcy53cml0YWJsZT0hMCxlJiYoXCJmdW5jdGlvblwiPT10eXBlb2YgZS53cml0ZSYmKHRoaXMuX3dyaXRlPWUud3JpdGUpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGUud3JpdGV2JiYodGhpcy5fd3JpdGV2PWUud3JpdGV2KSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmRlc3Ryb3kmJih0aGlzLl9kZXN0cm95PWUuZGVzdHJveSksXCJmdW5jdGlvblwiPT10eXBlb2YgZS5maW5hbCYmKHRoaXMuX2ZpbmFsPWUuZmluYWwpKSxoLmNhbGwodGhpcyl9ZnVuY3Rpb24gbShlLHQscixuLGksbyxhKXt0LndyaXRlbGVuPW4sdC53cml0ZWNiPWEsdC53cml0aW5nPSEwLHQuc3luYz0hMCxyP2UuX3dyaXRldihpLHQub253cml0ZSk6ZS5fd3JpdGUoaSxvLHQub253cml0ZSksdC5zeW5jPSExfWZ1bmN0aW9uIF8oZSx0LHIsbil7cnx8ZnVuY3Rpb24oZSx0KXswPT09dC5sZW5ndGgmJnQubmVlZERyYWluJiYodC5uZWVkRHJhaW49ITEsZS5lbWl0KFwiZHJhaW5cIikpfShlLHQpLHQucGVuZGluZ2NiLS0sbigpLFMoZSx0KX1mdW5jdGlvbiB3KGUsdCl7dC5idWZmZXJQcm9jZXNzaW5nPSEwO3ZhciByPXQuYnVmZmVyZWRSZXF1ZXN0O2lmKGUuX3dyaXRldiYmciYmci5uZXh0KXt2YXIgbj10LmJ1ZmZlcmVkUmVxdWVzdENvdW50LGk9bmV3IEFycmF5KG4pLG89dC5jb3JrZWRSZXF1ZXN0c0ZyZWU7by5lbnRyeT1yO2Zvcih2YXIgcz0wLGY9ITA7cjspaVtzXT1yLHIuaXNCdWZ8fChmPSExKSxyPXIubmV4dCxzKz0xO2kuYWxsQnVmZmVycz1mLG0oZSx0LCEwLHQubGVuZ3RoLGksXCJcIixvLmZpbmlzaCksdC5wZW5kaW5nY2IrKyx0Lmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCxvLm5leHQ/KHQuY29ya2VkUmVxdWVzdHNGcmVlPW8ubmV4dCxvLm5leHQ9bnVsbCk6dC5jb3JrZWRSZXF1ZXN0c0ZyZWU9bmV3IGEodCksdC5idWZmZXJlZFJlcXVlc3RDb3VudD0wfWVsc2V7Zm9yKDtyOyl7dmFyIGM9ci5jaHVuayx1PXIuZW5jb2RpbmcsaD1yLmNhbGxiYWNrO2lmKG0oZSx0LCExLHQub2JqZWN0TW9kZT8xOmMubGVuZ3RoLGMsdSxoKSxyPXIubmV4dCx0LmJ1ZmZlcmVkUmVxdWVzdENvdW50LS0sdC53cml0aW5nKWJyZWFrfW51bGw9PT1yJiYodC5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGwpfXQuYnVmZmVyZWRSZXF1ZXN0PXIsdC5idWZmZXJQcm9jZXNzaW5nPSExfWZ1bmN0aW9uIEUoZSl7cmV0dXJuIGUuZW5kaW5nJiYwPT09ZS5sZW5ndGgmJm51bGw9PT1lLmJ1ZmZlcmVkUmVxdWVzdCYmIWUuZmluaXNoZWQmJiFlLndyaXRpbmd9ZnVuY3Rpb24gQShlLHQpe2UuX2ZpbmFsKChmdW5jdGlvbihyKXt0LnBlbmRpbmdjYi0tLHImJmUuZW1pdChcImVycm9yXCIsciksdC5wcmVmaW5pc2hlZD0hMCxlLmVtaXQoXCJwcmVmaW5pc2hcIiksUyhlLHQpfSkpfWZ1bmN0aW9uIFMoZSx0KXt2YXIgcj1FKHQpO3JldHVybiByJiYoIWZ1bmN0aW9uKGUsdCl7dC5wcmVmaW5pc2hlZHx8dC5maW5hbENhbGxlZHx8KFwiZnVuY3Rpb25cIj09dHlwZW9mIGUuX2ZpbmFsPyh0LnBlbmRpbmdjYisrLHQuZmluYWxDYWxsZWQ9ITAsby5uZXh0VGljayhBLGUsdCkpOih0LnByZWZpbmlzaGVkPSEwLGUuZW1pdChcInByZWZpbmlzaFwiKSkpfShlLHQpLDA9PT10LnBlbmRpbmdjYiYmKHQuZmluaXNoZWQ9ITAsZS5lbWl0KFwiZmluaXNoXCIpKSkscn1jLmluaGVyaXRzKHYsaCksZy5wcm90b3R5cGUuZ2V0QnVmZmVyPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuYnVmZmVyZWRSZXF1ZXN0LHQ9W107ZTspdC5wdXNoKGUpLGU9ZS5uZXh0O3JldHVybiB0fSxmdW5jdGlvbigpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZy5wcm90b3R5cGUsXCJidWZmZXJcIix7Z2V0OnUuZGVwcmVjYXRlKChmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEJ1ZmZlcigpfSksXCJfd3JpdGFibGVTdGF0ZS5idWZmZXIgaXMgZGVwcmVjYXRlZC4gVXNlIF93cml0YWJsZVN0YXRlLmdldEJ1ZmZlciBpbnN0ZWFkLlwiLFwiREVQMDAwM1wiKX0pfWNhdGNoKGUpe319KCksXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaGFzSW5zdGFuY2UmJlwiZnVuY3Rpb25cIj09dHlwZW9mIEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdPyhwPUZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2LFN5bWJvbC5oYXNJbnN0YW5jZSx7dmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuISFwLmNhbGwodGhpcyxlKXx8dGhpcz09PXYmJihlJiZlLl93cml0YWJsZVN0YXRlIGluc3RhbmNlb2YgZyl9fSkpOnA9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiB0aGlzfSx2LnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKCl7dGhpcy5lbWl0KFwiZXJyb3JcIixuZXcgRXJyb3IoXCJDYW5ub3QgcGlwZSwgbm90IHJlYWRhYmxlXCIpKX0sdi5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuLGk9dGhpcy5fd3JpdGFibGVTdGF0ZSxhPSExLHM9IWkub2JqZWN0TW9kZSYmKG49ZSxsLmlzQnVmZmVyKG4pfHxuIGluc3RhbmNlb2YgZCk7cmV0dXJuIHMmJiFsLmlzQnVmZmVyKGUpJiYoZT1mdW5jdGlvbihlKXtyZXR1cm4gbC5mcm9tKGUpfShlKSksXCJmdW5jdGlvblwiPT10eXBlb2YgdCYmKHI9dCx0PW51bGwpLHM/dD1cImJ1ZmZlclwiOnR8fCh0PWkuZGVmYXVsdEVuY29kaW5nKSxcImZ1bmN0aW9uXCIhPXR5cGVvZiByJiYocj15KSxpLmVuZGVkP2Z1bmN0aW9uKGUsdCl7dmFyIHI9bmV3IEVycm9yKFwid3JpdGUgYWZ0ZXIgZW5kXCIpO2UuZW1pdChcImVycm9yXCIsciksby5uZXh0VGljayh0LHIpfSh0aGlzLHIpOihzfHxmdW5jdGlvbihlLHQscixuKXt2YXIgaT0hMCxhPSExO3JldHVybiBudWxsPT09cj9hPW5ldyBUeXBlRXJyb3IoXCJNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbVwiKTpcInN0cmluZ1wiPT10eXBlb2Ygcnx8dm9pZCAwPT09cnx8dC5vYmplY3RNb2RlfHwoYT1uZXcgVHlwZUVycm9yKFwiSW52YWxpZCBub24tc3RyaW5nL2J1ZmZlciBjaHVua1wiKSksYSYmKGUuZW1pdChcImVycm9yXCIsYSksby5uZXh0VGljayhuLGEpLGk9ITEpLGl9KHRoaXMsaSxlLHIpKSYmKGkucGVuZGluZ2NiKyssYT1mdW5jdGlvbihlLHQscixuLGksbyl7aWYoIXIpe3ZhciBhPWZ1bmN0aW9uKGUsdCxyKXtlLm9iamVjdE1vZGV8fCExPT09ZS5kZWNvZGVTdHJpbmdzfHxcInN0cmluZ1wiIT10eXBlb2YgdHx8KHQ9bC5mcm9tKHQscikpO3JldHVybiB0fSh0LG4saSk7biE9PWEmJihyPSEwLGk9XCJidWZmZXJcIixuPWEpfXZhciBzPXQub2JqZWN0TW9kZT8xOm4ubGVuZ3RoO3QubGVuZ3RoKz1zO3ZhciBmPXQubGVuZ3RoPHQuaGlnaFdhdGVyTWFyaztmfHwodC5uZWVkRHJhaW49ITApO2lmKHQud3JpdGluZ3x8dC5jb3JrZWQpe3ZhciBjPXQubGFzdEJ1ZmZlcmVkUmVxdWVzdDt0Lmxhc3RCdWZmZXJlZFJlcXVlc3Q9e2NodW5rOm4sZW5jb2Rpbmc6aSxpc0J1ZjpyLGNhbGxiYWNrOm8sbmV4dDpudWxsfSxjP2MubmV4dD10Lmxhc3RCdWZmZXJlZFJlcXVlc3Q6dC5idWZmZXJlZFJlcXVlc3Q9dC5sYXN0QnVmZmVyZWRSZXF1ZXN0LHQuYnVmZmVyZWRSZXF1ZXN0Q291bnQrPTF9ZWxzZSBtKGUsdCwhMSxzLG4saSxvKTtyZXR1cm4gZn0odGhpcyxpLHMsZSx0LHIpKSxhfSx2LnByb3RvdHlwZS5jb3JrPWZ1bmN0aW9uKCl7dGhpcy5fd3JpdGFibGVTdGF0ZS5jb3JrZWQrK30sdi5wcm90b3R5cGUudW5jb3JrPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fd3JpdGFibGVTdGF0ZTtlLmNvcmtlZCYmKGUuY29ya2VkLS0sZS53cml0aW5nfHxlLmNvcmtlZHx8ZS5maW5pc2hlZHx8ZS5idWZmZXJQcm9jZXNzaW5nfHwhZS5idWZmZXJlZFJlcXVlc3R8fHcodGhpcyxlKSl9LHYucHJvdG90eXBlLnNldERlZmF1bHRFbmNvZGluZz1mdW5jdGlvbihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSYmKGU9ZS50b0xvd2VyQ2FzZSgpKSwhKFtcImhleFwiLFwidXRmOFwiLFwidXRmLThcIixcImFzY2lpXCIsXCJiaW5hcnlcIixcImJhc2U2NFwiLFwidWNzMlwiLFwidWNzLTJcIixcInV0ZjE2bGVcIixcInV0Zi0xNmxlXCIsXCJyYXdcIl0uaW5kZXhPZigoZStcIlwiKS50b0xvd2VyQ2FzZSgpKT4tMSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVua25vd24gZW5jb2Rpbmc6IFwiK2UpO3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmRlZmF1bHRFbmNvZGluZz1lLHRoaXN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2LnByb3RvdHlwZSxcIndyaXRhYmxlSGlnaFdhdGVyTWFya1wiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSksdi5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKGUsdCxyKXtyKG5ldyBFcnJvcihcIl93cml0ZSgpIGlzIG5vdCBpbXBsZW1lbnRlZFwiKSl9LHYucHJvdG90eXBlLl93cml0ZXY9bnVsbCx2LnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMuX3dyaXRhYmxlU3RhdGU7XCJmdW5jdGlvblwiPT10eXBlb2YgZT8ocj1lLGU9bnVsbCx0PW51bGwpOlwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJihyPXQsdD1udWxsKSxudWxsIT1lJiZ0aGlzLndyaXRlKGUsdCksbi5jb3JrZWQmJihuLmNvcmtlZD0xLHRoaXMudW5jb3JrKCkpLG4uZW5kaW5nfHxuLmZpbmlzaGVkfHxmdW5jdGlvbihlLHQscil7dC5lbmRpbmc9ITAsUyhlLHQpLHImJih0LmZpbmlzaGVkP28ubmV4dFRpY2socik6ZS5vbmNlKFwiZmluaXNoXCIscikpO3QuZW5kZWQ9ITAsZS53cml0YWJsZT0hMX0odGhpcyxuLHIpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodi5wcm90b3R5cGUsXCJkZXN0cm95ZWRcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPWUpfX0pLHYucHJvdG90eXBlLmRlc3Ryb3k9Yi5kZXN0cm95LHYucHJvdG90eXBlLl91bmRlc3Ryb3k9Yi51bmRlc3Ryb3ksdi5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24oZSx0KXt0aGlzLmVuZCgpLHQoZSl9fSkuY2FsbCh0aGlzLHIoOSkscigyNikuc2V0SW1tZWRpYXRlLHIoNCkpfSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigxKS5CdWZmZXIsaT1uLmlzRW5jb2Rpbmd8fGZ1bmN0aW9uKGUpe3N3aXRjaCgoZT1cIlwiK2UpJiZlLnRvTG93ZXJDYXNlKCkpe2Nhc2VcImhleFwiOmNhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOmNhc2VcImFzY2lpXCI6Y2FzZVwiYmluYXJ5XCI6Y2FzZVwiYmFzZTY0XCI6Y2FzZVwidWNzMlwiOmNhc2VcInVjcy0yXCI6Y2FzZVwidXRmMTZsZVwiOmNhc2VcInV0Zi0xNmxlXCI6Y2FzZVwicmF3XCI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19O2Z1bmN0aW9uIG8oZSl7dmFyIHQ7c3dpdGNoKHRoaXMuZW5jb2Rpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuXCJ1dGY4XCI7Zm9yKHZhciB0Ozspc3dpdGNoKGUpe2Nhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOnJldHVyblwidXRmOFwiO2Nhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOnJldHVyblwidXRmMTZsZVwiO2Nhc2VcImxhdGluMVwiOmNhc2VcImJpbmFyeVwiOnJldHVyblwibGF0aW4xXCI7Y2FzZVwiYmFzZTY0XCI6Y2FzZVwiYXNjaWlcIjpjYXNlXCJoZXhcIjpyZXR1cm4gZTtkZWZhdWx0OmlmKHQpcmV0dXJuO2U9KFwiXCIrZSkudG9Mb3dlckNhc2UoKSx0PSEwfX0oZSk7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIHQmJihuLmlzRW5jb2Rpbmc9PT1pfHwhaShlKSkpdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBlbmNvZGluZzogXCIrZSk7cmV0dXJuIHR8fGV9KGUpLHRoaXMuZW5jb2Rpbmcpe2Nhc2VcInV0ZjE2bGVcIjp0aGlzLnRleHQ9Zix0aGlzLmVuZD1jLHQ9NDticmVhaztjYXNlXCJ1dGY4XCI6dGhpcy5maWxsTGFzdD1zLHQ9NDticmVhaztjYXNlXCJiYXNlNjRcIjp0aGlzLnRleHQ9dSx0aGlzLmVuZD1oLHQ9MzticmVhaztkZWZhdWx0OnJldHVybiB0aGlzLndyaXRlPWwsdm9pZCh0aGlzLmVuZD1kKX10aGlzLmxhc3ROZWVkPTAsdGhpcy5sYXN0VG90YWw9MCx0aGlzLmxhc3RDaGFyPW4uYWxsb2NVbnNhZmUodCl9ZnVuY3Rpb24gYShlKXtyZXR1cm4gZTw9MTI3PzA6ZT4+NT09Nj8yOmU+PjQ9PTE0PzM6ZT4+Mz09MzA/NDplPj42PT0yPy0xOi0yfWZ1bmN0aW9uIHMoZSl7dmFyIHQ9dGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCxyPWZ1bmN0aW9uKGUsdCxyKXtpZigxMjghPSgxOTImdFswXSkpcmV0dXJuIGUubGFzdE5lZWQ9MCxcIu+/vVwiO2lmKGUubGFzdE5lZWQ+MSYmdC5sZW5ndGg+MSl7aWYoMTI4IT0oMTkyJnRbMV0pKXJldHVybiBlLmxhc3ROZWVkPTEsXCLvv71cIjtpZihlLmxhc3ROZWVkPjImJnQubGVuZ3RoPjImJjEyOCE9KDE5MiZ0WzJdKSlyZXR1cm4gZS5sYXN0TmVlZD0yLFwi77+9XCJ9fSh0aGlzLGUpO3JldHVybiB2b2lkIDAhPT1yP3I6dGhpcy5sYXN0TmVlZDw9ZS5sZW5ndGg/KGUuY29weSh0aGlzLmxhc3RDaGFyLHQsMCx0aGlzLmxhc3ROZWVkKSx0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsMCx0aGlzLmxhc3RUb3RhbCkpOihlLmNvcHkodGhpcy5sYXN0Q2hhcix0LDAsZS5sZW5ndGgpLHZvaWQodGhpcy5sYXN0TmVlZC09ZS5sZW5ndGgpKX1mdW5jdGlvbiBmKGUsdCl7aWYoKGUubGVuZ3RoLXQpJTI9PTApe3ZhciByPWUudG9TdHJpbmcoXCJ1dGYxNmxlXCIsdCk7aWYocil7dmFyIG49ci5jaGFyQ29kZUF0KHIubGVuZ3RoLTEpO2lmKG4+PTU1Mjk2JiZuPD01NjMxOSlyZXR1cm4gdGhpcy5sYXN0TmVlZD0yLHRoaXMubGFzdFRvdGFsPTQsdGhpcy5sYXN0Q2hhclswXT1lW2UubGVuZ3RoLTJdLHRoaXMubGFzdENoYXJbMV09ZVtlLmxlbmd0aC0xXSxyLnNsaWNlKDAsLTEpfXJldHVybiByfXJldHVybiB0aGlzLmxhc3ROZWVkPTEsdGhpcy5sYXN0VG90YWw9Mix0aGlzLmxhc3RDaGFyWzBdPWVbZS5sZW5ndGgtMV0sZS50b1N0cmluZyhcInV0ZjE2bGVcIix0LGUubGVuZ3RoLTEpfWZ1bmN0aW9uIGMoZSl7dmFyIHQ9ZSYmZS5sZW5ndGg/dGhpcy53cml0ZShlKTpcIlwiO2lmKHRoaXMubGFzdE5lZWQpe3ZhciByPXRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQ7cmV0dXJuIHQrdGhpcy5sYXN0Q2hhci50b1N0cmluZyhcInV0ZjE2bGVcIiwwLHIpfXJldHVybiB0fWZ1bmN0aW9uIHUoZSx0KXt2YXIgcj0oZS5sZW5ndGgtdCklMztyZXR1cm4gMD09PXI/ZS50b1N0cmluZyhcImJhc2U2NFwiLHQpOih0aGlzLmxhc3ROZWVkPTMtcix0aGlzLmxhc3RUb3RhbD0zLDE9PT1yP3RoaXMubGFzdENoYXJbMF09ZVtlLmxlbmd0aC0xXToodGhpcy5sYXN0Q2hhclswXT1lW2UubGVuZ3RoLTJdLHRoaXMubGFzdENoYXJbMV09ZVtlLmxlbmd0aC0xXSksZS50b1N0cmluZyhcImJhc2U2NFwiLHQsZS5sZW5ndGgtcikpfWZ1bmN0aW9uIGgoZSl7dmFyIHQ9ZSYmZS5sZW5ndGg/dGhpcy53cml0ZShlKTpcIlwiO3JldHVybiB0aGlzLmxhc3ROZWVkP3QrdGhpcy5sYXN0Q2hhci50b1N0cmluZyhcImJhc2U2NFwiLDAsMy10aGlzLmxhc3ROZWVkKTp0fWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGUudG9TdHJpbmcodGhpcy5lbmNvZGluZyl9ZnVuY3Rpb24gZChlKXtyZXR1cm4gZSYmZS5sZW5ndGg/dGhpcy53cml0ZShlKTpcIlwifXQuU3RyaW5nRGVjb2Rlcj1vLG8ucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm5cIlwiO3ZhciB0LHI7aWYodGhpcy5sYXN0TmVlZCl7aWYodm9pZCAwPT09KHQ9dGhpcy5maWxsTGFzdChlKSkpcmV0dXJuXCJcIjtyPXRoaXMubGFzdE5lZWQsdGhpcy5sYXN0TmVlZD0wfWVsc2Ugcj0wO3JldHVybiByPGUubGVuZ3RoP3Q/dCt0aGlzLnRleHQoZSxyKTp0aGlzLnRleHQoZSxyKTp0fHxcIlwifSxvLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5sZW5ndGg/dGhpcy53cml0ZShlKTpcIlwiO3JldHVybiB0aGlzLmxhc3ROZWVkP3QrXCLvv71cIjp0fSxvLnByb3RvdHlwZS50ZXh0PWZ1bmN0aW9uKGUsdCl7dmFyIHI9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXQubGVuZ3RoLTE7aWYobjxyKXJldHVybiAwO3ZhciBpPWEodFtuXSk7aWYoaT49MClyZXR1cm4gaT4wJiYoZS5sYXN0TmVlZD1pLTEpLGk7aWYoLS1uPHJ8fC0yPT09aSlyZXR1cm4gMDtpZigoaT1hKHRbbl0pKT49MClyZXR1cm4gaT4wJiYoZS5sYXN0TmVlZD1pLTIpLGk7aWYoLS1uPHJ8fC0yPT09aSlyZXR1cm4gMDtpZigoaT1hKHRbbl0pKT49MClyZXR1cm4gaT4wJiYoMj09PWk/aT0wOmUubGFzdE5lZWQ9aS0zKSxpO3JldHVybiAwfSh0aGlzLGUsdCk7aWYoIXRoaXMubGFzdE5lZWQpcmV0dXJuIGUudG9TdHJpbmcoXCJ1dGY4XCIsdCk7dGhpcy5sYXN0VG90YWw9cjt2YXIgbj1lLmxlbmd0aC0oci10aGlzLmxhc3ROZWVkKTtyZXR1cm4gZS5jb3B5KHRoaXMubGFzdENoYXIsMCxuKSxlLnRvU3RyaW5nKFwidXRmOFwiLHQsbil9LG8ucHJvdG90eXBlLmZpbGxMYXN0PWZ1bmN0aW9uKGUpe2lmKHRoaXMubGFzdE5lZWQ8PWUubGVuZ3RoKXJldHVybiBlLmNvcHkodGhpcy5sYXN0Q2hhcix0aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLDAsdGhpcy5sYXN0TmVlZCksdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLDAsdGhpcy5sYXN0VG90YWwpO2UuY29weSh0aGlzLmxhc3RDaGFyLHRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQsMCxlLmxlbmd0aCksdGhpcy5sYXN0TmVlZC09ZS5sZW5ndGh9fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigwKSxpPXIoMTMyKSxvPXIoMTMzKSxhPXIoMTM0KSxzPXIoMTM5KTtmdW5jdGlvbiBmKGUpe3MuY2FsbCh0aGlzLFwiZGlnZXN0XCIpLHRoaXMuX2hhc2g9ZX1uKGYscyksZi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLl9oYXNoLnVwZGF0ZShlKX0sZi5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2hhc2guZGlnZXN0KCl9LGUuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm5cIm1kNVwiPT09KGU9ZS50b0xvd2VyQ2FzZSgpKT9uZXcgaTpcInJtZDE2MFwiPT09ZXx8XCJyaXBlbWQxNjBcIj09PWU/bmV3IG86bmV3IGYoYShlKSl9fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG4saT10LG89cigzOCksYT1yKDY0KSxzPXIoNSkuYXNzZXJ0O2Z1bmN0aW9uIGYoZSl7XCJzaG9ydFwiPT09ZS50eXBlP3RoaXMuY3VydmU9bmV3IGEuc2hvcnQoZSk6XCJlZHdhcmRzXCI9PT1lLnR5cGU/dGhpcy5jdXJ2ZT1uZXcgYS5lZHdhcmRzKGUpOnRoaXMuY3VydmU9bmV3IGEubW9udChlKSx0aGlzLmc9dGhpcy5jdXJ2ZS5nLHRoaXMubj10aGlzLmN1cnZlLm4sdGhpcy5oYXNoPWUuaGFzaCxzKHRoaXMuZy52YWxpZGF0ZSgpLFwiSW52YWxpZCBjdXJ2ZVwiKSxzKHRoaXMuZy5tdWwodGhpcy5uKS5pc0luZmluaXR5KCksXCJJbnZhbGlkIGN1cnZlLCBHKk4gIT0gT1wiKX1mdW5jdGlvbiBjKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGksZSx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dmFyIHI9bmV3IGYodCk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLGUse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOnJ9KSxyfX0pfWkuUHJlc2V0Q3VydmU9ZixjKFwicDE5MlwiLHt0eXBlOlwic2hvcnRcIixwcmltZTpcInAxOTJcIixwOlwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmZcIixhOlwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmNcIixiOlwiNjQyMTA1MTkgZTU5YzgwZTcgMGZhN2U5YWIgNzIyNDMwNDkgZmViOGRlZWMgYzE0NmI5YjFcIixuOlwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgOTlkZWY4MzYgMTQ2YmM5YjEgYjRkMjI4MzFcIixoYXNoOm8uc2hhMjU2LGdSZWQ6ITEsZzpbXCIxODhkYTgwZSBiMDMwOTBmNiA3Y2JmMjBlYiA0M2ExODgwMCBmNGZmMGFmZCA4MmZmMTAxMlwiLFwiMDcxOTJiOTUgZmZjOGRhNzggNjMxMDExZWQgNmIyNGNkZDUgNzNmOTc3YTEgMWU3OTQ4MTFcIl19KSxjKFwicDIyNFwiLHt0eXBlOlwic2hvcnRcIixwcmltZTpcInAyMjRcIixwOlwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDFcIixhOlwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmVcIixiOlwiYjQwNTBhODUgMGMwNGIzYWIgZjU0MTMyNTYgNTA0NGIwYjcgZDdiZmQ4YmEgMjcwYjM5NDMgMjM1NWZmYjRcIixuOlwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZjE2YTIgZTBiOGYwM2UgMTNkZDI5NDUgNWM1YzJhM2RcIixoYXNoOm8uc2hhMjU2LGdSZWQ6ITEsZzpbXCJiNzBlMGNiZCA2YmI0YmY3ZiAzMjEzOTBiOSA0YTAzYzFkMyA1NmMyMTEyMiAzNDMyODBkNiAxMTVjMWQyMVwiLFwiYmQzNzYzODggYjVmNzIzZmIgNGMyMmRmZTYgY2Q0Mzc1YTAgNWEwNzQ3NjQgNDRkNTgxOTkgODUwMDdlMzRcIl19KSxjKFwicDI1NlwiLHt0eXBlOlwic2hvcnRcIixwcmltZTpudWxsLHA6XCJmZmZmZmZmZiAwMDAwMDAwMSAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZlwiLGE6XCJmZmZmZmZmZiAwMDAwMDAwMSAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmY1wiLGI6XCI1YWM2MzVkOCBhYTNhOTNlNyBiM2ViYmQ1NSA3Njk4ODZiYyA2NTFkMDZiMCBjYzUzYjBmNiAzYmNlM2MzZSAyN2QyNjA0YlwiLG46XCJmZmZmZmZmZiAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBiY2U2ZmFhZCBhNzE3OWU4NCBmM2I5Y2FjMiBmYzYzMjU1MVwiLGhhc2g6by5zaGEyNTYsZ1JlZDohMSxnOltcIjZiMTdkMWYyIGUxMmM0MjQ3IGY4YmNlNmU1IDYzYTQ0MGYyIDc3MDM3ZDgxIDJkZWIzM2EwIGY0YTEzOTQ1IGQ4OThjMjk2XCIsXCI0ZmUzNDJlMiBmZTFhN2Y5YiA4ZWU3ZWI0YSA3YzBmOWUxNiAyYmNlMzM1NyA2YjMxNWVjZSBjYmI2NDA2OCAzN2JmNTFmNVwiXX0pLGMoXCJwMzg0XCIse3R5cGU6XCJzaG9ydFwiLHByaW1lOm51bGwscDpcImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmXCIsYTpcImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZjXCIsYjpcImIzMzEyZmE3IGUyM2VlN2U0IDk4OGUwNTZiIGUzZjgyZDE5IDE4MWQ5YzZlIGZlODE0MTEyIDAzMTQwODhmIDUwMTM4NzVhIGM2NTYzOThkIDhhMmVkMTlkIDJhODVjOGVkIGQzZWMyYWVmXCIsbjpcImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGM3NjM0ZDgxIGY0MzcyZGRmIDU4MWEwZGIyIDQ4YjBhNzdhIGVjZWMxOTZhIGNjYzUyOTczXCIsaGFzaDpvLnNoYTM4NCxnUmVkOiExLGc6W1wiYWE4N2NhMjIgYmU4YjA1MzcgOGViMWM3MWUgZjMyMGFkNzQgNmUxZDNiNjIgOGJhNzliOTggNTlmNzQxZTAgODI1NDJhMzggNTUwMmYyNWQgYmY1NTI5NmMgM2E1NDVlMzggNzI3NjBhYjdcIixcIjM2MTdkZTRhIDk2MjYyYzZmIDVkOWU5OGJmIDkyOTJkYzI5IGY4ZjQxZGJkIDI4OWExNDdjIGU5ZGEzMTEzIGI1ZjBiOGMwIDBhNjBiMWNlIDFkN2U4MTlkIDdhNDMxZDdjIDkwZWEwZTVmXCJdfSksYyhcInA1MjFcIix7dHlwZTpcInNob3J0XCIscHJpbWU6bnVsbCxwOlwiMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmZcIixhOlwiMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmNcIixiOlwiMDAwMDAwNTEgOTUzZWI5NjEgOGUxYzlhMWYgOTI5YTIxYTAgYjY4NTQwZWUgYTJkYTcyNWIgOTliMzE1ZjMgYjhiNDg5OTEgOGVmMTA5ZTEgNTYxOTM5NTEgZWM3ZTkzN2IgMTY1MmMwYmQgM2JiMWJmMDcgMzU3M2RmODggM2QyYzM0ZjEgZWY0NTFmZDQgNmI1MDNmMDBcIixuOlwiMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmEgNTE4Njg3ODMgYmYyZjk2NmIgN2ZjYzAxNDggZjcwOWE1ZDAgM2JiNWM5YjggODk5YzQ3YWUgYmI2ZmI3MWUgOTEzODY0MDlcIixoYXNoOm8uc2hhNTEyLGdSZWQ6ITEsZzpbXCIwMDAwMDBjNiA4NThlMDZiNyAwNDA0ZTljZCA5ZTNlY2I2NiAyMzk1YjQ0MiA5YzY0ODEzOSAwNTNmYjUyMSBmODI4YWY2MCA2YjRkM2RiYSBhMTRiNWU3NyBlZmU3NTkyOCBmZTFkYzEyNyBhMmZmYThkZSAzMzQ4YjNjMSA4NTZhNDI5YiBmOTdlN2UzMSBjMmU1YmQ2NlwiLFwiMDAwMDAxMTggMzkyOTZhNzggOWEzYmMwMDQgNWM4YTVmYjQgMmM3ZDFiZDkgOThmNTQ0NDkgNTc5YjQ0NjggMTdhZmJkMTcgMjczZTY2MmMgOTdlZTcyOTkgNWVmNDI2NDAgYzU1MGI5MDEgM2ZhZDA3NjEgMzUzYzcwODYgYTI3MmMyNDAgODhiZTk0NzYgOWZkMTY2NTBcIl19KSxjKFwiY3VydmUyNTUxOVwiLHt0eXBlOlwibW9udFwiLHByaW1lOlwicDI1NTE5XCIscDpcIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWRcIixhOlwiNzZkMDZcIixiOlwiMVwiLG46XCIxMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAwMDAwMDAgMTRkZWY5ZGVhMmY3OWNkNiA1ODEyNjMxYTVjZjVkM2VkXCIsaGFzaDpvLnNoYTI1NixnUmVkOiExLGc6W1wiOVwiXX0pLGMoXCJlZDI1NTE5XCIse3R5cGU6XCJlZHdhcmRzXCIscHJpbWU6XCJwMjU1MTlcIixwOlwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZFwiLGE6XCItMVwiLGM6XCIxXCIsZDpcIjUyMDM2Y2VlMmI2ZmZlNzMgOGNjNzQwNzk3Nzc5ZTg5OCAwMDcwMGE0ZDQxNDFkOGFiIDc1ZWI0ZGNhMTM1OTc4YTNcIixuOlwiMTAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDE0ZGVmOWRlYTJmNzljZDYgNTgxMjYzMWE1Y2Y1ZDNlZFwiLGhhc2g6by5zaGEyNTYsZ1JlZDohMSxnOltcIjIxNjkzNmQzY2Q2ZTUzZmVjMGE0ZTIzMWZkZDZkYzVjNjkyY2M3NjA5NTI1YTdiMmM5NTYyZDYwOGYyNWQ1MWFcIixcIjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NThcIl19KTt0cnl7bj1yKDE1Myl9Y2F0Y2goZSl7bj12b2lkIDB9YyhcInNlY3AyNTZrMVwiLHt0eXBlOlwic2hvcnRcIixwcmltZTpcImsyNTZcIixwOlwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmZcIixhOlwiMFwiLGI6XCI3XCIsbjpcImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGJhYWVkY2U2IGFmNDhhMDNiIGJmZDI1ZThjIGQwMzY0MTQxXCIsaDpcIjFcIixoYXNoOm8uc2hhMjU2LGJldGE6XCI3YWU5NmEyYjY1N2MwNzEwNmU2NDQ3OWVhYzM0MzRlOTljZjA0OTc1MTJmNTg5OTVjMTM5NmMyODcxOTUwMWVlXCIsbGFtYmRhOlwiNTM2M2FkNGNjMDVjMzBlMGE1MjYxYzAyODgxMjY0NWExMjJlMjJlYTIwODE2Njc4ZGYwMjk2N2MxYjIzYmQ3MlwiLGJhc2lzOlt7YTpcIjMwODZkMjIxYTdkNDZiY2RlODZjOTBlNDkyODRlYjE1XCIsYjpcIi1lNDQzN2VkNjAxMGU4ODI4NmY1NDdmYTkwYWJmZTRjM1wifSx7YTpcIjExNGNhNTBmN2E4ZTJmM2Y2NTdjMTEwOGQ5ZDQ0Y2ZkOFwiLGI6XCIzMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0ZWIxNVwifV0sZ1JlZDohMSxnOltcIjc5YmU2NjdlZjlkY2JiYWM1NWEwNjI5NWNlODcwYjA3MDI5YmZjZGIyZGNlMjhkOTU5ZjI4MTViMTZmODE3OThcIixcIjQ4M2FkYTc3MjZhM2M0NjU1ZGE0ZmJmYzBlMTEwOGE4ZmQxN2I0NDhhNjg1NTQxOTljNDdkMDhmZmIxMGQ0YjhcIixuXX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49dDtuLnV0aWxzPXIoOCksbi5jb21tb249cigxNyksbi5zaGE9cigxNDcpLG4ucmlwZW1kPXIoMTUxKSxuLmhtYWM9cigxNTIpLG4uc2hhMT1uLnNoYS5zaGExLG4uc2hhMjU2PW4uc2hhLnNoYTI1NixuLnNoYTIyND1uLnNoYS5zaGEyMjQsbi5zaGEzODQ9bi5zaGEuc2hhMzg0LG4uc2hhNTEyPW4uc2hhLnNoYTUxMixuLnJpcGVtZDE2MD1uLnJpcGVtZC5yaXBlbWQxNjB9LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtjb25zdCBuPShlLHQpPT4oZnVuY3Rpb24oKXtjb25zdCByPXQucHJvbWlzZU1vZHVsZSxuPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKTtmb3IobGV0IGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKW5bZV09YXJndW1lbnRzW2VdO3JldHVybiBuZXcgcigocixpKT0+e3QuZXJyb3JGaXJzdD9uLnB1c2goKGZ1bmN0aW9uKGUsbil7aWYodC5tdWx0aUFyZ3Mpe2NvbnN0IHQ9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7Zm9yKGxldCBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2UtMV09YXJndW1lbnRzW2VdO2U/KHQudW5zaGlmdChlKSxpKHQpKTpyKHQpfWVsc2UgZT9pKGUpOnIobil9KSk6bi5wdXNoKChmdW5jdGlvbihlKXtpZih0Lm11bHRpQXJncyl7Y29uc3QgZT1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtmb3IobGV0IHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO3IoZSl9ZWxzZSByKGUpfSkpLGUuYXBwbHkodGhpcyxuKX0pfSk7ZS5leHBvcnRzPShlLHQpPT57dD1PYmplY3QuYXNzaWduKHtleGNsdWRlOlsvLisoU3luY3xTdHJlYW0pJC9dLGVycm9yRmlyc3Q6ITAscHJvbWlzZU1vZHVsZTpQcm9taXNlfSx0KTtjb25zdCByPWU9Pntjb25zdCByPXQ9Plwic3RyaW5nXCI9PXR5cGVvZiB0P2U9PT10OnQudGVzdChlKTtyZXR1cm4gdC5pbmNsdWRlP3QuaW5jbHVkZS5zb21lKHIpOiF0LmV4Y2x1ZGUuc29tZShyKX07bGV0IGk7aT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBlP2Z1bmN0aW9uKCl7cmV0dXJuIHQuZXhjbHVkZU1haW4/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6bihlLHQpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX06T2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSkpO2Zvcihjb25zdCBvIGluIGUpe2NvbnN0IGE9ZVtvXTtpW29dPVwiZnVuY3Rpb25cIj09dHlwZW9mIGEmJnIobyk/bihhLHQpOmF9cmV0dXJuIGl9fSxmdW5jdGlvbihlLHQscil7Y29uc3Qgbj1yKDIpLGk9cig2KTt2YXIgbz1cIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdD9SZWZsZWN0Om51bGwsYT1vJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBvLmFwcGx5P28uYXBwbHk6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbChlLHQscil9O2Z1bmN0aW9uIHMoKXtpLmNhbGwodGhpcyl9ZnVuY3Rpb24gZihlLHQscil7dHJ5e2EoZSx0LHIpfWNhdGNoKGUpe3NldFRpbWVvdXQoKCk9Pnt0aHJvdyBlfSl9fWZ1bmN0aW9uIGMoZSx0KXtmb3IodmFyIHI9bmV3IEFycmF5KHQpLG49MDtuPHQ7KytuKXJbbl09ZVtuXTtyZXR1cm4gcn1lLmV4cG9ydHM9cyxuLmluaGVyaXRzKHMsaSkscy5wcm90b3R5cGUuZW1pdD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10scj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspdC5wdXNoKGFyZ3VtZW50c1tyXSk7dmFyIG49XCJlcnJvclwiPT09ZSxpPXRoaXMuX2V2ZW50cztpZih2b2lkIDAhPT1pKW49biYmdm9pZCAwPT09aS5lcnJvcjtlbHNlIGlmKCFuKXJldHVybiExO2lmKG4pe3ZhciBvO2lmKHQubGVuZ3RoPjAmJihvPXRbMF0pLG8gaW5zdGFuY2VvZiBFcnJvcil0aHJvdyBvO3ZhciBhPW5ldyBFcnJvcihcIlVuaGFuZGxlZCBlcnJvci5cIisobz9cIiAoXCIrby5tZXNzYWdlK1wiKVwiOlwiXCIpKTt0aHJvdyBhLmNvbnRleHQ9byxhfXZhciBzPWlbZV07aWYodm9pZCAwPT09cylyZXR1cm4hMTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBzKWYocyx0aGlzLHQpO2Vsc2V7dmFyIHU9cy5sZW5ndGgsaD1jKHMsdSk7Zm9yKHI9MDtyPHU7KytyKWYoaFtyXSx0aGlzLHQpfXJldHVybiEwfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNzUpLGk9cigxNjgpLG89cigxNjkpLGE9XCJbb2JqZWN0IE51bGxdXCIscz1cIltvYmplY3QgVW5kZWZpbmVkXVwiLGY9bj9uLnRvU3RyaW5nVGFnOnZvaWQgMDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/dm9pZCAwPT09ZT9zOmE6ZiYmZiBpbiBPYmplY3QoZSk/aShlKTpvKGUpfX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtpZihudWxsIT09ZSl7dmFyIHQ9ZTtlPW51bGwsdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX0sZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJlwib2JqZWN0XCI9PXR5cGVvZiBlfX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtpZihudWxsPT09ZSl0aHJvdyBuZXcgRXJyb3IoXCJDYWxsYmFjayB3YXMgYWxyZWFkeSBjYWxsZWQuXCIpO3ZhciB0PWU7ZT1udWxsLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLmtleSxuKX19cmV0dXJuIGZ1bmN0aW9uKHQscixuKXtyZXR1cm4gciYmZSh0LnByb3RvdHlwZSxyKSxuJiZlKHQsbiksdH19KCk7dmFyIGk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLHQpO3ZhciByPWZ1bmN0aW9uKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiF0fHxcIm9iamVjdFwiIT10eXBlb2YgdCYmXCJmdW5jdGlvblwiIT10eXBlb2YgdD9lOnR9KHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcykpO2lmKCFlKXRocm93IG5ldyBFcnJvcihcIkpzb25ScGNFbmdpbmVNaWRkbGV3YXJlU3VicHJvdmlkZXIgLSBubyBjb25zdHJ1Y3RvckZuIHNwZWNpZmllZFwiKTtyZXR1cm4gci5fY29uc3RydWN0b3JGbj1lLHJ9cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksbih0LFt7a2V5Olwic2V0RW5naW5lXCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYodGhpcy5taWRkbGV3YXJlKXRocm93IG5ldyBFcnJvcihcIkpzb25ScGNFbmdpbmVNaWRkbGV3YXJlU3VicHJvdmlkZXIgLSBzdWJwcm92aWRlciBhZGRlZCB0byBlbmdpbmUgdHdpY2VcIik7dmFyIHQ9ZS5fYmxvY2tUcmFja2VyLHI9dGhpcy5fY29uc3RydWN0b3JGbih7ZW5naW5lOmUscHJvdmlkZXI6ZSxibG9ja1RyYWNrZXI6dH0pO2lmKCFyKXRocm93IG5ldyBFcnJvcihcIkpzb25ScGNFbmdpbmVNaWRkbGV3YXJlU3VicHJvdmlkZXIgLSBfY29uc3RydWN0b3JGbiBkaWQgbm90IHJldHVybiBtaWRkbGV3YXJlXCIpO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHIpdGhyb3cgbmV3IEVycm9yKFwiSnNvblJwY0VuZ2luZU1pZGRsZXdhcmVTdWJwcm92aWRlciAtIHNwZWNpZmllZCBtaWRkbGV3YXJlIGlzIG5vdCBhIGZ1bmN0aW9uXCIpO3RoaXMubWlkZGxld2FyZT1yfX0se2tleTpcImhhbmRsZVJlcXVlc3RcIix2YWx1ZTpmdW5jdGlvbihlLHQscil7dmFyIG49e2lkOmUuaWR9O3RoaXMubWlkZGxld2FyZShlLG4sKGZ1bmN0aW9uKGUpe3QoKGZ1bmN0aW9uKHQscixpKXt0PyhkZWxldGUgbi5yZXN1bHQsbi5lcnJvcj17bWVzc2FnZTp0Lm1lc3NhZ2V8fHR9KTpuLnJlc3VsdD1yLGU/ZShpKTppKCl9KSl9KSwoZnVuY3Rpb24oZSl7aWYoZSlyZXR1cm4gcihlKTtyKG51bGwsbi5yZXN1bHQpfSkpfX1dKSx0fShyKDEzKSk7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxyKXtjb25zdCBuPXIoMjAzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuKHQscixpLG8pPT57bGV0IGE9bnVsbDtjb25zdCBzPWUodCxyLChhc3luYyBmdW5jdGlvbigpe3JldHVybiBhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQcm9taXNlKGU9PntpKHQ9PmUodCkpfSl9KCksdm9pZCBhd2FpdCBhfSkpO24ocykoZT0+e2E/bihhKSgodCxyKT0+e2lmKHQpcmV0dXJuIGNvbnNvbGUuZXJyb3IodCksbyh0KTtyKGUpfSk6byhlKX0pfX19LGZ1bmN0aW9uKGUsdCxyKXtjb25zdCBuPXIoNDApO2UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIG57Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudXBkYXRlcz1bXX1hc3luYyBpbml0aWFsaXplKCl7fWFzeW5jIHVwZGF0ZSgpe3Rocm93IG5ldyBFcnJvcihcIkJhc2VGaWx0ZXIgLSBubyB1cGRhdGUgbWV0aG9kIHNwZWNpZmllZFwiKX1hZGRSZXN1bHRzKGUpe3RoaXMudXBkYXRlcz10aGlzLnVwZGF0ZXMuY29uY2F0KGUpLGUuZm9yRWFjaChlPT50aGlzLmVtaXQoXCJ1cGRhdGVcIixlKSl9YWRkSW5pdGlhbFJlc3VsdHMoZSl7fWdldENoYW5nZXNBbmRDbGVhcigpe2NvbnN0IGU9dGhpcy51cGRhdGVzO3JldHVybiB0aGlzLnVwZGF0ZXM9W10sZX19fSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIHIoZSl7cmV0dXJuIG51bGw9PWU/ZTpOdW1iZXIucGFyc2VJbnQoZSwxNil9ZnVuY3Rpb24gbihlKXtpZihudWxsPT1lKXJldHVybiBlO3JldHVyblwiMHhcIitlLnRvU3RyaW5nKDE2KX1lLmV4cG9ydHM9YXN5bmMgZnVuY3Rpb24oe3Byb3ZpZGVyOmUsZnJvbUJsb2NrOnQsdG9CbG9jazppfSl7dHx8KHQ9aSk7Y29uc3Qgbz1yKHQpLGE9cihpKSxzPUFycmF5KGEtbysxKS5maWxsKCkubWFwKChlLHQpPT5vK3QpLm1hcChuKTtyZXR1cm4gYXdhaXQgUHJvbWlzZS5hbGwocy5tYXAodD0+KGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbmV3IFByb21pc2UoKG4saSk9PntlLnNlbmRBc3luYyh7aWQ6MSxqc29ucnBjOlwiMi4wXCIsbWV0aG9kOnQscGFyYW1zOnJ9LChlLHQpPT57aWYoZSlyZXR1cm4gaShlKTtuKHQucmVzdWx0KX0pfSl9KShlLFwiZXRoX2dldEJsb2NrQnlOdW1iZXJcIixbdCwhMV0pKSl9fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigyMSk7ZS5leHBvcnRzPW4uY2FsbChGdW5jdGlvbi5jYWxsLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpfSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLGk9L15cXHMqY2xhc3NcXGIvLG89ZnVuY3Rpb24oZSl7dHJ5e3ZhciB0PW4uY2FsbChlKTtyZXR1cm4gaS50ZXN0KHQpfWNhdGNoKGUpe3JldHVybiExfX0sYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLHM9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLnRvU3RyaW5nVGFnO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZighZSlyZXR1cm4hMTtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZcIm9iamVjdFwiIT10eXBlb2YgZSlyZXR1cm4hMTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlJiYhZS5wcm90b3R5cGUpcmV0dXJuITA7aWYocylyZXR1cm4gZnVuY3Rpb24oZSl7dHJ5e3JldHVybiFvKGUpJiYobi5jYWxsKGUpLCEwKX1jYXRjaChlKXtyZXR1cm4hMX19KGUpO2lmKG8oZSkpcmV0dXJuITE7dmFyIHQ9YS5jYWxsKGUpO3JldHVyblwiW29iamVjdCBGdW5jdGlvbl1cIj09PXR8fFwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl1cIj09PXR9fSxmdW5jdGlvbihlLHQscil7ZS5leHBvcnRzPXIoMjUyKX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1yKDEwOCkocigxMjUpKX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbih0LG4pe3ZhciBpPXIoMjUpO2UuZXhwb3J0cz1tO3ZhciBvLGE9cigxMTMpO20uUmVhZGFibGVTdGF0ZT12O3IoNikuRXZlbnRFbWl0dGVyO3ZhciBzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubGlzdGVuZXJzKHQpLmxlbmd0aH0sZj1yKDU0KSxjPXIoMzMpLkJ1ZmZlcix1PXQuVWludDhBcnJheXx8ZnVuY3Rpb24oKXt9O3ZhciBoPXIoMTYpO2guaW5oZXJpdHM9cigwKTt2YXIgbD1yKDExNCksZD12b2lkIDA7ZD1sJiZsLmRlYnVnbG9nP2wuZGVidWdsb2coXCJzdHJlYW1cIik6ZnVuY3Rpb24oKXt9O3ZhciBwLGI9cigxMTUpLHk9cig1NSk7aC5pbmhlcml0cyhtLGYpO3ZhciBnPVtcImVycm9yXCIsXCJjbG9zZVwiLFwiZGVzdHJveVwiLFwicGF1c2VcIixcInJlc3VtZVwiXTtmdW5jdGlvbiB2KGUsdCl7ZT1lfHx7fTt2YXIgbj10IGluc3RhbmNlb2Yobz1vfHxyKDEwKSk7dGhpcy5vYmplY3RNb2RlPSEhZS5vYmplY3RNb2RlLG4mJih0aGlzLm9iamVjdE1vZGU9dGhpcy5vYmplY3RNb2RlfHwhIWUucmVhZGFibGVPYmplY3RNb2RlKTt2YXIgaT1lLmhpZ2hXYXRlck1hcmssYT1lLnJlYWRhYmxlSGlnaFdhdGVyTWFyayxzPXRoaXMub2JqZWN0TW9kZT8xNjoxNjM4NDt0aGlzLmhpZ2hXYXRlck1hcms9aXx8MD09PWk/aTpuJiYoYXx8MD09PWEpP2E6cyx0aGlzLmhpZ2hXYXRlck1hcms9TWF0aC5mbG9vcih0aGlzLmhpZ2hXYXRlck1hcmspLHRoaXMuYnVmZmVyPW5ldyBiLHRoaXMubGVuZ3RoPTAsdGhpcy5waXBlcz1udWxsLHRoaXMucGlwZXNDb3VudD0wLHRoaXMuZmxvd2luZz1udWxsLHRoaXMuZW5kZWQ9ITEsdGhpcy5lbmRFbWl0dGVkPSExLHRoaXMucmVhZGluZz0hMSx0aGlzLnN5bmM9ITAsdGhpcy5uZWVkUmVhZGFibGU9ITEsdGhpcy5lbWl0dGVkUmVhZGFibGU9ITEsdGhpcy5yZWFkYWJsZUxpc3RlbmluZz0hMSx0aGlzLnJlc3VtZVNjaGVkdWxlZD0hMSx0aGlzLmRlc3Ryb3llZD0hMSx0aGlzLmRlZmF1bHRFbmNvZGluZz1lLmRlZmF1bHRFbmNvZGluZ3x8XCJ1dGY4XCIsdGhpcy5hd2FpdERyYWluPTAsdGhpcy5yZWFkaW5nTW9yZT0hMSx0aGlzLmRlY29kZXI9bnVsbCx0aGlzLmVuY29kaW5nPW51bGwsZS5lbmNvZGluZyYmKHB8fChwPXIoMzUpLlN0cmluZ0RlY29kZXIpLHRoaXMuZGVjb2Rlcj1uZXcgcChlLmVuY29kaW5nKSx0aGlzLmVuY29kaW5nPWUuZW5jb2RpbmcpfWZ1bmN0aW9uIG0oZSl7aWYobz1vfHxyKDEwKSwhKHRoaXMgaW5zdGFuY2VvZiBtKSlyZXR1cm4gbmV3IG0oZSk7dGhpcy5fcmVhZGFibGVTdGF0ZT1uZXcgdihlLHRoaXMpLHRoaXMucmVhZGFibGU9ITAsZSYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUucmVhZCYmKHRoaXMuX3JlYWQ9ZS5yZWFkKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmRlc3Ryb3kmJih0aGlzLl9kZXN0cm95PWUuZGVzdHJveSkpLGYuY2FsbCh0aGlzKX1mdW5jdGlvbiBfKGUsdCxyLG4saSl7dmFyIG8sYT1lLl9yZWFkYWJsZVN0YXRlO251bGw9PT10PyhhLnJlYWRpbmc9ITEsZnVuY3Rpb24oZSx0KXtpZih0LmVuZGVkKXJldHVybjtpZih0LmRlY29kZXIpe3ZhciByPXQuZGVjb2Rlci5lbmQoKTtyJiZyLmxlbmd0aCYmKHQuYnVmZmVyLnB1c2gociksdC5sZW5ndGgrPXQub2JqZWN0TW9kZT8xOnIubGVuZ3RoKX10LmVuZGVkPSEwLFMoZSl9KGUsYSkpOihpfHwobz1mdW5jdGlvbihlLHQpe3ZhciByO249dCxjLmlzQnVmZmVyKG4pfHxuIGluc3RhbmNlb2YgdXx8XCJzdHJpbmdcIj09dHlwZW9mIHR8fHZvaWQgMD09PXR8fGUub2JqZWN0TW9kZXx8KHI9bmV3IFR5cGVFcnJvcihcIkludmFsaWQgbm9uLXN0cmluZy9idWZmZXIgY2h1bmtcIikpO3ZhciBuO3JldHVybiByfShhLHQpKSxvP2UuZW1pdChcImVycm9yXCIsbyk6YS5vYmplY3RNb2RlfHx0JiZ0Lmxlbmd0aD4wPyhcInN0cmluZ1wiPT10eXBlb2YgdHx8YS5vYmplY3RNb2RlfHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk9PT1jLnByb3RvdHlwZXx8KHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGMuZnJvbShlKX0odCkpLG4/YS5lbmRFbWl0dGVkP2UuZW1pdChcImVycm9yXCIsbmV3IEVycm9yKFwic3RyZWFtLnVuc2hpZnQoKSBhZnRlciBlbmQgZXZlbnRcIikpOncoZSxhLHQsITApOmEuZW5kZWQ/ZS5lbWl0KFwiZXJyb3JcIixuZXcgRXJyb3IoXCJzdHJlYW0ucHVzaCgpIGFmdGVyIEVPRlwiKSk6KGEucmVhZGluZz0hMSxhLmRlY29kZXImJiFyPyh0PWEuZGVjb2Rlci53cml0ZSh0KSxhLm9iamVjdE1vZGV8fDAhPT10Lmxlbmd0aD93KGUsYSx0LCExKTp4KGUsYSkpOncoZSxhLHQsITEpKSk6bnx8KGEucmVhZGluZz0hMSkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4hZS5lbmRlZCYmKGUubmVlZFJlYWRhYmxlfHxlLmxlbmd0aDxlLmhpZ2hXYXRlck1hcmt8fDA9PT1lLmxlbmd0aCl9KGEpfWZ1bmN0aW9uIHcoZSx0LHIsbil7dC5mbG93aW5nJiYwPT09dC5sZW5ndGgmJiF0LnN5bmM/KGUuZW1pdChcImRhdGFcIixyKSxlLnJlYWQoMCkpOih0Lmxlbmd0aCs9dC5vYmplY3RNb2RlPzE6ci5sZW5ndGgsbj90LmJ1ZmZlci51bnNoaWZ0KHIpOnQuYnVmZmVyLnB1c2gociksdC5uZWVkUmVhZGFibGUmJlMoZSkpLHgoZSx0KX1PYmplY3QuZGVmaW5lUHJvcGVydHkobS5wcm90b3R5cGUsXCJkZXN0cm95ZWRcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPWUpfX0pLG0ucHJvdG90eXBlLmRlc3Ryb3k9eS5kZXN0cm95LG0ucHJvdG90eXBlLl91bmRlc3Ryb3k9eS51bmRlc3Ryb3ksbS5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24oZSx0KXt0aGlzLnB1c2gobnVsbCksdChlKX0sbS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihlLHQpe3ZhciByLG49dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4gbi5vYmplY3RNb2RlP3I9ITA6XCJzdHJpbmdcIj09dHlwZW9mIGUmJigodD10fHxuLmRlZmF1bHRFbmNvZGluZykhPT1uLmVuY29kaW5nJiYoZT1jLmZyb20oZSx0KSx0PVwiXCIpLHI9ITApLF8odGhpcyxlLHQsITEscil9LG0ucHJvdG90eXBlLnVuc2hpZnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIF8odGhpcyxlLG51bGwsITAsITEpfSxtLnByb3RvdHlwZS5pc1BhdXNlZD1mdW5jdGlvbigpe3JldHVybiExPT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nfSxtLnByb3RvdHlwZS5zZXRFbmNvZGluZz1mdW5jdGlvbihlKXtyZXR1cm4gcHx8KHA9cigzNSkuU3RyaW5nRGVjb2RlciksdGhpcy5fcmVhZGFibGVTdGF0ZS5kZWNvZGVyPW5ldyBwKGUpLHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5jb2Rpbmc9ZSx0aGlzfTt2YXIgRT04Mzg4NjA4O2Z1bmN0aW9uIEEoZSx0KXtyZXR1cm4gZTw9MHx8MD09PXQubGVuZ3RoJiZ0LmVuZGVkPzA6dC5vYmplY3RNb2RlPzE6ZSE9ZT90LmZsb3dpbmcmJnQubGVuZ3RoP3QuYnVmZmVyLmhlYWQuZGF0YS5sZW5ndGg6dC5sZW5ndGg6KGU+dC5oaWdoV2F0ZXJNYXJrJiYodC5oaWdoV2F0ZXJNYXJrPWZ1bmN0aW9uKGUpe3JldHVybiBlPj1FP2U9RTooZS0tLGV8PWU+Pj4xLGV8PWU+Pj4yLGV8PWU+Pj40LGV8PWU+Pj44LGV8PWU+Pj4xNixlKyspLGV9KGUpKSxlPD10Lmxlbmd0aD9lOnQuZW5kZWQ/dC5sZW5ndGg6KHQubmVlZFJlYWRhYmxlPSEwLDApKX1mdW5jdGlvbiBTKGUpe3ZhciB0PWUuX3JlYWRhYmxlU3RhdGU7dC5uZWVkUmVhZGFibGU9ITEsdC5lbWl0dGVkUmVhZGFibGV8fChkKFwiZW1pdFJlYWRhYmxlXCIsdC5mbG93aW5nKSx0LmVtaXR0ZWRSZWFkYWJsZT0hMCx0LnN5bmM/aS5uZXh0VGljayhrLGUpOmsoZSkpfWZ1bmN0aW9uIGsoZSl7ZChcImVtaXQgcmVhZGFibGVcIiksZS5lbWl0KFwicmVhZGFibGVcIiksUChlKX1mdW5jdGlvbiB4KGUsdCl7dC5yZWFkaW5nTW9yZXx8KHQucmVhZGluZ01vcmU9ITAsaS5uZXh0VGljayhJLGUsdCkpfWZ1bmN0aW9uIEkoZSx0KXtmb3IodmFyIHI9dC5sZW5ndGg7IXQucmVhZGluZyYmIXQuZmxvd2luZyYmIXQuZW5kZWQmJnQubGVuZ3RoPHQuaGlnaFdhdGVyTWFyayYmKGQoXCJtYXliZVJlYWRNb3JlIHJlYWQgMFwiKSxlLnJlYWQoMCksciE9PXQubGVuZ3RoKTspcj10Lmxlbmd0aDt0LnJlYWRpbmdNb3JlPSExfWZ1bmN0aW9uIE0oZSl7ZChcInJlYWRhYmxlIG5leHR0aWNrIHJlYWQgMFwiKSxlLnJlYWQoMCl9ZnVuY3Rpb24gVChlLHQpe3QucmVhZGluZ3x8KGQoXCJyZXN1bWUgcmVhZCAwXCIpLGUucmVhZCgwKSksdC5yZXN1bWVTY2hlZHVsZWQ9ITEsdC5hd2FpdERyYWluPTAsZS5lbWl0KFwicmVzdW1lXCIpLFAoZSksdC5mbG93aW5nJiYhdC5yZWFkaW5nJiZlLnJlYWQoMCl9ZnVuY3Rpb24gUChlKXt2YXIgdD1lLl9yZWFkYWJsZVN0YXRlO2ZvcihkKFwiZmxvd1wiLHQuZmxvd2luZyk7dC5mbG93aW5nJiZudWxsIT09ZS5yZWFkKCk7KTt9ZnVuY3Rpb24gQihlLHQpe3JldHVybiAwPT09dC5sZW5ndGg/bnVsbDoodC5vYmplY3RNb2RlP3I9dC5idWZmZXIuc2hpZnQoKTohZXx8ZT49dC5sZW5ndGg/KHI9dC5kZWNvZGVyP3QuYnVmZmVyLmpvaW4oXCJcIik6MT09PXQuYnVmZmVyLmxlbmd0aD90LmJ1ZmZlci5oZWFkLmRhdGE6dC5idWZmZXIuY29uY2F0KHQubGVuZ3RoKSx0LmJ1ZmZlci5jbGVhcigpKTpyPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbjtlPHQuaGVhZC5kYXRhLmxlbmd0aD8obj10LmhlYWQuZGF0YS5zbGljZSgwLGUpLHQuaGVhZC5kYXRhPXQuaGVhZC5kYXRhLnNsaWNlKGUpKTpuPWU9PT10LmhlYWQuZGF0YS5sZW5ndGg/dC5zaGlmdCgpOnI/ZnVuY3Rpb24oZSx0KXt2YXIgcj10LmhlYWQsbj0xLGk9ci5kYXRhO2UtPWkubGVuZ3RoO2Zvcig7cj1yLm5leHQ7KXt2YXIgbz1yLmRhdGEsYT1lPm8ubGVuZ3RoP28ubGVuZ3RoOmU7aWYoYT09PW8ubGVuZ3RoP2krPW86aSs9by5zbGljZSgwLGUpLDA9PT0oZS09YSkpe2E9PT1vLmxlbmd0aD8oKytuLHIubmV4dD90LmhlYWQ9ci5uZXh0OnQuaGVhZD10LnRhaWw9bnVsbCk6KHQuaGVhZD1yLHIuZGF0YT1vLnNsaWNlKGEpKTticmVha30rK259cmV0dXJuIHQubGVuZ3RoLT1uLGl9KGUsdCk6ZnVuY3Rpb24oZSx0KXt2YXIgcj1jLmFsbG9jVW5zYWZlKGUpLG49dC5oZWFkLGk9MTtuLmRhdGEuY29weShyKSxlLT1uLmRhdGEubGVuZ3RoO2Zvcig7bj1uLm5leHQ7KXt2YXIgbz1uLmRhdGEsYT1lPm8ubGVuZ3RoP28ubGVuZ3RoOmU7aWYoby5jb3B5KHIsci5sZW5ndGgtZSwwLGEpLDA9PT0oZS09YSkpe2E9PT1vLmxlbmd0aD8oKytpLG4ubmV4dD90LmhlYWQ9bi5uZXh0OnQuaGVhZD10LnRhaWw9bnVsbCk6KHQuaGVhZD1uLG4uZGF0YT1vLnNsaWNlKGEpKTticmVha30rK2l9cmV0dXJuIHQubGVuZ3RoLT1pLHJ9KGUsdCk7cmV0dXJuIG59KGUsdC5idWZmZXIsdC5kZWNvZGVyKSxyKTt2YXIgcn1mdW5jdGlvbiBMKGUpe3ZhciB0PWUuX3JlYWRhYmxlU3RhdGU7aWYodC5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoJ1wiZW5kUmVhZGFibGUoKVwiIGNhbGxlZCBvbiBub24tZW1wdHkgc3RyZWFtJyk7dC5lbmRFbWl0dGVkfHwodC5lbmRlZD0hMCxpLm5leHRUaWNrKFIsdCxlKSl9ZnVuY3Rpb24gUihlLHQpe2UuZW5kRW1pdHRlZHx8MCE9PWUubGVuZ3RofHwoZS5lbmRFbWl0dGVkPSEwLHQucmVhZGFibGU9ITEsdC5lbWl0KFwiZW5kXCIpKX1mdW5jdGlvbiBPKGUsdCl7Zm9yKHZhciByPTAsbj1lLmxlbmd0aDtyPG47cisrKWlmKGVbcl09PT10KXJldHVybiByO3JldHVybi0xfW0ucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oZSl7ZChcInJlYWRcIixlKSxlPXBhcnNlSW50KGUsMTApO3ZhciB0PXRoaXMuX3JlYWRhYmxlU3RhdGUscj1lO2lmKDAhPT1lJiYodC5lbWl0dGVkUmVhZGFibGU9ITEpLDA9PT1lJiZ0Lm5lZWRSZWFkYWJsZSYmKHQubGVuZ3RoPj10LmhpZ2hXYXRlck1hcmt8fHQuZW5kZWQpKXJldHVybiBkKFwicmVhZDogZW1pdFJlYWRhYmxlXCIsdC5sZW5ndGgsdC5lbmRlZCksMD09PXQubGVuZ3RoJiZ0LmVuZGVkP0wodGhpcyk6Uyh0aGlzKSxudWxsO2lmKDA9PT0oZT1BKGUsdCkpJiZ0LmVuZGVkKXJldHVybiAwPT09dC5sZW5ndGgmJkwodGhpcyksbnVsbDt2YXIgbixpPXQubmVlZFJlYWRhYmxlO3JldHVybiBkKFwibmVlZCByZWFkYWJsZVwiLGkpLCgwPT09dC5sZW5ndGh8fHQubGVuZ3RoLWU8dC5oaWdoV2F0ZXJNYXJrKSYmZChcImxlbmd0aCBsZXNzIHRoYW4gd2F0ZXJtYXJrXCIsaT0hMCksdC5lbmRlZHx8dC5yZWFkaW5nP2QoXCJyZWFkaW5nIG9yIGVuZGVkXCIsaT0hMSk6aSYmKGQoXCJkbyByZWFkXCIpLHQucmVhZGluZz0hMCx0LnN5bmM9ITAsMD09PXQubGVuZ3RoJiYodC5uZWVkUmVhZGFibGU9ITApLHRoaXMuX3JlYWQodC5oaWdoV2F0ZXJNYXJrKSx0LnN5bmM9ITEsdC5yZWFkaW5nfHwoZT1BKHIsdCkpKSxudWxsPT09KG49ZT4wP0IoZSx0KTpudWxsKT8odC5uZWVkUmVhZGFibGU9ITAsZT0wKTp0Lmxlbmd0aC09ZSwwPT09dC5sZW5ndGgmJih0LmVuZGVkfHwodC5uZWVkUmVhZGFibGU9ITApLHIhPT1lJiZ0LmVuZGVkJiZMKHRoaXMpKSxudWxsIT09biYmdGhpcy5lbWl0KFwiZGF0YVwiLG4pLG59LG0ucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKGUpe3RoaXMuZW1pdChcImVycm9yXCIsbmV3IEVycm9yKFwiX3JlYWQoKSBpcyBub3QgaW1wbGVtZW50ZWRcIikpfSxtLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcyxvPXRoaXMuX3JlYWRhYmxlU3RhdGU7c3dpdGNoKG8ucGlwZXNDb3VudCl7Y2FzZSAwOm8ucGlwZXM9ZTticmVhaztjYXNlIDE6by5waXBlcz1bby5waXBlcyxlXTticmVhaztkZWZhdWx0Om8ucGlwZXMucHVzaChlKX1vLnBpcGVzQ291bnQrPTEsZChcInBpcGUgY291bnQ9JWQgb3B0cz0lalwiLG8ucGlwZXNDb3VudCx0KTt2YXIgZj0oIXR8fCExIT09dC5lbmQpJiZlIT09bi5zdGRvdXQmJmUhPT1uLnN0ZGVycj91Om07ZnVuY3Rpb24gYyh0LG4pe2QoXCJvbnVucGlwZVwiKSx0PT09ciYmbiYmITE9PT1uLmhhc1VucGlwZWQmJihuLmhhc1VucGlwZWQ9ITAsZChcImNsZWFudXBcIiksZS5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIsZyksZS5yZW1vdmVMaXN0ZW5lcihcImZpbmlzaFwiLHYpLGUucmVtb3ZlTGlzdGVuZXIoXCJkcmFpblwiLGgpLGUucmVtb3ZlTGlzdGVuZXIoXCJlcnJvclwiLHkpLGUucmVtb3ZlTGlzdGVuZXIoXCJ1bnBpcGVcIixjKSxyLnJlbW92ZUxpc3RlbmVyKFwiZW5kXCIsdSksci5yZW1vdmVMaXN0ZW5lcihcImVuZFwiLG0pLHIucmVtb3ZlTGlzdGVuZXIoXCJkYXRhXCIsYiksbD0hMCwhby5hd2FpdERyYWlufHxlLl93cml0YWJsZVN0YXRlJiYhZS5fd3JpdGFibGVTdGF0ZS5uZWVkRHJhaW58fGgoKSl9ZnVuY3Rpb24gdSgpe2QoXCJvbmVuZFwiKSxlLmVuZCgpfW8uZW5kRW1pdHRlZD9pLm5leHRUaWNrKGYpOnIub25jZShcImVuZFwiLGYpLGUub24oXCJ1bnBpcGVcIixjKTt2YXIgaD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1lLl9yZWFkYWJsZVN0YXRlO2QoXCJwaXBlT25EcmFpblwiLHQuYXdhaXREcmFpbiksdC5hd2FpdERyYWluJiZ0LmF3YWl0RHJhaW4tLSwwPT09dC5hd2FpdERyYWluJiZzKGUsXCJkYXRhXCIpJiYodC5mbG93aW5nPSEwLFAoZSkpfX0ocik7ZS5vbihcImRyYWluXCIsaCk7dmFyIGw9ITE7dmFyIHA9ITE7ZnVuY3Rpb24gYih0KXtkKFwib25kYXRhXCIpLHA9ITEsITEhPT1lLndyaXRlKHQpfHxwfHwoKDE9PT1vLnBpcGVzQ291bnQmJm8ucGlwZXM9PT1lfHxvLnBpcGVzQ291bnQ+MSYmLTEhPT1PKG8ucGlwZXMsZSkpJiYhbCYmKGQoXCJmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2VcIixyLl9yZWFkYWJsZVN0YXRlLmF3YWl0RHJhaW4pLHIuX3JlYWRhYmxlU3RhdGUuYXdhaXREcmFpbisrLHA9ITApLHIucGF1c2UoKSl9ZnVuY3Rpb24geSh0KXtkKFwib25lcnJvclwiLHQpLG0oKSxlLnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIix5KSwwPT09cyhlLFwiZXJyb3JcIikmJmUuZW1pdChcImVycm9yXCIsdCl9ZnVuY3Rpb24gZygpe2UucmVtb3ZlTGlzdGVuZXIoXCJmaW5pc2hcIix2KSxtKCl9ZnVuY3Rpb24gdigpe2QoXCJvbmZpbmlzaFwiKSxlLnJlbW92ZUxpc3RlbmVyKFwiY2xvc2VcIixnKSxtKCl9ZnVuY3Rpb24gbSgpe2QoXCJ1bnBpcGVcIiksci51bnBpcGUoZSl9cmV0dXJuIHIub24oXCJkYXRhXCIsYiksZnVuY3Rpb24oZSx0LHIpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUucHJlcGVuZExpc3RlbmVyKXJldHVybiBlLnByZXBlbmRMaXN0ZW5lcih0LHIpO2UuX2V2ZW50cyYmZS5fZXZlbnRzW3RdP2EoZS5fZXZlbnRzW3RdKT9lLl9ldmVudHNbdF0udW5zaGlmdChyKTplLl9ldmVudHNbdF09W3IsZS5fZXZlbnRzW3RdXTplLm9uKHQscil9KGUsXCJlcnJvclwiLHkpLGUub25jZShcImNsb3NlXCIsZyksZS5vbmNlKFwiZmluaXNoXCIsdiksZS5lbWl0KFwicGlwZVwiLHIpLG8uZmxvd2luZ3x8KGQoXCJwaXBlIHJlc3VtZVwiKSxyLnJlc3VtZSgpKSxlfSxtLnByb3RvdHlwZS51bnBpcGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcmVhZGFibGVTdGF0ZSxyPXtoYXNVbnBpcGVkOiExfTtpZigwPT09dC5waXBlc0NvdW50KXJldHVybiB0aGlzO2lmKDE9PT10LnBpcGVzQ291bnQpcmV0dXJuIGUmJmUhPT10LnBpcGVzP3RoaXM6KGV8fChlPXQucGlwZXMpLHQucGlwZXM9bnVsbCx0LnBpcGVzQ291bnQ9MCx0LmZsb3dpbmc9ITEsZSYmZS5lbWl0KFwidW5waXBlXCIsdGhpcyxyKSx0aGlzKTtpZighZSl7dmFyIG49dC5waXBlcyxpPXQucGlwZXNDb3VudDt0LnBpcGVzPW51bGwsdC5waXBlc0NvdW50PTAsdC5mbG93aW5nPSExO2Zvcih2YXIgbz0wO288aTtvKyspbltvXS5lbWl0KFwidW5waXBlXCIsdGhpcyxyKTtyZXR1cm4gdGhpc312YXIgYT1PKHQucGlwZXMsZSk7cmV0dXJuLTE9PT1hP3RoaXM6KHQucGlwZXMuc3BsaWNlKGEsMSksdC5waXBlc0NvdW50LT0xLDE9PT10LnBpcGVzQ291bnQmJih0LnBpcGVzPXQucGlwZXNbMF0pLGUuZW1pdChcInVucGlwZVwiLHRoaXMsciksdGhpcyl9LG0ucHJvdG90eXBlLm9uPWZ1bmN0aW9uKGUsdCl7dmFyIHI9Zi5wcm90b3R5cGUub24uY2FsbCh0aGlzLGUsdCk7aWYoXCJkYXRhXCI9PT1lKSExIT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nJiZ0aGlzLnJlc3VtZSgpO2Vsc2UgaWYoXCJyZWFkYWJsZVwiPT09ZSl7dmFyIG49dGhpcy5fcmVhZGFibGVTdGF0ZTtuLmVuZEVtaXR0ZWR8fG4ucmVhZGFibGVMaXN0ZW5pbmd8fChuLnJlYWRhYmxlTGlzdGVuaW5nPW4ubmVlZFJlYWRhYmxlPSEwLG4uZW1pdHRlZFJlYWRhYmxlPSExLG4ucmVhZGluZz9uLmxlbmd0aCYmUyh0aGlzKTppLm5leHRUaWNrKE0sdGhpcykpfXJldHVybiByfSxtLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1tLnByb3RvdHlwZS5vbixtLnByb3RvdHlwZS5yZXN1bWU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiBlLmZsb3dpbmd8fChkKFwicmVzdW1lXCIpLGUuZmxvd2luZz0hMCxmdW5jdGlvbihlLHQpe3QucmVzdW1lU2NoZWR1bGVkfHwodC5yZXN1bWVTY2hlZHVsZWQ9ITAsaS5uZXh0VGljayhULGUsdCkpfSh0aGlzLGUpKSx0aGlzfSxtLnByb3RvdHlwZS5wYXVzZT1mdW5jdGlvbigpe3JldHVybiBkKFwiY2FsbCBwYXVzZSBmbG93aW5nPSVqXCIsdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKSwhMSE9PXRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyYmKGQoXCJwYXVzZVwiKSx0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmc9ITEsdGhpcy5lbWl0KFwicGF1c2VcIikpLHRoaXN9LG0ucHJvdG90eXBlLndyYXA9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxyPXRoaXMuX3JlYWRhYmxlU3RhdGUsbj0hMTtmb3IodmFyIGkgaW4gZS5vbihcImVuZFwiLChmdW5jdGlvbigpe2lmKGQoXCJ3cmFwcGVkIGVuZFwiKSxyLmRlY29kZXImJiFyLmVuZGVkKXt2YXIgZT1yLmRlY29kZXIuZW5kKCk7ZSYmZS5sZW5ndGgmJnQucHVzaChlKX10LnB1c2gobnVsbCl9KSksZS5vbihcImRhdGFcIiwoZnVuY3Rpb24oaSl7KGQoXCJ3cmFwcGVkIGRhdGFcIiksci5kZWNvZGVyJiYoaT1yLmRlY29kZXIud3JpdGUoaSkpLHIub2JqZWN0TW9kZSYmbnVsbD09aSl8fChyLm9iamVjdE1vZGV8fGkmJmkubGVuZ3RoKSYmKHQucHVzaChpKXx8KG49ITAsZS5wYXVzZSgpKSl9KSksZSl2b2lkIDA9PT10aGlzW2ldJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlW2ldJiYodGhpc1tpXT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZVt0XS5hcHBseShlLGFyZ3VtZW50cyl9fShpKSk7Zm9yKHZhciBvPTA7bzxnLmxlbmd0aDtvKyspZS5vbihnW29dLHRoaXMuZW1pdC5iaW5kKHRoaXMsZ1tvXSkpO3JldHVybiB0aGlzLl9yZWFkPWZ1bmN0aW9uKHQpe2QoXCJ3cmFwcGVkIF9yZWFkXCIsdCksbiYmKG49ITEsZS5yZXN1bWUoKSl9LHRoaXN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtLnByb3RvdHlwZSxcInJlYWRhYmxlSGlnaFdhdGVyTWFya1wiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSksbS5fZnJvbUxpc3Q9Qn0pLmNhbGwodGhpcyxyKDQpLHIoOSkpfSxmdW5jdGlvbihlLHQscil7ZS5leHBvcnRzPXIoNikuRXZlbnRFbWl0dGVyfSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigyNSk7ZnVuY3Rpb24gaShlLHQpe2UuZW1pdChcImVycm9yXCIsdCl9ZS5leHBvcnRzPXtkZXN0cm95OmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcyxvPXRoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkLGE9dGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ7cmV0dXJuIG98fGE/KHQ/dChlKTohZXx8dGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWR8fG4ubmV4dFRpY2soaSx0aGlzLGUpLHRoaXMpOih0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITApLHRoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD0hMCksdGhpcy5fZGVzdHJveShlfHxudWxsLChmdW5jdGlvbihlKXshdCYmZT8obi5uZXh0VGljayhpLHIsZSksci5fd3JpdGFibGVTdGF0ZSYmKHIuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwKSk6dCYmdChlKX0pKSx0aGlzKX0sdW5kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUucmVhZGluZz0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZGVkPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZD0hMSksdGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRpbmc9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5pc2hlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMSl9fX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1hO3ZhciBuPXIoMTApLGk9cigxNik7ZnVuY3Rpb24gbyhlLHQpe3ZhciByPXRoaXMuX3RyYW5zZm9ybVN0YXRlO3IudHJhbnNmb3JtaW5nPSExO3ZhciBuPXIud3JpdGVjYjtpZighbilyZXR1cm4gdGhpcy5lbWl0KFwiZXJyb3JcIixuZXcgRXJyb3IoXCJ3cml0ZSBjYWxsYmFjayBjYWxsZWQgbXVsdGlwbGUgdGltZXNcIikpO3Iud3JpdGVjaHVuaz1udWxsLHIud3JpdGVjYj1udWxsLG51bGwhPXQmJnRoaXMucHVzaCh0KSxuKGUpO3ZhciBpPXRoaXMuX3JlYWRhYmxlU3RhdGU7aS5yZWFkaW5nPSExLChpLm5lZWRSZWFkYWJsZXx8aS5sZW5ndGg8aS5oaWdoV2F0ZXJNYXJrKSYmdGhpcy5fcmVhZChpLmhpZ2hXYXRlck1hcmspfWZ1bmN0aW9uIGEoZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgYSkpcmV0dXJuIG5ldyBhKGUpO24uY2FsbCh0aGlzLGUpLHRoaXMuX3RyYW5zZm9ybVN0YXRlPXthZnRlclRyYW5zZm9ybTpvLmJpbmQodGhpcyksbmVlZFRyYW5zZm9ybTohMSx0cmFuc2Zvcm1pbmc6ITEsd3JpdGVjYjpudWxsLHdyaXRlY2h1bms6bnVsbCx3cml0ZWVuY29kaW5nOm51bGx9LHRoaXMuX3JlYWRhYmxlU3RhdGUubmVlZFJlYWRhYmxlPSEwLHRoaXMuX3JlYWRhYmxlU3RhdGUuc3luYz0hMSxlJiYoXCJmdW5jdGlvblwiPT10eXBlb2YgZS50cmFuc2Zvcm0mJih0aGlzLl90cmFuc2Zvcm09ZS50cmFuc2Zvcm0pLFwiZnVuY3Rpb25cIj09dHlwZW9mIGUuZmx1c2gmJih0aGlzLl9mbHVzaD1lLmZsdXNoKSksdGhpcy5vbihcInByZWZpbmlzaFwiLHMpfWZ1bmN0aW9uIHMoKXt2YXIgZT10aGlzO1wiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXMuX2ZsdXNoP3RoaXMuX2ZsdXNoKChmdW5jdGlvbih0LHIpe2YoZSx0LHIpfSkpOmYodGhpcyxudWxsLG51bGwpfWZ1bmN0aW9uIGYoZSx0LHIpe2lmKHQpcmV0dXJuIGUuZW1pdChcImVycm9yXCIsdCk7aWYobnVsbCE9ciYmZS5wdXNoKHIpLGUuX3dyaXRhYmxlU3RhdGUubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcIkNhbGxpbmcgdHJhbnNmb3JtIGRvbmUgd2hlbiB3cy5sZW5ndGggIT0gMFwiKTtpZihlLl90cmFuc2Zvcm1TdGF0ZS50cmFuc2Zvcm1pbmcpdGhyb3cgbmV3IEVycm9yKFwiQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHN0aWxsIHRyYW5zZm9ybWluZ1wiKTtyZXR1cm4gZS5wdXNoKG51bGwpfWkuaW5oZXJpdHM9cigwKSxpLmluaGVyaXRzKGEsbiksYS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl90cmFuc2Zvcm1TdGF0ZS5uZWVkVHJhbnNmb3JtPSExLG4ucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLGUsdCl9LGEucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24oZSx0LHIpe3Rocm93IG5ldyBFcnJvcihcIl90cmFuc2Zvcm0oKSBpcyBub3QgaW1wbGVtZW50ZWRcIil9LGEucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbihlLHQscil7dmFyIG49dGhpcy5fdHJhbnNmb3JtU3RhdGU7aWYobi53cml0ZWNiPXIsbi53cml0ZWNodW5rPWUsbi53cml0ZWVuY29kaW5nPXQsIW4udHJhbnNmb3JtaW5nKXt2YXIgaT10aGlzLl9yZWFkYWJsZVN0YXRlOyhuLm5lZWRUcmFuc2Zvcm18fGkubmVlZFJlYWRhYmxlfHxpLmxlbmd0aDxpLmhpZ2hXYXRlck1hcmspJiZ0aGlzLl9yZWFkKGkuaGlnaFdhdGVyTWFyayl9fSxhLnByb3RvdHlwZS5fcmVhZD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl90cmFuc2Zvcm1TdGF0ZTtudWxsIT09dC53cml0ZWNodW5rJiZ0LndyaXRlY2ImJiF0LnRyYW5zZm9ybWluZz8odC50cmFuc2Zvcm1pbmc9ITAsdGhpcy5fdHJhbnNmb3JtKHQud3JpdGVjaHVuayx0LndyaXRlZW5jb2RpbmcsdC5hZnRlclRyYW5zZm9ybSkpOnQubmVlZFRyYW5zZm9ybT0hMH0sYS5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzO24ucHJvdG90eXBlLl9kZXN0cm95LmNhbGwodGhpcyxlLChmdW5jdGlvbihlKXt0KGUpLHIuZW1pdChcImNsb3NlXCIpfSkpfX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1yKDEyNykocigxMzEpKX0sZnVuY3Rpb24oZSl7ZS5leHBvcnRzPXtDT01QUkVTU0VEX1RZUEVfSU5WQUxJRDpcImNvbXByZXNzZWQgc2hvdWxkIGJlIGEgYm9vbGVhblwiLEVDX1BSSVZBVEVfS0VZX1RZUEVfSU5WQUxJRDpcInByaXZhdGUga2V5IHNob3VsZCBiZSBhIEJ1ZmZlclwiLEVDX1BSSVZBVEVfS0VZX0xFTkdUSF9JTlZBTElEOlwicHJpdmF0ZSBrZXkgbGVuZ3RoIGlzIGludmFsaWRcIixFQ19QUklWQVRFX0tFWV9SQU5HRV9JTlZBTElEOlwicHJpdmF0ZSBrZXkgcmFuZ2UgaXMgaW52YWxpZFwiLEVDX1BSSVZBVEVfS0VZX1RXRUFLX0FERF9GQUlMOlwidHdlYWsgb3V0IG9mIHJhbmdlIG9yIHJlc3VsdGluZyBwcml2YXRlIGtleSBpcyBpbnZhbGlkXCIsRUNfUFJJVkFURV9LRVlfVFdFQUtfTVVMX0ZBSUw6XCJ0d2VhayBvdXQgb2YgcmFuZ2VcIixFQ19QUklWQVRFX0tFWV9FWFBPUlRfREVSX0ZBSUw6XCJjb3VsZG4ndCBleHBvcnQgdG8gREVSIGZvcm1hdFwiLEVDX1BSSVZBVEVfS0VZX0lNUE9SVF9ERVJfRkFJTDpcImNvdWxkbid0IGltcG9ydCBmcm9tIERFUiBmb3JtYXRcIixFQ19QVUJMSUNfS0VZU19UWVBFX0lOVkFMSUQ6XCJwdWJsaWMga2V5cyBzaG91bGQgYmUgYW4gQXJyYXlcIixFQ19QVUJMSUNfS0VZU19MRU5HVEhfSU5WQUxJRDpcInB1YmxpYyBrZXlzIEFycmF5IHNob3VsZCBoYXZlIGF0IGxlYXN0IDEgZWxlbWVudFwiLEVDX1BVQkxJQ19LRVlfVFlQRV9JTlZBTElEOlwicHVibGljIGtleSBzaG91bGQgYmUgYSBCdWZmZXJcIixFQ19QVUJMSUNfS0VZX0xFTkdUSF9JTlZBTElEOlwicHVibGljIGtleSBsZW5ndGggaXMgaW52YWxpZFwiLEVDX1BVQkxJQ19LRVlfUEFSU0VfRkFJTDpcInRoZSBwdWJsaWMga2V5IGNvdWxkIG5vdCBiZSBwYXJzZWQgb3IgaXMgaW52YWxpZFwiLEVDX1BVQkxJQ19LRVlfQ1JFQVRFX0ZBSUw6XCJwcml2YXRlIHdhcyBpbnZhbGlkLCB0cnkgYWdhaW5cIixFQ19QVUJMSUNfS0VZX1RXRUFLX0FERF9GQUlMOlwidHdlYWsgb3V0IG9mIHJhbmdlIG9yIHJlc3VsdGluZyBwdWJsaWMga2V5IGlzIGludmFsaWRcIixFQ19QVUJMSUNfS0VZX1RXRUFLX01VTF9GQUlMOlwidHdlYWsgb3V0IG9mIHJhbmdlXCIsRUNfUFVCTElDX0tFWV9DT01CSU5FX0ZBSUw6XCJ0aGUgc3VtIG9mIHRoZSBwdWJsaWMga2V5cyBpcyBub3QgdmFsaWRcIixFQ0RIX0ZBSUw6XCJzY2FsYXIgd2FzIGludmFsaWQgKHplcm8gb3Igb3ZlcmZsb3cpXCIsRUNEU0FfU0lHTkFUVVJFX1RZUEVfSU5WQUxJRDpcInNpZ25hdHVyZSBzaG91bGQgYmUgYSBCdWZmZXJcIixFQ0RTQV9TSUdOQVRVUkVfTEVOR1RIX0lOVkFMSUQ6XCJzaWduYXR1cmUgbGVuZ3RoIGlzIGludmFsaWRcIixFQ0RTQV9TSUdOQVRVUkVfUEFSU0VfRkFJTDpcImNvdWxkbid0IHBhcnNlIHNpZ25hdHVyZVwiLEVDRFNBX1NJR05BVFVSRV9QQVJTRV9ERVJfRkFJTDpcImNvdWxkbid0IHBhcnNlIERFUiBzaWduYXR1cmVcIixFQ0RTQV9TSUdOQVRVUkVfU0VSSUFMSVpFX0RFUl9GQUlMOlwiY291bGRuJ3Qgc2VyaWFsaXplIHNpZ25hdHVyZSB0byBERVIgZm9ybWF0XCIsRUNEU0FfU0lHTl9GQUlMOlwibm9uY2UgZ2VuZXJhdGlvbiBmdW5jdGlvbiBmYWlsZWQgb3IgcHJpdmF0ZSBrZXkgaXMgaW52YWxpZFwiLEVDRFNBX1JFQ09WRVJfRkFJTDpcImNvdWxkbid0IHJlY292ZXIgcHVibGljIGtleSBmcm9tIHNpZ25hdHVyZVwiLE1TRzMyX1RZUEVfSU5WQUxJRDpcIm1lc3NhZ2Ugc2hvdWxkIGJlIGEgQnVmZmVyXCIsTVNHMzJfTEVOR1RIX0lOVkFMSUQ6XCJtZXNzYWdlIGxlbmd0aCBpcyBpbnZhbGlkXCIsT1BUSU9OU19UWVBFX0lOVkFMSUQ6XCJvcHRpb25zIHNob3VsZCBiZSBhbiBPYmplY3RcIixPUFRJT05TX0RBVEFfVFlQRV9JTlZBTElEOlwib3B0aW9ucy5kYXRhIHNob3VsZCBiZSBhIEJ1ZmZlclwiLE9QVElPTlNfREFUQV9MRU5HVEhfSU5WQUxJRDpcIm9wdGlvbnMuZGF0YSBsZW5ndGggaXMgaW52YWxpZFwiLE9QVElPTlNfTk9OQ0VGTl9UWVBFX0lOVkFMSUQ6XCJvcHRpb25zLm5vbmNlZm4gc2hvdWxkIGJlIGEgRnVuY3Rpb25cIixSRUNPVkVSWV9JRF9UWVBFX0lOVkFMSUQ6XCJyZWNvdmVyeSBzaG91bGQgYmUgYSBOdW1iZXJcIixSRUNPVkVSWV9JRF9WQUxVRV9JTlZBTElEOlwicmVjb3Zlcnkgc2hvdWxkIGhhdmUgdmFsdWUgYmV0d2VlbiAtMSBhbmQgNFwiLFRXRUFLX1RZUEVfSU5WQUxJRDpcInR3ZWFrIHNob3VsZCBiZSBhIEJ1ZmZlclwiLFRXRUFLX0xFTkdUSF9JTlZBTElEOlwidHdlYWsgbGVuZ3RoIGlzIGludmFsaWRcIn19LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDEpLkJ1ZmZlcixpPXIoMjQpLlRyYW5zZm9ybTtmdW5jdGlvbiBvKGUpe2kuY2FsbCh0aGlzKSx0aGlzLl9ibG9jaz1uLmFsbG9jVW5zYWZlKGUpLHRoaXMuX2Jsb2NrU2l6ZT1lLHRoaXMuX2Jsb2NrT2Zmc2V0PTAsdGhpcy5fbGVuZ3RoPVswLDAsMCwwXSx0aGlzLl9maW5hbGl6ZWQ9ITF9cigwKShvLGkpLG8ucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPW51bGw7dHJ5e3RoaXMudXBkYXRlKGUsdCl9Y2F0Y2goZSl7bj1lfXIobil9LG8ucHJvdG90eXBlLl9mbHVzaD1mdW5jdGlvbihlKXt2YXIgdD1udWxsO3RyeXt0aGlzLnB1c2godGhpcy5kaWdlc3QoKSl9Y2F0Y2goZSl7dD1lfWUodCl9LG8ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlLHQpe2lmKGZ1bmN0aW9uKGUsdCl7aWYoIW4uaXNCdWZmZXIoZSkmJlwic3RyaW5nXCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IodCtcIiBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgYnVmZmVyXCIpfShlLFwiRGF0YVwiKSx0aGlzLl9maW5hbGl6ZWQpdGhyb3cgbmV3IEVycm9yKFwiRGlnZXN0IGFscmVhZHkgY2FsbGVkXCIpO24uaXNCdWZmZXIoZSl8fChlPW4uZnJvbShlLHQpKTtmb3IodmFyIHI9dGhpcy5fYmxvY2ssaT0wO3RoaXMuX2Jsb2NrT2Zmc2V0K2UubGVuZ3RoLWk+PXRoaXMuX2Jsb2NrU2l6ZTspe2Zvcih2YXIgbz10aGlzLl9ibG9ja09mZnNldDtvPHRoaXMuX2Jsb2NrU2l6ZTspcltvKytdPWVbaSsrXTt0aGlzLl91cGRhdGUoKSx0aGlzLl9ibG9ja09mZnNldD0wfWZvcig7aTxlLmxlbmd0aDspclt0aGlzLl9ibG9ja09mZnNldCsrXT1lW2krK107Zm9yKHZhciBhPTAscz04KmUubGVuZ3RoO3M+MDsrK2EpdGhpcy5fbGVuZ3RoW2FdKz1zLChzPXRoaXMuX2xlbmd0aFthXS80Mjk0OTY3Mjk2fDApPjAmJih0aGlzLl9sZW5ndGhbYV0tPTQyOTQ5NjcyOTYqcyk7cmV0dXJuIHRoaXN9LG8ucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJfdXBkYXRlIGlzIG5vdCBpbXBsZW1lbnRlZFwiKX0sby5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKGUpe2lmKHRoaXMuX2ZpbmFsaXplZCl0aHJvdyBuZXcgRXJyb3IoXCJEaWdlc3QgYWxyZWFkeSBjYWxsZWRcIik7dGhpcy5fZmluYWxpemVkPSEwO3ZhciB0PXRoaXMuX2RpZ2VzdCgpO3ZvaWQgMCE9PWUmJih0PXQudG9TdHJpbmcoZSkpLHRoaXMuX2Jsb2NrLmZpbGwoMCksdGhpcy5fYmxvY2tPZmZzZXQ9MDtmb3IodmFyIHI9MDtyPDQ7KytyKXRoaXMuX2xlbmd0aFtyXT0wO3JldHVybiB0fSxvLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwiX2RpZ2VzdCBpcyBub3QgaW1wbGVtZW50ZWRcIil9LGUuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigwKSxpPXIoMTQpLG89cigxKS5CdWZmZXIsYT1bMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XSxzPW5ldyBBcnJheSg2NCk7ZnVuY3Rpb24gZigpe3RoaXMuaW5pdCgpLHRoaXMuX3c9cyxpLmNhbGwodGhpcyw2NCw1Nil9ZnVuY3Rpb24gYyhlLHQscil7cmV0dXJuIHJeZSYodF5yKX1mdW5jdGlvbiB1KGUsdCxyKXtyZXR1cm4gZSZ0fHImKGV8dCl9ZnVuY3Rpb24gaChlKXtyZXR1cm4oZT4+PjJ8ZTw8MzApXihlPj4+MTN8ZTw8MTkpXihlPj4+MjJ8ZTw8MTApfWZ1bmN0aW9uIGwoZSl7cmV0dXJuKGU+Pj42fGU8PDI2KV4oZT4+PjExfGU8PDIxKV4oZT4+PjI1fGU8PDcpfWZ1bmN0aW9uIGQoZSl7cmV0dXJuKGU+Pj43fGU8PDI1KV4oZT4+PjE4fGU8PDE0KV5lPj4+M31uKGYsaSksZi5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hPTE3NzkwMzM3MDMsdGhpcy5fYj0zMTQ0MTM0Mjc3LHRoaXMuX2M9MTAxMzkwNDI0Mix0aGlzLl9kPTI3NzM0ODA3NjIsdGhpcy5fZT0xMzU5ODkzMTE5LHRoaXMuX2Y9MjYwMDgyMjkyNCx0aGlzLl9nPTUyODczNDYzNSx0aGlzLl9oPTE1NDE0NTkyMjUsdGhpc30sZi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihlKXtmb3IodmFyIHQscj10aGlzLl93LG49MHx0aGlzLl9hLGk9MHx0aGlzLl9iLG89MHx0aGlzLl9jLHM9MHx0aGlzLl9kLGY9MHx0aGlzLl9lLHA9MHx0aGlzLl9mLGI9MHx0aGlzLl9nLHk9MHx0aGlzLl9oLGc9MDtnPDE2OysrZylyW2ddPWUucmVhZEludDMyQkUoNCpnKTtmb3IoO2c8NjQ7KytnKXJbZ109MHwoKCh0PXJbZy0yXSk+Pj4xN3x0PDwxNSleKHQ+Pj4xOXx0PDwxMyledD4+PjEwKStyW2ctN10rZChyW2ctMTVdKStyW2ctMTZdO2Zvcih2YXIgdj0wO3Y8NjQ7Kyt2KXt2YXIgbT15K2woZikrYyhmLHAsYikrYVt2XStyW3ZdfDAsXz1oKG4pK3UobixpLG8pfDA7eT1iLGI9cCxwPWYsZj1zK218MCxzPW8sbz1pLGk9bixuPW0rX3wwfXRoaXMuX2E9bit0aGlzLl9hfDAsdGhpcy5fYj1pK3RoaXMuX2J8MCx0aGlzLl9jPW8rdGhpcy5fY3wwLHRoaXMuX2Q9cyt0aGlzLl9kfDAsdGhpcy5fZT1mK3RoaXMuX2V8MCx0aGlzLl9mPXArdGhpcy5fZnwwLHRoaXMuX2c9Yit0aGlzLl9nfDAsdGhpcy5faD15K3RoaXMuX2h8MH0sZi5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgZT1vLmFsbG9jVW5zYWZlKDMyKTtyZXR1cm4gZS53cml0ZUludDMyQkUodGhpcy5fYSwwKSxlLndyaXRlSW50MzJCRSh0aGlzLl9iLDQpLGUud3JpdGVJbnQzMkJFKHRoaXMuX2MsOCksZS53cml0ZUludDMyQkUodGhpcy5fZCwxMiksZS53cml0ZUludDMyQkUodGhpcy5fZSwxNiksZS53cml0ZUludDMyQkUodGhpcy5fZiwyMCksZS53cml0ZUludDMyQkUodGhpcy5fZywyNCksZS53cml0ZUludDMyQkUodGhpcy5faCwyOCksZX0sZS5leHBvcnRzPWZ9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDApLGk9cigxNCksbz1yKDEpLkJ1ZmZlcixhPVsxMTE2MzUyNDA4LDM2MDk3Njc0NTgsMTg5OTQ0NzQ0MSw2MDI4OTE3MjUsMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5LDM5MjEwMDk1NzMsMjE3MzI5NTU0OCw5NjE5ODcxNjMsNDA4MTYyODQ3MiwxNTA4OTcwOTkzLDMwNTM4MzQyNjUsMjQ1MzYzNTc0OCwyOTM3NjcxNTc5LDI4NzA3NjMyMjEsMzY2NDYwOTU2MCwzNjI0MzgxMDgwLDI3MzQ4ODMzOTQsMzEwNTk4NDAxLDExNjQ5OTY1NDIsNjA3MjI1Mjc4LDEzMjM2MTA3NjQsMTQyNjg4MTk4NywzNTkwMzA0OTk0LDE5MjUwNzgzODgsNDA2ODE4MjM4MywyMTYyMDc4MjA2LDk5MTMzNjExMywyNjE0ODg4MTAzLDYzMzgwMzMxNywzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgsMzgzNTM5MDQwMSwyNjY2NjEzNDU4LDQwMjIyMjQ3NzQsOTQ0NzExMTM5LDI2NDM0NzA3OCwyMzQxMjYyNzczLDYwNDgwNzYyOCwyMDA3ODAwOTMzLDc3MDI1NTk4MywxNDk1OTkwOTAxLDEyNDkxNTAxMjIsMTg1NjQzMTIzNSwxNTU1MDgxNjkyLDMxNzUyMTgxMzIsMTk5NjA2NDk4NiwyMTk4OTUwODM3LDI1NTQyMjA4ODIsMzk5OTcxOTMzOSwyODIxODM0MzQ5LDc2Njc4NDAxNiwyOTUyOTk2ODA4LDI1NjY1OTQ4NzksMzIxMDMxMzY3MSwzMjAzMzM3OTU2LDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiwzNTg0NTI4NzExLDI0NjY5NDg5MDEsMTEzOTI2OTkzLDM3NTgzMjYzODMsMzM4MjQxODk1LDE2ODcxNzkzNiw2NjYzMDcyMDUsMTE4ODE3OTk2NCw3NzM1Mjk5MTIsMTU0NjA0NTczNCwxMjk0NzU3MzcyLDE1MjI4MDU0ODUsMTM5NjE4MjI5MSwyNjQzODMzODIzLDE2OTUxODM3MDAsMjM0MzUyNzM5MCwxOTg2NjYxMDUxLDEwMTQ0Nzc0ODAsMjE3NzAyNjM1MCwxMjA2NzU5MTQyLDI0NTY5NTYwMzcsMzQ0MDc3NjI3LDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCwyODIwMzAyNDExLDMxNTg0NTQyNzMsMzI1OTczMDgwMCwzNTA1OTUyNjU3LDMzNDU3NjQ3NzEsMTA2MjE3MDA4LDM1MTYwNjU4MTcsMzYwNjAwODM0NCwzNjAwMzUyODA0LDE0MzI3MjU3NzYsNDA5NDU3MTkwOSwxNDY3MDMxNTk0LDI3NTQyMzM0NCw4NTExNjk3MjAsNDMwMjI3NzM0LDMxMDA4MjM3NTIsNTA2OTQ4NjE2LDEzNjMyNTgxOTUsNjU5MDYwNTU2LDM3NTA2ODU1OTMsODgzOTk3ODc3LDM3ODUwNTAyODAsOTU4MTM5NTcxLDMzMTgzMDc0MjcsMTMyMjgyMjIxOCwzODEyNzIzNDAzLDE1MzcwMDIwNjMsMjAwMzAzNDk5NSwxNzQ3ODczNzc5LDM2MDIwMzY4OTksMTk1NTU2MjIyMiwxNTc1OTkwMDEyLDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCwyMjI3NzMwNDUyLDI3MTY5MDQzMDYsMjM2MTg1MjQyNCw0NDI3NzYwNDQsMjQyODQzNjQ3NCw1OTM2OTgzNDQsMjc1NjczNDE4NywzNzMzMTEwMjQ5LDMyMDQwMzE0NzksMjk5OTM1MTU3MywzMzI5MzI1Mjk4LDM4MTU5MjA0MjcsMzM5MTU2OTYxNCwzOTI4MzgzOTAwLDM1MTUyNjcyNzEsNTY2MjgwNzExLDM5NDAxODc2MDYsMzQ1NDA2OTUzNCw0MTE4NjMwMjcxLDQwMDAyMzk5OTIsMTE2NDE4NDc0LDE5MTQxMzg1NTQsMTc0MjkyNDIxLDI3MzEwNTUyNzAsMjg5MzgwMzU2LDMyMDM5OTMwMDYsNDYwMzkzMjY5LDMyMDYyMDMxNSw2ODU0NzE3MzMsNTg3NDk2ODM2LDg1MjE0Mjk3MSwxMDg2NzkyODUxLDEwMTcwMzYyOTgsMzY1NTQzMTAwLDExMjYwMDA1ODAsMjYxODI5NzY3NiwxMjg4MDMzNDcwLDM0MDk4NTUxNTgsMTUwMTUwNTk0OCw0MjM0NTA5ODY2LDE2MDcxNjc5MTUsOTg3MTY3NDY4LDE4MTY0MDIzMTYsMTI0NjE4OTU5MV0scz1uZXcgQXJyYXkoMTYwKTtmdW5jdGlvbiBmKCl7dGhpcy5pbml0KCksdGhpcy5fdz1zLGkuY2FsbCh0aGlzLDEyOCwxMTIpfWZ1bmN0aW9uIGMoZSx0LHIpe3JldHVybiByXmUmKHRecil9ZnVuY3Rpb24gdShlLHQscil7cmV0dXJuIGUmdHxyJihlfHQpfWZ1bmN0aW9uIGgoZSx0KXtyZXR1cm4oZT4+PjI4fHQ8PDQpXih0Pj4+MnxlPDwzMCleKHQ+Pj43fGU8PDI1KX1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuKGU+Pj4xNHx0PDwxOCleKGU+Pj4xOHx0PDwxNCleKHQ+Pj45fGU8PDIzKX1mdW5jdGlvbiBkKGUsdCl7cmV0dXJuKGU+Pj4xfHQ8PDMxKV4oZT4+Pjh8dDw8MjQpXmU+Pj43fWZ1bmN0aW9uIHAoZSx0KXtyZXR1cm4oZT4+PjF8dDw8MzEpXihlPj4+OHx0PDwyNCleKGU+Pj43fHQ8PDI1KX1mdW5jdGlvbiBiKGUsdCl7cmV0dXJuKGU+Pj4xOXx0PDwxMyleKHQ+Pj4yOXxlPDwzKV5lPj4+Nn1mdW5jdGlvbiB5KGUsdCl7cmV0dXJuKGU+Pj4xOXx0PDwxMyleKHQ+Pj4yOXxlPDwzKV4oZT4+PjZ8dDw8MjYpfWZ1bmN0aW9uIGcoZSx0KXtyZXR1cm4gZT4+PjA8dD4+PjA/MTowfW4oZixpKSxmLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FoPTE3NzkwMzM3MDMsdGhpcy5fYmg9MzE0NDEzNDI3Nyx0aGlzLl9jaD0xMDEzOTA0MjQyLHRoaXMuX2RoPTI3NzM0ODA3NjIsdGhpcy5fZWg9MTM1OTg5MzExOSx0aGlzLl9maD0yNjAwODIyOTI0LHRoaXMuX2doPTUyODczNDYzNSx0aGlzLl9oaD0xNTQxNDU5MjI1LHRoaXMuX2FsPTQwODkyMzU3MjAsdGhpcy5fYmw9MjIyNzg3MzU5NSx0aGlzLl9jbD00MjcxMTc1NzIzLHRoaXMuX2RsPTE1OTU3NTAxMjksdGhpcy5fZWw9MjkxNzU2NTEzNyx0aGlzLl9mbD03MjU1MTExOTksdGhpcy5fZ2w9NDIxNTM4OTU0Nyx0aGlzLl9obD0zMjcwMzMyMDksdGhpc30sZi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5fdyxyPTB8dGhpcy5fYWgsbj0wfHRoaXMuX2JoLGk9MHx0aGlzLl9jaCxvPTB8dGhpcy5fZGgscz0wfHRoaXMuX2VoLGY9MHx0aGlzLl9maCx2PTB8dGhpcy5fZ2gsbT0wfHRoaXMuX2hoLF89MHx0aGlzLl9hbCx3PTB8dGhpcy5fYmwsRT0wfHRoaXMuX2NsLEE9MHx0aGlzLl9kbCxTPTB8dGhpcy5fZWwsaz0wfHRoaXMuX2ZsLHg9MHx0aGlzLl9nbCxJPTB8dGhpcy5faGwsTT0wO008MzI7TSs9Mil0W01dPWUucmVhZEludDMyQkUoNCpNKSx0W00rMV09ZS5yZWFkSW50MzJCRSg0Kk0rNCk7Zm9yKDtNPDE2MDtNKz0yKXt2YXIgVD10W00tMzBdLFA9dFtNLTMwKzFdLEI9ZChULFApLEw9cChQLFQpLFI9YihUPXRbTS00XSxQPXRbTS00KzFdKSxPPXkoUCxUKSxDPXRbTS0xNF0sTj10W00tMTQrMV0saj10W00tMzJdLEQ9dFtNLTMyKzFdLHE9TCtOfDAsVT1CK0MrZyhxLEwpfDA7VT0oVT1VK1IrZyhxPXErT3wwLE8pfDApK2orZyhxPXErRHwwLEQpfDAsdFtNXT1VLHRbTSsxXT1xfWZvcih2YXIgRj0wO0Y8MTYwO0YrPTIpe1U9dFtGXSxxPXRbRisxXTt2YXIgej11KHIsbixpKSxLPXUoXyx3LEUpLEg9aChyLF8pLFY9aChfLHIpLFk9bChzLFMpLEc9bChTLHMpLCQ9YVtGXSxXPWFbRisxXSxaPWMocyxmLHYpLEo9YyhTLGsseCksWD1JK0d8MCxRPW0rWStnKFgsSSl8MDtRPShRPShRPVErWitnKFg9WCtKfDAsSil8MCkrJCtnKFg9WCtXfDAsVyl8MCkrVStnKFg9WCtxfDAscSl8MDt2YXIgZWU9VitLfDAsdGU9SCt6K2coZWUsVil8MDttPXYsST14LHY9Zix4PWssZj1zLGs9UyxzPW8rUStnKFM9QStYfDAsQSl8MCxvPWksQT1FLGk9bixFPXcsbj1yLHc9XyxyPVErdGUrZyhfPVgrZWV8MCxYKXwwfXRoaXMuX2FsPXRoaXMuX2FsK198MCx0aGlzLl9ibD10aGlzLl9ibCt3fDAsdGhpcy5fY2w9dGhpcy5fY2wrRXwwLHRoaXMuX2RsPXRoaXMuX2RsK0F8MCx0aGlzLl9lbD10aGlzLl9lbCtTfDAsdGhpcy5fZmw9dGhpcy5fZmwra3wwLHRoaXMuX2dsPXRoaXMuX2dsK3h8MCx0aGlzLl9obD10aGlzLl9obCtJfDAsdGhpcy5fYWg9dGhpcy5fYWgrcitnKHRoaXMuX2FsLF8pfDAsdGhpcy5fYmg9dGhpcy5fYmgrbitnKHRoaXMuX2JsLHcpfDAsdGhpcy5fY2g9dGhpcy5fY2graStnKHRoaXMuX2NsLEUpfDAsdGhpcy5fZGg9dGhpcy5fZGgrbytnKHRoaXMuX2RsLEEpfDAsdGhpcy5fZWg9dGhpcy5fZWgrcytnKHRoaXMuX2VsLFMpfDAsdGhpcy5fZmg9dGhpcy5fZmgrZitnKHRoaXMuX2ZsLGspfDAsdGhpcy5fZ2g9dGhpcy5fZ2grditnKHRoaXMuX2dsLHgpfDAsdGhpcy5faGg9dGhpcy5faGgrbStnKHRoaXMuX2hsLEkpfDB9LGYucHJvdG90eXBlLl9oYXNoPWZ1bmN0aW9uKCl7dmFyIGU9by5hbGxvY1Vuc2FmZSg2NCk7ZnVuY3Rpb24gdCh0LHIsbil7ZS53cml0ZUludDMyQkUodCxuKSxlLndyaXRlSW50MzJCRShyLG4rNCl9cmV0dXJuIHQodGhpcy5fYWgsdGhpcy5fYWwsMCksdCh0aGlzLl9iaCx0aGlzLl9ibCw4KSx0KHRoaXMuX2NoLHRoaXMuX2NsLDE2KSx0KHRoaXMuX2RoLHRoaXMuX2RsLDI0KSx0KHRoaXMuX2VoLHRoaXMuX2VsLDMyKSx0KHRoaXMuX2ZoLHRoaXMuX2ZsLDQwKSx0KHRoaXMuX2doLHRoaXMuX2dsLDQ4KSx0KHRoaXMuX2hoLHRoaXMuX2hsLDU2KSxlfSxlLmV4cG9ydHM9Zn0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXQ7ZnVuY3Rpb24gaShlKXtyZXR1cm4gMT09PWUubGVuZ3RoP1wiMFwiK2U6ZX1mdW5jdGlvbiBvKGUpe2Zvcih2YXIgdD1cIlwiLHI9MDtyPGUubGVuZ3RoO3IrKyl0Kz1pKGVbcl0udG9TdHJpbmcoMTYpKTtyZXR1cm4gdH1uLnRvQXJyYXk9ZnVuY3Rpb24oZSx0KXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlLnNsaWNlKCk7aWYoIWUpcmV0dXJuW107dmFyIHI9W107aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXJbbl09MHxlW25dO3JldHVybiByfWlmKFwiaGV4XCI9PT10KXsoZT1lLnJlcGxhY2UoL1teYS16MC05XSsvZ2ksXCJcIikpLmxlbmd0aCUyIT0wJiYoZT1cIjBcIitlKTtmb3Iobj0wO248ZS5sZW5ndGg7bis9MilyLnB1c2gocGFyc2VJbnQoZVtuXStlW24rMV0sMTYpKX1lbHNlIGZvcihuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciBpPWUuY2hhckNvZGVBdChuKSxvPWk+PjgsYT0yNTUmaTtvP3IucHVzaChvLGEpOnIucHVzaChhKX1yZXR1cm4gcn0sbi56ZXJvMj1pLG4udG9IZXg9byxuLmVuY29kZT1mdW5jdGlvbihlLHQpe3JldHVyblwiaGV4XCI9PT10P28oZSk6ZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbjtmdW5jdGlvbiBpKGUpe3RoaXMucmFuZD1lfWlmKGUuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbnx8KG49bmV3IGkobnVsbCkpLG4uZ2VuZXJhdGUoZSl9LGUuZXhwb3J0cy5SYW5kPWksaS5wcm90b3R5cGUuZ2VuZXJhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3JhbmQoZSl9LGkucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKGUpe2lmKHRoaXMucmFuZC5nZXRCeXRlcylyZXR1cm4gdGhpcy5yYW5kLmdldEJ5dGVzKGUpO2Zvcih2YXIgdD1uZXcgVWludDhBcnJheShlKSxyPTA7cjx0Lmxlbmd0aDtyKyspdFtyXT10aGlzLnJhbmQuZ2V0Qnl0ZSgpO3JldHVybiB0fSxcIm9iamVjdFwiPT10eXBlb2Ygc2VsZilzZWxmLmNyeXB0byYmc2VsZi5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzP2kucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBVaW50OEFycmF5KGUpO3JldHVybiBzZWxmLmNyeXB0by5nZXRSYW5kb21WYWx1ZXModCksdH06c2VsZi5tc0NyeXB0byYmc2VsZi5tc0NyeXB0by5nZXRSYW5kb21WYWx1ZXM/aS5wcm90b3R5cGUuX3JhbmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFVpbnQ4QXJyYXkoZSk7cmV0dXJuIHNlbGYubXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHQpLHR9Olwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cmJihpLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihcIk5vdCBpbXBsZW1lbnRlZCB5ZXRcIil9KTtlbHNlIHRyeXt2YXIgbz1yKDE0Myk7aWYoXCJmdW5jdGlvblwiIT10eXBlb2Ygby5yYW5kb21CeXRlcyl0aHJvdyBuZXcgRXJyb3IoXCJOb3Qgc3VwcG9ydGVkXCIpO2kucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKGUpe3JldHVybiBvLnJhbmRvbUJ5dGVzKGUpfX1jYXRjaChlKXt9fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49dDtuLmJhc2U9cigyOCksbi5zaG9ydD1yKDE0NCksbi5tb250PXIoMTQ1KSxuLmVkd2FyZHM9cigxNDYpfSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cig4KS5yb3RyMzI7ZnVuY3Rpb24gaShlLHQscil7cmV0dXJuIGUmdF5+ZSZyfWZ1bmN0aW9uIG8oZSx0LHIpe3JldHVybiBlJnReZSZyXnQmcn1mdW5jdGlvbiBhKGUsdCxyKXtyZXR1cm4gZV50XnJ9dC5mdF8xPWZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiAwPT09ZT9pKHQscixuKToxPT09ZXx8Mz09PWU/YSh0LHIsbik6Mj09PWU/byh0LHIsbik6dm9pZCAwfSx0LmNoMzI9aSx0Lm1hajMyPW8sdC5wMzI9YSx0LnMwXzI1Nj1mdW5jdGlvbihlKXtyZXR1cm4gbihlLDIpXm4oZSwxMylebihlLDIyKX0sdC5zMV8yNTY9ZnVuY3Rpb24oZSl7cmV0dXJuIG4oZSw2KV5uKGUsMTEpXm4oZSwyNSl9LHQuZzBfMjU2PWZ1bmN0aW9uKGUpe3JldHVybiBuKGUsNylebihlLDE4KV5lPj4+M30sdC5nMV8yNTY9ZnVuY3Rpb24oZSl7cmV0dXJuIG4oZSwxNylebihlLDE5KV5lPj4+MTB9fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cig4KSxpPXIoMTcpLG89cig2NSksYT1yKDExKSxzPW4uc3VtMzIsZj1uLnN1bTMyXzQsYz1uLnN1bTMyXzUsdT1vLmNoMzIsaD1vLm1hajMyLGw9by5zMF8yNTYsZD1vLnMxXzI1NixwPW8uZzBfMjU2LGI9by5nMV8yNTYseT1pLkJsb2NrSGFzaCxnPVsxMTE2MzUyNDA4LDE4OTk0NDc0NDEsMzA0OTMyMzQ3MSwzOTIxMDA5NTczLDk2MTk4NzE2MywxNTA4OTcwOTkzLDI0NTM2MzU3NDgsMjg3MDc2MzIyMSwzNjI0MzgxMDgwLDMxMDU5ODQwMSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LDIxNjIwNzgyMDYsMjYxNDg4ODEwMywzMjQ4MjIyNTgwLDM4MzUzOTA0MDEsNDAyMjIyNDc3NCwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwyNTU0MjIwODgyLDI4MjE4MzQzNDksMjk1Mjk5NjgwOCwzMjEwMzEzNjcxLDMzMzY1NzE4OTEsMzU4NDUyODcxMSwxMTM5MjY5OTMsMzM4MjQxODk1LDY2NjMwNzIwNSw3NzM1Mjk5MTIsMTI5NDc1NzM3MiwxMzk2MTgyMjkxLDE2OTUxODM3MDAsMTk4NjY2MTA1MSwyMTc3MDI2MzUwLDI0NTY5NTYwMzcsMjczMDQ4NTkyMSwyODIwMzAyNDExLDMyNTk3MzA4MDAsMzM0NTc2NDc3MSwzNTE2MDY1ODE3LDM2MDAzNTI4MDQsNDA5NDU3MTkwOSwyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsMjIyNzczMDQ1MiwyMzYxODUyNDI0LDI0Mjg0MzY0NzQsMjc1NjczNDE4NywzMjA0MDMxNDc5LDMzMjkzMjUyOThdO2Z1bmN0aW9uIHYoKXtpZighKHRoaXMgaW5zdGFuY2VvZiB2KSlyZXR1cm4gbmV3IHY7eS5jYWxsKHRoaXMpLHRoaXMuaD1bMTc3OTAzMzcwMywzMTQ0MTM0Mjc3LDEwMTM5MDQyNDIsMjc3MzQ4MDc2MiwxMzU5ODkzMTE5LDI2MDA4MjI5MjQsNTI4NzM0NjM1LDE1NDE0NTkyMjVdLHRoaXMuaz1nLHRoaXMuVz1uZXcgQXJyYXkoNjQpfW4uaW5oZXJpdHModix5KSxlLmV4cG9ydHM9dix2LmJsb2NrU2l6ZT01MTIsdi5vdXRTaXplPTI1Nix2LmhtYWNTdHJlbmd0aD0xOTIsdi5wYWRMZW5ndGg9NjQsdi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10aGlzLlcsbj0wO248MTY7bisrKXJbbl09ZVt0K25dO2Zvcig7bjxyLmxlbmd0aDtuKyspcltuXT1mKGIocltuLTJdKSxyW24tN10scChyW24tMTVdKSxyW24tMTZdKTt2YXIgaT10aGlzLmhbMF0sbz10aGlzLmhbMV0seT10aGlzLmhbMl0sZz10aGlzLmhbM10sdj10aGlzLmhbNF0sbT10aGlzLmhbNV0sXz10aGlzLmhbNl0sdz10aGlzLmhbN107Zm9yKGEodGhpcy5rLmxlbmd0aD09PXIubGVuZ3RoKSxuPTA7bjxyLmxlbmd0aDtuKyspe3ZhciBFPWModyxkKHYpLHUodixtLF8pLHRoaXMua1tuXSxyW25dKSxBPXMobChpKSxoKGksbyx5KSk7dz1fLF89bSxtPXYsdj1zKGcsRSksZz15LHk9byxvPWksaT1zKEUsQSl9dGhpcy5oWzBdPXModGhpcy5oWzBdLGkpLHRoaXMuaFsxXT1zKHRoaXMuaFsxXSxvKSx0aGlzLmhbMl09cyh0aGlzLmhbMl0seSksdGhpcy5oWzNdPXModGhpcy5oWzNdLGcpLHRoaXMuaFs0XT1zKHRoaXMuaFs0XSx2KSx0aGlzLmhbNV09cyh0aGlzLmhbNV0sbSksdGhpcy5oWzZdPXModGhpcy5oWzZdLF8pLHRoaXMuaFs3XT1zKHRoaXMuaFs3XSx3KX0sdi5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbihlKXtyZXR1cm5cImhleFwiPT09ZT9uLnRvSGV4MzIodGhpcy5oLFwiYmlnXCIpOm4uc3BsaXQzMih0aGlzLmgsXCJiaWdcIil9fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cig4KSxpPXIoMTcpLG89cigxMSksYT1uLnJvdHI2NF9oaSxzPW4ucm90cjY0X2xvLGY9bi5zaHI2NF9oaSxjPW4uc2hyNjRfbG8sdT1uLnN1bTY0LGg9bi5zdW02NF9oaSxsPW4uc3VtNjRfbG8sZD1uLnN1bTY0XzRfaGkscD1uLnN1bTY0XzRfbG8sYj1uLnN1bTY0XzVfaGkseT1uLnN1bTY0XzVfbG8sZz1pLkJsb2NrSGFzaCx2PVsxMTE2MzUyNDA4LDM2MDk3Njc0NTgsMTg5OTQ0NzQ0MSw2MDI4OTE3MjUsMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5LDM5MjEwMDk1NzMsMjE3MzI5NTU0OCw5NjE5ODcxNjMsNDA4MTYyODQ3MiwxNTA4OTcwOTkzLDMwNTM4MzQyNjUsMjQ1MzYzNTc0OCwyOTM3NjcxNTc5LDI4NzA3NjMyMjEsMzY2NDYwOTU2MCwzNjI0MzgxMDgwLDI3MzQ4ODMzOTQsMzEwNTk4NDAxLDExNjQ5OTY1NDIsNjA3MjI1Mjc4LDEzMjM2MTA3NjQsMTQyNjg4MTk4NywzNTkwMzA0OTk0LDE5MjUwNzgzODgsNDA2ODE4MjM4MywyMTYyMDc4MjA2LDk5MTMzNjExMywyNjE0ODg4MTAzLDYzMzgwMzMxNywzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgsMzgzNTM5MDQwMSwyNjY2NjEzNDU4LDQwMjIyMjQ3NzQsOTQ0NzExMTM5LDI2NDM0NzA3OCwyMzQxMjYyNzczLDYwNDgwNzYyOCwyMDA3ODAwOTMzLDc3MDI1NTk4MywxNDk1OTkwOTAxLDEyNDkxNTAxMjIsMTg1NjQzMTIzNSwxNTU1MDgxNjkyLDMxNzUyMTgxMzIsMTk5NjA2NDk4NiwyMTk4OTUwODM3LDI1NTQyMjA4ODIsMzk5OTcxOTMzOSwyODIxODM0MzQ5LDc2Njc4NDAxNiwyOTUyOTk2ODA4LDI1NjY1OTQ4NzksMzIxMDMxMzY3MSwzMjAzMzM3OTU2LDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiwzNTg0NTI4NzExLDI0NjY5NDg5MDEsMTEzOTI2OTkzLDM3NTgzMjYzODMsMzM4MjQxODk1LDE2ODcxNzkzNiw2NjYzMDcyMDUsMTE4ODE3OTk2NCw3NzM1Mjk5MTIsMTU0NjA0NTczNCwxMjk0NzU3MzcyLDE1MjI4MDU0ODUsMTM5NjE4MjI5MSwyNjQzODMzODIzLDE2OTUxODM3MDAsMjM0MzUyNzM5MCwxOTg2NjYxMDUxLDEwMTQ0Nzc0ODAsMjE3NzAyNjM1MCwxMjA2NzU5MTQyLDI0NTY5NTYwMzcsMzQ0MDc3NjI3LDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCwyODIwMzAyNDExLDMxNTg0NTQyNzMsMzI1OTczMDgwMCwzNTA1OTUyNjU3LDMzNDU3NjQ3NzEsMTA2MjE3MDA4LDM1MTYwNjU4MTcsMzYwNjAwODM0NCwzNjAwMzUyODA0LDE0MzI3MjU3NzYsNDA5NDU3MTkwOSwxNDY3MDMxNTk0LDI3NTQyMzM0NCw4NTExNjk3MjAsNDMwMjI3NzM0LDMxMDA4MjM3NTIsNTA2OTQ4NjE2LDEzNjMyNTgxOTUsNjU5MDYwNTU2LDM3NTA2ODU1OTMsODgzOTk3ODc3LDM3ODUwNTAyODAsOTU4MTM5NTcxLDMzMTgzMDc0MjcsMTMyMjgyMjIxOCwzODEyNzIzNDAzLDE1MzcwMDIwNjMsMjAwMzAzNDk5NSwxNzQ3ODczNzc5LDM2MDIwMzY4OTksMTk1NTU2MjIyMiwxNTc1OTkwMDEyLDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCwyMjI3NzMwNDUyLDI3MTY5MDQzMDYsMjM2MTg1MjQyNCw0NDI3NzYwNDQsMjQyODQzNjQ3NCw1OTM2OTgzNDQsMjc1NjczNDE4NywzNzMzMTEwMjQ5LDMyMDQwMzE0NzksMjk5OTM1MTU3MywzMzI5MzI1Mjk4LDM4MTU5MjA0MjcsMzM5MTU2OTYxNCwzOTI4MzgzOTAwLDM1MTUyNjcyNzEsNTY2MjgwNzExLDM5NDAxODc2MDYsMzQ1NDA2OTUzNCw0MTE4NjMwMjcxLDQwMDAyMzk5OTIsMTE2NDE4NDc0LDE5MTQxMzg1NTQsMTc0MjkyNDIxLDI3MzEwNTUyNzAsMjg5MzgwMzU2LDMyMDM5OTMwMDYsNDYwMzkzMjY5LDMyMDYyMDMxNSw2ODU0NzE3MzMsNTg3NDk2ODM2LDg1MjE0Mjk3MSwxMDg2NzkyODUxLDEwMTcwMzYyOTgsMzY1NTQzMTAwLDExMjYwMDA1ODAsMjYxODI5NzY3NiwxMjg4MDMzNDcwLDM0MDk4NTUxNTgsMTUwMTUwNTk0OCw0MjM0NTA5ODY2LDE2MDcxNjc5MTUsOTg3MTY3NDY4LDE4MTY0MDIzMTYsMTI0NjE4OTU5MV07ZnVuY3Rpb24gbSgpe2lmKCEodGhpcyBpbnN0YW5jZW9mIG0pKXJldHVybiBuZXcgbTtnLmNhbGwodGhpcyksdGhpcy5oPVsxNzc5MDMzNzAzLDQwODkyMzU3MjAsMzE0NDEzNDI3NywyMjI3ODczNTk1LDEwMTM5MDQyNDIsNDI3MTE3NTcyMywyNzczNDgwNzYyLDE1OTU3NTAxMjksMTM1OTg5MzExOSwyOTE3NTY1MTM3LDI2MDA4MjI5MjQsNzI1NTExMTk5LDUyODczNDYzNSw0MjE1Mzg5NTQ3LDE1NDE0NTkyMjUsMzI3MDMzMjA5XSx0aGlzLms9dix0aGlzLlc9bmV3IEFycmF5KDE2MCl9ZnVuY3Rpb24gXyhlLHQscixuLGkpe3ZhciBvPWUmcl5+ZSZpO3JldHVybiBvPDAmJihvKz00Mjk0OTY3Mjk2KSxvfWZ1bmN0aW9uIHcoZSx0LHIsbixpLG8pe3ZhciBhPXQmbl5+dCZvO3JldHVybiBhPDAmJihhKz00Mjk0OTY3Mjk2KSxhfWZ1bmN0aW9uIEUoZSx0LHIsbixpKXt2YXIgbz1lJnJeZSZpXnImaTtyZXR1cm4gbzwwJiYobys9NDI5NDk2NzI5Niksb31mdW5jdGlvbiBBKGUsdCxyLG4saSxvKXt2YXIgYT10Jm5edCZvXm4mbztyZXR1cm4gYTwwJiYoYSs9NDI5NDk2NzI5NiksYX1mdW5jdGlvbiBTKGUsdCl7dmFyIHI9YShlLHQsMjgpXmEodCxlLDIpXmEodCxlLDcpO3JldHVybiByPDAmJihyKz00Mjk0OTY3Mjk2KSxyfWZ1bmN0aW9uIGsoZSx0KXt2YXIgcj1zKGUsdCwyOClecyh0LGUsMilecyh0LGUsNyk7cmV0dXJuIHI8MCYmKHIrPTQyOTQ5NjcyOTYpLHJ9ZnVuY3Rpb24geChlLHQpe3ZhciByPWEoZSx0LDE0KV5hKGUsdCwxOCleYSh0LGUsOSk7cmV0dXJuIHI8MCYmKHIrPTQyOTQ5NjcyOTYpLHJ9ZnVuY3Rpb24gSShlLHQpe3ZhciByPXMoZSx0LDE0KV5zKGUsdCwxOClecyh0LGUsOSk7cmV0dXJuIHI8MCYmKHIrPTQyOTQ5NjcyOTYpLHJ9ZnVuY3Rpb24gTShlLHQpe3ZhciByPWEoZSx0LDEpXmEoZSx0LDgpXmYoZSx0LDcpO3JldHVybiByPDAmJihyKz00Mjk0OTY3Mjk2KSxyfWZ1bmN0aW9uIFQoZSx0KXt2YXIgcj1zKGUsdCwxKV5zKGUsdCw4KV5jKGUsdCw3KTtyZXR1cm4gcjwwJiYocis9NDI5NDk2NzI5Nikscn1mdW5jdGlvbiBQKGUsdCl7dmFyIHI9YShlLHQsMTkpXmEodCxlLDI5KV5mKGUsdCw2KTtyZXR1cm4gcjwwJiYocis9NDI5NDk2NzI5Nikscn1mdW5jdGlvbiBCKGUsdCl7dmFyIHI9cyhlLHQsMTkpXnModCxlLDI5KV5jKGUsdCw2KTtyZXR1cm4gcjwwJiYocis9NDI5NDk2NzI5Nikscn1uLmluaGVyaXRzKG0sZyksZS5leHBvcnRzPW0sbS5ibG9ja1NpemU9MTAyNCxtLm91dFNpemU9NTEyLG0uaG1hY1N0cmVuZ3RoPTE5MixtLnBhZExlbmd0aD0xMjgsbS5wcm90b3R5cGUuX3ByZXBhcmVCbG9jaz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10aGlzLlcsbj0wO248MzI7bisrKXJbbl09ZVt0K25dO2Zvcig7bjxyLmxlbmd0aDtuKz0yKXt2YXIgaT1QKHJbbi00XSxyW24tM10pLG89QihyW24tNF0scltuLTNdKSxhPXJbbi0xNF0scz1yW24tMTNdLGY9TShyW24tMzBdLHJbbi0yOV0pLGM9VChyW24tMzBdLHJbbi0yOV0pLHU9cltuLTMyXSxoPXJbbi0zMV07cltuXT1kKGksbyxhLHMsZixjLHUsaCkscltuKzFdPXAoaSxvLGEscyxmLGMsdSxoKX19LG0ucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSx0KXt0aGlzLl9wcmVwYXJlQmxvY2soZSx0KTt2YXIgcj10aGlzLlcsbj10aGlzLmhbMF0saT10aGlzLmhbMV0sYT10aGlzLmhbMl0scz10aGlzLmhbM10sZj10aGlzLmhbNF0sYz10aGlzLmhbNV0sZD10aGlzLmhbNl0scD10aGlzLmhbN10sZz10aGlzLmhbOF0sdj10aGlzLmhbOV0sbT10aGlzLmhbMTBdLE09dGhpcy5oWzExXSxUPXRoaXMuaFsxMl0sUD10aGlzLmhbMTNdLEI9dGhpcy5oWzE0XSxMPXRoaXMuaFsxNV07byh0aGlzLmsubGVuZ3RoPT09ci5sZW5ndGgpO2Zvcih2YXIgUj0wO1I8ci5sZW5ndGg7Uis9Mil7dmFyIE89QixDPUwsTj14KGcsdiksaj1JKGcsdiksRD1fKGcsdixtLE0sVCkscT13KGcsdixtLE0sVCxQKSxVPXRoaXMua1tSXSxGPXRoaXMua1tSKzFdLHo9cltSXSxLPXJbUisxXSxIPWIoTyxDLE4saixELHEsVSxGLHosSyksVj15KE8sQyxOLGosRCxxLFUsRix6LEspO089UyhuLGkpLEM9ayhuLGkpLE49RShuLGksYSxzLGYpLGo9QShuLGksYSxzLGYsYyk7dmFyIFk9aChPLEMsTixqKSxHPWwoTyxDLE4saik7Qj1ULEw9UCxUPW0sUD1NLG09ZyxNPXYsZz1oKGQscCxILFYpLHY9bChwLHAsSCxWKSxkPWYscD1jLGY9YSxjPXMsYT1uLHM9aSxuPWgoSCxWLFksRyksaT1sKEgsVixZLEcpfXUodGhpcy5oLDAsbixpKSx1KHRoaXMuaCwyLGEscyksdSh0aGlzLmgsNCxmLGMpLHUodGhpcy5oLDYsZCxwKSx1KHRoaXMuaCw4LGcsdiksdSh0aGlzLmgsMTAsbSxNKSx1KHRoaXMuaCwxMixULFApLHUodGhpcy5oLDE0LEIsTCl9LG0ucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuXCJoZXhcIj09PWU/bi50b0hleDMyKHRoaXMuaCxcImJpZ1wiKTpuLnNwbGl0MzIodGhpcy5oLFwiYmlnXCIpfX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbih0KXt2YXIgbj1yKDE2MSk7XG4vKiFcbiAqIFRoZSBidWZmZXIgbW9kdWxlIGZyb20gbm9kZS5qcywgZm9yIHRoZSBicm93c2VyLlxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxmZXJvc3NAZmVyb3NzLm9yZz4gPGh0dHA6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovZnVuY3Rpb24gaShlLHQpe2lmKGU9PT10KXJldHVybiAwO2Zvcih2YXIgcj1lLmxlbmd0aCxuPXQubGVuZ3RoLGk9MCxvPU1hdGgubWluKHIsbik7aTxvOysraSlpZihlW2ldIT09dFtpXSl7cj1lW2ldLG49dFtpXTticmVha31yZXR1cm4gcjxuPy0xOm48cj8xOjB9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gdC5CdWZmZXImJlwiZnVuY3Rpb25cIj09dHlwZW9mIHQuQnVmZmVyLmlzQnVmZmVyP3QuQnVmZmVyLmlzQnVmZmVyKGUpOiEobnVsbD09ZXx8IWUuX2lzQnVmZmVyKX12YXIgYT1yKDIpLHM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxmPUFycmF5LnByb3RvdHlwZS5zbGljZSxjPVwiZm9vXCI9PT1mdW5jdGlvbigpe30ubmFtZTtmdW5jdGlvbiB1KGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9ZnVuY3Rpb24gaChlKXtyZXR1cm4hbyhlKSYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQuQXJyYXlCdWZmZXImJihcImZ1bmN0aW9uXCI9PXR5cGVvZiBBcnJheUJ1ZmZlci5pc1ZpZXc/QXJyYXlCdWZmZXIuaXNWaWV3KGUpOiEhZSYmKGUgaW5zdGFuY2VvZiBEYXRhVmlld3x8ISEoZS5idWZmZXImJmUuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKSkpfXZhciBsPWUuZXhwb3J0cz12LGQ9L1xccypmdW5jdGlvblxccysoW15cXChcXHNdKilcXHMqLztmdW5jdGlvbiBwKGUpe2lmKGEuaXNGdW5jdGlvbihlKSl7aWYoYylyZXR1cm4gZS5uYW1lO3ZhciB0PWUudG9TdHJpbmcoKS5tYXRjaChkKTtyZXR1cm4gdCYmdFsxXX19ZnVuY3Rpb24gYihlLHQpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP2UubGVuZ3RoPHQ/ZTplLnNsaWNlKDAsdCk6ZX1mdW5jdGlvbiB5KGUpe2lmKGN8fCFhLmlzRnVuY3Rpb24oZSkpcmV0dXJuIGEuaW5zcGVjdChlKTt2YXIgdD1wKGUpO3JldHVyblwiW0Z1bmN0aW9uXCIrKHQ/XCI6IFwiK3Q6XCJcIikrXCJdXCJ9ZnVuY3Rpb24gZyhlLHQscixuLGkpe3Rocm93IG5ldyBsLkFzc2VydGlvbkVycm9yKHttZXNzYWdlOnIsYWN0dWFsOmUsZXhwZWN0ZWQ6dCxvcGVyYXRvcjpuLHN0YWNrU3RhcnRGdW5jdGlvbjppfSl9ZnVuY3Rpb24gdihlLHQpe2V8fGcoZSwhMCx0LFwiPT1cIixsLm9rKX1mdW5jdGlvbiBtKGUsdCxyLG4pe2lmKGU9PT10KXJldHVybiEwO2lmKG8oZSkmJm8odCkpcmV0dXJuIDA9PT1pKGUsdCk7aWYoYS5pc0RhdGUoZSkmJmEuaXNEYXRlKHQpKXJldHVybiBlLmdldFRpbWUoKT09PXQuZ2V0VGltZSgpO2lmKGEuaXNSZWdFeHAoZSkmJmEuaXNSZWdFeHAodCkpcmV0dXJuIGUuc291cmNlPT09dC5zb3VyY2UmJmUuZ2xvYmFsPT09dC5nbG9iYWwmJmUubXVsdGlsaW5lPT09dC5tdWx0aWxpbmUmJmUubGFzdEluZGV4PT09dC5sYXN0SW5kZXgmJmUuaWdub3JlQ2FzZT09PXQuaWdub3JlQ2FzZTtpZihudWxsIT09ZSYmXCJvYmplY3RcIj09dHlwZW9mIGV8fG51bGwhPT10JiZcIm9iamVjdFwiPT10eXBlb2YgdCl7aWYoaChlKSYmaCh0KSYmdShlKT09PXUodCkmJiEoZSBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheXx8ZSBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSkpcmV0dXJuIDA9PT1pKG5ldyBVaW50OEFycmF5KGUuYnVmZmVyKSxuZXcgVWludDhBcnJheSh0LmJ1ZmZlcikpO2lmKG8oZSkhPT1vKHQpKXJldHVybiExO3ZhciBzPShuPW58fHthY3R1YWw6W10sZXhwZWN0ZWQ6W119KS5hY3R1YWwuaW5kZXhPZihlKTtyZXR1cm4tMSE9PXMmJnM9PT1uLmV4cGVjdGVkLmluZGV4T2YodCl8fChuLmFjdHVhbC5wdXNoKGUpLG4uZXhwZWN0ZWQucHVzaCh0KSxmdW5jdGlvbihlLHQscixuKXtpZihudWxsPT1lfHxudWxsPT10KXJldHVybiExO2lmKGEuaXNQcmltaXRpdmUoZSl8fGEuaXNQcmltaXRpdmUodCkpcmV0dXJuIGU9PT10O2lmKHImJk9iamVjdC5nZXRQcm90b3R5cGVPZihlKSE9PU9iamVjdC5nZXRQcm90b3R5cGVPZih0KSlyZXR1cm4hMTt2YXIgaT1fKGUpLG89Xyh0KTtpZihpJiYhb3x8IWkmJm8pcmV0dXJuITE7aWYoaSlyZXR1cm4gZT1mLmNhbGwoZSksdD1mLmNhbGwodCksbShlLHQscik7dmFyIHMsYyx1PUEoZSksaD1BKHQpO2lmKHUubGVuZ3RoIT09aC5sZW5ndGgpcmV0dXJuITE7Zm9yKHUuc29ydCgpLGguc29ydCgpLGM9dS5sZW5ndGgtMTtjPj0wO2MtLSlpZih1W2NdIT09aFtjXSlyZXR1cm4hMTtmb3IoYz11Lmxlbmd0aC0xO2M+PTA7Yy0tKWlmKHM9dVtjXSwhbShlW3NdLHRbc10scixuKSlyZXR1cm4hMTtyZXR1cm4hMH0oZSx0LHIsbikpfXJldHVybiByP2U9PT10OmU9PXR9ZnVuY3Rpb24gXyhlKXtyZXR1cm5cIltvYmplY3QgQXJndW1lbnRzXVwiPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9ZnVuY3Rpb24gdyhlLHQpe2lmKCFlfHwhdClyZXR1cm4hMTtpZihcIltvYmplY3QgUmVnRXhwXVwiPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkpcmV0dXJuIHQudGVzdChlKTt0cnl7aWYoZSBpbnN0YW5jZW9mIHQpcmV0dXJuITB9Y2F0Y2goZSl7fXJldHVybiFFcnJvci5pc1Byb3RvdHlwZU9mKHQpJiYhMD09PXQuY2FsbCh7fSxlKX1mdW5jdGlvbiBFKGUsdCxyLG4pe3ZhciBpO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignXCJibG9ja1wiIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO1wic3RyaW5nXCI9PXR5cGVvZiByJiYobj1yLHI9bnVsbCksaT1mdW5jdGlvbihlKXt2YXIgdDt0cnl7ZSgpfWNhdGNoKGUpe3Q9ZX1yZXR1cm4gdH0odCksbj0ociYmci5uYW1lP1wiIChcIityLm5hbWUrXCIpLlwiOlwiLlwiKSsobj9cIiBcIituOlwiLlwiKSxlJiYhaSYmZyhpLHIsXCJNaXNzaW5nIGV4cGVjdGVkIGV4Y2VwdGlvblwiK24pO3ZhciBvPVwic3RyaW5nXCI9PXR5cGVvZiBuLHM9IWUmJmkmJiFyO2lmKCghZSYmYS5pc0Vycm9yKGkpJiZvJiZ3KGkscil8fHMpJiZnKGkscixcIkdvdCB1bndhbnRlZCBleGNlcHRpb25cIituKSxlJiZpJiZyJiYhdyhpLHIpfHwhZSYmaSl0aHJvdyBpfWwuQXNzZXJ0aW9uRXJyb3I9ZnVuY3Rpb24oZSl7dGhpcy5uYW1lPVwiQXNzZXJ0aW9uRXJyb3JcIix0aGlzLmFjdHVhbD1lLmFjdHVhbCx0aGlzLmV4cGVjdGVkPWUuZXhwZWN0ZWQsdGhpcy5vcGVyYXRvcj1lLm9wZXJhdG9yLGUubWVzc2FnZT8odGhpcy5tZXNzYWdlPWUubWVzc2FnZSx0aGlzLmdlbmVyYXRlZE1lc3NhZ2U9ITEpOih0aGlzLm1lc3NhZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGIoeShlLmFjdHVhbCksMTI4KStcIiBcIitlLm9wZXJhdG9yK1wiIFwiK2IoeShlLmV4cGVjdGVkKSwxMjgpfSh0aGlzKSx0aGlzLmdlbmVyYXRlZE1lc3NhZ2U9ITApO3ZhciB0PWUuc3RhY2tTdGFydEZ1bmN0aW9ufHxnO2lmKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKUVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsdCk7ZWxzZXt2YXIgcj1uZXcgRXJyb3I7aWYoci5zdGFjayl7dmFyIG49ci5zdGFjayxpPXAodCksbz1uLmluZGV4T2YoXCJcXG5cIitpKTtpZihvPj0wKXt2YXIgYT1uLmluZGV4T2YoXCJcXG5cIixvKzEpO249bi5zdWJzdHJpbmcoYSsxKX10aGlzLnN0YWNrPW59fX0sYS5pbmhlcml0cyhsLkFzc2VydGlvbkVycm9yLEVycm9yKSxsLmZhaWw9ZyxsLm9rPXYsbC5lcXVhbD1mdW5jdGlvbihlLHQscil7ZSE9dCYmZyhlLHQscixcIj09XCIsbC5lcXVhbCl9LGwubm90RXF1YWw9ZnVuY3Rpb24oZSx0LHIpe2U9PXQmJmcoZSx0LHIsXCIhPVwiLGwubm90RXF1YWwpfSxsLmRlZXBFcXVhbD1mdW5jdGlvbihlLHQscil7bShlLHQsITEpfHxnKGUsdCxyLFwiZGVlcEVxdWFsXCIsbC5kZWVwRXF1YWwpfSxsLmRlZXBTdHJpY3RFcXVhbD1mdW5jdGlvbihlLHQscil7bShlLHQsITApfHxnKGUsdCxyLFwiZGVlcFN0cmljdEVxdWFsXCIsbC5kZWVwU3RyaWN0RXF1YWwpfSxsLm5vdERlZXBFcXVhbD1mdW5jdGlvbihlLHQscil7bShlLHQsITEpJiZnKGUsdCxyLFwibm90RGVlcEVxdWFsXCIsbC5ub3REZWVwRXF1YWwpfSxsLm5vdERlZXBTdHJpY3RFcXVhbD1mdW5jdGlvbiBlKHQscixuKXttKHQsciwhMCkmJmcodCxyLG4sXCJub3REZWVwU3RyaWN0RXF1YWxcIixlKX0sbC5zdHJpY3RFcXVhbD1mdW5jdGlvbihlLHQscil7ZSE9PXQmJmcoZSx0LHIsXCI9PT1cIixsLnN0cmljdEVxdWFsKX0sbC5ub3RTdHJpY3RFcXVhbD1mdW5jdGlvbihlLHQscil7ZT09PXQmJmcoZSx0LHIsXCIhPT1cIixsLm5vdFN0cmljdEVxdWFsKX0sbC50aHJvd3M9ZnVuY3Rpb24oZSx0LHIpe0UoITAsZSx0LHIpfSxsLmRvZXNOb3RUaHJvdz1mdW5jdGlvbihlLHQscil7RSghMSxlLHQscil9LGwuaWZFcnJvcj1mdW5jdGlvbihlKXtpZihlKXRocm93IGV9LGwuc3RyaWN0PW4oKGZ1bmN0aW9uIGUodCxyKXt0fHxnKHQsITAscixcIj09XCIsZSl9KSxsLHtlcXVhbDpsLnN0cmljdEVxdWFsLGRlZXBFcXVhbDpsLmRlZXBTdHJpY3RFcXVhbCxub3RFcXVhbDpsLm5vdFN0cmljdEVxdWFsLG5vdERlZXBFcXVhbDpsLm5vdERlZXBTdHJpY3RFcXVhbH0pLGwuc3RyaWN0LnN0cmljdD1sLnN0cmljdDt2YXIgQT1PYmplY3Qua2V5c3x8ZnVuY3Rpb24oZSl7dmFyIHQ9W107Zm9yKHZhciByIGluIGUpcy5jYWxsKGUscikmJnQucHVzaChyKTtyZXR1cm4gdH19KS5jYWxsKHRoaXMscig0KSl9LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjsoZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIG49cigzKTtmdW5jdGlvbiBpKGUsdCl7aWYoXCIwMFwiPT09ZS5zbGljZSgwLDIpKXRocm93IG5ldyBFcnJvcihcImludmFsaWQgUkxQOiBleHRyYSB6ZXJvc1wiKTtyZXR1cm4gcGFyc2VJbnQoZSx0KX1mdW5jdGlvbiBvKHQscil7aWYodDw1NilyZXR1cm4gZS5mcm9tKFt0K3JdKTt2YXIgbj1zKHQpLGk9cyhyKzU1K24ubGVuZ3RoLzIpO3JldHVybiBlLmZyb20oaStuLFwiaGV4XCIpfWZ1bmN0aW9uIGEoZSl7cmV0dXJuXCIweFwiPT09ZS5zbGljZSgwLDIpfWZ1bmN0aW9uIHMoZSl7aWYoZTwwKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaW50ZWdlciBhcyBhcmd1bWVudCwgbXVzdCBiZSB1bnNpZ25lZCFcIik7dmFyIHQ9ZS50b1N0cmluZygxNik7cmV0dXJuIHQubGVuZ3RoJTI/XCIwXCIrdDp0fWZ1bmN0aW9uIGYodCl7aWYoIWUuaXNCdWZmZXIodCkpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXJldHVybiBhKHQpP2UuZnJvbSgoaT1cInN0cmluZ1wiIT10eXBlb2Yobz10KT9vOmEobyk/by5zbGljZSgyKTpvKS5sZW5ndGglMj9cIjBcIitpOmksXCJoZXhcIik6ZS5mcm9tKHQpO2lmKFwibnVtYmVyXCI9PXR5cGVvZiB0KXJldHVybiB0PyhyPXModCksZS5mcm9tKHIsXCJoZXhcIikpOmUuZnJvbShbXSk7aWYobnVsbD09dClyZXR1cm4gZS5mcm9tKFtdKTtpZih0IGluc3RhbmNlb2YgVWludDhBcnJheSlyZXR1cm4gZS5mcm9tKHQpO2lmKG4uaXNCTih0KSlyZXR1cm4gZS5mcm9tKHQudG9BcnJheSgpKTt0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHR5cGVcIil9dmFyIHIsaSxvO3JldHVybiB0fXQuZW5jb2RlPWZ1bmN0aW9uIHQocil7aWYoQXJyYXkuaXNBcnJheShyKSl7Zm9yKHZhciBuPVtdLGk9MDtpPHIubGVuZ3RoO2krKyluLnB1c2godChyW2ldKSk7dmFyIGE9ZS5jb25jYXQobik7cmV0dXJuIGUuY29uY2F0KFtvKGEubGVuZ3RoLDE5MiksYV0pfXZhciBzPWYocik7cmV0dXJuIDE9PT1zLmxlbmd0aCYmc1swXTwxMjg/czplLmNvbmNhdChbbyhzLmxlbmd0aCwxMjgpLHNdKX0sdC5kZWNvZGU9ZnVuY3Rpb24odCxyKXtpZih2b2lkIDA9PT1yJiYocj0hMSksIXR8fDA9PT10Lmxlbmd0aClyZXR1cm4gZS5mcm9tKFtdKTt2YXIgbj1mdW5jdGlvbiB0KHIpe3ZhciBuLG8sYSxzLGY7dmFyIGM9W107dmFyIHU9clswXTtpZih1PD0xMjcpcmV0dXJue2RhdGE6ci5zbGljZSgwLDEpLHJlbWFpbmRlcjpyLnNsaWNlKDEpfTtpZih1PD0xODMpe2lmKG49dS0xMjcsYT0xMjg9PT11P2UuZnJvbShbXSk6ci5zbGljZSgxLG4pLDI9PT1uJiZhWzBdPDEyOCl0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHJscCBlbmNvZGluZzogYnl0ZSBtdXN0IGJlIGxlc3MgMHg4MFwiKTtyZXR1cm57ZGF0YTphLHJlbWFpbmRlcjpyLnNsaWNlKG4pfX1pZih1PD0xOTEpe2lmKG89dS0xODIsbj1pKHIuc2xpY2UoMSxvKS50b1N0cmluZyhcImhleFwiKSwxNiksKGE9ci5zbGljZShvLG4rbykpLmxlbmd0aDxuKXRocm93IG5ldyBFcnJvcihcImludmFsaWQgUkxQXCIpO3JldHVybntkYXRhOmEscmVtYWluZGVyOnIuc2xpY2UobitvKX19aWYodTw9MjQ3KXtmb3Iobj11LTE5MSxzPXIuc2xpY2UoMSxuKTtzLmxlbmd0aDspZj10KHMpLGMucHVzaChmLmRhdGEpLHM9Zi5yZW1haW5kZXI7cmV0dXJue2RhdGE6YyxyZW1haW5kZXI6ci5zbGljZShuKX19bz11LTI0NixuPWkoci5zbGljZSgxLG8pLnRvU3RyaW5nKFwiaGV4XCIpLDE2KTt2YXIgaD1vK247aWYoaD5yLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHJscDogdG90YWwgbGVuZ3RoIGlzIGxhcmdlciB0aGFuIHRoZSBkYXRhXCIpO2lmKDA9PT0ocz1yLnNsaWNlKG8saCkpLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHJscCwgTGlzdCBoYXMgYSBpbnZhbGlkIGxlbmd0aFwiKTtmb3IoO3MubGVuZ3RoOylmPXQocyksYy5wdXNoKGYuZGF0YSkscz1mLnJlbWFpbmRlcjtyZXR1cm57ZGF0YTpjLHJlbWFpbmRlcjpyLnNsaWNlKGgpfX0oZih0KSk7aWYocilyZXR1cm4gbjtpZigwIT09bi5yZW1haW5kZXIubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcImludmFsaWQgcmVtYWluZGVyXCIpO3JldHVybiBuLmRhdGF9LHQuZ2V0TGVuZ3RoPWZ1bmN0aW9uKHQpe2lmKCF0fHwwPT09dC5sZW5ndGgpcmV0dXJuIGUuZnJvbShbXSk7dmFyIHI9Zih0KSxuPXJbMF07aWYobjw9MTI3KXJldHVybiByLmxlbmd0aDtpZihuPD0xODMpcmV0dXJuIG4tMTI3O2lmKG48PTE5MSlyZXR1cm4gbi0xODI7aWYobjw9MjQ3KXJldHVybiBuLTE5MTt2YXIgbz1uLTI0NjtyZXR1cm4gbytpKHIuc2xpY2UoMSxvKS50b1N0cmluZyhcImhleFwiKSwxNil9fSkuY2FsbCh0aGlzLHIoNykuQnVmZmVyKX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbih0KXt2YXIgbj1yKDcxKSxpPXIoMTYyKTtmdW5jdGlvbiBvKGUpe3ZhciB0PWU7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKFwiW2V0aGpzLXV0aWxdIHdoaWxlIHBhZGRpbmcgdG8gZXZlbiwgdmFsdWUgbXVzdCBiZSBzdHJpbmcsIGlzIGN1cnJlbnRseSBcIit0eXBlb2YgdCtcIiwgd2hpbGUgcGFkVG9FdmVuLlwiKTtyZXR1cm4gdC5sZW5ndGglMiYmKHQ9XCIwXCIrdCksdH1mdW5jdGlvbiBhKGUpe3JldHVyblwiMHhcIitlLnRvU3RyaW5nKDE2KX1lLmV4cG9ydHM9e2FycmF5Q29udGFpbnNBcnJheTpmdW5jdGlvbihlLHQscil7aWYoITAhPT1BcnJheS5pc0FycmF5KGUpKXRocm93IG5ldyBFcnJvcihcIltldGhqcy11dGlsXSBtZXRob2QgYXJyYXlDb250YWluc0FycmF5IHJlcXVpcmVzIGlucHV0ICdzdXBlcnNldCcgdG8gYmUgYW4gYXJyYXkgZ290IHR5cGUgJ1wiK3R5cGVvZiBlK1wiJ1wiKTtpZighMCE9PUFycmF5LmlzQXJyYXkodCkpdGhyb3cgbmV3IEVycm9yKFwiW2V0aGpzLXV0aWxdIG1ldGhvZCBhcnJheUNvbnRhaW5zQXJyYXkgcmVxdWlyZXMgaW5wdXQgJ3N1YnNldCcgdG8gYmUgYW4gYXJyYXkgZ290IHR5cGUgJ1wiK3R5cGVvZiB0K1wiJ1wiKTtyZXR1cm4gdFtCb29sZWFuKHIpP1wic29tZVwiOlwiZXZlcnlcIl0oKGZ1bmN0aW9uKHQpe3JldHVybiBlLmluZGV4T2YodCk+PTB9KSl9LGludFRvQnVmZmVyOmZ1bmN0aW9uKGUpe3ZhciByPWEoZSk7cmV0dXJuIG5ldyB0KG8oci5zbGljZSgyKSksXCJoZXhcIil9LGdldEJpbmFyeVNpemU6ZnVuY3Rpb24oZSl7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKFwiW2V0aGpzLXV0aWxdIHdoaWxlIGdldHRpbmcgYmluYXJ5IHNpemUsIG1ldGhvZCBnZXRCaW5hcnlTaXplIHJlcXVpcmVzIGlucHV0ICdzdHInIHRvIGJlIHR5cGUgU3RyaW5nLCBnb3QgJ1wiK3R5cGVvZiBlK1wiJy5cIik7cmV0dXJuIHQuYnl0ZUxlbmd0aChlLFwidXRmOFwiKX0saXNIZXhQcmVmaXhlZDpuLHN0cmlwSGV4UHJlZml4OmkscGFkVG9FdmVuOm8saW50VG9IZXg6YSxmcm9tQXNjaWk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVwiXCIscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lLmNoYXJDb2RlQXQocikudG9TdHJpbmcoMTYpO3QrPW4ubGVuZ3RoPDI/XCIwXCIrbjpufXJldHVyblwiMHhcIit0fSxmcm9tVXRmODpmdW5jdGlvbihlKXtyZXR1cm5cIjB4XCIrbyhuZXcgdChlLFwidXRmOFwiKS50b1N0cmluZyhcImhleFwiKSkucmVwbGFjZSgvXjArfDArJC9nLFwiXCIpfSx0b0FzY2lpOmZ1bmN0aW9uKGUpe3ZhciB0PVwiXCIscj0wLG49ZS5sZW5ndGg7Zm9yKFwiMHhcIj09PWUuc3Vic3RyaW5nKDAsMikmJihyPTIpO3I8bjtyKz0yKXt2YXIgaT1wYXJzZUludChlLnN1YnN0cihyLDIpLDE2KTt0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGkpfXJldHVybiB0fSx0b1V0Zjg6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB0KG8oaShlKS5yZXBsYWNlKC9eMCt8MCskL2csXCJcIikpLFwiaGV4XCIpLnRvU3RyaW5nKFwidXRmOFwiKX0sZ2V0S2V5czpmdW5jdGlvbihlLHQscil7aWYoIUFycmF5LmlzQXJyYXkoZSkpdGhyb3cgbmV3IEVycm9yKFwiW2V0aGpzLXV0aWxdIG1ldGhvZCBnZXRLZXlzIGV4cGVjdGluZyB0eXBlIEFycmF5IGFzICdwYXJhbXMnIGlucHV0LCBnb3QgJ1wiK3R5cGVvZiBlK1wiJ1wiKTtpZihcInN0cmluZ1wiIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoXCJbZXRoanMtdXRpbF0gbWV0aG9kIGdldEtleXMgZXhwZWN0aW5nIHR5cGUgU3RyaW5nIGZvciBpbnB1dCAna2V5JyBnb3QgJ1wiK3R5cGVvZiB0K1wiJy5cIik7Zm9yKHZhciBuPVtdLGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIG89ZVtpXVt0XTtpZihyJiYhbylvPVwiXCI7ZWxzZSBpZihcInN0cmluZ1wiIT10eXBlb2Ygbyl0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIGFiaVwiKTtuLnB1c2gobyl9cmV0dXJuIG59LGlzSGV4U3RyaW5nOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIShcInN0cmluZ1wiIT10eXBlb2YgZXx8IWUubWF0Y2goL14weFswLTlBLUZhLWZdKiQvKSkmJighdHx8ZS5sZW5ndGg9PT0yKzIqdCl9fX0pLmNhbGwodGhpcyxyKDcpLkJ1ZmZlcil9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKFwic3RyaW5nXCIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcihcIltpcy1oZXgtcHJlZml4ZWRdIHZhbHVlIG11c3QgYmUgdHlwZSAnc3RyaW5nJywgaXMgY3VycmVudGx5IHR5cGUgXCIrdHlwZW9mIGUrXCIsIHdoaWxlIGNoZWNraW5nIGlzSGV4UHJlZml4ZWQuXCIpO3JldHVyblwiMHhcIj09PWUuc2xpY2UoMCwyKX19LGZ1bmN0aW9uKGUsdCxyKXtjb25zdCBuPXIoMjkpLGk9cigxNjUpKCk7ZnVuY3Rpb24gbyhlKXt0aGlzLmN1cnJlbnRQcm92aWRlcj1lfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzO3ZhciByPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSxuPXIucG9wKCk7dC5zZW5kQXN5bmMoe21ldGhvZDplLHBhcmFtczpyfSxuKX19ZnVuY3Rpb24gcyhlLHQpe3JldHVybiBmdW5jdGlvbigpe2NvbnN0IHI9dGhpczt2YXIgbj1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyksaT1uLnBvcCgpO24ubGVuZ3RoPGUmJm4ucHVzaChcImxhdGVzdFwiKSxyLnNlbmRBc3luYyh7bWV0aG9kOnQscGFyYW1zOm59LGkpfX1lLmV4cG9ydHM9byxvLnByb3RvdHlwZS5nZXRCYWxhbmNlPXMoMixcImV0aF9nZXRCYWxhbmNlXCIpLG8ucHJvdG90eXBlLmdldENvZGU9cygyLFwiZXRoX2dldENvZGVcIiksby5wcm90b3R5cGUuZ2V0VHJhbnNhY3Rpb25Db3VudD1zKDIsXCJldGhfZ2V0VHJhbnNhY3Rpb25Db3VudFwiKSxvLnByb3RvdHlwZS5nZXRTdG9yYWdlQXQ9cygzLFwiZXRoX2dldFN0b3JhZ2VBdFwiKSxvLnByb3RvdHlwZS5jYWxsPXMoMixcImV0aF9jYWxsXCIpLG8ucHJvdG90eXBlLnByb3RvY29sVmVyc2lvbj1hKFwiZXRoX3Byb3RvY29sVmVyc2lvblwiKSxvLnByb3RvdHlwZS5zeW5jaW5nPWEoXCJldGhfc3luY2luZ1wiKSxvLnByb3RvdHlwZS5jb2luYmFzZT1hKFwiZXRoX2NvaW5iYXNlXCIpLG8ucHJvdG90eXBlLm1pbmluZz1hKFwiZXRoX21pbmluZ1wiKSxvLnByb3RvdHlwZS5oYXNocmF0ZT1hKFwiZXRoX2hhc2hyYXRlXCIpLG8ucHJvdG90eXBlLmdhc1ByaWNlPWEoXCJldGhfZ2FzUHJpY2VcIiksby5wcm90b3R5cGUuYWNjb3VudHM9YShcImV0aF9hY2NvdW50c1wiKSxvLnByb3RvdHlwZS5ibG9ja051bWJlcj1hKFwiZXRoX2Jsb2NrTnVtYmVyXCIpLG8ucHJvdG90eXBlLmdldEJsb2NrVHJhbnNhY3Rpb25Db3VudEJ5SGFzaD1hKFwiZXRoX2dldEJsb2NrVHJhbnNhY3Rpb25Db3VudEJ5SGFzaFwiKSxvLnByb3RvdHlwZS5nZXRCbG9ja1RyYW5zYWN0aW9uQ291bnRCeU51bWJlcj1hKFwiZXRoX2dldEJsb2NrVHJhbnNhY3Rpb25Db3VudEJ5TnVtYmVyXCIpLG8ucHJvdG90eXBlLmdldFVuY2xlQ291bnRCeUJsb2NrSGFzaD1hKFwiZXRoX2dldFVuY2xlQ291bnRCeUJsb2NrSGFzaFwiKSxvLnByb3RvdHlwZS5nZXRVbmNsZUNvdW50QnlCbG9ja051bWJlcj1hKFwiZXRoX2dldFVuY2xlQ291bnRCeUJsb2NrTnVtYmVyXCIpLG8ucHJvdG90eXBlLnNpZ249YShcImV0aF9zaWduXCIpLG8ucHJvdG90eXBlLnNlbmRUcmFuc2FjdGlvbj1hKFwiZXRoX3NlbmRUcmFuc2FjdGlvblwiKSxvLnByb3RvdHlwZS5zZW5kUmF3VHJhbnNhY3Rpb249YShcImV0aF9zZW5kUmF3VHJhbnNhY3Rpb25cIiksby5wcm90b3R5cGUuZXN0aW1hdGVHYXM9YShcImV0aF9lc3RpbWF0ZUdhc1wiKSxvLnByb3RvdHlwZS5nZXRCbG9ja0J5SGFzaD1hKFwiZXRoX2dldEJsb2NrQnlIYXNoXCIpLG8ucHJvdG90eXBlLmdldEJsb2NrQnlOdW1iZXI9YShcImV0aF9nZXRCbG9ja0J5TnVtYmVyXCIpLG8ucHJvdG90eXBlLmdldFRyYW5zYWN0aW9uQnlIYXNoPWEoXCJldGhfZ2V0VHJhbnNhY3Rpb25CeUhhc2hcIiksby5wcm90b3R5cGUuZ2V0VHJhbnNhY3Rpb25CeUJsb2NrSGFzaEFuZEluZGV4PWEoXCJldGhfZ2V0VHJhbnNhY3Rpb25CeUJsb2NrSGFzaEFuZEluZGV4XCIpLG8ucHJvdG90eXBlLmdldFRyYW5zYWN0aW9uQnlCbG9ja051bWJlckFuZEluZGV4PWEoXCJldGhfZ2V0VHJhbnNhY3Rpb25CeUJsb2NrTnVtYmVyQW5kSW5kZXhcIiksby5wcm90b3R5cGUuZ2V0VHJhbnNhY3Rpb25SZWNlaXB0PWEoXCJldGhfZ2V0VHJhbnNhY3Rpb25SZWNlaXB0XCIpLG8ucHJvdG90eXBlLmdldFVuY2xlQnlCbG9ja0hhc2hBbmRJbmRleD1hKFwiZXRoX2dldFVuY2xlQnlCbG9ja0hhc2hBbmRJbmRleFwiKSxvLnByb3RvdHlwZS5nZXRVbmNsZUJ5QmxvY2tOdW1iZXJBbmRJbmRleD1hKFwiZXRoX2dldFVuY2xlQnlCbG9ja051bWJlckFuZEluZGV4XCIpLG8ucHJvdG90eXBlLmdldENvbXBpbGVycz1hKFwiZXRoX2dldENvbXBpbGVyc1wiKSxvLnByb3RvdHlwZS5jb21waWxlTExMPWEoXCJldGhfY29tcGlsZUxMTFwiKSxvLnByb3RvdHlwZS5jb21waWxlU29saWRpdHk9YShcImV0aF9jb21waWxlU29saWRpdHlcIiksby5wcm90b3R5cGUuY29tcGlsZVNlcnBlbnQ9YShcImV0aF9jb21waWxlU2VycGVudFwiKSxvLnByb3RvdHlwZS5uZXdGaWx0ZXI9YShcImV0aF9uZXdGaWx0ZXJcIiksby5wcm90b3R5cGUubmV3QmxvY2tGaWx0ZXI9YShcImV0aF9uZXdCbG9ja0ZpbHRlclwiKSxvLnByb3RvdHlwZS5uZXdQZW5kaW5nVHJhbnNhY3Rpb25GaWx0ZXI9YShcImV0aF9uZXdQZW5kaW5nVHJhbnNhY3Rpb25GaWx0ZXJcIiksby5wcm90b3R5cGUudW5pbnN0YWxsRmlsdGVyPWEoXCJldGhfdW5pbnN0YWxsRmlsdGVyXCIpLG8ucHJvdG90eXBlLmdldEZpbHRlckNoYW5nZXM9YShcImV0aF9nZXRGaWx0ZXJDaGFuZ2VzXCIpLG8ucHJvdG90eXBlLmdldEZpbHRlckxvZ3M9YShcImV0aF9nZXRGaWx0ZXJMb2dzXCIpLG8ucHJvdG90eXBlLmdldExvZ3M9YShcImV0aF9nZXRMb2dzXCIpLG8ucHJvdG90eXBlLmdldFdvcms9YShcImV0aF9nZXRXb3JrXCIpLG8ucHJvdG90eXBlLnN1Ym1pdFdvcms9YShcImV0aF9zdWJtaXRXb3JrXCIpLG8ucHJvdG90eXBlLnN1Ym1pdEhhc2hyYXRlPWEoXCJldGhfc3VibWl0SGFzaHJhdGVcIiksby5wcm90b3R5cGUuc2VuZEFzeW5jPWZ1bmN0aW9uKGUsdCl7dGhpcy5jdXJyZW50UHJvdmlkZXIuc2VuZEFzeW5jKGZ1bmN0aW9uKGUpe3JldHVybiBuKHtpZDppKCksanNvbnJwYzpcIjIuMFwiLHBhcmFtczpbXX0sZSl9KGUpLChmdW5jdGlvbihlLHIpe2lmKCFlJiZyLmVycm9yJiYoZT1uZXcgRXJyb3IoXCJFdGhRdWVyeSAtIFJQQyBFcnJvciAtIFwiK3IuZXJyb3IubWVzc2FnZSkpLGUpcmV0dXJuIHQoZSk7dChudWxsLHIucmVzdWx0KX0pKX19LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgbj1vKHIoMTY2KSksaT1vKHIoMTkyKSk7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dC5kZWZhdWx0PSgwLG4uZGVmYXVsdCkoaS5kZWZhdWx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUsdCxyKXsoKDAsbi5kZWZhdWx0KShlKT9sOmQpKGUsKDAsdS5kZWZhdWx0KSh0KSxyKX07dmFyIG49aChyKDMwKSksaT1oKHIoODApKSxvPWgocigxNzApKSxhPWgocig4MykpLHM9aChyKDE4KSksZj1oKHIoNDIpKSxjPWgocig0NCkpLHU9aChyKDEyKSk7ZnVuY3Rpb24gaChlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbChlLHQscil7cj0oMCxmLmRlZmF1bHQpKHJ8fHMuZGVmYXVsdCk7dmFyIG49MCxvPTAsYT1lLmxlbmd0aDtmdW5jdGlvbiB1KGUsdCl7ZT9yKGUpOisrbyE9PWEmJnQhPT1pLmRlZmF1bHR8fHIobnVsbCl9Zm9yKDA9PT1hJiZyKG51bGwpO248YTtuKyspdChlW25dLG4sKDAsYy5kZWZhdWx0KSh1KSl9dmFyIGQ9KDAsYS5kZWZhdWx0KShvLmRlZmF1bHQsMS8wKTtlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig3NikuU3ltYm9sO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQscil7dmFyIG49cig3NyksaT1cIm9iamVjdFwiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsbz1ufHxpfHxGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxyKXsoZnVuY3Rpb24odCl7dmFyIHI9XCJvYmplY3RcIj09dHlwZW9mIHQmJnQmJnQuT2JqZWN0PT09T2JqZWN0JiZ0O2UuZXhwb3J0cz1yfSkuY2FsbCh0aGlzLHIoNCkpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm4gbnVsbCE9ZSYmKFwib2JqZWN0XCI9PXR8fFwiZnVuY3Rpb25cIj09dCl9fSxmdW5jdGlvbihlLHQpe3ZhciByPTkwMDcxOTkyNTQ3NDA5OTE7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlJiZlPi0xJiZlJTE9PTAmJmU8PXJ9fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXt9LGUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixmKXtpZihmPSgwLGkuZGVmYXVsdCkoZnx8bi5kZWZhdWx0KSxlPD0wfHwhdClyZXR1cm4gZihudWxsKTt2YXIgYz0oMCxvLmRlZmF1bHQpKHQpLHU9ITEsaD0wLGw9ITE7ZnVuY3Rpb24gZChlLHQpe2lmKGgtPTEsZSl1PSEwLGYoZSk7ZWxzZXtpZih0PT09cy5kZWZhdWx0fHx1JiZoPD0wKXJldHVybiB1PSEwLGYobnVsbCk7bHx8cCgpfX1mdW5jdGlvbiBwKCl7Zm9yKGw9ITA7aDxlJiYhdTspe3ZhciB0PWMoKTtpZihudWxsPT09dClyZXR1cm4gdT0hMCx2b2lkKGg8PTAmJmYobnVsbCkpO2grPTEscih0LnZhbHVlLHQua2V5LCgwLGEuZGVmYXVsdCkoZCkpfWw9ITF9cCgpfX07dmFyIG49ZihyKDE4KSksaT1mKHIoNDIpKSxvPWYocigxNzEpKSxhPWYocig0NCkpLHM9ZihyKDgwKSk7ZnVuY3Rpb24gZihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0KXt2YXIgcj1BcnJheS5pc0FycmF5O2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIsbixpKXtyZXR1cm4gZShyLHQsbixpKX19LGUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDg1KTtmdW5jdGlvbiBpKGUpe3JldHVyblwibmV2ZXJcIiE9PXMoZSl9ZnVuY3Rpb24gbyhlKXt2YXIgdD1hKGUpO3JldHVybiB0Pj1lLnBhcmFtcy5sZW5ndGg/ZS5wYXJhbXM6XCJldGhfZ2V0QmxvY2tCeU51bWJlclwiPT09ZS5tZXRob2Q/ZS5wYXJhbXMuc2xpY2UoMSk6ZS5wYXJhbXMuc2xpY2UoMCx0KX1mdW5jdGlvbiBhKGUpe3N3aXRjaChlLm1ldGhvZCl7Y2FzZVwiZXRoX2dldFN0b3JhZ2VBdFwiOnJldHVybiAyO2Nhc2VcImV0aF9nZXRCYWxhbmNlXCI6Y2FzZVwiZXRoX2dldENvZGVcIjpjYXNlXCJldGhfZ2V0VHJhbnNhY3Rpb25Db3VudFwiOmNhc2VcImV0aF9jYWxsXCI6Y2FzZVwiZXRoX2VzdGltYXRlR2FzXCI6cmV0dXJuIDE7Y2FzZVwiZXRoX2dldEJsb2NrQnlOdW1iZXJcIjpyZXR1cm4gMDtkZWZhdWx0OnJldHVybn19ZnVuY3Rpb24gcyhlKXtzd2l0Y2goZS5tZXRob2Qpe2Nhc2VcIndlYjNfY2xpZW50VmVyc2lvblwiOmNhc2VcIndlYjNfc2hhM1wiOmNhc2VcImV0aF9wcm90b2NvbFZlcnNpb25cIjpjYXNlXCJldGhfZ2V0QmxvY2tUcmFuc2FjdGlvbkNvdW50QnlIYXNoXCI6Y2FzZVwiZXRoX2dldFVuY2xlQ291bnRCeUJsb2NrSGFzaFwiOmNhc2VcImV0aF9nZXRDb2RlXCI6Y2FzZVwiZXRoX2dldEJsb2NrQnlIYXNoXCI6Y2FzZVwiZXRoX2dldFRyYW5zYWN0aW9uQnlIYXNoXCI6Y2FzZVwiZXRoX2dldFRyYW5zYWN0aW9uQnlCbG9ja0hhc2hBbmRJbmRleFwiOmNhc2VcImV0aF9nZXRUcmFuc2FjdGlvblJlY2VpcHRcIjpjYXNlXCJldGhfZ2V0VW5jbGVCeUJsb2NrSGFzaEFuZEluZGV4XCI6Y2FzZVwiZXRoX2dldENvbXBpbGVyc1wiOmNhc2VcImV0aF9jb21waWxlTExMXCI6Y2FzZVwiZXRoX2NvbXBpbGVTb2xpZGl0eVwiOmNhc2VcImV0aF9jb21waWxlU2VycGVudFwiOmNhc2VcInNoaF92ZXJzaW9uXCI6cmV0dXJuXCJwZXJtYVwiO2Nhc2VcImV0aF9nZXRCbG9ja0J5TnVtYmVyXCI6Y2FzZVwiZXRoX2dldEJsb2NrVHJhbnNhY3Rpb25Db3VudEJ5TnVtYmVyXCI6Y2FzZVwiZXRoX2dldFVuY2xlQ291bnRCeUJsb2NrTnVtYmVyXCI6Y2FzZVwiZXRoX2dldFRyYW5zYWN0aW9uQnlCbG9ja051bWJlckFuZEluZGV4XCI6Y2FzZVwiZXRoX2dldFVuY2xlQnlCbG9ja051bWJlckFuZEluZGV4XCI6cmV0dXJuXCJmb3JrXCI7Y2FzZVwiZXRoX2dhc1ByaWNlXCI6Y2FzZVwiZXRoX2dldEJhbGFuY2VcIjpjYXNlXCJldGhfZ2V0U3RvcmFnZUF0XCI6Y2FzZVwiZXRoX2dldFRyYW5zYWN0aW9uQ291bnRcIjpjYXNlXCJldGhfY2FsbFwiOmNhc2VcImV0aF9lc3RpbWF0ZUdhc1wiOmNhc2VcImV0aF9nZXRGaWx0ZXJMb2dzXCI6Y2FzZVwiZXRoX2dldExvZ3NcIjpjYXNlXCJldGhfYmxvY2tOdW1iZXJcIjpyZXR1cm5cImJsb2NrXCI7Y2FzZVwibmV0X3ZlcnNpb25cIjpjYXNlXCJuZXRfcGVlckNvdW50XCI6Y2FzZVwibmV0X2xpc3RlbmluZ1wiOmNhc2VcImV0aF9zeW5jaW5nXCI6Y2FzZVwiZXRoX3NpZ25cIjpjYXNlXCJldGhfY29pbmJhc2VcIjpjYXNlXCJldGhfbWluaW5nXCI6Y2FzZVwiZXRoX2hhc2hyYXRlXCI6Y2FzZVwiZXRoX2FjY291bnRzXCI6Y2FzZVwiZXRoX3NlbmRUcmFuc2FjdGlvblwiOmNhc2VcImV0aF9zZW5kUmF3VHJhbnNhY3Rpb25cIjpjYXNlXCJldGhfbmV3RmlsdGVyXCI6Y2FzZVwiZXRoX25ld0Jsb2NrRmlsdGVyXCI6Y2FzZVwiZXRoX25ld1BlbmRpbmdUcmFuc2FjdGlvbkZpbHRlclwiOmNhc2VcImV0aF91bmluc3RhbGxGaWx0ZXJcIjpjYXNlXCJldGhfZ2V0RmlsdGVyQ2hhbmdlc1wiOmNhc2VcImV0aF9nZXRXb3JrXCI6Y2FzZVwiZXRoX3N1Ym1pdFdvcmtcIjpjYXNlXCJldGhfc3VibWl0SGFzaHJhdGVcIjpjYXNlXCJkYl9wdXRTdHJpbmdcIjpjYXNlXCJkYl9nZXRTdHJpbmdcIjpjYXNlXCJkYl9wdXRIZXhcIjpjYXNlXCJkYl9nZXRIZXhcIjpjYXNlXCJzaGhfcG9zdFwiOmNhc2VcInNoaF9uZXdJZGVudGl0eVwiOmNhc2VcInNoaF9oYXNJZGVudGl0eVwiOmNhc2VcInNoaF9uZXdHcm91cFwiOmNhc2VcInNoaF9hZGRUb0dyb3VwXCI6Y2FzZVwic2hoX25ld0ZpbHRlclwiOmNhc2VcInNoaF91bmluc3RhbGxGaWx0ZXJcIjpjYXNlXCJzaGhfZ2V0RmlsdGVyQ2hhbmdlc1wiOmNhc2VcInNoaF9nZXRNZXNzYWdlc1wiOnJldHVyblwibmV2ZXJcIn19ZS5leHBvcnRzPXtjYWNoZUlkZW50aWZpZXJGb3JQYXlsb2FkOmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtpZighaShlKSlyZXR1cm4gbnVsbDt2YXIgcj10LmluY2x1ZGVCbG9ja1JlZj9lLnBhcmFtczpvKGUpO3JldHVybiBlLm1ldGhvZCtcIjpcIituKHIpfSxjYW5DYWNoZTppLGJsb2NrVGFnRm9yUGF5bG9hZDpmdW5jdGlvbihlKXt2YXIgdD1hKGUpO2lmKHQ+PWUucGFyYW1zLmxlbmd0aClyZXR1cm4gbnVsbDtyZXR1cm4gZS5wYXJhbXNbdF19LHBhcmFtc1dpdGhvdXRCbG9ja1RhZzpvLGJsb2NrVGFnUGFyYW1JbmRleDphLGNhY2hlVHlwZUZvclBheWxvYWQ6c319LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1cInVuZGVmaW5lZFwiIT10eXBlb2YgSlNPTj9KU09OOnIoMTk3KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt0fHwodD17fSksXCJmdW5jdGlvblwiPT10eXBlb2YgdCYmKHQ9e2NtcDp0fSk7dmFyIHI9dC5zcGFjZXx8XCJcIjtcIm51bWJlclwiPT10eXBlb2YgciYmKHI9QXJyYXkocisxKS5qb2luKFwiIFwiKSk7dmFyIGEscz1cImJvb2xlYW5cIj09dHlwZW9mIHQuY3ljbGVzJiZ0LmN5Y2xlcyxmPXQucmVwbGFjZXJ8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR9LGM9dC5jbXAmJihhPXQuY21wLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LHIpe3ZhciBuPXtrZXk6dCx2YWx1ZTplW3RdfSxpPXtrZXk6cix2YWx1ZTplW3JdfTtyZXR1cm4gYShuLGkpfX0pLHU9W107cmV0dXJuIGZ1bmN0aW9uIGUodCxhLGgsbCl7dmFyIGQ9cj9cIlxcblwiK25ldyBBcnJheShsKzEpLmpvaW4ocik6XCJcIixwPXI/XCI6IFwiOlwiOlwiO2lmKGgmJmgudG9KU09OJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBoLnRvSlNPTiYmKGg9aC50b0pTT04oKSksdm9pZCAwIT09KGg9Zi5jYWxsKHQsYSxoKSkpe2lmKFwib2JqZWN0XCIhPXR5cGVvZiBofHxudWxsPT09aClyZXR1cm4gbi5zdHJpbmdpZnkoaCk7aWYoaShoKSl7Zm9yKHZhciBiPVtdLHk9MDt5PGgubGVuZ3RoO3krKyl7dmFyIGc9ZShoLHksaFt5XSxsKzEpfHxuLnN0cmluZ2lmeShudWxsKTtiLnB1c2goZCtyK2cpfXJldHVyblwiW1wiK2Iuam9pbihcIixcIikrZCtcIl1cIn1pZigtMSE9PXUuaW5kZXhPZihoKSl7aWYocylyZXR1cm4gbi5zdHJpbmdpZnkoXCJfX2N5Y2xlX19cIik7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkNvbnZlcnRpbmcgY2lyY3VsYXIgc3RydWN0dXJlIHRvIEpTT05cIil9dS5wdXNoKGgpO3ZhciB2PW8oaCkuc29ydChjJiZjKGgpKTtmb3IoYj1bXSx5PTA7eTx2Lmxlbmd0aDt5Kyspe3ZhciBtPWUoaCxhPXZbeV0saFthXSxsKzEpO2lmKG0pe3ZhciBfPW4uc3RyaW5naWZ5KGEpK3ArbTtiLnB1c2goZCtyK18pfX1yZXR1cm4gdS5zcGxpY2UodS5pbmRleE9mKGgpLDEpLFwie1wiK2Iuam9pbihcIixcIikrZCtcIn1cIn19KHtcIlwiOmV9LFwiXCIsZSwwKX07dmFyIGk9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oZSl7cmV0dXJuXCJbb2JqZWN0IEFycmF5XVwiPT09e30udG9TdHJpbmcuY2FsbChlKX0sbz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eXx8ZnVuY3Rpb24oKXtyZXR1cm4hMH0scj1bXTtmb3IodmFyIG4gaW4gZSl0LmNhbGwoZSxuKSYmci5wdXNoKG4pO3JldHVybiByfX0sZnVuY3Rpb24oZSx0LHIpe2NvbnN0IG49cigyMDYpLk11dGV4LGk9cig0Niksbz1yKDg3KSxhPXIoMjA4KSxzPXIoMjEwKSxmPXIoMjExKSx7aW50VG9IZXg6YyxoZXhUb0ludDp1fT1yKDIwKTtmdW5jdGlvbiBoKGUpe3JldHVybiBsKGFzeW5jKC4uLnQpPT57Y29uc3Qgcj1hd2FpdCBlKC4uLnQpO3JldHVybiBjKHIuaWQpfSl9ZnVuY3Rpb24gbChlKXtyZXR1cm4gaShhc3luYyh0LHIpPT57Y29uc3Qgbj1hd2FpdCBlLmFwcGx5KG51bGwsdC5wYXJhbXMpO3IucmVzdWx0PW59KX1mdW5jdGlvbiBkKGUsdCl7Y29uc3Qgcj1bXTtmb3IobGV0IHQgaW4gZSlyLnB1c2goZVt0XSk7cmV0dXJuIHJ9ZS5leHBvcnRzPWZ1bmN0aW9uKHtibG9ja1RyYWNrZXI6ZSxwcm92aWRlcjp0fSl7bGV0IHI9MCxpPXt9O2NvbnN0IHA9bmV3IG4sYj1mdW5jdGlvbih7bXV0ZXg6ZX0pe3JldHVybiB0PT5hc3luYyhyLG4saSxvKT0+eyhhd2FpdCBlLmFjcXVpcmUoKSkoKSx0KHIsbixpLG8pfX0oe211dGV4OnB9KSx5PW8oe2V0aF9uZXdGaWx0ZXI6YihoKHYpKSxldGhfbmV3QmxvY2tGaWx0ZXI6YihoKG0pKSxldGhfbmV3UGVuZGluZ1RyYW5zYWN0aW9uRmlsdGVyOmIoaChfKSksZXRoX3VuaW5zdGFsbEZpbHRlcjpiKGwoQSkpLGV0aF9nZXRGaWx0ZXJDaGFuZ2VzOmIobCh3KSksZXRoX2dldEZpbHRlckxvZ3M6YihsKEUpKX0pLGc9YXN5bmMoe29sZEJsb2NrOmUsbmV3QmxvY2s6dH0pPT57aWYoMD09PWkubGVuZ3RoKXJldHVybjtjb25zdCByPWF3YWl0IHAuYWNxdWlyZSgpO3RyeXthd2FpdCBQcm9taXNlLmFsbChkKGkpLm1hcChhc3luYyByPT57dHJ5e2F3YWl0IHIudXBkYXRlKHtvbGRCbG9jazplLG5ld0Jsb2NrOnR9KX1jYXRjaChlKXtjb25zb2xlLmVycm9yKGUpfX0pKX1jYXRjaChlKXtjb25zb2xlLmVycm9yKGUpfXIoKX07cmV0dXJuIHkubmV3TG9nRmlsdGVyPXYseS5uZXdCbG9ja0ZpbHRlcj1tLHkubmV3UGVuZGluZ1RyYW5zYWN0aW9uRmlsdGVyPV8seS51bmluc3RhbGxGaWx0ZXI9QSx5LmdldEZpbHRlckNoYW5nZXM9dyx5LmdldEZpbHRlckxvZ3M9RSx5LmRlc3Ryb3k9KCk9PnshYXN5bmMgZnVuY3Rpb24oKXtjb25zdCBlPWQoaSkubGVuZ3RoO2k9e30sayh7cHJldkZpbHRlckNvdW50OmUsbmV3RmlsdGVyQ291bnQ6MH0pfSgpfSx5O2FzeW5jIGZ1bmN0aW9uIHYoZSl7Y29uc3Qgcj1uZXcgYSh7cHJvdmlkZXI6dCxwYXJhbXM6ZX0pO2F3YWl0IFMocik7cmV0dXJuIHJ9YXN5bmMgZnVuY3Rpb24gbSgpe2NvbnN0IGU9bmV3IHMoe3Byb3ZpZGVyOnR9KTthd2FpdCBTKGUpO3JldHVybiBlfWFzeW5jIGZ1bmN0aW9uIF8oKXtjb25zdCBlPW5ldyBmKHtwcm92aWRlcjp0fSk7YXdhaXQgUyhlKTtyZXR1cm4gZX1hc3luYyBmdW5jdGlvbiB3KGUpe2NvbnN0IHQ9dShlKSxyPWlbdF07aWYoIXIpdGhyb3cgbmV3IEVycm9yKGBObyBmaWx0ZXIgZm9yIGluZGV4IFwiJHt0fVwiYCk7cmV0dXJuIHIuZ2V0Q2hhbmdlc0FuZENsZWFyKCl9YXN5bmMgZnVuY3Rpb24gRShlKXtjb25zdCB0PXUoZSkscj1pW3RdO2lmKCFyKXRocm93IG5ldyBFcnJvcihgTm8gZmlsdGVyIGZvciBpbmRleCBcIiR7dH1cImApO3JldHVyblwibG9nXCI9PT1yLnR5cGU/cmVzdWx0cz1yLmdldEFsbFJlc3VsdHMoKTpyZXN1bHRzPVtdLHJlc3VsdHN9YXN5bmMgZnVuY3Rpb24gQShlKXtjb25zdCB0PXUoZSkscj1pW3RdLG49Qm9vbGVhbihyKTtyZXR1cm4gbiYmYXdhaXQgYXN5bmMgZnVuY3Rpb24oZSl7Y29uc3QgdD1kKGkpLmxlbmd0aDtkZWxldGUgaVtlXTtjb25zdCByPWQoaSkubGVuZ3RoO2soe3ByZXZGaWx0ZXJDb3VudDp0LG5ld0ZpbHRlckNvdW50OnJ9KX0odCksbn1hc3luYyBmdW5jdGlvbiBTKHQpe2NvbnN0IG49ZChpKS5sZW5ndGgsbz1hd2FpdCBlLmdldExhdGVzdEJsb2NrKCk7cmV0dXJuIGF3YWl0IHQuaW5pdGlhbGl6ZSh7Y3VycmVudEJsb2NrOm99KSxpWysrcl09dCx0LmlkPXIsdC5pZEhleD1jKHIpLGsoe3ByZXZGaWx0ZXJDb3VudDpuLG5ld0ZpbHRlckNvdW50OmQoaSkubGVuZ3RofSkscn1mdW5jdGlvbiBrKHtwcmV2RmlsdGVyQ291bnQ6dCxuZXdGaWx0ZXJDb3VudDpyfSl7MD09PXQmJnI+MD9lLm9uKFwic3luY1wiLGcpOnQ+MCYmMD09PXImJmUucmVtb3ZlTGlzdGVuZXIoXCJzeW5jXCIsZyl9fX0sZnVuY3Rpb24oZSx0LHIpe2UuZXhwb3J0cz1yKDIwNyl9LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDIzMCksaT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2woXCJmb29cIiksbz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGE9QXJyYXkucHJvdG90eXBlLmNvbmNhdCxzPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxmPXMmJmZ1bmN0aW9uKCl7dmFyIGU9e307dHJ5e2Zvcih2YXIgdCBpbiBzKGUsXCJ4XCIse2VudW1lcmFibGU6ITEsdmFsdWU6ZX0pLGUpcmV0dXJuITE7cmV0dXJuIGUueD09PWV9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLGM9ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk7dCBpbiBlJiYoXCJmdW5jdGlvblwiIT10eXBlb2YoaT1uKXx8XCJbb2JqZWN0IEZ1bmN0aW9uXVwiIT09by5jYWxsKGkpfHwhbigpKXx8KGY/cyhlLHQse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHZhbHVlOnIsd3JpdGFibGU6ITB9KTplW3RdPXIpfSx1PWZ1bmN0aW9uKGUsdCl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp7fSxvPW4odCk7aSYmKG89YS5jYWxsKG8sT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KSkpO2Zvcih2YXIgcz0wO3M8by5sZW5ndGg7cys9MSljKGUsb1tzXSx0W29bc11dLHJbb1tzXV0pfTt1LnN1cHBvcnRzRGVzY3JpcHRvcnM9ISFmLGUuZXhwb3J0cz11fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9bi5jYWxsKGUpLHI9XCJbb2JqZWN0IEFyZ3VtZW50c11cIj09PXQ7cmV0dXJuIHJ8fChyPVwiW29iamVjdCBBcnJheV1cIiE9PXQmJm51bGwhPT1lJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmXCJudW1iZXJcIj09dHlwZW9mIGUubGVuZ3RoJiZlLmxlbmd0aD49MCYmXCJbb2JqZWN0IEZ1bmN0aW9uXVwiPT09bi5jYWxsKGUuY2FsbGVlKSkscn19LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDIxKSxpPXIoMjMyKSxvPW4uY2FsbChGdW5jdGlvbi5jYWxsLFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSksYT0vXltcXHgwOVxceDBBXFx4MEJcXHgwQ1xceDBEXFx4MjBcXHhBMFxcdTE2ODBcXHUxODBFXFx1MjAwMFxcdTIwMDFcXHUyMDAyXFx1MjAwM1xcdTIwMDRcXHUyMDA1XFx1MjAwNlxcdTIwMDdcXHUyMDA4XFx1MjAwOVxcdTIwMEFcXHUyMDJGXFx1MjA1RlxcdTMwMDBcXHUyMDI4XFx1MjAyOVxcdUZFRkZdKy8scz0vW1xceDA5XFx4MEFcXHgwQlxceDBDXFx4MERcXHgyMFxceEEwXFx1MTY4MFxcdTE4MEVcXHUyMDAwXFx1MjAwMVxcdTIwMDJcXHUyMDAzXFx1MjAwNFxcdTIwMDVcXHUyMDA2XFx1MjAwN1xcdTIwMDhcXHUyMDA5XFx1MjAwQVxcdTIwMkZcXHUyMDVGXFx1MzAwMFxcdTIwMjhcXHUyMDI5XFx1RkVGRl0rJC87ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIGU9aS5Ub1N0cmluZyhpLkNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXMpKTtyZXR1cm4gbyhvKGUsYSxcIlwiKSxzLFwiXCIpfX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMjIpLGk9cigyNDIpLG89aShuKFwiU3RyaW5nLnByb3RvdHlwZS5pbmRleE9mXCIpKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1uKGUsISF0KTtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiByJiZvKGUsXCIucHJvdG90eXBlLlwiKT9pKHIpOnJ9fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cig5MCk7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuIFN0cmluZy5wcm90b3R5cGUudHJpbSYmXCLigItcIj09PVwi4oCLXCIudHJpbSgpP1N0cmluZy5wcm90b3R5cGUudHJpbTpufX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNiksaT1yKDUxKTtmdW5jdGlvbiBvKGUpe24uRXZlbnRFbWl0dGVyLmNhbGwodGhpcyksdGhpcy5iYWNrb2ZmU3RyYXRlZ3lfPWUsdGhpcy5tYXhOdW1iZXJPZlJldHJ5Xz0tMSx0aGlzLmJhY2tvZmZOdW1iZXJfPTAsdGhpcy5iYWNrb2ZmRGVsYXlfPTAsdGhpcy50aW1lb3V0SURfPS0xLHRoaXMuaGFuZGxlcnM9e2JhY2tvZmY6dGhpcy5vbkJhY2tvZmZfLmJpbmQodGhpcyl9fXIoMikuaW5oZXJpdHMobyxuLkV2ZW50RW1pdHRlciksby5wcm90b3R5cGUuZmFpbEFmdGVyPWZ1bmN0aW9uKGUpe2kuY2hlY2tBcmd1bWVudChlPjAsXCJFeHBlY3RlZCBhIG1heGltdW0gbnVtYmVyIG9mIHJldHJ5IGdyZWF0ZXIgdGhhbiAwIGJ1dCBnb3QgJXMuXCIsZSksdGhpcy5tYXhOdW1iZXJPZlJldHJ5Xz1lfSxvLnByb3RvdHlwZS5iYWNrb2ZmPWZ1bmN0aW9uKGUpe2kuY2hlY2tTdGF0ZSgtMT09PXRoaXMudGltZW91dElEXyxcIkJhY2tvZmYgaW4gcHJvZ3Jlc3MuXCIpLHRoaXMuYmFja29mZk51bWJlcl89PT10aGlzLm1heE51bWJlck9mUmV0cnlfPyh0aGlzLmVtaXQoXCJmYWlsXCIsZSksdGhpcy5yZXNldCgpKToodGhpcy5iYWNrb2ZmRGVsYXlfPXRoaXMuYmFja29mZlN0cmF0ZWd5Xy5uZXh0KCksdGhpcy50aW1lb3V0SURfPXNldFRpbWVvdXQodGhpcy5oYW5kbGVycy5iYWNrb2ZmLHRoaXMuYmFja29mZkRlbGF5XyksdGhpcy5lbWl0KFwiYmFja29mZlwiLHRoaXMuYmFja29mZk51bWJlcl8sdGhpcy5iYWNrb2ZmRGVsYXlfLGUpKX0sby5wcm90b3R5cGUub25CYWNrb2ZmXz1mdW5jdGlvbigpe3RoaXMudGltZW91dElEXz0tMSx0aGlzLmVtaXQoXCJyZWFkeVwiLHRoaXMuYmFja29mZk51bWJlcl8sdGhpcy5iYWNrb2ZmRGVsYXlfKSx0aGlzLmJhY2tvZmZOdW1iZXJfKyt9LG8ucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5iYWNrb2ZmTnVtYmVyXz0wLHRoaXMuYmFja29mZlN0cmF0ZWd5Xy5yZXNldCgpLGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRJRF8pLHRoaXMudGltZW91dElEXz0tMX0sZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxyKXtyKDYpLHIoMik7ZnVuY3Rpb24gbihlKXtyZXR1cm4gbnVsbCE9ZX1mdW5jdGlvbiBpKGUpe2lmKG4oKGU9ZXx8e30pLmluaXRpYWxEZWxheSkmJmUuaW5pdGlhbERlbGF5PDEpdGhyb3cgbmV3IEVycm9yKFwiVGhlIGluaXRpYWwgdGltZW91dCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwLlwiKTtpZihuKGUubWF4RGVsYXkpJiZlLm1heERlbGF5PDEpdGhyb3cgbmV3IEVycm9yKFwiVGhlIG1heGltYWwgdGltZW91dCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwLlwiKTtpZih0aGlzLmluaXRpYWxEZWxheV89ZS5pbml0aWFsRGVsYXl8fDEwMCx0aGlzLm1heERlbGF5Xz1lLm1heERlbGF5fHwxZTQsdGhpcy5tYXhEZWxheV88PXRoaXMuaW5pdGlhbERlbGF5Xyl0aHJvdyBuZXcgRXJyb3IoXCJUaGUgbWF4aW1hbCBiYWNrb2ZmIGRlbGF5IG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBpbml0aWFsIGJhY2tvZmYgZGVsYXkuXCIpO2lmKG4oZS5yYW5kb21pc2F0aW9uRmFjdG9yKSYmKGUucmFuZG9taXNhdGlvbkZhY3RvcjwwfHxlLnJhbmRvbWlzYXRpb25GYWN0b3I+MSkpdGhyb3cgbmV3IEVycm9yKFwiVGhlIHJhbmRvbWlzYXRpb24gZmFjdG9yIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxLlwiKTt0aGlzLnJhbmRvbWlzYXRpb25GYWN0b3JfPWUucmFuZG9taXNhdGlvbkZhY3Rvcnx8MH1pLnByb3RvdHlwZS5nZXRNYXhEZWxheT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1heERlbGF5X30saS5wcm90b3R5cGUuZ2V0SW5pdGlhbERlbGF5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5pdGlhbERlbGF5X30saS5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3ZhciBlPXRoaXMubmV4dF8oKSx0PTErTWF0aC5yYW5kb20oKSp0aGlzLnJhbmRvbWlzYXRpb25GYWN0b3JfO3JldHVybiBNYXRoLnJvdW5kKGUqdCl9LGkucHJvdG90eXBlLm5leHRfPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwiQmFja29mZlN0cmF0ZWd5Lm5leHRfKCkgdW5pbXBsZW1lbnRlZC5cIil9LGkucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5yZXNldF8oKX0saS5wcm90b3R5cGUucmVzZXRfPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwiQmFja29mZlN0cmF0ZWd5LnJlc2V0XygpIHVuaW1wbGVtZW50ZWQuXCIpfSxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMiksaT1yKDk0KTtmdW5jdGlvbiBvKGUpe2kuY2FsbCh0aGlzLGUpLHRoaXMuYmFja29mZkRlbGF5Xz0wLHRoaXMubmV4dEJhY2tvZmZEZWxheV89dGhpcy5nZXRJbml0aWFsRGVsYXkoKX1uLmluaGVyaXRzKG8saSksby5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oKXt2YXIgZT1NYXRoLm1pbih0aGlzLm5leHRCYWNrb2ZmRGVsYXlfLHRoaXMuZ2V0TWF4RGVsYXkoKSk7cmV0dXJuIHRoaXMubmV4dEJhY2tvZmZEZWxheV8rPXRoaXMuYmFja29mZkRlbGF5Xyx0aGlzLmJhY2tvZmZEZWxheV89ZSxlfSxvLnByb3RvdHlwZS5yZXNldF89ZnVuY3Rpb24oKXt0aGlzLm5leHRCYWNrb2ZmRGVsYXlfPXRoaXMuZ2V0SW5pdGlhbERlbGF5KCksdGhpcy5iYWNrb2ZmRGVsYXlfPTB9LGUuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cig2KS5FdmVudEVtaXR0ZXIsaT1yKDIpLmluaGVyaXRzLG89cigxNSksYT1yKDE2Mykscz1yKDczKSxmPXIoMTkzKSxjPXIoMTk2KSx1PShyKDg0KSxyKDE5KSk7ZnVuY3Rpb24gaChlKXtuLmNhbGwodGhpcyksdGhpcy5zZXRNYXhMaXN0ZW5lcnMoMzApLGU9ZXx8e307dmFyIHQ9e3NlbmRBc3luYzp0aGlzLl9oYW5kbGVBc3luYy5iaW5kKHRoaXMpfSxyPWUuYmxvY2tUcmFja2VyUHJvdmlkZXJ8fHQ7dGhpcy5fYmxvY2tUcmFja2VyPWUuYmxvY2tUcmFja2VyfHxuZXcgYSh7cHJvdmlkZXI6cixwb2xsaW5nSW50ZXJ2YWw6ZS5wb2xsaW5nSW50ZXJ2YWx8fDRlMyxzZXRTa2lwQ2FjaGVGbGFnOnZvaWQgMD09PWUuc2V0U2tpcENhY2hlRmxhZ3x8ZS5zZXRTa2lwQ2FjaGVGbGFnfSksdGhpcy5fcmVhZHk9bmV3IGMsdGhpcy5jdXJyZW50QmxvY2s9bnVsbCx0aGlzLl9wcm92aWRlcnM9W119ZnVuY3Rpb24gbChlKXtyZXR1cm4gZT97bnVtYmVyOm8udG9CdWZmZXIoZS5udW1iZXIpLGhhc2g6by50b0J1ZmZlcihlLmhhc2gpLHBhcmVudEhhc2g6by50b0J1ZmZlcihlLnBhcmVudEhhc2gpLG5vbmNlOm8udG9CdWZmZXIoZS5ub25jZSksbWl4SGFzaDpvLnRvQnVmZmVyKGUubWl4SGFzaCksc2hhM1VuY2xlczpvLnRvQnVmZmVyKGUuc2hhM1VuY2xlcyksbG9nc0Jsb29tOm8udG9CdWZmZXIoZS5sb2dzQmxvb20pLHRyYW5zYWN0aW9uc1Jvb3Q6by50b0J1ZmZlcihlLnRyYW5zYWN0aW9uc1Jvb3QpLHN0YXRlUm9vdDpvLnRvQnVmZmVyKGUuc3RhdGVSb290KSxyZWNlaXB0c1Jvb3Q6by50b0J1ZmZlcihlLnJlY2VpcHRSb290fHxlLnJlY2VpcHRzUm9vdCksbWluZXI6by50b0J1ZmZlcihlLm1pbmVyKSxkaWZmaWN1bHR5Om8udG9CdWZmZXIoZS5kaWZmaWN1bHR5KSx0b3RhbERpZmZpY3VsdHk6by50b0J1ZmZlcihlLnRvdGFsRGlmZmljdWx0eSksc2l6ZTpvLnRvQnVmZmVyKGUuc2l6ZSksZXh0cmFEYXRhOm8udG9CdWZmZXIoZS5leHRyYURhdGEpLGdhc0xpbWl0Om8udG9CdWZmZXIoZS5nYXNMaW1pdCksZ2FzVXNlZDpvLnRvQnVmZmVyKGUuZ2FzVXNlZCksdGltZXN0YW1wOm8udG9CdWZmZXIoZS50aW1lc3RhbXApLHRyYW5zYWN0aW9uczplLnRyYW5zYWN0aW9uc306e319ZS5leHBvcnRzPWgsaShoLG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLFwibmFtZVwiLHt2YWx1ZTpcIkh0dHBQcm92aWRlclwifSksaC5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9KGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0sdGhpcyk7dC5fcmVhZHkuZ28oKSx0Ll9ibG9ja1RyYWNrZXIub24oXCJsYXRlc3RcIiwoZnVuY3Rpb24ocil7dC5fZ2V0QmxvY2tCeU51bWJlcihyLChmdW5jdGlvbihyLG4pe2lmKHIpZS5lbWl0KFwiZXJyb3JcIixyKTtlbHNlIGlmKG4pe3ZhciBpPWwobik7dC5fc2V0Q3VycmVudEJsb2NrKGkpLHQuZW1pdChcInJhd0Jsb2NrXCIsbiksdC5lbWl0KFwibGF0ZXN0XCIsbil9fSkpfSkpLHQuX2Jsb2NrVHJhY2tlci5vbihcInN5bmNcIix0LmVtaXQuYmluZCh0LFwic3luY1wiKSksdC5fYmxvY2tUcmFja2VyLm9uKFwiZXJyb3JcIix0LmVtaXQuYmluZCh0LFwiZXJyb3JcIikpLHQuX3J1bm5pbmc9ITAsdC5lbWl0KFwic3RhcnRcIil9LGgucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oKXt0aGlzLl9ibG9ja1RyYWNrZXIucmVtb3ZlQWxsTGlzdGVuZXJzKCksdGhpcy5fcnVubmluZz0hMSx0aGlzLmVtaXQoXCJzdG9wXCIpfSxoLnByb3RvdHlwZS5pc1J1bm5pbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcnVubmluZ30saC5wcm90b3R5cGUuYWRkUHJvdmlkZXI9ZnVuY3Rpb24oZSx0KXtcIm51bWJlclwiPT10eXBlb2YgdD90aGlzLl9wcm92aWRlcnMuc3BsaWNlKHQsMCxlKTp0aGlzLl9wcm92aWRlcnMucHVzaChlKSxlLnNldEVuZ2luZSh0aGlzKX0saC5wcm90b3R5cGUucmVtb3ZlUHJvdmlkZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcHJvdmlkZXJzLmluZGV4T2YoZSk7aWYodDwwKXRocm93IG5ldyBFcnJvcihcIlByb3ZpZGVyIG5vdCBmb3VuZC5cIik7dGhpcy5fcHJvdmlkZXJzLnNwbGljZSh0LDEpfSxoLnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihcIldlYjNQcm92aWRlckVuZ2luZSBkb2VzIG5vdCBzdXBwb3J0IHN5bmNocm9ub3VzIHJlcXVlc3RzLlwiKX0saC5wcm90b3R5cGUuc2VuZEFzeW5jPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcztyLl9yZWFkeS5hd2FpdCgoZnVuY3Rpb24oKXtBcnJheS5pc0FycmF5KGUpP3MoZSxyLl9oYW5kbGVBc3luYy5iaW5kKHIpLHQpOnIuX2hhbmRsZUFzeW5jKGUsdCl9KSl9LGgucHJvdG90eXBlLl9nZXRCbG9ja0J5TnVtYmVyPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dSh7bWV0aG9kOlwiZXRoX2dldEJsb2NrQnlOdW1iZXJcIixwYXJhbXM6W2UsITFdLHNraXBDYWNoZTohMH0pO3RoaXMuX2hhbmRsZUFzeW5jKHIsKGZ1bmN0aW9uKGUscil7cmV0dXJuIGU/dChlKTp0KG51bGwsci5yZXN1bHQpfSkpfSxoLnByb3RvdHlwZS5faGFuZGxlQXN5bmM9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLG49LTEsaT1udWxsLG89bnVsbCxhPVtdO2Z1bmN0aW9uIHMocixuKXtvPXIsaT1uLGYoYSwoZnVuY3Rpb24oZSx0KXtlP2UobyxpLHQpOnQoKX0pLChmdW5jdGlvbigpe3ZhciByPXtpZDplLmlkLGpzb25ycGM6ZS5qc29ucnBjLHJlc3VsdDppfTtudWxsIT1vPyhyLmVycm9yPXttZXNzYWdlOm8uc3RhY2t8fG8ubWVzc2FnZXx8byxjb2RlOi0zMmUzfSx0KG8scikpOnQobnVsbCxyKX0pKX0hZnVuY3Rpb24gdChpKXtuKz0xO2EudW5zaGlmdChpKTtpZihuPj1yLl9wcm92aWRlcnMubGVuZ3RoKXMobmV3IEVycm9yKCdSZXF1ZXN0IGZvciBtZXRob2QgXCInK2UubWV0aG9kKydcIiBub3QgaGFuZGxlZCBieSBhbnkgc3VicHJvdmlkZXIuIFBsZWFzZSBjaGVjayB5b3VyIHN1YnByb3ZpZGVyIGNvbmZpZ3VyYXRpb24gdG8gZW5zdXJlIHRoaXMgbWV0aG9kIGlzIGhhbmRsZWQuJykpO2Vsc2UgdHJ5e3IuX3Byb3ZpZGVyc1tuXS5oYW5kbGVSZXF1ZXN0KGUsdCxzKX1jYXRjaChlKXtzKGUpfX0oKX0saC5wcm90b3R5cGUuX3NldEN1cnJlbnRCbG9jaz1mdW5jdGlvbihlKXt0aGlzLmN1cnJlbnRCbG9jaz1lLHRoaXMuZW1pdChcImJsb2NrXCIsZSl9fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cig0NSksaT1yKDIwMSksbz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3JldHVybiBmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsdCksZnVuY3Rpb24oZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIXR8fFwib2JqZWN0XCIhPXR5cGVvZiB0JiZcImZ1bmN0aW9uXCIhPXR5cGVvZiB0P2U6dH0odGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLChmdW5jdGlvbih0KXt2YXIgcj10LmJsb2NrVHJhY2tlcjtyZXR1cm4gaShPYmplY3QuYXNzaWduKHtibG9ja1RyYWNrZXI6cn0sZSkpfSkpKX1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSx0fShuKTtlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMikuaW5oZXJpdHMsaT1yKDEzKTtmdW5jdGlvbiBvKGUpe2U9ZXx8e30sdGhpcy5zdGF0aWNSZXNwb25zZXM9ZX1lLmV4cG9ydHM9byxuKG8saSksby5wcm90b3R5cGUuaGFuZGxlUmVxdWVzdD1mdW5jdGlvbihlLHQscil7dmFyIG49dGhpcy5zdGF0aWNSZXNwb25zZXNbZS5tZXRob2RdO1wiZnVuY3Rpb25cIj09dHlwZW9mIG4/bihlLHQscik6dm9pZCAwIT09bj9zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiByKG51bGwsbil9KSk6dCgpfX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoNDUpLGk9cig4Niksbz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyx0KSxmdW5jdGlvbihlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4hdHx8XCJvYmplY3RcIiE9dHlwZW9mIHQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHQ/ZTp0fSh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsKGZ1bmN0aW9uKGUpe3ZhciB0PWUuYmxvY2tUcmFja2VyLHI9ZS5wcm92aWRlcjtlLmVuZ2luZTtyZXR1cm4gaSh7YmxvY2tUcmFja2VyOnQscHJvdmlkZXI6cn0pfSkpKX1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSx0fShuKTtlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoNzMpLGk9cigyKS5pbmhlcml0cyxvPXIoMTMpO2Z1bmN0aW9uIGEoZSl7ZT1lfHx7fSx0aGlzLm51bWJlck9mQmxvY2tzPWUubnVtYmVyT2ZCbG9ja3N8fDEwLHRoaXMuZGVsYXlJbkJsb2Nrcz1lLmRlbGF5SW5CbG9ja3N8fDV9ZS5leHBvcnRzPWEsaShhLG8pLGEucHJvdG90eXBlLmhhbmRsZVJlcXVlc3Q9ZnVuY3Rpb24oZSx0LHIpe2lmKFwiZXRoX2dhc1ByaWNlXCIhPT1lLm1ldGhvZClyZXR1cm4gdCgpO3ZhciBpPXRoaXM7aS5lbWl0UGF5bG9hZCh7bWV0aG9kOlwiZXRoX2Jsb2NrTnVtYmVyXCJ9LChmdW5jdGlvbihlLHQpe2Zvcih2YXIgbz1wYXJzZUludCh0LnJlc3VsdCwxNiktaS5kZWxheUluQmxvY2tzLGE9W10scz0wO3M8aS5udW1iZXJPZkJsb2NrcztzKyspYS5wdXNoKFwiMHhcIitvLnRvU3RyaW5nKDE2KSksby0tO24oYSwoZnVuY3Rpb24oZSx0KXtpLmVtaXRQYXlsb2FkKHttZXRob2Q6XCJldGhfZ2V0QmxvY2tCeU51bWJlclwiLHBhcmFtczpbZSwhMF19LChmdW5jdGlvbihyLG4pe3JldHVybiByP3Qocik6bi5yZXN1bHQ/dm9pZCB0KG51bGwsbi5yZXN1bHQudHJhbnNhY3Rpb25zKTp0KG5ldyBFcnJvcignR2FzcHJpY2VQcm92aWRlciAtIE5vIGJsb2NrIGZvciBcIicrZSsnXCInKSl9KSl9KSwoZnVuY3Rpb24oZSx0KXsodD0odD10LnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb25jYXQodCl9KSxbXSkpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHBhcnNlSW50KGUuZ2FzUHJpY2UsMTYpfSksW10pKS5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLXR9KSk7dmFyIG4saT1NYXRoLmZsb29yKHQubGVuZ3RoLzIpO249dC5sZW5ndGglMj90W2ldOk1hdGguZmxvb3IoKHRbaS0xXSt0W2ldKS8yKSxyKG51bGwsbil9KSl9KSl9fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigyMTMpLGk9KHIoMjE0KSxyKDIpLmluaGVyaXRzKSxvPXIoMTUpLGE9cigyMTYpLHM9cigyOSksZj1yKDIyMCksYz1yKDEzKSx1PXIoMjIxKSxoPS9eWzAtOUEtRmEtZl0rJC9nO2Z1bmN0aW9uIGwoZSl7dGhpcy5ub25jZUxvY2s9ZigxKSxlLmdldEFjY291bnRzJiYodGhpcy5nZXRBY2NvdW50cz1lLmdldEFjY291bnRzKSxlLnByb2Nlc3NUcmFuc2FjdGlvbiYmKHRoaXMucHJvY2Vzc1RyYW5zYWN0aW9uPWUucHJvY2Vzc1RyYW5zYWN0aW9uKSxlLnByb2Nlc3NNZXNzYWdlJiYodGhpcy5wcm9jZXNzTWVzc2FnZT1lLnByb2Nlc3NNZXNzYWdlKSxlLnByb2Nlc3NQZXJzb25hbE1lc3NhZ2UmJih0aGlzLnByb2Nlc3NQZXJzb25hbE1lc3NhZ2U9ZS5wcm9jZXNzUGVyc29uYWxNZXNzYWdlKSxlLnByb2Nlc3NUeXBlZE1lc3NhZ2UmJih0aGlzLnByb2Nlc3NUeXBlZE1lc3NhZ2U9ZS5wcm9jZXNzVHlwZWRNZXNzYWdlKSx0aGlzLmFwcHJvdmVUcmFuc2FjdGlvbj1lLmFwcHJvdmVUcmFuc2FjdGlvbnx8dGhpcy5hdXRvQXBwcm92ZSx0aGlzLmFwcHJvdmVNZXNzYWdlPWUuYXBwcm92ZU1lc3NhZ2V8fHRoaXMuYXV0b0FwcHJvdmUsdGhpcy5hcHByb3ZlUGVyc29uYWxNZXNzYWdlPWUuYXBwcm92ZVBlcnNvbmFsTWVzc2FnZXx8dGhpcy5hdXRvQXBwcm92ZSx0aGlzLmFwcHJvdmVUeXBlZE1lc3NhZ2U9ZS5hcHByb3ZlVHlwZWRNZXNzYWdlfHx0aGlzLmF1dG9BcHByb3ZlLGUuc2lnblRyYW5zYWN0aW9uJiYodGhpcy5zaWduVHJhbnNhY3Rpb249ZS5zaWduVHJhbnNhY3Rpb258fHAoXCJzaWduVHJhbnNhY3Rpb25cIikpLGUuc2lnbk1lc3NhZ2UmJih0aGlzLnNpZ25NZXNzYWdlPWUuc2lnbk1lc3NhZ2V8fHAoXCJzaWduTWVzc2FnZVwiKSksZS5zaWduUGVyc29uYWxNZXNzYWdlJiYodGhpcy5zaWduUGVyc29uYWxNZXNzYWdlPWUuc2lnblBlcnNvbmFsTWVzc2FnZXx8cChcInNpZ25QZXJzb25hbE1lc3NhZ2VcIikpLGUuc2lnblR5cGVkTWVzc2FnZSYmKHRoaXMuc2lnblR5cGVkTWVzc2FnZT1lLnNpZ25UeXBlZE1lc3NhZ2V8fHAoXCJzaWduVHlwZWRNZXNzYWdlXCIpKSxlLnNpZ25UeXBlZE1lc3NhZ2VWMyYmKHRoaXMuc2lnblR5cGVkTWVzc2FnZVYzPWUuc2lnblR5cGVkTWVzc2FnZVYzfHxwKFwic2lnblR5cGVkTWVzc2FnZVYzXCIpKSxlLnJlY292ZXJQZXJzb25hbFNpZ25hdHVyZSYmKHRoaXMucmVjb3ZlclBlcnNvbmFsU2lnbmF0dXJlPWUucmVjb3ZlclBlcnNvbmFsU2lnbmF0dXJlKSxlLnB1Ymxpc2hUcmFuc2FjdGlvbiYmKHRoaXMucHVibGlzaFRyYW5zYWN0aW9uPWUucHVibGlzaFRyYW5zYWN0aW9uKSx0aGlzLmVzdGltYXRlR2FzPWUuZXN0aW1hdGVHYXN8fHRoaXMuZXN0aW1hdGVHYXMsdGhpcy5nZXRHYXNQcmljZT1lLmdldEdhc1ByaWNlfHx0aGlzLmdldEdhc1ByaWNlfWZ1bmN0aW9uIGQoZSl7dmFyIHQ9by5hZGRIZXhQcmVmaXgoZSk7cmV0dXJuIG8uaXNWYWxpZEFkZHJlc3ModCl9ZnVuY3Rpb24gcChlKXtyZXR1cm4gZnVuY3Rpb24odCxyKXtyKG5ldyBFcnJvcignUHJvdmlkZXJFbmdpbmUgLSBIb29rZWRXYWxsZXRTdWJwcm92aWRlciAtIE11c3QgcHJvdmlkZSBcIicrZSsnXCIgZm4gaW4gY29uc3RydWN0b3Igb3B0aW9ucycpKX19ZS5leHBvcnRzPWwsaShsLGMpLGwucHJvdG90eXBlLmhhbmRsZVJlcXVlc3Q9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXRoaXM7aS5fcGFyaXR5UmVxdWVzdHM9e30saS5fcGFyaXR5UmVxdWVzdENvdW50PTA7dmFyIGEsZj12b2lkIDAsYz12b2lkIDAsdT12b2lkIDAsbD12b2lkIDAscD12b2lkIDA7c3dpdGNoKGUubWV0aG9kKXtjYXNlXCJldGhfY29pbmJhc2VcIjpyZXR1cm4gdm9pZCBpLmdldEFjY291bnRzKChmdW5jdGlvbihlLHQpe2lmKGUpcmV0dXJuIHIoZSk7dmFyIG49dFswXXx8bnVsbDtyKG51bGwsbil9KSk7Y2FzZVwiZXRoX2FjY291bnRzXCI6cmV0dXJuIHZvaWQgaS5nZXRBY2NvdW50cygoZnVuY3Rpb24oZSx0KXtpZihlKXJldHVybiByKGUpO3IobnVsbCx0KX0pKTtjYXNlXCJldGhfc2VuZFRyYW5zYWN0aW9uXCI6cmV0dXJuIGY9ZS5wYXJhbXNbMF0sdm9pZCBuKFtmdW5jdGlvbihlKXtyZXR1cm4gaS5maW5hbGl6ZUFuZFN1Ym1pdFR4KGYsZSl9XSxyKTtjYXNlXCJldGhfc2lnblRyYW5zYWN0aW9uXCI6cmV0dXJuIGY9ZS5wYXJhbXNbMF0sdm9pZCBuKFtmdW5jdGlvbihlKXtyZXR1cm4gaS5wcm9jZXNzU2lnblRyYW5zYWN0aW9uKGYsZSl9XSxyKTtjYXNlXCJldGhfc2lnblwiOnJldHVybiBwPWUucGFyYW1zWzBdLGw9ZS5wYXJhbXNbMV0sdT1lLnBhcmFtc1syXXx8e30sYz1zKHUse2Zyb206cCxkYXRhOmx9KSx2b2lkIG4oW2Z1bmN0aW9uKGUpe3JldHVybiBpLnByb2Nlc3NNZXNzYWdlKGMsZSl9XSxyKTtjYXNlXCJwZXJzb25hbF9zaWduXCI6cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQsYSxmPWUucGFyYW1zWzBdLGI9ZS5wYXJhbXNbMV07aWYodD1iLGE9by5hZGRIZXhQcmVmaXgodCksIW8uaXNWYWxpZEFkZHJlc3MoYSkmJmZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlJiZcIjB4XCI9PT1lLnNsaWNlKDAsMikmJmUuc2xpY2UoMikubWF0Y2goaCl9KHQpJiZkKGYpKXtcIlttZXNzYWdlLCBhZGRyZXNzXS4gVGhpcyB3YXMgcHJldmlvdXNseSBoYW5kbGVkIGluY29ycmVjdGx5LCBcIixcImFuZCBoYXMgYmVlbiBjb3JyZWN0ZWQgYXV0b21hdGljYWxseS4gXCIsXCJQbGVhc2Ugc3dpdGNoIHRoaXMgcGFyYW0gb3JkZXIgZm9yIHNtb290aCBiZWhhdmlvciBpbiB0aGUgZnV0dXJlLlwiLGNvbnNvbGUud2FybihcIlRoZSBldGhfcGVyc29uYWxTaWduIG1ldGhvZCByZXF1aXJlcyBwYXJhbXMgb3JkZXJlZCBbbWVzc2FnZSwgYWRkcmVzc10uIFRoaXMgd2FzIHByZXZpb3VzbHkgaGFuZGxlZCBpbmNvcnJlY3RseSwgYW5kIGhhcyBiZWVuIGNvcnJlY3RlZCBhdXRvbWF0aWNhbGx5LiBQbGVhc2Ugc3dpdGNoIHRoaXMgcGFyYW0gb3JkZXIgZm9yIHNtb290aCBiZWhhdmlvciBpbiB0aGUgZnV0dXJlLlwiKSxwPWUucGFyYW1zWzBdLGw9ZS5wYXJhbXNbMV19ZWxzZSBsPWUucGFyYW1zWzBdLHA9ZS5wYXJhbXNbMV07dT1lLnBhcmFtc1syXXx8e30sYz1zKHUse2Zyb206cCxkYXRhOmx9KSxuKFtmdW5jdGlvbihlKXtyZXR1cm4gaS5wcm9jZXNzUGVyc29uYWxNZXNzYWdlKGMsZSl9XSxyKX0oKTtjYXNlXCJwZXJzb25hbF9lY1JlY292ZXJcIjpyZXR1cm4gZnVuY3Rpb24oKXtsPWUucGFyYW1zWzBdO3ZhciB0PWUucGFyYW1zWzFdO3U9ZS5wYXJhbXNbMl18fHt9LGM9cyh1LHtzaWc6dCxkYXRhOmx9KSxpLnJlY292ZXJQZXJzb25hbFNpZ25hdHVyZShjLHIpfSgpO2Nhc2VcImV0aF9zaWduVHlwZWREYXRhXCI6cmV0dXJuIWQoZS5wYXJhbXNbMV0pJiZkKGUucGFyYW1zWzBdKT8ocD1lLnBhcmFtc1swXSxsPWUucGFyYW1zWzFdKToobD1lLnBhcmFtc1swXSxwPWUucGFyYW1zWzFdKSx1PWUucGFyYW1zWzJdfHx7fSxjPXModSx7ZnJvbTpwLGRhdGE6bH0pLHZvaWQgbihbZnVuY3Rpb24oZSl7cmV0dXJuIGkucHJvY2Vzc1R5cGVkTWVzc2FnZShjLGUpfV0scik7Y2FzZVwiZXRoX3NpZ25UeXBlZERhdGFfdjNcIjpyZXR1cm4hZChlLnBhcmFtc1sxXSkmJmQoZS5wYXJhbXNbMF0pPyhwPWUucGFyYW1zWzBdLGw9ZS5wYXJhbXNbMV0pOihsPWUucGFyYW1zWzBdLHA9ZS5wYXJhbXNbMV0pLHU9ZS5wYXJhbXNbMl18fHt9LGM9cyh1LHtmcm9tOnAsZGF0YTpsfSksdm9pZCBuKFtmdW5jdGlvbihlKXtyZXR1cm4gaS5wcm9jZXNzVHlwZWRNZXNzYWdlVjMoYyxlKX1dLHIpO2Nhc2VcInBhcml0eV9wb3N0VHJhbnNhY3Rpb25cIjpyZXR1cm4gZj1lLnBhcmFtc1swXSx2b2lkIGkucGFyaXR5UG9zdFRyYW5zYWN0aW9uKGYscik7Y2FzZVwicGFyaXR5X3Bvc3RTaWduXCI6cmV0dXJuIHA9ZS5wYXJhbXNbMF0sbD1lLnBhcmFtc1sxXSx2b2lkIGkucGFyaXR5UG9zdFNpZ24ocCxsLHIpO2Nhc2VcInBhcml0eV9jaGVja1JlcXVlc3RcIjpyZXR1cm4gYT1lLnBhcmFtc1swXSx2b2lkIGkucGFyaXR5Q2hlY2tSZXF1ZXN0KGEscik7Y2FzZVwicGFyaXR5X2RlZmF1bHRBY2NvdW50XCI6cmV0dXJuIHZvaWQgaS5nZXRBY2NvdW50cygoZnVuY3Rpb24oZSx0KXtpZihlKXJldHVybiByKGUpO3ZhciBuPXRbMF18fG51bGw7cihudWxsLG4pfSkpO2RlZmF1bHQ6cmV0dXJuIHZvaWQgdCgpfX0sbC5wcm90b3R5cGUuZ2V0QWNjb3VudHM9ZnVuY3Rpb24oZSl7ZShudWxsLFtdKX0sbC5wcm90b3R5cGUucHJvY2Vzc1NpZ25UcmFuc2FjdGlvbj1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXM7bihbZnVuY3Rpb24odCl7cmV0dXJuIHIuZmluYWxpemVUeChlLHQpfV0sdCl9LGwucHJvdG90eXBlLnByb2Nlc3NNZXNzYWdlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcztuKFtmdW5jdGlvbih0KXtyZXR1cm4gci5hcHByb3ZlTWVzc2FnZShlLHQpfSxmdW5jdGlvbihlLHQpe3JldHVybiByLmNoZWNrQXBwcm92YWwoXCJtZXNzYWdlXCIsZSx0KX0sZnVuY3Rpb24odCl7cmV0dXJuIHIuc2lnbk1lc3NhZ2UoZSx0KX1dLHQpfSxsLnByb3RvdHlwZS5wcm9jZXNzUGVyc29uYWxNZXNzYWdlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcztuKFtmdW5jdGlvbih0KXtyZXR1cm4gci5hcHByb3ZlUGVyc29uYWxNZXNzYWdlKGUsdCl9LGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIuY2hlY2tBcHByb3ZhbChcIm1lc3NhZ2VcIixlLHQpfSxmdW5jdGlvbih0KXtyZXR1cm4gci5zaWduUGVyc29uYWxNZXNzYWdlKGUsdCl9XSx0KX0sbC5wcm90b3R5cGUucHJvY2Vzc1R5cGVkTWVzc2FnZT1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXM7bihbZnVuY3Rpb24odCl7cmV0dXJuIHIuYXBwcm92ZVR5cGVkTWVzc2FnZShlLHQpfSxmdW5jdGlvbihlLHQpe3JldHVybiByLmNoZWNrQXBwcm92YWwoXCJtZXNzYWdlXCIsZSx0KX0sZnVuY3Rpb24odCl7cmV0dXJuIHIuc2lnblR5cGVkTWVzc2FnZShlLHQpfV0sdCl9LGwucHJvdG90eXBlLnByb2Nlc3NUeXBlZE1lc3NhZ2VWMz1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXM7bihbZnVuY3Rpb24odCl7cmV0dXJuIHIuc2lnblR5cGVkTWVzc2FnZVYzKGUsdCl9XSx0KX0sbC5wcm90b3R5cGUuYXV0b0FwcHJvdmU9ZnVuY3Rpb24oZSx0KXt0KG51bGwsITApfSxsLnByb3RvdHlwZS5jaGVja0FwcHJvdmFsPWZ1bmN0aW9uKGUsdCxyKXtyKHQ/bnVsbDpuZXcgRXJyb3IoXCJVc2VyIGRlbmllZCBcIitlK1wiIHNpZ25hdHVyZS5cIikpfSxsLnByb3RvdHlwZS5wYXJpdHlQb3N0VHJhbnNhY3Rpb249ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLG49XCIweFwiK3IuX3Bhcml0eVJlcXVlc3RDb3VudC50b1N0cmluZygxNik7ci5fcGFyaXR5UmVxdWVzdENvdW50Kyssci5lbWl0UGF5bG9hZCh7bWV0aG9kOlwiZXRoX3NlbmRUcmFuc2FjdGlvblwiLHBhcmFtczpbZV19LChmdW5jdGlvbihlLHQpe2lmKGUpci5fcGFyaXR5UmVxdWVzdHNbbl09e2Vycm9yOmV9O2Vsc2V7dmFyIGk9dC5yZXN1bHQ7ci5fcGFyaXR5UmVxdWVzdHNbbl09aX19KSksdChudWxsLG4pfSxsLnByb3RvdHlwZS5wYXJpdHlQb3N0U2lnbj1mdW5jdGlvbihlLHQscil7dmFyIG49dGhpcyxpPVwiMHhcIituLl9wYXJpdHlSZXF1ZXN0Q291bnQudG9TdHJpbmcoMTYpO24uX3Bhcml0eVJlcXVlc3RDb3VudCsrLG4uZW1pdFBheWxvYWQoe21ldGhvZDpcImV0aF9zaWduXCIscGFyYW1zOltlLHRdfSwoZnVuY3Rpb24oZSx0KXtpZihlKW4uX3Bhcml0eVJlcXVlc3RzW2ldPXtlcnJvcjplfTtlbHNle3ZhciByPXQucmVzdWx0O24uX3Bhcml0eVJlcXVlc3RzW2ldPXJ9fSkpLHIobnVsbCxpKX0sbC5wcm90b3R5cGUucGFyaXR5Q2hlY2tSZXF1ZXN0PWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5fcGFyaXR5UmVxdWVzdHNbZV18fG51bGw7cmV0dXJuIHI/ci5lcnJvcj90KHIuZXJyb3IpOnZvaWQgdChudWxsLHIpOnQobnVsbCxudWxsKX0sbC5wcm90b3R5cGUucmVjb3ZlclBlcnNvbmFsU2lnbmF0dXJlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dm9pZCAwO3RyeXtyPWEucmVjb3ZlclBlcnNvbmFsU2lnbmF0dXJlKGUpfWNhdGNoKGUpe3JldHVybiB0KGUpfXQobnVsbCxyKX0sbC5wcm90b3R5cGUuZmluYWxpemVBbmRTdWJtaXRUeD1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXM7ci5ub25jZUxvY2sudGFrZSgoZnVuY3Rpb24oKXtuKFtyLnNpZ25UcmFuc2FjdGlvbi5iaW5kKHIsZSksci5wdWJsaXNoVHJhbnNhY3Rpb24uYmluZChyKV0sKGZ1bmN0aW9uKGUsbil7aWYoci5ub25jZUxvY2subGVhdmUoKSxlKXJldHVybiB0KGUsbnVsbCk7dChudWxsLG4pfSkpfSkpfSxsLnByb3RvdHlwZS5maW5hbGl6ZVR4PWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcztyLm5vbmNlTG9jay50YWtlKChmdW5jdGlvbigpe24oW3Iuc2lnblRyYW5zYWN0aW9uLmJpbmQocixlKV0sKGZ1bmN0aW9uKGUsbil7aWYoci5ub25jZUxvY2subGVhdmUoKSxlKXJldHVybiB0KGUpO3QobnVsbCxuKX0pKX0pKX0sbC5wcm90b3R5cGUucHVibGlzaFRyYW5zYWN0aW9uPWZ1bmN0aW9uKGUsdCl7ZS50eDt2YXIgcj1lLnJhdzt0aGlzLmVtaXRQYXlsb2FkKHttZXRob2Q6XCJldGhfc2VuZFJhd1RyYW5zYWN0aW9uXCIscGFyYW1zOltyXX0sKGZ1bmN0aW9uKGUscil7aWYoZSlyZXR1cm4gdChlKTt0KG51bGwsci5yZXN1bHQpfSkpfSxsLnByb3RvdHlwZS5lc3RpbWF0ZUdhcz1mdW5jdGlvbihlLHQpe3UodGhpcy5lbmdpbmUsZSx0KX0sbC5wcm90b3R5cGUuZ2V0R2FzUHJpY2U9ZnVuY3Rpb24oZSl7dGhpcy5lbWl0UGF5bG9hZCh7bWV0aG9kOlwiZXRoX2dhc1ByaWNlXCIscGFyYW1zOltdfSwoZnVuY3Rpb24odCxyKXtpZih0KXJldHVybiBlKHQpO2UobnVsbCxyLnJlc3VsdCl9KSl9fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7KGZ1bmN0aW9uKHQpe3ZhciBuPXIoMikuaW5oZXJpdHMsaT1yKDIyMiksbz1yKDE1KSxhPXIoMTMpLHM9cig4NCkuYmxvY2tUYWdGb3JQYXlsb2FkO2Z1bmN0aW9uIGYoZSl7dGhpcy5ub25jZUNhY2hlPXt9fWUuZXhwb3J0cz1mLG4oZixhKSxmLnByb3RvdHlwZS5oYW5kbGVSZXF1ZXN0PWZ1bmN0aW9uKGUscixuKXt2YXIgYT10aGlzO3N3aXRjaChlLm1ldGhvZCl7Y2FzZVwiZXRoX2dldFRyYW5zYWN0aW9uQ291bnRcIjp2YXIgZj1zKGUpLGM9ZS5wYXJhbXNbMF0udG9Mb3dlckNhc2UoKSx1PWEubm9uY2VDYWNoZVtjXTtyZXR1cm4gdm9pZChcInBlbmRpbmdcIj09PWY/dT9uKG51bGwsdSk6cigoZnVuY3Rpb24oZSx0LHIpe2lmKGUpcmV0dXJuIHIoKTt2b2lkIDA9PT1hLm5vbmNlQ2FjaGVbY10mJihhLm5vbmNlQ2FjaGVbY109dCkscigpfSkpOnIoKSk7Y2FzZVwiZXRoX3NlbmRSYXdUcmFuc2FjdGlvblwiOnJldHVybiB2b2lkIHIoKGZ1bmN0aW9uKHIsbixzKXtpZihyKXJldHVybiBzKCk7dmFyIGY9ZS5wYXJhbXNbMF0sYz0oby5zdHJpcEhleFByZWZpeChmKSx0LmZyb20oby5zdHJpcEhleFByZWZpeChmKSxcImhleFwiKSxuZXcgaSh0LmZyb20oby5zdHJpcEhleFByZWZpeChmKSxcImhleFwiKSkpLHU9XCIweFwiK2MuZ2V0U2VuZGVyQWRkcmVzcygpLnRvU3RyaW5nKFwiaGV4XCIpLnRvTG93ZXJDYXNlKCksaD1vLmJ1ZmZlclRvSW50KGMubm9uY2UpLGw9KCsraCkudG9TdHJpbmcoMTYpO2wubGVuZ3RoJTImJihsPVwiMFwiK2wpLGw9XCIweFwiK2wsYS5ub25jZUNhY2hlW3VdPWwscygpfSkpO2Nhc2VcImV2bV9yZXZlcnRcIjpyZXR1cm4gYS5ub25jZUNhY2hlPXt9LHZvaWQgcigpO2RlZmF1bHQ6cmV0dXJuIHZvaWQgcigpfX19KS5jYWxsKHRoaXMscig3KS5CdWZmZXIpfSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7KGZ1bmN0aW9uKHQpe3ZhciBuPXQuYnJvd3Nlcj9yKDIyNCk6cigyNDcpLGk9cigyKS5pbmhlcml0cyxvPXIoMTkpLGE9cigxMykscz1yKDI0OCk7ZnVuY3Rpb24gZihlKXt0aGlzLnJwY1VybD1lLnJwY1VybH1lLmV4cG9ydHM9ZixpKGYsYSksZi5wcm90b3R5cGUuaGFuZGxlUmVxdWVzdD1mdW5jdGlvbihlLHQscil7dmFyIGk9dGhpcy5ycGNVcmwsYT1vKGUpO24oe3VyaTppLG1ldGhvZDpcIlBPU1RcIixoZWFkZXJzOntBY2NlcHQ6XCJhcHBsaWNhdGlvbi9qc29uXCIsXCJDb250ZW50LVR5cGVcIjpcImFwcGxpY2F0aW9uL2pzb25cIn0sYm9keTpKU09OLnN0cmluZ2lmeShhKSxyZWplY3RVbmF1dGhvcml6ZWQ6ITEsdGltZW91dDoyZTR9LChmdW5jdGlvbihlLHQsbil7aWYoZSlyZXR1cm4gcihuZXcgcy5JbnRlcm5hbEVycm9yKGUpKTtzd2l0Y2godC5zdGF0dXNDb2RlKXtjYXNlIDQwNTpyZXR1cm4gcihuZXcgcy5NZXRob2ROb3RGb3VuZCk7Y2FzZSA1MDQ6cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9bmV3IEVycm9yKFwiR2F0ZXdheSB0aW1lb3V0LiBUaGUgcmVxdWVzdCB0b29rIHRvbyBsb25nIHRvIHByb2Nlc3MuIFRoaXMgY2FuIGhhcHBlbiB3aGVuIHF1ZXJ5aW5nIGxvZ3Mgb3ZlciB0b28gd2lkZSBhIGJsb2NrIHJhbmdlLlwiKTtyZXR1cm4gcihuZXcgcy5JbnRlcm5hbEVycm9yKGUpKX0oKTtkZWZhdWx0OmlmKDIwMCE9dC5zdGF0dXNDb2RlKXJldHVybiByKG5ldyBzLkludGVybmFsRXJyb3IodC5ib2R5KSl9dmFyIGk9dm9pZCAwO3RyeXtpPUpTT04ucGFyc2Uobil9Y2F0Y2goZSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoZS5zdGFjaykscihuZXcgcy5JbnRlcm5hbEVycm9yKGUpKX1pZihpLmVycm9yKXJldHVybiByKGkuZXJyb3IpO3IobnVsbCxpLnJlc3VsdCl9KSl9fSkuY2FsbCh0aGlzLHIoOSkpfSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cig0NSksaT1yKDI1MCksbz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyx0KSxmdW5jdGlvbihlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4hdHx8XCJvYmplY3RcIiE9dHlwZW9mIHQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHQ/ZTp0fSh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsKGZ1bmN0aW9uKGUpe3ZhciB0PWUuYmxvY2tUcmFja2VyLHI9ZS5wcm92aWRlcixuPWUuZW5naW5lLG89aSh7YmxvY2tUcmFja2VyOnQscHJvdmlkZXI6cn0pLGE9by5ldmVudHMscz1vLm1pZGRsZXdhcmU7cmV0dXJuIGEub24oXCJub3RpZmljYXRpb25cIiwoZnVuY3Rpb24oZSl7cmV0dXJuIG4uZW1pdChcImRhdGFcIixudWxsLGUpfSkpLHN9KSkpfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLHR9KG4pO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7KGZ1bmN0aW9uKHQpe3ZhciBuPWZ1bmN0aW9uKGUsdCl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZTtpZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpKXJldHVybiBmdW5jdGlvbihlLHQpe3ZhciByPVtdLG49ITAsaT0hMSxvPXZvaWQgMDt0cnl7Zm9yKHZhciBhLHM9ZVtTeW1ib2wuaXRlcmF0b3JdKCk7IShuPShhPXMubmV4dCgpKS5kb25lKSYmKHIucHVzaChhLnZhbHVlKSwhdHx8ci5sZW5ndGghPT10KTtuPSEwKTt9Y2F0Y2goZSl7aT0hMCxvPWV9ZmluYWxseXt0cnl7IW4mJnMucmV0dXJuJiZzLnJldHVybigpfWZpbmFsbHl7aWYoaSl0aHJvdyBvfX1yZXR1cm4gcn0oZSx0KTt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX0saT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fXJldHVybiBmdW5jdGlvbih0LHIsbil7cmV0dXJuIHImJmUodC5wcm90b3R5cGUsciksbiYmZSh0LG4pLHR9fSgpO3ZhciBvPXIoMjUxKSxhPXIoNikscz0ocigyKS5pbmhlcml0cyx0LldlYlNvY2tldHx8cigyNTYpKSxmPXIoMTMpLGM9cigxOSksdT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3ZhciByPWUucnBjVXJsLG49ZS5kZWJ1ZyxpPWUub3JpZ2luOyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsdCk7dmFyIHM9ZnVuY3Rpb24oZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIXR8fFwib2JqZWN0XCIhPXR5cGVvZiB0JiZcImZ1bmN0aW9uXCIhPXR5cGVvZiB0P2U6dH0odGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzKSk7cmV0dXJuIGEuY2FsbChzKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhzLHtfYmFja29mZjp7dmFsdWU6by5leHBvbmVudGlhbCh7cmFuZG9taXNhdGlvbkZhY3RvcjouMixtYXhEZWxheTo1ZTN9KX0sX2Nvbm5lY3RUaW1lOnt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSxfbG9nOnt2YWx1ZTpuP2Z1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1BcnJheShlKSxyPTA7cjxlO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTtyZXR1cm4gY29uc29sZS5pbmZvLmFwcGx5KGNvbnNvbGUsW1wiW1dTUHJvdmlkZXJdXCJdLmNvbmNhdCh0KSl9OmZ1bmN0aW9uKCl7fX0sX29yaWdpbjp7dmFsdWU6aX0sX3BlbmRpbmdSZXF1ZXN0czp7dmFsdWU6bmV3IE1hcH0sX3NvY2tldDp7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0sX3VuaGFuZGxlZFJlcXVlc3RzOnt2YWx1ZTpbXX0sX3VybDp7dmFsdWU6cn19KSxzLl9oYW5kbGVTb2NrZXRDbG9zZT1zLl9oYW5kbGVTb2NrZXRDbG9zZS5iaW5kKHMpLHMuX2hhbmRsZVNvY2tldE1lc3NhZ2U9cy5faGFuZGxlU29ja2V0TWVzc2FnZS5iaW5kKHMpLHMuX2hhbmRsZVNvY2tldE9wZW49cy5faGFuZGxlU29ja2V0T3Blbi5iaW5kKHMpLHMuX2JhY2tvZmYub24oXCJyZWFkeVwiLChmdW5jdGlvbigpe3MuX29wZW5Tb2NrZXQoKX0pKSxzLl9vcGVuU29ja2V0KCksc31yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSxpKHQsW3trZXk6XCJoYW5kbGVSZXF1ZXN0XCIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe2lmKCF0aGlzLl9zb2NrZXR8fHRoaXMuX3NvY2tldC5yZWFkeVN0YXRlIT09cy5PUEVOKXJldHVybiB0aGlzLl91bmhhbmRsZWRSZXF1ZXN0cy5wdXNoKEFycmF5LmZyb20oYXJndW1lbnRzKSksdm9pZCB0aGlzLl9sb2coXCJTb2NrZXQgbm90IG9wZW4uIFJlcXVlc3QgcXVldWVkLlwiKTt0aGlzLl9wZW5kaW5nUmVxdWVzdHMuc2V0KGUuaWQsW2Uscl0pO3ZhciBuPWMoZSk7ZGVsZXRlIG4ub3JpZ2luLHRoaXMuX3NvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KG4pKSx0aGlzLl9sb2coXCJTZW50OiBcIituLm1ldGhvZCtcIiAjXCIrbi5pZCl9fSx7a2V5OlwiX2hhbmRsZVNvY2tldENsb3NlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZWFzb24scj1lLmNvZGU7dGhpcy5fbG9nKFwiU29ja2V0IGNsb3NlZCwgY29kZSBcIityK1wiIChcIisodHx8XCJubyByZWFzb25cIikrXCIpXCIpLHRoaXMuX2Nvbm5lY3RUaW1lJiZEYXRlLm5vdygpLXRoaXMuX2Nvbm5lY3RUaW1lPjVlMyYmdGhpcy5fYmFja29mZi5yZXNldCgpLHRoaXMuX3NvY2tldC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xvc2VcIix0aGlzLl9oYW5kbGVTb2NrZXRDbG9zZSksdGhpcy5fc29ja2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsdGhpcy5faGFuZGxlU29ja2V0TWVzc2FnZSksdGhpcy5fc29ja2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJvcGVuXCIsdGhpcy5faGFuZGxlU29ja2V0T3BlbiksdGhpcy5fc29ja2V0PW51bGwsdGhpcy5fYmFja29mZi5iYWNrb2ZmKCl9fSx7a2V5OlwiX2hhbmRsZVNvY2tldE1lc3NhZ2VcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD12b2lkIDA7dHJ5e3Q9SlNPTi5wYXJzZShlLmRhdGEpfWNhdGNoKGUpe3JldHVybiB2b2lkIHRoaXMuX2xvZyhcIlJlY2VpdmVkIGEgbWVzc2FnZSB0aGF0IGlzIG5vdCB2YWxpZCBKU09OOlwiLHQpfWlmKHZvaWQgMD09PXQuaWQpcmV0dXJuIHRoaXMuZW5naW5lLmVtaXQoXCJkYXRhXCIsbnVsbCx0KTtpZih0aGlzLl9wZW5kaW5nUmVxdWVzdHMuaGFzKHQuaWQpKXt2YXIgcj10aGlzLl9wZW5kaW5nUmVxdWVzdHMuZ2V0KHQuaWQpLGk9bihyLDIpLG89aVswXSxhPWlbMV07aWYodGhpcy5fcGVuZGluZ1JlcXVlc3RzLmRlbGV0ZSh0LmlkKSx0aGlzLl9sb2coXCJSZWNlaXZlZDogXCIrby5tZXRob2QrXCIgI1wiK3QuaWQpLHQuZXJyb3IpcmV0dXJuIGEobmV3IEVycm9yKHQuZXJyb3IubWVzc2FnZSkpO2EobnVsbCx0LnJlc3VsdCl9fX0se2tleTpcIl9oYW5kbGVTb2NrZXRPcGVuXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuX2xvZyhcIlNvY2tldCBvcGVuLlwiKSx0aGlzLl9jb25uZWN0VGltZT1EYXRlLm5vdygpLHRoaXMuX3BlbmRpbmdSZXF1ZXN0cy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgcj1uKHQsMiksaT1yWzBdLG89clsxXTtlLl91bmhhbmRsZWRSZXF1ZXN0cy5wdXNoKFtpLG51bGwsb10pfSkpLHRoaXMuX3BlbmRpbmdSZXF1ZXN0cy5jbGVhcigpLHRoaXMuX3VuaGFuZGxlZFJlcXVlc3RzLnNwbGljZSgwLHRoaXMuX3VuaGFuZGxlZFJlcXVlc3RzLmxlbmd0aCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5oYW5kbGVSZXF1ZXN0LmFwcGx5KGUsdCl9KSl9fSx7a2V5OlwiX29wZW5Tb2NrZXRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2xvZyhcIk9wZW5pbmcgc29ja2V0Li4uXCIpLHRoaXMuX3NvY2tldD1uZXcgcyh0aGlzLl91cmwsW10sdGhpcy5fb3JpZ2luP3toZWFkZXJzOntvcmlnaW46dGhpcy5fb3JpZ2lufX06e30pLHRoaXMuX3NvY2tldC5hZGRFdmVudExpc3RlbmVyKFwiY2xvc2VcIix0aGlzLl9oYW5kbGVTb2NrZXRDbG9zZSksdGhpcy5fc29ja2V0LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsdGhpcy5faGFuZGxlU29ja2V0TWVzc2FnZSksdGhpcy5fc29ja2V0LmFkZEV2ZW50TGlzdGVuZXIoXCJvcGVuXCIsdGhpcy5faGFuZGxlU29ja2V0T3Blbil9fV0pLHR9KGYpO09iamVjdC5hc3NpZ24odS5wcm90b3R5cGUsYS5wcm90b3R5cGUpLGUuZXhwb3J0cz11fSkuY2FsbCh0aGlzLHIoNCkpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJvYmplY3RcIj09dHlwZW9mIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29weSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5maWxsJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLnJlYWRVSW50OH19LGZ1bmN0aW9uKGUsdCl7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmNyZWF0ZT9lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtlLnN1cGVyXz10LGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pfTplLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtlLnN1cGVyXz10O3ZhciByPWZ1bmN0aW9uKCl7fTtyLnByb3RvdHlwZT10LnByb3RvdHlwZSxlLnByb3RvdHlwZT1uZXcgcixlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lfX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMTA5KSxpPXIoMTI0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9bihlKSxyPWkoZSk7cmV0dXJuIGZ1bmN0aW9uKGUsbil7c3dpdGNoKFwic3RyaW5nXCI9PXR5cGVvZiBlP2UudG9Mb3dlckNhc2UoKTplKXtjYXNlXCJrZWNjYWsyMjRcIjpyZXR1cm4gbmV3IHQoMTE1Miw0NDgsbnVsbCwyMjQsbik7Y2FzZVwia2VjY2FrMjU2XCI6cmV0dXJuIG5ldyB0KDEwODgsNTEyLG51bGwsMjU2LG4pO2Nhc2VcImtlY2NhazM4NFwiOnJldHVybiBuZXcgdCg4MzIsNzY4LG51bGwsMzg0LG4pO2Nhc2VcImtlY2NhazUxMlwiOnJldHVybiBuZXcgdCg1NzYsMTAyNCxudWxsLDUxMixuKTtjYXNlXCJzaGEzLTIyNFwiOnJldHVybiBuZXcgdCgxMTUyLDQ0OCw2LDIyNCxuKTtjYXNlXCJzaGEzLTI1NlwiOnJldHVybiBuZXcgdCgxMDg4LDUxMiw2LDI1NixuKTtjYXNlXCJzaGEzLTM4NFwiOnJldHVybiBuZXcgdCg4MzIsNzY4LDYsMzg0LG4pO2Nhc2VcInNoYTMtNTEyXCI6cmV0dXJuIG5ldyB0KDU3NiwxMDI0LDYsNTEyLG4pO2Nhc2VcInNoYWtlMTI4XCI6cmV0dXJuIG5ldyByKDEzNDQsMjU2LDMxLG4pO2Nhc2VcInNoYWtlMjU2XCI6cmV0dXJuIG5ldyByKDEwODgsNTEyLDMxLG4pO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxkIGFsZ29yaXRobTogXCIrZSl9fX19LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDEpLkJ1ZmZlcixpPXIoMjQpLlRyYW5zZm9ybSxvPXIoMCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxyLG4sbyxhKXtpLmNhbGwodGhpcyxhKSx0aGlzLl9yYXRlPXQsdGhpcy5fY2FwYWNpdHk9cix0aGlzLl9kZWxpbWl0ZWRTdWZmaXg9bix0aGlzLl9oYXNoQml0TGVuZ3RoPW8sdGhpcy5fb3B0aW9ucz1hLHRoaXMuX3N0YXRlPW5ldyBlLHRoaXMuX3N0YXRlLmluaXRpYWxpemUodCxyKSx0aGlzLl9maW5hbGl6ZWQ9ITF9cmV0dXJuIG8odCxpKSx0LnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1udWxsO3RyeXt0aGlzLnVwZGF0ZShlLHQpfWNhdGNoKGUpe249ZX1yKG4pfSx0LnByb3RvdHlwZS5fZmx1c2g9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDt0cnl7dGhpcy5wdXNoKHRoaXMuZGlnZXN0KCkpfWNhdGNoKGUpe3Q9ZX1lKHQpfSx0LnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSx0KXtpZighbi5pc0J1ZmZlcihlKSYmXCJzdHJpbmdcIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRhdGEgbXVzdCBiZSBhIHN0cmluZyBvciBhIGJ1ZmZlclwiKTtpZih0aGlzLl9maW5hbGl6ZWQpdGhyb3cgbmV3IEVycm9yKFwiRGlnZXN0IGFscmVhZHkgY2FsbGVkXCIpO3JldHVybiBuLmlzQnVmZmVyKGUpfHwoZT1uLmZyb20oZSx0KSksdGhpcy5fc3RhdGUuYWJzb3JiKGUpLHRoaXN9LHQucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbihlKXtpZih0aGlzLl9maW5hbGl6ZWQpdGhyb3cgbmV3IEVycm9yKFwiRGlnZXN0IGFscmVhZHkgY2FsbGVkXCIpO3RoaXMuX2ZpbmFsaXplZD0hMCx0aGlzLl9kZWxpbWl0ZWRTdWZmaXgmJnRoaXMuX3N0YXRlLmFic29yYkxhc3RGZXdCaXRzKHRoaXMuX2RlbGltaXRlZFN1ZmZpeCk7dmFyIHQ9dGhpcy5fc3RhdGUuc3F1ZWV6ZSh0aGlzLl9oYXNoQml0TGVuZ3RoLzgpO3JldHVybiB2b2lkIDAhPT1lJiYodD10LnRvU3RyaW5nKGUpKSx0aGlzLl9yZXNldFN0YXRlKCksdH0sdC5wcm90b3R5cGUuX3Jlc2V0U3RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhdGUuaW5pdGlhbGl6ZSh0aGlzLl9yYXRlLHRoaXMuX2NhcGFjaXR5KSx0aGlzfSx0LnByb3RvdHlwZS5fY2xvbmU9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdCh0aGlzLl9yYXRlLHRoaXMuX2NhcGFjaXR5LHRoaXMuX2RlbGltaXRlZFN1ZmZpeCx0aGlzLl9oYXNoQml0TGVuZ3RoLHRoaXMuX29wdGlvbnMpO3JldHVybiB0aGlzLl9zdGF0ZS5jb3B5KGUuX3N0YXRlKSxlLl9maW5hbGl6ZWQ9dGhpcy5fZmluYWxpemVkLGV9LHR9fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dC5ieXRlTGVuZ3RoPWZ1bmN0aW9uKGUpe3ZhciB0PWMoZSkscj10WzBdLG49dFsxXTtyZXR1cm4gMyoocituKS80LW59LHQudG9CeXRlQXJyYXk9ZnVuY3Rpb24oZSl7dmFyIHQscixuPWMoZSksYT1uWzBdLHM9blsxXSxmPW5ldyBvKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gMyoodCtyKS80LXJ9KDAsYSxzKSksdT0wLGg9cz4wP2EtNDphO2ZvcihyPTA7cjxoO3IrPTQpdD1pW2UuY2hhckNvZGVBdChyKV08PDE4fGlbZS5jaGFyQ29kZUF0KHIrMSldPDwxMnxpW2UuY2hhckNvZGVBdChyKzIpXTw8NnxpW2UuY2hhckNvZGVBdChyKzMpXSxmW3UrK109dD4+MTYmMjU1LGZbdSsrXT10Pj44JjI1NSxmW3UrK109MjU1JnQ7Mj09PXMmJih0PWlbZS5jaGFyQ29kZUF0KHIpXTw8MnxpW2UuY2hhckNvZGVBdChyKzEpXT4+NCxmW3UrK109MjU1JnQpOzE9PT1zJiYodD1pW2UuY2hhckNvZGVBdChyKV08PDEwfGlbZS5jaGFyQ29kZUF0KHIrMSldPDw0fGlbZS5jaGFyQ29kZUF0KHIrMildPj4yLGZbdSsrXT10Pj44JjI1NSxmW3UrK109MjU1JnQpO3JldHVybiBmfSx0LmZyb21CeXRlQXJyYXk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9ZS5sZW5ndGgsaT1yJTMsbz1bXSxhPTAscz1yLWk7YTxzO2ErPTE2MzgzKW8ucHVzaCh1KGUsYSxhKzE2MzgzPnM/czphKzE2MzgzKSk7MT09PWk/KHQ9ZVtyLTFdLG8ucHVzaChuW3Q+PjJdK25bdDw8NCY2M10rXCI9PVwiKSk6Mj09PWkmJih0PShlW3ItMl08PDgpK2Vbci0xXSxvLnB1c2goblt0Pj4xMF0rblt0Pj40JjYzXStuW3Q8PDImNjNdK1wiPVwiKSk7cmV0dXJuIG8uam9pbihcIlwiKX07Zm9yKHZhciBuPVtdLGk9W10sbz1cInVuZGVmaW5lZFwiIT10eXBlb2YgVWludDhBcnJheT9VaW50OEFycmF5OkFycmF5LGE9XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvXCIscz0wLGY9YS5sZW5ndGg7czxmOysrcyluW3NdPWFbc10saVthLmNoYXJDb2RlQXQocyldPXM7ZnVuY3Rpb24gYyhlKXt2YXIgdD1lLmxlbmd0aDtpZih0JTQ+MCl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0XCIpO3ZhciByPWUuaW5kZXhPZihcIj1cIik7cmV0dXJuLTE9PT1yJiYocj10KSxbcixyPT09dD8wOjQtciU0XX1mdW5jdGlvbiB1KGUsdCxyKXtmb3IodmFyIGksbyxhPVtdLHM9dDtzPHI7cys9MylpPShlW3NdPDwxNiYxNjcxMTY4MCkrKGVbcysxXTw8OCY2NTI4MCkrKDI1NSZlW3MrMl0pLGEucHVzaChuWyhvPWkpPj4xOCY2M10rbltvPj4xMiY2M10rbltvPj42JjYzXStuWzYzJm9dKTtyZXR1cm4gYS5qb2luKFwiXCIpfWlbXCItXCIuY2hhckNvZGVBdCgwKV09NjIsaVtcIl9cIi5jaGFyQ29kZUF0KDApXT02M30sZnVuY3Rpb24oZSx0KXt0LnJlYWQ9ZnVuY3Rpb24oZSx0LHIsbixpKXt2YXIgbyxhLHM9OCppLW4tMSxmPSgxPDxzKS0xLGM9Zj4+MSx1PS03LGg9cj9pLTE6MCxsPXI/LTE6MSxkPWVbdCtoXTtmb3IoaCs9bCxvPWQmKDE8PC11KS0xLGQ+Pj0tdSx1Kz1zO3U+MDtvPTI1NipvK2VbdCtoXSxoKz1sLHUtPTgpO2ZvcihhPW8mKDE8PC11KS0xLG8+Pj0tdSx1Kz1uO3U+MDthPTI1NiphK2VbdCtoXSxoKz1sLHUtPTgpO2lmKDA9PT1vKW89MS1jO2Vsc2V7aWYobz09PWYpcmV0dXJuIGE/TmFOOjEvMCooZD8tMToxKTthKz1NYXRoLnBvdygyLG4pLG8tPWN9cmV0dXJuKGQ/LTE6MSkqYSpNYXRoLnBvdygyLG8tbil9LHQud3JpdGU9ZnVuY3Rpb24oZSx0LHIsbixpLG8pe3ZhciBhLHMsZixjPTgqby1pLTEsdT0oMTw8YyktMSxoPXU+PjEsbD0yMz09PWk/TWF0aC5wb3coMiwtMjQpLU1hdGgucG93KDIsLTc3KTowLGQ9bj8wOm8tMSxwPW4/MTotMSxiPXQ8MHx8MD09PXQmJjEvdDwwPzE6MDtmb3IodD1NYXRoLmFicyh0KSxpc05hTih0KXx8dD09PTEvMD8ocz1pc05hTih0KT8xOjAsYT11KTooYT1NYXRoLmZsb29yKE1hdGgubG9nKHQpL01hdGguTE4yKSx0KihmPU1hdGgucG93KDIsLWEpKTwxJiYoYS0tLGYqPTIpLCh0Kz1hK2g+PTE/bC9mOmwqTWF0aC5wb3coMiwxLWgpKSpmPj0yJiYoYSsrLGYvPTIpLGEraD49dT8ocz0wLGE9dSk6YStoPj0xPyhzPSh0KmYtMSkqTWF0aC5wb3coMixpKSxhKz1oKToocz10Kk1hdGgucG93KDIsaC0xKSpNYXRoLnBvdygyLGkpLGE9MCkpO2k+PTg7ZVtyK2RdPTI1NSZzLGQrPXAscy89MjU2LGktPTgpO2ZvcihhPWE8PGl8cyxjKz1pO2M+MDtlW3IrZF09MjU1JmEsZCs9cCxhLz0yNTYsYy09OCk7ZVtyK2QtcF18PTEyOCpifX0sZnVuY3Rpb24oZSx0KXt2YXIgcj17fS50b1N0cmluZztlLmV4cG9ydHM9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oZSl7cmV0dXJuXCJbb2JqZWN0IEFycmF5XVwiPT1yLmNhbGwoZSl9fSxmdW5jdGlvbihlLHQpe3ZhciByPXt9LnRvU3RyaW5nO2UuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihlKXtyZXR1cm5cIltvYmplY3QgQXJyYXldXCI9PXIuY2FsbChlKX19LGZ1bmN0aW9uKGUsdCl7fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigzMykuQnVmZmVyLGk9cigxMTYpO2UuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLGUpLHRoaXMuaGVhZD1udWxsLHRoaXMudGFpbD1udWxsLHRoaXMubGVuZ3RoPTB9cmV0dXJuIGUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oZSl7dmFyIHQ9e2RhdGE6ZSxuZXh0Om51bGx9O3RoaXMubGVuZ3RoPjA/dGhpcy50YWlsLm5leHQ9dDp0aGlzLmhlYWQ9dCx0aGlzLnRhaWw9dCwrK3RoaXMubGVuZ3RofSxlLnByb3RvdHlwZS51bnNoaWZ0PWZ1bmN0aW9uKGUpe3ZhciB0PXtkYXRhOmUsbmV4dDp0aGlzLmhlYWR9OzA9PT10aGlzLmxlbmd0aCYmKHRoaXMudGFpbD10KSx0aGlzLmhlYWQ9dCwrK3RoaXMubGVuZ3RofSxlLnByb3RvdHlwZS5zaGlmdD1mdW5jdGlvbigpe2lmKDAhPT10aGlzLmxlbmd0aCl7dmFyIGU9dGhpcy5oZWFkLmRhdGE7cmV0dXJuIDE9PT10aGlzLmxlbmd0aD90aGlzLmhlYWQ9dGhpcy50YWlsPW51bGw6dGhpcy5oZWFkPXRoaXMuaGVhZC5uZXh0LC0tdGhpcy5sZW5ndGgsZX19LGUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5oZWFkPXRoaXMudGFpbD1udWxsLHRoaXMubGVuZ3RoPTB9LGUucHJvdG90eXBlLmpvaW49ZnVuY3Rpb24oZSl7aWYoMD09PXRoaXMubGVuZ3RoKXJldHVyblwiXCI7Zm9yKHZhciB0PXRoaXMuaGVhZCxyPVwiXCIrdC5kYXRhO3Q9dC5uZXh0OylyKz1lK3QuZGF0YTtyZXR1cm4gcn0sZS5wcm90b3R5cGUuY29uY2F0PWZ1bmN0aW9uKGUpe2lmKDA9PT10aGlzLmxlbmd0aClyZXR1cm4gbi5hbGxvYygwKTtpZigxPT09dGhpcy5sZW5ndGgpcmV0dXJuIHRoaXMuaGVhZC5kYXRhO2Zvcih2YXIgdCxyLGksbz1uLmFsbG9jVW5zYWZlKGU+Pj4wKSxhPXRoaXMuaGVhZCxzPTA7YTspdD1hLmRhdGEscj1vLGk9cyx0LmNvcHkocixpKSxzKz1hLmRhdGEubGVuZ3RoLGE9YS5uZXh0O3JldHVybiBvfSxlfSgpLGkmJmkuaW5zcGVjdCYmaS5pbnNwZWN0LmN1c3RvbSYmKGUuZXhwb3J0cy5wcm90b3R5cGVbaS5pbnNwZWN0LmN1c3RvbV09ZnVuY3Rpb24oKXt2YXIgZT1pLmluc3BlY3Qoe2xlbmd0aDp0aGlzLmxlbmd0aH0pO3JldHVybiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUrXCIgXCIrZX0pfSxmdW5jdGlvbihlLHQpe30sZnVuY3Rpb24oZSx0LHIpeyhmdW5jdGlvbihlLHQpeyFmdW5jdGlvbihlLHIpe1widXNlIHN0cmljdFwiO2lmKCFlLnNldEltbWVkaWF0ZSl7dmFyIG4saSxvLGEscyxmPTEsYz17fSx1PSExLGg9ZS5kb2N1bWVudCxsPU9iamVjdC5nZXRQcm90b3R5cGVPZiYmT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO2w9bCYmbC5zZXRUaW1lb3V0P2w6ZSxcIltvYmplY3QgcHJvY2Vzc11cIj09PXt9LnRvU3RyaW5nLmNhbGwoZS5wcm9jZXNzKT9uPWZ1bmN0aW9uKGUpe3QubmV4dFRpY2soKGZ1bmN0aW9uKCl7cChlKX0pKX06IWZ1bmN0aW9uKCl7aWYoZS5wb3N0TWVzc2FnZSYmIWUuaW1wb3J0U2NyaXB0cyl7dmFyIHQ9ITAscj1lLm9ubWVzc2FnZTtyZXR1cm4gZS5vbm1lc3NhZ2U9ZnVuY3Rpb24oKXt0PSExfSxlLnBvc3RNZXNzYWdlKFwiXCIsXCIqXCIpLGUub25tZXNzYWdlPXIsdH19KCk/ZS5NZXNzYWdlQ2hhbm5lbD8oKG89bmV3IE1lc3NhZ2VDaGFubmVsKS5wb3J0MS5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7cChlLmRhdGEpfSxuPWZ1bmN0aW9uKGUpe28ucG9ydDIucG9zdE1lc3NhZ2UoZSl9KTpoJiZcIm9ucmVhZHlzdGF0ZWNoYW5nZVwiaW4gaC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpPyhpPWguZG9jdW1lbnRFbGVtZW50LG49ZnVuY3Rpb24oZSl7dmFyIHQ9aC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO3Qub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7cChlKSx0Lm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGkucmVtb3ZlQ2hpbGQodCksdD1udWxsfSxpLmFwcGVuZENoaWxkKHQpfSk6bj1mdW5jdGlvbihlKXtzZXRUaW1lb3V0KHAsMCxlKX06KGE9XCJzZXRJbW1lZGlhdGUkXCIrTWF0aC5yYW5kb20oKStcIiRcIixzPWZ1bmN0aW9uKHQpe3Quc291cmNlPT09ZSYmXCJzdHJpbmdcIj09dHlwZW9mIHQuZGF0YSYmMD09PXQuZGF0YS5pbmRleE9mKGEpJiZwKCt0LmRhdGEuc2xpY2UoYS5sZW5ndGgpKX0sZS5hZGRFdmVudExpc3RlbmVyP2UuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIixzLCExKTplLmF0dGFjaEV2ZW50KFwib25tZXNzYWdlXCIscyksbj1mdW5jdGlvbih0KXtlLnBvc3RNZXNzYWdlKGErdCxcIipcIil9KSxsLnNldEltbWVkaWF0ZT1mdW5jdGlvbihlKXtcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiYoZT1uZXcgRnVuY3Rpb24oXCJcIitlKSk7Zm9yKHZhciB0PW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpLHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdPWFyZ3VtZW50c1tyKzFdO3ZhciBpPXtjYWxsYmFjazplLGFyZ3M6dH07cmV0dXJuIGNbZl09aSxuKGYpLGYrK30sbC5jbGVhckltbWVkaWF0ZT1kfWZ1bmN0aW9uIGQoZSl7ZGVsZXRlIGNbZV19ZnVuY3Rpb24gcChlKXtpZih1KXNldFRpbWVvdXQocCwwLGUpO2Vsc2V7dmFyIHQ9Y1tlXTtpZih0KXt1PSEwO3RyeXshZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jYWxsYmFjayxuPWUuYXJncztzd2l0Y2gobi5sZW5ndGgpe2Nhc2UgMDp0KCk7YnJlYWs7Y2FzZSAxOnQoblswXSk7YnJlYWs7Y2FzZSAyOnQoblswXSxuWzFdKTticmVhaztjYXNlIDM6dChuWzBdLG5bMV0sblsyXSk7YnJlYWs7ZGVmYXVsdDp0LmFwcGx5KHIsbil9fSh0KX1maW5hbGx5e2QoZSksdT0hMX19fX19KFwidW5kZWZpbmVkXCI9PXR5cGVvZiBzZWxmP3ZvaWQgMD09PWU/dGhpczplOnNlbGYpfSkuY2FsbCh0aGlzLHIoNCkscig5KSl9LGZ1bmN0aW9uKGUsdCxyKXsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gcihlKXt0cnl7aWYoIXQubG9jYWxTdG9yYWdlKXJldHVybiExfWNhdGNoKGUpe3JldHVybiExfXZhciByPXQubG9jYWxTdG9yYWdlW2VdO3JldHVybiBudWxsIT1yJiZcInRydWVcIj09PVN0cmluZyhyKS50b0xvd2VyQ2FzZSgpfWUuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKHIoXCJub0RlcHJlY2F0aW9uXCIpKXJldHVybiBlO3ZhciBuPSExO3JldHVybiBmdW5jdGlvbigpe2lmKCFuKXtpZihyKFwidGhyb3dEZXByZWNhdGlvblwiKSl0aHJvdyBuZXcgRXJyb3IodCk7cihcInRyYWNlRGVwcmVjYXRpb25cIik/Y29uc29sZS50cmFjZSh0KTpjb25zb2xlLndhcm4odCksbj0hMH1yZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX0pLmNhbGwodGhpcyxyKDQpKX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1vO3ZhciBuPXIoNTYpLGk9cigxNik7ZnVuY3Rpb24gbyhlKXtpZighKHRoaXMgaW5zdGFuY2VvZiBvKSlyZXR1cm4gbmV3IG8oZSk7bi5jYWxsKHRoaXMsZSl9aS5pbmhlcml0cz1yKDApLGkuaW5oZXJpdHMobyxuKSxvLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKGUsdCxyKXtyKG51bGwsZSl9fSxmdW5jdGlvbihlLHQscil7ZS5leHBvcnRzPXIoMzQpfSxmdW5jdGlvbihlLHQscil7ZS5leHBvcnRzPXIoMTApfSxmdW5jdGlvbihlLHQscil7ZS5leHBvcnRzPXIoMzIpLlRyYW5zZm9ybX0sZnVuY3Rpb24oZSx0LHIpe2UuZXhwb3J0cz1yKDMyKS5QYXNzVGhyb3VnaH0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMSkuQnVmZmVyLGk9cigyNCkuVHJhbnNmb3JtLG89cigwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LHIsbixvKXtpLmNhbGwodGhpcyxvKSx0aGlzLl9yYXRlPXQsdGhpcy5fY2FwYWNpdHk9cix0aGlzLl9kZWxpbWl0ZWRTdWZmaXg9bix0aGlzLl9vcHRpb25zPW8sdGhpcy5fc3RhdGU9bmV3IGUsdGhpcy5fc3RhdGUuaW5pdGlhbGl6ZSh0LHIpLHRoaXMuX2ZpbmFsaXplZD0hMX1yZXR1cm4gbyh0LGkpLHQucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPW51bGw7dHJ5e3RoaXMudXBkYXRlKGUsdCl9Y2F0Y2goZSl7bj1lfXIobil9LHQucHJvdG90eXBlLl9mbHVzaD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuX3JlYWQ9ZnVuY3Rpb24oZSl7dGhpcy5wdXNoKHRoaXMuc3F1ZWV6ZShlKSl9LHQucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlLHQpe2lmKCFuLmlzQnVmZmVyKGUpJiZcInN0cmluZ1wiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGF0YSBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgYnVmZmVyXCIpO2lmKHRoaXMuX2ZpbmFsaXplZCl0aHJvdyBuZXcgRXJyb3IoXCJTcXVlZXplIGFscmVhZHkgY2FsbGVkXCIpO3JldHVybiBuLmlzQnVmZmVyKGUpfHwoZT1uLmZyb20oZSx0KSksdGhpcy5fc3RhdGUuYWJzb3JiKGUpLHRoaXN9LHQucHJvdG90eXBlLnNxdWVlemU9ZnVuY3Rpb24oZSx0KXt0aGlzLl9maW5hbGl6ZWR8fCh0aGlzLl9maW5hbGl6ZWQ9ITAsdGhpcy5fc3RhdGUuYWJzb3JiTGFzdEZld0JpdHModGhpcy5fZGVsaW1pdGVkU3VmZml4KSk7dmFyIHI9dGhpcy5fc3RhdGUuc3F1ZWV6ZShlKTtyZXR1cm4gdm9pZCAwIT09dCYmKHI9ci50b1N0cmluZyh0KSkscn0sdC5wcm90b3R5cGUuX3Jlc2V0U3RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhdGUuaW5pdGlhbGl6ZSh0aGlzLl9yYXRlLHRoaXMuX2NhcGFjaXR5KSx0aGlzfSx0LnByb3RvdHlwZS5fY2xvbmU9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdCh0aGlzLl9yYXRlLHRoaXMuX2NhcGFjaXR5LHRoaXMuX2RlbGltaXRlZFN1ZmZpeCx0aGlzLl9vcHRpb25zKTtyZXR1cm4gdGhpcy5fc3RhdGUuY29weShlLl9zdGF0ZSksZS5fZmluYWxpemVkPXRoaXMuX2ZpbmFsaXplZCxlfSx0fX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMSkuQnVmZmVyLGk9cigxMjYpO2Z1bmN0aW9uIG8oKXt0aGlzLnN0YXRlPVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXSx0aGlzLmJsb2NrU2l6ZT1udWxsLHRoaXMuY291bnQ9MCx0aGlzLnNxdWVlemluZz0hMX1vLnByb3RvdHlwZS5pbml0aWFsaXplPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTA7cjw1MDsrK3IpdGhpcy5zdGF0ZVtyXT0wO3RoaXMuYmxvY2tTaXplPWUvOCx0aGlzLmNvdW50PTAsdGhpcy5zcXVlZXppbmc9ITF9LG8ucHJvdG90eXBlLmFic29yYj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoOysrdCl0aGlzLnN0YXRlW35+KHRoaXMuY291bnQvNCldXj1lW3RdPDx0aGlzLmNvdW50JTQqOCx0aGlzLmNvdW50Kz0xLHRoaXMuY291bnQ9PT10aGlzLmJsb2NrU2l6ZSYmKGkucDE2MDAodGhpcy5zdGF0ZSksdGhpcy5jb3VudD0wKX0sby5wcm90b3R5cGUuYWJzb3JiTGFzdEZld0JpdHM9ZnVuY3Rpb24oZSl7dGhpcy5zdGF0ZVt+fih0aGlzLmNvdW50LzQpXV49ZTw8dGhpcy5jb3VudCU0KjgsMCE9KDEyOCZlKSYmdGhpcy5jb3VudD09PXRoaXMuYmxvY2tTaXplLTEmJmkucDE2MDAodGhpcy5zdGF0ZSksdGhpcy5zdGF0ZVt+figodGhpcy5ibG9ja1NpemUtMSkvNCldXj0xMjg8PCh0aGlzLmJsb2NrU2l6ZS0xKSU0KjgsaS5wMTYwMCh0aGlzLnN0YXRlKSx0aGlzLmNvdW50PTAsdGhpcy5zcXVlZXppbmc9ITB9LG8ucHJvdG90eXBlLnNxdWVlemU9ZnVuY3Rpb24oZSl7dGhpcy5zcXVlZXppbmd8fHRoaXMuYWJzb3JiTGFzdEZld0JpdHMoMSk7Zm9yKHZhciB0PW4uYWxsb2MoZSkscj0wO3I8ZTsrK3IpdFtyXT10aGlzLnN0YXRlW35+KHRoaXMuY291bnQvNCldPj4+dGhpcy5jb3VudCU0KjgmMjU1LHRoaXMuY291bnQrPTEsdGhpcy5jb3VudD09PXRoaXMuYmxvY2tTaXplJiYoaS5wMTYwMCh0aGlzLnN0YXRlKSx0aGlzLmNvdW50PTApO3JldHVybiB0fSxvLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8NTA7Kyt0KWUuc3RhdGVbdF09dGhpcy5zdGF0ZVt0XTtlLmJsb2NrU2l6ZT10aGlzLmJsb2NrU2l6ZSxlLmNvdW50PXRoaXMuY291bnQsZS5zcXVlZXppbmc9dGhpcy5zcXVlZXppbmd9LGUuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49WzEsMCwzMjg5OCwwLDMyOTA2LDIxNDc0ODM2NDgsMjE0NzUxNjQxNiwyMTQ3NDgzNjQ4LDMyOTA3LDAsMjE0NzQ4MzY0OSwwLDIxNDc1MTY1NDUsMjE0NzQ4MzY0OCwzMjc3NywyMTQ3NDgzNjQ4LDEzOCwwLDEzNiwwLDIxNDc1MTY0MjUsMCwyMTQ3NDgzNjU4LDAsMjE0NzUxNjU1NSwwLDEzOSwyMTQ3NDgzNjQ4LDMyOTA1LDIxNDc0ODM2NDgsMzI3NzEsMjE0NzQ4MzY0OCwzMjc3MCwyMTQ3NDgzNjQ4LDEyOCwyMTQ3NDgzNjQ4LDMyNzc4LDAsMjE0NzQ4MzY1OCwyMTQ3NDgzNjQ4LDIxNDc1MTY1NDUsMjE0NzQ4MzY0OCwzMjg5NiwyMTQ3NDgzNjQ4LDIxNDc0ODM2NDksMCwyMTQ3NTE2NDI0LDIxNDc0ODM2NDhdO3QucDE2MDA9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDwyNDsrK3Qpe3ZhciByPWVbMF1eZVsxMF1eZVsyMF1eZVszMF1eZVs0MF0saT1lWzFdXmVbMTFdXmVbMjFdXmVbMzFdXmVbNDFdLG89ZVsyXV5lWzEyXV5lWzIyXV5lWzMyXV5lWzQyXSxhPWVbM11eZVsxM11eZVsyM11eZVszM11eZVs0M10scz1lWzRdXmVbMTRdXmVbMjRdXmVbMzRdXmVbNDRdLGY9ZVs1XV5lWzE1XV5lWzI1XV5lWzM1XV5lWzQ1XSxjPWVbNl1eZVsxNl1eZVsyNl1eZVszNl1eZVs0Nl0sdT1lWzddXmVbMTddXmVbMjddXmVbMzddXmVbNDddLGg9ZVs4XV5lWzE4XV5lWzI4XV5lWzM4XV5lWzQ4XSxsPWVbOV1eZVsxOV1eZVsyOV1eZVszOV1eZVs0OV0sZD1oXihvPDwxfGE+Pj4zMSkscD1sXihhPDwxfG8+Pj4zMSksYj1lWzBdXmQseT1lWzFdXnAsZz1lWzEwXV5kLHY9ZVsxMV1ecCxtPWVbMjBdXmQsXz1lWzIxXV5wLHc9ZVszMF1eZCxFPWVbMzFdXnAsQT1lWzQwXV5kLFM9ZVs0MV1ecDtkPXJeKHM8PDF8Zj4+PjMxKSxwPWleKGY8PDF8cz4+PjMxKTt2YXIgaz1lWzJdXmQseD1lWzNdXnAsST1lWzEyXV5kLE09ZVsxM11ecCxUPWVbMjJdXmQsUD1lWzIzXV5wLEI9ZVszMl1eZCxMPWVbMzNdXnAsUj1lWzQyXV5kLE89ZVs0M11ecDtkPW9eKGM8PDF8dT4+PjMxKSxwPWFeKHU8PDF8Yz4+PjMxKTt2YXIgQz1lWzRdXmQsTj1lWzVdXnAsaj1lWzE0XV5kLEQ9ZVsxNV1ecCxxPWVbMjRdXmQsVT1lWzI1XV5wLEY9ZVszNF1eZCx6PWVbMzVdXnAsSz1lWzQ0XV5kLEg9ZVs0NV1ecDtkPXNeKGg8PDF8bD4+PjMxKSxwPWZeKGw8PDF8aD4+PjMxKTt2YXIgVj1lWzZdXmQsWT1lWzddXnAsRz1lWzE2XV5kLCQ9ZVsxN11ecCxXPWVbMjZdXmQsWj1lWzI3XV5wLEo9ZVszNl1eZCxYPWVbMzddXnAsUT1lWzQ2XV5kLGVlPWVbNDddXnA7ZD1jXihyPDwxfGk+Pj4zMSkscD11XihpPDwxfHI+Pj4zMSk7dmFyIHRlPWVbOF1eZCxyZT1lWzldXnAsbmU9ZVsxOF1eZCxpZT1lWzE5XV5wLG9lPWVbMjhdXmQsYWU9ZVsyOV1ecCxzZT1lWzM4XV5kLGZlPWVbMzldXnAsY2U9ZVs0OF1eZCx1ZT1lWzQ5XV5wLGhlPWIsbGU9eSxkZT12PDw0fGc+Pj4yOCxwZT1nPDw0fHY+Pj4yOCxiZT1tPDwzfF8+Pj4yOSx5ZT1fPDwzfG0+Pj4yOSxnZT1FPDw5fHc+Pj4yMyx2ZT13PDw5fEU+Pj4yMyxtZT1BPDwxOHxTPj4+MTQsX2U9Uzw8MTh8QT4+PjE0LHdlPWs8PDF8eD4+PjMxLEVlPXg8PDF8az4+PjMxLEFlPU08PDEyfEk+Pj4yMCxTZT1JPDwxMnxNPj4+MjAsa2U9VDw8MTB8UD4+PjIyLHhlPVA8PDEwfFQ+Pj4yMixJZT1MPDwxM3xCPj4+MTksTWU9Qjw8MTN8TD4+PjE5LFRlPVI8PDJ8Tz4+PjMwLFBlPU88PDJ8Uj4+PjMwLEJlPU48PDMwfEM+Pj4yLExlPUM8PDMwfE4+Pj4yLFJlPWo8PDZ8RD4+PjI2LE9lPUQ8PDZ8aj4+PjI2LENlPVU8PDExfHE+Pj4yMSxOZT1xPDwxMXxVPj4+MjEsamU9Rjw8MTV8ej4+PjE3LERlPXo8PDE1fEY+Pj4xNyxxZT1IPDwyOXxLPj4+MyxVZT1LPDwyOXxIPj4+MyxGZT1WPDwyOHxZPj4+NCx6ZT1ZPDwyOHxWPj4+NCxLZT0kPDwyM3xHPj4+OSxIZT1HPDwyM3wkPj4+OSxWZT1XPDwyNXxaPj4+NyxZZT1aPDwyNXxXPj4+NyxHZT1KPDwyMXxYPj4+MTEsJGU9WDw8MjF8Sj4+PjExLFdlPWVlPDwyNHxRPj4+OCxaZT1RPDwyNHxlZT4+PjgsSmU9dGU8PDI3fHJlPj4+NSxYZT1yZTw8Mjd8dGU+Pj41LFFlPW5lPDwyMHxpZT4+PjEyLGV0PWllPDwyMHxuZT4+PjEyLHR0PWFlPDw3fG9lPj4+MjUscnQ9b2U8PDd8YWU+Pj4yNSxudD1zZTw8OHxmZT4+PjI0LGl0PWZlPDw4fHNlPj4+MjQsb3Q9Y2U8PDE0fHVlPj4+MTgsYXQ9dWU8PDE0fGNlPj4+MTg7ZVswXT1oZV5+QWUmQ2UsZVsxXT1sZV5+U2UmTmUsZVsxMF09RmVeflFlJmJlLGVbMTFdPXplXn5ldCZ5ZSxlWzIwXT13ZV5+UmUmVmUsZVsyMV09RWVefk9lJlllLGVbMzBdPUplXn5kZSZrZSxlWzMxXT1YZV5+cGUmeGUsZVs0MF09QmVefktlJnR0LGVbNDFdPUxlXn5IZSZydCxlWzJdPUFlXn5DZSZHZSxlWzNdPVNlXn5OZSYkZSxlWzEyXT1RZV5+YmUmSWUsZVsxM109ZXRefnllJk1lLGVbMjJdPVJlXn5WZSZudCxlWzIzXT1PZV5+WWUmaXQsZVszMl09ZGVefmtlJmplLGVbMzNdPXBlXn54ZSZEZSxlWzQyXT1LZV5+dHQmZ2UsZVs0M109SGVefnJ0JnZlLGVbNF09Q2VefkdlJm90LGVbNV09TmVefiRlJmF0LGVbMTRdPWJlXn5JZSZxZSxlWzE1XT15ZV5+TWUmVWUsZVsyNF09VmVefm50Jm1lLGVbMjVdPVllXn5pdCZfZSxlWzM0XT1rZV5+amUmV2UsZVszNV09eGVefkRlJlplLGVbNDRdPXR0Xn5nZSZUZSxlWzQ1XT1ydF5+dmUmUGUsZVs2XT1HZV5+b3QmaGUsZVs3XT0kZV5+YXQmbGUsZVsxNl09SWVefnFlJkZlLGVbMTddPU1lXn5VZSZ6ZSxlWzI2XT1udF5+bWUmd2UsZVsyN109aXRefl9lJkVlLGVbMzZdPWplXn5XZSZKZSxlWzM3XT1EZV5+WmUmWGUsZVs0Nl09Z2VeflRlJkJlLGVbNDddPXZlXn5QZSZMZSxlWzhdPW90Xn5oZSZBZSxlWzldPWF0Xn5sZSZTZSxlWzE4XT1xZV5+RmUmUWUsZVsxOV09VWVefnplJmV0LGVbMjhdPW1lXn53ZSZSZSxlWzI5XT1fZV5+RWUmT2UsZVszOF09V2VefkplJmRlLGVbMzldPVplXn5YZSZwZSxlWzQ4XT1UZV5+QmUmS2UsZVs0OV09UGVefkxlJkhlLGVbMF1ePW5bMip0XSxlWzFdXj1uWzIqdCsxXX19fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigxMjgpLGk9cigxMjkpLG89cig1OCk7ZnVuY3Rpb24gYShlLHQpe3JldHVybiB2b2lkIDA9PT1lP3Q6KG4uaXNCb29sZWFuKGUsby5DT01QUkVTU0VEX1RZUEVfSU5WQUxJRCksZSl9ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybntwcml2YXRlS2V5VmVyaWZ5OmZ1bmN0aW9uKHQpe3JldHVybiBuLmlzQnVmZmVyKHQsby5FQ19QUklWQVRFX0tFWV9UWVBFX0lOVkFMSUQpLDMyPT09dC5sZW5ndGgmJmUucHJpdmF0ZUtleVZlcmlmeSh0KX0scHJpdmF0ZUtleUV4cG9ydDpmdW5jdGlvbih0LHIpe24uaXNCdWZmZXIodCxvLkVDX1BSSVZBVEVfS0VZX1RZUEVfSU5WQUxJRCksbi5pc0J1ZmZlckxlbmd0aCh0LDMyLG8uRUNfUFJJVkFURV9LRVlfTEVOR1RIX0lOVkFMSUQpLHI9YShyLCEwKTt2YXIgcz1lLnByaXZhdGVLZXlFeHBvcnQodCxyKTtyZXR1cm4gaS5wcml2YXRlS2V5RXhwb3J0KHQscyxyKX0scHJpdmF0ZUtleUltcG9ydDpmdW5jdGlvbih0KXtpZihuLmlzQnVmZmVyKHQsby5FQ19QUklWQVRFX0tFWV9UWVBFX0lOVkFMSUQpLCh0PWkucHJpdmF0ZUtleUltcG9ydCh0KSkmJjMyPT09dC5sZW5ndGgmJmUucHJpdmF0ZUtleVZlcmlmeSh0KSlyZXR1cm4gdDt0aHJvdyBuZXcgRXJyb3Ioby5FQ19QUklWQVRFX0tFWV9JTVBPUlRfREVSX0ZBSUwpfSxwcml2YXRlS2V5TmVnYXRlOmZ1bmN0aW9uKHQpe3JldHVybiBuLmlzQnVmZmVyKHQsby5FQ19QUklWQVRFX0tFWV9UWVBFX0lOVkFMSUQpLG4uaXNCdWZmZXJMZW5ndGgodCwzMixvLkVDX1BSSVZBVEVfS0VZX0xFTkdUSF9JTlZBTElEKSxlLnByaXZhdGVLZXlOZWdhdGUodCl9LHByaXZhdGVLZXlNb2RJbnZlcnNlOmZ1bmN0aW9uKHQpe3JldHVybiBuLmlzQnVmZmVyKHQsby5FQ19QUklWQVRFX0tFWV9UWVBFX0lOVkFMSUQpLG4uaXNCdWZmZXJMZW5ndGgodCwzMixvLkVDX1BSSVZBVEVfS0VZX0xFTkdUSF9JTlZBTElEKSxlLnByaXZhdGVLZXlNb2RJbnZlcnNlKHQpfSxwcml2YXRlS2V5VHdlYWtBZGQ6ZnVuY3Rpb24odCxyKXtyZXR1cm4gbi5pc0J1ZmZlcih0LG8uRUNfUFJJVkFURV9LRVlfVFlQRV9JTlZBTElEKSxuLmlzQnVmZmVyTGVuZ3RoKHQsMzIsby5FQ19QUklWQVRFX0tFWV9MRU5HVEhfSU5WQUxJRCksbi5pc0J1ZmZlcihyLG8uVFdFQUtfVFlQRV9JTlZBTElEKSxuLmlzQnVmZmVyTGVuZ3RoKHIsMzIsby5UV0VBS19MRU5HVEhfSU5WQUxJRCksZS5wcml2YXRlS2V5VHdlYWtBZGQodCxyKX0scHJpdmF0ZUtleVR3ZWFrTXVsOmZ1bmN0aW9uKHQscil7cmV0dXJuIG4uaXNCdWZmZXIodCxvLkVDX1BSSVZBVEVfS0VZX1RZUEVfSU5WQUxJRCksbi5pc0J1ZmZlckxlbmd0aCh0LDMyLG8uRUNfUFJJVkFURV9LRVlfTEVOR1RIX0lOVkFMSUQpLG4uaXNCdWZmZXIocixvLlRXRUFLX1RZUEVfSU5WQUxJRCksbi5pc0J1ZmZlckxlbmd0aChyLDMyLG8uVFdFQUtfTEVOR1RIX0lOVkFMSUQpLGUucHJpdmF0ZUtleVR3ZWFrTXVsKHQscil9LHB1YmxpY0tleUNyZWF0ZTpmdW5jdGlvbih0LHIpe3JldHVybiBuLmlzQnVmZmVyKHQsby5FQ19QUklWQVRFX0tFWV9UWVBFX0lOVkFMSUQpLG4uaXNCdWZmZXJMZW5ndGgodCwzMixvLkVDX1BSSVZBVEVfS0VZX0xFTkdUSF9JTlZBTElEKSxyPWEociwhMCksZS5wdWJsaWNLZXlDcmVhdGUodCxyKX0scHVibGljS2V5Q29udmVydDpmdW5jdGlvbih0LHIpe3JldHVybiBuLmlzQnVmZmVyKHQsby5FQ19QVUJMSUNfS0VZX1RZUEVfSU5WQUxJRCksbi5pc0J1ZmZlckxlbmd0aDIodCwzMyw2NSxvLkVDX1BVQkxJQ19LRVlfTEVOR1RIX0lOVkFMSUQpLHI9YShyLCEwKSxlLnB1YmxpY0tleUNvbnZlcnQodCxyKX0scHVibGljS2V5VmVyaWZ5OmZ1bmN0aW9uKHQpe3JldHVybiBuLmlzQnVmZmVyKHQsby5FQ19QVUJMSUNfS0VZX1RZUEVfSU5WQUxJRCksZS5wdWJsaWNLZXlWZXJpZnkodCl9LHB1YmxpY0tleVR3ZWFrQWRkOmZ1bmN0aW9uKHQscixpKXtyZXR1cm4gbi5pc0J1ZmZlcih0LG8uRUNfUFVCTElDX0tFWV9UWVBFX0lOVkFMSUQpLG4uaXNCdWZmZXJMZW5ndGgyKHQsMzMsNjUsby5FQ19QVUJMSUNfS0VZX0xFTkdUSF9JTlZBTElEKSxuLmlzQnVmZmVyKHIsby5UV0VBS19UWVBFX0lOVkFMSUQpLG4uaXNCdWZmZXJMZW5ndGgociwzMixvLlRXRUFLX0xFTkdUSF9JTlZBTElEKSxpPWEoaSwhMCksZS5wdWJsaWNLZXlUd2Vha0FkZCh0LHIsaSl9LHB1YmxpY0tleVR3ZWFrTXVsOmZ1bmN0aW9uKHQscixpKXtyZXR1cm4gbi5pc0J1ZmZlcih0LG8uRUNfUFVCTElDX0tFWV9UWVBFX0lOVkFMSUQpLG4uaXNCdWZmZXJMZW5ndGgyKHQsMzMsNjUsby5FQ19QVUJMSUNfS0VZX0xFTkdUSF9JTlZBTElEKSxuLmlzQnVmZmVyKHIsby5UV0VBS19UWVBFX0lOVkFMSUQpLG4uaXNCdWZmZXJMZW5ndGgociwzMixvLlRXRUFLX0xFTkdUSF9JTlZBTElEKSxpPWEoaSwhMCksZS5wdWJsaWNLZXlUd2Vha011bCh0LHIsaSl9LHB1YmxpY0tleUNvbWJpbmU6ZnVuY3Rpb24odCxyKXtuLmlzQXJyYXkodCxvLkVDX1BVQkxJQ19LRVlTX1RZUEVfSU5WQUxJRCksbi5pc0xlbmd0aEdUWmVybyh0LG8uRUNfUFVCTElDX0tFWVNfTEVOR1RIX0lOVkFMSUQpO2Zvcih2YXIgaT0wO2k8dC5sZW5ndGg7KytpKW4uaXNCdWZmZXIodFtpXSxvLkVDX1BVQkxJQ19LRVlfVFlQRV9JTlZBTElEKSxuLmlzQnVmZmVyTGVuZ3RoMih0W2ldLDMzLDY1LG8uRUNfUFVCTElDX0tFWV9MRU5HVEhfSU5WQUxJRCk7cmV0dXJuIHI9YShyLCEwKSxlLnB1YmxpY0tleUNvbWJpbmUodCxyKX0sc2lnbmF0dXJlTm9ybWFsaXplOmZ1bmN0aW9uKHQpe3JldHVybiBuLmlzQnVmZmVyKHQsby5FQ0RTQV9TSUdOQVRVUkVfVFlQRV9JTlZBTElEKSxuLmlzQnVmZmVyTGVuZ3RoKHQsNjQsby5FQ0RTQV9TSUdOQVRVUkVfTEVOR1RIX0lOVkFMSUQpLGUuc2lnbmF0dXJlTm9ybWFsaXplKHQpfSxzaWduYXR1cmVFeHBvcnQ6ZnVuY3Rpb24odCl7bi5pc0J1ZmZlcih0LG8uRUNEU0FfU0lHTkFUVVJFX1RZUEVfSU5WQUxJRCksbi5pc0J1ZmZlckxlbmd0aCh0LDY0LG8uRUNEU0FfU0lHTkFUVVJFX0xFTkdUSF9JTlZBTElEKTt2YXIgcj1lLnNpZ25hdHVyZUV4cG9ydCh0KTtyZXR1cm4gaS5zaWduYXR1cmVFeHBvcnQocil9LHNpZ25hdHVyZUltcG9ydDpmdW5jdGlvbih0KXtuLmlzQnVmZmVyKHQsby5FQ0RTQV9TSUdOQVRVUkVfVFlQRV9JTlZBTElEKSxuLmlzTGVuZ3RoR1RaZXJvKHQsby5FQ0RTQV9TSUdOQVRVUkVfTEVOR1RIX0lOVkFMSUQpO3ZhciByPWkuc2lnbmF0dXJlSW1wb3J0KHQpO2lmKHIpcmV0dXJuIGUuc2lnbmF0dXJlSW1wb3J0KHIpO3Rocm93IG5ldyBFcnJvcihvLkVDRFNBX1NJR05BVFVSRV9QQVJTRV9ERVJfRkFJTCl9LHNpZ25hdHVyZUltcG9ydExheDpmdW5jdGlvbih0KXtuLmlzQnVmZmVyKHQsby5FQ0RTQV9TSUdOQVRVUkVfVFlQRV9JTlZBTElEKSxuLmlzTGVuZ3RoR1RaZXJvKHQsby5FQ0RTQV9TSUdOQVRVUkVfTEVOR1RIX0lOVkFMSUQpO3ZhciByPWkuc2lnbmF0dXJlSW1wb3J0TGF4KHQpO2lmKHIpcmV0dXJuIGUuc2lnbmF0dXJlSW1wb3J0KHIpO3Rocm93IG5ldyBFcnJvcihvLkVDRFNBX1NJR05BVFVSRV9QQVJTRV9ERVJfRkFJTCl9LHNpZ246ZnVuY3Rpb24odCxyLGkpe24uaXNCdWZmZXIodCxvLk1TRzMyX1RZUEVfSU5WQUxJRCksbi5pc0J1ZmZlckxlbmd0aCh0LDMyLG8uTVNHMzJfTEVOR1RIX0lOVkFMSUQpLG4uaXNCdWZmZXIocixvLkVDX1BSSVZBVEVfS0VZX1RZUEVfSU5WQUxJRCksbi5pc0J1ZmZlckxlbmd0aChyLDMyLG8uRUNfUFJJVkFURV9LRVlfTEVOR1RIX0lOVkFMSUQpO3ZhciBhPW51bGwscz1udWxsO3JldHVybiB2b2lkIDAhPT1pJiYobi5pc09iamVjdChpLG8uT1BUSU9OU19UWVBFX0lOVkFMSUQpLHZvaWQgMCE9PWkuZGF0YSYmKG4uaXNCdWZmZXIoaS5kYXRhLG8uT1BUSU9OU19EQVRBX1RZUEVfSU5WQUxJRCksbi5pc0J1ZmZlckxlbmd0aChpLmRhdGEsMzIsby5PUFRJT05TX0RBVEFfTEVOR1RIX0lOVkFMSUQpLGE9aS5kYXRhKSx2b2lkIDAhPT1pLm5vbmNlZm4mJihuLmlzRnVuY3Rpb24oaS5ub25jZWZuLG8uT1BUSU9OU19OT05DRUZOX1RZUEVfSU5WQUxJRCkscz1pLm5vbmNlZm4pKSxlLnNpZ24odCxyLHMsYSl9LHZlcmlmeTpmdW5jdGlvbih0LHIsaSl7cmV0dXJuIG4uaXNCdWZmZXIodCxvLk1TRzMyX1RZUEVfSU5WQUxJRCksbi5pc0J1ZmZlckxlbmd0aCh0LDMyLG8uTVNHMzJfTEVOR1RIX0lOVkFMSUQpLG4uaXNCdWZmZXIocixvLkVDRFNBX1NJR05BVFVSRV9UWVBFX0lOVkFMSUQpLG4uaXNCdWZmZXJMZW5ndGgociw2NCxvLkVDRFNBX1NJR05BVFVSRV9MRU5HVEhfSU5WQUxJRCksbi5pc0J1ZmZlcihpLG8uRUNfUFVCTElDX0tFWV9UWVBFX0lOVkFMSUQpLG4uaXNCdWZmZXJMZW5ndGgyKGksMzMsNjUsby5FQ19QVUJMSUNfS0VZX0xFTkdUSF9JTlZBTElEKSxlLnZlcmlmeSh0LHIsaSl9LHJlY292ZXI6ZnVuY3Rpb24odCxyLGkscyl7cmV0dXJuIG4uaXNCdWZmZXIodCxvLk1TRzMyX1RZUEVfSU5WQUxJRCksbi5pc0J1ZmZlckxlbmd0aCh0LDMyLG8uTVNHMzJfTEVOR1RIX0lOVkFMSUQpLG4uaXNCdWZmZXIocixvLkVDRFNBX1NJR05BVFVSRV9UWVBFX0lOVkFMSUQpLG4uaXNCdWZmZXJMZW5ndGgociw2NCxvLkVDRFNBX1NJR05BVFVSRV9MRU5HVEhfSU5WQUxJRCksbi5pc051bWJlcihpLG8uUkVDT1ZFUllfSURfVFlQRV9JTlZBTElEKSxuLmlzTnVtYmVySW5JbnRlcnZhbChpLC0xLDQsby5SRUNPVkVSWV9JRF9WQUxVRV9JTlZBTElEKSxzPWEocywhMCksZS5yZWNvdmVyKHQscixpLHMpfSxlY2RoOmZ1bmN0aW9uKHQscil7cmV0dXJuIG4uaXNCdWZmZXIodCxvLkVDX1BVQkxJQ19LRVlfVFlQRV9JTlZBTElEKSxuLmlzQnVmZmVyTGVuZ3RoMih0LDMzLDY1LG8uRUNfUFVCTElDX0tFWV9MRU5HVEhfSU5WQUxJRCksbi5pc0J1ZmZlcihyLG8uRUNfUFJJVkFURV9LRVlfVFlQRV9JTlZBTElEKSxuLmlzQnVmZmVyTGVuZ3RoKHIsMzIsby5FQ19QUklWQVRFX0tFWV9MRU5HVEhfSU5WQUxJRCksZS5lY2RoKHQscil9LGVjZGhVbnNhZmU6ZnVuY3Rpb24odCxyLGkpe3JldHVybiBuLmlzQnVmZmVyKHQsby5FQ19QVUJMSUNfS0VZX1RZUEVfSU5WQUxJRCksbi5pc0J1ZmZlckxlbmd0aDIodCwzMyw2NSxvLkVDX1BVQkxJQ19LRVlfTEVOR1RIX0lOVkFMSUQpLG4uaXNCdWZmZXIocixvLkVDX1BSSVZBVEVfS0VZX1RZUEVfSU5WQUxJRCksbi5pc0J1ZmZlckxlbmd0aChyLDMyLG8uRUNfUFJJVkFURV9LRVlfTEVOR1RIX0lOVkFMSUQpLGk9YShpLCEwKSxlLmVjZGhVbnNhZmUodCxyLGkpfX19fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7KGZ1bmN0aW9uKGUpe3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dC5pc0FycmF5PWZ1bmN0aW9uKGUsdCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpdGhyb3cgVHlwZUVycm9yKHQpfSx0LmlzQm9vbGVhbj1mdW5jdGlvbihlLHQpe2lmKFwiW29iamVjdCBCb29sZWFuXVwiIT09ci5jYWxsKGUpKXRocm93IFR5cGVFcnJvcih0KX0sdC5pc0J1ZmZlcj1mdW5jdGlvbih0LHIpe2lmKCFlLmlzQnVmZmVyKHQpKXRocm93IFR5cGVFcnJvcihyKX0sdC5pc0Z1bmN0aW9uPWZ1bmN0aW9uKGUsdCl7aWYoXCJbb2JqZWN0IEZ1bmN0aW9uXVwiIT09ci5jYWxsKGUpKXRocm93IFR5cGVFcnJvcih0KX0sdC5pc051bWJlcj1mdW5jdGlvbihlLHQpe2lmKFwiW29iamVjdCBOdW1iZXJdXCIhPT1yLmNhbGwoZSkpdGhyb3cgVHlwZUVycm9yKHQpfSx0LmlzT2JqZWN0PWZ1bmN0aW9uKGUsdCl7aWYoXCJbb2JqZWN0IE9iamVjdF1cIiE9PXIuY2FsbChlKSl0aHJvdyBUeXBlRXJyb3IodCl9LHQuaXNCdWZmZXJMZW5ndGg9ZnVuY3Rpb24oZSx0LHIpe2lmKGUubGVuZ3RoIT09dCl0aHJvdyBSYW5nZUVycm9yKHIpfSx0LmlzQnVmZmVyTGVuZ3RoMj1mdW5jdGlvbihlLHQscixuKXtpZihlLmxlbmd0aCE9PXQmJmUubGVuZ3RoIT09cil0aHJvdyBSYW5nZUVycm9yKG4pfSx0LmlzTGVuZ3RoR1RaZXJvPWZ1bmN0aW9uKGUsdCl7aWYoMD09PWUubGVuZ3RoKXRocm93IFJhbmdlRXJyb3IodCl9LHQuaXNOdW1iZXJJbkludGVydmFsPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKGU8PXR8fGU+PXIpdGhyb3cgUmFuZ2VFcnJvcihuKX19KS5jYWxsKHRoaXMscig3KS5CdWZmZXIpfSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigxKS5CdWZmZXIsaT1yKDEzMCksbz1uLmZyb20oWzQ4LDEyOSwyMTEsMiwxLDEsNCwzMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTYwLDEyOSwxMzMsNDgsMTI5LDEzMCwyLDEsMSw0OCw0NCw2LDcsNDIsMTM0LDcyLDIwNiw2MSwxLDEsMiwzMywwLDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NCwyNTUsMjU1LDI1Miw0Nyw0OCw2LDQsMSwwLDQsMSw3LDQsMzMsMiwxMjEsMTkwLDEwMiwxMjYsMjQ5LDIyMCwxODcsMTcyLDg1LDE2MCw5OCwxNDksMjA2LDEzNSwxMSw3LDIsMTU1LDI1MiwyMTksNDUsMjA2LDQwLDIxNyw4OSwyNDIsMTI5LDkxLDIyLDI0OCwyMywxNTIsMiwzMywwLDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NCwxODYsMTc0LDIyMCwyMzAsMTc1LDcyLDE2MCw1OSwxOTEsMjEwLDk0LDE0MCwyMDgsNTQsNjUsNjUsMiwxLDEsMTYxLDM2LDMsMzQsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF0pLGE9bi5mcm9tKFs0OCwxMzAsMSwxOSwyLDEsMSw0LDMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNjAsMTI5LDE2NSw0OCwxMjksMTYyLDIsMSwxLDQ4LDQ0LDYsNyw0MiwxMzQsNzIsMjA2LDYxLDEsMSwyLDMzLDAsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU0LDI1NSwyNTUsMjUyLDQ3LDQ4LDYsNCwxLDAsNCwxLDcsNCw2NSw0LDEyMSwxOTAsMTAyLDEyNiwyNDksMjIwLDE4NywxNzIsODUsMTYwLDk4LDE0OSwyMDYsMTM1LDExLDcsMiwxNTUsMjUyLDIxOSw0NSwyMDYsNDAsMjE3LDg5LDI0MiwxMjksOTEsMjIsMjQ4LDIzLDE1Miw3Miw1OCwyMTgsMTE5LDM4LDE2MywxOTYsMTAxLDkzLDE2NCwyNTEsMjUyLDE0LDE3LDgsMTY4LDI1MywyMywxODAsNzIsMTY2LDEzMyw4NCwyNSwxNTYsNzEsMjA4LDE0MywyNTEsMTYsMjEyLDE4NCwyLDMzLDAsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU0LDE4NiwxNzQsMjIwLDIzMCwxNzUsNzIsMTYwLDU5LDE5MSwyMTAsOTQsMTQwLDIwOCw1NCw2NSw2NSwyLDEsMSwxNjEsNjgsMyw2NiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF0pO3QucHJpdmF0ZUtleUV4cG9ydD1mdW5jdGlvbihlLHQscil7dmFyIGk9bi5mcm9tKHI/bzphKTtyZXR1cm4gZS5jb3B5KGkscj84OjkpLHQuY29weShpLHI/MTgxOjIxNCksaX0sdC5wcml2YXRlS2V5SW1wb3J0PWZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoLHI9MDtpZighKHQ8cisxfHw0OCE9PWVbcl0pJiYhKHQ8KHIrPTEpKzEpJiYxMjgmZVtyXSl7dmFyIG49MTI3JmVbcl07aWYocis9MSwhKG48MXx8bj4yfHx0PHIrbikpe3ZhciBpPWVbcituLTFdfChuPjE/ZVtyK24tMl08PDg6MCk7aWYoISh0PChyKz1uKStpfHx0PHIrM3x8MiE9PWVbcl18fDEhPT1lW3IrMV18fDEhPT1lW3IrMl18fHQ8KHIrPTMpKzJ8fDQhPT1lW3JdfHxlW3IrMV0+MzJ8fHQ8cisyK2VbcisxXSkpcmV0dXJuIGUuc2xpY2UocisyLHIrMitlW3IrMV0pfX19LHQuc2lnbmF0dXJlRXhwb3J0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1uLmNvbmNhdChbbi5mcm9tKFswXSksZS5yXSkscj0zMyxvPTA7cj4xJiYwPT09dFtvXSYmISgxMjgmdFtvKzFdKTstLXIsKytvKTtmb3IodmFyIGE9bi5jb25jYXQoW24uZnJvbShbMF0pLGUuc10pLHM9MzMsZj0wO3M+MSYmMD09PWFbZl0mJiEoMTI4JmFbZisxXSk7LS1zLCsrZik7cmV0dXJuIGkuZW5jb2RlKHQuc2xpY2UobyksYS5zbGljZShmKSl9LHQuc2lnbmF0dXJlSW1wb3J0PWZ1bmN0aW9uKGUpe3ZhciB0PW4uYWxsb2MoMzIsMCkscj1uLmFsbG9jKDMyLDApO3RyeXt2YXIgbz1pLmRlY29kZShlKTtpZigzMz09PW8uci5sZW5ndGgmJjA9PT1vLnJbMF0mJihvLnI9by5yLnNsaWNlKDEpKSxvLnIubGVuZ3RoPjMyKXRocm93IG5ldyBFcnJvcihcIlIgbGVuZ3RoIGlzIHRvbyBsb25nXCIpO2lmKDMzPT09by5zLmxlbmd0aCYmMD09PW8uc1swXSYmKG8ucz1vLnMuc2xpY2UoMSkpLG8ucy5sZW5ndGg+MzIpdGhyb3cgbmV3IEVycm9yKFwiUyBsZW5ndGggaXMgdG9vIGxvbmdcIil9Y2F0Y2goZSl7cmV0dXJufXJldHVybiBvLnIuY29weSh0LDMyLW8uci5sZW5ndGgpLG8ucy5jb3B5KHIsMzItby5zLmxlbmd0aCkse3I6dCxzOnJ9fSx0LnNpZ25hdHVyZUltcG9ydExheD1mdW5jdGlvbihlKXt2YXIgdD1uLmFsbG9jKDMyLDApLHI9bi5hbGxvYygzMiwwKSxpPWUubGVuZ3RoLG89MDtpZig0OD09PWVbbysrXSl7dmFyIGE9ZVtvKytdO2lmKCEoMTI4JmEmJihvKz1hLTEyOCk+aSkmJjI9PT1lW28rK10pe3ZhciBzPWVbbysrXTtpZigxMjgmcyl7aWYobysoYT1zLTEyOCk+aSlyZXR1cm47Zm9yKDthPjAmJjA9PT1lW29dO28rPTEsYS09MSk7Zm9yKHM9MDthPjA7bys9MSxhLT0xKXM9KHM8PDgpK2Vbb119aWYoIShzPmktbykpe3ZhciBmPW87aWYobys9cywyPT09ZVtvKytdKXt2YXIgYz1lW28rK107aWYoMTI4JmMpe2lmKG8rKGE9Yy0xMjgpPmkpcmV0dXJuO2Zvcig7YT4wJiYwPT09ZVtvXTtvKz0xLGEtPTEpO2ZvcihjPTA7YT4wO28rPTEsYS09MSljPShjPDw4KStlW29dfWlmKCEoYz5pLW8pKXt2YXIgdT1vO2ZvcihvKz1jO3M+MCYmMD09PWVbZl07cy09MSxmKz0xKTtpZighKHM+MzIpKXt2YXIgaD1lLnNsaWNlKGYsZitzKTtmb3IoaC5jb3B5KHQsMzItaC5sZW5ndGgpO2M+MCYmMD09PWVbdV07Yy09MSx1Kz0xKTtpZighKGM+MzIpKXt2YXIgbD1lLnNsaWNlKHUsdStjKTtyZXR1cm4gbC5jb3B5KHIsMzItbC5sZW5ndGgpLHtyOnQsczpyfX19fX19fX19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxKS5CdWZmZXI7ZS5leHBvcnRzPXtjaGVjazpmdW5jdGlvbihlKXtpZihlLmxlbmd0aDw4KXJldHVybiExO2lmKGUubGVuZ3RoPjcyKXJldHVybiExO2lmKDQ4IT09ZVswXSlyZXR1cm4hMTtpZihlWzFdIT09ZS5sZW5ndGgtMilyZXR1cm4hMTtpZigyIT09ZVsyXSlyZXR1cm4hMTt2YXIgdD1lWzNdO2lmKDA9PT10KXJldHVybiExO2lmKDUrdD49ZS5sZW5ndGgpcmV0dXJuITE7aWYoMiE9PWVbNCt0XSlyZXR1cm4hMTt2YXIgcj1lWzUrdF07cmV0dXJuIDAhPT1yJiYoNit0K3I9PT1lLmxlbmd0aCYmKCEoMTI4JmVbNF0pJiYoISh0PjEmJjA9PT1lWzRdJiYhKDEyOCZlWzVdKSkmJighKDEyOCZlW3QrNl0pJiYhKHI+MSYmMD09PWVbdCs2XSYmISgxMjgmZVt0KzddKSkpKSkpfSxkZWNvZGU6ZnVuY3Rpb24oZSl7aWYoZS5sZW5ndGg8OCl0aHJvdyBuZXcgRXJyb3IoXCJERVIgc2VxdWVuY2UgbGVuZ3RoIGlzIHRvbyBzaG9ydFwiKTtpZihlLmxlbmd0aD43Mil0aHJvdyBuZXcgRXJyb3IoXCJERVIgc2VxdWVuY2UgbGVuZ3RoIGlzIHRvbyBsb25nXCIpO2lmKDQ4IT09ZVswXSl0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBERVIgc2VxdWVuY2VcIik7aWYoZVsxXSE9PWUubGVuZ3RoLTIpdGhyb3cgbmV3IEVycm9yKFwiREVSIHNlcXVlbmNlIGxlbmd0aCBpcyBpbnZhbGlkXCIpO2lmKDIhPT1lWzJdKXRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIERFUiBpbnRlZ2VyXCIpO3ZhciB0PWVbM107aWYoMD09PXQpdGhyb3cgbmV3IEVycm9yKFwiUiBsZW5ndGggaXMgemVyb1wiKTtpZig1K3Q+PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcIlIgbGVuZ3RoIGlzIHRvbyBsb25nXCIpO2lmKDIhPT1lWzQrdF0pdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgREVSIGludGVnZXIgKDIpXCIpO3ZhciByPWVbNSt0XTtpZigwPT09cil0aHJvdyBuZXcgRXJyb3IoXCJTIGxlbmd0aCBpcyB6ZXJvXCIpO2lmKDYrdCtyIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwiUyBsZW5ndGggaXMgaW52YWxpZFwiKTtpZigxMjgmZVs0XSl0aHJvdyBuZXcgRXJyb3IoXCJSIHZhbHVlIGlzIG5lZ2F0aXZlXCIpO2lmKHQ+MSYmMD09PWVbNF0mJiEoMTI4JmVbNV0pKXRocm93IG5ldyBFcnJvcihcIlIgdmFsdWUgZXhjZXNzaXZlbHkgcGFkZGVkXCIpO2lmKDEyOCZlW3QrNl0pdGhyb3cgbmV3IEVycm9yKFwiUyB2YWx1ZSBpcyBuZWdhdGl2ZVwiKTtpZihyPjEmJjA9PT1lW3QrNl0mJiEoMTI4JmVbdCs3XSkpdGhyb3cgbmV3IEVycm9yKFwiUyB2YWx1ZSBleGNlc3NpdmVseSBwYWRkZWRcIik7cmV0dXJue3I6ZS5zbGljZSg0LDQrdCksczplLnNsaWNlKDYrdCl9fSxlbmNvZGU6ZnVuY3Rpb24oZSx0KXt2YXIgcj1lLmxlbmd0aCxpPXQubGVuZ3RoO2lmKDA9PT1yKXRocm93IG5ldyBFcnJvcihcIlIgbGVuZ3RoIGlzIHplcm9cIik7aWYoMD09PWkpdGhyb3cgbmV3IEVycm9yKFwiUyBsZW5ndGggaXMgemVyb1wiKTtpZihyPjMzKXRocm93IG5ldyBFcnJvcihcIlIgbGVuZ3RoIGlzIHRvbyBsb25nXCIpO2lmKGk+MzMpdGhyb3cgbmV3IEVycm9yKFwiUyBsZW5ndGggaXMgdG9vIGxvbmdcIik7aWYoMTI4JmVbMF0pdGhyb3cgbmV3IEVycm9yKFwiUiB2YWx1ZSBpcyBuZWdhdGl2ZVwiKTtpZigxMjgmdFswXSl0aHJvdyBuZXcgRXJyb3IoXCJTIHZhbHVlIGlzIG5lZ2F0aXZlXCIpO2lmKHI+MSYmMD09PWVbMF0mJiEoMTI4JmVbMV0pKXRocm93IG5ldyBFcnJvcihcIlIgdmFsdWUgZXhjZXNzaXZlbHkgcGFkZGVkXCIpO2lmKGk+MSYmMD09PXRbMF0mJiEoMTI4JnRbMV0pKXRocm93IG5ldyBFcnJvcihcIlMgdmFsdWUgZXhjZXNzaXZlbHkgcGFkZGVkXCIpO3ZhciBvPW4uYWxsb2NVbnNhZmUoNityK2kpO3JldHVybiBvWzBdPTQ4LG9bMV09by5sZW5ndGgtMixvWzJdPTIsb1szXT1lLmxlbmd0aCxlLmNvcHkobyw0KSxvWzQrcl09MixvWzUrcl09dC5sZW5ndGgsdC5jb3B5KG8sNityKSxvfX19LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDEpLkJ1ZmZlcixpPXIoMzYpLG89cigzKSxhPXIoMTQxKS5lYyxzPXIoNTgpLGY9bmV3IGEoXCJzZWNwMjU2azFcIiksYz1mLmN1cnZlO2Z1bmN0aW9uIHUoZSl7dmFyIHQ9ZVswXTtzd2l0Y2godCl7Y2FzZSAyOmNhc2UgMzpyZXR1cm4gMzMhPT1lLmxlbmd0aD9udWxsOmZ1bmN0aW9uKGUsdCl7dmFyIHI9bmV3IG8odCk7aWYoci5jbXAoYy5wKT49MClyZXR1cm4gbnVsbDt2YXIgbj0ocj1yLnRvUmVkKGMucmVkKSkucmVkU3FyKCkucmVkSU11bChyKS5yZWRJQWRkKGMuYikucmVkU3FydCgpO3JldHVybiAzPT09ZSE9PW4uaXNPZGQoKSYmKG49bi5yZWROZWcoKSksZi5rZXlQYWlyKHtwdWI6e3g6cix5Om59fSl9KHQsZS5zbGljZSgxLDMzKSk7Y2FzZSA0OmNhc2UgNjpjYXNlIDc6cmV0dXJuIDY1IT09ZS5sZW5ndGg/bnVsbDpmdW5jdGlvbihlLHQscil7dmFyIG49bmV3IG8odCksaT1uZXcgbyhyKTtpZihuLmNtcChjLnApPj0wfHxpLmNtcChjLnApPj0wKXJldHVybiBudWxsO2lmKG49bi50b1JlZChjLnJlZCksaT1pLnRvUmVkKGMucmVkKSwoNj09PWV8fDc9PT1lKSYmaS5pc09kZCgpIT09KDc9PT1lKSlyZXR1cm4gbnVsbDt2YXIgYT1uLnJlZFNxcigpLnJlZElNdWwobik7cmV0dXJuIGkucmVkU3FyKCkucmVkSVN1YihhLnJlZElBZGQoYy5iKSkuaXNaZXJvKCk/Zi5rZXlQYWlyKHtwdWI6e3g6bix5Oml9fSk6bnVsbH0odCxlLnNsaWNlKDEsMzMpLGUuc2xpY2UoMzMsNjUpKTtkZWZhdWx0OnJldHVybiBudWxsfX10LnByaXZhdGVLZXlWZXJpZnk9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IG8oZSk7cmV0dXJuIHQuY21wKGMubik8MCYmIXQuaXNaZXJvKCl9LHQucHJpdmF0ZUtleUV4cG9ydD1mdW5jdGlvbihlLHQpe3ZhciByPW5ldyBvKGUpO2lmKHIuY21wKGMubik+PTB8fHIuaXNaZXJvKCkpdGhyb3cgbmV3IEVycm9yKHMuRUNfUFJJVkFURV9LRVlfRVhQT1JUX0RFUl9GQUlMKTtyZXR1cm4gbi5mcm9tKGYua2V5RnJvbVByaXZhdGUoZSkuZ2V0UHVibGljKHQsITApKX0sdC5wcml2YXRlS2V5TmVnYXRlPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBvKGUpO3JldHVybiB0LmlzWmVybygpP24uYWxsb2MoMzIpOmMubi5zdWIodCkudW1vZChjLm4pLnRvQXJyYXlMaWtlKG4sXCJiZVwiLDMyKX0sdC5wcml2YXRlS2V5TW9kSW52ZXJzZT1mdW5jdGlvbihlKXt2YXIgdD1uZXcgbyhlKTtpZih0LmNtcChjLm4pPj0wfHx0LmlzWmVybygpKXRocm93IG5ldyBFcnJvcihzLkVDX1BSSVZBVEVfS0VZX1JBTkdFX0lOVkFMSUQpO3JldHVybiB0Lmludm0oYy5uKS50b0FycmF5TGlrZShuLFwiYmVcIiwzMil9LHQucHJpdmF0ZUtleVR3ZWFrQWRkPWZ1bmN0aW9uKGUsdCl7dmFyIHI9bmV3IG8odCk7aWYoci5jbXAoYy5uKT49MCl0aHJvdyBuZXcgRXJyb3Iocy5FQ19QUklWQVRFX0tFWV9UV0VBS19BRERfRkFJTCk7aWYoci5pYWRkKG5ldyBvKGUpKSxyLmNtcChjLm4pPj0wJiZyLmlzdWIoYy5uKSxyLmlzWmVybygpKXRocm93IG5ldyBFcnJvcihzLkVDX1BSSVZBVEVfS0VZX1RXRUFLX0FERF9GQUlMKTtyZXR1cm4gci50b0FycmF5TGlrZShuLFwiYmVcIiwzMil9LHQucHJpdmF0ZUtleVR3ZWFrTXVsPWZ1bmN0aW9uKGUsdCl7dmFyIHI9bmV3IG8odCk7aWYoci5jbXAoYy5uKT49MHx8ci5pc1plcm8oKSl0aHJvdyBuZXcgRXJyb3Iocy5FQ19QUklWQVRFX0tFWV9UV0VBS19NVUxfRkFJTCk7cmV0dXJuIHIuaW11bChuZXcgbyhlKSksci5jbXAoYy5uKSYmKHI9ci51bW9kKGMubikpLHIudG9BcnJheUxpa2UobixcImJlXCIsMzIpfSx0LnB1YmxpY0tleUNyZWF0ZT1mdW5jdGlvbihlLHQpe3ZhciByPW5ldyBvKGUpO2lmKHIuY21wKGMubik+PTB8fHIuaXNaZXJvKCkpdGhyb3cgbmV3IEVycm9yKHMuRUNfUFVCTElDX0tFWV9DUkVBVEVfRkFJTCk7cmV0dXJuIG4uZnJvbShmLmtleUZyb21Qcml2YXRlKGUpLmdldFB1YmxpYyh0LCEwKSl9LHQucHVibGljS2V5Q29udmVydD1mdW5jdGlvbihlLHQpe3ZhciByPXUoZSk7aWYobnVsbD09PXIpdGhyb3cgbmV3IEVycm9yKHMuRUNfUFVCTElDX0tFWV9QQVJTRV9GQUlMKTtyZXR1cm4gbi5mcm9tKHIuZ2V0UHVibGljKHQsITApKX0sdC5wdWJsaWNLZXlWZXJpZnk9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPT11KGUpfSx0LnB1YmxpY0tleVR3ZWFrQWRkPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT11KGUpO2lmKG51bGw9PT1pKXRocm93IG5ldyBFcnJvcihzLkVDX1BVQkxJQ19LRVlfUEFSU0VfRkFJTCk7aWYoKHQ9bmV3IG8odCkpLmNtcChjLm4pPj0wKXRocm93IG5ldyBFcnJvcihzLkVDX1BVQkxJQ19LRVlfVFdFQUtfQUREX0ZBSUwpO3ZhciBhPWMuZy5tdWwodCkuYWRkKGkucHViKTtpZihhLmlzSW5maW5pdHkoKSl0aHJvdyBuZXcgRXJyb3Iocy5FQ19QVUJMSUNfS0VZX1RXRUFLX0FERF9GQUlMKTtyZXR1cm4gbi5mcm9tKGEuZW5jb2RlKCEwLHIpKX0sdC5wdWJsaWNLZXlUd2Vha011bD1mdW5jdGlvbihlLHQscil7dmFyIGk9dShlKTtpZihudWxsPT09aSl0aHJvdyBuZXcgRXJyb3Iocy5FQ19QVUJMSUNfS0VZX1BBUlNFX0ZBSUwpO2lmKCh0PW5ldyBvKHQpKS5jbXAoYy5uKT49MHx8dC5pc1plcm8oKSl0aHJvdyBuZXcgRXJyb3Iocy5FQ19QVUJMSUNfS0VZX1RXRUFLX01VTF9GQUlMKTtyZXR1cm4gbi5mcm9tKGkucHViLm11bCh0KS5lbmNvZGUoITAscikpfSx0LnB1YmxpY0tleUNvbWJpbmU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9bmV3IEFycmF5KGUubGVuZ3RoKSxpPTA7aTxlLmxlbmd0aDsrK2kpaWYocltpXT11KGVbaV0pLG51bGw9PT1yW2ldKXRocm93IG5ldyBFcnJvcihzLkVDX1BVQkxJQ19LRVlfUEFSU0VfRkFJTCk7Zm9yKHZhciBvPXJbMF0ucHViLGE9MTthPHIubGVuZ3RoOysrYSlvPW8uYWRkKHJbYV0ucHViKTtpZihvLmlzSW5maW5pdHkoKSl0aHJvdyBuZXcgRXJyb3Iocy5FQ19QVUJMSUNfS0VZX0NPTUJJTkVfRkFJTCk7cmV0dXJuIG4uZnJvbShvLmVuY29kZSghMCx0KSl9LHQuc2lnbmF0dXJlTm9ybWFsaXplPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBvKGUuc2xpY2UoMCwzMikpLHI9bmV3IG8oZS5zbGljZSgzMiw2NCkpO2lmKHQuY21wKGMubik+PTB8fHIuY21wKGMubik+PTApdGhyb3cgbmV3IEVycm9yKHMuRUNEU0FfU0lHTkFUVVJFX1BBUlNFX0ZBSUwpO3ZhciBpPW4uZnJvbShlKTtyZXR1cm4gMT09PXIuY21wKGYubmgpJiZjLm4uc3ViKHIpLnRvQXJyYXlMaWtlKG4sXCJiZVwiLDMyKS5jb3B5KGksMzIpLGl9LHQuc2lnbmF0dXJlRXhwb3J0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuc2xpY2UoMCwzMikscj1lLnNsaWNlKDMyLDY0KTtpZihuZXcgbyh0KS5jbXAoYy5uKT49MHx8bmV3IG8ocikuY21wKGMubik+PTApdGhyb3cgbmV3IEVycm9yKHMuRUNEU0FfU0lHTkFUVVJFX1BBUlNFX0ZBSUwpO3JldHVybntyOnQsczpyfX0sdC5zaWduYXR1cmVJbXBvcnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IG8oZS5yKTt0LmNtcChjLm4pPj0wJiYodD1uZXcgbygwKSk7dmFyIHI9bmV3IG8oZS5zKTtyZXR1cm4gci5jbXAoYy5uKT49MCYmKHI9bmV3IG8oMCkpLG4uY29uY2F0KFt0LnRvQXJyYXlMaWtlKG4sXCJiZVwiLDMyKSxyLnRvQXJyYXlMaWtlKG4sXCJiZVwiLDMyKV0pfSx0LnNpZ249ZnVuY3Rpb24oZSx0LHIsaSl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygcil7dmFyIGE9cjtyPWZ1bmN0aW9uKHIpe3ZhciBmPWEoZSx0LG51bGwsaSxyKTtpZighbi5pc0J1ZmZlcihmKXx8MzIhPT1mLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3Iocy5FQ0RTQV9TSUdOX0ZBSUwpO3JldHVybiBuZXcgbyhmKX19dmFyIHU9bmV3IG8odCk7aWYodS5jbXAoYy5uKT49MHx8dS5pc1plcm8oKSl0aHJvdyBuZXcgRXJyb3Iocy5FQ0RTQV9TSUdOX0ZBSUwpO3ZhciBoPWYuc2lnbihlLHQse2Nhbm9uaWNhbDohMCxrOnIscGVyczppfSk7cmV0dXJue3NpZ25hdHVyZTpuLmNvbmNhdChbaC5yLnRvQXJyYXlMaWtlKG4sXCJiZVwiLDMyKSxoLnMudG9BcnJheUxpa2UobixcImJlXCIsMzIpXSkscmVjb3Zlcnk6aC5yZWNvdmVyeVBhcmFtfX0sdC52ZXJpZnk9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXtyOnQuc2xpY2UoMCwzMiksczp0LnNsaWNlKDMyLDY0KX0saT1uZXcgbyhuLnIpLGE9bmV3IG8obi5zKTtpZihpLmNtcChjLm4pPj0wfHxhLmNtcChjLm4pPj0wKXRocm93IG5ldyBFcnJvcihzLkVDRFNBX1NJR05BVFVSRV9QQVJTRV9GQUlMKTtpZigxPT09YS5jbXAoZi5uaCl8fGkuaXNaZXJvKCl8fGEuaXNaZXJvKCkpcmV0dXJuITE7dmFyIGg9dShyKTtpZihudWxsPT09aCl0aHJvdyBuZXcgRXJyb3Iocy5FQ19QVUJMSUNfS0VZX1BBUlNFX0ZBSUwpO3JldHVybiBmLnZlcmlmeShlLG4se3g6aC5wdWIueCx5OmgucHViLnl9KX0sdC5yZWNvdmVyPWZ1bmN0aW9uKGUsdCxyLGkpe3ZhciBhPXtyOnQuc2xpY2UoMCwzMiksczp0LnNsaWNlKDMyLDY0KX0sdT1uZXcgbyhhLnIpLGg9bmV3IG8oYS5zKTtpZih1LmNtcChjLm4pPj0wfHxoLmNtcChjLm4pPj0wKXRocm93IG5ldyBFcnJvcihzLkVDRFNBX1NJR05BVFVSRV9QQVJTRV9GQUlMKTt0cnl7aWYodS5pc1plcm8oKXx8aC5pc1plcm8oKSl0aHJvdyBuZXcgRXJyb3I7dmFyIGw9Zi5yZWNvdmVyUHViS2V5KGUsYSxyKTtyZXR1cm4gbi5mcm9tKGwuZW5jb2RlKCEwLGkpKX1jYXRjaChlKXt0aHJvdyBuZXcgRXJyb3Iocy5FQ0RTQV9SRUNPVkVSX0ZBSUwpfX0sdC5lY2RoPWZ1bmN0aW9uKGUscil7dmFyIG49dC5lY2RoVW5zYWZlKGUsciwhMCk7cmV0dXJuIGkoXCJzaGEyNTZcIikudXBkYXRlKG4pLmRpZ2VzdCgpfSx0LmVjZGhVbnNhZmU9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXUoZSk7aWYobnVsbD09PWkpdGhyb3cgbmV3IEVycm9yKHMuRUNfUFVCTElDX0tFWV9QQVJTRV9GQUlMKTt2YXIgYT1uZXcgbyh0KTtpZihhLmNtcChjLm4pPj0wfHxhLmlzWmVybygpKXRocm93IG5ldyBFcnJvcihzLkVDREhfRkFJTCk7cmV0dXJuIG4uZnJvbShpLnB1Yi5tdWwoYSkuZW5jb2RlKCEwLHIpKX19LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDApLGk9cig1OSksbz1yKDEpLkJ1ZmZlcixhPW5ldyBBcnJheSgxNik7ZnVuY3Rpb24gcygpe2kuY2FsbCh0aGlzLDY0KSx0aGlzLl9hPTE3MzI1ODQxOTMsdGhpcy5fYj00MDIzMjMzNDE3LHRoaXMuX2M9MjU2MjM4MzEwMix0aGlzLl9kPTI3MTczMzg3OH1mdW5jdGlvbiBmKGUsdCl7cmV0dXJuIGU8PHR8ZT4+PjMyLXR9ZnVuY3Rpb24gYyhlLHQscixuLGksbyxhKXtyZXR1cm4gZihlKyh0JnJ8fnQmbikraStvfDAsYSkrdHwwfWZ1bmN0aW9uIHUoZSx0LHIsbixpLG8sYSl7cmV0dXJuIGYoZSsodCZufHImfm4pK2krb3wwLGEpK3R8MH1mdW5jdGlvbiBoKGUsdCxyLG4saSxvLGEpe3JldHVybiBmKGUrKHRecl5uKStpK298MCxhKSt0fDB9ZnVuY3Rpb24gbChlLHQscixuLGksbyxhKXtyZXR1cm4gZihlKyhyXih0fH5uKSkraStvfDAsYSkrdHwwfW4ocyxpKSxzLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWEsdD0wO3Q8MTY7Kyt0KWVbdF09dGhpcy5fYmxvY2sucmVhZEludDMyTEUoNCp0KTt2YXIgcj10aGlzLl9hLG49dGhpcy5fYixpPXRoaXMuX2Msbz10aGlzLl9kO3I9YyhyLG4saSxvLGVbMF0sMzYxNDA5MDM2MCw3KSxvPWMobyxyLG4saSxlWzFdLDM5MDU0MDI3MTAsMTIpLGk9YyhpLG8scixuLGVbMl0sNjA2MTA1ODE5LDE3KSxuPWMobixpLG8scixlWzNdLDMyNTA0NDE5NjYsMjIpLHI9YyhyLG4saSxvLGVbNF0sNDExODU0ODM5OSw3KSxvPWMobyxyLG4saSxlWzVdLDEyMDAwODA0MjYsMTIpLGk9YyhpLG8scixuLGVbNl0sMjgyMTczNTk1NSwxNyksbj1jKG4saSxvLHIsZVs3XSw0MjQ5MjYxMzEzLDIyKSxyPWMocixuLGksbyxlWzhdLDE3NzAwMzU0MTYsNyksbz1jKG8scixuLGksZVs5XSwyMzM2NTUyODc5LDEyKSxpPWMoaSxvLHIsbixlWzEwXSw0Mjk0OTI1MjMzLDE3KSxuPWMobixpLG8scixlWzExXSwyMzA0NTYzMTM0LDIyKSxyPWMocixuLGksbyxlWzEyXSwxODA0NjAzNjgyLDcpLG89YyhvLHIsbixpLGVbMTNdLDQyNTQ2MjYxOTUsMTIpLGk9YyhpLG8scixuLGVbMTRdLDI3OTI5NjUwMDYsMTcpLHI9dShyLG49YyhuLGksbyxyLGVbMTVdLDEyMzY1MzUzMjksMjIpLGksbyxlWzFdLDQxMjkxNzA3ODYsNSksbz11KG8scixuLGksZVs2XSwzMjI1NDY1NjY0LDkpLGk9dShpLG8scixuLGVbMTFdLDY0MzcxNzcxMywxNCksbj11KG4saSxvLHIsZVswXSwzOTIxMDY5OTk0LDIwKSxyPXUocixuLGksbyxlWzVdLDM1OTM0MDg2MDUsNSksbz11KG8scixuLGksZVsxMF0sMzgwMTYwODMsOSksaT11KGksbyxyLG4sZVsxNV0sMzYzNDQ4ODk2MSwxNCksbj11KG4saSxvLHIsZVs0XSwzODg5NDI5NDQ4LDIwKSxyPXUocixuLGksbyxlWzldLDU2ODQ0NjQzOCw1KSxvPXUobyxyLG4saSxlWzE0XSwzMjc1MTYzNjA2LDkpLGk9dShpLG8scixuLGVbM10sNDEwNzYwMzMzNSwxNCksbj11KG4saSxvLHIsZVs4XSwxMTYzNTMxNTAxLDIwKSxyPXUocixuLGksbyxlWzEzXSwyODUwMjg1ODI5LDUpLG89dShvLHIsbixpLGVbMl0sNDI0MzU2MzUxMiw5KSxpPXUoaSxvLHIsbixlWzddLDE3MzUzMjg0NzMsMTQpLHI9aChyLG49dShuLGksbyxyLGVbMTJdLDIzNjgzNTk1NjIsMjApLGksbyxlWzVdLDQyOTQ1ODg3MzgsNCksbz1oKG8scixuLGksZVs4XSwyMjcyMzkyODMzLDExKSxpPWgoaSxvLHIsbixlWzExXSwxODM5MDMwNTYyLDE2KSxuPWgobixpLG8scixlWzE0XSw0MjU5NjU3NzQwLDIzKSxyPWgocixuLGksbyxlWzFdLDI3NjM5NzUyMzYsNCksbz1oKG8scixuLGksZVs0XSwxMjcyODkzMzUzLDExKSxpPWgoaSxvLHIsbixlWzddLDQxMzk0Njk2NjQsMTYpLG49aChuLGksbyxyLGVbMTBdLDMyMDAyMzY2NTYsMjMpLHI9aChyLG4saSxvLGVbMTNdLDY4MTI3OTE3NCw0KSxvPWgobyxyLG4saSxlWzBdLDM5MzY0MzAwNzQsMTEpLGk9aChpLG8scixuLGVbM10sMzU3MjQ0NTMxNywxNiksbj1oKG4saSxvLHIsZVs2XSw3NjAyOTE4OSwyMykscj1oKHIsbixpLG8sZVs5XSwzNjU0NjAyODA5LDQpLG89aChvLHIsbixpLGVbMTJdLDM4NzMxNTE0NjEsMTEpLGk9aChpLG8scixuLGVbMTVdLDUzMDc0MjUyMCwxNikscj1sKHIsbj1oKG4saSxvLHIsZVsyXSwzMjk5NjI4NjQ1LDIzKSxpLG8sZVswXSw0MDk2MzM2NDUyLDYpLG89bChvLHIsbixpLGVbN10sMTEyNjg5MTQxNSwxMCksaT1sKGksbyxyLG4sZVsxNF0sMjg3ODYxMjM5MSwxNSksbj1sKG4saSxvLHIsZVs1XSw0MjM3NTMzMjQxLDIxKSxyPWwocixuLGksbyxlWzEyXSwxNzAwNDg1NTcxLDYpLG89bChvLHIsbixpLGVbM10sMjM5OTk4MDY5MCwxMCksaT1sKGksbyxyLG4sZVsxMF0sNDI5MzkxNTc3MywxNSksbj1sKG4saSxvLHIsZVsxXSwyMjQwMDQ0NDk3LDIxKSxyPWwocixuLGksbyxlWzhdLDE4NzMzMTMzNTksNiksbz1sKG8scixuLGksZVsxNV0sNDI2NDM1NTU1MiwxMCksaT1sKGksbyxyLG4sZVs2XSwyNzM0NzY4OTE2LDE1KSxuPWwobixpLG8scixlWzEzXSwxMzA5MTUxNjQ5LDIxKSxyPWwocixuLGksbyxlWzRdLDQxNDk0NDQyMjYsNiksbz1sKG8scixuLGksZVsxMV0sMzE3NDc1NjkxNywxMCksaT1sKGksbyxyLG4sZVsyXSw3MTg3ODcyNTksMTUpLG49bChuLGksbyxyLGVbOV0sMzk1MTQ4MTc0NSwyMSksdGhpcy5fYT10aGlzLl9hK3J8MCx0aGlzLl9iPXRoaXMuX2IrbnwwLHRoaXMuX2M9dGhpcy5fYytpfDAsdGhpcy5fZD10aGlzLl9kK298MH0scy5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbigpe3RoaXMuX2Jsb2NrW3RoaXMuX2Jsb2NrT2Zmc2V0KytdPTEyOCx0aGlzLl9ibG9ja09mZnNldD41NiYmKHRoaXMuX2Jsb2NrLmZpbGwoMCx0aGlzLl9ibG9ja09mZnNldCw2NCksdGhpcy5fdXBkYXRlKCksdGhpcy5fYmxvY2tPZmZzZXQ9MCksdGhpcy5fYmxvY2suZmlsbCgwLHRoaXMuX2Jsb2NrT2Zmc2V0LDU2KSx0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFswXSw1NiksdGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMV0sNjApLHRoaXMuX3VwZGF0ZSgpO3ZhciBlPW8uYWxsb2NVbnNhZmUoMTYpO3JldHVybiBlLndyaXRlSW50MzJMRSh0aGlzLl9hLDApLGUud3JpdGVJbnQzMkxFKHRoaXMuX2IsNCksZS53cml0ZUludDMyTEUodGhpcy5fYyw4KSxlLndyaXRlSW50MzJMRSh0aGlzLl9kLDEyKSxlfSxlLmV4cG9ydHM9c30sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoNykuQnVmZmVyLGk9cigwKSxvPXIoNTkpLGE9bmV3IEFycmF5KDE2KSxzPVswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDcsNCwxMywxLDEwLDYsMTUsMywxMiwwLDksNSwyLDE0LDExLDgsMywxMCwxNCw0LDksMTUsOCwxLDIsNywwLDYsMTMsMTEsNSwxMiwxLDksMTEsMTAsMCw4LDEyLDQsMTMsMyw3LDE1LDE0LDUsNiwyLDQsMCw1LDksNywxMiwyLDEwLDE0LDEsMyw4LDExLDYsMTUsMTNdLGY9WzUsMTQsNywwLDksMiwxMSw0LDEzLDYsMTUsOCwxLDEwLDMsMTIsNiwxMSwzLDcsMCwxMyw1LDEwLDE0LDE1LDgsMTIsNCw5LDEsMiwxNSw1LDEsMyw3LDE0LDYsOSwxMSw4LDEyLDIsMTAsMCw0LDEzLDgsNiw0LDEsMywxMSwxNSwwLDUsMTIsMiwxMyw5LDcsMTAsMTQsMTIsMTUsMTAsNCwxLDUsOCw3LDYsMiwxMywxNCwwLDMsOSwxMV0sYz1bMTEsMTQsMTUsMTIsNSw4LDcsOSwxMSwxMywxNCwxNSw2LDcsOSw4LDcsNiw4LDEzLDExLDksNywxNSw3LDEyLDE1LDksMTEsNywxMywxMiwxMSwxMyw2LDcsMTQsOSwxMywxNSwxNCw4LDEzLDYsNSwxMiw3LDUsMTEsMTIsMTQsMTUsMTQsMTUsOSw4LDksMTQsNSw2LDgsNiw1LDEyLDksMTUsNSwxMSw2LDgsMTMsMTIsNSwxMiwxMywxNCwxMSw4LDUsNl0sdT1bOCw5LDksMTEsMTMsMTUsMTUsNSw3LDcsOCwxMSwxNCwxNCwxMiw2LDksMTMsMTUsNywxMiw4LDksMTEsNyw3LDEyLDcsNiwxNSwxMywxMSw5LDcsMTUsMTEsOCw2LDYsMTQsMTIsMTMsNSwxNCwxMywxMyw3LDUsMTUsNSw4LDExLDE0LDE0LDYsMTQsNiw5LDEyLDksMTIsNSwxNSw4LDgsNSwxMiw5LDEyLDUsMTQsNiw4LDEzLDYsNSwxNSwxMywxMSwxMV0saD1bMCwxNTE4NTAwMjQ5LDE4NTk3NzUzOTMsMjQwMDk1OTcwOCwyODQwODUzODM4XSxsPVsxMzUyODI5OTI2LDE1NDg2MDM2ODQsMTgzNjA3MjY5MSwyMDUzOTk0MjE3LDBdO2Z1bmN0aW9uIGQoKXtvLmNhbGwodGhpcyw2NCksdGhpcy5fYT0xNzMyNTg0MTkzLHRoaXMuX2I9NDAyMzIzMzQxNyx0aGlzLl9jPTI1NjIzODMxMDIsdGhpcy5fZD0yNzE3MzM4NzgsdGhpcy5fZT0zMjg1Mzc3NTIwfWZ1bmN0aW9uIHAoZSx0KXtyZXR1cm4gZTw8dHxlPj4+MzItdH1mdW5jdGlvbiBiKGUsdCxyLG4saSxvLGEscyl7cmV0dXJuIHAoZSsodF5yXm4pK28rYXwwLHMpK2l8MH1mdW5jdGlvbiB5KGUsdCxyLG4saSxvLGEscyl7cmV0dXJuIHAoZSsodCZyfH50Jm4pK28rYXwwLHMpK2l8MH1mdW5jdGlvbiBnKGUsdCxyLG4saSxvLGEscyl7cmV0dXJuIHAoZSsoKHR8fnIpXm4pK28rYXwwLHMpK2l8MH1mdW5jdGlvbiB2KGUsdCxyLG4saSxvLGEscyl7cmV0dXJuIHAoZSsodCZufHImfm4pK28rYXwwLHMpK2l8MH1mdW5jdGlvbiBtKGUsdCxyLG4saSxvLGEscyl7cmV0dXJuIHAoZSsodF4ocnx+bikpK28rYXwwLHMpK2l8MH1pKGQsbyksZC5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbigpe2Zvcih2YXIgZT1hLHQ9MDt0PDE2OysrdCllW3RdPXRoaXMuX2Jsb2NrLnJlYWRJbnQzMkxFKDQqdCk7Zm9yKHZhciByPTB8dGhpcy5fYSxuPTB8dGhpcy5fYixpPTB8dGhpcy5fYyxvPTB8dGhpcy5fZCxkPTB8dGhpcy5fZSxfPTB8dGhpcy5fYSx3PTB8dGhpcy5fYixFPTB8dGhpcy5fYyxBPTB8dGhpcy5fZCxTPTB8dGhpcy5fZSxrPTA7azw4MDtrKz0xKXt2YXIgeCxJO2s8MTY/KHg9YihyLG4saSxvLGQsZVtzW2tdXSxoWzBdLGNba10pLEk9bShfLHcsRSxBLFMsZVtmW2tdXSxsWzBdLHVba10pKTprPDMyPyh4PXkocixuLGksbyxkLGVbc1trXV0saFsxXSxjW2tdKSxJPXYoXyx3LEUsQSxTLGVbZltrXV0sbFsxXSx1W2tdKSk6azw0OD8oeD1nKHIsbixpLG8sZCxlW3Nba11dLGhbMl0sY1trXSksST1nKF8sdyxFLEEsUyxlW2Zba11dLGxbMl0sdVtrXSkpOms8NjQ/KHg9dihyLG4saSxvLGQsZVtzW2tdXSxoWzNdLGNba10pLEk9eShfLHcsRSxBLFMsZVtmW2tdXSxsWzNdLHVba10pKTooeD1tKHIsbixpLG8sZCxlW3Nba11dLGhbNF0sY1trXSksST1iKF8sdyxFLEEsUyxlW2Zba11dLGxbNF0sdVtrXSkpLHI9ZCxkPW8sbz1wKGksMTApLGk9bixuPXgsXz1TLFM9QSxBPXAoRSwxMCksRT13LHc9SX12YXIgTT10aGlzLl9iK2krQXwwO3RoaXMuX2I9dGhpcy5fYytvK1N8MCx0aGlzLl9jPXRoaXMuX2QrZCtffDAsdGhpcy5fZD10aGlzLl9lK3Ird3wwLHRoaXMuX2U9dGhpcy5fYStuK0V8MCx0aGlzLl9hPU19LGQucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oKXt0aGlzLl9ibG9ja1t0aGlzLl9ibG9ja09mZnNldCsrXT0xMjgsdGhpcy5fYmxvY2tPZmZzZXQ+NTYmJih0aGlzLl9ibG9jay5maWxsKDAsdGhpcy5fYmxvY2tPZmZzZXQsNjQpLHRoaXMuX3VwZGF0ZSgpLHRoaXMuX2Jsb2NrT2Zmc2V0PTApLHRoaXMuX2Jsb2NrLmZpbGwoMCx0aGlzLl9ibG9ja09mZnNldCw1NiksdGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMF0sNTYpLHRoaXMuX2Jsb2NrLndyaXRlVUludDMyTEUodGhpcy5fbGVuZ3RoWzFdLDYwKSx0aGlzLl91cGRhdGUoKTt2YXIgZT1uLmFsbG9jP24uYWxsb2MoMjApOm5ldyBuKDIwKTtyZXR1cm4gZS53cml0ZUludDMyTEUodGhpcy5fYSwwKSxlLndyaXRlSW50MzJMRSh0aGlzLl9iLDQpLGUud3JpdGVJbnQzMkxFKHRoaXMuX2MsOCksZS53cml0ZUludDMyTEUodGhpcy5fZCwxMiksZS53cml0ZUludDMyTEUodGhpcy5fZSwxNiksZX0sZS5leHBvcnRzPWR9LGZ1bmN0aW9uKGUsdCxyKXsodD1lLmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZT1lLnRvTG93ZXJDYXNlKCk7dmFyIHI9dFtlXTtpZighcil0aHJvdyBuZXcgRXJyb3IoZStcIiBpcyBub3Qgc3VwcG9ydGVkICh3ZSBhY2NlcHQgcHVsbCByZXF1ZXN0cylcIik7cmV0dXJuIG5ldyByfSkuc2hhPXIoMTM1KSx0LnNoYTE9cigxMzYpLHQuc2hhMjI0PXIoMTM3KSx0LnNoYTI1Nj1yKDYwKSx0LnNoYTM4ND1yKDEzOCksdC5zaGE1MTI9cig2MSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDApLGk9cigxNCksbz1yKDEpLkJ1ZmZlcixhPVsxNTE4NTAwMjQ5LDE4NTk3NzUzOTMsLTE4OTQwMDc1ODgsLTg5OTQ5NzUxNF0scz1uZXcgQXJyYXkoODApO2Z1bmN0aW9uIGYoKXt0aGlzLmluaXQoKSx0aGlzLl93PXMsaS5jYWxsKHRoaXMsNjQsNTYpfWZ1bmN0aW9uIGMoZSl7cmV0dXJuIGU8PDMwfGU+Pj4yfWZ1bmN0aW9uIHUoZSx0LHIsbil7cmV0dXJuIDA9PT1lP3Qmcnx+dCZuOjI9PT1lP3Qmcnx0Jm58ciZuOnRecl5ufW4oZixpKSxmLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2E9MTczMjU4NDE5Myx0aGlzLl9iPTQwMjMyMzM0MTcsdGhpcy5fYz0yNTYyMzgzMTAyLHRoaXMuX2Q9MjcxNzMzODc4LHRoaXMuX2U9MzI4NTM3NzUyMCx0aGlzfSxmLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPXRoaXMuX3csbj0wfHRoaXMuX2EsaT0wfHRoaXMuX2Isbz0wfHRoaXMuX2Mscz0wfHRoaXMuX2QsZj0wfHRoaXMuX2UsaD0wO2g8MTY7KytoKXJbaF09ZS5yZWFkSW50MzJCRSg0KmgpO2Zvcig7aDw4MDsrK2gpcltoXT1yW2gtM11ecltoLThdXnJbaC0xNF1ecltoLTE2XTtmb3IodmFyIGw9MDtsPDgwOysrbCl7dmFyIGQ9fn4obC8yMCkscD0wfCgodD1uKTw8NXx0Pj4+MjcpK3UoZCxpLG8scykrZityW2xdK2FbZF07Zj1zLHM9byxvPWMoaSksaT1uLG49cH10aGlzLl9hPW4rdGhpcy5fYXwwLHRoaXMuX2I9aSt0aGlzLl9ifDAsdGhpcy5fYz1vK3RoaXMuX2N8MCx0aGlzLl9kPXMrdGhpcy5fZHwwLHRoaXMuX2U9Zit0aGlzLl9lfDB9LGYucHJvdG90eXBlLl9oYXNoPWZ1bmN0aW9uKCl7dmFyIGU9by5hbGxvY1Vuc2FmZSgyMCk7cmV0dXJuIGUud3JpdGVJbnQzMkJFKDB8dGhpcy5fYSwwKSxlLndyaXRlSW50MzJCRSgwfHRoaXMuX2IsNCksZS53cml0ZUludDMyQkUoMHx0aGlzLl9jLDgpLGUud3JpdGVJbnQzMkJFKDB8dGhpcy5fZCwxMiksZS53cml0ZUludDMyQkUoMHx0aGlzLl9lLDE2KSxlfSxlLmV4cG9ydHM9Zn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMCksaT1yKDE0KSxvPXIoMSkuQnVmZmVyLGE9WzE1MTg1MDAyNDksMTg1OTc3NTM5MywtMTg5NDAwNzU4OCwtODk5NDk3NTE0XSxzPW5ldyBBcnJheSg4MCk7ZnVuY3Rpb24gZigpe3RoaXMuaW5pdCgpLHRoaXMuX3c9cyxpLmNhbGwodGhpcyw2NCw1Nil9ZnVuY3Rpb24gYyhlKXtyZXR1cm4gZTw8NXxlPj4+Mjd9ZnVuY3Rpb24gdShlKXtyZXR1cm4gZTw8MzB8ZT4+PjJ9ZnVuY3Rpb24gaChlLHQscixuKXtyZXR1cm4gMD09PWU/dCZyfH50Jm46Mj09PWU/dCZyfHQmbnxyJm46dF5yXm59bihmLGkpLGYucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYT0xNzMyNTg0MTkzLHRoaXMuX2I9NDAyMzIzMzQxNyx0aGlzLl9jPTI1NjIzODMxMDIsdGhpcy5fZD0yNzE3MzM4NzgsdGhpcy5fZT0zMjg1Mzc3NTIwLHRoaXN9LGYucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9dGhpcy5fdyxuPTB8dGhpcy5fYSxpPTB8dGhpcy5fYixvPTB8dGhpcy5fYyxzPTB8dGhpcy5fZCxmPTB8dGhpcy5fZSxsPTA7bDwxNjsrK2wpcltsXT1lLnJlYWRJbnQzMkJFKDQqbCk7Zm9yKDtsPDgwOysrbClyW2xdPSh0PXJbbC0zXV5yW2wtOF1ecltsLTE0XV5yW2wtMTZdKTw8MXx0Pj4+MzE7Zm9yKHZhciBkPTA7ZDw4MDsrK2Qpe3ZhciBwPX5+KGQvMjApLGI9YyhuKStoKHAsaSxvLHMpK2YrcltkXSthW3BdfDA7Zj1zLHM9byxvPXUoaSksaT1uLG49Yn10aGlzLl9hPW4rdGhpcy5fYXwwLHRoaXMuX2I9aSt0aGlzLl9ifDAsdGhpcy5fYz1vK3RoaXMuX2N8MCx0aGlzLl9kPXMrdGhpcy5fZHwwLHRoaXMuX2U9Zit0aGlzLl9lfDB9LGYucHJvdG90eXBlLl9oYXNoPWZ1bmN0aW9uKCl7dmFyIGU9by5hbGxvY1Vuc2FmZSgyMCk7cmV0dXJuIGUud3JpdGVJbnQzMkJFKDB8dGhpcy5fYSwwKSxlLndyaXRlSW50MzJCRSgwfHRoaXMuX2IsNCksZS53cml0ZUludDMyQkUoMHx0aGlzLl9jLDgpLGUud3JpdGVJbnQzMkJFKDB8dGhpcy5fZCwxMiksZS53cml0ZUludDMyQkUoMHx0aGlzLl9lLDE2KSxlfSxlLmV4cG9ydHM9Zn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMCksaT1yKDYwKSxvPXIoMTQpLGE9cigxKS5CdWZmZXIscz1uZXcgQXJyYXkoNjQpO2Z1bmN0aW9uIGYoKXt0aGlzLmluaXQoKSx0aGlzLl93PXMsby5jYWxsKHRoaXMsNjQsNTYpfW4oZixpKSxmLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2E9MzIzODM3MTAzMix0aGlzLl9iPTkxNDE1MDY2Myx0aGlzLl9jPTgxMjcwMjk5OSx0aGlzLl9kPTQxNDQ5MTI2OTcsdGhpcy5fZT00MjkwNzc1ODU3LHRoaXMuX2Y9MTc1MDYwMzAyNSx0aGlzLl9nPTE2OTQwNzY4MzksdGhpcy5faD0zMjA0MDc1NDI4LHRoaXN9LGYucHJvdG90eXBlLl9oYXNoPWZ1bmN0aW9uKCl7dmFyIGU9YS5hbGxvY1Vuc2FmZSgyOCk7cmV0dXJuIGUud3JpdGVJbnQzMkJFKHRoaXMuX2EsMCksZS53cml0ZUludDMyQkUodGhpcy5fYiw0KSxlLndyaXRlSW50MzJCRSh0aGlzLl9jLDgpLGUud3JpdGVJbnQzMkJFKHRoaXMuX2QsMTIpLGUud3JpdGVJbnQzMkJFKHRoaXMuX2UsMTYpLGUud3JpdGVJbnQzMkJFKHRoaXMuX2YsMjApLGUud3JpdGVJbnQzMkJFKHRoaXMuX2csMjQpLGV9LGUuZXhwb3J0cz1mfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigwKSxpPXIoNjEpLG89cigxNCksYT1yKDEpLkJ1ZmZlcixzPW5ldyBBcnJheSgxNjApO2Z1bmN0aW9uIGYoKXt0aGlzLmluaXQoKSx0aGlzLl93PXMsby5jYWxsKHRoaXMsMTI4LDExMil9bihmLGkpLGYucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYWg9MzQxODA3MDM2NSx0aGlzLl9iaD0xNjU0MjcwMjUwLHRoaXMuX2NoPTI0Mzg1MjkzNzAsdGhpcy5fZGg9MzU1NDYyMzYwLHRoaXMuX2VoPTE3MzE0MDU0MTUsdGhpcy5fZmg9MjM5NDE4MDIzMSx0aGlzLl9naD0zNjc1MDA4NTI1LHRoaXMuX2hoPTEyMDMwNjI4MTMsdGhpcy5fYWw9MzIzODM3MTAzMix0aGlzLl9ibD05MTQxNTA2NjMsdGhpcy5fY2w9ODEyNzAyOTk5LHRoaXMuX2RsPTQxNDQ5MTI2OTcsdGhpcy5fZWw9NDI5MDc3NTg1Nyx0aGlzLl9mbD0xNzUwNjAzMDI1LHRoaXMuX2dsPTE2OTQwNzY4MzksdGhpcy5faGw9MzIwNDA3NTQyOCx0aGlzfSxmLnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciBlPWEuYWxsb2NVbnNhZmUoNDgpO2Z1bmN0aW9uIHQodCxyLG4pe2Uud3JpdGVJbnQzMkJFKHQsbiksZS53cml0ZUludDMyQkUocixuKzQpfXJldHVybiB0KHRoaXMuX2FoLHRoaXMuX2FsLDApLHQodGhpcy5fYmgsdGhpcy5fYmwsOCksdCh0aGlzLl9jaCx0aGlzLl9jbCwxNiksdCh0aGlzLl9kaCx0aGlzLl9kbCwyNCksdCh0aGlzLl9laCx0aGlzLl9lbCwzMiksdCh0aGlzLl9maCx0aGlzLl9mbCw0MCksZX0sZS5leHBvcnRzPWZ9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEpLkJ1ZmZlcixpPXIoMjQpLlRyYW5zZm9ybSxvPXIoMzUpLlN0cmluZ0RlY29kZXI7ZnVuY3Rpb24gYShlKXtpLmNhbGwodGhpcyksdGhpcy5oYXNoTW9kZT1cInN0cmluZ1wiPT10eXBlb2YgZSx0aGlzLmhhc2hNb2RlP3RoaXNbZV09dGhpcy5fZmluYWxPckRpZ2VzdDp0aGlzLmZpbmFsPXRoaXMuX2ZpbmFsT3JEaWdlc3QsdGhpcy5fZmluYWwmJih0aGlzLl9fZmluYWw9dGhpcy5fZmluYWwsdGhpcy5fZmluYWw9bnVsbCksdGhpcy5fZGVjb2Rlcj1udWxsLHRoaXMuX2VuY29kaW5nPW51bGx9cigwKShhLGkpLGEucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlLHQscil7XCJzdHJpbmdcIj09dHlwZW9mIGUmJihlPW4uZnJvbShlLHQpKTt2YXIgaT10aGlzLl91cGRhdGUoZSk7cmV0dXJuIHRoaXMuaGFzaE1vZGU/dGhpczoociYmKGk9dGhpcy5fdG9TdHJpbmcoaSxyKSksaSl9LGEucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nPWZ1bmN0aW9uKCl7fSxhLnByb3RvdHlwZS5nZXRBdXRoVGFnPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwidHJ5aW5nIHRvIGdldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZVwiKX0sYS5wcm90b3R5cGUuc2V0QXV0aFRhZz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihcInRyeWluZyB0byBzZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGVcIil9LGEucHJvdG90eXBlLnNldEFBRD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihcInRyeWluZyB0byBzZXQgYWFkIGluIHVuc3VwcG9ydGVkIHN0YXRlXCIpfSxhLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbjt0cnl7dGhpcy5oYXNoTW9kZT90aGlzLl91cGRhdGUoZSk6dGhpcy5wdXNoKHRoaXMuX3VwZGF0ZShlKSl9Y2F0Y2goZSl7bj1lfWZpbmFsbHl7cihuKX19LGEucHJvdG90eXBlLl9mbHVzaD1mdW5jdGlvbihlKXt2YXIgdDt0cnl7dGhpcy5wdXNoKHRoaXMuX19maW5hbCgpKX1jYXRjaChlKXt0PWV9ZSh0KX0sYS5wcm90b3R5cGUuX2ZpbmFsT3JEaWdlc3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2ZpbmFsKCl8fG4uYWxsb2MoMCk7cmV0dXJuIGUmJih0PXRoaXMuX3RvU3RyaW5nKHQsZSwhMCkpLHR9LGEucHJvdG90eXBlLl90b1N0cmluZz1mdW5jdGlvbihlLHQscil7aWYodGhpcy5fZGVjb2Rlcnx8KHRoaXMuX2RlY29kZXI9bmV3IG8odCksdGhpcy5fZW5jb2Rpbmc9dCksdGhpcy5fZW5jb2RpbmchPT10KXRocm93IG5ldyBFcnJvcihcImNhbid0IHN3aXRjaCBlbmNvZGluZ3NcIik7dmFyIG49dGhpcy5fZGVjb2Rlci53cml0ZShlKTtyZXR1cm4gciYmKG4rPXRoaXMuX2RlY29kZXIuZW5kKCkpLG59LGUuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQpe30sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXQ7bi52ZXJzaW9uPXIoMTQyKS52ZXJzaW9uLG4udXRpbHM9cig1KSxuLnJhbmQ9cig2Myksbi5jdXJ2ZT1yKDY0KSxuLmN1cnZlcz1yKDM3KSxuLmVjPXIoMTU0KSxuLmVkZHNhPXIoMTU4KX0sZnVuY3Rpb24oZSl7ZS5leHBvcnRzPXtfZnJvbTpcImVsbGlwdGljQF42LjQuMVwiLF9pZDpcImVsbGlwdGljQDYuNS4xXCIsX2luQnVuZGxlOiExLF9pbnRlZ3JpdHk6XCJzaGE1MTIteHZKSU5OTGJUZVdRanJsNlgrN2VRQ3JJeS9ZUHY1WENwS1c2a0I1bUt2dG5HSUxvTERjeVN1d29tZmR6dDBCTWRMTlZudVJOVHV6S05IajBidmExQ2c9PVwiLF9sb2NhdGlvbjpcIi9lbGxpcHRpY1wiLF9waGFudG9tQ2hpbGRyZW46e30sX3JlcXVlc3RlZDp7dHlwZTpcInJhbmdlXCIscmVnaXN0cnk6ITAscmF3OlwiZWxsaXB0aWNAXjYuNC4xXCIsbmFtZTpcImVsbGlwdGljXCIsZXNjYXBlZE5hbWU6XCJlbGxpcHRpY1wiLHJhd1NwZWM6XCJeNi40LjFcIixzYXZlU3BlYzpudWxsLGZldGNoU3BlYzpcIl42LjQuMVwifSxfcmVxdWlyZWRCeTpbXCIvYnJvd3NlcmlmeS1zaWduXCIsXCIvY3JlYXRlLWVjZGhcIixcIi9zZWNwMjU2azFcIl0sX3Jlc29sdmVkOlwiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZWxsaXB0aWMvLS9lbGxpcHRpYy02LjUuMS50Z3pcIixfc2hhc3VtOlwiYzM4MGY1ZjkwOWJmMWI5YjQ0MjhkMDI4Y2QxOGQzYjBlZmQ2YjUyYlwiLF9zcGVjOlwiZWxsaXB0aWNAXjYuNC4xXCIsX3doZXJlOlwiL1VzZXJzL2FsZXgvRG9jdW1lbnRzL1NxdWFyZWxpbmsvU0RLcy9XZWIzL25vZGVfbW9kdWxlcy9zZWNwMjU2azFcIixhdXRob3I6e25hbWU6XCJGZWRvciBJbmR1dG55XCIsZW1haWw6XCJmZWRvckBpbmR1dG55LmNvbVwifSxidWdzOnt1cmw6XCJodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9lbGxpcHRpYy9pc3N1ZXNcIn0sYnVuZGxlRGVwZW5kZW5jaWVzOiExLGRlcGVuZGVuY2llczp7XCJibi5qc1wiOlwiXjQuNC4wXCIsYnJvcmFuZDpcIl4xLjAuMVwiLFwiaGFzaC5qc1wiOlwiXjEuMC4wXCIsXCJobWFjLWRyYmdcIjpcIl4xLjAuMFwiLGluaGVyaXRzOlwiXjIuMC4xXCIsXCJtaW5pbWFsaXN0aWMtYXNzZXJ0XCI6XCJeMS4wLjBcIixcIm1pbmltYWxpc3RpYy1jcnlwdG8tdXRpbHNcIjpcIl4xLjAuMFwifSxkZXByZWNhdGVkOiExLGRlc2NyaXB0aW9uOlwiRUMgY3J5cHRvZ3JhcGh5XCIsZGV2RGVwZW5kZW5jaWVzOnticmZzOlwiXjEuNC4zXCIsY292ZXJhbGxzOlwiXjMuMC40XCIsZ3J1bnQ6XCJeMS4wLjRcIixcImdydW50LWJyb3dzZXJpZnlcIjpcIl41LjAuMFwiLFwiZ3J1bnQtY2xpXCI6XCJeMS4yLjBcIixcImdydW50LWNvbnRyaWItY29ubmVjdFwiOlwiXjEuMC4wXCIsXCJncnVudC1jb250cmliLWNvcHlcIjpcIl4xLjAuMFwiLFwiZ3J1bnQtY29udHJpYi11Z2xpZnlcIjpcIl4xLjAuMVwiLFwiZ3J1bnQtbW9jaGEtaXN0YW5idWxcIjpcIl4zLjAuMVwiLFwiZ3J1bnQtc2F1Y2VsYWJzXCI6XCJeOS4wLjFcIixpc3RhbmJ1bDpcIl4wLjQuMlwiLGpzY3M6XCJeMy4wLjdcIixqc2hpbnQ6XCJeMi42LjBcIixtb2NoYTpcIl42LjEuNFwifSxmaWxlczpbXCJsaWJcIl0saG9tZXBhZ2U6XCJodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9lbGxpcHRpY1wiLGtleXdvcmRzOltcIkVDXCIsXCJFbGxpcHRpY1wiLFwiY3VydmVcIixcIkNyeXB0b2dyYXBoeVwiXSxsaWNlbnNlOlwiTUlUXCIsbWFpbjpcImxpYi9lbGxpcHRpYy5qc1wiLG5hbWU6XCJlbGxpcHRpY1wiLHJlcG9zaXRvcnk6e3R5cGU6XCJnaXRcIix1cmw6XCJnaXQrc3NoOi8vZ2l0QGdpdGh1Yi5jb20vaW5kdXRueS9lbGxpcHRpYy5naXRcIn0sc2NyaXB0czp7anNjczpcImpzY3MgYmVuY2htYXJrcy8qLmpzIGxpYi8qLmpzIGxpYi8qKi8qLmpzIGxpYi8qKi8qKi8qLmpzIHRlc3QvaW5kZXguanNcIixqc2hpbnQ6XCJqc2NzIGJlbmNobWFya3MvKi5qcyBsaWIvKi5qcyBsaWIvKiovKi5qcyBsaWIvKiovKiovKi5qcyB0ZXN0L2luZGV4LmpzXCIsbGludDpcIm5wbSBydW4ganNjcyAmJiBucG0gcnVuIGpzaGludFwiLHRlc3Q6XCJucG0gcnVuIGxpbnQgJiYgbnBtIHJ1biB1bml0XCIsdW5pdDpcImlzdGFuYnVsIHRlc3QgX21vY2hhIC0tcmVwb3J0ZXI9c3BlYyB0ZXN0L2luZGV4LmpzXCIsdmVyc2lvbjpcImdydW50IGRpc3QgJiYgZ2l0IGFkZCBkaXN0L1wifSx2ZXJzaW9uOlwiNi41LjFcIn19LGZ1bmN0aW9uKGUsdCl7fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cig1KSxpPXIoMyksbz1yKDApLGE9cigyOCkscz1uLmFzc2VydDtmdW5jdGlvbiBmKGUpe2EuY2FsbCh0aGlzLFwic2hvcnRcIixlKSx0aGlzLmE9bmV3IGkoZS5hLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy5iPW5ldyBpKGUuYiwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMudGludj10aGlzLnR3by5yZWRJbnZtKCksdGhpcy56ZXJvQT0wPT09dGhpcy5hLmZyb21SZWQoKS5jbXBuKDApLHRoaXMudGhyZWVBPTA9PT10aGlzLmEuZnJvbVJlZCgpLnN1Yih0aGlzLnApLmNtcG4oLTMpLHRoaXMuZW5kbz10aGlzLl9nZXRFbmRvbW9ycGhpc20oZSksdGhpcy5fZW5kb1duYWZUMT1uZXcgQXJyYXkoNCksdGhpcy5fZW5kb1duYWZUMj1uZXcgQXJyYXkoNCl9ZnVuY3Rpb24gYyhlLHQscixuKXthLkJhc2VQb2ludC5jYWxsKHRoaXMsZSxcImFmZmluZVwiKSxudWxsPT09dCYmbnVsbD09PXI/KHRoaXMueD1udWxsLHRoaXMueT1udWxsLHRoaXMuaW5mPSEwKToodGhpcy54PW5ldyBpKHQsMTYpLHRoaXMueT1uZXcgaShyLDE2KSxuJiYodGhpcy54LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKSx0aGlzLnkuZm9yY2VSZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLngucmVkfHwodGhpcy54PXRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMueS5yZWR8fCh0aGlzLnk9dGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy5pbmY9ITEpfWZ1bmN0aW9uIHUoZSx0LHIsbil7YS5CYXNlUG9pbnQuY2FsbCh0aGlzLGUsXCJqYWNvYmlhblwiKSxudWxsPT09dCYmbnVsbD09PXImJm51bGw9PT1uPyh0aGlzLng9dGhpcy5jdXJ2ZS5vbmUsdGhpcy55PXRoaXMuY3VydmUub25lLHRoaXMuej1uZXcgaSgwKSk6KHRoaXMueD1uZXcgaSh0LDE2KSx0aGlzLnk9bmV3IGkociwxNiksdGhpcy56PW5ldyBpKG4sMTYpKSx0aGlzLngucmVkfHwodGhpcy54PXRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMueS5yZWR8fCh0aGlzLnk9dGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56LnJlZHx8KHRoaXMuej10aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnpPbmU9dGhpcy56PT09dGhpcy5jdXJ2ZS5vbmV9byhmLGEpLGUuZXhwb3J0cz1mLGYucHJvdG90eXBlLl9nZXRFbmRvbW9ycGhpc209ZnVuY3Rpb24oZSl7aWYodGhpcy56ZXJvQSYmdGhpcy5nJiZ0aGlzLm4mJjE9PT10aGlzLnAubW9kbigzKSl7dmFyIHQscjtpZihlLmJldGEpdD1uZXcgaShlLmJldGEsMTYpLnRvUmVkKHRoaXMucmVkKTtlbHNle3ZhciBuPXRoaXMuX2dldEVuZG9Sb290cyh0aGlzLnApO3Q9KHQ9blswXS5jbXAoblsxXSk8MD9uWzBdOm5bMV0pLnRvUmVkKHRoaXMucmVkKX1pZihlLmxhbWJkYSlyPW5ldyBpKGUubGFtYmRhLDE2KTtlbHNle3ZhciBvPXRoaXMuX2dldEVuZG9Sb290cyh0aGlzLm4pOzA9PT10aGlzLmcubXVsKG9bMF0pLnguY21wKHRoaXMuZy54LnJlZE11bCh0KSk/cj1vWzBdOihyPW9bMV0scygwPT09dGhpcy5nLm11bChyKS54LmNtcCh0aGlzLmcueC5yZWRNdWwodCkpKSl9cmV0dXJue2JldGE6dCxsYW1iZGE6cixiYXNpczplLmJhc2lzP2UuYmFzaXMubWFwKChmdW5jdGlvbihlKXtyZXR1cm57YTpuZXcgaShlLmEsMTYpLGI6bmV3IGkoZS5iLDE2KX19KSk6dGhpcy5fZ2V0RW5kb0Jhc2lzKHIpfX19LGYucHJvdG90eXBlLl9nZXRFbmRvUm9vdHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZT09PXRoaXMucD90aGlzLnJlZDppLm1vbnQoZSkscj1uZXcgaSgyKS50b1JlZCh0KS5yZWRJbnZtKCksbj1yLnJlZE5lZygpLG89bmV3IGkoMykudG9SZWQodCkucmVkTmVnKCkucmVkU3FydCgpLnJlZE11bChyKTtyZXR1cm5bbi5yZWRBZGQobykuZnJvbVJlZCgpLG4ucmVkU3ViKG8pLmZyb21SZWQoKV19LGYucHJvdG90eXBlLl9nZXRFbmRvQmFzaXM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHIsbixvLGEscyxmLGMsdSxoPXRoaXMubi51c2hybihNYXRoLmZsb29yKHRoaXMubi5iaXRMZW5ndGgoKS8yKSksbD1lLGQ9dGhpcy5uLmNsb25lKCkscD1uZXcgaSgxKSxiPW5ldyBpKDApLHk9bmV3IGkoMCksZz1uZXcgaSgxKSx2PTA7MCE9PWwuY21wbigwKTspe3ZhciBtPWQuZGl2KGwpO2M9ZC5zdWIobS5tdWwobCkpLHU9eS5zdWIobS5tdWwocCkpO3ZhciBfPWcuc3ViKG0ubXVsKGIpKTtpZighbiYmYy5jbXAoaCk8MCl0PWYubmVnKCkscj1wLG49Yy5uZWcoKSxvPXU7ZWxzZSBpZihuJiYyPT0rK3YpYnJlYWs7Zj1jLGQ9bCxsPWMseT1wLHA9dSxnPWIsYj1ffWE9Yy5uZWcoKSxzPXU7dmFyIHc9bi5zcXIoKS5hZGQoby5zcXIoKSk7cmV0dXJuIGEuc3FyKCkuYWRkKHMuc3FyKCkpLmNtcCh3KT49MCYmKGE9dCxzPXIpLG4ubmVnYXRpdmUmJihuPW4ubmVnKCksbz1vLm5lZygpKSxhLm5lZ2F0aXZlJiYoYT1hLm5lZygpLHM9cy5uZWcoKSksW3thOm4sYjpvfSx7YTphLGI6c31dfSxmLnByb3RvdHlwZS5fZW5kb1NwbGl0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZW5kby5iYXNpcyxyPXRbMF0sbj10WzFdLGk9bi5iLm11bChlKS5kaXZSb3VuZCh0aGlzLm4pLG89ci5iLm5lZygpLm11bChlKS5kaXZSb3VuZCh0aGlzLm4pLGE9aS5tdWwoci5hKSxzPW8ubXVsKG4uYSksZj1pLm11bChyLmIpLGM9by5tdWwobi5iKTtyZXR1cm57azE6ZS5zdWIoYSkuc3ViKHMpLGsyOmYuYWRkKGMpLm5lZygpfX0sZi5wcm90b3R5cGUucG9pbnRGcm9tWD1mdW5jdGlvbihlLHQpeyhlPW5ldyBpKGUsMTYpKS5yZWR8fChlPWUudG9SZWQodGhpcy5yZWQpKTt2YXIgcj1lLnJlZFNxcigpLnJlZE11bChlKS5yZWRJQWRkKGUucmVkTXVsKHRoaXMuYSkpLnJlZElBZGQodGhpcy5iKSxuPXIucmVkU3FydCgpO2lmKDAhPT1uLnJlZFNxcigpLnJlZFN1YihyKS5jbXAodGhpcy56ZXJvKSl0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50XCIpO3ZhciBvPW4uZnJvbVJlZCgpLmlzT2RkKCk7cmV0dXJuKHQmJiFvfHwhdCYmbykmJihuPW4ucmVkTmVnKCkpLHRoaXMucG9pbnQoZSxuKX0sZi5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oZSl7aWYoZS5pbmYpcmV0dXJuITA7dmFyIHQ9ZS54LHI9ZS55LG49dGhpcy5hLnJlZE11bCh0KSxpPXQucmVkU3FyKCkucmVkTXVsKHQpLnJlZElBZGQobikucmVkSUFkZCh0aGlzLmIpO3JldHVybiAwPT09ci5yZWRTcXIoKS5yZWRJU3ViKGkpLmNtcG4oMCl9LGYucHJvdG90eXBlLl9lbmRvV25hZk11bEFkZD1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPXRoaXMuX2VuZG9XbmFmVDEsaT10aGlzLl9lbmRvV25hZlQyLG89MDtvPGUubGVuZ3RoO28rKyl7dmFyIGE9dGhpcy5fZW5kb1NwbGl0KHRbb10pLHM9ZVtvXSxmPXMuX2dldEJldGEoKTthLmsxLm5lZ2F0aXZlJiYoYS5rMS5pbmVnKCkscz1zLm5lZyghMCkpLGEuazIubmVnYXRpdmUmJihhLmsyLmluZWcoKSxmPWYubmVnKCEwKSksblsyKm9dPXMsblsyKm8rMV09ZixpWzIqb109YS5rMSxpWzIqbysxXT1hLmsyfWZvcih2YXIgYz10aGlzLl93bmFmTXVsQWRkKDEsbixpLDIqbyxyKSx1PTA7dTwyKm87dSsrKW5bdV09bnVsbCxpW3VdPW51bGw7cmV0dXJuIGN9LG8oYyxhLkJhc2VQb2ludCksZi5wcm90b3R5cGUucG9pbnQ9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBuZXcgYyh0aGlzLGUsdCxyKX0sZi5wcm90b3R5cGUucG9pbnRGcm9tSlNPTj1mdW5jdGlvbihlLHQpe3JldHVybiBjLmZyb21KU09OKHRoaXMsZSx0KX0sYy5wcm90b3R5cGUuX2dldEJldGE9ZnVuY3Rpb24oKXtpZih0aGlzLmN1cnZlLmVuZG8pe3ZhciBlPXRoaXMucHJlY29tcHV0ZWQ7aWYoZSYmZS5iZXRhKXJldHVybiBlLmJldGE7dmFyIHQ9dGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngucmVkTXVsKHRoaXMuY3VydmUuZW5kby5iZXRhKSx0aGlzLnkpO2lmKGUpe3ZhciByPXRoaXMuY3VydmUsbj1mdW5jdGlvbihlKXtyZXR1cm4gci5wb2ludChlLngucmVkTXVsKHIuZW5kby5iZXRhKSxlLnkpfTtlLmJldGE9dCx0LnByZWNvbXB1dGVkPXtiZXRhOm51bGwsbmFmOmUubmFmJiZ7d25kOmUubmFmLnduZCxwb2ludHM6ZS5uYWYucG9pbnRzLm1hcChuKX0sZG91YmxlczplLmRvdWJsZXMmJntzdGVwOmUuZG91Ymxlcy5zdGVwLHBvaW50czplLmRvdWJsZXMucG9pbnRzLm1hcChuKX19fXJldHVybiB0fX0sYy5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJlY29tcHV0ZWQ/W3RoaXMueCx0aGlzLnksdGhpcy5wcmVjb21wdXRlZCYme2RvdWJsZXM6dGhpcy5wcmVjb21wdXRlZC5kb3VibGVzJiZ7c3RlcDp0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMuc3RlcCxwb2ludHM6dGhpcy5wcmVjb21wdXRlZC5kb3VibGVzLnBvaW50cy5zbGljZSgxKX0sbmFmOnRoaXMucHJlY29tcHV0ZWQubmFmJiZ7d25kOnRoaXMucHJlY29tcHV0ZWQubmFmLnduZCxwb2ludHM6dGhpcy5wcmVjb21wdXRlZC5uYWYucG9pbnRzLnNsaWNlKDEpfX1dOlt0aGlzLngsdGhpcy55XX0sYy5mcm9tSlNPTj1mdW5jdGlvbihlLHQscil7XCJzdHJpbmdcIj09dHlwZW9mIHQmJih0PUpTT04ucGFyc2UodCkpO3ZhciBuPWUucG9pbnQodFswXSx0WzFdLHIpO2lmKCF0WzJdKXJldHVybiBuO2Z1bmN0aW9uIGkodCl7cmV0dXJuIGUucG9pbnQodFswXSx0WzFdLHIpfXZhciBvPXRbMl07cmV0dXJuIG4ucHJlY29tcHV0ZWQ9e2JldGE6bnVsbCxkb3VibGVzOm8uZG91YmxlcyYme3N0ZXA6by5kb3VibGVzLnN0ZXAscG9pbnRzOltuXS5jb25jYXQoby5kb3VibGVzLnBvaW50cy5tYXAoaSkpfSxuYWY6by5uYWYmJnt3bmQ6by5uYWYud25kLHBvaW50czpbbl0uY29uY2F0KG8ubmFmLnBvaW50cy5tYXAoaSkpfX0sbn0sYy5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT9cIjxFQyBQb2ludCBJbmZpbml0eT5cIjpcIjxFQyBQb2ludCB4OiBcIit0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpK1wiIHk6IFwiK3RoaXMueS5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrXCI+XCJ9LGMucHJvdG90eXBlLmlzSW5maW5pdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbmZ9LGMucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXtpZih0aGlzLmluZilyZXR1cm4gZTtpZihlLmluZilyZXR1cm4gdGhpcztpZih0aGlzLmVxKGUpKXJldHVybiB0aGlzLmRibCgpO2lmKHRoaXMubmVnKCkuZXEoZSkpcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCxudWxsKTtpZigwPT09dGhpcy54LmNtcChlLngpKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCk7dmFyIHQ9dGhpcy55LnJlZFN1YihlLnkpOzAhPT10LmNtcG4oMCkmJih0PXQucmVkTXVsKHRoaXMueC5yZWRTdWIoZS54KS5yZWRJbnZtKCkpKTt2YXIgcj10LnJlZFNxcigpLnJlZElTdWIodGhpcy54KS5yZWRJU3ViKGUueCksbj10LnJlZE11bCh0aGlzLngucmVkU3ViKHIpKS5yZWRJU3ViKHRoaXMueSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQocixuKX0sYy5wcm90b3R5cGUuZGJsPWZ1bmN0aW9uKCl7aWYodGhpcy5pbmYpcmV0dXJuIHRoaXM7dmFyIGU9dGhpcy55LnJlZEFkZCh0aGlzLnkpO2lmKDA9PT1lLmNtcG4oMCkpcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCxudWxsKTt2YXIgdD10aGlzLmN1cnZlLmEscj10aGlzLngucmVkU3FyKCksbj1lLnJlZEludm0oKSxpPXIucmVkQWRkKHIpLnJlZElBZGQocikucmVkSUFkZCh0KS5yZWRNdWwobiksbz1pLnJlZFNxcigpLnJlZElTdWIodGhpcy54LnJlZEFkZCh0aGlzLngpKSxhPWkucmVkTXVsKHRoaXMueC5yZWRTdWIobykpLnJlZElTdWIodGhpcy55KTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChvLGEpfSxjLnByb3RvdHlwZS5nZXRYPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueC5mcm9tUmVkKCl9LGMucHJvdG90eXBlLmdldFk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy55LmZyb21SZWQoKX0sYy5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGUpe3JldHVybiBlPW5ldyBpKGUsMTYpLHRoaXMuaXNJbmZpbml0eSgpP3RoaXM6dGhpcy5faGFzRG91YmxlcyhlKT90aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLGUpOnRoaXMuY3VydmUuZW5kbz90aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChbdGhpc10sW2VdKTp0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsZSl9LGMucHJvdG90eXBlLm11bEFkZD1mdW5jdGlvbihlLHQscil7dmFyIG49W3RoaXMsdF0saT1bZSxyXTtyZXR1cm4gdGhpcy5jdXJ2ZS5lbmRvP3RoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKG4saSk6dGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLG4saSwyKX0sYy5wcm90b3R5cGUuam11bEFkZD1mdW5jdGlvbihlLHQscil7dmFyIG49W3RoaXMsdF0saT1bZSxyXTtyZXR1cm4gdGhpcy5jdXJ2ZS5lbmRvP3RoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKG4saSwhMCk6dGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLG4saSwyLCEwKX0sYy5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXM9PT1lfHx0aGlzLmluZj09PWUuaW5mJiYodGhpcy5pbmZ8fDA9PT10aGlzLnguY21wKGUueCkmJjA9PT10aGlzLnkuY21wKGUueSkpfSxjLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oZSl7aWYodGhpcy5pbmYpcmV0dXJuIHRoaXM7dmFyIHQ9dGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngsdGhpcy55LnJlZE5lZygpKTtpZihlJiZ0aGlzLnByZWNvbXB1dGVkKXt2YXIgcj10aGlzLnByZWNvbXB1dGVkLG49ZnVuY3Rpb24oZSl7cmV0dXJuIGUubmVnKCl9O3QucHJlY29tcHV0ZWQ9e25hZjpyLm5hZiYme3duZDpyLm5hZi53bmQscG9pbnRzOnIubmFmLnBvaW50cy5tYXAobil9LGRvdWJsZXM6ci5kb3VibGVzJiZ7c3RlcDpyLmRvdWJsZXMuc3RlcCxwb2ludHM6ci5kb3VibGVzLnBvaW50cy5tYXAobil9fX1yZXR1cm4gdH0sYy5wcm90b3R5cGUudG9KPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5mP3RoaXMuY3VydmUuanBvaW50KG51bGwsbnVsbCxudWxsKTp0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsdGhpcy55LHRoaXMuY3VydmUub25lKX0sbyh1LGEuQmFzZVBvaW50KSxmLnByb3RvdHlwZS5qcG9pbnQ9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBuZXcgdSh0aGlzLGUsdCxyKX0sdS5wcm90b3R5cGUudG9QPWZ1bmN0aW9uKCl7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCxudWxsKTt2YXIgZT10aGlzLnoucmVkSW52bSgpLHQ9ZS5yZWRTcXIoKSxyPXRoaXMueC5yZWRNdWwodCksbj10aGlzLnkucmVkTXVsKHQpLnJlZE11bChlKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChyLG4pfSx1LnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQodGhpcy54LHRoaXMueS5yZWROZWcoKSx0aGlzLnopfSx1LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIGU7aWYoZS5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXM7dmFyIHQ9ZS56LnJlZFNxcigpLHI9dGhpcy56LnJlZFNxcigpLG49dGhpcy54LnJlZE11bCh0KSxpPWUueC5yZWRNdWwociksbz10aGlzLnkucmVkTXVsKHQucmVkTXVsKGUueikpLGE9ZS55LnJlZE11bChyLnJlZE11bCh0aGlzLnopKSxzPW4ucmVkU3ViKGkpLGY9by5yZWRTdWIoYSk7aWYoMD09PXMuY21wbigwKSlyZXR1cm4gMCE9PWYuY21wbigwKT90aGlzLmN1cnZlLmpwb2ludChudWxsLG51bGwsbnVsbCk6dGhpcy5kYmwoKTt2YXIgYz1zLnJlZFNxcigpLHU9Yy5yZWRNdWwocyksaD1uLnJlZE11bChjKSxsPWYucmVkU3FyKCkucmVkSUFkZCh1KS5yZWRJU3ViKGgpLnJlZElTdWIoaCksZD1mLnJlZE11bChoLnJlZElTdWIobCkpLnJlZElTdWIoby5yZWRNdWwodSkpLHA9dGhpcy56LnJlZE11bChlLnopLnJlZE11bChzKTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobCxkLHApfSx1LnByb3RvdHlwZS5taXhlZEFkZD1mdW5jdGlvbihlKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gZS50b0ooKTtpZihlLmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpczt2YXIgdD10aGlzLnoucmVkU3FyKCkscj10aGlzLngsbj1lLngucmVkTXVsKHQpLGk9dGhpcy55LG89ZS55LnJlZE11bCh0KS5yZWRNdWwodGhpcy56KSxhPXIucmVkU3ViKG4pLHM9aS5yZWRTdWIobyk7aWYoMD09PWEuY21wbigwKSlyZXR1cm4gMCE9PXMuY21wbigwKT90aGlzLmN1cnZlLmpwb2ludChudWxsLG51bGwsbnVsbCk6dGhpcy5kYmwoKTt2YXIgZj1hLnJlZFNxcigpLGM9Zi5yZWRNdWwoYSksdT1yLnJlZE11bChmKSxoPXMucmVkU3FyKCkucmVkSUFkZChjKS5yZWRJU3ViKHUpLnJlZElTdWIodSksbD1zLnJlZE11bCh1LnJlZElTdWIoaCkpLnJlZElTdWIoaS5yZWRNdWwoYykpLGQ9dGhpcy56LnJlZE11bChhKTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoaCxsLGQpfSx1LnByb3RvdHlwZS5kYmxwPWZ1bmN0aW9uKGUpe2lmKDA9PT1lKXJldHVybiB0aGlzO2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiB0aGlzO2lmKCFlKXJldHVybiB0aGlzLmRibCgpO2lmKHRoaXMuY3VydmUuemVyb0F8fHRoaXMuY3VydmUudGhyZWVBKXtmb3IodmFyIHQ9dGhpcyxyPTA7cjxlO3IrKyl0PXQuZGJsKCk7cmV0dXJuIHR9dmFyIG49dGhpcy5jdXJ2ZS5hLGk9dGhpcy5jdXJ2ZS50aW52LG89dGhpcy54LGE9dGhpcy55LHM9dGhpcy56LGY9cy5yZWRTcXIoKS5yZWRTcXIoKSxjPWEucmVkQWRkKGEpO2ZvcihyPTA7cjxlO3IrKyl7dmFyIHU9by5yZWRTcXIoKSxoPWMucmVkU3FyKCksbD1oLnJlZFNxcigpLGQ9dS5yZWRBZGQodSkucmVkSUFkZCh1KS5yZWRJQWRkKG4ucmVkTXVsKGYpKSxwPW8ucmVkTXVsKGgpLGI9ZC5yZWRTcXIoKS5yZWRJU3ViKHAucmVkQWRkKHApKSx5PXAucmVkSVN1YihiKSxnPWQucmVkTXVsKHkpO2c9Zy5yZWRJQWRkKGcpLnJlZElTdWIobCk7dmFyIHY9Yy5yZWRNdWwocyk7cisxPGUmJihmPWYucmVkTXVsKGwpKSxvPWIscz12LGM9Z31yZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobyxjLnJlZE11bChpKSxzKX0sdS5wcm90b3R5cGUuZGJsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpP3RoaXM6dGhpcy5jdXJ2ZS56ZXJvQT90aGlzLl96ZXJvRGJsKCk6dGhpcy5jdXJ2ZS50aHJlZUE/dGhpcy5fdGhyZWVEYmwoKTp0aGlzLl9kYmwoKX0sdS5wcm90b3R5cGUuX3plcm9EYmw9ZnVuY3Rpb24oKXt2YXIgZSx0LHI7aWYodGhpcy56T25lKXt2YXIgbj10aGlzLngucmVkU3FyKCksaT10aGlzLnkucmVkU3FyKCksbz1pLnJlZFNxcigpLGE9dGhpcy54LnJlZEFkZChpKS5yZWRTcXIoKS5yZWRJU3ViKG4pLnJlZElTdWIobyk7YT1hLnJlZElBZGQoYSk7dmFyIHM9bi5yZWRBZGQobikucmVkSUFkZChuKSxmPXMucmVkU3FyKCkucmVkSVN1YihhKS5yZWRJU3ViKGEpLGM9by5yZWRJQWRkKG8pO2M9KGM9Yy5yZWRJQWRkKGMpKS5yZWRJQWRkKGMpLGU9Zix0PXMucmVkTXVsKGEucmVkSVN1YihmKSkucmVkSVN1YihjKSxyPXRoaXMueS5yZWRBZGQodGhpcy55KX1lbHNle3ZhciB1PXRoaXMueC5yZWRTcXIoKSxoPXRoaXMueS5yZWRTcXIoKSxsPWgucmVkU3FyKCksZD10aGlzLngucmVkQWRkKGgpLnJlZFNxcigpLnJlZElTdWIodSkucmVkSVN1YihsKTtkPWQucmVkSUFkZChkKTt2YXIgcD11LnJlZEFkZCh1KS5yZWRJQWRkKHUpLGI9cC5yZWRTcXIoKSx5PWwucmVkSUFkZChsKTt5PSh5PXkucmVkSUFkZCh5KSkucmVkSUFkZCh5KSxlPWIucmVkSVN1YihkKS5yZWRJU3ViKGQpLHQ9cC5yZWRNdWwoZC5yZWRJU3ViKGUpKS5yZWRJU3ViKHkpLHI9KHI9dGhpcy55LnJlZE11bCh0aGlzLnopKS5yZWRJQWRkKHIpfXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChlLHQscil9LHUucHJvdG90eXBlLl90aHJlZURibD1mdW5jdGlvbigpe3ZhciBlLHQscjtpZih0aGlzLnpPbmUpe3ZhciBuPXRoaXMueC5yZWRTcXIoKSxpPXRoaXMueS5yZWRTcXIoKSxvPWkucmVkU3FyKCksYT10aGlzLngucmVkQWRkKGkpLnJlZFNxcigpLnJlZElTdWIobikucmVkSVN1YihvKTthPWEucmVkSUFkZChhKTt2YXIgcz1uLnJlZEFkZChuKS5yZWRJQWRkKG4pLnJlZElBZGQodGhpcy5jdXJ2ZS5hKSxmPXMucmVkU3FyKCkucmVkSVN1YihhKS5yZWRJU3ViKGEpO2U9Zjt2YXIgYz1vLnJlZElBZGQobyk7Yz0oYz1jLnJlZElBZGQoYykpLnJlZElBZGQoYyksdD1zLnJlZE11bChhLnJlZElTdWIoZikpLnJlZElTdWIoYykscj10aGlzLnkucmVkQWRkKHRoaXMueSl9ZWxzZXt2YXIgdT10aGlzLnoucmVkU3FyKCksaD10aGlzLnkucmVkU3FyKCksbD10aGlzLngucmVkTXVsKGgpLGQ9dGhpcy54LnJlZFN1Yih1KS5yZWRNdWwodGhpcy54LnJlZEFkZCh1KSk7ZD1kLnJlZEFkZChkKS5yZWRJQWRkKGQpO3ZhciBwPWwucmVkSUFkZChsKSxiPShwPXAucmVkSUFkZChwKSkucmVkQWRkKHApO2U9ZC5yZWRTcXIoKS5yZWRJU3ViKGIpLHI9dGhpcy55LnJlZEFkZCh0aGlzLnopLnJlZFNxcigpLnJlZElTdWIoaCkucmVkSVN1Yih1KTt2YXIgeT1oLnJlZFNxcigpO3k9KHk9KHk9eS5yZWRJQWRkKHkpKS5yZWRJQWRkKHkpKS5yZWRJQWRkKHkpLHQ9ZC5yZWRNdWwocC5yZWRJU3ViKGUpKS5yZWRJU3ViKHkpfXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChlLHQscil9LHUucHJvdG90eXBlLl9kYmw9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmN1cnZlLmEsdD10aGlzLngscj10aGlzLnksbj10aGlzLnosaT1uLnJlZFNxcigpLnJlZFNxcigpLG89dC5yZWRTcXIoKSxhPXIucmVkU3FyKCkscz1vLnJlZEFkZChvKS5yZWRJQWRkKG8pLnJlZElBZGQoZS5yZWRNdWwoaSkpLGY9dC5yZWRBZGQodCksYz0oZj1mLnJlZElBZGQoZikpLnJlZE11bChhKSx1PXMucmVkU3FyKCkucmVkSVN1YihjLnJlZEFkZChjKSksaD1jLnJlZElTdWIodSksbD1hLnJlZFNxcigpO2w9KGw9KGw9bC5yZWRJQWRkKGwpKS5yZWRJQWRkKGwpKS5yZWRJQWRkKGwpO3ZhciBkPXMucmVkTXVsKGgpLnJlZElTdWIobCkscD1yLnJlZEFkZChyKS5yZWRNdWwobik7cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KHUsZCxwKX0sdS5wcm90b3R5cGUudHJwbD1mdW5jdGlvbigpe2lmKCF0aGlzLmN1cnZlLnplcm9BKXJldHVybiB0aGlzLmRibCgpLmFkZCh0aGlzKTt2YXIgZT10aGlzLngucmVkU3FyKCksdD10aGlzLnkucmVkU3FyKCkscj10aGlzLnoucmVkU3FyKCksbj10LnJlZFNxcigpLGk9ZS5yZWRBZGQoZSkucmVkSUFkZChlKSxvPWkucmVkU3FyKCksYT10aGlzLngucmVkQWRkKHQpLnJlZFNxcigpLnJlZElTdWIoZSkucmVkSVN1YihuKSxzPShhPShhPShhPWEucmVkSUFkZChhKSkucmVkQWRkKGEpLnJlZElBZGQoYSkpLnJlZElTdWIobykpLnJlZFNxcigpLGY9bi5yZWRJQWRkKG4pO2Y9KGY9KGY9Zi5yZWRJQWRkKGYpKS5yZWRJQWRkKGYpKS5yZWRJQWRkKGYpO3ZhciBjPWkucmVkSUFkZChhKS5yZWRTcXIoKS5yZWRJU3ViKG8pLnJlZElTdWIocykucmVkSVN1YihmKSx1PXQucmVkTXVsKGMpO3U9KHU9dS5yZWRJQWRkKHUpKS5yZWRJQWRkKHUpO3ZhciBoPXRoaXMueC5yZWRNdWwocykucmVkSVN1Yih1KTtoPShoPWgucmVkSUFkZChoKSkucmVkSUFkZChoKTt2YXIgbD10aGlzLnkucmVkTXVsKGMucmVkTXVsKGYucmVkSVN1YihjKSkucmVkSVN1YihhLnJlZE11bChzKSkpO2w9KGw9KGw9bC5yZWRJQWRkKGwpKS5yZWRJQWRkKGwpKS5yZWRJQWRkKGwpO3ZhciBkPXRoaXMuei5yZWRBZGQoYSkucmVkU3FyKCkucmVkSVN1YihyKS5yZWRJU3ViKHMpO3JldHVybiB0aGlzLmN1cnZlLmpwb2ludChoLGwsZCl9LHUucHJvdG90eXBlLm11bD1mdW5jdGlvbihlLHQpe3JldHVybiBlPW5ldyBpKGUsdCksdGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLGUpfSx1LnByb3RvdHlwZS5lcT1mdW5jdGlvbihlKXtpZihcImFmZmluZVwiPT09ZS50eXBlKXJldHVybiB0aGlzLmVxKGUudG9KKCkpO2lmKHRoaXM9PT1lKXJldHVybiEwO3ZhciB0PXRoaXMuei5yZWRTcXIoKSxyPWUuei5yZWRTcXIoKTtpZigwIT09dGhpcy54LnJlZE11bChyKS5yZWRJU3ViKGUueC5yZWRNdWwodCkpLmNtcG4oMCkpcmV0dXJuITE7dmFyIG49dC5yZWRNdWwodGhpcy56KSxpPXIucmVkTXVsKGUueik7cmV0dXJuIDA9PT10aGlzLnkucmVkTXVsKGkpLnJlZElTdWIoZS55LnJlZE11bChuKSkuY21wbigwKX0sdS5wcm90b3R5cGUuZXFYVG9QPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuei5yZWRTcXIoKSxyPWUudG9SZWQodGhpcy5jdXJ2ZS5yZWQpLnJlZE11bCh0KTtpZigwPT09dGhpcy54LmNtcChyKSlyZXR1cm4hMDtmb3IodmFyIG49ZS5jbG9uZSgpLGk9dGhpcy5jdXJ2ZS5yZWROLnJlZE11bCh0KTs7KXtpZihuLmlhZGQodGhpcy5jdXJ2ZS5uKSxuLmNtcCh0aGlzLmN1cnZlLnApPj0wKXJldHVybiExO2lmKHIucmVkSUFkZChpKSwwPT09dGhpcy54LmNtcChyKSlyZXR1cm4hMH19LHUucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/XCI8RUMgSlBvaW50IEluZmluaXR5PlwiOlwiPEVDIEpQb2ludCB4OiBcIit0aGlzLngudG9TdHJpbmcoMTYsMikrXCIgeTogXCIrdGhpcy55LnRvU3RyaW5nKDE2LDIpK1wiIHo6IFwiK3RoaXMuei50b1N0cmluZygxNiwyKStcIj5cIn0sdS5wcm90b3R5cGUuaXNJbmZpbml0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy56LmNtcG4oMCl9fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigzKSxpPXIoMCksbz1yKDI4KSxhPXIoNSk7ZnVuY3Rpb24gcyhlKXtvLmNhbGwodGhpcyxcIm1vbnRcIixlKSx0aGlzLmE9bmV3IG4oZS5hLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy5iPW5ldyBuKGUuYiwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuaTQ9bmV3IG4oNCkudG9SZWQodGhpcy5yZWQpLnJlZEludm0oKSx0aGlzLnR3bz1uZXcgbigyKS50b1JlZCh0aGlzLnJlZCksdGhpcy5hMjQ9dGhpcy5pNC5yZWRNdWwodGhpcy5hLnJlZEFkZCh0aGlzLnR3bykpfWZ1bmN0aW9uIGYoZSx0LHIpe28uQmFzZVBvaW50LmNhbGwodGhpcyxlLFwicHJvamVjdGl2ZVwiKSxudWxsPT09dCYmbnVsbD09PXI/KHRoaXMueD10aGlzLmN1cnZlLm9uZSx0aGlzLno9dGhpcy5jdXJ2ZS56ZXJvKToodGhpcy54PW5ldyBuKHQsMTYpLHRoaXMuej1uZXcgbihyLDE2KSx0aGlzLngucmVkfHwodGhpcy54PXRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuei5yZWR8fCh0aGlzLno9dGhpcy56LnRvUmVkKHRoaXMuY3VydmUucmVkKSkpfWkocyxvKSxlLmV4cG9ydHM9cyxzLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbihlKXt2YXIgdD1lLm5vcm1hbGl6ZSgpLngscj10LnJlZFNxcigpLG49ci5yZWRNdWwodCkucmVkQWRkKHIucmVkTXVsKHRoaXMuYSkpLnJlZEFkZCh0KTtyZXR1cm4gMD09PW4ucmVkU3FydCgpLnJlZFNxcigpLmNtcChuKX0saShmLG8uQmFzZVBvaW50KSxzLnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnBvaW50KGEudG9BcnJheShlLHQpLDEpfSxzLnByb3RvdHlwZS5wb2ludD1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgZih0aGlzLGUsdCl9LHMucHJvdG90eXBlLnBvaW50RnJvbUpTT049ZnVuY3Rpb24oZSl7cmV0dXJuIGYuZnJvbUpTT04odGhpcyxlKX0sZi5wcm90b3R5cGUucHJlY29tcHV0ZT1mdW5jdGlvbigpe30sZi5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFgoKS50b0FycmF5KFwiYmVcIix0aGlzLmN1cnZlLnAuYnl0ZUxlbmd0aCgpKX0sZi5mcm9tSlNPTj1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgZihlLHRbMF0sdFsxXXx8ZS5vbmUpfSxmLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpP1wiPEVDIFBvaW50IEluZmluaXR5PlwiOlwiPEVDIFBvaW50IHg6IFwiK3RoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrXCIgejogXCIrdGhpcy56LmZyb21SZWQoKS50b1N0cmluZygxNiwyKStcIj5cIn0sZi5wcm90b3R5cGUuaXNJbmZpbml0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy56LmNtcG4oMCl9LGYucHJvdG90eXBlLmRibD1mdW5jdGlvbigpe3ZhciBlPXRoaXMueC5yZWRBZGQodGhpcy56KS5yZWRTcXIoKSx0PXRoaXMueC5yZWRTdWIodGhpcy56KS5yZWRTcXIoKSxyPWUucmVkU3ViKHQpLG49ZS5yZWRNdWwodCksaT1yLnJlZE11bCh0LnJlZEFkZCh0aGlzLmN1cnZlLmEyNC5yZWRNdWwocikpKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChuLGkpfSxmLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmVcIil9LGYucHJvdG90eXBlLmRpZmZBZGQ9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLngucmVkQWRkKHRoaXMueiksbj10aGlzLngucmVkU3ViKHRoaXMueiksaT1lLngucmVkQWRkKGUueiksbz1lLngucmVkU3ViKGUueikucmVkTXVsKHIpLGE9aS5yZWRNdWwobikscz10LnoucmVkTXVsKG8ucmVkQWRkKGEpLnJlZFNxcigpKSxmPXQueC5yZWRNdWwoby5yZWRJU3ViKGEpLnJlZFNxcigpKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChzLGYpfSxmLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWUuY2xvbmUoKSxyPXRoaXMsbj10aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCksaT1bXTswIT09dC5jbXBuKDApO3QuaXVzaHJuKDEpKWkucHVzaCh0LmFuZGxuKDEpKTtmb3IodmFyIG89aS5sZW5ndGgtMTtvPj0wO28tLSkwPT09aVtvXT8ocj1yLmRpZmZBZGQobix0aGlzKSxuPW4uZGJsKCkpOihuPXIuZGlmZkFkZChuLHRoaXMpLHI9ci5kYmwoKSk7cmV0dXJuIG59LGYucHJvdG90eXBlLm11bEFkZD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihcIk5vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZVwiKX0sZi5wcm90b3R5cGUuanVtbEFkZD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihcIk5vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZVwiKX0sZi5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT10aGlzLmdldFgoKS5jbXAoZS5nZXRYKCkpfSxmLnByb3RvdHlwZS5ub3JtYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54PXRoaXMueC5yZWRNdWwodGhpcy56LnJlZEludm0oKSksdGhpcy56PXRoaXMuY3VydmUub25lLHRoaXN9LGYucHJvdG90eXBlLmdldFg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKSx0aGlzLnguZnJvbVJlZCgpfX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoNSksaT1yKDMpLG89cigwKSxhPXIoMjgpLHM9bi5hc3NlcnQ7ZnVuY3Rpb24gZihlKXt0aGlzLnR3aXN0ZWQ9MSE9KDB8ZS5hKSx0aGlzLm1PbmVBPXRoaXMudHdpc3RlZCYmLTE9PSgwfGUuYSksdGhpcy5leHRlbmRlZD10aGlzLm1PbmVBLGEuY2FsbCh0aGlzLFwiZWR3YXJkc1wiLGUpLHRoaXMuYT1uZXcgaShlLmEsMTYpLnVtb2QodGhpcy5yZWQubSksdGhpcy5hPXRoaXMuYS50b1JlZCh0aGlzLnJlZCksdGhpcy5jPW5ldyBpKGUuYywxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuYzI9dGhpcy5jLnJlZFNxcigpLHRoaXMuZD1uZXcgaShlLmQsMTYpLnRvUmVkKHRoaXMucmVkKSx0aGlzLmRkPXRoaXMuZC5yZWRBZGQodGhpcy5kKSxzKCF0aGlzLnR3aXN0ZWR8fDA9PT10aGlzLmMuZnJvbVJlZCgpLmNtcG4oMSkpLHRoaXMub25lQz0xPT0oMHxlLmMpfWZ1bmN0aW9uIGMoZSx0LHIsbixvKXthLkJhc2VQb2ludC5jYWxsKHRoaXMsZSxcInByb2plY3RpdmVcIiksbnVsbD09PXQmJm51bGw9PT1yJiZudWxsPT09bj8odGhpcy54PXRoaXMuY3VydmUuemVybyx0aGlzLnk9dGhpcy5jdXJ2ZS5vbmUsdGhpcy56PXRoaXMuY3VydmUub25lLHRoaXMudD10aGlzLmN1cnZlLnplcm8sdGhpcy56T25lPSEwKToodGhpcy54PW5ldyBpKHQsMTYpLHRoaXMueT1uZXcgaShyLDE2KSx0aGlzLno9bj9uZXcgaShuLDE2KTp0aGlzLmN1cnZlLm9uZSx0aGlzLnQ9byYmbmV3IGkobywxNiksdGhpcy54LnJlZHx8KHRoaXMueD10aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnkucmVkfHwodGhpcy55PXRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuei5yZWR8fCh0aGlzLno9dGhpcy56LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy50JiYhdGhpcy50LnJlZCYmKHRoaXMudD10aGlzLnQudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnpPbmU9dGhpcy56PT09dGhpcy5jdXJ2ZS5vbmUsdGhpcy5jdXJ2ZS5leHRlbmRlZCYmIXRoaXMudCYmKHRoaXMudD10aGlzLngucmVkTXVsKHRoaXMueSksdGhpcy56T25lfHwodGhpcy50PXRoaXMudC5yZWRNdWwodGhpcy56LnJlZEludm0oKSkpKSl9byhmLGEpLGUuZXhwb3J0cz1mLGYucHJvdG90eXBlLl9tdWxBPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm1PbmVBP2UucmVkTmVnKCk6dGhpcy5hLnJlZE11bChlKX0sZi5wcm90b3R5cGUuX211bEM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub25lQz9lOnRoaXMuYy5yZWRNdWwoZSl9LGYucHJvdG90eXBlLmpwb2ludD1mdW5jdGlvbihlLHQscixuKXtyZXR1cm4gdGhpcy5wb2ludChlLHQscixuKX0sZi5wcm90b3R5cGUucG9pbnRGcm9tWD1mdW5jdGlvbihlLHQpeyhlPW5ldyBpKGUsMTYpKS5yZWR8fChlPWUudG9SZWQodGhpcy5yZWQpKTt2YXIgcj1lLnJlZFNxcigpLG49dGhpcy5jMi5yZWRTdWIodGhpcy5hLnJlZE11bChyKSksbz10aGlzLm9uZS5yZWRTdWIodGhpcy5jMi5yZWRNdWwodGhpcy5kKS5yZWRNdWwocikpLGE9bi5yZWRNdWwoby5yZWRJbnZtKCkpLHM9YS5yZWRTcXJ0KCk7aWYoMCE9PXMucmVkU3FyKCkucmVkU3ViKGEpLmNtcCh0aGlzLnplcm8pKXRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnRcIik7dmFyIGY9cy5mcm9tUmVkKCkuaXNPZGQoKTtyZXR1cm4odCYmIWZ8fCF0JiZmKSYmKHM9cy5yZWROZWcoKSksdGhpcy5wb2ludChlLHMpfSxmLnByb3RvdHlwZS5wb2ludEZyb21ZPWZ1bmN0aW9uKGUsdCl7KGU9bmV3IGkoZSwxNikpLnJlZHx8KGU9ZS50b1JlZCh0aGlzLnJlZCkpO3ZhciByPWUucmVkU3FyKCksbj1yLnJlZFN1Yih0aGlzLmMyKSxvPXIucmVkTXVsKHRoaXMuZCkucmVkTXVsKHRoaXMuYzIpLnJlZFN1Yih0aGlzLmEpLGE9bi5yZWRNdWwoby5yZWRJbnZtKCkpO2lmKDA9PT1hLmNtcCh0aGlzLnplcm8pKXtpZih0KXRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnRcIik7cmV0dXJuIHRoaXMucG9pbnQodGhpcy56ZXJvLGUpfXZhciBzPWEucmVkU3FydCgpO2lmKDAhPT1zLnJlZFNxcigpLnJlZFN1YihhKS5jbXAodGhpcy56ZXJvKSl0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50XCIpO3JldHVybiBzLmZyb21SZWQoKS5pc09kZCgpIT09dCYmKHM9cy5yZWROZWcoKSksdGhpcy5wb2ludChzLGUpfSxmLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbihlKXtpZihlLmlzSW5maW5pdHkoKSlyZXR1cm4hMDtlLm5vcm1hbGl6ZSgpO3ZhciB0PWUueC5yZWRTcXIoKSxyPWUueS5yZWRTcXIoKSxuPXQucmVkTXVsKHRoaXMuYSkucmVkQWRkKHIpLGk9dGhpcy5jMi5yZWRNdWwodGhpcy5vbmUucmVkQWRkKHRoaXMuZC5yZWRNdWwodCkucmVkTXVsKHIpKSk7cmV0dXJuIDA9PT1uLmNtcChpKX0sbyhjLGEuQmFzZVBvaW50KSxmLnByb3RvdHlwZS5wb2ludEZyb21KU09OPWZ1bmN0aW9uKGUpe3JldHVybiBjLmZyb21KU09OKHRoaXMsZSl9LGYucHJvdG90eXBlLnBvaW50PWZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiBuZXcgYyh0aGlzLGUsdCxyLG4pfSxjLmZyb21KU09OPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBjKGUsdFswXSx0WzFdLHRbMl0pfSxjLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpP1wiPEVDIFBvaW50IEluZmluaXR5PlwiOlwiPEVDIFBvaW50IHg6IFwiK3RoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrXCIgeTogXCIrdGhpcy55LmZyb21SZWQoKS50b1N0cmluZygxNiwyKStcIiB6OiBcIit0aGlzLnouZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpK1wiPlwifSxjLnByb3RvdHlwZS5pc0luZmluaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnguY21wbigwKSYmKDA9PT10aGlzLnkuY21wKHRoaXMueil8fHRoaXMuek9uZSYmMD09PXRoaXMueS5jbXAodGhpcy5jdXJ2ZS5jKSl9LGMucHJvdG90eXBlLl9leHREYmw9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLngucmVkU3FyKCksdD10aGlzLnkucmVkU3FyKCkscj10aGlzLnoucmVkU3FyKCk7cj1yLnJlZElBZGQocik7dmFyIG49dGhpcy5jdXJ2ZS5fbXVsQShlKSxpPXRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRTcXIoKS5yZWRJU3ViKGUpLnJlZElTdWIodCksbz1uLnJlZEFkZCh0KSxhPW8ucmVkU3ViKHIpLHM9bi5yZWRTdWIodCksZj1pLnJlZE11bChhKSxjPW8ucmVkTXVsKHMpLHU9aS5yZWRNdWwocyksaD1hLnJlZE11bChvKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChmLGMsaCx1KX0sYy5wcm90b3R5cGUuX3Byb2pEYmw9ZnVuY3Rpb24oKXt2YXIgZSx0LHIsbj10aGlzLngucmVkQWRkKHRoaXMueSkucmVkU3FyKCksaT10aGlzLngucmVkU3FyKCksbz10aGlzLnkucmVkU3FyKCk7aWYodGhpcy5jdXJ2ZS50d2lzdGVkKXt2YXIgYT0oYz10aGlzLmN1cnZlLl9tdWxBKGkpKS5yZWRBZGQobyk7aWYodGhpcy56T25lKWU9bi5yZWRTdWIoaSkucmVkU3ViKG8pLnJlZE11bChhLnJlZFN1Yih0aGlzLmN1cnZlLnR3bykpLHQ9YS5yZWRNdWwoYy5yZWRTdWIobykpLHI9YS5yZWRTcXIoKS5yZWRTdWIoYSkucmVkU3ViKGEpO2Vsc2V7dmFyIHM9dGhpcy56LnJlZFNxcigpLGY9YS5yZWRTdWIocykucmVkSVN1YihzKTtlPW4ucmVkU3ViKGkpLnJlZElTdWIobykucmVkTXVsKGYpLHQ9YS5yZWRNdWwoYy5yZWRTdWIobykpLHI9YS5yZWRNdWwoZil9fWVsc2V7dmFyIGM9aS5yZWRBZGQobyk7cz10aGlzLmN1cnZlLl9tdWxDKHRoaXMueikucmVkU3FyKCksZj1jLnJlZFN1YihzKS5yZWRTdWIocyk7ZT10aGlzLmN1cnZlLl9tdWxDKG4ucmVkSVN1YihjKSkucmVkTXVsKGYpLHQ9dGhpcy5jdXJ2ZS5fbXVsQyhjKS5yZWRNdWwoaS5yZWRJU3ViKG8pKSxyPWMucmVkTXVsKGYpfXJldHVybiB0aGlzLmN1cnZlLnBvaW50KGUsdCxyKX0sYy5wcm90b3R5cGUuZGJsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpP3RoaXM6dGhpcy5jdXJ2ZS5leHRlbmRlZD90aGlzLl9leHREYmwoKTp0aGlzLl9wcm9qRGJsKCl9LGMucHJvdG90eXBlLl9leHRBZGQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy55LnJlZFN1Yih0aGlzLngpLnJlZE11bChlLnkucmVkU3ViKGUueCkpLHI9dGhpcy55LnJlZEFkZCh0aGlzLngpLnJlZE11bChlLnkucmVkQWRkKGUueCkpLG49dGhpcy50LnJlZE11bCh0aGlzLmN1cnZlLmRkKS5yZWRNdWwoZS50KSxpPXRoaXMuei5yZWRNdWwoZS56LnJlZEFkZChlLnopKSxvPXIucmVkU3ViKHQpLGE9aS5yZWRTdWIobikscz1pLnJlZEFkZChuKSxmPXIucmVkQWRkKHQpLGM9by5yZWRNdWwoYSksdT1zLnJlZE11bChmKSxoPW8ucmVkTXVsKGYpLGw9YS5yZWRNdWwocyk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoYyx1LGwsaCl9LGMucHJvdG90eXBlLl9wcm9qQWRkPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbj10aGlzLnoucmVkTXVsKGUueiksaT1uLnJlZFNxcigpLG89dGhpcy54LnJlZE11bChlLngpLGE9dGhpcy55LnJlZE11bChlLnkpLHM9dGhpcy5jdXJ2ZS5kLnJlZE11bChvKS5yZWRNdWwoYSksZj1pLnJlZFN1YihzKSxjPWkucmVkQWRkKHMpLHU9dGhpcy54LnJlZEFkZCh0aGlzLnkpLnJlZE11bChlLngucmVkQWRkKGUueSkpLnJlZElTdWIobykucmVkSVN1YihhKSxoPW4ucmVkTXVsKGYpLnJlZE11bCh1KTtyZXR1cm4gdGhpcy5jdXJ2ZS50d2lzdGVkPyh0PW4ucmVkTXVsKGMpLnJlZE11bChhLnJlZFN1Yih0aGlzLmN1cnZlLl9tdWxBKG8pKSkscj1mLnJlZE11bChjKSk6KHQ9bi5yZWRNdWwoYykucmVkTXVsKGEucmVkU3ViKG8pKSxyPXRoaXMuY3VydmUuX211bEMoZikucmVkTXVsKGMpKSx0aGlzLmN1cnZlLnBvaW50KGgsdCxyKX0sYy5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT9lOmUuaXNJbmZpbml0eSgpP3RoaXM6dGhpcy5jdXJ2ZS5leHRlbmRlZD90aGlzLl9leHRBZGQoZSk6dGhpcy5fcHJvakFkZChlKX0sYy5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9oYXNEb3VibGVzKGUpP3RoaXMuY3VydmUuX2ZpeGVkTmFmTXVsKHRoaXMsZSk6dGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLGUpfSxjLnByb3RvdHlwZS5tdWxBZGQ9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsW3RoaXMsdF0sW2Uscl0sMiwhMSl9LGMucHJvdG90eXBlLmptdWxBZGQ9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsW3RoaXMsdF0sW2Uscl0sMiwhMCl9LGMucHJvdG90eXBlLm5vcm1hbGl6ZT1mdW5jdGlvbigpe2lmKHRoaXMuek9uZSlyZXR1cm4gdGhpczt2YXIgZT10aGlzLnoucmVkSW52bSgpO3JldHVybiB0aGlzLng9dGhpcy54LnJlZE11bChlKSx0aGlzLnk9dGhpcy55LnJlZE11bChlKSx0aGlzLnQmJih0aGlzLnQ9dGhpcy50LnJlZE11bChlKSksdGhpcy56PXRoaXMuY3VydmUub25lLHRoaXMuek9uZT0hMCx0aGlzfSxjLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngucmVkTmVnKCksdGhpcy55LHRoaXMueix0aGlzLnQmJnRoaXMudC5yZWROZWcoKSl9LGMucHJvdG90eXBlLmdldFg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKSx0aGlzLnguZnJvbVJlZCgpfSxjLnByb3RvdHlwZS5nZXRZPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCksdGhpcy55LmZyb21SZWQoKX0sYy5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXM9PT1lfHwwPT09dGhpcy5nZXRYKCkuY21wKGUuZ2V0WCgpKSYmMD09PXRoaXMuZ2V0WSgpLmNtcChlLmdldFkoKSl9LGMucHJvdG90eXBlLmVxWFRvUD1mdW5jdGlvbihlKXt2YXIgdD1lLnRvUmVkKHRoaXMuY3VydmUucmVkKS5yZWRNdWwodGhpcy56KTtpZigwPT09dGhpcy54LmNtcCh0KSlyZXR1cm4hMDtmb3IodmFyIHI9ZS5jbG9uZSgpLG49dGhpcy5jdXJ2ZS5yZWROLnJlZE11bCh0aGlzLnopOzspe2lmKHIuaWFkZCh0aGlzLmN1cnZlLm4pLHIuY21wKHRoaXMuY3VydmUucCk+PTApcmV0dXJuITE7aWYodC5yZWRJQWRkKG4pLDA9PT10aGlzLnguY21wKHQpKXJldHVybiEwfX0sYy5wcm90b3R5cGUudG9QPWMucHJvdG90eXBlLm5vcm1hbGl6ZSxjLnByb3RvdHlwZS5taXhlZEFkZD1jLnByb3RvdHlwZS5hZGR9LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt0LnNoYTE9cigxNDgpLHQuc2hhMjI0PXIoMTQ5KSx0LnNoYTI1Nj1yKDY2KSx0LnNoYTM4ND1yKDE1MCksdC5zaGE1MTI9cig2Nyl9LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDgpLGk9cigxNyksbz1yKDY1KSxhPW4ucm90bDMyLHM9bi5zdW0zMixmPW4uc3VtMzJfNSxjPW8uZnRfMSx1PWkuQmxvY2tIYXNoLGg9WzE1MTg1MDAyNDksMTg1OTc3NTM5MywyNDAwOTU5NzA4LDMzOTU0Njk3ODJdO2Z1bmN0aW9uIGwoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBsKSlyZXR1cm4gbmV3IGw7dS5jYWxsKHRoaXMpLHRoaXMuaD1bMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4LDMyODUzNzc1MjBdLHRoaXMuVz1uZXcgQXJyYXkoODApfW4uaW5oZXJpdHMobCx1KSxlLmV4cG9ydHM9bCxsLmJsb2NrU2l6ZT01MTIsbC5vdXRTaXplPTE2MCxsLmhtYWNTdHJlbmd0aD04MCxsLnBhZExlbmd0aD02NCxsLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXRoaXMuVyxuPTA7bjwxNjtuKyspcltuXT1lW3Qrbl07Zm9yKDtuPHIubGVuZ3RoO24rKylyW25dPWEocltuLTNdXnJbbi04XV5yW24tMTRdXnJbbi0xNl0sMSk7dmFyIGk9dGhpcy5oWzBdLG89dGhpcy5oWzFdLHU9dGhpcy5oWzJdLGw9dGhpcy5oWzNdLGQ9dGhpcy5oWzRdO2ZvcihuPTA7bjxyLmxlbmd0aDtuKyspe3ZhciBwPX5+KG4vMjApLGI9ZihhKGksNSksYyhwLG8sdSxsKSxkLHJbbl0saFtwXSk7ZD1sLGw9dSx1PWEobywzMCksbz1pLGk9Yn10aGlzLmhbMF09cyh0aGlzLmhbMF0saSksdGhpcy5oWzFdPXModGhpcy5oWzFdLG8pLHRoaXMuaFsyXT1zKHRoaXMuaFsyXSx1KSx0aGlzLmhbM109cyh0aGlzLmhbM10sbCksdGhpcy5oWzRdPXModGhpcy5oWzRdLGQpfSxsLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKGUpe3JldHVyblwiaGV4XCI9PT1lP24udG9IZXgzMih0aGlzLmgsXCJiaWdcIik6bi5zcGxpdDMyKHRoaXMuaCxcImJpZ1wiKX19LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDgpLGk9cig2Nik7ZnVuY3Rpb24gbygpe2lmKCEodGhpcyBpbnN0YW5jZW9mIG8pKXJldHVybiBuZXcgbztpLmNhbGwodGhpcyksdGhpcy5oPVszMjM4MzcxMDMyLDkxNDE1MDY2Myw4MTI3MDI5OTksNDE0NDkxMjY5Nyw0MjkwNzc1ODU3LDE3NTA2MDMwMjUsMTY5NDA3NjgzOSwzMjA0MDc1NDI4XX1uLmluaGVyaXRzKG8saSksZS5leHBvcnRzPW8sby5ibG9ja1NpemU9NTEyLG8ub3V0U2l6ZT0yMjQsby5obWFjU3RyZW5ndGg9MTkyLG8ucGFkTGVuZ3RoPTY0LG8ucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuXCJoZXhcIj09PWU/bi50b0hleDMyKHRoaXMuaC5zbGljZSgwLDcpLFwiYmlnXCIpOm4uc3BsaXQzMih0aGlzLmguc2xpY2UoMCw3KSxcImJpZ1wiKX19LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDgpLGk9cig2Nyk7ZnVuY3Rpb24gbygpe2lmKCEodGhpcyBpbnN0YW5jZW9mIG8pKXJldHVybiBuZXcgbztpLmNhbGwodGhpcyksdGhpcy5oPVszNDE4MDcwMzY1LDMyMzgzNzEwMzIsMTY1NDI3MDI1MCw5MTQxNTA2NjMsMjQzODUyOTM3MCw4MTI3MDI5OTksMzU1NDYyMzYwLDQxNDQ5MTI2OTcsMTczMTQwNTQxNSw0MjkwNzc1ODU3LDIzOTQxODAyMzEsMTc1MDYwMzAyNSwzNjc1MDA4NTI1LDE2OTQwNzY4MzksMTIwMzA2MjgxMywzMjA0MDc1NDI4XX1uLmluaGVyaXRzKG8saSksZS5leHBvcnRzPW8sby5ibG9ja1NpemU9MTAyNCxvLm91dFNpemU9Mzg0LG8uaG1hY1N0cmVuZ3RoPTE5MixvLnBhZExlbmd0aD0xMjgsby5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbihlKXtyZXR1cm5cImhleFwiPT09ZT9uLnRvSGV4MzIodGhpcy5oLnNsaWNlKDAsMTIpLFwiYmlnXCIpOm4uc3BsaXQzMih0aGlzLmguc2xpY2UoMCwxMiksXCJiaWdcIil9fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cig4KSxpPXIoMTcpLG89bi5yb3RsMzIsYT1uLnN1bTMyLHM9bi5zdW0zMl8zLGY9bi5zdW0zMl80LGM9aS5CbG9ja0hhc2g7ZnVuY3Rpb24gdSgpe2lmKCEodGhpcyBpbnN0YW5jZW9mIHUpKXJldHVybiBuZXcgdTtjLmNhbGwodGhpcyksdGhpcy5oPVsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzgsMzI4NTM3NzUyMF0sdGhpcy5lbmRpYW49XCJsaXR0bGVcIn1mdW5jdGlvbiBoKGUsdCxyLG4pe3JldHVybiBlPD0xNT90XnJebjplPD0zMT90JnJ8fnQmbjplPD00Nz8odHx+cilebjplPD02Mz90Jm58ciZ+bjp0XihyfH5uKX1mdW5jdGlvbiBsKGUpe3JldHVybiBlPD0xNT8wOmU8PTMxPzE1MTg1MDAyNDk6ZTw9NDc/MTg1OTc3NTM5MzplPD02Mz8yNDAwOTU5NzA4OjI4NDA4NTM4Mzh9ZnVuY3Rpb24gZChlKXtyZXR1cm4gZTw9MTU/MTM1MjgyOTkyNjplPD0zMT8xNTQ4NjAzNjg0OmU8PTQ3PzE4MzYwNzI2OTE6ZTw9NjM/MjA1Mzk5NDIxNzowfW4uaW5oZXJpdHModSxjKSx0LnJpcGVtZDE2MD11LHUuYmxvY2tTaXplPTUxMix1Lm91dFNpemU9MTYwLHUuaG1hY1N0cmVuZ3RoPTE5Mix1LnBhZExlbmd0aD02NCx1LnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXRoaXMuaFswXSxuPXRoaXMuaFsxXSxpPXRoaXMuaFsyXSxjPXRoaXMuaFszXSx1PXRoaXMuaFs0XSx2PXIsbT1uLF89aSx3PWMsRT11LEE9MDtBPDgwO0ErKyl7dmFyIFM9YShvKGYocixoKEEsbixpLGMpLGVbcFtBXSt0XSxsKEEpKSx5W0FdKSx1KTtyPXUsdT1jLGM9byhpLDEwKSxpPW4sbj1TLFM9YShvKGYodixoKDc5LUEsbSxfLHcpLGVbYltBXSt0XSxkKEEpKSxnW0FdKSxFKSx2PUUsRT13LHc9byhfLDEwKSxfPW0sbT1TfVM9cyh0aGlzLmhbMV0saSx3KSx0aGlzLmhbMV09cyh0aGlzLmhbMl0sYyxFKSx0aGlzLmhbMl09cyh0aGlzLmhbM10sdSx2KSx0aGlzLmhbM109cyh0aGlzLmhbNF0scixtKSx0aGlzLmhbNF09cyh0aGlzLmhbMF0sbixfKSx0aGlzLmhbMF09U30sdS5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbihlKXtyZXR1cm5cImhleFwiPT09ZT9uLnRvSGV4MzIodGhpcy5oLFwibGl0dGxlXCIpOm4uc3BsaXQzMih0aGlzLmgsXCJsaXR0bGVcIil9O3ZhciBwPVswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDcsNCwxMywxLDEwLDYsMTUsMywxMiwwLDksNSwyLDE0LDExLDgsMywxMCwxNCw0LDksMTUsOCwxLDIsNywwLDYsMTMsMTEsNSwxMiwxLDksMTEsMTAsMCw4LDEyLDQsMTMsMyw3LDE1LDE0LDUsNiwyLDQsMCw1LDksNywxMiwyLDEwLDE0LDEsMyw4LDExLDYsMTUsMTNdLGI9WzUsMTQsNywwLDksMiwxMSw0LDEzLDYsMTUsOCwxLDEwLDMsMTIsNiwxMSwzLDcsMCwxMyw1LDEwLDE0LDE1LDgsMTIsNCw5LDEsMiwxNSw1LDEsMyw3LDE0LDYsOSwxMSw4LDEyLDIsMTAsMCw0LDEzLDgsNiw0LDEsMywxMSwxNSwwLDUsMTIsMiwxMyw5LDcsMTAsMTQsMTIsMTUsMTAsNCwxLDUsOCw3LDYsMiwxMywxNCwwLDMsOSwxMV0seT1bMTEsMTQsMTUsMTIsNSw4LDcsOSwxMSwxMywxNCwxNSw2LDcsOSw4LDcsNiw4LDEzLDExLDksNywxNSw3LDEyLDE1LDksMTEsNywxMywxMiwxMSwxMyw2LDcsMTQsOSwxMywxNSwxNCw4LDEzLDYsNSwxMiw3LDUsMTEsMTIsMTQsMTUsMTQsMTUsOSw4LDksMTQsNSw2LDgsNiw1LDEyLDksMTUsNSwxMSw2LDgsMTMsMTIsNSwxMiwxMywxNCwxMSw4LDUsNl0sZz1bOCw5LDksMTEsMTMsMTUsMTUsNSw3LDcsOCwxMSwxNCwxNCwxMiw2LDksMTMsMTUsNywxMiw4LDksMTEsNyw3LDEyLDcsNiwxNSwxMywxMSw5LDcsMTUsMTEsOCw2LDYsMTQsMTIsMTMsNSwxNCwxMywxMyw3LDUsMTUsNSw4LDExLDE0LDE0LDYsMTQsNiw5LDEyLDksMTIsNSwxNSw4LDgsNSwxMiw5LDEyLDUsMTQsNiw4LDEzLDYsNSwxNSwxMywxMSwxMV19LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDgpLGk9cigxMSk7ZnVuY3Rpb24gbyhlLHQscil7aWYoISh0aGlzIGluc3RhbmNlb2YgbykpcmV0dXJuIG5ldyBvKGUsdCxyKTt0aGlzLkhhc2g9ZSx0aGlzLmJsb2NrU2l6ZT1lLmJsb2NrU2l6ZS84LHRoaXMub3V0U2l6ZT1lLm91dFNpemUvOCx0aGlzLmlubmVyPW51bGwsdGhpcy5vdXRlcj1udWxsLHRoaXMuX2luaXQobi50b0FycmF5KHQscikpfWUuZXhwb3J0cz1vLG8ucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKGUpe2UubGVuZ3RoPnRoaXMuYmxvY2tTaXplJiYoZT0obmV3IHRoaXMuSGFzaCkudXBkYXRlKGUpLmRpZ2VzdCgpKSxpKGUubGVuZ3RoPD10aGlzLmJsb2NrU2l6ZSk7Zm9yKHZhciB0PWUubGVuZ3RoO3Q8dGhpcy5ibG9ja1NpemU7dCsrKWUucHVzaCgwKTtmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF1ePTU0O2Zvcih0aGlzLmlubmVyPShuZXcgdGhpcy5IYXNoKS51cGRhdGUoZSksdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF1ePTEwNjt0aGlzLm91dGVyPShuZXcgdGhpcy5IYXNoKS51cGRhdGUoZSl9LG8ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmlubmVyLnVwZGF0ZShlLHQpLHRoaXN9LG8ucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vdXRlci51cGRhdGUodGhpcy5pbm5lci5kaWdlc3QoKSksdGhpcy5vdXRlci5kaWdlc3QoZSl9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17ZG91Ymxlczp7c3RlcDo0LHBvaW50czpbW1wiZTYwZmNlOTNiNTllOWVjNTMwMTFhYWJjMjFjMjNlOTdiMmEzMTM2OWI4N2E1YWU5YzQ0ZWU4OWUyYTZkZWMwYVwiLFwiZjdlMzUwNzM5OWU1OTU5MjlkYjk5ZjM0ZjU3OTM3MTAxMjk2ODkxZTQ0ZDIzZjBiZTFmMzJjY2U2OTYxNjgyMVwiXSxbXCI4MjgyMjYzMjEyYzYwOWQ5ZWEyYTZlM2UxNzJkZTIzOGQ4YzM5Y2FiZDVhYzFjYTEwNjQ2ZTIzZmQ1ZjUxNTA4XCIsXCIxMWY4YTgwOTg1NTdkZmU0NWU4MjU2ZTgzMGI2MGFjZTYyZDYxM2FjMmY3YjE3YmVkMzFiNmVhZmY2ZTI2Y2FmXCJdLFtcIjE3NWUxNTlmNzI4Yjg2NWE3MmY5OWNjNmM2ZmM4NDZkZTBiOTM4MzNmZDIyMjJlZDczZmNlNWI1NTFlNWI3MzlcIixcImQzNTA2ZTBkOWUzYzc5ZWJhNGVmOTdhNTFmZjcxZjVlYWNiNTk1NWFkZDI0MzQ1YzZlZmE2ZmZlZTlmZWQ2OTVcIl0sW1wiMzYzZDkwZDQ0N2IwMGM5Yzk5Y2VhYzA1YjYyNjJlZTA1MzQ0MWM3ZTU1NTUyZmZlNTI2YmFkOGY4M2ZmNDY0MFwiLFwiNGUyNzNhZGZjNzMyMjIxOTUzYjQ0NTM5N2YzMzYzMTQ1YjlhODkwMDgxOTllY2I2MjAwM2M3ZjNiZWU5ZGU5XCJdLFtcIjhiNGI1ZjE2NWRmM2MyYmU4YzYyNDRiNWI3NDU2Mzg4NDNlNGE3ODFhMTViY2QxYjY5Zjc5YTU1ZGZmZGY4MGNcIixcIjRhYWQwYTZmNjhkMzA4YjRiM2ZiZDc4MTNhYjBkYTA0ZjllMzM2NTQ2MTYyZWU1NmIzZWZmMGM2NWZkNGZkMzZcIl0sW1wiNzIzY2JhYTZlNWRiOTk2ZDZiZjc3MWMwMGJkNTQ4YzdiNzAwZGJmZmE2YzBlNzdiY2I2MTE1OTI1MjMyZmNkYVwiLFwiOTZlODY3YjU1OTVjYzQ5OGE5MjExMzc0ODg4MjRkNmUyNjYwYTA2NTM3Nzk0OTQ4MDFkYzA2OWQ5ZWIzOWY1ZlwiXSxbXCJlZWJmYTRkNDkzYmViZjk4YmE1ZmVlYzgxMmMyZDNiNTA5NDc5NjEyMzdhOTE5ODM5YTUzM2VjYTBlN2RkN2ZhXCIsXCI1ZDlhOGNhMzk3MGVmMGYyNjllZTdlZGFmMTc4MDg5ZDlhZTRjZGMzYTcxMWY3MTJkZGZkNGZkYWUxZGU4OTk5XCJdLFtcIjEwMGY0NGRhNjk2ZTcxNjcyNzkxZDBhMDliN2JkZTQ1OWYxMjE1YTI5YjNjMDNiZmVmZDc4MzViMzlhNDhkYjBcIixcImNkZDllMTMxOTJhMDBiNzcyZWM4ZjMzMDBjMDkwNjY2YjdmZjRhMThmZjUxOTVhYzBmYmQ1Y2Q2MmJjNjVhMDlcIl0sW1wiZTEwMzFiZTI2MmM3ZWQxYjFkYzkyMjdhNGEwNGMwMTdhNzdmOGQ0NDY0ZjNiMzg1MmM4YWNkZTZlNTM0ZmQyZFwiLFwiOWQ3MDYxOTI4OTQwNDA1ZTZiYjZhNDE3NjU5NzUzNWFmMjkyZGQ0MTllMWNlZDc5YTQ0ZjE4ZjI5NDU2YTAwZFwiXSxbXCJmZWVhNmNhZTQ2ZDU1YjUzMGFjMjgzOWYxNDNiZDdlYzVjZjhiMjY2YTQxZDZhZjUyZDVlNjg4ZDkwOTQ2OTZkXCIsXCJlNTdjNmI2Yzk3ZGNlMWJhYjA2ZTRlMTJiZjNlY2Q1Yzk4MWM4OTU3Y2M0MTQ0MmQzMTU1ZGViZjE4MDkwMDg4XCJdLFtcImRhNjdhOTFkOTEwNDljZGNiMzY3YmU0YmU2ZmZjYTNjZmVlZDY1N2Q4MDg1ODNkZTMzZmE5NzhiYzFlYzZjYjFcIixcIjliYWNhYTM1NDgxNjQyYmM0MWY0NjNmN2VjOTc4MGU1ZGVjN2FkYzUwOGY3NDBhMTdlOWVhOGUyN2E2OGJlMWRcIl0sW1wiNTM5MDRmYWEwYjMzNGNkZGE2ZTAwMDkzNWVmMjIxNTFlYzA4ZDBmN2JiMTEwNjlmNTc1NDVjY2MxYTM3YjdjMFwiLFwiNWJjMDg3ZDBiYzgwMTA2ZDg4YzllY2NhYzIwZDNjMWMxMzk5OTk4MWUxNDQzNDY5OWRjYjA5NmIwMjI3NzFjOFwiXSxbXCI4ZTdiY2QwYmQzNTk4M2E3NzE5Y2NhNzc2NGNhOTA2Nzc5YjUzYTA0M2E5YjhiY2FlZmY5NTlmNDNhZDg2MDQ3XCIsXCIxMGI3NzcwYjJhM2RhNGIzOTQwMzEwNDIwY2E5NTE0NTc5ZTg4ZTJlNDdmZDY4YjNlYTEwMDQ3ZTg0NjAzNzJhXCJdLFtcIjM4NWVlZDM0YzFjZGZmMjFlNmQwODE4Njg5YjgxYmRlNzFhN2Y0ZjE4Mzk3ZTY2OTBhODQxZTE1OTljNDM4NjJcIixcIjI4M2JlYmMzZThlYTIzZjU2NzAxZGUxOWU5ZWJmNDU3NmIzMDRlZWMyMDg2ZGM4Y2MwNDU4ZmU1NTQyZTU0NTNcIl0sW1wiNmY5ZDliODAzZWNmMTkxNjM3YzczYTQ0MTNkZmExODBmZGRmODRhNTk0N2ZiYzljNjA2ZWQ4NmMzZmFjM2E3XCIsXCI3YzgwYzY4ZTYwMzA1OWJhNjliOGUyYTMwZTQ1YzRkNDdlYTRkZDJmNWMyODEwMDJkODY4OTA2MDNhODQyMTYwXCJdLFtcIjMzMjJkNDAxMjQzYzRlMjU4MmEyMTQ3YzEwNGQ2ZWNiZjc3NGQxNjNkYjBmNWU1MzEzYjdlMGU3NDJkMGU2YmRcIixcIjU2ZTcwNzk3ZTk2NjRlZjViZmIwMTliYzRkZGFmOWI3MjgwNWY2M2VhMjg3M2FmNjI0ZjNhMmU5NmMyOGIyYTBcIl0sW1wiODU2NzJjN2QyZGUwYjdkYTJiZDE3NzBkODk2NjU4Njg3NDFiM2Y5YWY3NjQzMzk3NzIxZDc0ZDI4MTM0YWI4M1wiLFwiN2M0ODFiOWI1YjQzYjJlYjYzNzQwNDliZmE2MmMyZTVlNzdmMTdmY2M1Mjk4ZjQ0YzhlMzA5NGY3OTAzMTNhNlwiXSxbXCI5NDhiZjgwOWIxOTg4YTQ2YjA2YzlmMTkxOTQxM2IxMGY5MjI2YzYwZjY2ODgzMmZmZDk1OWFmNjBjODJhMGFcIixcIjUzYTU2Mjg1NmRjYjY2NDZkYzZiNzRjNWQxYzM0MThjNmQ0ZGZmMDhjOTdjZDJiZWQ0Y2I3Zjg4ZDhjOGU1ODlcIl0sW1wiNjI2MGNlN2Y0NjE4MDFjMzRmMDY3Y2UwZjAyODczYThmMWIwZTQ0ZGZjNjk3NTJhY2NlY2Q4MTlmMzhmZDhlOFwiLFwiYmMyZGE4MmI2ZmE1YjU3MWE3ZjA5MDQ5Nzc2YTFlZjdlY2QyOTIyMzgwNTFjMTk4YzFhODRlOTViMmI0YWUxN1wiXSxbXCJlNTAzN2RlMGFmYzFkOGQ0M2Q4MzQ4NDE0YmJmNDEwMzA0M2VjOGY1NzViZmRjNDMyOTUzY2M4ZDIwMzdmYTJkXCIsXCI0NTcxNTM0YmFhOTRkM2I1ZjlmOThkMDlmYjk5MGJkZGJkNWY1YjAzZWM0ODFmMTBlMGU1ZGM4NDFkNzU1YmRhXCJdLFtcImUwNjM3MmIwZjRhMjA3YWRmNWVhOTA1ZThmMTc3MWI0ZTdlOGRiZDFjNmE2YzViNzI1ODY2YTBhZTRmY2U3MjVcIixcIjdhOTA4OTc0YmNlMThjZmUxMmEyN2JiMmFkNWE0ODhjZDc0ODRhNzc4NzEwNDg3MGIyNzAzNGY5NGVlZTMxZGRcIl0sW1wiMjEzYzdhNzE1Y2Q1ZDQ1MzU4ZDBiYmY5ZGMwY2UwMjIwNGIxMGJkZGUyYTNmNTg1NDBhZDY5MDhkMDU1OTc1NFwiLFwiNGI2ZGFkMGI1YWU0NjI1MDcwMTNhZDA2MjQ1YmExOTBiYjQ4NTBmNWYzNmE3ZWVkZGZmMmMyNzUzNGI0NThmMlwiXSxbXCI0ZTdjMjcyYTdhZjRiMzRlOGRiYjkzNTJhNTQxOWE4N2UyODM4YzcwYWRjNjJjZGRmMGNjM2EzYjA4ZmJkNTNjXCIsXCIxNzc0OWM3NjZjOWQwYjE4ZTE2ZmQwOWY2ZGVmNjgxYjUzMGI5NjE0YmZmN2RkMzNlMGIzOTQxODE3ZGNhYWU2XCJdLFtcImZlYTc0ZTNkYmU3NzhiMWIxMGYyMzhhZDYxNjg2YWE1Yzc2ZTNkYjJiZTQzMDU3NjMyNDI3ZTI4NDBmYjI3YjZcIixcIjZlMDU2OGRiOWIwYjEzMjk3Y2Y2NzRkZWNjYjZhZjkzMTI2YjU5NmI5NzNmN2I3NzcwMWQzZGI3ZjIzY2I5NmZcIl0sW1wiNzZlNjQxMTNmNjc3Y2YwZTEwYTI1NzBkNTk5OTY4ZDMxNTQ0ZTE3OWI3NjA0MzI5NTJjMDJhNDQxN2JkZGUzOVwiLFwiYzkwZGRmOGRlZTRlOTVjZjU3NzA2NmQ3MDY4MWYwZDM1ZTJhMzNkMmI1NmQyMDMyYjRiMTc1MmQxOTAxYWMwMVwiXSxbXCJjNzM4YzU2YjAzYjJhYmUxZTgyODFiYWE3NDNmOGY5YThmN2NjNjQzZGYyNmNiZWUzYWIxNTAyNDJiY2JiODkxXCIsXCI4OTNmYjU3ODk1MWFkMjUzN2Y3MThmMmVhY2JmYmJiYjgyMzE0ZWVmNzg4MGNmZTkxN2U3MzVkOTY5OWE4NGMzXCJdLFtcImQ4OTU2MjY1NDhiNjViODFlMjY0Yzc2MzdjOTcyODc3ZDFkNzJlNWYzYTkyNTAxNDM3MmU5ZjY1ODhmNmMxNGJcIixcImZlYmZhYTM4ZjJiYzdlYWU3MjhlYzYwODE4YzM0MGViMDM0MjhkNjMyYmIwNjdlMTc5MzYzZWQ3NWQ3ZDk5MWZcIl0sW1wiYjhkYTk0MDMyYTk1NzUxOGViMGY2NDMzNTcxZTg3NjFjZWZmYzczNjkzZTg0ZWRkNDkxNTBhNTY0ZjY3NmUwM1wiLFwiMjgwNGRmYTQ0ODA1YTFlNGQ3Yzk5Y2M5NzYyODA4YjA5MmNjNTg0ZDk1ZmYzYjUxMTQ4OGU0ZTc0ZWZkZjZlN1wiXSxbXCJlODBmZWExNDQ0MWZiMzNhN2Q4YWRhYjk0NzVkN2ZhYjIwMTllZmZiNTE1NmE3OTJmMWExMTc3OGUzYzBkZjVkXCIsXCJlZWQxZGU3ZjYzOGUwMDc3MWU4OTc2OGNhM2NhOTQ0NzJkMTU1ZTgwYWYzMjJlYTlmY2I0MjkxYjZhYzllYzc4XCJdLFtcImEzMDE2OTdiZGZjZDcwNDMxM2JhNDhlNTFkNTY3NTQzZjJhMTgyMDMxZWZkNjkxNWRkYzA3YmJjYzRlMTYwNzBcIixcIjczNzBmOTFjZmI2N2U0ZjUwODE4MDlmYTI1ZDQwZjliMTczNWRiZjdjMGExMWExMzBjMGQxYTA0MWUxNzdlYTFcIl0sW1wiOTBhZDg1YjM4OWQ2YjkzNjQ2M2Y5ZDA1MTI2NzhkZTIwOGNjMzMwYjExMzA3ZmZmYWI3YWM2M2UzZmIwNGVkNFwiLFwiZTUwN2EzNjIwYTM4MjYxYWZmZGNiZDk0MjcyMjJiODM5YWVmYWJlMTU4Mjg5NGQ5OTFkNGQ0OGNiNmVmMTUwXCJdLFtcIjhmNjhiOWQyZjYzYjVmMzM5MjM5YzFhZDk4MWYxNjJlZTg4YzU2Nzg3MjNlYTMzNTFiN2I0NDRjOWVjNGMwZGFcIixcIjY2MmE5ZjJkYmEwNjM5ODZkZTFkOTBjMmI2YmUyMTVkYmJlYTJjZmU5NTUxMGJmZGYyM2NiZjc5NTAxZmZmODJcIl0sW1wiZTRmM2ZiMDE3NmFmODVkNjVmZjk5ZmY5MTk4YzM2MDkxZjQ4ZTg2NTAzNjgxZTNlNjY4NmZkNTA1MzIzMWUxMVwiLFwiMWU2MzYzM2FkMGVmNGYxYzE2NjFhNmQwZWEwMmI3Mjg2Y2M3ZTc0ZWM5NTFkMWM5ODIyYzM4NTc2ZmViNzNiY1wiXSxbXCI4YzAwZmE5YjE4ZWJmMzMxZWI5NjE1MzdhNDVhNDI2NmM3MDM0ZjJmMGQ0ZTFkMDcxNmZiNmVhZTIwZWFlMjllXCIsXCJlZmE0NzI2N2ZlYTUyMWExYTlkYzM0M2EzNzM2Yzk3NGMyZmFkYWZhODFlMzZjNTRlN2QyYTRjNjY3MDI0MTRiXCJdLFtcImU3YTI2Y2U2OWRkNDgyOWYzZTEwY2VjMGE5ZTk4ZWQzMTQzZDA4NGYzMDhiOTJjMDk5N2ZkZGZjNjBjYjNlNDFcIixcIjJhNzU4ZTMwMGZhNzk4NGI0NzFiMDA2YTFhYWZiYjE4ZDBhNmIyYzA0MjBlODNlMjBlOGE5NDIxY2YyY2ZkNTFcIl0sW1wiYjY0NTllMGVlMzY2MmVjOGQyMzU0MGMyMjNiY2JkYzU3MWNiY2I5NjdkNzk0MjRmM2NmMjllYjNkZTZiODBlZlwiLFwiNjdjODc2ZDA2ZjNlMDZkZTFkYWRmMTZlNTY2MWRiM2M0YjNhZTZkNDhlMzViMmZmMzBiZjBiNjFhNzFiYTQ1XCJdLFtcImQ2OGE4MGM4MjgwYmI4NDA3OTMyMzRhYTExOGYwNjIzMWQ2ZjFmYzY3ZTczYzVhNWRlZGEwZjViNDk2OTQzZThcIixcImRiOGJhOWZmZjRiNTg2ZDAwYzRiMWY5MTc3YjBlMjhiNWIwZTdiOGY3ODQ1Mjk1YTI5NGM4NDI2NmIxMzMxMjBcIl0sW1wiMzI0YWVkN2RmNjVjODA0MjUyZGMwMjcwOTA3YTMwYjA5NjEyYWViOTczNDQ5Y2VhNDA5NTk4MGZjMjhkM2Q1ZFwiLFwiNjQ4YTM2NTc3NGI2MWYyZmYxMzBjMGMzNWFlYzFmNGYxOTIxM2IwYzdlMzMyODQzOTY3MjI0YWY5NmFiN2M4NFwiXSxbXCI0ZGY5YzE0OTE5Y2RlNjFmNmQ1MWRmZGJlNWZlZTVkY2VlYzQxNDNiYThkMWNhODg4ZThiZDM3M2ZkMDU0Yzk2XCIsXCIzNWVjNTEwOTJkODcyODA1MDk3NGMyM2ExZDg1ZDRiNWQ1MDZjZGMyODg0OTAxOTJlYmFjMDZjYWQxMGQ1ZFwiXSxbXCI5YzM5MTlhODRhNDc0ODcwZmFlZDhhOWMxY2M2NjAyMTUyMzQ4OTA1NGQ3ZjAzMDhjYmZjOTljOGFjMWY5OGNkXCIsXCJkZGI4NGYwZjRhNGRkZDU3NTg0ZjA0NGJmMjYwZTY0MTkwNTMyNmY3NmM2NGM4ZTZiZTdlNWUwM2Q0ZmM1OTlkXCJdLFtcIjYwNTcxNzBiMWRkMTJmZGY4ZGUwNWYyODFkOGUwNmJiOTFlMTQ5M2E4YjkxZDRjYzVhMjEzODIxMjBhOTU5ZTVcIixcIjlhMWFmMGIyNmE2YTQ4MDdhZGQ5YTJkYWY3MWRmMjYyNDY1MTUyYmMzZWUyNGM2NWU4OTliZTkzMjM4NWEyYThcIl0sW1wiYTU3NmRmOGUyM2EwODQxMTQyMTQzOWE0NTE4ZGEzMTg4MGNlZjBmYmE3ZDRkZjEyYjFhNjk3M2VlY2I5NDI2NlwiLFwiNDBhNmJmMjBlNzY2NDBiMmM5MmI5N2FmZTU4Y2Q4MmM0MzJlMTBhN2Y1MTRkOWYzZWU4YmUxMWFlMWIyOGVjOFwiXSxbXCI3Nzc4YTc4YzI4ZGVjM2UzMGEwNWZlOTYyOWRlOGMzOGJiMzBkMWY1Y2Y5YTNhMjA4Zjc2Mzg4OWJlNThhZDcxXCIsXCIzNDYyNmQ5YWI1YTViMjJmZjcwOThlMTJmMmZmNTgwMDg3YjM4NDExZmYyNGFjNTYzYjUxM2ZjMWZkOWY0M2FjXCJdLFtcIjkyODk1NWVlNjM3YTg0NDYzNzI5ZmQzMGU3YWZkMmVkNWY5NjI3NGU1YWQ3ZTVjYjA5ZWRhOWMwNmQ5MDNhY1wiLFwiYzI1NjIxMDAzZDNmNDJhODI3Yjc4YTEzMDkzYTk1ZWVhYzNkMjZlZmE4YThkODNmYzUxODBlOTM1YmNkMDkxZlwiXSxbXCI4NWQwZmVmM2VjNmRiMTA5Mzk5MDY0ZjNhMGUzYjI4NTU2NDViNGE5MDdhZDM1NDUyN2FhZTc1MTYzZDgyNzUxXCIsXCIxZjAzNjQ4NDEzYTM4YzBiZTI5ZDQ5NmU1ODJjZjU2NjNlODc1MWU5Njg3NzMzMTU4MmMyMzdhMjRlYjFmOTYyXCJdLFtcImZmMmIwZGNlOTdlZWNlOTdjMWM5YjYwNDE3OThiODVkZmRmYjZkODg4MmRhMjAzMDhmNTQwNDgyNDUyNjA4N2VcIixcIjQ5M2QxM2ZlZjUyNGJhMTg4YWY0YzRkYzU0ZDA3OTM2YzdiN2VkNmZiOTBlMmNlYjJjOTUxZTAxZjBjMjk5MDdcIl0sW1wiODI3ZmJiZTRiMWU4ODBlYTllZDJiMmU2MzAxYjIxMmI1N2YxZWUxNDhjZDZkZDI4NzgwZTVlMmNmODU2ZTI0MVwiLFwiYzYwZjljOTIzYzcyN2IwYjcxYmVmMmM2N2QxZDEyNjg3ZmY3YTYzMTg2OTAzMTY2ZDYwNWI2OGJhZWMyOTNlY1wiXSxbXCJlYWE2NDlmMjFmNTFiZGJhZTdiZTRhZTM0Y2U2ZTUyMTdhNThmZGNlN2Y0N2Y5YWE3ZjNiNThmYTIxMjBlMmIzXCIsXCJiZTMyNzllZDViYmJiMDNhYzY5YTgwZjg5ODc5YWE1YTAxYTZiOTY1ZjEzZjdlNTlkNDdhNTMwNWJhNWFkOTNkXCJdLFtcImU0YTQyZDQzYzVjZjE2OWQ5MzkxZGY2ZGVjZjQyZWU1NDFiNmQ4ZjBjOWExMzc0MDFlMjM2MzJkZGEzNGQyNGZcIixcIjRkOWY5MmU3MTZkMWM3MzUyNmZjOTljY2ZiOGFkMzRjZTg4NmVlZGZhOGQ4ZTRmMTNhN2Y3MTMxZGViYTk0MTRcIl0sW1wiMWVjODBmZWYzNjBjYmRkOTU0MTYwZmFkYWIzNTJiNmI5MmI1MzU3NmE4OGZlYTQ5NDcxNzNiOWQ0MzAwYmYxOVwiLFwiYWVlZmU5Mzc1NmI1MzQwZDJmM2E0OTU4YTdhYmJmNWUwMTQ2ZTc3ZjYyOTVhMDdiNjcxY2RjMWNjMTA3Y2VmZFwiXSxbXCIxNDZhNzc4YzA0NjcwYzJmOTFiMDBhZjQ2ODBkZmE4YmNlMzQ5MDcxN2Q1OGJhODg5ZGRiNTkyODM2NjY0MmJlXCIsXCJiMzE4ZTBlYzMzNTQwMjhhZGQ2Njk4MjdmOWQ0YjI4NzBhYWE5NzFkMmY3ZTVlZDFkMGIyOTc0ODNkODNlZmQwXCJdLFtcImZhNTBjMGY2MWQyMmU1ZjA3ZTNhY2ViYjFhYTA3YjEyOGQwMDEyMjA5YTI4Yjk3NzZkNzZhODc5MzE4MGVlZjlcIixcIjZiODRjNjkyMjM5N2ViYTliNzJjZDI4NzIyODFhNjhhNWU2ODMyOTNhNTdhMjEzYjM4Y2Q4ZDdkM2Y0ZjI4MTFcIl0sW1wiZGExZDYxZDBjYTcyMWExMWIxYTViZjZiN2Q4OGU4NDIxYTI4OGFiNWQ1YmJhNTIyMGU1M2QzMmI1ZjA2N2VjMlwiLFwiODE1N2Y1NWE3Yzk5MzA2Yzc5YzA3NjYxNjFjOTFlMjk2NmE3Mzg5OWQyNzliNDhhNjU1ZmJhMGYxYWQ4MzZmMVwiXSxbXCJhOGUyODJmZjBjOTcwNjkwNzIxNWZmOThlOGZkNDE2NjE1MzExZGUwNDQ2ZjFlMDYyYTczYjA2MTBkMDY0ZTEzXCIsXCI3Zjk3MzU1YjhkYjgxYzA5YWJmYjdmM2M1YjI1MTU4ODhiNjc5YTNlNTBkZDZiZDZjZWY3YzczMTExZjRjYzBjXCJdLFtcIjE3NGE1M2I5YzlhMjg1ODcyZDM5ZTU2ZTY5MTNjYWIxNWQ1OWIxZmE1MTI1MDhjMDIyZjM4MmRlODMxOTQ5N2NcIixcImNjYzlkYzM3YWJmYzljMTY1N2I0MTU1ZjJjNDdmOWU2NjQ2YjNhMWQ4Y2I5ODU0MzgzZGExM2FjMDc5YWZhNzNcIl0sW1wiOTU5Mzk2OTgxOTQzNzg1YzNkM2U1N2VkZjUwMThjZGJlMDM5ZTczMGU0OTE4YjNkODg0ZmRmZjA5NDc1YjdiYVwiLFwiMmU3ZTU1Mjg4OGMzMzFkZDhiYTAzODZhNGI5Y2Q2ODQ5YzY1M2Y2NGM4NzA5Mzg1ZTliOGFiZjg3NTI0ZjJmZFwiXSxbXCJkMmE2M2E1MGFlNDAxZTU2ZDY0NWExMTUzYjEwOWE4ZmNjYTBhNDNkNTYxZmJhMmRiYjUxMzQwYzlkODJiMTUxXCIsXCJlODJkODZmYjY0NDNmY2I3NTY1YWVlNThiMjk0ODIyMGE3MGY3NTBhZjQ4NGNhNTJkNDE0MjE3NGRjZjg5NDA1XCJdLFtcIjY0NTg3ZTIzMzU0NzFlYjg5MGVlNzg5NmQ3Y2ZkYzg2NmJhY2JkYmQzODM5MzE3YjM0MzZmOWI0NTYxN2UwNzNcIixcImQ5OWZjZGQ1YmY2OTAyZTJhZTk2ZGQ2NDQ3YzI5OWExODViOTBhMzkxMzNhZWFiMzU4Mjk5ZTVlOWZhZjY1ODlcIl0sW1wiODQ4MWJkZTBlNGU0ZDg4NWIzYTU0NmQzZTU0OWRlMDQyZjBhYTZjZWEyNTBlN2ZkMzU4ZDZjODZkZDQ1ZTQ1OFwiLFwiMzhlZTdiOGNiYTU0MDRkZDg0YTI1YmYzOWNlY2IyY2E5MDBhNzljNDJiMjYyZTU1NmQ2NGIxYjU5Nzc5MDU3ZVwiXSxbXCIxMzQ2NGE1N2E3ODEwMmFhNjJiNjk3OWFlODE3ZjQ2MzdmZmNmZWQzYzRiMWNlMzBiY2Q2MzAzZjZjYWY2NjZiXCIsXCI2OWJlMTU5MDA0NjE0NTgwZWY3ZTQzMzQ1M2NjYjBjYTQ4ZjMwMGE4MWQwOTQyZTEzZjQ5NWE5MDdmNmVjYzI3XCJdLFtcImJjNGE5ZGY1YjcxM2ZlMmU5YWVmNDMwYmNjMWRjOTdhMGNkOWNjZWRlMmYyODU4OGNhZGEzYTBkMmQ4M2YzNjZcIixcImQzYTgxY2E2ZTc4NWMwNjM4MzkzN2FkZjRiNzk4Y2FhNmU4YTlmYmZhNTQ3YjE2ZDc1OGQ2NjY1ODFmMzNjMVwiXSxbXCI4YzI4YTk3YmY4Mjk4YmMwZDIzZDhjNzQ5NDUyYTMyZTY5NGI2NWUzMGE5NDcyYTM5NTRhYjMwZmU1MzI0Y2FhXCIsXCI0MGEzMDQ2M2EzMzA1MTkzMzc4ZmVkZjMxZjdjYzBlYjdhZTc4NGYwNDUxY2I5NDU5ZTcxZGM3M2NiZWY5NDgyXCJdLFtcIjhlYTk2NjYxMzk1MjdhOGMxZGQ5NGNlNGYwNzFmZDIzYzhiMzUwYzVhNGJiMzM3NDhjNGJhMTExZmFjY2FlMFwiLFwiNjIwZWZhYmJjOGVlMjc4MmUyNGU3YzBjZmI5NWM1ZDczNWI3ODNiZTljZjBmOGU5NTVhZjM0YTMwZTYyYjk0NVwiXSxbXCJkZDM2MjVmYWVmNWJhMDYwNzQ2Njk3MTZiYmQzNzg4ZDg5YmRkZTgxNTk1OTk2ODA5MmY3NmNjNGViOWE5Nzg3XCIsXCI3YTE4OGZhMzUyMGUzMGQ0NjFkYTI1MDEwNDU3MzFjYTk0MTQ2MTk4Mjg4MzM5NTkzN2Y2OGQwMGM2NDRhNTczXCJdLFtcImY3MTBkNzlkOWViOTYyMjk3ZTRmNjIzMmI0MGU4ZjdmZWIyYmM2MzgxNDYxNGQ2OTJjMTJkZTc1MjQwODIyMWVcIixcImVhOThlNjcyMzJkM2IzMjk1ZDNiNTM1NTMyMTE1Y2NhYzg2MTJjNzIxODUxNjE3NTI2YWU0N2E5Yzc3YmZjODJcIl1dfSxuYWY6e3duZDo3LHBvaW50czpbW1wiZjkzMDhhMDE5MjU4YzMxMDQ5MzQ0Zjg1Zjg5ZDUyMjliNTMxYzg0NTgzNmY5OWIwODYwMWYxMTNiY2UwMzZmOVwiLFwiMzg4ZjdiMGY2MzJkZTgxNDBmZTMzN2U2MmEzN2YzNTY2NTAwYTk5OTM0YzIyMzFiNmNiOWZkNzU4NGI4ZTY3MlwiXSxbXCIyZjhiZGU0ZDFhMDcyMDkzNTViNGE3MjUwYTVjNTEyOGU4OGI4NGJkZGM2MTlhYjdjYmE4ZDU2OWIyNDBlZmU0XCIsXCJkOGFjMjIyNjM2ZTVlM2Q2ZDRkYmE5ZGRhNmM5YzQyNmY3ODgyNzFiYWIwZDY4NDBkY2E4N2QzYWE2YWM2MmQ2XCJdLFtcIjVjYmRmMDY0NmU1ZGI0ZWFhMzk4ZjM2NWYyZWE3YTBlM2Q0MTliN2UwMzMwZTM5Y2U5MmJkZGVkY2FjNGY5YmNcIixcIjZhZWJjYTQwYmEyNTU5NjBhMzE3OGQ2ZDg2MWE1NGRiYTgxM2QwYjgxM2ZkZTdiNWE1MDgyNjI4MDg3MjY0ZGFcIl0sW1wiYWNkNDg0ZTJmMGM3ZjY1MzA5YWQxNzhhOWY1NTlhYmRlMDk3OTY5NzRjNTdlNzE0YzM1ZjExMGRmYzI3Y2NiZVwiLFwiY2MzMzg5MjFiMGE3ZDlmZDY0MzgwOTcxNzYzYjYxZTlhZGQ4ODhhNDM3NWY4ZTBmMDVjYzI2MmFjNjRmOWMzN1wiXSxbXCI3NzRhZTdmODU4YTk0MTFlNWVmNDI0NmI3MGM2NWFhYzU2NDk5ODBiZTVjMTc4OTFiYmVjMTc4OTVkYTAwOGNiXCIsXCJkOTg0YTAzMmViNmI1ZTE5MDI0M2RkNTZkN2I3YjM2NTM3MmRiMWUyZGZmOWQ2YTgzMDFkNzRjOWM5NTNjNjFiXCJdLFtcImYyODc3M2MyZDk3NTI4OGJjN2QxZDIwNWMzNzQ4NjUxYjA3NWZiYzY2MTBlNThjZGRlZWRkZjhmMTk0MDVhYThcIixcImFiMDkwMmU4ZDg4MGE4OTc1ODIxMmViNjVjZGFmNDczYTFhMDZkYTUyMWZhOTFmMjliNWNiNTJkYjAzZWQ4MVwiXSxbXCJkNzkyNGQ0ZjdkNDNlYTk2NWE0NjVhZTMwOTVmZjQxMTMxZTU5NDZmM2M4NWY3OWU0NGFkYmNmOGUyN2UwODBlXCIsXCI1ODFlMjg3MmE4NmM3MmE2ODM4NDJlYzIyOGNjNmRlZmVhNDBhZjJiZDg5NmQzYTVjNTA0ZGM5ZmY2YTI2YjU4XCJdLFtcImRlZmRlYTRjZGI2Nzc3NTBhNDIwZmVlODA3ZWFjZjIxZWI5ODk4YWU3OWI5NzY4NzY2ZTRmYWEwNGEyZDRhMzRcIixcIjQyMTFhYjA2OTQ2MzUxNjhlOTk3YjBlYWQyYTkzZGFlY2VkMWY0YTA0YTk1YzBmNmNmYjE5OWY2OWU1NmViNzdcIl0sW1wiMmI0ZWEwYTc5N2E0NDNkMjkzZWY1Y2ZmNDQ0ZjQ5NzlmMDZhY2ZlYmQ3ZTg2ZDI3NzQ3NTY1NjEzODM4NWI2Y1wiLFwiODVlODliYzAzNzk0NWQ5M2IzNDMwODNiNWExYzg2MTMxYTAxZjYwYzUwMjY5NzYzYjU3MGM4NTRlNWMwOWI3YVwiXSxbXCIzNTJiYmY0YTRjZGQxMjU2NGY5M2ZhMzMyY2UzMzMzMDFkOWFkNDAyNzFmODEwNzE4MTM0MGFlZjI1YmU1OWQ1XCIsXCIzMjFlYjQwNzUzNDhmNTM0ZDU5YzE4MjU5ZGRhM2UxZjRhMWIzYjJlNzFiMTAzOWM2N2JkM2Q4YmNmODE5OThjXCJdLFtcIjJmYTIxMDRkNmIzOGQxMWIwMjMwMDEwNTU5ODc5MTI0ZTQyYWI4ZGZlZmY1ZmYyOWRjOWNkYWRkNGVjYWNjM2ZcIixcIjJkZTEwNjgyOTVkZDg2NWI2NDU2OTMzNWJkNWRkODAxODFkNzBlY2ZjODgyNjQ4NDIzYmE3NmI1MzJiN2Q2N1wiXSxbXCI5MjQ4Mjc5YjA5YjRkNjhkYWIyMWE5YjA2NmVkZGE4MzI2M2MzZDg0ZTA5NTcyZTI2OWNhMGNkN2Y1NDUzNzE0XCIsXCI3MzAxNmY3YmYyMzRhYWRlNWQxYWE3MWJkZWEyYjFmZjNmYzBkZTJhODg3OTEyZmZlNTRhMzJjZTk3Y2IzNDAyXCJdLFtcImRhZWQ0ZjJiZTNhOGJmMjc4ZTcwMTMyZmIwYmViNzUyMmY1NzBlMTQ0YmY2MTVjMDdlOTk2ZDQ0M2RlZTg3MjlcIixcImE2OWRjZTRhN2Q2Yzk4ZThkNGExYWNhODdlZjhkNzAwM2Y4M2MyMzBmM2FmYTcyNmFiNDBlNTIyOTBiZTFjNTVcIl0sW1wiYzQ0ZDEyYzcwNjVkODEyZThhY2YyOGQ3Y2JiMTlmOTAxMWVjZDllOWZkZjI4MWIwZTZhM2I1ZTg3ZDIyZTdkYlwiLFwiMjExOWE0NjBjZTMyNmNkYzc2YzQ1OTI2Yzk4MmZkYWMwZTEwNmU4NjFlZGY2MWM1YTAzOTA2M2YwZTBlNjQ4MlwiXSxbXCI2YTI0NWJmNmRjNjk4NTA0Yzg5YTIwY2ZkZWQ2MDg1MzE1MmI2OTUzMzZjMjgwNjNiNjFjNjVjYmQyNjllNmI0XCIsXCJlMDIyY2Y0MmMyYmQ0YTcwOGIzZjUxMjZmMTZhMjRhZDhiMzNiYTQ4ZDA0MjNiNmVmZDVlNjM0ODEwMGQ4YTgyXCJdLFtcIjE2OTdmZmE2ZmQ5ZGU2MjdjMDc3ZTNkMmZlNTQxMDg0Y2UxMzMwMGIwYmVjMTE0NmY5NWFlNTdmMGQwYmQ2YTVcIixcImI5YzM5OGYxODY4MDZmNWQyNzU2MTUwNmU0NTU3NDMzYTJjZjE1MDA5ZTQ5OGFlN2FkZWU5ZDYzZDAxYjIzOTZcIl0sW1wiNjA1YmRiMDE5OTgxNzE4Yjk4NmQwZjA3ZTgzNGNiMGQ5ZGViODM2MGZmYjdmNjFkZjk4MjM0NWVmMjdhNzQ3OVwiLFwiMjk3MmQyZGU0ZjhkMjA2ODFhNzhkOTNlYzk2ZmUyM2MyNmJmYWU4NGZiMTRkYjQzYjAxZTFlOTA1NmI4YzQ5XCJdLFtcIjYyZDE0ZGFiNDE1MGJmNDk3NDAyZmRjNDVhMjE1ZTEwZGNiMDFjMzU0OTU5YjEwY2ZlMzFjN2U5ZDg3ZmYzM2RcIixcIjgwZmMwNmJkOGNjNWIwMTA5ODA4OGExOTUwZWVkMGRiMDFhYTEzMjk2N2FiNDcyMjM1ZjU2NDI0ODNiMjVlYWZcIl0sW1wiODBjNjBhZDAwNDBmMjdkYWRlNWI0YjA2YzQwOGU1NmIyYzUwZTlmNTZiOWI4YjQyNWU1NTVjMmY4NjMwOGI2ZlwiLFwiMWMzODMwM2YxY2M1YzMwZjI2ZTY2YmFkN2ZlNzJmNzBhNjVlZWQ0Y2JlNzAyNGViMWFhMDFmNTY0MzBiZDU3YVwiXSxbXCI3YTkzNzVhZDYxNjdhZDU0YWE3NGM2MzQ4Y2M1NGQzNDRjYzVkYzk0ODdkODQ3MDQ5ZDVlYWJiMGZhMDNjOGZiXCIsXCJkMGUzZmE5ZWNhODcyNjkwOTU1OWUwZDc5MjY5MDQ2YmRjNTllYTEwYzcwY2UyYjAyZDQ5OWVjMjI0ZGM3ZjdcIl0sW1wiZDUyOGVjZDliNjk2YjU0YzkwN2E5ZWQwNDU0NDdhNzliYjQwOGVjMzliNjhkZjUwNGJiNTFmNDU5YmMzZmZjOVwiLFwiZWVjZjQxMjUzMTM2ZTVmOTk5NjZmMjE4ODFmZDY1NmViYzQzNDU0MDVjNTIwZGJjMDYzNDY1YjUyMTQwOTkzM1wiXSxbXCI0OTM3MGE0YjVmNDM0MTJlYTI1ZjUxNGU4ZWNkYWQwNTI2NjExNWU0YTdlY2IxMzg3MjMxODA4ZjhiNDU5NjNcIixcIjc1OGYzZjQxYWZkNmVkNDI4YjMwODFiMDUxMmZkNjJhNTRjM2YzYWZiYjViNjc2NGI2NTMwNTJhMTI5NDljOWFcIl0sW1wiNzdmMjMwOTM2ZWU4OGNiYmQ3M2RmOTMwZDY0NzAyZWY4ODFkODExZTBlMTQ5OGUyZjFjMTNlYjFmYzM0NWQ3NFwiLFwiOTU4ZWY0MmE3ODg2YjY0MDBhMDgyNjZlOWJhMWIzNzg5NmM5NTMzMGQ5NzA3N2NiYmU4ZWIzYzc2NzFjNjBkNlwiXSxbXCJmMmRhYzk5MWNjNGNlNGI5ZWE0NDg4N2U1YzdjMGJjZTU4YzgwMDc0YWI5ZDRkYmFlYjI4NTMxYjc3MzlmNTMwXCIsXCJlMGRlZGM5YjNiMmY4ZGFkNGRhMWYzMmRlYzI1MzFkZjllYjVmYmViMDU5OGU0ZmQxYTExN2RiYTcwM2EzYzM3XCJdLFtcIjQ2M2IzZDlmNjYyNjIxZmIxYjRiZThmYmJlMjUyMDEyNWEyMTZjZGZjOWRhZTNkZWJjYmE0ODUwYzY5MGQ0NWJcIixcIjVlZDQzMGQ3OGMyOTZjMzU0MzExNDMwNmRkODYyMmQ3YzYyMmUyN2M5NzBhMWRlMzFjYjM3N2IwMWFmNzMwN2VcIl0sW1wiZjE2ZjgwNDI0NGU0NmUyYTA5MjMyZDRhZmYzYjU5OTc2Yjk4ZmFjMTQzMjhhMmQxYTMyNDk2YjQ5OTk4ZjI0N1wiLFwiY2VkYWJkOWI4MjIwM2Y3ZTEzZDIwNmZjZGY0ZTMzZDkyYTZjNTNjMjZlNWNjZTI2ZDY1Nzk5NjJjNGUzMWRmNlwiXSxbXCJjYWY3NTQyNzJkYzg0NTYzYjAzNTJiN2ExNDMxMWFmNTVkMjQ1MzE1YWNlMjdjNjUzNjllMTVmNzE1MWQ0MWQxXCIsXCJjYjQ3NDY2MGVmMzVmNWYyYTQxYjY0M2ZhNWU0NjA1NzVmNGZhOWI3OTYyMjMyYTVjMzJmOTA4MzE4YTA0NDc2XCJdLFtcIjI2MDBjYTRiMjgyY2I5ODZmODVkMGYxNzA5OTc5ZDhiNDRhMDljMDdjYjg2ZDdjMTI0NDk3YmM4NmYwODIxMjBcIixcIjQxMTliODg3NTNjMTViZDZhNjkzYjAzZmNkZGJiNDVkNWFjNmJlNzRhYjVmMGVmNDRiMGJlOTQ3NWE3ZTRiNDBcIl0sW1wiNzYzNWNhNzJkN2U4NDMyYzMzOGVjNTNjZDEyMjIwYmMwMWM0ODY4NWUyNGY3ZGM4YzYwMmE3NzQ2OTk4ZTQzNVwiLFwiOTFiNjQ5NjA5NDg5ZDYxM2QxZDVlNTkwZjc4ZTZkNzRlY2ZjMDYxZDU3MDQ4YmFkOWU3NmYzMDJjNWI5YzYxXCJdLFtcIjc1NGUzMjM5ZjMyNTU3MGNkYmJmNGE4N2RlZWU4YTY2YjdmMmIzMzQ3OWQ0NjhmYmMxYTUwNzQzYmY1NmNjMThcIixcIjY3M2ZiODZlNWJkYTMwZmIzY2QwZWQzMDRlYTQ5YTAyM2VlMzNkMDE5N2E2OTVkMGM1ZDk4MDkzYzUzNjY4M1wiXSxbXCJlM2U2YmQxMDcxYTFlOTZhZmY1Nzg1OWM4MmQ1NzBmMDMzMDgwMDY2MWQxYzk1MmY5ZmUyNjk0NjkxZDliOWU4XCIsXCI1OWM5ZTBiYmEzOTRlNzZmNDBjMGFhNTgzNzlhM2NiNmE1YTIyODM5OTNlOTBjNDE2NzAwMmFmNDkyMGUzN2Y1XCJdLFtcIjE4NmI0ODNkMDU2YTAzMzgyNmFlNzNkODhmNzMyOTg1YzRjY2IxZjMyYmEzNWY0YjRjYzQ3ZmRjZjA0YWE2ZWJcIixcIjNiOTUyZDMyYzY3Y2Y3N2UyZTE3NDQ2ZTIwNDE4MGFiMjFmYjgwOTA4OTUxMzhiNGE0YTc5N2Y4NmU4MDg4OGJcIl0sW1wiZGY5ZDcwYTZiOTg3NmNlNTQ0Yzk4NTYxZjRiZTRmNzI1NDQyZTZkMmI3MzdkOWM5MWE4MzIxNzI0Y2UwOTYzZlwiLFwiNTVlYjJkYWZkODRkNmNjZDVmODYyYjc4NWRjMzlkNGFiMTU3MjIyNzIwZWY5ZGEyMTdiOGM0NWNmMmJhMjQxN1wiXSxbXCI1ZWRkNWNjMjNjNTFlODdhNDk3Y2E4MTVkNWRjZTBmOGFiNTI1NTRmODQ5ZWQ4OTk1ZGU2NGM1ZjM0Y2U3MTQzXCIsXCJlZmFlOWM4ZGJjMTQxMzA2NjFlOGNlYzAzMGM4OWFkMGMxM2M2NmMwZDE3YTI5MDVjZGM3MDZhYjczOTlhODY4XCJdLFtcIjI5MDc5OGMyYjY0NzY4MzBkYTEyZmUwMjI4N2U5ZTc3N2FhM2ZiYTFjMzU1YjE3YTcyMmQzNjJmODQ2MTRmYmFcIixcImUzOGRhNzZkY2Q0NDA2MjE5ODhkMDBiY2Y3OWFmMjVkNWIyOWMwOTRkYjJhMjMxNDZkMDAzYWZkNDE5NDNlN2FcIl0sW1wiYWYzYzQyM2E5NWQ5ZjViMzA1NDc1NGVmYTE1MGFjMzljZDI5NTUyZmUzNjAyNTczNjJkZmRlY2VmNDA1M2I0NVwiLFwiZjk4YTNmZDgzMWViMmI3NDlhOTNiMGU2ZjM1Y2ZiNDBjOGNkNWFhNjY3YTE1NTgxYmMyZmVkZWQ0OThmZDljNlwiXSxbXCI3NjZkYmIyNGQxMzRlNzQ1Y2NjYWEyOGM5OWJmMjc0OTA2YmI2NmIyNmRjZjk4ZGY4ZDJmZWQ1MGQ4ODQyNDlhXCIsXCI3NDRiMTE1MmVhY2JlNWUzOGRjYzg4Nzk4MGRhMzhiODk3NTg0YTY1ZmEwNmNlZGQyYzkyNGY5N2NiYWM1OTk2XCJdLFtcIjU5ZGJmNDZmOGM5NDc1OWJhMjEyNzdjMzM3ODRmNDE2NDVmN2I0NGY2YzU5NmE1OGNlOTJlNjY2MTkxYWJlM2VcIixcImM1MzRhZDQ0MTc1ZmJjMzAwZjRlYTZjZTY0ODMwOWEwNDJjZTczOWE3OTE5Nzk4Y2Q4NWUyMTZjNGEzMDdmNmVcIl0sW1wiZjEzYWRhOTUxMDNjNDUzNzMwNWU2OTFlNzRlOWE0YThkZDY0N2U3MTFhOTVlNzNjYjYyZGM2MDE4Y2ZkODdiOFwiLFwiZTEzODE3YjQ0ZWUxNGRlNjYzYmY0YmM4MDgzNDFmMzI2OTQ5ZTIxYTZhNzVjMjU3MDc3ODQxOWJkYWY1NzMzZFwiXSxbXCI3NzU0YjRmYTBlOGFjZWQwNmQ0MTY3YTJjNTljY2E0Y2RhMTg2OWMwNmViYWRmYjY0ODg1NTAwMTVhODg1MjJjXCIsXCIzMGU5M2U4NjRlNjY5ZDgyMjI0Yjk2N2MzMDIwYjhmYThkMWU0ZTM1MGI2Y2JjYzUzN2E0OGI1Nzg0MTE2M2EyXCJdLFtcIjk0OGRjYWRmNTk5MGUwNDhhYTM4NzRkNDZhYmVmOWQ3MDE4NThmOTVkZTgwNDFkMmE2ODI4Yzk5ZTIyNjI1MTlcIixcImU0OTFhNDI1MzdmNmU1OTdkNWQyOGEzMjI0YjFiYzI1ZGY5MTU0ZWZiZDJlZjFkMmNiYmEyY2FlNTM0N2Q1N2VcIl0sW1wiNzk2MjQxNDQ1MGM3NmMxNjg5YzdiNDhmODIwMmVjMzdmYjIyNGNmNWFjMGJmYTE1NzAzMjhhOGEzZDdjNzdhYlwiLFwiMTAwYjYxMGVjNGZmYjQ3NjBkNWMxZmMxMzNlZjZmNmIxMjUwN2EwNTFmMDRhYzU3NjBhZmE1YjI5ZGI4MzQzN1wiXSxbXCIzNTE0MDg3ODM0OTY0YjU0YjE1YjE2MDY0NGQ5MTU0ODVhMTY5NzcyMjViODg0N2JiMGRkMDg1MTM3ZWM0N2NhXCIsXCJlZjBhZmJiMjA1NjIwNTQ0OGUxNjUyYzQ4ZTgxMjdmYzYwMzllNzdjMTVjMjM3OGI3ZTdkMTVhMGRlMjkzMzExXCJdLFtcImQzY2MzMGFkNmI0ODNlNGJjNzljZTJjOWRkOGJjNTQ5OTNlOTQ3ZWI4ZGY3ODdiNDQyOTQzZDNmN2I1MjdlYWZcIixcIjhiMzc4YTIyZDgyNzI3OGQ4OWM1ZTliZThmOTUwOGFlM2MyYWQ0NjI5MDM1ODYzMGFmYjM0ZGIwNGVlZGUwYTRcIl0sW1wiMTYyNGQ4NDc4MDczMjg2MGNlMWM3OGZjYmZlZmUwOGIyYjI5ODIzZGI5MTNmNjQ5Mzk3NWJhMGZmNDg0NzYxMFwiLFwiNjg2NTFjZjliNmRhOTAzZTA5MTQ0NDhjNmNkOWQ0Y2E4OTY4NzhmNTI4MmJlNGM4Y2MwNmUyYTQwNDA3ODU3NVwiXSxbXCI3MzNjZTgwZGE5NTVhOGEyNjkwMmM5NTYzM2U2MmE5ODUxOTI0NzRiNWFmMjA3ZGE2ZGY3YjRmZDVmYzYxY2Q0XCIsXCJmNTQzNWEyYmQyYmFkZjdkNDg1YTRkOGI4ZGI5ZmNjZTNlMWVmOGUwMjAxZTQ1NzhjNTQ2NzNiYzFkYzVlYTFkXCJdLFtcIjE1ZDk0NDEyNTQ5NDUwNjRjZjFhMWMzM2JiZDNiNDlmODk2NmM1MDkyMTcxZTY5OWVmMjU4ZGZhYjgxYzA0NWNcIixcImQ1NmViMzBiNjk0NjNlNzIzNGY1MTM3YjczYjg0MTc3NDM0ODAwYmFjZWJmYzY4NWZjMzdiYmU5ZWZlNDA3MGRcIl0sW1wiYTFkMGZjZjJlYzlkZTY3NWI2MTIxMzZlNWNlNzBkMjcxYzIxNDE3YzlkMmI4YWFhYWMxMzg1OTlkMDcxNzk0MFwiLFwiZWRkNzdmNTBiY2I1YTNjYWIyZTkwNzM3MzA5NjY3ZjI2NDE0NjJhNTQwNzBmM2Q1MTkyMTJkMzljMTk3YTYyOVwiXSxbXCJlMjJmYmUxNWMwYWY4Y2NjNTc4MGMwNzM1Zjg0ZGJlOWE3OTBiYWRlZTgyNDVjMDZjN2NhMzczMzFjYjM2OTgwXCIsXCJhODU1YmFiYWQ1Y2Q2MGM4OGI0MzBhNjlmNTNhMWE3YTM4Mjg5MTU0OTY0Nzk5YmU0M2QwNmQ3N2QzMWRhMDZcIl0sW1wiMzExMDkxZGQ5ODYwZThlMjBlZTEzNDczYzExNTVmNWY2OTYzNWUzOTQ3MDRlYWE3NDAwOTQ1MjI0NmNmYTliM1wiLFwiNjZkYjY1NmY4N2QxZjA0ZmZmZDFmMDQ3ODhjMDY4MzA4NzFlYzVhNjRmZWVlNjg1YmQ4MGYwYjEyODZkODM3NFwiXSxbXCIzNGMxZmQwNGQzMDFiZTg5YjMxYzA0NDJkM2U2YWMyNDg4MzkyOGI0NWE5MzQwNzgxODY3ZDQyMzJlYzJkYmRmXCIsXCI5NDE0Njg1ZTk3YjFiNTk1NGJkNDZmNzMwMTc0MTM2ZDU3ZjFjZWViNDg3NDQzZGM1MzIxODU3YmE3M2FiZWVcIl0sW1wiZjIxOWVhNWQ2YjU0NzAxYzFjMTRkZTViNTU3ZWI0MmE4ZDEzZjNhYmJjZDA4YWZmY2MyYTVlNmIwNDliOGQ2M1wiLFwiNGNiOTU5NTdlODNkNDBiMGY3M2FmNDU0NGNjY2Y2YjFmNGIwOGQzYzA3YjI3ZmI4ZDhjMjk2MmE0MDA3NjZkMVwiXSxbXCJkN2I4NzQwZjc0YThmYmFhYjFmNjgzZGI4ZjQ1ZGUyNjU0M2E1NDkwYmNhNjI3MDg3MjM2OTEyNDY5YTBiNDQ4XCIsXCJmYTc3OTY4MTI4ZDljOTJlZTEwMTBmMzM3YWQ0NzE3ZWZmMTVkYjVlZDNjMDQ5YjM0MTFlMDMxNWVhYTQ1OTNiXCJdLFtcIjMyZDMxYzIyMmY4ZjZmMGVmODZmN2M5OGQzYTMzMzVlYWQ1YmNkMzJhYmRkOTQyODlmZTRkMzA5MWFhODI0YmZcIixcIjVmMzAzMmY1ODkyMTU2ZTM5Y2NkM2Q3OTE1YjllMWRhMmU2ZGFjOWU2ZjI2ZTk2MTExOGQxNGI4NDYyZTE2NjFcIl0sW1wiNzQ2MWYzNzE5MTRhYjMyNjcxMDQ1YTE1NWQ5ODMxZWE4NzkzZDc3Y2Q1OTU5MmM0MzQwZjg2Y2JjMTgzNDdiNVwiLFwiOGVjMGJhMjM4Yjk2YmVjMGNiZGRkY2FlMGFhNDQyNTQyZWVlMWZmNTBjOTg2ZWE2YjM5ODQ3YjNjYzA5MmZmNlwiXSxbXCJlZTA3OWFkYjFkZjE4NjAwNzQzNTZhMjVhYTM4MjA2YTZkNzE2YjJjM2U2NzQ1M2QyODc2OThiYWQ3YjJiMmQ2XCIsXCI4ZGMyNDEyYWFmZTNiZTVjNGM1ZjM3ZTBlY2M1ZjlmNmE0NDY5ODlhZjA0YzRlMjVlYmFhYzQ3OWVjMWM4YzFlXCJdLFtcIjE2ZWM5M2U0NDdlYzgzZjA0NjdiMTgzMDJlZTYyMGY3ZTY1ZGUzMzE4NzRjOWRjNzJiZmQ4NjE2YmE5ZGE2YjVcIixcIjVlNDYzMTE1MGU2MmZiNDBkMGU4YzJhN2NhNTgwNGEzOWQ1ODE4NmE1MGU0OTcxMzk2MjY3NzhlMjViMDY3NGRcIl0sW1wiZWFhNWY5ODBjMjQ1ZjZmMDM4OTc4MjkwYWZhNzBiNmJkODg1NTg5N2Y5OGI2YWE0ODViOTYwNjVkNTM3YmQ5OVwiLFwiZjY1ZjVkM2UyOTJjMmUwODE5YTUyODM5MWM5OTQ2MjRkNzg0ODY5ZDdlNmVhNjdmYjE4MDQxMDI0ZWRjMDdkY1wiXSxbXCI3OGM5NDA3NTQ0YWMxMzI2OTJlZTE5MTBhMDI0Mzk5NThhZTA0ODc3MTUxMzQyZWE5NmM0YjZiMzVhNDlmNTFcIixcImYzZTAzMTkxNjllYjliODVkNTQwNDc5NTUzOWE1ZTY4ZmExZmJkNTgzYzA2NGQyNDYyYjY3NWYxOTRhM2RkYjRcIl0sW1wiNDk0ZjRiZTIxOWExYTc3MDE2ZGNkODM4NDMxYWVhMDAwMWNkYzhhZTdhNmZjNjg4NzI2NTc4ZDk3MDI4NTdhNVwiLFwiNDIyNDJhOTY5MjgzYTVmMzM5YmE3ZjA3NWUzNmJhMmFmOTI1Y2UzMGQ3NjdlZDZlNTVmNGIwMzE4ODBkNTYyY1wiXSxbXCJhNTk4YTgwMzBkYTZkODZjNmJjN2YyZjUxNDRlYTU0OWQyODIxMWVhNThmYWE3MGViZjRjMWU2NjVjMWZlOWI1XCIsXCIyMDRiNWQ2Zjg0ODIyYzMwN2U0YjRhNzE0MDczN2FlYzIzZmM2M2I2NWIzNWY4NmExMDAyNmRiZDJkODY0ZTZiXCJdLFtcImM0MTkxNjM2NWFiYjJiNWQwOTE5MmY1ZjJkYmVhZmVjMjA4ZjAyMGYxMjU3MGExODRkYmFkYzNlNTg1OTU5OTdcIixcIjRmMTQzNTFkMDA4N2VmYTQ5ZDI0NWIzMjg5ODQ5ODlkNWNhZjk0NTBmMzRiZmMwZWQxNmU5NmI1OGZhOTkxM1wiXSxbXCI4NDFkNjA2M2E1ODZmYTQ3NWE3MjQ2MDRkYTAzYmM1YjkyYTJlMGQyZTBhMzZhY2ZlNGM3M2E1NTE0NzQyODgxXCIsXCI3Mzg2N2Y1OWMwNjU5ZTgxOTA0ZjlhMWM3NTQzNjk4ZTYyNTYyZDY3NDRjMTY5Y2U3YTM2ZGUwMWE4ZDYxNTRcIl0sW1wiNWU5NWJiMzk5YTY5NzFkMzc2MDI2OTQ3Zjg5YmRlMmYyODJiMzM4MTA5MjhiZTRkZWQxMTJhYzRkNzBlMjBkNVwiLFwiMzlmMjNmMzY2ODA5MDg1YmVlYmZjNzExODEzMTM3NzVhOTljOWFlZDdkOGJhMzhiMTYxMzg0Yzc0NjAxMjg2NVwiXSxbXCIzNmU0NjQxYTUzOTQ4ZmQ0NzZjMzlmOGE5OWZkOTc0ZTVlYzA3NTY0YjUzMTVkOGJmOTk0NzFiY2EwZWYyZjY2XCIsXCJkMjQyNGIxYjFhYmU0ZWI4MTY0MjI3YjA4NWM5YWE5NDU2ZWExMzQ5M2ZkNTYzZTA2ZmQ1MWNmNTY5NGM3OGZjXCJdLFtcIjMzNjU4MWVhN2JmYmJiMjkwYzE5MWEyZjUwN2E0MWNmNTY0Mzg0MjE3MGU5MTRmYWVhYjI3YzJjNTc5ZjcyNlwiLFwiZWFkMTIxNjg1OTVmZTFiZTk5MjUyMTI5YjZlNTZiMzM5MWY3YWIxNDEwY2QxZTBlZjNkY2RjYWJkMmZkYTIyNFwiXSxbXCI4YWI4OTgxNmRhZGZkNmI2YTFmMjYzNGZjZjAwZWM4NDAzNzgxMDI1ZWQ2ODkwYzQ4NDk3NDI3MDZiZDQzZWRlXCIsXCI2ZmRjZWYwOWYyZjZkMGEwNDRlNjU0YWVmNjI0MTM2ZjUwM2Q0NTljM2U4OTg0NTg1OGE0N2E5MTI5Y2RkMjRlXCJdLFtcIjFlMzNmMWE3NDZjOWM1Nzc4MTMzMzQ0ZDkyOTlmY2FhMjBiMDkzOGU4YWNmZjI1NDRiYjQwMjg0YjhjNWZiOTRcIixcIjYwNjYwMjU3ZGQxMWIzYWE5YzhlZDYxOGQyNGVkZmYyMzA2ZDMyMGYxZDAzMDEwZTMzYTdkMjA1N2YzYjNiNlwiXSxbXCI4NWI3YzFkY2IzY2VjMWI3ZWU3ZjMwZGVkNzlkZDIwYTBlZDFmNGNjMThjYmNmY2ZhNDEwMzYxZmQ4ZjA4ZjMxXCIsXCIzZDk4YTljZGQwMjZkZDQzZjM5MDQ4ZjI1YTg4NDdmNGZjYWZhZDE4OTVkN2E2MzNjNmZlZDNjMzVlOTk5NTExXCJdLFtcIjI5ZGY5ZmJkOGQ5ZTQ2NTA5Mjc1ZjRiMTI1ZDZkNDVkN2ZiZTlhM2I4NzhhN2FmODcyYTI4MDA2NjFhYzVmNTFcIixcImI0YzRmZTk5Yzc3NWE2MDZlMmQ4ODYyMTc5MTM5ZmZkYTYxZGM4NjFjMDE5ZTU1Y2QyODc2ZWIyYTI3ZDg0YlwiXSxbXCJhMGIxY2FlMDZiMGE4NDdhM2ZlYTZlNjcxYWFmOGFkZmRmZTU4Y2EyZjc2ODEwNWM4MDgyYjJlNDQ5ZmNlMjUyXCIsXCJhZTQzNDEwMmVkZGUwOTU4ZWM0YjE5ZDkxN2E2YTI4ZTZiNzJkYTE4MzRhZmYwZTY1MGYwNDk1MDNhMjk2Y2YyXCJdLFtcIjRlOGNlYWZiOWIzZTlhMTM2ZGM3ZmY2N2U4NDAyOTViNDk5ZGZiM2IyMTMzZTRiYTExM2YyZTRjMGUxMjFlNVwiLFwiY2YyMTc0MTE4YzhiNmQ3YTRiNDhmNmQ1MzRjZTVjNzk0MjJjMDg2YTYzNDYwNTAyYjgyN2NlNjJhMzI2NjgzY1wiXSxbXCJkMjRhNDRlMDQ3ZTE5YjZmNWFmYjgxYzdjYTJmNjkwODBhNTA3NjY4OWEwMTA5MTlmNDI3MjVjMmI3ODlhMzNiXCIsXCI2ZmI4ZDU1OTFiNDY2ZjhmYzYzZGI1MGYxYzBmMWM2OTAxM2Y5OTY4ODdiODI0NGQyY2RlYzQxN2FmZWE4ZmEzXCJdLFtcImVhMDE2MDZhN2E2YzljZGQyNDlmZGZjZmFjYjk5NTg0MDAxZWRkMjhhYmJhYjc3YjUxMDRlOThlOGUzYjM1ZDRcIixcIjMyMmFmNDkwOGM3MzEyYjBjZmJmZTM2OWY3YTdiM2NkYjdkNDQ5NGJjMjgyMzcwMGNmZDY1MjE4OGEzZWE5OGRcIl0sW1wiYWY4YWRkYmYyYjY2MWM4YTZjNjMyODY1NWViOTY2NTEyNTIwMDdkOGM1ZWEzMWJlNGFkMTk2ZGU4Y2UyMTMxZlwiLFwiNjc0OWU2N2MwMjliODVmNTJhMDM0ZWFmZDA5NjgzNmIyNTIwODE4NjgwZTI2YWM4ZjNkZmJjZGI3MTc0OTcwMFwiXSxbXCJlM2FlMTk3NDU2NmNhMDZjYzUxNmQ0N2UwZmIxNjVhNjc0YTNkYWJjZmNhMTVlNzIyZjBlMzQ1MGY0NTg4OVwiLFwiMmFlYWJlN2U0NTMxNTEwMTE2MjE3ZjA3YmY0ZDA3MzAwZGU5N2U0ODc0ZjgxZjUzMzQyMGE3MmVlYjBiZDZhNFwiXSxbXCI1OTFlZTM1NTMxM2Q5OTcyMWNmNjk5M2ZmZWQxZTNlMzAxOTkzZmYzZWQyNTg4MDIwNzVlYThjZWQzOTdlMjQ2XCIsXCJiMGVhNTU4YTExM2MzMGJlYTYwZmM0Nzc1NDYwYzc5MDFmZjBiMDUzZDI1Y2EyYmRlZWU5OGYxYTRiZTVkMTk2XCJdLFtcIjExMzk2ZDU1ZmRhNTRjNDlmMTlhYTk3MzE4ZDhkYTYxZmE4NTg0ZTQ3YjA4NDk0NTA3N2NmMDMyNTViNTI5ODRcIixcIjk5OGM3NGE4Y2Q0NWFjMDEyODlkNTgzM2E3YmViNDc0NGZmNTM2YjAxYjI1N2JlNGM1NzY3YmVhOTNlYTU3YTRcIl0sW1wiM2M1ZDJhMWJhMzljNWExNzkwMDAwNzM4YzllMGM0MGI4ZGNkZmQ1NDY4NzU0YjY0MDU1NDAxNTdlMDE3YWE3YVwiLFwiYjIyODQyNzk5OTVhMzRlMmY5ZDRkZTczOTZmYzE4YjgwZjliOGI5ZmRkMjcwZjY2NjFmNzljYTRjODFiZDI1N1wiXSxbXCJjYzg3MDRiOGE2MGEwZGVmYTNhOTlhNzI5OWYyZTljM2ZiYzM5NWFmYjA0YWMwNzg0MjVlZjhhMTc5M2NjMDMwXCIsXCJiZGQ0NjAzOWZlZWQxNzg4MWQxZTA4NjJkYjM0N2Y4Y2YzOTViNzRmYzRiY2RjNGU5NDBiNzRlM2FjMWYxYjEzXCJdLFtcImM1MzNlNGY3ZWE4NTU1YWFjZDk3NzdhYzVjYWQyOWI5N2RkNGRlZmNjYzUzZWU3ZWEyMDQxMTliMjg4OWIxOTdcIixcIjZmMGEyNTZiYzVlZmRmNDI5YTJmYjYyNDJmMWE0M2EyZDliOTI1YmI0YTRiM2EyNmJiOGUwZjQ1ZWI1OTYwOTZcIl0sW1wiYzE0ZjhmMmNjYjI3ZDZmMTA5ZjZkMDhkMDNjYzk2YTY5YmE4YzM0ZWVjMDdiYmNmNTY2ZDQ4ZTMzZGE2NTkzXCIsXCJjMzU5ZDY5MjNiYjM5OGY3ZmQ0NDczZTE2ZmUxYzI4NDc1Yjc0MGRkMDk4MDc1ZTZjMGU4NjQ5MTEzZGMzYTM4XCJdLFtcImE2Y2JjMzA0NmJjNmE0NTBiYWMyNDc4OWZhMTcxMTVhNGM5NzM5ZWQ3NWY4ZjIxY2U0NDFmNzJlMGI5MGU2ZWZcIixcIjIxYWU3ZjQ2ODBlODg5YmIxMzA2MTllMmMwZjk1YTM2MGNlYjU3M2M3MDYwMzEzOTg2MmFmZDYxN2ZhOWI5ZlwiXSxbXCIzNDdkNmQ5YTAyYzQ4OTI3ZWJmYjg2YzEzNTliMWNhZjEzMGEzYzAyNjdkMTFjZTYzNDRiMzlmOTlkNDNjYzM4XCIsXCI2MGVhN2Y2MWEzNTM1MjRkMWM5ODdmNmVjZWM5MmYwODZkNTY1YWI2ODc4NzBjYjEyNjg5ZmYxZTMxYzc0NDQ4XCJdLFtcImRhNjU0NWQyMTgxZGI4ZDk4M2Y3ZGNiMzc1ZWY1ODY2ZDQ3YzY3YjFiZjMxYzhjZjg1NWVmNzQzN2I3MjY1NmFcIixcIjQ5Yjk2NzE1YWI2ODc4YTc5ZTc4ZjA3Y2U1NjgwYzVkNjY3MzA1MWI0OTM1YmQ4OTdmZWE4MjRiNzdkYzIwOGFcIl0sW1wiYzQwNzQ3Y2M5ZDAxMmNiMWExM2I4MTQ4MzA5YzZkZTdlYzI1ZDY5NDVkNjU3MTQ2YjlkNTk5NGI4ZmViMTExMVwiLFwiNWNhNTYwNzUzYmUyYTEyZmM2ZGU2Y2FmMmNiNDg5NTY1ZGI5MzYxNTZiOTUxNGUxYmI1ZTgzMDM3ZTBmYTJkNFwiXSxbXCI0ZTQyYzhlYzgyYzk5Nzk4Y2NmM2E2MTBiZTg3MGU3ODMzOGM3ZjcxMzM0OGJkMzRjODIwM2VmNDAzN2YzNTAyXCIsXCI3NTcxZDc0ZWU1ZTBmYjkyYTdhOGIzM2EwNzc4MzM0MWE1NDkyMTQ0Y2M1NGJjYzQwYTk0NDczNjkzNjA2NDM3XCJdLFtcIjM3NzVhYjcwODliYzZhZjgyM2FiYTJlMWFmNzBiMjM2ZDI1MWNhZGIwYzg2NzQzMjg3NTIyYTFiM2IwZGVkZWFcIixcImJlNTJkMTA3YmNmYTA5ZDhiY2I5NzM2YTgyOGNmYTdmYWM4ZGIxN2JmN2E3NmEyYzQyYWQ5NjE0MDkwMThjZjdcIl0sW1wiY2VlMzFjYmY3ZTM0ZWMzNzlkOTRmYjgxNGQzZDc3NWFkOTU0NTk1ZDEzMTRiYTg4NDY5NTllM2U4MmY3NGUyNlwiLFwiOGZkNjRhMTRjMDZiNTg5YzI2Yjk0N2FlMmJjZjZiZmEwMTQ5ZWYwYmUxNGVkNGQ4MGY0NDhhMDFjNDNiMWM2ZFwiXSxbXCJiNGY5ZWFlYTA5YjY5MTc2MTlmNmVhNmE0ZWI1NDY0ZWZkZGI1OGZkNDViMWViZWZjZGMxYTAxZDA4YjQ3OTg2XCIsXCIzOWU1Yzk5MjViNWE1NGIwNzQzM2E0ZjE4YzYxNzI2ZjhiYjEzMWMwMTJjYTU0MmViMjRhOGFjMDcyMDA2ODJhXCJdLFtcImQ0MjYzZGZjM2QyZGY5MjNhMDE3OWE0ODk2NmQzMGNlODRlMjUxNWFmYzNkY2NjMWI3NzkwNzc5MmViY2M2MGVcIixcIjYyZGZhZjA3YTBmNzhmZWIzMGUzMGQ2Mjk1ODUzY2UxODllMTI3NzYwYWQ2Y2Y3ZmFlMTY0ZTEyMmEyMDhkNTRcIl0sW1wiNDg0NTc1MjQ4MjBmYTY1YTRmOGQzNWViNjkzMDg1N2MwMDMyYWNjMGE0YTJkZTQyMjIzM2VlZGE4OTc2MTJjNFwiLFwiMjVhNzQ4YWIzNjc5NzlkOTg3MzNjMzhhMWZhMWMyZTdkYzZjYzA3ZGIyZDYwYTlhZTdhNzZhYWE0OWJkMGY3N1wiXSxbXCJkZmVlZWYxODgxMTAxZjJjYjExNjQ0ZjNhMmFmZGZjMjA0NWUxOTkxOTE1MjkyM2YzNjdhMTc2N2MxMWNjZWRhXCIsXCJlY2ZiNzA1NmNmMWRlMDQyZjk0MjBiYWIzOTY3OTNjMGMzOTBiZGU3NGI0YmJkZmYxNmE4M2FlMDlhOWE3NTE3XCJdLFtcIjZkN2VmNmIxNzU0M2Y4MzczYzU3M2Y0NGUxZjM4OTgzNWQ4OWJjYmM2MDYyY2VkMzZjODJkZjgzYjhmYWU4NTlcIixcImNkNDUwZWMzMzU0Mzg5ODZkZmVmYTEwYzU3ZmVhOWJjYzUyMWEwOTU5YjJkODBiYmY3NGIxOTBkY2E3MTJkMTBcIl0sW1wiZTc1NjA1ZDU5MTAyYTVhMjY4NDUwMGQzYjk5MWYyZTNmM2M4OGI5MzIyNTU0NzAzNWFmMjVhZjY2ZTA0NTQxZlwiLFwiZjVjNTQ3NTRhOGY3MWVlNTQwYjliNDg3Mjg0NzNlMzE0ZjcyOWFjNTMwOGIwNjkzODM2MDk5MGUyYmZhZDEyNVwiXSxbXCJlYjk4NjYwZjRjNGRmYWEwNmEyYmU0NTNkNTAyMGJjOTlhMGMyZTYwYWJlMzg4NDU3ZGQ0M2ZlZmIxZWQ2MjBjXCIsXCI2Y2I5YTg4NzZkOWNiODUyMDYwOWFmM2FkZDI2Y2QyMGEwYTdjZDhhOTQxMTEzMWNlODVmNDQxMDAwOTkyMjNlXCJdLFtcIjEzZTg3YjAyN2Q4NTE0ZDM1OTM5ZjJlNjg5MmIxOTkyMjE1NDU5Njk0MTg4ODMzNmRjMzU2M2UzYjhkYmE5NDJcIixcImZlZjVhM2M2ODA1OWE2ZGVjNWQ2MjQxMTRiZjFlOTFhYWMyYjlkYTU2OGQ2YWJlYjI1NzBkNTU2NDZiOGFkZjFcIl0sW1wiZWUxNjMwMjZlOWZkNmZlMDE3YzM4ZjA2YTViZTZmYzEyNTQyNGIzNzFjZTI3MDhlN2JmNDQ5MTY5MWU1NzY0YVwiLFwiMWFjYjI1MGYyNTVkZDYxYzQzZDk0Y2NjNjcwZDBmNThmNDlhZTNmYTE1Yjk2NjIzZTU0MzBkYTBhZDZjNjJiMlwiXSxbXCJiMjY4ZjVlZjlhZDUxZTRkNzhkZTNhNzUwYzJkYzg5YjFlNjI2ZDQzNTA1ODY3OTk5OTMyZTVkYjMzYWYzZDgwXCIsXCI1ZjMxMGQ0YjNjOTliOWViYjE5Zjc3ZDQxYzFkZWUwMThjZjBkMzRmZDQxOTE2MTQwMDNlOTQ1YTEyMTZlNDIzXCJdLFtcImZmMDdmMzExOGE5ZGYwMzVlOWZhZDg1ZWI2YzdiZmU0MmIwMmYwMWNhOTljZWVhM2JmN2ZmZGJhOTNjNDc1MGRcIixcIjQzODEzNmQ2MDNlODU4YTNhNWM0NDBjMzhlY2NiYWRkYzFkMjk0MjExNGUyZWRkZDQ3NDBkMDk4Y2VkMWYwZDhcIl0sW1wiOGQ4Yjk4NTVjN2MwNTJhMzQxNDZmZDIwZmZiNjU4YmVhNGI5ZjY5ZTBkODI1ZWJlYzE2ZThjM2NlMmI1MjZhMVwiLFwiY2RiNTU5ZWVkYzJkNzlmOTI2YmFmNDRmYjg0ZWE0ZDQ0YmNmNTBmZWU1MWQ3Y2ViMzBlMmU3ZjQ2MzAzNjc1OFwiXSxbXCI1MmRiMGI1Mzg0ZGZiZjA1YmZhOWQ0NzJkN2FlMjZkZmU0Yjg1MWNlY2E5MWIxZWJhNTQyNjMxODBkYTMyYjYzXCIsXCJjM2I5OTdkMDUwZWU1ZDQyM2ViYWY2NmE2ZGI5ZjU3YjMxODBjOTAyODc1Njc5ZGU5MjRiNjlkODRhN2IzNzVcIl0sW1wiZTYyZjk0OTBkM2Q1MWRhNjM5NWVmZDI0ZTgwOTE5Y2M3ZDBmMjljM2YzZmE0OGM2ZmZmNTQzYmVjYmQ0MzM1MlwiLFwiNmQ4OWFkN2JhNDg3NmIwYjIyYzJjYTI4MGM2ODI4NjJmMzQyYzg1OTFmMWRhZjUxNzBlMDdiZmQ5Y2NhZmE3ZFwiXSxbXCI3ZjMwZWEyNDc2YjM5OWI0OTU3NTA5Yzg4Zjc3ZDAxOTFhZmEyZmY1Y2I3YjE0ZmQ2ZDhlN2Q2NWFhYWIxMTkzXCIsXCJjYTVlZjdkNGIyMzFjOTRjM2IxNTM4OWE1ZjYzMTFlOWRhZmY3YmI2N2IxMDNlOTg4MGVmNGJmZjYzN2FjYWVjXCJdLFtcIjUwOThmZjFlMWQ5ZjE0ZmI0NmEyMTBmYWRhNmM5MDNmZWYwZmI3YjRhMWRkMWQ5YWM2MGEwMzYxODAwYjdhMDBcIixcIjk3MzExNDFkODFmYzhmODA4NGQzN2M2ZTc1NDIwMDZiM2VlMWI0MGQ2MGRmZTUzNjJhNWIxMzJmZDE3ZGRjMFwiXSxbXCIzMmI3OGM3ZGU5ZWU1MTJhNzI4OTViZTZiOWNiZWZhNmUyZjNjNGNjY2U0NDVjOTZiOWYyYzgxZTI3NzhhZDU4XCIsXCJlZTE4NDlmNTEzZGY3MWUzMmVmYzM4OTZlZTI4MjYwYzczYmI4MDU0N2FlMjI3NWJhNDk3MjM3Nzk0Yzg3NTNjXCJdLFtcImUyY2I3NGZkZGM4ZTlmYmNkMDc2ZWVmMmE3YzcyYjBjZTM3ZDUwZjA4MjY5ZGZjMDc0YjU4MTU1MDU0N2E0ZjdcIixcImQzYWEyZWQ3MWM5ZGQyMjQ3YTYyZGYwNjI3MzZlYjBiYWRkZWE5ZTM2MTIyZDJiZTg2NDFhYmNiMDA1Y2M0YTRcIl0sW1wiODQzODQ0NzU2NmQ0ZDdiZWRhZGMyOTk0OTZhYjM1NzQyNjAwOWEzNWYyMzVjYjE0MWJlMGQ5OWNkMTBhZTNhOFwiLFwiYzRlMTAyMDkxNjk4MGE0ZGE1ZDAxYWM1ZTZhZDMzMDczNGVmMGQ3OTA2NjMxYzRmMjM5MDQyNmIyZWRkNzkxZlwiXSxbXCI0MTYyZDQ4OGI4OTQwMjAzOWI1ODRjNmZjNmMzMDg4NzA1ODdkOWM0NmY2NjBiODc4YWI2NWM4MmM3MTFkNjdlXCIsXCI2NzE2M2U5MDMyMzYyODlmNzc2ZjIyYzI1ZmI4YTNhZmMxNzMyZjJiODRiNGU5NWRiZGE0N2FlNWEwODUyNjQ5XCJdLFtcIjNmYWQzZmE4NGNhZjBmMzRmMGY4OWJmZDJkY2Y1NGZjMTc1ZDc2N2FlYzNlNTA2ODRmM2JhNGE0YmY1ZjY4M2RcIixcImNkMWJjN2NiNmNjNDA3YmIyZjBjYTY0N2M3MThhNzMwY2Y3MTg3MmU3ZDBkMmE1M2ZhMjBlZmNkZmU2MTgyNlwiXSxbXCI2NzRmMjYwMGEzMDA3YTAwNTY4YzFhN2NlMDVkMDgxNmMxZmI4NGJmMTM3MDc5OGYxYzY5NTMyZmFlYjFhODZiXCIsXCIyOTlkMjFmOTQxM2YzM2IzZWRmNDNiMjU3MDA0NTgwYjcwZGI1N2RhMGIxODIyNTllMDllZWNjNjllMGQzOGE1XCJdLFtcImQzMmY0ZGE1NGFkZTc0YWJiODFiODE1YWQxZmIzYjI2M2Q4MmQ2YzY5MjcxNGJjZmY4N2QyOWJkNWVlOWYwOGZcIixcImY5NDI5ZTczOGI4ZTUzYjk2OGU5OTAxNmMwNTk3MDc3ODJlMTRmNDUzNTM1OWQ1ODJmYzQxNjkxMGIzZWVhODdcIl0sW1wiMzBlNGU2NzA0MzUzODU1NTZlNTkzNjU3MTM1ODQ1ZDM2ZmJiNjkzMWY3MmIwOGNiMWVkOTU0ZjFlM2NlM2ZmNlwiLFwiNDYyZjliY2U2MTk4OTg2Mzg0OTkzNTAxMTNiYmM5YjEwYTg3OGQzNWRhNzA3NDBkYzY5NWE1NTllYjg4ZGI3YlwiXSxbXCJiZTIwNjIwMDNjNTFjYzMwMDQ2ODI5MDQzMzBlNGRlZTdmM2RjZDEwYjAxZTU4MGJmMTk3MWIwNGQ0Y2FkMjk3XCIsXCI2MjE4OGJjNDlkNjFlNTQyODU3M2Q0OGE3NGUxYzY1NWIxYzYxMDkwOTA1NjgyYTBkNTU1OGVkNzJkY2NiOWJjXCJdLFtcIjkzMTQ0NDIzYWNlMzQ1MWVkMjllMGZiOWFjMmFmMjExY2I2ZTg0YTYwMWRmNTk5M2M0MTk4NTlmZmY1ZGYwNGFcIixcIjdjMTBkZmIxNjRjMzQyNWY1YzcxYTNmOWQ3OTkyMDM4ZjEwNjUyMjRmNzJiYjlkMWQ5MDJhNmQxMzAzN2I0N2NcIl0sW1wiYjAxNWY4MDQ0ZjVmY2JkY2YyMWNhMjZkNmMzNGZiODE5NzgyOTIwNWM3YjdkMmE3Y2I2NjQxOGMxNTdiMTEyY1wiLFwiYWI4YzFlMDg2ZDA0ZTgxMzc0NGE2NTViMmRmOGQ1ZjgzYjNjZGM2ZmFhMzA4OGMxZDNhZWExNDU0ZTNhMWQ1ZlwiXSxbXCJkNWU5ZTFkYTY0OWQ5N2Q4OWU0ODY4MTE3YTQ2NWEzYTRmOGExOGRlNTdhMTQwZDM2YjNmMmFmMzQxYTIxYjUyXCIsXCI0Y2IwNDQzN2YzOTFlZDczMTExYTEzY2MxZDRkZDBkYjE2OTM0NjVjMjI0MDQ4MGQ4OTU1ZTg1OTJmMjc0NDdhXCJdLFtcImQzYWU0MTA0N2RkN2NhMDY1ZGJmOGVkNzdiOTkyNDM5OTgzMDA1Y2Q3MmUxNmQ2Zjk5NmE1MzE2ZDM2OTY2YmJcIixcImJkMWFlYjIxYWQyMmViYjIyYTEwZjAzMDM0MTdjNmQ5NjRmOGNkZDdkZjBhY2E2MTRiMTBkYzE0ZDEyNWFjNDZcIl0sW1wiNDYzZTI3NjNkODg1Zjk1OGZjNjZjZGQyMjgwMGYwYTQ4NzE5N2QwYTgyZTM3N2I0OWY4MGFmODdjODk3YjA2NVwiLFwiYmZlZmFjZGIwZTVkMGZkN2RmM2EzMTFhOTRkZTA2MmIyNmI4MGM2MWZiYzk3NTA4Yjc5OTkyNjcxZWY3Y2E3ZlwiXSxbXCI3OTg1ZmRmZDEyN2MwNTY3YzZmNTNlYzFiYjYzZWMzMTU4ZTU5N2M0MGJmZTc0N2M4M2NkZGZjOTEwNjQxOTE3XCIsXCI2MDNjMTJkYWYzZDk4NjJlZjJiMjVmZTFkZTI4OWFlZDI0ZWQyOTFlMGVjNjcwODcwM2E1YmQ1NjdmMzJlZDAzXCJdLFtcIjc0YTFhZDZiNWY3NmUzOWRiMmRkMjQ5NDEwZWFjN2Y5OWU3NGM1OWNiODNkMmQwZWQ1ZmYxNTQzZGE3NzAzZTlcIixcImNjNjE1N2VmMThjOWM2M2NkNjE5M2Q4MzYzMWJiZWEwMDkzZTA5Njg5NDJlOGMzM2Q1NzM3ZmQ3OTBlMGRiMDhcIl0sW1wiMzA2ODJhNTA3MDMzNzVmNjAyZDQxNjY2NGJhMTliN2ZjOWJhYjQyYzcyNzQ3NDYzYTcxZDA4OTZiMjJmNmRhM1wiLFwiNTUzZTA0ZjZiMDE4YjRmYTZjOGYzOWU3ZjMxMWQzMTc2MjkwZDBlMGYxOWNhNzNmMTc3MTRkOTk3N2EyMmZmOFwiXSxbXCI5ZTIxNThmMGQ3YzBkNWYyNmMzNzkxZWZlZmE3OTU5NzY1NGU3YTJiMjQ2NGY1MmIxZWU2YzEzNDc3NjllZjU3XCIsXCI3MTJmY2RkMWI5MDUzZjA5MDAzYTM0ODFmYTc3NjJlOWZmZDdjOGVmMzVhMzg1MDllMmZiZjI2MjkwMDgzNzNcIl0sW1wiMTc2ZTI2OTg5YTQzYzljZmViYTQwMjljMjAyNTM4YzI4MTcyZTU2NmUzYzRmY2U3MzIyODU3ZjNiZTMyN2Q2NlwiLFwiZWQ4Y2M5ZDA0YjI5ZWI4NzdkMjcwYjQ4NzhkYzQzYzE5YWVmZDMxZjRlZWUwOWVlN2I0NzgzNGMxZmE0YjFjM1wiXSxbXCI3NWQ0NmVmZWEzNzcxZTZlNjhhYmI4OWExM2FkNzQ3ZWNmMTg5MjM5M2RmYzRmMWI3MDA0Nzg4YzUwMzc0ZGE4XCIsXCI5ODUyMzkwYTk5NTA3Njc5ZmQwYjg2ZmQyYjM5YTg2OGQ3ZWZjMjIxNTEzNDZlMWEzY2E0NzI2NTg2YTZiZWQ4XCJdLFtcIjgwOWEyMGM2N2Q2NDkwMGZmYjY5OGM0YzgyNWY2ZDVmMjMxMGZiMDQ1MWM4NjkzNDViNzMxOWY2NDU2MDU3MjFcIixcIjllOTk0OTgwZDk5MTdlMjJiNzZiMDYxOTI3ZmEwNDE0M2QwOTZjY2M1NDk2M2U2YTVlYmZhNWYzZjhlMjg2YzFcIl0sW1wiMWIzODkwM2E0M2Y3ZjExNGVkNDUwMGI0ZWFjNzA4M2ZkZWZlY2UxY2YyOWM2MzUyOGQ1NjM0NDZmOTcyYzE4MFwiLFwiNDAzNmVkYzkzMWE2MGFlODg5MzUzZjc3ZmQ1M2RlNGEyNzA4YjI2YjZmNWRhNzJhZDMzOTQxMTlkYWY0MDhmOVwiXV19fX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMyksaT1yKDE1NSksbz1yKDUpLGE9cigzNykscz1yKDYzKSxmPW8uYXNzZXJ0LGM9cigxNTYpLHU9cigxNTcpO2Z1bmN0aW9uIGgoZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgaCkpcmV0dXJuIG5ldyBoKGUpO1wic3RyaW5nXCI9PXR5cGVvZiBlJiYoZihhLmhhc093blByb3BlcnR5KGUpLFwiVW5rbm93biBjdXJ2ZSBcIitlKSxlPWFbZV0pLGUgaW5zdGFuY2VvZiBhLlByZXNldEN1cnZlJiYoZT17Y3VydmU6ZX0pLHRoaXMuY3VydmU9ZS5jdXJ2ZS5jdXJ2ZSx0aGlzLm49dGhpcy5jdXJ2ZS5uLHRoaXMubmg9dGhpcy5uLnVzaHJuKDEpLHRoaXMuZz10aGlzLmN1cnZlLmcsdGhpcy5nPWUuY3VydmUuZyx0aGlzLmcucHJlY29tcHV0ZShlLmN1cnZlLm4uYml0TGVuZ3RoKCkrMSksdGhpcy5oYXNoPWUuaGFzaHx8ZS5jdXJ2ZS5oYXNofWUuZXhwb3J0cz1oLGgucHJvdG90eXBlLmtleVBhaXI9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBjKHRoaXMsZSl9LGgucHJvdG90eXBlLmtleUZyb21Qcml2YXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGMuZnJvbVByaXZhdGUodGhpcyxlLHQpfSxoLnByb3RvdHlwZS5rZXlGcm9tUHVibGljPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGMuZnJvbVB1YmxpYyh0aGlzLGUsdCl9LGgucHJvdG90eXBlLmdlbktleVBhaXI9ZnVuY3Rpb24oZSl7ZXx8KGU9e30pO2Zvcih2YXIgdD1uZXcgaSh7aGFzaDp0aGlzLmhhc2gscGVyczplLnBlcnMscGVyc0VuYzplLnBlcnNFbmN8fFwidXRmOFwiLGVudHJvcHk6ZS5lbnRyb3B5fHxzKHRoaXMuaGFzaC5obWFjU3RyZW5ndGgpLGVudHJvcHlFbmM6ZS5lbnRyb3B5JiZlLmVudHJvcHlFbmN8fFwidXRmOFwiLG5vbmNlOnRoaXMubi50b0FycmF5KCl9KSxyPXRoaXMubi5ieXRlTGVuZ3RoKCksbz10aGlzLm4uc3ViKG5ldyBuKDIpKTs7KXt2YXIgYT1uZXcgbih0LmdlbmVyYXRlKHIpKTtpZighKGEuY21wKG8pPjApKXJldHVybiBhLmlhZGRuKDEpLHRoaXMua2V5RnJvbVByaXZhdGUoYSl9fSxoLnByb3RvdHlwZS5fdHJ1bmNhdGVUb049ZnVuY3Rpb24oZSx0KXt2YXIgcj04KmUuYnl0ZUxlbmd0aCgpLXRoaXMubi5iaXRMZW5ndGgoKTtyZXR1cm4gcj4wJiYoZT1lLnVzaHJuKHIpKSwhdCYmZS5jbXAodGhpcy5uKT49MD9lLnN1Yih0aGlzLm4pOmV9LGgucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24oZSx0LHIsbyl7XCJvYmplY3RcIj09dHlwZW9mIHImJihvPXIscj1udWxsKSxvfHwobz17fSksdD10aGlzLmtleUZyb21Qcml2YXRlKHQsciksZT10aGlzLl90cnVuY2F0ZVRvTihuZXcgbihlLDE2KSk7Zm9yKHZhciBhPXRoaXMubi5ieXRlTGVuZ3RoKCkscz10LmdldFByaXZhdGUoKS50b0FycmF5KFwiYmVcIixhKSxmPWUudG9BcnJheShcImJlXCIsYSksYz1uZXcgaSh7aGFzaDp0aGlzLmhhc2gsZW50cm9weTpzLG5vbmNlOmYscGVyczpvLnBlcnMscGVyc0VuYzpvLnBlcnNFbmN8fFwidXRmOFwifSksaD10aGlzLm4uc3ViKG5ldyBuKDEpKSxsPTA7O2wrKyl7dmFyIGQ9by5rP28uayhsKTpuZXcgbihjLmdlbmVyYXRlKHRoaXMubi5ieXRlTGVuZ3RoKCkpKTtpZighKChkPXRoaXMuX3RydW5jYXRlVG9OKGQsITApKS5jbXBuKDEpPD0wfHxkLmNtcChoKT49MCkpe3ZhciBwPXRoaXMuZy5tdWwoZCk7aWYoIXAuaXNJbmZpbml0eSgpKXt2YXIgYj1wLmdldFgoKSx5PWIudW1vZCh0aGlzLm4pO2lmKDAhPT15LmNtcG4oMCkpe3ZhciBnPWQuaW52bSh0aGlzLm4pLm11bCh5Lm11bCh0LmdldFByaXZhdGUoKSkuaWFkZChlKSk7aWYoMCE9PShnPWcudW1vZCh0aGlzLm4pKS5jbXBuKDApKXt2YXIgdj0ocC5nZXRZKCkuaXNPZGQoKT8xOjApfCgwIT09Yi5jbXAoeSk/MjowKTtyZXR1cm4gby5jYW5vbmljYWwmJmcuY21wKHRoaXMubmgpPjAmJihnPXRoaXMubi5zdWIoZyksdl49MSksbmV3IHUoe3I6eSxzOmcscmVjb3ZlcnlQYXJhbTp2fSl9fX19fX0saC5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKGUsdCxyLGkpe2U9dGhpcy5fdHJ1bmNhdGVUb04obmV3IG4oZSwxNikpLHI9dGhpcy5rZXlGcm9tUHVibGljKHIsaSk7dmFyIG89KHQ9bmV3IHUodCxcImhleFwiKSkucixhPXQucztpZihvLmNtcG4oMSk8MHx8by5jbXAodGhpcy5uKT49MClyZXR1cm4hMTtpZihhLmNtcG4oMSk8MHx8YS5jbXAodGhpcy5uKT49MClyZXR1cm4hMTt2YXIgcyxmPWEuaW52bSh0aGlzLm4pLGM9Zi5tdWwoZSkudW1vZCh0aGlzLm4pLGg9Zi5tdWwobykudW1vZCh0aGlzLm4pO3JldHVybiB0aGlzLmN1cnZlLl9tYXh3ZWxsVHJpY2s/IShzPXRoaXMuZy5qbXVsQWRkKGMsci5nZXRQdWJsaWMoKSxoKSkuaXNJbmZpbml0eSgpJiZzLmVxWFRvUChvKTohKHM9dGhpcy5nLm11bEFkZChjLHIuZ2V0UHVibGljKCksaCkpLmlzSW5maW5pdHkoKSYmMD09PXMuZ2V0WCgpLnVtb2QodGhpcy5uKS5jbXAobyl9LGgucHJvdG90eXBlLnJlY292ZXJQdWJLZXk9ZnVuY3Rpb24oZSx0LHIsaSl7ZigoMyZyKT09PXIsXCJUaGUgcmVjb3ZlcnkgcGFyYW0gaXMgbW9yZSB0aGFuIHR3byBiaXRzXCIpLHQ9bmV3IHUodCxpKTt2YXIgbz10aGlzLm4sYT1uZXcgbihlKSxzPXQucixjPXQucyxoPTEmcixsPXI+PjE7aWYocy5jbXAodGhpcy5jdXJ2ZS5wLnVtb2QodGhpcy5jdXJ2ZS5uKSk+PTAmJmwpdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGZpbmQgc2VuY29uZCBrZXkgY2FuZGluYXRlXCIpO3M9bD90aGlzLmN1cnZlLnBvaW50RnJvbVgocy5hZGQodGhpcy5jdXJ2ZS5uKSxoKTp0aGlzLmN1cnZlLnBvaW50RnJvbVgocyxoKTt2YXIgZD10LnIuaW52bShvKSxwPW8uc3ViKGEpLm11bChkKS51bW9kKG8pLGI9Yy5tdWwoZCkudW1vZChvKTtyZXR1cm4gdGhpcy5nLm11bEFkZChwLHMsYil9LGgucHJvdG90eXBlLmdldEtleVJlY292ZXJ5UGFyYW09ZnVuY3Rpb24oZSx0LHIsbil7aWYobnVsbCE9PSh0PW5ldyB1KHQsbikpLnJlY292ZXJ5UGFyYW0pcmV0dXJuIHQucmVjb3ZlcnlQYXJhbTtmb3IodmFyIGk9MDtpPDQ7aSsrKXt2YXIgbzt0cnl7bz10aGlzLnJlY292ZXJQdWJLZXkoZSx0LGkpfWNhdGNoKGUpe2NvbnRpbnVlfWlmKG8uZXEocikpcmV0dXJuIGl9dGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGZpbmQgdmFsaWQgcmVjb3ZlcnkgZmFjdG9yXCIpfX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMzgpLGk9cig2Miksbz1yKDExKTtmdW5jdGlvbiBhKGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGEpKXJldHVybiBuZXcgYShlKTt0aGlzLmhhc2g9ZS5oYXNoLHRoaXMucHJlZFJlc2lzdD0hIWUucHJlZFJlc2lzdCx0aGlzLm91dExlbj10aGlzLmhhc2gub3V0U2l6ZSx0aGlzLm1pbkVudHJvcHk9ZS5taW5FbnRyb3B5fHx0aGlzLmhhc2guaG1hY1N0cmVuZ3RoLHRoaXMuX3Jlc2VlZD1udWxsLHRoaXMucmVzZWVkSW50ZXJ2YWw9bnVsbCx0aGlzLks9bnVsbCx0aGlzLlY9bnVsbDt2YXIgdD1pLnRvQXJyYXkoZS5lbnRyb3B5LGUuZW50cm9weUVuY3x8XCJoZXhcIikscj1pLnRvQXJyYXkoZS5ub25jZSxlLm5vbmNlRW5jfHxcImhleFwiKSxuPWkudG9BcnJheShlLnBlcnMsZS5wZXJzRW5jfHxcImhleFwiKTtvKHQubGVuZ3RoPj10aGlzLm1pbkVudHJvcHkvOCxcIk5vdCBlbm91Z2ggZW50cm9weS4gTWluaW11bSBpczogXCIrdGhpcy5taW5FbnRyb3B5K1wiIGJpdHNcIiksdGhpcy5faW5pdCh0LHIsbil9ZS5leHBvcnRzPWEsYS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWUuY29uY2F0KHQpLmNvbmNhdChyKTt0aGlzLks9bmV3IEFycmF5KHRoaXMub3V0TGVuLzgpLHRoaXMuVj1uZXcgQXJyYXkodGhpcy5vdXRMZW4vOCk7Zm9yKHZhciBpPTA7aTx0aGlzLlYubGVuZ3RoO2krKyl0aGlzLktbaV09MCx0aGlzLlZbaV09MTt0aGlzLl91cGRhdGUobiksdGhpcy5fcmVzZWVkPTEsdGhpcy5yZXNlZWRJbnRlcnZhbD0yODE0NzQ5NzY3MTA2NTZ9LGEucHJvdG90eXBlLl9obWFjPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBuLmhtYWModGhpcy5oYXNoLHRoaXMuSyl9LGEucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLnVwZGF0ZShbMF0pO2UmJih0PXQudXBkYXRlKGUpKSx0aGlzLks9dC5kaWdlc3QoKSx0aGlzLlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpLGUmJih0aGlzLks9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLnVwZGF0ZShbMV0pLnVwZGF0ZShlKS5kaWdlc3QoKSx0aGlzLlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpKX0sYS5wcm90b3R5cGUucmVzZWVkPWZ1bmN0aW9uKGUsdCxyLG4pe1wic3RyaW5nXCIhPXR5cGVvZiB0JiYobj1yLHI9dCx0PW51bGwpLGU9aS50b0FycmF5KGUsdCkscj1pLnRvQXJyYXkocixuKSxvKGUubGVuZ3RoPj10aGlzLm1pbkVudHJvcHkvOCxcIk5vdCBlbm91Z2ggZW50cm9weS4gTWluaW11bSBpczogXCIrdGhpcy5taW5FbnRyb3B5K1wiIGJpdHNcIiksdGhpcy5fdXBkYXRlKGUuY29uY2F0KHJ8fFtdKSksdGhpcy5fcmVzZWVkPTF9LGEucHJvdG90eXBlLmdlbmVyYXRlPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKHRoaXMuX3Jlc2VlZD50aGlzLnJlc2VlZEludGVydmFsKXRocm93IG5ldyBFcnJvcihcIlJlc2VlZCBpcyByZXF1aXJlZFwiKTtcInN0cmluZ1wiIT10eXBlb2YgdCYmKG49cixyPXQsdD1udWxsKSxyJiYocj1pLnRvQXJyYXkocixufHxcImhleFwiKSx0aGlzLl91cGRhdGUocikpO2Zvcih2YXIgbz1bXTtvLmxlbmd0aDxlOyl0aGlzLlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpLG89by5jb25jYXQodGhpcy5WKTt2YXIgYT1vLnNsaWNlKDAsZSk7cmV0dXJuIHRoaXMuX3VwZGF0ZShyKSx0aGlzLl9yZXNlZWQrKyxpLmVuY29kZShhLHQpfX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMyksaT1yKDUpLmFzc2VydDtmdW5jdGlvbiBvKGUsdCl7dGhpcy5lYz1lLHRoaXMucHJpdj1udWxsLHRoaXMucHViPW51bGwsdC5wcml2JiZ0aGlzLl9pbXBvcnRQcml2YXRlKHQucHJpdix0LnByaXZFbmMpLHQucHViJiZ0aGlzLl9pbXBvcnRQdWJsaWModC5wdWIsdC5wdWJFbmMpfWUuZXhwb3J0cz1vLG8uZnJvbVB1YmxpYz1mdW5jdGlvbihlLHQscil7cmV0dXJuIHQgaW5zdGFuY2VvZiBvP3Q6bmV3IG8oZSx7cHViOnQscHViRW5jOnJ9KX0sby5mcm9tUHJpdmF0ZT1mdW5jdGlvbihlLHQscil7cmV0dXJuIHQgaW5zdGFuY2VvZiBvP3Q6bmV3IG8oZSx7cHJpdjp0LHByaXZFbmM6cn0pfSxvLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0UHVibGljKCk7cmV0dXJuIGUuaXNJbmZpbml0eSgpP3tyZXN1bHQ6ITEscmVhc29uOlwiSW52YWxpZCBwdWJsaWMga2V5XCJ9OmUudmFsaWRhdGUoKT9lLm11bCh0aGlzLmVjLmN1cnZlLm4pLmlzSW5maW5pdHkoKT97cmVzdWx0OiEwLHJlYXNvbjpudWxsfTp7cmVzdWx0OiExLHJlYXNvbjpcIlB1YmxpYyBrZXkgKiBOICE9IE9cIn06e3Jlc3VsdDohMSxyZWFzb246XCJQdWJsaWMga2V5IGlzIG5vdCBhIHBvaW50XCJ9fSxvLnByb3RvdHlwZS5nZXRQdWJsaWM9ZnVuY3Rpb24oZSx0KXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmKHQ9ZSxlPW51bGwpLHRoaXMucHVifHwodGhpcy5wdWI9dGhpcy5lYy5nLm11bCh0aGlzLnByaXYpKSx0P3RoaXMucHViLmVuY29kZSh0LGUpOnRoaXMucHVifSxvLnByb3RvdHlwZS5nZXRQcml2YXRlPWZ1bmN0aW9uKGUpe3JldHVyblwiaGV4XCI9PT1lP3RoaXMucHJpdi50b1N0cmluZygxNiwyKTp0aGlzLnByaXZ9LG8ucHJvdG90eXBlLl9pbXBvcnRQcml2YXRlPWZ1bmN0aW9uKGUsdCl7dGhpcy5wcml2PW5ldyBuKGUsdHx8MTYpLHRoaXMucHJpdj10aGlzLnByaXYudW1vZCh0aGlzLmVjLmN1cnZlLm4pfSxvLnByb3RvdHlwZS5faW1wb3J0UHVibGljPWZ1bmN0aW9uKGUsdCl7aWYoZS54fHxlLnkpcmV0dXJuXCJtb250XCI9PT10aGlzLmVjLmN1cnZlLnR5cGU/aShlLngsXCJOZWVkIHggY29vcmRpbmF0ZVwiKTpcInNob3J0XCIhPT10aGlzLmVjLmN1cnZlLnR5cGUmJlwiZWR3YXJkc1wiIT09dGhpcy5lYy5jdXJ2ZS50eXBlfHxpKGUueCYmZS55LFwiTmVlZCBib3RoIHggYW5kIHkgY29vcmRpbmF0ZVwiKSx2b2lkKHRoaXMucHViPXRoaXMuZWMuY3VydmUucG9pbnQoZS54LGUueSkpO3RoaXMucHViPXRoaXMuZWMuY3VydmUuZGVjb2RlUG9pbnQoZSx0KX0sby5wcm90b3R5cGUuZGVyaXZlPWZ1bmN0aW9uKGUpe3JldHVybiBlLm11bCh0aGlzLnByaXYpLmdldFgoKX0sby5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbihlLHQscil7cmV0dXJuIHRoaXMuZWMuc2lnbihlLHRoaXMsdCxyKX0sby5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZWMudmVyaWZ5KGUsdCx0aGlzKX0sby5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVyblwiPEtleSBwcml2OiBcIisodGhpcy5wcml2JiZ0aGlzLnByaXYudG9TdHJpbmcoMTYsMikpK1wiIHB1YjogXCIrKHRoaXMucHViJiZ0aGlzLnB1Yi5pbnNwZWN0KCkpK1wiID5cIn19LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDMpLGk9cig1KSxvPWkuYXNzZXJ0O2Z1bmN0aW9uIGEoZSx0KXtpZihlIGluc3RhbmNlb2YgYSlyZXR1cm4gZTt0aGlzLl9pbXBvcnRERVIoZSx0KXx8KG8oZS5yJiZlLnMsXCJTaWduYXR1cmUgd2l0aG91dCByIG9yIHNcIiksdGhpcy5yPW5ldyBuKGUuciwxNiksdGhpcy5zPW5ldyBuKGUucywxNiksdm9pZCAwPT09ZS5yZWNvdmVyeVBhcmFtP3RoaXMucmVjb3ZlcnlQYXJhbT1udWxsOnRoaXMucmVjb3ZlcnlQYXJhbT1lLnJlY292ZXJ5UGFyYW0pfWZ1bmN0aW9uIHMoKXt0aGlzLnBsYWNlPTB9ZnVuY3Rpb24gZihlLHQpe3ZhciByPWVbdC5wbGFjZSsrXTtpZighKDEyOCZyKSlyZXR1cm4gcjtmb3IodmFyIG49MTUmcixpPTAsbz0wLGE9dC5wbGFjZTtvPG47bysrLGErKylpPDw9OCxpfD1lW2FdO3JldHVybiB0LnBsYWNlPWEsaX1mdW5jdGlvbiBjKGUpe2Zvcih2YXIgdD0wLHI9ZS5sZW5ndGgtMTshZVt0XSYmISgxMjgmZVt0KzFdKSYmdDxyOyl0Kys7cmV0dXJuIDA9PT10P2U6ZS5zbGljZSh0KX1mdW5jdGlvbiB1KGUsdCl7aWYodDwxMjgpZS5wdXNoKHQpO2Vsc2V7dmFyIHI9MSsoTWF0aC5sb2codCkvTWF0aC5MTjI+Pj4zKTtmb3IoZS5wdXNoKDEyOHxyKTstLXI7KWUucHVzaCh0Pj4+KHI8PDMpJjI1NSk7ZS5wdXNoKHQpfX1lLmV4cG9ydHM9YSxhLnByb3RvdHlwZS5faW1wb3J0REVSPWZ1bmN0aW9uKGUsdCl7ZT1pLnRvQXJyYXkoZSx0KTt2YXIgcj1uZXcgcztpZig0OCE9PWVbci5wbGFjZSsrXSlyZXR1cm4hMTtpZihmKGUscikrci5wbGFjZSE9PWUubGVuZ3RoKXJldHVybiExO2lmKDIhPT1lW3IucGxhY2UrK10pcmV0dXJuITE7dmFyIG89ZihlLHIpLGE9ZS5zbGljZShyLnBsYWNlLG8rci5wbGFjZSk7aWYoci5wbGFjZSs9bywyIT09ZVtyLnBsYWNlKytdKXJldHVybiExO3ZhciBjPWYoZSxyKTtpZihlLmxlbmd0aCE9PWMrci5wbGFjZSlyZXR1cm4hMTt2YXIgdT1lLnNsaWNlKHIucGxhY2UsYytyLnBsYWNlKTtyZXR1cm4gMD09PWFbMF0mJjEyOCZhWzFdJiYoYT1hLnNsaWNlKDEpKSwwPT09dVswXSYmMTI4JnVbMV0mJih1PXUuc2xpY2UoMSkpLHRoaXMucj1uZXcgbihhKSx0aGlzLnM9bmV3IG4odSksdGhpcy5yZWNvdmVyeVBhcmFtPW51bGwsITB9LGEucHJvdG90eXBlLnRvREVSPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuci50b0FycmF5KCkscj10aGlzLnMudG9BcnJheSgpO2ZvcigxMjgmdFswXSYmKHQ9WzBdLmNvbmNhdCh0KSksMTI4JnJbMF0mJihyPVswXS5jb25jYXQocikpLHQ9Yyh0KSxyPWMocik7IShyWzBdfHwxMjgmclsxXSk7KXI9ci5zbGljZSgxKTt2YXIgbj1bMl07dShuLHQubGVuZ3RoKSwobj1uLmNvbmNhdCh0KSkucHVzaCgyKSx1KG4sci5sZW5ndGgpO3ZhciBvPW4uY29uY2F0KHIpLGE9WzQ4XTtyZXR1cm4gdShhLG8ubGVuZ3RoKSxhPWEuY29uY2F0KG8pLGkuZW5jb2RlKGEsZSl9fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigzOCksaT1yKDM3KSxvPXIoNSksYT1vLmFzc2VydCxzPW8ucGFyc2VCeXRlcyxmPXIoMTU5KSxjPXIoMTYwKTtmdW5jdGlvbiB1KGUpe2lmKGEoXCJlZDI1NTE5XCI9PT1lLFwib25seSB0ZXN0ZWQgd2l0aCBlZDI1NTE5IHNvIGZhclwiKSwhKHRoaXMgaW5zdGFuY2VvZiB1KSlyZXR1cm4gbmV3IHUoZSk7ZT1pW2VdLmN1cnZlO3RoaXMuY3VydmU9ZSx0aGlzLmc9ZS5nLHRoaXMuZy5wcmVjb21wdXRlKGUubi5iaXRMZW5ndGgoKSsxKSx0aGlzLnBvaW50Q2xhc3M9ZS5wb2ludCgpLmNvbnN0cnVjdG9yLHRoaXMuZW5jb2RpbmdMZW5ndGg9TWF0aC5jZWlsKGUubi5iaXRMZW5ndGgoKS84KSx0aGlzLmhhc2g9bi5zaGE1MTJ9ZS5leHBvcnRzPXUsdS5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbihlLHQpe2U9cyhlKTt2YXIgcj10aGlzLmtleUZyb21TZWNyZXQodCksbj10aGlzLmhhc2hJbnQoci5tZXNzYWdlUHJlZml4KCksZSksaT10aGlzLmcubXVsKG4pLG89dGhpcy5lbmNvZGVQb2ludChpKSxhPXRoaXMuaGFzaEludChvLHIucHViQnl0ZXMoKSxlKS5tdWwoci5wcml2KCkpLGY9bi5hZGQoYSkudW1vZCh0aGlzLmN1cnZlLm4pO3JldHVybiB0aGlzLm1ha2VTaWduYXR1cmUoe1I6aSxTOmYsUmVuY29kZWQ6b30pfSx1LnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24oZSx0LHIpe2U9cyhlKSx0PXRoaXMubWFrZVNpZ25hdHVyZSh0KTt2YXIgbj10aGlzLmtleUZyb21QdWJsaWMociksaT10aGlzLmhhc2hJbnQodC5SZW5jb2RlZCgpLG4ucHViQnl0ZXMoKSxlKSxvPXRoaXMuZy5tdWwodC5TKCkpO3JldHVybiB0LlIoKS5hZGQobi5wdWIoKS5tdWwoaSkpLmVxKG8pfSx1LnByb3RvdHlwZS5oYXNoSW50PWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuaGFzaCgpLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWUudXBkYXRlKGFyZ3VtZW50c1t0XSk7cmV0dXJuIG8uaW50RnJvbUxFKGUuZGlnZXN0KCkpLnVtb2QodGhpcy5jdXJ2ZS5uKX0sdS5wcm90b3R5cGUua2V5RnJvbVB1YmxpYz1mdW5jdGlvbihlKXtyZXR1cm4gZi5mcm9tUHVibGljKHRoaXMsZSl9LHUucHJvdG90eXBlLmtleUZyb21TZWNyZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGYuZnJvbVNlY3JldCh0aGlzLGUpfSx1LnByb3RvdHlwZS5tYWtlU2lnbmF0dXJlPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgYz9lOm5ldyBjKHRoaXMsZSl9LHUucHJvdG90eXBlLmVuY29kZVBvaW50PWZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0WSgpLnRvQXJyYXkoXCJsZVwiLHRoaXMuZW5jb2RpbmdMZW5ndGgpO3JldHVybiB0W3RoaXMuZW5jb2RpbmdMZW5ndGgtMV18PWUuZ2V0WCgpLmlzT2RkKCk/MTI4OjAsdH0sdS5wcm90b3R5cGUuZGVjb2RlUG9pbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9KGU9by5wYXJzZUJ5dGVzKGUpKS5sZW5ndGgtMSxyPWUuc2xpY2UoMCx0KS5jb25jYXQoLTEyOSZlW3RdKSxuPTAhPSgxMjgmZVt0XSksaT1vLmludEZyb21MRShyKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludEZyb21ZKGksbil9LHUucHJvdG90eXBlLmVuY29kZUludD1mdW5jdGlvbihlKXtyZXR1cm4gZS50b0FycmF5KFwibGVcIix0aGlzLmVuY29kaW5nTGVuZ3RoKX0sdS5wcm90b3R5cGUuZGVjb2RlSW50PWZ1bmN0aW9uKGUpe3JldHVybiBvLmludEZyb21MRShlKX0sdS5wcm90b3R5cGUuaXNQb2ludD1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHRoaXMucG9pbnRDbGFzc319LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDUpLGk9bi5hc3NlcnQsbz1uLnBhcnNlQnl0ZXMsYT1uLmNhY2hlZFByb3BlcnR5O2Z1bmN0aW9uIHMoZSx0KXt0aGlzLmVkZHNhPWUsdGhpcy5fc2VjcmV0PW8odC5zZWNyZXQpLGUuaXNQb2ludCh0LnB1Yik/dGhpcy5fcHViPXQucHViOnRoaXMuX3B1YkJ5dGVzPW8odC5wdWIpfXMuZnJvbVB1YmxpYz1mdW5jdGlvbihlLHQpe3JldHVybiB0IGluc3RhbmNlb2Ygcz90Om5ldyBzKGUse3B1Yjp0fSl9LHMuZnJvbVNlY3JldD1mdW5jdGlvbihlLHQpe3JldHVybiB0IGluc3RhbmNlb2Ygcz90Om5ldyBzKGUse3NlY3JldDp0fSl9LHMucHJvdG90eXBlLnNlY3JldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zZWNyZXR9LGEocyxcInB1YkJ5dGVzXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlUG9pbnQodGhpcy5wdWIoKSl9KSksYShzLFwicHViXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3B1YkJ5dGVzP3RoaXMuZWRkc2EuZGVjb2RlUG9pbnQodGhpcy5fcHViQnl0ZXMpOnRoaXMuZWRkc2EuZy5tdWwodGhpcy5wcml2KCkpfSkpLGEocyxcInByaXZCeXRlc1wiLChmdW5jdGlvbigpe3ZhciBlPXRoaXMuZWRkc2EsdD10aGlzLmhhc2goKSxyPWUuZW5jb2RpbmdMZW5ndGgtMSxuPXQuc2xpY2UoMCxlLmVuY29kaW5nTGVuZ3RoKTtyZXR1cm4gblswXSY9MjQ4LG5bcl0mPTEyNyxuW3JdfD02NCxufSkpLGEocyxcInByaXZcIiwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVJbnQodGhpcy5wcml2Qnl0ZXMoKSl9KSksYShzLFwiaGFzaFwiLChmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmhhc2goKS51cGRhdGUodGhpcy5zZWNyZXQoKSkuZGlnZXN0KCl9KSksYShzLFwibWVzc2FnZVByZWZpeFwiLChmdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc2goKS5zbGljZSh0aGlzLmVkZHNhLmVuY29kaW5nTGVuZ3RoKX0pKSxzLnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKGUpe3JldHVybiBpKHRoaXMuX3NlY3JldCxcIktleVBhaXIgY2FuIG9ubHkgdmVyaWZ5XCIpLHRoaXMuZWRkc2Euc2lnbihlLHRoaXMpfSxzLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lZGRzYS52ZXJpZnkoZSx0LHRoaXMpfSxzLnByb3RvdHlwZS5nZXRTZWNyZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGkodGhpcy5fc2VjcmV0LFwiS2V5UGFpciBpcyBwdWJsaWMgb25seVwiKSxuLmVuY29kZSh0aGlzLnNlY3JldCgpLGUpfSxzLnByb3RvdHlwZS5nZXRQdWJsaWM9ZnVuY3Rpb24oZSl7cmV0dXJuIG4uZW5jb2RlKHRoaXMucHViQnl0ZXMoKSxlKX0sZS5leHBvcnRzPXN9LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDMpLGk9cig1KSxvPWkuYXNzZXJ0LGE9aS5jYWNoZWRQcm9wZXJ0eSxzPWkucGFyc2VCeXRlcztmdW5jdGlvbiBmKGUsdCl7dGhpcy5lZGRzYT1lLFwib2JqZWN0XCIhPXR5cGVvZiB0JiYodD1zKHQpKSxBcnJheS5pc0FycmF5KHQpJiYodD17Ujp0LnNsaWNlKDAsZS5lbmNvZGluZ0xlbmd0aCksUzp0LnNsaWNlKGUuZW5jb2RpbmdMZW5ndGgpfSksbyh0LlImJnQuUyxcIlNpZ25hdHVyZSB3aXRob3V0IFIgb3IgU1wiKSxlLmlzUG9pbnQodC5SKSYmKHRoaXMuX1I9dC5SKSx0LlMgaW5zdGFuY2VvZiBuJiYodGhpcy5fUz10LlMpLHRoaXMuX1JlbmNvZGVkPUFycmF5LmlzQXJyYXkodC5SKT90LlI6dC5SZW5jb2RlZCx0aGlzLl9TZW5jb2RlZD1BcnJheS5pc0FycmF5KHQuUyk/dC5TOnQuU2VuY29kZWR9YShmLFwiU1wiLChmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmRlY29kZUludCh0aGlzLlNlbmNvZGVkKCkpfSkpLGEoZixcIlJcIiwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVQb2ludCh0aGlzLlJlbmNvZGVkKCkpfSkpLGEoZixcIlJlbmNvZGVkXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlUG9pbnQodGhpcy5SKCkpfSkpLGEoZixcIlNlbmNvZGVkXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlSW50KHRoaXMuUygpKX0pKSxmLnByb3RvdHlwZS50b0J5dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUmVuY29kZWQoKS5jb25jYXQodGhpcy5TZW5jb2RlZCgpKX0sZi5wcm90b3R5cGUudG9IZXg9ZnVuY3Rpb24oKXtyZXR1cm4gaS5lbmNvZGUodGhpcy50b0J5dGVzKCksXCJoZXhcIikudG9VcHBlckNhc2UoKX0sZS5leHBvcnRzPWZ9LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtcbi8qXG5vYmplY3QtYXNzaWduXG4oYykgU2luZHJlIFNvcmh1c1xuQGxpY2Vuc2UgTUlUXG4qL3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG89T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtmdW5jdGlvbiBhKGUpe2lmKG51bGw9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkXCIpO3JldHVybiBPYmplY3QoZSl9ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dHJ5e2lmKCFPYmplY3QuYXNzaWduKXJldHVybiExO3ZhciBlPW5ldyBTdHJpbmcoXCJhYmNcIik7aWYoZVs1XT1cImRlXCIsXCI1XCI9PT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKVswXSlyZXR1cm4hMTtmb3IodmFyIHQ9e30scj0wO3I8MTA7cisrKXRbXCJfXCIrU3RyaW5nLmZyb21DaGFyQ29kZShyKV09cjtpZihcIjAxMjM0NTY3ODlcIiE9PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSkuam9pbihcIlwiKSlyZXR1cm4hMTt2YXIgbj17fTtyZXR1cm5cImFiY2RlZmdoaWprbG1ub3BxcnN0XCIuc3BsaXQoXCJcIikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bltlXT1lfSkpLFwiYWJjZGVmZ2hpamtsbW5vcHFyc3RcIj09PU9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sbikpLmpvaW4oXCJcIil9Y2F0Y2goZSl7cmV0dXJuITF9fSgpP09iamVjdC5hc3NpZ246ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIscyxmPWEoZSksYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe2Zvcih2YXIgdSBpbiByPU9iamVjdChhcmd1bWVudHNbY10pKWkuY2FsbChyLHUpJiYoZlt1XT1yW3VdKTtpZihuKXtzPW4ocik7Zm9yKHZhciBoPTA7aDxzLmxlbmd0aDtoKyspby5jYWxsKHIsc1toXSkmJihmW3NbaF1dPXJbc1toXV0pfX1yZXR1cm4gZn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDcxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIGU/ZTpuKGUpP2Uuc2xpY2UoMik6ZX19LGZ1bmN0aW9uKGUsdCxyKXtjb25zdCBuPXIoMzkpLGk9cigxNjQpLG89MWUzO2Z1bmN0aW9uIGEoZSx0KXtyZXR1cm4gbmV3IFByb21pc2Uocj0+e2NvbnN0IG49c2V0VGltZW91dChyLGUpO24udW5yZWYmJnQmJm4udW5yZWYoKX0pfWUuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGl7Y29uc3RydWN0b3IoZT17fSl7aWYoIWUucHJvdmlkZXIpdGhyb3cgbmV3IEVycm9yKFwiUG9sbGluZ0Jsb2NrVHJhY2tlciAtIG5vIHByb3ZpZGVyIHNwZWNpZmllZC5cIik7Y29uc3QgdD1lLnBvbGxpbmdJbnRlcnZhbHx8MjAqbyxyPWUucmV0cnlUaW1lb3V0fHx0LzEwLG49dm9pZCAwPT09ZS5rZWVwRXZlbnRMb29wQWN0aXZlfHxlLmtlZXBFdmVudExvb3BBY3RpdmUsaT1lLnNldFNraXBDYWNoZUZsYWd8fCExO3N1cGVyKE9iamVjdC5hc3NpZ24oe2Jsb2NrUmVzZXREdXJhdGlvbjp0fSxlKSksdGhpcy5fcHJvdmlkZXI9ZS5wcm92aWRlcix0aGlzLl9wb2xsaW5nSW50ZXJ2YWw9dCx0aGlzLl9yZXRyeVRpbWVvdXQ9cix0aGlzLl9rZWVwRXZlbnRMb29wQWN0aXZlPW4sdGhpcy5fc2V0U2tpcENhY2hlRmxhZz1pfWFzeW5jIGNoZWNrRm9yTGF0ZXN0QmxvY2soKXtyZXR1cm4gYXdhaXQgdGhpcy5fdXBkYXRlTGF0ZXN0QmxvY2soKSxhd2FpdCB0aGlzLmdldExhdGVzdEJsb2NrKCl9X3N0YXJ0KCl7dGhpcy5fcGVyZm9ybVN5bmMoKS5jYXRjaChlPT50aGlzLmVtaXQoXCJlcnJvclwiLGUpKX1hc3luYyBfcGVyZm9ybVN5bmMoKXtmb3IoO3RoaXMuX2lzUnVubmluZzspdHJ5e2F3YWl0IHRoaXMuX3VwZGF0ZUxhdGVzdEJsb2NrKCksYXdhaXQgYSh0aGlzLl9wb2xsaW5nSW50ZXJ2YWwsIXRoaXMuX2tlZXBFdmVudExvb3BBY3RpdmUpfWNhdGNoKGUpe2NvbnN0IHQ9bmV3IEVycm9yKGBQb2xsaW5nQmxvY2tUcmFja2VyIC0gZW5jb3VudGVyZWQgYW4gZXJyb3Igd2hpbGUgYXR0ZW1wdGluZyB0byB1cGRhdGUgbGF0ZXN0IGJsb2NrOlxcbiR7ZS5zdGFja31gKTt0cnl7dGhpcy5lbWl0KFwiZXJyb3JcIix0KX1jYXRjaChlKXtjb25zb2xlLmVycm9yKHQpfWF3YWl0IGEodGhpcy5fcmV0cnlUaW1lb3V0LCF0aGlzLl9rZWVwRXZlbnRMb29wQWN0aXZlKX19YXN5bmMgX3VwZGF0ZUxhdGVzdEJsb2NrKCl7Y29uc3QgZT1hd2FpdCB0aGlzLl9mZXRjaExhdGVzdEJsb2NrKCk7dGhpcy5fbmV3UG90ZW50aWFsTGF0ZXN0KGUpfWFzeW5jIF9mZXRjaExhdGVzdEJsb2NrKCl7Y29uc3QgZT17anNvbnJwYzpcIjIuMFwiLGlkOjEsbWV0aG9kOlwiZXRoX2Jsb2NrTnVtYmVyXCIscGFyYW1zOltdfTt0aGlzLl9zZXRTa2lwQ2FjaGVGbGFnJiYoZS5za2lwQ2FjaGU9ITApO2NvbnN0IHQ9YXdhaXQgbih0PT50aGlzLl9wcm92aWRlci5zZW5kQXN5bmMoZSx0KSkoKTtpZih0LmVycm9yKXRocm93IG5ldyBFcnJvcihgUG9sbGluZ0Jsb2NrVHJhY2tlciAtIGVuY291bnRlcmVkIGVycm9yIGZldGNoaW5nIGJsb2NrOlxcbiR7dC5lcnJvcn1gKTtyZXR1cm4gdC5yZXN1bHR9fX0sZnVuY3Rpb24oZSx0LHIpe3IoNzIpLHIoMzkpO2NvbnN0IG49cig0MCksaT0xZTMsbz0oZSx0KT0+ZSt0LGE9W1wic3luY1wiLFwibGF0ZXN0XCJdO2Z1bmN0aW9uIHMoZSl7cmV0dXJuIE51bWJlci5wYXJzZUludChlLDE2KX1lLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBue2NvbnN0cnVjdG9yKGU9e30pe3N1cGVyKCksdGhpcy5fYmxvY2tSZXNldER1cmF0aW9uPWUuYmxvY2tSZXNldER1cmF0aW9ufHwyMCppLHRoaXMuX2Jsb2NrUmVzZXRUaW1lb3V0LHRoaXMuX2N1cnJlbnRCbG9jaz1udWxsLHRoaXMuX2lzUnVubmluZz0hMSx0aGlzLl9vbk5ld0xpc3RlbmVyPXRoaXMuX29uTmV3TGlzdGVuZXIuYmluZCh0aGlzKSx0aGlzLl9vblJlbW92ZUxpc3RlbmVyPXRoaXMuX29uUmVtb3ZlTGlzdGVuZXIuYmluZCh0aGlzKSx0aGlzLl9yZXNldEN1cnJlbnRCbG9jaz10aGlzLl9yZXNldEN1cnJlbnRCbG9jay5iaW5kKHRoaXMpLHRoaXMuX3NldHVwSW50ZXJuYWxFdmVudHMoKX1pc1J1bm5pbmcoKXtyZXR1cm4gdGhpcy5faXNSdW5uaW5nfWdldEN1cnJlbnRCbG9jaygpe3JldHVybiB0aGlzLl9jdXJyZW50QmxvY2t9YXN5bmMgZ2V0TGF0ZXN0QmxvY2soKXtpZih0aGlzLl9jdXJyZW50QmxvY2spcmV0dXJuIHRoaXMuX2N1cnJlbnRCbG9jaztyZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoZT0+dGhpcy5vbmNlKFwibGF0ZXN0XCIsZSkpfXJlbW92ZUFsbExpc3RlbmVycyhlKXtlP3N1cGVyLnJlbW92ZUFsbExpc3RlbmVycyhlKTpzdXBlci5yZW1vdmVBbGxMaXN0ZW5lcnMoKSx0aGlzLl9zZXR1cEludGVybmFsRXZlbnRzKCksdGhpcy5fb25SZW1vdmVMaXN0ZW5lcigpfV9zdGFydCgpe31fZW5kKCl7fV9zZXR1cEludGVybmFsRXZlbnRzKCl7dGhpcy5yZW1vdmVMaXN0ZW5lcihcIm5ld0xpc3RlbmVyXCIsdGhpcy5fb25OZXdMaXN0ZW5lciksdGhpcy5yZW1vdmVMaXN0ZW5lcihcInJlbW92ZUxpc3RlbmVyXCIsdGhpcy5fb25SZW1vdmVMaXN0ZW5lciksdGhpcy5vbihcIm5ld0xpc3RlbmVyXCIsdGhpcy5fb25OZXdMaXN0ZW5lciksdGhpcy5vbihcInJlbW92ZUxpc3RlbmVyXCIsdGhpcy5fb25SZW1vdmVMaXN0ZW5lcil9X29uTmV3TGlzdGVuZXIoZSx0KXthLmluY2x1ZGVzKGUpJiZ0aGlzLl9tYXliZVN0YXJ0KCl9X29uUmVtb3ZlTGlzdGVuZXIoZSx0KXt0aGlzLl9nZXRCbG9ja1RyYWNrZXJFdmVudENvdW50KCk+MHx8dGhpcy5fbWF5YmVFbmQoKX1fbWF5YmVTdGFydCgpe3RoaXMuX2lzUnVubmluZ3x8KHRoaXMuX2lzUnVubmluZz0hMCx0aGlzLl9jYW5jZWxCbG9ja1Jlc2V0VGltZW91dCgpLHRoaXMuX3N0YXJ0KCkpfV9tYXliZUVuZCgpe3RoaXMuX2lzUnVubmluZyYmKHRoaXMuX2lzUnVubmluZz0hMSx0aGlzLl9zZXR1cEJsb2NrUmVzZXRUaW1lb3V0KCksdGhpcy5fZW5kKCkpfV9nZXRCbG9ja1RyYWNrZXJFdmVudENvdW50KCl7cmV0dXJuIGEubWFwKGU9PnRoaXMubGlzdGVuZXJDb3VudChlKSkucmVkdWNlKG8pfV9uZXdQb3RlbnRpYWxMYXRlc3QoZSl7Y29uc3QgdD10aGlzLl9jdXJyZW50QmxvY2s7dCYmcyhlKTw9cyh0KXx8dGhpcy5fc2V0Q3VycmVudEJsb2NrKGUpfV9zZXRDdXJyZW50QmxvY2soZSl7Y29uc3QgdD10aGlzLl9jdXJyZW50QmxvY2s7dGhpcy5fY3VycmVudEJsb2NrPWUsdGhpcy5lbWl0KFwibGF0ZXN0XCIsZSksdGhpcy5lbWl0KFwic3luY1wiLHtvbGRCbG9jazp0LG5ld0Jsb2NrOmV9KX1fc2V0dXBCbG9ja1Jlc2V0VGltZW91dCgpe3RoaXMuX2NhbmNlbEJsb2NrUmVzZXRUaW1lb3V0KCksdGhpcy5fYmxvY2tSZXNldFRpbWVvdXQ9c2V0VGltZW91dCh0aGlzLl9yZXNldEN1cnJlbnRCbG9jayx0aGlzLl9ibG9ja1Jlc2V0RHVyYXRpb24pLHRoaXMuX2Jsb2NrUmVzZXRUaW1lb3V0LnVucmVmJiZ0aGlzLl9ibG9ja1Jlc2V0VGltZW91dC51bnJlZigpfV9jYW5jZWxCbG9ja1Jlc2V0VGltZW91dCgpe2NsZWFyVGltZW91dCh0aGlzLl9ibG9ja1Jlc2V0VGltZW91dCl9X3Jlc2V0Q3VycmVudEJsb2NrKCl7dGhpcy5fY3VycmVudEJsb2NrPW51bGx9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9KGU9ZXx8e30pLm1heHx8TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIscj12b2lkIDAhPT1lLnN0YXJ0P2Uuc3RhcnQ6TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKnQpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiByJT10LHIrK319fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LHIsbyl7cmV0dXJuIGUobi5kZWZhdWx0LHQsKDAsaS5kZWZhdWx0KShyKSxvKX19O3ZhciBuPW8ocig3NCkpLGk9byhyKDEyKSk7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDEpLGk9cig3OCksbz1cIltvYmplY3QgQXN5bmNGdW5jdGlvbl1cIixhPVwiW29iamVjdCBGdW5jdGlvbl1cIixzPVwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl1cIixmPVwiW29iamVjdCBQcm94eV1cIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIWkoZSkpcmV0dXJuITE7dmFyIHQ9bihlKTtyZXR1cm4gdD09YXx8dD09c3x8dD09b3x8dD09Zn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDc1KSxpPU9iamVjdC5wcm90b3R5cGUsbz1pLmhhc093blByb3BlcnR5LGE9aS50b1N0cmluZyxzPW4/bi50b1N0cmluZ1RhZzp2b2lkIDA7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PW8uY2FsbChlLHMpLHI9ZVtzXTt0cnl7ZVtzXT12b2lkIDA7dmFyIG49ITB9Y2F0Y2goZSl7fXZhciBpPWEuY2FsbChlKTtyZXR1cm4gbiYmKHQ/ZVtzXT1yOmRlbGV0ZSBlW3NdKSxpfX0sZnVuY3Rpb24oZSx0KXt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gci5jYWxsKGUpfX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlLHQscixvKXsoMCxuLmRlZmF1bHQpKHQpKGUsKDAsaS5kZWZhdWx0KShyKSxvKX07dmFyIG49byhyKDgxKSksaT1vKHIoMTIpKTtmdW5jdGlvbiBvKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1lLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe2lmKCgwLG4uZGVmYXVsdCkoZSkpcmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PS0xLHI9ZS5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuKyt0PHI/e3ZhbHVlOmVbdF0sa2V5OnR9Om51bGx9fShlKTt2YXIgdD0oMCxpLmRlZmF1bHQpKGUpO3JldHVybiB0P2Z1bmN0aW9uKGUpe3ZhciB0PS0xO3JldHVybiBmdW5jdGlvbigpe3ZhciByPWUubmV4dCgpO3JldHVybiByLmRvbmU/bnVsbDoodCsrLHt2YWx1ZTpyLnZhbHVlLGtleTp0fSl9fSh0KToocj1lLGE9KDAsby5kZWZhdWx0KShyKSxzPS0xLGY9YS5sZW5ndGgsZnVuY3Rpb24oKXt2YXIgZT1hWysrc107cmV0dXJuIHM8Zj97dmFsdWU6cltlXSxrZXk6ZX06bnVsbH0pO3ZhciByLGEscyxmfTt2YXIgbj1hKHIoMzApKSxpPWEocigxNzIpKSxvPWEocigxNzMpKTtmdW5jdGlvbiBhKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1lLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe3JldHVybiBuJiZlW25dJiZlW25dKCl9O3ZhciBuPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yO2UuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE3NCksaT1yKDE4NSksbz1yKDMwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSk/bihlKTppKGUpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTc1KSxpPXIoMTc2KSxvPXIoODIpLGE9cigxNzgpLHM9cigxODApLGY9cigxODEpLGM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1vKGUpLHU9IXImJmkoZSksaD0hciYmIXUmJmEoZSksbD0hciYmIXUmJiFoJiZmKGUpLGQ9cnx8dXx8aHx8bCxwPWQ/bihlLmxlbmd0aCxTdHJpbmcpOltdLGI9cC5sZW5ndGg7Zm9yKHZhciB5IGluIGUpIXQmJiFjLmNhbGwoZSx5KXx8ZCYmKFwibGVuZ3RoXCI9PXl8fGgmJihcIm9mZnNldFwiPT15fHxcInBhcmVudFwiPT15KXx8bCYmKFwiYnVmZmVyXCI9PXl8fFwiYnl0ZUxlbmd0aFwiPT15fHxcImJ5dGVPZmZzZXRcIj09eSl8fHMoeSxiKSl8fHAucHVzaCh5KTtyZXR1cm4gcH19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPS0xLG49QXJyYXkoZSk7KytyPGU7KW5bcl09dChyKTtyZXR1cm4gbn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE3NyksaT1yKDQzKSxvPU9iamVjdC5wcm90b3R5cGUsYT1vLmhhc093blByb3BlcnR5LHM9by5wcm9wZXJ0eUlzRW51bWVyYWJsZSxmPW4oZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKT9uOmZ1bmN0aW9uKGUpe3JldHVybiBpKGUpJiZhLmNhbGwoZSxcImNhbGxlZVwiKSYmIXMuY2FsbChlLFwiY2FsbGVlXCIpfTtlLmV4cG9ydHM9Zn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDEpLGk9cig0Myksbz1cIltvYmplY3QgQXJndW1lbnRzXVwiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaShlKSYmbihlKT09b319LGZ1bmN0aW9uKGUsdCxyKXsoZnVuY3Rpb24oZSl7dmFyIG49cig3NiksaT1yKDE3OSksbz10JiYhdC5ub2RlVHlwZSYmdCxhPW8mJlwib2JqZWN0XCI9PXR5cGVvZiBlJiZlJiYhZS5ub2RlVHlwZSYmZSxzPWEmJmEuZXhwb3J0cz09PW8/bi5CdWZmZXI6dm9pZCAwLGY9KHM/cy5pc0J1ZmZlcjp2b2lkIDApfHxpO2UuZXhwb3J0cz1mfSkuY2FsbCh0aGlzLHIoMjcpKGUpKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4hMX19LGZ1bmN0aW9uKGUsdCl7dmFyIHI9OTAwNzE5OTI1NDc0MDk5MSxuPS9eKD86MHxbMS05XVxcZCopJC87ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGk9dHlwZW9mIGU7cmV0dXJuISEodD1udWxsPT10P3I6dCkmJihcIm51bWJlclwiPT1pfHxcInN5bWJvbFwiIT1pJiZuLnRlc3QoZSkpJiZlPi0xJiZlJTE9PTAmJmU8dH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE4MiksaT1yKDE4Myksbz1yKDE4NCksYT1vJiZvLmlzVHlwZWRBcnJheSxzPWE/aShhKTpuO2UuZXhwb3J0cz1zfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0MSksaT1yKDc5KSxvPXIoNDMpLGE9e307YVtcIltvYmplY3QgRmxvYXQzMkFycmF5XVwiXT1hW1wiW29iamVjdCBGbG9hdDY0QXJyYXldXCJdPWFbXCJbb2JqZWN0IEludDhBcnJheV1cIl09YVtcIltvYmplY3QgSW50MTZBcnJheV1cIl09YVtcIltvYmplY3QgSW50MzJBcnJheV1cIl09YVtcIltvYmplY3QgVWludDhBcnJheV1cIl09YVtcIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldXCJdPWFbXCJbb2JqZWN0IFVpbnQxNkFycmF5XVwiXT1hW1wiW29iamVjdCBVaW50MzJBcnJheV1cIl09ITAsYVtcIltvYmplY3QgQXJndW1lbnRzXVwiXT1hW1wiW29iamVjdCBBcnJheV1cIl09YVtcIltvYmplY3QgQXJyYXlCdWZmZXJdXCJdPWFbXCJbb2JqZWN0IEJvb2xlYW5dXCJdPWFbXCJbb2JqZWN0IERhdGFWaWV3XVwiXT1hW1wiW29iamVjdCBEYXRlXVwiXT1hW1wiW29iamVjdCBFcnJvcl1cIl09YVtcIltvYmplY3QgRnVuY3Rpb25dXCJdPWFbXCJbb2JqZWN0IE1hcF1cIl09YVtcIltvYmplY3QgTnVtYmVyXVwiXT1hW1wiW29iamVjdCBPYmplY3RdXCJdPWFbXCJbb2JqZWN0IFJlZ0V4cF1cIl09YVtcIltvYmplY3QgU2V0XVwiXT1hW1wiW29iamVjdCBTdHJpbmddXCJdPWFbXCJbb2JqZWN0IFdlYWtNYXBdXCJdPSExLGUuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbyhlKSYmaShlLmxlbmd0aCkmJiEhYVtuKGUpXX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZSh0KX19fSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKGUpe3ZhciBuPXIoNzcpLGk9dCYmIXQubm9kZVR5cGUmJnQsbz1pJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmZSYmIWUubm9kZVR5cGUmJmUsYT1vJiZvLmV4cG9ydHM9PT1pJiZuLnByb2Nlc3Mscz1mdW5jdGlvbigpe3RyeXt2YXIgZT1vJiZvLnJlcXVpcmUmJm8ucmVxdWlyZShcInV0aWxcIikudHlwZXM7cmV0dXJuIGV8fGEmJmEuYmluZGluZyYmYS5iaW5kaW5nKFwidXRpbFwiKX1jYXRjaChlKXt9fSgpO2UuZXhwb3J0cz1zfSkuY2FsbCh0aGlzLHIoMjcpKGUpKX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTg2KSxpPXIoMTg3KSxvPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCFuKGUpKXJldHVybiBpKGUpO3ZhciB0PVtdO2Zvcih2YXIgciBpbiBPYmplY3QoZSkpby5jYWxsKGUscikmJlwiY29uc3RydWN0b3JcIiE9ciYmdC5wdXNoKHIpO3JldHVybiB0fX0sZnVuY3Rpb24oZSx0KXt2YXIgcj1PYmplY3QucHJvdG90eXBlO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLmNvbnN0cnVjdG9yO3JldHVybiBlPT09KFwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJnQucHJvdG90eXBlfHxyKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE4OCkoT2JqZWN0LmtleXMsT2JqZWN0KTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGUodChyKSl9fX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlKXtyZXR1cm4oMCxpLmRlZmF1bHQpKChmdW5jdGlvbih0LHIpe3ZhciBpO3RyeXtpPWUuYXBwbHkodGhpcyx0KX1jYXRjaChlKXtyZXR1cm4gcihlKX0oMCxuLmRlZmF1bHQpKGkpJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLnRoZW4/aS50aGVuKChmdW5jdGlvbihlKXtzKHIsbnVsbCxlKX0pLChmdW5jdGlvbihlKXtzKHIsZS5tZXNzYWdlP2U6bmV3IEVycm9yKGUpKX0pKTpyKG51bGwsaSl9KSl9O3ZhciBuPWEocig3OCkpLGk9YShyKDE5MCkpLG89YShyKDE5MSkpO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIHMoZSx0LHIpe3RyeXtlKHQscil9Y2F0Y2goZSl7KDAsby5kZWZhdWx0KShmLGUpfX1mdW5jdGlvbiBmKGUpe3Rocm93IGV9ZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD0oMCxvLmRlZmF1bHQpKGFyZ3VtZW50cykscj10LnBvcCgpO2UuY2FsbCh0aGlzLHQscil9fTt2YXIgbixpPXIoMzEpLG89KG49aSkmJm4uX19lc01vZHVsZT9uOntkZWZhdWx0Om59O2UuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjsoZnVuY3Rpb24oZSxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lmhhc05leHRUaWNrPXQuaGFzU2V0SW1tZWRpYXRlPXZvaWQgMCx0LmZhbGxiYWNrPXUsdC53cmFwPWg7dmFyIGksbz1yKDMxKSxhPShpPW8pJiZpLl9fZXNNb2R1bGU/aTp7ZGVmYXVsdDppfTt2YXIgcyxmPXQuaGFzU2V0SW1tZWRpYXRlPVwiZnVuY3Rpb25cIj09dHlwZW9mIGUmJmUsYz10Lmhhc05leHRUaWNrPVwib2JqZWN0XCI9PXR5cGVvZiBuJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBuLm5leHRUaWNrO2Z1bmN0aW9uIHUoZSl7c2V0VGltZW91dChlLDApfWZ1bmN0aW9uIGgoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciByPSgwLGEuZGVmYXVsdCkoYXJndW1lbnRzLDEpO2UoKGZ1bmN0aW9uKCl7dC5hcHBseShudWxsLHIpfSkpfX1zPWY/ZTpjP24ubmV4dFRpY2s6dSx0LmRlZmF1bHQ9aChzKX0pLmNhbGwodGhpcyxyKDI2KS5zZXRJbW1lZGlhdGUscig5KSl9LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSx0LHIsbyl7bz1vfHxuLmRlZmF1bHQsdD10fHxbXTt2YXIgYT1bXSxzPTAsZj0oMCxpLmRlZmF1bHQpKHIpO2UodCwoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXMrKztmKGUsKGZ1bmN0aW9uKGUsdCl7YVtuXT10LHIoZSl9KSl9KSwoZnVuY3Rpb24oZSl7byhlLGEpfSkpfTt2YXIgbj1vKHIoMTgpKSxpPW8ocigxMikpO2Z1bmN0aW9uIG8oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgbj1vKHIoMTk0KSksaT1vKHIoODMpKTtmdW5jdGlvbiBvKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX10LmRlZmF1bHQ9KDAsaS5kZWZhdWx0KShuLmRlZmF1bHQsMSksZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlLHQscixhKXsoMCxuLmRlZmF1bHQpKHQpKGUsKDAsaS5kZWZhdWx0KSgoMCxvLmRlZmF1bHQpKHIpKSxhKX07dmFyIG49YShyKDgxKSksaT1hKHIoMTk1KSksbz1hKHIoMTIpKTtmdW5jdGlvbiBhKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1lLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LHIsbil7cmV0dXJuIGUodCxuKX19LGUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDYpLkV2ZW50RW1pdHRlcixpPXIoMikuaW5oZXJpdHM7ZnVuY3Rpb24gbygpe24uY2FsbCh0aGlzKSx0aGlzLmlzTG9ja2VkPSEwfWUuZXhwb3J0cz1vLGkobyxuKSxvLnByb3RvdHlwZS5nbz1mdW5jdGlvbigpe3RoaXMuaXNMb2NrZWQ9ITEsdGhpcy5lbWl0KFwidW5sb2NrXCIpfSxvLnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7dGhpcy5pc0xvY2tlZD0hMCx0aGlzLmVtaXQoXCJsb2NrXCIpfSxvLnByb3RvdHlwZS5hd2FpdD1mdW5jdGlvbihlKXt0aGlzLmlzTG9ja2VkP3RoaXMub25jZShcInVubG9ja1wiLGUpOnNldFRpbWVvdXQoZSl9fSxmdW5jdGlvbihlLHQscil7dC5wYXJzZT1yKDE5OCksdC5zdHJpbmdpZnk9cigxOTkpfSxmdW5jdGlvbihlLHQpe3ZhciByLG4saSxvLGE9eydcIic6J1wiJyxcIlxcXFxcIjpcIlxcXFxcIixcIi9cIjpcIi9cIixiOlwiXFxiXCIsZjpcIlxcZlwiLG46XCJcXG5cIixyOlwiXFxyXCIsdDpcIlxcdFwifSxzPWZ1bmN0aW9uKGUpe3Rocm93e25hbWU6XCJTeW50YXhFcnJvclwiLG1lc3NhZ2U6ZSxhdDpyLHRleHQ6aX19LGY9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUhPT1uJiZzKFwiRXhwZWN0ZWQgJ1wiK2UrXCInIGluc3RlYWQgb2YgJ1wiK24rXCInXCIpLG49aS5jaGFyQXQocikscis9MSxufSxjPWZ1bmN0aW9uKCl7dmFyIGUsdD1cIlwiO2ZvcihcIi1cIj09PW4mJih0PVwiLVwiLGYoXCItXCIpKTtuPj1cIjBcIiYmbjw9XCI5XCI7KXQrPW4sZigpO2lmKFwiLlwiPT09bilmb3IodCs9XCIuXCI7ZigpJiZuPj1cIjBcIiYmbjw9XCI5XCI7KXQrPW47aWYoXCJlXCI9PT1ufHxcIkVcIj09PW4pZm9yKHQrPW4sZigpLFwiLVwiIT09biYmXCIrXCIhPT1ufHwodCs9bixmKCkpO24+PVwiMFwiJiZuPD1cIjlcIjspdCs9bixmKCk7aWYoZT0rdCxpc0Zpbml0ZShlKSlyZXR1cm4gZTtzKFwiQmFkIG51bWJlclwiKX0sdT1mdW5jdGlvbigpe3ZhciBlLHQscixpPVwiXCI7aWYoJ1wiJz09PW4pZm9yKDtmKCk7KXtpZignXCInPT09bilyZXR1cm4gZigpLGk7aWYoXCJcXFxcXCI9PT1uKWlmKGYoKSxcInVcIj09PW4pe2ZvcihyPTAsdD0wO3Q8NCYmKGU9cGFyc2VJbnQoZigpLDE2KSxpc0Zpbml0ZShlKSk7dCs9MSlyPTE2KnIrZTtpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHIpfWVsc2V7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGFbbl0pYnJlYWs7aSs9YVtuXX1lbHNlIGkrPW59cyhcIkJhZCBzdHJpbmdcIil9LGg9ZnVuY3Rpb24oKXtmb3IoO24mJm48PVwiIFwiOylmKCl9O289ZnVuY3Rpb24oKXtzd2l0Y2goaCgpLG4pe2Nhc2VcIntcIjpyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZSx0PXt9O2lmKFwie1wiPT09bil7aWYoZihcIntcIiksaCgpLFwifVwiPT09bilyZXR1cm4gZihcIn1cIiksdDtmb3IoO247KXtpZihlPXUoKSxoKCksZihcIjpcIiksT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodCxlKSYmcygnRHVwbGljYXRlIGtleSBcIicrZSsnXCInKSx0W2VdPW8oKSxoKCksXCJ9XCI9PT1uKXJldHVybiBmKFwifVwiKSx0O2YoXCIsXCIpLGgoKX19cyhcIkJhZCBvYmplY3RcIil9KCk7Y2FzZVwiW1wiOnJldHVybiBmdW5jdGlvbigpe3ZhciBlPVtdO2lmKFwiW1wiPT09bil7aWYoZihcIltcIiksaCgpLFwiXVwiPT09bilyZXR1cm4gZihcIl1cIiksZTtmb3IoO247KXtpZihlLnB1c2gobygpKSxoKCksXCJdXCI9PT1uKXJldHVybiBmKFwiXVwiKSxlO2YoXCIsXCIpLGgoKX19cyhcIkJhZCBhcnJheVwiKX0oKTtjYXNlJ1wiJzpyZXR1cm4gdSgpO2Nhc2VcIi1cIjpyZXR1cm4gYygpO2RlZmF1bHQ6cmV0dXJuIG4+PVwiMFwiJiZuPD1cIjlcIj9jKCk6ZnVuY3Rpb24oKXtzd2l0Y2gobil7Y2FzZVwidFwiOnJldHVybiBmKFwidFwiKSxmKFwiclwiKSxmKFwidVwiKSxmKFwiZVwiKSwhMDtjYXNlXCJmXCI6cmV0dXJuIGYoXCJmXCIpLGYoXCJhXCIpLGYoXCJsXCIpLGYoXCJzXCIpLGYoXCJlXCIpLCExO2Nhc2VcIm5cIjpyZXR1cm4gZihcIm5cIiksZihcInVcIiksZihcImxcIiksZihcImxcIiksbnVsbH1zKFwiVW5leHBlY3RlZCAnXCIrbitcIidcIil9KCl9fSxlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgYTtyZXR1cm4gaT1lLHI9MCxuPVwiIFwiLGE9bygpLGgoKSxuJiZzKFwiU3ludGF4IGVycm9yXCIpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/ZnVuY3Rpb24gZShyLG4pe3ZhciBpLG8sYT1yW25dO2lmKGEmJlwib2JqZWN0XCI9PXR5cGVvZiBhKWZvcihpIGluIGEpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsaSkmJih2b2lkIDAhPT0obz1lKGEsaSkpP2FbaV09bzpkZWxldGUgYVtpXSk7cmV0dXJuIHQuY2FsbChyLG4sYSl9KHtcIlwiOmF9LFwiXCIpOmF9fSxmdW5jdGlvbihlLHQpe3ZhciByLG4saSxvPS9bXFxcXFxcXCJcXHgwMC1cXHgxZlxceDdmLVxceDlmXFx1MDBhZFxcdTA2MDAtXFx1MDYwNFxcdTA3MGZcXHUxN2I0XFx1MTdiNVxcdTIwMGMtXFx1MjAwZlxcdTIwMjgtXFx1MjAyZlxcdTIwNjAtXFx1MjA2ZlxcdWZlZmZcXHVmZmYwLVxcdWZmZmZdL2csYT17XCJcXGJcIjpcIlxcXFxiXCIsXCJcXHRcIjpcIlxcXFx0XCIsXCJcXG5cIjpcIlxcXFxuXCIsXCJcXGZcIjpcIlxcXFxmXCIsXCJcXHJcIjpcIlxcXFxyXCIsJ1wiJzonXFxcXFwiJyxcIlxcXFxcIjpcIlxcXFxcXFxcXCJ9O2Z1bmN0aW9uIHMoZSl7cmV0dXJuIG8ubGFzdEluZGV4PTAsby50ZXN0KGUpPydcIicrZS5yZXBsYWNlKG8sKGZ1bmN0aW9uKGUpe3ZhciB0PWFbZV07cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQ/dDpcIlxcXFx1XCIrKFwiMDAwMFwiK2UuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KX0pKSsnXCInOidcIicrZSsnXCInfWUuZXhwb3J0cz1mdW5jdGlvbihlLHQsbyl7dmFyIGE7aWYocj1cIlwiLG49XCJcIixcIm51bWJlclwiPT10eXBlb2Ygbylmb3IoYT0wO2E8bzthKz0xKW4rPVwiIFwiO2Vsc2VcInN0cmluZ1wiPT10eXBlb2YgbyYmKG49byk7aWYoaT10LHQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJihcIm9iamVjdFwiIT10eXBlb2YgdHx8XCJudW1iZXJcIiE9dHlwZW9mIHQubGVuZ3RoKSl0aHJvdyBuZXcgRXJyb3IoXCJKU09OLnN0cmluZ2lmeVwiKTtyZXR1cm4gZnVuY3Rpb24gZSh0LG8pe3ZhciBhLGYsYyx1LGgsbD1yLGQ9b1t0XTtzd2l0Y2goZCYmXCJvYmplY3RcIj09dHlwZW9mIGQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGQudG9KU09OJiYoZD1kLnRvSlNPTih0KSksXCJmdW5jdGlvblwiPT10eXBlb2YgaSYmKGQ9aS5jYWxsKG8sdCxkKSksdHlwZW9mIGQpe2Nhc2VcInN0cmluZ1wiOnJldHVybiBzKGQpO2Nhc2VcIm51bWJlclwiOnJldHVybiBpc0Zpbml0ZShkKT9TdHJpbmcoZCk6XCJudWxsXCI7Y2FzZVwiYm9vbGVhblwiOmNhc2VcIm51bGxcIjpyZXR1cm4gU3RyaW5nKGQpO2Nhc2VcIm9iamVjdFwiOmlmKCFkKXJldHVyblwibnVsbFwiO2lmKHIrPW4saD1bXSxcIltvYmplY3QgQXJyYXldXCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KGQpKXtmb3IodT1kLmxlbmd0aCxhPTA7YTx1O2ErPTEpaFthXT1lKGEsZCl8fFwibnVsbFwiO3JldHVybiBjPTA9PT1oLmxlbmd0aD9cIltdXCI6cj9cIltcXG5cIityK2guam9pbihcIixcXG5cIityKStcIlxcblwiK2wrXCJdXCI6XCJbXCIraC5qb2luKFwiLFwiKStcIl1cIixyPWwsY31pZihpJiZcIm9iamVjdFwiPT10eXBlb2YgaSlmb3IodT1pLmxlbmd0aCxhPTA7YTx1O2ErPTEpXCJzdHJpbmdcIj09dHlwZW9mKGY9aVthXSkmJihjPWUoZixkKSkmJmgucHVzaChzKGYpKyhyP1wiOiBcIjpcIjpcIikrYyk7ZWxzZSBmb3IoZiBpbiBkKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGYpJiYoYz1lKGYsZCkpJiZoLnB1c2gocyhmKSsocj9cIjogXCI6XCI6XCIpK2MpO3JldHVybiBjPTA9PT1oLmxlbmd0aD9cInt9XCI6cj9cIntcXG5cIityK2guam9pbihcIixcXG5cIityKStcIlxcblwiK2wrXCJ9XCI6XCJ7XCIraC5qb2luKFwiLFwiKStcIn1cIixyPWwsY319KFwiXCIse1wiXCI6ZX0pfX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPTM7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIGU9KG5ldyBEYXRlKS5nZXRUaW1lKCkqTWF0aC5wb3coMTAsbiksdD1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqTWF0aC5wb3coMTAsbikpO3JldHVybiBlK3R9fSxmdW5jdGlvbihlLHQscil7Y29uc3Qgbj1yKDIwMiksaT1yKDQ2KSxvPVt2b2lkIDAsbnVsbCxcIjxuaWw+XCJdO2UuZXhwb3J0cz1mdW5jdGlvbihlPXt9KXtjb25zdHtibG9ja1RyYWNrZXI6dH09ZTtpZighdCl0aHJvdyBuZXcgRXJyb3IoXCJjcmVhdGVCbG9ja0NhY2hlTWlkZGxld2FyZSAtIE5vIEJsb2NrVHJhY2tlciBzcGVjaWZpZWRcIik7Y29uc3Qgcj1uZXcgYSxvPXtwZXJtYTpyLGJsb2NrOnIsZm9yazpyfTtyZXR1cm4gaShhc3luYyhlLGksYSk9PntpZihlLnNraXBDYWNoZSlyZXR1cm4gYSgpO2NvbnN0IHM9bi5jYWNoZVR5cGVGb3JQYXlsb2FkKGUpLGY9b1tzXTtpZighZilyZXR1cm4gYSgpO2lmKCFmLmNhbkNhY2hlUmVxdWVzdChlKSlyZXR1cm4gYSgpO2xldCBjLHU9bi5ibG9ja1RhZ0ZvclBheWxvYWQoZSk7aWYodXx8KHU9XCJsYXRlc3RcIiksXCJlYXJsaWVzdFwiPT09dSljPVwiMHgwMFwiO2Vsc2UgaWYoXCJsYXRlc3RcIj09PXUpe2NvbnN0IGU9YXdhaXQgdC5nZXRMYXRlc3RCbG9jaygpO3IuY2xlYXJCZWZvcmUoZSksYz1lfWVsc2UgYz11O2NvbnN0IGg9YXdhaXQgZi5nZXQoZSxjKTt2b2lkIDA9PT1oPyhhd2FpdCBhKCksYXdhaXQgZi5zZXQoZSxjLGkucmVzdWx0KSk6aS5yZXN1bHQ9aH0pfTtjbGFzcyBhe2NvbnN0cnVjdG9yKCl7dGhpcy5jYWNoZT17fX1nZXRCbG9ja0NhY2hlRm9yUGF5bG9hZChlLHQpe2NvbnN0IHI9TnVtYmVyLnBhcnNlSW50KHQsMTYpO2xldCBuPXRoaXMuY2FjaGVbcl07aWYoIW4pe2NvbnN0IGU9e307dGhpcy5jYWNoZVtyXT1lLG49ZX1yZXR1cm4gbn1hc3luYyBnZXQoZSx0KXtjb25zdCByPXRoaXMuZ2V0QmxvY2tDYWNoZUZvclBheWxvYWQoZSx0KTtpZihyKXJldHVybiByW24uY2FjaGVJZGVudGlmaWVyRm9yUGF5bG9hZChlLCEwKV19YXN5bmMgc2V0KGUsdCxyKXt0aGlzLmNhbkNhY2hlUmVzdWx0KGUscikmJih0aGlzLmdldEJsb2NrQ2FjaGVGb3JQYXlsb2FkKGUsdClbbi5jYWNoZUlkZW50aWZpZXJGb3JQYXlsb2FkKGUsITApXT1yKX1jYW5DYWNoZVJlcXVlc3QoZSl7aWYoIW4uY2FuQ2FjaGUoZSkpcmV0dXJuITE7cmV0dXJuXCJwZW5kaW5nXCIhPT1uLmJsb2NrVGFnRm9yUGF5bG9hZChlKX1jYW5DYWNoZVJlc3VsdChlLHQpe2lmKCFvLmluY2x1ZGVzKHQpKXJldHVybiEhKCFbXCJldGhfZ2V0VHJhbnNhY3Rpb25CeUhhc2hcIixcImV0aF9nZXRUcmFuc2FjdGlvblJlY2VpcHRcIl0uaW5jbHVkZXMoZS5tZXRob2QpfHx0JiZ0LmJsb2NrSGFzaCYmXCIweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIiE9PXQuYmxvY2tIYXNoKX1jbGVhckJlZm9yZShlKXtjb25zdCB0PXRoaXMscj1OdW1iZXIucGFyc2VJbnQoZSwxNik7T2JqZWN0LmtleXModC5jYWNoZSkubWFwKE51bWJlcikuZmlsdGVyKGU9PmU8cikuZm9yRWFjaChlPT5kZWxldGUgdC5jYWNoZVtlXSl9fX0sZnVuY3Rpb24oZSx0LHIpe2NvbnN0IG49cig4NSk7ZnVuY3Rpb24gaShlKXtyZXR1cm5cIm5ldmVyXCIhPT1zKGUpfWZ1bmN0aW9uIG8oZSl7Y29uc3QgdD1hKGUpO3JldHVybiB0Pj1lLnBhcmFtcy5sZW5ndGg/ZS5wYXJhbXM6XCJldGhfZ2V0QmxvY2tCeU51bWJlclwiPT09ZS5tZXRob2Q/ZS5wYXJhbXMuc2xpY2UoMSk6ZS5wYXJhbXMuc2xpY2UoMCx0KX1mdW5jdGlvbiBhKGUpe3N3aXRjaChlLm1ldGhvZCl7Y2FzZVwiZXRoX2dldFN0b3JhZ2VBdFwiOnJldHVybiAyO2Nhc2VcImV0aF9nZXRCYWxhbmNlXCI6Y2FzZVwiZXRoX2dldENvZGVcIjpjYXNlXCJldGhfZ2V0VHJhbnNhY3Rpb25Db3VudFwiOmNhc2VcImV0aF9jYWxsXCI6cmV0dXJuIDE7Y2FzZVwiZXRoX2dldEJsb2NrQnlOdW1iZXJcIjpyZXR1cm4gMDtkZWZhdWx0OnJldHVybn19ZnVuY3Rpb24gcyhlKXtzd2l0Y2goZS5tZXRob2Qpe2Nhc2VcIndlYjNfY2xpZW50VmVyc2lvblwiOmNhc2VcIndlYjNfc2hhM1wiOmNhc2VcImV0aF9wcm90b2NvbFZlcnNpb25cIjpjYXNlXCJldGhfZ2V0QmxvY2tUcmFuc2FjdGlvbkNvdW50QnlIYXNoXCI6Y2FzZVwiZXRoX2dldFVuY2xlQ291bnRCeUJsb2NrSGFzaFwiOmNhc2VcImV0aF9nZXRDb2RlXCI6Y2FzZVwiZXRoX2dldEJsb2NrQnlIYXNoXCI6Y2FzZVwiZXRoX2dldFRyYW5zYWN0aW9uQnlIYXNoXCI6Y2FzZVwiZXRoX2dldFRyYW5zYWN0aW9uQnlCbG9ja0hhc2hBbmRJbmRleFwiOmNhc2VcImV0aF9nZXRUcmFuc2FjdGlvblJlY2VpcHRcIjpjYXNlXCJldGhfZ2V0VW5jbGVCeUJsb2NrSGFzaEFuZEluZGV4XCI6Y2FzZVwiZXRoX2dldENvbXBpbGVyc1wiOmNhc2VcImV0aF9jb21waWxlTExMXCI6Y2FzZVwiZXRoX2NvbXBpbGVTb2xpZGl0eVwiOmNhc2VcImV0aF9jb21waWxlU2VycGVudFwiOmNhc2VcInNoaF92ZXJzaW9uXCI6Y2FzZVwidGVzdF9wZXJtYUNhY2hlXCI6cmV0dXJuXCJwZXJtYVwiO2Nhc2VcImV0aF9nZXRCbG9ja0J5TnVtYmVyXCI6Y2FzZVwiZXRoX2dldEJsb2NrVHJhbnNhY3Rpb25Db3VudEJ5TnVtYmVyXCI6Y2FzZVwiZXRoX2dldFVuY2xlQ291bnRCeUJsb2NrTnVtYmVyXCI6Y2FzZVwiZXRoX2dldFRyYW5zYWN0aW9uQnlCbG9ja051bWJlckFuZEluZGV4XCI6Y2FzZVwiZXRoX2dldFVuY2xlQnlCbG9ja051bWJlckFuZEluZGV4XCI6Y2FzZVwidGVzdF9mb3JrQ2FjaGVcIjpyZXR1cm5cImZvcmtcIjtjYXNlXCJldGhfZ2FzUHJpY2VcIjpjYXNlXCJldGhfYmxvY2tOdW1iZXJcIjpjYXNlXCJldGhfZ2V0QmFsYW5jZVwiOmNhc2VcImV0aF9nZXRTdG9yYWdlQXRcIjpjYXNlXCJldGhfZ2V0VHJhbnNhY3Rpb25Db3VudFwiOmNhc2VcImV0aF9jYWxsXCI6Y2FzZVwiZXRoX2VzdGltYXRlR2FzXCI6Y2FzZVwiZXRoX2dldEZpbHRlckxvZ3NcIjpjYXNlXCJldGhfZ2V0TG9nc1wiOmNhc2VcInRlc3RfYmxvY2tDYWNoZVwiOnJldHVyblwiYmxvY2tcIjtjYXNlXCJuZXRfdmVyc2lvblwiOmNhc2VcIm5ldF9wZWVyQ291bnRcIjpjYXNlXCJuZXRfbGlzdGVuaW5nXCI6Y2FzZVwiZXRoX3N5bmNpbmdcIjpjYXNlXCJldGhfc2lnblwiOmNhc2VcImV0aF9jb2luYmFzZVwiOmNhc2VcImV0aF9taW5pbmdcIjpjYXNlXCJldGhfaGFzaHJhdGVcIjpjYXNlXCJldGhfYWNjb3VudHNcIjpjYXNlXCJldGhfc2VuZFRyYW5zYWN0aW9uXCI6Y2FzZVwiZXRoX3NlbmRSYXdUcmFuc2FjdGlvblwiOmNhc2VcImV0aF9uZXdGaWx0ZXJcIjpjYXNlXCJldGhfbmV3QmxvY2tGaWx0ZXJcIjpjYXNlXCJldGhfbmV3UGVuZGluZ1RyYW5zYWN0aW9uRmlsdGVyXCI6Y2FzZVwiZXRoX3VuaW5zdGFsbEZpbHRlclwiOmNhc2VcImV0aF9nZXRGaWx0ZXJDaGFuZ2VzXCI6Y2FzZVwiZXRoX2dldFdvcmtcIjpjYXNlXCJldGhfc3VibWl0V29ya1wiOmNhc2VcImV0aF9zdWJtaXRIYXNocmF0ZVwiOmNhc2VcImRiX3B1dFN0cmluZ1wiOmNhc2VcImRiX2dldFN0cmluZ1wiOmNhc2VcImRiX3B1dEhleFwiOmNhc2VcImRiX2dldEhleFwiOmNhc2VcInNoaF9wb3N0XCI6Y2FzZVwic2hoX25ld0lkZW50aXR5XCI6Y2FzZVwic2hoX2hhc0lkZW50aXR5XCI6Y2FzZVwic2hoX25ld0dyb3VwXCI6Y2FzZVwic2hoX2FkZFRvR3JvdXBcIjpjYXNlXCJzaGhfbmV3RmlsdGVyXCI6Y2FzZVwic2hoX3VuaW5zdGFsbEZpbHRlclwiOmNhc2VcInNoaF9nZXRGaWx0ZXJDaGFuZ2VzXCI6Y2FzZVwic2hoX2dldE1lc3NhZ2VzXCI6Y2FzZVwidGVzdF9uZXZlckNhY2hlXCI6cmV0dXJuXCJuZXZlclwifX1lLmV4cG9ydHM9e2NhY2hlSWRlbnRpZmllckZvclBheWxvYWQ6ZnVuY3Rpb24oZSx0KXtjb25zdCByPXQ/byhlKTplLnBhcmFtcztyZXR1cm4gaShlKT9lLm1ldGhvZCtcIjpcIituKHIpOm51bGx9LGNhbkNhY2hlOmksYmxvY2tUYWdGb3JQYXlsb2FkOmZ1bmN0aW9uKGUpe2xldCB0PWEoZSk7aWYodD49ZS5wYXJhbXMubGVuZ3RoKXJldHVybiBudWxsO3JldHVybiBlLnBhcmFtc1t0XX0scGFyYW1zV2l0aG91dEJsb2NrVGFnOm8sYmxvY2tUYWdQYXJhbUluZGV4OmEsY2FjaGVUeXBlRm9yUGF5bG9hZDpzfX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMjA0KSxpPXIoMjA1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIW4oZS50aGVuKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgYSBwcm9taXNlXCIpO3JldHVybiBmdW5jdGlvbih0KXtlLnRoZW4oKGZ1bmN0aW9uKGUpe2kodCxudWxsLGUpfSksKGZ1bmN0aW9uKGUpe2kodCxlKX0pKX19fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuXCJbb2JqZWN0IEZ1bmN0aW9uXVwiPT09bi5jYWxsKGUpfX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbih0KXtlLmV4cG9ydHM9XCJmdW5jdGlvblwiPT10eXBlb2YgdD90OmZ1bmN0aW9uKCl7dmFyIGU9W10uc2xpY2UuYXBwbHkoYXJndW1lbnRzKTtlLnNwbGljZSgxLDAsMCksc2V0VGltZW91dC5hcHBseShudWxsLGUpfX0pLmNhbGwodGhpcyxyKDI2KS5zZXRJbW1lZGlhdGUpfSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7KGZ1bmN0aW9uKGUscil7Y2xhc3Mgbntjb25zdHJ1Y3RvcihlKXt0aGlzLnRhc2tzPVtdLHRoaXMuY291bnQ9ZX1zY2hlZCgpe2lmKHRoaXMuY291bnQ+MCYmdGhpcy50YXNrcy5sZW5ndGg+MCl7dGhpcy5jb3VudC0tO2xldCBlPXRoaXMudGFza3Muc2hpZnQoKTtpZih2b2lkIDA9PT1lKXRocm93XCJVbmV4cGVjdGVkIHVuZGVmaW5lZCB2YWx1ZSBpbiB0YXNrcyBsaXN0XCI7ZSgpfX1hY3F1aXJlKCl7cmV0dXJuIG5ldyBQcm9taXNlKCh0LG4pPT57dGhpcy50YXNrcy5wdXNoKCgpPT57dmFyIGU9ITE7dCgoKT0+e2V8fChlPSEwLHRoaXMuY291bnQrKyx0aGlzLnNjaGVkKCkpfSl9KSxlJiZlLm5leHRUaWNrP2UubmV4dFRpY2sodGhpcy5zY2hlZC5iaW5kKHRoaXMpKTpyKHRoaXMuc2NoZWQuYmluZCh0aGlzKSl9KX11c2UoZSl7cmV0dXJuIHRoaXMuYWNxdWlyZSgpLnRoZW4odD0+ZSgpLnRoZW4oZT0+KHQoKSxlKSkuY2F0Y2goZT0+e3Rocm93IHQoKSxlfSkpfX10LlNlbWFwaG9yZT1uO3QuTXV0ZXg9Y2xhc3MgZXh0ZW5kcyBue2NvbnN0cnVjdG9yKCl7c3VwZXIoMSl9fX0pLmNhbGwodGhpcyxyKDkpLHIoMjYpLnNldEltbWVkaWF0ZSl9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybih0LHIsbixpKT0+e2NvbnN0IG89ZVt0Lm1ldGhvZF07cmV0dXJuIHZvaWQgMD09PW8/bigpOlwiZnVuY3Rpb25cIj09dHlwZW9mIG8/byh0LHIsbixpKTooci5yZXN1bHQ9byx2b2lkIGkoKSl9fX0sZnVuY3Rpb24oZSx0LHIpe2NvbnN0IG49cig3MiksaT1yKDM5KSxvPXIoMjA5KSx7Ym5Ub0hleDphLGhleFRvSW50OnMsaW5jcmVtZW50SGV4SW50OmYsbWluQmxvY2tSZWY6YyxibG9ja1JlZklzTnVtYmVyOnV9PXIoMjApO2UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIG97Y29uc3RydWN0b3Ioe3Byb3ZpZGVyOmUscGFyYW1zOnR9KXtzdXBlcigpLHRoaXMudHlwZT1cImxvZ1wiLHRoaXMuZXRoUXVlcnk9bmV3IG4oZSksdGhpcy5wYXJhbXM9T2JqZWN0LmFzc2lnbih7ZnJvbUJsb2NrOlwibGF0ZXN0XCIsdG9CbG9jazpcImxhdGVzdFwiLGFkZHJlc3M6dm9pZCAwLHRvcGljczpbXX0sdCksdGhpcy5wYXJhbXMuYWRkcmVzcyYmKEFycmF5LmlzQXJyYXkodGhpcy5wYXJhbXMuYWRkcmVzcyl8fCh0aGlzLnBhcmFtcy5hZGRyZXNzPVt0aGlzLnBhcmFtcy5hZGRyZXNzXSksdGhpcy5wYXJhbXMuYWRkcmVzcz10aGlzLnBhcmFtcy5hZGRyZXNzLm1hcChlPT5lLnRvTG93ZXJDYXNlKCkpKX1hc3luYyBpbml0aWFsaXplKHtjdXJyZW50QmxvY2s6ZX0pe2xldCB0PXRoaXMucGFyYW1zLmZyb21CbG9jaztbXCJsYXRlc3RcIixcInBlbmRpbmdcIl0uaW5jbHVkZXModCkmJih0PWUpLFwiZWFybGllc3RcIj09PXQmJih0PVwiMHgwXCIpLHRoaXMucGFyYW1zLmZyb21CbG9jaz10O2NvbnN0IHI9Yyh0aGlzLnBhcmFtcy50b0Jsb2NrLGUpLG49T2JqZWN0LmFzc2lnbih7fSx0aGlzLnBhcmFtcyx7dG9CbG9jazpyfSksaT1hd2FpdCB0aGlzLl9mZXRjaExvZ3Mobik7dGhpcy5hZGRJbml0aWFsUmVzdWx0cyhpKX1hc3luYyB1cGRhdGUoe29sZEJsb2NrOmUsbmV3QmxvY2s6dH0pe2NvbnN0IHI9dDtsZXQgbjtuPWU/ZihlKTp0O2NvbnN0IGk9T2JqZWN0LmFzc2lnbih7fSx0aGlzLnBhcmFtcyx7ZnJvbUJsb2NrOm4sdG9CbG9jazpyfSksbz0oYXdhaXQgdGhpcy5fZmV0Y2hMb2dzKGkpKS5maWx0ZXIoZT0+dGhpcy5tYXRjaExvZyhlKSk7dGhpcy5hZGRSZXN1bHRzKG8pfWFzeW5jIF9mZXRjaExvZ3MoZSl7cmV0dXJuIGF3YWl0IGkodD0+dGhpcy5ldGhRdWVyeS5nZXRMb2dzKGUsdCkpKCl9bWF0Y2hMb2coZSl7aWYocyh0aGlzLnBhcmFtcy5mcm9tQmxvY2spPj1zKGUuYmxvY2tOdW1iZXIpKXJldHVybiExO2lmKHUodGhpcy5wYXJhbXMudG9CbG9jaykmJnModGhpcy5wYXJhbXMudG9CbG9jayk8PXMoZS5ibG9ja051bWJlcikpcmV0dXJuITE7Y29uc3QgdD1lLmFkZHJlc3MmJmUuYWRkcmVzcy50b0xvd2VyQ2FzZSgpO3JldHVybiEodGhpcy5wYXJhbXMuYWRkcmVzcyYmdCYmIXRoaXMucGFyYW1zLmFkZHJlc3MuaW5jbHVkZXModCkpJiZ0aGlzLnBhcmFtcy50b3BpY3MuZXZlcnkoKHQscik9PntsZXQgbj1lLnRvcGljc1tyXTtpZighbilyZXR1cm4hMTtuPW4udG9Mb3dlckNhc2UoKTtsZXQgaT1BcnJheS5pc0FycmF5KHQpP3Q6W3RdO3JldHVybiEhaS5pbmNsdWRlcyhudWxsKXx8KGk9aS5tYXAoZT0+ZS50b0xvd2VyQ2FzZSgpKSkuaW5jbHVkZXMobil9KX19fSxmdW5jdGlvbihlLHQscil7Y29uc3Qgbj1yKDQ3KTtlLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBue2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLmFsbFJlc3VsdHM9W119YXN5bmMgdXBkYXRlKCl7dGhyb3cgbmV3IEVycm9yKFwiQmFzZUZpbHRlcldpdGhIaXN0b3J5IC0gbm8gdXBkYXRlIG1ldGhvZCBzcGVjaWZpZWRcIil9YWRkUmVzdWx0cyhlKXt0aGlzLmFsbFJlc3VsdHM9dGhpcy5hbGxSZXN1bHRzLmNvbmNhdChlKSxzdXBlci5hZGRSZXN1bHRzKGUpfWFkZEluaXRpYWxSZXN1bHRzKGUpe3RoaXMuYWxsUmVzdWx0cz10aGlzLmFsbFJlc3VsdHMuY29uY2F0KGUpLHN1cGVyLmFkZEluaXRpYWxSZXN1bHRzKGUpfWdldEFsbFJlc3VsdHMoKXtyZXR1cm4gdGhpcy5hbGxSZXN1bHRzfX19LGZ1bmN0aW9uKGUsdCxyKXtjb25zdCBuPXIoNDcpLGk9cig0OCkse2luY3JlbWVudEhleEludDpvfT1yKDIwKTtlLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBue2NvbnN0cnVjdG9yKHtwcm92aWRlcjplLHBhcmFtczp0fSl7c3VwZXIoKSx0aGlzLnR5cGU9XCJibG9ja1wiLHRoaXMucHJvdmlkZXI9ZX1hc3luYyB1cGRhdGUoe29sZEJsb2NrOmUsbmV3QmxvY2s6dH0pe2NvbnN0IHI9dCxuPW8oZSksYT0oYXdhaXQgaSh7cHJvdmlkZXI6dGhpcy5wcm92aWRlcixmcm9tQmxvY2s6bix0b0Jsb2NrOnJ9KSkubWFwKGU9PmUuaGFzaCk7dGhpcy5hZGRSZXN1bHRzKGEpfX19LGZ1bmN0aW9uKGUsdCxyKXtjb25zdCBuPXIoMjEyKSxpPXIoNDcpLG89cig0OCkse2luY3JlbWVudEhleEludDphfT1yKDIwKTtlLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBpe2NvbnN0cnVjdG9yKHtwcm92aWRlcjplLHBhcmFtczp0fSl7c3VwZXIoKSx0aGlzLnR5cGU9XCJ0eFwiLHRoaXMucHJvdmlkZXI9ZX1hc3luYyB1cGRhdGUoe29sZEJsb2NrOmUsbmV3QmxvY2s6dH0pe2NvbnN0IHI9ZSxpPWEoZSkscz1hd2FpdCBvKHtwcm92aWRlcjp0aGlzLnByb3ZpZGVyLGZyb21CbG9jazppLHRvQmxvY2s6cn0pLGY9bihzLGU9PmUudHJhbnNhY3Rpb25zKTt0aGlzLmFkZFJlc3VsdHMoZil9fX0sZnVuY3Rpb24oZSx0LHIpeyhmdW5jdGlvbihlLHIpe3ZhciBuPTIwMCxpPVwiRXhwZWN0ZWQgYSBmdW5jdGlvblwiLG89XCJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fXCIsYT0xLHM9MixmPTEvMCxjPTkwMDcxOTkyNTQ3NDA5OTEsdT1cIltvYmplY3QgQXJndW1lbnRzXVwiLGg9XCJbb2JqZWN0IEFycmF5XVwiLGw9XCJbb2JqZWN0IEJvb2xlYW5dXCIsZD1cIltvYmplY3QgRGF0ZV1cIixwPVwiW29iamVjdCBFcnJvcl1cIixiPVwiW29iamVjdCBGdW5jdGlvbl1cIix5PVwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl1cIixnPVwiW29iamVjdCBNYXBdXCIsdj1cIltvYmplY3QgTnVtYmVyXVwiLG09XCJbb2JqZWN0IE9iamVjdF1cIixfPVwiW29iamVjdCBSZWdFeHBdXCIsdz1cIltvYmplY3QgU2V0XVwiLEU9XCJbb2JqZWN0IFN0cmluZ11cIixBPVwiW29iamVjdCBTeW1ib2xdXCIsUz1cIltvYmplY3QgQXJyYXlCdWZmZXJdXCIsaz1cIltvYmplY3QgRGF0YVZpZXddXCIseD0vXFwufFxcWyg/OlteW1xcXV0qfChbXCInXSkoPzooPyFcXDEpW15cXFxcXXxcXFxcLikqP1xcMSlcXF0vLEk9L15cXHcqJC8sTT0vXlxcLi8sVD0vW14uW1xcXV0rfFxcWyg/OigtP1xcZCsoPzpcXC5cXGQrKT8pfChbXCInXSkoKD86KD8hXFwyKVteXFxcXF18XFxcXC4pKj8pXFwyKVxcXXwoPz0oPzpcXC58XFxbXFxdKSg/OlxcLnxcXFtcXF18JCkpL2csUD0vXFxcXChcXFxcKT8vZyxCPS9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC8sTD0vXig/OjB8WzEtOV1cXGQqKSQvLFI9e307UltcIltvYmplY3QgRmxvYXQzMkFycmF5XVwiXT1SW1wiW29iamVjdCBGbG9hdDY0QXJyYXldXCJdPVJbXCJbb2JqZWN0IEludDhBcnJheV1cIl09UltcIltvYmplY3QgSW50MTZBcnJheV1cIl09UltcIltvYmplY3QgSW50MzJBcnJheV1cIl09UltcIltvYmplY3QgVWludDhBcnJheV1cIl09UltcIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldXCJdPVJbXCJbb2JqZWN0IFVpbnQxNkFycmF5XVwiXT1SW1wiW29iamVjdCBVaW50MzJBcnJheV1cIl09ITAsUlt1XT1SW2hdPVJbU109UltsXT1SW2tdPVJbZF09UltwXT1SW2JdPVJbZ109Ult2XT1SW21dPVJbX109Ult3XT1SW0VdPVJbXCJbb2JqZWN0IFdlYWtNYXBdXCJdPSExO3ZhciBPPVwib2JqZWN0XCI9PXR5cGVvZiBlJiZlJiZlLk9iamVjdD09PU9iamVjdCYmZSxDPVwib2JqZWN0XCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixOPU98fEN8fEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKSxqPXQmJiF0Lm5vZGVUeXBlJiZ0LEQ9aiYmXCJvYmplY3RcIj09dHlwZW9mIHImJnImJiFyLm5vZGVUeXBlJiZyLHE9RCYmRC5leHBvcnRzPT09aiYmTy5wcm9jZXNzLFU9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHEmJnEuYmluZGluZyhcInV0aWxcIil9Y2F0Y2goZSl7fX0oKSxGPVUmJlUuaXNUeXBlZEFycmF5O2Z1bmN0aW9uIHooZSx0KXtmb3IodmFyIHI9LTEsbj1lP2UubGVuZ3RoOjAsaT1BcnJheShuKTsrK3I8bjspaVtyXT10KGVbcl0scixlKTtyZXR1cm4gaX1mdW5jdGlvbiBLKGUsdCl7Zm9yKHZhciByPS0xLG49dC5sZW5ndGgsaT1lLmxlbmd0aDsrK3I8bjspZVtpK3JdPXRbcl07cmV0dXJuIGV9ZnVuY3Rpb24gSChlLHQpe2Zvcih2YXIgcj0tMSxuPWU/ZS5sZW5ndGg6MDsrK3I8bjspaWYodChlW3JdLHIsZSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gVihlKXt2YXIgdD0hMTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlLnRvU3RyaW5nKXRyeXt0PSEhKGUrXCJcIil9Y2F0Y2goZSl7fXJldHVybiB0fWZ1bmN0aW9uIFkoZSl7dmFyIHQ9LTEscj1BcnJheShlLnNpemUpO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUsbil7clsrK3RdPVtuLGVdfSkpLHJ9ZnVuY3Rpb24gRyhlKXt2YXIgdD0tMSxyPUFycmF5KGUuc2l6ZSk7cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7clsrK3RdPWV9KSkscn12YXIgJCxXLFosSj1BcnJheS5wcm90b3R5cGUsWD1GdW5jdGlvbi5wcm90b3R5cGUsUT1PYmplY3QucHJvdG90eXBlLGVlPU5bXCJfX2NvcmUtanNfc2hhcmVkX19cIl0sdGU9KCQ9L1teLl0rJC8uZXhlYyhlZSYmZWUua2V5cyYmZWUua2V5cy5JRV9QUk9UT3x8XCJcIikpP1wiU3ltYm9sKHNyYylfMS5cIiskOlwiXCIscmU9WC50b1N0cmluZyxuZT1RLmhhc093blByb3BlcnR5LGllPVEudG9TdHJpbmcsb2U9UmVnRXhwKFwiXlwiK3JlLmNhbGwobmUpLnJlcGxhY2UoL1tcXFxcXiQuKis/KClbXFxde318XS9nLFwiXFxcXCQmXCIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csXCIkMS4qP1wiKStcIiRcIiksYWU9Ti5TeW1ib2wsc2U9Ti5VaW50OEFycmF5LGZlPVEucHJvcGVydHlJc0VudW1lcmFibGUsY2U9Si5zcGxpY2UsdWU9YWU/YWUuaXNDb25jYXRTcHJlYWRhYmxlOnZvaWQgMCxoZT0oVz1PYmplY3Qua2V5cyxaPU9iamVjdCxmdW5jdGlvbihlKXtyZXR1cm4gVyhaKGUpKX0pLGxlPUdlKE4sXCJEYXRhVmlld1wiKSxkZT1HZShOLFwiTWFwXCIpLHBlPUdlKE4sXCJQcm9taXNlXCIpLGJlPUdlKE4sXCJTZXRcIikseWU9R2UoTixcIldlYWtNYXBcIiksZ2U9R2UoT2JqZWN0LFwiY3JlYXRlXCIpLHZlPXJ0KGxlKSxtZT1ydChkZSksX2U9cnQocGUpLHdlPXJ0KGJlKSxFZT1ydCh5ZSksQWU9YWU/YWUucHJvdG90eXBlOnZvaWQgMCxTZT1BZT9BZS52YWx1ZU9mOnZvaWQgMCxrZT1BZT9BZS50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24geGUoZSl7dmFyIHQ9LTEscj1lP2UubGVuZ3RoOjA7Zm9yKHRoaXMuY2xlYXIoKTsrK3Q8cjspe3ZhciBuPWVbdF07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gSWUoZSl7dmFyIHQ9LTEscj1lP2UubGVuZ3RoOjA7Zm9yKHRoaXMuY2xlYXIoKTsrK3Q8cjspe3ZhciBuPWVbdF07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gTWUoZSl7dmFyIHQ9LTEscj1lP2UubGVuZ3RoOjA7Zm9yKHRoaXMuY2xlYXIoKTsrK3Q8cjspe3ZhciBuPWVbdF07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gVGUoZSl7dmFyIHQ9LTEscj1lP2UubGVuZ3RoOjA7Zm9yKHRoaXMuX19kYXRhX189bmV3IE1lOysrdDxyOyl0aGlzLmFkZChlW3RdKX1mdW5jdGlvbiBQZShlKXt0aGlzLl9fZGF0YV9fPW5ldyBJZShlKX1mdW5jdGlvbiBCZShlLHQpe3ZhciByPWF0KGUpfHxvdChlKT9mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0tMSxuPUFycmF5KGUpOysrcjxlOyluW3JdPXQocik7cmV0dXJuIG59KGUubGVuZ3RoLFN0cmluZyk6W10sbj1yLmxlbmd0aCxpPSEhbjtmb3IodmFyIG8gaW4gZSkhdCYmIW5lLmNhbGwoZSxvKXx8aSYmKFwibGVuZ3RoXCI9PW98fFplKG8sbikpfHxyLnB1c2gobyk7cmV0dXJuIHJ9ZnVuY3Rpb24gTGUoZSx0KXtmb3IodmFyIHI9ZS5sZW5ndGg7ci0tOylpZihpdChlW3JdWzBdLHQpKXJldHVybiByO3JldHVybi0xfXhlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189Z2U/Z2UobnVsbCk6e319LHhlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaGFzKGUpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1tlXX0seGUucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fO2lmKGdlKXt2YXIgcj10W2VdO3JldHVybiByPT09bz92b2lkIDA6cn1yZXR1cm4gbmUuY2FsbCh0LGUpP3RbZV06dm9pZCAwfSx4ZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX187cmV0dXJuIGdlP3ZvaWQgMCE9PXRbZV06bmUuY2FsbCh0LGUpfSx4ZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX19kYXRhX19bZV09Z2UmJnZvaWQgMD09PXQ/bzp0LHRoaXN9LEllLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W119LEllLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXyxyPUxlKHQsZSk7cmV0dXJuIShyPDApJiYocj09dC5sZW5ndGgtMT90LnBvcCgpOmNlLmNhbGwodCxyLDEpLCEwKX0sSWUucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fLHI9TGUodCxlKTtyZXR1cm4gcjwwP3ZvaWQgMDp0W3JdWzFdfSxJZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiBMZSh0aGlzLl9fZGF0YV9fLGUpPi0xfSxJZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxuPUxlKHIsZSk7cmV0dXJuIG48MD9yLnB1c2goW2UsdF0pOnJbbl1bMV09dCx0aGlzfSxNZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyB4ZSxtYXA6bmV3KGRlfHxJZSksc3RyaW5nOm5ldyB4ZX19LE1lLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSl7cmV0dXJuIFllKHRoaXMsZSkuZGVsZXRlKGUpfSxNZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiBZZSh0aGlzLGUpLmdldChlKX0sTWUucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gWWUodGhpcyxlKS5oYXMoZSl9LE1lLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gWWUodGhpcyxlKS5zZXQoZSx0KSx0aGlzfSxUZS5wcm90b3R5cGUuYWRkPVRlLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9fZGF0YV9fLnNldChlLG8pLHRoaXN9LFRlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGUpfSxQZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPW5ldyBJZX0sUGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5kZWxldGUoZSl9LFBlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGUpfSxQZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhlKX0sUGUucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuX19kYXRhX187aWYociBpbnN0YW5jZW9mIEllKXt2YXIgaT1yLl9fZGF0YV9fO2lmKCFkZXx8aS5sZW5ndGg8bi0xKXJldHVybiBpLnB1c2goW2UsdF0pLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBNZShpKX1yZXR1cm4gci5zZXQoZSx0KSx0aGlzfTt2YXIgUmUsT2UsQ2U9KFJlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJk5lKGUsdCxwdCl9LGZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm4gZTtpZighc3QoZSkpcmV0dXJuIFJlKGUsdCk7Zm9yKHZhciByPWUubGVuZ3RoLG49T2U/cjotMSxpPU9iamVjdChlKTsoT2U/bi0tOisrbjxyKSYmITEhPT10KGlbbl0sbixpKTspO3JldHVybiBlfSk7dmFyIE5lPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LHIsbil7Zm9yKHZhciBpPS0xLG89T2JqZWN0KHQpLGE9bih0KSxzPWEubGVuZ3RoO3MtLTspe3ZhciBmPWFbZT9zOisraV07aWYoITE9PT1yKG9bZl0sZixvKSlicmVha31yZXR1cm4gdH19KCk7ZnVuY3Rpb24gamUoZSx0KXtmb3IodmFyIHI9MCxuPSh0PUplKHQsZSk/W3RdOkhlKHQpKS5sZW5ndGg7bnVsbCE9ZSYmcjxuOyllPWVbdHQodFtyKytdKV07cmV0dXJuIHImJnI9PW4/ZTp2b2lkIDB9ZnVuY3Rpb24gRGUoZSx0KXtyZXR1cm4gbnVsbCE9ZSYmdCBpbiBPYmplY3QoZSl9ZnVuY3Rpb24gcWUoZSx0LHIsbixpKXtyZXR1cm4gZT09PXR8fChudWxsPT1lfHxudWxsPT10fHwhdXQoZSkmJiFodCh0KT9lIT1lJiZ0IT10OmZ1bmN0aW9uKGUsdCxyLG4saSxvKXt2YXIgZj1hdChlKSxjPWF0KHQpLGI9aCx5PWg7Znx8KGI9KGI9JGUoZSkpPT11P206Yik7Y3x8KHk9KHk9JGUodCkpPT11P206eSk7dmFyIHg9Yj09bSYmIVYoZSksST15PT1tJiYhVih0KSxNPWI9PXk7aWYoTSYmIXgpcmV0dXJuIG98fChvPW5ldyBQZSksZnx8ZHQoZSk/VmUoZSx0LHIsbixpLG8pOmZ1bmN0aW9uKGUsdCxyLG4saSxvLGYpe3N3aXRjaChyKXtjYXNlIGs6aWYoZS5ieXRlTGVuZ3RoIT10LmJ5dGVMZW5ndGh8fGUuYnl0ZU9mZnNldCE9dC5ieXRlT2Zmc2V0KXJldHVybiExO2U9ZS5idWZmZXIsdD10LmJ1ZmZlcjtjYXNlIFM6cmV0dXJuIShlLmJ5dGVMZW5ndGghPXQuYnl0ZUxlbmd0aHx8IW4obmV3IHNlKGUpLG5ldyBzZSh0KSkpO2Nhc2UgbDpjYXNlIGQ6Y2FzZSB2OnJldHVybiBpdCgrZSwrdCk7Y2FzZSBwOnJldHVybiBlLm5hbWU9PXQubmFtZSYmZS5tZXNzYWdlPT10Lm1lc3NhZ2U7Y2FzZSBfOmNhc2UgRTpyZXR1cm4gZT09dCtcIlwiO2Nhc2UgZzp2YXIgYz1ZO2Nhc2Ugdzp2YXIgdT1vJnM7aWYoY3x8KGM9RyksZS5zaXplIT10LnNpemUmJiF1KXJldHVybiExO3ZhciBoPWYuZ2V0KGUpO2lmKGgpcmV0dXJuIGg9PXQ7b3w9YSxmLnNldChlLHQpO3ZhciBiPVZlKGMoZSksYyh0KSxuLGksbyxmKTtyZXR1cm4gZi5kZWxldGUoZSksYjtjYXNlIEE6aWYoU2UpcmV0dXJuIFNlLmNhbGwoZSk9PVNlLmNhbGwodCl9cmV0dXJuITF9KGUsdCxiLHIsbixpLG8pO2lmKCEoaSZzKSl7dmFyIFQ9eCYmbmUuY2FsbChlLFwiX193cmFwcGVkX19cIiksUD1JJiZuZS5jYWxsKHQsXCJfX3dyYXBwZWRfX1wiKTtpZihUfHxQKXt2YXIgQj1UP2UudmFsdWUoKTplLEw9UD90LnZhbHVlKCk6dDtyZXR1cm4gb3x8KG89bmV3IFBlKSxyKEIsTCxuLGksbyl9fWlmKCFNKXJldHVybiExO3JldHVybiBvfHwobz1uZXcgUGUpLGZ1bmN0aW9uKGUsdCxyLG4saSxvKXt2YXIgYT1pJnMsZj1wdChlKSxjPWYubGVuZ3RoLHU9cHQodCkubGVuZ3RoO2lmKGMhPXUmJiFhKXJldHVybiExO3ZhciBoPWM7Zm9yKDtoLS07KXt2YXIgbD1mW2hdO2lmKCEoYT9sIGluIHQ6bmUuY2FsbCh0LGwpKSlyZXR1cm4hMX12YXIgZD1vLmdldChlKTtpZihkJiZvLmdldCh0KSlyZXR1cm4gZD09dDt2YXIgcD0hMDtvLnNldChlLHQpLG8uc2V0KHQsZSk7dmFyIGI9YTtmb3IoOysraDxjOyl7bD1mW2hdO3ZhciB5PWVbbF0sZz10W2xdO2lmKG4pdmFyIHY9YT9uKGcseSxsLHQsZSxvKTpuKHksZyxsLGUsdCxvKTtpZighKHZvaWQgMD09PXY/eT09PWd8fHIoeSxnLG4saSxvKTp2KSl7cD0hMTticmVha31ifHwoYj1cImNvbnN0cnVjdG9yXCI9PWwpfWlmKHAmJiFiKXt2YXIgbT1lLmNvbnN0cnVjdG9yLF89dC5jb25zdHJ1Y3RvcjttIT1fJiZcImNvbnN0cnVjdG9yXCJpbiBlJiZcImNvbnN0cnVjdG9yXCJpbiB0JiYhKFwiZnVuY3Rpb25cIj09dHlwZW9mIG0mJm0gaW5zdGFuY2VvZiBtJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgXykmJihwPSExKX1yZXR1cm4gby5kZWxldGUoZSksby5kZWxldGUodCkscH0oZSx0LHIsbixpLG8pfShlLHQscWUscixuLGkpKX1mdW5jdGlvbiBVZShlKXtyZXR1cm4hKCF1dChlKXx8ZnVuY3Rpb24oZSl7cmV0dXJuISF0ZSYmdGUgaW4gZX0oZSkpJiYoZnQoZSl8fFYoZSk/b2U6QikudGVzdChydChlKSl9ZnVuY3Rpb24gRmUoZSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZT9lOm51bGw9PWU/YnQ6XCJvYmplY3RcIj09dHlwZW9mIGU/YXQoZSk/ZnVuY3Rpb24oZSx0KXtpZihKZShlKSYmWGUodCkpcmV0dXJuIFFlKHR0KGUpLHQpO3JldHVybiBmdW5jdGlvbihyKXt2YXIgbj1mdW5jdGlvbihlLHQscil7dmFyIG49bnVsbD09ZT92b2lkIDA6amUoZSx0KTtyZXR1cm4gdm9pZCAwPT09bj9yOm59KHIsZSk7cmV0dXJuIHZvaWQgMD09PW4mJm49PT10P2Z1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGwhPWUmJmZ1bmN0aW9uKGUsdCxyKXt0PUplKHQsZSk/W3RdOkhlKHQpO3ZhciBuLGk9LTEsbz10Lmxlbmd0aDtmb3IoOysraTxvOyl7dmFyIGE9dHQodFtpXSk7aWYoIShuPW51bGwhPWUmJnIoZSxhKSkpYnJlYWs7ZT1lW2FdfWlmKG4pcmV0dXJuIG47cmV0dXJuISEobz1lP2UubGVuZ3RoOjApJiZjdChvKSYmWmUoYSxvKSYmKGF0KGUpfHxvdChlKSl9KGUsdCxEZSl9KHIsZSk6cWUodCxuLHZvaWQgMCxhfHMpfX0oZVswXSxlWzFdKTpmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlKXt2YXIgdD1wdChlKSxyPXQubGVuZ3RoO2Zvcig7ci0tOyl7dmFyIG49dFtyXSxpPWVbbl07dFtyXT1bbixpLFhlKGkpXX1yZXR1cm4gdH0oZSk7aWYoMT09dC5sZW5ndGgmJnRbMF1bMl0pcmV0dXJuIFFlKHRbMF1bMF0sdFswXVsxXSk7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiByPT09ZXx8ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk9ci5sZW5ndGgsbz1pLGY9IW47aWYobnVsbD09ZSlyZXR1cm4hbztmb3IoZT1PYmplY3QoZSk7aS0tOyl7dmFyIGM9cltpXTtpZihmJiZjWzJdP2NbMV0hPT1lW2NbMF1dOiEoY1swXWluIGUpKXJldHVybiExfWZvcig7KytpPG87KXt2YXIgdT0oYz1yW2ldKVswXSxoPWVbdV0sbD1jWzFdO2lmKGYmJmNbMl0pe2lmKHZvaWQgMD09PWgmJiEodSBpbiBlKSlyZXR1cm4hMX1lbHNle3ZhciBkPW5ldyBQZTtpZihuKXZhciBwPW4oaCxsLHUsZSx0LGQpO2lmKCEodm9pZCAwPT09cD9xZShsLGgsbixhfHMsZCk6cCkpcmV0dXJuITF9fXJldHVybiEwfShyLGUsdCl9fShlKTpKZSh0PWUpPyhyPXR0KHQpLGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3JdfSk6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBqZSh0LGUpfX0odCk7dmFyIHQscn1mdW5jdGlvbiB6ZShlKXtpZihyPSh0PWUpJiZ0LmNvbnN0cnVjdG9yLG49XCJmdW5jdGlvblwiPT10eXBlb2YgciYmci5wcm90b3R5cGV8fFEsdCE9PW4pcmV0dXJuIGhlKGUpO3ZhciB0LHIsbixpPVtdO2Zvcih2YXIgbyBpbiBPYmplY3QoZSkpbmUuY2FsbChlLG8pJiZcImNvbnN0cnVjdG9yXCIhPW8mJmkucHVzaChvKTtyZXR1cm4gaX1mdW5jdGlvbiBLZShlLHQpe3ZhciByPS0xLG49c3QoZSk/QXJyYXkoZS5sZW5ndGgpOltdO3JldHVybiBDZShlLChmdW5jdGlvbihlLGksbyl7blsrK3JdPXQoZSxpLG8pfSkpLG59ZnVuY3Rpb24gSGUoZSl7cmV0dXJuIGF0KGUpP2U6ZXQoZSl9ZnVuY3Rpb24gVmUoZSx0LHIsbixpLG8pe3ZhciBmPWkmcyxjPWUubGVuZ3RoLHU9dC5sZW5ndGg7aWYoYyE9dSYmIShmJiZ1PmMpKXJldHVybiExO3ZhciBoPW8uZ2V0KGUpO2lmKGgmJm8uZ2V0KHQpKXJldHVybiBoPT10O3ZhciBsPS0xLGQ9ITAscD1pJmE/bmV3IFRlOnZvaWQgMDtmb3Ioby5zZXQoZSx0KSxvLnNldCh0LGUpOysrbDxjOyl7dmFyIGI9ZVtsXSx5PXRbbF07aWYobil2YXIgZz1mP24oeSxiLGwsdCxlLG8pOm4oYix5LGwsZSx0LG8pO2lmKHZvaWQgMCE9PWcpe2lmKGcpY29udGludWU7ZD0hMTticmVha31pZihwKXtpZighSCh0LChmdW5jdGlvbihlLHQpe2lmKCFwLmhhcyh0KSYmKGI9PT1lfHxyKGIsZSxuLGksbykpKXJldHVybiBwLmFkZCh0KX0pKSl7ZD0hMTticmVha319ZWxzZSBpZihiIT09eSYmIXIoYix5LG4saSxvKSl7ZD0hMTticmVha319cmV0dXJuIG8uZGVsZXRlKGUpLG8uZGVsZXRlKHQpLGR9ZnVuY3Rpb24gWWUoZSx0KXt2YXIgcixuLGk9ZS5fX2RhdGFfXztyZXR1cm4oXCJzdHJpbmdcIj09KG49dHlwZW9mKHI9dCkpfHxcIm51bWJlclwiPT1ufHxcInN5bWJvbFwiPT1ufHxcImJvb2xlYW5cIj09bj9cIl9fcHJvdG9fX1wiIT09cjpudWxsPT09cik/aVtcInN0cmluZ1wiPT10eXBlb2YgdD9cInN0cmluZ1wiOlwiaGFzaFwiXTppLm1hcH1mdW5jdGlvbiBHZShlLHQpe3ZhciByPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWU/dm9pZCAwOmVbdF19KGUsdCk7cmV0dXJuIFVlKHIpP3I6dm9pZCAwfXZhciAkZT1mdW5jdGlvbihlKXtyZXR1cm4gaWUuY2FsbChlKX07ZnVuY3Rpb24gV2UoZSl7cmV0dXJuIGF0KGUpfHxvdChlKXx8ISEodWUmJmUmJmVbdWVdKX1mdW5jdGlvbiBaZShlLHQpe3JldHVybiEhKHQ9bnVsbD09dD9jOnQpJiYoXCJudW1iZXJcIj09dHlwZW9mIGV8fEwudGVzdChlKSkmJmU+LTEmJmUlMT09MCYmZTx0fWZ1bmN0aW9uIEplKGUsdCl7aWYoYXQoZSkpcmV0dXJuITE7dmFyIHI9dHlwZW9mIGU7cmV0dXJuIShcIm51bWJlclwiIT1yJiZcInN5bWJvbFwiIT1yJiZcImJvb2xlYW5cIiE9ciYmbnVsbCE9ZSYmIWx0KGUpKXx8KEkudGVzdChlKXx8IXgudGVzdChlKXx8bnVsbCE9dCYmZSBpbiBPYmplY3QodCkpfWZ1bmN0aW9uIFhlKGUpe3JldHVybiBlPT1lJiYhdXQoZSl9ZnVuY3Rpb24gUWUoZSx0KXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG51bGwhPXImJihyW2VdPT09dCYmKHZvaWQgMCE9PXR8fGUgaW4gT2JqZWN0KHIpKSl9fShsZSYmJGUobmV3IGxlKG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1rfHxkZSYmJGUobmV3IGRlKSE9Z3x8cGUmJlwiW29iamVjdCBQcm9taXNlXVwiIT0kZShwZS5yZXNvbHZlKCkpfHxiZSYmJGUobmV3IGJlKSE9d3x8eWUmJlwiW29iamVjdCBXZWFrTWFwXVwiIT0kZShuZXcgeWUpKSYmKCRlPWZ1bmN0aW9uKGUpe3ZhciB0PWllLmNhbGwoZSkscj10PT1tP2UuY29uc3RydWN0b3I6dm9pZCAwLG49cj9ydChyKTp2b2lkIDA7aWYobilzd2l0Y2gobil7Y2FzZSB2ZTpyZXR1cm4gaztjYXNlIG1lOnJldHVybiBnO2Nhc2UgX2U6cmV0dXJuXCJbb2JqZWN0IFByb21pc2VdXCI7Y2FzZSB3ZTpyZXR1cm4gdztjYXNlIEVlOnJldHVyblwiW29iamVjdCBXZWFrTWFwXVwifXJldHVybiB0fSk7dmFyIGV0PW50KChmdW5jdGlvbihlKXt2YXIgdDtlPW51bGw9PSh0PWUpP1wiXCI6ZnVuY3Rpb24oZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYobHQoZSkpcmV0dXJuIGtlP2tlLmNhbGwoZSk6XCJcIjt2YXIgdD1lK1wiXCI7cmV0dXJuXCIwXCI9PXQmJjEvZT09LWY/XCItMFwiOnR9KHQpO3ZhciByPVtdO3JldHVybiBNLnRlc3QoZSkmJnIucHVzaChcIlwiKSxlLnJlcGxhY2UoVCwoZnVuY3Rpb24oZSx0LG4saSl7ci5wdXNoKG4/aS5yZXBsYWNlKFAsXCIkMVwiKTp0fHxlKX0pKSxyfSkpO2Z1bmN0aW9uIHR0KGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlfHxsdChlKSlyZXR1cm4gZTt2YXIgdD1lK1wiXCI7cmV0dXJuXCIwXCI9PXQmJjEvZT09LWY/XCItMFwiOnR9ZnVuY3Rpb24gcnQoZSl7aWYobnVsbCE9ZSl7dHJ5e3JldHVybiByZS5jYWxsKGUpfWNhdGNoKGUpe310cnl7cmV0dXJuIGUrXCJcIn1jYXRjaChlKXt9fXJldHVyblwiXCJ9ZnVuY3Rpb24gbnQoZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlfHx0JiZcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoaSk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsaT10P3QuYXBwbHkodGhpcyxuKTpuWzBdLG89ci5jYWNoZTtpZihvLmhhcyhpKSlyZXR1cm4gby5nZXQoaSk7dmFyIGE9ZS5hcHBseSh0aGlzLG4pO3JldHVybiByLmNhY2hlPW8uc2V0KGksYSksYX07cmV0dXJuIHIuY2FjaGU9bmV3KG50LkNhY2hlfHxNZSkscn1mdW5jdGlvbiBpdChlLHQpe3JldHVybiBlPT09dHx8ZSE9ZSYmdCE9dH1mdW5jdGlvbiBvdChlKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGh0KGUpJiZzdChlKX0oZSkmJm5lLmNhbGwoZSxcImNhbGxlZVwiKSYmKCFmZS5jYWxsKGUsXCJjYWxsZWVcIil8fGllLmNhbGwoZSk9PXUpfW50LkNhY2hlPU1lO3ZhciBhdD1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIHN0KGUpe3JldHVybiBudWxsIT1lJiZjdChlLmxlbmd0aCkmJiFmdChlKX1mdW5jdGlvbiBmdChlKXt2YXIgdD11dChlKT9pZS5jYWxsKGUpOlwiXCI7cmV0dXJuIHQ9PWJ8fHQ9PXl9ZnVuY3Rpb24gY3QoZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGUmJmU+LTEmJmUlMT09MCYmZTw9Y31mdW5jdGlvbiB1dChlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm4hIWUmJihcIm9iamVjdFwiPT10fHxcImZ1bmN0aW9uXCI9PXQpfWZ1bmN0aW9uIGh0KGUpe3JldHVybiEhZSYmXCJvYmplY3RcIj09dHlwZW9mIGV9ZnVuY3Rpb24gbHQoZSl7cmV0dXJuXCJzeW1ib2xcIj09dHlwZW9mIGV8fGh0KGUpJiZpZS5jYWxsKGUpPT1BfXZhciBkdD1GP2Z1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZSh0KX19KEYpOmZ1bmN0aW9uKGUpe3JldHVybiBodChlKSYmY3QoZS5sZW5ndGgpJiYhIVJbaWUuY2FsbChlKV19O2Z1bmN0aW9uIHB0KGUpe3JldHVybiBzdChlKT9CZShlKTp6ZShlKX1mdW5jdGlvbiBidChlKXtyZXR1cm4gZX1yLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24gZSh0LHIsbixpLG8pe3ZhciBhPS0xLHM9dC5sZW5ndGg7Zm9yKG58fChuPVdlKSxvfHwobz1bXSk7KythPHM7KXt2YXIgZj10W2FdO3I+MCYmbihmKT9yPjE/ZShmLHItMSxuLGksbyk6SyhvLGYpOml8fChvW28ubGVuZ3RoXT1mKX1yZXR1cm4gb30oZnVuY3Rpb24oZSx0KXtyZXR1cm4oYXQoZSk/ejpLZSkoZSxGZSh0KSl9KGUsdCksMSl9fSkuY2FsbCh0aGlzLHIoNCkscigyNykoZSkpfSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUsdCl7aWYodD0oMCxvLmRlZmF1bHQpKHR8fGkuZGVmYXVsdCksISgwLG4uZGVmYXVsdCkoZSkpcmV0dXJuIHQobmV3IEVycm9yKFwiRmlyc3QgYXJndW1lbnQgdG8gd2F0ZXJmYWxsIG11c3QgYmUgYW4gYXJyYXkgb2YgZnVuY3Rpb25zXCIpKTtpZighZS5sZW5ndGgpcmV0dXJuIHQoKTt2YXIgcj0wO2Z1bmN0aW9uIGModCl7dmFyIG49KDAsZi5kZWZhdWx0KShlW3IrK10pO3QucHVzaCgoMCxzLmRlZmF1bHQpKHUpKSxuLmFwcGx5KG51bGwsdCl9ZnVuY3Rpb24gdShuKXtpZihufHxyPT09ZS5sZW5ndGgpcmV0dXJuIHQuYXBwbHkobnVsbCxhcmd1bWVudHMpO2MoKDAsYS5kZWZhdWx0KShhcmd1bWVudHMsMSkpfWMoW10pfTt2YXIgbj1jKHIoODIpKSxpPWMocigxOCkpLG89YyhyKDQyKSksYT1jKHIoMzEpKSxzPWMocig0NCkpLGY9YyhyKDEyKSk7ZnVuY3Rpb24gYyhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlLHQpeygwLGkuZGVmYXVsdCkobi5kZWZhdWx0LGUsdCl9O3ZhciBuPW8ocig3NCkpLGk9byhyKDIxNSkpO2Z1bmN0aW9uIG8oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSx0LHIpe3I9cnx8bi5kZWZhdWx0O3ZhciBzPSgwLGkuZGVmYXVsdCkodCk/W106e307ZSh0LChmdW5jdGlvbihlLHQscil7KDAsYS5kZWZhdWx0KShlKSgoZnVuY3Rpb24oZSxuKXthcmd1bWVudHMubGVuZ3RoPjImJihuPSgwLG8uZGVmYXVsdCkoYXJndW1lbnRzLDEpKSxzW3RdPW4scihlKX0pKX0pLChmdW5jdGlvbihlKXtyKGUscyl9KSl9O3ZhciBuPXMocigxOCkpLGk9cyhyKDMwKSksbz1zKHIoMzEpKSxhPXMocigxMikpO2Z1bmN0aW9uIHMoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxyKXtjb25zdCBuPXIoMTUpLGk9cigyMTcpO2Z1bmN0aW9uIG8oZSl7Y29uc3QgdD1uZXcgRXJyb3IoXCJFeHBlY3QgYXJndW1lbnQgdG8gYmUgbm9uLWVtcHR5IGFycmF5XCIpO2lmKFwib2JqZWN0XCIhPXR5cGVvZiBlfHwhZS5sZW5ndGgpdGhyb3cgdDtjb25zdCByPWUubWFwKChmdW5jdGlvbihlKXtyZXR1cm5cImJ5dGVzXCI9PT1lLnR5cGU/bi50b0J1ZmZlcihlLnZhbHVlKTplLnZhbHVlfSkpLG89ZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnR5cGV9KSksYT1lLm1hcCgoZnVuY3Rpb24oZSl7aWYoIWUubmFtZSl0aHJvdyB0O3JldHVybiBlLnR5cGUrXCIgXCIrZS5uYW1lfSkpO3JldHVybiBpLnNvbGlkaXR5U0hBMyhbXCJieXRlczMyXCIsXCJieXRlczMyXCJdLFtpLnNvbGlkaXR5U0hBMyhuZXcgQXJyYXkoZS5sZW5ndGgpLmZpbGwoXCJzdHJpbmdcIiksYSksaS5zb2xpZGl0eVNIQTMobyxyKV0pfWZ1bmN0aW9uIGEoZSx0KXtjb25zdCByPW4udG9CdWZmZXIodCksaT1uLmZyb21ScGNTaWcocik7cmV0dXJuIG4uZWNyZWNvdmVyKGUsaS52LGkucixpLnMpfWZ1bmN0aW9uIHMoZSl7Y29uc3QgdD1uLnRvQnVmZmVyKGUuZGF0YSk7cmV0dXJuIGEobi5oYXNoUGVyc29uYWxNZXNzYWdlKHQpLGUuc2lnKX1mdW5jdGlvbiBmKGUsdCl7Zm9yKHZhciByPVwiXCIrZTtyLmxlbmd0aDx0OylyPVwiMFwiK3I7cmV0dXJuIHJ9ZS5leHBvcnRzPXtjb25jYXRTaWc6ZnVuY3Rpb24oZSx0LHIpe2NvbnN0IGk9bi5mcm9tU2lnbmVkKHQpLG89bi5mcm9tU2lnbmVkKHIpLGE9bi5idWZmZXJUb0ludChlKSxzPWYobi50b1Vuc2lnbmVkKGkpLnRvU3RyaW5nKFwiaGV4XCIpLDY0KSxjPWYobi50b1Vuc2lnbmVkKG8pLnRvU3RyaW5nKFwiaGV4XCIpLDY0KSx1PW4uc3RyaXBIZXhQcmVmaXgobi5pbnRUb0hleChhKSk7cmV0dXJuIG4uYWRkSGV4UHJlZml4KHMuY29uY2F0KGMsdSkpLnRvU3RyaW5nKFwiaGV4XCIpfSxub3JtYWxpemU6ZnVuY3Rpb24oZSl7aWYoZSl7aWYoXCJudW1iZXJcIj09dHlwZW9mIGUpe2NvbnN0IHQ9bi50b0J1ZmZlcihlKTtlPW4uYnVmZmVyVG9IZXgodCl9aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGUpe3ZhciB0PVwiZXRoLXNpZy11dGlsLm5vcm1hbGl6ZSgpIHJlcXVpcmVzIGhleCBzdHJpbmcgb3IgaW50ZWdlciBpbnB1dC5cIjt0aHJvdyBuZXcgRXJyb3IodCs9XCIgcmVjZWl2ZWQgXCIrdHlwZW9mIGUrXCI6IFwiK2UpfXJldHVybiBuLmFkZEhleFByZWZpeChlLnRvTG93ZXJDYXNlKCkpfX0scGVyc29uYWxTaWduOmZ1bmN0aW9uKGUsdCl7dmFyIHI9bi50b0J1ZmZlcih0LmRhdGEpLGk9bi5oYXNoUGVyc29uYWxNZXNzYWdlKHIpLG89bi5lY3NpZ24oaSxlKTtyZXR1cm4gbi5idWZmZXJUb0hleCh0aGlzLmNvbmNhdFNpZyhvLnYsby5yLG8ucykpfSxyZWNvdmVyUGVyc29uYWxTaWduYXR1cmU6ZnVuY3Rpb24oZSl7Y29uc3QgdD1zKGUpLHI9bi5wdWJsaWNUb0FkZHJlc3ModCk7cmV0dXJuIG4uYnVmZmVyVG9IZXgocil9LGV4dHJhY3RQdWJsaWNLZXk6ZnVuY3Rpb24oZSl7cmV0dXJuXCIweFwiK3MoZSkudG9TdHJpbmcoXCJoZXhcIil9LHR5cGVkU2lnbmF0dXJlSGFzaDpmdW5jdGlvbihlKXtjb25zdCB0PW8oZSk7cmV0dXJuIG4uYnVmZmVyVG9IZXgodCl9LHNpZ25UeXBlZERhdGE6ZnVuY3Rpb24oZSx0KXtjb25zdCByPW8odC5kYXRhKSxpPW4uZWNzaWduKHIsZSk7cmV0dXJuIG4uYnVmZmVyVG9IZXgodGhpcy5jb25jYXRTaWcoaS52LGkucixpLnMpKX0scmVjb3ZlclR5cGVkU2lnbmF0dXJlOmZ1bmN0aW9uKGUpe2NvbnN0IHQ9YShvKGUuZGF0YSksZS5zaWcpLHI9bi5wdWJsaWNUb0FkZHJlc3ModCk7cmV0dXJuIG4uYnVmZmVyVG9IZXgocil9fX0sZnVuY3Rpb24oZSx0LHIpe2UuZXhwb3J0cz1yKDIxOCl9LGZ1bmN0aW9uKGUsdCxyKXsoZnVuY3Rpb24odCl7Y29uc3Qgbj1yKDIxOSksaT1yKDMpO3ZhciBvPWZ1bmN0aW9uKCl7fTtmdW5jdGlvbiBhKGUpe3JldHVybiBlLnN0YXJ0c1dpdGgoXCJpbnRbXCIpP1wiaW50MjU2XCIrZS5zbGljZSgzKTpcImludFwiPT09ZT9cImludDI1NlwiOmUuc3RhcnRzV2l0aChcInVpbnRbXCIpP1widWludDI1NlwiK2Uuc2xpY2UoNCk6XCJ1aW50XCI9PT1lP1widWludDI1NlwiOmUuc3RhcnRzV2l0aChcImZpeGVkW1wiKT9cImZpeGVkMTI4eDEyOFwiK2Uuc2xpY2UoNSk6XCJmaXhlZFwiPT09ZT9cImZpeGVkMTI4eDEyOFwiOmUuc3RhcnRzV2l0aChcInVmaXhlZFtcIik/XCJ1Zml4ZWQxMjh4MTI4XCIrZS5zbGljZSg2KTpcInVmaXhlZFwiPT09ZT9cInVmaXhlZDEyOHgxMjhcIjplfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIHBhcnNlSW50KC9eXFxEKyhcXGQrKSQvLmV4ZWMoZSlbMV0sMTApfWZ1bmN0aW9uIGYoZSl7dmFyIHQ9L15cXEQrKFxcZCspeChcXGQrKSQvLmV4ZWMoZSk7cmV0dXJuW3BhcnNlSW50KHRbMV0sMTApLHBhcnNlSW50KHRbMl0sMTApXX1mdW5jdGlvbiBjKGUpe3ZhciB0PWUubWF0Y2goLyguKilcXFsoLio/KVxcXSQvKTtyZXR1cm4gdD9cIlwiPT09dFsyXT9cImR5bmFtaWNcIjpwYXJzZUludCh0WzJdLDEwKTpudWxsfWZ1bmN0aW9uIHUoZSl7dmFyIHQ9dHlwZW9mIGU7aWYoXCJzdHJpbmdcIj09PXQpcmV0dXJuIG4uaXNIZXhQcmVmaXhlZChlKT9uZXcgaShuLnN0cmlwSGV4UHJlZml4KGUpLDE2KTpuZXcgaShlLDEwKTtpZihcIm51bWJlclwiPT09dClyZXR1cm4gbmV3IGkoZSk7aWYoZS50b0FycmF5KXJldHVybiBlO3Rocm93IG5ldyBFcnJvcihcIkFyZ3VtZW50IGlzIG5vdCBhIG51bWJlclwiKX1mdW5jdGlvbiBoKGUpe3ZhciB0PS9eKFxcdyspXFwoKC4qKVxcKSQvLmV4ZWMoZSk7aWYoMyE9PXQubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbWV0aG9kIHNpZ25hdHVyZVwiKTt2YXIgcj0vXiguKylcXCk6XFwoKC4rKSQvLmV4ZWModFsyXSk7aWYobnVsbCE9PXImJjM9PT1yLmxlbmd0aClyZXR1cm57bWV0aG9kOnRbMV0sYXJnczpyWzFdLnNwbGl0KFwiLFwiKSxyZXRhcmdzOnJbMl0uc3BsaXQoXCIsXCIpfTt2YXIgbj10WzJdLnNwbGl0KFwiLFwiKTtyZXR1cm4gMT09PW4ubGVuZ3RoJiZcIlwiPT09blswXSYmKG49W10pLHttZXRob2Q6dFsxXSxhcmdzOm59fWZ1bmN0aW9uIGwoZSxyKXt2YXIgbyxhLGgsZDtpZihcImFkZHJlc3NcIj09PWUpcmV0dXJuIGwoXCJ1aW50MTYwXCIsdShyKSk7aWYoXCJib29sXCI9PT1lKXJldHVybiBsKFwidWludDhcIixyPzE6MCk7aWYoXCJzdHJpbmdcIj09PWUpcmV0dXJuIGwoXCJieXRlc1wiLHQuZnJvbShyLFwidXRmOFwiKSk7aWYoeShlKSl7aWYodm9pZCAwPT09ci5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwiTm90IGFuIGFycmF5P1wiKTtpZihcImR5bmFtaWNcIiE9PShvPWMoZSkpJiYwIT09byYmci5sZW5ndGg+byl0aHJvdyBuZXcgRXJyb3IoXCJFbGVtZW50cyBleGNlZWQgYXJyYXkgc2l6ZTogXCIrbyk7Zm9yKGQgaW4gaD1bXSxlPWUuc2xpY2UoMCxlLmxhc3RJbmRleE9mKFwiW1wiKSksXCJzdHJpbmdcIj09dHlwZW9mIHImJihyPUpTT04ucGFyc2UocikpLHIpaC5wdXNoKGwoZSxyW2RdKSk7aWYoXCJkeW5hbWljXCI9PT1vKXt2YXIgcD1sKFwidWludDI1NlwiLHIubGVuZ3RoKTtoLnVuc2hpZnQocCl9cmV0dXJuIHQuY29uY2F0KGgpfWlmKFwiYnl0ZXNcIj09PWUpcmV0dXJuIHI9dC5mcm9tKHIpLGg9dC5jb25jYXQoW2woXCJ1aW50MjU2XCIsci5sZW5ndGgpLHJdKSxyLmxlbmd0aCUzMiE9MCYmKGg9dC5jb25jYXQoW2gsbi56ZXJvcygzMi1yLmxlbmd0aCUzMildKSksaDtpZihlLnN0YXJ0c1dpdGgoXCJieXRlc1wiKSl7aWYoKG89cyhlKSk8MXx8bz4zMil0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ5dGVzPE4+IHdpZHRoOiBcIitvKTtyZXR1cm4gbi5zZXRMZW5ndGhSaWdodChyLDMyKX1pZihlLnN0YXJ0c1dpdGgoXCJ1aW50XCIpKXtpZigobz1zKGUpKSU4fHxvPDh8fG8+MjU2KXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgdWludDxOPiB3aWR0aDogXCIrbyk7aWYoKGE9dShyKSkuYml0TGVuZ3RoKCk+byl0aHJvdyBuZXcgRXJyb3IoXCJTdXBwbGllZCB1aW50IGV4Y2VlZHMgd2lkdGg6IFwiK28rXCIgdnMgXCIrYS5iaXRMZW5ndGgoKSk7aWYoYTwwKXRocm93IG5ldyBFcnJvcihcIlN1cHBsaWVkIHVpbnQgaXMgbmVnYXRpdmVcIik7cmV0dXJuIGEudG9BcnJheUxpa2UodCxcImJlXCIsMzIpfWlmKGUuc3RhcnRzV2l0aChcImludFwiKSl7aWYoKG89cyhlKSklOHx8bzw4fHxvPjI1Nil0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGludDxOPiB3aWR0aDogXCIrbyk7aWYoKGE9dShyKSkuYml0TGVuZ3RoKCk+byl0aHJvdyBuZXcgRXJyb3IoXCJTdXBwbGllZCBpbnQgZXhjZWVkcyB3aWR0aDogXCIrbytcIiB2cyBcIithLmJpdExlbmd0aCgpKTtyZXR1cm4gYS50b1R3b3MoMjU2KS50b0FycmF5TGlrZSh0LFwiYmVcIiwzMil9aWYoZS5zdGFydHNXaXRoKFwidWZpeGVkXCIpKXtpZihvPWYoZSksKGE9dShyKSk8MCl0aHJvdyBuZXcgRXJyb3IoXCJTdXBwbGllZCB1Zml4ZWQgaXMgbmVnYXRpdmVcIik7cmV0dXJuIGwoXCJ1aW50MjU2XCIsYS5tdWwobmV3IGkoMikucG93KG5ldyBpKG9bMV0pKSkpfWlmKGUuc3RhcnRzV2l0aChcImZpeGVkXCIpKXJldHVybiBvPWYoZSksbChcImludDI1NlwiLHUocikubXVsKG5ldyBpKDIpLnBvdyhuZXcgaShvWzFdKSkpKTt0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBvciBpbnZhbGlkIHR5cGU6IFwiK2UpfWZ1bmN0aW9uIGQoZSxyLG4pe3ZhciBvLGEscyxmO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlJiYoZT1wKGUpKSxcImFkZHJlc3NcIj09PWUubmFtZSlyZXR1cm4gZChlLnJhd1R5cGUscixuKS50b0FycmF5TGlrZSh0LFwiYmVcIiwyMCkudG9TdHJpbmcoXCJoZXhcIik7aWYoXCJib29sXCI9PT1lLm5hbWUpcmV0dXJuIGQoZS5yYXdUeXBlLHIsbikudG9TdHJpbmcoKT09PW5ldyBpKDEpLnRvU3RyaW5nKCk7aWYoXCJzdHJpbmdcIj09PWUubmFtZSl7dmFyIGM9ZChlLnJhd1R5cGUscixuKTtyZXR1cm4gdC5mcm9tKGMsXCJ1dGY4XCIpLnRvU3RyaW5nKCl9aWYoZS5pc0FycmF5KXtmb3Iocz1bXSxvPWUuc2l6ZSxcImR5bmFtaWNcIj09PWUuc2l6ZSYmKG49ZChcInVpbnQyNTZcIixyLG4pLnRvTnVtYmVyKCksbz1kKFwidWludDI1NlwiLHIsbikudG9OdW1iZXIoKSxuKz0zMiksZj0wO2Y8bztmKyspe3ZhciB1PWQoZS5zdWJBcnJheSxyLG4pO3MucHVzaCh1KSxuKz1lLnN1YkFycmF5Lm1lbW9yeVVzYWdlfXJldHVybiBzfWlmKFwiYnl0ZXNcIj09PWUubmFtZSlyZXR1cm4gbj1kKFwidWludDI1NlwiLHIsbikudG9OdW1iZXIoKSxvPWQoXCJ1aW50MjU2XCIscixuKS50b051bWJlcigpLHIuc2xpY2UobiszMixuKzMyK28pO2lmKGUubmFtZS5zdGFydHNXaXRoKFwiYnl0ZXNcIikpcmV0dXJuIHIuc2xpY2UobixuK2Uuc2l6ZSk7aWYoZS5uYW1lLnN0YXJ0c1dpdGgoXCJ1aW50XCIpKXtpZigoYT1uZXcgaShyLnNsaWNlKG4sbiszMiksMTYsXCJiZVwiKSkuYml0TGVuZ3RoKCk+ZS5zaXplKXRocm93IG5ldyBFcnJvcihcIkRlY29kZWQgaW50IGV4Y2VlZHMgd2lkdGg6IFwiK2Uuc2l6ZStcIiB2cyBcIithLmJpdExlbmd0aCgpKTtyZXR1cm4gYX1pZihlLm5hbWUuc3RhcnRzV2l0aChcImludFwiKSl7aWYoKGE9bmV3IGkoci5zbGljZShuLG4rMzIpLDE2LFwiYmVcIikuZnJvbVR3b3MoMjU2KSkuYml0TGVuZ3RoKCk+ZS5zaXplKXRocm93IG5ldyBFcnJvcihcIkRlY29kZWQgdWludCBleGNlZWRzIHdpZHRoOiBcIitlLnNpemUrXCIgdnMgXCIrYS5iaXRMZW5ndGgoKSk7cmV0dXJuIGF9aWYoZS5uYW1lLnN0YXJ0c1dpdGgoXCJ1Zml4ZWRcIikpe2lmKG89bmV3IGkoMikucG93KG5ldyBpKGUuc2l6ZVsxXSkpLCEoYT1kKFwidWludDI1NlwiLHIsbikpLm1vZChvKS5pc1plcm8oKSl0aHJvdyBuZXcgRXJyb3IoXCJEZWNpbWFscyBub3Qgc3VwcG9ydGVkIHlldFwiKTtyZXR1cm4gYS5kaXYobyl9aWYoZS5uYW1lLnN0YXJ0c1dpdGgoXCJmaXhlZFwiKSl7aWYobz1uZXcgaSgyKS5wb3cobmV3IGkoZS5zaXplWzFdKSksIShhPWQoXCJpbnQyNTZcIixyLG4pKS5tb2QobykuaXNaZXJvKCkpdGhyb3cgbmV3IEVycm9yKFwiRGVjaW1hbHMgbm90IHN1cHBvcnRlZCB5ZXRcIik7cmV0dXJuIGEuZGl2KG8pfXRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIG9yIGludmFsaWQgdHlwZTogXCIrZS5uYW1lKX1mdW5jdGlvbiBwKGUpe3ZhciB0LHIsbjtpZih5KGUpKXt0PWMoZSk7dmFyIGk9ZS5zbGljZSgwLGUubGFzdEluZGV4T2YoXCJbXCIpKTtyZXR1cm4gaT1wKGkpLHI9e2lzQXJyYXk6ITAsbmFtZTplLHNpemU6dCxtZW1vcnlVc2FnZTpcImR5bmFtaWNcIj09PXQ/MzI6aS5tZW1vcnlVc2FnZSp0LHN1YkFycmF5Oml9fXN3aXRjaChlKXtjYXNlXCJhZGRyZXNzXCI6bj1cInVpbnQxNjBcIjticmVhaztjYXNlXCJib29sXCI6bj1cInVpbnQ4XCI7YnJlYWs7Y2FzZVwic3RyaW5nXCI6bj1cImJ5dGVzXCJ9aWYocj17cmF3VHlwZTpuLG5hbWU6ZSxtZW1vcnlVc2FnZTozMn0sZS5zdGFydHNXaXRoKFwiYnl0ZXNcIikmJlwiYnl0ZXNcIiE9PWV8fGUuc3RhcnRzV2l0aChcInVpbnRcIil8fGUuc3RhcnRzV2l0aChcImludFwiKT9yLnNpemU9cyhlKTooZS5zdGFydHNXaXRoKFwidWZpeGVkXCIpfHxlLnN0YXJ0c1dpdGgoXCJmaXhlZFwiKSkmJihyLnNpemU9ZihlKSksZS5zdGFydHNXaXRoKFwiYnl0ZXNcIikmJlwiYnl0ZXNcIiE9PWUmJihyLnNpemU8MXx8ci5zaXplPjMyKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ5dGVzPE4+IHdpZHRoOiBcIityLnNpemUpO2lmKChlLnN0YXJ0c1dpdGgoXCJ1aW50XCIpfHxlLnN0YXJ0c1dpdGgoXCJpbnRcIikpJiYoci5zaXplJTh8fHIuc2l6ZTw4fHxyLnNpemU+MjU2KSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGludC91aW50PE4+IHdpZHRoOiBcIityLnNpemUpO3JldHVybiByfWZ1bmN0aW9uIGIoZSl7cmV0dXJuXCJzdHJpbmdcIj09PWV8fFwiYnl0ZXNcIj09PWV8fFwiZHluYW1pY1wiPT09YyhlKX1mdW5jdGlvbiB5KGUpe3JldHVybiBlLmxhc3RJbmRleE9mKFwiXVwiKT09PWUubGVuZ3RoLTF9ZnVuY3Rpb24gZyhlLHQpe3JldHVybiBlLnN0YXJ0c1dpdGgoXCJhZGRyZXNzXCIpfHxlLnN0YXJ0c1dpdGgoXCJieXRlc1wiKT9cIjB4XCIrdC50b1N0cmluZyhcImhleFwiKTp0LnRvU3RyaW5nKCl9by5ldmVudElEPWZ1bmN0aW9uKGUscil7dmFyIGk9ZStcIihcIityLm1hcChhKS5qb2luKFwiLFwiKStcIilcIjtyZXR1cm4gbi5rZWNjYWsyNTYodC5mcm9tKGkpKX0sby5tZXRob2RJRD1mdW5jdGlvbihlLHQpe3JldHVybiBvLmV2ZW50SUQoZSx0KS5zbGljZSgwLDQpfSxvLnJhd0VuY29kZT1mdW5jdGlvbihlLHIpe3ZhciBuPVtdLGk9W10sbz0wO2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYoeShlKSl7dmFyIHQ9YyhlKTtvKz1cImR5bmFtaWNcIiE9PXQ/MzIqdDozMn1lbHNlIG8rPTMyfSkpO2Zvcih2YXIgcz0wO3M8ZS5sZW5ndGg7cysrKXt2YXIgZj1hKGVbc10pLHU9bChmLHJbc10pO2IoZik/KG4ucHVzaChsKFwidWludDI1NlwiLG8pKSxpLnB1c2godSksbys9dS5sZW5ndGgpOm4ucHVzaCh1KX1yZXR1cm4gdC5jb25jYXQobi5jb25jYXQoaSkpfSxvLnJhd0RlY29kZT1mdW5jdGlvbihlLHIpe3ZhciBuPVtdO3I9dC5mcm9tKHIpO2Zvcih2YXIgaT0wLG89MDtvPGUubGVuZ3RoO28rKyl7dmFyIHM9cChhKGVbb10pKSxmPWQocyxyLGkpO2krPXMubWVtb3J5VXNhZ2Usbi5wdXNoKGYpfXJldHVybiBufSxvLnNpbXBsZUVuY29kZT1mdW5jdGlvbihlKXt2YXIgcj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLnNsaWNlKDEpLG49aChlKTtpZihyLmxlbmd0aCE9PW4uYXJncy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwiQXJndW1lbnQgY291bnQgbWlzbWF0Y2hcIik7cmV0dXJuIHQuY29uY2F0KFtvLm1ldGhvZElEKG4ubWV0aG9kLG4uYXJncyksby5yYXdFbmNvZGUobi5hcmdzLHIpXSl9LG8uc2ltcGxlRGVjb2RlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9aChlKTtpZighci5yZXRhcmdzKXRocm93IG5ldyBFcnJvcihcIk5vIHJldHVybiB2YWx1ZXMgaW4gbWV0aG9kXCIpO3JldHVybiBvLnJhd0RlY29kZShyLnJldGFyZ3MsdCl9LG8uc3RyaW5naWZ5PWZ1bmN0aW9uKGUsdCl7dmFyIHI9W107Zm9yKHZhciBuIGluIGUpe3ZhciBpPWVbbl0sbz10W25dO289L15bXlxcW10rXFxbLipcXF0kLy50ZXN0KGkpP28ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZyhpLGUpfSkpLmpvaW4oXCIsIFwiKTpnKGksbyksci5wdXNoKG8pfXJldHVybiByfSxvLnNvbGlkaXR5SGV4VmFsdWU9ZnVuY3Rpb24oZSxyLGkpe3ZhciBhLGY7aWYoeShlKSl7dmFyIGg9ZS5yZXBsYWNlKC9cXFsuKj9cXF0vLFwiXCIpO2lmKCF5KGgpKXt2YXIgbD1jKGUpO2lmKFwiZHluYW1pY1wiIT09bCYmMCE9PWwmJnIubGVuZ3RoPmwpdGhyb3cgbmV3IEVycm9yKFwiRWxlbWVudHMgZXhjZWVkIGFycmF5IHNpemU6IFwiK2wpfXZhciBkPXIubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gby5zb2xpZGl0eUhleFZhbHVlKGgsZSwyNTYpfSkpO3JldHVybiB0LmNvbmNhdChkKX1pZihcImJ5dGVzXCI9PT1lKXJldHVybiByO2lmKFwic3RyaW5nXCI9PT1lKXJldHVybiB0LmZyb20ocixcInV0ZjhcIik7aWYoXCJib29sXCI9PT1lKXtpPWl8fDg7dmFyIHA9QXJyYXkoaS80KS5qb2luKFwiMFwiKTtyZXR1cm4gdC5mcm9tKHI/cCtcIjFcIjpwK1wiMFwiLFwiaGV4XCIpfWlmKFwiYWRkcmVzc1wiPT09ZSl7dmFyIGI9MjA7cmV0dXJuIGkmJihiPWkvOCksbi5zZXRMZW5ndGhMZWZ0KHIsYil9aWYoZS5zdGFydHNXaXRoKFwiYnl0ZXNcIikpe2lmKChhPXMoZSkpPDF8fGE+MzIpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBieXRlczxOPiB3aWR0aDogXCIrYSk7cmV0dXJuIG4uc2V0TGVuZ3RoUmlnaHQocixhKX1pZihlLnN0YXJ0c1dpdGgoXCJ1aW50XCIpKXtpZigoYT1zKGUpKSU4fHxhPDh8fGE+MjU2KXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgdWludDxOPiB3aWR0aDogXCIrYSk7aWYoKGY9dShyKSkuYml0TGVuZ3RoKCk+YSl0aHJvdyBuZXcgRXJyb3IoXCJTdXBwbGllZCB1aW50IGV4Y2VlZHMgd2lkdGg6IFwiK2ErXCIgdnMgXCIrZi5iaXRMZW5ndGgoKSk7cmV0dXJuIGk9aXx8YSxmLnRvQXJyYXlMaWtlKHQsXCJiZVwiLGkvOCl9aWYoZS5zdGFydHNXaXRoKFwiaW50XCIpKXtpZigoYT1zKGUpKSU4fHxhPDh8fGE+MjU2KXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaW50PE4+IHdpZHRoOiBcIithKTtpZigoZj11KHIpKS5iaXRMZW5ndGgoKT5hKXRocm93IG5ldyBFcnJvcihcIlN1cHBsaWVkIGludCBleGNlZWRzIHdpZHRoOiBcIithK1wiIHZzIFwiK2YuYml0TGVuZ3RoKCkpO3JldHVybiBpPWl8fGEsZi50b1R3b3MoYSkudG9BcnJheUxpa2UodCxcImJlXCIsaS84KX10aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBvciBpbnZhbGlkIHR5cGU6IFwiK2UpfSxvLnNvbGlkaXR5UGFjaz1mdW5jdGlvbihlLHIpe2lmKGUubGVuZ3RoIT09ci5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIG9mIHR5cGVzIGFyZSBub3QgbWF0Y2hpbmcgdGhlIHZhbHVlc1wiKTtmb3IodmFyIG49W10saT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgcz1hKGVbaV0pLGY9cltpXTtuLnB1c2goby5zb2xpZGl0eUhleFZhbHVlKHMsZixudWxsKSl9cmV0dXJuIHQuY29uY2F0KG4pfSxvLnNvbGlkaXR5U0hBMz1mdW5jdGlvbihlLHQpe3JldHVybiBuLmtlY2NhazI1NihvLnNvbGlkaXR5UGFjayhlLHQpKX0sby5zb2xpZGl0eVNIQTI1Nj1mdW5jdGlvbihlLHQpe3JldHVybiBuLnNoYTI1NihvLnNvbGlkaXR5UGFjayhlLHQpKX0sby5zb2xpZGl0eVJJUEVNRDE2MD1mdW5jdGlvbihlLHQpe3JldHVybiBuLnJpcGVtZDE2MChvLnNvbGlkaXR5UGFjayhlLHQpLCEwKX0sby5mcm9tU2VycGVudD1mdW5jdGlvbihlKXtmb3IodmFyIHQscj1bXSxuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciBpPWVbbl07aWYoXCJzXCI9PT1pKXIucHVzaChcImJ5dGVzXCIpO2Vsc2UgaWYoXCJiXCI9PT1pKXtmb3IodmFyIG89XCJieXRlc1wiLGE9bisxO2E8ZS5sZW5ndGgmJigodD1lW2FdKT49XCIwXCImJnQ8PVwiOVwiKTspbys9ZVthXS1cIjBcIixhKys7bj1hLTEsci5wdXNoKG8pfWVsc2UgaWYoXCJpXCI9PT1pKXIucHVzaChcImludDI1NlwiKTtlbHNle2lmKFwiYVwiIT09aSl0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBvciBpbnZhbGlkIHR5cGU6IFwiK2kpO3IucHVzaChcImludDI1NltdXCIpfX1yZXR1cm4gcn0sby50b1NlcnBlbnQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXTtpZihcImJ5dGVzXCI9PT1uKXQucHVzaChcInNcIik7ZWxzZSBpZihuLnN0YXJ0c1dpdGgoXCJieXRlc1wiKSl0LnB1c2goXCJiXCIrcyhuKSk7ZWxzZSBpZihcImludDI1NlwiPT09bil0LnB1c2goXCJpXCIpO2Vsc2V7aWYoXCJpbnQyNTZbXVwiIT09bil0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBvciBpbnZhbGlkIHR5cGU6IFwiK24pO3QucHVzaChcImFcIil9fXJldHVybiB0LmpvaW4oXCJcIil9LGUuZXhwb3J0cz1vfSkuY2FsbCh0aGlzLHIoNykuQnVmZmVyKX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBuPXIoMyk7dC5CTj1uO3ZhciBpPXIoNjkpO3QucmxwPWk7dmFyIG89cig1MiksYT1yKDU3KTt0LnNlY3AyNTZrMT1hO3ZhciBzPXIoNjgpLGY9cigzNiksYz1yKDEpLkJ1ZmZlcix1PXIoNzApO2Z1bmN0aW9uIGgoZSx0KXtyZXR1cm4gdD9lLSgyKnQrMzUpOmUtMjd9ZnVuY3Rpb24gbChlKXtyZXR1cm4gMD09PWV8fDE9PT1lfU9iamVjdC5hc3NpZ24odCx1KSx0Lk1BWF9JTlRFR0VSPW5ldyBuKFwiZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZlwiLDE2KSx0LlRXT19QT1cyNTY9bmV3IG4oXCIxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiLDE2KSx0LktFQ0NBSzI1Nl9OVUxMX1M9XCJjNWQyNDYwMTg2ZjcyMzNjOTI3ZTdkYjJkY2M3MDNjMGU1MDBiNjUzY2E4MjI3M2I3YmZhZDgwNDVkODVhNDcwXCIsdC5LRUNDQUsyNTZfTlVMTD1jLmZyb20odC5LRUNDQUsyNTZfTlVMTF9TLFwiaGV4XCIpLHQuS0VDQ0FLMjU2X1JMUF9BUlJBWV9TPVwiMWRjYzRkZThkZWM3NWQ3YWFiODViNTY3YjZjY2Q0MWFkMzEyNDUxYjk0OGE3NDEzZjBhMTQyZmQ0MGQ0OTM0N1wiLHQuS0VDQ0FLMjU2X1JMUF9BUlJBWT1jLmZyb20odC5LRUNDQUsyNTZfUkxQX0FSUkFZX1MsXCJoZXhcIiksdC5LRUNDQUsyNTZfUkxQX1M9XCI1NmU4MWYxNzFiY2M1NWE2ZmY4MzQ1ZTY5MmMwZjg2ZTViNDhlMDFiOTk2Y2FkYzAwMTYyMmZiNWUzNjNiNDIxXCIsdC5LRUNDQUsyNTZfUkxQPWMuZnJvbSh0LktFQ0NBSzI1Nl9STFBfUyxcImhleFwiKSx0Lnplcm9zPWZ1bmN0aW9uKGUpe3JldHVybiBjLmFsbG9jVW5zYWZlKGUpLmZpbGwoMCl9LHQuemVyb0FkZHJlc3M9ZnVuY3Rpb24oKXt2YXIgZT10Lnplcm9zKDIwKTtyZXR1cm4gdC5idWZmZXJUb0hleChlKX0sdC5zZXRMZW5ndGhMZWZ0PWZ1bmN0aW9uKGUscixuKXt2b2lkIDA9PT1uJiYobj0hMSk7dmFyIGk9dC56ZXJvcyhyKTtyZXR1cm4gZT10LnRvQnVmZmVyKGUpLG4/ZS5sZW5ndGg8cj8oZS5jb3B5KGkpLGkpOmUuc2xpY2UoMCxyKTplLmxlbmd0aDxyPyhlLmNvcHkoaSxyLWUubGVuZ3RoKSxpKTplLnNsaWNlKC1yKX0sdC5zZXRMZW5ndGg9dC5zZXRMZW5ndGhMZWZ0LHQuc2V0TGVuZ3RoUmlnaHQ9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdC5zZXRMZW5ndGgoZSxyLCEwKX0sdC51bnBhZD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9KGU9dS5zdHJpcEhleFByZWZpeChlKSlbMF07ZS5sZW5ndGg+MCYmXCIwXCI9PT10LnRvU3RyaW5nKCk7KXQ9KGU9ZS5zbGljZSgxKSlbMF07cmV0dXJuIGV9LHQuc3RyaXBaZXJvcz10LnVucGFkLHQudG9CdWZmZXI9ZnVuY3Rpb24oZSl7aWYoIWMuaXNCdWZmZXIoZSkpaWYoQXJyYXkuaXNBcnJheShlKSllPWMuZnJvbShlKTtlbHNlIGlmKFwic3RyaW5nXCI9PXR5cGVvZiBlKWU9dC5pc0hleFN0cmluZyhlKT9jLmZyb20odC5wYWRUb0V2ZW4odC5zdHJpcEhleFByZWZpeChlKSksXCJoZXhcIik6Yy5mcm9tKGUpO2Vsc2UgaWYoXCJudW1iZXJcIj09dHlwZW9mIGUpZT10LmludFRvQnVmZmVyKGUpO2Vsc2UgaWYobnVsbD09ZSllPWMuYWxsb2NVbnNhZmUoMCk7ZWxzZSBpZihuLmlzQk4oZSkpZT1lLnRvQXJyYXlMaWtlKGMpO2Vsc2V7aWYoIWUudG9BcnJheSl0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHR5cGVcIik7ZT1jLmZyb20oZS50b0FycmF5KCkpfXJldHVybiBlfSx0LmJ1ZmZlclRvSW50PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbih0LnRvQnVmZmVyKGUpKS50b051bWJlcigpfSx0LmJ1ZmZlclRvSGV4PWZ1bmN0aW9uKGUpe3JldHVyblwiMHhcIisoZT10LnRvQnVmZmVyKGUpKS50b1N0cmluZyhcImhleFwiKX0sdC5mcm9tU2lnbmVkPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbihlKS5mcm9tVHdvcygyNTYpfSx0LnRvVW5zaWduZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGMuZnJvbShlLnRvVHdvcygyNTYpLnRvQXJyYXkoKSl9LHQua2VjY2FrPWZ1bmN0aW9uKGUscil7cmV0dXJuIHZvaWQgMD09PXImJihyPTI1NiksZT10LnRvQnVmZmVyKGUpLHJ8fChyPTI1NiksbyhcImtlY2Nha1wiK3IpLnVwZGF0ZShlKS5kaWdlc3QoKX0sdC5rZWNjYWsyNTY9ZnVuY3Rpb24oZSl7cmV0dXJuIHQua2VjY2FrKGUpfSx0LnNoYTI1Nj1mdW5jdGlvbihlKXtyZXR1cm4gZT10LnRvQnVmZmVyKGUpLGYoXCJzaGEyNTZcIikudXBkYXRlKGUpLmRpZ2VzdCgpfSx0LnJpcGVtZDE2MD1mdW5jdGlvbihlLHIpe2U9dC50b0J1ZmZlcihlKTt2YXIgbj1mKFwicm1kMTYwXCIpLnVwZGF0ZShlKS5kaWdlc3QoKTtyZXR1cm4hMD09PXI/dC5zZXRMZW5ndGgobiwzMik6bn0sdC5ybHBoYXNoPWZ1bmN0aW9uKGUpe3JldHVybiB0LmtlY2NhayhpLmVuY29kZShlKSl9LHQuaXNWYWxpZFByaXZhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGEucHJpdmF0ZUtleVZlcmlmeShlKX0sdC5pc1ZhbGlkUHVibGljPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSExKSw2ND09PWUubGVuZ3RoP2EucHVibGljS2V5VmVyaWZ5KGMuY29uY2F0KFtjLmZyb20oWzRdKSxlXSkpOiEhdCYmYS5wdWJsaWNLZXlWZXJpZnkoZSl9LHQucHViVG9BZGRyZXNzPWZ1bmN0aW9uKGUscil7cmV0dXJuIHZvaWQgMD09PXImJihyPSExKSxlPXQudG9CdWZmZXIoZSksciYmNjQhPT1lLmxlbmd0aCYmKGU9YS5wdWJsaWNLZXlDb252ZXJ0KGUsITEpLnNsaWNlKDEpKSxzKDY0PT09ZS5sZW5ndGgpLHQua2VjY2FrKGUpLnNsaWNlKC0yMCl9LHQucHVibGljVG9BZGRyZXNzPXQucHViVG9BZGRyZXNzLHQucHJpdmF0ZVRvUHVibGljPWZ1bmN0aW9uKGUpe3JldHVybiBlPXQudG9CdWZmZXIoZSksYS5wdWJsaWNLZXlDcmVhdGUoZSwhMSkuc2xpY2UoMSl9LHQuaW1wb3J0UHVibGljPWZ1bmN0aW9uKGUpe3JldHVybiA2NCE9PShlPXQudG9CdWZmZXIoZSkpLmxlbmd0aCYmKGU9YS5wdWJsaWNLZXlDb252ZXJ0KGUsITEpLnNsaWNlKDEpKSxlfSx0LmVjc2lnbj1mdW5jdGlvbihlLHQscil7dmFyIG49YS5zaWduKGUsdCksaT1uLnJlY292ZXJ5O3JldHVybntyOm4uc2lnbmF0dXJlLnNsaWNlKDAsMzIpLHM6bi5zaWduYXR1cmUuc2xpY2UoMzIsNjQpLHY6cj9pKygyKnIrMzUpOmkrMjd9fSx0Lmhhc2hQZXJzb25hbE1lc3NhZ2U9ZnVuY3Rpb24oZSl7dmFyIHI9dC50b0J1ZmZlcihcIlx1MDAxOUV0aGVyZXVtIFNpZ25lZCBNZXNzYWdlOlxcblwiK2UubGVuZ3RoLnRvU3RyaW5nKCkpO3JldHVybiB0LmtlY2NhayhjLmNvbmNhdChbcixlXSkpfSx0LmVjcmVjb3Zlcj1mdW5jdGlvbihlLHIsbixpLG8pe3ZhciBzPWMuY29uY2F0KFt0LnNldExlbmd0aChuLDMyKSx0LnNldExlbmd0aChpLDMyKV0sNjQpLGY9aChyLG8pO2lmKCFsKGYpKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc2lnbmF0dXJlIHYgdmFsdWVcIik7dmFyIHU9YS5yZWNvdmVyKGUscyxmKTtyZXR1cm4gYS5wdWJsaWNLZXlDb252ZXJ0KHUsITEpLnNsaWNlKDEpfSx0LnRvUnBjU2lnPWZ1bmN0aW9uKGUscixuLGkpe2lmKCFsKGgoZSxpKSkpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzaWduYXR1cmUgdiB2YWx1ZVwiKTtyZXR1cm4gdC5idWZmZXJUb0hleChjLmNvbmNhdChbdC5zZXRMZW5ndGhMZWZ0KHIsMzIpLHQuc2V0TGVuZ3RoTGVmdChuLDMyKSx0LnRvQnVmZmVyKGUpXSkpfSx0LmZyb21ScGNTaWc9ZnVuY3Rpb24oZSl7dmFyIHI9dC50b0J1ZmZlcihlKTtpZig2NSE9PXIubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc2lnbmF0dXJlIGxlbmd0aFwiKTt2YXIgbj1yWzY0XTtyZXR1cm4gbjwyNyYmKG4rPTI3KSx7djpuLHI6ci5zbGljZSgwLDMyKSxzOnIuc2xpY2UoMzIsNjQpfX0sdC5wcml2YXRlVG9BZGRyZXNzPWZ1bmN0aW9uKGUpe3JldHVybiB0LnB1YmxpY1RvQWRkcmVzcyh0LnByaXZhdGVUb1B1YmxpYyhlKSl9LHQuaXNWYWxpZEFkZHJlc3M9ZnVuY3Rpb24oZSl7cmV0dXJuL14weFswLTlhLWZBLUZdezQwfSQvLnRlc3QoZSl9LHQuaXNaZXJvQWRkcmVzcz1mdW5jdGlvbihlKXtyZXR1cm4gdC56ZXJvQWRkcmVzcygpPT09dC5hZGRIZXhQcmVmaXgoZSl9LHQudG9DaGVja3N1bUFkZHJlc3M9ZnVuY3Rpb24oZSl7ZT11LnN0cmlwSGV4UHJlZml4KGUpLnRvTG93ZXJDYXNlKCk7Zm9yKHZhciByPXQua2VjY2FrKGUpLnRvU3RyaW5nKFwiaGV4XCIpLG49XCIweFwiLGk9MDtpPGUubGVuZ3RoO2krKylwYXJzZUludChyW2ldLDE2KT49OD9uKz1lW2ldLnRvVXBwZXJDYXNlKCk6bis9ZVtpXTtyZXR1cm4gbn0sdC5pc1ZhbGlkQ2hlY2tzdW1BZGRyZXNzPWZ1bmN0aW9uKGUpe3JldHVybiB0LmlzVmFsaWRBZGRyZXNzKGUpJiZ0LnRvQ2hlY2tzdW1BZGRyZXNzKGUpPT09ZX0sdC5nZW5lcmF0ZUFkZHJlc3M9ZnVuY3Rpb24oZSxyKXtlPXQudG9CdWZmZXIoZSk7dmFyIGk9bmV3IG4ocik7cmV0dXJuIGkuaXNaZXJvKCk/dC5ybHBoYXNoKFtlLG51bGxdKS5zbGljZSgtMjApOnQucmxwaGFzaChbZSxjLmZyb20oaS50b0FycmF5KCkpXSkuc2xpY2UoLTIwKX0sdC5nZW5lcmF0ZUFkZHJlc3MyPWZ1bmN0aW9uKGUscixuKXt2YXIgaT10LnRvQnVmZmVyKGUpLG89dC50b0J1ZmZlcihyKSxhPXQudG9CdWZmZXIobik7cmV0dXJuIHMoMjA9PT1pLmxlbmd0aCkscygzMj09PW8ubGVuZ3RoKSx0LmtlY2NhazI1NihjLmNvbmNhdChbYy5mcm9tKFwiZmZcIixcImhleFwiKSxpLG8sdC5rZWNjYWsyNTYoYSldKSkuc2xpY2UoLTIwKX0sdC5pc1ByZWNvbXBpbGVkPWZ1bmN0aW9uKGUpe3ZhciByPXQudW5wYWQoZSk7cmV0dXJuIDE9PT1yLmxlbmd0aCYmclswXT49MSYmclswXTw9OH0sdC5hZGRIZXhQcmVmaXg9ZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIGU/ZTp1LmlzSGV4UHJlZml4ZWQoZSk/ZTpcIjB4XCIrZX0sdC5pc1ZhbGlkU2lnbmF0dXJlPWZ1bmN0aW9uKGUsdCxyLGksbyl7dm9pZCAwPT09aSYmKGk9ITApO3ZhciBhPW5ldyBuKFwiN2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY1ZDU3NmU3MzU3YTQ1MDFkZGZlOTJmNDY2ODFiMjBhMFwiLDE2KSxzPW5ldyBuKFwiZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmViYWFlZGNlNmFmNDhhMDNiYmZkMjVlOGNkMDM2NDE0MVwiLDE2KTtpZigzMiE9PXQubGVuZ3RofHwzMiE9PXIubGVuZ3RoKXJldHVybiExO2lmKCFsKGgoZSxvKSkpcmV0dXJuITE7dmFyIGY9bmV3IG4odCksYz1uZXcgbihyKTtyZXR1cm4hKGYuaXNaZXJvKCl8fGYuZ3Qocyl8fGMuaXNaZXJvKCl8fGMuZ3QocykpJiYoIWl8fDEhPT1jLmNtcChhKSl9LHQuYmFUb0pTT049ZnVuY3Rpb24oZSl7aWYoYy5pc0J1ZmZlcihlKSlyZXR1cm5cIjB4XCIrZS50b1N0cmluZyhcImhleFwiKTtpZihlIGluc3RhbmNlb2YgQXJyYXkpe2Zvcih2YXIgcj1bXSxuPTA7bjxlLmxlbmd0aDtuKyspci5wdXNoKHQuYmFUb0pTT04oZVtuXSkpO3JldHVybiByfX0sdC5kZWZpbmVQcm9wZXJ0aWVzPWZ1bmN0aW9uKGUscixuKXtpZihlLnJhdz1bXSxlLl9maWVsZHM9W10sZS50b0pTT049ZnVuY3Rpb24ocil7aWYodm9pZCAwPT09ciYmKHI9ITEpLHIpe3ZhciBuPXt9O3JldHVybiBlLl9maWVsZHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7blt0XT1cIjB4XCIrZVt0XS50b1N0cmluZyhcImhleFwiKX0pKSxufXJldHVybiB0LmJhVG9KU09OKGUucmF3KX0sZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gaS5lbmNvZGUoZS5yYXcpfSxyLmZvckVhY2goKGZ1bmN0aW9uKHIsbil7ZnVuY3Rpb24gaSgpe3JldHVybiBlLnJhd1tuXX1mdW5jdGlvbiBvKGkpe1wiMDBcIiE9PShpPXQudG9CdWZmZXIoaSkpLnRvU3RyaW5nKFwiaGV4XCIpfHxyLmFsbG93WmVyb3x8KGk9Yy5hbGxvY1Vuc2FmZSgwKSksci5hbGxvd0xlc3MmJnIubGVuZ3RoPyhpPXQuc3RyaXBaZXJvcyhpKSxzKHIubGVuZ3RoPj1pLmxlbmd0aCxcIlRoZSBmaWVsZCBcIityLm5hbWUrXCIgbXVzdCBub3QgaGF2ZSBtb3JlIFwiK3IubGVuZ3RoK1wiIGJ5dGVzXCIpKTpyLmFsbG93WmVybyYmMD09PWkubGVuZ3RofHwhci5sZW5ndGh8fHMoci5sZW5ndGg9PT1pLmxlbmd0aCxcIlRoZSBmaWVsZCBcIityLm5hbWUrXCIgbXVzdCBoYXZlIGJ5dGUgbGVuZ3RoIG9mIFwiK3IubGVuZ3RoKSxlLnJhd1tuXT1pfWUuX2ZpZWxkcy5wdXNoKHIubmFtZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5uYW1lLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6aSxzZXQ6b30pLHIuZGVmYXVsdCYmKGVbci5uYW1lXT1yLmRlZmF1bHQpLHIuYWxpYXMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIuYWxpYXMse2VudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwLHNldDpvLGdldDppfSl9KSksbilpZihcInN0cmluZ1wiPT10eXBlb2YgbiYmKG49Yy5mcm9tKHUuc3RyaXBIZXhQcmVmaXgobiksXCJoZXhcIikpLGMuaXNCdWZmZXIobikmJihuPWkuZGVjb2RlKG4pKSxBcnJheS5pc0FycmF5KG4pKXtpZihuLmxlbmd0aD5lLl9maWVsZHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcIndyb25nIG51bWJlciBvZiBmaWVsZHMgaW4gZGF0YVwiKTtuLmZvckVhY2goKGZ1bmN0aW9uKHIsbil7ZVtlLl9maWVsZHNbbl1dPXQudG9CdWZmZXIocil9KSl9ZWxzZXtpZihcIm9iamVjdFwiIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIGRhdGFcIik7dmFyIG89T2JqZWN0LmtleXMobik7ci5mb3JFYWNoKChmdW5jdGlvbih0KXstMSE9PW8uaW5kZXhPZih0Lm5hbWUpJiYoZVt0Lm5hbWVdPW5bdC5uYW1lXSksLTEhPT1vLmluZGV4T2YodC5hbGlhcykmJihlW3QuYWxpYXNdPW5bdC5hbGlhc10pfSkpfX19LGZ1bmN0aW9uKGUsdCxyKXsoZnVuY3Rpb24odCl7IWZ1bmN0aW9uKHIpe1widXNlIHN0cmljdFwiO3ZhciBuPWZ1bmN0aW9uKGUpe3NldFRpbWVvdXQoZSwwKX07dm9pZCAwIT09dCYmdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgdC5uZXh0VGljayYmKG49dC5uZXh0VGljayksZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXtjYXBhY2l0eTplfHwxLGN1cnJlbnQ6MCxxdWV1ZTpbXSxmaXJzdEhlcmU6ITEsdGFrZTpmdW5jdGlvbigpe2lmKCExPT09dC5maXJzdEhlcmUpe3QuY3VycmVudCsrLHQuZmlyc3RIZXJlPSEwO3ZhciBlPTF9ZWxzZSBlPTA7dmFyIHI9e246MX07XCJmdW5jdGlvblwiPT10eXBlb2YgYXJndW1lbnRzWzBdP3IudGFzaz1hcmd1bWVudHNbMF06ci5uPWFyZ3VtZW50c1swXSxhcmd1bWVudHMubGVuZ3RoPj0yJiYoXCJmdW5jdGlvblwiPT10eXBlb2YgYXJndW1lbnRzWzFdP3IudGFzaz1hcmd1bWVudHNbMV06ci5uPWFyZ3VtZW50c1sxXSk7dmFyIG49ci50YXNrO2lmKHIudGFzaz1mdW5jdGlvbigpe24odC5sZWF2ZSl9LHQuY3VycmVudCtyLm4tZT50LmNhcGFjaXR5KXJldHVybiAxPT09ZSYmKHQuY3VycmVudC0tLHQuZmlyc3RIZXJlPSExKSx0LnF1ZXVlLnB1c2gocik7dC5jdXJyZW50Kz1yLm4tZSxyLnRhc2sodC5sZWF2ZSksMT09PWUmJih0LmZpcnN0SGVyZT0hMSl9LGxlYXZlOmZ1bmN0aW9uKGUpe2lmKGU9ZXx8MSx0LmN1cnJlbnQtPWUsdC5xdWV1ZS5sZW5ndGgpe3ZhciByPXQucXVldWVbMF07ci5uK3QuY3VycmVudD50LmNhcGFjaXR5fHwodC5xdWV1ZS5zaGlmdCgpLHQuY3VycmVudCs9ci5uLG4oci50YXNrKSl9ZWxzZSBpZih0LmN1cnJlbnQ8MCl0aHJvdyBuZXcgRXJyb3IoXCJsZWF2ZSBjYWxsZWQgdG9vIG1hbnkgdGltZXMuXCIpfSxhdmFpbGFibGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9ZXx8MSx0LmN1cnJlbnQrZTw9dC5jYXBhY2l0eX19O3JldHVybiB0fX0oKX0pLmNhbGwodGhpcyxyKDkpKX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMTkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7ZS5zZW5kQXN5bmMobih7bWV0aG9kOlwiZXRoX2VzdGltYXRlR2FzXCIscGFyYW1zOlt0XX0pLChmdW5jdGlvbihlLHQpe2lmKGUpcmV0dXJuXCJubyBjb250cmFjdCBjb2RlIGF0IGdpdmVuIGFkZHJlc3NcIj09PWUubWVzc2FnZT9yKG51bGwsXCIweGNmMDhcIik6cihlKTtyKG51bGwsdC5yZXN1bHQpfSkpfX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbih0KXt2YXIgbj1yKDE1KSxpPXIoMjIzKSxvPW4uQk4sYT1uZXcgbyhcIjdmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmNWQ1NzZlNzM1N2E0NTAxZGRmZTkyZjQ2NjgxYjIwYTBcIiwxNikscz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUocil7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxlKSxyPXJ8fHt9O3ZhciBpPVt7bmFtZTpcIm5vbmNlXCIsbGVuZ3RoOjMyLGFsbG93TGVzczohMCxkZWZhdWx0Om5ldyB0KFtdKX0se25hbWU6XCJnYXNQcmljZVwiLGxlbmd0aDozMixhbGxvd0xlc3M6ITAsZGVmYXVsdDpuZXcgdChbXSl9LHtuYW1lOlwiZ2FzTGltaXRcIixhbGlhczpcImdhc1wiLGxlbmd0aDozMixhbGxvd0xlc3M6ITAsZGVmYXVsdDpuZXcgdChbXSl9LHtuYW1lOlwidG9cIixhbGxvd1plcm86ITAsbGVuZ3RoOjIwLGRlZmF1bHQ6bmV3IHQoW10pfSx7bmFtZTpcInZhbHVlXCIsbGVuZ3RoOjMyLGFsbG93TGVzczohMCxkZWZhdWx0Om5ldyB0KFtdKX0se25hbWU6XCJkYXRhXCIsYWxpYXM6XCJpbnB1dFwiLGFsbG93WmVybzohMCxkZWZhdWx0Om5ldyB0KFtdKX0se25hbWU6XCJ2XCIsYWxsb3daZXJvOiEwLGRlZmF1bHQ6bmV3IHQoWzI4XSl9LHtuYW1lOlwiclwiLGxlbmd0aDozMixhbGxvd1plcm86ITAsYWxsb3dMZXNzOiEwLGRlZmF1bHQ6bmV3IHQoW10pfSx7bmFtZTpcInNcIixsZW5ndGg6MzIsYWxsb3daZXJvOiEwLGFsbG93TGVzczohMCxkZWZhdWx0Om5ldyB0KFtdKX1dO24uZGVmaW5lUHJvcGVydGllcyh0aGlzLGksciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsXCJmcm9tXCIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDp0aGlzLmdldFNlbmRlckFkZHJlc3MuYmluZCh0aGlzKX0pO3ZhciBvPW4uYnVmZmVyVG9JbnQodGhpcy52KSxhPU1hdGguZmxvb3IoKG8tMzUpLzIpO2E8MCYmKGE9MCksdGhpcy5fY2hhaW5JZD1hfHxyLmNoYWluSWR8fDAsdGhpcy5faG9tZXN0ZWFkPSEwfXJldHVybiBlLnByb3RvdHlwZS50b0NyZWF0aW9uQWRkcmVzcz1mdW5jdGlvbigpe3JldHVyblwiXCI9PT10aGlzLnRvLnRvU3RyaW5nKFwiaGV4XCIpfSxlLnByb3RvdHlwZS5oYXNoPWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPSEwKTt2YXIgdD12b2lkIDA7aWYoZSl0PXRoaXMucmF3O2Vsc2UgaWYodGhpcy5fY2hhaW5JZD4wKXt2YXIgcj10aGlzLnJhdy5zbGljZSgpO3RoaXMudj10aGlzLl9jaGFpbklkLHRoaXMucj0wLHRoaXMucz0wLHQ9dGhpcy5yYXcsdGhpcy5yYXc9cn1lbHNlIHQ9dGhpcy5yYXcuc2xpY2UoMCw2KTtyZXR1cm4gbi5ybHBoYXNoKHQpfSxlLnByb3RvdHlwZS5nZXRDaGFpbklkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NoYWluSWR9LGUucHJvdG90eXBlLmdldFNlbmRlckFkZHJlc3M9ZnVuY3Rpb24oKXtpZih0aGlzLl9mcm9tKXJldHVybiB0aGlzLl9mcm9tO3ZhciBlPXRoaXMuZ2V0U2VuZGVyUHVibGljS2V5KCk7cmV0dXJuIHRoaXMuX2Zyb209bi5wdWJsaWNUb0FkZHJlc3MoZSksdGhpcy5fZnJvbX0sZS5wcm90b3R5cGUuZ2V0U2VuZGVyUHVibGljS2V5PWZ1bmN0aW9uKCl7aWYoISh0aGlzLl9zZW5kZXJQdWJLZXkmJnRoaXMuX3NlbmRlclB1YktleS5sZW5ndGh8fHRoaXMudmVyaWZ5U2lnbmF0dXJlKCkpKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgU2lnbmF0dXJlXCIpO3JldHVybiB0aGlzLl9zZW5kZXJQdWJLZXl9LGUucHJvdG90eXBlLnZlcmlmeVNpZ25hdHVyZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuaGFzaCghMSk7aWYodGhpcy5faG9tZXN0ZWFkJiYxPT09bmV3IG8odGhpcy5zKS5jbXAoYSkpcmV0dXJuITE7dHJ5e3ZhciB0PW4uYnVmZmVyVG9JbnQodGhpcy52KTt0aGlzLl9jaGFpbklkPjAmJih0LT0yKnRoaXMuX2NoYWluSWQrOCksdGhpcy5fc2VuZGVyUHViS2V5PW4uZWNyZWNvdmVyKGUsdCx0aGlzLnIsdGhpcy5zKX1jYXRjaChlKXtyZXR1cm4hMX1yZXR1cm4hIXRoaXMuX3NlbmRlclB1YktleX0sZS5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmhhc2goITEpLHI9bi5lY3NpZ24odCxlKTt0aGlzLl9jaGFpbklkPjAmJihyLnYrPTIqdGhpcy5fY2hhaW5JZCs4KSxPYmplY3QuYXNzaWduKHRoaXMscil9LGUucHJvdG90eXBlLmdldERhdGFGZWU9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5yYXdbNV0sdD1uZXcgbygwKSxyPTA7cjxlLmxlbmd0aDtyKyspMD09PWVbcl0/dC5pYWRkbihpLnR4RGF0YVplcm9HYXMudik6dC5pYWRkbihpLnR4RGF0YU5vblplcm9HYXMudik7cmV0dXJuIHR9LGUucHJvdG90eXBlLmdldEJhc2VGZWU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldERhdGFGZWUoKS5pYWRkbihpLnR4R2FzLnYpO3JldHVybiB0aGlzLl9ob21lc3RlYWQmJnRoaXMudG9DcmVhdGlvbkFkZHJlc3MoKSYmZS5pYWRkbihpLnR4Q3JlYXRpb24udiksZX0sZS5wcm90b3R5cGUuZ2V0VXBmcm9udENvc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG8odGhpcy5nYXNMaW1pdCkuaW11bChuZXcgbyh0aGlzLmdhc1ByaWNlKSkuaWFkZChuZXcgbyh0aGlzLnZhbHVlKSl9LGUucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiB0aGlzLnZlcmlmeVNpZ25hdHVyZSgpfHx0LnB1c2goXCJJbnZhbGlkIFNpZ25hdHVyZVwiKSx0aGlzLmdldEJhc2VGZWUoKS5jbXAobmV3IG8odGhpcy5nYXNMaW1pdCkpPjAmJnQucHVzaChbXCJnYXMgbGltaXQgaXMgdG9vIGxvdy4gTmVlZCBhdCBsZWFzdCBcIit0aGlzLmdldEJhc2VGZWUoKV0pLHZvaWQgMD09PWV8fCExPT09ZT8wPT09dC5sZW5ndGg6dC5qb2luKFwiIFwiKX0sZX0oKTtlLmV4cG9ydHM9c30pLmNhbGwodGhpcyxyKDcpLkJ1ZmZlcil9LGZ1bmN0aW9uKGUpe2UuZXhwb3J0cz17Z2VuZXNpc0dhc0xpbWl0Ont2OjVlMyxkOlwiR2FzIGxpbWl0IG9mIHRoZSBHZW5lc2lzIGJsb2NrLlwifSxnZW5lc2lzRGlmZmljdWx0eTp7djoxNzE3OTg2OTE4NCxkOlwiRGlmZmljdWx0eSBvZiB0aGUgR2VuZXNpcyBibG9jay5cIn0sZ2VuZXNpc05vbmNlOnt2OlwiMHgwMDAwMDAwMDAwMDAwMDQyXCIsZDpcInRoZSBnZW5laXMgbm9uY2VcIn0sZ2VuZXNpc0V4dHJhRGF0YTp7djpcIjB4MTFiYmU4ZGI0ZTM0N2I0ZThjOTM3YzFjODM3MGU0YjVlZDMzYWRiM2RiNjljYmRiN2EzOGUxZTUwYjFiODJmYVwiLGQ6XCJleHRyYSBkYXRhIFwifSxnZW5lc2lzSGFzaDp7djpcIjB4ZDRlNTY3NDBmODc2YWVmOGMwMTBiODZhNDBkNWY1Njc0NWExMThkMDkwNmEzNGU2OWFlYzhjMGRiMWNiOGZhM1wiLGQ6XCJnZW5lc2lzIGhhc2hcIn0sZ2VuZXNpc1N0YXRlUm9vdDp7djpcIjB4ZDdmODk3NGZiNWFjNzhkOWFjMDk5YjlhZDUwMThiZWRjMmNlMGE3MmRhZDE4MjdhMTcwOWRhMzA1ODBmMDU0NFwiLGQ6XCJ0aGUgZ2VuZXNpcyBzdGF0ZSByb290XCJ9LG1pbkdhc0xpbWl0Ont2OjVlMyxkOlwiTWluaW11bSB0aGUgZ2FzIGxpbWl0IG1heSBldmVyIGJlLlwifSxnYXNMaW1pdEJvdW5kRGl2aXNvcjp7djoxMDI0LGQ6XCJUaGUgYm91bmQgZGl2aXNvciBvZiB0aGUgZ2FzIGxpbWl0LCB1c2VkIGluIHVwZGF0ZSBjYWxjdWxhdGlvbnMuXCJ9LG1pbmltdW1EaWZmaWN1bHR5Ont2OjEzMTA3MixkOlwiVGhlIG1pbmltdW0gdGhhdCB0aGUgZGlmZmljdWx0eSBtYXkgZXZlciBiZS5cIn0sZGlmZmljdWx0eUJvdW5kRGl2aXNvcjp7djoyMDQ4LGQ6XCJUaGUgYm91bmQgZGl2aXNvciBvZiB0aGUgZGlmZmljdWx0eSwgdXNlZCBpbiB0aGUgdXBkYXRlIGNhbGN1bGF0aW9ucy5cIn0sZHVyYXRpb25MaW1pdDp7djoxMyxkOlwiVGhlIGRlY2lzaW9uIGJvdW5kYXJ5IG9uIHRoZSBibG9ja3RpbWUgZHVyYXRpb24gdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciBkaWZmaWN1bHR5IHNob3VsZCBnbyB1cCBvciBub3QuXCJ9LG1heGltdW1FeHRyYURhdGFTaXplOnt2OjMyLGQ6XCJNYXhpbXVtIHNpemUgZXh0cmEgZGF0YSBtYXkgYmUgYWZ0ZXIgR2VuZXNpcy5cIn0sZXBvY2hEdXJhdGlvbjp7djozZTQsZDpcIkR1cmF0aW9uIGJldHdlZW4gcHJvb2Ytb2Ytd29yayBlcG9jaHMuXCJ9LHN0YWNrTGltaXQ6e3Y6MTAyNCxkOlwiTWF4aW11bSBzaXplIG9mIFZNIHN0YWNrIGFsbG93ZWQuXCJ9LGNhbGxDcmVhdGVEZXB0aDp7djoxMDI0LGQ6XCJNYXhpbXVtIGRlcHRoIG9mIGNhbGwvY3JlYXRlIHN0YWNrLlwifSx0aWVyU3RlcEdhczp7djpbMCwyLDMsNSw4LDEwLDIwXSxkOlwiT25jZSBwZXIgb3BlcmF0aW9uLCBmb3IgYSBzZWxlY3Rpb24gb2YgdGhlbS5cIn0sZXhwR2FzOnt2OjEwLGQ6XCJPbmNlIHBlciBFWFAgaW5zdHVjdGlvbi5cIn0sZXhwQnl0ZUdhczp7djoxMCxkOlwiVGltZXMgY2VpbChsb2cyNTYoZXhwb25lbnQpKSBmb3IgdGhlIEVYUCBpbnN0cnVjdGlvbi5cIn0sc2hhM0dhczp7djozMCxkOlwiT25jZSBwZXIgU0hBMyBvcGVyYXRpb24uXCJ9LHNoYTNXb3JkR2FzOnt2OjYsZDpcIk9uY2UgcGVyIHdvcmQgb2YgdGhlIFNIQTMgb3BlcmF0aW9uJ3MgZGF0YS5cIn0sc2xvYWRHYXM6e3Y6NTAsZDpcIk9uY2UgcGVyIFNMT0FEIG9wZXJhdGlvbi5cIn0sc3N0b3JlU2V0R2FzOnt2OjJlNCxkOlwiT25jZSBwZXIgU1NUT1JFIG9wZXJhdGlvbiBpZiB0aGUgemVyb25lc3MgY2hhbmdlcyBmcm9tIHplcm8uXCJ9LHNzdG9yZVJlc2V0R2FzOnt2OjVlMyxkOlwiT25jZSBwZXIgU1NUT1JFIG9wZXJhdGlvbiBpZiB0aGUgemVyb25lc3MgZG9lcyBub3QgY2hhbmdlIGZyb20gemVyby5cIn0sc3N0b3JlUmVmdW5kR2FzOnt2OjE1ZTMsZDpcIk9uY2UgcGVyIFNTVE9SRSBvcGVyYXRpb24gaWYgdGhlIHplcm9uZXNzIGNoYW5nZXMgdG8gemVyby5cIn0sanVtcGRlc3RHYXM6e3Y6MSxkOlwiUmVmdW5kZWQgZ2FzLCBvbmNlIHBlciBTU1RPUkUgb3BlcmF0aW9uIGlmIHRoZSB6ZXJvbmVzcyBjaGFuZ2VzIHRvIHplcm8uXCJ9LGxvZ0dhczp7djozNzUsZDpcIlBlciBMT0cqIG9wZXJhdGlvbi5cIn0sbG9nRGF0YUdhczp7djo4LGQ6XCJQZXIgYnl0ZSBpbiBhIExPRyogb3BlcmF0aW9uJ3MgZGF0YS5cIn0sbG9nVG9waWNHYXM6e3Y6Mzc1LGQ6XCJNdWx0aXBsaWVkIGJ5IHRoZSAqIG9mIHRoZSBMT0cqLCBwZXIgTE9HIHRyYW5zYWN0aW9uLiBlLmcuIExPRzAgaW5jdXJzIDAgKiBjX3R4TG9nVG9waWNHYXMsIExPRzQgaW5jdXJzIDQgKiBjX3R4TG9nVG9waWNHYXMuXCJ9LGNyZWF0ZUdhczp7djozMmUzLGQ6XCJPbmNlIHBlciBDUkVBVEUgb3BlcmF0aW9uICYgY29udHJhY3QtY3JlYXRpb24gdHJhbnNhY3Rpb24uXCJ9LGNhbGxHYXM6e3Y6NDAsZDpcIk9uY2UgcGVyIENBTEwgb3BlcmF0aW9uICYgbWVzc2FnZSBjYWxsIHRyYW5zYWN0aW9uLlwifSxjYWxsU3RpcGVuZDp7djoyMzAwLGQ6XCJGcmVlIGdhcyBnaXZlbiBhdCBiZWdpbm5pbmcgb2YgY2FsbC5cIn0sY2FsbFZhbHVlVHJhbnNmZXJHYXM6e3Y6OWUzLGQ6XCJQYWlkIGZvciBDQUxMIHdoZW4gdGhlIHZhbHVlIHRyYW5zZm9yIGlzIG5vbi16ZXJvLlwifSxjYWxsTmV3QWNjb3VudEdhczp7djoyNWUzLGQ6XCJQYWlkIGZvciBDQUxMIHdoZW4gdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MgZGlkbid0IGV4aXN0IHByaW9yLlwifSxzdWljaWRlUmVmdW5kR2FzOnt2OjI0ZTMsZDpcIlJlZnVuZGVkIGZvbGxvd2luZyBhIHN1aWNpZGUgb3BlcmF0aW9uLlwifSxtZW1vcnlHYXM6e3Y6MyxkOlwiVGltZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIChoaWdoZXN0IHJlZmVyZW5jZWQgYnl0ZSBpbiBtZW1vcnkgKyAxKS4gTk9URTogcmVmZXJlbmNpbmcgaGFwcGVucyBvbiByZWFkLCB3cml0ZSBhbmQgaW4gaW5zdHJ1Y3Rpb25zIHN1Y2ggYXMgUkVUVVJOIGFuZCBDQUxMLlwifSxxdWFkQ29lZmZEaXY6e3Y6NTEyLGQ6XCJEaXZpc29yIGZvciB0aGUgcXVhZHJhdGljIHBhcnRpY2xlIG9mIHRoZSBtZW1vcnkgY29zdCBlcXVhdGlvbi5cIn0sY3JlYXRlRGF0YUdhczp7djoyMDAsZDpcIlwifSx0eEdhczp7djoyMWUzLGQ6XCJQZXIgdHJhbnNhY3Rpb24uIE5PVEU6IE5vdCBwYXlhYmxlIG9uIGRhdGEgb2YgY2FsbHMgYmV0d2VlbiB0cmFuc2FjdGlvbnMuXCJ9LHR4Q3JlYXRpb246e3Y6MzJlMyxkOlwidGhlIGNvc3Qgb2YgY3JlYXRpbmcgYSBjb250cmFjdCB2aWEgdHhcIn0sdHhEYXRhWmVyb0dhczp7djo0LGQ6XCJQZXIgYnl0ZSBvZiBkYXRhIGF0dGFjaGVkIHRvIGEgdHJhbnNhY3Rpb24gdGhhdCBlcXVhbHMgemVyby4gTk9URTogTm90IHBheWFibGUgb24gZGF0YSBvZiBjYWxscyBiZXR3ZWVuIHRyYW5zYWN0aW9ucy5cIn0sdHhEYXRhTm9uWmVyb0dhczp7djo2OCxkOlwiUGVyIGJ5dGUgb2YgZGF0YSBhdHRhY2hlZCB0byBhIHRyYW5zYWN0aW9uIHRoYXQgaXMgbm90IGVxdWFsIHRvIHplcm8uIE5PVEU6IE5vdCBwYXlhYmxlIG9uIGRhdGEgb2YgY2FsbHMgYmV0d2VlbiB0cmFuc2FjdGlvbnMuXCJ9LGNvcHlHYXM6e3Y6MyxkOlwiTXVsdGlwbGllZCBieSB0aGUgbnVtYmVyIG9mIDMyLWJ5dGUgd29yZHMgdGhhdCBhcmUgY29waWVkIChyb3VuZCB1cCkgZm9yIGFueSAqQ09QWSBvcGVyYXRpb24gYW5kIGFkZGVkLlwifSxlY3JlY292ZXJHYXM6e3Y6M2UzLGQ6XCJcIn0sc2hhMjU2R2FzOnt2OjYwLGQ6XCJcIn0sc2hhMjU2V29yZEdhczp7djoxMixkOlwiXCJ9LHJpcGVtZDE2MEdhczp7djo2MDAsZDpcIlwifSxyaXBlbWQxNjBXb3JkR2FzOnt2OjEyMCxkOlwiXCJ9LGlkZW50aXR5R2FzOnt2OjE1LGQ6XCJcIn0saWRlbnRpdHlXb3JkR2FzOnt2OjMsZDpcIlwifSxtaW5lclJld2FyZDp7djpcIjUwMDAwMDAwMDAwMDAwMDAwMDBcIixkOlwidGhlIGFtb3VudCBhIG1pbmVyIGdldCByZXdhcmRlZCBmb3IgbWluaW5nIGEgYmxvY2tcIn0sb21tZXJSZXdhcmQ6e3Y6XCI2MjUwMDAwMDAwMDAwMDAwMDBcIixkOlwiVGhlIGFtb3VudCBvZiB3ZWkgYSBtaW5lciBvZiBhbiB1bmNsZSBibG9jayBnZXRzIGZvciBiZWluZyBpbmN1bGRlZCBpbiB0aGUgYmxvY2tjaGFpblwifSxuaWJsaW5nUmV3YXJkOnt2OlwiMTU2MjUwMDAwMDAwMDAwMDAwXCIsZDpcInRoZSBhbW91bnQgYSBtaW5lciBnZXRzIGZvciBpbmN1bGRpbmcgYSB1bmNsZVwifSxob21lU3RlYWRGb3JrTnVtYmVyOnt2OjExNWU0LGQ6XCJ0aGUgYmxvY2sgdGhhdCB0aGUgSG9tZXN0ZWFkIGZvcmsgc3RhcnRlZCBhdFwifSxob21lc3RlYWRSZXByaWNlRm9ya051bWJlcjp7djoyNDYzZTMsZDpcInRoZSBibG9jayB0aGF0IHRoZSBIb21lc3RlYWQgUmVwcmljZSAoRUlQMTUwKSBmb3JrIHN0YXJ0ZWQgYXRcIn0sdGltZWJvbWJQZXJpb2Q6e3Y6MWU1LGQ6XCJFeHBvbmVudGlhbCBkaWZmaWN1bHR5IHRpbWVib21iIHBlcmlvZFwifSxmcmVlQmxvY2tQZXJpb2Q6e3Y6Mn19fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigyMjUpLGk9cigyMjYpLG89cigyMjcpLGE9cigyOSk7ZnVuY3Rpb24gcyhlLHQscil7dmFyIG49ZTtyZXR1cm4gaSh0KT8ocj10LFwic3RyaW5nXCI9PXR5cGVvZiBlJiYobj17dXJpOmV9KSk6bj1hKHQse3VyaTplfSksbi5jYWxsYmFjaz1yLG59ZnVuY3Rpb24gZihlLHQscil7cmV0dXJuIGModD1zKGUsdCxyKSl9ZnVuY3Rpb24gYyhlKXtpZih2b2lkIDA9PT1lLmNhbGxiYWNrKXRocm93IG5ldyBFcnJvcihcImNhbGxiYWNrIGFyZ3VtZW50IG1pc3NpbmdcIik7dmFyIHQ9ITEscj1mdW5jdGlvbihyLG4saSl7dHx8KHQ9ITAsZS5jYWxsYmFjayhyLG4saSkpfTtmdW5jdGlvbiBuKCl7dmFyIGU9dm9pZCAwO2lmKGU9dS5yZXNwb25zZT91LnJlc3BvbnNlOnUucmVzcG9uc2VUZXh0fHxmdW5jdGlvbihlKXt0cnl7aWYoXCJkb2N1bWVudFwiPT09ZS5yZXNwb25zZVR5cGUpcmV0dXJuIGUucmVzcG9uc2VYTUw7dmFyIHQ9ZS5yZXNwb25zZVhNTCYmXCJwYXJzZXJlcnJvclwiPT09ZS5yZXNwb25zZVhNTC5kb2N1bWVudEVsZW1lbnQubm9kZU5hbWU7aWYoXCJcIj09PWUucmVzcG9uc2VUeXBlJiYhdClyZXR1cm4gZS5yZXNwb25zZVhNTH1jYXRjaChlKXt9cmV0dXJuIG51bGx9KHUpLGcpdHJ5e2U9SlNPTi5wYXJzZShlKX1jYXRjaChlKXt9cmV0dXJuIGV9ZnVuY3Rpb24gaShlKXtyZXR1cm4gY2xlYXJUaW1lb3V0KGgpLGUgaW5zdGFuY2VvZiBFcnJvcnx8KGU9bmV3IEVycm9yKFwiXCIrKGV8fFwiVW5rbm93biBYTUxIdHRwUmVxdWVzdCBFcnJvclwiKSkpLGUuc3RhdHVzQ29kZT0wLHIoZSx2KX1mdW5jdGlvbiBhKCl7aWYoIWMpe3ZhciB0O2NsZWFyVGltZW91dChoKSx0PWUudXNlWERSJiZ2b2lkIDA9PT11LnN0YXR1cz8yMDA6MTIyMz09PXUuc3RhdHVzPzIwNDp1LnN0YXR1czt2YXIgaT12LGE9bnVsbDtyZXR1cm4gMCE9PXQ/KGk9e2JvZHk6bigpLHN0YXR1c0NvZGU6dCxtZXRob2Q6ZCxoZWFkZXJzOnt9LHVybDpsLHJhd1JlcXVlc3Q6dX0sdS5nZXRBbGxSZXNwb25zZUhlYWRlcnMmJihpLmhlYWRlcnM9byh1LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSkpOmE9bmV3IEVycm9yKFwiSW50ZXJuYWwgWE1MSHR0cFJlcXVlc3QgRXJyb3JcIikscihhLGksaS5ib2R5KX19dmFyIHMsYyx1PWUueGhyfHxudWxsO3V8fCh1PWUuY29yc3x8ZS51c2VYRFI/bmV3IGYuWERvbWFpblJlcXVlc3Q6bmV3IGYuWE1MSHR0cFJlcXVlc3QpO3ZhciBoLGw9dS51cmw9ZS51cml8fGUudXJsLGQ9dS5tZXRob2Q9ZS5tZXRob2R8fFwiR0VUXCIscD1lLmJvZHl8fGUuZGF0YSxiPXUuaGVhZGVycz1lLmhlYWRlcnN8fHt9LHk9ISFlLnN5bmMsZz0hMSx2PXtib2R5OnZvaWQgMCxoZWFkZXJzOnt9LHN0YXR1c0NvZGU6MCxtZXRob2Q6ZCx1cmw6bCxyYXdSZXF1ZXN0OnV9O2lmKFwianNvblwiaW4gZSYmITEhPT1lLmpzb24mJihnPSEwLGIuYWNjZXB0fHxiLkFjY2VwdHx8KGIuQWNjZXB0PVwiYXBwbGljYXRpb24vanNvblwiKSxcIkdFVFwiIT09ZCYmXCJIRUFEXCIhPT1kJiYoYltcImNvbnRlbnQtdHlwZVwiXXx8YltcIkNvbnRlbnQtVHlwZVwiXXx8KGJbXCJDb250ZW50LVR5cGVcIl09XCJhcHBsaWNhdGlvbi9qc29uXCIpLHA9SlNPTi5zdHJpbmdpZnkoITA9PT1lLmpzb24/cDplLmpzb24pKSksdS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXs0PT09dS5yZWFkeVN0YXRlJiZzZXRUaW1lb3V0KGEsMCl9LHUub25sb2FkPWEsdS5vbmVycm9yPWksdS5vbnByb2dyZXNzPWZ1bmN0aW9uKCl7fSx1Lm9uYWJvcnQ9ZnVuY3Rpb24oKXtjPSEwfSx1Lm9udGltZW91dD1pLHUub3BlbihkLGwsIXksZS51c2VybmFtZSxlLnBhc3N3b3JkKSx5fHwodS53aXRoQ3JlZGVudGlhbHM9ISFlLndpdGhDcmVkZW50aWFscyksIXkmJmUudGltZW91dD4wJiYoaD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2lmKCFjKXtjPSEwLHUuYWJvcnQoXCJ0aW1lb3V0XCIpO3ZhciBlPW5ldyBFcnJvcihcIlhNTEh0dHBSZXF1ZXN0IHRpbWVvdXRcIik7ZS5jb2RlPVwiRVRJTUVET1VUXCIsaShlKX19KSxlLnRpbWVvdXQpKSx1LnNldFJlcXVlc3RIZWFkZXIpZm9yKHMgaW4gYiliLmhhc093blByb3BlcnR5KHMpJiZ1LnNldFJlcXVlc3RIZWFkZXIocyxiW3NdKTtlbHNlIGlmKGUuaGVhZGVycyYmIWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuITE7cmV0dXJuITB9KGUuaGVhZGVycykpdGhyb3cgbmV3IEVycm9yKFwiSGVhZGVycyBjYW5ub3QgYmUgc2V0IG9uIGFuIFhEb21haW5SZXF1ZXN0IG9iamVjdFwiKTtyZXR1cm5cInJlc3BvbnNlVHlwZVwiaW4gZSYmKHUucmVzcG9uc2VUeXBlPWUucmVzcG9uc2VUeXBlKSxcImJlZm9yZVNlbmRcImluIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUuYmVmb3JlU2VuZCYmZS5iZWZvcmVTZW5kKHUpLHUuc2VuZChwfHxudWxsKSx1fWUuZXhwb3J0cz1mLGUuZXhwb3J0cy5kZWZhdWx0PWYsZi5YTUxIdHRwUmVxdWVzdD1uLlhNTEh0dHBSZXF1ZXN0fHxmdW5jdGlvbigpe30sZi5YRG9tYWluUmVxdWVzdD1cIndpdGhDcmVkZW50aWFsc1wiaW4gbmV3IGYuWE1MSHR0cFJlcXVlc3Q/Zi5YTUxIdHRwUmVxdWVzdDpuLlhEb21haW5SZXF1ZXN0LGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspdChlW3JdKX0oW1wiZ2V0XCIsXCJwdXRcIixcInBvc3RcIixcInBhdGNoXCIsXCJoZWFkXCIsXCJkZWxldGVcIl0sKGZ1bmN0aW9uKGUpe2ZbXCJkZWxldGVcIj09PWU/XCJkZWxcIjplXT1mdW5jdGlvbih0LHIsbil7cmV0dXJuKHI9cyh0LHIsbikpLm1ldGhvZD1lLnRvVXBwZXJDYXNlKCksYyhyKX19KSl9LGZ1bmN0aW9uKGUsdCxyKXsoZnVuY3Rpb24odCl7dmFyIHI7cj1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp2b2lkIDAhPT10P3Q6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZjp7fSxlLmV4cG9ydHM9cn0pLmNhbGwodGhpcyxyKDQpKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ci5jYWxsKGUpO3JldHVyblwiW29iamVjdCBGdW5jdGlvbl1cIj09PXR8fFwiZnVuY3Rpb25cIj09dHlwZW9mIGUmJlwiW29iamVjdCBSZWdFeHBdXCIhPT10fHxcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiYoZT09PXdpbmRvdy5zZXRUaW1lb3V0fHxlPT09d2luZG93LmFsZXJ0fHxlPT09d2luZG93LmNvbmZpcm18fGU9PT13aW5kb3cucHJvbXB0KX07dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ30sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjI4KSxpPXIoMjQ2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJue307dmFyIHQ9e307cmV0dXJuIGkobihlKS5zcGxpdChcIlxcblwiKSwoZnVuY3Rpb24oZSl7dmFyIHIsaT1lLmluZGV4T2YoXCI6XCIpLG89bihlLnNsaWNlKDAsaSkpLnRvTG93ZXJDYXNlKCksYT1uKGUuc2xpY2UoaSsxKSk7dm9pZCAwPT09dFtvXT90W29dPWE6KHI9dFtvXSxcIltvYmplY3QgQXJyYXldXCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocik/dFtvXS5wdXNoKGEpOnRbb109W3Rbb10sYV0pfSkpLHR9fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigyMSksaT1yKDg4KSxvPXIoOTApLGE9cig5Mikscz1yKDI0NSksZj1uLmNhbGwoRnVuY3Rpb24uY2FsbCxhKCkpO2koZix7Z2V0UG9seWZpbGw6YSxpbXBsZW1lbnRhdGlvbjpvLHNoaW06c30pLGUuZXhwb3J0cz1mfSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49XCJGdW5jdGlvbi5wcm90b3R5cGUuYmluZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlIFwiLGk9QXJyYXkucHJvdG90eXBlLnNsaWNlLG89T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0fHxcIltvYmplY3QgRnVuY3Rpb25dXCIhPT1vLmNhbGwodCkpdGhyb3cgbmV3IFR5cGVFcnJvcihuK3QpO2Zvcih2YXIgcixhPWkuY2FsbChhcmd1bWVudHMsMSkscz1mdW5jdGlvbigpe2lmKHRoaXMgaW5zdGFuY2VvZiByKXt2YXIgbj10LmFwcGx5KHRoaXMsYS5jb25jYXQoaS5jYWxsKGFyZ3VtZW50cykpKTtyZXR1cm4gT2JqZWN0KG4pPT09bj9uOnRoaXN9cmV0dXJuIHQuYXBwbHkoZSxhLmNvbmNhdChpLmNhbGwoYXJndW1lbnRzKSkpfSxmPU1hdGgubWF4KDAsdC5sZW5ndGgtYS5sZW5ndGgpLGM9W10sdT0wO3U8Zjt1KyspYy5wdXNoKFwiJFwiK3UpO2lmKHI9RnVuY3Rpb24oXCJiaW5kZXJcIixcInJldHVybiBmdW5jdGlvbiAoXCIrYy5qb2luKFwiLFwiKStcIil7IHJldHVybiBiaW5kZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpOyB9XCIpKHMpLHQucHJvdG90eXBlKXt2YXIgaD1mdW5jdGlvbigpe307aC5wcm90b3R5cGU9dC5wcm90b3R5cGUsci5wcm90b3R5cGU9bmV3IGgsaC5wcm90b3R5cGU9bnVsbH1yZXR1cm4gcn19LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UsaT1yKDg5KSxvPU9iamVjdC5rZXlzLGE9bz9mdW5jdGlvbihlKXtyZXR1cm4gbyhlKX06cigyMzEpLHM9T2JqZWN0LmtleXM7YS5zaGltPWZ1bmN0aW9uKCl7T2JqZWN0LmtleXM/ZnVuY3Rpb24oKXt2YXIgZT1PYmplY3Qua2V5cyhhcmd1bWVudHMpO3JldHVybiBlJiZlLmxlbmd0aD09PWFyZ3VtZW50cy5sZW5ndGh9KDEsMil8fChPYmplY3Qua2V5cz1mdW5jdGlvbihlKXtyZXR1cm4gaShlKT9zKG4uY2FsbChlKSk6cyhlKX0pOk9iamVjdC5rZXlzPWE7cmV0dXJuIE9iamVjdC5rZXlzfHxhfSxlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuO2lmKCFPYmplY3Qua2V5cyl7dmFyIGk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxvPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsYT1yKDg5KSxzPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsZj0hcy5jYWxsKHt0b1N0cmluZzpudWxsfSxcInRvU3RyaW5nXCIpLGM9cy5jYWxsKChmdW5jdGlvbigpe30pLFwicHJvdG90eXBlXCIpLHU9W1widG9TdHJpbmdcIixcInRvTG9jYWxlU3RyaW5nXCIsXCJ2YWx1ZU9mXCIsXCJoYXNPd25Qcm9wZXJ0eVwiLFwiaXNQcm90b3R5cGVPZlwiLFwicHJvcGVydHlJc0VudW1lcmFibGVcIixcImNvbnN0cnVjdG9yXCJdLGg9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb25zdHJ1Y3RvcjtyZXR1cm4gdCYmdC5wcm90b3R5cGU9PT1lfSxsPXskYXBwbGljYXRpb25DYWNoZTohMCwkY29uc29sZTohMCwkZXh0ZXJuYWw6ITAsJGZyYW1lOiEwLCRmcmFtZUVsZW1lbnQ6ITAsJGZyYW1lczohMCwkaW5uZXJIZWlnaHQ6ITAsJGlubmVyV2lkdGg6ITAsJG9ubW96ZnVsbHNjcmVlbmNoYW5nZTohMCwkb25tb3pmdWxsc2NyZWVuZXJyb3I6ITAsJG91dGVySGVpZ2h0OiEwLCRvdXRlcldpZHRoOiEwLCRwYWdlWE9mZnNldDohMCwkcGFnZVlPZmZzZXQ6ITAsJHBhcmVudDohMCwkc2Nyb2xsTGVmdDohMCwkc2Nyb2xsVG9wOiEwLCRzY3JvbGxYOiEwLCRzY3JvbGxZOiEwLCRzZWxmOiEwLCR3ZWJraXRJbmRleGVkREI6ITAsJHdlYmtpdFN0b3JhZ2VJbmZvOiEwLCR3aW5kb3c6ITB9LGQ9ZnVuY3Rpb24oKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93KXJldHVybiExO2Zvcih2YXIgZSBpbiB3aW5kb3cpdHJ5e2lmKCFsW1wiJFwiK2VdJiZpLmNhbGwod2luZG93LGUpJiZudWxsIT09d2luZG93W2VdJiZcIm9iamVjdFwiPT10eXBlb2Ygd2luZG93W2VdKXRyeXtoKHdpbmRvd1tlXSl9Y2F0Y2goZSl7cmV0dXJuITB9fWNhdGNoKGUpe3JldHVybiEwfXJldHVybiExfSgpO249ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbCE9PWUmJlwib2JqZWN0XCI9PXR5cGVvZiBlLHI9XCJbb2JqZWN0IEZ1bmN0aW9uXVwiPT09by5jYWxsKGUpLG49YShlKSxzPXQmJlwiW29iamVjdCBTdHJpbmddXCI9PT1vLmNhbGwoZSksbD1bXTtpZighdCYmIXImJiFuKXRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3Qua2V5cyBjYWxsZWQgb24gYSBub24tb2JqZWN0XCIpO3ZhciBwPWMmJnI7aWYocyYmZS5sZW5ndGg+MCYmIWkuY2FsbChlLDApKWZvcih2YXIgYj0wO2I8ZS5sZW5ndGg7KytiKWwucHVzaChTdHJpbmcoYikpO2lmKG4mJmUubGVuZ3RoPjApZm9yKHZhciB5PTA7eTxlLmxlbmd0aDsrK3kpbC5wdXNoKFN0cmluZyh5KSk7ZWxzZSBmb3IodmFyIGcgaW4gZSlwJiZcInByb3RvdHlwZVwiPT09Z3x8IWkuY2FsbChlLGcpfHxsLnB1c2goU3RyaW5nKGcpKTtpZihmKWZvcih2YXIgdj1mdW5jdGlvbihlKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93fHwhZClyZXR1cm4gaChlKTt0cnl7cmV0dXJuIGgoZSl9Y2F0Y2goZSl7cmV0dXJuITF9fShlKSxtPTA7bTx1Lmxlbmd0aDsrK20pdiYmXCJjb25zdHJ1Y3RvclwiPT09dVttXXx8IWkuY2FsbChlLHVbbV0pfHxsLnB1c2godVttXSk7cmV0dXJuIGx9fWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigyMiksaT1uKFwiJU9iamVjdCVcIiksbz1uKFwiJUV2YWxFcnJvciVcIiksYT1uKFwiJVR5cGVFcnJvciVcIikscz1uKFwiJVN0cmluZyVcIiksZj1uKFwiJURhdGUlXCIpLGM9bihcIiVOdW1iZXIlXCIpLHU9bihcIiVNYXRoLmZsb29yJVwiKSxoPW4oXCIlRGF0ZS5VVEMlXCIpLGw9bihcIiVNYXRoLmFicyVcIiksZD1yKDIzNSkscD1yKDIzNiksYj1yKDIzNykseT1yKDIzOCksZz1yKDIzOSksdj1yKDI0MCksbT1yKDI0MSksXz1yKDkxKSx3PXIoNTApLEU9cigyNDMpLEE9cig0OSksUz1fKFwiRGF0ZS5wcm90b3R5cGUuZ2V0VVRDRnVsbFllYXJcIiksaz17VG9QcmltaXRpdmU6RSxUb0Jvb2xlYW46ZnVuY3Rpb24oZSl7cmV0dXJuISFlfSxUb051bWJlcjpmdW5jdGlvbihlKXtyZXR1cm4rZX0sVG9JbnRlZ2VyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuVG9OdW1iZXIoZSk7cmV0dXJuIGIodCk/MDowIT09dCYmeSh0KT9nKHQpKk1hdGguZmxvb3IoTWF0aC5hYnModCkpOnR9LFRvSW50MzI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuVG9OdW1iZXIoZSk+PjB9LFRvVWludDMyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLlRvTnVtYmVyKGUpPj4+MH0sVG9VaW50MTY6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5Ub051bWJlcihlKTtpZihiKHQpfHwwPT09dHx8IXkodCkpcmV0dXJuIDA7dmFyIHI9Zyh0KSpNYXRoLmZsb29yKE1hdGguYWJzKHQpKTtyZXR1cm4gdihyLDY1NTM2KX0sVG9TdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIHMoZSl9LFRvT2JqZWN0OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLkNoZWNrT2JqZWN0Q29lcmNpYmxlKGUpLGkoZSl9LENoZWNrT2JqZWN0Q29lcmNpYmxlOmZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSl0aHJvdyBuZXcgYSh0fHxcIkNhbm5vdCBjYWxsIG1ldGhvZCBvbiBcIitlKTtyZXR1cm4gZX0sSXNDYWxsYWJsZTp3LFNhbWVWYWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBlPT09dD8wIT09ZXx8MS9lPT0xL3Q6YihlKSYmYih0KX0sVHlwZTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWU/XCJOdWxsXCI6dm9pZCAwPT09ZT9cIlVuZGVmaW5lZFwiOlwiZnVuY3Rpb25cIj09dHlwZW9mIGV8fFwib2JqZWN0XCI9PXR5cGVvZiBlP1wiT2JqZWN0XCI6XCJudW1iZXJcIj09dHlwZW9mIGU/XCJOdW1iZXJcIjpcImJvb2xlYW5cIj09dHlwZW9mIGU/XCJCb29sZWFuXCI6XCJzdHJpbmdcIj09dHlwZW9mIGU/XCJTdHJpbmdcIjp2b2lkIDB9LElzUHJvcGVydHlEZXNjcmlwdG9yOmZ1bmN0aW9uKGUpe3JldHVybiBwKHRoaXMsZSl9LElzQWNjZXNzb3JEZXNjcmlwdG9yOmZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lJiYoZCh0aGlzLFwiUHJvcGVydHkgRGVzY3JpcHRvclwiLFwiRGVzY1wiLGUpLCEoIUEoZSxcIltbR2V0XV1cIikmJiFBKGUsXCJbW1NldF1dXCIpKSl9LElzRGF0YURlc2NyaXB0b3I6ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWUmJihkKHRoaXMsXCJQcm9wZXJ0eSBEZXNjcmlwdG9yXCIsXCJEZXNjXCIsZSksISghQShlLFwiW1tWYWx1ZV1dXCIpJiYhQShlLFwiW1tXcml0YWJsZV1dXCIpKSl9LElzR2VuZXJpY0Rlc2NyaXB0b3I6ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWUmJihkKHRoaXMsXCJQcm9wZXJ0eSBEZXNjcmlwdG9yXCIsXCJEZXNjXCIsZSksIXRoaXMuSXNBY2Nlc3NvckRlc2NyaXB0b3IoZSkmJiF0aGlzLklzRGF0YURlc2NyaXB0b3IoZSkpfSxGcm9tUHJvcGVydHlEZXNjcmlwdG9yOmZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpcmV0dXJuIGU7aWYoZCh0aGlzLFwiUHJvcGVydHkgRGVzY3JpcHRvclwiLFwiRGVzY1wiLGUpLHRoaXMuSXNEYXRhRGVzY3JpcHRvcihlKSlyZXR1cm57dmFsdWU6ZVtcIltbVmFsdWVdXVwiXSx3cml0YWJsZTohIWVbXCJbW1dyaXRhYmxlXV1cIl0sZW51bWVyYWJsZTohIWVbXCJbW0VudW1lcmFibGVdXVwiXSxjb25maWd1cmFibGU6ISFlW1wiW1tDb25maWd1cmFibGVdXVwiXX07aWYodGhpcy5Jc0FjY2Vzc29yRGVzY3JpcHRvcihlKSlyZXR1cm57Z2V0OmVbXCJbW0dldF1dXCJdLHNldDplW1wiW1tTZXRdXVwiXSxlbnVtZXJhYmxlOiEhZVtcIltbRW51bWVyYWJsZV1dXCJdLGNvbmZpZ3VyYWJsZTohIWVbXCJbW0NvbmZpZ3VyYWJsZV1dXCJdfTt0aHJvdyBuZXcgYShcIkZyb21Qcm9wZXJ0eURlc2NyaXB0b3IgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIGZ1bGx5IHBvcHVsYXRlZCBQcm9wZXJ0eSBEZXNjcmlwdG9yXCIpfSxUb1Byb3BlcnR5RGVzY3JpcHRvcjpmdW5jdGlvbihlKXtpZihcIk9iamVjdFwiIT09dGhpcy5UeXBlKGUpKXRocm93IG5ldyBhKFwiVG9Qcm9wZXJ0eURlc2NyaXB0b3IgcmVxdWlyZXMgYW4gb2JqZWN0XCIpO3ZhciB0PXt9O2lmKEEoZSxcImVudW1lcmFibGVcIikmJih0W1wiW1tFbnVtZXJhYmxlXV1cIl09dGhpcy5Ub0Jvb2xlYW4oZS5lbnVtZXJhYmxlKSksQShlLFwiY29uZmlndXJhYmxlXCIpJiYodFtcIltbQ29uZmlndXJhYmxlXV1cIl09dGhpcy5Ub0Jvb2xlYW4oZS5jb25maWd1cmFibGUpKSxBKGUsXCJ2YWx1ZVwiKSYmKHRbXCJbW1ZhbHVlXV1cIl09ZS52YWx1ZSksQShlLFwid3JpdGFibGVcIikmJih0W1wiW1tXcml0YWJsZV1dXCJdPXRoaXMuVG9Cb29sZWFuKGUud3JpdGFibGUpKSxBKGUsXCJnZXRcIikpe3ZhciByPWUuZ2V0O2lmKHZvaWQgMCE9PXImJiF0aGlzLklzQ2FsbGFibGUocikpdGhyb3cgbmV3IFR5cGVFcnJvcihcImdldHRlciBtdXN0IGJlIGEgZnVuY3Rpb25cIik7dFtcIltbR2V0XV1cIl09cn1pZihBKGUsXCJzZXRcIikpe3ZhciBuPWUuc2V0O2lmKHZvaWQgMCE9PW4mJiF0aGlzLklzQ2FsbGFibGUobikpdGhyb3cgbmV3IGEoXCJzZXR0ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uXCIpO3RbXCJbW1NldF1dXCJdPW59aWYoKEEodCxcIltbR2V0XV1cIil8fEEodCxcIltbU2V0XV1cIikpJiYoQSh0LFwiW1tWYWx1ZV1dXCIpfHxBKHQsXCJbW1dyaXRhYmxlXV1cIikpKXRocm93IG5ldyBhKFwiSW52YWxpZCBwcm9wZXJ0eSBkZXNjcmlwdG9yLiBDYW5ub3QgYm90aCBzcGVjaWZ5IGFjY2Vzc29ycyBhbmQgYSB2YWx1ZSBvciB3cml0YWJsZSBhdHRyaWJ1dGVcIik7cmV0dXJuIHR9LFwiQWJzdHJhY3QgRXF1YWxpdHkgQ29tcGFyaXNvblwiOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5UeXBlKGUpLG49dGhpcy5UeXBlKHQpO3JldHVybiByPT09bj9lPT09dDpudWxsPT1lJiZudWxsPT10fHwoXCJOdW1iZXJcIj09PXImJlwiU3RyaW5nXCI9PT1uP3RoaXNbXCJBYnN0cmFjdCBFcXVhbGl0eSBDb21wYXJpc29uXCJdKGUsdGhpcy5Ub051bWJlcih0KSk6XCJTdHJpbmdcIj09PXImJlwiTnVtYmVyXCI9PT1uP3RoaXNbXCJBYnN0cmFjdCBFcXVhbGl0eSBDb21wYXJpc29uXCJdKHRoaXMuVG9OdW1iZXIoZSksdCk6XCJCb29sZWFuXCI9PT1yP3RoaXNbXCJBYnN0cmFjdCBFcXVhbGl0eSBDb21wYXJpc29uXCJdKHRoaXMuVG9OdW1iZXIoZSksdCk6XCJCb29sZWFuXCI9PT1uP3RoaXNbXCJBYnN0cmFjdCBFcXVhbGl0eSBDb21wYXJpc29uXCJdKGUsdGhpcy5Ub051bWJlcih0KSk6XCJTdHJpbmdcIiE9PXImJlwiTnVtYmVyXCIhPT1yfHxcIk9iamVjdFwiIT09bj9cIk9iamVjdFwiPT09ciYmKFwiU3RyaW5nXCI9PT1ufHxcIk51bWJlclwiPT09bikmJnRoaXNbXCJBYnN0cmFjdCBFcXVhbGl0eSBDb21wYXJpc29uXCJdKHRoaXMuVG9QcmltaXRpdmUoZSksdCk6dGhpc1tcIkFic3RyYWN0IEVxdWFsaXR5IENvbXBhcmlzb25cIl0oZSx0aGlzLlRvUHJpbWl0aXZlKHQpKSl9LFwiU3RyaWN0IEVxdWFsaXR5IENvbXBhcmlzb25cIjpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuVHlwZShlKTtyZXR1cm4gcj09PXRoaXMuVHlwZSh0KSYmKFwiVW5kZWZpbmVkXCI9PT1yfHxcIk51bGxcIj09PXJ8fGU9PT10KX0sXCJBYnN0cmFjdCBSZWxhdGlvbmFsIENvbXBhcmlzb25cIjpmdW5jdGlvbihlLHQscil7aWYoXCJCb29sZWFuXCIhPT10aGlzLlR5cGUocikpdGhyb3cgbmV3IGEoXCJBc3NlcnRpb24gZmFpbGVkOiBMZWZ0Rmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIEJvb2xlYW5cIik7dmFyIG4saTtpZihyPyhuPXRoaXMuVG9QcmltaXRpdmUoZSxjKSxpPXRoaXMuVG9QcmltaXRpdmUodCxjKSk6KGk9dGhpcy5Ub1ByaW1pdGl2ZSh0LGMpLG49dGhpcy5Ub1ByaW1pdGl2ZShlLGMpKSwhKFwiU3RyaW5nXCI9PT10aGlzLlR5cGUobikmJlwiU3RyaW5nXCI9PT10aGlzLlR5cGUoaSkpKXt2YXIgbz10aGlzLlRvTnVtYmVyKG4pLHM9dGhpcy5Ub051bWJlcihpKTtpZihiKG8pfHxiKHMpKXJldHVybjtyZXR1cm4oIXkobyl8fCF5KHMpfHxvIT09cykmJigoMCE9PW98fDAhPT1zKSYmKG8hPT0xLzAmJihzPT09MS8wfHxzIT09LTEvMCYmKG89PT0tMS8wfHxvPHMpKSkpfXJldHVybiFtKGksbikmJighIW0obixpKXx8bjxpKX0sbXNGcm9tVGltZTpmdW5jdGlvbihlKXtyZXR1cm4gdihlLDFlMyl9LFNlY0Zyb21UaW1lOmZ1bmN0aW9uKGUpe3JldHVybiB2KHUoZS8xZTMpLDYwKX0sTWluRnJvbVRpbWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHYodShlLzZlNCksNjApfSxIb3VyRnJvbVRpbWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHYodShlLzM2ZTUpLDI0KX0sRGF5OmZ1bmN0aW9uKGUpe3JldHVybiB1KGUvODY0ZTUpfSxUaW1lV2l0aGluRGF5OmZ1bmN0aW9uKGUpe3JldHVybiB2KGUsODY0ZTUpfSxEYXlGcm9tWWVhcjpmdW5jdGlvbihlKXtyZXR1cm4gMzY1KihlLTE5NzApK3UoKGUtMTk2OSkvNCktdSgoZS0xOTAxKS8xMDApK3UoKGUtMTYwMSkvNDAwKX0sVGltZUZyb21ZZWFyOmZ1bmN0aW9uKGUpe3JldHVybiA4NjRlNSp0aGlzLkRheUZyb21ZZWFyKGUpfSxZZWFyRnJvbVRpbWU6ZnVuY3Rpb24oZSl7cmV0dXJuIFMobmV3IGYoZSkpfSxXZWVrRGF5OmZ1bmN0aW9uKGUpe3JldHVybiB2KHRoaXMuRGF5KGUpKzQsNyl9LERheXNJblllYXI6ZnVuY3Rpb24oZSl7cmV0dXJuIDAhPT12KGUsNCk/MzY1OjAhPT12KGUsMTAwKT8zNjY6MCE9PXYoZSw0MDApPzM2NTozNjZ9LEluTGVhcFllYXI6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5EYXlzSW5ZZWFyKHRoaXMuWWVhckZyb21UaW1lKGUpKTtpZigzNjU9PT10KXJldHVybiAwO2lmKDM2Nj09PXQpcmV0dXJuIDE7dGhyb3cgbmV3IG8oXCJBc3NlcnRpb24gZmFpbGVkOiB0aGVyZSBhcmUgbm90IDM2NSBvciAzNjYgZGF5cyBpbiBhIHllYXIsIGdvdDogXCIrdCl9LERheVdpdGhpblllYXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuRGF5KGUpLXRoaXMuRGF5RnJvbVllYXIodGhpcy5ZZWFyRnJvbVRpbWUoZSkpfSxNb250aEZyb21UaW1lOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuRGF5V2l0aGluWWVhcihlKTtpZigwPD10JiZ0PDMxKXJldHVybiAwO3ZhciByPXRoaXMuSW5MZWFwWWVhcihlKTtyZXR1cm4gMzE8PXQmJnQ8NTkrcj8xOjU5K3I8PXQmJnQ8OTArcj8yOjkwK3I8PXQmJnQ8MTIwK3I/MzoxMjArcjw9dCYmdDwxNTErcj80OjE1MStyPD10JiZ0PDE4MStyPzU6MTgxK3I8PXQmJnQ8MjEyK3I/NjoyMTIrcjw9dCYmdDwyNDMrcj83OjI0MytyPD10JiZ0PDI3MytyPzg6MjczK3I8PXQmJnQ8MzA0K3I/OTozMDQrcjw9dCYmdDwzMzQrcj8xMDozMzQrcjw9dCYmdDwzNjUrcj8xMTp2b2lkIDB9LERhdGVGcm9tVGltZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLk1vbnRoRnJvbVRpbWUoZSkscj10aGlzLkRheVdpdGhpblllYXIoZSk7aWYoMD09PXQpcmV0dXJuIHIrMTtpZigxPT09dClyZXR1cm4gci0zMDt2YXIgbj10aGlzLkluTGVhcFllYXIoZSk7aWYoMj09PXQpcmV0dXJuIHItNTgtbjtpZigzPT09dClyZXR1cm4gci04OS1uO2lmKDQ9PT10KXJldHVybiByLTExOS1uO2lmKDU9PT10KXJldHVybiByLTE1MC1uO2lmKDY9PT10KXJldHVybiByLTE4MC1uO2lmKDc9PT10KXJldHVybiByLTIxMS1uO2lmKDg9PT10KXJldHVybiByLTI0Mi1uO2lmKDk9PT10KXJldHVybiByLTI3Mi1uO2lmKDEwPT09dClyZXR1cm4gci0zMDMtbjtpZigxMT09PXQpcmV0dXJuIHItMzMzLW47dGhyb3cgbmV3IG8oXCJBc3NlcnRpb24gZmFpbGVkOiBNb250aEZyb21UaW1lIHJldHVybmVkIGFuIGltcG9zc2libGUgdmFsdWU6IFwiK3QpfSxNYWtlRGF5OmZ1bmN0aW9uKGUsdCxyKXtpZigheShlKXx8IXkodCl8fCF5KHIpKXJldHVybiBOYU47dmFyIG49dGhpcy5Ub0ludGVnZXIoZSksaT10aGlzLlRvSW50ZWdlcih0KSxvPXRoaXMuVG9JbnRlZ2VyKHIpLGE9bit1KGkvMTIpLHM9dihpLDEyKSxmPWgoYSxzLDEpO3JldHVybiB0aGlzLlllYXJGcm9tVGltZShmKSE9PWF8fHRoaXMuTW9udGhGcm9tVGltZShmKSE9PXN8fDEhPT10aGlzLkRhdGVGcm9tVGltZShmKT9OYU46dGhpcy5EYXkoZikrby0xfSxNYWtlRGF0ZTpmdW5jdGlvbihlLHQpe3JldHVybiB5KGUpJiZ5KHQpPzg2NGU1KmUrdDpOYU59LE1ha2VUaW1lOmZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiB5KGUpJiZ5KHQpJiZ5KHIpJiZ5KG4pPzM2ZTUqdGhpcy5Ub0ludGVnZXIoZSkrNmU0KnRoaXMuVG9JbnRlZ2VyKHQpKzFlMyp0aGlzLlRvSW50ZWdlcihyKSt0aGlzLlRvSW50ZWdlcihuKTpOYU59LFRpbWVDbGlwOmZ1bmN0aW9uKGUpe3JldHVybiF5KGUpfHxsKGUpPjg2NGUxMz9OYU46YyhuZXcgZih0aGlzLlRvTnVtYmVyKGUpKSl9LG1vZHVsbzpmdW5jdGlvbihlLHQpe3JldHVybiB2KGUsdCl9fTtlLmV4cG9ydHM9a30sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbih0KXt2YXIgbj10LlN5bWJvbCxpPXIoMjM0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBuJiYoXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiYoXCJzeW1ib2xcIj09dHlwZW9mIG4oXCJmb29cIikmJihcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sKFwiYmFyXCIpJiZpKCkpKSl9fSkuY2FsbCh0aGlzLHIoNCkpfSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgU3ltYm9sfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXJldHVybiExO2lmKFwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3IpcmV0dXJuITA7dmFyIGU9e30sdD1TeW1ib2woXCJ0ZXN0XCIpLHI9T2JqZWN0KHQpO2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXJldHVybiExO2lmKFwiW29iamVjdCBTeW1ib2xdXCIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkpcmV0dXJuITE7aWYoXCJbb2JqZWN0IFN5bWJvbF1cIiE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKSlyZXR1cm4hMTtmb3IodCBpbiBlW3RdPTQyLGUpcmV0dXJuITE7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmtleXMmJjAhPT1PYmplY3Qua2V5cyhlKS5sZW5ndGgpcmV0dXJuITE7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMmJjAhPT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKS5sZW5ndGgpcmV0dXJuITE7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtpZigxIT09bi5sZW5ndGh8fG5bMF0hPT10KXJldHVybiExO2lmKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSx0KSlyZXR1cm4hMTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCk7aWYoNDIhPT1pLnZhbHVlfHwhMCE9PWkuZW51bWVyYWJsZSlyZXR1cm4hMX1yZXR1cm4hMH19LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDIyKSxpPW4oXCIlVHlwZUVycm9yJVwiKSxvPW4oXCIlU3ludGF4RXJyb3IlXCIpLGE9cig0OSkscz17XCJQcm9wZXJ0eSBEZXNjcmlwdG9yXCI6ZnVuY3Rpb24oZSx0KXtpZihcIk9iamVjdFwiIT09ZS5UeXBlKHQpKXJldHVybiExO3ZhciByPXtcIltbQ29uZmlndXJhYmxlXV1cIjohMCxcIltbRW51bWVyYWJsZV1dXCI6ITAsXCJbW0dldF1dXCI6ITAsXCJbW1NldF1dXCI6ITAsXCJbW1ZhbHVlXV1cIjohMCxcIltbV3JpdGFibGVdXVwiOiEwfTtmb3IodmFyIG4gaW4gdClpZihhKHQsbikmJiFyW25dKXJldHVybiExO3ZhciBvPWEodCxcIltbVmFsdWVdXVwiKSxzPWEodCxcIltbR2V0XV1cIil8fGEodCxcIltbU2V0XV1cIik7aWYobyYmcyl0aHJvdyBuZXcgaShcIlByb3BlcnR5IERlc2NyaXB0b3JzIG1heSBub3QgYmUgYm90aCBhY2Nlc3NvciBhbmQgZGF0YSBkZXNjcmlwdG9yc1wiKTtyZXR1cm4hMH19O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixuKXt2YXIgYT1zW3RdO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGEpdGhyb3cgbmV3IG8oXCJ1bmtub3duIHJlY29yZCB0eXBlOiBcIit0KTtpZighYShlLG4pKXRocm93IG5ldyBpKHIrXCIgbXVzdCBiZSBhIFwiK3QpfX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMjIpLGk9cig0OSksbz1uKFwiJVR5cGVFcnJvciVcIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYoXCJPYmplY3RcIiE9PWUuVHlwZSh0KSlyZXR1cm4hMTt2YXIgcj17XCJbW0NvbmZpZ3VyYWJsZV1dXCI6ITAsXCJbW0VudW1lcmFibGVdXVwiOiEwLFwiW1tHZXRdXVwiOiEwLFwiW1tTZXRdXVwiOiEwLFwiW1tWYWx1ZV1dXCI6ITAsXCJbW1dyaXRhYmxlXV1cIjohMH07Zm9yKHZhciBuIGluIHQpaWYoaSh0LG4pJiYhcltuXSlyZXR1cm4hMTtpZihlLklzRGF0YURlc2NyaXB0b3IodCkmJmUuSXNBY2Nlc3NvckRlc2NyaXB0b3IodCkpdGhyb3cgbmV3IG8oXCJQcm9wZXJ0eSBEZXNjcmlwdG9ycyBtYXkgbm90IGJlIGJvdGggYWNjZXNzb3IgYW5kIGRhdGEgZGVzY3JpcHRvcnNcIik7cmV0dXJuITB9fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPU51bWJlci5pc05hTnx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPWV9fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49TnVtYmVyLmlzTmFOfHxmdW5jdGlvbihlKXtyZXR1cm4gZSE9ZX07ZS5leHBvcnRzPU51bWJlci5pc0Zpbml0ZXx8ZnVuY3Rpb24oZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGUmJiFuKGUpJiZlIT09MS8wJiZlIT09LTEvMH19LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PTA/MTotMX19LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1lJXQ7cmV0dXJuIE1hdGguZmxvb3Iocj49MD9yOnIrdCl9fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cig5MSkoXCJTdHJpbmcucHJvdG90eXBlLnNsaWNlXCIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBlPT09dHx8IShlLmxlbmd0aD50Lmxlbmd0aCkmJm4odCwwLGUubGVuZ3RoKT09PWV9fSxmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigyMSksaT1yKDIyKShcIiVGdW5jdGlvbiVcIiksbz1pLmFwcGx5LGE9aS5jYWxsO2UuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiBuLmFwcGx5KGEsYXJndW1lbnRzKX0sZS5leHBvcnRzLmFwcGx5PWZ1bmN0aW9uKCl7cmV0dXJuIG4uYXBwbHkobyxhcmd1bWVudHMpfX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsaT1yKDI0NCksbz1yKDUwKSxhPWZ1bmN0aW9uKGUpe3ZhciB0O2lmKCh0PWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06XCJbb2JqZWN0IERhdGVdXCI9PT1uLmNhbGwoZSk/U3RyaW5nOk51bWJlcik9PT1TdHJpbmd8fHQ9PT1OdW1iZXIpe3ZhciByLGEscz10PT09U3RyaW5nP1tcInRvU3RyaW5nXCIsXCJ2YWx1ZU9mXCJdOltcInZhbHVlT2ZcIixcInRvU3RyaW5nXCJdO2ZvcihhPTA7YTxzLmxlbmd0aDsrK2EpaWYobyhlW3NbYV1dKSYmKHI9ZVtzW2FdXSgpLGkocikpKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoXCJObyBkZWZhdWx0IHZhbHVlXCIpfXRocm93IG5ldyBUeXBlRXJyb3IoXCJpbnZhbGlkIFtbRGVmYXVsdFZhbHVlXV0gaGludCBzdXBwbGllZFwiKX07ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBpKGUpP2U6YXJndW1lbnRzLmxlbmd0aD4xP2EoZSxhcmd1bWVudHNbMV0pOmEoZSl9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWV8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJlwib2JqZWN0XCIhPXR5cGVvZiBlfX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoODgpLGk9cig5Mik7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIGU9aSgpO3JldHVybiBuKFN0cmluZy5wcm90b3R5cGUse3RyaW06ZX0se3RyaW06ZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nLnByb3RvdHlwZS50cmltIT09ZX19KSxlfX0sZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoNTApLGk9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxvPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksYT1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPTAsaT1lLmxlbmd0aDtuPGk7bisrKW8uY2FsbChlLG4pJiYobnVsbD09cj90KGVbbl0sbixlKTp0LmNhbGwocixlW25dLG4sZSkpfSxzPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49MCxpPWUubGVuZ3RoO248aTtuKyspbnVsbD09cj90KGUuY2hhckF0KG4pLG4sZSk6dC5jYWxsKHIsZS5jaGFyQXQobiksbixlKX0sZj1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBuIGluIGUpby5jYWxsKGUsbikmJihudWxsPT1yP3QoZVtuXSxuLGUpOnQuY2FsbChyLGVbbl0sbixlKSl9O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7aWYoIW4odCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIml0ZXJhdG9yIG11c3QgYmUgYSBmdW5jdGlvblwiKTt2YXIgbzthcmd1bWVudHMubGVuZ3RoPj0zJiYobz1yKSxcIltvYmplY3QgQXJyYXldXCI9PT1pLmNhbGwoZSk/YShlLHQsbyk6XCJzdHJpbmdcIj09dHlwZW9mIGU/cyhlLHQsbyk6ZihlLHQsbyl9fSxmdW5jdGlvbihlLHQpe30sZnVuY3Rpb24oZSx0LHIpe2UuZXhwb3J0cz1yKDI0OSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDApLGk9ZnVuY3Rpb24oZSx0LHIpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGkpKXJldHVybiBuZXcgaShlLHQscik7dGhpcy5tZXNzYWdlPWUsdGhpcy5jb2RlPXQsdm9pZCAwIT09ciYmKHRoaXMuZGF0YT1yKX07bihpLEVycm9yKTt2YXIgbz1mdW5jdGlvbigpe2lmKCEodGhpcyBpbnN0YW5jZW9mIG8pKXJldHVybiBuZXcgbztpLmNhbGwodGhpcyxcIlBhcnNlIGVycm9yXCIsLTMyNzAwKX07bihvLGkpO3ZhciBhPWZ1bmN0aW9uKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgYSkpcmV0dXJuIG5ldyBhO2kuY2FsbCh0aGlzLFwiSW52YWxpZCBSZXF1ZXN0XCIsLTMyNjAwKX07bihhLGkpO3ZhciBzPWZ1bmN0aW9uKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgcykpcmV0dXJuIG5ldyBzO2kuY2FsbCh0aGlzLFwiTWV0aG9kIG5vdCBmb3VuZFwiLC0zMjYwMSl9O24ocyxpKTt2YXIgZj1mdW5jdGlvbigpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGYpKXJldHVybiBuZXcgZjtpLmNhbGwodGhpcyxcIkludmFsaWQgcGFyYW1zXCIsLTMyNjAyKX07bihmLGkpO3ZhciBjPWZ1bmN0aW9uKGUpe3ZhciB0O2lmKCEodGhpcyBpbnN0YW5jZW9mIGMpKXJldHVybiBuZXcgYyhlKTt0PWUmJmUubWVzc2FnZT9lLm1lc3NhZ2U6XCJJbnRlcm5hbCBlcnJvclwiLGkuY2FsbCh0aGlzLHQsLTMyNjAzKX07bihjLGkpO3ZhciB1PWZ1bmN0aW9uKGUpe2lmKGU8LTMyMDk5fHxlPi0zMmUzKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZXJyb3IgY29kZVwiKTtpZighKHRoaXMgaW5zdGFuY2VvZiB1KSlyZXR1cm4gbmV3IHUoZSk7aS5jYWxsKHRoaXMsXCJTZXJ2ZXIgZXJyb3JcIixlKX07bih1LGkpLGkuUGFyc2VFcnJvcj1vLGkuSW52YWxpZFJlcXVlc3Q9YSxpLk1ldGhvZE5vdEZvdW5kPXMsaS5JbnZhbGlkUGFyYW1zPWYsaS5JbnRlcm5hbEVycm9yPWMsaS5TZXJ2ZXJFcnJvcj11LGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQscil7Y29uc3Qgbj1yKDQwKSxpPXIoODcpLG89cig0NiksYT1yKDg2KSx7dW5zYWZlUmFuZG9tQnl0ZXM6cyxpbmNyZW1lbnRIZXhJbnQ6Zn09cigyMCksYz1yKDQ4KTtmdW5jdGlvbiB1KGUpe3JldHVybntoYXNoOmUuaGFzaCxwYXJlbnRIYXNoOmUucGFyZW50SGFzaCxzaGEzVW5jbGVzOmUuc2hhM1VuY2xlcyxtaW5lcjplLm1pbmVyLHN0YXRlUm9vdDplLnN0YXRlUm9vdCx0cmFuc2FjdGlvbnNSb290OmUudHJhbnNhY3Rpb25zUm9vdCxyZWNlaXB0c1Jvb3Q6ZS5yZWNlaXB0c1Jvb3QsbG9nc0Jsb29tOmUubG9nc0Jsb29tLGRpZmZpY3VsdHk6ZS5kaWZmaWN1bHR5LG51bWJlcjplLm51bWJlcixnYXNMaW1pdDplLmdhc0xpbWl0LGdhc1VzZWQ6ZS5nYXNVc2VkLG5vbmNlOmUubm9uY2UsbWl4SGFzaDplLm1peEhhc2gsdGltZXN0YW1wOmUudGltZXN0YW1wLGV4dHJhRGF0YTplLmV4dHJhRGF0YX19ZS5leHBvcnRzPWZ1bmN0aW9uKHtibG9ja1RyYWNrZXI6ZSxwcm92aWRlcjp0fSl7Y29uc3Qgcj17fSxoPWEoe2Jsb2NrVHJhY2tlcjplLHByb3ZpZGVyOnR9KSxsPW5ldyBuLGQ9aSh7ZXRoX3N1YnNjcmliZTpvKChhc3luYyBmdW5jdGlvbihuLGkpe2NvbnN0IG89bi5wYXJhbXNbMF0sYT1zKDE2KTtsZXQgbDtzd2l0Y2gobyl7Y2FzZVwibmV3SGVhZHNcIjpsPWZ1bmN0aW9uKHtzdWJJZDpyfSl7Y29uc3Qgbj17dHlwZTpvLGRlc3Ryb3k6YXN5bmMoKT0+e2UucmVtb3ZlTGlzdGVuZXIoXCJzeW5jXCIsbi51cGRhdGUpfSx1cGRhdGU6YXN5bmMoe29sZEJsb2NrOmUsbmV3QmxvY2s6bn0pPT57Y29uc3QgaT1uLG89ZihlKTsoYXdhaXQgYyh7cHJvdmlkZXI6dCxmcm9tQmxvY2s6byx0b0Jsb2NrOml9KSkubWFwKHUpLmZvckVhY2goZT0+e3AocixlKX0pfX07cmV0dXJuIGUub24oXCJzeW5jXCIsbi51cGRhdGUpLG59KHtzdWJJZDphfSk7YnJlYWs7Y2FzZVwibG9nc1wiOmNvbnN0IHI9bi5wYXJhbXNbMV0saT1hd2FpdCBoLm5ld0xvZ0ZpbHRlcihyKTtsPWZ1bmN0aW9uKHtzdWJJZDplLGZpbHRlcjp0fSl7cmV0dXJuIHQub24oXCJ1cGRhdGVcIix0PT5wKGUsdCkpLHt0eXBlOm8sZGVzdHJveTphc3luYygpPT5hd2FpdCBoLnVuaW5zdGFsbEZpbHRlcih0LmlkSGV4KX19KHtzdWJJZDphLGZpbHRlcjppfSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFN1YnNjcmlwdGlvbk1hbmFnZXIgLSB1bnN1cHBvcnRlZCBzdWJzY3JpcHRpb24gdHlwZSBcIiR7b31cImApfXJldHVybiByW2FdPWwsdm9pZChpLnJlc3VsdD1hKX0pKSxldGhfdW5zdWJzY3JpYmU6bygoYXN5bmMgZnVuY3Rpb24oZSx0KXtjb25zdCBuPWUucGFyYW1zWzBdLGk9cltuXTtpZighaSlyZXR1cm4gdm9pZCh0LnJlc3VsdD0hMSk7ZGVsZXRlIHJbbl0sYXdhaXQgaS5kZXN0cm95KCksdC5yZXN1bHQ9ITB9KSl9KTtyZXR1cm57ZXZlbnRzOmwsbWlkZGxld2FyZTpkfTtmdW5jdGlvbiBwKGUsdCl7bC5lbWl0KFwibm90aWZpY2F0aW9uXCIse2pzb25ycGM6XCIyLjBcIixtZXRob2Q6XCJldGhfc3Vic2NyaXB0aW9uXCIscGFyYW1zOntzdWJzY3JpcHRpb246ZSxyZXN1bHQ6dH19KX19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig5MyksaT1yKDI1NCksbz1yKDk1KSxhPXIoMjU1KTtlLmV4cG9ydHMuQmFja29mZj1uLGUuZXhwb3J0cy5GdW5jdGlvbkNhbGw9YSxlLmV4cG9ydHMuRmlib25hY2NpU3RyYXRlZ3k9byxlLmV4cG9ydHMuRXhwb25lbnRpYWxTdHJhdGVneT1pLGUuZXhwb3J0cy5maWJvbmFjY2k9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBuKG5ldyBvKGUpKX0sZS5leHBvcnRzLmV4cG9uZW50aWFsPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbihuZXcgaShlKSl9LGUuZXhwb3J0cy5jYWxsPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO3JldHVybiBlPW5bMF0sdD1uLnNsaWNlKDEsbi5sZW5ndGgtMSkscj1uW24ubGVuZ3RoLTFdLG5ldyBhKGUsdCxyKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDIpLGk9ZS5leHBvcnRzPXIoMjUzKTtmdW5jdGlvbiBvKGUsdCxyLGkpe3I9cnx8XCJcIjt2YXIgbz1uZXcgZShuLmZvcm1hdC5hcHBseSh0aGlzLFtyXS5jb25jYXQoaSkpKTt0aHJvdyBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShvLHQpLG99ZnVuY3Rpb24gYShlLHQscil7byhpLklsbGVnYWxBcmd1bWVudEVycm9yLGUsdCxyKX1mdW5jdGlvbiBzKGUsdCxyKXtvKGkuSWxsZWdhbFN0YXRlRXJyb3IsZSx0LHIpfWZ1bmN0aW9uIGYoZSl7dmFyIHQ9dHlwZW9mIGU7aWYoXCJvYmplY3RcIj09dCl7aWYoIWUpcmV0dXJuXCJudWxsXCI7aWYoZSBpbnN0YW5jZW9mIEFycmF5KXJldHVyblwiYXJyYXlcIn1yZXR1cm4gdH1mdW5jdGlvbiBjKGUpe3JldHVybiBmdW5jdGlvbih0LHIpe3ZhciBuPWYodCk7aWYobj09ZSlyZXR1cm4gdDthKGFyZ3VtZW50cy5jYWxsZWUscnx8J0V4cGVjdGVkIFwiJytlKydcIiBidXQgZ290IFwiJytuKydcIi4nLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSl9fWUuZXhwb3J0cy5jaGVja0FyZ3VtZW50PWZ1bmN0aW9uKGUsdCl7ZXx8YShhcmd1bWVudHMuY2FsbGVlLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKX0sZS5leHBvcnRzLmNoZWNrU3RhdGU9ZnVuY3Rpb24oZSx0KXtlfHxzKGFyZ3VtZW50cy5jYWxsZWUsdCxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMikpfSxlLmV4cG9ydHMuY2hlY2tJc0RlZj1mdW5jdGlvbihlLHQpe2lmKHZvaWQgMCE9PWUpcmV0dXJuIGU7YShhcmd1bWVudHMuY2FsbGVlLHR8fFwiRXhwZWN0ZWQgdmFsdWUgdG8gYmUgZGVmaW5lZCBidXQgd2FzIHVuZGVmaW5lZC5cIixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMikpfSxlLmV4cG9ydHMuY2hlY2tJc0RlZkFuZE5vdE51bGw9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT1lKXJldHVybiBlO2EoYXJndW1lbnRzLmNhbGxlZSx0fHwnRXhwZWN0ZWQgdmFsdWUgdG8gYmUgZGVmaW5lZCBhbmQgbm90IG51bGwgYnV0IGdvdCBcIicrZihlKSsnXCIuJyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMikpfSxlLmV4cG9ydHMuY2hlY2tJc1N0cmluZz1jKFwic3RyaW5nXCIpLGUuZXhwb3J0cy5jaGVja0lzQXJyYXk9YyhcImFycmF5XCIpLGUuZXhwb3J0cy5jaGVja0lzTnVtYmVyPWMoXCJudW1iZXJcIiksZS5leHBvcnRzLmNoZWNrSXNCb29sZWFuPWMoXCJib29sZWFuXCIpLGUuZXhwb3J0cy5jaGVja0lzRnVuY3Rpb249YyhcImZ1bmN0aW9uXCIpLGUuZXhwb3J0cy5jaGVja0lzT2JqZWN0PWMoXCJvYmplY3RcIil9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDIpO2Z1bmN0aW9uIGkoZSl7RXJyb3IuY2FsbCh0aGlzLGUpLHRoaXMubWVzc2FnZT1lfWZ1bmN0aW9uIG8oZSl7RXJyb3IuY2FsbCh0aGlzLGUpLHRoaXMubWVzc2FnZT1lfW4uaW5oZXJpdHMoaSxFcnJvciksaS5wcm90b3R5cGUubmFtZT1cIklsbGVnYWxBcmd1bWVudEVycm9yXCIsbi5pbmhlcml0cyhvLEVycm9yKSxvLnByb3RvdHlwZS5uYW1lPVwiSWxsZWdhbFN0YXRlRXJyb3JcIixlLmV4cG9ydHMuSWxsZWdhbFN0YXRlRXJyb3I9byxlLmV4cG9ydHMuSWxsZWdhbEFyZ3VtZW50RXJyb3I9aX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMiksaT1yKDUxKSxvPXIoOTQpO2Z1bmN0aW9uIGEoZSl7by5jYWxsKHRoaXMsZSksdGhpcy5iYWNrb2ZmRGVsYXlfPTAsdGhpcy5uZXh0QmFja29mZkRlbGF5Xz10aGlzLmdldEluaXRpYWxEZWxheSgpLHRoaXMuZmFjdG9yXz1hLkRFRkFVTFRfRkFDVE9SLGUmJnZvaWQgMCE9PWUuZmFjdG9yJiYoaS5jaGVja0FyZ3VtZW50KGUuZmFjdG9yPjEsXCJFeHBvbmVudGlhbCBmYWN0b3Igc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAxIGJ1dCBnb3QgJXMuXCIsZS5mYWN0b3IpLHRoaXMuZmFjdG9yXz1lLmZhY3Rvcil9bi5pbmhlcml0cyhhLG8pLGEuREVGQVVMVF9GQUNUT1I9MixhLnByb3RvdHlwZS5uZXh0Xz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJhY2tvZmZEZWxheV89TWF0aC5taW4odGhpcy5uZXh0QmFja29mZkRlbGF5Xyx0aGlzLmdldE1heERlbGF5KCkpLHRoaXMubmV4dEJhY2tvZmZEZWxheV89dGhpcy5iYWNrb2ZmRGVsYXlfKnRoaXMuZmFjdG9yXyx0aGlzLmJhY2tvZmZEZWxheV99LGEucHJvdG90eXBlLnJlc2V0Xz1mdW5jdGlvbigpe3RoaXMuYmFja29mZkRlbGF5Xz0wLHRoaXMubmV4dEJhY2tvZmZEZWxheV89dGhpcy5nZXRJbml0aWFsRGVsYXkoKX0sZS5leHBvcnRzPWF9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDYpLGk9cig1MSksbz1yKDIpLGE9cig5Mykscz1yKDk1KTtmdW5jdGlvbiBmKGUsdCxyKXtuLkV2ZW50RW1pdHRlci5jYWxsKHRoaXMpLGkuY2hlY2tJc0Z1bmN0aW9uKGUsXCJFeHBlY3RlZCBmbiB0byBiZSBhIGZ1bmN0aW9uLlwiKSxpLmNoZWNrSXNBcnJheSh0LFwiRXhwZWN0ZWQgYXJncyB0byBiZSBhbiBhcnJheS5cIiksaS5jaGVja0lzRnVuY3Rpb24ocixcIkV4cGVjdGVkIGNhbGxiYWNrIHRvIGJlIGEgZnVuY3Rpb24uXCIpLHRoaXMuZnVuY3Rpb25fPWUsdGhpcy5hcmd1bWVudHNfPXQsdGhpcy5jYWxsYmFja189cix0aGlzLmxhc3RSZXN1bHRfPVtdLHRoaXMubnVtUmV0cmllc189MCx0aGlzLmJhY2tvZmZfPW51bGwsdGhpcy5zdHJhdGVneV89bnVsbCx0aGlzLmZhaWxBZnRlcl89LTEsdGhpcy5yZXRyeVByZWRpY2F0ZV89Zi5ERUZBVUxUX1JFVFJZX1BSRURJQ0FURV8sdGhpcy5zdGF0ZV89Zi5TdGF0ZV8uUEVORElOR31vLmluaGVyaXRzKGYsbi5FdmVudEVtaXR0ZXIpLGYuU3RhdGVfPXtQRU5ESU5HOjAsUlVOTklORzoxLENPTVBMRVRFRDoyLEFCT1JURUQ6M30sZi5ERUZBVUxUX1JFVFJZX1BSRURJQ0FURV89ZnVuY3Rpb24oZSl7cmV0dXJuITB9LGYucHJvdG90eXBlLmlzUGVuZGluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXRlXz09Zi5TdGF0ZV8uUEVORElOR30sZi5wcm90b3R5cGUuaXNSdW5uaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhdGVfPT1mLlN0YXRlXy5SVU5OSU5HfSxmLnByb3RvdHlwZS5pc0NvbXBsZXRlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXRlXz09Zi5TdGF0ZV8uQ09NUExFVEVEfSxmLnByb3RvdHlwZS5pc0Fib3J0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGF0ZV89PWYuU3RhdGVfLkFCT1JURUR9LGYucHJvdG90eXBlLnNldFN0cmF0ZWd5PWZ1bmN0aW9uKGUpe3JldHVybiBpLmNoZWNrU3RhdGUodGhpcy5pc1BlbmRpbmcoKSxcIkZ1bmN0aW9uQ2FsbCBpbiBwcm9ncmVzcy5cIiksdGhpcy5zdHJhdGVneV89ZSx0aGlzfSxmLnByb3RvdHlwZS5yZXRyeUlmPWZ1bmN0aW9uKGUpe3JldHVybiBpLmNoZWNrU3RhdGUodGhpcy5pc1BlbmRpbmcoKSxcIkZ1bmN0aW9uQ2FsbCBpbiBwcm9ncmVzcy5cIiksdGhpcy5yZXRyeVByZWRpY2F0ZV89ZSx0aGlzfSxmLnByb3RvdHlwZS5nZXRMYXN0UmVzdWx0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGFzdFJlc3VsdF8uY29uY2F0KCl9LGYucHJvdG90eXBlLmdldE51bVJldHJpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5udW1SZXRyaWVzX30sZi5wcm90b3R5cGUuZmFpbEFmdGVyPWZ1bmN0aW9uKGUpe3JldHVybiBpLmNoZWNrU3RhdGUodGhpcy5pc1BlbmRpbmcoKSxcIkZ1bmN0aW9uQ2FsbCBpbiBwcm9ncmVzcy5cIiksdGhpcy5mYWlsQWZ0ZXJfPWUsdGhpc30sZi5wcm90b3R5cGUuYWJvcnQ9ZnVuY3Rpb24oKXt0aGlzLmlzQ29tcGxldGVkKCl8fHRoaXMuaXNBYm9ydGVkKCl8fCh0aGlzLmlzUnVubmluZygpJiZ0aGlzLmJhY2tvZmZfLnJlc2V0KCksdGhpcy5zdGF0ZV89Zi5TdGF0ZV8uQUJPUlRFRCx0aGlzLmxhc3RSZXN1bHRfPVtuZXcgRXJyb3IoXCJCYWNrb2ZmIGFib3J0ZWQuXCIpXSx0aGlzLmVtaXQoXCJhYm9ydFwiKSx0aGlzLmRvQ2FsbGJhY2tfKCkpfSxmLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbihlKXtpLmNoZWNrU3RhdGUoIXRoaXMuaXNBYm9ydGVkKCksXCJGdW5jdGlvbkNhbGwgaXMgYWJvcnRlZC5cIiksaS5jaGVja1N0YXRlKHRoaXMuaXNQZW5kaW5nKCksXCJGdW5jdGlvbkNhbGwgYWxyZWFkeSBzdGFydGVkLlwiKTt2YXIgdD10aGlzLnN0cmF0ZWd5X3x8bmV3IHM7dGhpcy5iYWNrb2ZmXz1lP2UodCk6bmV3IGEodCksdGhpcy5iYWNrb2ZmXy5vbihcInJlYWR5XCIsdGhpcy5kb0NhbGxfLmJpbmQodGhpcywhMCkpLHRoaXMuYmFja29mZl8ub24oXCJmYWlsXCIsdGhpcy5kb0NhbGxiYWNrXy5iaW5kKHRoaXMpKSx0aGlzLmJhY2tvZmZfLm9uKFwiYmFja29mZlwiLHRoaXMuaGFuZGxlQmFja29mZl8uYmluZCh0aGlzKSksdGhpcy5mYWlsQWZ0ZXJfPjAmJnRoaXMuYmFja29mZl8uZmFpbEFmdGVyKHRoaXMuZmFpbEFmdGVyXyksdGhpcy5zdGF0ZV89Zi5TdGF0ZV8uUlVOTklORyx0aGlzLmRvQ2FsbF8oITEpfSxmLnByb3RvdHlwZS5kb0NhbGxfPWZ1bmN0aW9uKGUpe2UmJnRoaXMubnVtUmV0cmllc18rKzt2YXIgdD1bXCJjYWxsXCJdLmNvbmNhdCh0aGlzLmFyZ3VtZW50c18pO24uRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5lbWl0LmFwcGx5KHRoaXMsdCk7dmFyIHI9dGhpcy5oYW5kbGVGdW5jdGlvbkNhbGxiYWNrXy5iaW5kKHRoaXMpO3RoaXMuZnVuY3Rpb25fLmFwcGx5KG51bGwsdGhpcy5hcmd1bWVudHNfLmNvbmNhdChyKSl9LGYucHJvdG90eXBlLmRvQ2FsbGJhY2tfPWZ1bmN0aW9uKCl7dGhpcy5jYWxsYmFja18uYXBwbHkobnVsbCx0aGlzLmxhc3RSZXN1bHRfKX0sZi5wcm90b3R5cGUuaGFuZGxlRnVuY3Rpb25DYWxsYmFja189ZnVuY3Rpb24oKXtpZighdGhpcy5pc0Fib3J0ZWQoKSl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTt0aGlzLmxhc3RSZXN1bHRfPWUsbi5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmVtaXQuYXBwbHkodGhpcyxbXCJjYWxsYmFja1wiXS5jb25jYXQoZSkpO3ZhciB0PWVbMF07dCYmdGhpcy5yZXRyeVByZWRpY2F0ZV8odCk/dGhpcy5iYWNrb2ZmXy5iYWNrb2ZmKHQpOih0aGlzLnN0YXRlXz1mLlN0YXRlXy5DT01QTEVURUQsdGhpcy5kb0NhbGxiYWNrXygpKX19LGYucHJvdG90eXBlLmhhbmRsZUJhY2tvZmZfPWZ1bmN0aW9uKGUsdCxyKXt0aGlzLmVtaXQoXCJiYWNrb2ZmXCIsZSx0LHIpfSxlLmV4cG9ydHM9Zn0sZnVuY3Rpb24oZSx0KXt9LGZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtyLnIodCk7dmFyIG4saT1yKDk2KSxvPXIubihpKSxhPXIoOTcpLHM9ci5uKGEpLGY9cig5OCksYz1yLm4oZiksdT1yKDk5KSxoPXIubih1KSxsPXIoMTAwKSxkPXIubihsKSxwPXIoMTAxKSxiPXIubihwKSx5PXIoMTAyKSxnPXIubih5KSx2PXIoMTAzKSxtPXIubih2KSxfPXIoMTA0KSx3PXIubihfKSxFPXIoMTA1KSxBPXIubihFKSxTPVwiaHR0cHM6Ly9hcHAuc3F1YXJlbGluay5jb21cIixrPShuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKG49T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShyKSYmKGVbcl09dFtyXSl9KShlLHQpfSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9bihlLHQpLGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KHIucHJvdG90eXBlPXQucHJvdG90eXBlLG5ldyByKX0pLHg9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0KXt2YXIgcj1lLmNhbGwodGhpcyx0KXx8dGhpcztyZXR1cm4gci5uYW1lPVwiW1NxdWFyZWxpbmsgRXJyb3JdXCIscn1yZXR1cm4gayh0LGUpLHR9KEVycm9yKSxJPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMudXJsPWUsdGhpcy5wYXJhbXM9dCx0aGlzLm9wZW49ITAsdGhpcy5fY3JlYXRlSWZyYW1lKCksdGhpcy5fYWRkQ2xvc2VMaXN0ZW5lcnMoKSx0aGlzLl9hZGRNZXNzYWdlTGlzdGVuZXJzKCl9cmV0dXJuIGUucHJvdG90eXBlLmNsb3NlPWZ1bmN0aW9uKCl7dGhpcy5vcGVuJiYodGhpcy5jb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmNvbnRhaW5lciksdGhpcy5vbkNsb3NlZCYmdGhpcy5vbkNsb3NlZCh0aGlzLmVycm9yKSx0aGlzLm9wZW49ITEpfSxlLnByb3RvdHlwZS5fYWRkQ2xvc2VMaXN0ZW5lcnM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLChmdW5jdGlvbigpe2UuY2xvc2UoKX0pKTt2YXIgdD10aGlzO2RvY3VtZW50Lm9ua2V5ZG93bj1mdW5jdGlvbihlKXsyNz09KGU9ZXx8d2luZG93LmV2ZW50KS5rZXlDb2RlJiZ0Lm9wZW4mJnQuY2xvc2UoKX19LGUucHJvdG90eXBlLl9hZGRNZXNzYWdlTGlzdGVuZXJzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMscj0hMTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwoZnVuY3Rpb24obil7dmFyIGk9bi5kYXRhLG89aS5vcmlnaW4sYT1pLmhlaWdodCxzPWkudHlwZSxmPWkuZXJyb3I7aWYoXCJzcXVhcmVsaW5rLWlmcmFtZVwiPT09byl7aWYoXCJyZXNpemVcIj09PXMpcmV0dXJuIHZvaWQodC5pZnJhbWUuc3R5bGU9TS5pZnJhbWUoYStcInB4XCIsXCJub25lXCIpKTtcImVycm9yXCI9PT1zPyh0LmVycm9yPWYsdC5jbG9zZSgpKTpcIm9ubG9hZFwiIT09c3x8cnx8KHI9ITAsZS5pZnJhbWUuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSh7b3JpZ2luOlwic3F1YXJlbGluay13ZWIzLXNka1wiLHBhcmFtczplLnBhcmFtc30sXCIqXCIpKX19KSwhMSl9LGUucHJvdG90eXBlLl9jcmVhdGVJZnJhbWU9ZnVuY3Rpb24oKXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2UuaWQ9XCJzcXVhcmVsaW5rLWlmcmFtZS1jb250YWluZXJcIixlLnN0eWxlPU0uY29udGFpbmVyO2UuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPVwic3F1YXJlbGluay1wcmVsb2FkZXJcIiBpZD1cInNxdWFyZWxpbmstcHJlbG9hZGVyXCI+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PC9kaXY+Jzt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaWZyYW1lXCIpO3Quc3JjPVwiaHR0cHM6Ly9zcXVhcmVsaW5rLmNvbS9wb3B1cC8/dXJsPVwiK2VuY29kZVVSSSh0aGlzLnVybCksdC5pZD1cInNxdWFyZWxpbmstaWZyYW1lXCIsdC5zdHlsZT1NLmlmcmFtZSgpLHQub25sb2FkPWZ1bmN0aW9uKCl7dmFyIGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzcXVhcmVsaW5rLXByZWxvYWRlclwiKTtlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSl9LGUuYXBwZW5kQ2hpbGQodCksdGhpcy5pZnJhbWU9dCx0aGlzLmNvbnRhaW5lcj1lLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSl9LGV9KCksTT17aWZyYW1lOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PWUmJihlPVwiMjAwcHhcIiksdm9pZCAwPT09dCYmKHQ9XCIzcHggc29saWQgI2ZmZlwiKSxcIlxcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICBoZWlnaHQ6IFwiK2UrXCI7XFxuICAgICAgd2lkdGg6IDM2MHB4O1xcbiAgICAgIHRvcDogNTAlO1xcbiAgICAgIGxlZnQ6IDUwJTtcXG4gICAgICB0cmFuc2Zvcm06XFxuICAgICAgdHJhbnNsYXRlKC01MCUsIC01MCUpO1xcbiAgICAgIGJvcmRlcjogMHB4IHRyYW5zcGFyZW50O1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XFxuICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMHB4O1xcbiAgICAgIC1tb3otYm9yZGVyLXJhZGl1czogMTBweDtcXG4gICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xcbiAgICAgIC1raHRtbC1ib3JkZXItcmFkaXVzOiAxMHB4O1xcbiAgICAgIGJvcmRlcjogXCIrdCtcIjtcXG4gICAgICB6LWluZGV4OiAyMTQ3NDgzNjQ3O1xcbiAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IDRweCByZ2JhKDAsMCwwLC4zMyk7XFxuICAgICAgYmFja2dyb3VuZDogbm9uZTtcXG4gICAgXCJ9LGNvbnRhaW5lcjpcIlxcbiAgICBwb3NpdGlvbjogZml4ZWQ7XFxuICAgIGhlaWdodDogMTAwJTtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIGxlZnQ6IDA7XFxuICAgIHJpZ2h0OiAwO1xcbiAgICB0b3A6IDA7XFxuICAgIGJvdHRvbTogMDtcXG4gICAgei1pbmRleDogMjE0NzQ4MzY0NztcXG4gICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjUpO1xcbiAgXCJ9LFQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS51cmwscj1lLnBvcHVwLG49ZS5wYXJhbXM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlLGkpe3IubG9jYXRpb24uaHJlZj10O3ZhciBvPSExO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLChmdW5jdGlvbih0KXtpZighbyl7dmFyIGk9dC5kYXRhLGE9aS5vcmlnaW4scz1pLnR5cGU7XCJzcXVhcmVsaW5rXCI9PT1hJiZcIm9ubG9hZFwiPT09cyYmKG89ITAsci5wb3N0TWVzc2FnZSh7b3JpZ2luOlwic3F1YXJlbGluay13ZWIzLXNka1wiLHBhcmFtczpufSxcIipcIiksci5mb2N1cygpLFAociksZSh7cG9wdXA6cn0pLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLChmdW5jdGlvbigpe30pKSl9fSksITEpfSkpfSxQPWZ1bmN0aW9uKGUpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7dC5pZD1cInNxdWFyZWxpbmstcHJlbG9hZGVyLWNvbnRhaW5lclwiLHQuc3R5bGU9XCJcXG4gICAgcG9zaXRpb246IGZpeGVkO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBsZWZ0OiAwO1xcbiAgICByaWdodDogMDtcXG4gICAgdG9wOiAwO1xcbiAgICBib3R0b206IDA7XFxuICAgIHotaW5kZXg6IDIxNDc0ODM2NDc7XFxuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC41KTtcXG4gIFwiO3QuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPVwic3F1YXJlbGluay1jbG9zZVwiIGlkPVwic3F1YXJlbGluay1jbG9zZS1idXR0b25cIj48L2Rpdj48ZGl2IGNsYXNzPVwic3F1YXJlbGluay1wcmVsb2FkZXJcIiBpZD1cInNxdWFyZWxpbmstcHJlbG9hZGVyXCI+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PC9kaXY+Jyxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3F1YXJlbGluay1jbG9zZS1idXR0b25cIikuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsKGZ1bmN0aW9uKCl7ZS5jbG9zZSgpfSkpfSxCPWZ1bmN0aW9uKGUpe3ZhciB0PWUudXJsLHI9ZS5wYXJhbXMsbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7bi5pbm5lckhUTUw9XCJcXG4uc3F1YXJlbGluay1jbG9zZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICByaWdodDogNTBweDtcXG4gIHRvcDogMzBweDtcXG4gIHdpZHRoOiAxMHB4O1xcbiAgaGVpZ2h0OiAyNXB4O1xcbiAgb3BhY2l0eTogMC42O1xcbiAgei1pbmRleDogMTAwO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOjAuNXM7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOjAuNXM7XFxufVxcbi5zcXVhcmVsaW5rLWNsb3NlOmhvdmVyIHtcXG4gIG9wYWNpdHk6IDE7XFxufVxcbi5zcXVhcmVsaW5rLWNsb3NlOmJlZm9yZSwgLnNxdWFyZWxpbmstY2xvc2U6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMTVweDtcXG4gIGNvbnRlbnQ6ICcgJztcXG4gIGhlaWdodDogMzBweDtcXG4gIHdpZHRoOiAzcHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbn1cXG4uc3F1YXJlbGluay1jbG9zZTpiZWZvcmUge1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xcbn1cXG4uc3F1YXJlbGluay1jbG9zZTphZnRlciB7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xcbn1cXG5cXG4uc3F1YXJlbGluay1wcmVsb2FkZXIge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgd2lkdGg6IDY0cHg7XFxuICBoZWlnaHQ6IDY0cHg7XFxuICB6LWluZGV4OiAyMTQ3NDgzNjQ5O1xcbiAgdG9wOiA1MCU7XFxuICBsZWZ0OiA1MCU7XFxuICB0cmFuc2Zvcm06XFxuICB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XFxufVxcbi5zcXVhcmVsaW5rLXByZWxvYWRlciBkaXYge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgd2lkdGg6IDEzcHg7XFxuICBoZWlnaHQ6IDEzcHg7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBiYWNrZ3JvdW5kOiAjZmZmO1xcbiAgYW5pbWF0aW9uOiBzcXVhcmVsaW5rLXByZWxvYWRlciAxLjJzIGxpbmVhciBpbmZpbml0ZTtcXG59XFxuLnNxdWFyZWxpbmstcHJlbG9hZGVyIGRpdjpudGgtY2hpbGQoMSkge1xcbiAgdG9wOiA2cHg7XFxuICBsZWZ0OiA2cHg7XFxuICBhbmltYXRpb24tZGVsYXk6IDBzO1xcbn1cXG4uc3F1YXJlbGluay1wcmVsb2FkZXIgZGl2Om50aC1jaGlsZCgyKSB7XFxuICB0b3A6IDZweDtcXG4gIGxlZnQ6IDI2cHg7XFxuICBhbmltYXRpb24tZGVsYXk6IC0wLjRzO1xcbn1cXG4uc3F1YXJlbGluay1wcmVsb2FkZXIgZGl2Om50aC1jaGlsZCgzKSB7XFxuICB0b3A6IDZweDtcXG4gIGxlZnQ6IDQ1cHg7XFxuICBhbmltYXRpb24tZGVsYXk6IC0wLjhzO1xcbn1cXG4uc3F1YXJlbGluay1wcmVsb2FkZXIgZGl2Om50aC1jaGlsZCg0KSB7XFxuICB0b3A6IDI2cHg7XFxuICBsZWZ0OiA2cHg7XFxuICBhbmltYXRpb24tZGVsYXk6IC0wLjRzO1xcbn1cXG4uc3F1YXJlbGluay1wcmVsb2FkZXIgZGl2Om50aC1jaGlsZCg1KSB7XFxuICB0b3A6IDI2cHg7XFxuICBsZWZ0OiAyNnB4O1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAtMC44cztcXG59XFxuLnNxdWFyZWxpbmstcHJlbG9hZGVyIGRpdjpudGgtY2hpbGQoNikge1xcbiAgdG9wOiAyNnB4O1xcbiAgbGVmdDogNDVweDtcXG4gIGFuaW1hdGlvbi1kZWxheTogLTEuMnM7XFxufVxcbi5zcXVhcmVsaW5rLXByZWxvYWRlciBkaXY6bnRoLWNoaWxkKDcpIHtcXG4gIHRvcDogNDVweDtcXG4gIGxlZnQ6IDZweDtcXG4gIGFuaW1hdGlvbi1kZWxheTogLTAuOHM7XFxufVxcbi5zcXVhcmVsaW5rLXByZWxvYWRlciBkaXY6bnRoLWNoaWxkKDgpIHtcXG4gIHRvcDogNDVweDtcXG4gIGxlZnQ6IDI2cHg7XFxuICBhbmltYXRpb24tZGVsYXk6IC0xLjJzO1xcbn1cXG4uc3F1YXJlbGluay1wcmVsb2FkZXIgZGl2Om50aC1jaGlsZCg5KSB7XFxuICB0b3A6IDQ1cHg7XFxuICBsZWZ0OiA0NXB4O1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAtMS42cztcXG59XFxuQGtleWZyYW1lcyBzcXVhcmVsaW5rLXByZWxvYWRlciB7XFxuICAwJSwgMTAwJSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICB9XFxuICA1MCUge1xcbiAgICBvcGFjaXR5OiAwLjU7XFxuICB9XFxufVwiLChkb2N1bWVudC5oZWFkfHxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF0pLmFwcGVuZENoaWxkKG4pO3ZhciBpPXdpbmRvdy5vcGVuKFwiXCIsXCJfYmxhbmtcIixcInNjcm9sbGJhcnM9bm8scmVzaXphYmxlPW5vLHN0YXR1cz1ubyxsb2NhdGlvbj1ubyx0b29sYmFyPW5vLG1lbnViYXI9bm8sd2lkdGg9Mzc1LGhlaWdodD0zNTAsbGVmdD0tNTAwLHRvcD0xNTBcIik7aWYoIWl8fGkuY2xvc2VkfHx2b2lkIDA9PT1pLmNsb3NlZCl7dHJ5e2kuY2xvc2UoKX1jYXRjaChlKXt9cmV0dXJuIFByb21pc2UucmVzb2x2ZSh7aWZyYW1lOm5ldyBJKHQscil9KX1yZXR1cm4gVCh7dXJsOnQscG9wdXA6aSxwYXJhbXM6cn0pfSxMPWZ1bmN0aW9uKCl7cmV0dXJuKEw9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9MSxuPWFyZ3VtZW50cy5sZW5ndGg7cjxuO3IrKylmb3IodmFyIGkgaW4gdD1hcmd1bWVudHNbcl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsaSkmJihlW2ldPXRbaV0pO3JldHVybiBlfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxSPWZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiBuZXcocnx8KHI9UHJvbWlzZSkpKChmdW5jdGlvbihpLG8pe2Z1bmN0aW9uIGEoZSl7dHJ5e2Yobi5uZXh0KGUpKX1jYXRjaChlKXtvKGUpfX1mdW5jdGlvbiBzKGUpe3RyeXtmKG4udGhyb3coZSkpfWNhdGNoKGUpe28oZSl9fWZ1bmN0aW9uIGYoZSl7ZS5kb25lP2koZS52YWx1ZSk6bmV3IHIoKGZ1bmN0aW9uKHQpe3QoZS52YWx1ZSl9KSkudGhlbihhLHMpfWYoKG49bi5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX0sTz1mdW5jdGlvbihlLHQpe3ZhciByLG4saSxvLGE9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmaVswXSl0aHJvdyBpWzFdO3JldHVybiBpWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIG89e25leHQ6cygwKSx0aHJvdzpzKDEpLHJldHVybjpzKDIpfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJihvW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLG87ZnVuY3Rpb24gcyhvKXtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuIGZ1bmN0aW9uKG8pe2lmKHIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7Zm9yKDthOyl0cnl7aWYocj0xLG4mJihpPTImb1swXT9uLnJldHVybjpvWzBdP24udGhyb3d8fCgoaT1uLnJldHVybikmJmkuY2FsbChuKSwwKTpuLm5leHQpJiYhKGk9aS5jYWxsKG4sb1sxXSkpLmRvbmUpcmV0dXJuIGk7c3dpdGNoKG49MCxpJiYobz1bMiZvWzBdLGkudmFsdWVdKSxvWzBdKXtjYXNlIDA6Y2FzZSAxOmk9bzticmVhaztjYXNlIDQ6cmV0dXJuIGEubGFiZWwrKyx7dmFsdWU6b1sxXSxkb25lOiExfTtjYXNlIDU6YS5sYWJlbCsrLG49b1sxXSxvPVswXTtjb250aW51ZTtjYXNlIDc6bz1hLm9wcy5wb3AoKSxhLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKGk9KGk9YS50cnlzKS5sZW5ndGg+MCYmaVtpLmxlbmd0aC0xXSkmJig2PT09b1swXXx8Mj09PW9bMF0pKXthPTA7Y29udGludWV9aWYoMz09PW9bMF0mJighaXx8b1sxXT5pWzBdJiZvWzFdPGlbM10pKXthLmxhYmVsPW9bMV07YnJlYWt9aWYoNj09PW9bMF0mJmEubGFiZWw8aVsxXSl7YS5sYWJlbD1pWzFdLGk9bzticmVha31pZihpJiZhLmxhYmVsPGlbMl0pe2EubGFiZWw9aVsyXSxhLm9wcy5wdXNoKG8pO2JyZWFrfWlbMl0mJmEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZX1vPXQuY2FsbChlLGEpfWNhdGNoKGUpe289WzYsZV0sbj0wfWZpbmFsbHl7cj1pPTB9aWYoNSZvWzBdKXRocm93IG9bMV07cmV0dXJue3ZhbHVlOm9bMF0/b1sxXTp2b2lkIDAsZG9uZTohMH19KFtvLHNdKX19fSxDPVtcIndhbGxldHM6YWRtaW5cIixcIndhbGxldHM6ZWRpdFwiLFwid2FsbGV0czpjcmVhdGVcIixcIndhbGxldHM6cmVtb3ZlXCIsXCJ3YWxsZXRzOnJlYWRcIixcInVzZXJcIixcInVzZXI6bmFtZVwiLFwidXNlcjplbWFpbFwiLFwidXNlcjpzZWN1cml0eVwiXSxOPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCxyKXt2YXIgbj1uZXcgWE1MSHR0cFJlcXVlc3Q7bi5vcGVuKFwiR0VUXCIsZSksbi5zZW5kKCksbi5vbmxvYWQ9ZnVuY3Rpb24oKXs0MDM9PT1uLnN0YXR1cz9yKG5ldyB4KFwiWW91IGFyZSBub3QgYXV0aG9yaXplZCB0byBhY2Nlc3MgdGhhdCByZXNvdXJjZVwiKSk6MjAwIT09bi5zdGF0dXM/cihuZXcgeChcIklzc3VlIGNvbm5lY3RpbmcgdG8gU3F1YXJlbGluayBzZXJ2ZXJzXCIpKTp0KEpTT04ucGFyc2Uobi5yZXNwb25zZSkpfSxuLm9uZXJyb3I9ZnVuY3Rpb24oKXtyKG5ldyB4KFwiSXNzdWUgY29ubmVjdGluZyB0byBTcXVhcmVsaW5rIHNlcnZlcnNcIikpfX0pKX0saj1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixuKXtyZXR1cm4gUih0LHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIHQsbixpLG8sYTtyZXR1cm4gTyh0aGlzLChmdW5jdGlvbihzKXtzd2l0Y2gocy5sYWJlbCl7Y2FzZSAwOnJldHVybls0LEIoZSldO2Nhc2UgMTpyZXR1cm4gdD1zLnNlbnQoKSxuPXQucG9wdXAsaT10LmlmcmFtZSx0LmVycm9yP1syLHIoe2Vycm9yOlwiV2luZG93IGNsb3NlZFwifSldOihvPSExLG4mJihhPXNldEludGVydmFsKChmdW5jdGlvbigpe2lmKG8pY2xlYXJJbnRlcnZhbChhKTtlbHNlIGlmKG4uY2xvc2VkKXtvPSEwLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLChmdW5jdGlvbigpe30pKSxjbGVhckludGVydmFsKGEpLHIoe2Vycm9yOlwiV2luZG93IGNsb3NlZFwifSk7dmFyIGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzcXVhcmVsaW5rLXByZWxvYWRlci1jb250YWluZXJcIik7ZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpfX0pLDEpKSxpJiYoaS5vbkNsb3NlZD1mdW5jdGlvbihlKXtvfHwobz0hMCx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwoZnVuY3Rpb24oKXt9KSkscih7ZXJyb3I6ZXx8XCJXaW5kb3cgY2xvc2VkXCJ9KSl9KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhLGE9dC5vcmlnaW47dC5oZWlnaHQ7aWYoXCJvbmxvYWRcIiE9PXQudHlwZSYmXCJzcXVhcmVsaW5rXCI9PT1hJiYhbyl7aWYobz0hMCx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwoZnVuY3Rpb24oKXt9KSksbil7bi5jbG9zZSgpO3ZhciBzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3F1YXJlbGluay1wcmVsb2FkZXItY29udGFpbmVyXCIpO3MucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzKX1lbHNlIGkuY2xvc2UoKTtyKEwoe30sZS5kYXRhLHtvcmlnaW46dm9pZCAwLGhlaWdodDp2b2lkIDB9KSl9fSksITEpLFsyXSl9fSkpfSkpfSkpfSxEPWZ1bmN0aW9uKGUpe2UuY2xpZW50X2lkO3ZhciB0PWUubmV0d29yayxyPWUuc2NvcGU7aWYocil7aWYoIUFycmF5LmlzQXJyYXkocikpdGhyb3cgbmV3IHgoXCInc2NvcGUnIG11c3QgYmUgYW4gQXJyYXlcIik7Zm9yKHZhciBuIGluIHIpaWYoIUMuaW5jbHVkZXMocltuXSkpdGhyb3cgbmV3IHgoXCJXZSBkbyBub3Qgc3VwcG9ydCB0aGUgXCIrcltuXStcIiBzY29wZVwiKX1pZihcIm9iamVjdFwiPT10eXBlb2YgdCl7aWYoIXQudXJsKXRocm93IG5ldyB4KFwiUGxlYXNlIHByb3ZpZGUgYW4gUlBDIGVuZHBvaW50IGZvciB5b3VyIGN1c3RvbSBuZXR3b3JrXCIpO2lmKCF0LnVybC5tYXRjaCgvKHdzc3xodHRwcyl7MX0/OihcXC8/XFwvPylbXlxcc10rLykpdGhyb3cgbmV3IHgoXCJXZSBkbyBub3QgY3VycmVudGx5IHN1cHBvcnQgaW5zZWN1cmUgKGh0dHA6Ly8sIHdzOi8vKSBSUEMgY29ubmVjdGlvbnMuIFRyeSB1cGRhdGluZyBzcXVhcmVsaW5rIHRvIGl0cyBsYXRlc3QgdmVyc2lvbiFcIik7aWYodC5jaGFpbklkJiYodC5jaGFpbklkIT09cGFyc2VJbnQodC5jaGFpbklkKXx8dC5jaGFpbklkPDB8fHQuY2hhaW5JZD41ZTUpKXRocm93IG5ldyB4KFwiUGxlYXNlIHByb3ZpZGUgYSB2YWxpZCBDaGFpbiBJRFwiKTtpZih2b2lkIDAhPT10LnNraXBDYWNoZSYmXCJib29sZWFuXCIhPXR5cGVvZiB0LnNraXBDYWNoZSl0aHJvdyBuZXcgeChcInRoZSBgc2tpcENhY2hlYCBwYXJhbXRlciBtdXN0IGJlIGEgYm9vbGVhblwiKX1lbHNle2lmKCF0aGlzLk5FVFdPUktTW3RdKXRocm93IG5ldyB4KFwiSW52YWxpZCBuZXR3b3JrIHByb3ZpZGVkXCIpO2lmKHRoaXMuTkVUV09SS1NbdF0uc2RrVmVyc2lvbil7dmFyIGk9dGhpcy5ORVRXT1JLU1t0XS5zZGtWZXJzaW9uLG89XCIxLjEuNFwiLnNwbGl0KFwiLlwiKSxhPWkuc3BsaXQoXCIuXCIpO2ZvcihuPTA7bjwzO24rKyl7aWYocGFyc2VJbnQob1tuXSk+cGFyc2VJbnQoYVtuXSkpcmV0dXJuO2lmKHBhcnNlSW50KG9bbl0pPHBhcnNlSW50KGFbbl0pKXRocm93IG5ldyB4KFwiWW91IG5lZWQgdG8gdXBkYXRlIFNxdWFyZWxpbmsgdG8gc3F1YXJlbGlua0BcIitpK1wiIHRvIHVzZSB0aGF0IG5ldHdvcmtcIil9fX19LHE9ZnVuY3Rpb24oKXt2YXIgZT1cImxvY2FsaG9zdFwiPT09bG9jYXRpb24uaG9zdG5hbWV8fFwiMTI3LjAuMC4xXCI9PT1sb2NhdGlvbi5ob3N0bmFtZSx0PVwiaHR0cHM6XCI9PT1sb2NhdGlvbi5wcm90b2NvbCxyPVwiY2hyb21lLWV4dGVuc2lvbjpcIj09PWxvY2F0aW9uLnByb3RvY29sO2lmKCEoZXx8dHx8cikpdGhyb3cgbmV3IHgoXCJBY2Nlc3MgdG8gdGhlIFNxdWFyZWxpbmsgV2ViMyBFbmdpbmUgaXMgcmVzdHJpY3RlZCB0byBzZWN1cmUgb3JpZ2lucy5cXG5JZiB0aGlzIGlzIGEgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgcGxlYXNlIHVzZSBodHRwOi8vbG9jYWxob3N0OlwiK2xvY2F0aW9uLnBvcnQrXCIgaW5zdGVhZC5cXG5PdGhlcndpc2UsIHBsZWFzZSB1c2UgYW4gU1NMIGNlcnRpZmljYXRlLlwiKX0sVT1mdW5jdGlvbihlKXt2YXIgdCxyPSEwO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBlKXQ9ZS51cmwscj12b2lkIDA9PT1lLnNraXBDYWNoZXx8ZS5za2lwQ2FjaGU7ZWxzZXt2YXIgbj10aGlzLk5FVFdPUktTW2VdO3Q9bi5ycGNVcmwscj12b2lkIDA9PT1uLnNraXBDYWNoZXx8bi5za2lwQ2FjaGV9c3dpdGNoKHQuc3BsaXQoXCI6XCIpWzBdLnRvTG93ZXJDYXNlKCkpe2Nhc2VcImh0dHBcIjpjYXNlXCJodHRwc1wiOnJldHVybntycGNVcmw6dCxza2lwQ2FjaGU6cixjb25uZWN0aW9uVHlwZTpcImh0dHBcIn07Y2FzZVwid3NcIjpjYXNlXCJ3c3NcIjpyZXR1cm57cnBjVXJsOnQsc2tpcENhY2hlOnIsY29ubmVjdGlvblR5cGU6XCJ3c1wifTtkZWZhdWx0OnRocm93IG5ldyB4KCdVbnJlY29nbml6ZWQgcHJvdG9jb2wgaW4gXCInK3QrJ1wiJyl9fSxGPWZ1bmN0aW9uKGUpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlP2UuY2hhaW5JZHx8bnVsbDp0aGlzLk5FVFdPUktTW2VdLmNoYWluSWR9LHo9ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIG5ldyhyfHwocj1Qcm9taXNlKSkoKGZ1bmN0aW9uKGksbyl7ZnVuY3Rpb24gYShlKXt0cnl7ZihuLm5leHQoZSkpfWNhdGNoKGUpe28oZSl9fWZ1bmN0aW9uIHMoZSl7dHJ5e2Yobi50aHJvdyhlKSl9Y2F0Y2goZSl7byhlKX19ZnVuY3Rpb24gZihlKXtlLmRvbmU/aShlLnZhbHVlKTpuZXcgcigoZnVuY3Rpb24odCl7dChlLnZhbHVlKX0pKS50aGVuKGEscyl9Zigobj1uLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfSxLPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpLG8sYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZpWzBdKXRocm93IGlbMV07cmV0dXJuIGlbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gbz17bmV4dDpzKDApLHRocm93OnMoMSkscmV0dXJuOnMoMil9LFwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmKG9bU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksbztmdW5jdGlvbiBzKG8pe3JldHVybiBmdW5jdGlvbihzKXtyZXR1cm4gZnVuY3Rpb24obyl7aWYocil0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtmb3IoO2E7KXRyeXtpZihyPTEsbiYmKGk9MiZvWzBdP24ucmV0dXJuOm9bMF0/bi50aHJvd3x8KChpPW4ucmV0dXJuKSYmaS5jYWxsKG4pLDApOm4ubmV4dCkmJiEoaT1pLmNhbGwobixvWzFdKSkuZG9uZSlyZXR1cm4gaTtzd2l0Y2gobj0wLGkmJihvPVsyJm9bMF0saS52YWx1ZV0pLG9bMF0pe2Nhc2UgMDpjYXNlIDE6aT1vO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTpvWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKyssbj1vWzFdLG89WzBdO2NvbnRpbnVlO2Nhc2UgNzpvPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoaT0oaT1hLnRyeXMpLmxlbmd0aD4wJiZpW2kubGVuZ3RoLTFdKSYmKDY9PT1vWzBdfHwyPT09b1swXSkpe2E9MDtjb250aW51ZX1pZigzPT09b1swXSYmKCFpfHxvWzFdPmlbMF0mJm9bMV08aVszXSkpe2EubGFiZWw9b1sxXTticmVha31pZig2PT09b1swXSYmYS5sYWJlbDxpWzFdKXthLmxhYmVsPWlbMV0saT1vO2JyZWFrfWlmKGkmJmEubGFiZWw8aVsyXSl7YS5sYWJlbD1pWzJdLGEub3BzLnB1c2gobyk7YnJlYWt9aVsyXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfW89dC5jYWxsKGUsYSl9Y2F0Y2goZSl7bz1bNixlXSxuPTB9ZmluYWxseXtyPWk9MH1pZig1Jm9bMF0pdGhyb3cgb1sxXTtyZXR1cm57dmFsdWU6b1swXT9vWzFdOnZvaWQgMCxkb25lOiEwfX0oW28sc10pfX19LEg9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMubG9hZGluZ05ldHdvcmtzPSEwLE4oXCJodHRwczovL2FwaS5zcXVhcmVsaW5rLmNvbS9uZXR3b3Jrc1wiKS50aGVuKChmdW5jdGlvbih0KXtlLk5FVFdPUktTPXQsZS5sb2FkaW5nTmV0d29ya3M9ITF9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3Rocm93IG5ldyB4KFwiSXNzdWUgY29ubmVjdGluZyB0byBTcXVhcmVsaW5rXCIpfSkpfSxWPWZ1bmN0aW9uKCl7cmV0dXJuIHoodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIEsodGhpcywoZnVuY3Rpb24odCl7cmV0dXJuWzIsbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQscil7dmFyIG49c2V0SW50ZXJ2YWwoKGZ1bmN0aW9uKCl7ZS5sb2FkaW5nTmV0d29ya3N8fChjbGVhckludGVydmFsKG4pLHQoKSl9KSwxKX0pKV19KSl9KSl9LFk9SlNPTi5wYXJzZSgne1wibWFpbm5ldFwiOntcIm5hbWVcIjpcIm1haW5uZXRcIixcImxhYmVsXCI6XCJFdGhlcmV1bVwiLFwiY2hhaW5JZFwiOjEsXCJycGNVcmxcIjpcImh0dHBzOi8vbWFpbm5ldC5pbmZ1cmEuaW8vdjMvOTdkNjQzZTBjYjY2NDkyMmE3MDA5YTZhZjMzYjQyYWFcIixcInNraXBDYWNoZVwiOnRydWUsXCJjb2xvclwiOlwicmdiKDc5LCAyMjcsIDE5NClcIn0sXCJ4ZGFpXCI6e1wibmFtZVwiOlwieGRhaVwiLFwibGFiZWxcIjpcInhEYWlcIixcImNoYWluSWRcIjoxMDAsXCJycGNVcmxcIjpcImh0dHBzOi8vZGFpLnBvYS5uZXR3b3JrXCIsXCJza2lwQ2FjaGVcIjpmYWxzZSxcImNvbG9yXCI6XCJyZ2IoMjMzLCAxNjAsIDM0KVwifSxcInBvYVwiOntcIm5hbWVcIjpcInBvYVwiLFwibGFiZWxcIjpcIlBPQSBOZXR3b3JrXCIsXCJjaGFpbklkXCI6OTksXCJycGNVcmxcIjpcImh0dHBzOi8vY29yZS5wb2EubmV0d29ya1wiLFwic2tpcENhY2hlXCI6ZmFsc2UsXCJjb2xvclwiOlwicmdiKDgyLCA0OSwgMTU5KVwifSxcInNva29sXCI6e1wibmFtZVwiOlwic29rb2xcIixcImxhYmVsXCI6XCJTb2tvbFwiLFwiY2hhaW5JZFwiOjc3LFwicnBjVXJsXCI6XCJodHRwczovL3Nva29sLnBvYS5uZXR3b3JrXCIsXCJza2lwQ2FjaGVcIjpmYWxzZSxcImNvbG9yXCI6XCJyZ2IoMTEwLCAzNCwgMjMzKVwifSxcIm1hdGljQWxwaGFcIjp7XCJuYW1lXCI6XCJtYXRpY0FscGhhXCIsXCJsYWJlbFwiOlwizrEtTWF0aWMgTmV0d29ya1wiLFwiY2hhaW5JZFwiOjQ2MjYsXCJycGNVcmxcIjpcImh0dHBzOi8vYWxwaGEuZXRoZXJldW0ubWF0aWMubmV0d29ya1wiLFwic2tpcENhY2hlXCI6ZmFsc2UsXCJjb2xvclwiOlwicmdiKDM0LCAxMjAsIDIzMylcIn0sXCJtYXRpY1Rlc3RuZXRcIjp7XCJuYW1lXCI6XCJtYXRpY1Rlc3RuZXRcIixcImxhYmVsXCI6XCJNYXRpYyBUZXN0bmV0XCIsXCJjaGFpbklkXCI6ODk5NSxcInJwY1VybFwiOlwiaHR0cHM6Ly90ZXN0bmV0Mi5tYXRpYy5uZXR3b3JrXCIsXCJza2lwQ2FjaGVcIjpmYWxzZSxcImNvbG9yXCI6XCJyZ2IoMzQsIDEyMCwgMjMzKVwifSxcInRodW5kZXJjb3JlXCI6e1wibmFtZVwiOlwidGh1bmRlcmNvcmVcIixcImxhYmVsXCI6XCJUaHVuZGVyY29yZVwiLFwiY2hhaW5JZFwiOjEwOCxcInJwY1VybFwiOlwiaHR0cHM6Ly9tYWlubmV0LXJwYy50aHVuZGVyY29yZS5jb21cIixcInNraXBDYWNoZVwiOmZhbHNlLFwiY29sb3JcIjpcInJnYigyMzMsIDIwNywgMzQpXCJ9LFwidGh1bmRlcnRlc3RcIjp7XCJuYW1lXCI6XCJ0aHVuZGVydGVzdFwiLFwibGFiZWxcIjpcIlRodW5kZXJjb3JlIFRlc3RuZXRcIixcImNoYWluSWRcIjoxOCxcInJwY1VybFwiOlwiaHR0cHM6Ly9tYWlubmV0LXJwYy50aHVuZGVyY29yZS5jb21cIixcInNraXBDYWNoZVwiOmZhbHNlLFwiY29sb3JcIjpcInJnYigyMzMsIDIwNywgMzQpXCJ9LFwibGlnaHRzdHJlYW1zXCI6e1wibmFtZVwiOlwibGlnaHRzdHJlYW1zXCIsXCJsYWJlbFwiOlwiTGlnaHRzdHJlYW1zXCIsXCJjaGFpbklkXCI6MTYzLFwicnBjVXJsXCI6XCJodHRwczovL25vZGUubWFpbm5ldC5saWdodHN0cmVhbXMuaW9cIixcInNraXBDYWNoZVwiOmZhbHNlLFwiY29sb3JcIjpcInJnYigxNDksIDAsIDApXCJ9LFwibGlnaHRzdHJlYW1zU2lyaXVzXCI6e1wibmFtZVwiOlwibGlnaHRzdHJlYW1zU2lyaXVzXCIsXCJsYWJlbFwiOlwiTGlnaHRzdHJlYW1zIFNpcml1c1wiLFwiY2hhaW5JZFwiOjE2MixcInJwY1VybFwiOlwiaHR0cHM6Ly9ub2RlLnNpcml1cy5saWdodHN0cmVhbXMuaW9cIixcInNraXBDYWNoZVwiOmZhbHNlLFwiY29sb3JcIjpcInJnYigxNDksIDAsIDApXCJ9LFwicmlua2VieVwiOntcIm5hbWVcIjpcInJpbmtlYnlcIixcImxhYmVsXCI6XCJSaW5rZWJ5XCIsXCJjaGFpbklkXCI6NCxcInJwY1VybFwiOlwiaHR0cHM6Ly9yaW5rZWJ5LmluZnVyYS5pby92My85N2Q2NDNlMGNiNjY0OTIyYTcwMDlhNmFmMzNiNDJhYVwiLFwic2tpcENhY2hlXCI6dHJ1ZSxcImNvbG9yXCI6XCJyZ2IoMjI3LCA3OSwgMTU5KVwifSxcImtvdmFuXCI6e1wibmFtZVwiOlwia292YW5cIixcImxhYmVsXCI6XCJLb3ZhblwiLFwiY2hhaW5JZFwiOjQyLFwicnBjVXJsXCI6XCJodHRwczovL2tvdmFuLmluZnVyYS5pby92My85N2Q2NDNlMGNiNjY0OTIyYTcwMDlhNmFmMzNiNDJhYVwiLFwic2tpcENhY2hlXCI6dHJ1ZSxcImNvbG9yXCI6XCJyZ2IoMjI3LCAxOTksIDc5KVwifSxcInJvcHN0ZW5cIjp7XCJuYW1lXCI6XCJyb3BzdGVuXCIsXCJsYWJlbFwiOlwiUm9wc3RlblwiLFwiY2hhaW5JZFwiOjMsXCJycGNVcmxcIjpcImh0dHBzOi8vcm9wc3Rlbi5pbmZ1cmEuaW8vdjMvOTdkNjQzZTBjYjY2NDkyMmE3MDA5YTZhZjMzYjQyYWFcIixcInNraXBDYWNoZVwiOnRydWUsXCJjb2xvclwiOlwicmdiKDc5LCAxMDMsIDIyNylcIn0sXCJnb2VybGlcIjp7XCJuYW1lXCI6XCJnb2VybGlcIixcImxhYmVsXCI6XCJHb2VybGlcIixcImNoYWluSWRcIjo1LFwicnBjVXJsXCI6XCJodHRwczovL2dvZXJsaS5pbmZ1cmEuaW8vdjMvOTdkNjQzZTBjYjY2NDkyMmE3MDA5YTZhZjMzYjQyYWFcIixcInNraXBDYWNoZVwiOnRydWUsXCJjb2xvclwiOlwicmdiKDczLCA3MiwgNDgpXCJ9LFwidXN0ZXJyYVwiOntcIm5hbWVcIjpcInVzdGVycmFcIixcImxhYmVsXCI6XCJUZXJyYVwiLFwiY2hhaW5JZFwiOjY5LFwicnBjVXJsXCI6XCJodHRwczovL3VzdGVycmEuc3F1YXJlbGluay5jb21cIixcInNraXBDYWNoZVwiOmZhbHNlLFwiY29sb3JcIjpcInJnYig5LCAyNCwgODIpXCJ9LFwidmlwY1wiOntcIm5hbWVcIjpcInZpcGNcIixcImxhYmVsXCI6XCJWSVAgQ29pblwiLFwiY2hhaW5JZFwiOjY5LFwicnBjVXJsXCI6XCJodHRwczovL3ZpcGMtbmV0d29yay5zcXVhcmVsaW5rLmNvbVwiLFwic2tpcENhY2hlXCI6ZmFsc2UsXCJjb2xvclwiOlwicmdiKDgyLCA5LCA5KVwifX0nKSxHPXIoMjMpLCQ9ci5uKEcpLFc9ZnVuY3Rpb24oKXtyZXR1cm4oVz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQscj0xLG49YXJndW1lbnRzLmxlbmd0aDtyPG47cisrKWZvcih2YXIgaSBpbiB0PWFyZ3VtZW50c1tyXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxpKSYmKGVbaV09dFtpXSk7cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LFo9ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIG5ldyhyfHwocj1Qcm9taXNlKSkoKGZ1bmN0aW9uKGksbyl7ZnVuY3Rpb24gYShlKXt0cnl7ZihuLm5leHQoZSkpfWNhdGNoKGUpe28oZSl9fWZ1bmN0aW9uIHMoZSl7dHJ5e2Yobi50aHJvdyhlKSl9Y2F0Y2goZSl7byhlKX19ZnVuY3Rpb24gZihlKXtlLmRvbmU/aShlLnZhbHVlKTpuZXcgcigoZnVuY3Rpb24odCl7dChlLnZhbHVlKX0pKS50aGVuKGEscyl9Zigobj1uLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfSxKPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpLG8sYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZpWzBdKXRocm93IGlbMV07cmV0dXJuIGlbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gbz17bmV4dDpzKDApLHRocm93OnMoMSkscmV0dXJuOnMoMil9LFwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmKG9bU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksbztmdW5jdGlvbiBzKG8pe3JldHVybiBmdW5jdGlvbihzKXtyZXR1cm4gZnVuY3Rpb24obyl7aWYocil0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtmb3IoO2E7KXRyeXtpZihyPTEsbiYmKGk9MiZvWzBdP24ucmV0dXJuOm9bMF0/bi50aHJvd3x8KChpPW4ucmV0dXJuKSYmaS5jYWxsKG4pLDApOm4ubmV4dCkmJiEoaT1pLmNhbGwobixvWzFdKSkuZG9uZSlyZXR1cm4gaTtzd2l0Y2gobj0wLGkmJihvPVsyJm9bMF0saS52YWx1ZV0pLG9bMF0pe2Nhc2UgMDpjYXNlIDE6aT1vO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTpvWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKyssbj1vWzFdLG89WzBdO2NvbnRpbnVlO2Nhc2UgNzpvPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoaT0oaT1hLnRyeXMpLmxlbmd0aD4wJiZpW2kubGVuZ3RoLTFdKSYmKDY9PT1vWzBdfHwyPT09b1swXSkpe2E9MDtjb250aW51ZX1pZigzPT09b1swXSYmKCFpfHxvWzFdPmlbMF0mJm9bMV08aVszXSkpe2EubGFiZWw9b1sxXTticmVha31pZig2PT09b1swXSYmYS5sYWJlbDxpWzFdKXthLmxhYmVsPWlbMV0saT1vO2JyZWFrfWlmKGkmJmEubGFiZWw8aVsyXSl7YS5sYWJlbD1pWzJdLGEub3BzLnB1c2gobyk7YnJlYWt9aVsyXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfW89dC5jYWxsKGUsYSl9Y2F0Y2goZSl7bz1bNixlXSxuPTB9ZmluYWxseXtyPWk9MH1pZig1Jm9bMF0pdGhyb3cgb1sxXTtyZXR1cm57dmFsdWU6b1swXT9vWzFdOnZvaWQgMCxkb25lOiEwfX0oW28sc10pfX19LFg9ZnVuY3Rpb24oZSx0KXt2YXIgcj17fTtmb3IodmFyIG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmdC5pbmRleE9mKG4pPDAmJihyW25dPWVbbl0pO2lmKG51bGwhPWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPTA7Zm9yKG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtpPG4ubGVuZ3RoO2krKyl0LmluZGV4T2YobltpXSk8MCYmKHJbbltpXV09ZVtuW2ldXSl9cmV0dXJuIHJ9LFE9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD17fSk7dmFyIHI9e1wid2FsbGV0czpyZWFkXCI6MX07dC5zY29wZSYmdC5zY29wZS5sZW5ndGgmJnQuc2NvcGUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIHJbZV09MX0pKSxyPU9iamVjdC5rZXlzKHIpLnRvU3RyaW5nKCkucmVwbGFjZSgvIC9nLFwiXCIpO3ZhciBuPVtdO3JldHVybiBuLnB1c2goTihcImh0dHBzOi8vYXBpLnNxdWFyZWxpbmsuY29tL3dhbGxldHM/YWNjZXNzX3Rva2VuPVwiK2UpLnRoZW4oKGZ1bmN0aW9uKGUpe3ZhciB0PWUuc3VjY2VzcyxyPWUud2FsbGV0cztpZih0KXJldHVybiBQcm9taXNlLnJlc29sdmUoe2FjY291bnRzOltyLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRlZmF1bHR9KSldLmNvbmNhdChyLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGVmYXVsdH0pKSkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5hZGRyZXNzfSkpfSk7dGhyb3cgbmV3IHgoZGF0YS5tZXNzYWdlfHxcIklzc3VlIGZldGNoaW5nIGFjY291bnRzLCB0cnkgYWdhaW4gbGF0ZXJcIil9KSkpLFwid2FsbGV0czpyZWFkXCIhPT1yJiZuLnB1c2goTihcImh0dHBzOi8vYXBpLnNxdWFyZWxpbmsuY29tL3VzZXI/YWNjZXNzX3Rva2VuPVwiK2UpLnRoZW4oKGZ1bmN0aW9uKGUpe3ZhciB0PWUuc3VjY2VzcyxyPVgoZSxbXCJzdWNjZXNzXCJdKTtpZih0KXJldHVybiBQcm9taXNlLnJlc29sdmUoe3NlY3VyaXR5U2V0dGluZ3M6e2hhczJmYTpyLmhhc18yZmEsaGFzUmVjb3Zlcnk6ci5oYXNfcmVjb3ZlcnksZW1haWxWZXJpZmllZDpyLmVtYWlsX3ZlcmlmaWVkfSxuYW1lOnIuZ2l2ZW5fbmFtZStcIiBcIityLmZhbWlseV9uYW1lLGVtYWlsOnIuZW1haWx9KTt0aHJvdyBuZXcgeChkYXRhLm1lc3NhZ2V8fFwiSXNzdWUgZmV0Y2hpbmcgdXNlciBpbmZvLCB0cnkgYWdhaW4gbGF0ZXJcIil9KSkpLFByb21pc2UuYWxsKG4pLnRoZW4oKGZ1bmN0aW9uKGUpe3ZhciB0PXt9O3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUpe3Q9Vyh7fSx0LGUpfSkpLFByb21pc2UucmVzb2x2ZSh0KX0pKX0sZWU9ZnVuY3Rpb24oKXtyZXR1cm4oZWU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9MSxuPWFyZ3VtZW50cy5sZW5ndGg7cjxuO3IrKylmb3IodmFyIGkgaW4gdD1hcmd1bWVudHNbcl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsaSkmJihlW2ldPXRbaV0pO3JldHVybiBlfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfSx0ZT1mdW5jdGlvbihlLHQscixuKXtyZXR1cm4gbmV3KHJ8fChyPVByb21pc2UpKSgoZnVuY3Rpb24oaSxvKXtmdW5jdGlvbiBhKGUpe3RyeXtmKG4ubmV4dChlKSl9Y2F0Y2goZSl7byhlKX19ZnVuY3Rpb24gcyhlKXt0cnl7ZihuLnRocm93KGUpKX1jYXRjaChlKXtvKGUpfX1mdW5jdGlvbiBmKGUpe2UuZG9uZT9pKGUudmFsdWUpOm5ldyByKChmdW5jdGlvbih0KXt0KGUudmFsdWUpfSkpLnRoZW4oYSxzKX1mKChuPW4uYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KSl9LHJlPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpLG8sYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZpWzBdKXRocm93IGlbMV07cmV0dXJuIGlbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gbz17bmV4dDpzKDApLHRocm93OnMoMSkscmV0dXJuOnMoMil9LFwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmKG9bU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksbztmdW5jdGlvbiBzKG8pe3JldHVybiBmdW5jdGlvbihzKXtyZXR1cm4gZnVuY3Rpb24obyl7aWYocil0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtmb3IoO2E7KXRyeXtpZihyPTEsbiYmKGk9MiZvWzBdP24ucmV0dXJuOm9bMF0/bi50aHJvd3x8KChpPW4ucmV0dXJuKSYmaS5jYWxsKG4pLDApOm4ubmV4dCkmJiEoaT1pLmNhbGwobixvWzFdKSkuZG9uZSlyZXR1cm4gaTtzd2l0Y2gobj0wLGkmJihvPVsyJm9bMF0saS52YWx1ZV0pLG9bMF0pe2Nhc2UgMDpjYXNlIDE6aT1vO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTpvWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKyssbj1vWzFdLG89WzBdO2NvbnRpbnVlO2Nhc2UgNzpvPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoaT0oaT1hLnRyeXMpLmxlbmd0aD4wJiZpW2kubGVuZ3RoLTFdKSYmKDY9PT1vWzBdfHwyPT09b1swXSkpe2E9MDtjb250aW51ZX1pZigzPT09b1swXSYmKCFpfHxvWzFdPmlbMF0mJm9bMV08aVszXSkpe2EubGFiZWw9b1sxXTticmVha31pZig2PT09b1swXSYmYS5sYWJlbDxpWzFdKXthLmxhYmVsPWlbMV0saT1vO2JyZWFrfWlmKGkmJmEubGFiZWw8aVsyXSl7YS5sYWJlbD1pWzJdLGEub3BzLnB1c2gobyk7YnJlYWt9aVsyXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfW89dC5jYWxsKGUsYSl9Y2F0Y2goZSl7bz1bNixlXSxuPTB9ZmluYWxseXtyPWk9MH1pZig1Jm9bMF0pdGhyb3cgb1sxXTtyZXR1cm57dmFsdWU6b1swXT9vWzFdOnZvaWQgMCxkb25lOiEwfX0oW28sc10pfX19LG5lPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQscil7dm9pZCAwPT09dCYmKHQ9XCJtYWlubmV0XCIpLHZvaWQgMD09PXImJihyPXt9KSxyLnVzZVN5bmM/KHRoaXMuTkVUV09SS1M9WSx0aGlzLnVzZVN5bmM9ITApOkguY2FsbCh0aGlzKSx0aGlzLmNsaWVudF9pZD1lLHRoaXMubmV0d29yaz10LHRoaXMudG9rZW49ci50b2tlbix0aGlzLnNjb3BlPXIuc2NvcGV8fFtdfXJldHVybiBlLnByb3RvdHlwZS5nZXRQcm92aWRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdGUodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciB0LHIsbixpLG87cmV0dXJuIHJlKHRoaXMsKGZ1bmN0aW9uKGEpe3N3aXRjaChhLmxhYmVsKXtjYXNlIDA6aWYoYS50cnlzLnB1c2goWzAsMiwsM10pLHRoaXMudXNlU3luYyl0aHJvdyBuZXcgeChcIlBsZWFzZSBzZXQgYHVzZVN5bmNgIHRvIGZhbHNlXCIpO3JldHVybls0LFYuY2FsbCh0aGlzKV07Y2FzZSAxOnJldHVybiBhLnNlbnQoKSxyPSh0PXRoaXMpLmNsaWVudF9pZCxuPXQubmV0d29yayxpPXQuc2NvcGUscSgpLEQuY2FsbCh0aGlzLHtjbGllbnRfaWQ6cixuZXR3b3JrOm4sc2NvcGU6aX0pLHRoaXMuY2hhbmdlTmV0d29yayhuKSxlP1syLGUodGhpcy5lbmdpbmUsbnVsbCldOlsyLFByb21pc2UucmVzb2x2ZSh0aGlzLmVuZ2luZSldO2Nhc2UgMjpyZXR1cm4gbz1hLnNlbnQoKSxlP1syLGUobnVsbCxvKV06WzIsUHJvbWlzZS5yZWplY3QobyldO2Nhc2UgMzpyZXR1cm5bMl19fSkpfSkpfSxlLnByb3RvdHlwZS5nZXRQcm92aWRlclN5bmM9ZnVuY3Rpb24oKXtpZihjb25zb2xlLndhcm4oXCJbU3F1YXJlbGlua106IGdldFByb3ZpZGVyU3luYyBpcyBub3QgcmVjb21tZW5kZWQgYXMgd2UgY2Fubm90IGVuc3VyZSB1cHRpbWUgb2YgUlBDIHByb3ZpZGVycy5cIiksIXRoaXMudXNlU3luYyl0aHJvdyBuZXcgeChcIlBsZWFzZSBzZXQgYHVzZVN5bmNgIHRvIHRydWVcIik7dmFyIGU9dGhpcy5jbGllbnRfaWQsdD10aGlzLm5ldHdvcmsscj10aGlzLnNjb3BlO3JldHVybiBxKCksRC5jYWxsKHRoaXMse2NsaWVudF9pZDplLG5ldHdvcms6dCxzY29wZTpyfSksdGhpcy5jaGFuZ2VOZXR3b3JrKHQpLHRoaXMuZW5naW5lfSxlLnByb3RvdHlwZS5jaGFuZ2VOZXR3b3JrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY2xpZW50X2lkO0QuY2FsbCh0aGlzLHtjbGllbnRfaWQ6dCxuZXR3b3JrOmV9KSx0aGlzLm5ldHdvcms9ZSx0aGlzLm5ldF92ZXJzaW9uPUYuY2FsbCh0aGlzLGUpO3ZhciByPVUuY2FsbCh0aGlzLGUpLG49ci5ycGNVcmwsaT1yLmNvbm5lY3Rpb25UeXBlLG89ci5za2lwQ2FjaGU7dGhpcy5jb25uZWN0aW9uVHlwZT1pLHRoaXMucnBjVXJsPW4sdGhpcy5faW5pdEVuZ2luZShvKX0sZS5wcm90b3R5cGUuX2luaXRFbmdpbmU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxyPXRoaXM7dGhpcy5hY2NvdW50cz1bXTt2YXIgbj1uZXcgby5hKHtzZXRTa2lwQ2FjaGVGbGFnOmV9KTtuLmlzU3F1YXJlbGluaz0hMCxuLmlzQ29ubmVjdGVkPWZ1bmN0aW9uKCl7cmV0dXJuITB9LG4uc2VuZD1mdW5jdGlvbihlLHIpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCxpKXtuLnNlbmRBc3luYyh7anNvbnJwYzpcIjIuMFwiLGlkOjQyLG1ldGhvZDplLHBhcmFtczpyfHxbXX0sKGZ1bmN0aW9uKGUscil7ZT9pKGUpOnQoci5yZXN1bHQpfSkpfSkpO2lmKCFyKXt2YXIgaT1udWxsO3N3aXRjaChlLm1ldGhvZCl7Y2FzZVwiZXRoX2FjY291bnRzXCI6aT10LmFjY291bnRzLmxlbmd0aD90LmFjY291bnRzOltdO2JyZWFrO2Nhc2VcImV0aF9jb2luYmFzZVwiOmk9dC5hY2NvdW50cy5sZW5ndGg/dC5hY2NvdW50c1swXTp2b2lkIDA7YnJlYWs7Y2FzZVwibmV0X3ZlcnNpb25cIjppPXQubmV0X3ZlcnNpb258fG51bGw7YnJlYWs7ZGVmYXVsdDp2YXIgbz1cIlRoZSBTcXVhcmVsaW5rIFdlYjMgb2JqZWN0IGRvZXMgbm90IHN1cHBvcnQgc3luY2hyb25vdXMgbWV0aG9kcyBsaWtlIFwiK2UubWV0aG9kK1wiIHdpdGhvdXQgYSBjYWxsYmFjayBwYXJhbWV0ZXIuXCI7dGhyb3cgbmV3IHgobyl9cmV0dXJue2lkOmUuaWQsanNvbnJwYzplLmpzb25ycGMscmVzdWx0Oml9fW4uc2VuZEFzeW5jKGUscil9O3ZhciBpPW5ldyBjLmEoe3dlYjNfY2xpZW50VmVyc2lvbjpcIlNxdWFyZWxpbmsvdjEuMS40L2phdmFzY3JpcHRcIixuZXRfbGlzdGVuaW5nOiEwLGV0aF9oYXNocmF0ZTpcIjB4MDBcIixldGhfbWluaW5nOiExLGV0aF9zeW5jaW5nOiEwfSksYT1uZXcgZy5hLGY9bmV3IHMuYSx1PW5ldyBkLmEsbD1uZXcgYi5hKHtnZXRBY2NvdW50czpmdW5jdGlvbihlKXtyZXR1cm4gdGUodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3JldHVybiByZSh0aGlzLChmdW5jdGlvbih0KXtyZXR1cm4gZShudWxsLHIuYWNjb3VudHMpLFsyXX0pKX0pKX0sZ2V0Q29pbmJhc2U6ZnVuY3Rpb24oZSl7cmV0dXJuIHRlKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXtyZXR1cm4gcmUodGhpcywoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ2V0QWNjb3VudHMoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gZShudWxsLHRbMF0pfSkpLmNhdGNoKChmdW5jdGlvbih0KXtyZXR1cm4gZSh0LG51bGwpfSkpLFsyXX0pKX0pKX0sc2lnblRyYW5zYWN0aW9uOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRlKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgbjtyZXR1cm4gcmUodGhpcywoZnVuY3Rpb24oaSl7cmV0dXJuIHIuYWNjb3VudHMubGVuZ3RoPyhcIm51bWJlclwiPT10eXBlb2Yobj1lLmZyb20pJiYobj1yLmFjY291bnRzW25dKSxmdW5jdGlvbihlKXt2YXIgdD1lLm1ldGhvZCxyPWUuY2xpZW50X2lkLG49ZS52YWx1ZSxpPWUudG8sbz1lLmZyb20sYT1lLmdhcyxzPWUuZ2FzUHJpY2UsZj1lLm5vbmNlLGM9ZS5uZXR3b3JrLHU9ZS5kZXNjcmlwdGlvbixoPWUuc3RhdGUsbD1lLmRhdGE7cmV0dXJuIFoodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciBlO3JldHVybiBKKHRoaXMsKGZ1bmN0aW9uKGQpe2lmKCFpKXRocm93IG5ldyB4KFwiWW91IG11c3QgcHJvdmlkZSBhIHJlY2lwaWVudCBgdG9gIGZvciB0aGUgcmVxdWVzdFwiKTtyZXR1cm4gUytcIi90eD93aWRnZXQ9dHJ1ZSZ2ZXJzaW9uPTEuMS40XCIsZT17bWV0aG9kOnQsY2xpZW50X2lkOnIsdmVyc2lvbjpcIjEuMS40XCIsd2lkZ2V0OiEwLHRvOmksZnJvbTpvLGRhdGE6bCxzdGF0ZTpoLGRlc2NyaXB0aW9uOnV9LG4mJihlLnZhbHVlPW5ldyAkLmEobiwxNikudG9TdHJpbmcoKSksYSYmKGUuZ2FzPW5ldyAkLmEoYSwxNikudG9TdHJpbmcoKSkscyYmKGUuZ2FzUHJpY2U9bmV3ICQuYShzLDE2KS50b1N0cmluZygpKSxmJiYoZS5ub25jZT1uZXcgJC5hKGYsMTYpLnRvU3RyaW5nKCkpLFwib2JqZWN0XCI9PXR5cGVvZiBjPyhlLm5ldHdvcms9XCJjdXN0b21cIixlLnJwY191cmw9Yy51cmwsYy5jaGFpbklkJiYoZS5jaGFpbl9pZD1jLmNoYWluSWQpKTplLm5ldHdvcms9YyxbMixqKHt1cmw6XCJodHRwczovL2FwcC5zcXVhcmVsaW5rLmNvbS90eD93aWRnZXQ9dHJ1ZSZ2ZXJzaW9uPTEuMS40XCIscGFyYW1zOmV9KS50aGVuKChmdW5jdGlvbihlKXt2YXIgdD1lLmVycm9yLHI9ZS5yZXN1bHQ7aWYodCl0aHJvdyBuZXcgeCh0KTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHIpfSkpXX0pKX0pKX0oZWUoe30sZSx7ZnJvbTpuLG1ldGhvZDpcImV0aF9zaWduVHJhbnNhY3Rpb25cIixjbGllbnRfaWQ6ci5jbGllbnRfaWQsbmV0d29yazpyLm5ldHdvcmt9KSkudGhlbigoZnVuY3Rpb24oZSl7dChudWxsLGUpfSkpLmNhdGNoKChmdW5jdGlvbihlKXt0KGUsbnVsbCl9KSksWzJdKToodChuZXcgeChcIk5vIGFjY291bnRzIGF2YWlsYWJsZVwiKSxudWxsKSxbMl0pfSkpfSkpfSxzaWduTWVzc2FnZTpmdW5jdGlvbihlLHQpe3JldHVybiB0ZSh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIG4saSxvO3JldHVybiByZSh0aGlzLChmdW5jdGlvbihhKXtyZXR1cm4gci5hY2NvdW50cy5sZW5ndGg/KG49ZS5mcm9tLGk9ZS5kYXRhLG89ZS5tZXRob2QsXCJudW1iZXJcIj09dHlwZW9mIG4mJihuPXIuYWNjb3VudHNbbl0pLGZ1bmN0aW9uKGUpe3ZhciB0PWUuY2xpZW50X2lkLHI9ZS5tZXNzYWdlLG49ZS5tZXRob2QsaT1lLmFjY291bnQ7cmV0dXJuIFoodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciBlO3JldHVybiBKKHRoaXMsKGZ1bmN0aW9uKG8pe3JldHVybiBTK1wiL21zZz92ZXJzaW9uPTEuMS40XCIsZT17Y2xpZW50X2lkOnQsbWV0aG9kOm4sdmVyc2lvbjpcIjEuMS40XCIsYWNjb3VudDppfSxcImV0aF9zaWduVHlwZWREYXRhXCI9PT1uP2UucGFyYW1zPXI6XCJldGhfc2lnblR5cGVkRGF0YV92M1wiPT09bj9lLnBhcmFtc1YzPXI6ZS5tc2c9cixbMixqKHt1cmw6XCJodHRwczovL2FwcC5zcXVhcmVsaW5rLmNvbS9tc2c/dmVyc2lvbj0xLjEuNFwiLHBhcmFtczplfSkudGhlbigoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5lcnJvcixyPWUucmVzdWx0O2lmKHQpdGhyb3cgbmV3IHgodCk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShyKX0pKV19KSl9KSl9KHtjbGllbnRfaWQ6ci5jbGllbnRfaWQsbWV0aG9kOm98fFwiZXRoX3NpZ25cIixtZXNzYWdlOmksYWNjb3VudDpufSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIHQobnVsbCxlKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSxudWxsKX0pKSxbMl0pOih0KG5ldyB4KFwiTm8gYWNjb3VudHMgYXZhaWxhYmxlXCIpLG51bGwpLFsyXSl9KSl9KSl9LHNpZ25QZXJzb25hbE1lc3NhZ2U6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGUodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3JldHVybiByZSh0aGlzLChmdW5jdGlvbihuKXtyZXR1cm4gci5hY2NvdW50cy5sZW5ndGg/KHRoaXMuc2lnbk1lc3NhZ2UoZWUoe30sZSx7bWV0aG9kOlwiZXRoX3BlcnNvbmFsU2lnblwifSksKGZ1bmN0aW9uKGUscil7ZT90KGUsbnVsbCk6dChudWxsLHIpfSkpLFsyXSk6KHQobmV3IHgoXCJObyBhY2NvdW50cyBhdmFpbGFibGVcIiksbnVsbCksWzJdKX0pKX0pKX0sc2lnblR5cGVkTWVzc2FnZTpmdW5jdGlvbihlLHQpe3JldHVybiB0ZSh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7cmV0dXJuIHJlKHRoaXMsKGZ1bmN0aW9uKG4pe3JldHVybiByLmFjY291bnRzLmxlbmd0aD8odGhpcy5zaWduTWVzc2FnZShlZSh7fSxlLHttZXRob2Q6XCJldGhfc2lnblR5cGVkRGF0YVwifSksKGZ1bmN0aW9uKGUscil7ZT90KGUsbnVsbCk6dChudWxsLHIpfSkpLFsyXSk6KHQobmV3IHgoXCJObyBhY2NvdW50cyBhdmFpbGFibGVcIiksbnVsbCksWzJdKX0pKX0pKX0sc2lnblR5cGVkTWVzc2FnZVYzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRlKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXtyZXR1cm4gcmUodGhpcywoZnVuY3Rpb24obil7cmV0dXJuIHIuYWNjb3VudHMubGVuZ3RoPyh0aGlzLnNpZ25NZXNzYWdlKGVlKHt9LGUse21ldGhvZDpcImV0aF9zaWduVHlwZWREYXRhX3YzXCJ9KSwoZnVuY3Rpb24oZSxyKXtlP3QoZSxudWxsKTp0KG51bGwscil9KSksWzJdKToodChuZXcgeChcIk5vIGFjY291bnRzIGF2YWlsYWJsZVwiKSxudWxsKSxbMl0pfSkpfSkpfX0pO24uYWRkUHJvdmlkZXIoaSksbi5hZGRQcm92aWRlcihhKSxuLmFkZFByb3ZpZGVyKGYpLG4uYWRkUHJvdmlkZXIodSksbi5hZGRQcm92aWRlcihsLDApO3ZhciBwPXRoaXMucnBjVXJsLHk9dGhpcy5jb25uZWN0aW9uVHlwZTtcImh0dHBcIj09PXk/KG4uYWRkUHJvdmlkZXIobmV3IG0uYSh7cnBjVXJsOnB9KSksbi5hZGRQcm92aWRlcihuZXcgdy5hLDIpLG4uYWRkUHJvdmlkZXIobmV3IGguYSwxKSk6XCJ3c1wiPT09eSYmbi5hZGRQcm92aWRlcihuZXcgQS5hKHtycGNVcmw6cH0pKSxuLm9uKFwiZXJyb3JcIiwoZnVuY3Rpb24oZSl7Y29uc29sZS5lcnJvcihlLnN0YWNrKX0pKSxuLmVuYWJsZT1mdW5jdGlvbigpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSx0KXtyLnRva2VuP1Eoci50b2tlbix7c2NvcGU6ci5zY29wZX0pLnRoZW4oKGZ1bmN0aW9uKHQpe3ZhciBuPXQuZW1haWwsaT10Lm5hbWUsbz10LnNlY3VyaXR5U2V0dGluZ3MsYT10LmFjY291bnRzO3IuYWNjb3VudHM9YSxyLmRlZmF1bHRFbWFpbD1uLHIuZGVmYXVsdE5hbWU9aSxyLmRlZmF1bHRTZWN1cml0eVNldHRpbmdzPW8sZShhKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSxudWxsKX0pKTpmdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PXt9KTt2YXIgcj17XCJ3YWxsZXRzOnJlYWRcIjoxfTt0LnNjb3BlJiZ0LnNjb3BlLmxlbmd0aCYmdC5zY29wZS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gcltlXT0xfSkpLHI9T2JqZWN0LmtleXMocikudG9TdHJpbmcoKS5yZXBsYWNlKC8gL2csXCJcIik7cmV0dXJuIGooe3VybDpcImh0dHBzOi8vYXBwLnNxdWFyZWxpbmsuY29tL2F1dGhvcml6ZT92ZXJzaW9uPTEuMS40XCIscGFyYW1zOnt2ZXJzaW9uOlwiMS4xLjRcIixjbGllbnRfaWQ6ZSxzY29wZTpcIltcIityK1wiXVwiLHJlc3BvbnNlX3R5cGU6XCJ0b2tlblwiLHdpZGdldDohMH19KS50aGVuKChmdW5jdGlvbihlKXt2YXIgcj1lLmVycm9yLG49ZS5yZXN1bHQ7cmV0dXJuIHI/UHJvbWlzZS5yZWplY3QobmV3IHgocikpOlEobix0KX0pKX0oci5jbGllbnRfaWQse3Njb3BlOnIuc2NvcGV9KS50aGVuKChmdW5jdGlvbih0KXt2YXIgbj10LmVtYWlsLGk9dC5uYW1lLG89dC5zZWN1cml0eVNldHRpbmdzLGE9dC5hY2NvdW50cztyLmFjY291bnRzPWEsci5kZWZhdWx0RW1haWw9bixyLmRlZmF1bHROYW1lPWksci5kZWZhdWx0U2VjdXJpdHlTZXR0aW5ncz1vLGUoYSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpfSkpfSkpfSxuLnN0YXJ0KCksdGhpcy5lbmdpbmU9bn0sZS5wcm90b3R5cGUuZ2V0RW1haWw9ZnVuY3Rpb24oKXtpZighdGhpcy5zY29wZS5pbmNsdWRlcyhcInVzZXJcIikmJiF0aGlzLnNjb3BlLmluY2x1ZGVzKFwidXNlcjplbWFpbFwiKSl0aHJvdyBuZXcgeChcIlBsZWFzZSBlbmFibGUgdGhlIHVzZXI6ZW1haWwgc2NvcGUgd2hlbiBpbml0aWFsaXppbmcgU3F1YXJlbGlua1wiKTtyZXR1cm4gdGhpcy5kZWZhdWx0RW1haWx9LGUucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtpZighdGhpcy5zY29wZS5pbmNsdWRlcyhcInVzZXJcIikmJiF0aGlzLnNjb3BlLmluY2x1ZGVzKFwidXNlcjpuYW1lXCIpKXRocm93IG5ldyB4KFwiUGxlYXNlIGVuYWJsZSB0aGUgdXNlcjpuYW1lIHNjb3BlIHdoZW4gaW5pdGlhbGl6aW5nIFNxdWFyZWxpbmtcIik7cmV0dXJuIHRoaXMuZGVmYXVsdE5hbWV9LGUucHJvdG90eXBlLmdldFNlY3VyaXR5U2V0dGluZ3M9ZnVuY3Rpb24oKXtpZighdGhpcy5zY29wZS5pbmNsdWRlcyhcInVzZXJcIikmJiF0aGlzLnNjb3BlLmluY2x1ZGVzKFwidXNlcjpzZWN1cml0eVwiKSl0aHJvdyBuZXcgeChcIlBsZWFzZSBlbmFibGUgdGhlIHVzZXI6c2VjdXJpdHkgc2NvcGUgd2hlbiBpbml0aWFsaXppbmcgU3F1YXJlbGlua1wiKTtyZXR1cm4gdGhpcy5kZWZhdWx0U2VjdXJpdHlTZXR0aW5nc30sZX0oKTt0LmRlZmF1bHQ9bmV9XSkuZGVmYXVsdH0pKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/squarelink/lib/squarelink.min.js\n");
/***/ })
}]);