@datagrok/eda 1.1.16 → 1.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/dist/221.js +1 -1
- package/dist/246.js +2 -0
- package/dist/42.js +2 -2
- package/dist/523.js +3 -0
- package/dist/590.js +1 -1
- package/dist/694.js +2 -2
- package/dist/972.js +2 -0
- package/dist/package-test.js +2 -2
- package/dist/package.js +2 -2
- package/package.json +3 -3
- package/src/package.ts +6 -3
- package/dist/133.js +0 -3
- package/dist/352.js +0 -2
- package/dist/709.js +0 -2
- /package/dist/{133.js.LICENSE.txt → 523.js.LICENSE.txt} +0 -0
package/dist/133.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/*! For license information please see 133.js.LICENSE.txt */
|
|
2
|
-
(self.webpackChunkeda=self.webpackChunkeda||[]).push([[133],{7905:(t,e,n)=>{"use strict";t=n.hmd(t);var r,i=(r="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0,function(t={}){var e,n,i=void 0!==t?t:{};i.ready=new Promise((function(t,r){e=t,n=r}));var s,a=Object.assign({},i),o="object"==typeof window,c="function"==typeof importScripts,u=("object"==typeof process&&"object"==typeof process.versions&&process.versions.node,"");(o||c)&&(c?u=self.location.href:"undefined"!=typeof document&&document.currentScript&&(u=document.currentScript.src),r&&(u=r),u=0!==u.indexOf("blob:")?u.substr(0,u.replace(/[?#].*/,"").lastIndexOf("/")+1):"",c&&(s=t=>{var e=new XMLHttpRequest;return e.open("GET",t,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)})),i.print||console.log.bind(console);var h,l,f=i.printErr||console.warn.bind(console);Object.assign(i,a),a=null,i.arguments&&i.arguments,i.thisProgram&&i.thisProgram,i.quit&&i.quit,i.wasmBinary&&(h=i.wasmBinary),i.noExitRuntime,"object"!=typeof WebAssembly&&M("no native wasm support detected");var d,p,m,g=!1;function y(){var t=l.buffer;i.HEAP8=d=new Int8Array(t),i.HEAP16=new Int16Array(t),i.HEAP32=new Int32Array(t),i.HEAPU8=p=new Uint8Array(t),i.HEAPU16=new Uint16Array(t),i.HEAPU32=m=new Uint32Array(t),i.HEAPF32=new Float32Array(t),i.HEAPF64=new Float64Array(t)}var w=[],b=[],v=[],A=0,x=null,E=null;function M(t){i.onAbort&&i.onAbort(t),f(t="Aborted("+t+")"),g=!0,t+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(t);throw n(e),e}var I,N;function S(t){return t.startsWith("data:application/octet-stream;base64,")}function k(t){try{if(t==I&&h)return new Uint8Array(h);if(s)return s(t);throw"both async and sync fetching of the wasm failed"}catch(t){M(t)}}function C(t,e,n){return function(t){return h||!o&&!c||"function"!=typeof fetch?Promise.resolve().then((function(){return k(t)})):fetch(t,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+t+"'";return e.arrayBuffer()})).catch((function(){return k(t)}))}(t).then((function(t){return WebAssembly.instantiate(t,e)})).then((function(t){return t})).then(n,(function(t){f("failed to asynchronously prepare wasm: "+t),M(t)}))}function L(t){for(;t.length>0;)t.shift()(i)}function R(t){this.excPtr=t,this.ptr=t-24,this.set_type=function(t){m[this.ptr+4>>2]=t},this.get_type=function(){return m[this.ptr+4>>2]},this.set_destructor=function(t){m[this.ptr+8>>2]=t},this.get_destructor=function(){return m[this.ptr+8>>2]},this.set_caught=function(t){t=t?1:0,d[this.ptr+12>>0]=t},this.get_caught=function(){return 0!=d[this.ptr+12>>0]},this.set_rethrown=function(t){t=t?1:0,d[this.ptr+13>>0]=t},this.get_rethrown=function(){return 0!=d[this.ptr+13>>0]},this.init=function(t,e){this.set_adjusted_ptr(0),this.set_type(t),this.set_destructor(e)},this.set_adjusted_ptr=function(t){m[this.ptr+16>>2]=t},this.get_adjusted_ptr=function(){return m[this.ptr+16>>2]},this.get_exception_ptr=function(){if(j(this.get_type()))return m[this.excPtr>>2];var t=this.get_adjusted_ptr();return 0!==t?t:this.excPtr}}function D(t){var e=l.buffer;try{return l.grow(t-e.byteLength+65535>>>16),y(),1}catch(t){}}function z(t){return i["_"+t]}S(I="wasmDbscan.wasm")||(N=I,I=i.locateFile?i.locateFile(N,u):u+N);var O="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function _(t,e,n,r,i){var s={string:t=>{var e=0;return null!=t&&0!==t&&(e=function(t){var e=function(t){for(var e=0,n=0;n<t.length;++n){var r=t.charCodeAt(n);r<=127?e++:r<=2047?e+=2:r>=55296&&r<=57343?(e+=4,++n):e+=3}return e}(t)+1,n=U(e);return function(t,e,n){!function(t,e,n,r){if(!(r>0))return 0;for(var i=n+r-1,s=0;s<t.length;++s){var a=t.charCodeAt(s);if(a>=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&t.charCodeAt(++s)),a<=127){if(n>=i)break;e[n++]=a}else if(a<=2047){if(n+1>=i)break;e[n++]=192|a>>6,e[n++]=128|63&a}else if(a<=65535){if(n+2>=i)break;e[n++]=224|a>>12,e[n++]=128|a>>6&63,e[n++]=128|63&a}else{if(n+3>=i)break;e[n++]=240|a>>18,e[n++]=128|a>>12&63,e[n++]=128|a>>6&63,e[n++]=128|63&a}}e[n]=0}(t,p,e,n)}(t,n,e),n}(t)),e},array:t=>{var e,n,r=U(t.length);return e=t,n=r,d.set(e,n),r}},a=z(t),o=[],c=0;if(r)for(var u=0;u<r.length;u++){var h=s[n[u]];h?(0===c&&(c=P()),o[u]=h(r[u])):o[u]=r[u]}var l=a.apply(null,o);return function(t){return 0!==c&&F(c),function(t){return"string"===e?(n=t)?function(t,e,n){for(var r=e+n,i=e;t[i]&&!(i>=r);)++i;if(i-e>16&&t.buffer&&O)return O.decode(t.subarray(e,i));for(var s="";e<i;){var a=t[e++];if(128&a){var o=63&t[e++];if(192!=(224&a)){var c=63&t[e++];if((a=224==(240&a)?(15&a)<<12|o<<6|c:(7&a)<<18|o<<12|c<<6|63&t[e++])<65536)s+=String.fromCharCode(a);else{var u=a-65536;s+=String.fromCharCode(55296|u>>10,56320|1023&u)}}else s+=String.fromCharCode((31&a)<<6|o)}else s+=String.fromCharCode(a)}return s}(p,n,r):"":"boolean"===e?Boolean(t):t;var n,r}(t)}(l)}var B,T={__cxa_throw:function(t,e,n){throw new R(t).init(e,n),t},abort:function(){M("")},emscripten_memcpy_big:function(t,e,n){p.copyWithin(t,e,e+n)},emscripten_resize_heap:function(t){var e,n=p.length,r=2147483648;if((t>>>=0)>r)return!1;for(var i=1;i<=4;i*=2){var s=n*(1+.2/i);if(s=Math.min(s,t+100663296),D(Math.min(r,(e=Math.max(t,s))+(65536-e%65536)%65536)))return!0}return!1}},P=(function(){var t,e,r,s,a={env:T,wasi_snapshot_preview1:T};function o(t,e){var n,r=t.exports;return i.asm=r,l=i.asm.memory,y(),i.asm.__indirect_function_table,n=i.asm.__wasm_call_ctors,b.unshift(n),function(t){if(A--,i.monitorRunDependencies&&i.monitorRunDependencies(A),0==A&&(null!==x&&(clearInterval(x),x=null),E)){var e=E;E=null,e()}}(),r}if(A++,i.monitorRunDependencies&&i.monitorRunDependencies(A),i.instantiateWasm)try{return i.instantiateWasm(a,o)}catch(t){f("Module.instantiateWasm callback failed with error: "+t),n(t)}(t=h,e=I,r=a,s=function(t){o(t.instance)},t||"function"!=typeof WebAssembly.instantiateStreaming||S(e)||"function"!=typeof fetch?C(e,r,s):fetch(e,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,r).then(s,(function(t){return f("wasm streaming compile failed: "+t),f("falling back to ArrayBuffer instantiation"),C(e,r,s)}))}))).catch(n)}(),i._dbscan=function(){return(i._dbscan=i.asm.dbscan).apply(null,arguments)},i._malloc=function(){return(i._malloc=i.asm.malloc).apply(null,arguments)},i._free=function(){return(i._free=i.asm.free).apply(null,arguments)},function(){return(P=i.asm.stackSave).apply(null,arguments)}),F=function(){return(F=i.asm.stackRestore).apply(null,arguments)},U=function(){return(U=i.asm.stackAlloc).apply(null,arguments)},j=function(){return(j=i.asm.__cxa_is_pointer_type).apply(null,arguments)};function $(){function t(){B||(B=!0,i.calledRun=!0,g||(L(b),e(i),i.onRuntimeInitialized&&i.onRuntimeInitialized(),function(){if(i.postRun)for("function"==typeof i.postRun&&(i.postRun=[i.postRun]);i.postRun.length;)t=i.postRun.shift(),v.unshift(t);var t;L(v)}()))}A>0||(function(){if(i.preRun)for("function"==typeof i.preRun&&(i.preRun=[i.preRun]);i.preRun.length;)t=i.preRun.shift(),w.unshift(t);var t;L(w)}(),A>0||(i.setStatus?(i.setStatus("Running..."),setTimeout((function(){setTimeout((function(){i.setStatus("")}),1),t()}),1)):t()))}if(i.ccall=_,i.cwrap=function(t,e,n,r){var i=!n||n.every((t=>"number"===t||"boolean"===t));return"string"!==e&&i&&!r?z(t):function(){return _(t,e,n,arguments)}},E=function t(){B||$(),B||(E=t)},i.preInit)for("function"==typeof i.preInit&&(i.preInit=[i.preInit]);i.preInit.length>0;)i.preInit.pop()();return $(),t.ready});"object"==typeof exports?t.exports=i:"function"==typeof define&&n.amdO?define([],(function(){return i})):"object"==typeof exports&&(exports.exportCppDbscanLib=i)},6814:(t,e,n)=>{"use strict";n.d(e,{cZ:()=>i,kK:()=>r}),n(7862);const r=t=>null==t;function i(t,e,n,r){if(n>t[t.length-1])return;const i=t.findIndex((t=>n<t));t.pop(),t.splice(i,0,n),e.pop(),e.splice(i,0,r)}},8133:(t,e,n)=>{"use strict";class r extends Float32Array{}var i=n(1040),s=n(1811),a=n(3979),o=n(5697);function c(t=!1,e="Assertion error."){if(!t)throw new Error(e)}var u=n(489);const h={[i.CF.Euclidean]:function(t,e){let n=0;const r=t.length;if(r!==e.length)throw new Error("The dimensionality of the vectors must match");for(let i=0;i<r;++i)n+=Math.pow(t[i]-e[i],2);return Math.sqrt(n)}},l={[i.W.Levenshtein]:s.T,[i.W.JaroWinkler]:a.H$,[i.W.Manhattan]:function(t,e){if(t.length!==e.length)return 1;{let n=0;for(let r=1;r<t.length;r++)n+=t[r]==e[r]?0:1;return n/t.length}},[i.W.Onehot]:function(t,e){return t===e?0:1}},f={[i.gk.Tanimoto]:o.KR,[i.gk.Dice]:o._h,[i.gk.Asymmetric]:o.yU,[i.gk.BraunBlanquet]:o.Dz,[i.gk.Cosine]:o.Zd,[i.gk.Kulczynski]:o.s,[i.gk.McConnaughey]:o.aW,[i.gk.RogotGoldberg]:o.MI,[i.gk.Russel]:o.fX,[i.gk.Sokal]:o.NB,[i.gk.Hamming]:o.UX,[i.gk.Euclidean]:o.WI},d={[i.gd.TanimotoIntArray]:o.FV},p={[i.Yc.Difference]:o.bX},m={[i.gj.CommonItems]:o.Jv},g={[i.Qe.Vector]:{[i.CF.Euclidean]:h[i.CF.Euclidean]},[i.Qe.String]:{[i.W.Levenshtein]:l[i.W.Levenshtein],[i.W.JaroWinkler]:l[i.W.JaroWinkler],[i.W.Manhattan]:l[i.W.Manhattan],[i.W.Onehot]:l[i.W.Onehot]},[i.Qe.BitArray]:{[i.gk.Tanimoto]:f[i.gk.Tanimoto],[i.gk.Dice]:f[i.gk.Dice],[i.gk.Asymmetric]:f[i.gk.Asymmetric],[i.gk.BraunBlanquet]:f[i.gk.BraunBlanquet],[i.gk.Cosine]:f[i.gk.Cosine],[i.gk.Kulczynski]:f[i.gk.Kulczynski],[i.gk.McConnaughey]:f[i.gk.McConnaughey],[i.gk.RogotGoldberg]:f[i.gk.RogotGoldberg],[i.gk.Russel]:f[i.gk.Russel],[i.gk.Sokal]:f[i.gk.Sokal]},[i.Qe.MacroMolecule]:{[u.U.HAMMING]:u.o[u.U.HAMMING],[u.U.LEVENSHTEIN]:u.o[u.U.LEVENSHTEIN],[u.U.NEEDLEMANN_WUNSCH]:u.o[u.U.NEEDLEMANN_WUNSCH],[u.U.MONOMER_CHEMICAL_DISTANCE]:u.o[u.U.MONOMER_CHEMICAL_DISTANCE]},[i.Qe.Number]:{[i.Yc.Difference]:p[i.Yc.Difference]},[i.Qe.IntArray]:{[i.gd.TanimotoIntArray]:d[i.gd.TanimotoIntArray]},[i.Qe.NumberArray]:{[i.gj.CommonItems]:m[i.gj.CommonItems]}},y=Object.keys(g).reduce(((t,e)=>{for(const n of Object.keys(g[e]))t[n]=e;return t}),{});class w{constructor(t){this.method=t,this.dataType=y[t]}metricNeedsArgs(t){return y[t]==i.Qe.MacroMolecule.toString()||y[t]==i.Qe.Number.toString()||function(t){return y[t]==i.Qe.NumberArray.toString()}(t)}getMeasure(t){const e=g;if(!e.hasOwnProperty(this.dataType)||!e[this.dataType].hasOwnProperty(this.method))throw new Error(`Unknown measure ${this.method} for data type ${this.dataType}`);return this.metricNeedsArgs(this.method)?e[this.dataType][this.method](t):e[this.dataType][this.method]}static getMetricByDataType(t){return Object.keys(g[t])}static get availableMeasures(){return Object.keys(g)}}n(6814);var b=n(7862);class v{constructor(t=!0,e=!0){const r=navigator.hardwareConcurrency;this._workerCount=t?Math.max(r-2,1):1,this._workers=new Array(this._workerCount).fill(null).map((()=>new Worker(new URL(n.p+n.u(65),n.b)))),this._terminateOnComplete=e}async calc(t,e,n=!0,r){return await this.calcMulti([t],[e],n,[r??{}],[1],b.y.MANHATTAN)}async calcMulti(t,e,n=!0,r=[{}],i=[1],s=b.y.MANHATTAN){if(t.length<1)throw new Error("values must contain at least one array");if(e.length!==t.length||r.length!==t.length||i.length!==t.length)throw new Error("values, fnNames, weights and opts must have the same length");return new Promise((async(a,o)=>{try{const o=t[0].length,c=new Array(this._workerCount),u=o*(o-1)/2;this._workerCount=Math.min(this._workerCount,u);const h=u/this._workerCount,l=new Float32Array(u);let f=0,d=1,p=0,m=Number.MIN_VALUE;for(let n=0;n<this._workerCount;n++){const a=Math.floor(n*h),g=n===this._workerCount-1?u:Math.floor((n+1)*h),y=f,w=d;n!==this._workerCount-1&&(f=o-2-Math.floor(Math.sqrt(-8*g+4*o*(o-1)-7)/2-.5),d=g-o*f+Math.floor((f+1)*(f+2)/2)),this._workers[n].postMessage({values:t,fnNames:e,startRow:y,startCol:w,chunckSize:g-a,opts:r,weights:i,aggregationMethod:s}),c[n]=new Promise(((t,e)=>{this._workers[n].onmessage=({data:{error:r,distanceMatrixData:i,min:s,max:o}})=>{this._terminateOnComplete&&setTimeout((()=>this._workers[n].terminate())),r?e(r):(l.set(i,a),s<p&&(p=s),o>m&&(m=o),t())}}))}await Promise.all(c),n&&l.forEach(((t,e)=>{l[e]=(t-p)/(m-p)})),a(l)}catch(t){o(t)}}))}terminate(){this._workers.forEach((t=>t.terminate()))}}function A(t,e){return Math.floor(e()*t)}function x(t){return t()}function E(t){const e=[];for(let n=0;n<t;n++)e.push(void 0);return e}function M(t){return E(t).map(((t,e)=>e))}function I(t,e){return E(t).map((()=>e))}function N(t){return I(t,0)}function S(t){return function(t){return t.reduce(((t,e)=>t+e))}(t)/t.length}function k(t){let e=0;for(let n=0;n<t.length;n++)e=t[n]>e?t[n]:e;return e}function C(t,e,n){const r=N(t);for(let i=0;i<t;i++){let t=!0;for(;t;){const s=A(e,n);let a=!1;for(let t=0;t<i;t++)if(s===r[t]){a=!0;break}a||(t=!1),r[i]=s}}return r}function L(t,e,n){const r=[];let i=0;if(t.length!==e*n)throw new Error("Array dimensions must match input length.");for(let s=0;s<e;s++){const e=[];for(let r=0;r<n;r++)e.push(t[i]),i+=1;r.push(e)}return r}function R(t,e){const n=n=>E(t).map((()=>I(e,n))),r=[];return r.push(n(-1)),r.push(n(1/0)),r.push(n(0)),r}function D(t,e,n){const r=N(t);for(let i=0;i<t;i++){let t=!0,s=0;for(;t;){s=A(e,n);let a=!1;for(let t=0;t<i;t++)if(s===r[t]){a=!0;break}a||(t=!1)}r[i]=s}return r}function z(t,e,n,r,i){e=Math.floor(e);const s=t[0][e];if(n>=t[1][e][0])return 0;for(let t=0;t<s.length;t++)if(r===s[t])return 0;return O(t,e,n,r,i)}function O(t,e,n,r,i){const s=t[0][e],a=t[1][e],o=t[2][e];if(n>=a[0])return 0;a[0]=n,s[0]=r,o[0]=i;let c=0,u=0;for(;;){const e=2*c+1,r=e+1,i=t[0][0].length;if(e>=i)break;if(r>=i){if(!(a[e]>n))break;u=e}else if(a[e]>=a[r]){if(!(n<a[e]))break;u=e}else{if(!(n<a[r]))break;u=r}a[c]=a[u],s[c]=s[u],o[c]=o[u],c=u}return a[c]=n,s[c]=r,o[c]=i,1}function _(t,e,n,r,i){const s=R(e,r);for(let r=0;r<e;r++)for(let e=0;e<n;e++){if(t[0][r][e]<0)continue;const n=t[0][r][e],a=t[2][r][e],o=x(i);z(s,r,o,n,a),z(s,n,o,r,a),t[2][r][e]=0}return s}function B(t){const e=t[0],n=t[1];for(let t=0;t<e.length;t++){const r=e[t],i=n[t];for(let t=0;t<r.length-1;t++){const e=r.length-t-1,n=i.length-t-1,s=r[0];r[0]=r[e],r[e]=s;const a=i[0];i[0]=i[n],i[n]=a,T(i,r,n,0)}}return{indices:e,weights:n}}function T(t,e,n,r){for(;2*r+1<n;){const i=2*r+1,s=i+1;let a=r;if(t[a]<t[i]&&(a=i),s<n&&t[a]<t[s]&&(a=s),a===r)break;{const n=t[r];t[r]=t[a],t[a]=n;const i=e[r];e[r]=e[a],e[a]=i,r=a}}}function P(t,e){const n=t[0][e],r=t[1][e],i=t[2][e];let s=1/0,a=-1;for(let t=0;t>n.length;t++)1===i[t]&&r[t]<s&&(s=r[t],a=t);return a>=0?(i[a]=0,Math.floor(n[a])):-1}class F{constructor(t,e,n,r){if(this.entries=new Map,this.nRows=0,this.nCols=0,t.length!==e.length||t.length!==n.length)throw new Error("rows, cols and values arrays must all have the same length");this.nRows=r[0],this.nCols=r[1];for(let r=0;r<n.length;r++){const i=t[r],s=e[r];this.checkDims(i,s);const a=this.makeKey(i,s);this.entries.set(a,{value:n[r],row:i,col:s})}}makeKey(t,e){return`${t}:${e}`}checkDims(t,e){if(!(t<this.nRows&&e<this.nCols))throw new Error("row and/or col specified outside of matrix dimensions")}set(t,e,n){this.checkDims(t,e);const r=this.makeKey(t,e);this.entries.has(r)?this.entries.get(r).value=n:this.entries.set(r,{value:n,row:t,col:e})}get(t,e,n=0){const r=this.makeKey(t,e);return this.entries.has(r)?this.entries.get(r).value:n}getAll(t=!0){const e=new Array(this.entries.size).fill(null);let n=0;return this.entries.forEach((t=>{e[n++]=t})),t&&e.sort(((t,e)=>t.row===e.row?t.col-e.col:t.row-e.row)),e}getDims(){return[this.nRows,this.nCols]}getRows(){return Array.from(this.entries,(([t,e])=>e.row))}getCols(){return Array.from(this.entries,(([t,e])=>e.col))}getValues(){return Array.from(this.entries,(([t,e])=>e.value))}forEach(t){this.entries.forEach((e=>t(e.value,e.row,e.col)))}map(t){const e=new Float32Array(this.entries.size);let n=0;this.entries.forEach((r=>{e[n++]=t(r.value,r.row,r.col)}));const r=[this.nRows,this.nCols];return new F(this.getRows(),this.getCols(),e,r)}toArray(){const t=E(this.nRows).map((()=>N(this.nCols)));return this.entries.forEach((e=>{t[e.row][e.col]=e.value})),t}}function U(t){const e=t.getRows(),n=t.getCols(),r=t.getValues(),i=n.length,s=new Int32Array(i),a=new Int32Array(i),o=new Float32Array(i);s.set(e),a.set(n),o.set(r);const c=[t.nCols,t.nRows];return new F(a,s,o,c)}function j(t,e){return q(t,e,((t,e)=>t*e))}function $(t,e){return q(t,e,((t,e)=>t+e))}function G(t,e){return q(t,e,((t,e)=>t-e))}function W(t,e){return t.map((t=>t*e))}function H(t){const e=new Set,n=t.getValues(),r=t.getRows(),i=t.getCols();for(let t=0;t<n.length;t++)0===n[t]&&e.add(t);const s=(t,n)=>!e.has(n),a=n.filter(s),o=r.filter(s),c=i.filter(s);return new F(o,c,a,t.getDims())}function Y(t,e="l2"){const n=V[e],r=new Map;t.forEach(((t,e,n)=>{const i=r.get(e)||[];i.push(n),r.set(e,i)}));const i=new F([],[],[],t.getDims());for(const e of r.keys()){const s=r.get(e).sort(),a=n(s.map((n=>t.get(e,n))));for(let t=0;t<a.length;t++)i.set(e,s[t],a[t])}return i}const V={max:t=>{let e=-1/0;for(let n=0;n<t.length;n++)e=t[n]>e?t[n]:e;return t.map((t=>t/e))},l1:t=>{let e=0;for(let n=0;n<t.length;n++)e+=t[n];return t.map((t=>t/e))},l2:t=>{let e=0;for(let n=0;n<t.length;n++)e+=t[n]**2;return t.map((t=>Math.sqrt(t**2/e)))}};function q(t,e,n){const r=new Set,i=[],s=[],a=[],o=(r,o)=>{i.push(r),s.push(o);const c=n(t.get(r,o),e.get(r,o));a.push(c)},c=t.getValues(),u=t.getRows(),h=t.getCols();for(let t=0;t<c.length;t++){const e=u[t],n=h[t],i=`${e}:${n}`;r.add(i),o(e,n)}const l=e.getValues(),f=e.getRows(),d=e.getCols();for(let t=0;t<l.length;t++){const e=f[t],n=d[t],i=`${e}:${n}`;r.has(i)||o(e,n)}const p=[t.nRows,t.nCols];return new F(i,s,a,p)}function K(t){const e=[];t.forEach(((t,n,r)=>{e.push({value:t,row:n,col:r})})),e.sort(((t,e)=>t.row===e.row?t.col-e.col:t.row-e.row));const n=[],r=[],i=[];let s=-1;for(let t=0;t<e.length;t++){const{row:a,col:o,value:c}=e[t];a!==s&&(s=a,i.push(t)),n.push(o),r.push(c)}return{indices:n,values:r,indptr:i}}class X{constructor(t,e,n,r){this.hyperplanes=t,this.offsets=e,this.children=n,this.indices=r}}function Q(t,e,n,r){const i=Math.max(10,e),s=M(n).map(((e,n)=>function(t,e=30,n,r){return Z(t,M(t.length),e,n,r)}(t,i,n,r))),a=s.map((t=>function(t,e){const n=tt(t),r=et(t),i=M(n).map((()=>t.hyperplane?1:0)),s=N(n),a=M(n).map((()=>[-1,-1])),o=M(r).map((()=>M(e).map((()=>-1))));return J(t,i,s,a,o,0,0),new X(i,s,a,o)}(t,i)));return a}function Z(t,e,n=30,r,i){if(e.length>n){const s=function(t,e,n){const r=A(e.length,n);let i=A(e.length,n);i+=r===i?1:0,i%=e.length;const s=e[r],a=e[i];let o=0,c=0;c=t[s]-t[a],o-=c*(t[s]+t[a])/2;let u=0,h=0;const l=N(e.length);for(let r=0;r<e.length;r++){let i=o;i+=c*t[e[r]],0===i?(l[r]=A(2,n),0===l[r]?u+=1:h+=1):i>0?(l[r]=0,u+=1):(l[r]=1,h+=1)}const f=N(u),d=N(h);u=0,h=0;for(let t=0;t<l.length;t++)0===l[t]?(f[u]=e[t],u+=1):(d[h]=e[t],h+=1);return{indicesLeft:f,indicesRight:d,hyperplane:c,offset:o}}(t,e,i),{indicesLeft:a,indicesRight:o,hyperplane:c,offset:u}=s;return{leftChild:Z(t,a,n,r+1,i),rightChild:Z(t,o,n,r+1,i),isLeaf:!1,hyperplane:c,offset:u}}return{indices:e,isLeaf:!0}}function J(t,e,n,r,i,s,a){if(t.isLeaf)return r[s][0]=-a,i[a].splice(0,t.indices.length,...t.indices),{nodeNum:s,leafNum:a+=1};{e[s]=t.hyperplane,n[s]=t.offset,r[s][0]=s+1;const o=s;let c=J(t.leftChild,e,n,r,i,s+1,a);return s=c.nodeNum,a=c.leafNum,r[o][1]=s+1,c=J(t.rightChild,e,n,r,i,s+1,a),{nodeNum:c.nodeNum,leafNum:c.leafNum}}}function tt(t){return t.isLeaf?1:1+tt(t.leftChild)+tt(t.rightChild)}function et(t){return t.isLeaf?1:et(t.leftChild)+et(t.rightChild)}function nt(t,e,n,r){let i=e;return i+=t*n,0===i?A(2,r):i>0?0:1}function rt(t,e,n){let r=0;for(;e.children[r][0]>0;)r=0===nt(e.hyperplanes[r],e.offsets[r],t,n)?e.children[r][0]:e.children[r][1];const i=-1*e.children[r][0];return e.indices[i]}var it=n(7531),st=n(1353),at=n(4162);const ot=1e-5,ct=.001;class ut{get neighbors(){return this.nNeighbors}constructor(t={}){this.learningRate=1,this.localConnectivity=1,this.minDist=.1,this.nComponents=2,this.nEpochs=0,this.nNeighbors=15,this.negativeSampleRate=5,this.random=Math.random,this.repulsionStrength=1,this.setOpMixRatio=1,this.spread=1,this.transformQueueSize=4,this.targetMetric="categorical",this.targetWeight=.5,this.targetNNeighbors=15,this.distanceFn=ht,this.isInitialized=!1,this.rpForest=[],this.embedding=[],this.optimizationState=new lt;const e=e=>{void 0!==t[e]&&(this[e]=t[e])};e("distanceFn"),e("learningRate"),e("localConnectivity"),e("minDist"),e("nComponents"),e("nEpochs"),e("nNeighbors"),e("negativeSampleRate"),e("random"),e("repulsionStrength"),e("setOpMixRatio"),e("spread"),e("transformQueueSize"),this.targetNNeighbors=t.nNeighbors||this.nNeighbors||this.targetNNeighbors}fit(t){return this.initializeFit(t),this.optimizeLayout(),this.embedding}async fitAsync(t,e=(()=>!0)){return this.initializeFit(t),await this.optimizeLayoutAsync(e),this.embedding}setSupervisedProjection(t,e={}){this.Y=t,this.targetMetric=e.targetMetric||this.targetMetric,this.targetWeight=e.targetWeight||this.targetWeight,this.targetNNeighbors=e.targetNNeighbors||this.targetNNeighbors}setPrecomputedKNN(t,e){this.knnIndices=t,this.knnDistances=e}initializeFit(t){if(t.length<=this.nNeighbors)throw new Error(`Not enough data points (${t.length}) to create nNeighbors: ${this.nNeighbors}. Add more data points or adjust the configuration.`);if(this.X===t&&this.isInitialized)return this.getNEpochs();if(this.X=t,!this.knnIndices&&!this.knnDistances){const e=this.nearestNeighbors(t);this.knnIndices=e.knnIndices,this.knnDistances=e.knnDistances}this.graph=this.fuzzySimplicialSet(t,this.nNeighbors,this.setOpMixRatio),this.makeSearchFns(),this.searchGraph=this.makeSearchGraph(t),this.processGraphForSupervisedProjection();const{head:e,tail:n,epochsPerSample:r}=this.initializeSimplicialSetEmbedding();return this.optimizationState.head=e,this.optimizationState.tail=n,this.optimizationState.epochsPerSample=r,this.initializeOptimization(),this.prepareForOptimizationLoop(),this.isInitialized=!0,this.getNEpochs()}makeSearchFns(){const{initFromTree:t,initFromRandom:e}=(n=this.distanceFn,{initFromRandom:function(t,e,r,i,s){for(let a=0;a<r.length;a++){const o=C(t,e.length,s);for(let t=0;t<o.length;t++)o[t]<0||z(i,a,n(e[o[t]],r[a]),o[t],1)}},initFromTree:function(t,e,r,i,s){for(let a=0;a<r.length;a++){const o=rt(r[a],t,s);for(let t=0;t<o.length;t++){if(o[t]<0)return;z(i,a,n(e[o[t]],r[a]),o[t],1)}}}});var n;this.initFromTree=t,this.initFromRandom=e,this.search=function(t){return function(e,n,r,i){const{indices:s,indptr:a}=K(n);for(let n=0;n<i.length;n++){const o=new Set(r[0][n]);for(;;){const c=P(r,n);if(-1===c)break;const u=s.slice(a[c],a[c+1]);for(const s of u)s===c||-1===s||o.has(s)||(O(r,n,t(e[s],i[n]),s,1),o.add(s))}}return r}}(this.distanceFn)}makeSearchGraph(t){const e=this.knnIndices,n=this.knnDistances,r=[t.length,t.length],i=new F([],[],[],r);for(let t=0;t<e.length;t++){const r=e[t],s=n[t];for(let e=0;e<r.length;e++){const n=r[e],a=s[e];a>0&&i.set(t,n,a)}}return q(i,U(i),((t,e)=>t>e?t:e))}transform(t){const e=this.X;if(void 0===e||0===e.length)throw new Error("No data has been fit.");let n=Math.floor(this.nNeighbors*this.transformQueueSize);n=Math.min(e.length,n);const r=function(t,e,n,r,i,s,a){const o=R(n.length,r);if(i(r,e,n,o,a),t)for(const r of t)s(r,e,n,o,a);return o}(this.rpForest,e,t,n,this.initFromRandom,this.initFromTree,this.random),i=this.search(e,this.searchGraph,r,t);let{indices:s,weights:a}=B(i);s=s.map((t=>t.slice(0,this.nNeighbors))),a=a.map((t=>t.slice(0,this.nNeighbors)));const o=Math.max(0,this.localConnectivity-1),{sigmas:c,rhos:u}=this.smoothKNNDistance(a,this.nNeighbors,o),{rows:h,cols:l,vals:f}=this.computeMembershipStrengths(s,a,c,u),d=[t.length,e.length];let p=new F(h,l,f,d);const m=K(Y(p,"l1")),g=t.length,y=function(t,e,n){const r=N(t.length).map((t=>N(n[0].length)));for(let i=0;i<t.length;i++)for(let s=0;s<t[0].length;s++)for(let a=0;a<n[0].length;a++){const o=t[i][s];r[i][a]+=e[i][s]*n[o][a]}return r}(L(m.indices,g,this.nNeighbors),L(m.values,g,this.nNeighbors),this.embedding),w=this.nEpochs?this.nEpochs/3:p.nRows<=1e4?100:30,b=p.getValues().reduce(((t,e)=>e>t?e:t),0);p=p.map((t=>t<b/w?0:t)),p=H(p);const v=this.makeEpochsPerSample(p.getValues(),w),A=p.getRows(),x=p.getCols();return this.assignOptimizationStateParameters({headEmbedding:y,tailEmbedding:this.embedding,head:A,tail:x,currentEpoch:0,nEpochs:w,nVertices:p.getDims()[1],epochsPerSample:v}),this.prepareForOptimizationLoop(),this.optimizeLayout()}processGraphForSupervisedProjection(){const{Y:t,X:e}=this;if(t){if(t.length!==e.length)throw new Error("Length of X and y must be equal");if("categorical"===this.targetMetric){const e=this.targetWeight<1?1/(1-this.targetWeight)*2.5:1e12;this.graph=this.categoricalSimplicialSetIntersection(this.graph,t,e)}}}step(){const{currentEpoch:t}=this.optimizationState;return t<this.getNEpochs()&&this.optimizeLayoutStep(t),this.optimizationState.currentEpoch}getEmbedding(){return this.embedding}nearestNeighbors(t){const{distanceFn:e,nNeighbors:n}=this,r=function(t,e){return function(n,r,i,s=10,a=50,o=.001,c=.5,u=!0){const h=n.length,l=R(n.length,i);for(let r=0;r<n.length;r++){const s=D(i,n.length,e);for(let e=0;e<s.length;e++){const i=t(n[r],n[s[e]]);z(l,r,i,s[e],1),z(l,s[e],i,r,1)}}if(u)for(let e=0;e<r.length;e++)for(let i=0;i<r[e].length&&!(r[e][i]<0);i++)for(let s=i+1;s<r[e].length&&!(r[e][s]<0);s++){const a=t(n[r[e][i]],n[r[e][s]]);z(l,r[e][i],a,r[e][s],1),z(l,r[e][s],a,r[e][i],1)}for(let r=0;r<s;r++){const r=_(l,h,i,a,e);let s=0;for(let i=0;i<h;i++)for(let o=0;o<a;o++){const u=Math.floor(r[0][i][o]);if(!(u<0||x(e)<c))for(let e=0;e<a;e++){const a=Math.floor(r[0][i][e]),c=r[2][i][o],h=r[2][i][e];if(a<0||!c&&!h)continue;const f=t(n[u],n[a]);s+=z(l,u,f,a,1),s+=z(l,a,f,u,1)}}if(s<=o*i*n.length)break}return B(l)}}(e,this.random),i=5+Math.floor(.5==(s=t.length**.5/20)?0:Math.round(s));var s;const a=Math.max(5,Math.floor(Math.round((t=>Math.log(t)/Math.log(2))(t.length))));this.rpForest=Q(t,n,i,this.random);const o=function(t){if(t.length>0){const e=[];for(const n of t)e.push(...n.indices);return e}return[[-1]]}(this.rpForest),{indices:c,weights:u}=r(t,o,n,a);return{knnIndices:c,knnDistances:u}}fuzzySimplicialSet(t,e,n=1){const{knnIndices:r=[],knnDistances:i=[],localConnectivity:s}=this,{sigmas:a,rhos:o}=this.smoothKNNDistance(i,e,s),{rows:c,cols:u,vals:h}=this.computeMembershipStrengths(r,i,a,o),l=[t.length,t.length],f=new F(c,u,h,l),d=U(f),p=j(f,d),m=G($(f,d),p);return $(W(m,n),W(p,1-n))}categoricalSimplicialSetIntersection(t,e,n,r=1){let i=function(t,e,n=1,r=5){return t.map(((t,i,s)=>-1===e[i]||-1===e[s]?t*Math.exp(-n):e[i]!==e[s]?t*Math.exp(-r):t))}(t,e,r,n);return i=H(i),function(t){const e=U(t=Y(t,"max"));return H(t=$(t,G(e,j(e,t))))}(i)}smoothKNNDistance(t,e,n=1,r=64,i=1){const s=Math.log(e)/Math.log(2)*i,a=N(t.length),o=N(t.length);for(let e=0;e<t.length;e++){let i=0,c=1/0,u=1;const h=t[e],l=h.filter((t=>t>0));if(l.length>=n){const t=Math.floor(n),r=n-t;t>0?(a[e]=l[t-1],r>ot&&(a[e]+=r*(l[t]-l[t-1]))):a[e]=r*l[0]}else l.length>0&&(a[e]=k(l));for(let n=0;n<r;n++){let n=0;for(let r=1;r<t[e].length;r++){const i=t[e][r]-a[e];n+=i>0?Math.exp(-i/u):1}if(Math.abs(n-s)<ot)break;n>s?(c=u,u=(i+c)/2):(i=u,c===1/0?u*=2:u=(i+c)/2)}if(o[e]=u,a[e]>0){const t=S(h);o[e]<ct*t&&(o[e]=ct*t)}else{const n=S(t.map(S));o[e]<ct*n&&(o[e]=ct*n)}}return{sigmas:o,rhos:a}}computeMembershipStrengths(t,e,n,r){const i=t.length,s=t[0].length,a=N(i*s),o=N(i*s),c=N(i*s);for(let u=0;u<i;u++)for(let i=0;i<s;i++){let h=0;-1!==t[u][i]&&(h=t[u][i]===u?0:e[u][i]-r[u]<=0?1:Math.exp(-(e[u][i]-r[u])/n[u]),a[u*s+i]=u,o[u*s+i]=t[u][i],c[u*s+i]=h)}return{rows:a,cols:o,vals:c}}initializeSimplicialSetEmbedding(){const t=this.getNEpochs(),{nComponents:e}=this,n=this.graph.getValues();let r=0;for(let t=0;t<n.length;t++){const e=n[t];r<n[t]&&(r=e)}const i=this.graph.map((e=>e<r/t?0:e));this.embedding=N(i.nRows).map((()=>N(e).map((()=>20*x(this.random)-10))));const s=[],a=[],o=[],c=i.getAll();for(let t=0;t<c.length;t++){const e=c[t];e.value&&(s.push(e.value),o.push(e.row),a.push(e.col))}return{head:a,tail:o,epochsPerSample:this.makeEpochsPerSample(s,t)}}makeEpochsPerSample(t,e){const n=I(t.length,-1),r=k(t),i=t.map((t=>t/r*e));return i.forEach(((t,r)=>{t>0&&(n[r]=e/i[r])})),n}assignOptimizationStateParameters(t){Object.assign(this.optimizationState,t)}prepareForOptimizationLoop(){const{repulsionStrength:t,learningRate:e,negativeSampleRate:n}=this,{epochsPerSample:r,headEmbedding:i,tailEmbedding:s}=this.optimizationState,a=i[0].length,o=i.length===s.length,c=r.map((t=>t/n)),u=[...c],h=[...r];this.assignOptimizationStateParameters({epochOfNextSample:h,epochOfNextNegativeSample:u,epochsPerNegativeSample:c,moveOther:o,initialAlpha:e,alpha:e,gamma:t,dim:a})}initializeOptimization(){const t=this.embedding,e=this.embedding,{head:n,tail:r,epochsPerSample:i}=this.optimizationState,s=this.getNEpochs(),a=this.graph.nCols,{a:o,b:c}=function(t,e){const n=function(t,e,n){return E(300).map(((t,n)=>0+n*((e-0)/299)))}(0,3*t).map((t=>t<e?1:t)),r=N(n.length).map(((r,i)=>n[i]>=e?Math.exp(-(n[i]-e)/t):r)),i={x:n,y:r},{parameterValues:s}=function(t,e,n={}){let{maxIterations:r=100,gradientDifference:i=.1,damping:s=0,errorTolerance:a=.01,minValues:o,maxValues:c,initialValues:u}=n;if(s<=0)throw new Error("The damping option must be a positive number");if(!t.x||!t.y)throw new Error("The data parameter must have x and y elements");if(!(0,it.Z)(t.x)||t.x.length<2||!(0,it.Z)(t.y)||t.y.length<2)throw new Error("The data parameter elements must be an array with more than 2 points");if(t.x.length!==t.y.length)throw new Error("The data parameter elements must have the same size");let h=u||new Array(e.length).fill(1),l=h.length;if(c=c||new Array(l).fill(Number.MAX_SAFE_INTEGER),o=o||new Array(l).fill(Number.MIN_SAFE_INTEGER),c.length!==o.length)throw new Error("minValues and maxValues must be the same size");if(!(0,it.Z)(h))throw new Error("initialValues must be an array");let f,d=(0,st.Z)(t,h,e),p=d<=a;for(f=0;f<r&&!p;f++){h=(0,at.Z)(t,h,s,i,e);for(let t=0;t<l;t++)h[t]=Math.min(Math.max(o[t],h[t]),c[t]);if(d=(0,st.Z)(t,h,e),isNaN(d))break;p=d<=a}return{parameterValues:h,parameterError:d,iterations:f}}(i,(([t,e])=>n=>1/(1+t*n**(2*e))),{damping:1.5,initialValues:[.5,.5],gradientDifference:.1,maxIterations:100,errorTolerance:.01}),[a,o]=s;return{a,b:o}}(this.spread,this.minDist);this.assignOptimizationStateParameters({headEmbedding:t,tailEmbedding:e,head:n,tail:r,epochsPerSample:i,a:o,b:c,nEpochs:s,nVertices:a})}optimizeLayoutStep(t){const{optimizationState:e}=this,{head:n,tail:r,headEmbedding:i,tailEmbedding:s,epochsPerSample:a,epochOfNextSample:o,epochOfNextNegativeSample:c,epochsPerNegativeSample:u,moveOther:h,initialAlpha:l,alpha:f,gamma:d,a:p,b:m,dim:g,nEpochs:y,nVertices:w}=e;for(let e=0;e<a.length;e++){if(o[e]>t)continue;const l=n[e],y=r[e],b=i[l],v=s[y],x=dt(b,v);let E=0;x>0&&(E=-2*p*m*Math.pow(x,m-1),E/=p*Math.pow(x,m)+1);for(let t=0;t<g;t++){const e=ft(E*(b[t]-v[t]),4);b[t]+=e*f,h&&(v[t]+=-e*f)}o[e]+=a[e];const M=Math.floor((t-c[e])/u[e]);for(let t=0;t<M;t++){const t=A(w,this.random),e=s[t],n=dt(b,e);let r=0;if(n>0)r=2*d*m,r/=(.001+n)*(p*Math.pow(n,m)+1);else if(l===t)continue;for(let t=0;t<g;t++){let n=4;r>0&&(n=ft(r*(b[t]-e[t]),4)),b[t]+=n*f}}c[e]+=M*u[e]}return e.alpha=l*(1-t/y),e.currentEpoch+=1,i}optimizeLayoutAsync(t=(()=>!0)){return new Promise(((e,n)=>{const r=async()=>{try{const{nEpochs:n,currentEpoch:i}=this.optimizationState;this.embedding=this.optimizeLayoutStep(i);const s=this.optimizationState.currentEpoch,a=!1===t(s),o=s===n;if(a||o)return e(o);setTimeout((()=>r()),0)}catch(t){n(t)}};setTimeout((()=>r()),0)}))}optimizeLayout(t=(()=>!0)){let e=!1,n=[];for(;!e;){const{nEpochs:r,currentEpoch:i}=this.optimizationState;n=this.optimizeLayoutStep(i);const s=this.optimizationState.currentEpoch,a=!1===t(s);e=s===r||a}return n}getNEpochs(){const t=this.graph;if(this.nEpochs>0)return this.nEpochs;if(!t)return 200;const e=t.nRows;return e<=2500?500:e<=5e3?400:e<=7500?300:200}}function ht(t,e){return Math.abs(t-e)}class lt{constructor(){this.currentEpoch=0,this.headEmbedding=[],this.tailEmbedding=[],this.head=[],this.tail=[],this.epochsPerSample=[],this.epochOfNextSample=[],this.epochOfNextNegativeSample=[],this.epochsPerNegativeSample=[],this.moveOther=!0,this.initialAlpha=1,this.alpha=1,this.gamma=1,this.a=1.5769434603113077,this.b=.8950608779109733,this.dim=2,this.nEpochs=500,this.nVertices=0}}function ft(t,e){return t>e?e:t<-e?-e:t}function dt(t,e){let n=0;for(let r=0;r<t.length;r++)n+=Math.pow(t[r]-e[r],2);return n}var pt=n(2590),mt=n(9657),gt=n(6377),yt=n.n(gt);class wt{assert(t,e){if(!t)throw e||"Assertion failed"}getopt(t,e,n){return t.hasOwnProperty(e)?t[e]:n}gaussRandom(){if(this.returnV)return this.returnV=!1,this.vValue;const t=2*this.random()-1,e=2*this.random()-1,n=t*t+e*e;if(0===n||n>1)return this.gaussRandom();const r=Math.sqrt(-2*Math.log(n)/n);return this.vValue=e*r,this.returnV=!0,t*r}randn(t,e){return t+this.gaussRandom()*e}zeros(t){if(void 0===t||isNaN(t))return new Float32Array;if("undefined"==typeof ArrayBuffer){const e=new Float32Array(t);for(let n=0;n<t;n++)e[n]=0;return e}return new Float32Array(t)}randn2d(t,e,n){const r=void 0!==n,i=new Array(t).fill(null).map((()=>new Float32Array(e)));if(r)for(let r=0;r<t;r++)i[r]=new Float32Array(e).fill(n);else for(let n=0;n<t;n++)for(let t=0;t<e;t++)i[n][t]=this.randn(0,1e-4);return i}l2(t,e){const n=t.length;let r=0;for(let i=0;i<n;i++){const n=t[i],s=e[i];r+=(n-s)*(n-s)}return r}xtod(t){const e=t.length,n=this.zeros(e*e);for(let r=0;r<e;r++)for(let i=r+1;i<e;i++){const s=this.l2(t[r],t[i]);n[r*e+i]=s,n[i*e+r]=s}return n}getIterSize(t){return t<=2e3?100:t<=3e3?90:t<=5e3?80:70}d2p(t,e,n,r){const i=(a=r,(t,e)=>a*t+e-Math.floor((t+2)*(t+1)/2)),s=new Float32Array(r*r);var a;for(let e=0;e<r;e++)for(let n=e+1;n<r;n++)s[e*r+n]=s[n*r+e]=t[i(e,n)];const o=r,c=Math.log(e),u=this.zeros(o*o),h=this.zeros(o);for(let t=0;t<o;t++){let e=-1/0,i=1/0,a=1,l=!1;const f=Math.floor(this.getIterSize(r)/5);let d=0;for(;!l;){let r=0;for(let e=0;e<o;e++){const n=t===e?0:Math.exp(-s[t*o+e]*a);h[e]=n,r+=n}let u=0;for(let t=0;t<o;t++){let e;e=0===r?0:h[t]/r,h[t]=e,e>1e-7&&(u-=e*Math.log(e))}u>c?(e=a,i===1/0?a*=2:a=(a+i)/2):(i=a,e===-1/0?a/=2:a=(a+e)/2),d++,Math.abs(u-c)<n&&(l=!0),d>=f&&(l=!0)}for(let e=0;e<o;e++)u[t*o+e]=h[e]}const l=this.zeros(o*o),f=2*o;for(let t=0;t<o;t++)for(let e=0;e<o;e++)l[t*o+e]=Math.max((u[t*o+e]+u[e*o+t])/f,1e-100);return l}sign(t){return t>0?1:t<0?-1:0}constructor(t){this.iter=0,this.random=Math.random,this.returnV=!1,this.vValue=0,t=t||{},this.perplexity=this.getopt(t,"perplexity",30),this.dim=this.getopt(t,"dim",2),this.epsilon=this.getopt(t,"epsilon",10),this.random=this.getopt(t,"random",Math.random)}initDataRaw(t){const e=t.length,n=t[0].length;this.assert(e>0," X is empty? You must have some data!"),this.assert(n>0," X[0] is empty? Where is the data?");const r=this.xtod(t);this.P=this.d2p(r,this.perplexity,1e-4,n),this.N=e,this.initSolution()}initDataDist(t,e){const n=t.length;this.assert(n>0," X is empty? You must have some data!"),console.time("distances to matrix"),this.P=this.d2p(t,this.perplexity,1e-4,e),console.timeEnd("distances to matrix"),this.N=e,this.initSolution()}initSolution(){this.Y=this.randn2d(this.N,this.dim),this.gains=this.randn2d(this.N,this.dim,1),this.ystep=this.randn2d(this.N,this.dim,0),this.iter=0}getSolution(){return this.Y}step(){this.iter+=1;const t=this.N,e=this.costGrad(this.Y),n=e.cost,r=e.grad,i=this.zeros(this.dim);for(let e=0;e<t;e++)for(let t=0;t<this.dim;t++){const n=r[e][t],s=this.ystep[e][t],a=this.gains[e][t];let o=this.sign(n)===this.sign(s)?.8*a:a+.2;o<.01&&(o=.01),this.gains[e][t]=o;const c=(this.iter<250?.5:.8)*s-this.epsilon*o*r[e][t];this.ystep[e][t]=c,this.Y[e][t]+=c,i[t]+=this.Y[e][t]}for(let e=0;e<t;e++)for(let n=0;n<this.dim;n++)this.Y[e][n]-=i[n]/t;return n}debugGrad(){const t=this.N,e=this.costGrad(this.Y).grad,n=1e-5;for(let r=0;r<t;r++)for(let t=0;t<this.dim;t++){const i=this.Y[r][t];this.Y[r][t]=i+n;const s=this.costGrad(this.Y);this.Y[r][t]=i-n;const a=this.costGrad(this.Y),o=e[r][t],c=(s.cost-a.cost)/(2*n);console.log(r+","+t+": gradcheck analytic: "+o+" vs. numerical: "+c),this.Y[r][t]=i}}costGrad(t){const e=this.N,n=this.dim,r=this.P,i=this.iter<100?4:1;this.quArr??(this.quArr=this.zeros(e*e));let s=0;for(let r=0;r<e;r++)for(let i=r+1;i<e;i++){const a=1/(1+new Array(n).reduce(((e,n,s)=>e+Math.pow(t[r][s]-t[i][s],2)),0));this.quArr[r*e+i]=a,this.quArr[i*e+r]=a,s+=2*a}let a=0;const o=new Array(e).fill(null).map((()=>new Float32Array(n).fill(0)));for(let c=0;c<e;c++)for(let u=c+1;u<e;u++){const h=Math.max(this.quArr[c*e+u]/s,1e-100);a+=-r[c*e+u]*Math.log(h)*2;const l=4*(i*r[c*e+u]-h)*this.quArr[c*e+u];for(let e=0;e<n;e++)o[c][e]+=l*(t[c][e]-t[u][e]),o[u][e]+=l*(t[u][e]-t[c][e])}return{cost:a,grad:o}}}n(7905);const bt={EUCLIDEAN:function(t){return`\n var sum = 0.0;\n for (var i = 0u; i < ${t}; i = i + 1u) {\n sum = sum + distances[i] * distances[i] * computeInfo.weights[i] * computeInfo.weights[i];\n }\n return sqrt(sum);\n `},MANHATTAN:function(t){return`\n var sum = 0.0;\n for (var i = 0u; i < ${t}; i = i + 1u) {\n sum = sum + abs(distances[i]) * computeInfo.weights[i];\n }\n return sum;\n `}};var vt;!function(t){t.HAMMING="Hamming",t.EUCLIDEAN="Euclidean",t.MANHATTAN="Manhattan",t.TANIMOTO="Tanimoto",t.LEVENSTEIN="Levenshtein",t.NEEDLEMAN_WUNSCH="Needlemann-Wunsch",t.MONOMER_CHEMICAL_DISTANCE="Monomer chemical distance",t.SOKAL="Sokal",t.COSINE="Cosine",t.ASYMMETRIC="Asymmetric",t.Difference="Difference",t.OneHot="One-Hot"}(vt||(vt={}));const At={[vt.HAMMING]:function(t,e){return`\n let aLength: u32 = computeInfo.entrySizes[${e}][aIndex];\n let bLength: u32 = computeInfo.entrySizes[${e}][bIndex];\n let maxLength: u32 = max(aLength, bLength);\n let minLength: u32 = min(aLength, bLength);\n let sizeDiff: u32 = maxLength - minLength;\n \n let maxIntDistance = ceil(maxDistance * f32(maxLength)) - f32(sizeDiff);\n\n var diff: f32 = 0.0;\n for (var i = 0u; i < ${t}; i = i + 1u) {\n diff = diff + f32(a[i] != b[i]);\n if (diff >= maxIntDistance) {\n return 1.0;\n }\n }\n diff += f32(sizeDiff);\n return diff / ${t};\n `},[vt.EUCLIDEAN]:function(t,e){return`\n var dist: f32 = 0.0;\n for (var i = 0u; i < ${t}; i = i + 1u) {\n dist = dist + f32(a[i] - b[i]) * f32(a[i] - b[i]);\n }\n return sqrt(dist);\n `},[vt.MANHATTAN]:function(t,e){return`\n var dist: f32 = 0.0;\n for (var i = 0u; i < ${t}; i = i + 1u) {\n dist = dist + abs(f32(a[i] - b[i]));\n }\n return dist;\n `},[vt.TANIMOTO]:function(t,e){return`\n var onBitsa: u32 = 0u;\n var onBitsb: u32 = 0u;\n for (var i = 0u; i < ${t}u; i = i + 1u) {\n onBitsa = onBitsa + countOneBits(a[i]);\n onBitsb = onBitsb + countOneBits(b[i]);\n }\n\n if (onBitsa == 0u && onBitsb == 0u) {\n return 0.0;\n }\n\n let totalOnBits = onBitsa + onBitsb;\n var commonBits: u32 = 0u;\n for (var i = 0u; i < ${t}u; i = i + 1u) {\n commonBits = commonBits + countOneBits(a[i] & b[i]);\n }\n\n return 1.0 - f32(commonBits) / f32(totalOnBits - commonBits);\n `},[vt.LEVENSTEIN]:function(t,e){return`\n let aLength: u32 = computeInfo.entrySizes[${e}][aIndex];\n let bLength: u32 = computeInfo.entrySizes[${e}][bIndex];\n let maxLength: u32 = max(aLength, bLength);\n let minLength: u32 = min(aLength, bLength);\n\n let maxIntDistance = ceil(maxDistance * f32(maxLength));\n\n // we will store two arrays as matrix and swap the working indices per pass.\n // this way we can reduce memory usage per computation to just O(aLength)\n // the grid will have aLength + 1 columns and bLength + 1 rows\n // this will be guaranteed by iteration, but the array sizes must be known at compile time, so we will use a fixed size of maxArraySize\n var dynamicPassMat: array<array<f32, ${t+1}u>, 2>; // initialize to 0\n \n var prevIndex: u32 = 0;\n var curIndex: u32 = 1; // we will swap these indices per pass\n\n // initialize the first row\n for (var i = 0u; i <= aLength; i = i + 1u) {\n dynamicPassMat[prevIndex][i] = f32(i);\n }\n\n // iterate over the rows\n for (var i = 1u; i <= bLength; i = i + 1u) {\n dynamicPassMat[curIndex][0] = f32(i);\n var minEntry: f32 = f32(maxLength);\n let prevRow = &dynamicPassMat[prevIndex];\n let curRow = &dynamicPassMat[curIndex];\n let bMon = u32(b[i - 1]);\n for (var j = 1u; j <= aLength; j = j + 1u) {\n var cost: f32 = f32(a[j - 1] != bMon);\n var res: f32 = min(\n min(\n (*prevRow)[j] + 1.0, // deletion\n (*curRow)[j - 1] + 1.0, // insertion\n ),\n (*prevRow)[j - 1] + cost // substitution\n );\n (*curRow)[j] = res;\n if (res < minEntry) {\n minEntry = res;\n }\n }\n // swap the indices\n let temp: u32 = prevIndex;\n prevIndex = curIndex;\n curIndex = temp;\n if (minEntry >= maxIntDistance) {\n return 1.0;\n }\n }\n\n return dynamicPassMat[prevIndex][aLength] / f32(maxLength);\n `},[vt.NEEDLEMAN_WUNSCH]:function(t,e){return`\n let aLength: u32 = computeInfo.entrySizes[${e}][aIndex];\n let bLength: u32 = computeInfo.entrySizes[${e}][bIndex];\n let maxLength: u32 = max(aLength, bLength);\n let minLength: u32 = min(aLength, bLength);\n \n let maxIntDistance = ceil(maxDistance * f32(maxLength));\n // we will store two arrays as matrix and swap the working indices per pass.\n // this way we can reduce memory usage per computation to just O(aLength)\n // the grid will have aLength + 1 columns and bLength + 1 rows\n // this will be guaranteed by iteration, but the array sizes must be known at compile time, so we will use a fixed size of maxArraySize\n var dynamicPassMat: array<array<f32, ${t+1}u>, 2>; // initialize to 0\n \n // we need to keep track of which operation led to the current cell\n // i.e. whether we came from the left, top or diagonal to assign gap open/gap extend penalty\n var verticalGaps: array<u32, ${t+1}u>;\n var horizontalGaps: array<u32, ${t+1}u>;\n\n let gapOpenPenalty: f32 = suppInfo.gapOpenPenalty${e};\n let gapExtensionPenalty: f32 = suppInfo.gapExtensionPenalty${e};\n var prevIndex: u32 = 0;\n var curIndex: u32 = 1; // we will swap these indices per pass\n // initialize the first row\n for (var i = 0u; i <= aLength; i = i + 1u) {\n dynamicPassMat[prevIndex][i] = gapOpenPenalty + f32(i - 1) * gapExtensionPenalty;\n dynamicPassMat[curIndex][i] = 0.0;\n }\n dynamicPassMat[0][0] = 0.0;\n\n let simMatrix = &suppInfo.similarityMatrix${e}; // using pointers make things faster\n // iterate over the rows\n for (var i = 1u; i <= bLength; i = i + 1u) {\n let prevRow = &dynamicPassMat[prevIndex];\n let curRow = &dynamicPassMat[curIndex];\n (*curRow)[0] = gapOpenPenalty + f32(i - 1) * gapExtensionPenalty;\n var minEntry: f32 = f32(maxLength);\n let monB = u32(b[i - 1]);\n for (var j = 1u; j <= aLength; j = j + 1u) {\n let monA = u32(a[j - 1]);\n \n let cost: f32 = (*prevRow)[j - 1] + 1f - (*simMatrix)[monA][monB];\n var top = (*prevRow)[j]; // deletion\n if (verticalGaps[j] > 0) {\n top = top + gapExtensionPenalty;\n } else {\n top = top + gapOpenPenalty;\n }\n var left = (*curRow)[j - 1]; // insertion\n if (horizontalGaps[j - 1] > 0) {\n left = left + gapExtensionPenalty;\n } else {\n left = left + gapOpenPenalty;\n }\n var res: f32 = min(\n min(\n top, // deletion\n left, // insertion\n ),\n cost // substitution\n );\n (*curRow)[j] = res;\n if (res < minEntry) {\n minEntry = res;\n }\n // update the horizontal and vertical gaps\n if (res == cost) {\n verticalGaps[j] = 0;\n horizontalGaps[j] = 0;\n } else if (res == left) {\n verticalGaps[j] = 0;\n horizontalGaps[j] = 1;\n } else {\n verticalGaps[j] = 1;\n horizontalGaps[j] = 0;\n }\n }\n // swap the indices\n let temp: u32 = prevIndex;\n prevIndex = curIndex;\n curIndex = temp;\n if (minEntry >= maxIntDistance) {\n return 1.0;\n }\n }\n return dynamicPassMat[prevIndex][aLength] / f32(maxLength);\n \n `},[vt.MONOMER_CHEMICAL_DISTANCE]:function(t,e){return`\n let aLength: u32 = computeInfo.entrySizes[${e}][aIndex];\n let bLength: u32 = computeInfo.entrySizes[${e}][bIndex];\n let maxLength: u32 = max(aLength, bLength);\n let minLength: u32 = min(aLength, bLength);\n let sizeDiff: u32 = maxLength - minLength;\n \n let maxIntDistance = ceil(maxDistance * f32(maxLength)) - f32(sizeDiff);\n\n let simMatrix = &(suppInfo.similarityMatrix${e}); // using pointers make things faster\n var diff: f32 = 0.0;\n for (var i = 0u; i < ${t}; i = i + 1u) {\n diff = diff + 1.0 - (*simMatrix)[u32(a[i])][u32(b[i])];\n if (diff >= maxIntDistance) {\n return 1.0;\n }\n }\n diff += f32(sizeDiff);\n return diff / ${t};\n `},[vt.SOKAL]:function(t,e){return`\n var onBitsa: u32 = 0u;\n var onBitsb: u32 = 0u;\n for (var i = 0u; i < ${t}u; i = i + 1u) {\n onBitsa = onBitsa + countOneBits(a[i]);\n onBitsb = onBitsb + countOneBits(b[i]);\n }\n let total = onBitsa + onBitsb;\n if (total == 0u) {\n return 1.0;\n }\n var commonBits: u32 = 0u;\n for (var i = 0u; i < ${t}u; i = i + 1u) {\n commonBits = commonBits + countOneBits(a[i] & b[i]);\n }\n return 1.0 - f32(commonBits) / f32(total * 2 - commonBits * 3);\n `},[vt.COSINE]:function(t,e){return`\n var onBitsa: u32 = 0u;\n var onBitsb: u32 = 0u;\n for (var i = 0u; i < ${t}u; i = i + 1u) {\n onBitsa = onBitsa + countOneBits(a[i]);\n onBitsb = onBitsb + countOneBits(b[i]);\n }\n let total = onBitsa * onBitsb; // p.s. here total is taken by multiplying\n if (total == 0u) {\n return 1.0;\n }\n var commonBits: u32 = 0u;\n for (var i = 0u; i < ${t}u; i = i + 1u) {\n commonBits = commonBits + countOneBits(a[i] & b[i]);\n }\n return 1.0 - f32(commonBits) / sqrt(f32(total));\n `},[vt.ASYMMETRIC]:function(t,e){return`\n var onBitsa: u32 = 0u;\n var onBitsb: u32 = 0u;\n for (var i = 0u; i < ${t}u; i = i + 1u) {\n onBitsa = onBitsa + countOneBits(a[i]);\n onBitsb = onBitsb + countOneBits(b[i]);\n }\n let min = min(onBitsa, onBitsb);\n if (min == 0u) {\n return 1.0;\n }\n var commonBits: u32 = 0u;\n for (var i = 0u; i < ${t}u; i = i + 1u) {\n commonBits = commonBits + countOneBits(a[i] & b[i]);\n }\n return 1.0 - f32(commonBits) / f32(min);\n `},[vt.Difference]:function(t,e){return`\n let range = suppInfo.range${e};\n return f32(abs(f32(a[0]) - f32(b[0])) / range);\n `},[vt.OneHot]:function(t,e){return`\n let aLength: u32 = computeInfo.entrySizes[${e}][aIndex];\n let bLength: u32 = computeInfo.entrySizes[${e}][bIndex];\n if (aLength != bLength) {\n return 1.0;\n }\n for (var i = 0u; i < aLength; i = i + 1u) {\n if(a[i] != b[i]) {\n return 1.0;\n }\n }\n return 0.0;\n `}},xt={[vt.HAMMING]:t=>Math.ceil(t/30),[vt.EUCLIDEAN]:t=>Math.ceil(t/30),[vt.MANHATTAN]:t=>Math.ceil(t/30),[vt.TANIMOTO]:t=>Math.ceil(t/80),[vt.SOKAL]:t=>Math.ceil(t/80),[vt.COSINE]:t=>Math.ceil(t/80),[vt.ASYMMETRIC]:t=>Math.ceil(t/80),[vt.LEVENSTEIN]:t=>Math.ceil(t*t/60),[vt.NEEDLEMAN_WUNSCH]:t=>Math.ceil(t*t/60),[vt.MONOMER_CHEMICAL_DISTANCE]:t=>Math.ceil(t/25),[vt.Difference]:t=>1,[vt.OneHot]:t=>Math.ceil(t/40)},Et={STRING:new Set([vt.HAMMING,vt.LEVENSTEIN,vt.NEEDLEMAN_WUNSCH,vt.MONOMER_CHEMICAL_DISTANCE,vt.OneHot]),UINT32ARRAY:new Set([vt.HAMMING,vt.EUCLIDEAN,vt.MANHATTAN,vt.MONOMER_CHEMICAL_DISTANCE,vt.LEVENSTEIN,vt.NEEDLEMAN_WUNSCH,vt.TANIMOTO,vt.COSINE,vt.SOKAL,vt.ASYMMETRIC,vt.OneHot,vt.Difference]),FLOAT32ARRAY:new Set([vt.EUCLIDEAN,vt.MANHATTAN,vt.Difference]),NUMBER:new Set([vt.EUCLIDEAN,vt.MANHATTAN,vt.Difference]),BITARRAY:new Set([vt.TANIMOTO,vt.COSINE,vt.SOKAL,vt.ASYMMETRIC])};function Mt(t,e=15,n,r,i,s){var a,o,c,u,h;return o=this,c=void 0,h=function*(){if(s.length!==t.length||s.length!==n.length||s.length!==i.length)throw new Error("Options, weigths and distance functions must be provided for each column");if(t.some((e=>e.length!==t[0].length)))throw new Error("All entry lists must be the same length");const o=t.length,c=t[0].length,u=t.map(((t,e)=>function(t,e=vt.HAMMING,n,r={gapOpenPenalty:1,gapExtensionPenalty:.6}){var i,s;let a=null;const o=t.some((t=>"string"==typeof t))?(a="STRING",t.map((t=>new Uint32Array(t.split("").map((t=>t.charCodeAt(0))))))):t.some((t=>"number"==typeof t))?(a="NUMBER",t.map((t=>new Float32Array([t])))):"object"==typeof t[0]&&t.some((t=>"_data"in t&&"_length"in t))?(a="BITARRAY",t.map((t=>t._data))):t.some((t=>t instanceof Float32Array))?(a="FLOAT32ARRAY",t):t.some((t=>t instanceof Uint32Array))?(a="UINT32ARRAY",t):void 0;if(!o||!a)throw new Error("Invalid entry type, could not determine entry type from input list");const c=o[0]instanceof Uint32Array,u=new Uint32Array(o.map((t=>t.length)));if(!Et[a]||!Et[a].has(e))throw new Error(`Distance metric '${e}' not supported for entry type '${a}'`);const h=u.reduce(((t,e)=>Math.max(t,e)),0),l=xt[e](h),f=c?new Uint32Array(o.length*h):new Float32Array(o.length*h);o.forEach(((t,e)=>{f.set(t,e*h)}));let d="",p=0,m="FLOAT32ARRAY",g=null;if(e===vt.NEEDLEMAN_WUNSCH||e===vt.MONOMER_CHEMICAL_DISTANCE){let t=r.scoringMatrix&&r.alphabetIndexes?Object.keys(r.alphabetIndexes).reduce(((t,e)=>Math.max(t,e.charCodeAt(0))),0):-1;if(!r.alphabetIndexes||!r.scoringMatrix){for(let e=0;e<f.length;e++)f[e]>t&&(t=f[e]);r.scoringMatrix=new Array(t+1).fill(null).map((()=>new Array(t+1).fill(0))),r.alphabetIndexes={};for(let t=0;t<r.scoringMatrix.length;t++)r.scoringMatrix[t][t]=1,r.alphabetIndexes[String.fromCharCode(t)]=t}const e=(t+1)*(t+1),a=new Array(t+1).fill(null).map((()=>new Float32Array(t+1)));for(let e=0;e<t+1;e++)a[e][e]=1;const o=r.alphabetIndexes;for(const t of Object.keys(o))for(const e of Object.keys(o))t!==e&&(a[t.charCodeAt(0)][e.charCodeAt(0)]=r.scoringMatrix[o[t]][o[e]]);p=2+e,m="FLOAT32ARRAY",g=new Float32Array(p),g[0]=null!==(i=r.gapOpenPenalty)&&void 0!==i?i:1,g[1]=null!==(s=r.gapExtensionPenalty)&&void 0!==s?s:.6;let c=2;for(let t=0;t<a.length;t++)g.set(a[t],c),c+=a[t].length;d=`\n gapOpenPenalty${n}: f32,\n gapExtensionPenalty${n}: f32,\n similarityMatrix${n}: array<array<f32, ${t+1}>, ${t+1}>`}else if(e===vt.Difference){if(!r.range||"number"!=typeof r.range||r.range<=0){const t=f.reduce(((t,e)=>Math.min(t,e)),f[0]),e=f.reduce(((t,e)=>Math.max(t,e)),f[0]);r.range=e-t}if(r.range<=0)throw new Error("Invalid range for difference distance metric: "+r.range);p=1,m="FLOAT32ARRAY",g=new Float32Array([r.range]),d=`\n range${n}: f32`}const y=`data${n}: array<array<${c?"u32":"f32"}, ${h}>, ${o.length}>`;return{flatSourceArray:f,sourceArraySize:f.length,maxEntryLen:h,arraySizes:u,complexity:l,suppInfoBuffer:g,suppInfoSize:p,suppInfoType:m,suppInfoStructWgsl:d,entryType:a,isUint32Array:c,dataStructWgsl:y}}(t,n[e],e,s[e])));if(0===o)throw new Error("No columns provided. Please provide at least one column of data.");1===o&&(r="MANHATTAN");let h=u.map((t=>t.suppInfoStructWgsl)).filter((t=>!!t&&""!=t)).join(",\n"),l=!1;h&&""!=h.trim()||(l=!0,h="\ndummy: f32\n");const f=u.reduce(((t,e)=>t+e.complexity),0),d=u.map((t=>t.dataStructWgsl)).filter((t=>!!t&&""!=t)).join(",\n"),p=new Uint32Array(o*c);u.forEach(((t,e)=>{p.set(t.arraySizes,e*c)}));const m=1e4,g=Math.ceil(1e4/f),y=yield null===(a=navigator.gpu)||void 0===a?void 0:a.requestAdapter(),w=yield null==y?void 0:y.requestDevice();if(!w)return;const b=Math.ceil(Math.sqrt(Math.ceil(100))),v=10*b,A=new Array(c).fill(null).map((()=>new Uint32Array(e))),x=new Array(c).fill(null).map((()=>new Float32Array(e))),E=w.createShaderModule({label:"KNN compute shader",code:`\n // this struct will contain all the info about the computation, startAtEndAt will contain the start and end of the knnDistances and knnIndexes.\n // array of sizes for each entries, and the main data as arrays of arrays called data0, data1 and so on. good thing is that because the first entry is vec4<u32>,\n // there will be no paddings, so no need to worry about padding data. also, arrays and matrices get stucked together, so no padding there as well.\n // what we need to worry about is the padding of overall struct. the size of overall struct will be factor of 16 bytes, so keep that in mind.\n struct ComputeInfo {\n // the x coordinate will contain the start index of the knnDistances and knnIndexes, while y will contain the end index \n // the z coordinate will contain the start of the pair comparisons, while w will contain the end of the pair comparisons\n // just keep in mind that this vec4 will be in first 16 bytes of corresponding buffer.\n startAtEndAt: vec4<u32>,\n // the ACTUALLY sizes of each entry\n entrySizes: array<array<u32, ${c}>, ${o}>,\n // the weights for each entry\n weights: array<f32, ${o}>,\n // the data for each entry\n ${d} // an example of the dataWgsl would be:\n //data0: array<array<u32,20>,100>,\n //data1: array<array<u32,20>,100>\n };\n\n struct SuppInfo {\n // struct containing all the supplementary info, like scoring matrix, alphabet indexes, range, etc.\n ${h}\n };\n \n @group(0) @binding(0) var<storage, read_write> knnIndexes: array<array<u32, ${e}>, 10000>;\n @group(0) @binding(1) var<storage, read_write> knnDistances: array<array<f32, ${e}>, 10000>; // each time just compute for a subset of the list\n @group(0) @binding(2) var<storage, read_write> computeInfo: ComputeInfo;\n @group(0) @binding(3) var<storage, read_write> suppInfo: SuppInfo;\n \n @compute @workgroup_size(10, 10) fn calcKNN(\n @builtin(global_invocation_id) id: vec3<u32>,\n @builtin(local_invocation_id) localId: vec3<u32>\n ) {\n ${l?"let otherDummy = suppInfo.dummy * 2;":""} // just to make sure that the suppInfo is not optimized out\n let col = id.x; //* 10 + localId.x;\n let row = id.y; //* 10 + localId.y;\n let graphIndex = row * ${v} + col;\n let index = graphIndex + computeInfo.startAtEndAt.x; // add the starting index of the knnDistances and knnIndexes\n \n if (index >= min(${c}u, computeInfo.startAtEndAt.y)) {return;}\n \n let pairComparisonStartAt = computeInfo.startAtEndAt.z;\n let pairComparisonEndAt = min(computeInfo.startAtEndAt.w, ${c}u);\n \n \n // only clear the knnDistances and knnIndexes if we are at the start of the pair comparison\n if (pairComparisonStartAt == 0u) {\n for (var i = 0u; i < ${e}; i = i + 1u) {\n knnDistances[graphIndex][i] = 99999.0;\n knnIndexes[graphIndex][i] = 0u;\n }\n }\n \n for (var i: u32 = pairComparisonStartAt; i < pairComparisonEndAt; i = i + 1u) {\n if (i == index) {continue;}\n let dist = combinedDistance(index, i);\n insertKnn(graphIndex, dist, i);\n }\n \n }\n // this will generate the distance script for each distance metric and then combine them into one\n ${It(n,u.map((t=>t.maxEntryLen)),e,r)}\n \n fn insertKnn(knnIndex: u32, dist: f32, index: u32) {\n // small optimization, if the distance is larger than the last element in the knnDistances, we can skip\n if (dist >= knnDistances[knnIndex][${e} - 1u]) {return;}\n for (var i = 0u; i < ${e}; i = i + 1u) {\n if (dist < knnDistances[knnIndex][i]) {\n for (var j = ${e} - 1u; j > i; j = j - 1u) {\n knnDistances[knnIndex][j] = knnDistances[knnIndex][j - 1u];\n knnIndexes[knnIndex][j] = knnIndexes[knnIndex][j - 1u];\n }\n knnDistances[knnIndex][i] = dist;\n knnIndexes[knnIndex][i] = index;\n return;\n }\n }\n }\n `}),M=w.createComputePipeline({label:"hamming compute pipeline",layout:"auto",compute:{module:E,entryPoint:"calcKNN"}}),I=4+o*c+o+u.reduce(((t,e)=>t+e.sourceArraySize),0),N=u.reduce(((t,e)=>t+e.suppInfoSize),0),S=I*Uint32Array.BYTES_PER_ELEMENT;let k=S;const C=15&S;0!==C&&(k+=16-C);const L=w.createBuffer({label:"compute info buffer",size:k,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),R=L.getMappedRange();let D=0,z=m,O=0,_=g,B=0;new Uint32Array(R,B,4).set([D,z,O,_]),B+=4*Uint32Array.BYTES_PER_ELEMENT,new Uint32Array(R,B,p.length).set(p),B+=p.byteLength,new Float32Array(R,B,o).set(i),B+=o*Float32Array.BYTES_PER_ELEMENT;for(const t of u){const e=t.isUint32Array?Uint32Array:Float32Array,n=t.sourceArraySize;new e(R,B,n).set(t.flatSourceArray),B+=n*e.BYTES_PER_ELEMENT}L.unmap();const T=N*Uint32Array.BYTES_PER_ELEMENT;let P=T;const F=15&T;0!==F&&(P+=16-F),P=Math.max(P,16);const U=w.createBuffer({label:"supp info buffer",size:P,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),j=U.getMappedRange();let $=0;for(const t of u)t.suppInfoBuffer&&t.suppInfoBuffer.byteLength>0&&t.suppInfoSize>0&&(new("UINT32ARRAY"===t.suppInfoType?Uint32Array:Float32Array)(j,$,t.suppInfoBuffer.length).set(t.suppInfoBuffer),$+=t.suppInfoBuffer.byteLength);0===$&&new Uint32Array(j,0,4).set([1,1,1,1]),U.unmap();const G=e*Uint32Array.BYTES_PER_ELEMENT*m,W=w.createBuffer({label:"buffer distances",size:G,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC}),H=w.createBuffer({label:"buffer indexes",size:G,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC}),Y=e*Uint32Array.BYTES_PER_ELEMENT,V=w.createBindGroup({label:"bindGroup for knn buffer",layout:M.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:H}},{binding:1,resource:{buffer:W}},{binding:2,resource:{buffer:L}},{binding:3,resource:{buffer:U}}]});for(let t=0;t<Math.ceil(c/m);t++){D=t*m,z=Math.min((t+1)*m,c);const n=Math.ceil(c/g);for(let t=0;t<n;t++){O=t*g,_=Math.min((t+1)*g,c),w.queue.writeBuffer(L,0,new Uint32Array([D,z,O,_]));const r=w.createCommandEncoder({label:"distance encoder"}),i=r.beginComputePass({label:"distance compute pass"});if(i.setPipeline(M),i.setBindGroup(0,V),i.dispatchWorkgroups(b,Math.ceil(m/b/100)),i.end(),t===n-1){const t=w.createBuffer({label:"result buffer distances",size:W.size,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST});r.copyBufferToBuffer(W,0,t,0,t.size);const n=w.createBuffer({label:"result buffer indexes",size:H.size,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST});r.copyBufferToBuffer(H,0,n,0,n.size);const i=r.finish();w.queue.submit([i]),yield w.queue.onSubmittedWorkDone(),yield t.mapAsync(GPUMapMode.READ),yield n.mapAsync(GPUMapMode.READ);const s=n.getMappedRange(),a=t.getMappedRange();for(let t=0;t<z-D;t++){const n=new Uint32Array(s,t*Y,e),r=new Float32Array(a,t*Y,e);A[D+t].set(n),x[D+t].set(r)}n.unmap(),t.unmap()}else{const t=r.finish();w.queue.submit([t]),yield w.queue.onSubmittedWorkDone()}}}return{knnIndexes:A,knnDistances:x}},new((u=void 0)||(u=Promise))((function(t,e){function n(t){try{i(h.next(t))}catch(t){e(t)}}function r(t){try{i(h.throw(t))}catch(t){e(t)}}function i(e){var i;e.done?t(e.value):(i=e.value,i instanceof u?i:new u((function(t){t(i)}))).then(n,r)}i((h=h.apply(o,c||[])).next())}))}function It(t,e,n,r){return t.map(((t,r)=>`\n fn distanceScript${r}(aIndex: u32, bIndex: u32) -> f32 {\n let a = computeInfo.data${r}[aIndex];\n let b = computeInfo.data${r}[bIndex];\n let maxDistance: f32 = knnDistances[aIndex - computeInfo.startAtEndAt.x][${n} - 1u];\n ${At[t](e[r],r)}\n }\n `)).join("\n")+"\n"+`\n fn combinedDistance(aIndex: u32, bIndex: u32) -> f32 {\n var distances: array<f32, ${t.length}>;\n ${t.map(((t,e)=>`distances[${e}] = distanceScript${e}(aIndex, bIndex);`)).join("\n")}\n ${bt[r](t.length)}\n }\n \n `}class Nt{constructor(t){this.data=t.data,this.weights=t.weights,this.aggregationMethod=t.aggregationMethod}}class St extends Nt{constructor(t){super(t);const e=t.randomSeed??Date(),n=yt()(e);t.random=n,this.reducer=new wt(t),this.iterations=t?.iterations??this.reducer.getIterSize(this.data[0].length),this.distanceFnames=t.distanceFnames,this.distanceFns=t.distanceFns,this.distanceFnArgs=t.distanceFnArgs,this.progressFunc=t.progressFunc}async transform(){if(this.data[0].length>1e4)throw new Error("Maximum number of samples for T-SNE is 10000");const t=new v(!0,!1);try{const e=await t.calcMulti(this.data,this.distanceFnames,!1,this.distanceFnArgs,this.weights,this.aggregationMethod);t.terminate(),this.reducer.initDataDist(e,this.data[0].length);for(let t=0;t<this.iterations;++t)this.reducer.step(),this.progressFunc&&this.progressFunc(t,this.iterations,[]);return this.reducer.getSolution()}catch(e){throw t.terminate(),e}}}class kt extends Nt{constructor(t){const e=t.randomSeed??Date(),n=yt()(e);super(t),this.useWEBGPU=!1,c("distanceFnames"in t),c("distanceFns"in t),this.distanceFnArgs=t.distanceFnArgs,this.distanceFns=t.distanceFns,this.progressFunc=t.progressFunc,this.useWEBGPU=t.useWEBGPU??!1,this.distanceFnames=t.distanceFnames,this.vectors=new Array(this.data[0].length).fill(0).map(((t,e)=>e)),this.data[0].length<=(t.nNeighbors??15)&&(t.nNeighbors=this.data[0].length-1),t.random=n,this.reducer=new ut(t)}async transform(t){let e;if(console.time("knn graph"),this.useWEBGPU)try{e=await Mt(this.data,this.reducer.neighbors,this.distanceFnames,this.aggregationMethod,this.weights,this.distanceFnArgs)}catch(t){console.error("WEBGPU KNN failed, falling back to multithreaded CPU implementation"),console.error(t)}e||(e=await(new pt._).multiColumnKNN(this.data,this.distanceFnames,this.reducer.neighbors,this.distanceFnArgs,this.weights,this.aggregationMethod)),console.timeEnd("knn graph"),this.reducer.setPrecomputedKNN(e.knnIndexes,e.knnDistances),await new Promise((t=>{setTimeout((()=>{t()}),300)}));const n=await this.reducer.fitAsync(this.vectors,(t=>{this.progressFunc&&this.progressFunc(t,this.reducer.getNEpochs(),this.reducer.getEmbedding())}));return i=n,new Array(i.length).fill(0).map(((t,e)=>r.from(i[e])));var i}}const Ct={UMAP:kt,"t-SNE":St};class Lt{constructor(t,e,n,r,i,s){const a=[];for(let e=0;e<n.length;++e){const r=new w(n[e]).getMeasure(s.distanceFnArgs[e]);a.push(r);let i=2048;for(let n=0;n<t[e].length;++n)if(t[e][n]&&t[e][n]._length){i=t[e][n]._length;break}if(o=n[e],"BitArray"==y[o])for(let n=0;n<t[e].length;++n)t[e][n]&&t[e][n]._data?t[e][n]=new mt.Z(t[e][n]._data,t[e][n]._length):t[e][n]=new mt.Z(i)}var o;"UMAP"==e?this.reducer=new kt({data:t,distanceFnames:n,distanceFns:a,distanceFnArgs:s.distanceFnArgs,weights:r,aggregationMethod:i,...s}):"t-SNE"==e&&(this.reducer=new St({data:t,distanceFnames:n,distanceFns:a,distanceFnArgs:s.distanceFnArgs,weights:r,aggregationMethod:i,...s}))}async transform(t=!1){if(void 0===this.reducer)throw new Error("Reducer was not defined.");let e=await this.reducer.transform();var n;return t&&(n=e,e=new Array(n[0].length).fill(0).map(((t,e)=>new r(n.length).fill(0).map(((t,r)=>n[r][e]))))),e}static availableMetricsByType(t){return Object.keys(g[t])}static get availableMethods(){return Object.keys(Ct)}static get availableMetrics(){let t=[];return Object.values(g).forEach((e=>{const n=Object.values(e);t=[...t,...n]})),t}}async function Rt(t,e,n){t%5==0&&self.postMessage({epochNum:t,epochsLength:e,embedding:n})}self.onmessage=async({data:{columnsData:t,method:e,distanceMetrics:n,options:r,weights:i,aggregationMethod:s}})=>{let a;try{const o=await async function(t,e,n,r,i,s){const a=new Lt(t,e,n,r,i,{...s,progressFunc:Rt});return await a.transform(!0)}(t,e,n,i,s,r);a={embedding:o}}catch(t){a={error:t}}self.postMessage({error:a.error,embedding:a.embedding})}},6377:(t,e,n)=>{var r=n(4832),i=n(8652),s=n(801),a=n(2030),o=n(3618),c=n(9049),u=n(1971);u.alea=r,u.xor128=i,u.xorwow=s,u.xorshift7=a,u.xor4096=o,u.tychei=c,t.exports=u},4832:function(t,e,n){var r;!function(t,i,s){function a(t){var e,n=this,r=(e=4022871197,function(t){t=String(t);for(var n=0;n<t.length;n++){var r=.02519603282416938*(e+=t.charCodeAt(n));r-=e=r>>>0,e=(r*=e)>>>0,e+=4294967296*(r-=e)}return 2.3283064365386963e-10*(e>>>0)});n.next=function(){var t=2091639*n.s0+2.3283064365386963e-10*n.c;return n.s0=n.s1,n.s1=n.s2,n.s2=t-(n.c=0|t)},n.c=1,n.s0=r(" "),n.s1=r(" "),n.s2=r(" "),n.s0-=r(t),n.s0<0&&(n.s0+=1),n.s1-=r(t),n.s1<0&&(n.s1+=1),n.s2-=r(t),n.s2<0&&(n.s2+=1),r=null}function o(t,e){return e.c=t.c,e.s0=t.s0,e.s1=t.s1,e.s2=t.s2,e}function c(t,e){var n=new a(t),r=e&&e.state,i=n.next;return i.int32=function(){return 4294967296*n.next()|0},i.double=function(){return i()+11102230246251565e-32*(2097152*i()|0)},i.quick=i,r&&("object"==typeof r&&o(r,n),i.state=function(){return o(n,{})}),i}i&&i.exports?i.exports=c:n.amdD&&n.amdO?void 0===(r=function(){return c}.call(e,n,e,i))||(i.exports=r):this.alea=c}(0,t=n.nmd(t),n.amdD)},9049:function(t,e,n){var r;!function(t,i,s){function a(t){var e=this,n="";e.next=function(){var t=e.b,n=e.c,r=e.d,i=e.a;return t=t<<25^t>>>7^n,n=n-r|0,r=r<<24^r>>>8^i,i=i-t|0,e.b=t=t<<20^t>>>12^n,e.c=n=n-r|0,e.d=r<<16^n>>>16^i,e.a=i-t|0},e.a=0,e.b=0,e.c=-1640531527,e.d=1367130551,t===Math.floor(t)?(e.a=t/4294967296|0,e.b=0|t):n+=t;for(var r=0;r<n.length+20;r++)e.b^=0|n.charCodeAt(r),e.next()}function o(t,e){return e.a=t.a,e.b=t.b,e.c=t.c,e.d=t.d,e}function c(t,e){var n=new a(t),r=e&&e.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},i.int32=n.next,i.quick=i,r&&("object"==typeof r&&o(r,n),i.state=function(){return o(n,{})}),i}i&&i.exports?i.exports=c:n.amdD&&n.amdO?void 0===(r=function(){return c}.call(e,n,e,i))||(i.exports=r):this.tychei=c}(0,t=n.nmd(t),n.amdD)},8652:function(t,e,n){var r;!function(t,i,s){function a(t){var e=this,n="";e.x=0,e.y=0,e.z=0,e.w=0,e.next=function(){var t=e.x^e.x<<11;return e.x=e.y,e.y=e.z,e.z=e.w,e.w^=e.w>>>19^t^t>>>8},t===(0|t)?e.x=t:n+=t;for(var r=0;r<n.length+64;r++)e.x^=0|n.charCodeAt(r),e.next()}function o(t,e){return e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w,e}function c(t,e){var n=new a(t),r=e&&e.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},i.int32=n.next,i.quick=i,r&&("object"==typeof r&&o(r,n),i.state=function(){return o(n,{})}),i}i&&i.exports?i.exports=c:n.amdD&&n.amdO?void 0===(r=function(){return c}.call(e,n,e,i))||(i.exports=r):this.xor128=c}(0,t=n.nmd(t),n.amdD)},3618:function(t,e,n){var r;!function(t,i,s){function a(t){var e=this;e.next=function(){var t,n,r=e.w,i=e.X,s=e.i;return e.w=r=r+1640531527|0,n=i[s+34&127],t=i[s=s+1&127],n^=n<<13,t^=t<<17,n^=n>>>15,t^=t>>>12,n=i[s]=n^t,e.i=s,n+(r^r>>>16)|0},function(t,e){var n,r,i,s,a,o=[],c=128;for(e===(0|e)?(r=e,e=null):(e+="\0",r=0,c=Math.max(c,e.length)),i=0,s=-32;s<c;++s)e&&(r^=e.charCodeAt((s+32)%e.length)),0===s&&(a=r),r^=r<<10,r^=r>>>15,r^=r<<4,r^=r>>>13,s>=0&&(a=a+1640531527|0,i=0==(n=o[127&s]^=r+a)?i+1:0);for(i>=128&&(o[127&(e&&e.length||0)]=-1),i=127,s=512;s>0;--s)r=o[i+34&127],n=o[i=i+1&127],r^=r<<13,n^=n<<17,r^=r>>>15,n^=n>>>12,o[i]=r^n;t.w=a,t.X=o,t.i=i}(e,t)}function o(t,e){return e.i=t.i,e.w=t.w,e.X=t.X.slice(),e}function c(t,e){null==t&&(t=+new Date);var n=new a(t),r=e&&e.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},i.int32=n.next,i.quick=i,r&&(r.X&&o(r,n),i.state=function(){return o(n,{})}),i}i&&i.exports?i.exports=c:n.amdD&&n.amdO?void 0===(r=function(){return c}.call(e,n,e,i))||(i.exports=r):this.xor4096=c}(0,t=n.nmd(t),n.amdD)},2030:function(t,e,n){var r;!function(t,i,s){function a(t){var e=this;e.next=function(){var t,n,r=e.x,i=e.i;return t=r[i],n=(t^=t>>>7)^t<<24,n^=(t=r[i+1&7])^t>>>10,n^=(t=r[i+3&7])^t>>>3,n^=(t=r[i+4&7])^t<<7,t=r[i+7&7],n^=(t^=t<<13)^t<<9,r[i]=n,e.i=i+1&7,n},function(t,e){var n,r=[];if(e===(0|e))r[0]=e;else for(e=""+e,n=0;n<e.length;++n)r[7&n]=r[7&n]<<15^e.charCodeAt(n)+r[n+1&7]<<13;for(;r.length<8;)r.push(0);for(n=0;n<8&&0===r[n];++n);for(8==n?r[7]=-1:r[n],t.x=r,t.i=0,n=256;n>0;--n)t.next()}(e,t)}function o(t,e){return e.x=t.x.slice(),e.i=t.i,e}function c(t,e){null==t&&(t=+new Date);var n=new a(t),r=e&&e.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},i.int32=n.next,i.quick=i,r&&(r.x&&o(r,n),i.state=function(){return o(n,{})}),i}i&&i.exports?i.exports=c:n.amdD&&n.amdO?void 0===(r=function(){return c}.call(e,n,e,i))||(i.exports=r):this.xorshift7=c}(0,t=n.nmd(t),n.amdD)},801:function(t,e,n){var r;!function(t,i,s){function a(t){var e=this,n="";e.next=function(){var t=e.x^e.x>>>2;return e.x=e.y,e.y=e.z,e.z=e.w,e.w=e.v,(e.d=e.d+362437|0)+(e.v=e.v^e.v<<4^t^t<<1)|0},e.x=0,e.y=0,e.z=0,e.w=0,e.v=0,t===(0|t)?e.x=t:n+=t;for(var r=0;r<n.length+64;r++)e.x^=0|n.charCodeAt(r),r==n.length&&(e.d=e.x<<10^e.x>>>4),e.next()}function o(t,e){return e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w,e.v=t.v,e.d=t.d,e}function c(t,e){var n=new a(t),r=e&&e.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},i.int32=n.next,i.quick=i,r&&("object"==typeof r&&o(r,n),i.state=function(){return o(n,{})}),i}i&&i.exports?i.exports=c:n.amdD&&n.amdO?void 0===(r=function(){return c}.call(e,n,e,i))||(i.exports=r):this.xorwow=c}(0,t=n.nmd(t),n.amdD)},1971:function(t,e,n){var r;!function(i,s,a){var o,c=256,u=a.pow(c,6),h=a.pow(2,52),l=2*h,f=c-1;function d(t,e,n){var r=[],f=y(g((e=1==e?{entropy:!0}:e||{}).entropy?[t,w(s)]:null==t?function(){try{var t;return o&&(t=o.randomBytes)?t=t(c):(t=new Uint8Array(c),(i.crypto||i.msCrypto).getRandomValues(t)),w(t)}catch(t){var e=i.navigator,n=e&&e.plugins;return[+new Date,i,n,i.screen,w(s)]}}():t,3),r),d=new p(r),b=function(){for(var t=d.g(6),e=u,n=0;t<h;)t=(t+n)*c,e*=c,n=d.g(1);for(;t>=l;)t/=2,e/=2,n>>>=1;return(t+n)/e};return b.int32=function(){return 0|d.g(4)},b.quick=function(){return d.g(4)/4294967296},b.double=b,y(w(d.S),s),(e.pass||n||function(t,e,n,r){return r&&(r.S&&m(r,d),t.state=function(){return m(d,{})}),n?(a.random=t,e):t})(b,f,"global"in e?e.global:this==a,e.state)}function p(t){var e,n=t.length,r=this,i=0,s=r.i=r.j=0,a=r.S=[];for(n||(t=[n++]);i<c;)a[i]=i++;for(i=0;i<c;i++)a[i]=a[s=f&s+t[i%n]+(e=a[i])],a[s]=e;(r.g=function(t){for(var e,n=0,i=r.i,s=r.j,a=r.S;t--;)e=a[i=f&i+1],n=n*c+a[f&(a[i]=a[s=f&s+e])+(a[s]=e)];return r.i=i,r.j=s,n})(c)}function m(t,e){return e.i=t.i,e.j=t.j,e.S=t.S.slice(),e}function g(t,e){var n,r=[],i=typeof t;if(e&&"object"==i)for(n in t)try{r.push(g(t[n],e-1))}catch(t){}return r.length?r:"string"==i?t:t+"\0"}function y(t,e){for(var n,r=t+"",i=0;i<r.length;)e[f&i]=f&(n^=19*e[f&i])+r.charCodeAt(i++);return w(e)}function w(t){return String.fromCharCode.apply(0,t)}if(y(a.random(),s),t.exports){t.exports=d;try{o=n(5042)}catch(t){}}else void 0===(r=function(){return d}.call(e,n,e,t))||(t.exports=r)}("undefined"!=typeof self?self:this,[],Math)}}]);
|
|
3
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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b0IsRUFBUTNDLEVBQUkrRCxHQUFPRCxFQUFRLEdBQUssQ0FBRSxNQUFPcDVCLEdBQUksQ0FHbkUsT0FBUW1JLEVBQU8xRyxPQUFTMEcsRUFBZ0IsVUFBUG14QixFQUFrQmhFLEVBQU1BLEVBQU0sSUFDakUsQ0FPQSxTQUFTMEMsRUFBTzVCLEVBQU1wckIsR0FFcEIsSUFEQSxJQUE0QnV1QixFQUF4QkMsRUFBYXBELEVBQU8sR0FBV2xtQixFQUFJLEVBQ2hDQSxFQUFJc3BCLEVBQVcvM0IsUUFDcEJ1SixFQUFJNnNCLEVBQU8zbkIsR0FDVDJuQixHQUFTMEIsR0FBeUIsR0FBaEJ2dUIsRUFBSTZzQixFQUFPM25CLElBQVdzcEIsRUFBV24xQixXQUFXNkwsS0FFbEUsT0FBT2lvQixFQUFTbnRCLEVBQ2xCLENBNkJBLFNBQVNtdEIsRUFBUzduQixHQUNoQixPQUFPbEssT0FBT0MsYUFBYVosTUFBTSxFQUFHNkssRUFDdEMsQ0FlQSxHQU5BMG5CLEVBQU9ULEVBQUtyb0IsU0FBVW9vQixHQU1hMXZCLEVBQU9FLFFBQVMsQ0FDakRGLEVBQU9FLFFBQVVnd0IsRUFFakIsSUFDRU4sRUFBYSxFQUFRLEtBQ3ZCLENBQUUsTUFBT2lDLEdBQUssQ0FDaEIsV0FDMEMsS0FBeEMsYUFBb0IsT0FBTzNCLENBQWEsK0JBUXpDLENBOU5ELENBaU9tQixvQkFBVDE2QixLQUF3QkEsS0FBT3lFLEtBQ3ZDLEdBQ0F5RiIsInNvdXJjZXMiOlsid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21hdGgvc3JjL2Ric2Nhbi93YXNtL3dhc21EYnNjYW4uanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL2Rpc3RhbmNlLW1hdHJpeC91dGlscy5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdHlwZS1kZWNsYXJhdGlvbnMuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zLmpzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy90eXBlZC1tZXRyaWNzL3R5cGVkLW1ldHJpY3MuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL2Rpc3RhbmNlLW1hdHJpeC9kaXN0YW5jZS1tYXRyaXgtc2VydmljZS5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdW1hcC91dGlscy5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdW1hcC9oZWFwLmpzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy91bWFwL21hdHJpeC5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdW1hcC90cmVlLmpzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy91bWFwL3VtYXAuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3VtYXAvbm5fZGVzY2VudC5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvbWwtbGV2ZW5iZXJnLW1hcnF1YXJkdC9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3Qtc25lL3Qtc25lLmpzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9kaXN0YW5jZS1tYXRyaXgvcHJveHkuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWF0aC9zcmMvd2ViR1BVL211bHRpLWNvbC1rbm4vd2ViR1BVLWFnZ3JlZ2F0aW9uLmpzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21hdGgvc3JjL3dlYkdQVS9tdWx0aS1jb2wta25uL3dlYkdQVS1tdWx0aWNvbC1kaXN0YW5jZXMuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWF0aC9zcmMvd2ViR1BVL211bHRpLWNvbC1rbm4vbXVsdGlDb2wtS05OLmpzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21hdGgvc3JjL3dlYkdQVS9tdWx0aS1jb2wta25uL3dlYkdQVS1wcm9jZXNzLWluZm8uanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL211bHRpLWNvbHVtbi1kaW1lbnNpb25hbGl0eS1yZWR1Y3Rpb24vbXVsdGktY29sdW1uLWRpbS1yZWR1Y2VyLmpzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9tdWx0aS1jb2x1bW4tZGltZW5zaW9uYWxpdHktcmVkdWN0aW9uL211bGl0LWNvbHVtbi1kaW0tcmVkdWNlci13b3JrZXIuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL3NlZWRyYW5kb20vaW5kZXguanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL3NlZWRyYW5kb20vbGliL2FsZWEuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL3NlZWRyYW5kb20vbGliL3R5Y2hlaS5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvc2VlZHJhbmRvbS9saWIveG9yMTI4LmpzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy9zZWVkcmFuZG9tL2xpYi94b3I0MDk2LmpzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy9zZWVkcmFuZG9tL2xpYi94b3JzaGlmdDcuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL3NlZWRyYW5kb20vbGliL3hvcndvdy5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvc2VlZHJhbmRvbS9zZWVkcmFuZG9tLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlxyXG5leHBvcnQgdmFyIGV4cG9ydENwcERic2NhbkxpYiA9ICgoKSA9PiB7XHJcbiAgdmFyIF9zY3JpcHREaXIgPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIGRvY3VtZW50LmN1cnJlbnRTY3JpcHQgPyBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYyA6IHVuZGVmaW5lZDtcclxuICBcclxuICByZXR1cm4gKFxyXG5mdW5jdGlvbihleHBvcnRDcHBEYnNjYW5MaWIgPSB7fSkgIHtcclxuXHJcbi8vIGluY2x1ZGU6IHNoZWxsLmpzXHJcbi8vIFRoZSBNb2R1bGUgb2JqZWN0OiBPdXIgaW50ZXJmYWNlIHRvIHRoZSBvdXRzaWRlIHdvcmxkLiBXZSBpbXBvcnRcclxuLy8gYW5kIGV4cG9ydCB2YWx1ZXMgb24gaXQuIFRoZXJlIGFyZSB2YXJpb3VzIHdheXMgTW9kdWxlIGNhbiBiZSB1c2VkOlxyXG4vLyAxLiBOb3QgZGVmaW5lZC4gV2UgY3JlYXRlIGl0IGhlcmVcclxuLy8gMi4gQSBmdW5jdGlvbiBwYXJhbWV0ZXIsIGZ1bmN0aW9uKE1vZHVsZSkgeyAuLmdlbmVyYXRlZCBjb2RlLi4gfVxyXG4vLyAzLiBwcmUtcnVuIGFwcGVuZGVkIGl0LCB2YXIgTW9kdWxlID0ge307IC4uZ2VuZXJhdGVkIGNvZGUuLlxyXG4vLyA0LiBFeHRlcm5hbCBzY3JpcHQgdGFnIGRlZmluZXMgdmFyIE1vZHVsZS5cclxuLy8gV2UgbmVlZCB0byBjaGVjayBpZiBNb2R1bGUgYWxyZWFkeSBleGlzdHMgKGUuZy4gY2FzZSAzIGFib3ZlKS5cclxuLy8gU3Vic3RpdHV0aW9uIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBhY3R1YWwgY29kZSBvbiBsYXRlciBzdGFnZSBvZiB0aGUgYnVpbGQsXHJcbi8vIHRoaXMgd2F5IENsb3N1cmUgQ29tcGlsZXIgd2lsbCBub3QgbWFuZ2xlIGl0IChlLmcuIGNhc2UgNC4gYWJvdmUpLlxyXG4vLyBOb3RlIHRoYXQgaWYgeW91IHdhbnQgdG8gcnVuIGNsb3N1cmUsIGFuZCBhbHNvIHRvIHVzZSBNb2R1bGVcclxuLy8gYWZ0ZXIgdGhlIGdlbmVyYXRlZCBjb2RlLCB5b3Ugd2lsbCBuZWVkIHRvIGRlZmluZSAgIHZhciBNb2R1bGUgPSB7fTtcclxuLy8gYmVmb3JlIHRoZSBjb2RlLiBUaGVuIHRoYXQgb2JqZWN0IHdpbGwgYmUgdXNlZCBpbiB0aGUgY29kZSwgYW5kIHlvdVxyXG4vLyBjYW4gY29udGludWUgdG8gdXNlIE1vZHVsZSBhZnRlcndhcmRzIGFzIHdlbGwuXHJcbnZhciBNb2R1bGUgPSB0eXBlb2YgZXhwb3J0Q3BwRGJzY2FuTGliICE9ICd1bmRlZmluZWQnID8gZXhwb3J0Q3BwRGJzY2FuTGliIDoge307XHJcblxyXG4vLyBTZXQgdXAgdGhlIHByb21pc2UgdGhhdCBpbmRpY2F0ZXMgdGhlIE1vZHVsZSBpcyBpbml0aWFsaXplZFxyXG52YXIgcmVhZHlQcm9taXNlUmVzb2x2ZSwgcmVhZHlQcm9taXNlUmVqZWN0O1xyXG5Nb2R1bGVbJ3JlYWR5J10gPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuICByZWFkeVByb21pc2VSZXNvbHZlID0gcmVzb2x2ZTtcclxuICByZWFkeVByb21pc2VSZWplY3QgPSByZWplY3Q7XHJcbn0pO1xyXG5cclxuLy8gLS1wcmUtanNlcyBhcmUgZW1pdHRlZCBhZnRlciB0aGUgTW9kdWxlIGludGVncmF0aW9uIGNvZGUsIHNvIHRoYXQgdGhleSBjYW5cclxuLy8gcmVmZXIgdG8gTW9kdWxlIChpZiB0aGV5IGNob29zZTsgdGhleSBjYW4gYWxzbyBkZWZpbmUgTW9kdWxlKVxyXG5cclxuXHJcbi8vIFNvbWV0aW1lcyBhbiBleGlzdGluZyBNb2R1bGUgb2JqZWN0IGV4aXN0cyB3aXRoIHByb3BlcnRpZXNcclxuLy8gbWVhbnQgdG8gb3ZlcndyaXRlIHRoZSBkZWZhdWx0IG1vZHVsZSBmdW5jdGlvbmFsaXR5LiBIZXJlXHJcbi8vIHdlIGNvbGxlY3QgdGhvc2UgcHJvcGVydGllcyBhbmQgcmVhcHBseSBfYWZ0ZXJfIHdlIGNvbmZpZ3VyZVxyXG4vLyB0aGUgY3VycmVudCBlbnZpcm9ubWVudCdzIGRlZmF1bHRzIHRvIGF2b2lkIGhhdmluZyB0byBiZSBzb1xyXG4vLyBkZWZlbnNpdmUgZHVyaW5nIGluaXRpYWxpemF0aW9uLlxyXG52YXIgbW9kdWxlT3ZlcnJpZGVzID0gT2JqZWN0LmFzc2lnbih7fSwgTW9kdWxlKTtcclxuXHJcbnZhciBhcmd1bWVudHNfID0gW107XHJcbnZhciB0aGlzUHJvZ3JhbSA9ICcuL3RoaXMucHJvZ3JhbSc7XHJcbnZhciBxdWl0XyA9IChzdGF0dXMsIHRvVGhyb3cpID0+IHtcclxuICB0aHJvdyB0b1Rocm93O1xyXG59O1xyXG5cclxuLy8gRGV0ZXJtaW5lIHRoZSBydW50aW1lIGVudmlyb25tZW50IHdlIGFyZSBpbi4gWW91IGNhbiBjdXN0b21pemUgdGhpcyBieVxyXG4vLyBzZXR0aW5nIHRoZSBFTlZJUk9OTUVOVCBzZXR0aW5nIGF0IGNvbXBpbGUgdGltZSAoc2VlIHNldHRpbmdzLmpzKS5cclxuXHJcbi8vIEF0dGVtcHQgdG8gYXV0by1kZXRlY3QgdGhlIGVudmlyb25tZW50XHJcbnZhciBFTlZJUk9OTUVOVF9JU19XRUIgPSB0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnO1xyXG52YXIgRU5WSVJPTk1FTlRfSVNfV09SS0VSID0gdHlwZW9mIGltcG9ydFNjcmlwdHMgPT0gJ2Z1bmN0aW9uJztcclxuLy8gTi5iLiBFbGVjdHJvbi5qcyBlbnZpcm9ubWVudCBpcyBzaW11bHRhbmVvdXNseSBhIE5PREUtZW52aXJvbm1lbnQsIGJ1dFxyXG4vLyBhbHNvIGEgd2ViIGVudmlyb25tZW50LlxyXG52YXIgRU5WSVJPTk1FTlRfSVNfTk9ERSA9IHR5cGVvZiBwcm9jZXNzID09ICdvYmplY3QnICYmIHR5cGVvZiBwcm9jZXNzLnZlcnNpb25zID09ICdvYmplY3QnICYmIHR5cGVvZiBwcm9jZXNzLnZlcnNpb25zLm5vZGUgPT0gJ3N0cmluZyc7XHJcbnZhciBFTlZJUk9OTUVOVF9JU19TSEVMTCA9ICFFTlZJUk9OTUVOVF9JU19XRUIgJiYgIUVOVklST05NRU5UX0lTX05PREUgJiYgIUVOVklST05NRU5UX0lTX1dPUktFUjtcclxuXHJcbi8vIGAvYCBzaG91bGQgYmUgcHJlc2VudCBhdCB0aGUgZW5kIGlmIGBzY3JpcHREaXJlY3RvcnlgIGlzIG5vdCBlbXB0eVxyXG52YXIgc2NyaXB0RGlyZWN0b3J5ID0gJyc7XHJcbmZ1bmN0aW9uIGxvY2F0ZUZpbGUocGF0aCkge1xyXG4gIGlmIChNb2R1bGVbJ2xvY2F0ZUZpbGUnXSkge1xyXG4gICAgcmV0dXJuIE1vZHVsZVsnbG9jYXRlRmlsZSddKHBhdGgsIHNjcmlwdERpcmVjdG9yeSk7XHJcbiAgfVxyXG4gIHJldHVybiBzY3JpcHREaXJlY3RvcnkgKyBwYXRoO1xyXG59XHJcblxyXG4vLyBIb29rcyB0aGF0IGFyZSBpbXBsZW1lbnRlZCBkaWZmZXJlbnRseSBpbiBkaWZmZXJlbnQgcnVudGltZSBlbnZpcm9ubWVudHMuXHJcbnZhciByZWFkXyxcclxuICAgIHJlYWRBc3luYyxcclxuICAgIHJlYWRCaW5hcnksXHJcbiAgICBzZXRXaW5kb3dUaXRsZTtcclxuXHJcbi8vIE5vdGUgdGhhdCB0aGlzIGluY2x1ZGVzIE5vZGUuanMgd29ya2VycyB3aGVuIHJlbGV2YW50IChwdGhyZWFkcyBpcyBlbmFibGVkKS5cclxuLy8gTm9kZS5qcyB3b3JrZXJzIGFyZSBkZXRlY3RlZCBhcyBhIGNvbWJpbmF0aW9uIG9mIEVOVklST05NRU5UX0lTX1dPUktFUiBhbmRcclxuLy8gRU5WSVJPTk1FTlRfSVNfTk9ERS5cclxuaWYgKEVOVklST05NRU5UX0lTX1dFQiB8fCBFTlZJUk9OTUVOVF9JU19XT1JLRVIpIHtcclxuICBpZiAoRU5WSVJPTk1FTlRfSVNfV09SS0VSKSB7IC8vIENoZWNrIHdvcmtlciwgbm90IHdlYiwgc2luY2Ugd2luZG93IGNvdWxkIGJlIHBvbHlmaWxsZWRcclxuICAgIHNjcmlwdERpcmVjdG9yeSA9IHNlbGYubG9jYXRpb24uaHJlZjtcclxuICB9IGVsc2UgaWYgKHR5cGVvZiBkb2N1bWVudCAhPSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudC5jdXJyZW50U2NyaXB0KSB7IC8vIHdlYlxyXG4gICAgc2NyaXB0RGlyZWN0b3J5ID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM7XHJcbiAgfVxyXG4gIC8vIFdoZW4gTU9EVUxBUklaRSwgdGhpcyBKUyBtYXkgYmUgZXhlY3V0ZWQgbGF0ZXIsIGFmdGVyIGRvY3VtZW50LmN1cnJlbnRTY3JpcHRcclxuICAvLyBpcyBnb25lLCBzbyB3ZSBzYXZlZCBpdCwgYW5kIHdlIHVzZSBpdCBoZXJlIGluc3RlYWQgb2YgYW55IG90aGVyIGluZm8uXHJcbiAgaWYgKF9zY3JpcHREaXIpIHtcclxuICAgIHNjcmlwdERpcmVjdG9yeSA9IF9zY3JpcHREaXI7XHJcbiAgfVxyXG4gIC8vIGJsb2IgdXJscyBsb29rIGxpa2UgYmxvYjpodHRwOi8vc2l0ZS5jb20vZXRjL2V0YyBhbmQgd2UgY2Fubm90IGluZmVyIGFueXRoaW5nIGZyb20gdGhlbS5cclxuICAvLyBvdGhlcndpc2UsIHNsaWNlIG9mZiB0aGUgZmluYWwgcGFydCBvZiB0aGUgdXJsIHRvIGZpbmQgdGhlIHNjcmlwdCBkaXJlY3RvcnkuXHJcbiAgLy8gaWYgc2NyaXB0RGlyZWN0b3J5IGRvZXMgbm90IGNvbnRhaW4gYSBzbGFzaCwgbGFzdEluZGV4T2Ygd2lsbCByZXR1cm4gLTEsXHJcbiAgLy8gYW5kIHNjcmlwdERpcmVjdG9yeSB3aWxsIGNvcnJlY3RseSBiZSByZXBsYWNlZCB3aXRoIGFuIGVtcHR5IHN0cmluZy5cclxuICAvLyBJZiBzY3JpcHREaXJlY3RvcnkgY29udGFpbnMgYSBxdWVyeSAoc3RhcnRpbmcgd2l0aCA/KSBvciBhIGZyYWdtZW50IChzdGFydGluZyB3aXRoICMpLFxyXG4gIC8vIHRoZXkgYXJlIHJlbW92ZWQgYmVjYXVzZSB0aGV5IGNvdWxkIGNvbnRhaW4gYSBzbGFzaC5cclxuICBpZiAoc2NyaXB0RGlyZWN0b3J5LmluZGV4T2YoJ2Jsb2I6JykgIT09IDApIHtcclxuICAgIHNjcmlwdERpcmVjdG9yeSA9IHNjcmlwdERpcmVjdG9yeS5zdWJzdHIoMCwgc2NyaXB0RGlyZWN0b3J5LnJlcGxhY2UoL1s/I10uKi8sIFwiXCIpLmxhc3RJbmRleE9mKCcvJykrMSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHNjcmlwdERpcmVjdG9yeSA9ICcnO1xyXG4gIH1cclxuXHJcbiAgLy8gRGlmZmVyZW50aWF0ZSB0aGUgV2ViIFdvcmtlciBmcm9tIHRoZSBOb2RlIFdvcmtlciBjYXNlLCBhcyByZWFkaW5nIG11c3RcclxuICAvLyBiZSBkb25lIGRpZmZlcmVudGx5LlxyXG4gIHtcclxuLy8gaW5jbHVkZTogd2ViX29yX3dvcmtlcl9zaGVsbF9yZWFkLmpzXHJcbnJlYWRfID0gKHVybCkgPT4ge1xyXG4gICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XHJcbiAgICAgIHhoci5vcGVuKCdHRVQnLCB1cmwsIGZhbHNlKTtcclxuICAgICAgeGhyLnNlbmQobnVsbCk7XHJcbiAgICAgIHJldHVybiB4aHIucmVzcG9uc2VUZXh0O1xyXG4gIH1cclxuXHJcbiAgaWYgKEVOVklST05NRU5UX0lTX1dPUktFUikge1xyXG4gICAgcmVhZEJpbmFyeSA9ICh1cmwpID0+IHtcclxuICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XHJcbiAgICAgICAgeGhyLm9wZW4oJ0dFVCcsIHVybCwgZmFsc2UpO1xyXG4gICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYXJyYXlidWZmZXInO1xyXG4gICAgICAgIHhoci5zZW5kKG51bGwpO1xyXG4gICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheSgvKiogQHR5cGV7IUFycmF5QnVmZmVyfSAqLyh4aHIucmVzcG9uc2UpKTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICByZWFkQXN5bmMgPSAodXJsLCBvbmxvYWQsIG9uZXJyb3IpID0+IHtcclxuICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcclxuICAgIHhoci5vcGVuKCdHRVQnLCB1cmwsIHRydWUpO1xyXG4gICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdhcnJheWJ1ZmZlcic7XHJcbiAgICB4aHIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICBpZiAoeGhyLnN0YXR1cyA9PSAyMDAgfHwgKHhoci5zdGF0dXMgPT0gMCAmJiB4aHIucmVzcG9uc2UpKSB7IC8vIGZpbGUgVVJMcyBjYW4gcmV0dXJuIDBcclxuICAgICAgICBvbmxvYWQoeGhyLnJlc3BvbnNlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgb25lcnJvcigpO1xyXG4gICAgfTtcclxuICAgIHhoci5vbmVycm9yID0gb25lcnJvcjtcclxuICAgIHhoci5zZW5kKG51bGwpO1xyXG4gIH1cclxuXHJcbi8vIGVuZCBpbmNsdWRlOiB3ZWJfb3Jfd29ya2VyX3NoZWxsX3JlYWQuanNcclxuICB9XHJcblxyXG4gIHNldFdpbmRvd1RpdGxlID0gKHRpdGxlKSA9PiBkb2N1bWVudC50aXRsZSA9IHRpdGxlO1xyXG59IGVsc2Vcclxue1xyXG59XHJcblxyXG52YXIgb3V0ID0gTW9kdWxlWydwcmludCddIHx8IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSk7XHJcbnZhciBlcnIgPSBNb2R1bGVbJ3ByaW50RXJyJ10gfHwgY29uc29sZS53YXJuLmJpbmQoY29uc29sZSk7XHJcblxyXG4vLyBNZXJnZSBiYWNrIGluIHRoZSBvdmVycmlkZXNcclxuT2JqZWN0LmFzc2lnbihNb2R1bGUsIG1vZHVsZU92ZXJyaWRlcyk7XHJcbi8vIEZyZWUgdGhlIG9iamVjdCBoaWVyYXJjaHkgY29udGFpbmVkIGluIHRoZSBvdmVycmlkZXMsIHRoaXMgbGV0cyB0aGUgR0NcclxuLy8gcmVjbGFpbSBkYXRhIHVzZWQgZS5nLiBpbiBtZW1vcnlJbml0aWFsaXplclJlcXVlc3QsIHdoaWNoIGlzIGEgbGFyZ2UgdHlwZWQgYXJyYXkuXHJcbm1vZHVsZU92ZXJyaWRlcyA9IG51bGw7XHJcblxyXG4vLyBFbWl0IGNvZGUgdG8gaGFuZGxlIGV4cGVjdGVkIHZhbHVlcyBvbiB0aGUgTW9kdWxlIG9iamVjdC4gVGhpcyBhcHBsaWVzIE1vZHVsZS54XHJcbi8vIHRvIHRoZSBwcm9wZXIgbG9jYWwgeC4gVGhpcyBoYXMgdHdvIGJlbmVmaXRzOiBmaXJzdCwgd2Ugb25seSBlbWl0IGl0IGlmIGl0IGlzXHJcbi8vIGV4cGVjdGVkIHRvIGFycml2ZSwgYW5kIHNlY29uZCwgYnkgdXNpbmcgYSBsb2NhbCBldmVyeXdoZXJlIGVsc2UgdGhhdCBjYW4gYmVcclxuLy8gbWluaWZpZWQuXHJcblxyXG5pZiAoTW9kdWxlWydhcmd1bWVudHMnXSkgYXJndW1lbnRzXyA9IE1vZHVsZVsnYXJndW1lbnRzJ107XHJcblxyXG5pZiAoTW9kdWxlWyd0aGlzUHJvZ3JhbSddKSB0aGlzUHJvZ3JhbSA9IE1vZHVsZVsndGhpc1Byb2dyYW0nXTtcclxuXHJcbmlmIChNb2R1bGVbJ3F1aXQnXSkgcXVpdF8gPSBNb2R1bGVbJ3F1aXQnXTtcclxuXHJcbi8vIHBlcmZvcm0gYXNzZXJ0aW9ucyBpbiBzaGVsbC5qcyBhZnRlciB3ZSBzZXQgdXAgb3V0KCkgYW5kIGVycigpLCBhcyBvdGhlcndpc2UgaWYgYW4gYXNzZXJ0aW9uIGZhaWxzIGl0IGNhbm5vdCBwcmludCB0aGUgbWVzc2FnZVxyXG5cclxuXHJcbi8vIGVuZCBpbmNsdWRlOiBzaGVsbC5qc1xyXG4vLyBpbmNsdWRlOiBwcmVhbWJsZS5qc1xyXG4vLyA9PT0gUHJlYW1ibGUgbGlicmFyeSBzdHVmZiA9PT1cclxuXHJcbi8vIERvY3VtZW50YXRpb24gZm9yIHRoZSBwdWJsaWMgQVBJcyBkZWZpbmVkIGluIHRoaXMgZmlsZSBtdXN0IGJlIHVwZGF0ZWQgaW46XHJcbi8vICAgIHNpdGUvc291cmNlL2RvY3MvYXBpX3JlZmVyZW5jZS9wcmVhbWJsZS5qcy5yc3RcclxuLy8gQSBwcmVidWlsdCBsb2NhbCB2ZXJzaW9uIG9mIHRoZSBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBhdDpcclxuLy8gICAgc2l0ZS9idWlsZC90ZXh0L2RvY3MvYXBpX3JlZmVyZW5jZS9wcmVhbWJsZS5qcy50eHRcclxuLy8gWW91IGNhbiBhbHNvIGJ1aWxkIGRvY3MgbG9jYWxseSBhcyBIVE1MIG9yIG90aGVyIGZvcm1hdHMgaW4gc2l0ZS9cclxuLy8gQW4gb25saW5lIEhUTUwgdmVyc2lvbiAod2hpY2ggbWF5IGJlIG9mIGEgZGlmZmVyZW50IHZlcnNpb24gb2YgRW1zY3JpcHRlbilcclxuLy8gICAgaXMgdXAgYXQgaHR0cDovL2tyaXBrZW4uZ2l0aHViLmlvL2Vtc2NyaXB0ZW4tc2l0ZS9kb2NzL2FwaV9yZWZlcmVuY2UvcHJlYW1ibGUuanMuaHRtbFxyXG5cclxudmFyIHdhc21CaW5hcnk7XHJcbmlmIChNb2R1bGVbJ3dhc21CaW5hcnknXSkgd2FzbUJpbmFyeSA9IE1vZHVsZVsnd2FzbUJpbmFyeSddO1xyXG52YXIgbm9FeGl0UnVudGltZSA9IE1vZHVsZVsnbm9FeGl0UnVudGltZSddIHx8IHRydWU7XHJcblxyXG5pZiAodHlwZW9mIFdlYkFzc2VtYmx5ICE9ICdvYmplY3QnKSB7XHJcbiAgYWJvcnQoJ25vIG5hdGl2ZSB3YXNtIHN1cHBvcnQgZGV0ZWN0ZWQnKTtcclxufVxyXG5cclxuLy8gV2FzbSBnbG9iYWxzXHJcblxyXG52YXIgd2FzbU1lbW9yeTtcclxuXHJcbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4vLyBSdW50aW1lIGVzc2VudGlhbHNcclxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcblxyXG4vLyB3aGV0aGVyIHdlIGFyZSBxdWl0dGluZyB0aGUgYXBwbGljYXRpb24uIG5vIGNvZGUgc2hvdWxkIHJ1biBhZnRlciB0aGlzLlxyXG4vLyBzZXQgaW4gZXhpdCgpIGFuZCBhYm9ydCgpXHJcbnZhciBBQk9SVCA9IGZhbHNlO1xyXG5cclxuLy8gc2V0IGJ5IGV4aXQoKSBhbmQgYWJvcnQoKS4gIFBhc3NlZCB0byAnb25FeGl0JyBoYW5kbGVyLlxyXG4vLyBOT1RFOiBUaGlzIGlzIGFsc28gdXNlZCBhcyB0aGUgcHJvY2VzcyByZXR1cm4gY29kZSBjb2RlIGluIHNoZWxsIGVudmlyb25tZW50c1xyXG4vLyBidXQgb25seSB3aGVuIG5vRXhpdFJ1bnRpbWUgaXMgZmFsc2UuXHJcbnZhciBFWElUU1RBVFVTO1xyXG5cclxuLyoqIEB0eXBlIHtmdW5jdGlvbigqLCBzdHJpbmc9KX0gKi9cclxuZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbiwgdGV4dCkge1xyXG4gIGlmICghY29uZGl0aW9uKSB7XHJcbiAgICAvLyBUaGlzIGJ1aWxkIHdhcyBjcmVhdGVkIHdpdGhvdXQgQVNTRVJUSU9OUyBkZWZpbmVkLiAgYGFzc2VydCgpYCBzaG91bGQgbm90XHJcbiAgICAvLyBldmVyIGJlIGNhbGxlZCBpbiB0aGlzIGNvbmZpZ3VyYXRpb24gYnV0IGluIGNhc2UgdGhlcmUgYXJlIGNhbGxlcnMgaW5cclxuICAgIC8vIHRoZSB3aWxkIGxlYXZlIHRoaXMgc2ltcGxlIGFib3J0KCkgaW1wbGVtZW5hdGlvbiBoZXJlIGZvciBub3cuXHJcbiAgICBhYm9ydCh0ZXh0KTtcclxuICB9XHJcbn1cclxuXHJcbi8vIE1lbW9yeSBtYW5hZ2VtZW50XHJcblxyXG52YXIgSEVBUCxcclxuLyoqIEB0eXBlIHshSW50OEFycmF5fSAqL1xyXG4gIEhFQVA4LFxyXG4vKiogQHR5cGUgeyFVaW50OEFycmF5fSAqL1xyXG4gIEhFQVBVOCxcclxuLyoqIEB0eXBlIHshSW50MTZBcnJheX0gKi9cclxuICBIRUFQMTYsXHJcbi8qKiBAdHlwZSB7IVVpbnQxNkFycmF5fSAqL1xyXG4gIEhFQVBVMTYsXHJcbi8qKiBAdHlwZSB7IUludDMyQXJyYXl9ICovXHJcbiAgSEVBUDMyLFxyXG4vKiogQHR5cGUgeyFVaW50MzJBcnJheX0gKi9cclxuICBIRUFQVTMyLFxyXG4vKiogQHR5cGUgeyFGbG9hdDMyQXJyYXl9ICovXHJcbiAgSEVBUEYzMixcclxuLyoqIEB0eXBlIHshRmxvYXQ2NEFycmF5fSAqL1xyXG4gIEhFQVBGNjQ7XHJcblxyXG5mdW5jdGlvbiB1cGRhdGVNZW1vcnlWaWV3cygpIHtcclxuICB2YXIgYiA9IHdhc21NZW1vcnkuYnVmZmVyO1xyXG4gIE1vZHVsZVsnSEVBUDgnXSA9IEhFQVA4ID0gbmV3IEludDhBcnJheShiKTtcclxuICBNb2R1bGVbJ0hFQVAxNiddID0gSEVBUDE2ID0gbmV3IEludDE2QXJyYXkoYik7XHJcbiAgTW9kdWxlWydIRUFQMzInXSA9IEhFQVAzMiA9IG5ldyBJbnQzMkFycmF5KGIpO1xyXG4gIE1vZHVsZVsnSEVBUFU4J10gPSBIRUFQVTggPSBuZXcgVWludDhBcnJheShiKTtcclxuICBNb2R1bGVbJ0hFQVBVMTYnXSA9IEhFQVBVMTYgPSBuZXcgVWludDE2QXJyYXkoYik7XHJcbiAgTW9kdWxlWydIRUFQVTMyJ10gPSBIRUFQVTMyID0gbmV3IFVpbnQzMkFycmF5KGIpO1xyXG4gIE1vZHVsZVsnSEVBUEYzMiddID0gSEVBUEYzMiA9IG5ldyBGbG9hdDMyQXJyYXkoYik7XHJcbiAgTW9kdWxlWydIRUFQRjY0J10gPSBIRUFQRjY0ID0gbmV3IEZsb2F0NjRBcnJheShiKTtcclxufVxyXG5cclxuLy8gaW5jbHVkZTogcnVudGltZV9pbml0X3RhYmxlLmpzXHJcbi8vIEluIHJlZ3VsYXIgbm9uLVJFTE9DQVRBQkxFIG1vZGUgdGhlIHRhYmxlIGlzIGV4cG9ydGVkXHJcbi8vIGZyb20gdGhlIHdhc20gbW9kdWxlIGFuZCB0aGlzIHdpbGwgYmUgYXNzaWduZWQgb25jZVxyXG4vLyB0aGUgZXhwb3J0cyBhcmUgYXZhaWxhYmxlLlxyXG52YXIgd2FzbVRhYmxlO1xyXG5cclxuLy8gZW5kIGluY2x1ZGU6IHJ1bnRpbWVfaW5pdF90YWJsZS5qc1xyXG4vLyBpbmNsdWRlOiBydW50aW1lX3N0YWNrX2NoZWNrLmpzXHJcbi8vIGVuZCBpbmNsdWRlOiBydW50aW1lX3N0YWNrX2NoZWNrLmpzXHJcbi8vIGluY2x1ZGU6IHJ1bnRpbWVfYXNzZXJ0aW9ucy5qc1xyXG4vLyBlbmQgaW5jbHVkZTogcnVudGltZV9hc3NlcnRpb25zLmpzXHJcbnZhciBfX0FUUFJFUlVOX18gID0gW107IC8vIGZ1bmN0aW9ucyBjYWxsZWQgYmVmb3JlIHRoZSBydW50aW1lIGlzIGluaXRpYWxpemVkXHJcbnZhciBfX0FUSU5JVF9fICAgID0gW107IC8vIGZ1bmN0aW9ucyBjYWxsZWQgZHVyaW5nIHN0YXJ0dXBcclxudmFyIF9fQVRFWElUX18gICAgPSBbXTsgLy8gZnVuY3Rpb25zIGNhbGxlZCBkdXJpbmcgc2h1dGRvd25cclxudmFyIF9fQVRQT1NUUlVOX18gPSBbXTsgLy8gZnVuY3Rpb25zIGNhbGxlZCBhZnRlciB0aGUgbWFpbigpIGlzIGNhbGxlZFxyXG5cclxudmFyIHJ1bnRpbWVJbml0aWFsaXplZCA9IGZhbHNlO1xyXG5cclxudmFyIHJ1bnRpbWVLZWVwYWxpdmVDb3VudGVyID0gMDtcclxuXHJcbmZ1bmN0aW9uIGtlZXBSdW50aW1lQWxpdmUoKSB7XHJcbiAgcmV0dXJuIG5vRXhpdFJ1bnRpbWUgfHwgcnVudGltZUtlZXBhbGl2ZUNvdW50ZXIgPiAwO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwcmVSdW4oKSB7XHJcbiAgaWYgKE1vZHVsZVsncHJlUnVuJ10pIHtcclxuICAgIGlmICh0eXBlb2YgTW9kdWxlWydwcmVSdW4nXSA9PSAnZnVuY3Rpb24nKSBNb2R1bGVbJ3ByZVJ1biddID0gW01vZHVsZVsncHJlUnVuJ11dO1xyXG4gICAgd2hpbGUgKE1vZHVsZVsncHJlUnVuJ10ubGVuZ3RoKSB7XHJcbiAgICAgIGFkZE9uUHJlUnVuKE1vZHVsZVsncHJlUnVuJ10uc2hpZnQoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNhbGxSdW50aW1lQ2FsbGJhY2tzKF9fQVRQUkVSVU5fXyk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGluaXRSdW50aW1lKCkge1xyXG4gIHJ1bnRpbWVJbml0aWFsaXplZCA9IHRydWU7XHJcblxyXG4gIFxyXG4gIGNhbGxSdW50aW1lQ2FsbGJhY2tzKF9fQVRJTklUX18pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwb3N0UnVuKCkge1xyXG5cclxuICBpZiAoTW9kdWxlWydwb3N0UnVuJ10pIHtcclxuICAgIGlmICh0eXBlb2YgTW9kdWxlWydwb3N0UnVuJ10gPT0gJ2Z1bmN0aW9uJykgTW9kdWxlWydwb3N0UnVuJ10gPSBbTW9kdWxlWydwb3N0UnVuJ11dO1xyXG4gICAgd2hpbGUgKE1vZHVsZVsncG9zdFJ1biddLmxlbmd0aCkge1xyXG4gICAgICBhZGRPblBvc3RSdW4oTW9kdWxlWydwb3N0UnVuJ10uc2hpZnQoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUUE9TVFJVTl9fKTtcclxufVxyXG5cclxuZnVuY3Rpb24gYWRkT25QcmVSdW4oY2IpIHtcclxuICBfX0FUUFJFUlVOX18udW5zaGlmdChjYik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFkZE9uSW5pdChjYikge1xyXG4gIF9fQVRJTklUX18udW5zaGlmdChjYik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFkZE9uRXhpdChjYikge1xyXG59XHJcblxyXG5mdW5jdGlvbiBhZGRPblBvc3RSdW4oY2IpIHtcclxuICBfX0FUUE9TVFJVTl9fLnVuc2hpZnQoY2IpO1xyXG59XHJcblxyXG4vLyBpbmNsdWRlOiBydW50aW1lX21hdGguanNcclxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvTWF0aC9pbXVsXHJcblxyXG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9NYXRoL2Zyb3VuZFxyXG5cclxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvTWF0aC9jbHozMlxyXG5cclxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvTWF0aC90cnVuY1xyXG5cclxuLy8gZW5kIGluY2x1ZGU6IHJ1bnRpbWVfbWF0aC5qc1xyXG4vLyBBIGNvdW50ZXIgb2YgZGVwZW5kZW5jaWVzIGZvciBjYWxsaW5nIHJ1bigpLiBJZiB3ZSBuZWVkIHRvXHJcbi8vIGRvIGFzeW5jaHJvbm91cyB3b3JrIGJlZm9yZSBydW5uaW5nLCBpbmNyZW1lbnQgdGhpcyBhbmRcclxuLy8gZGVjcmVtZW50IGl0LiBJbmNyZW1lbnRpbmcgbXVzdCBoYXBwZW4gaW4gYSBwbGFjZSBsaWtlXHJcbi8vIE1vZHVsZS5wcmVSdW4gKHVzZWQgYnkgZW1jYyB0byBhZGQgZmlsZSBwcmVsb2FkaW5nKS5cclxuLy8gTm90ZSB0aGF0IHlvdSBjYW4gYWRkIGRlcGVuZGVuY2llcyBpbiBwcmVSdW4sIGV2ZW4gdGhvdWdoXHJcbi8vIGl0IGhhcHBlbnMgcmlnaHQgYmVmb3JlIHJ1biAtIHJ1biB3aWxsIGJlIHBvc3Rwb25lZCB1bnRpbFxyXG4vLyB0aGUgZGVwZW5kZW5jaWVzIGFyZSBtZXQuXHJcbnZhciBydW5EZXBlbmRlbmNpZXMgPSAwO1xyXG52YXIgcnVuRGVwZW5kZW5jeVdhdGNoZXIgPSBudWxsO1xyXG52YXIgZGVwZW5kZW5jaWVzRnVsZmlsbGVkID0gbnVsbDsgLy8gb3ZlcnJpZGRlbiB0byB0YWtlIGRpZmZlcmVudCBhY3Rpb25zIHdoZW4gYWxsIHJ1biBkZXBlbmRlbmNpZXMgYXJlIGZ1bGZpbGxlZFxyXG5cclxuZnVuY3Rpb24gZ2V0VW5pcXVlUnVuRGVwZW5kZW5jeShpZCkge1xyXG4gIHJldHVybiBpZDtcclxufVxyXG5cclxuZnVuY3Rpb24gYWRkUnVuRGVwZW5kZW5jeShpZCkge1xyXG4gIHJ1bkRlcGVuZGVuY2llcysrO1xyXG5cclxuICBpZiAoTW9kdWxlWydtb25pdG9yUnVuRGVwZW5kZW5jaWVzJ10pIHtcclxuICAgIE1vZHVsZVsnbW9uaXRvclJ1bkRlcGVuZGVuY2llcyddKHJ1bkRlcGVuZGVuY2llcyk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuZnVuY3Rpb24gcmVtb3ZlUnVuRGVwZW5kZW5jeShpZCkge1xyXG4gIHJ1bkRlcGVuZGVuY2llcy0tO1xyXG5cclxuICBpZiAoTW9kdWxlWydtb25pdG9yUnVuRGVwZW5kZW5jaWVzJ10pIHtcclxuICAgIE1vZHVsZVsnbW9uaXRvclJ1bkRlcGVuZGVuY2llcyddKHJ1bkRlcGVuZGVuY2llcyk7XHJcbiAgfVxyXG5cclxuICBpZiAocnVuRGVwZW5kZW5jaWVzID09IDApIHtcclxuICAgIGlmIChydW5EZXBlbmRlbmN5V2F0Y2hlciAhPT0gbnVsbCkge1xyXG4gICAgICBjbGVhckludGVydmFsKHJ1bkRlcGVuZGVuY3lXYXRjaGVyKTtcclxuICAgICAgcnVuRGVwZW5kZW5jeVdhdGNoZXIgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKGRlcGVuZGVuY2llc0Z1bGZpbGxlZCkge1xyXG4gICAgICB2YXIgY2FsbGJhY2sgPSBkZXBlbmRlbmNpZXNGdWxmaWxsZWQ7XHJcbiAgICAgIGRlcGVuZGVuY2llc0Z1bGZpbGxlZCA9IG51bGw7XHJcbiAgICAgIGNhbGxiYWNrKCk7IC8vIGNhbiBhZGQgYW5vdGhlciBkZXBlbmRlbmNpZXNGdWxmaWxsZWRcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8qKiBAcGFyYW0ge3N0cmluZ3xudW1iZXI9fSB3aGF0ICovXHJcbmZ1bmN0aW9uIGFib3J0KHdoYXQpIHtcclxuICBpZiAoTW9kdWxlWydvbkFib3J0J10pIHtcclxuICAgIE1vZHVsZVsnb25BYm9ydCddKHdoYXQpO1xyXG4gIH1cclxuXHJcbiAgd2hhdCA9ICdBYm9ydGVkKCcgKyB3aGF0ICsgJyknO1xyXG4gIC8vIFRPRE8oc2JjKTogU2hvdWxkIHdlIHJlbW92ZSBwcmludGluZyBhbmQgbGVhdmUgaXQgdXAgdG8gd2hvZXZlclxyXG4gIC8vIGNhdGNoZXMgdGhlIGV4Y2VwdGlvbj9cclxuICBlcnIod2hhdCk7XHJcblxyXG4gIEFCT1JUID0gdHJ1ZTtcclxuICBFWElUU1RBVFVTID0gMTtcclxuXHJcbiAgd2hhdCArPSAnLiBCdWlsZCB3aXRoIC1zQVNTRVJUSU9OUyBmb3IgbW9yZSBpbmZvLic7XHJcblxyXG4gIC8vIFVzZSBhIHdhc20gcnVudGltZSBlcnJvciwgYmVjYXVzZSBhIEpTIGVycm9yIG1pZ2h0IGJlIHNlZW4gYXMgYSBmb3JlaWduXHJcbiAgLy8gZXhjZXB0aW9uLCB3aGljaCBtZWFucyB3ZSdkIHJ1biBkZXN0cnVjdG9ycyBvbiBpdC4gV2UgbmVlZCB0aGUgZXJyb3IgdG9cclxuICAvLyBzaW1wbHkgbWFrZSB0aGUgcHJvZ3JhbSBzdG9wLlxyXG4gIC8vIEZJWE1FIFRoaXMgYXBwcm9hY2ggZG9lcyBub3Qgd29yayBpbiBXYXNtIEVIIGJlY2F1c2UgaXQgY3VycmVudGx5IGRvZXMgbm90IGFzc3VtZVxyXG4gIC8vIGFsbCBSdW50aW1lRXJyb3JzIGFyZSBmcm9tIHRyYXBzOyBpdCBkZWNpZGVzIHdoZXRoZXIgYSBSdW50aW1lRXJyb3IgaXMgZnJvbVxyXG4gIC8vIGEgdHJhcCBvciBub3QgYmFzZWQgb24gYSBoaWRkZW4gZmllbGQgd2l0aGluIHRoZSBvYmplY3QuIFNvIGF0IHRoZSBtb21lbnRcclxuICAvLyB3ZSBkb24ndCBoYXZlIGEgd2F5IG9mIHRocm93aW5nIGEgd2FzbSB0cmFwIGZyb20gSlMuIFRPRE8gTWFrZSBhIEpTIEFQSSB0aGF0XHJcbiAgLy8gYWxsb3dzIHRoaXMgaW4gdGhlIHdhc20gc3BlYy5cclxuXHJcbiAgLy8gU3VwcHJlc3MgY2xvc3VyZSBjb21waWxlciB3YXJuaW5nIGhlcmUuIENsb3N1cmUgY29tcGlsZXIncyBidWlsdGluIGV4dGVyblxyXG4gIC8vIGRlZmludGlvbiBmb3IgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yIGNsYWltcyBpdCB0YWtlcyBubyBhcmd1bWVudHMgZXZlblxyXG4gIC8vIHRob3VnaCBpdCBjYW4uXHJcbiAgLy8gVE9ETyhodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2Nsb3N1cmUtY29tcGlsZXIvcHVsbC8zOTEzKTogUmVtb3ZlIGlmL3doZW4gdXBzdHJlYW0gY2xvc3VyZSBnZXRzIGZpeGVkLlxyXG4gIC8qKiBAc3VwcHJlc3Mge2NoZWNrVHlwZXN9ICovXHJcbiAgdmFyIGUgPSBuZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKHdoYXQpO1xyXG5cclxuICByZWFkeVByb21pc2VSZWplY3QoZSk7XHJcbiAgLy8gVGhyb3cgdGhlIGVycm9yIHdoZXRoZXIgb3Igbm90IE1PRFVMQVJJWkUgaXMgc2V0IGJlY2F1c2UgYWJvcnQgaXMgdXNlZFxyXG4gIC8vIGluIGNvZGUgcGF0aHMgYXBhcnQgZnJvbSBpbnN0YW50aWF0aW9uIHdoZXJlIGFuIGV4Y2VwdGlvbiBpcyBleHBlY3RlZFxyXG4gIC8vIHRvIGJlIHRocm93biB3aGVuIGFib3J0IGlzIGNhbGxlZC5cclxuICB0aHJvdyBlO1xyXG59XHJcblxyXG4vLyBpbmNsdWRlOiBtZW1vcnlwcm9maWxlci5qc1xyXG4vLyBlbmQgaW5jbHVkZTogbWVtb3J5cHJvZmlsZXIuanNcclxuLy8gaW5jbHVkZTogVVJJVXRpbHMuanNcclxuLy8gUHJlZml4IG9mIGRhdGEgVVJJcyBlbWl0dGVkIGJ5IFNJTkdMRV9GSUxFIGFuZCByZWxhdGVkIG9wdGlvbnMuXHJcbnZhciBkYXRhVVJJUHJlZml4ID0gJ2RhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCwnO1xyXG5cclxuLy8gSW5kaWNhdGVzIHdoZXRoZXIgZmlsZW5hbWUgaXMgYSBiYXNlNjQgZGF0YSBVUkkuXHJcbmZ1bmN0aW9uIGlzRGF0YVVSSShmaWxlbmFtZSkge1xyXG4gIC8vIFByZWZpeCBvZiBkYXRhIFVSSXMgZW1pdHRlZCBieSBTSU5HTEVfRklMRSBhbmQgcmVsYXRlZCBvcHRpb25zLlxyXG4gIHJldHVybiBmaWxlbmFtZS5zdGFydHNXaXRoKGRhdGFVUklQcmVmaXgpO1xyXG59XHJcblxyXG4vLyBJbmRpY2F0ZXMgd2hldGhlciBmaWxlbmFtZSBpcyBkZWxpdmVyZWQgdmlhIGZpbGUgcHJvdG9jb2wgKGFzIG9wcG9zZWQgdG8gaHR0cC9odHRwcylcclxuZnVuY3Rpb24gaXNGaWxlVVJJKGZpbGVuYW1lKSB7XHJcbiAgcmV0dXJuIGZpbGVuYW1lLnN0YXJ0c1dpdGgoJ2ZpbGU6Ly8nKTtcclxufVxyXG5cclxuLy8gZW5kIGluY2x1ZGU6IFVSSVV0aWxzLmpzXHJcbi8vIGluY2x1ZGU6IHJ1bnRpbWVfZXhjZXB0aW9ucy5qc1xyXG4vLyBlbmQgaW5jbHVkZTogcnVudGltZV9leGNlcHRpb25zLmpzXHJcbnZhciB3YXNtQmluYXJ5RmlsZTtcclxuICB3YXNtQmluYXJ5RmlsZSA9ICd3YXNtRGJzY2FuLndhc20nO1xyXG4gIGlmICghaXNEYXRhVVJJKHdhc21CaW5hcnlGaWxlKSkge1xyXG4gICAgd2FzbUJpbmFyeUZpbGUgPSBsb2NhdGVGaWxlKHdhc21CaW5hcnlGaWxlKTtcclxuICB9XHJcblxyXG5mdW5jdGlvbiBnZXRCaW5hcnkoZmlsZSkge1xyXG4gIHRyeSB7XHJcbiAgICBpZiAoZmlsZSA9PSB3YXNtQmluYXJ5RmlsZSAmJiB3YXNtQmluYXJ5KSB7XHJcbiAgICAgIHJldHVybiBuZXcgVWludDhBcnJheSh3YXNtQmluYXJ5KTtcclxuICAgIH1cclxuICAgIGlmIChyZWFkQmluYXJ5KSB7XHJcbiAgICAgIHJldHVybiByZWFkQmluYXJ5KGZpbGUpO1xyXG4gICAgfVxyXG4gICAgdGhyb3cgXCJib3RoIGFzeW5jIGFuZCBzeW5jIGZldGNoaW5nIG9mIHRoZSB3YXNtIGZhaWxlZFwiO1xyXG4gIH1cclxuICBjYXRjaCAoZXJyKSB7XHJcbiAgICBhYm9ydChlcnIpO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0QmluYXJ5UHJvbWlzZShiaW5hcnlGaWxlKSB7XHJcbiAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSB0aGUgYmluYXJ5IHlldCwgdHJ5IHRvIGxvYWQgaXQgYXN5bmNocm9ub3VzbHkuXHJcbiAgLy8gRmV0Y2ggaGFzIHNvbWUgYWRkaXRpb25hbCByZXN0cmljdGlvbnMgb3ZlciBYSFIsIGxpa2UgaXQgY2FuJ3QgYmUgdXNlZCBvbiBhIGZpbGU6Ly8gdXJsLlxyXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZ2l0aHViL2ZldGNoL3B1bGwvOTIjaXNzdWVjb21tZW50LTE0MDY2NTkzMlxyXG4gIC8vIENvcmRvdmEgb3IgRWxlY3Ryb24gYXBwcyBhcmUgdHlwaWNhbGx5IGxvYWRlZCBmcm9tIGEgZmlsZTovLyB1cmwuXHJcbiAgLy8gU28gdXNlIGZldGNoIGlmIGl0IGlzIGF2YWlsYWJsZSBhbmQgdGhlIHVybCBpcyBub3QgYSBmaWxlLCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvIFhIUi5cclxuICBpZiAoIXdhc21CaW5hcnkgJiYgKEVOVklST05NRU5UX0lTX1dFQiB8fCBFTlZJUk9OTUVOVF9JU19XT1JLRVIpKSB7XHJcbiAgICBpZiAodHlwZW9mIGZldGNoID09ICdmdW5jdGlvbidcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gZmV0Y2goYmluYXJ5RmlsZSwgeyBjcmVkZW50aWFsczogJ3NhbWUtb3JpZ2luJyB9KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgaWYgKCFyZXNwb25zZVsnb2snXSkge1xyXG4gICAgICAgICAgdGhyb3cgXCJmYWlsZWQgdG8gbG9hZCB3YXNtIGJpbmFyeSBmaWxlIGF0ICdcIiArIGJpbmFyeUZpbGUgKyBcIidcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlWydhcnJheUJ1ZmZlciddKCk7XHJcbiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIHJldHVybiBnZXRCaW5hcnkoYmluYXJ5RmlsZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gT3RoZXJ3aXNlLCBnZXRCaW5hcnkgc2hvdWxkIGJlIGFibGUgdG8gZ2V0IGl0IHN5bmNocm9ub3VzbHlcclxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpIHsgcmV0dXJuIGdldEJpbmFyeShiaW5hcnlGaWxlKTsgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGluc3RhbnRpYXRlQXJyYXlCdWZmZXIoYmluYXJ5RmlsZSwgaW1wb3J0cywgcmVjZWl2ZXIpIHtcclxuICByZXR1cm4gZ2V0QmluYXJ5UHJvbWlzZShiaW5hcnlGaWxlKS50aGVuKGZ1bmN0aW9uKGJpbmFyeSkge1xyXG4gICAgcmV0dXJuIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGJpbmFyeSwgaW1wb3J0cyk7XHJcbiAgfSkudGhlbihmdW5jdGlvbiAoaW5zdGFuY2UpIHtcclxuICAgIHJldHVybiBpbnN0YW5jZTtcclxuICB9KS50aGVuKHJlY2VpdmVyLCBmdW5jdGlvbihyZWFzb24pIHtcclxuICAgIGVycignZmFpbGVkIHRvIGFzeW5jaHJvbm91c2x5IHByZXBhcmUgd2FzbTogJyArIHJlYXNvbik7XHJcblxyXG4gICAgYWJvcnQocmVhc29uKTtcclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gaW5zdGFudGlhdGVBc3luYyhiaW5hcnksIGJpbmFyeUZpbGUsIGltcG9ydHMsIGNhbGxiYWNrKSB7XHJcbiAgaWYgKCFiaW5hcnkgJiZcclxuICAgICAgdHlwZW9mIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nID09ICdmdW5jdGlvbicgJiZcclxuICAgICAgIWlzRGF0YVVSSShiaW5hcnlGaWxlKSAmJlxyXG4gICAgICB0eXBlb2YgZmV0Y2ggPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgcmV0dXJuIGZldGNoKGJpbmFyeUZpbGUsIHsgY3JlZGVudGlhbHM6ICdzYW1lLW9yaWdpbicgfSkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xyXG4gICAgICAvLyBTdXBwcmVzcyBjbG9zdXJlIHdhcm5pbmcgaGVyZSBzaW5jZSB0aGUgdXBzdHJlYW0gZGVmaW5pdGlvbiBmb3JcclxuICAgICAgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcgb25seSBhbGxvd3MgUHJvbWlzZTxSZXBzcG9uc2U+IHJhdGhlciB0aGFuXHJcbiAgICAgIC8vIGFuIGFjdHVhbCBSZXNwb25zZS5cclxuICAgICAgLy8gVE9ETyhodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2Nsb3N1cmUtY29tcGlsZXIvcHVsbC8zOTEzKTogUmVtb3ZlIGlmL3doZW4gdXBzdHJlYW0gY2xvc3VyZSBpcyBmaXhlZC5cclxuICAgICAgLyoqIEBzdXBwcmVzcyB7Y2hlY2tUeXBlc30gKi9cclxuICAgICAgdmFyIHJlc3VsdCA9IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKHJlc3BvbnNlLCBpbXBvcnRzKTtcclxuXHJcbiAgICAgIHJldHVybiByZXN1bHQudGhlbihcclxuICAgICAgICBjYWxsYmFjayxcclxuICAgICAgICBmdW5jdGlvbihyZWFzb24pIHtcclxuICAgICAgICAgIC8vIFdlIGV4cGVjdCB0aGUgbW9zdCBjb21tb24gZmFpbHVyZSBjYXVzZSB0byBiZSBhIGJhZCBNSU1FIHR5cGUgZm9yIHRoZSBiaW5hcnksXHJcbiAgICAgICAgICAvLyBpbiB3aGljaCBjYXNlIGZhbGxpbmcgYmFjayB0byBBcnJheUJ1ZmZlciBpbnN0YW50aWF0aW9uIHNob3VsZCB3b3JrLlxyXG4gICAgICAgICAgZXJyKCd3YXNtIHN0cmVhbWluZyBjb21waWxlIGZhaWxlZDogJyArIHJlYXNvbik7XHJcbiAgICAgICAgICBlcnIoJ2ZhbGxpbmcgYmFjayB0byBBcnJheUJ1ZmZlciBpbnN0YW50aWF0aW9uJyk7XHJcbiAgICAgICAgICByZXR1cm4gaW5zdGFudGlhdGVBcnJheUJ1ZmZlcihiaW5hcnlGaWxlLCBpbXBvcnRzLCBjYWxsYmFjayk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9IGVsc2Uge1xyXG4gICAgcmV0dXJuIGluc3RhbnRpYXRlQXJyYXlCdWZmZXIoYmluYXJ5RmlsZSwgaW1wb3J0cywgY2FsbGJhY2spO1xyXG4gIH1cclxufVxyXG5cclxuLy8gQ3JlYXRlIHRoZSB3YXNtIGluc3RhbmNlLlxyXG4vLyBSZWNlaXZlcyB0aGUgd2FzbSBpbXBvcnRzLCByZXR1cm5zIHRoZSBleHBvcnRzLlxyXG5mdW5jdGlvbiBjcmVhdGVXYXNtKCkge1xyXG4gIC8vIHByZXBhcmUgaW1wb3J0c1xyXG4gIHZhciBpbmZvID0ge1xyXG4gICAgJ2Vudic6IHdhc21JbXBvcnRzLFxyXG4gICAgJ3dhc2lfc25hcHNob3RfcHJldmlldzEnOiB3YXNtSW1wb3J0cyxcclxuICB9O1xyXG4gIC8vIExvYWQgdGhlIHdhc20gbW9kdWxlIGFuZCBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdXNpbmcgbmF0aXZlIHN1cHBvcnQgaW4gdGhlIEpTIGVuZ2luZS5cclxuICAvLyBoYW5kbGUgYSBnZW5lcmF0ZWQgd2FzbSBpbnN0YW5jZSwgcmVjZWl2aW5nIGl0cyBleHBvcnRzIGFuZFxyXG4gIC8vIHBlcmZvcm1pbmcgb3RoZXIgbmVjZXNzYXJ5IHNldHVwXHJcbiAgLyoqIEBwYXJhbSB7V2ViQXNzZW1ibHkuTW9kdWxlPX0gbW9kdWxlKi9cclxuICBmdW5jdGlvbiByZWNlaXZlSW5zdGFuY2UoaW5zdGFuY2UsIG1vZHVsZSkge1xyXG4gICAgdmFyIGV4cG9ydHMgPSBpbnN0YW5jZS5leHBvcnRzO1xyXG5cclxuICAgIE1vZHVsZVsnYXNtJ10gPSBleHBvcnRzO1xyXG5cclxuICAgIHdhc21NZW1vcnkgPSBNb2R1bGVbJ2FzbSddWydtZW1vcnknXTtcclxuICAgIHVwZGF0ZU1lbW9yeVZpZXdzKCk7XHJcblxyXG4gICAgd2FzbVRhYmxlID0gTW9kdWxlWydhc20nXVsnX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZSddO1xyXG5cclxuICAgIGFkZE9uSW5pdChNb2R1bGVbJ2FzbSddWydfX3dhc21fY2FsbF9jdG9ycyddKTtcclxuXHJcbiAgICByZW1vdmVSdW5EZXBlbmRlbmN5KCd3YXNtLWluc3RhbnRpYXRlJyk7XHJcblxyXG4gICAgcmV0dXJuIGV4cG9ydHM7XHJcbiAgfVxyXG4gIC8vIHdhaXQgZm9yIHRoZSBwdGhyZWFkIHBvb2wgKGlmIGFueSlcclxuICBhZGRSdW5EZXBlbmRlbmN5KCd3YXNtLWluc3RhbnRpYXRlJyk7XHJcblxyXG4gIC8vIFByZWZlciBzdHJlYW1pbmcgaW5zdGFudGlhdGlvbiBpZiBhdmFpbGFibGUuXHJcbiAgZnVuY3Rpb24gcmVjZWl2ZUluc3RhbnRpYXRpb25SZXN1bHQocmVzdWx0KSB7XHJcbiAgICAvLyAncmVzdWx0JyBpcyBhIFJlc3VsdE9iamVjdCBvYmplY3Qgd2hpY2ggaGFzIGJvdGggdGhlIG1vZHVsZSBhbmQgaW5zdGFuY2UuXHJcbiAgICAvLyByZWNlaXZlSW5zdGFuY2UoKSB3aWxsIHN3YXAgaW4gdGhlIGV4cG9ydHMgKHRvIE1vZHVsZS5hc20pIHNvIHRoZXkgY2FuIGJlIGNhbGxlZFxyXG4gICAgLy8gVE9ETzogRHVlIHRvIENsb3N1cmUgcmVncmVzc2lvbiBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2Nsb3N1cmUtY29tcGlsZXIvaXNzdWVzLzMxOTMsIHRoZSBhYm92ZSBsaW5lIG5vIGxvbmdlciBvcHRpbWl6ZXMgb3V0IGRvd24gdG8gdGhlIGZvbGxvd2luZyBsaW5lLlxyXG4gICAgLy8gV2hlbiB0aGUgcmVncmVzc2lvbiBpcyBmaXhlZCwgY2FuIHJlc3RvcmUgdGhlIGFib3ZlIFBUSFJFQURTLWVuYWJsZWQgcGF0aC5cclxuICAgIHJlY2VpdmVJbnN0YW5jZShyZXN1bHRbJ2luc3RhbmNlJ10pO1xyXG4gIH1cclxuXHJcbiAgLy8gVXNlciBzaGVsbCBwYWdlcyBjYW4gd3JpdGUgdGhlaXIgb3duIE1vZHVsZS5pbnN0YW50aWF0ZVdhc20gPSBmdW5jdGlvbihpbXBvcnRzLCBzdWNjZXNzQ2FsbGJhY2spIGNhbGxiYWNrXHJcbiAgLy8gdG8gbWFudWFsbHkgaW5zdGFudGlhdGUgdGhlIFdhc20gbW9kdWxlIHRoZW1zZWx2ZXMuIFRoaXMgYWxsb3dzIHBhZ2VzIHRvXHJcbiAgLy8gcnVuIHRoZSBpbnN0YW50aWF0aW9uIHBhcmFsbGVsIHRvIGFueSBvdGhlciBhc3luYyBzdGFydHVwIGFjdGlvbnMgdGhleSBhcmVcclxuICAvLyBwZXJmb3JtaW5nLlxyXG4gIC8vIEFsc28gcHRocmVhZHMgYW5kIHdhc20gd29ya2VycyBpbml0aWFsaXplIHRoZSB3YXNtIGluc3RhbmNlIHRocm91Z2ggdGhpc1xyXG4gIC8vIHBhdGguXHJcbiAgaWYgKE1vZHVsZVsnaW5zdGFudGlhdGVXYXNtJ10pIHtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gTW9kdWxlWydpbnN0YW50aWF0ZVdhc20nXShpbmZvLCByZWNlaXZlSW5zdGFuY2UpO1xyXG4gICAgfSBjYXRjaChlKSB7XHJcbiAgICAgIGVycignTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogJyArIGUpO1xyXG4gICAgICAgIC8vIElmIGluc3RhbnRpYXRpb24gZmFpbHMsIHJlamVjdCB0aGUgbW9kdWxlIHJlYWR5IHByb21pc2UuXHJcbiAgICAgICAgcmVhZHlQcm9taXNlUmVqZWN0KGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gSWYgaW5zdGFudGlhdGlvbiBmYWlscywgcmVqZWN0IHRoZSBtb2R1bGUgcmVhZHkgcHJvbWlzZS5cclxuICBpbnN0YW50aWF0ZUFzeW5jKHdhc21CaW5hcnksIHdhc21CaW5hcnlGaWxlLCBpbmZvLCByZWNlaXZlSW5zdGFudGlhdGlvblJlc3VsdCkuY2F0Y2gocmVhZHlQcm9taXNlUmVqZWN0KTtcclxuICByZXR1cm4ge307IC8vIG5vIGV4cG9ydHMgeWV0OyB3ZSdsbCBmaWxsIHRoZW0gaW4gbGF0ZXJcclxufVxyXG5cclxuLy8gR2xvYmFscyB1c2VkIGJ5IEpTIGk2NCBjb252ZXJzaW9ucyAoc2VlIG1ha2VTZXRWYWx1ZSlcclxudmFyIHRlbXBEb3VibGU7XHJcbnZhciB0ZW1wSTY0O1xyXG5cclxuLy8gaW5jbHVkZTogcnVudGltZV9kZWJ1Zy5qc1xyXG4vLyBlbmQgaW5jbHVkZTogcnVudGltZV9kZWJ1Zy5qc1xyXG4vLyA9PT0gQm9keSA9PT1cclxuXHJcblxyXG4vLyBlbmQgaW5jbHVkZTogcHJlYW1ibGUuanNcclxuXHJcbiAgLyoqIEBjb25zdHJ1Y3RvciAqL1xyXG4gIGZ1bmN0aW9uIEV4aXRTdGF0dXMoc3RhdHVzKSB7XHJcbiAgICAgIHRoaXMubmFtZSA9ICdFeGl0U3RhdHVzJztcclxuICAgICAgdGhpcy5tZXNzYWdlID0gJ1Byb2dyYW0gdGVybWluYXRlZCB3aXRoIGV4aXQoJyArIHN0YXR1cyArICcpJztcclxuICAgICAgdGhpcy5zdGF0dXMgPSBzdGF0dXM7XHJcbiAgICB9XHJcblxyXG4gIGZ1bmN0aW9uIGNhbGxSdW50aW1lQ2FsbGJhY2tzKGNhbGxiYWNrcykge1xyXG4gICAgICB3aGlsZSAoY2FsbGJhY2tzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAvLyBQYXNzIHRoZSBtb2R1bGUgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LlxyXG4gICAgICAgIGNhbGxiYWNrcy5zaGlmdCgpKE1vZHVsZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgXHJcbiAgICAvKipcclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwdHJcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXHJcbiAgICAgKi9cclxuICBmdW5jdGlvbiBnZXRWYWx1ZShwdHIsIHR5cGUgPSAnaTgnKSB7XHJcbiAgICBpZiAodHlwZS5lbmRzV2l0aCgnKicpKSB0eXBlID0gJyonO1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ2kxJzogcmV0dXJuIEhFQVA4WygocHRyKT4+MCldO1xyXG4gICAgICBjYXNlICdpOCc6IHJldHVybiBIRUFQOFsoKHB0cik+PjApXTtcclxuICAgICAgY2FzZSAnaTE2JzogcmV0dXJuIEhFQVAxNlsoKHB0cik+PjEpXTtcclxuICAgICAgY2FzZSAnaTMyJzogcmV0dXJuIEhFQVAzMlsoKHB0cik+PjIpXTtcclxuICAgICAgY2FzZSAnaTY0JzogcmV0dXJuIEhFQVAzMlsoKHB0cik+PjIpXTtcclxuICAgICAgY2FzZSAnZmxvYXQnOiByZXR1cm4gSEVBUEYzMlsoKHB0cik+PjIpXTtcclxuICAgICAgY2FzZSAnZG91YmxlJzogcmV0dXJuIEhFQVBGNjRbKChwdHIpPj4zKV07XHJcbiAgICAgIGNhc2UgJyonOiByZXR1cm4gSEVBUFUzMlsoKHB0cik+PjIpXTtcclxuICAgICAgZGVmYXVsdDogYWJvcnQoJ2ludmFsaWQgdHlwZSBmb3IgZ2V0VmFsdWU6ICcgKyB0eXBlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFxyXG4gICAgLyoqXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcHRyXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXHJcbiAgICAgKi9cclxuICBmdW5jdGlvbiBzZXRWYWx1ZShwdHIsIHZhbHVlLCB0eXBlID0gJ2k4Jykge1xyXG4gICAgaWYgKHR5cGUuZW5kc1dpdGgoJyonKSkgdHlwZSA9ICcqJztcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdpMSc6IEhFQVA4WygocHRyKT4+MCldID0gdmFsdWU7IGJyZWFrO1xyXG4gICAgICBjYXNlICdpOCc6IEhFQVA4WygocHRyKT4+MCldID0gdmFsdWU7IGJyZWFrO1xyXG4gICAgICBjYXNlICdpMTYnOiBIRUFQMTZbKChwdHIpPj4xKV0gPSB2YWx1ZTsgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2kzMic6IEhFQVAzMlsoKHB0cik+PjIpXSA9IHZhbHVlOyBicmVhaztcclxuICAgICAgY2FzZSAnaTY0JzogKHRlbXBJNjQgPSBbdmFsdWU+Pj4wLCh0ZW1wRG91YmxlPXZhbHVlLCgrKE1hdGguYWJzKHRlbXBEb3VibGUpKSkgPj0gMS4wID8gKHRlbXBEb3VibGUgPiAwLjAgPyAoKE1hdGgubWluKCgrKE1hdGguZmxvb3IoKHRlbXBEb3VibGUpLzQyOTQ5NjcyOTYuMCkpKSwgNDI5NDk2NzI5NS4wKSl8MCk+Pj4wIDogKH5+KCgrKE1hdGguY2VpbCgodGVtcERvdWJsZSAtICsoKCh+fih0ZW1wRG91YmxlKSkpPj4+MCkpLzQyOTQ5NjcyOTYuMCkpKSkpPj4+MCkgOiAwKV0sSEVBUDMyWygocHRyKT4+MildID0gdGVtcEk2NFswXSxIRUFQMzJbKCgocHRyKSsoNCkpPj4yKV0gPSB0ZW1wSTY0WzFdKTsgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Zsb2F0JzogSEVBUEYzMlsoKHB0cik+PjIpXSA9IHZhbHVlOyBicmVhaztcclxuICAgICAgY2FzZSAnZG91YmxlJzogSEVBUEY2NFsoKHB0cik+PjMpXSA9IHZhbHVlOyBicmVhaztcclxuICAgICAgY2FzZSAnKic6IEhFQVBVMzJbKChwdHIpPj4yKV0gPSB2YWx1ZTsgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6IGFib3J0KCdpbnZhbGlkIHR5cGUgZm9yIHNldFZhbHVlOiAnICsgdHlwZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogQGNvbnN0cnVjdG9yICovXHJcbiAgZnVuY3Rpb24gRXhjZXB0aW9uSW5mbyhleGNQdHIpIHtcclxuICAgICAgdGhpcy5leGNQdHIgPSBleGNQdHI7XHJcbiAgICAgIHRoaXMucHRyID0gZXhjUHRyIC0gMjQ7XHJcbiAgXHJcbiAgICAgIHRoaXMuc2V0X3R5cGUgPSBmdW5jdGlvbih0eXBlKSB7XHJcbiAgICAgICAgSEVBUFUzMlsoKCh0aGlzLnB0cikrKDQpKT4+MildID0gdHlwZTtcclxuICAgICAgfTtcclxuICBcclxuICAgICAgdGhpcy5nZXRfdHlwZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBIRUFQVTMyWygoKHRoaXMucHRyKSsoNCkpPj4yKV07XHJcbiAgICAgIH07XHJcbiAgXHJcbiAgICAgIHRoaXMuc2V0X2Rlc3RydWN0b3IgPSBmdW5jdGlvbihkZXN0cnVjdG9yKSB7XHJcbiAgICAgICAgSEVBUFUzMlsoKCh0aGlzLnB0cikrKDgpKT4+MildID0gZGVzdHJ1Y3RvcjtcclxuICAgICAgfTtcclxuICBcclxuICAgICAgdGhpcy5nZXRfZGVzdHJ1Y3RvciA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBIRUFQVTMyWygoKHRoaXMucHRyKSsoOCkpPj4yKV07XHJcbiAgICAgIH07XHJcbiAgXHJcbiAgICAgIHRoaXMuc2V0X2NhdWdodCA9IGZ1bmN0aW9uIChjYXVnaHQpIHtcclxuICAgICAgICBjYXVnaHQgPSBjYXVnaHQgPyAxIDogMDtcclxuICAgICAgICBIRUFQOFsoKCh0aGlzLnB0cikrKDEyKSk+PjApXSA9IGNhdWdodDtcclxuICAgICAgfTtcclxuICBcclxuICAgICAgdGhpcy5nZXRfY2F1Z2h0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBIRUFQOFsoKCh0aGlzLnB0cikrKDEyKSk+PjApXSAhPSAwO1xyXG4gICAgICB9O1xyXG4gIFxyXG4gICAgICB0aGlzLnNldF9yZXRocm93biA9IGZ1bmN0aW9uIChyZXRocm93bikge1xyXG4gICAgICAgIHJldGhyb3duID0gcmV0aHJvd24gPyAxIDogMDtcclxuICAgICAgICBIRUFQOFsoKCh0aGlzLnB0cikrKDEzKSk+PjApXSA9IHJldGhyb3duO1xyXG4gICAgICB9O1xyXG4gIFxyXG4gICAgICB0aGlzLmdldF9yZXRocm93biA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gSEVBUDhbKCgodGhpcy5wdHIpKygxMykpPj4wKV0gIT0gMDtcclxuICAgICAgfTtcclxuICBcclxuICAgICAgLy8gSW5pdGlhbGl6ZSBuYXRpdmUgc3RydWN0dXJlIGZpZWxkcy4gU2hvdWxkIGJlIGNhbGxlZCBvbmNlIGFmdGVyIGFsbG9jYXRlZC5cclxuICAgICAgdGhpcy5pbml0ID0gZnVuY3Rpb24odHlwZSwgZGVzdHJ1Y3Rvcikge1xyXG4gICAgICAgIHRoaXMuc2V0X2FkanVzdGVkX3B0cigwKTtcclxuICAgICAgICB0aGlzLnNldF90eXBlKHR5cGUpO1xyXG4gICAgICAgIHRoaXMuc2V0X2Rlc3RydWN0b3IoZGVzdHJ1Y3Rvcik7XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgdGhpcy5zZXRfYWRqdXN0ZWRfcHRyID0gZnVuY3Rpb24oYWRqdXN0ZWRQdHIpIHtcclxuICAgICAgICBIRUFQVTMyWygoKHRoaXMucHRyKSsoMTYpKT4+MildID0gYWRqdXN0ZWRQdHI7XHJcbiAgICAgIH07XHJcbiAgXHJcbiAgICAgIHRoaXMuZ2V0X2FkanVzdGVkX3B0ciA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBIRUFQVTMyWygoKHRoaXMucHRyKSsoMTYpKT4+MildO1xyXG4gICAgICB9O1xyXG4gIFxyXG4gICAgICAvLyBHZXQgcG9pbnRlciB3aGljaCBpcyBleHBlY3RlZCB0byBiZSByZWNlaXZlZCBieSBjYXRjaCBjbGF1c2UgaW4gQysrIGNvZGUuIEl0IG1heSBiZSBhZGp1c3RlZFxyXG4gICAgICAvLyB3aGVuIHRoZSBwb2ludGVyIGlzIGNhc3RlZCB0byBzb21lIG9mIHRoZSBleGNlcHRpb24gb2JqZWN0IGJhc2UgY2xhc3NlcyAoZS5nLiB3aGVuIHZpcnR1YWxcclxuICAgICAgLy8gaW5oZXJpdGFuY2UgaXMgdXNlZCkuIFdoZW4gYSBwb2ludGVyIGlzIHRocm93biB0aGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSB0aHJvd24gcG9pbnRlclxyXG4gICAgICAvLyBpdHNlbGYuXHJcbiAgICAgIHRoaXMuZ2V0X2V4Y2VwdGlvbl9wdHIgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAvLyBXb3JrIGFyb3VuZCBhIGZhc3Rjb21wIGJ1ZywgdGhpcyBjb2RlIGlzIHN0aWxsIGluY2x1ZGVkIGZvciBzb21lIHJlYXNvbiBpbiBhIGJ1aWxkIHdpdGhvdXRcclxuICAgICAgICAvLyBleGNlcHRpb25zIHN1cHBvcnQuXHJcbiAgICAgICAgdmFyIGlzUG9pbnRlciA9IF9fX2N4YV9pc19wb2ludGVyX3R5cGUodGhpcy5nZXRfdHlwZSgpKTtcclxuICAgICAgICBpZiAoaXNQb2ludGVyKSB7XHJcbiAgICAgICAgICByZXR1cm4gSEVBUFUzMlsoKHRoaXMuZXhjUHRyKT4+MildO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgYWRqdXN0ZWQgPSB0aGlzLmdldF9hZGp1c3RlZF9wdHIoKTtcclxuICAgICAgICBpZiAoYWRqdXN0ZWQgIT09IDApIHJldHVybiBhZGp1c3RlZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5leGNQdHI7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgXHJcbiAgdmFyIGV4Y2VwdGlvbkxhc3QgPSAwO1xyXG4gIFxyXG4gIHZhciB1bmNhdWdodEV4Y2VwdGlvbkNvdW50ID0gMDtcclxuICBmdW5jdGlvbiBfX19jeGFfdGhyb3cocHRyLCB0eXBlLCBkZXN0cnVjdG9yKSB7XHJcbiAgICAgIHZhciBpbmZvID0gbmV3IEV4Y2VwdGlvbkluZm8ocHRyKTtcclxuICAgICAgLy8gSW5pdGlhbGl6ZSBFeGNlcHRpb25JbmZvIGNvbnRlbnQgYWZ0ZXIgaXQgd2FzIGFsbG9jYXRlZCBpbiBfX2N4YV9hbGxvY2F0ZV9leGNlcHRpb24uXHJcbiAgICAgIGluZm8uaW5pdCh0eXBlLCBkZXN0cnVjdG9yKTtcclxuICAgICAgZXhjZXB0aW9uTGFzdCA9IHB0cjtcclxuICAgICAgdW5jYXVnaHRFeGNlcHRpb25Db3VudCsrO1xyXG4gICAgICB0aHJvdyBleGNlcHRpb25MYXN0O1xyXG4gICAgfVxyXG5cclxuICBmdW5jdGlvbiBfYWJvcnQoKSB7XHJcbiAgICAgIGFib3J0KCcnKTtcclxuICAgIH1cclxuXHJcbiAgZnVuY3Rpb24gX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZyhkZXN0LCBzcmMsIG51bSkge1xyXG4gICAgICBIRUFQVTguY29weVdpdGhpbihkZXN0LCBzcmMsIHNyYyArIG51bSk7XHJcbiAgICB9XHJcblxyXG4gIGZ1bmN0aW9uIGdldEhlYXBNYXgoKSB7XHJcbiAgICAgIC8vIFN0YXkgb25lIFdhc20gcGFnZSBzaG9ydCBvZiA0R0I6IHdoaWxlIGUuZy4gQ2hyb21lIGlzIGFibGUgdG8gYWxsb2NhdGVcclxuICAgICAgLy8gZnVsbCA0R0IgV2FzbSBtZW1vcmllcywgdGhlIHNpemUgd2lsbCB3cmFwIGJhY2sgdG8gMCBieXRlcyBpbiBXYXNtIHNpZGVcclxuICAgICAgLy8gZm9yIGFueSBjb2RlIHRoYXQgZGVhbHMgd2l0aCBoZWFwIHNpemVzLCB3aGljaCB3b3VsZCByZXF1aXJlIHNwZWNpYWxcclxuICAgICAgLy8gY2FzaW5nIGFsbCBoZWFwIHNpemUgcmVsYXRlZCBjb2RlIHRvIHRyZWF0IDAgc3BlY2lhbGx5LlxyXG4gICAgICByZXR1cm4gMjE0NzQ4MzY0ODtcclxuICAgIH1cclxuICBcclxuICBmdW5jdGlvbiBlbXNjcmlwdGVuX3JlYWxsb2NfYnVmZmVyKHNpemUpIHtcclxuICAgICAgdmFyIGIgPSB3YXNtTWVtb3J5LmJ1ZmZlcjtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICAvLyByb3VuZCBzaXplIGdyb3cgcmVxdWVzdCB1cCB0byB3YXNtIHBhZ2Ugc2l6ZSAoZml4ZWQgNjRLQiBwZXIgc3BlYylcclxuICAgICAgICB3YXNtTWVtb3J5Lmdyb3coKHNpemUgLSBiLmJ5dGVMZW5ndGggKyA2NTUzNSkgPj4+IDE2KTsgLy8gLmdyb3coKSB0YWtlcyBhIGRlbHRhIGNvbXBhcmVkIHRvIHRoZSBwcmV2aW91cyBzaXplXHJcbiAgICAgICAgdXBkYXRlTWVtb3J5Vmlld3MoKTtcclxuICAgICAgICByZXR1cm4gMSAvKnN1Y2Nlc3MqLztcclxuICAgICAgfSBjYXRjaChlKSB7XHJcbiAgICAgIH1cclxuICAgICAgLy8gaW1wbGljaXQgMCByZXR1cm4gdG8gc2F2ZSBjb2RlIHNpemUgKGNhbGxlciB3aWxsIGNhc3QgXCJ1bmRlZmluZWRcIiBpbnRvIDBcclxuICAgICAgLy8gYW55aG93KVxyXG4gICAgfVxyXG4gIGZ1bmN0aW9uIF9lbXNjcmlwdGVuX3Jlc2l6ZV9oZWFwKHJlcXVlc3RlZFNpemUpIHtcclxuICAgICAgdmFyIG9sZFNpemUgPSBIRUFQVTgubGVuZ3RoO1xyXG4gICAgICByZXF1ZXN0ZWRTaXplID0gcmVxdWVzdGVkU2l6ZSA+Pj4gMDtcclxuICAgICAgLy8gV2l0aCBtdWx0aXRocmVhZGVkIGJ1aWxkcywgcmFjZXMgY2FuIGhhcHBlbiAoYW5vdGhlciB0aHJlYWQgbWlnaHQgaW5jcmVhc2UgdGhlIHNpemVcclxuICAgICAgLy8gaW4gYmV0d2VlbiksIHNvIHJldHVybiBhIGZhaWx1cmUsIGFuZCBsZXQgdGhlIGNhbGxlciByZXRyeS5cclxuICBcclxuICAgICAgLy8gTWVtb3J5IHJlc2l6ZSBydWxlczpcclxuICAgICAgLy8gMS4gIEFsd2F5cyBpbmNyZWFzZSBoZWFwIHNpemUgdG8gYXQgbGVhc3QgdGhlIHJlcXVlc3RlZCBzaXplLCByb3VuZGVkIHVwXHJcbiAgICAgIC8vICAgICB0byBuZXh0IHBhZ2UgbXVsdGlwbGUuXHJcbiAgICAgIC8vIDJhLiBJZiBNRU1PUllfR1JPV1RIX0xJTkVBUl9TVEVQID09IC0xLCBleGNlc3NpdmVseSByZXNpemUgdGhlIGhlYXBcclxuICAgICAgLy8gICAgIGdlb21ldHJpY2FsbHk6IGluY3JlYXNlIHRoZSBoZWFwIHNpemUgYWNjb3JkaW5nIHRvXHJcbiAgICAgIC8vICAgICBNRU1PUllfR1JPV1RIX0dFT01FVFJJQ19TVEVQIGZhY3RvciAoZGVmYXVsdCArMjAlKSwgQXQgbW9zdFxyXG4gICAgICAvLyAgICAgb3ZlcnJlc2VydmUgYnkgTUVNT1JZX0dST1dUSF9HRU9NRVRSSUNfQ0FQIGJ5dGVzIChkZWZhdWx0IDk2TUIpLlxyXG4gICAgICAvLyAyYi4gSWYgTUVNT1JZX0dST1dUSF9MSU5FQVJfU1RFUCAhPSAtMSwgZXhjZXNzaXZlbHkgcmVzaXplIHRoZSBoZWFwXHJcbiAgICAgIC8vICAgICBsaW5lYXJseTogaW5jcmVhc2UgdGhlIGhlYXAgc2l6ZSBieSBhdCBsZWFzdFxyXG4gICAgICAvLyAgICAgTUVNT1JZX0dST1dUSF9MSU5FQVJfU1RFUCBieXRlcy5cclxuICAgICAgLy8gMy4gIE1heCBzaXplIGZvciB0aGUgaGVhcCBpcyBjYXBwZWQgYXQgMjA0OE1CLVdBU01fUEFHRV9TSVpFLCBvciBieVxyXG4gICAgICAvLyAgICAgTUFYSU1VTV9NRU1PUlksIG9yIGJ5IEFTQU4gbGltaXQsIGRlcGVuZGluZyBvbiB3aGljaCBpcyBzbWFsbGVzdFxyXG4gICAgICAvLyA0LiAgSWYgd2Ugd2VyZSB1bmFibGUgdG8gYWxsb2NhdGUgYXMgbXVjaCBtZW1vcnksIGl0IG1heSBiZSBkdWUgdG9cclxuICAgICAgLy8gICAgIG92ZXItZWFnZXIgZGVjaXNpb24gdG8gZXhjZXNzaXZlbHkgcmVzZXJ2ZSBkdWUgdG8gKDMpIGFib3ZlLlxyXG4gICAgICAvLyAgICAgSGVuY2UgaWYgYW4gYWxsb2NhdGlvbiBmYWlscywgY3V0IGRvd24gb24gdGhlIGFtb3VudCBvZiBleGNlc3NcclxuICAgICAgLy8gICAgIGdyb3d0aCwgaW4gYW4gYXR0ZW1wdCB0byBzdWNjZWVkIHRvIHBlcmZvcm0gYSBzbWFsbGVyIGFsbG9jYXRpb24uXHJcbiAgXHJcbiAgICAgIC8vIEEgbGltaXQgaXMgc2V0IGZvciBob3cgbXVjaCB3ZSBjYW4gZ3Jvdy4gV2Ugc2hvdWxkIG5vdCBleGNlZWQgdGhhdFxyXG4gICAgICAvLyAodGhlIHdhc20gYmluYXJ5IHNwZWNpZmllcyBpdCwgc28gaWYgd2UgdHJpZWQsIHdlJ2QgZmFpbCBhbnlob3cpLlxyXG4gICAgICB2YXIgbWF4SGVhcFNpemUgPSBnZXRIZWFwTWF4KCk7XHJcbiAgICAgIGlmIChyZXF1ZXN0ZWRTaXplID4gbWF4SGVhcFNpemUpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgbGV0IGFsaWduVXAgPSAoeCwgbXVsdGlwbGUpID0+IHggKyAobXVsdGlwbGUgLSB4ICUgbXVsdGlwbGUpICUgbXVsdGlwbGU7XHJcbiAgXHJcbiAgICAgIC8vIExvb3AgdGhyb3VnaCBwb3RlbnRpYWwgaGVhcCBzaXplIGluY3JlYXNlcy4gSWYgd2UgYXR0ZW1wdCBhIHRvbyBlYWdlclxyXG4gICAgICAvLyByZXNlcnZhdGlvbiB0aGF0IGZhaWxzLCBjdXQgZG93biBvbiB0aGUgYXR0ZW1wdGVkIHNpemUgYW5kIHJlc2VydmUgYVxyXG4gICAgICAvLyBzbWFsbGVyIGJ1bXAgaW5zdGVhZC4gKG1heCAzIHRpbWVzLCBjaG9zZW4gc29tZXdoYXQgYXJiaXRyYXJpbHkpXHJcbiAgICAgIGZvciAodmFyIGN1dERvd24gPSAxOyBjdXREb3duIDw9IDQ7IGN1dERvd24gKj0gMikge1xyXG4gICAgICAgIHZhciBvdmVyR3Jvd25IZWFwU2l6ZSA9IG9sZFNpemUgKiAoMSArIDAuMiAvIGN1dERvd24pOyAvLyBlbnN1cmUgZ2VvbWV0cmljIGdyb3d0aFxyXG4gICAgICAgIC8vIGJ1dCBsaW1pdCBvdmVycmVzZXJ2aW5nIChkZWZhdWx0IHRvIGNhcHBpbmcgYXQgKzk2TUIgb3Zlcmdyb3d0aCBhdCBtb3N0KVxyXG4gICAgICAgIG92ZXJHcm93bkhlYXBTaXplID0gTWF0aC5taW4ob3Zlckdyb3duSGVhcFNpemUsIHJlcXVlc3RlZFNpemUgKyAxMDA2NjMyOTYgKTtcclxuICBcclxuICAgICAgICB2YXIgbmV3U2l6ZSA9IE1hdGgubWluKG1heEhlYXBTaXplLCBhbGlnblVwKE1hdGgubWF4KHJlcXVlc3RlZFNpemUsIG92ZXJHcm93bkhlYXBTaXplKSwgNjU1MzYpKTtcclxuICBcclxuICAgICAgICB2YXIgcmVwbGFjZW1lbnQgPSBlbXNjcmlwdGVuX3JlYWxsb2NfYnVmZmVyKG5ld1NpemUpO1xyXG4gICAgICAgIGlmIChyZXBsYWNlbWVudCkge1xyXG4gIFxyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgZnVuY3Rpb24gZ2V0Q0Z1bmMoaWRlbnQpIHtcclxuICAgICAgdmFyIGZ1bmMgPSBNb2R1bGVbJ18nICsgaWRlbnRdOyAvLyBjbG9zdXJlIGV4cG9ydGVkIGZ1bmN0aW9uXHJcbiAgICAgIHJldHVybiBmdW5jO1xyXG4gICAgfVxyXG4gIFxyXG4gIFxyXG4gIGZ1bmN0aW9uIHdyaXRlQXJyYXlUb01lbW9yeShhcnJheSwgYnVmZmVyKSB7XHJcbiAgICAgIEhFQVA4LnNldChhcnJheSwgYnVmZmVyKTtcclxuICAgIH1cclxuICBcclxuICBmdW5jdGlvbiBsZW5ndGhCeXRlc1VURjgoc3RyKSB7XHJcbiAgICAgIHZhciBsZW4gPSAwO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgIC8vIEdvdGNoYTogY2hhckNvZGVBdCByZXR1cm5zIGEgMTYtYml0IHdvcmQgdGhhdCBpcyBhIFVURi0xNiBlbmNvZGVkIGNvZGVcclxuICAgICAgICAvLyB1bml0LCBub3QgYSBVbmljb2RlIGNvZGUgcG9pbnQgb2YgdGhlIGNoYXJhY3RlciEgU28gZGVjb2RlXHJcbiAgICAgICAgLy8gVVRGMTYtPlVURjMyLT5VVEY4LlxyXG4gICAgICAgIC8vIFNlZSBodHRwOi8vdW5pY29kZS5vcmcvZmFxL3V0Zl9ib20uaHRtbCN1dGYxNi0zXHJcbiAgICAgICAgdmFyIGMgPSBzdHIuY2hhckNvZGVBdChpKTsgLy8gcG9zc2libHkgYSBsZWFkIHN1cnJvZ2F0ZVxyXG4gICAgICAgIGlmIChjIDw9IDB4N0YpIHtcclxuICAgICAgICAgIGxlbisrO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoYyA8PSAweDdGRikge1xyXG4gICAgICAgICAgbGVuICs9IDI7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjID49IDB4RDgwMCAmJiBjIDw9IDB4REZGRikge1xyXG4gICAgICAgICAgbGVuICs9IDQ7ICsraTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGVuICs9IDM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBsZW47XHJcbiAgICB9XHJcbiAgXHJcbiAgZnVuY3Rpb24gc3RyaW5nVG9VVEY4QXJyYXkoc3RyLCBoZWFwLCBvdXRJZHgsIG1heEJ5dGVzVG9Xcml0ZSkge1xyXG4gICAgICAvLyBQYXJhbWV0ZXIgbWF4Qnl0ZXNUb1dyaXRlIGlzIG5vdCBvcHRpb25hbC4gTmVnYXRpdmUgdmFsdWVzLCAwLCBudWxsLFxyXG4gICAgICAvLyB1bmRlZmluZWQgYW5kIGZhbHNlIGVhY2ggZG9uJ3Qgd3JpdGUgb3V0IGFueSBieXRlcy5cclxuICAgICAgaWYgKCEobWF4Qnl0ZXNUb1dyaXRlID4gMCkpXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgXHJcbiAgICAgIHZhciBzdGFydElkeCA9IG91dElkeDtcclxuICAgICAgdmFyIGVuZElkeCA9IG91dElkeCArIG1heEJ5dGVzVG9Xcml0ZSAtIDE7IC8vIC0xIGZvciBzdHJpbmcgbnVsbCB0ZXJtaW5hdG9yLlxyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgIC8vIEdvdGNoYTogY2hhckNvZGVBdCByZXR1cm5zIGEgMTYtYml0IHdvcmQgdGhhdCBpcyBhIFVURi0xNiBlbmNvZGVkIGNvZGVcclxuICAgICAgICAvLyB1bml0LCBub3QgYSBVbmljb2RlIGNvZGUgcG9pbnQgb2YgdGhlIGNoYXJhY3RlciEgU28gZGVjb2RlXHJcbiAgICAgICAgLy8gVVRGMTYtPlVURjMyLT5VVEY4LlxyXG4gICAgICAgIC8vIFNlZSBodHRwOi8vdW5pY29kZS5vcmcvZmFxL3V0Zl9ib20uaHRtbCN1dGYxNi0zXHJcbiAgICAgICAgLy8gRm9yIFVURjggYnl0ZSBzdHJ1Y3R1cmUsIHNlZSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VURi04I0Rlc2NyaXB0aW9uXHJcbiAgICAgICAgLy8gYW5kIGh0dHBzOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyMjc5LnR4dFxyXG4gICAgICAgIC8vIGFuZCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzYyOVxyXG4gICAgICAgIHZhciB1ID0gc3RyLmNoYXJDb2RlQXQoaSk7IC8vIHBvc3NpYmx5IGEgbGVhZCBzdXJyb2dhdGVcclxuICAgICAgICBpZiAodSA+PSAweEQ4MDAgJiYgdSA8PSAweERGRkYpIHtcclxuICAgICAgICAgIHZhciB1MSA9IHN0ci5jaGFyQ29kZUF0KCsraSk7XHJcbiAgICAgICAgICB1ID0gMHgxMDAwMCArICgodSAmIDB4M0ZGKSA8PCAxMCkgfCAodTEgJiAweDNGRik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh1IDw9IDB4N0YpIHtcclxuICAgICAgICAgIGlmIChvdXRJZHggPj0gZW5kSWR4KSBicmVhaztcclxuICAgICAgICAgIGhlYXBbb3V0SWR4KytdID0gdTtcclxuICAgICAgICB9IGVsc2UgaWYgKHUgPD0gMHg3RkYpIHtcclxuICAgICAgICAgIGlmIChvdXRJZHggKyAxID49IGVuZElkeCkgYnJlYWs7XHJcbiAgICAgICAgICBoZWFwW291dElkeCsrXSA9IDB4QzAgfCAodSA+PiA2KTtcclxuICAgICAgICAgIGhlYXBbb3V0SWR4KytdID0gMHg4MCB8ICh1ICYgNjMpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodSA8PSAweEZGRkYpIHtcclxuICAgICAgICAgIGlmIChvdXRJZHggKyAyID49IGVuZElkeCkgYnJlYWs7XHJcbiAgICAgICAgICBoZWFwW291dElkeCsrXSA9IDB4RTAgfCAodSA+PiAxMik7XHJcbiAgICAgICAgICBoZWFwW291dElkeCsrXSA9IDB4ODAgfCAoKHUgPj4gNikgJiA2Myk7XHJcbiAgICAgICAgICBoZWFwW291dElkeCsrXSA9IDB4ODAgfCAodSAmIDYzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKG91dElkeCArIDMgPj0gZW5kSWR4KSBicmVhaztcclxuICAgICAgICAgIGhlYXBbb3V0SWR4KytdID0gMHhGMCB8ICh1ID4+IDE4KTtcclxuICAgICAgICAgIGhlYXBbb3V0SWR4KytdID0gMHg4MCB8ICgodSA+PiAxMikgJiA2Myk7XHJcbiAgICAgICAgICBoZWFwW291dElkeCsrXSA9IDB4ODAgfCAoKHUgPj4gNikgJiA2Myk7XHJcbiAgICAgICAgICBoZWFwW291dElkeCsrXSA9IDB4ODAgfCAodSAmIDYzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8gTnVsbC10ZXJtaW5hdGUgdGhlIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlci5cclxuICAgICAgaGVhcFtvdXRJZHhdID0gMDtcclxuICAgICAgcmV0dXJuIG91dElkeCAtIHN0YXJ0SWR4O1xyXG4gICAgfVxyXG4gIGZ1bmN0aW9uIHN0cmluZ1RvVVRGOChzdHIsIG91dFB0ciwgbWF4Qnl0ZXNUb1dyaXRlKSB7XHJcbiAgICAgIHJldHVybiBzdHJpbmdUb1VURjhBcnJheShzdHIsIEhFQVBVOCxvdXRQdHIsIG1heEJ5dGVzVG9Xcml0ZSk7XHJcbiAgICB9XHJcbiAgZnVuY3Rpb24gc3RyaW5nVG9VVEY4T25TdGFjayhzdHIpIHtcclxuICAgICAgdmFyIHNpemUgPSBsZW5ndGhCeXRlc1VURjgoc3RyKSArIDE7XHJcbiAgICAgIHZhciByZXQgPSBzdGFja0FsbG9jKHNpemUpO1xyXG4gICAgICBzdHJpbmdUb1VURjgoc3RyLCByZXQsIHNpemUpO1xyXG4gICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG4gIFxyXG4gIHZhciBVVEY4RGVjb2RlciA9IHR5cGVvZiBUZXh0RGVjb2RlciAhPSAndW5kZWZpbmVkJyA/IG5ldyBUZXh0RGVjb2RlcigndXRmOCcpIDogdW5kZWZpbmVkO1xyXG4gIFxyXG4gICAgLyoqXHJcbiAgICAgKiBHaXZlbiBhIHBvaW50ZXIgJ2lkeCcgdG8gYSBudWxsLXRlcm1pbmF0ZWQgVVRGOC1lbmNvZGVkIHN0cmluZyBpbiB0aGUgZ2l2ZW5cclxuICAgICAqIGFycmF5IHRoYXQgY29udGFpbnMgdWludDggdmFsdWVzLCByZXR1cm5zIGEgY29weSBvZiB0aGF0IHN0cmluZyBhcyBhXHJcbiAgICAgKiBKYXZhc2NyaXB0IFN0cmluZyBvYmplY3QuXHJcbiAgICAgKiBoZWFwT3JBcnJheSBpcyBlaXRoZXIgYSByZWd1bGFyIGFycmF5LCBvciBhIEphdmFTY3JpcHQgdHlwZWQgYXJyYXkgdmlldy5cclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpZHhcclxuICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gbWF4Qnl0ZXNUb1JlYWRcclxuICAgICAqIEByZXR1cm4ge3N0cmluZ31cclxuICAgICAqL1xyXG4gIGZ1bmN0aW9uIFVURjhBcnJheVRvU3RyaW5nKGhlYXBPckFycmF5LCBpZHgsIG1heEJ5dGVzVG9SZWFkKSB7XHJcbiAgICAgIHZhciBlbmRJZHggPSBpZHggKyBtYXhCeXRlc1RvUmVhZDtcclxuICAgICAgdmFyIGVuZFB0ciA9IGlkeDtcclxuICAgICAgLy8gVGV4dERlY29kZXIgbmVlZHMgdG8ga25vdyB0aGUgYnl0ZSBsZW5ndGggaW4gYWR2YW5jZSwgaXQgZG9lc24ndCBzdG9wIG9uXHJcbiAgICAgIC8vIG51bGwgdGVybWluYXRvciBieSBpdHNlbGYuICBBbHNvLCB1c2UgdGhlIGxlbmd0aCBpbmZvIHRvIGF2b2lkIHJ1bm5pbmcgdGlueVxyXG4gICAgICAvLyBzdHJpbmdzIHRocm91Z2ggVGV4dERlY29kZXIsIHNpbmNlIC5zdWJhcnJheSgpIGFsbG9jYXRlcyBnYXJiYWdlLlxyXG4gICAgICAvLyAoQXMgYSB0aW55IGNvZGUgc2F2ZSB0cmljaywgY29tcGFyZSBlbmRQdHIgYWdhaW5zdCBlbmRJZHggdXNpbmcgYSBuZWdhdGlvbixcclxuICAgICAgLy8gc28gdGhhdCB1bmRlZmluZWQgbWVhbnMgSW5maW5pdHkpXHJcbiAgICAgIHdoaWxlIChoZWFwT3JBcnJheVtlbmRQdHJdICYmICEoZW5kUHRyID49IGVuZElkeCkpICsrZW5kUHRyO1xyXG4gIFxyXG4gICAgICBpZiAoZW5kUHRyIC0gaWR4ID4gMTYgJiYgaGVhcE9yQXJyYXkuYnVmZmVyICYmIFVURjhEZWNvZGVyKSB7XHJcbiAgICAgICAgcmV0dXJuIFVURjhEZWNvZGVyLmRlY29kZShoZWFwT3JBcnJheS5zdWJhcnJheShpZHgsIGVuZFB0cikpO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciBzdHIgPSAnJztcclxuICAgICAgLy8gSWYgYnVpbGRpbmcgd2l0aCBUZXh0RGVjb2Rlciwgd2UgaGF2ZSBhbHJlYWR5IGNvbXB1dGVkIHRoZSBzdHJpbmcgbGVuZ3RoXHJcbiAgICAgIC8vIGFib3ZlLCBzbyB0ZXN0IGxvb3AgZW5kIGNvbmRpdGlvbiBhZ2FpbnN0IHRoYXRcclxuICAgICAgd2hpbGUgKGlkeCA8IGVuZFB0cikge1xyXG4gICAgICAgIC8vIEZvciBVVEY4IGJ5dGUgc3RydWN0dXJlLCBzZWU6XHJcbiAgICAgICAgLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VVEYtOCNEZXNjcmlwdGlvblxyXG4gICAgICAgIC8vIGh0dHBzOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyMjc5LnR4dFxyXG4gICAgICAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNjI5XHJcbiAgICAgICAgdmFyIHUwID0gaGVhcE9yQXJyYXlbaWR4KytdO1xyXG4gICAgICAgIGlmICghKHUwICYgMHg4MCkpIHsgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUodTApOyBjb250aW51ZTsgfVxyXG4gICAgICAgIHZhciB1MSA9IGhlYXBPckFycmF5W2lkeCsrXSAmIDYzO1xyXG4gICAgICAgIGlmICgodTAgJiAweEUwKSA9PSAweEMwKSB7IHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgodTAgJiAzMSkgPDwgNikgfCB1MSk7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgdmFyIHUyID0gaGVhcE9yQXJyYXlbaWR4KytdICYgNjM7XHJcbiAgICAgICAgaWYgKCh1MCAmIDB4RjApID09IDB4RTApIHtcclxuICAgICAgICAgIHUwID0gKCh1MCAmIDE1KSA8PCAxMikgfCAodTEgPDwgNikgfCB1MjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdTAgPSAoKHUwICYgNykgPDwgMTgpIHwgKHUxIDw8IDEyKSB8ICh1MiA8PCA2KSB8IChoZWFwT3JBcnJheVtpZHgrK10gJiA2Myk7XHJcbiAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgIGlmICh1MCA8IDB4MTAwMDApIHtcclxuICAgICAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHUwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdmFyIGNoID0gdTAgLSAweDEwMDAwO1xyXG4gICAgICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODAwIHwgKGNoID4+IDEwKSwgMHhEQzAwIHwgKGNoICYgMHgzRkYpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHN0cjtcclxuICAgIH1cclxuICBcclxuICBcclxuICAgIC8qKlxyXG4gICAgICogR2l2ZW4gYSBwb2ludGVyICdwdHInIHRvIGEgbnVsbC10ZXJtaW5hdGVkIFVURjgtZW5jb2RlZCBzdHJpbmcgaW4gdGhlXHJcbiAgICAgKiBlbXNjcmlwdGVuIEhFQVAsIHJldHVybnMgYSBjb3B5IG9mIHRoYXQgc3RyaW5nIGFzIGEgSmF2YXNjcmlwdCBTdHJpbmcgb2JqZWN0LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwdHJcclxuICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gbWF4Qnl0ZXNUb1JlYWQgLSBBbiBvcHRpb25hbCBsZW5ndGggdGhhdCBzcGVjaWZpZXMgdGhlXHJcbiAgICAgKiAgIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQuIFlvdSBjYW4gb21pdCB0aGlzIHBhcmFtZXRlciB0byBzY2FuIHRoZVxyXG4gICAgICogICBzdHJpbmcgdW50aWwgdGhlIGZpcnN0IFx1MDAwMCBieXRlLiBJZiBtYXhCeXRlc1RvUmVhZCBpcyBwYXNzZWQsIGFuZCB0aGUgc3RyaW5nXHJcbiAgICAgKiAgIGF0IFtwdHIsIHB0cittYXhCeXRlc1RvUmVhZHJbIGNvbnRhaW5zIGEgbnVsbCBieXRlIGluIHRoZSBtaWRkbGUsIHRoZW4gdGhlXHJcbiAgICAgKiAgIHN0cmluZyB3aWxsIGN1dCBzaG9ydCBhdCB0aGF0IGJ5dGUgaW5kZXggKGkuZS4gbWF4Qnl0ZXNUb1JlYWQgd2lsbCBub3RcclxuICAgICAqICAgcHJvZHVjZSBhIHN0cmluZyBvZiBleGFjdCBsZW5ndGggW3B0ciwgcHRyK21heEJ5dGVzVG9SZWFkWykgTi5CLiBtaXhpbmdcclxuICAgICAqICAgZnJlcXVlbnQgdXNlcyBvZiBVVEY4VG9TdHJpbmcoKSB3aXRoIGFuZCB3aXRob3V0IG1heEJ5dGVzVG9SZWFkIG1heSB0aHJvd1xyXG4gICAgICogICBKUyBKSVQgb3B0aW1pemF0aW9ucyBvZmYsIHNvIGl0IGlzIHdvcnRoIHRvIGNvbnNpZGVyIGNvbnNpc3RlbnRseSB1c2luZyBvbmVcclxuICAgICAqIEByZXR1cm4ge3N0cmluZ31cclxuICAgICAqL1xyXG4gIGZ1bmN0aW9uIFVURjhUb1N0cmluZyhwdHIsIG1heEJ5dGVzVG9SZWFkKSB7XHJcbiAgICAgIHJldHVybiBwdHIgPyBVVEY4QXJyYXlUb1N0cmluZyhIRUFQVTgsIHB0ciwgbWF4Qnl0ZXNUb1JlYWQpIDogJyc7XHJcbiAgICB9XHJcbiAgXHJcbiAgICAvKipcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfG51bGw9fSByZXR1cm5UeXBlXHJcbiAgICAgKiBAcGFyYW0ge0FycmF5PX0gYXJnVHlwZXNcclxuICAgICAqIEBwYXJhbSB7QXJndW1lbnRzfEFycmF5PX0gYXJnc1xyXG4gICAgICogQHBhcmFtIHtPYmplY3Q9fSBvcHRzXHJcbiAgICAgKi9cclxuICBmdW5jdGlvbiBjY2FsbChpZGVudCwgcmV0dXJuVHlwZSwgYXJnVHlwZXMsIGFyZ3MsIG9wdHMpIHtcclxuICAgICAgLy8gRm9yIGZhc3QgbG9va3VwIG9mIGNvbnZlcnNpb24gZnVuY3Rpb25zXHJcbiAgICAgIHZhciB0b0MgPSB7XHJcbiAgICAgICAgJ3N0cmluZyc6IChzdHIpID0+IHtcclxuICAgICAgICAgIHZhciByZXQgPSAwO1xyXG4gICAgICAgICAgaWYgKHN0ciAhPT0gbnVsbCAmJiBzdHIgIT09IHVuZGVmaW5lZCAmJiBzdHIgIT09IDApIHsgLy8gbnVsbCBzdHJpbmdcclxuICAgICAgICAgICAgLy8gYXQgbW9zdCA0IGJ5dGVzIHBlciBVVEYtOCBjb2RlIHBvaW50LCArMSBmb3IgdGhlIHRyYWlsaW5nICdcXDAnXHJcbiAgICAgICAgICAgIHJldCA9IHN0cmluZ1RvVVRGOE9uU3RhY2soc3RyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiByZXQ7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAnYXJyYXknOiAoYXJyKSA9PiB7XHJcbiAgICAgICAgICB2YXIgcmV0ID0gc3RhY2tBbGxvYyhhcnIubGVuZ3RoKTtcclxuICAgICAgICAgIHdyaXRlQXJyYXlUb01lbW9yeShhcnIsIHJldCk7XHJcbiAgICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICBcclxuICAgICAgZnVuY3Rpb24gY29udmVydFJldHVyblZhbHVlKHJldCkge1xyXG4gICAgICAgIGlmIChyZXR1cm5UeXBlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICByZXR1cm4gVVRGOFRvU3RyaW5nKHJldCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZXR1cm5UeXBlID09PSAnYm9vbGVhbicpIHJldHVybiBCb29sZWFuKHJldCk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgICAgfVxyXG4gIFxyXG4gICAgICB2YXIgZnVuYyA9IGdldENGdW5jKGlkZW50KTtcclxuICAgICAgdmFyIGNBcmdzID0gW107XHJcbiAgICAgIHZhciBzdGFjayA9IDA7XHJcbiAgICAgIGlmIChhcmdzKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICB2YXIgY29udmVydGVyID0gdG9DW2FyZ1R5cGVzW2ldXTtcclxuICAgICAgICAgIGlmIChjb252ZXJ0ZXIpIHtcclxuICAgICAgICAgICAgaWYgKHN0YWNrID09PSAwKSBzdGFjayA9IHN0YWNrU2F2ZSgpO1xyXG4gICAgICAgICAgICBjQXJnc1tpXSA9IGNvbnZlcnRlcihhcmdzW2ldKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNBcmdzW2ldID0gYXJnc1tpXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdmFyIHJldCA9IGZ1bmMuYXBwbHkobnVsbCwgY0FyZ3MpO1xyXG4gICAgICBmdW5jdGlvbiBvbkRvbmUocmV0KSB7XHJcbiAgICAgICAgaWYgKHN0YWNrICE9PSAwKSBzdGFja1Jlc3RvcmUoc3RhY2spO1xyXG4gICAgICAgIHJldHVybiBjb252ZXJ0UmV0dXJuVmFsdWUocmV0KTtcclxuICAgICAgfVxyXG4gIFxyXG4gICAgICByZXQgPSBvbkRvbmUocmV0KTtcclxuICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuICBcclxuICAgIC8qKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmc9fSByZXR1cm5UeXBlXHJcbiAgICAgKiBAcGFyYW0ge0FycmF5PX0gYXJnVHlwZXNcclxuICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gb3B0c1xyXG4gICAgICovXHJcbiAgZnVuY3Rpb24gY3dyYXAoaWRlbnQsIHJldHVyblR5cGUsIGFyZ1R5cGVzLCBvcHRzKSB7XHJcbiAgICAgIC8vIFdoZW4gdGhlIGZ1bmN0aW9uIHRha2VzIG51bWJlcnMgYW5kIHJldHVybnMgYSBudW1iZXIsIHdlIGNhbiBqdXN0IHJldHVyblxyXG4gICAgICAvLyB0aGUgb3JpZ2luYWwgZnVuY3Rpb25cclxuICAgICAgdmFyIG51bWVyaWNBcmdzID0gIWFyZ1R5cGVzIHx8IGFyZ1R5cGVzLmV2ZXJ5KCh0eXBlKSA9PiB0eXBlID09PSAnbnVtYmVyJyB8fCB0eXBlID09PSAnYm9vbGVhbicpO1xyXG4gICAgICB2YXIgbnVtZXJpY1JldCA9IHJldHVyblR5cGUgIT09ICdzdHJpbmcnO1xyXG4gICAgICBpZiAobnVtZXJpY1JldCAmJiBudW1lcmljQXJncyAmJiAhb3B0cykge1xyXG4gICAgICAgIHJldHVybiBnZXRDRnVuYyhpZGVudCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBjY2FsbChpZGVudCwgcmV0dXJuVHlwZSwgYXJnVHlwZXMsIGFyZ3VtZW50cywgb3B0cyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbnZhciB3YXNtSW1wb3J0cyA9IHtcclxuICBcIl9fY3hhX3Rocm93XCI6IF9fX2N4YV90aHJvdyxcclxuICBcImFib3J0XCI6IF9hYm9ydCxcclxuICBcImVtc2NyaXB0ZW5fbWVtY3B5X2JpZ1wiOiBfZW1zY3JpcHRlbl9tZW1jcHlfYmlnLFxyXG4gIFwiZW1zY3JpcHRlbl9yZXNpemVfaGVhcFwiOiBfZW1zY3JpcHRlbl9yZXNpemVfaGVhcFxyXG59O1xyXG52YXIgYXNtID0gY3JlYXRlV2FzbSgpO1xyXG4vKiogQHR5cGUge2Z1bmN0aW9uKC4uLiopOj99ICovXHJcbnZhciBfX193YXNtX2NhbGxfY3RvcnMgPSBmdW5jdGlvbigpIHtcclxuICByZXR1cm4gKF9fX3dhc21fY2FsbF9jdG9ycyA9IE1vZHVsZVtcImFzbVwiXVtcIl9fd2FzbV9jYWxsX2N0b3JzXCJdKS5hcHBseShudWxsLCBhcmd1bWVudHMpO1xyXG59O1xyXG5cclxuLyoqIEB0eXBlIHtmdW5jdGlvbiguLi4qKTo/fSAqL1xyXG52YXIgX2Ric2NhbiA9IE1vZHVsZVtcIl9kYnNjYW5cIl0gPSBmdW5jdGlvbigpIHtcclxuICByZXR1cm4gKF9kYnNjYW4gPSBNb2R1bGVbXCJfZGJzY2FuXCJdID0gTW9kdWxlW1wiYXNtXCJdW1wiZGJzY2FuXCJdKS5hcHBseShudWxsLCBhcmd1bWVudHMpO1xyXG59O1xyXG5cclxuLyoqIEB0eXBlIHtmdW5jdGlvbiguLi4qKTo/fSAqL1xyXG52YXIgX19fZXJybm9fbG9jYXRpb24gPSBmdW5jdGlvbigpIHtcclxuICByZXR1cm4gKF9fX2Vycm5vX2xvY2F0aW9uID0gTW9kdWxlW1wiYXNtXCJdW1wiX19lcnJub19sb2NhdGlvblwiXSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcclxufTtcclxuXHJcbi8qKiBAdHlwZSB7ZnVuY3Rpb24oLi4uKik6P30gKi9cclxudmFyIF9tYWxsb2MgPSBNb2R1bGVbXCJfbWFsbG9jXCJdID0gZnVuY3Rpb24oKSB7XHJcbiAgcmV0dXJuIChfbWFsbG9jID0gTW9kdWxlW1wiX21hbGxvY1wiXSA9IE1vZHVsZVtcImFzbVwiXVtcIm1hbGxvY1wiXSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcclxufTtcclxuXHJcbi8qKiBAdHlwZSB7ZnVuY3Rpb24oLi4uKik6P30gKi9cclxudmFyIF9mcmVlID0gTW9kdWxlW1wiX2ZyZWVcIl0gPSBmdW5jdGlvbigpIHtcclxuICByZXR1cm4gKF9mcmVlID0gTW9kdWxlW1wiX2ZyZWVcIl0gPSBNb2R1bGVbXCJhc21cIl1bXCJmcmVlXCJdKS5hcHBseShudWxsLCBhcmd1bWVudHMpO1xyXG59O1xyXG5cclxuLyoqIEB0eXBlIHtmdW5jdGlvbiguLi4qKTo/fSAqL1xyXG52YXIgc3RhY2tTYXZlID0gZnVuY3Rpb24oKSB7XHJcbiAgcmV0dXJuIChzdGFja1NhdmUgPSBNb2R1bGVbXCJhc21cIl1bXCJzdGFja1NhdmVcIl0pLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XHJcbn07XHJcblxyXG4vKiogQHR5cGUge2Z1bmN0aW9uKC4uLiopOj99ICovXHJcbnZhciBzdGFja1Jlc3RvcmUgPSBmdW5jdGlvbigpIHtcclxuICByZXR1cm4gKHN0YWNrUmVzdG9yZSA9IE1vZHVsZVtcImFzbVwiXVtcInN0YWNrUmVzdG9yZVwiXSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcclxufTtcclxuXHJcbi8qKiBAdHlwZSB7ZnVuY3Rpb24oLi4uKik6P30gKi9cclxudmFyIHN0YWNrQWxsb2MgPSBmdW5jdGlvbigpIHtcclxuICByZXR1cm4gKHN0YWNrQWxsb2MgPSBNb2R1bGVbXCJhc21cIl1bXCJzdGFja0FsbG9jXCJdKS5hcHBseShudWxsLCBhcmd1bWVudHMpO1xyXG59O1xyXG5cclxuLyoqIEB0eXBlIHtmdW5jdGlvbiguLi4qKTo/fSAqL1xyXG52YXIgX19fY3hhX2lzX3BvaW50ZXJfdHlwZSA9IGZ1bmN0aW9uKCkge1xyXG4gIHJldHVybiAoX19fY3hhX2lzX3BvaW50ZXJfdHlwZSA9IE1vZHVsZVtcImFzbVwiXVtcIl9fY3hhX2lzX3BvaW50ZXJfdHlwZVwiXSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcclxufTtcclxuXHJcblxyXG5cclxuLy8gaW5jbHVkZTogcG9zdGFtYmxlLmpzXHJcbi8vID09PSBBdXRvLWdlbmVyYXRlZCBwb3N0YW1ibGUgc2V0dXAgZW50cnkgc3R1ZmYgPT09XHJcblxyXG5Nb2R1bGVbXCJjY2FsbFwiXSA9IGNjYWxsO1xyXG5Nb2R1bGVbXCJjd3JhcFwiXSA9IGN3cmFwO1xyXG5cclxuXHJcbnZhciBjYWxsZWRSdW47XHJcblxyXG5kZXBlbmRlbmNpZXNGdWxmaWxsZWQgPSBmdW5jdGlvbiBydW5DYWxsZXIoKSB7XHJcbiAgLy8gSWYgcnVuIGhhcyBuZXZlciBiZWVuIGNhbGxlZCwgYW5kIHdlIHNob3VsZCBjYWxsIHJ1biAoSU5WT0tFX1JVTiBpcyB0cnVlLCBhbmQgTW9kdWxlLm5vSW5pdGlhbFJ1biBpcyBub3QgZmFsc2UpXHJcbiAgaWYgKCFjYWxsZWRSdW4pIHJ1bigpO1xyXG4gIGlmICghY2FsbGVkUnVuKSBkZXBlbmRlbmNpZXNGdWxmaWxsZWQgPSBydW5DYWxsZXI7IC8vIHRyeSB0aGlzIGFnYWluIGxhdGVyLCBhZnRlciBuZXcgZGVwcyBhcmUgZnVsZmlsbGVkXHJcbn07XHJcblxyXG5mdW5jdGlvbiBydW4oKSB7XHJcblxyXG4gIGlmIChydW5EZXBlbmRlbmNpZXMgPiAwKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBwcmVSdW4oKTtcclxuXHJcbiAgLy8gYSBwcmVSdW4gYWRkZWQgYSBkZXBlbmRlbmN5LCBydW4gd2lsbCBiZSBjYWxsZWQgbGF0ZXJcclxuICBpZiAocnVuRGVwZW5kZW5jaWVzID4gMCkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gZG9SdW4oKSB7XHJcbiAgICAvLyBydW4gbWF5IGhhdmUganVzdCBiZWVuIGNhbGxlZCB0aHJvdWdoIGRlcGVuZGVuY2llcyBiZWluZyBmdWxmaWxsZWQganVzdCBpbiB0aGlzIHZlcnkgZnJhbWUsXHJcbiAgICAvLyBvciB3aGlsZSB0aGUgYXN5bmMgc2V0U3RhdHVzIHRpbWUgYmVsb3cgd2FzIGhhcHBlbmluZ1xyXG4gICAgaWYgKGNhbGxlZFJ1bikgcmV0dXJuO1xyXG4gICAgY2FsbGVkUnVuID0gdHJ1ZTtcclxuICAgIE1vZHVsZVsnY2FsbGVkUnVuJ10gPSB0cnVlO1xyXG5cclxuICAgIGlmIChBQk9SVCkgcmV0dXJuO1xyXG5cclxuICAgIGluaXRSdW50aW1lKCk7XHJcblxyXG4gICAgcmVhZHlQcm9taXNlUmVzb2x2ZShNb2R1bGUpO1xyXG4gICAgaWYgKE1vZHVsZVsnb25SdW50aW1lSW5pdGlhbGl6ZWQnXSkgTW9kdWxlWydvblJ1bnRpbWVJbml0aWFsaXplZCddKCk7XHJcblxyXG4gICAgcG9zdFJ1bigpO1xyXG4gIH1cclxuXHJcbiAgaWYgKE1vZHVsZVsnc2V0U3RhdHVzJ10pIHtcclxuICAgIE1vZHVsZVsnc2V0U3RhdHVzJ10oJ1J1bm5pbmcuLi4nKTtcclxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgTW9kdWxlWydzZXRTdGF0dXMnXSgnJyk7XHJcbiAgICAgIH0sIDEpO1xyXG4gICAgICBkb1J1bigpO1xyXG4gICAgfSwgMSk7XHJcbiAgfSBlbHNlXHJcbiAge1xyXG4gICAgZG9SdW4oKTtcclxuICB9XHJcbn1cclxuXHJcbmlmIChNb2R1bGVbJ3ByZUluaXQnXSkge1xyXG4gIGlmICh0eXBlb2YgTW9kdWxlWydwcmVJbml0J10gPT0gJ2Z1bmN0aW9uJykgTW9kdWxlWydwcmVJbml0J10gPSBbTW9kdWxlWydwcmVJbml0J11dO1xyXG4gIHdoaWxlIChNb2R1bGVbJ3ByZUluaXQnXS5sZW5ndGggPiAwKSB7XHJcbiAgICBNb2R1bGVbJ3ByZUluaXQnXS5wb3AoKSgpO1xyXG4gIH1cclxufVxyXG5cclxucnVuKCk7XHJcblxyXG5cclxuLy8gZW5kIGluY2x1ZGU6IHBvc3RhbWJsZS5qc1xyXG5cclxuXHJcbiAgcmV0dXJuIGV4cG9ydENwcERic2NhbkxpYi5yZWFkeVxyXG59XHJcblxyXG4pO1xyXG59KSgpO1xyXG5pZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxyXG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0Q3BwRGJzY2FuTGliO1xyXG5lbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZVsnYW1kJ10pXHJcbiAgZGVmaW5lKFtdLCBmdW5jdGlvbigpIHsgcmV0dXJuIGV4cG9ydENwcERic2NhbkxpYjsgfSk7XHJcbmVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JylcclxuICBleHBvcnRzW1wiZXhwb3J0Q3BwRGJzY2FuTGliXCJdID0gZXhwb3J0Q3BwRGJzY2FuTGliO1xyXG4iLCJpbXBvcnQgeyBEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kcyB9IGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0IGNvbnN0IGlzTmlsID0gKHgpID0+IHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkO1xuZXhwb3J0IGZ1bmN0aW9uIGluc2VydFNtYWxsZXIoZGlzdGFuY2VzQXIsIGluZGV4ZXMsIG51bSwgaW5kZXgpIHtcbiAgICBpZiAobnVtID4gZGlzdGFuY2VzQXJbZGlzdGFuY2VzQXIubGVuZ3RoIC0gMV0pXG4gICAgICAgIHJldHVybjtcbiAgICBjb25zdCBuZXdQb3NpdGlvbiA9IGRpc3RhbmNlc0FyLmZpbmRJbmRleCgodikgPT4gbnVtIDwgdik7XG4gICAgZGlzdGFuY2VzQXIucG9wKCk7XG4gICAgZGlzdGFuY2VzQXIuc3BsaWNlKG5ld1Bvc2l0aW9uLCAwLCBudW0pO1xuICAgIGluZGV4ZXMucG9wKCk7XG4gICAgaW5kZXhlcy5zcGxpY2UobmV3UG9zaXRpb24sIDAsIGluZGV4KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRMYXJnZXIoZGlzdGFuY2VzQXIsIGluZGV4ZXMsIG51bSwgaW5kZXgpIHtcbiAgICBpZiAobnVtIDwgZGlzdGFuY2VzQXJbZGlzdGFuY2VzQXIubGVuZ3RoIC0gMV0pXG4gICAgICAgIHJldHVybjtcbiAgICBjb25zdCBuZXdQb3NpdGlvbiA9IGRpc3RhbmNlc0FyLmZpbmRJbmRleCgodikgPT4gbnVtID4gdik7XG4gICAgZGlzdGFuY2VzQXIucG9wKCk7XG4gICAgZGlzdGFuY2VzQXIuc3BsaWNlKG5ld1Bvc2l0aW9uLCAwLCBudW0pO1xuICAgIGluZGV4ZXMucG9wKCk7XG4gICAgaW5kZXhlcy5zcGxpY2UobmV3UG9zaXRpb24sIDAsIGluZGV4KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZ2dyZWdhdGlvbkZ1bmN0aW9uKGFnZ3JlZ2F0aW9uTWV0aG9kLCB3ZWlnaHRzKSB7XG4gICAgc3dpdGNoIChhZ2dyZWdhdGlvbk1ldGhvZCkge1xuICAgICAgICBjYXNlIERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzLk1BTkhBVFRBTjpcbiAgICAgICAgICAgIHJldHVybiAodnMpID0+IHZzLnJlZHVjZSgoYWNjLCB2YWwsIGlkeCkgPT4gYWNjICsgdmFsICogd2VpZ2h0c1tpZHhdLCAwKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiAodnMpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBldWNsaWRlYW5cbiAgICAgICAgICAgICAgICBjb25zdCBzdW0gPSB2cy5yZWR1Y2UoKGFjYywgdmFsLCBpZHgpID0+IGFjYyArICh2YWwgKiB3ZWlnaHRzW2lkeF0pICoqIDIsIDApO1xuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnNxcnQoc3VtKTtcbiAgICAgICAgICAgIH07XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZFhScGJITXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKMWRHbHNjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFTeFBRVUZQTEVWQlFUUkNMREJDUVVFd1FpeEZRVUZETEUxQlFVMHNVMEZCVXl4RFFVRkRPMEZCUlRsRkxFMUJRVTBzUTBGQlF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVsQlFVa3NTVUZCU1N4RFFVRkRMRXRCUVVzc1UwRkJVeXhEUVVGRE8wRkJSUzlFTEUxQlFVMHNWVUZCVlN4aFFVRmhMRU5CUVVNc1YwRkJjVUlzUlVGQlJTeFBRVUZwUWl4RlFVRkZMRWRCUVZjc1JVRkJSU3hMUVVGaE8wbEJRMmhITEVsQlFVa3NSMEZCUnl4SFFVRkhMRmRCUVZjc1EwRkJReXhYUVVGWExFTkJRVU1zVFVGQlRTeEhRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjZReXhQUVVGUE8wbEJSVlFzVFVGQlRTeFhRVUZYTEVkQlFVY3NWMEZCVnl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRekZFTEZkQlFWY3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRKUVVOc1FpeFhRVUZYTEVOQlFVTXNUVUZCVFN4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEZUVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETzBsQlEyUXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUTNoRExFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNXVUZCV1N4RFFVRkRMRmRCUVhGQ0xFVkJRVVVzVDBGQmFVSXNSVUZCUlN4SFFVRlhMRVZCUVVVc1MwRkJZVHRKUVVNdlJpeEpRVUZKTEVkQlFVY3NSMEZCUnl4WFFVRlhMRU5CUVVNc1YwRkJWeXhEUVVGRExFMUJRVTBzUjBGQlF5eERRVUZETEVOQlFVTTdVVUZEZWtNc1QwRkJUenRKUVVWVUxFMUJRVTBzVjBGQlZ5eEhRVUZITEZkQlFWY3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVNeFJDeFhRVUZYTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRiRUlzVjBGQlZ5eERRVUZETEUxQlFVMHNRMEZCUXl4WFFVRlhMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEzaERMRTlCUVU4c1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dEpRVU5rTEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1YwRkJWeXhGUVVGRkxFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTjRReXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEhOQ1FVRnpRaXhEUVVOd1F5eHBRa0ZCTkVNc1JVRkJSU3hQUVVGcFFqdEpRVVV2UkN4UlFVRlJMR2xDUVVGcFFpeEZRVUZGTzFGQlEzcENMRXRCUVVzc01FSkJRVEJDTEVOQlFVTXNVMEZCVXp0WlFVTjJReXhQUVVGUExFTkJRVU1zUlVGQldTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1JVRkJSU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVkQlFVY3NUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzSkdPMWxCUTBVc1QwRkJUeXhEUVVGRExFVkJRVmtzUlVGQlJTeEZRVUZGTzJkQ1FVTjBRaXhaUVVGWk8yZENRVU5hTEUxQlFVMHNSMEZCUnl4SFFVRkhMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNSMEZCUnl4SFFVRkhMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRE4wVXNUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEzaENMRU5CUVVNc1EwRkJRenRMUVVOTU8wRkJRMGdzUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdSR2x6ZEdGdVkyVkJaMmR5WldkaGRHbHZiazFsZEdodlpDd2dSR2x6ZEdGdVkyVkJaMmR5WldkaGRHbHZiazFsZEdodlpITjlJR1p5YjIwZ0p5NHZkSGx3WlhNbk8xeHVYRzVsZUhCdmNuUWdZMjl1YzNRZ2FYTk9hV3dnUFNBb2VEb2dZVzU1S1NBOVBpQjRJRDA5UFNCdWRXeHNJSHg4SUhnZ1BUMDlJSFZ1WkdWbWFXNWxaRHRjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdsdWMyVnlkRk50WVd4c1pYSW9aR2x6ZEdGdVkyVnpRWEk2SUc1MWJXSmxjbHRkTENCcGJtUmxlR1Z6T2lCdWRXMWlaWEpiWFN3Z2JuVnRPaUJ1ZFcxaVpYSXNJR2x1WkdWNE9pQnVkVzFpWlhJcElIdGNiaUFnYVdZZ0tHNTFiU0ErSUdScGMzUmhibU5sYzBGeVcyUnBjM1JoYm1ObGMwRnlMbXhsYm1kMGFDMHhYU2xjYmlBZ0lDQnlaWFIxY200N1hHNWNiaUFnWTI5dWMzUWdibVYzVUc5emFYUnBiMjRnUFNCa2FYTjBZVzVqWlhOQmNpNW1hVzVrU1c1a1pYZ29LSFlwSUQwK0lHNTFiU0E4SUhZcE8xeHVJQ0JrYVhOMFlXNWpaWE5CY2k1d2IzQW9LVHRjYmlBZ1pHbHpkR0Z1WTJWelFYSXVjM0JzYVdObEtHNWxkMUJ2YzJsMGFXOXVMQ0F3TENCdWRXMHBPMXh1SUNCcGJtUmxlR1Z6TG5CdmNDZ3BPMXh1SUNCcGJtUmxlR1Z6TG5Od2JHbGpaU2h1WlhkUWIzTnBkR2x2Yml3Z01Dd2dhVzVrWlhncE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYVc1elpYSjBUR0Z5WjJWeUtHUnBjM1JoYm1ObGMwRnlPaUJ1ZFcxaVpYSmJYU3dnYVc1a1pYaGxjem9nYm5WdFltVnlXMTBzSUc1MWJUb2diblZ0WW1WeUxDQnBibVJsZURvZ2JuVnRZbVZ5S1NCN1hHNGdJR2xtSUNodWRXMGdQQ0JrYVhOMFlXNWpaWE5CY2x0a2FYTjBZVzVqWlhOQmNpNXNaVzVuZEdndE1WMHBYRzRnSUNBZ2NtVjBkWEp1TzF4dVhHNGdJR052Ym5OMElHNWxkMUJ2YzJsMGFXOXVJRDBnWkdsemRHRnVZMlZ6UVhJdVptbHVaRWx1WkdWNEtDaDJLU0E5UGlCdWRXMGdQaUIyS1R0Y2JpQWdaR2x6ZEdGdVkyVnpRWEl1Y0c5d0tDazdYRzRnSUdScGMzUmhibU5sYzBGeUxuTndiR2xqWlNodVpYZFFiM05wZEdsdmJpd2dNQ3dnYm5WdEtUdGNiaUFnYVc1a1pYaGxjeTV3YjNBb0tUdGNiaUFnYVc1a1pYaGxjeTV6Y0d4cFkyVW9ibVYzVUc5emFYUnBiMjRzSURBc0lHbHVaR1Y0S1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2RsZEVGblozSmxaMkYwYVc5dVJuVnVZM1JwYjI0b1hHNGdJR0ZuWjNKbFoyRjBhVzl1VFdWMGFHOWtPaUJFYVhOMFlXNWpaVUZuWjNKbFoyRjBhVzl1VFdWMGFHOWtMQ0IzWldsbmFIUnpPaUJ1ZFcxaVpYSmJYVnh1S1RvZ0tIWmhiSFZsY3pvZ2JuVnRZbVZ5VzEwcElEMCtJRzUxYldKbGNpQjdYRzRnSUhOM2FYUmphQ0FvWVdkbmNtVm5ZWFJwYjI1TlpYUm9iMlFwSUh0Y2JpQWdJQ0JqWVhObElFUnBjM1JoYm1ObFFXZG5jbVZuWVhScGIyNU5aWFJvYjJSekxrMUJUa2hCVkZSQlRqcGNiaUFnSUNBZ0lISmxkSFZ5YmlBb2RuTTZJRzUxYldKbGNsdGRLU0E5UGlCMmN5NXlaV1IxWTJVb0tHRmpZeXdnZG1Gc0xDQnBaSGdwSUQwK0lHRmpZeUFySUhaaGJDQXFJSGRsYVdkb2RITmJhV1I0WFN3Z01DazdYRzRnSUNBZ1pHVm1ZWFZzZERwY2JpQWdJQ0FnSUhKbGRIVnliaUFvZG5NNklHNTFiV0psY2x0ZEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUM4dklHVjFZMnhwWkdWaGJseHVJQ0FnSUNBZ0lDQmpiMjV6ZENCemRXMGdQU0IyY3k1eVpXUjFZMlVvS0dGall5d2dkbUZzTENCcFpIZ3BJRDArSUdGall5QXJJQ2gyWVd3Z0tpQjNaV2xuYUhSelcybGtlRjBwSUNvcUlESXNJREFwTzF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnVFdGMGFDNXpjWEowS0hOMWJTazdYRzRnSUNBZ0lDQjlPMXh1SUNCOVhHNTlYRzRpWFgwPSIsIi8qKlxuICogRGVub3RlcyBhIHZlY3RvciBvZiBmbG9hdGluZyBwb2l0IHZhbHVlcy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgVmVjdG9yXG4gKiBAZXh0ZW5kcyB7RmxvYXQzMkFycmF5fVxuICovXG5leHBvcnQgY2xhc3MgVmVjdG9yIGV4dGVuZHMgRmxvYXQzMkFycmF5IHtcbn1cbi8qKlxuICogRGVub3RlcyBhIHR3by1kaW1lbnNpb25hbCBtYXRyaXguXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIE1hdHJpeFxuICogQGV4dGVuZHMge0FycmF5PFZlY3Rvcj59XG4gKi9cbmV4cG9ydCBjbGFzcyBNYXRyaXggZXh0ZW5kcyBBcnJheSB7XG59XG4vKipcbiAqIERlbm90ZXMgY2FydGVzaWFuIGNvb3JkaW5hdGVzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBDb29yZGluYXRlc1xuICogQGV4dGVuZHMge01hdHJpeH1cbiAqL1xuZXhwb3J0IGNsYXNzIENvb3JkaW5hdGVzIGV4dGVuZHMgTWF0cml4IHtcbn1cbi8qKlxuICogRGVub3RlcyBhbiBhcnJheSBvZiBhcmJpdHJhcnktdHlwZWQgdmVjdG9ycy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgVmVjdG9yc1xuICogQGV4dGVuZHMge0FycmF5PGFueT59XG4gKi9cbmV4cG9ydCBjbGFzcyBWZWN0b3JzIGV4dGVuZHMgQXJyYXkge1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEhsd1pTMWtaV05zWVhKaGRHbHZibk11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SjBlWEJsTFdSbFkyeGhjbUYwYVc5dWN5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZGUVRzN096czdPMGRCVFVjN1FVRkRTQ3hOUVVGTkxFOUJRVThzVFVGQlR5eFRRVUZSTEZsQlFWazdRMEZCUnp0QlFVVXpRenM3T3pzN08wZEJUVWM3UVVGRFNDeE5RVUZOTEU5QlFVOHNUVUZCVHl4VFFVRlJMRXRCUVdFN1EwRkJSenRCUVVVMVF6czdPenM3TzBkQlRVYzdRVUZEU0N4TlFVRk5MRTlCUVU4c1YwRkJXU3hUUVVGUkxFMUJRVTA3UTBGQlJ6dEJRVVV4UXpzN096czdPMGRCVFVjN1FVRkRTQ3hOUVVGTkxFOUJRVThzVDBGQlVTeFRRVUZSTEV0QlFWVTdRMEZCUnlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENBcUlHRnpJRVJISUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5a1p5YzdYRzVjYmk4cUtseHVJQ29nUkdWdWIzUmxjeUJoSUhabFkzUnZjaUJ2WmlCbWJHOWhkR2x1WnlCd2IybDBJSFpoYkhWbGN5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBWTJ4aGMzTWdWbVZqZEc5eVhHNGdLaUJBWlhoMFpXNWtjeUI3Um14dllYUXpNa0Z5Y21GNWZWeHVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdWbVZqZEc5eUlHVjRkR1Z1WkhNZ1JteHZZWFF6TWtGeWNtRjVJSHQ5WEc1Y2JpOHFLbHh1SUNvZ1JHVnViM1JsY3lCaElIUjNieTFrYVcxbGJuTnBiMjVoYkNCdFlYUnlhWGd1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FHTnNZWE56SUUxaGRISnBlRnh1SUNvZ1FHVjRkR1Z1WkhNZ2UwRnljbUY1UEZabFkzUnZjajU5WEc0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCTllYUnlhWGdnWlhoMFpXNWtjeUJCY25KaGVUeFdaV04wYjNJK0lIdDlYRzVjYmk4cUtseHVJQ29nUkdWdWIzUmxjeUJqWVhKMFpYTnBZVzRnWTI5dmNtUnBibUYwWlhNdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRR05zWVhOeklFTnZiM0prYVc1aGRHVnpYRzRnS2lCQVpYaDBaVzVrY3lCN1RXRjBjbWw0ZlZ4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1EyOXZjbVJwYm1GMFpYTWdaWGgwWlc1a2N5Qk5ZWFJ5YVhnZ2UzMWNibHh1THlvcVhHNGdLaUJFWlc1dmRHVnpJR0Z1SUdGeWNtRjVJRzltSUdGeVltbDBjbUZ5ZVMxMGVYQmxaQ0IyWldOMGIzSnpMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCamJHRnpjeUJXWldOMGIzSnpYRzRnS2lCQVpYaDBaVzVrY3lCN1FYSnlZWGs4WVc1NVBuMWNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRlpsWTNSdmNuTWdaWGgwWlc1a2N5QkJjbkpoZVR4aGJuaytJSHQ5WEc1Y2JpOHFLbHh1SUNvZ1JHVnViM1JsY3lCaElHUnBZM1JwYjI1aGNua2dZMjl1ZEdGcGJtbHVaeUJtZFc1amRHbHZiaUJ2Y0hScGIyNXpMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCMGVYQmxJRTl3ZEdsdmJuTmNiaUFxTDF4dVpYaHdiM0owSUhSNWNHVWdUM0IwYVc5dWN5QTlJSHRiYm1GdFpUb2djM1J5YVc1blhUb2dZVzU1ZlR0Y2JseHVMeW9xWEc0Z0tpQkVaVzV2ZEdWeklHTjFjM1J2YlNCa2FYTjBZVzVqWlNCdFpYUnlhV01nWW1WMGQyVmxiaUIwYUdVZ2RIZHZJR2RwZG1WdUlIWmxZM1J2Y25NdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRSFI1Y0dVZ1JHbHpkR0Z1WTJWTlpYUnlhV05jYmlBcUlFQndZWEpoYlNCN1lXNTVmU0IyTVNCVWFHVWdabWx5YzNRZ2RtVmpkRzl5TGx4dUlDb2dRSEJoY21GdElIdGhibmw5SUhZeUlGUm9aU0J6WldOdmJtUWdkbVZqZEc5eUxseHVJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlmU0JFYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFJvWlhObElIUjNieUIyWldOMGIzSnpMbHh1SUNvdlhHNWxlSEJ2Y25RZ2RIbHdaU0JFYVhOMFlXNWpaVTFsZEhKcFl5QTlJQ2gyTVRvZ1lXNTVMQ0IyTWpvZ1lXNTVLU0E5UGlBb2JuVnRZbVZ5S1R0Y2JseHVMeW9xWEc0Z0tpQkVaVzV2ZEdWeklHRWdjMmx0Y0d4bElITjBjbWx1WnlCMGJ5QnpkSEpwYm1jZ1pHbGpkR2x2Ym1GeWVTNWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBZEhsd1pTQlRkSEpwYm1kRWFXTjBhVzl1WVhKNVhHNGdLaTljYm1WNGNHOXlkQ0IwZVhCbElGTjBjbWx1WjBScFkzUnBiMjVoY25rZ1BTQjdXMnRsZVRvZ2MzUnlhVzVuWFRvZ2MzUnlhVzVuZlR0Y2JseHVYRzVsZUhCdmNuUWdkSGx3WlNCRGIyeDFiVzVKYm5CMWRFOXdkR2x2Ym5NZ1BTQjdYRzRnSUNBZ1ptbHNkR1Z5UHpvZ0tHTnZiRG9nUkVjdVEyOXNkVzF1S1NBOVBpQmliMjlzWldGdUlId2diblZzYkR0Y2JuMDdYRzRpWFgwPSIsImltcG9ydCB7IFZlY3RvciB9IGZyb20gJy4vdHlwZS1kZWNsYXJhdGlvbnMnO1xuaW1wb3J0IHsgcmFuZG9tRmxvYXQsIHJhbmRvbUludCB9IGZyb20gJy4vcmFuZG9tJztcbi8qKlxuICogQXNzZXJ0cyBhIGNvbmRpdGlvbiBieSB0aHJvd2luZyBhbiBFcnJvci5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtjb25kaXRpb249ZmFsc2VdIENvbmRpdGlvbiB0byBhc3NlcnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2U9J0Fzc2VydGlvbiBlcnJvci4nXSBNZXNzYWdlIHRvIG91dHB1dC5cbiAqIEB0aHJvd3Mge0Vycm9yfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbiA9IGZhbHNlLCBtZXNzYWdlID0gJ0Fzc2VydGlvbiBlcnJvci4nKSB7XG4gICAgaWYgKCFjb25kaXRpb24pXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbn1cbi8qKlxuICogQ3JlYXRlcyBuZXcgdHdvLWRpbWVuc2lvbmFsIGFycmF5IGFuZCBmaWxscyBpdCB3aXRoIHRoZSB2YWx1ZSBnaXZlbi5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMSBUaGUgZmlyc3QgZGltZW5zaW9uIG9mIHRoZSBjb29yZGluYXRlcyAobnVtYmVyIG9mIHJvd3MpLlxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjIgVGhlIHNlY29uZCBkaW1lbnNpb24gb2YgdGhlIGNvb3JkaW5hdGVzIChudW1iZXIgb2YgY29sdW1ucykuXG4gKiBAcGFyYW0ge251bWJlcn0gW2ZpbGw9MF0gQSB2YWx1ZSB0byBmaWxsIHRoZSBjb29yZGluYXRlcyB3aXRoLlxuICogQHJldHVybiB7Q29vcmRpbmF0ZXN9IEEgdHdvLWRpbWVuc2lvbmFsIGZpbGxlZCB3aXRoIHRoZSB2YWx1ZSBnaXZlbi5cbiAqIEB0b2RvIE1pZ2h0IGJlIHNsb3cgc2luY2UgdXNlZCBBcnJheS5tYXAuIFByb2JhYmx5IG5lZWRzIHBlcmZvcm1hbmNlIHJldmlzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5pdENvb3JkaW5hdGVzKGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIsIGZpbGwgPSAwKSB7XG4gICAgcmV0dXJuIG5ldyBBcnJheShkaW1lbnNpb24xKS5maWxsKGZpbGwpLm1hcCgoKSA9PiAobmV3IFZlY3RvcihkaW1lbnNpb24yKS5maWxsKGZpbGwpKSk7XG59XG4vKipcbiAqIFRyYW5zcG9zZSBtYXRyaXguXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtNYXRyaXh9IG1hdHJpeCBUaGUgbWF0cml4IHRvIGJlIHRyYW5zcG9zZWQuXG4gKiBAcmV0dXJuIHtNYXRyaXh9IFRyYW5zcG9zZWQgbWF0cml4LlxuICogQHRvZG8gTWlnaHQgYmUgc2xvdyBzaW5jZSB1c2VkIEFycmF5Lm1hcC4gUHJvYmFibHkgbmVlZHMgcGVyZm9ybWFuY2UgcmV2aXNpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc3Bvc2VNYXRyaXgobWF0cml4KSB7XG4gICAgcmV0dXJuIG5ldyBBcnJheShtYXRyaXhbMF0ubGVuZ3RoKS5maWxsKDApXG4gICAgICAgIC5tYXAoKF8sIGkpID0+IChuZXcgVmVjdG9yKG1hdHJpeC5sZW5ndGgpLmZpbGwoMCkubWFwKChfLCBqKSA9PiAobWF0cml4W2pdW2ldKSkpKTtcbn1cbi8qKlxuICogQWRkcyB0d28gdmVjdG9ycyB3aXRoIHRoZSBzZWNvbmQgb25lIHRvIGJlIG11bHRpcGxpZWQgYnkgdGhlIGdpdmVuIHJhdGlvLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yfSBwIFRoZSBmaXJzdCB2ZWN0b3IgdG8gYWRkLlxuICogQHBhcmFtIHtWZWN0b3J9IHEgVGhlIHNlY29uZCB2ZWN0b3IgdG8gYWRkLlxuICogQHBhcmFtIHtudW1iZXJ9IFttdWx0aXBsaWVyPTFdIEEgbXVsdGlwbGllciB0byBiZSB1c2VkIGJlZm9yZSB0aGUgc2Vjb25kIHZlY3RvciBpcyBhZGRlZC5cbiAqIEByZXR1cm4ge1ZlY3Rvcn0gTmV3IHZlY3RvciBjb250YWluZWQgdGhlIHJlc3VsdCBvZiBvcGVyYXRpb24gcCttdWx0aXBsaWVyKnEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JBZGQocCwgcSwgbXVsdGlwbGllciA9IDEpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBwLmxlbmd0aDtcbiAgICBhc3NlcnQobkl0ZW1zID09IHEubGVuZ3RoLCAnVmVjdG9yIGxlbmd0aHMgZG8gbm90IG1hdGNoLicpO1xuICAgIGNvbnN0IHRvdGFsID0gbmV3IFZlY3RvcihuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcC5sZW5ndGg7ICsraSlcbiAgICAgICAgdG90YWxbaV0gPSBwW2ldICsgbXVsdGlwbGllciAqIHFbaV07XG4gICAgcmV0dXJuIHRvdGFsO1xufVxuLyoqXG4gKiBTdW1zIHRoZSB2ZWN0b3IncyBpdGVtcy5cbiAqXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gdiBUaGUgdmVjdG9yIHRvIGJlIHN1bW1lZC5cbiAqIEByZXR1cm4ge251bWJlcn0gVGhlIHZlY3RvcidzIGl0ZW1zIHN1bS5cbiAqL1xuZnVuY3Rpb24gaXRlbXNTdW0odikge1xuICAgIGxldCB0b3RhbCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgKytpKVxuICAgICAgICB0b3RhbCArPSB2W2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbi8qKlxuICogU3VxYXJlcyB0aGUgdmVjdG9yJ3MgaXRlbXMuXG4gKlxuICogQHBhcmFtIHtWZWN0b3J9IHYgVGhlIHZlY3RvciB0byBzcXVhcmUuXG4gKiBAcmV0dXJuIHtWZWN0b3J9IEEgbmV3IHZlY3RvciBjb250YWluaW5nIHRoZSBvcmlnaW5hbCdzIGl0ZW1zIHNxdWFyZWQuXG4gKi9cbmZ1bmN0aW9uIHZlY3RvclNxdWFyZSh2KSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gdi5sZW5ndGg7XG4gICAgY29uc3QgdG90YWwgPSBuZXcgVmVjdG9yKG5JdGVtcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgKytpKVxuICAgICAgICB0b3RhbFtpXSA9IHZbaV0gKiB2W2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JMZW5ndGgodikge1xuICAgIGxldCBzcXJTdW0gPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKylcbiAgICAgICAgc3FyU3VtICs9IHZbaV0gKiB2W2ldO1xuICAgIHJldHVybiBNYXRoLnNxcnQoc3FyU3VtKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JEb3RQcm9kdWN0KHYxLCB2Mikge1xuICAgIGlmICh2MS5sZW5ndGggIT0gdjIubGVuZ3RoKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBkaW1lbnNpb25hbGl0eSBvZiB0aGUgdmVjdG9ycyBtdXN0IG1hdGNoJyk7XG4gICAgbGV0IHByb2QgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdjEubGVuZ3RoOyBpKyspXG4gICAgICAgIHByb2QgKz0gdjFbaV0gKiB2MltpXTtcbiAgICByZXR1cm4gcHJvZDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG1hdHJpeCBmaWxsZWQgd2l0aCByYW5kb20gZmxvYXRpbmcgcG9pbnQgdmFsdWVzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24xIFRoZSBmaXJzdCBkaW1lbnNpb24gb2YgdGhlIG1hdHJpeC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24yIFRoZSBzZWNvbmQgZGltZW5zaW9uIG9mIHRoZSBtYXRyaXguXG4gKiBAcGFyYW0ge251bWJlcn0gW3NjYWxlPTEuXSBNYXggdmFsdWUgZ2l2ZW4gYnkgcmFuZG9tIGdlbmVyYXRvci5cbiAqIEByZXR1cm4ge01hdHJpeH0gQSBuZXcgbWF0cml4IGZpbGxlZCB3aXRoIHJhbmRvbSBmbG9hdGluZyBwb2ludCAgdmFsdWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsbFJhbmRvbU1hdHJpeChkaW1lbnNpb24xLCBkaW1lbnNpb24yLCBzY2FsZSA9IDEuKSB7XG4gICAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltZW5zaW9uMTsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZGltZW5zaW9uMjsgKytqKVxuICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gcmFuZG9tRmxvYXQoc2NhbGUpO1xuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIEV1Y2xpZGVhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWN0b3JzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yfSBwIFRoZSBmaXJzdCB2ZWN0b3IuXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcSBUaGUgc2Vjb25kIHZlY3Rvci5cbiAqIEByZXR1cm4ge251bWJlcn0gRXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gdGhlIGdpdmVuIHZlY3RvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZShwLCBxKSB7XG4gICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgY29uc3QgbGVuID0gcC5sZW5ndGg7XG4gICAgaWYgKGxlbiAhPT0gcS5sZW5ndGgpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGRpbWVuc2lvbmFsaXR5IG9mIHRoZSB2ZWN0b3JzIG11c3QgbWF0Y2gnKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgKytpKVxuICAgICAgICByZXN1bHQgKz0gTWF0aC5wb3coKHBbaV0gLSBxW2ldKSwgMik7XG4gICAgcmV0dXJuIE1hdGguc3FydChyZXN1bHQpO1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgZGlzdGFuY2UgbWF0cml4IHVzaW5nIGEgY3VzdG9tIGRpc3RhbmNlIGZ1bmN0aW9uLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yc30gZGF0YSBJbnB1dCB2ZWN0b3JzIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZXMuXG4gKiBAcGFyYW0ge0Rpc3RhbmNlTWV0cmljfSBkaXN0YW5jZSBDdXN0b20gZGlzdGFuY2UgZnVuY3Rpb24uXG4gKiBAcmV0dXJuIHtNYXRyaXh9IENhbGN1bGF0ZWQgY3VzdG9tIGRpc3RhbmNlIG1hdHJpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGNEaXN0YW5jZU1hdHJpeChkYXRhLCBkaXN0YW5jZSkge1xuICAgIGNvbnN0IG5JdGVtcyA9IGRhdGEubGVuZ3RoO1xuICAgIGNvbnN0IG1hdHJpeCA9IGluaXRDb29yZGluYXRlcyhuSXRlbXMsIG5JdGVtcywgMCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuSXRlbXM7ICsraSkge1xuICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBuSXRlbXM7ICsraikge1xuICAgICAgICAgICAgY29uc3QgZCA9IChkYXRhW2ldID09IG51bGwpIHx8IChkYXRhW2pdID09IG51bGwpID8gMCA6IGRpc3RhbmNlKGRhdGFbaV0sIGRhdGFbal0pO1xuICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gbWF0cml4W2pdW2ldID0gZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgZGlzdGFuY2UgbWF0cml4IHVzaW5nIGEgY3VzdG9tIGRpc3RhbmNlIGZ1bmN0aW9uLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yc30gZGF0YSBJbnB1dCB2ZWN0b3JzIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZXMuXG4gKiBAcGFyYW0ge0Rpc3RhbmNlTWV0cmljfSBkaXN0YW5jZSBDdXN0b20gZGlzdGFuY2UgZnVuY3Rpb24uXG4gKiBAcmV0dXJuIHtNYXRyaXh9IENhbGN1bGF0ZWQgY3VzdG9tIGRpc3RhbmNlIG1hdHJpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGNOb3JtYWxpemVkRGlzdGFuY2VNYXRyaXgoZGF0YSwgZGlzdGFuY2UpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBkYXRhLmxlbmd0aDtcbiAgICBjb25zdCBtYXRyaXggPSBpbml0Q29vcmRpbmF0ZXMobkl0ZW1zLCBuSXRlbXMsIDApO1xuICAgIGxldCBtYXggPSBOdW1iZXIuTUlOX1ZBTFVFO1xuICAgIGxldCBtaW4gPSBOdW1iZXIuTUFYX1ZBTFVFO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IGk7IGogPCBuSXRlbXM7ICsraikge1xuICAgICAgICAgICAgY29uc3QgZCA9IChkYXRhW2ldID09IG51bGwpIHx8IChkYXRhW2pdID09IG51bGwgfHwgaSA9PT0gaikgPyAwIDogZGlzdGFuY2UoZGF0YVtpXSwgZGF0YVtqXSk7XG4gICAgICAgICAgICBtYXRyaXhbaV1bal0gPSBtYXRyaXhbal1baV0gPSBkO1xuICAgICAgICAgICAgaWYgKGQgPiBtYXgpXG4gICAgICAgICAgICAgICAgbWF4ID0gZDtcbiAgICAgICAgICAgIGlmIChkIDwgbWluKVxuICAgICAgICAgICAgICAgIG1pbiA9IGQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuSXRlbXM7ICsraSkge1xuICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBuSXRlbXM7ICsrailcbiAgICAgICAgICAgIG1hdHJpeFtpXVtqXSA9IG1hdHJpeFtqXVtpXSA9IChtYXRyaXhbaV1bal0gLSBtaW4pIC8gKG1heCAtIG1pbik7XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59XG4vKiogR2VuZXJhdGVzIGFycmF5IGZyb20gYSByYW5nZSBbYmVnaW47IGVuZF0gb3IgW2JlZ2luOyBlbmQpIGlmIGVuZEV4Y2x1c2l2ZS4gKiovXG5leHBvcnQgZnVuY3Rpb24gZ2VuUmFuZ2UoYmVnaW4sIGVuZCwgZW5kRXhjbHVzaXZlID0gZmFsc2UpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBlbmQgLSBiZWdpbiArIChlbmRFeGNsdXNpdmUgPyAwIDogMSk7XG4gICAgY29uc3Qgc2VyaWVzID0gbmV3IEludDMyQXJyYXkobkl0ZW1zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKVxuICAgICAgICBzZXJpZXNbaV0gPSBiZWdpbiArIGk7XG4gICAgcmV0dXJuIHNlcmllcztcbn1cbi8qKlxuICogUmV0dXJucyBvcmRlciBvZiB2YWx1ZXMgYXMgaWYgdGhleSBhcmUgc29ydGVkLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7YW55W119IHZhbHVlcyBJbnB1dCBhcnJheS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3JldmVyc2U9ZmFsc2VdIFdoZXRoZXIgdG8gcmV0dXJuIHJldmVyc2VkIG9yZGVyLlxuICogQHJldHVybiB7bnVtYmVyW119IFRoZSBvcmRlciBjb21wdXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFyZ1NvcnQodmFsdWVzLCByZXZlcnNlID0gZmFsc2UpIHtcbiAgICBjb25zdCBzb3J0Zm4gPSByZXZlcnNlID8gKGEsIGIpID0+IChiWzBdIC0gYVswXSkgOiAoYSwgYikgPT4gKGFbMF0gLSBiWzBdKTtcbiAgICBjb25zdCBkZWNvciA9ICh2LCBpKSA9PiBbdiwgaV07IC8vIHNldCBpbmRleCB0byB2YWx1ZVxuICAgIGNvbnN0IHVuZGVjb3IgPSAoYSkgPT4gYVsxXTsgLy8gbGVhdmUgb25seSBpbmRleFxuICAgIGNvbnN0IF9hcmdzb3J0ID0gKGFycikgPT4gYXJyLm1hcChkZWNvcikuc29ydChzb3J0Zm4pLm1hcCh1bmRlY29yKTtcbiAgICByZXR1cm4gX2FyZ3NvcnQodmFsdWVzKTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgaW5kZXhlcyBvZiB0aGUgbW9zdCBkaXZlcnNlIG9iamVjdHMgYWNjb3JkaW5nIHRvIHRoZSBkaXN0IGZ1bmN0aW9uXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoIHRvdGFsIG51bWJlciBvZiBvYmplY3RzXG4gKiBAcGFyYW0ge251bWJlcn0gbiBudW1iZXIgb2YgZGl2ZXJzZSBlbGVtZW50cyB0byBmaW5kXG4gKiBAcGFyYW0geyhpMTogbnVtYmVyLCBpMjogbnVtYmVyKSA9PiBudW1iZXJ9IGRpc3QgYSBmdW5jdGlvbiB3aGljaCBjYWxjdWxhdGVzIGRpc3RhbmNlIGJldHdlZW5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0d28gb2JqZWN0cyB1c2luZyB0aGVpciBpbmRleGVzXG4gKiBAcmV0dXJucyB7bnVtYmVyW119IFRoZSBpbmRleGVzIG9mIHRoZSBtb3N0IGRpdmVyc2Ugb2JqZWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGl2ZXJzZVN1YnNldChsZW5ndGgsIG4sIGRpc3QpIHtcbiAgICBmdW5jdGlvbiBtYXhCeSh2YWx1ZXMsIG9yZGVyQnkpIHtcbiAgICAgICAgbGV0IG1heFZhbHVlID0gbnVsbDtcbiAgICAgICAgbGV0IG1heE9yZGVyQnkgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50T3JkZXJCeSA9IG9yZGVyQnkoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAobWF4T3JkZXJCeSA9PSBudWxsIHx8IGVsZW1lbnRPcmRlckJ5ID4gbWF4T3JkZXJCeSkge1xuICAgICAgICAgICAgICAgIG1heFZhbHVlID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICBtYXhPcmRlckJ5ID0gZWxlbWVudE9yZGVyQnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heFZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBzdWJzZXQgPSBbcmFuZG9tSW50KGxlbmd0aCAtIDEpXTtcbiAgICBjb25zdCBjb21wbGVtZW50ID0gbmV3IFNldCgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaWYgKCFzdWJzZXQuaW5jbHVkZXMoaSkpXG4gICAgICAgICAgICBjb21wbGVtZW50LmFkZChpKTtcbiAgICB9XG4gICAgd2hpbGUgKHN1YnNldC5sZW5ndGggPCBuKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IG1heEJ5KGNvbXBsZW1lbnQudmFsdWVzKCksIChpKSA9PiBNYXRoLm1pbi5hcHBseShNYXRoLCBzdWJzZXQubWFwKGZ1bmN0aW9uICh2YWwsIGluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gZGlzdChpLCB2YWwpO1xuICAgICAgICB9KSkpO1xuICAgICAgICBpZiAoaWR4KSB7XG4gICAgICAgICAgICBzdWJzZXQucHVzaChpZHgpO1xuICAgICAgICAgICAgY29tcGxlbWVudC5kZWxldGUoaWR4KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3Vic2V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIG5vcm1hbGl6ZWQgdmVjdG9yLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yfSBkYXRhIG51bWVyaWNhbCBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKGRhdGEpIHtcbiAgICBjb25zdCBsZW4gPSBkYXRhLmxlbmd0aDtcbiAgICBsZXQgc3VtID0gMDtcbiAgICBsZXQgc3VtT2ZTcXVhcmVzID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgIHN1bSArPSBkYXRhW2ldO1xuICAgICAgICBzdW1PZlNxdWFyZXMgKz0gTWF0aC5wb3coZGF0YVtpXSwgMik7XG4gICAgfVxuICAgIGNvbnN0IG1lYW4gPSBzdW0gLyBsZW47XG4gICAgY29uc3Qgc3RkRGV2SW52ZXJzZSA9IDEuMCAvIE1hdGguc3FydChzdW1PZlNxdWFyZXMgLyBsZW4gLSBNYXRoLnBvdyhtZWFuLCAyKSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47ICsraSlcbiAgICAgICAgZGF0YVtpXSA9IChkYXRhW2ldIC0gbWVhbikgKiBzdGREZXZJbnZlcnNlO1xuICAgIHJldHVybiBkYXRhO1xufVxuLyoqXG4gKiBGaW5kcyBzZXQgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBsaXN0cy5cbiAqIEBwYXJhbSB7YW55W119IGEgVGhlIGZpcnN0IGxpc3QuXG4gKiBAcGFyYW0ge2FueVtdfSBiIFRoZSBzZWNvbmQgbGlzdC5cbiAqIEByZXR1cm4ge2FueVtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RGlmZmVyZW5jZShhLCBiKSB7XG4gICAgY29uc3QgYlNldCA9IG5ldyBTZXQoYik7XG4gICAgcmV0dXJuIEFycmF5LmZyb20obmV3IFNldChhLmZpbHRlcigoeCkgPT4gIWJTZXQuaGFzKHgpKSkudmFsdWVzKCkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZG1WamRHOXlMVzl3WlhKaGRHbHZibk11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SjJaV04wYjNJdGIzQmxjbUYwYVc5dWN5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVN4UFFVRlBMRVZCUVZNc1RVRkJUU3hGUVVGMVF5eE5RVUZOTEhGQ1FVRnhRaXhEUVVGRE8wRkJRM3BHTEU5QlFVOHNSVUZCUXl4WFFVRlhMRVZCUVVVc1UwRkJVeXhGUVVGRExFMUJRVTBzVlVGQlZTeERRVUZETzBGQlJXaEVPenM3T3pzN08wZEJUMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNUVUZCVFN4RFFVRkRMRmxCUVhGQ0xFdEJRVXNzUlVGQlJTeFZRVUZyUWl4clFrRkJhMEk3U1VGRGNrWXNTVUZCU1N4RFFVRkRMRk5CUVZNN1VVRkRXaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMEZCUXpkQ0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxFMUJRVTBzVlVGQlZTeGxRVUZsTEVOQlFVTXNWVUZCYTBJc1JVRkJSU3hWUVVGclFpeEZRVUZGTEU5QlFXVXNRMEZCUXp0SlFVTjBSaXhQUVVGUExFbEJRVWtzUzBGQlN5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhKUVVGSkxFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzcEdMRU5CUVVNN1FVRkZSRHM3T3pzN096dEhRVTlITzBGQlEwZ3NUVUZCVFN4VlFVRlZMR1ZCUVdVc1EwRkJReXhOUVVGak8wbEJRelZETEU5QlFVOHNTVUZCU1N4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU03VTBGRGRrTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SlFVRkpMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEZEVZc1EwRkJRenRCUVVWRU96czdPenM3T3p0SFFWRkhPMEZCUTBnc1RVRkJUU3hWUVVGVkxGTkJRVk1zUTBGQlF5eERRVUZUTEVWQlFVVXNRMEZCVXl4RlFVRkZMR0ZCUVhGQ0xFTkJRVU03U1VGRGNFVXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF6dEpRVVY0UWl4TlFVRk5MRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNPRUpCUVRoQ0xFTkJRVU1zUTBGQlF6dEpRVVV6UkN4TlFVRk5MRXRCUVVzc1IwRkJSeXhKUVVGSkxFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0SlFVVnFReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTTdVVUZETDBJc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhWUVVGVkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUlhSRExFOUJRVThzUzBGQlN5eERRVUZETzBGQlEyWXNRMEZCUXp0QlFVVkVPenM3T3p0SFFVdEhPMEZCUTBnc1UwRkJVeXhSUVVGUkxFTkJRVU1zUTBGQlV6dEpRVU42UWl4SlFVRkpMRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRlpDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNN1VVRkRMMElzUzBGQlN5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWb1FpeFBRVUZQTEV0QlFVc3NRMEZCUXp0QlFVTm1MRU5CUVVNN1FVRkZSRHM3T3pzN1IwRkxSenRCUVVOSUxGTkJRVk1zV1VGQldTeERRVUZETEVOQlFWTTdTVUZETjBJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXp0SlFVTjRRaXhOUVVGTkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVWcVF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNN1VVRkRMMElzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZla0lzVDBGQlR5eExRVUZMTEVOQlFVTTdRVUZEWml4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxGbEJRVmtzUTBGQlF5eERRVUZUTzBsQlEzQkRMRWxCUVVrc1RVRkJUU3hIUVVGWExFTkJRVU1zUTBGQlF6dEpRVU4yUWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGWExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVU3VVVGRGRrTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRlRUlzVDBGQlR5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRek5DTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc1owSkJRV2RDTEVOQlFVTXNSVUZCVlN4RlFVRkZMRVZCUVZVN1NVRkRja1FzU1VGQlNTeEZRVUZGTEVOQlFVTXNUVUZCVFN4SlFVRkpMRVZCUVVVc1EwRkJReXhOUVVGTk8xRkJRM2hDTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc09FTkJRVGhETEVOQlFVTXNRMEZCUXp0SlFVTnNSU3hKUVVGSkxFbEJRVWtzUjBGQlZ5eERRVUZETEVOQlFVTTdTVUZEY2tJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlZ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlEzaERMRWxCUVVrc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM2hDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMEZCUTJRc1EwRkJRenRCUVVWRU96czdPenM3T3p0SFFWRkhPMEZCUTBnc1RVRkJUU3hWUVVGVkxHZENRVUZuUWl4RFFVRkRMRlZCUVd0Q0xFVkJRVVVzVlVGQmEwSXNSVUZCUlN4UlFVRm5RaXhGUVVGRk8wbEJRM3BHTEUxQlFVMHNUVUZCVFN4SFFVRkhMR1ZCUVdVc1EwRkJReXhWUVVGVkxFVkJRVVVzVlVGQlZTeERRVUZETEVOQlFVTTdTVUZGZGtRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRlZCUVZVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFJRVU51UXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NWVUZCVlN4RlFVRkZMRVZCUVVVc1EwRkJRenRaUVVOcVF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVjBGQlZ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMHRCUTNKRE8wbEJRMFFzVDBGQlR5eE5RVUZOTEVOQlFVTTdRVUZEYUVJc1EwRkJRenRCUVVWRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc01FSkJRVEJDTEVOQlFVTXNRMEZCVXl4RlFVRkZMRU5CUVZNN1NVRkROMFFzU1VGQlNTeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTJZc1RVRkJUU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXp0SlFVVnlRaXhKUVVGSkxFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNUVUZCVFR0UlFVTnNRaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETERoRFFVRTRReXhEUVVGRExFTkJRVU03U1VGRmJFVXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNN1VVRkRNVUlzVFVGQlRTeEpRVUZKTEZOQlFVRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVrc1EwRkJReXhEUVVGQkxFTkJRVU03U1VGRkwwSXNUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBGQlF6TkNMRU5CUVVNN1FVRkZSRHM3T3pzN096dEhRVTlITzBGQlEwZ3NUVUZCVFN4VlFVRlZMR3RDUVVGclFpeERRVUZETEVsQlFXRXNSVUZCUlN4UlFVRjNRanRKUVVONFJTeE5RVUZOTEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8wbEJRek5DTEUxQlFVMHNUVUZCVFN4SFFVRkhMR1ZCUVdVc1EwRkJReXhOUVVGTkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUld4RUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZETDBJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZEYmtNc1RVRkJUU3hEUVVGRExFZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU14Uml4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0VFFVTnFRenRMUVVOR08wbEJRMFFzVDBGQlR5eE5RVUZOTEVOQlFVTTdRVUZEYUVJc1EwRkJRenRCUVVWRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc05FSkJRVFJDTEVOQlFVTXNTVUZCWVN4RlFVRkZMRkZCUVhkQ08wbEJRMnhHTEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRE0wSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1pVRkJaU3hEUVVGRExFMUJRVTBzUlVGQlJTeE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRiRVFzU1VGQlNTeEhRVUZITEVkQlFVY3NUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkJRenRKUVVNelFpeEpRVUZKTEVkQlFVY3NSMEZCUnl4TlFVRk5MRU5CUVVNc1UwRkJVeXhEUVVGRE8wbEJRek5DTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1VVRkRMMElzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTXZRaXhOUVVGTkxFTkJRVU1zUjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRja2NzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGFFTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1IwRkJSenRuUWtGQlJTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTNKQ0xFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVYzdaMEpCUVVVc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF6dFRRVU4wUWp0TFFVTkdPMGxCUTBRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFJRVU12UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU03V1VGRGFrTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF6dExRVU53UlR0SlFVTkVMRTlCUVU4c1RVRkJUU3hEUVVGRE8wRkJRMmhDTEVOQlFVTTdRVUZGUkN4clJrRkJhMFk3UVVGRGJFWXNUVUZCVFN4VlFVRlZMRkZCUVZFc1EwRkJReXhMUVVGaExFVkJRVVVzUjBGQlZ5eEZRVUZGTEZsQlFWa3NSMEZCUnl4TFFVRkxPMGxCUTNaRkxFMUJRVTBzVFVGQlRTeEhRVUZITEVkQlFVY3NSMEZCUnl4TFFVRkxMRWRCUVVjc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGNFUXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hWUVVGVkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZGZEVNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU03VVVGRE4wSXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZGZUVJc1QwRkJUeXhOUVVGTkxFTkJRVU03UVVGRGFFSXNRMEZCUXp0QlFVVkVPenM3T3pzN08wZEJUMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNUMEZCVHl4RFFVRkRMRTFCUVdFc1JVRkJSU3hQUVVGUExFZEJRVWNzUzBGQlN6dEpRVU53UkN4TlFVRk5MRTFCUVUwc1IwRkJSeXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCVVN4RlFVRkZMRU5CUVZFc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJVU3hGUVVGRkxFTkJRVkVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRka2NzVFVGQlRTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRk5MRVZCUVVVc1EwRkJVeXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExIRkNRVUZ4UWp0SlFVTnNSU3hOUVVGTkxFOUJRVThzUjBGQlJ5eERRVUZETEVOQlFWRXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNiVUpCUVcxQ08wbEJRM1pFTEUxQlFVMHNVVUZCVVN4SFFVRkhMRU5CUVVNc1IwRkJWU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRE1VVXNUMEZCVHl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03UVVGRE1VSXNRMEZCUXp0QlFVVkVPenM3T3pzN08wZEJUMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNaMEpCUVdkQ0xFTkJRVU1zVFVGQll5eEZRVUZGTEVOQlFWTXNSVUZCUlN4SlFVRjNRenRKUVVOc1J5eFRRVUZUTEV0QlFVc3NRMEZCUXl4TlFVRm5ReXhGUVVGRkxFOUJRVGhDTzFGQlF6ZEZMRWxCUVVrc1VVRkJVU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU53UWl4SlFVRkpMRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU03VVVGRmRFSXNTMEZCU3l4TlFVRk5MRTlCUVU4c1NVRkJTU3hOUVVGTkxFVkJRVVU3V1VGRE5VSXNUVUZCVFN4alFVRmpMRWRCUVVjc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFsQlEzaERMRWxCUVVrc1ZVRkJWU3hKUVVGSkxFbEJRVWtzU1VGQlNTeGpRVUZqTEVkQlFVY3NWVUZCVlN4RlFVRkZPMmRDUVVOeVJDeFJRVUZSTEVkQlFVY3NUMEZCVHl4RFFVRkRPMmRDUVVOdVFpeFZRVUZWTEVkQlFVY3NZMEZCWXl4RFFVRkRPMkZCUXpkQ08xTkJRMFk3VVVGRFJDeFBRVUZQTEZGQlFWRXNRMEZCUXp0SlFVTnNRaXhEUVVGRE8wbEJSVVFzVFVGQlRTeE5RVUZOTEVkQlFVY3NRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZGtNc1RVRkJUU3hWUVVGVkxFZEJRVWNzU1VGQlNTeEhRVUZITEVWQlFVVXNRMEZCUXp0SlFVVTNRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlF5OUNMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTnlRaXhWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUTNKQ08wbEJSVVFzVDBGQlR5eE5RVUZOTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkJSVHRSUVVONFFpeE5RVUZOTEVkQlFVY3NSMEZCUnl4TFFVRkxMRU5CUTJZc1ZVRkJWU3hEUVVGRExFMUJRVTBzUlVGQk9FSXNSVUZETDBNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUlVGQlJTeE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVZNc1IwRkJSeXhGUVVGRkxFdEJRVXM3V1VGRGVFUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEzUkNMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5RTEVsQlFVa3NSMEZCUnl4RlFVRkZPMWxCUTFBc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVTnFRaXhWUVVGVkxFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMU5CUTNoQ08wdEJRMFk3U1VGRFJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVVE3T3pzN08wZEJTMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNVMEZCVXl4RFFVRkRMRWxCUVZrN1NVRkRjRU1zVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRKUVVONFFpeEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRXaXhKUVVGSkxGbEJRVmtzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZGY2tJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFJRVU0xUWl4SFFVRkhMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEyWXNXVUZCV1N4SlFVRkpMRk5CUVVFc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZKTEVOQlFVTXNRMEZCUVN4RFFVRkRPMHRCUXpsQ08wbEJSVVFzVFVGQlRTeEpRVUZKTEVkQlFVY3NSMEZCUnl4SFFVRkhMRWRCUVVjc1EwRkJRenRKUVVOMlFpeE5RVUZOTEdGQlFXRXNSMEZCUnl4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NSMEZCUnl4SFFVRkhMRk5CUVVFc1NVRkJTU3hGUVVGSkxFTkJRVU1zUTBGQlFTeERRVUZETEVOQlFVTTdTVUZGZEVVc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU03VVVGRE1VSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExHRkJRV0VzUTBGQlF6dEpRVVUzUXl4UFFVRlBMRWxCUVVrc1EwRkJRenRCUVVOa0xFTkJRVU03UVVGRlJEczdPenM3UjBGTFJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4aFFVRmhMRU5CUVVNc1EwRkJVU3hGUVVGRkxFTkJRVkU3U1VGRE9VTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZUVJc1QwRkJUeXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUTBGQlF6dEJRVU55UlN4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHROWVhSeWFYZ3NJRlpsWTNSdmNpd2dRMjl2Y21ScGJtRjBaWE1zSUZabFkzUnZjbk1zSUVScGMzUmhibU5sVFdWMGNtbGpmU0JtY205dElDY3VMM1I1Y0dVdFpHVmpiR0Z5WVhScGIyNXpKenRjYm1sdGNHOXlkQ0I3Y21GdVpHOXRSbXh2WVhRc0lISmhibVJ2YlVsdWRIMGdabkp2YlNBbkxpOXlZVzVrYjIwbk8xeHVYRzR2S2lwY2JpQXFJRUZ6YzJWeWRITWdZU0JqYjI1a2FYUnBiMjRnWW5rZ2RHaHliM2RwYm1jZ1lXNGdSWEp5YjNJdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRSEJoY21GdElIdGliMjlzWldGdWZTQmJZMjl1WkdsMGFXOXVQV1poYkhObFhTQkRiMjVrYVhScGIyNGdkRzhnWVhOelpYSjBMbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUZ0dFpYTnpZV2RsUFNkQmMzTmxjblJwYjI0Z1pYSnliM0l1SjEwZ1RXVnpjMkZuWlNCMGJ5QnZkWFJ3ZFhRdVhHNGdLaUJBZEdoeWIzZHpJSHRGY25KdmNuMWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdGemMyVnlkQ2hqYjI1a2FYUnBiMjQ2SUdKdmIyeGxZVzRnUFNCbVlXeHpaU3dnYldWemMyRm5aVG9nYzNSeWFXNW5JRDBnSjBGemMyVnlkR2x2YmlCbGNuSnZjaTRuS1NCN1hHNGdJR2xtSUNnaFkyOXVaR2wwYVc5dUtWeHVJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWh0WlhOellXZGxLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkRjbVZoZEdWeklHNWxkeUIwZDI4dFpHbHRaVzV6YVc5dVlXd2dZWEp5WVhrZ1lXNWtJR1pwYkd4eklHbDBJSGRwZEdnZ2RHaGxJSFpoYkhWbElHZHBkbVZ1TGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0JrYVcxbGJuTnBiMjR4SUZSb1pTQm1hWEp6ZENCa2FXMWxibk5wYjI0Z2IyWWdkR2hsSUdOdmIzSmthVzVoZEdWeklDaHVkVzFpWlhJZ2IyWWdjbTkzY3lrdVhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdaR2x0Wlc1emFXOXVNaUJVYUdVZ2MyVmpiMjVrSUdScGJXVnVjMmx2YmlCdlppQjBhR1VnWTI5dmNtUnBibUYwWlhNZ0tHNTFiV0psY2lCdlppQmpiMngxYlc1ektTNWNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0JiWm1sc2JEMHdYU0JCSUhaaGJIVmxJSFJ2SUdacGJHd2dkR2hsSUdOdmIzSmthVzVoZEdWeklIZHBkR2d1WEc0Z0tpQkFjbVYwZFhKdUlIdERiMjl5WkdsdVlYUmxjMzBnUVNCMGQyOHRaR2x0Wlc1emFXOXVZV3dnWm1sc2JHVmtJSGRwZEdnZ2RHaGxJSFpoYkhWbElHZHBkbVZ1TGx4dUlDb2dRSFJ2Wkc4Z1RXbG5hSFFnWW1VZ2MyeHZkeUJ6YVc1alpTQjFjMlZrSUVGeWNtRjVMbTFoY0M0Z1VISnZZbUZpYkhrZ2JtVmxaSE1nY0dWeVptOXliV0Z1WTJVZ2NtVjJhWE5wYjI0dVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJwYm1sMFEyOXZjbVJwYm1GMFpYTW9aR2x0Wlc1emFXOXVNVG9nYm5WdFltVnlMQ0JrYVcxbGJuTnBiMjR5T2lCdWRXMWlaWElzSUdacGJHdzZJRzUxYldKbGNpQTlJREFwT2lCRGIyOXlaR2x1WVhSbGN5QjdYRzRnSUhKbGRIVnliaUJ1WlhjZ1FYSnlZWGtvWkdsdFpXNXphVzl1TVNrdVptbHNiQ2htYVd4c0tTNXRZWEFvS0NrZ1BUNGdLRzVsZHlCV1pXTjBiM0lvWkdsdFpXNXphVzl1TWlrdVptbHNiQ2htYVd4c0tTa3BPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGUnlZVzV6Y0c5elpTQnRZWFJ5YVhndVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRSEJoY21GdElIdE5ZWFJ5YVhoOUlHMWhkSEpwZUNCVWFHVWdiV0YwY21sNElIUnZJR0psSUhSeVlXNXpjRzl6WldRdVhHNGdLaUJBY21WMGRYSnVJSHROWVhSeWFYaDlJRlJ5WVc1emNHOXpaV1FnYldGMGNtbDRMbHh1SUNvZ1FIUnZaRzhnVFdsbmFIUWdZbVVnYzJ4dmR5QnphVzVqWlNCMWMyVmtJRUZ5Y21GNUxtMWhjQzRnVUhKdlltRmliSGtnYm1WbFpITWdjR1Z5Wm05eWJXRnVZMlVnY21WMmFYTnBiMjR1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjBjbUZ1YzNCdmMyVk5ZWFJ5YVhnb2JXRjBjbWw0T2lCTllYUnlhWGdwT2lCTllYUnlhWGdnZTF4dUlDQnlaWFIxY200Z2JtVjNJRUZ5Y21GNUtHMWhkSEpwZUZzd1hTNXNaVzVuZEdncExtWnBiR3dvTUNsY2JpQWdJQ0F1YldGd0tDaGZMQ0JwS1NBOVBpQW9ibVYzSUZabFkzUnZjaWh0WVhSeWFYZ3ViR1Z1WjNSb0tTNW1hV3hzS0RBcExtMWhjQ2dvWHl3Z2Fpa2dQVDRnS0cxaGRISnBlRnRxWFZ0cFhTa3BLU2s3WEc1OVhHNWNiaThxS2x4dUlDb2dRV1JrY3lCMGQyOGdkbVZqZEc5eWN5QjNhWFJvSUhSb1pTQnpaV052Ym1RZ2IyNWxJSFJ2SUdKbElHMTFiSFJwY0d4cFpXUWdZbmtnZEdobElHZHBkbVZ1SUhKaGRHbHZMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCd1lYSmhiU0I3Vm1WamRHOXlmU0J3SUZSb1pTQm1hWEp6ZENCMlpXTjBiM0lnZEc4Z1lXUmtMbHh1SUNvZ1FIQmhjbUZ0SUh0V1pXTjBiM0o5SUhFZ1ZHaGxJSE5sWTI5dVpDQjJaV04wYjNJZ2RHOGdZV1JrTGx4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlGdHRkV3gwYVhCc2FXVnlQVEZkSUVFZ2JYVnNkR2x3YkdsbGNpQjBieUJpWlNCMWMyVmtJR0psWm05eVpTQjBhR1VnYzJWamIyNWtJSFpsWTNSdmNpQnBjeUJoWkdSbFpDNWNiaUFxSUVCeVpYUjFjbTRnZTFabFkzUnZjbjBnVG1WM0lIWmxZM1J2Y2lCamIyNTBZV2x1WldRZ2RHaGxJSEpsYzNWc2RDQnZaaUJ2Y0dWeVlYUnBiMjRnY0N0dGRXeDBhWEJzYVdWeUtuRXVYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCMlpXTjBiM0pCWkdRb2NEb2dWbVZqZEc5eUxDQnhPaUJXWldOMGIzSXNJRzExYkhScGNHeHBaWEk2SUc1MWJXSmxjaUE5SURFcE9pQldaV04wYjNJZ2UxeHVJQ0JqYjI1emRDQnVTWFJsYlhNZ1BTQndMbXhsYm1kMGFEdGNibHh1SUNCaGMzTmxjblFvYmtsMFpXMXpJRDA5SUhFdWJHVnVaM1JvTENBblZtVmpkRzl5SUd4bGJtZDBhSE1nWkc4Z2JtOTBJRzFoZEdOb0xpY3BPMXh1WEc0Z0lHTnZibk4wSUhSdmRHRnNJRDBnYm1WM0lGWmxZM1J2Y2lodVNYUmxiWE1wTzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnY0M1c1pXNW5kR2c3SUNzcmFTbGNiaUFnSUNCMGIzUmhiRnRwWFNBOUlIQmJhVjBnS3lCdGRXeDBhWEJzYVdWeUlDb2djVnRwWFR0Y2JseHVJQ0J5WlhSMWNtNGdkRzkwWVd3N1hHNTlYRzVjYmk4cUtseHVJQ29nVTNWdGN5QjBhR1VnZG1WamRHOXlKM01nYVhSbGJYTXVYRzRnS2x4dUlDb2dRSEJoY21GdElIdFdaV04wYjNKOUlIWWdWR2hsSUhabFkzUnZjaUIwYnlCaVpTQnpkVzF0WldRdVhHNGdLaUJBY21WMGRYSnVJSHR1ZFcxaVpYSjlJRlJvWlNCMlpXTjBiM0luY3lCcGRHVnRjeUJ6ZFcwdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdsMFpXMXpVM1Z0S0hZNklGWmxZM1J2Y2lrNklHNTFiV0psY2lCN1hHNGdJR3hsZENCMGIzUmhiQ0E5SURBN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCMkxteGxibWQwYURzZ0t5dHBLVnh1SUNBZ0lIUnZkR0ZzSUNzOUlIWmJhVjA3WEc1Y2JpQWdjbVYwZFhKdUlIUnZkR0ZzTzF4dWZWeHVYRzR2S2lwY2JpQXFJRk4xY1dGeVpYTWdkR2hsSUhabFkzUnZjaWR6SUdsMFpXMXpMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdWbVZqZEc5eWZTQjJJRlJvWlNCMlpXTjBiM0lnZEc4Z2MzRjFZWEpsTGx4dUlDb2dRSEpsZEhWeWJpQjdWbVZqZEc5eWZTQkJJRzVsZHlCMlpXTjBiM0lnWTI5dWRHRnBibWx1WnlCMGFHVWdiM0pwWjJsdVlXd25jeUJwZEdWdGN5QnpjWFZoY21Wa0xseHVJQ292WEc1bWRXNWpkR2x2YmlCMlpXTjBiM0pUY1hWaGNtVW9kam9nVm1WamRHOXlLVG9nVm1WamRHOXlJSHRjYmlBZ1kyOXVjM1FnYmtsMFpXMXpJRDBnZGk1c1pXNW5kR2c3WEc0Z0lHTnZibk4wSUhSdmRHRnNJRDBnYm1WM0lGWmxZM1J2Y2lodVNYUmxiWE1wTzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnZGk1c1pXNW5kR2c3SUNzcmFTbGNiaUFnSUNCMGIzUmhiRnRwWFNBOUlIWmJhVjBnS2lCMlcybGRPMXh1WEc0Z0lISmxkSFZ5YmlCMGIzUmhiRHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIWmxZM1J2Y2t4bGJtZDBhQ2gyT2lCV1pXTjBiM0lwT2lCdWRXMWlaWElnZTF4dUlDQnNaWFFnYzNGeVUzVnRPaUJ1ZFcxaVpYSWdQU0F3TzF4dUlDQm1iM0lnS0d4bGRDQnBPaUJ1ZFcxaVpYSWdQU0F3T3lCcElEd2dkaTVzWlc1bmRHZzdJR2tyS3lsY2JpQWdJQ0J6Y1hKVGRXMGdLejBnZGx0cFhTQXFJSFpiYVYwN1hHNGdJSEpsZEhWeWJpQk5ZWFJvTG5OeGNuUW9jM0Z5VTNWdEtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhabFkzUnZja1J2ZEZCeWIyUjFZM1FvZGpFNklGWmxZM1J2Y2l3Z2RqSTZJRlpsWTNSdmNpazZJRzUxYldKbGNpQjdYRzRnSUdsbUlDaDJNUzVzWlc1bmRHZ2dJVDBnZGpJdWJHVnVaM1JvS1Z4dUlDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpZ25WR2hsSUdScGJXVnVjMmx2Ym1Gc2FYUjVJRzltSUhSb1pTQjJaV04wYjNKeklHMTFjM1FnYldGMFkyZ25LVHRjYmlBZ2JHVjBJSEJ5YjJRNklHNTFiV0psY2lBOUlEQTdYRzRnSUdadmNpQW9iR1YwSUdrNklHNTFiV0psY2lBOUlEQTdJR2tnUENCMk1TNXNaVzVuZEdnN0lHa3JLeWxjYmlBZ0lDQndjbTlrSUNzOUlIWXhXMmxkSUNvZ2RqSmJhVjA3WEc0Z0lISmxkSFZ5YmlCd2NtOWtPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFTnlaV0YwWlhNZ1lTQnRZWFJ5YVhnZ1ptbHNiR1ZrSUhkcGRHZ2djbUZ1Wkc5dElHWnNiMkYwYVc1bklIQnZhVzUwSUhaaGJIVmxjeTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnWkdsdFpXNXphVzl1TVNCVWFHVWdabWx5YzNRZ1pHbHRaVzV6YVc5dUlHOW1JSFJvWlNCdFlYUnlhWGd1WEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1pHbHRaVzV6YVc5dU1pQlVhR1VnYzJWamIyNWtJR1JwYldWdWMybHZiaUJ2WmlCMGFHVWdiV0YwY21sNExseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRnR6WTJGc1pUMHhMbDBnVFdGNElIWmhiSFZsSUdkcGRtVnVJR0o1SUhKaGJtUnZiU0JuWlc1bGNtRjBiM0l1WEc0Z0tpQkFjbVYwZFhKdUlIdE5ZWFJ5YVhoOUlFRWdibVYzSUcxaGRISnBlQ0JtYVd4c1pXUWdkMmwwYUNCeVlXNWtiMjBnWm14dllYUnBibWNnY0c5cGJuUWdJSFpoYkhWbGN5NWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdacGJHeFNZVzVrYjIxTllYUnlhWGdvWkdsdFpXNXphVzl1TVRvZ2JuVnRZbVZ5TENCa2FXMWxibk5wYjI0eU9pQnVkVzFpWlhJc0lITmpZV3hsT2lCdWRXMWlaWElnUFNBeExpazZJRTFoZEhKcGVDQjdYRzRnSUdOdmJuTjBJRzFoZEhKcGVDQTlJR2x1YVhSRGIyOXlaR2x1WVhSbGN5aGthVzFsYm5OcGIyNHhMQ0JrYVcxbGJuTnBiMjR5S1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdScGJXVnVjMmx2YmpFN0lDc3JhU2tnZTF4dUlDQWdJR1p2Y2lBb2JHVjBJR29nUFNBd095QnFJRHdnWkdsdFpXNXphVzl1TWpzZ0t5dHFLVnh1SUNBZ0lDQWdiV0YwY21sNFcybGRXMnBkSUQwZ2NtRnVaRzl0Um14dllYUW9jMk5oYkdVcE8xeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCdFlYUnlhWGc3WEc1OVhHNWNiaThxS2x4dUlDb2dRMkZzWTNWc1lYUmxjeUJGZFdOc2FXUmxZVzRnWkdsemRHRnVZMlVnWW1WMGQyVmxiaUIwZDI4Z2RtVmpkRzl5Y3k1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y24wZ2NDQlVhR1VnWm1seWMzUWdkbVZqZEc5eUxseHVJQ29nUUhCaGNtRnRJSHRXWldOMGIzSjlJSEVnVkdobElITmxZMjl1WkNCMlpXTjBiM0l1WEc0Z0tpQkFjbVYwZFhKdUlIdHVkVzFpWlhKOUlFVjFZMnhwWkdWaGJpQmthWE4wWVc1alpTQmlaWFIzWldWdUlIUm9aU0JuYVhabGJpQjJaV04wYjNKekxseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWTJGc1kzVnNZWFJsUlhWamJHbGtaV0Z1UkdsemRHRnVZMlVvY0RvZ1ZtVmpkRzl5TENCeE9pQldaV04wYjNJcE9pQnVkVzFpWlhJZ2UxeHVJQ0JzWlhRZ2NtVnpkV3gwSUQwZ01EdGNiaUFnWTI5dWMzUWdiR1Z1SUQwZ2NDNXNaVzVuZEdnN1hHNWNiaUFnYVdZZ0tHeGxiaUFoUFQwZ2NTNXNaVzVuZEdncFhHNGdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLQ2RVYUdVZ1pHbHRaVzV6YVc5dVlXeHBkSGtnYjJZZ2RHaGxJSFpsWTNSdmNuTWdiWFZ6ZENCdFlYUmphQ2NwTzF4dUlDQmNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCc1pXNDdJQ3NyYVNsY2JpQWdJQ0J5WlhOMWJIUWdLejBnS0hCYmFWMGdMU0J4VzJsZEtTQXFLaUF5TzF4dUlDQmNiaUFnY21WMGRYSnVJRTFoZEdndWMzRnlkQ2h5WlhOMWJIUXBPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFTnlaV0YwWlhNZ1lTQmthWE4wWVc1alpTQnRZWFJ5YVhnZ2RYTnBibWNnWVNCamRYTjBiMjBnWkdsemRHRnVZMlVnWm5WdVkzUnBiMjR1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FIQmhjbUZ0SUh0V1pXTjBiM0p6ZlNCa1lYUmhJRWx1Y0hWMElIWmxZM1J2Y25NZ2RHOGdZMkZzWTNWc1lYUmxJR1JwYzNSaGJtTmxjeTVjYmlBcUlFQndZWEpoYlNCN1JHbHpkR0Z1WTJWTlpYUnlhV045SUdScGMzUmhibU5sSUVOMWMzUnZiU0JrYVhOMFlXNWpaU0JtZFc1amRHbHZiaTVjYmlBcUlFQnlaWFIxY200Z2UwMWhkSEpwZUgwZ1EyRnNZM1ZzWVhSbFpDQmpkWE4wYjIwZ1pHbHpkR0Z1WTJVZ2JXRjBjbWw0TGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdZMkZzWTBScGMzUmhibU5sVFdGMGNtbDRLR1JoZEdFNklGWmxZM1J2Y25Nc0lHUnBjM1JoYm1ObE9pQkVhWE4wWVc1alpVMWxkSEpwWXlrNklFMWhkSEpwZUNCN1hHNGdJR052Ym5OMElHNUpkR1Z0Y3lBOUlHUmhkR0V1YkdWdVozUm9PMXh1SUNCamIyNXpkQ0J0WVhSeWFYZ2dQU0JwYm1sMFEyOXZjbVJwYm1GMFpYTW9ia2wwWlcxekxDQnVTWFJsYlhNc0lEQXBPMXh1WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dia2wwWlcxek95QXJLMmtwSUh0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JxSUQwZ2FTQXJJREU3SUdvZ1BDQnVTWFJsYlhNN0lDc3JhaWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdaRG9nYm5WdFltVnlJRDBnS0dSaGRHRmJhVjBnUFQwZ2JuVnNiQ2tnZkh3Z0tHUmhkR0ZiYWwwZ1BUMGdiblZzYkNrZ1B5QXdJRG9nWkdsemRHRnVZMlVvWkdGMFlWdHBYU3dnWkdGMFlWdHFYU2s3WEc0Z0lDQWdJQ0J0WVhSeWFYaGJhVjFiYWwwZ1BTQnRZWFJ5YVhoYmFsMWJhVjBnUFNCa08xeHVJQ0FnSUgxY2JpQWdmVnh1SUNCeVpYUjFjbTRnYldGMGNtbDRPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFTnlaV0YwWlhNZ1lTQmthWE4wWVc1alpTQnRZWFJ5YVhnZ2RYTnBibWNnWVNCamRYTjBiMjBnWkdsemRHRnVZMlVnWm5WdVkzUnBiMjR1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FIQmhjbUZ0SUh0V1pXTjBiM0p6ZlNCa1lYUmhJRWx1Y0hWMElIWmxZM1J2Y25NZ2RHOGdZMkZzWTNWc1lYUmxJR1JwYzNSaGJtTmxjeTVjYmlBcUlFQndZWEpoYlNCN1JHbHpkR0Z1WTJWTlpYUnlhV045SUdScGMzUmhibU5sSUVOMWMzUnZiU0JrYVhOMFlXNWpaU0JtZFc1amRHbHZiaTVjYmlBcUlFQnlaWFIxY200Z2UwMWhkSEpwZUgwZ1EyRnNZM1ZzWVhSbFpDQmpkWE4wYjIwZ1pHbHpkR0Z1WTJVZ2JXRjBjbWw0TGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdZMkZzWTA1dmNtMWhiR2w2WldSRWFYTjBZVzVqWlUxaGRISnBlQ2hrWVhSaE9pQldaV04wYjNKekxDQmthWE4wWVc1alpUb2dSR2x6ZEdGdVkyVk5aWFJ5YVdNcE9pQk5ZWFJ5YVhnZ2UxeHVJQ0JqYjI1emRDQnVTWFJsYlhNZ1BTQmtZWFJoTG14bGJtZDBhRHRjYmlBZ1kyOXVjM1FnYldGMGNtbDRJRDBnYVc1cGRFTnZiM0prYVc1aGRHVnpLRzVKZEdWdGN5d2dia2wwWlcxekxDQXdLVHRjYmlBZ2JHVjBJRzFoZUNBOUlFNTFiV0psY2k1TlNVNWZWa0ZNVlVVN1hHNGdJR3hsZENCdGFXNGdQU0JPZFcxaVpYSXVUVUZZWDFaQlRGVkZPMXh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHNUpkR1Z0Y3pzZ0t5dHBLU0I3WEc0Z0lDQWdabTl5SUNoc1pYUWdhaUE5SUdrN0lHb2dQQ0J1U1hSbGJYTTdJQ3NyYWlrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWkRvZ2JuVnRZbVZ5SUQwZ0tHUmhkR0ZiYVYwZ1BUMGdiblZzYkNrZ2ZId2dLR1JoZEdGYmFsMGdQVDBnYm5Wc2JDQjhmQ0JwSUQwOVBTQnFLU0EvSURBZ09pQmthWE4wWVc1alpTaGtZWFJoVzJsZExDQmtZWFJoVzJwZEtUdGNiaUFnSUNBZ0lHMWhkSEpwZUZ0cFhWdHFYU0E5SUcxaGRISnBlRnRxWFZ0cFhTQTlJR1E3WEc0Z0lDQWdJQ0JwWmlBb1pDQStJRzFoZUNrZ2JXRjRJRDBnWkR0Y2JpQWdJQ0FnSUdsbUlDaGtJRHdnYldsdUtTQnRhVzRnUFNCa08xeHVJQ0FnSUgxY2JpQWdmVnh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHNUpkR1Z0Y3pzZ0t5dHBLU0I3WEc0Z0lDQWdabTl5SUNoc1pYUWdhaUE5SUdrZ0t5QXhPeUJxSUR3Z2JrbDBaVzF6T3lBcksyb3BYRzRnSUNBZ0lDQnRZWFJ5YVhoYmFWMWJhbDBnUFNCdFlYUnlhWGhiYWwxYmFWMGdQU0FvYldGMGNtbDRXMmxkVzJwZElDMGdiV2x1S1NBdklDaHRZWGdnTFNCdGFXNHBPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnRZWFJ5YVhnN1hHNTlYRzVjYmk4cUtpQkhaVzVsY21GMFpYTWdZWEp5WVhrZ1puSnZiU0JoSUhKaGJtZGxJRnRpWldkcGJqc2daVzVrWFNCdmNpQmJZbVZuYVc0N0lHVnVaQ2tnYVdZZ1pXNWtSWGhqYkhWemFYWmxMaUFxS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCblpXNVNZVzVuWlNoaVpXZHBiam9nYm5WdFltVnlMQ0JsYm1RNklHNTFiV0psY2l3Z1pXNWtSWGhqYkhWemFYWmxJRDBnWm1Gc2MyVXBPaUJKYm5Rek1rRnljbUY1SUh0Y2JpQWdZMjl1YzNRZ2JrbDBaVzF6SUQwZ1pXNWtJQzBnWW1WbmFXNGdLeUFvWlc1a1JYaGpiSFZ6YVhabElEOGdNQ0E2SURFcE8xeHVJQ0JqYjI1emRDQnpaWEpwWlhNZ1BTQnVaWGNnU1c1ME16SkJjbkpoZVNodVNYUmxiWE1wTzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnYmtsMFpXMXpPeUFySzJrcFhHNGdJQ0FnYzJWeWFXVnpXMmxkSUQwZ1ltVm5hVzRnS3lCcE8xeHVYRzRnSUhKbGRIVnliaUJ6WlhKcFpYTTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1VtVjBkWEp1Y3lCdmNtUmxjaUJ2WmlCMllXeDFaWE1nWVhNZ2FXWWdkR2hsZVNCaGNtVWdjMjl5ZEdWa0xseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdZVzU1VzExOUlIWmhiSFZsY3lCSmJuQjFkQ0JoY25KaGVTNWNiaUFxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnVzNKbGRtVnljMlU5Wm1Gc2MyVmRJRmRvWlhSb1pYSWdkRzhnY21WMGRYSnVJSEpsZG1WeWMyVmtJRzl5WkdWeUxseHVJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlXMTE5SUZSb1pTQnZjbVJsY2lCamIyMXdkWFJsWkM1Y2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR0Z5WjFOdmNuUW9kbUZzZFdWek9pQmhibmxiWFN3Z2NtVjJaWEp6WlNBOUlHWmhiSE5sS1RvZ2JuVnRZbVZ5VzEwZ2UxeHVJQ0JqYjI1emRDQnpiM0owWm00Z1BTQnlaWFpsY25ObElEOGdLR0U2SUdGdWVWdGRMQ0JpT2lCaGJubGJYU2tnUFQ0Z0tHSmJNRjBnTFNCaFd6QmRLU0E2SUNoaE9pQmhibmxiWFN3Z1lqb2dZVzU1VzEwcElEMCtJQ2hoV3pCZElDMGdZbHN3WFNrN1hHNGdJR052Ym5OMElHUmxZMjl5SUQwZ0tIWTZJR0Z1ZVN3Z2FUb2diblZ0WW1WeUtTQTlQaUJiZGl3Z2FWMDdJQzh2SUhObGRDQnBibVJsZUNCMGJ5QjJZV3gxWlZ4dUlDQmpiMjV6ZENCMWJtUmxZMjl5SUQwZ0tHRTZJR0Z1ZVZ0ZEtTQTlQaUJoV3pGZE95QXZMeUJzWldGMlpTQnZibXg1SUdsdVpHVjRYRzRnSUdOdmJuTjBJRjloY21kemIzSjBJRDBnS0dGeWNqb2dZVzU1VzEwcElEMCtJR0Z5Y2k1dFlYQW9aR1ZqYjNJcExuTnZjblFvYzI5eWRHWnVLUzV0WVhBb2RXNWtaV052Y2lrN1hHNGdJSEpsZEhWeWJpQmZZWEpuYzI5eWRDaDJZV3gxWlhNcE8xeHVmVnh1WEc0dktpcGNiaUFxSUZKbGRIVnlibk1nZEdobElHbHVaR1Y0WlhNZ2IyWWdkR2hsSUcxdmMzUWdaR2wyWlhKelpTQnZZbXBsWTNSeklHRmpZMjl5WkdsdVp5QjBieUIwYUdVZ1pHbHpkQ0JtZFc1amRHbHZibHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUd4bGJtZDBhQ0IwYjNSaGJDQnVkVzFpWlhJZ2IyWWdiMkpxWldOMGMxeHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRzRnYm5WdFltVnlJRzltSUdScGRtVnljMlVnWld4bGJXVnVkSE1nZEc4Z1ptbHVaRnh1SUNvZ1FIQmhjbUZ0SUhzb2FURTZJRzUxYldKbGNpd2dhVEk2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5ZlNCa2FYTjBJR0VnWm5WdVkzUnBiMjRnZDJocFkyZ2dZMkZzWTNWc1lYUmxjeUJrYVhOMFlXNWpaU0JpWlhSM1pXVnVYRzRnS2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkSGR2SUc5aWFtVmpkSE1nZFhOcGJtY2dkR2hsYVhJZ2FXNWtaWGhsYzF4dUlDb2dRSEpsZEhWeWJuTWdlMjUxYldKbGNsdGRmU0JVYUdVZ2FXNWtaWGhsY3lCdlppQjBhR1VnYlc5emRDQmthWFpsY25ObElHOWlhbVZqZEhOY2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2RsZEVScGRtVnljMlZUZFdKelpYUW9iR1Z1WjNSb09pQnVkVzFpWlhJc0lHNDZJRzUxYldKbGNpd2daR2x6ZERvZ0tHa3hPaUJ1ZFcxaVpYSXNJR2t5T2lCdWRXMWlaWElwSUQwK0lHNTFiV0psY2lrNklHNTFiV0psY2x0ZElIdGNiaUFnWm5WdVkzUnBiMjRnYldGNFFua29kbUZzZFdWek9pQkpkR1Z5WVdKc1pVbDBaWEpoZEc5eVBHNTFiV0psY2o0c0lHOXlaR1Z5UW5rNklDaHBPaUJ1ZFcxaVpYSXBJRDArSUc1MWJXSmxjaWtnZTF4dUlDQWdJR3hsZENCdFlYaFdZV3gxWlNBOUlHNTFiR3c3WEc0Z0lDQWdiR1YwSUcxaGVFOXlaR1Z5UW5rZ1BTQnVkV3hzTzF4dVhHNGdJQ0FnWm05eUlDaGpiMjV6ZENCbGJHVnRaVzUwSUc5bUlIWmhiSFZsY3lrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWld4bGJXVnVkRTl5WkdWeVFua2dQU0J2Y21SbGNrSjVLR1ZzWlcxbGJuUXBPMXh1SUNBZ0lDQWdhV1lnS0cxaGVFOXlaR1Z5UW5rZ1BUMGdiblZzYkNCOGZDQmxiR1Z0Wlc1MFQzSmtaWEpDZVNBK0lHMWhlRTl5WkdWeVFua3BJSHRjYmlBZ0lDQWdJQ0FnYldGNFZtRnNkV1VnUFNCbGJHVnRaVzUwTzF4dUlDQWdJQ0FnSUNCdFlYaFBjbVJsY2tKNUlEMGdaV3hsYldWdWRFOXlaR1Z5UW5rN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnRZWGhXWVd4MVpUdGNiaUFnZlZ4dVhHNGdJR052Ym5OMElITjFZbk5sZENBOUlGdHlZVzVrYjIxSmJuUW9iR1Z1WjNSb0lDMGdNU2xkTzF4dUlDQmpiMjV6ZENCamIyMXdiR1Z0Wlc1MElEMGdibVYzSUZObGRDZ3BPMXh1WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2diR1Z1WjNSb095QXJLMmtwSUh0Y2JpQWdJQ0JwWmlBb0lYTjFZbk5sZEM1cGJtTnNkV1JsY3locEtTbGNiaUFnSUNBZ0lHTnZiWEJzWlcxbGJuUXVZV1JrS0drcE8xeHVJQ0I5WEc1Y2JpQWdkMmhwYkdVZ0tITjFZbk5sZEM1c1pXNW5kR2dnUENCdUtTQjdYRzRnSUNBZ1kyOXVjM1FnYVdSNElEMGdiV0Y0UW5rb1hHNGdJQ0FnSUNCamIyMXdiR1Z0Wlc1MExuWmhiSFZsY3lncElHRnpJRWwwWlhKaFlteGxTWFJsY21GMGIzSThiblZ0WW1WeVBpeGNiaUFnSUNBZ0lDaHBLU0E5UGlCTllYUm9MbTFwYmk1aGNIQnNlU2hOWVhSb0xDQnpkV0p6WlhRdWJXRndLR1oxYm1OMGFXOXVLSFpoYkN3Z2FXNWtaWGdwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdScGMzUW9hU3dnZG1Gc0tUdGNiaUFnSUNBZ0lIMHBLU2s3WEc0Z0lDQWdhV1lnS0dsa2VDa2dlMXh1SUNBZ0lDQWdjM1ZpYzJWMExuQjFjMmdvYVdSNEtUdGNiaUFnSUNBZ0lHTnZiWEJzWlcxbGJuUXVaR1ZzWlhSbEtHbGtlQ2s3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJSEpsZEhWeWJpQnpkV0p6WlhRN1hHNTlYRzVjYmk4cUtseHVJQ29nVW1WMGRYSnVjeUJ1YjNKdFlXeHBlbVZrSUhabFkzUnZjaTVjYmlBcUlGeHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FIQmhjbUZ0SUh0V1pXTjBiM0o5SUdSaGRHRWdiblZ0WlhKcFkyRnNJR0Z5Y21GNVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ1YjNKdFlXeHBlbVVvWkdGMFlUb2dWbVZqZEc5eUtUb2dWbVZqZEc5eUlIdGNiaUFnWTI5dWMzUWdiR1Z1SUQwZ1pHRjBZUzVzWlc1bmRHZzdYRzRnSUd4bGRDQnpkVzBnUFNBd08xeHVJQ0JzWlhRZ2MzVnRUMlpUY1hWaGNtVnpJRDBnTUR0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUd4bGJqc2dLeXRwS1NCN1hHNGdJQ0FnYzNWdElDczlJR1JoZEdGYmFWMDdYRzRnSUNBZ2MzVnRUMlpUY1hWaGNtVnpJQ3M5SUdSaGRHRmJhVjBnS2lvZ01qdGNiaUFnZlZ4dVhHNGdJR052Ym5OMElHMWxZVzRnUFNCemRXMGdMeUJzWlc0N1hHNGdJR052Ym5OMElITjBaRVJsZGtsdWRtVnljMlVnUFNBeExqQWdMeUJOWVhSb0xuTnhjblFvYzNWdFQyWlRjWFZoY21WeklDOGdiR1Z1SUMwZ2JXVmhiaUFxS2lBeUtUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHeGxianNnS3l0cEtWeHVJQ0FnSUdSaGRHRmJhVjBnUFNBb1pHRjBZVnRwWFNBdElHMWxZVzRwSUNvZ2MzUmtSR1YyU1c1MlpYSnpaVHRjYmx4dUlDQnlaWFIxY200Z1pHRjBZVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkdhVzVrY3lCelpYUWdaR2xtWm1WeVpXNWpaU0JpWlhSM1pXVnVJSFIzYnlCc2FYTjBjeTVjYmlBcUlFQndZWEpoYlNCN1lXNTVXMTE5SUdFZ1ZHaGxJR1pwY25OMElHeHBjM1F1WEc0Z0tpQkFjR0Z5WVcwZ2UyRnVlVnRkZlNCaUlGUm9aU0J6WldOdmJtUWdiR2x6ZEM1Y2JpQXFJRUJ5WlhSMWNtNGdlMkZ1ZVZ0ZGZWeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYzJWMFJHbG1abVZ5Wlc1alpTaGhPaUJoYm5sYlhTd2dZam9nWVc1NVcxMHBPaUJoYm5sYlhTQjdYRzRnSUdOdmJuTjBJR0pUWlhRZ1BTQnVaWGNnVTJWMEtHSXBPMXh1SUNCeVpYUjFjbTRnUVhKeVlYa3Vabkp2YlNodVpYY2dVMlYwS0dFdVptbHNkR1Z5S0NoNEtTQTlQaUFoWWxObGRDNW9ZWE1vZUNrcEtTNTJZV3gxWlhNb0tTazdYRzU5WEc0aVhYMD0iLCJpbXBvcnQgKiBhcyBmbCBmcm9tICdmYXN0ZXN0LWxldmVuc2h0ZWluJztcbmltcG9ydCB7IGphcm9XaW5rbGVyIH0gZnJvbSAnamFyby13aW5rbGVyLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgYXN5bW1ldHJpY0Rpc3RhbmNlLCBicmF1bkJsYW5xdWV0RGlzdGFuY2UsIGNvc2luZURpc3RhbmNlLCBkaWNlRGlzdGFuY2UsIGV1Y2xpZGVhbkRpc3RhbmNlLCBoYW1taW5nRGlzdGFuY2UsIGt1bGN6eW5za2lEaXN0YW5jZSwgbWNDb25uYXVnaGV5RGlzdGFuY2UsIHJvZ290R29sZGJlcmdEaXN0YW5jZSwgcnVzc2VsRGlzdGFuY2UsIHNva2FsRGlzdGFuY2UsIHRhbmltb3RvRGlzdGFuY2UsIG51bWVyaWNEaXN0YW5jZSwgdGFuaW1vdG9EaXN0YW5jZUludEFycmF5LCBpbnZlcnNlQ29tbW9uSXRlbXNDb3VudCwgfSBmcm9tICcuLi9kaXN0YW5jZS1tZXRyaWNzLW1ldGhvZHMnO1xuaW1wb3J0IHsgY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5pbXBvcnQgeyBtbURpc3RhbmNlRnVuY3Rpb25zLCBNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMgfSBmcm9tICcuLi9tYWNyb21vbGVjdWxlLWRpc3RhbmNlLWZ1bmN0aW9ucyc7XG5pbXBvcnQgeyBEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cywgQml0QXJyYXlNZXRyaWNzTmFtZXMsIFN0cmluZ01ldHJpY3NOYW1lcywgVmVjdG9yTWV0cmljc05hbWVzLCBOdW1iZXJNZXRyaWNzTmFtZXMsIEludEFycmF5TWV0cmljc05hbWVzLCBOdW1iZXJBcnJheU1ldHJpY3NOYW1lcyB9IGZyb20gJy4vY29uc3RzJztcbmV4cG9ydCBjb25zdCB2ZWN0b3JEaXN0YW5jZU1ldHJpY3NNZXRob2RzID0ge1xuICAgIFtWZWN0b3JNZXRyaWNzTmFtZXMuRXVjbGlkZWFuXTogY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UsXG59O1xuZXhwb3J0IGNvbnN0IHN0cmluZ0Rpc3RhbmNlTWV0cmljc01ldGhvZHMgPSB7XG4gICAgW1N0cmluZ01ldHJpY3NOYW1lcy5MZXZlbnNodGVpbl06IGZsLmRpc3RhbmNlLFxuICAgIFtTdHJpbmdNZXRyaWNzTmFtZXMuSmFyb1dpbmtsZXJdOiBqYXJvV2lua2xlcixcbiAgICBbU3RyaW5nTWV0cmljc05hbWVzLk1hbmhhdHRhbl06IG1hbmhhdHRhbkRpc3RhbmNlLFxuICAgIFtTdHJpbmdNZXRyaWNzTmFtZXMuT25laG90XTogY2F0ZWdvcmljYWxEaXN0YW5jZSxcbn07XG5leHBvcnQgY29uc3QgYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzID0ge1xuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5UYW5pbW90b106IHRhbmltb3RvRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkRpY2VdOiBkaWNlRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkFzeW1tZXRyaWNdOiBhc3ltbWV0cmljRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkJyYXVuQmxhbnF1ZXRdOiBicmF1bkJsYW5xdWV0RGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkNvc2luZV06IGNvc2luZURpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5LdWxjenluc2tpXToga3VsY3p5bnNraURpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5NY0Nvbm5hdWdoZXldOiBtY0Nvbm5hdWdoZXlEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuUm9nb3RHb2xkYmVyZ106IHJvZ290R29sZGJlcmdEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuUnVzc2VsXTogcnVzc2VsRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlNva2FsXTogc29rYWxEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuSGFtbWluZ106IGhhbW1pbmdEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuRXVjbGlkZWFuXTogZXVjbGlkZWFuRGlzdGFuY2UsXG59O1xuZXhwb3J0IGNvbnN0IGludEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kcyA9IHtcbiAgICBbSW50QXJyYXlNZXRyaWNzTmFtZXMuVGFuaW1vdG9JbnRBcnJheV06IHRhbmltb3RvRGlzdGFuY2VJbnRBcnJheSxcbn07XG5leHBvcnQgY29uc3QgbnVtYmVyRGlzdGFuY2VNZXRyaWNzTWV0aG9kcyA9IHtcbiAgICBbTnVtYmVyTWV0cmljc05hbWVzLkRpZmZlcmVuY2VdOiBudW1lcmljRGlzdGFuY2UsXG59O1xuZXhwb3J0IGNvbnN0IG51bWJlckFycmF5RGlzdGFuY2VNZXRyaWNzID0ge1xuICAgIFtOdW1iZXJBcnJheU1ldHJpY3NOYW1lcy5Db21tb25JdGVtc106IGludmVyc2VDb21tb25JdGVtc0NvdW50LFxufTtcbmV4cG9ydCBjb25zdCBBdmFpbGFibGVNZXRyaWNzID0ge1xuICAgIFtEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cy5WZWN0b3JdOiB7XG4gICAgICAgIFtWZWN0b3JNZXRyaWNzTmFtZXMuRXVjbGlkZWFuXTogdmVjdG9yRGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tWZWN0b3JNZXRyaWNzTmFtZXMuRXVjbGlkZWFuXSxcbiAgICB9LFxuICAgIFtEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cy5TdHJpbmddOiB7XG4gICAgICAgIFtTdHJpbmdNZXRyaWNzTmFtZXMuTGV2ZW5zaHRlaW5dOiBzdHJpbmdEaXN0YW5jZU1ldHJpY3NNZXRob2RzW1N0cmluZ01ldHJpY3NOYW1lcy5MZXZlbnNodGVpbl0sXG4gICAgICAgIFtTdHJpbmdNZXRyaWNzTmFtZXMuSmFyb1dpbmtsZXJdOiBzdHJpbmdEaXN0YW5jZU1ldHJpY3NNZXRob2RzW1N0cmluZ01ldHJpY3NOYW1lcy5KYXJvV2lua2xlcl0sXG4gICAgICAgIFtTdHJpbmdNZXRyaWNzTmFtZXMuTWFuaGF0dGFuXTogc3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tTdHJpbmdNZXRyaWNzTmFtZXMuTWFuaGF0dGFuXSxcbiAgICAgICAgW1N0cmluZ01ldHJpY3NOYW1lcy5PbmVob3RdOiBzdHJpbmdEaXN0YW5jZU1ldHJpY3NNZXRob2RzW1N0cmluZ01ldHJpY3NOYW1lcy5PbmVob3RdLFxuICAgIH0sXG4gICAgW0Rpc3RhbmNlTWV0cmljc1N1YmplY3RzLkJpdEFycmF5XToge1xuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuVGFuaW1vdG9dOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuVGFuaW1vdG9dLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuRGljZV06IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5EaWNlXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkFzeW1tZXRyaWNdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuQXN5bW1ldHJpY10sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5CcmF1bkJsYW5xdWV0XTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLkJyYXVuQmxhbnF1ZXRdLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuQ29zaW5lXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLkNvc2luZV0sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5LdWxjenluc2tpXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLkt1bGN6eW5za2ldLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuTWNDb25uYXVnaGV5XTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLk1jQ29ubmF1Z2hleV0sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Sb2dvdEdvbGRiZXJnXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLlJvZ290R29sZGJlcmddLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuUnVzc2VsXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLlJ1c3NlbF0sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Tb2thbF06IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5Tb2thbF0sXG4gICAgfSxcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuTWFjcm9Nb2xlY3VsZV06IHtcbiAgICAgICAgW01tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5IQU1NSU5HXTogbW1EaXN0YW5jZUZ1bmN0aW9uc1tNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMuSEFNTUlOR10sXG4gICAgICAgIFtNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMuTEVWRU5TSFRFSU5dOiBtbURpc3RhbmNlRnVuY3Rpb25zW01tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5MRVZFTlNIVEVJTl0sXG4gICAgICAgIFtNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMuTkVFRExFTUFOTl9XVU5TQ0hdOiBtbURpc3RhbmNlRnVuY3Rpb25zW01tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5ORUVETEVNQU5OX1dVTlNDSF0sXG4gICAgICAgIFtNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMuTU9OT01FUl9DSEVNSUNBTF9ESVNUQU5DRV06IG1tRGlzdGFuY2VGdW5jdGlvbnNbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLk1PTk9NRVJfQ0hFTUlDQUxfRElTVEFOQ0VdLFxuICAgIH0sXG4gICAgW0Rpc3RhbmNlTWV0cmljc1N1YmplY3RzLk51bWJlcl06IHtcbiAgICAgICAgW051bWJlck1ldHJpY3NOYW1lcy5EaWZmZXJlbmNlXTogbnVtYmVyRGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tOdW1iZXJNZXRyaWNzTmFtZXMuRGlmZmVyZW5jZV0sXG4gICAgfSxcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuSW50QXJyYXldOiB7XG4gICAgICAgIFtJbnRBcnJheU1ldHJpY3NOYW1lcy5UYW5pbW90b0ludEFycmF5XTogaW50QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0ludEFycmF5TWV0cmljc05hbWVzLlRhbmltb3RvSW50QXJyYXldLFxuICAgIH0sXG4gICAgW0Rpc3RhbmNlTWV0cmljc1N1YmplY3RzLk51bWJlckFycmF5XToge1xuICAgICAgICBbTnVtYmVyQXJyYXlNZXRyaWNzTmFtZXMuQ29tbW9uSXRlbXNdOiBudW1iZXJBcnJheURpc3RhbmNlTWV0cmljc1tOdW1iZXJBcnJheU1ldHJpY3NOYW1lcy5Db21tb25JdGVtc10sXG4gICAgfSxcbn07XG5leHBvcnQgY29uc3QgTWV0cmljVG9EYXRhVHlwZSA9IE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3MpXG4gICAgLnJlZHVjZSgocmV0LCBrZXkpID0+IHtcbiAgICBmb3IgKGNvbnN0IHZhbCBvZiBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzW2tleV0pKVxuICAgICAgICByZXRbdmFsXSA9IGtleTtcbiAgICByZXR1cm4gcmV0O1xufSwge30pO1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nTWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSAnU3RyaW5nJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0JpdEFycmF5TWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSAnQml0QXJyYXknO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVmVjdG9yTWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSAnVmVjdG9yJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc01hY3JvTW9sZWN1bGVNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09IERpc3RhbmNlTWV0cmljc1N1YmplY3RzLk1hY3JvTW9sZWN1bGUudG9TdHJpbmcoKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc051bWVyaWNNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09IERpc3RhbmNlTWV0cmljc1N1YmplY3RzLk51bWJlci50b1N0cmluZygpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyQXJyYXlNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09IERpc3RhbmNlTWV0cmljc1N1YmplY3RzLk51bWJlckFycmF5LnRvU3RyaW5nKCk7XG59XG4vKiogTWFuaGF0dGFuIGRpc3RhbmNlIGJldHdlZW4gdHdvIHNlcXVlbmNlcyAobWF0Y2ggLSAwLCBtaXNtYXRjaCAtIDEpIG5vcm1hbGl6ZWQgZm9yIGxlbmd0aC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYW5oYXR0YW5EaXN0YW5jZShzMSwgczIpIHtcbiAgICBpZiAoczEubGVuZ3RoICE9PSBzMi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBsZXQgZGlzdCA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgczEubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICBkaXN0ICs9IHMxW2ldID09IHMyW2ldID8gMCA6IDE7XG4gICAgICAgIHJldHVybiBkaXN0IC8gczEubGVuZ3RoO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBjYXRlZ29yaWNhbERpc3RhbmNlKHMxLCBzMikge1xuICAgIHJldHVybiBzMSA9PT0gczIgPyAwIDogMTtcbn1cbi8qKiBVbmlmaWVkIGNsYXNzIGltcGxlbWVudGluZyBkaWZmZXJlbnQgc3RyaW5nIG1lYXN1cmVzLiAqL1xuZXhwb3J0IGNsYXNzIE1lYXN1cmUge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgTWVhc3VyZSB3aXRoIC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kIE1ldGhvZCB0byBjYWxjdWxhdGUgZGlzdGFuY2UgYmV0d2VlbiBzdHJpbmdzLlxuICAgICAqIEBtZW1iZXJvZiBNZWFzdXJlclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG1ldGhvZCkge1xuICAgICAgICB0aGlzLm1ldGhvZCA9IG1ldGhvZDtcbiAgICAgICAgdGhpcy5kYXRhVHlwZSA9IE1ldHJpY1RvRGF0YVR5cGVbbWV0aG9kXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBtZXRyaWMgbmVlZHMgYXJndW1lbnRzIHRvIGJlIGNhbGN1bGF0ZWQuXG4gICAgICogQHBhcmFtIHtLbm93bk1ldHJpY3N9IG1ldGhvZCBNZXRyaWMgdG8gY2hlY2sgaWYgaXQgbmVlZHMgYXJndW1lbnRzLlxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIG1ldHJpYyBuZWVkcyBhcmd1bWVudHMuXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVcbiAgICAgKi9cbiAgICBtZXRyaWNOZWVkc0FyZ3MobWV0aG9kKSB7XG4gICAgICAgIHJldHVybiBpc01hY3JvTW9sZWN1bGVNZXRyaWMobWV0aG9kKSB8fCBpc051bWVyaWNNZXRyaWMobWV0aG9kKSB8fCBpc051bWJlckFycmF5TWV0cmljKG1ldGhvZCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgY3VzdG9tIHN0cmluZyBkaXN0YW5jZSBmdW5jdGlvbiBzcGVjaWZpZWQuXG4gICAgICogQHBhcmFtIHtvcHRzfSBvcHRzIE9wdGlvbnMgZm9yIHRoZSBtZWFzdXJlLiB1c2VkIGZvciBtYWNyb21vbGVjdWxlIGRpc3RhbmNlc1xuICAgICAqIEByZXR1cm4ge0Rpc3RhbmNlTWV0cmljfSBDYWxsYmFjayBvZiB0aGUgbWVhc3VyZSBjaG9zZW4uXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgZ2V0TWVhc3VyZShvcHRzKSB7XG4gICAgICAgIGNvbnN0IGRpY3QgPSBBdmFpbGFibGVNZXRyaWNzO1xuICAgICAgICBpZiAoIWRpY3QuaGFzT3duUHJvcGVydHkodGhpcy5kYXRhVHlwZSkgfHwgIWRpY3RbdGhpcy5kYXRhVHlwZV0uaGFzT3duUHJvcGVydHkodGhpcy5tZXRob2QpKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIG1lYXN1cmUgJHt0aGlzLm1ldGhvZH0gZm9yIGRhdGEgdHlwZSAke3RoaXMuZGF0YVR5cGV9YCk7XG4gICAgICAgIHJldHVybiB0aGlzLm1ldHJpY05lZWRzQXJncyh0aGlzLm1ldGhvZCkgP1xuICAgICAgICAgICAgZGljdFt0aGlzLmRhdGFUeXBlXVt0aGlzLm1ldGhvZF0ob3B0cykgOlxuICAgICAgICAgICAgZGljdFt0aGlzLmRhdGFUeXBlXVt0aGlzLm1ldGhvZF07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgY3VzdG9tIHN0cmluZyBkaXN0YW5jZSBieSB0aGUgZ2l2ZW4gZGF0YSB0eXBlLlxuICAgICAqIEBwYXJhbSB7QXZhaWxhYmxlRGF0YVR5cGVzfSBkYXRhVHlwZSBNZXRyaWMncyBkYXRhIHR5cGVcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gTWV0cmljIG5hbWVzIHdoaWNoIGV4cGVjdHMgdGhlIGdpdmVuIGRhdGEgdHlwZVxuICAgICAqIEBtZW1iZXJvZiBNZWFzdXJlclxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRNZXRyaWNCeURhdGFUeXBlKGRhdGFUeXBlKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzW2RhdGFUeXBlXSk7XG4gICAgfVxuICAgIC8qKiBSZXR1cm5zIG1ldHJpYyBuYW1lcyBhdmFpbGFibGUuXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgc3RhdGljIGdldCBhdmFpbGFibGVNZWFzdXJlcygpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3MpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRIbHdaV1F0YldWMGNtbGpjeTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluUjVjR1ZrTFcxbGRISnBZM011ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRXNUMEZCVHl4TFFVRkxMRVZCUVVVc1RVRkJUU3h4UWtGQmNVSXNRMEZCUXp0QlFVTXhReXhQUVVGUExFVkJRVU1zVjBGQlZ5eEZRVUZETEUxQlFVMHNlVUpCUVhsQ0xFTkJRVU03UVVGRmNFUXNUMEZCVHl4RlFVTk1MR3RDUVVGclFpeEZRVU5zUWl4eFFrRkJjVUlzUlVGRGNrSXNZMEZCWXl4RlFVTmtMRmxCUVZrc1JVRkRXaXhwUWtGQmFVSXNSVUZEYWtJc1pVRkJaU3hGUVVObUxHdENRVUZyUWl4RlFVTnNRaXh2UWtGQmIwSXNSVUZEY0VJc2NVSkJRWEZDTEVWQlEzSkNMR05CUVdNc1JVRkRaQ3hoUVVGaExFVkJRMklzWjBKQlFXZENMRVZCUTJoQ0xHVkJRV1VzUlVGRFppeDNRa0ZCZDBJc1JVRkRlRUlzZFVKQlFYVkNMRWRCUTNoQ0xFMUJRVTBzTmtKQlFUWkNMRU5CUVVNN1FVRkZja01zVDBGQlR5eEZRVUZETERCQ1FVRXdRaXhGUVVGRExFMUJRVTBzYVVSQlFXbEVMRU5CUVVNN1FVRkhNMFlzVDBGQlR5eEZRVUZETEcxQ1FVRnRRaXhGUVVGRkxIZENRVUYzUWl4RlFVRkRMRTFCUVUwc2NVTkJRWEZETEVOQlFVTTdRVUZEYkVjc1QwRkJUeXhGUVVGRExIVkNRVUYxUWl4RlFVRkZMRzlDUVVGdlFpeEZRVU51UkN4clFrRkJhMElzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4dlFrRkJiMElzUlVGRGFFWXNkVUpCUVhWQ0xFVkJRVU1zVFVGQlRTeFZRVUZWTEVOQlFVTTdRVUZITTBNc1RVRkJUU3hEUVVGRExFMUJRVTBzTkVKQlFUUkNMRWRCUVhsRU8wbEJRMmhITEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVTBGQlV5eERRVUZETEVWQlFVVXNNRUpCUVRCQ08wTkJRek5FTEVOQlFVTTdRVUZGUml4TlFVRk5MRU5CUVVNc1RVRkJUU3cwUWtGQk5FSXNSMEZCZVVRN1NVRkRhRWNzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhYUVVGWExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNVVUZCVVR0SlFVTTNReXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRmRCUVZjc1EwRkJReXhGUVVGRkxGZEJRVmM3U1VGRE4wTXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eFRRVUZUTEVOQlFVTXNSVUZCUlN4cFFrRkJhVUk3U1VGRGFrUXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4dFFrRkJiVUk3UTBGRGFrUXNRMEZCUXp0QlFVVkdMRTFCUVUwc1EwRkJReXhOUVVGTkxEaENRVUU0UWl4SFFVRTJSRHRKUVVOMFJ5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExGRkJRVkVzUTBGQlF5eEZRVUZGTEdkQ1FVRm5RanRKUVVOcVJDeERRVUZETEc5Q1FVRnZRaXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEZsQlFWazdTVUZEZWtNc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4VlFVRlZMRU5CUVVNc1JVRkJSU3hyUWtGQmEwSTdTVUZEY2tRc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4aFFVRmhMRU5CUVVNc1JVRkJSU3h4UWtGQmNVSTdTVUZETTBRc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hqUVVGak8wbEJRemRETEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNhMEpCUVd0Q08wbEJRM0pFTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zV1VGQldTeERRVUZETEVWQlFVVXNiMEpCUVc5Q08wbEJRM3BFTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zWVVGQllTeERRVUZETEVWQlFVVXNjVUpCUVhGQ08wbEJRek5FTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNZMEZCWXp0SlFVTTNReXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRkxHRkJRV0U3U1VGRE0wTXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eFBRVUZQTEVOQlFVTXNSVUZCUlN4bFFVRmxPMGxCUXk5RExFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1UwRkJVeXhEUVVGRExFVkJRVVVzYVVKQlFXbENPME5CUTNCRUxFTkJRVU03UVVGRlJpeE5RVUZOTEVOQlFVTXNUVUZCVFN3NFFrRkJPRUlzUjBGQmJVVTdTVUZETlVjc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4blFrRkJaMElzUTBGQlF5eEZRVUZGTEhkQ1FVRjNRanREUVVOc1JTeERRVUZETzBGQlJVWXNUVUZCVFN4RFFVRkRMRTFCUVUwc05FSkJRVFJDTEVkQlFYZEZPMGxCUXk5SExFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1ZVRkJWU3hEUVVGRExFVkJRVVVzWlVGQlpUdERRVU5xUkN4RFFVRkRPMEZCUlVZc1RVRkJUU3hEUVVGRExFMUJRVTBzTUVKQlFUQkNMRWRCUTNGRU8wbEJRekZHTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zVjBGQlZ5eERRVUZETEVWQlFVVXNkVUpCUVhWQ08wTkJReTlFTEVOQlFVTTdRVUZGUml4TlFVRk5MRU5CUVVNc1RVRkJUU3huUWtGQlowSXNSMEZCUnp0SlFVTTVRaXhEUVVGRExIVkNRVUYxUWl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRk8xRkJRMmhETEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVTBGQlV5eERRVUZETEVWQlFVVXNORUpCUVRSQ0xFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1UwRkJVeXhEUVVGRE8wdEJRek5HTzBsQlEwUXNRMEZCUXl4MVFrRkJkVUlzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlR0UlFVTm9ReXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRmRCUVZjc1EwRkJReXhGUVVGRkxEUkNRVUUwUWl4RFFVRkRMR3RDUVVGclFpeERRVUZETEZkQlFWY3NRMEZCUXp0UlFVTTVSaXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRmRCUVZjc1EwRkJReXhGUVVGRkxEUkNRVUUwUWl4RFFVRkRMR3RDUVVGclFpeERRVUZETEZkQlFWY3NRMEZCUXp0UlFVTTVSaXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRk5CUVZNc1EwRkJReXhGUVVGRkxEUkNRVUUwUWl4RFFVRkRMR3RDUVVGclFpeERRVUZETEZOQlFWTXNRMEZCUXp0UlFVTXhSaXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxEUkNRVUUwUWl4RFFVRkRMR3RDUVVGclFpeERRVUZETEUxQlFVMHNRMEZCUXp0TFFVTnlSanRKUVVORUxFTkJRVU1zZFVKQlFYVkNMRU5CUVVNc1VVRkJVU3hEUVVGRExFVkJRVVU3VVVGRGJFTXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eFJRVUZSTEVOQlFVTXNSVUZCUlN3NFFrRkJPRUlzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhSUVVGUkxFTkJRVU03VVVGRE9VWXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN3NFFrRkJPRUlzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhKUVVGSkxFTkJRVU03VVVGRGRFWXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eFZRVUZWTEVOQlFVTXNSVUZCUlN3NFFrRkJPRUlzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhWUVVGVkxFTkJRVU03VVVGRGJFY3NRMEZCUXl4dlFrRkJiMElzUTBGQlF5eGhRVUZoTEVOQlFVTXNSVUZCUlN3NFFrRkJPRUlzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhoUVVGaExFTkJRVU03VVVGRGVFY3NRMEZCUXl4dlFrRkJiMElzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN3NFFrRkJPRUlzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRE1VWXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eFZRVUZWTEVOQlFVTXNSVUZCUlN3NFFrRkJPRUlzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhWUVVGVkxFTkJRVU03VVVGRGJFY3NRMEZCUXl4dlFrRkJiMElzUTBGQlF5eFpRVUZaTEVOQlFVTXNSVUZCUlN3NFFrRkJPRUlzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhaUVVGWkxFTkJRVU03VVVGRGRFY3NRMEZCUXl4dlFrRkJiMElzUTBGQlF5eGhRVUZoTEVOQlFVTXNSVUZCUlN3NFFrRkJPRUlzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhoUVVGaExFTkJRVU03VVVGRGVFY3NRMEZCUXl4dlFrRkJiMElzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN3NFFrRkJPRUlzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRE1VWXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN3NFFrRkJPRUlzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhMUVVGTExFTkJRVU03UzBGRGVrWTdTVUZEUkN4RFFVRkRMSFZDUVVGMVFpeERRVUZETEdGQlFXRXNRMEZCUXl4RlFVRkZPMUZCUTNaRExFTkJRVU1zZDBKQlFYZENMRU5CUVVNc1QwRkJUeXhEUVVGRExFVkJRVVVzYlVKQlFXMUNMRU5CUVVNc2QwSkJRWGRDTEVOQlFVTXNUMEZCVHl4RFFVRkRPMUZCUTNwR0xFTkJRVU1zZDBKQlFYZENMRU5CUVVNc1YwRkJWeXhEUVVGRExFVkJRVVVzYlVKQlFXMUNMRU5CUVVNc2QwSkJRWGRDTEVOQlFVTXNWMEZCVnl4RFFVRkRPMUZCUTJwSExFTkJRVU1zZDBKQlFYZENMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNSVUZCUlN4dFFrRkJiVUlzUTBGQlF5eDNRa0ZCZDBJc1EwRkJReXhwUWtGQmFVSXNRMEZCUXp0UlFVTTNSeXhEUVVGRExIZENRVUYzUWl4RFFVRkRMSGxDUVVGNVFpeERRVUZETEVWQlEyeEVMRzFDUVVGdFFpeERRVUZETEhkQ1FVRjNRaXhEUVVGRExIbENRVUY1UWl4RFFVRkRPMHRCUXpGRk8wbEJRMFFzUTBGQlF5eDFRa0ZCZFVJc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJUdFJRVU5vUXl4RFFVRkRMR3RDUVVGclFpeERRVUZETEZWQlFWVXNRMEZCUXl4RlFVRkZMRFJDUVVFMFFpeERRVUZETEd0Q1FVRnJRaXhEUVVGRExGVkJRVlVzUTBGQlF6dExRVU0zUmp0SlFVTkVMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNVVUZCVVN4RFFVRkRMRVZCUVVVN1VVRkRiRU1zUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RlFVRkZMRGhDUVVFNFFpeERRVUZETEc5Q1FVRnZRaXhEUVVGRExHZENRVUZuUWl4RFFVRkRPMHRCUXk5SE8wbEJRMFFzUTBGQlF5eDFRa0ZCZFVJc1EwRkJReXhYUVVGWExFTkJRVU1zUlVGQlJUdFJRVU55UXl4RFFVRkRMSFZDUVVGMVFpeERRVUZETEZkQlFWY3NRMEZCUXl4RlFVRkZMREJDUVVFd1FpeERRVUZETEhWQ1FVRjFRaXhEUVVGRExGZEJRVmNzUTBGQlF6dExRVU4yUnp0RFFVTkdMRU5CUVVNN1FVRkZSaXhOUVVGTkxFTkJRVU1zVFVGQlRTeG5Ra0ZCWjBJc1IwRkJjVUlzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF6dExRVU0xUlN4TlFVRk5MRU5CUVVNc1EwRkJReXhIUVVGeFFpeEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZPMGxCUTNKRExFdEJRVXNzVFVGQlRTeEhRVUZITEVsQlFVa3NUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4SFFVRjVRaXhEUVVGRExFTkJRVU03VVVGRGVFVXNSMEZCUnl4RFFVRkRMRWRCUVhsQ0xFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdTVUZGZGtNc1QwRkJUeXhIUVVGSExFTkJRVU03UVVGRFlpeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRnJRbFFzVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZCUXl4SlFVRnJRanRKUVVNdlF5eFBRVUZQTEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEZGQlFWRXNRMEZCUXp0QlFVTTFReXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdkQ1FVRm5RaXhEUVVGRExFbEJRV3RDTzBsQlEycEVMRTlCUVU4c1owSkJRV2RDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1ZVRkJWU3hEUVVGRE8wRkJRemxETEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc1kwRkJZeXhEUVVGRExFbEJRV3RDTzBsQlF5OURMRTlCUVU4c1owSkJRV2RDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1VVRkJVU3hEUVVGRE8wRkJRelZETEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc2NVSkJRWEZDTEVOQlFVTXNTVUZCYTBJN1NVRkRkRVFzVDBGQlR5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeDFRa0ZCZFVJc1EwRkJReXhoUVVGaExFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdRVUZEY0VZc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeGxRVUZsTEVOQlFVTXNTVUZCYTBJN1NVRkRhRVFzVDBGQlR5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeDFRa0ZCZFVJc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdRVUZETjBVc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeHRRa0ZCYlVJc1EwRkJReXhKUVVGclFqdEpRVU53UkN4UFFVRlBMR2RDUVVGblFpeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMSFZDUVVGMVFpeERRVUZETEZkQlFWY3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRCUVVOc1JpeERRVUZETzBGQlJVUXNaMGRCUVdkSE8wRkJRMmhITEUxQlFVMHNWVUZCVlN4cFFrRkJhVUlzUTBGQlF5eEZRVUZWTEVWQlFVVXNSVUZCVlR0SlFVTjBSQ3hKUVVGSkxFVkJRVVVzUTBGQlF5eE5RVUZOTEV0QlFVc3NSVUZCUlN4RFFVRkRMRTFCUVUwc1JVRkJSVHRSUVVNelFpeFBRVUZQTEVOQlFVTXNRMEZCUXp0TFFVTldPMU5CUVUwN1VVRkRUQ3hKUVVGSkxFbEJRVWtzUjBGQlZ5eERRVUZETEVOQlFVTTdVVUZEY2tJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEyaERMRWxCUVVrc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOcVF5eFBRVUZQTEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRE8wdEJRM3BDTzBGQlEwZ3NRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3h0UWtGQmJVSXNRMEZCUXl4RlFVRlZMRVZCUVVVc1JVRkJWVHRKUVVONFJDeFBRVUZQTEVWQlFVVXNTMEZCU3l4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpOQ0xFTkJRVU03UVVGRlJDdzBSRUZCTkVRN1FVRkROVVFzVFVGQlRTeFBRVUZQTEU5QlFVODdTVUZKYkVJN096czdUMEZKUnp0SlFVTklMRmxCUVZrc1RVRkJiMEk3VVVGRE9VSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhOUVVGTkxFTkJRVU03VVVGRGNrSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhuUWtGQlowSXNRMEZCUXl4TlFVRk5MRU5CUVhWQ0xFTkJRVU03U1VGRGFrVXNRMEZCUXp0SlFVVkVPenM3T3p0UFFVdEhPMGxCUTBrc1pVRkJaU3hEUVVGRExFMUJRVzlDTzFGQlEzcERMRTlCUVU4c2NVSkJRWEZDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1pVRkJaU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEcxQ1FVRnRRaXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBsQlEycEhMRU5CUVVNN1NVRkRSRHM3T3pzN1QwRkxSenRKUVVOSkxGVkJRVlVzUTBGQlF5eEpRVUZWTzFGQlF6RkNMRTFCUVUwc1NVRkJTU3hIUVVWT0xHZENRVUZuUWl4RFFVRkRPMUZCUTNKQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zWTBGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1dVRkRla1lzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4dFFrRkJiVUlzU1VGQlNTeERRVUZETEUxQlFVMHNhMEpCUVd0Q0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTI1R0xFOUJRVThzU1VGQlNTeERRVUZETEdWQlFXVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU4yUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVhGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTTNSU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVzFDTEVOQlFVTTdTVUZEZGtRc1EwRkJRenRKUVVWRU96czdPenRQUVV0SE8wbEJRMGtzVFVGQlRTeERRVUZETEcxQ1FVRnRRaXhEUVVGRExGRkJRVFJDTzFGQlF6VkVMRTlCUVU4c1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEycEVMRU5CUVVNN1NVRkZSRHM3VDBGRlJ6dEpRVU5JTEUxQlFVMHNTMEZCU3l4cFFrRkJhVUk3VVVGRE1VSXNUMEZCVHl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNN1NVRkRka01zUTBGQlF6dERRVU5HSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUNvZ1lYTWdabXdnWm5KdmJTQW5abUZ6ZEdWemRDMXNaWFpsYm5Ob2RHVnBiaWM3WEc1cGJYQnZjblFnZTJwaGNtOVhhVzVyYkdWeWZTQm1jbTl0SUNkcVlYSnZMWGRwYm10c1pYSXRkSGx3WlhOamNtbHdkQ2M3WEc1cGJYQnZjblFnZTBScGMzUmhibU5sVFdWMGNtbGpmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTF4dUlDQmhjM2x0YldWMGNtbGpSR2x6ZEdGdVkyVXNYRzRnSUdKeVlYVnVRbXhoYm5GMVpYUkVhWE4wWVc1alpTeGNiaUFnWTI5emFXNWxSR2x6ZEdGdVkyVXNYRzRnSUdScFkyVkVhWE4wWVc1alpTeGNiaUFnWlhWamJHbGtaV0Z1UkdsemRHRnVZMlVzWEc0Z0lHaGhiVzFwYm1kRWFYTjBZVzVqWlN4Y2JpQWdhM1ZzWTNwNWJuTnJhVVJwYzNSaGJtTmxMRnh1SUNCdFkwTnZibTVoZFdkb1pYbEVhWE4wWVc1alpTeGNiaUFnY205bmIzUkhiMnhrWW1WeVowUnBjM1JoYm1ObExGeHVJQ0J5ZFhOelpXeEVhWE4wWVc1alpTeGNiaUFnYzI5cllXeEVhWE4wWVc1alpTeGNiaUFnZEdGdWFXMXZkRzlFYVhOMFlXNWpaU3hjYmlBZ2JuVnRaWEpwWTBScGMzUmhibU5sTEZ4dUlDQjBZVzVwYlc5MGIwUnBjM1JoYm1ObFNXNTBRWEp5WVhrc1hHNGdJR2x1ZG1WeWMyVkRiMjF0YjI1SmRHVnRjME52ZFc1MExGeHVmU0JtY205dElDY3VMaTlrYVhOMFlXNWpaUzF0WlhSeWFXTnpMVzFsZEdodlpITW5PMXh1WEc1cGJYQnZjblFnZTJOaGJHTjFiR0YwWlVWMVkyeHBaR1ZoYmtScGMzUmhibU5sZlNCbWNtOXRJQ2RBWkdGMFlXZHliMnN0YkdsaWNtRnlhV1Z6TDNWMGFXeHpMM055WXk5MlpXTjBiM0l0YjNCbGNtRjBhVzl1Y3ljN1hHNXBiWEJ2Y25RZ1FtbDBRWEp5WVhrZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdlltbDBMV0Z5Y21GNUp6dGNibWx0Y0c5eWRDQjdWbVZqZEc5eUxDQlRkSEpwYm1kRWFXTjBhVzl1WVhKNWZTQm1jbTl0SUNkQVpHRjBZV2R5YjJzdGJHbGljbUZ5YVdWekwzVjBhV3h6TDNOeVl5OTBlWEJsTFdSbFkyeGhjbUYwYVc5dWN5YzdYRzVwYlhCdmNuUWdlMjF0UkdsemRHRnVZMlZHZFc1amRHbHZibk1zSUUxdFJHbHpkR0Z1WTJWR2RXNWpkR2x2Ym5OT1lXMWxjMzBnWm5KdmJTQW5MaTR2YldGamNtOXRiMnhsWTNWc1pTMWthWE4wWVc1alpTMW1kVzVqZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHRFYVhOMFlXNWpaVTFsZEhKcFkzTlRkV0pxWldOMGN5d2dRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE1zWEc0Z0lGTjBjbWx1WjAxbGRISnBZM05PWVcxbGN5d2dWbVZqZEc5eVRXVjBjbWxqYzA1aGJXVnpMQ0JPZFcxaVpYSk5aWFJ5YVdOelRtRnRaWE1zSUVsdWRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxGeHVJQ0JPZFcxaVpYSkJjbkpoZVUxbGRISnBZM05PWVcxbGMzMGdabkp2YlNBbkxpOWpiMjV6ZEhNbk8xeHVYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQjJaV04wYjNKRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpPaUI3SUZ0dVlXMWxPaUJ6ZEhKcGJtZGRPaUFvZURvZ1ZtVmpkRzl5TENCNU9pQldaV04wYjNJcElEMCtJRzUxYldKbGNpQjlJRDBnZTF4dUlDQmJWbVZqZEc5eVRXVjBjbWxqYzA1aGJXVnpMa1YxWTJ4cFpHVmhibDA2SUdOaGJHTjFiR0YwWlVWMVkyeHBaR1ZoYmtScGMzUmhibU5sTEZ4dWZUdGNibHh1Wlhod2IzSjBJR052Ym5OMElITjBjbWx1WjBScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITTZJSHNnVzI1aGJXVTZJSE4wY21sdVoxMDZJQ2g0T2lCemRISnBibWNzSUhrNklITjBjbWx1WnlrZ1BUNGdiblZ0WW1WeUlIMGdQU0I3WEc0Z0lGdFRkSEpwYm1kTlpYUnlhV056VG1GdFpYTXVUR1YyWlc1emFIUmxhVzVkT2lCbWJDNWthWE4wWVc1alpTeGNiaUFnVzFOMGNtbHVaMDFsZEhKcFkzTk9ZVzFsY3k1S1lYSnZWMmx1YTJ4bGNsMDZJR3BoY205WGFXNXJiR1Z5TEZ4dUlDQmJVM1J5YVc1blRXVjBjbWxqYzA1aGJXVnpMazFoYm1oaGRIUmhibDA2SUcxaGJtaGhkSFJoYmtScGMzUmhibU5sTEZ4dUlDQmJVM1J5YVc1blRXVjBjbWxqYzA1aGJXVnpMazl1WldodmRGMDZJR05oZEdWbmIzSnBZMkZzUkdsemRHRnVZMlVzWEc1OU8xeHVYRzVsZUhCdmNuUWdZMjl1YzNRZ1ltbDBRWEp5WVhsRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpPaUI3SUZ0dVlXMWxPaUJ6ZEhKcGJtZGRPaUFvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLU0E5UGlCdWRXMWlaWElnZlNBOUlIdGNiaUFnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsUmhibWx0YjNSdlhUb2dkR0Z1YVcxdmRHOUVhWE4wWVc1alpTeGNiaUFnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxrUnBZMlZkT2lCa2FXTmxSR2x6ZEdGdVkyVXNYRzRnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NUJjM2x0YldWMGNtbGpYVG9nWVhONWJXMWxkSEpwWTBScGMzUmhibU5sTEZ4dUlDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11UW5KaGRXNUNiR0Z1Y1hWbGRGMDZJR0p5WVhWdVFteGhibkYxWlhSRWFYTjBZVzVqWlN4Y2JpQWdXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGtOdmMybHVaVjA2SUdOdmMybHVaVVJwYzNSaGJtTmxMRnh1SUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVTM1ZzWTNwNWJuTnJhVjA2SUd0MWJHTjZlVzV6YTJsRWFYTjBZVzVqWlN4Y2JpQWdXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGsxalEyOXVibUYxWjJobGVWMDZJRzFqUTI5dWJtRjFaMmhsZVVScGMzUmhibU5sTEZ4dUlDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11VW05bmIzUkhiMnhrWW1WeVoxMDZJSEp2WjI5MFIyOXNaR0psY21kRWFYTjBZVzVqWlN4Y2JpQWdXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGxKMWMzTmxiRjA2SUhKMWMzTmxiRVJwYzNSaGJtTmxMRnh1SUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVVMjlyWVd4ZE9pQnpiMnRoYkVScGMzUmhibU5sTEZ4dUlDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11U0dGdGJXbHVaMTA2SUdoaGJXMXBibWRFYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa1YxWTJ4cFpHVmhibDA2SUdWMVkyeHBaR1ZoYmtScGMzUmhibU5sTEZ4dWZUdGNibHh1Wlhod2IzSjBJR052Ym5OMElHbHVkRUZ5Y21GNVJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjem9nZXlCYmJtRnRaVG9nYzNSeWFXNW5YVG9nS0hnNklGVnBiblF6TWtGeWNtRjVMQ0I1T2lCVmFXNTBNekpCY25KaGVTa2dQVDRnYm5WdFltVnlJSDBnUFNCN1hHNGdJRnRKYm5SQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1VVlXNXBiVzkwYjBsdWRFRnljbUY1WFRvZ2RHRnVhVzF2ZEc5RWFYTjBZVzVqWlVsdWRFRnljbUY1TEZ4dWZUdGNibHh1Wlhod2IzSjBJR052Ym5OMElHNTFiV0psY2tScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITTZJSHNnVzI1aGJXVTZJSE4wY21sdVoxMDZJQ2hoY21kek9pQmhibmtwSUQwK0lDaDRPaUJ1ZFcxaVpYSXNJSGs2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5SUgwZ1BTQjdYRzRnSUZ0T2RXMWlaWEpOWlhSeWFXTnpUbUZ0WlhNdVJHbG1abVZ5Wlc1alpWMDZJRzUxYldWeWFXTkVhWE4wWVc1alpTeGNibjA3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0J1ZFcxaVpYSkJjbkpoZVVScGMzUmhibU5sVFdWMGNtbGpjenBjYm5zZ1cyNWhiV1U2SUhOMGNtbHVaMTA2SUNoaGNtZHpPaUJoYm5rcElEMCtJQ2g0T2lCQmNuSmhlVXhwYTJVOGJuVnRZbVZ5UGl3Z2VUb2dRWEp5WVhsTWFXdGxQRzUxYldKbGNqNHBJRDArSUc1MWJXSmxjaUI5SUQwZ2UxeHVJQ0JiVG5WdFltVnlRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVRMjl0Ylc5dVNYUmxiWE5kT2lCcGJuWmxjbk5sUTI5dGJXOXVTWFJsYlhORGIzVnVkQ3hjYm4wN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCQmRtRnBiR0ZpYkdWTlpYUnlhV056SUQwZ2UxeHVJQ0JiUkdsemRHRnVZMlZOWlhSeWFXTnpVM1ZpYW1WamRITXVWbVZqZEc5eVhUb2dlMXh1SUNBZ0lGdFdaV04wYjNKTlpYUnlhV056VG1GdFpYTXVSWFZqYkdsa1pXRnVYVG9nZG1WamRHOXlSR2x6ZEdGdVkyVk5aWFJ5YVdOelRXVjBhRzlrYzF0V1pXTjBiM0pOWlhSeWFXTnpUbUZ0WlhNdVJYVmpiR2xrWldGdVhTeGNiaUFnZlN4Y2JpQWdXMFJwYzNSaGJtTmxUV1YwY21samMxTjFZbXBsWTNSekxsTjBjbWx1WjEwNklIdGNiaUFnSUNCYlUzUnlhVzVuVFdWMGNtbGpjMDVoYldWekxreGxkbVZ1YzJoMFpXbHVYVG9nYzNSeWFXNW5SR2x6ZEdGdVkyVk5aWFJ5YVdOelRXVjBhRzlrYzF0VGRISnBibWROWlhSeWFXTnpUbUZ0WlhNdVRHVjJaVzV6YUhSbGFXNWRMRnh1SUNBZ0lGdFRkSEpwYm1kTlpYUnlhV056VG1GdFpYTXVTbUZ5YjFkcGJtdHNaWEpkT2lCemRISnBibWRFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSelcxTjBjbWx1WjAxbGRISnBZM05PWVcxbGN5NUtZWEp2VjJsdWEyeGxjbDBzWEc0Z0lDQWdXMU4wY21sdVowMWxkSEpwWTNOT1lXMWxjeTVOWVc1b1lYUjBZVzVkT2lCemRISnBibWRFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSelcxTjBjbWx1WjAxbGRISnBZM05PWVcxbGN5NU5ZVzVvWVhSMFlXNWRMRnh1SUNBZ0lGdFRkSEpwYm1kTlpYUnlhV056VG1GdFpYTXVUMjVsYUc5MFhUb2djM1J5YVc1blJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRUZEhKcGJtZE5aWFJ5YVdOelRtRnRaWE11VDI1bGFHOTBYU3hjYmlBZ2ZTeGNiaUFnVzBScGMzUmhibU5sVFdWMGNtbGpjMU4xWW1wbFkzUnpMa0pwZEVGeWNtRjVYVG9nZTF4dUlDQWdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1VVlXNXBiVzkwYjEwNklHSnBkRUZ5Y21GNVJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1VVlXNXBiVzkwYjEwc1hHNGdJQ0FnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxrUnBZMlZkT2lCaWFYUkJjbkpoZVVScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11UkdsalpWMHNYRzRnSUNBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa0Z6ZVcxdFpYUnlhV05kT2lCaWFYUkJjbkpoZVVScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11UVhONWJXMWxkSEpwWTEwc1hHNGdJQ0FnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxrSnlZWFZ1UW14aGJuRjFaWFJkT2lCaWFYUkJjbkpoZVVScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11UW5KaGRXNUNiR0Z1Y1hWbGRGMHNYRzRnSUNBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa052YzJsdVpWMDZJR0pwZEVGeWNtRjVSR2x6ZEdGdVkyVk5aWFJ5YVdOelRXVjBhRzlrYzF0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NURiM05wYm1WZExGeHVJQ0FnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NUxkV3hqZW5sdWMydHBYVG9nWW1sMFFYSnlZWGxFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSelcwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa3QxYkdONmVXNXphMmxkTEZ4dUlDQWdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1TlkwTnZibTVoZFdkb1pYbGRPaUJpYVhSQmNuSmhlVVJwYzNSaGJtTmxUV1YwY21samMwMWxkR2h2WkhOYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVUV05EYjI1dVlYVm5hR1Y1WFN4Y2JpQWdJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVVtOW5iM1JIYjJ4a1ltVnlaMTA2SUdKcGRFRnljbUY1UkdsemRHRnVZMlZOWlhSeWFXTnpUV1YwYUc5a2MxdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVTYjJkdmRFZHZiR1JpWlhKblhTeGNiaUFnSUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVVblZ6YzJWc1hUb2dZbWwwUVhKeVlYbEVhWE4wWVc1alpVMWxkSEpwWTNOTlpYUm9iMlJ6VzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsSjFjM05sYkYwc1hHNGdJQ0FnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsTnZhMkZzWFRvZ1ltbDBRWEp5WVhsRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGxOdmEyRnNYU3hjYmlBZ2ZTeGNiaUFnVzBScGMzUmhibU5sVFdWMGNtbGpjMU4xWW1wbFkzUnpMazFoWTNKdlRXOXNaV04xYkdWZE9pQjdJQzh2SUc5d2RHbHZibUZzSUdGeVozTWdibVZsWkdWa0lHWnZjaUJ0WVdOeWIyMXZiR1ZqZFd4bElHWjFibU4wYVc5dWN5QjNhR2xqYUNCcGJtbDBhV0ZzYVhwbElIUm9aVzFjYmlBZ0lDQmJUVzFFYVhOMFlXNWpaVVoxYm1OMGFXOXVjMDVoYldWekxraEJUVTFKVGtkZE9pQnRiVVJwYzNSaGJtTmxSblZ1WTNScGIyNXpXMDF0UkdsemRHRnVZMlZHZFc1amRHbHZibk5PWVcxbGN5NUlRVTFOU1U1SFhTeGNiaUFnSUNCYlRXMUVhWE4wWVc1alpVWjFibU4wYVc5dWMwNWhiV1Z6TGt4RlZrVk9VMGhVUlVsT1hUb2diVzFFYVhOMFlXNWpaVVoxYm1OMGFXOXVjMXROYlVScGMzUmhibU5sUm5WdVkzUnBiMjV6VG1GdFpYTXVURVZXUlU1VFNGUkZTVTVkTEZ4dUlDQWdJRnROYlVScGMzUmhibU5sUm5WdVkzUnBiMjV6VG1GdFpYTXVUa1ZGUkV4RlRVRk9UbDlYVlU1VFEwaGRPaUJ0YlVScGMzUmhibU5sUm5WdVkzUnBiMjV6VzAxdFJHbHpkR0Z1WTJWR2RXNWpkR2x2Ym5OT1lXMWxjeTVPUlVWRVRFVk5RVTVPWDFkVlRsTkRTRjBzWEc0Z0lDQWdXMDF0UkdsemRHRnVZMlZHZFc1amRHbHZibk5PWVcxbGN5NU5UMDVQVFVWU1gwTklSVTFKUTBGTVgwUkpVMVJCVGtORlhUcGNiaUFnSUNBZ0lHMXRSR2x6ZEdGdVkyVkdkVzVqZEdsdmJuTmJUVzFFYVhOMFlXNWpaVVoxYm1OMGFXOXVjMDVoYldWekxrMVBUazlOUlZKZlEwaEZUVWxEUVV4ZlJFbFRWRUZPUTBWZExGeHVJQ0I5TEZ4dUlDQmJSR2x6ZEdGdVkyVk5aWFJ5YVdOelUzVmlhbVZqZEhNdVRuVnRZbVZ5WFRvZ2UxeHVJQ0FnSUZ0T2RXMWlaWEpOWlhSeWFXTnpUbUZ0WlhNdVJHbG1abVZ5Wlc1alpWMDZJRzUxYldKbGNrUnBjM1JoYm1ObFRXVjBjbWxqYzAxbGRHaHZaSE5iVG5WdFltVnlUV1YwY21samMwNWhiV1Z6TGtScFptWmxjbVZ1WTJWZExGeHVJQ0I5TEZ4dUlDQmJSR2x6ZEdGdVkyVk5aWFJ5YVdOelUzVmlhbVZqZEhNdVNXNTBRWEp5WVhsZE9pQjdYRzRnSUNBZ1cwbHVkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMbFJoYm1sdGIzUnZTVzUwUVhKeVlYbGRPaUJwYm5SQmNuSmhlVVJwYzNSaGJtTmxUV1YwY21samMwMWxkR2h2WkhOYlNXNTBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVWR0Z1YVcxdmRHOUpiblJCY25KaGVWMHNYRzRnSUgwc1hHNGdJRnRFYVhOMFlXNWpaVTFsZEhKcFkzTlRkV0pxWldOMGN5NU9kVzFpWlhKQmNuSmhlVjA2SUh0Y2JpQWdJQ0JiVG5WdFltVnlRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVRMjl0Ylc5dVNYUmxiWE5kT2lCdWRXMWlaWEpCY25KaGVVUnBjM1JoYm1ObFRXVjBjbWxqYzF0T2RXMWlaWEpCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVEYjIxdGIyNUpkR1Z0YzEwc1hHNGdJSDBzWEc1OU8xeHVYRzVsZUhCdmNuUWdZMjl1YzNRZ1RXVjBjbWxqVkc5RVlYUmhWSGx3WlRvZ1UzUnlhVzVuUkdsamRHbHZibUZ5ZVNBOUlFOWlhbVZqZEM1clpYbHpLRUYyWVdsc1lXSnNaVTFsZEhKcFkzTXBYRzRnSUM1eVpXUjFZMlVvS0hKbGREb2dVM1J5YVc1blJHbGpkR2x2Ym1GeWVTd2dhMlY1S1NBOVBpQjdYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQjJZV3dnYjJZZ1QySnFaV04wTG10bGVYTW9RWFpoYVd4aFlteGxUV1YwY21samMxdHJaWGtnWVhNZ1FYWmhhV3hoWW14bFJHRjBZVlI1Y0dWelhTa3BYRzRnSUNBZ0lDQnlaWFJiZG1Gc0lHRnpJRUYyWVdsc1lXSnNaVVJoZEdGVWVYQmxjMTBnUFNCclpYazdYRzVjYmlBZ0lDQnlaWFIxY200Z2NtVjBPMXh1SUNCOUxDQjdmU2s3WEc1Y2JtVjRjRzl5ZENCMGVYQmxJRUYyWVdsc1lXSnNaVVJoZEdGVWVYQmxjeUE5SUd0bGVXOW1JSFI1Y0dWdlppQkJkbUZwYkdGaWJHVk5aWFJ5YVdOek8xeHVaWGh3YjNKMElIUjVjR1VnVm1WamRHOXlUV1YwY21samN5QTlJR3RsZVc5bUlIUjVjR1Z2WmlCQmRtRnBiR0ZpYkdWTlpYUnlhV056VzBScGMzUmhibU5sVFdWMGNtbGpjMU4xWW1wbFkzUnpMbFpsWTNSdmNsMDdYRzVsZUhCdmNuUWdkSGx3WlNCVGRISnBibWROWlhSeWFXTnpJRDBnYTJWNWIyWWdkSGx3Wlc5bUlFRjJZV2xzWVdKc1pVMWxkSEpwWTNOYlJHbHpkR0Z1WTJWTlpYUnlhV056VTNWaWFtVmpkSE11VTNSeWFXNW5YVHRjYm1WNGNHOXlkQ0IwZVhCbElFSnBkRUZ5Y21GNVRXVjBjbWxqY3lBOUlHdGxlVzltSUhSNWNHVnZaaUJCZG1GcGJHRmliR1ZOWlhSeWFXTnpXMFJwYzNSaGJtTmxUV1YwY21samMxTjFZbXBsWTNSekxrSnBkRUZ5Y21GNVhUdGNibVY0Y0c5eWRDQjBlWEJsSUU1MWJXSmxjazFsZEhKcFkzTWdQU0JyWlhsdlppQjBlWEJsYjJZZ1FYWmhhV3hoWW14bFRXVjBjbWxqYzF0RWFYTjBZVzVqWlUxbGRISnBZM05UZFdKcVpXTjBjeTVPZFcxaVpYSmRPMXh1Wlhod2IzSjBJSFI1Y0dVZ1NXNTBRWEp5WVhsTlpYUnlhV056SUQwZ2EyVjViMllnZEhsd1pXOW1JRUYyWVdsc1lXSnNaVTFsZEhKcFkzTmJSR2x6ZEdGdVkyVk5aWFJ5YVdOelUzVmlhbVZqZEhNdVNXNTBRWEp5WVhsZE8xeHVaWGh3YjNKMElIUjVjR1VnVG5WdFltVnlRWEp5WVhsTlpYUnlhV056SUQwZ2EyVjViMllnZEhsd1pXOW1JRUYyWVdsc1lXSnNaVTFsZEhKcFkzTmJSR2x6ZEdGdVkyVk5aWFJ5YVdOelUzVmlhbVZqZEhNdVRuVnRZbVZ5UVhKeVlYbGRPMXh1Wlhod2IzSjBJSFI1Y0dVZ1MyNXZkMjVOWlhSeWFXTnpJRDBnVTNSeWFXNW5UV1YwY21samN5QjhJRUpwZEVGeWNtRjVUV1YwY21samN5QjhJRlpsWTNSdmNrMWxkSEpwWTNNZ2ZGeHVJQ0JOYlVScGMzUmhibU5sUm5WdVkzUnBiMjV6VG1GdFpYTWdmQ0JPZFcxaVpYSk5aWFJ5YVdOelRtRnRaWE1nZkNCSmJuUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5QjhJRTUxYldKbGNrRnljbUY1VFdWMGNtbGpjMDVoYldWek8xeHVYRzVsZUhCdmNuUWdkSGx3WlNCV1lXeHBaRlI1Y0dWeklEMWNiaUFnZXlCa1lYUmhPaUJ6ZEhKcGJtZGJYU3dnYldWMGNtbGpPaUJUZEhKcGJtZE5aWFJ5YVdOeklId2dUVzFFYVhOMFlXNWpaVVoxYm1OMGFXOXVjMDVoYldWeklIMGdmRnh1SUNCN0lHUmhkR0U2SUZabFkzUnZjbHRkTENCdFpYUnlhV002SUZabFkzUnZjazFsZEhKcFkzTWdmU0I4WEc0Z0lIc2daR0YwWVRvZ1FtbDBRWEp5WVhsYlhTd2diV1YwY21sak9pQkNhWFJCY25KaGVVMWxkSEpwWTNNZ2ZTQjhYRzRnSUhzZ1pHRjBZVG9nYm5WdFltVnlXMTBzSUcxbGRISnBZem9nVG5WdFltVnlUV1YwY21samMwNWhiV1Z6SUgwN1hHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnBjMU4wY21sdVowMWxkSEpwWXlodVlXMWxPaUJMYm05M2JrMWxkSEpwWTNNcElIdGNiaUFnY21WMGRYSnVJRTFsZEhKcFkxUnZSR0YwWVZSNWNHVmJibUZ0WlYwZ1BUMGdKMU4wY21sdVp5YzdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGMwSnBkRUZ5Y21GNVRXVjBjbWxqS0c1aGJXVTZJRXR1YjNkdVRXVjBjbWxqY3lrZ2UxeHVJQ0J5WlhSMWNtNGdUV1YwY21salZHOUVZWFJoVkhsd1pWdHVZVzFsWFNBOVBTQW5RbWwwUVhKeVlYa25PMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2FYTldaV04wYjNKTlpYUnlhV01vYm1GdFpUb2dTMjV2ZDI1TlpYUnlhV056S1NCN1hHNGdJSEpsZEhWeWJpQk5aWFJ5YVdOVWIwUmhkR0ZVZVhCbFcyNWhiV1ZkSUQwOUlDZFdaV04wYjNJbk8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYVhOTllXTnliMDF2YkdWamRXeGxUV1YwY21saktHNWhiV1U2SUV0dWIzZHVUV1YwY21samN5a2dlMXh1SUNCeVpYUjFjbTRnVFdWMGNtbGpWRzlFWVhSaFZIbHdaVnR1WVcxbFhTQTlQU0JFYVhOMFlXNWpaVTFsZEhKcFkzTlRkV0pxWldOMGN5NU5ZV055YjAxdmJHVmpkV3hsTG5SdlUzUnlhVzVuS0NrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJwYzA1MWJXVnlhV05OWlhSeWFXTW9ibUZ0WlRvZ1MyNXZkMjVOWlhSeWFXTnpLU0I3WEc0Z0lISmxkSFZ5YmlCTlpYUnlhV05VYjBSaGRHRlVlWEJsVzI1aGJXVmRJRDA5SUVScGMzUmhibU5sVFdWMGNtbGpjMU4xWW1wbFkzUnpMazUxYldKbGNpNTBiMU4wY21sdVp5Z3BPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2FYTk9kVzFpWlhKQmNuSmhlVTFsZEhKcFl5aHVZVzFsT2lCTGJtOTNiazFsZEhKcFkzTXBJSHRjYmlBZ2NtVjBkWEp1SUUxbGRISnBZMVJ2UkdGMFlWUjVjR1ZiYm1GdFpWMGdQVDBnUkdsemRHRnVZMlZOWlhSeWFXTnpVM1ZpYW1WamRITXVUblZ0WW1WeVFYSnlZWGt1ZEc5VGRISnBibWNvS1R0Y2JuMWNibHh1THlvcUlFMWhibWhoZEhSaGJpQmthWE4wWVc1alpTQmlaWFIzWldWdUlIUjNieUJ6WlhGMVpXNWpaWE1nS0cxaGRHTm9JQzBnTUN3Z2JXbHpiV0YwWTJnZ0xTQXhLU0J1YjNKdFlXeHBlbVZrSUdadmNpQnNaVzVuZEdndUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdiV0Z1YUdGMGRHRnVSR2x6ZEdGdVkyVW9jekU2SUhOMGNtbHVaeXdnY3pJNklITjBjbWx1WnlrNklHNTFiV0psY2lCN1hHNGdJR2xtSUNoek1TNXNaVzVuZEdnZ0lUMDlJSE15TG14bGJtZDBhQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQXhPMXh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJR3hsZENCa2FYTjBPaUJ1ZFcxaVpYSWdQU0F3TzF4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBeE95QnBJRHdnY3pFdWJHVnVaM1JvT3lCcEt5c3BYRzRnSUNBZ0lDQmthWE4wSUNzOUlITXhXMmxkSUQwOUlITXlXMmxkSUQ4Z01DQTZJREU3WEc0Z0lDQWdjbVYwZFhKdUlHUnBjM1FnTHlCek1TNXNaVzVuZEdnN1hHNGdJSDFjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHTmhkR1ZuYjNKcFkyRnNSR2x6ZEdGdVkyVW9jekU2SUhOMGNtbHVaeXdnY3pJNklITjBjbWx1WnlrNklHNTFiV0psY2lCN1hHNGdJSEpsZEhWeWJpQnpNU0E5UFQwZ2N6SWdQeUF3SURvZ01UdGNibjFjYmx4dUx5b3FJRlZ1YVdacFpXUWdZMnhoYzNNZ2FXMXdiR1Z0Wlc1MGFXNW5JR1JwWm1abGNtVnVkQ0J6ZEhKcGJtY2diV1ZoYzNWeVpYTXVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdUV1ZoYzNWeVpTQjdYRzRnSUhCeWIzUmxZM1JsWkNCdFpYUm9iMlE2SUV0dWIzZHVUV1YwY21samN6dGNiaUFnY0hKdmRHVmpkR1ZrSUdSaGRHRlVlWEJsT2lCQmRtRnBiR0ZpYkdWRVlYUmhWSGx3WlhNN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOeVpXRjBaWE1nWVc0Z2FXNXpkR0Z1WTJVZ2IyWWdUV1ZoYzNWeVpTQjNhWFJvSUM1Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRzFsZEdodlpDQk5aWFJvYjJRZ2RHOGdZMkZzWTNWc1lYUmxJR1JwYzNSaGJtTmxJR0psZEhkbFpXNGdjM1J5YVc1bmN5NWNiaUFnSUNvZ1FHMWxiV0psY205bUlFMWxZWE4xY21WeVhHNGdJQ0FxTDF4dUlDQmpiMjV6ZEhKMVkzUnZjaWh0WlhSb2IyUTZJRXR1YjNkdVRXVjBjbWxqY3lrZ2UxeHVJQ0FnSUhSb2FYTXViV1YwYUc5a0lEMGdiV1YwYUc5a08xeHVJQ0FnSUhSb2FYTXVaR0YwWVZSNWNHVWdQU0JOWlhSeWFXTlViMFJoZEdGVWVYQmxXMjFsZEdodlpGMGdZWE1nUVhaaGFXeGhZbXhsUkdGMFlWUjVjR1Z6TzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxkSFZ5Ym5NZ2RISjFaU0JwWmlCMGFHVWdiV1YwY21saklHNWxaV1J6SUdGeVozVnRaVzUwY3lCMGJ5QmlaU0JqWVd4amRXeGhkR1ZrTGx4dUlDQWdLaUJBY0dGeVlXMGdlMHR1YjNkdVRXVjBjbWxqYzMwZ2JXVjBhRzlrSUUxbGRISnBZeUIwYnlCamFHVmpheUJwWmlCcGRDQnVaV1ZrY3lCaGNtZDFiV1Z1ZEhNdVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTJKdmIyeGxZVzU5SUZSeWRXVWdhV1lnZEdobElHMWxkSEpwWXlCdVpXVmtjeUJoY21kMWJXVnVkSE11WEc0Z0lDQXFJRUJ0WlcxaVpYSnZaaUJOWldGemRYSmxYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdiV1YwY21salRtVmxaSE5CY21kektHMWxkR2h2WkRvZ1MyNXZkMjVOWlhSeWFXTnpLVG9nWW05dmJHVmhiaUI3WEc0Z0lDQWdjbVYwZFhKdUlHbHpUV0ZqY205TmIyeGxZM1ZzWlUxbGRISnBZeWh0WlhSb2IyUXBJSHg4SUdselRuVnRaWEpwWTAxbGRISnBZeWh0WlhSb2IyUXBJSHg4SUdselRuVnRZbVZ5UVhKeVlYbE5aWFJ5YVdNb2JXVjBhRzlrS1R0Y2JpQWdmVnh1SUNBdktpcGNiaUFnSUNvZ1VtVjBkWEp1Y3lCamRYTjBiMjBnYzNSeWFXNW5JR1JwYzNSaGJtTmxJR1oxYm1OMGFXOXVJSE53WldOcFptbGxaQzVjYmlBZ0lDb2dRSEJoY21GdElIdHZjSFJ6ZlNCdmNIUnpJRTl3ZEdsdmJuTWdabTl5SUhSb1pTQnRaV0Z6ZFhKbExpQjFjMlZrSUdadmNpQnRZV055YjIxdmJHVmpkV3hsSUdScGMzUmhibU5sYzF4dUlDQWdLaUJBY21WMGRYSnVJSHRFYVhOMFlXNWpaVTFsZEhKcFkzMGdRMkZzYkdKaFkyc2diMllnZEdobElHMWxZWE4xY21VZ1kyaHZjMlZ1TGx4dUlDQWdLaUJBYldWdFltVnliMllnVFdWaGMzVnlaWEpjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJuWlhSTlpXRnpkWEpsS0c5d2RITS9PaUJoYm5rcE9pQkVhWE4wWVc1alpVMWxkSEpwWXlCN1hHNGdJQ0FnWTI5dWMzUWdaR2xqZERvZ2V5QmJhMlY1T2lCemRISnBibWRkT2x4dUlDQWdJQ0FnZTF0clpYa3lPaUJ6ZEhKcGJtZGRPaUJFYVhOMFlXNWpaVTFsZEhKcFl5QjhJQ2dvYjNCMGN6b2dZVzU1S1NBOVBpQkVhWE4wWVc1alpVMWxkSEpwWXlsOVhHNGdJQ0FnZlNBOUlFRjJZV2xzWVdKc1pVMWxkSEpwWTNNN1hHNGdJQ0FnYVdZZ0tDRmthV04wTG1oaGMwOTNibEJ5YjNCbGNuUjVLSFJvYVhNdVpHRjBZVlI1Y0dVcElIeDhJQ0ZrYVdOMFczUm9hWE11WkdGMFlWUjVjR1ZkTG1oaGMwOTNibEJ5YjNCbGNuUjVLSFJvYVhNdWJXVjBhRzlrS1NsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhnVlc1cmJtOTNiaUJ0WldGemRYSmxJQ1I3ZEdocGN5NXRaWFJvYjJSOUlHWnZjaUJrWVhSaElIUjVjR1VnSkh0MGFHbHpMbVJoZEdGVWVYQmxmV0FwTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG0xbGRISnBZMDVsWldSelFYSm5jeWgwYUdsekxtMWxkR2h2WkNrZ1AxeHVJQ0FnSUNBZ0tHUnBZM1JiZEdocGN5NWtZWFJoVkhsd1pWMWJkR2hwY3k1dFpYUm9iMlJkSUdGeklDZ29iM0IwY3pvZ1lXNTVLU0E5UGlCRWFYTjBZVzVqWlUxbGRISnBZeWtwS0c5d2RITXBJRHBjYmlBZ0lDQWdJR1JwWTNSYmRHaHBjeTVrWVhSaFZIbHdaVjFiZEdocGN5NXRaWFJvYjJSZElHRnpJRVJwYzNSaGJtTmxUV1YwY21sak8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsZEhWeWJuTWdZM1Z6ZEc5dElITjBjbWx1WnlCa2FYTjBZVzVqWlNCaWVTQjBhR1VnWjJsMlpXNGdaR0YwWVNCMGVYQmxMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGMzMGdaR0YwWVZSNWNHVWdUV1YwY21sakozTWdaR0YwWVNCMGVYQmxYRzRnSUNBcUlFQnlaWFIxY200Z2UzTjBjbWx1WjF0ZGZTQk5aWFJ5YVdNZ2JtRnRaWE1nZDJocFkyZ2daWGh3WldOMGN5QjBhR1VnWjJsMlpXNGdaR0YwWVNCMGVYQmxYRzRnSUNBcUlFQnRaVzFpWlhKdlppQk5aV0Z6ZFhKbGNseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCblpYUk5aWFJ5YVdOQ2VVUmhkR0ZVZVhCbEtHUmhkR0ZVZVhCbE9pQkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTXBPaUJ6ZEhKcGJtZGJYU0I3WEc0Z0lDQWdjbVYwZFhKdUlFOWlhbVZqZEM1clpYbHpLRUYyWVdsc1lXSnNaVTFsZEhKcFkzTmJaR0YwWVZSNWNHVmRLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtpQlNaWFIxY201eklHMWxkSEpwWXlCdVlXMWxjeUJoZG1GcGJHRmliR1V1WEc0Z0lDQXFJRUJ0WlcxaVpYSnZaaUJOWldGemRYSmxjbHh1SUNBZ0tpOWNiaUFnYzNSaGRHbGpJR2RsZENCaGRtRnBiR0ZpYkdWTlpXRnpkWEpsY3lncE9pQnpkSEpwYm1kYlhTQjdYRzRnSUNBZ2NtVjBkWEp1SUU5aWFtVmpkQzVyWlhsektFRjJZV2xzWVdKc1pVMWxkSEpwWTNNcE8xeHVJQ0I5WEc1OVhHNGlYWDA9IiwiaW1wb3J0IHsgRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHMgfSBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCBjbGFzcyBEaXN0YW5jZU1hdHJpeFNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKHVzZUNvbmN1cnJlbnRXb3JrZXJzID0gdHJ1ZSwgdGVybWluYXRlT25Db21wbGV0ZSA9IHRydWUpIHtcbiAgICAgICAgY29uc3QgdGhyZWFkQ291bnQgPSBuYXZpZ2F0b3IuaGFyZHdhcmVDb25jdXJyZW5jeTtcbiAgICAgICAgdGhpcy5fd29ya2VyQ291bnQgPSB1c2VDb25jdXJyZW50V29ya2VycyA/IE1hdGgubWF4KHRocmVhZENvdW50IC0gMiwgMSkgOiAxO1xuICAgICAgICB0aGlzLl93b3JrZXJzID0gbmV3IEFycmF5KHRoaXMuX3dvcmtlckNvdW50KS5maWxsKG51bGwpXG4gICAgICAgICAgICAubWFwKCgpID0+IG5ldyBXb3JrZXIobmV3IFVSTCgnLi9kaXN0YW5jZS1tYXRyaXgtd29ya2VyJywgaW1wb3J0Lm1ldGEudXJsKSkpO1xuICAgICAgICB0aGlzLl90ZXJtaW5hdGVPbkNvbXBsZXRlID0gdGVybWluYXRlT25Db21wbGV0ZTtcbiAgICB9XG4gICAgO1xuICAgIGFzeW5jIGNhbGModmFsdWVzLCBmbk5hbWUsIG5vcm1hbGl6ZSA9IHRydWUsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2FsY011bHRpKFt2YWx1ZXNdLCBbZm5OYW1lXSwgbm9ybWFsaXplLCBbb3B0cyA/PyB7fV0sIFsxXSwgRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHMuTUFOSEFUVEFOKTtcbiAgICB9XG4gICAgYXN5bmMgY2FsY011bHRpKHZhbHVlcywgZm5OYW1lcywgbm9ybWFsaXplID0gdHJ1ZSwgb3B0cyA9IFt7fV0sIHdlaWdodHMgPSBbMV0sIGFnZ3JlZ2F0aW9uTWV0aG9kID0gRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHMuTUFOSEFUVEFOKSB7XG4gICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoIDwgMSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndmFsdWVzIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgYXJyYXknKTtcbiAgICAgICAgaWYgKGZuTmFtZXMubGVuZ3RoICE9PSB2YWx1ZXMubGVuZ3RoIHx8IG9wdHMubGVuZ3RoICE9PSB2YWx1ZXMubGVuZ3RoIHx8IHdlaWdodHMubGVuZ3RoICE9PSB2YWx1ZXMubGVuZ3RoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd2YWx1ZXMsIGZuTmFtZXMsIHdlaWdodHMgYW5kIG9wdHMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCcpO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBsZW4gPSB2YWx1ZXNbMF0ubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb21pc2VzID0gbmV3IEFycmF5KHRoaXMuX3dvcmtlckNvdW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCB0b3RhbExlbmd0aCA9IGxlbiAqIChsZW4gLSAxKSAvIDI7IC8vIHNpemUgb2YgcmVkdWNlZCBkaXN0YW5jZSBtYXRyaXhcbiAgICAgICAgICAgICAgICB0aGlzLl93b3JrZXJDb3VudCA9IE1hdGgubWluKHRoaXMuX3dvcmtlckNvdW50LCB0b3RhbExlbmd0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2h1bmtTaXplID0gdG90YWxMZW5ndGggLyB0aGlzLl93b3JrZXJDb3VudDtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXN0YW5jZU1hdHJpeCA9IG5ldyBGbG9hdDMyQXJyYXkodG90YWxMZW5ndGgpO1xuICAgICAgICAgICAgICAgIGxldCBlbmRSb3cgPSAwO1xuICAgICAgICAgICAgICAgIGxldCBlbmRDb2wgPSAxO1xuICAgICAgICAgICAgICAgIC8vIG1pbm1heCBmb3Igbm9ybWFsaXphdGlvblxuICAgICAgICAgICAgICAgIGxldCBsbWluID0gMDtcbiAgICAgICAgICAgICAgICBsZXQgbG1heCA9IE51bWJlci5NSU5fVkFMVUU7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl93b3JrZXJDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5mbG9vcihpICogY2h1bmtTaXplKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kID0gKGkgPT09IHRoaXMuX3dvcmtlckNvdW50IC0gMSkgPyB0b3RhbExlbmd0aCA6IE1hdGguZmxvb3IoKGkgKyAxKSAqIGNodW5rU2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0Um93ID0gZW5kUm93O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGFydENvbCA9IGVuZENvbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT09IHRoaXMuX3dvcmtlckNvdW50IC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlc2UgZm9ybXVsYXMgbWFwIHRoZSBsaW5lYXIgaW5kZXggdG8gdGhlIHVwcGVyIHRyaWFuZ3VsYXIgbWF0cml4IGluZGljZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZFJvdyA9IGxlbiAtIDIgLSBNYXRoLmZsb29yKE1hdGguc3FydCgtOCAqIGVuZCArIDQgKiBsZW4gKiAobGVuIC0gMSkgLSA3KSAvIDIgLSAwLjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kQ29sID0gZW5kIC0gbGVuICogZW5kUm93ICsgTWF0aC5mbG9vcigoZW5kUm93ICsgMSkgKiAoZW5kUm93ICsgMikgLyAyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl93b3JrZXJzW2ldLnBvc3RNZXNzYWdlKHsgdmFsdWVzLCBmbk5hbWVzLCBzdGFydFJvdywgc3RhcnRDb2wsIGNodW5ja1NpemU6IGVuZCAtIHN0YXJ0LCBvcHRzLCB3ZWlnaHRzLCBhZ2dyZWdhdGlvbk1ldGhvZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZXNbaV0gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZVdvcmtlciwgcmVqZWN0V29ya2VyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl93b3JrZXJzW2ldLm9ubWVzc2FnZSA9ICh7IGRhdGE6IHsgZXJyb3IsIGRpc3RhbmNlTWF0cml4RGF0YSwgbWluLCBtYXggfSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGVybWluYXRlT25Db21wbGV0ZSAmJiBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX3dvcmtlcnNbaV0udGVybWluYXRlKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3RXb3JrZXIoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2VNYXRyaXguc2V0KGRpc3RhbmNlTWF0cml4RGF0YSwgc3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluIDwgbG1pbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxtaW4gPSBtaW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXggPiBsbWF4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG1heCA9IG1heDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVdvcmtlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZSlcbiAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2VNYXRyaXguZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7IGRpc3RhbmNlTWF0cml4W2luZGV4XSA9ICh2YWx1ZSAtIGxtaW4pIC8gKGxtYXggLSBsbWluKTsgfSk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShkaXN0YW5jZU1hdHJpeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHRlcm1pbmF0ZSgpIHtcbiAgICAgICAgdGhpcy5fd29ya2Vycy5mb3JFYWNoKCh3b3JrZXIpID0+IHdvcmtlci50ZXJtaW5hdGUoKSk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWkdsemRHRnVZMlV0YldGMGNtbDRMWE5sY25acFkyVXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKa2FYTjBZVzVqWlMxdFlYUnlhWGd0YzJWeWRtbGpaUzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGRFFTeFBRVUZQTEVWQlFUUkNMREJDUVVFd1FpeEZRVUZETEUxQlFVMHNVMEZCVXl4RFFVRkRPMEZCUlRsRkxFMUJRVTBzVDBGQlR5eHhRa0ZCY1VJN1NVRkpPVUlzV1VGQmJVSXNiMEpCUVc5Q0xFZEJRVWNzU1VGQlNTeEZRVUZGTEcxQ1FVRnRRaXhIUVVGSExFbEJRVWs3VVVGRGVFVXNUVUZCVFN4WFFVRlhMRWRCUVVjc1UwRkJVeXhEUVVGRExHMUNRVUZ0UWl4RFFVRkRPMUZCUTJ4RUxFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NiMEpCUVc5Q0xFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1YwRkJWeXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRelZGTEVsQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU03WVVGRGNFUXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFbEJRVWtzVFVGQlRTeERRVUZETEVsQlFVa3NSMEZCUnl4RFFVRkRMREJDUVVFd1FpeEZRVUZGTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF5OUZMRWxCUVVrc1EwRkJReXh2UWtGQmIwSXNSMEZCUnl4dFFrRkJiVUlzUTBGQlF6dEpRVU5zUkN4RFFVRkRPMGxCUVVFc1EwRkJRenRKUVVWTExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCYzBJc1JVRkJSU3hOUVVGdlFpeEZRVU0xUkN4VFFVRlRMRWRCUVVjc1NVRkJTU3hGUVVGRkxFbEJRWGxDTzFGQlF6TkRMRTlCUVU4c1RVRkJUU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeFRRVUZUTEVWQlEzWkVMRU5CUVVNc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc01FSkJRVEJDTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1NVRkROMFFzUTBGQlF6dEpRVVZOTEV0QlFVc3NRMEZCUXl4VFFVRlRMRU5CUTNCQ0xFMUJRWGRDTEVWQlFVVXNUMEZCZFVJc1JVRkRha1FzVTBGQlV5eEhRVUZITEVsQlFVa3NSVUZCUlN4UFFVRTJRaXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVU51UkN4VlFVRnZRaXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEc5Q1FVRXJReXd3UWtGQk1FSXNRMEZCUXl4VFFVRlRPMUZCUlRWSExFbEJRVWtzVFVGQlRTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRPMWxCUTI1Q0xFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNkME5CUVhkRExFTkJRVU1zUTBGQlF6dFJRVU0xUkN4SlFVRkpMRTlCUVU4c1EwRkJReXhOUVVGTkxFdEJRVXNzVFVGQlRTeERRVUZETEUxQlFVMHNTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hMUVVGTExFMUJRVTBzUTBGQlF5eE5RVUZOTEVsQlFVa3NUMEZCVHl4RFFVRkRMRTFCUVUwc1MwRkJTeXhOUVVGTkxFTkJRVU1zVFVGQlRUdFpRVU4yUnl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExEWkVRVUUyUkN4RFFVRkRMRU5CUVVNN1VVRkRha1lzVDBGQlR5eEpRVUZKTEU5QlFVOHNRMEZCUXl4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRkxFMUJRVTBzUlVGQlJTeEZRVUZGTzFsQlF6TkRMRWxCUVVrN1owSkJRMFlzVFVGQlRTeEhRVUZITEVkQlFVY3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF6dG5Ra0ZETjBJc1RVRkJUU3hSUVVGUkxFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFXZENMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dG5Ra0ZETjBRc1RVRkJUU3hYUVVGWExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEd0RFFVRnJRenRuUWtGRE0wVXNTVUZCU1N4RFFVRkRMRmxCUVZrc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1YwRkJWeXhEUVVGRExFTkJRVU03WjBKQlF6ZEVMRTFCUVUwc1UwRkJVeXhIUVVGSExGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRPMmRDUVVOc1JDeE5RVUZOTEdOQlFXTXNSMEZCUnl4SlFVRkpMRmxCUVZrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dG5Ra0ZEY2tRc1NVRkJTU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETzJkQ1FVTm1MRWxCUVVrc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF6dG5Ra0ZEWml3eVFrRkJNa0k3WjBKQlF6TkNMRWxCUVVrc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF6dG5Ra0ZEWWl4SlFVRkpMRWxCUVVrc1IwRkJSeXhOUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZETzJkQ1FVTTFRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0dlFrRkRNVU1zVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFZEJRVWNzVTBGQlV5eERRVUZETEVOQlFVTTdiMEpCUTNoRExFMUJRVTBzUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhaUVVGWkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTXNRMEZCUXp0dlFrRkRNVVlzVFVGQlRTeFJRVUZSTEVkQlFVY3NUVUZCVFN4RFFVRkRPMjlDUVVONFFpeE5RVUZOTEZGQlFWRXNSMEZCUnl4TlFVRk5MRU5CUVVNN2IwSkJRM2hDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhaUVVGWkxFZEJRVWNzUTBGQlF5eEZRVUZGTzNkQ1FVTXZRaXcyUlVGQk5rVTdkMEpCUXpkRkxFMUJRVTBzUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSExFZEJRVWNzUTBGQlF5eEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU03ZDBKQlEzWkdMRTFCUVUwc1IwRkJSeXhIUVVGSExFZEJRVWNzUjBGQlJ5eEhRVUZITEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPM0ZDUVVNelJUdHZRa0ZEUkN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEZkQlFWY3NRMEZETVVJc1JVRkJReXhOUVVGTkxFVkJRVVVzVDBGQlR5eEZRVUZGTEZGQlFWRXNSVUZCUlN4UlFVRlJMRVZCUVVVc1ZVRkJWU3hGUVVGRkxFZEJRVWNzUjBGQlJ5eExRVUZMTEVWQlFVVXNTVUZCU1N4RlFVRkZMRTlCUVU4c1JVRkJSU3hwUWtGQmFVSXNSVUZCUXl4RFFVTnFSeXhEUVVGRE8yOUNRVU5HTEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFOUJRVThzUTBGQlF5eERRVUZETEdGQlFXRXNSVUZCUlN4WlFVRlpMRVZCUVVVc1JVRkJSVHQzUWtGRGVFUXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFRRVUZUTEVkQlFVY3NRMEZCUXl4RlFVRkRMRWxCUVVrc1JVRkJSU3hGUVVGRExFdEJRVXNzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZETEVWQlFVTXNSVUZCVVN4RlFVRkZPelJDUVVOdVJpeEpRVUZKTEVOQlFVTXNiMEpCUVc5Q0xFbEJRVWtzVlVGQlZTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNc1EwRkJRenMwUWtGRE5VVXNTVUZCU1N4TFFVRkxMRVZCUVVVN1owTkJRMVFzV1VGQldTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPelpDUVVOeVFqdHBRMEZCVFR0blEwRkRUQ3hqUVVGakxFTkJRVU1zUjBGQlJ5eERRVUZETEd0Q1FVRnJRaXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzJkRFFVTTVReXhKUVVGSkxFZEJRVWNzUjBGQlJ5eEpRVUZKTzI5RFFVTmFMRWxCUVVrc1IwRkJSeXhIUVVGSExFTkJRVU03WjBOQlEySXNTVUZCU1N4SFFVRkhMRWRCUVVjc1NVRkJTVHR2UTBGRFdpeEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRPMmREUVVOaUxHRkJRV0VzUlVGQlJTeERRVUZET3paQ1FVTnFRanQzUWtGRFNDeERRVUZETEVOQlFVTTdiMEpCUTBvc1EwRkJReXhEUVVGRExFTkJRVU03YVVKQlEwbzdaMEpCUTBRc1RVRkJUU3hQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMmRDUVVNMVFpeEpRVUZKTEZOQlFWTTdiMEpCUTFnc1kwRkJZeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlN4TFFVRkxMRVZCUVVVc1JVRkJSU3hIUVVGSExHTkJRV01zUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTjRSeXhQUVVGUExFTkJRVU1zWTBGQll5eERRVUZETEVOQlFVTTdZVUZEZWtJN1dVRkJReXhQUVVGUExFTkJRVU1zUlVGQlJUdG5Ra0ZEVml4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRFdEdFJRVU5JTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTB3c1EwRkJRenRKUVVWTkxGTkJRVk03VVVGRFpDeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRExFTkJRVU03U1VGRGVFUXNRMEZCUXp0RFFVTktJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHRMYm05M2JrMWxkSEpwWTNOOUlHWnliMjBnSnk0dUwzUjVjR1ZrTFcxbGRISnBZM01uTzF4dWFXMXdiM0owSUh0RWFYTjBZVzVqWlVGblozSmxaMkYwYVc5dVRXVjBhRzlrTENCRWFYTjBZVzVqWlVGblozSmxaMkYwYVc5dVRXVjBhRzlrYzMwZ1puSnZiU0FuTGk5MGVYQmxjeWM3WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJFYVhOMFlXNWpaVTFoZEhKcGVGTmxjblpwWTJVZ2UxeHVJQ0FnSUhCeWFYWmhkR1VnWDNkdmNtdGxjbk02SUZkdmNtdGxjbHRkTzF4dUlDQWdJSEJ5YVhaaGRHVWdYM2R2Y210bGNrTnZkVzUwT2lCdWRXMWlaWEk3WEc0Z0lDQWdjSEpwZG1GMFpTQmZkR1Z5YldsdVlYUmxUMjVEYjIxd2JHVjBaVG9nWW05dmJHVmhianRjYmlBZ0lDQndkV0pzYVdNZ1kyOXVjM1J5ZFdOMGIzSW9kWE5sUTI5dVkzVnljbVZ1ZEZkdmNtdGxjbk1nUFNCMGNuVmxMQ0IwWlhKdGFXNWhkR1ZQYmtOdmJYQnNaWFJsSUQwZ2RISjFaU2tnZTF4dUlDQWdJQ0FnWTI5dWMzUWdkR2h5WldGa1EyOTFiblFnUFNCdVlYWnBaMkYwYjNJdWFHRnlaSGRoY21WRGIyNWpkWEp5Wlc1amVUdGNiaUFnSUNBZ0lIUm9hWE11WDNkdmNtdGxja052ZFc1MElEMGdkWE5sUTI5dVkzVnljbVZ1ZEZkdmNtdGxjbk1nUHlCTllYUm9MbTFoZUNoMGFISmxZV1JEYjNWdWRDQXRJRElzSURFcElEb2dNVHRjYmlBZ0lDQWdJSFJvYVhNdVgzZHZjbXRsY25NZ1BTQnVaWGNnUVhKeVlYa29kR2hwY3k1ZmQyOXlhMlZ5UTI5MWJuUXBMbVpwYkd3b2JuVnNiQ2xjYmlBZ0lDQWdJQ0FnTG0xaGNDZ29LU0E5UGlCdVpYY2dWMjl5YTJWeUtHNWxkeUJWVWt3b0p5NHZaR2x6ZEdGdVkyVXRiV0YwY21sNExYZHZjbXRsY2ljc0lHbHRjRzl5ZEM1dFpYUmhMblZ5YkNrcEtUdGNiaUFnSUNBZ0lIUm9hWE11WDNSbGNtMXBibUYwWlU5dVEyOXRjR3hsZEdVZ1BTQjBaWEp0YVc1aGRHVlBia052YlhCc1pYUmxPMXh1SUNBZ0lIMDdYRzVjYmlBZ0lDQndkV0pzYVdNZ1lYTjVibU1nWTJGc1l5aDJZV3gxWlhNNklFRnljbUY1VEdsclpUeGhibmsrTENCbWJrNWhiV1U2SUV0dWIzZHVUV1YwY21samN5eGNiaUFnSUNBZ0lHNXZjbTFoYkdsNlpTQTlJSFJ5ZFdVc0lHOXdkSE0vT2lCN1cxODZJSE4wY21sdVoxMDZJR0Z1ZVgwcE9pQlFjbTl0YVhObFBFWnNiMkYwTXpKQmNuSmhlVDRnZTF4dUlDQWdJQ0FnY21WMGRYSnVJR0YzWVdsMElIUm9hWE11WTJGc1kwMTFiSFJwS0Z0MllXeDFaWE5kTENCYlptNU9ZVzFsWFN3Z2JtOXliV0ZzYVhwbExGeHVJQ0FnSUNBZ0lDQmJiM0IwY3lBL1B5QjdmVjBzSUZzeFhTd2dSR2x6ZEdGdVkyVkJaMmR5WldkaGRHbHZiazFsZEdodlpITXVUVUZPU0VGVVZFRk9LVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQndkV0pzYVdNZ1lYTjVibU1nWTJGc1kwMTFiSFJwS0Z4dUlDQWdJQ0FnZG1Gc2RXVnpPaUJCY25KaGVVeHBhMlU4WVc1NVBsdGRMQ0JtYms1aGJXVnpPaUJMYm05M2JrMWxkSEpwWTNOYlhTeGNiaUFnSUNBZ0lHNXZjbTFoYkdsNlpTQTlJSFJ5ZFdVc0lHOXdkSE02SUh0Ylh6b2djM1J5YVc1blhUb2dZVzU1ZlZ0ZElEMGdXM3Q5WFN4Y2JpQWdJQ0FnSUhkbGFXZG9kSE02SUc1MWJXSmxjbHRkSUQwZ1d6RmRMQ0JoWjJkeVpXZGhkR2x2YmsxbGRHaHZaRG9nUkdsemRHRnVZMlZCWjJkeVpXZGhkR2x2YmsxbGRHaHZaQ0E5SUVScGMzUmhibU5sUVdkbmNtVm5ZWFJwYjI1TlpYUm9iMlJ6TGsxQlRraEJWRlJCVGx4dUlDQWdJQ2s2SUZCeWIyMXBjMlU4Um14dllYUXpNa0Z5Y21GNVBpQjdYRzRnSUNBZ0lDQnBaaUFvZG1Gc2RXVnpMbXhsYm1kMGFDQThJREVwWEc0Z0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduZG1Gc2RXVnpJRzExYzNRZ1kyOXVkR0ZwYmlCaGRDQnNaV0Z6ZENCdmJtVWdZWEp5WVhrbktUdGNiaUFnSUNBZ0lHbG1JQ2htYms1aGJXVnpMbXhsYm1kMGFDQWhQVDBnZG1Gc2RXVnpMbXhsYm1kMGFDQjhmQ0J2Y0hSekxteGxibWQwYUNBaFBUMGdkbUZzZFdWekxteGxibWQwYUNCOGZDQjNaV2xuYUhSekxteGxibWQwYUNBaFBUMGdkbUZzZFdWekxteGxibWQwYUNsY2JpQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0NkMllXeDFaWE1zSUdadVRtRnRaWE1zSUhkbGFXZG9kSE1nWVc1a0lHOXdkSE1nYlhWemRDQm9ZWFpsSUhSb1pTQnpZVzFsSUd4bGJtZDBhQ2NwTzF4dUlDQWdJQ0FnY21WMGRYSnVJRzVsZHlCUWNtOXRhWE5sS0dGemVXNWpJQ2h5WlhOdmJIWmxMQ0J5WldwbFkzUXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JzWlc0Z1BTQjJZV3gxWlhOYk1GMHViR1Z1WjNSb08xeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElIQnliMjFwYzJWeklEMGdibVYzSUVGeWNtRjVQRkJ5YjIxcGMyVThkbTlwWkQ0K0tIUm9hWE11WDNkdmNtdGxja052ZFc1MEtUdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQjBiM1JoYkV4bGJtZDBhQ0E5SUd4bGJpQXFJQ2hzWlc0Z0xTQXhLU0F2SURJN0lDOHZJSE5wZW1VZ2IyWWdjbVZrZFdObFpDQmthWE4wWVc1alpTQnRZWFJ5YVhoY2JpQWdJQ0FnSUNBZ0lDQjBhR2x6TGw5M2IzSnJaWEpEYjNWdWRDQTlJRTFoZEdndWJXbHVLSFJvYVhNdVgzZHZjbXRsY2tOdmRXNTBMQ0IwYjNSaGJFeGxibWQwYUNrN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1kyaDFibXRUYVhwbElEMGdkRzkwWVd4TVpXNW5kR2dnTHlCMGFHbHpMbDkzYjNKclpYSkRiM1Z1ZER0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCa2FYTjBZVzVqWlUxaGRISnBlQ0E5SUc1bGR5QkdiRzloZERNeVFYSnlZWGtvZEc5MFlXeE1aVzVuZEdncE8xeHVJQ0FnSUNBZ0lDQWdJR3hsZENCbGJtUlNiM2NnUFNBd08xeHVJQ0FnSUNBZ0lDQWdJR3hsZENCbGJtUkRiMndnUFNBeE8xeHVJQ0FnSUNBZ0lDQWdJQzh2SUcxcGJtMWhlQ0JtYjNJZ2JtOXliV0ZzYVhwaGRHbHZibHh1SUNBZ0lDQWdJQ0FnSUd4bGRDQnNiV2x1SUQwZ01EdGNiaUFnSUNBZ0lDQWdJQ0JzWlhRZ2JHMWhlQ0E5SUU1MWJXSmxjaTVOU1U1ZlZrRk1WVVU3WEc0Z0lDQWdJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQjBhR2x6TGw5M2IzSnJaWEpEYjNWdWREc2dhU3NyS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQnpkR0Z5ZENBOUlFMWhkR2d1Wm14dmIzSW9hU0FxSUdOb2RXNXJVMmw2WlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQmxibVFnUFNBb2FTQTlQVDBnZEdocGN5NWZkMjl5YTJWeVEyOTFiblFnTFNBeEtTQS9JSFJ2ZEdGc1RHVnVaM1JvSURvZ1RXRjBhQzVtYkc5dmNpZ29hU0FySURFcElDb2dZMmgxYm10VGFYcGxLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUhOMFlYSjBVbTkzSUQwZ1pXNWtVbTkzTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2MzUmhjblJEYjJ3Z1BTQmxibVJEYjJ3N1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2FTQWhQVDBnZEdocGN5NWZkMjl5YTJWeVEyOTFiblFnTFNBeEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJRlJvWlhObElHWnZjbTExYkdGeklHMWhjQ0IwYUdVZ2JHbHVaV0Z5SUdsdVpHVjRJSFJ2SUhSb1pTQjFjSEJsY2lCMGNtbGhibWQxYkdGeUlHMWhkSEpwZUNCcGJtUnBZMlZ6WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR1Z1WkZKdmR5QTlJR3hsYmlBdElESWdMU0JOWVhSb0xtWnNiMjl5S0UxaGRHZ3VjM0Z5ZENndE9DQXFJR1Z1WkNBcklEUWdLaUJzWlc0Z0tpQW9iR1Z1SUMwZ01Ta2dMU0EzS1NBdklESWdMU0F3TGpVcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGJtUkRiMndnUFNCbGJtUWdMU0JzWlc0Z0tpQmxibVJTYjNjZ0t5Qk5ZWFJvTG1ac2IyOXlLQ2hsYm1SU2IzY2dLeUF4S1NBcUlDaGxibVJTYjNjZ0t5QXlLU0F2SURJcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1ZmQyOXlhMlZ5YzF0cFhTNXdiM04wVFdWemMyRm5aU2hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdlM1poYkhWbGN5d2dabTVPWVcxbGN5d2djM1JoY25SU2IzY3NJSE4wWVhKMFEyOXNMQ0JqYUhWdVkydFRhWHBsT2lCbGJtUWdMU0J6ZEdGeWRDd2diM0IwY3l3Z2QyVnBaMmgwY3l3Z1lXZG5jbVZuWVhScGIyNU5aWFJvYjJSOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdjSEp2YldselpYTmJhVjBnUFNCdVpYY2dVSEp2YldselpTZ29jbVZ6YjJ4MlpWZHZjbXRsY2l3Z2NtVnFaV04wVjI5eWEyVnlLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVYM2R2Y210bGNuTmJhVjB1YjI1dFpYTnpZV2RsSUQwZ0tIdGtZWFJoT2lCN1pYSnliM0lzSUdScGMzUmhibU5sVFdGMGNtbDRSR0YwWVN3Z2JXbHVMQ0J0WVhoOWZTazZJSFp2YVdRZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdVgzUmxjbTFwYm1GMFpVOXVRMjl0Y0d4bGRHVWdKaVlnYzJWMFZHbHRaVzkxZENnb0tTQTlQaUIwYUdsekxsOTNiM0pyWlhKelcybGRMblJsY20xcGJtRjBaU2dwS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9aWEp5YjNJcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsYW1WamRGZHZjbXRsY2lobGNuSnZjaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdScGMzUmhibU5sVFdGMGNtbDRMbk5sZENoa2FYTjBZVzVqWlUxaGRISnBlRVJoZEdFc0lITjBZWEowS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2h0YVc0Z1BDQnNiV2x1S1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnNiV2x1SUQwZ2JXbHVPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHMWhlQ0ErSUd4dFlYZ3BYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUd4dFlYZ2dQU0J0WVhnN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWE52YkhabFYyOXlhMlZ5S0NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCOU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUdGM1lXbDBJRkJ5YjIxcGMyVXVZV3hzS0hCeWIyMXBjMlZ6S1R0Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvYm05eWJXRnNhWHBsS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdaR2x6ZEdGdVkyVk5ZWFJ5YVhndVptOXlSV0ZqYUNnb2RtRnNkV1VzSUdsdVpHVjRLU0E5UGlCN0lHUnBjM1JoYm1ObFRXRjBjbWw0VzJsdVpHVjRYU0E5SUNoMllXeDFaU0F0SUd4dGFXNHBJQzhnS0d4dFlYZ2dMU0JzYldsdUtUc2dmU2s3WEc0Z0lDQWdJQ0FnSUNBZ2NtVnpiMngyWlNoa2FYTjBZVzVqWlUxaGRISnBlQ2s3WEc0Z0lDQWdJQ0FnSUgwZ1kyRjBZMmdnS0dVcElIdGNiaUFnSUNBZ0lDQWdJQ0J5WldwbFkzUW9aU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhCMVlteHBZeUIwWlhKdGFXNWhkR1VvS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdJQ0IwYUdsekxsOTNiM0pyWlhKekxtWnZja1ZoWTJnb0tIZHZjbXRsY2lrZ1BUNGdkMjl5YTJWeUxuUmxjbTFwYm1GMFpTZ3BLVHRjYmlBZ0lDQjlYRzU5WEc0aVhYMD0iLCIvKipcbiAqIEBsaWNlbnNlXG4gKlxuICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIExMQy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqL1xuLyoqXG4gKiBTaW1wbGUgcmFuZG9tIGludGVnZXIgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRhdVJhbmRJbnQobiwgcmFuZG9tKSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IocmFuZG9tKCkgKiBuKTtcbn1cbi8qKlxuICogU2ltcGxlIHJhbmRvbSBmbG9hdCBmdW5jdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gdGF1UmFuZChyYW5kb20pIHtcbiAgICByZXR1cm4gcmFuZG9tKCk7XG59XG4vKipcbiAqIENvbXB1dGUgdGhlIChzdGFuZGFyZCBsMikgbm9ybSBvZiBhIHZlY3Rvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm0odmVjKSB7XG4gICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHZlYylcbiAgICAgICAgcmVzdWx0ICs9IGl0ZW0gKiogMjtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KHJlc3VsdCk7XG59XG4vKipcbiAqIENyZWF0ZXMgYW4gZW1wdHkgYXJyYXkgKGZpbGxlZCB3aXRoIHVuZGVmaW5lZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtcHR5KG4pIHtcbiAgICBjb25zdCBvdXRwdXQgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKylcbiAgICAgICAgb3V0cHV0LnB1c2godW5kZWZpbmVkKTtcbiAgICByZXR1cm4gb3V0cHV0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGZpbGxlZCB3aXRoIGluZGV4IHZhbHVlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmFuZ2Uobikge1xuICAgIHJldHVybiBlbXB0eShuKS5tYXAoKF8sIGkpID0+IGkpO1xufVxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGZpbGxlZCB3aXRoIGEgc3BlY2lmaWMgdmFsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbGxlZChuLCB2KSB7XG4gICAgcmV0dXJuIGVtcHR5KG4pLm1hcCgoKSA9PiB2KTtcbn1cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBmaWxsZWQgd2l0aCB6ZXJvc1xuICovXG5leHBvcnQgZnVuY3Rpb24gemVyb3Mobikge1xuICAgIHJldHVybiBmaWxsZWQobiwgMCk7XG59XG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgZmlsbGVkIHdpdGggb25lc1xuICovXG5leHBvcnQgZnVuY3Rpb24gb25lcyhuKSB7XG4gICAgcmV0dXJuIGZpbGxlZChuLCAxKTtcbn1cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBmcm9tIGEgdG8gYiwgb2YgbGVuZ3RoIGxlbiwgaW5jbHVzaXZlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaW5lYXIoYSwgYiwgbGVuKSB7XG4gICAgcmV0dXJuIGVtcHR5KGxlbikubWFwKChfLCBpKSA9PiB7XG4gICAgICAgIHJldHVybiBhICsgaSAqICgoYiAtIGEpIC8gKGxlbiAtIDEpKTtcbiAgICB9KTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgc3VtIG9mIGFuIGFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdW0oaW5wdXQpIHtcbiAgICByZXR1cm4gaW5wdXQucmVkdWNlKChzdW0sIHZhbCkgPT4gc3VtICsgdmFsKTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgbWVhbiBvZiBhbiBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVhbihpbnB1dCkge1xuICAgIHJldHVybiBzdW0oaW5wdXQpIC8gaW5wdXQubGVuZ3RoO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBtYXhpbXVtIHZhbHVlIG9mIGFuIGFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXgoaW5wdXQpIHtcbiAgICBsZXQgbWF4ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKVxuICAgICAgICBtYXggPSBpbnB1dFtpXSA+IG1heCA/IGlucHV0W2ldIDogbWF4O1xuICAgIHJldHVybiBtYXg7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUgb2YgYSAyZCBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWF4MmQoaW5wdXQpIHtcbiAgICBsZXQgbWF4ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgaW5wdXRbaV0ubGVuZ3RoOyBqKyspXG4gICAgICAgICAgICBtYXggPSBpbnB1dFtpXVtqXSA+IG1heCA/IGlucHV0W2ldW2pdIDogbWF4O1xuICAgIH1cbiAgICByZXR1cm4gbWF4O1xufVxuLyoqXG4gKiBHZW5lcmF0ZSBuU2FtcGxlcyBtYW55IGludGVnZXJzIGZyb20gMCB0byBwb29sU2l6ZSBzdWNoIHRoYXQgbm9cbiAqIGludGVnZXIgaXMgc2VsZWN0ZWQgdHdpY2UuIFRoZSBkdXBsaWNhdGlvbiBjb25zdHJhaW50IGlzIGFjaGlldmVkIHZpYVxuICogcmVqZWN0aW9uIHNhbXBsaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVqZWN0aW9uU2FtcGxlKG5TYW1wbGVzLCBwb29sU2l6ZSwgcmFuZG9tKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gemVyb3MoblNhbXBsZXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgblNhbXBsZXM7IGkrKykge1xuICAgICAgICBsZXQgcmVqZWN0U2FtcGxlID0gdHJ1ZTtcbiAgICAgICAgd2hpbGUgKHJlamVjdFNhbXBsZSkge1xuICAgICAgICAgICAgY29uc3QgaiA9IHRhdVJhbmRJbnQocG9vbFNpemUsIHJhbmRvbSk7XG4gICAgICAgICAgICBsZXQgYnJva2VuID0gZmFsc2U7XG4gICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGk7IGsrKykge1xuICAgICAgICAgICAgICAgIGlmIChqID09PSByZXN1bHRba10pIHtcbiAgICAgICAgICAgICAgICAgICAgYnJva2VuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFicm9rZW4pXG4gICAgICAgICAgICAgICAgcmVqZWN0U2FtcGxlID0gZmFsc2U7XG4gICAgICAgICAgICByZXN1bHRbaV0gPSBqO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4vKipcbiAqIFJlc2hhcGVzIGEgMWQgYXJyYXkgaW50byBhIDJEIG9mIGdpdmVuIGRpbWVuc2lvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNoYXBlMmQoeCwgYSwgYikge1xuICAgIGNvbnN0IHJvd3MgPSBbXTtcbiAgICAvLyBsZXQgY291bnQgPSAwO1xuICAgIGxldCBpbmRleCA9IDA7XG4gICAgaWYgKHgubGVuZ3RoICE9PSBhICogYilcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcnJheSBkaW1lbnNpb25zIG11c3QgbWF0Y2ggaW5wdXQgbGVuZ3RoLicpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYTsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNvbCA9IFtdO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGI7IGorKykge1xuICAgICAgICAgICAgY29sLnB1c2goeFtpbmRleF0pO1xuICAgICAgICAgICAgaW5kZXggKz0gMTtcbiAgICAgICAgfVxuICAgICAgICByb3dzLnB1c2goY29sKTtcbiAgICAgICAgLy8gY291bnQgKz0gMTtcbiAgICB9XG4gICAgcmV0dXJuIHJvd3M7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkWFJwYkhNdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUoxZEdsc2N5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVRzN096czdPenM3T3pzN096czdPenM3UjBGcFFrYzdRVUZKU0RzN1IwRkZSenRCUVVOSUxFMUJRVTBzVlVGQlZTeFZRVUZWTEVOQlFVTXNRMEZCVXl4RlFVRkZMRTFCUVdkQ08wbEJRM0JFTEU5QlFVOHNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTnNReXhEUVVGRE8wRkJSVVE3TzBkQlJVYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1QwRkJUeXhEUVVGRExFMUJRV2RDTzBsQlEzUkRMRTlCUVU4c1RVRkJUU3hGUVVGRkxFTkJRVU03UVVGRGJFSXNRMEZCUXp0QlFVTkVPenRIUVVWSE8wRkJRMGdzVFVGQlRTeFZRVUZWTEVsQlFVa3NRMEZCUXl4SFFVRmhPMGxCUTJoRExFbEJRVWtzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVTm1MRXRCUVVzc1RVRkJUU3hKUVVGSkxFbEJRVWtzUjBGQlJ6dFJRVU53UWl4TlFVRk5MRWxCUVVrc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVVYwUWl4UFFVRlBMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdRVUZETTBJc1EwRkJRenRCUVVWRU96dEhRVVZITzBGQlEwZ3NUVUZCVFN4VlFVRlZMRXRCUVVzc1EwRkJReXhEUVVGVE8wbEJRemRDTEUxQlFVMHNUVUZCVFN4SFFVRm5RaXhGUVVGRkxFTkJRVU03U1VGREwwSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVN1VVRkRlRUlzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRKUVVWNlFpeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVVE3TzBkQlJVYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1MwRkJTeXhEUVVGRExFTkJRVk03U1VGRE4wSXNUMEZCVHl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEYmtNc1EwRkJRenRCUVVWRU96dEhRVVZITzBGQlEwZ3NUVUZCVFN4VlFVRlZMRTFCUVUwc1EwRkJReXhEUVVGVExFVkJRVVVzUTBGQlV6dEpRVU42UXl4UFFVRlBMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGREwwSXNRMEZCUXp0QlFVVkVPenRIUVVWSE8wRkJRMGdzVFVGQlRTeFZRVUZWTEV0QlFVc3NRMEZCUXl4RFFVRlRPMGxCUXpkQ0xFOUJRVThzVFVGQlRTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOMFFpeERRVUZETzBGQlJVUTdPMGRCUlVjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzU1VGQlNTeERRVUZETEVOQlFWTTdTVUZETlVJc1QwRkJUeXhOUVVGTkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNSQ0xFTkJRVU03UVVGRlJEczdSMEZGUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hOUVVGTkxFTkJRVU1zUTBGQlV5eEZRVUZGTEVOQlFWTXNSVUZCUlN4SFFVRlhPMGxCUTNSRUxFOUJRVThzUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0UlFVTTNRaXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM1pETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTB3c1EwRkJRenRCUVVWRU96dEhRVVZITzBGQlEwZ3NUVUZCVFN4VlFVRlZMRWRCUVVjc1EwRkJReXhMUVVGbE8wbEJRMnBETEU5QlFVOHNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSVUZCUlN4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF6dEJRVU12UXl4RFFVRkRPMEZCUlVRN08wZEJSVWM3UVVGRFNDeE5RVUZOTEZWQlFWVXNTVUZCU1N4RFFVRkRMRXRCUVdVN1NVRkRiRU1zVDBGQlR5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF6dEJRVU51UXl4RFFVRkRPMEZCUlVRN08wZEJSVWM3UVVGRFNDeE5RVUZOTEZWQlFWVXNSMEZCUnl4RFFVRkRMRXRCUVdVN1NVRkRha01zU1VGQlNTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTFvc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlEyNURMRWRCUVVjc1IwRkJSeXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJRenRKUVVWNFF5eFBRVUZQTEVkQlFVY3NRMEZCUXp0QlFVTmlMRU5CUVVNN1FVRkZSRHM3UjBGRlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4TFFVRkxMRU5CUVVNc1MwRkJhVUk3U1VGRGNrTXNTVUZCU1N4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRMW9zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1VVRkRja01zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRM1JETEVkQlFVY3NSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF6dExRVU12UXp0SlFVTkVMRTlCUVU4c1IwRkJSeXhEUVVGRE8wRkJRMklzUTBGQlF6dEJRVVZFT3pzN08wZEJTVWM3UVVGRFNDeE5RVUZOTEZWQlFWVXNaVUZCWlN4RFFVTTNRaXhSUVVGblFpeEZRVU5vUWl4UlFVRm5RaXhGUVVOb1FpeE5RVUZuUWp0SlFVVm9RaXhOUVVGTkxFMUJRVTBzUjBGQlJ5eExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1NVRkRMMElzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExGRkJRVkVzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0UlFVTnFReXhKUVVGSkxGbEJRVmtzUjBGQlJ5eEpRVUZKTEVOQlFVTTdVVUZEZUVJc1QwRkJUeXhaUVVGWkxFVkJRVVU3V1VGRGJrSXNUVUZCVFN4RFFVRkRMRWRCUVVjc1ZVRkJWU3hEUVVGRExGRkJRVkVzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0WlFVTjJReXhKUVVGSkxFMUJRVTBzUjBGQlJ5eExRVUZMTEVOQlFVTTdXVUZEYmtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdG5Ra0ZETVVJc1NVRkJTU3hEUVVGRExFdEJRVXNzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZPMjlDUVVOdVFpeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRPMjlDUVVOa0xFMUJRVTA3YVVKQlExQTdZVUZEUmp0WlFVTkVMRWxCUVVrc1EwRkJReXhOUVVGTk8yZENRVU5VTEZsQlFWa3NSMEZCUnl4TFFVRkxMRU5CUVVNN1dVRkZka0lzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRUUVVObU8wdEJRMFk3U1VGRFJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVVE3TzBkQlJVYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1UwRkJVeXhEUVVGSkxFTkJRVTBzUlVGQlJTeERRVUZUTEVWQlFVVXNRMEZCVXp0SlFVTjJSQ3hOUVVGTkxFbEJRVWtzUjBGQlZTeEZRVUZGTEVOQlFVTTdTVUZEZGtJc2FVSkJRV2xDTzBsQlEycENMRWxCUVVrc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF6dEpRVVZrTEVsQlFVa3NRMEZCUXl4RFFVRkRMRTFCUVUwc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF6dFJRVU53UWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExESkRRVUV5UXl4RFFVRkRMRU5CUVVNN1NVRkhMMFFzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0UlFVTXhRaXhOUVVGTkxFZEJRVWNzUjBGQlVTeEZRVUZGTEVOQlFVTTdVVUZEY0VJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU14UWl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTI1Q0xFdEJRVXNzU1VGQlNTeERRVUZETEVOQlFVTTdVMEZEV2p0UlFVTkVMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEWml4alFVRmpPMHRCUTJZN1NVRkRSQ3hQUVVGUExFbEJRVWtzUTBGQlF6dEJRVU5rTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRUJzYVdObGJuTmxYRzRnS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRrZ1IyOXZaMnhsSUV4TVF5NGdRV3hzSUZKcFoyaDBjeUJTWlhObGNuWmxaQzVjYmlBcVhHNGdLaUJNYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUVhCaFkyaGxJRXhwWTJWdWMyVXNJRlpsY25OcGIyNGdNaTR3SUNoMGFHVWdYQ0pNYVdObGJuTmxYQ0lwTzF4dUlDb2dlVzkxSUcxaGVTQnViM1FnZFhObElIUm9hWE1nWm1sc1pTQmxlR05sY0hRZ2FXNGdZMjl0Y0d4cFlXNWpaU0IzYVhSb0lIUm9aU0JNYVdObGJuTmxMbHh1SUNvZ1dXOTFJRzFoZVNCdlluUmhhVzRnWVNCamIzQjVJRzltSUhSb1pTQk1hV05sYm5ObElHRjBYRzRnS2x4dUlDb2dJQ0FnSUdoMGRIQTZMeTkzZDNjdVlYQmhZMmhsTG05eVp5OXNhV05sYm5ObGN5OU1TVU5GVGxORkxUSXVNRnh1SUNwY2JpQXFJRlZ1YkdWemN5QnlaWEYxYVhKbFpDQmllU0JoY0hCc2FXTmhZbXhsSUd4aGR5QnZjaUJoWjNKbFpXUWdkRzhnYVc0Z2QzSnBkR2x1Wnl3Z2MyOW1kSGRoY21WY2JpQXFJR1JwYzNSeWFXSjFkR1ZrSUhWdVpHVnlJSFJvWlNCTWFXTmxibk5sSUdseklHUnBjM1J5YVdKMWRHVmtJRzl1SUdGdUlGd2lRVk1nU1ZOY0lpQkNRVk5KVXl4Y2JpQXFJRmRKVkVoUFZWUWdWMEZTVWtGT1ZFbEZVeUJQVWlCRFQwNUVTVlJKVDA1VElFOUdJRUZPV1NCTFNVNUVMQ0JsYVhSb1pYSWdaWGh3Y21WemN5QnZjaUJwYlhCc2FXVmtMbHh1SUNvZ1UyVmxJSFJvWlNCTWFXTmxibk5sSUdadmNpQjBhR1VnYzNCbFkybG1hV01nYkdGdVozVmhaMlVnWjI5MlpYSnVhVzVuSUhCbGNtMXBjM05wYjI1eklHRnVaRnh1SUNvZ2JHbHRhWFJoZEdsdmJuTWdkVzVrWlhJZ2RHaGxJRXhwWTJWdWMyVXVYRzRnS2lBOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmlBcUwxeHVYRzVwYlhCdmNuUWdlMUpoYm1SdmJVWnVmU0JtY205dElDY3VMM1Z0WVhBbk8xeHVYRzR2S2lwY2JpQXFJRk5wYlhCc1pTQnlZVzVrYjIwZ2FXNTBaV2RsY2lCbWRXNWpkR2x2Ymx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdkR0YxVW1GdVpFbHVkQ2h1T2lCdWRXMWlaWElzSUhKaGJtUnZiVG9nVW1GdVpHOXRSbTRwSUh0Y2JpQWdjbVYwZFhKdUlFMWhkR2d1Wm14dmIzSW9jbUZ1Wkc5dEtDa2dLaUJ1S1R0Y2JuMWNibHh1THlvcVhHNGdLaUJUYVcxd2JHVWdjbUZ1Wkc5dElHWnNiMkYwSUdaMWJtTjBhVzl1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjBZWFZTWVc1a0tISmhibVJ2YlRvZ1VtRnVaRzl0Um00cElIdGNiaUFnY21WMGRYSnVJSEpoYm1SdmJTZ3BPMXh1ZlZ4dUx5b3FYRzRnS2lCRGIyMXdkWFJsSUhSb1pTQW9jM1JoYm1SaGNtUWdiRElwSUc1dmNtMGdiMllnWVNCMlpXTjBiM0l1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnViM0p0S0habFl6b2diblZ0WW1WeVcxMHBJSHRjYmlBZ2JHVjBJSEpsYzNWc2RDQTlJREE3WEc0Z0lHWnZjaUFvWTI5dWMzUWdhWFJsYlNCdlppQjJaV01wWEc0Z0lDQWdjbVZ6ZFd4MElDczlJR2wwWlcwZ0tpb2dNanRjYmx4dUlDQnlaWFIxY200Z1RXRjBhQzV6Y1hKMEtISmxjM1ZzZENrN1hHNTlYRzVjYmk4cUtseHVJQ29nUTNKbFlYUmxjeUJoYmlCbGJYQjBlU0JoY25KaGVTQW9abWxzYkdWa0lIZHBkR2dnZFc1a1pXWnBibVZrS1Z4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaVzF3ZEhrb2Jqb2diblZ0WW1WeUtUb2dkVzVrWldacGJtVmtXMTBnZTF4dUlDQmpiMjV6ZENCdmRYUndkWFE2SUhWdVpHVm1hVzVsWkZ0ZElEMGdXMTA3WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dianNnYVNzcktWeHVJQ0FnSUc5MWRIQjFkQzV3ZFhOb0tIVnVaR1ZtYVc1bFpDazdYRzVjYmlBZ2NtVjBkWEp1SUc5MWRIQjFkRHRjYm4xY2JseHVMeW9xWEc0Z0tpQkRjbVZoZEdWeklHRnVJR0Z5Y21GNUlHWnBiR3hsWkNCM2FYUm9JR2x1WkdWNElIWmhiSFZsYzF4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjbUZ1WjJVb2Jqb2diblZ0WW1WeUtUb2diblZ0WW1WeVcxMGdlMXh1SUNCeVpYUjFjbTRnWlcxd2RIa29iaWt1YldGd0tDaGZMQ0JwS1NBOVBpQnBLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkRjbVZoZEdWeklHRnVJR0Z5Y21GNUlHWnBiR3hsWkNCM2FYUm9JR0VnYzNCbFkybG1hV01nZG1Gc2RXVmNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdacGJHeGxaQ2h1T2lCdWRXMWlaWElzSUhZNklHNTFiV0psY2lrNklHNTFiV0psY2x0ZElIdGNiaUFnY21WMGRYSnVJR1Z0Y0hSNUtHNHBMbTFoY0Nnb0tTQTlQaUIyS1R0Y2JuMWNibHh1THlvcVhHNGdLaUJEY21WaGRHVnpJR0Z1SUdGeWNtRjVJR1pwYkd4bFpDQjNhWFJvSUhwbGNtOXpYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCNlpYSnZjeWh1T2lCdWRXMWlaWElwT2lCdWRXMWlaWEpiWFNCN1hHNGdJSEpsZEhWeWJpQm1hV3hzWldRb2Jpd2dNQ2s3WEc1OVhHNWNiaThxS2x4dUlDb2dRM0psWVhSbGN5QmhiaUJoY25KaGVTQm1hV3hzWldRZ2QybDBhQ0J2Ym1WelhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ2Ym1WektHNDZJRzUxYldKbGNpazZJRzUxYldKbGNsdGRJSHRjYmlBZ2NtVjBkWEp1SUdacGJHeGxaQ2h1TENBeEtUdGNibjFjYmx4dUx5b3FYRzRnS2lCRGNtVmhkR1Z6SUdGdUlHRnljbUY1SUdaeWIyMGdZU0IwYnlCaUxDQnZaaUJzWlc1bmRHZ2diR1Z1TENCcGJtTnNkWE5wZG1WY2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR3hwYm1WaGNpaGhPaUJ1ZFcxaVpYSXNJR0k2SUc1MWJXSmxjaXdnYkdWdU9pQnVkVzFpWlhJcE9pQnVkVzFpWlhKYlhTQjdYRzRnSUhKbGRIVnliaUJsYlhCMGVTaHNaVzRwTG0xaGNDZ29YeXdnYVNrZ1BUNGdlMXh1SUNBZ0lISmxkSFZ5YmlCaElDc2dhU0FxSUNnb1lpQXRJR0VwSUM4Z0tHeGxiaUF0SURFcEtUdGNiaUFnZlNrN1hHNTlYRzVjYmk4cUtseHVJQ29nVW1WMGRYSnVjeUIwYUdVZ2MzVnRJRzltSUdGdUlHRnljbUY1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnpkVzBvYVc1d2RYUTZJRzUxYldKbGNsdGRLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUdsdWNIVjBMbkpsWkhWalpTZ29jM1Z0TENCMllXd3BJRDArSUhOMWJTQXJJSFpoYkNrN1hHNTlYRzVjYmk4cUtseHVJQ29nVW1WMGRYSnVjeUIwYUdVZ2JXVmhiaUJ2WmlCaGJpQmhjbkpoZVZ4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdiV1ZoYmlocGJuQjFkRG9nYm5WdFltVnlXMTBwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z2MzVnRLR2x1Y0hWMEtTQXZJR2x1Y0hWMExteGxibWQwYUR0Y2JuMWNibHh1THlvcVhHNGdLaUJTWlhSMWNtNXpJSFJvWlNCdFlYaHBiWFZ0SUhaaGJIVmxJRzltSUdGdUlHRnljbUY1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnRZWGdvYVc1d2RYUTZJRzUxYldKbGNsdGRLVG9nYm5WdFltVnlJSHRjYmlBZ2JHVjBJRzFoZUNBOUlEQTdYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2FXNXdkWFF1YkdWdVozUm9PeUJwS3lzcFhHNGdJQ0FnYldGNElEMGdhVzV3ZFhSYmFWMGdQaUJ0WVhnZ1B5QnBibkIxZEZ0cFhTQTZJRzFoZUR0Y2JseHVJQ0J5WlhSMWNtNGdiV0Y0TzF4dWZWeHVYRzR2S2lwY2JpQXFJRkpsZEhWeWJuTWdkR2hsSUcxaGVHbHRkVzBnZG1Gc2RXVWdiMllnWVNBeVpDQmhjbkpoZVZ4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdiV0Y0TW1Rb2FXNXdkWFE2SUc1MWJXSmxjbHRkVzEwcE9pQnVkVzFpWlhJZ2UxeHVJQ0JzWlhRZ2JXRjRJRDBnTUR0Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JwYm5CMWRDNXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJR1p2Y2lBb2JHVjBJR29nUFNBd095QnFJRHdnYVc1d2RYUmJhVjB1YkdWdVozUm9PeUJxS3lzcFhHNGdJQ0FnSUNCdFlYZ2dQU0JwYm5CMWRGdHBYVnRxWFNBK0lHMWhlQ0EvSUdsdWNIVjBXMmxkVzJwZElEb2diV0Y0TzF4dUlDQjlYRzRnSUhKbGRIVnliaUJ0WVhnN1hHNTlYRzVjYmk4cUtseHVJQ29nUjJWdVpYSmhkR1VnYmxOaGJYQnNaWE1nYldGdWVTQnBiblJsWjJWeWN5Qm1jbTl0SURBZ2RHOGdjRzl2YkZOcGVtVWdjM1ZqYUNCMGFHRjBJRzV2WEc0Z0tpQnBiblJsWjJWeUlHbHpJSE5sYkdWamRHVmtJSFIzYVdObExpQlVhR1VnWkhWd2JHbGpZWFJwYjI0Z1kyOXVjM1J5WVdsdWRDQnBjeUJoWTJocFpYWmxaQ0IyYVdGY2JpQXFJSEpsYW1WamRHbHZiaUJ6WVcxd2JHbHVaeTVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlISmxhbVZqZEdsdmJsTmhiWEJzWlNoY2JpQWdibE5oYlhCc1pYTTZJRzUxYldKbGNpeGNiaUFnY0c5dmJGTnBlbVU2SUc1MWJXSmxjaXhjYmlBZ2NtRnVaRzl0T2lCU1lXNWtiMjFHYmx4dUtUb2diblZ0WW1WeVcxMGdlMXh1SUNCamIyNXpkQ0J5WlhOMWJIUWdQU0I2WlhKdmN5aHVVMkZ0Y0d4bGN5azdYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2JsTmhiWEJzWlhNN0lHa3JLeWtnZTF4dUlDQWdJR3hsZENCeVpXcGxZM1JUWVcxd2JHVWdQU0IwY25WbE8xeHVJQ0FnSUhkb2FXeGxJQ2h5WldwbFkzUlRZVzF3YkdVcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdvZ1BTQjBZWFZTWVc1a1NXNTBLSEJ2YjJ4VGFYcGxMQ0J5WVc1a2IyMHBPMXh1SUNBZ0lDQWdiR1YwSUdKeWIydGxiaUE5SUdaaGJITmxPMXh1SUNBZ0lDQWdabTl5SUNoc1pYUWdheUE5SURBN0lHc2dQQ0JwT3lCckt5c3BJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHb2dQVDA5SUhKbGMzVnNkRnRyWFNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR0p5YjJ0bGJpQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHbG1JQ2doWW5KdmEyVnVLVnh1SUNBZ0lDQWdJQ0J5WldwbFkzUlRZVzF3YkdVZ1BTQm1ZV3h6WlR0Y2JseHVJQ0FnSUNBZ2NtVnpkV3gwVzJsZElEMGdhanRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JuMWNibHh1THlvcVhHNGdLaUJTWlhOb1lYQmxjeUJoSURGa0lHRnljbUY1SUdsdWRHOGdZU0F5UkNCdlppQm5hWFpsYmlCa2FXMWxibk5wYjI1ekxseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY21WemFHRndaVEprUEZRK0tIZzZJRlJiWFN3Z1lUb2diblZ0WW1WeUxDQmlPaUJ1ZFcxaVpYSXBPaUJVVzExYlhTQjdYRzRnSUdOdmJuTjBJSEp2ZDNNNklGUmJYVnRkSUQwZ1cxMDdYRzRnSUM4dklHeGxkQ0JqYjNWdWRDQTlJREE3WEc0Z0lHeGxkQ0JwYm1SbGVDQTlJREE3WEc1Y2JpQWdhV1lnS0hndWJHVnVaM1JvSUNFOVBTQmhJQ29nWWlsY2JpQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMEZ5Y21GNUlHUnBiV1Z1YzJsdmJuTWdiWFZ6ZENCdFlYUmphQ0JwYm5CMWRDQnNaVzVuZEdndUp5azdYRzVjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR0U3SUdrckt5a2dlMXh1SUNBZ0lHTnZibk4wSUdOdmJEb2dWRnRkSUQwZ1cxMDdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FpQTlJREE3SUdvZ1BDQmlPeUJxS3lzcElIdGNiaUFnSUNBZ0lHTnZiQzV3ZFhOb0tIaGJhVzVrWlhoZEtUdGNiaUFnSUNBZ0lHbHVaR1Y0SUNzOUlERTdYRzRnSUNBZ2ZWeHVJQ0FnSUhKdmQzTXVjSFZ6YUNoamIyd3BPMXh1SUNBZ0lDOHZJR052ZFc1MElDczlJREU3WEc0Z0lIMWNiaUFnY21WMGRYSnVJSEp2ZDNNN1hHNTlYRzRpWFgwPSIsIi8qKlxuICogQGxpY2Vuc2VcbiAqXG4gKiBDb3B5cmlnaHQgMjAxOSBHb29nbGUgTExDLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICovXG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuL3V0aWxzJztcbi8qKlxuICogIENvbnN0cnVjdG9yIGZvciB0aGUgaGVhcCBvYmplY3RzLiBUaGUgaGVhcHMgYXJlIHVzZWRcbiAqIGZvciBhcHByb3hpbWF0ZSBuZWFyZXN0IG5laWdoYm9yIHNlYXJjaCwgbWFpbnRhaW5pbmcgYSBsaXN0IG9mIHBvdGVudGlhbFxuICogbmVpZ2hib3JzIHNvcnRlZCBieSB0aGVpciBkaXN0YW5jZS4gV2UgYWxzbyBmbGFnIGlmIHBvdGVudGlhbCBuZWlnaGJvcnNcbiAqIGFyZSBuZXdseSBhZGRlZCB0byB0aGUgbGlzdCBvciBub3QuIEludGVybmFsbHkgdGhpcyBpcyBzdG9yZWQgYXNcbiAqIGEgc2luZ2xlIGFycmF5OyB0aGUgZmlyc3QgYXhpcyBkZXRlcm1pbmVzIHdoZXRoZXIgd2UgYXJlIGxvb2tpbmcgYXQgdGhlXG4gKiBhcnJheSBvZiBjYW5kaWRhdGUgaW5kaWNlcywgdGhlIGFycmF5IG9mIGRpc3RhbmNlcywgb3IgdGhlIGZsYWcgYXJyYXkgZm9yXG4gKiB3aGV0aGVyIGVsZW1lbnRzIGFyZSBuZXcgb3Igbm90LiBFYWNoIG9mIHRoZXNlIGFycmF5cyBhcmUgb2Ygc2hhcGVcbiAqIChgYG5Qb2ludHNgYCwgYGBzaXplYGApXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlSGVhcChuUG9pbnRzLCBzaXplKSB7XG4gICAgY29uc3QgbWFrZUFycmF5cyA9IChmaWxsVmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHV0aWxzLmVtcHR5KG5Qb2ludHMpLm1hcCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdXRpbHMuZmlsbGVkKHNpemUsIGZpbGxWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgY29uc3QgaGVhcCA9IFtdO1xuICAgIGhlYXAucHVzaChtYWtlQXJyYXlzKC0xKSk7XG4gICAgaGVhcC5wdXNoKG1ha2VBcnJheXMoSW5maW5pdHkpKTtcbiAgICBoZWFwLnB1c2gobWFrZUFycmF5cygwKSk7XG4gICAgcmV0dXJuIGhlYXA7XG59XG4vKipcbiAqIEdlbmVyYXRlIG5fc2FtcGxlcyBtYW55IGludGVnZXJzIGZyb20gMCB0byBwb29sX3NpemUgc3VjaCB0aGF0IG5vXG4gKiBpbnRlZ2VyIGlzIHNlbGVjdGVkIHR3aWNlLiBUaGUgZHVwbGljYXRpb24gY29uc3RyYWludCBpcyBhY2hpZXZlZCB2aWFcbiAqIHJlamVjdGlvbiBzYW1wbGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlamVjdGlvblNhbXBsZShuU2FtcGxlcywgcG9vbFNpemUsIHJhbmRvbSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IHV0aWxzLnplcm9zKG5TYW1wbGVzKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5TYW1wbGVzOyBpKyspIHtcbiAgICAgICAgbGV0IHJlamVjdFNhbXBsZSA9IHRydWU7XG4gICAgICAgIGxldCBqID0gMDtcbiAgICAgICAgd2hpbGUgKHJlamVjdFNhbXBsZSkge1xuICAgICAgICAgICAgaiA9IHV0aWxzLnRhdVJhbmRJbnQocG9vbFNpemUsIHJhbmRvbSk7XG4gICAgICAgICAgICBsZXQgYnJva2VuID0gZmFsc2U7XG4gICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGk7IGsrKykge1xuICAgICAgICAgICAgICAgIGlmIChqID09PSByZXN1bHRba10pIHtcbiAgICAgICAgICAgICAgICAgICAgYnJva2VuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFicm9rZW4pXG4gICAgICAgICAgICAgICAgcmVqZWN0U2FtcGxlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0W2ldID0gajtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbi8qKlxuICogUHVzaCBhIG5ldyBlbGVtZW50IG9udG8gdGhlIGhlYXAuIFRoZSBoZWFwIHN0b3JlcyBwb3RlbnRpYWwgbmVpZ2hib3JzXG4gKiBmb3IgZWFjaCBkYXRhIHBvaW50LiBUaGUgYGByb3dgYCBwYXJhbWV0ZXIgZGV0ZXJtaW5lcyB3aGljaCBkYXRhIHBvaW50IHdlXG4gKiBhcmUgYWRkcmVzc2luZywgdGhlIGBgd2VpZ2h0YGAgZGV0ZXJtaW5lcyB0aGUgZGlzdGFuY2UgKGZvciBoZWFwIHNvcnRpbmcpLFxuICogdGhlIGBgaW5kZXhgYCBpcyB0aGUgZWxlbWVudCB0byBhZGQsIGFuZCB0aGUgZmxhZyBkZXRlcm1pbmVzIHdoZXRoZXIgdGhpc1xuICogaXMgdG8gYmUgY29uc2lkZXJlZCBhIG5ldyBhZGRpdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhlYXBQdXNoKGhlYXAsIHJvdywgd2VpZ2h0LCBpbmRleCwgZmxhZykge1xuICAgIHJvdyA9IE1hdGguZmxvb3Iocm93KTtcbiAgICBjb25zdCBpbmRpY2VzID0gaGVhcFswXVtyb3ddO1xuICAgIGNvbnN0IHdlaWdodHMgPSBoZWFwWzFdW3Jvd107XG4gICAgLy9jb25zdCBpc05ldyA9IGhlYXBbMl1bcm93XTtcbiAgICBpZiAod2VpZ2h0ID49IHdlaWdodHNbMF0pXG4gICAgICAgIHJldHVybiAwO1xuICAgIC8vIEJyZWFrIGlmIHdlIGFscmVhZHkgaGF2ZSB0aGlzIGVsZW1lbnQuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpbmRleCA9PT0gaW5kaWNlc1tpXSlcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gdW5jaGVja2VkSGVhcFB1c2goaGVhcCwgcm93LCB3ZWlnaHQsIGluZGV4LCBmbGFnKTtcbn1cbi8qKlxuICogUHVzaCBhIG5ldyBlbGVtZW50IG9udG8gdGhlIGhlYXAuIFRoZSBoZWFwIHN0b3JlcyBwb3RlbnRpYWwgbmVpZ2hib3JzXG4gKiBmb3IgZWFjaCBkYXRhIHBvaW50LiBUaGUgYGByb3dgYCBwYXJhbWV0ZXIgZGV0ZXJtaW5lcyB3aGljaCBkYXRhIHBvaW50IHdlXG4gKiBhcmUgYWRkcmVzc2luZywgdGhlIGBgd2VpZ2h0YGAgZGV0ZXJtaW5lcyB0aGUgZGlzdGFuY2UgKGZvciBoZWFwIHNvcnRpbmcpLFxuICogdGhlIGBgaW5kZXhgYCBpcyB0aGUgZWxlbWVudCB0byBhZGQsIGFuZCB0aGUgZmxhZyBkZXRlcm1pbmVzIHdoZXRoZXIgdGhpc1xuICogaXMgdG8gYmUgY29uc2lkZXJlZCBhIG5ldyBhZGRpdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuY2hlY2tlZEhlYXBQdXNoKGhlYXAsIHJvdywgd2VpZ2h0LCBpbmRleCwgZmxhZykge1xuICAgIGNvbnN0IGluZGljZXMgPSBoZWFwWzBdW3Jvd107XG4gICAgY29uc3Qgd2VpZ2h0cyA9IGhlYXBbMV1bcm93XTtcbiAgICBjb25zdCBpc05ldyA9IGhlYXBbMl1bcm93XTtcbiAgICBpZiAod2VpZ2h0ID49IHdlaWdodHNbMF0pXG4gICAgICAgIHJldHVybiAwO1xuICAgIC8vIEluc2VydCB2YWwgYXQgcG9zaXRpb24gemVyb1xuICAgIHdlaWdodHNbMF0gPSB3ZWlnaHQ7XG4gICAgaW5kaWNlc1swXSA9IGluZGV4O1xuICAgIGlzTmV3WzBdID0gZmxhZztcbiAgICAvLyBEZXNjZW5kIHRoZSBoZWFwLCBzd2FwcGluZyB2YWx1ZXMgdW50aWwgdGhlIG1heCBoZWFwIGNyaXRlcmlvbiBpcyBtZXRcbiAgICBsZXQgaSA9IDA7XG4gICAgbGV0IGlTd2FwID0gMDtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBjb25zdCBpYzEgPSAyICogaSArIDE7XG4gICAgICAgIGNvbnN0IGljMiA9IGljMSArIDE7XG4gICAgICAgIGNvbnN0IGhlYXBTaGFwZTIgPSBoZWFwWzBdWzBdLmxlbmd0aDtcbiAgICAgICAgaWYgKGljMSA+PSBoZWFwU2hhcGUyKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpYzIgPj0gaGVhcFNoYXBlMikge1xuICAgICAgICAgICAgaWYgKHdlaWdodHNbaWMxXSA+IHdlaWdodClcbiAgICAgICAgICAgICAgICBpU3dhcCA9IGljMTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh3ZWlnaHRzW2ljMV0gPj0gd2VpZ2h0c1tpYzJdKSB7XG4gICAgICAgICAgICBpZiAod2VpZ2h0IDwgd2VpZ2h0c1tpYzFdKVxuICAgICAgICAgICAgICAgIGlTd2FwID0gaWMxO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHdlaWdodCA8IHdlaWdodHNbaWMyXSlcbiAgICAgICAgICAgICAgICBpU3dhcCA9IGljMjtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB3ZWlnaHRzW2ldID0gd2VpZ2h0c1tpU3dhcF07XG4gICAgICAgIGluZGljZXNbaV0gPSBpbmRpY2VzW2lTd2FwXTtcbiAgICAgICAgaXNOZXdbaV0gPSBpc05ld1tpU3dhcF07XG4gICAgICAgIGkgPSBpU3dhcDtcbiAgICB9XG4gICAgd2VpZ2h0c1tpXSA9IHdlaWdodDtcbiAgICBpbmRpY2VzW2ldID0gaW5kZXg7XG4gICAgaXNOZXdbaV0gPSBmbGFnO1xuICAgIHJldHVybiAxO1xufVxuLyoqXG4gKiBCdWlsZCBhIGhlYXAgb2YgY2FuZGlkYXRlIG5laWdoYm9ycyBmb3IgbmVhcmVzdCBuZWlnaGJvciBkZXNjZW50LiBGb3JcbiAqIGVhY2ggdmVydGV4IHRoZSBjYW5kaWRhdGUgbmVpZ2hib3JzIGFyZSBhbnkgY3VycmVudCBuZWlnaGJvcnMsIGFuZCBhbnlcbiAqIHZlcnRpY2VzIHRoYXQgaGF2ZSB0aGUgdmVydGV4IGFzIG9uZSBvZiB0aGVpciBuZWFyZXN0IG5laWdoYm9ycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQ2FuZGlkYXRlcyhjdXJyZW50R3JhcGgsIG5WZXJ0aWNlcywgbk5laWdoYm9ycywgbWF4Q2FuZGlkYXRlcywgcmFuZG9tKSB7XG4gICAgY29uc3QgY2FuZGlkYXRlTmVpZ2hib3JzID0gbWFrZUhlYXAoblZlcnRpY2VzLCBtYXhDYW5kaWRhdGVzKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5WZXJ0aWNlczsgaSsrKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbk5laWdoYm9yczsgaisrKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudEdyYXBoWzBdW2ldW2pdIDwgMClcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IGN1cnJlbnRHcmFwaFswXVtpXVtqXTtcbiAgICAgICAgICAgIGNvbnN0IGlzbiA9IGN1cnJlbnRHcmFwaFsyXVtpXVtqXTtcbiAgICAgICAgICAgIGNvbnN0IGQgPSB1dGlscy50YXVSYW5kKHJhbmRvbSk7XG4gICAgICAgICAgICBoZWFwUHVzaChjYW5kaWRhdGVOZWlnaGJvcnMsIGksIGQsIGlkeCwgaXNuKTtcbiAgICAgICAgICAgIGhlYXBQdXNoKGNhbmRpZGF0ZU5laWdoYm9ycywgaWR4LCBkLCBpLCBpc24pO1xuICAgICAgICAgICAgY3VycmVudEdyYXBoWzJdW2ldW2pdID0gMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2FuZGlkYXRlTmVpZ2hib3JzO1xufVxuLyoqXG4gKiBHaXZlbiBhbiBhcnJheSBvZiBoZWFwcyAob2YgaW5kaWNlcyBhbmQgd2VpZ2h0cyksIHVucGFjayB0aGUgaGVhcFxuICogb3V0IHRvIGdpdmUgYW5kIGFycmF5IG9mIHNvcnRlZCBsaXN0cyBvZiBpbmRpY2VzIGFuZCB3ZWlnaHRzIGJ5IGluY3JlYXNpbmdcbiAqIHdlaWdodC4gVGhpcyBpcyBlZmZlY3RpdmVseSBqdXN0IHRoZSBzZWNvbmQgaGFsZiBvZiBoZWFwIHNvcnQgKHRoZSBmaXJzdFxuICogaGFsZiBub3QgYmVpbmcgcmVxdWlyZWQgc2luY2Ugd2UgYWxyZWFkeSBoYXZlIHRoZSBkYXRhIGluIGEgaGVhcCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWhlYXBTb3J0KGhlYXApIHtcbiAgICBjb25zdCBpbmRpY2VzID0gaGVhcFswXTtcbiAgICBjb25zdCB3ZWlnaHRzID0gaGVhcFsxXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgaW5kSGVhcCA9IGluZGljZXNbaV07XG4gICAgICAgIGNvbnN0IGRpc3RIZWFwID0gd2VpZ2h0c1tpXTtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBpbmRIZWFwLmxlbmd0aCAtIDE7IGorKykge1xuICAgICAgICAgICAgY29uc3QgaW5kSGVhcEluZGV4ID0gaW5kSGVhcC5sZW5ndGggLSBqIC0gMTtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RIZWFwSW5kZXggPSBkaXN0SGVhcC5sZW5ndGggLSBqIC0gMTtcbiAgICAgICAgICAgIGNvbnN0IHRlbXAxID0gaW5kSGVhcFswXTtcbiAgICAgICAgICAgIGluZEhlYXBbMF0gPSBpbmRIZWFwW2luZEhlYXBJbmRleF07XG4gICAgICAgICAgICBpbmRIZWFwW2luZEhlYXBJbmRleF0gPSB0ZW1wMTtcbiAgICAgICAgICAgIGNvbnN0IHRlbXAyID0gZGlzdEhlYXBbMF07XG4gICAgICAgICAgICBkaXN0SGVhcFswXSA9IGRpc3RIZWFwW2Rpc3RIZWFwSW5kZXhdO1xuICAgICAgICAgICAgZGlzdEhlYXBbZGlzdEhlYXBJbmRleF0gPSB0ZW1wMjtcbiAgICAgICAgICAgIHNpZnREb3duKGRpc3RIZWFwLCBpbmRIZWFwLCBkaXN0SGVhcEluZGV4LCAwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBpbmRpY2VzLCB3ZWlnaHRzIH07XG59XG4vKipcbiAqIFJlc3RvcmUgdGhlIGhlYXAgcHJvcGVydHkgZm9yIGEgaGVhcCB3aXRoIGFuIG91dCBvZiBwbGFjZSBlbGVtZW50XG4gKiBhdCBwb3NpdGlvbiBgYGVsdGBgLiBUaGlzIHdvcmtzIHdpdGggYSBoZWFwIHBhaXIgd2hlcmUgaGVhcDEgY2Fycmllc1xuICogdGhlIHdlaWdodHMgYW5kIGhlYXAyIGhvbGRzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLlxuICovXG5mdW5jdGlvbiBzaWZ0RG93bihoZWFwMSwgaGVhcDIsIGNlaWxpbmcsIGVsdCkge1xuICAgIHdoaWxlIChlbHQgKiAyICsgMSA8IGNlaWxpbmcpIHtcbiAgICAgICAgY29uc3QgbGVmdENoaWxkID0gZWx0ICogMiArIDE7XG4gICAgICAgIGNvbnN0IHJpZ2h0Q2hpbGQgPSBsZWZ0Q2hpbGQgKyAxO1xuICAgICAgICBsZXQgc3dhcCA9IGVsdDtcbiAgICAgICAgaWYgKGhlYXAxW3N3YXBdIDwgaGVhcDFbbGVmdENoaWxkXSlcbiAgICAgICAgICAgIHN3YXAgPSBsZWZ0Q2hpbGQ7XG4gICAgICAgIGlmIChyaWdodENoaWxkIDwgY2VpbGluZyAmJiBoZWFwMVtzd2FwXSA8IGhlYXAxW3JpZ2h0Q2hpbGRdKVxuICAgICAgICAgICAgc3dhcCA9IHJpZ2h0Q2hpbGQ7XG4gICAgICAgIGlmIChzd2FwID09PSBlbHQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdGVtcDEgPSBoZWFwMVtlbHRdO1xuICAgICAgICAgICAgaGVhcDFbZWx0XSA9IGhlYXAxW3N3YXBdO1xuICAgICAgICAgICAgaGVhcDFbc3dhcF0gPSB0ZW1wMTtcbiAgICAgICAgICAgIGNvbnN0IHRlbXAyID0gaGVhcDJbZWx0XTtcbiAgICAgICAgICAgIGhlYXAyW2VsdF0gPSBoZWFwMltzd2FwXTtcbiAgICAgICAgICAgIGhlYXAyW3N3YXBdID0gdGVtcDI7XG4gICAgICAgICAgICBlbHQgPSBzd2FwO1xuICAgICAgICB9XG4gICAgfVxufVxuLyoqXG4gKiBTZWFyY2ggdGhlIGhlYXAgZm9yIHRoZSBzbWFsbGVzdCBlbGVtZW50IHRoYXQgaXMgc3RpbGwgZmxhZ2dlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNtYWxsZXN0RmxhZ2dlZChoZWFwLCByb3cpIHtcbiAgICBjb25zdCBpbmQgPSBoZWFwWzBdW3Jvd107XG4gICAgY29uc3QgZGlzdCA9IGhlYXBbMV1bcm93XTtcbiAgICBjb25zdCBmbGFnID0gaGVhcFsyXVtyb3ddO1xuICAgIGxldCBtaW5EaXN0ID0gSW5maW5pdHk7XG4gICAgbGV0IHJlc3VsdEluZGV4ID0gLTE7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPiBpbmQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGZsYWdbaV0gPT09IDEgJiYgZGlzdFtpXSA8IG1pbkRpc3QpIHtcbiAgICAgICAgICAgIG1pbkRpc3QgPSBkaXN0W2ldO1xuICAgICAgICAgICAgcmVzdWx0SW5kZXggPSBpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChyZXN1bHRJbmRleCA+PSAwKSB7XG4gICAgICAgIGZsYWdbcmVzdWx0SW5kZXhdID0gMDtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoaW5kW3Jlc3VsdEluZGV4XSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYUdWaGNDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW1obFlYQXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFN096czdPenM3T3pzN096czdPenM3TzBkQmFVSkhPMEZCTWtOSUxFOUJRVThzUzBGQlN5eExRVUZMTEUxQlFVMHNVMEZCVXl4RFFVRkRPMEZCU1dwRE96czdPenM3T3pzN1IwRlRSenRCUVVOSUxFMUJRVTBzVlVGQlZTeFJRVUZSTEVOQlFVTXNUMEZCWlN4RlFVRkZMRWxCUVZrN1NVRkRjRVFzVFVGQlRTeFZRVUZWTEVkQlFVY3NRMEZCUXl4VFFVRnBRaXhGUVVGRkxFVkJRVVU3VVVGRGRrTXNUMEZCVHl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRVZCUVVVN1dVRkRia01zVDBGQlR5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1JVRkJSU3hUUVVGVExFTkJRVU1zUTBGQlF6dFJRVU4yUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOTUxFTkJRVU1zUTBGQlF6dEpRVVZHTEUxQlFVMHNTVUZCU1N4SFFVRlRMRVZCUVVVc1EwRkJRenRKUVVOMFFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZETVVJc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOb1F5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzcENMRTlCUVU4c1NVRkJTU3hEUVVGRE8wRkJRMlFzUTBGQlF6dEJRVVZFT3pzN08wZEJTVWM3UVVGRFNDeE5RVUZOTEZWQlFWVXNaVUZCWlN4RFFVTTNRaXhSUVVGblFpeEZRVU5vUWl4UlFVRm5RaXhGUVVOb1FpeE5RVUZuUWp0SlFVVm9RaXhOUVVGTkxFMUJRVTBzUjBGQlJ5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8wbEJRM0pETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eFJRVUZSTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1VVRkRha01zU1VGQlNTeFpRVUZaTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTNoQ0xFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTldMRTlCUVU4c1dVRkJXU3hGUVVGRk8xbEJRMjVDTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1ZVRkJWU3hEUVVGRExGRkJRVkVzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0WlFVTjJReXhKUVVGSkxFMUJRVTBzUjBGQlJ5eExRVUZMTEVOQlFVTTdXVUZEYmtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdG5Ra0ZETVVJc1NVRkJTU3hEUVVGRExFdEJRVXNzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZPMjlDUVVOdVFpeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRPMjlDUVVOa0xFMUJRVTA3YVVKQlExQTdZVUZEUmp0WlFVTkVMRWxCUVVrc1EwRkJReXhOUVVGTk8yZENRVUZGTEZsQlFWa3NSMEZCUnl4TFFVRkxMRU5CUVVNN1UwRkRia003VVVGRFJDeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wdEJRMlk3U1VGRFJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVVE3T3pzN096dEhRVTFITzBGQlEwZ3NUVUZCVFN4VlFVRlZMRkZCUVZFc1EwRkRkRUlzU1VGQlZTeEZRVU5XTEVkQlFWY3NSVUZEV0N4TlFVRmpMRVZCUTJRc1MwRkJZU3hGUVVOaUxFbEJRVms3U1VGRldpeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU4wUWl4TlFVRk5MRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkROMElzVFVGQlRTeFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlF6ZENMRFpDUVVFMlFqdEpRVVUzUWl4SlFVRkpMRTFCUVUwc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzUkNMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJSMWdzZVVOQlFYbERPMGxCUTNwRExFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhQUVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMUZCUTNaRExFbEJRVWtzUzBGQlN5eExRVUZMTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRkRUlzVDBGQlR5eERRVUZETEVOQlFVTTdTMEZEV2p0SlFVVkVMRTlCUVU4c2FVSkJRV2xDTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWRCUVVjc1JVRkJSU3hOUVVGTkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUXpORUxFTkJRVU03UVVGRlJEczdPenM3TzBkQlRVYzdRVUZEU0N4TlFVRk5MRlZCUVZVc2FVSkJRV2xDTEVOQlF5OUNMRWxCUVZVc1JVRkRWaXhIUVVGWExFVkJRMWdzVFVGQll5eEZRVU5rTEV0QlFXRXNSVUZEWWl4SlFVRlpPMGxCUlZvc1RVRkJUU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRemRDTEUxQlFVMHNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVTTNRaXhOUVVGTkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRk0wSXNTVUZCU1N4TlFVRk5MRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU4wUWl4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVkWUxEaENRVUU0UWp0SlFVTTVRaXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRPMGxCUTNCQ0xFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN1NVRkRia0lzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJRenRKUVVWb1FpeDNSVUZCZDBVN1NVRkRlRVVzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTFZc1NVRkJTU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEyUXNUMEZCVHl4SlFVRkpMRVZCUVVVN1VVRkRXQ3hOUVVGTkxFZEJRVWNzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOMFFpeE5RVUZOTEVkQlFVY3NSMEZCUnl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJSWEJDTEUxQlFVMHNWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRja01zU1VGQlNTeEhRVUZITEVsQlFVa3NWVUZCVlN4RlFVRkZPMWxCUTNKQ0xFMUJRVTA3VTBGRFVEdGhRVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRlZCUVZVc1JVRkJSVHRaUVVNMVFpeEpRVUZKTEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhOUVVGTk8yZENRVU4yUWl4TFFVRkxMRWRCUVVjc1IwRkJSeXhEUVVGRE96dG5Ra0ZGV2l4TlFVRk5PMU5CUTFRN1lVRkJUU3hKUVVGSkxFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVU3V1VGRGRrTXNTVUZCU1N4TlFVRk5MRWRCUVVjc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF6dG5Ra0ZEZGtJc1MwRkJTeXhIUVVGSExFZEJRVWNzUTBGQlF6czdaMEpCUlZvc1RVRkJUVHRUUVVOVU8yRkJRVTA3V1VGRFRDeEpRVUZKTEUxQlFVMHNSMEZCUnl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRE8yZENRVU4yUWl4TFFVRkxMRWRCUVVjc1IwRkJSeXhEUVVGRE96dG5Ra0ZGV2l4TlFVRk5PMU5CUTFRN1VVRkZSQ3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJRelZDTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhQUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdVVUZETlVJc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVWNFFpeERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRPMHRCUTFnN1NVRkZSQ3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRPMGxCUTNCQ0xFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN1NVRkRia0lzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJRenRKUVVOb1FpeFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTllMRU5CUVVNN1FVRkZSRHM3T3p0SFFVbEhPMEZCUTBnc1RVRkJUU3hWUVVGVkxHVkJRV1VzUTBGRE4wSXNXVUZCYTBJc1JVRkRiRUlzVTBGQmFVSXNSVUZEYWtJc1ZVRkJhMElzUlVGRGJFSXNZVUZCY1VJc1JVRkRja0lzVFVGQlowSTdTVUZGYUVJc1RVRkJUU3hyUWtGQmEwSXNSMEZCUnl4UlFVRlJMRU5CUVVNc1UwRkJVeXhGUVVGRkxHRkJRV0VzUTBGQlF5eERRVUZETzBsQlF6bEVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4VFFVRlRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3VVVGRGJFTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEZWQlFWVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOdVF5eEpRVUZKTEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRPMmRDUVVNelFpeFRRVUZUTzFsQlJWZ3NUVUZCVFN4SFFVRkhMRWRCUVVjc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMnhETEUxQlFVMHNSMEZCUnl4SFFVRkhMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOc1F5eE5RVUZOTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzFsQlEyaERMRkZCUVZFc1EwRkJReXhyUWtGQmEwSXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVTTNReXhSUVVGUkxFTkJRVU1zYTBKQlFXdENMRVZCUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkROME1zV1VGQldTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0VFFVTXpRanRMUVVOR08wbEJRMFFzVDBGQlR5eHJRa0ZCYTBJc1EwRkJRenRCUVVNMVFpeERRVUZETzBGQlJVUTdPenM3TzBkQlMwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1ZVRkJWU3hEUVVGRExFbEJRVlU3U1VGRGJrTXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzaENMRTFCUVUwc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVVjRRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1QwRkJUeXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0UlFVTjJReXhOUVVGTkxFOUJRVThzUjBGQlJ5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRNMElzVFVGQlRTeFJRVUZSTEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVFZDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eFBRVUZQTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU16UXl4TlFVRk5MRmxCUVZrc1IwRkJSeXhQUVVGUExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkROVU1zVFVGQlRTeGhRVUZoTEVkQlFVY3NVVUZCVVN4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlJUbERMRTFCUVUwc1MwRkJTeXhIUVVGSExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjZRaXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8xbEJRMjVETEU5QlFVOHNRMEZCUXl4WlFVRlpMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU03V1VGRk9VSXNUVUZCVFN4TFFVRkxMRWRCUVVjc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6RkNMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFJRVUZSTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNN1dVRkRkRU1zVVVGQlVTeERRVUZETEdGQlFXRXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJRenRaUVVWb1F5eFJRVUZSTEVOQlFVTXNVVUZCVVN4RlFVRkZMRTlCUVU4c1JVRkJSU3hoUVVGaExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdVMEZETDBNN1MwRkRSanRKUVVORUxFOUJRVThzUlVGQlF5eFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkRMRU5CUVVNN1FVRkROVUlzUTBGQlF6dEJRVVZFT3pzN08wZEJTVWM3UVVGRFNDeFRRVUZUTEZGQlFWRXNRMEZEWml4TFFVRmxMRVZCUTJZc1MwRkJaU3hGUVVObUxFOUJRV1VzUlVGRFppeEhRVUZYTzBsQlJWZ3NUMEZCVHl4SFFVRkhMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eFBRVUZQTEVWQlFVVTdVVUZETlVJc1RVRkJUU3hUUVVGVExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRPVUlzVFVGQlRTeFZRVUZWTEVkQlFVY3NVMEZCVXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOcVF5eEpRVUZKTEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNN1VVRkZaaXhKUVVGSkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1UwRkJVeXhEUVVGRE8xbEJRMmhETEVsQlFVa3NSMEZCUnl4VFFVRlRMRU5CUVVNN1VVRkZia0lzU1VGQlNTeFZRVUZWTEVkQlFVY3NUMEZCVHl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNWVUZCVlN4RFFVRkRPMWxCUTNwRUxFbEJRVWtzUjBGQlJ5eFZRVUZWTEVOQlFVTTdVVUZIY0VJc1NVRkJTU3hKUVVGSkxFdEJRVXNzUjBGQlJ5eEZRVUZGTzFsQlEyaENMRTFCUVUwN1UwRkRVRHRoUVVGTk8xbEJRMHdzVFVGQlRTeExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRM3BDTEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdXVUZEZWtJc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXp0WlFVVndRaXhOUVVGTkxFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRla0lzUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU42UWl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETzFsQlEzQkNMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU03VTBGRFdqdExRVU5HTzBGQlEwZ3NRMEZCUXp0QlFVVkVPenRIUVVWSE8wRkJRMGdzVFVGQlRTeFZRVUZWTEdWQlFXVXNRMEZCUXl4SlFVRlZMRVZCUVVVc1IwRkJWenRKUVVOeVJDeE5RVUZOTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEZWtJc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRekZDTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVVXhRaXhKUVVGSkxFOUJRVThzUjBGQlJ5eFJRVUZSTEVOQlFVTTdTVUZEZGtJc1NVRkJTU3hYUVVGWExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGY2tJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdVVUZEYmtNc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFBRVUZQTEVWQlFVVTdXVUZEZEVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTnNRaXhYUVVGWExFZEJRVWNzUTBGQlF5eERRVUZETzFOQlEycENPMHRCUTBZN1NVRkZSQ3hKUVVGSkxGZEJRVmNzU1VGQlNTeERRVUZETEVWQlFVVTdVVUZEY0VJc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTjBRaXhQUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU03UzBGRGNrTTdVMEZCVFR0UlFVTk1MRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU03UzBGRFdEdEJRVU5JTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRUJzYVdObGJuTmxYRzRnS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRrZ1IyOXZaMnhsSUV4TVF5NGdRV3hzSUZKcFoyaDBjeUJTWlhObGNuWmxaQzVjYmlBcVhHNGdLaUJNYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUVhCaFkyaGxJRXhwWTJWdWMyVXNJRlpsY25OcGIyNGdNaTR3SUNoMGFHVWdYQ0pNYVdObGJuTmxYQ0lwTzF4dUlDb2dlVzkxSUcxaGVTQnViM1FnZFhObElIUm9hWE1nWm1sc1pTQmxlR05sY0hRZ2FXNGdZMjl0Y0d4cFlXNWpaU0IzYVhSb0lIUm9aU0JNYVdObGJuTmxMbHh1SUNvZ1dXOTFJRzFoZVNCdlluUmhhVzRnWVNCamIzQjVJRzltSUhSb1pTQk1hV05sYm5ObElHRjBYRzRnS2x4dUlDb2dJQ0FnSUdoMGRIQTZMeTkzZDNjdVlYQmhZMmhsTG05eVp5OXNhV05sYm5ObGN5OU1TVU5GVGxORkxUSXVNRnh1SUNwY2JpQXFJRlZ1YkdWemN5QnlaWEYxYVhKbFpDQmllU0JoY0hCc2FXTmhZbXhsSUd4aGR5QnZjaUJoWjNKbFpXUWdkRzhnYVc0Z2QzSnBkR2x1Wnl3Z2MyOW1kSGRoY21WY2JpQXFJR1JwYzNSeWFXSjFkR1ZrSUhWdVpHVnlJSFJvWlNCTWFXTmxibk5sSUdseklHUnBjM1J5YVdKMWRHVmtJRzl1SUdGdUlGd2lRVk1nU1ZOY0lpQkNRVk5KVXl4Y2JpQXFJRmRKVkVoUFZWUWdWMEZTVWtGT1ZFbEZVeUJQVWlCRFQwNUVTVlJKVDA1VElFOUdJRUZPV1NCTFNVNUVMQ0JsYVhSb1pYSWdaWGh3Y21WemN5QnZjaUJwYlhCc2FXVmtMbHh1SUNvZ1UyVmxJSFJvWlNCTWFXTmxibk5sSUdadmNpQjBhR1VnYzNCbFkybG1hV01nYkdGdVozVmhaMlVnWjI5MlpYSnVhVzVuSUhCbGNtMXBjM05wYjI1eklHRnVaRnh1SUNvZ2JHbHRhWFJoZEdsdmJuTWdkVzVrWlhJZ2RHaGxJRXhwWTJWdWMyVXVYRzRnS2lBOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmlBcUwxeHVYRzR2S2lwY2JpQXFJRlJvYVhNZ2FYTWdZU0JLWVhaaFUyTnlhWEIwSUhKbGFXMXdiR1Z0Wlc1MFlYUnBiMjRnYjJZZ1ZVMUJVQ0FvYjNKcFoybHVZV3dnYkdsalpXNXpaU0JpWld4dmR5a3NJR1p5YjIxY2JpQXFJSFJvWlNCd2VYUm9iMjRnYVcxd2JHVnRaVzUwWVhScGIyNGdabTkxYm1RZ1lYUWdhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMnh0WTJsdWJtVnpMM1Z0WVhBdVhHNGdLbHh1SUNvZ1FHRjFkR2h2Y2lCaGJtUjVZMjlsYm1WdVFHZHZiMmRzWlM1amIyMGdLRUZ1WkhrZ1EyOWxibVZ1S1Z4dUlDb3ZYRzVjYmk4cUtseHVJQ29nUUd4cFkyVnVjMlZjYmlBcUlFSlRSQ0F6TFVOc1lYVnpaU0JNYVdObGJuTmxYRzRnS2x4dUlDb2dRMjl3ZVhKcFoyaDBJQ2hqS1NBeU1ERTNMQ0JNWld4aGJtUWdUV05KYm01bGMxeHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCU1pXUnBjM1J5YVdKMWRHbHZiaUJoYm1RZ2RYTmxJR2x1SUhOdmRYSmpaU0JoYm1RZ1ltbHVZWEo1SUdadmNtMXpMQ0IzYVhSb0lHOXlJSGRwZEdodmRYUmNiaUFxSUcxdlpHbG1hV05oZEdsdmJpd2dZWEpsSUhCbGNtMXBkSFJsWkNCd2NtOTJhV1JsWkNCMGFHRjBJSFJvWlNCbWIyeHNiM2RwYm1jZ1kyOXVaR2wwYVc5dWN5QmhjbVVnYldWME9seHVJQ3BjYmlBcUlDb2dVbVZrYVhOMGNtbGlkWFJwYjI1eklHOW1JSE52ZFhKalpTQmpiMlJsSUcxMWMzUWdjbVYwWVdsdUlIUm9aU0JoWW05MlpTQmpiM0I1Y21sbmFIUWdibTkwYVdObExDQjBhR2x6WEc0Z0tpQWdJR3hwYzNRZ2IyWWdZMjl1WkdsMGFXOXVjeUJoYm1RZ2RHaGxJR1p2Ykd4dmQybHVaeUJrYVhOamJHRnBiV1Z5TGx4dUlDcGNiaUFxSUNvZ1VtVmthWE4wY21saWRYUnBiMjV6SUdsdUlHSnBibUZ5ZVNCbWIzSnRJRzExYzNRZ2NtVndjbTlrZFdObElIUm9aU0JoWW05MlpTQmpiM0I1Y21sbmFIUWdibTkwYVdObExGeHVJQ29nSUNCMGFHbHpJR3hwYzNRZ2IyWWdZMjl1WkdsMGFXOXVjeUJoYm1RZ2RHaGxJR1p2Ykd4dmQybHVaeUJrYVhOamJHRnBiV1Z5SUdsdUlIUm9aU0JrYjJOMWJXVnVkR0YwYVc5dVhHNGdLaUFnSUdGdVpDOXZjaUJ2ZEdobGNpQnRZWFJsY21saGJITWdjSEp2ZG1sa1pXUWdkMmwwYUNCMGFHVWdaR2x6ZEhKcFluVjBhVzl1TGx4dUlDcGNiaUFxSUNvZ1RtVnBkR2hsY2lCMGFHVWdibUZ0WlNCdlppQjBhR1VnWTI5d2VYSnBaMmgwSUdodmJHUmxjaUJ1YjNJZ2RHaGxJRzVoYldWeklHOW1JR2wwYzF4dUlDb2dJQ0JqYjI1MGNtbGlkWFJ2Y25NZ2JXRjVJR0psSUhWelpXUWdkRzhnWlc1a2IzSnpaU0J2Y2lCd2NtOXRiM1JsSUhCeWIyUjFZM1J6SUdSbGNtbDJaV1FnWm5KdmJWeHVJQ29nSUNCMGFHbHpJSE52Wm5SM1lYSmxJSGRwZEdodmRYUWdjM0JsWTJsbWFXTWdjSEpwYjNJZ2QzSnBkSFJsYmlCd1pYSnRhWE56YVc5dUxseHVJQ3BjYmlBcUlGUklTVk1nVTA5R1ZGZEJVa1VnU1ZNZ1VGSlBWa2xFUlVRZ1Fsa2dWRWhGSUVOUFVGbFNTVWRJVkNCSVQweEVSVkpUSUVGT1JDQkRUMDVVVWtsQ1ZWUlBVbE1nWENKQlV5QkpVMXdpWEc0Z0tpQkJUa1FnUVU1WklFVllVRkpGVTFNZ1QxSWdTVTFRVEVsRlJDQlhRVkpTUVU1VVNVVlRMQ0JKVGtOTVZVUkpUa2NzSUVKVlZDQk9UMVFnVEVsTlNWUkZSQ0JVVHl3Z1ZFaEZYRzRnS2lCSlRWQk1TVVZFSUZkQlVsSkJUbFJKUlZNZ1QwWWdUVVZTUTBoQlRsUkJRa2xNU1ZSWklFRk9SQ0JHU1ZST1JWTlRJRVpQVWlCQklGQkJVbFJKUTFWTVFWSWdVRlZTVUU5VFJTQkJVa1ZjYmlBcUlFUkpVME5NUVVsTlJVUXVJRWxPSUU1UElFVldSVTVVSUZOSVFVeE1JRlJJUlNCRFQxQlpVa2xIU0ZRZ1NFOU1SRVZTSUU5U0lFTlBUbFJTU1VKVlZFOVNVeUJDUlNCTVNVRkNURVZjYmlBcUlFWlBVaUJCVGxrZ1JFbFNSVU5VTENCSlRrUkpVa1ZEVkN3Z1NVNURTVVJGVGxSQlRDd2dVMUJGUTBsQlRDd2dSVmhGVFZCTVFWSlpMQ0JQVWlCRFQwNVRSVkZWUlU1VVNVRk1YRzRnS2lCRVFVMUJSMFZUSUNoSlRrTk1WVVJKVGtjc0lFSlZWQ0JPVDFRZ1RFbE5TVlJGUkNCVVR5d2dVRkpQUTFWU1JVMUZUbFFnVDBZZ1UxVkNVMVJKVkZWVVJTQkhUMDlFVXlCUFVseHVJQ29nVTBWU1ZrbERSVk03SUV4UFUxTWdUMFlnVlZORkxDQkVRVlJCTENCUFVpQlFVazlHU1ZSVE95QlBVaUJDVlZOSlRrVlRVeUJKVGxSRlVsSlZVRlJKVDA0cElFaFBWMFZXUlZKY2JpQXFJRU5CVlZORlJDQkJUa1FnVDA0Z1FVNVpJRlJJUlU5U1dTQlBSaUJNU1VGQ1NVeEpWRmtzSUZkSVJWUklSVklnU1U0Z1EwOU9WRkpCUTFRc0lGTlVVa2xEVkNCTVNVRkNTVXhKVkZrc1hHNGdLaUJQVWlCVVQxSlVJQ2hKVGtOTVZVUkpUa2NnVGtWSFRFbEhSVTVEUlNCUFVpQlBWRWhGVWxkSlUwVXBJRUZTU1ZOSlRrY2dTVTRnUVU1WklGZEJXU0JQVlZRZ1QwWWdWRWhGSUZWVFJWeHVJQ29nVDBZZ1ZFaEpVeUJUVDBaVVYwRlNSU3dnUlZaRlRpQkpSaUJCUkZaSlUwVkVJRTlHSUZSSVJTQlFUMU5UU1VKSlRFbFVXU0JQUmlCVFZVTklJRVJCVFVGSFJTNWNiaUFxTDF4dVhHNXBiWEJ2Y25RZ2UxSmhibVJ2YlVadWZTQm1jbTl0SUNjdUwzVnRZWEFuTzF4dWFXMXdiM0owSUNvZ1lYTWdkWFJwYkhNZ1puSnZiU0FuTGk5MWRHbHNjeWM3WEc1Y2JtVjRjRzl5ZENCMGVYQmxJRWhsWVhBZ1BTQnVkVzFpWlhKYlhWdGRXMTA3WEc1Y2JpOHFLbHh1SUNvZ0lFTnZibk4wY25WamRHOXlJR1p2Y2lCMGFHVWdhR1ZoY0NCdlltcGxZM1J6TGlCVWFHVWdhR1ZoY0hNZ1lYSmxJSFZ6WldSY2JpQXFJR1p2Y2lCaGNIQnliM2hwYldGMFpTQnVaV0Z5WlhOMElHNWxhV2RvWW05eUlITmxZWEpqYUN3Z2JXRnBiblJoYVc1cGJtY2dZU0JzYVhOMElHOW1JSEJ2ZEdWdWRHbGhiRnh1SUNvZ2JtVnBaMmhpYjNKeklITnZjblJsWkNCaWVTQjBhR1ZwY2lCa2FYTjBZVzVqWlM0Z1YyVWdZV3h6YnlCbWJHRm5JR2xtSUhCdmRHVnVkR2xoYkNCdVpXbG5hR0p2Y25OY2JpQXFJR0Z5WlNCdVpYZHNlU0JoWkdSbFpDQjBieUIwYUdVZ2JHbHpkQ0J2Y2lCdWIzUXVJRWx1ZEdWeWJtRnNiSGtnZEdocGN5QnBjeUJ6ZEc5eVpXUWdZWE5jYmlBcUlHRWdjMmx1WjJ4bElHRnljbUY1T3lCMGFHVWdabWx5YzNRZ1lYaHBjeUJrWlhSbGNtMXBibVZ6SUhkb1pYUm9aWElnZDJVZ1lYSmxJR3h2YjJ0cGJtY2dZWFFnZEdobFhHNGdLaUJoY25KaGVTQnZaaUJqWVc1a2FXUmhkR1VnYVc1a2FXTmxjeXdnZEdobElHRnljbUY1SUc5bUlHUnBjM1JoYm1ObGN5d2diM0lnZEdobElHWnNZV2NnWVhKeVlYa2dabTl5WEc0Z0tpQjNhR1YwYUdWeUlHVnNaVzFsYm5SeklHRnlaU0J1WlhjZ2IzSWdibTkwTGlCRllXTm9JRzltSUhSb1pYTmxJR0Z5Y21GNWN5QmhjbVVnYjJZZ2MyaGhjR1ZjYmlBcUlDaGdZRzVRYjJsdWRITmdZQ3dnWUdCemFYcGxZR0FwWEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnRZV3RsU0dWaGNDaHVVRzlwYm5Sek9pQnVkVzFpWlhJc0lITnBlbVU2SUc1MWJXSmxjaWs2SUVobFlYQWdlMXh1SUNCamIyNXpkQ0J0WVd0bFFYSnlZWGx6SUQwZ0tHWnBiR3hXWVd4MVpUb2diblZ0WW1WeUtTQTlQaUI3WEc0Z0lDQWdjbVYwZFhKdUlIVjBhV3h6TG1WdGNIUjVLRzVRYjJsdWRITXBMbTFoY0Nnb0tTQTlQaUI3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkWFJwYkhNdVptbHNiR1ZrS0hOcGVtVXNJR1pwYkd4V1lXeDFaU2s3WEc0Z0lDQWdmU2s3WEc0Z0lIMDdYRzVjYmlBZ1kyOXVjM1FnYUdWaGNEb2dTR1ZoY0NBOUlGdGRPMXh1SUNCb1pXRndMbkIxYzJnb2JXRnJaVUZ5Y21GNWN5Z3RNU2twTzF4dUlDQm9aV0Z3TG5CMWMyZ29iV0ZyWlVGeWNtRjVjeWhKYm1acGJtbDBlU2twTzF4dUlDQm9aV0Z3TG5CMWMyZ29iV0ZyWlVGeWNtRjVjeWd3S1NrN1hHNGdJSEpsZEhWeWJpQm9aV0Z3TzF4dWZWeHVYRzR2S2lwY2JpQXFJRWRsYm1WeVlYUmxJRzVmYzJGdGNHeGxjeUJ0WVc1NUlHbHVkR1ZuWlhKeklHWnliMjBnTUNCMGJ5QndiMjlzWDNOcGVtVWdjM1ZqYUNCMGFHRjBJRzV2WEc0Z0tpQnBiblJsWjJWeUlHbHpJSE5sYkdWamRHVmtJSFIzYVdObExpQlVhR1VnWkhWd2JHbGpZWFJwYjI0Z1kyOXVjM1J5WVdsdWRDQnBjeUJoWTJocFpYWmxaQ0IyYVdGY2JpQXFJSEpsYW1WamRHbHZiaUJ6WVcxd2JHbHVaeTVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlISmxhbVZqZEdsdmJsTmhiWEJzWlNoY2JpQWdibE5oYlhCc1pYTTZJRzUxYldKbGNpeGNiaUFnY0c5dmJGTnBlbVU2SUc1MWJXSmxjaXhjYmlBZ2NtRnVaRzl0T2lCU1lXNWtiMjFHYmx4dUtTQjdYRzRnSUdOdmJuTjBJSEpsYzNWc2RDQTlJSFYwYVd4ekxucGxjbTl6S0c1VFlXMXdiR1Z6S1R0Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1VTJGdGNHeGxjenNnYVNzcktTQjdYRzRnSUNBZ2JHVjBJSEpsYW1WamRGTmhiWEJzWlNBOUlIUnlkV1U3WEc0Z0lDQWdiR1YwSUdvZ1BTQXdPMXh1SUNBZ0lIZG9hV3hsSUNoeVpXcGxZM1JUWVcxd2JHVXBJSHRjYmlBZ0lDQWdJR29nUFNCMWRHbHNjeTUwWVhWU1lXNWtTVzUwS0hCdmIyeFRhWHBsTENCeVlXNWtiMjBwTzF4dUlDQWdJQ0FnYkdWMElHSnliMnRsYmlBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnWm05eUlDaHNaWFFnYXlBOUlEQTdJR3NnUENCcE95QnJLeXNwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR29nUFQwOUlISmxjM1ZzZEZ0clhTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdKeWIydGxiaUE5SUhSeWRXVTdYRzRnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR2xtSUNnaFluSnZhMlZ1S1NCeVpXcGxZM1JUWVcxd2JHVWdQU0JtWVd4elpUdGNiaUFnSUNCOVhHNGdJQ0FnY21WemRXeDBXMmxkSUQwZ2FqdGNiaUFnZlZ4dUlDQnlaWFIxY200Z2NtVnpkV3gwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRkIxYzJnZ1lTQnVaWGNnWld4bGJXVnVkQ0J2Ym5SdklIUm9aU0JvWldGd0xpQlVhR1VnYUdWaGNDQnpkRzl5WlhNZ2NHOTBaVzUwYVdGc0lHNWxhV2RvWW05eWMxeHVJQ29nWm05eUlHVmhZMmdnWkdGMFlTQndiMmx1ZEM0Z1ZHaGxJR0JnY205M1lHQWdjR0Z5WVcxbGRHVnlJR1JsZEdWeWJXbHVaWE1nZDJocFkyZ2daR0YwWVNCd2IybHVkQ0IzWlZ4dUlDb2dZWEpsSUdGa1pISmxjM05wYm1jc0lIUm9aU0JnWUhkbGFXZG9kR0JnSUdSbGRHVnliV2x1WlhNZ2RHaGxJR1JwYzNSaGJtTmxJQ2htYjNJZ2FHVmhjQ0J6YjNKMGFXNW5LU3hjYmlBcUlIUm9aU0JnWUdsdVpHVjRZR0FnYVhNZ2RHaGxJR1ZzWlcxbGJuUWdkRzhnWVdSa0xDQmhibVFnZEdobElHWnNZV2NnWkdWMFpYSnRhVzVsY3lCM2FHVjBhR1Z5SUhSb2FYTmNiaUFxSUdseklIUnZJR0psSUdOdmJuTnBaR1Z5WldRZ1lTQnVaWGNnWVdSa2FYUnBiMjR1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm9aV0Z3VUhWemFDaGNiaUFnYUdWaGNEb2dTR1ZoY0N4Y2JpQWdjbTkzT2lCdWRXMWlaWElzWEc0Z0lIZGxhV2RvZERvZ2JuVnRZbVZ5TEZ4dUlDQnBibVJsZURvZ2JuVnRZbVZ5TEZ4dUlDQm1iR0ZuT2lCdWRXMWlaWEpjYmlrNklHNTFiV0psY2lCN1hHNGdJSEp2ZHlBOUlFMWhkR2d1Wm14dmIzSW9jbTkzS1R0Y2JpQWdZMjl1YzNRZ2FXNWthV05sY3lBOUlHaGxZWEJiTUYxYmNtOTNYVHRjYmlBZ1kyOXVjM1FnZDJWcFoyaDBjeUE5SUdobFlYQmJNVjFiY205M1hUdGNiaUFnTHk5amIyNXpkQ0JwYzA1bGR5QTlJR2hsWVhCYk1sMWJjbTkzWFR0Y2JseHVJQ0JwWmlBb2QyVnBaMmgwSUQ0OUlIZGxhV2RvZEhOYk1GMHBYRzRnSUNBZ2NtVjBkWEp1SURBN1hHNWNibHh1SUNBdkx5QkNjbVZoYXlCcFppQjNaU0JoYkhKbFlXUjVJR2hoZG1VZ2RHaHBjeUJsYkdWdFpXNTBMbHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHbHVaR2xqWlhNdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQnBaaUFvYVc1a1pYZ2dQVDA5SUdsdVpHbGpaWE5iYVYwcFhHNGdJQ0FnSUNCeVpYUjFjbTRnTUR0Y2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCMWJtTm9aV05yWldSSVpXRndVSFZ6YUNob1pXRndMQ0J5YjNjc0lIZGxhV2RvZEN3Z2FXNWtaWGdzSUdac1lXY3BPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGQjFjMmdnWVNCdVpYY2daV3hsYldWdWRDQnZiblJ2SUhSb1pTQm9aV0Z3TGlCVWFHVWdhR1ZoY0NCemRHOXlaWE1nY0c5MFpXNTBhV0ZzSUc1bGFXZG9ZbTl5YzF4dUlDb2dabTl5SUdWaFkyZ2daR0YwWVNCd2IybHVkQzRnVkdobElHQmdjbTkzWUdBZ2NHRnlZVzFsZEdWeUlHUmxkR1Z5YldsdVpYTWdkMmhwWTJnZ1pHRjBZU0J3YjJsdWRDQjNaVnh1SUNvZ1lYSmxJR0ZrWkhKbGMzTnBibWNzSUhSb1pTQmdZSGRsYVdkb2RHQmdJR1JsZEdWeWJXbHVaWE1nZEdobElHUnBjM1JoYm1ObElDaG1iM0lnYUdWaGNDQnpiM0owYVc1bktTeGNiaUFxSUhSb1pTQmdZR2x1WkdWNFlHQWdhWE1nZEdobElHVnNaVzFsYm5RZ2RHOGdZV1JrTENCaGJtUWdkR2hsSUdac1lXY2daR1YwWlhKdGFXNWxjeUIzYUdWMGFHVnlJSFJvYVhOY2JpQXFJR2x6SUhSdklHSmxJR052Ym5OcFpHVnlaV1FnWVNCdVpYY2dZV1JrYVhScGIyNHVYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCMWJtTm9aV05yWldSSVpXRndVSFZ6YUNoY2JpQWdhR1ZoY0RvZ1NHVmhjQ3hjYmlBZ2NtOTNPaUJ1ZFcxaVpYSXNYRzRnSUhkbGFXZG9kRG9nYm5WdFltVnlMRnh1SUNCcGJtUmxlRG9nYm5WdFltVnlMRnh1SUNCbWJHRm5PaUJ1ZFcxaVpYSmNiaWs2SUc1MWJXSmxjaUI3WEc0Z0lHTnZibk4wSUdsdVpHbGpaWE1nUFNCb1pXRndXekJkVzNKdmQxMDdYRzRnSUdOdmJuTjBJSGRsYVdkb2RITWdQU0JvWldGd1d6RmRXM0p2ZDEwN1hHNGdJR052Ym5OMElHbHpUbVYzSUQwZ2FHVmhjRnN5WFZ0eWIzZGRPMXh1WEc0Z0lHbG1JQ2gzWldsbmFIUWdQajBnZDJWcFoyaDBjMXN3WFNsY2JpQWdJQ0J5WlhSMWNtNGdNRHRjYmx4dVhHNGdJQzh2SUVsdWMyVnlkQ0IyWVd3Z1lYUWdjRzl6YVhScGIyNGdlbVZ5YjF4dUlDQjNaV2xuYUhSeld6QmRJRDBnZDJWcFoyaDBPMXh1SUNCcGJtUnBZMlZ6V3pCZElEMGdhVzVrWlhnN1hHNGdJR2x6VG1WM1d6QmRJRDBnWm14aFp6dGNibHh1SUNBdkx5QkVaWE5qWlc1a0lIUm9aU0JvWldGd0xDQnpkMkZ3Y0dsdVp5QjJZV3gxWlhNZ2RXNTBhV3dnZEdobElHMWhlQ0JvWldGd0lHTnlhWFJsY21sdmJpQnBjeUJ0WlhSY2JpQWdiR1YwSUdrZ1BTQXdPMXh1SUNCc1pYUWdhVk4zWVhBZ1BTQXdPMXh1SUNCM2FHbHNaU0FvZEhKMVpTa2dlMXh1SUNBZ0lHTnZibk4wSUdsak1TQTlJRElnS2lCcElDc2dNVHRjYmlBZ0lDQmpiMjV6ZENCcFl6SWdQU0JwWXpFZ0t5QXhPMXh1WEc0Z0lDQWdZMjl1YzNRZ2FHVmhjRk5vWVhCbE1pQTlJR2hsWVhCYk1GMWJNRjB1YkdWdVozUm9PMXh1SUNBZ0lHbG1JQ2hwWXpFZ1BqMGdhR1ZoY0ZOb1lYQmxNaWtnZTF4dUlDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaHBZeklnUGowZ2FHVmhjRk5vWVhCbE1pa2dlMXh1SUNBZ0lDQWdhV1lnS0hkbGFXZG9kSE5iYVdNeFhTQStJSGRsYVdkb2RDbGNiaUFnSUNBZ0lDQWdhVk4zWVhBZ1BTQnBZekU3WEc0Z0lDQWdJQ0JsYkhObFhHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJSDBnWld4elpTQnBaaUFvZDJWcFoyaDBjMXRwWXpGZElENDlJSGRsYVdkb2RITmJhV015WFNrZ2UxeHVJQ0FnSUNBZ2FXWWdLSGRsYVdkb2RDQThJSGRsYVdkb2RITmJhV014WFNsY2JpQWdJQ0FnSUNBZ2FWTjNZWEFnUFNCcFl6RTdYRzRnSUNBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCcFppQW9kMlZwWjJoMElEd2dkMlZwWjJoMGMxdHBZekpkS1Z4dUlDQWdJQ0FnSUNCcFUzZGhjQ0E5SUdsak1qdGNiaUFnSUNBZ0lHVnNjMlZjYmlBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2QyVnBaMmgwYzF0cFhTQTlJSGRsYVdkb2RITmJhVk4zWVhCZE8xeHVJQ0FnSUdsdVpHbGpaWE5iYVYwZ1BTQnBibVJwWTJWelcybFRkMkZ3WFR0Y2JpQWdJQ0JwYzA1bGQxdHBYU0E5SUdselRtVjNXMmxUZDJGd1hUdGNibHh1SUNBZ0lHa2dQU0JwVTNkaGNEdGNiaUFnZlZ4dVhHNGdJSGRsYVdkb2RITmJhVjBnUFNCM1pXbG5hSFE3WEc0Z0lHbHVaR2xqWlhOYmFWMGdQU0JwYm1SbGVEdGNiaUFnYVhOT1pYZGJhVjBnUFNCbWJHRm5PMXh1SUNCeVpYUjFjbTRnTVR0Y2JuMWNibHh1THlvcVhHNGdLaUJDZFdsc1pDQmhJR2hsWVhBZ2IyWWdZMkZ1Wkdsa1lYUmxJRzVsYVdkb1ltOXljeUJtYjNJZ2JtVmhjbVZ6ZENCdVpXbG5hR0p2Y2lCa1pYTmpaVzUwTGlCR2IzSmNiaUFxSUdWaFkyZ2dkbVZ5ZEdWNElIUm9aU0JqWVc1a2FXUmhkR1VnYm1WcFoyaGliM0p6SUdGeVpTQmhibmtnWTNWeWNtVnVkQ0J1WldsbmFHSnZjbk1zSUdGdVpDQmhibmxjYmlBcUlIWmxjblJwWTJWeklIUm9ZWFFnYUdGMlpTQjBhR1VnZG1WeWRHVjRJR0Z6SUc5dVpTQnZaaUIwYUdWcGNpQnVaV0Z5WlhOMElHNWxhV2RvWW05eWN5NWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdKMWFXeGtRMkZ1Wkdsa1lYUmxjeWhjYmlBZ1kzVnljbVZ1ZEVkeVlYQm9PaUJJWldGd0xGeHVJQ0J1Vm1WeWRHbGpaWE02SUc1MWJXSmxjaXhjYmlBZ2JrNWxhV2RvWW05eWN6b2diblZ0WW1WeUxGeHVJQ0J0WVhoRFlXNWthV1JoZEdWek9pQnVkVzFpWlhJc1hHNGdJSEpoYm1SdmJUb2dVbUZ1Wkc5dFJtNWNiaWtnZTF4dUlDQmpiMjV6ZENCallXNWthV1JoZEdWT1pXbG5hR0p2Y25NZ1BTQnRZV3RsU0dWaGNDaHVWbVZ5ZEdsalpYTXNJRzFoZUVOaGJtUnBaR0YwWlhNcE8xeHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUc1V1pYSjBhV05sY3pzZ2FTc3JLU0I3WEc0Z0lDQWdabTl5SUNoc1pYUWdhaUE5SURBN0lHb2dQQ0J1VG1WcFoyaGliM0p6T3lCcUt5c3BJSHRjYmlBZ0lDQWdJR2xtSUNoamRYSnlaVzUwUjNKaGNHaGJNRjFiYVYxYmFsMGdQQ0F3S1Z4dUlDQWdJQ0FnSUNCamIyNTBhVzUxWlR0Y2JseHVJQ0FnSUNBZ1kyOXVjM1FnYVdSNElEMGdZM1Z5Y21WdWRFZHlZWEJvV3pCZFcybGRXMnBkTzF4dUlDQWdJQ0FnWTI5dWMzUWdhWE51SUQwZ1kzVnljbVZ1ZEVkeVlYQm9XekpkVzJsZFcycGRPMXh1SUNBZ0lDQWdZMjl1YzNRZ1pDQTlJSFYwYVd4ekxuUmhkVkpoYm1Rb2NtRnVaRzl0S1R0Y2JpQWdJQ0FnSUdobFlYQlFkWE5vS0dOaGJtUnBaR0YwWlU1bGFXZG9ZbTl5Y3l3Z2FTd2daQ3dnYVdSNExDQnBjMjRwTzF4dUlDQWdJQ0FnYUdWaGNGQjFjMmdvWTJGdVpHbGtZWFJsVG1WcFoyaGliM0p6TENCcFpIZ3NJR1FzSUdrc0lHbHpiaWs3WEc0Z0lDQWdJQ0JqZFhKeVpXNTBSM0poY0doYk1sMWJhVjFiYWwwZ1BTQXdPMXh1SUNBZ0lIMWNiaUFnZlZ4dUlDQnlaWFIxY200Z1kyRnVaR2xrWVhSbFRtVnBaMmhpYjNKek8xeHVmVnh1WEc0dktpcGNiaUFxSUVkcGRtVnVJR0Z1SUdGeWNtRjVJRzltSUdobFlYQnpJQ2h2WmlCcGJtUnBZMlZ6SUdGdVpDQjNaV2xuYUhSektTd2dkVzV3WVdOcklIUm9aU0JvWldGd1hHNGdLaUJ2ZFhRZ2RHOGdaMmwyWlNCaGJtUWdZWEp5WVhrZ2IyWWdjMjl5ZEdWa0lHeHBjM1J6SUc5bUlHbHVaR2xqWlhNZ1lXNWtJSGRsYVdkb2RITWdZbmtnYVc1amNtVmhjMmx1WjF4dUlDb2dkMlZwWjJoMExpQlVhR2x6SUdseklHVm1abVZqZEdsMlpXeDVJR3AxYzNRZ2RHaGxJSE5sWTI5dVpDQm9ZV3htSUc5bUlHaGxZWEFnYzI5eWRDQW9kR2hsSUdacGNuTjBYRzRnS2lCb1lXeG1JRzV2ZENCaVpXbHVaeUJ5WlhGMWFYSmxaQ0J6YVc1alpTQjNaU0JoYkhKbFlXUjVJR2hoZG1VZ2RHaGxJR1JoZEdFZ2FXNGdZU0JvWldGd0tTNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdSbGFHVmhjRk52Y25Rb2FHVmhjRG9nU0dWaGNDa2dlMXh1SUNCamIyNXpkQ0JwYm1ScFkyVnpJRDBnYUdWaGNGc3dYVHRjYmlBZ1kyOXVjM1FnZDJWcFoyaDBjeUE5SUdobFlYQmJNVjA3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JwYm1ScFkyVnpMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnWTI5dWMzUWdhVzVrU0dWaGNDQTlJR2x1WkdsalpYTmJhVjA3WEc0Z0lDQWdZMjl1YzNRZ1pHbHpkRWhsWVhBZ1BTQjNaV2xuYUhSelcybGRPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdhaUE5SURBN0lHb2dQQ0JwYm1SSVpXRndMbXhsYm1kMGFDQXRJREU3SUdvckt5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2FXNWtTR1ZoY0VsdVpHVjRJRDBnYVc1a1NHVmhjQzVzWlc1bmRHZ2dMU0JxSUMwZ01UdGNiaUFnSUNBZ0lHTnZibk4wSUdScGMzUklaV0Z3U1c1a1pYZ2dQU0JrYVhOMFNHVmhjQzVzWlc1bmRHZ2dMU0JxSUMwZ01UdGNibHh1SUNBZ0lDQWdZMjl1YzNRZ2RHVnRjREVnUFNCcGJtUklaV0Z3V3pCZE8xeHVJQ0FnSUNBZ2FXNWtTR1ZoY0Zzd1hTQTlJR2x1WkVobFlYQmJhVzVrU0dWaGNFbHVaR1Y0WFR0Y2JpQWdJQ0FnSUdsdVpFaGxZWEJiYVc1a1NHVmhjRWx1WkdWNFhTQTlJSFJsYlhBeE8xeHVYRzRnSUNBZ0lDQmpiMjV6ZENCMFpXMXdNaUE5SUdScGMzUklaV0Z3V3pCZE8xeHVJQ0FnSUNBZ1pHbHpkRWhsWVhCYk1GMGdQU0JrYVhOMFNHVmhjRnRrYVhOMFNHVmhjRWx1WkdWNFhUdGNiaUFnSUNBZ0lHUnBjM1JJWldGd1cyUnBjM1JJWldGd1NXNWtaWGhkSUQwZ2RHVnRjREk3WEc1Y2JpQWdJQ0FnSUhOcFpuUkViM2R1S0dScGMzUklaV0Z3TENCcGJtUklaV0Z3TENCa2FYTjBTR1ZoY0VsdVpHVjRMQ0F3S1R0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnY21WMGRYSnVJSHRwYm1ScFkyVnpMQ0IzWldsbmFIUnpmVHRjYm4xY2JseHVMeW9xWEc0Z0tpQlNaWE4wYjNKbElIUm9aU0JvWldGd0lIQnliM0JsY25SNUlHWnZjaUJoSUdobFlYQWdkMmwwYUNCaGJpQnZkWFFnYjJZZ2NHeGhZMlVnWld4bGJXVnVkRnh1SUNvZ1lYUWdjRzl6YVhScGIyNGdZR0JsYkhSZ1lDNGdWR2hwY3lCM2IzSnJjeUIzYVhSb0lHRWdhR1ZoY0NCd1lXbHlJSGRvWlhKbElHaGxZWEF4SUdOaGNuSnBaWE5jYmlBcUlIUm9aU0IzWldsbmFIUnpJR0Z1WkNCb1pXRndNaUJvYjJ4a2N5QjBhR1VnWTI5eWNtVnpjRzl1WkdsdVp5QmxiR1Z0Wlc1MGN5NWNiaUFxTDF4dVpuVnVZM1JwYjI0Z2MybG1kRVJ2ZDI0b1hHNGdJR2hsWVhBeE9pQnVkVzFpWlhKYlhTeGNiaUFnYUdWaGNESTZJRzUxYldKbGNsdGRMRnh1SUNCalpXbHNhVzVuT2lCdWRXMWlaWElzWEc0Z0lHVnNkRG9nYm5WdFltVnlYRzRwSUh0Y2JpQWdkMmhwYkdVZ0tHVnNkQ0FxSURJZ0t5QXhJRHdnWTJWcGJHbHVaeWtnZTF4dUlDQWdJR052Ym5OMElHeGxablJEYUdsc1pDQTlJR1ZzZENBcUlESWdLeUF4TzF4dUlDQWdJR052Ym5OMElISnBaMmgwUTJocGJHUWdQU0JzWldaMFEyaHBiR1FnS3lBeE8xeHVJQ0FnSUd4bGRDQnpkMkZ3SUQwZ1pXeDBPMXh1WEc0Z0lDQWdhV1lnS0dobFlYQXhXM04zWVhCZElEd2dhR1ZoY0RGYmJHVm1kRU5vYVd4a1hTbGNiaUFnSUNBZ0lITjNZWEFnUFNCc1pXWjBRMmhwYkdRN1hHNWNiaUFnSUNCcFppQW9jbWxuYUhSRGFHbHNaQ0E4SUdObGFXeHBibWNnSmlZZ2FHVmhjREZiYzNkaGNGMGdQQ0JvWldGd01WdHlhV2RvZEVOb2FXeGtYU2xjYmlBZ0lDQWdJSE4zWVhBZ1BTQnlhV2RvZEVOb2FXeGtPMXh1WEc1Y2JpQWdJQ0JwWmlBb2MzZGhjQ0E5UFQwZ1pXeDBLU0I3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnWTI5dWMzUWdkR1Z0Y0RFZ1BTQm9aV0Z3TVZ0bGJIUmRPMXh1SUNBZ0lDQWdhR1ZoY0RGYlpXeDBYU0E5SUdobFlYQXhXM04zWVhCZE8xeHVJQ0FnSUNBZ2FHVmhjREZiYzNkaGNGMGdQU0IwWlcxd01UdGNibHh1SUNBZ0lDQWdZMjl1YzNRZ2RHVnRjRElnUFNCb1pXRndNbHRsYkhSZE8xeHVJQ0FnSUNBZ2FHVmhjREpiWld4MFhTQTlJR2hsWVhBeVczTjNZWEJkTzF4dUlDQWdJQ0FnYUdWaGNESmJjM2RoY0YwZ1BTQjBaVzF3TWp0Y2JpQWdJQ0FnSUdWc2RDQTlJSE4zWVhBN1hHNGdJQ0FnZlZ4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1UyVmhjbU5vSUhSb1pTQm9aV0Z3SUdadmNpQjBhR1VnYzIxaGJHeGxjM1FnWld4bGJXVnVkQ0IwYUdGMElHbHpJSE4wYVd4c0lHWnNZV2RuWldRdVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ6YldGc2JHVnpkRVpzWVdkblpXUW9hR1ZoY0RvZ1NHVmhjQ3dnY205M09pQnVkVzFpWlhJcElIdGNiaUFnWTI5dWMzUWdhVzVrSUQwZ2FHVmhjRnN3WFZ0eWIzZGRPMXh1SUNCamIyNXpkQ0JrYVhOMElEMGdhR1ZoY0ZzeFhWdHliM2RkTzF4dUlDQmpiMjV6ZENCbWJHRm5JRDBnYUdWaGNGc3lYVnR5YjNkZE8xeHVYRzRnSUd4bGRDQnRhVzVFYVhOMElEMGdTVzVtYVc1cGRIazdYRzRnSUd4bGRDQnlaWE4xYkhSSmJtUmxlQ0E5SUMweE8xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUQ0Z2FXNWtMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnYVdZZ0tHWnNZV2RiYVYwZ1BUMDlJREVnSmlZZ1pHbHpkRnRwWFNBOElHMXBia1JwYzNRcElIdGNiaUFnSUNBZ0lHMXBia1JwYzNRZ1BTQmthWE4wVzJsZE8xeHVJQ0FnSUNBZ2NtVnpkV3gwU1c1a1pYZ2dQU0JwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUdsbUlDaHlaWE4xYkhSSmJtUmxlQ0ErUFNBd0tTQjdYRzRnSUNBZ1pteGhaMXR5WlhOMWJIUkpibVJsZUYwZ1BTQXdPMXh1SUNBZ0lISmxkSFZ5YmlCTllYUm9MbVpzYjI5eUtHbHVaRnR5WlhOMWJIUkpibVJsZUYwcE8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lISmxkSFZ5YmlBdE1UdGNiaUFnZlZ4dWZWeHVJbDE5IiwiLyoqXG4gKiBAbGljZW5zZVxuICpcbiAqIENvcHlyaWdodCAyMDE5IEdvb2dsZSBMTEMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKi9cbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuLyoqXG4gKiBJbnRlcm5hbCAyLWRpbWVuc2lvbmFsIHNwYXJzZSBtYXRyaXggY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIFNwYXJzZU1hdHJpeCB7XG4gICAgY29uc3RydWN0b3Iocm93cywgY29scywgdmFsdWVzLCBkaW1zKSB7XG4gICAgICAgIHRoaXMuZW50cmllcyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5uUm93cyA9IDA7XG4gICAgICAgIHRoaXMubkNvbHMgPSAwO1xuICAgICAgICBpZiAocm93cy5sZW5ndGggIT09IGNvbHMubGVuZ3RoIHx8IHJvd3MubGVuZ3RoICE9PSB2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Jvd3MsIGNvbHMgYW5kIHZhbHVlcyBhcnJheXMgbXVzdCBhbGwgaGF2ZSB0aGUgc2FtZSBsZW5ndGgnKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUT0RPOiBBc3NlcnQgdGhhdCBkaW1zIGFyZSBsZWdpdC5cbiAgICAgICAgdGhpcy5uUm93cyA9IGRpbXNbMF07XG4gICAgICAgIHRoaXMubkNvbHMgPSBkaW1zWzFdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qgcm93ID0gcm93c1tpXTtcbiAgICAgICAgICAgIGNvbnN0IGNvbCA9IGNvbHNbaV07XG4gICAgICAgICAgICB0aGlzLmNoZWNrRGltcyhyb3csIGNvbCk7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSB0aGlzLm1ha2VLZXkocm93LCBjb2wpO1xuICAgICAgICAgICAgdGhpcy5lbnRyaWVzLnNldChrZXksIHsgdmFsdWU6IHZhbHVlc1tpXSwgcm93LCBjb2wgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbWFrZUtleShyb3csIGNvbCkge1xuICAgICAgICByZXR1cm4gYCR7cm93fToke2NvbH1gO1xuICAgIH1cbiAgICBjaGVja0RpbXMocm93LCBjb2wpIHtcbiAgICAgICAgY29uc3Qgd2l0aGluQm91bmRzID0gcm93IDwgdGhpcy5uUm93cyAmJiBjb2wgPCB0aGlzLm5Db2xzO1xuICAgICAgICBpZiAoIXdpdGhpbkJvdW5kcylcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncm93IGFuZC9vciBjb2wgc3BlY2lmaWVkIG91dHNpZGUgb2YgbWF0cml4IGRpbWVuc2lvbnMnKTtcbiAgICB9XG4gICAgc2V0KHJvdywgY29sLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmNoZWNrRGltcyhyb3csIGNvbCk7XG4gICAgICAgIGNvbnN0IGtleSA9IHRoaXMubWFrZUtleShyb3csIGNvbCk7XG4gICAgICAgIGlmICghdGhpcy5lbnRyaWVzLmhhcyhrZXkpKVxuICAgICAgICAgICAgdGhpcy5lbnRyaWVzLnNldChrZXksIHsgdmFsdWUsIHJvdywgY29sIH0pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLmVudHJpZXMuZ2V0KGtleSkudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0KHJvdywgY29sLCBkZWZhdWx0VmFsdWUgPSAwKSB7XG4gICAgICAgIC8vdGhpcy5jaGVja0RpbXMocm93LCBjb2wpO1xuICAgICAgICBjb25zdCBrZXkgPSB0aGlzLm1ha2VLZXkocm93LCBjb2wpO1xuICAgICAgICBpZiAodGhpcy5lbnRyaWVzLmhhcyhrZXkpKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW50cmllcy5nZXQoa2V5KS52YWx1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG4gICAgZ2V0QWxsKG9yZGVyZWQgPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IHJvd0NvbFZhbHVlcyA9IG5ldyBBcnJheSh0aGlzLmVudHJpZXMuc2l6ZSkuZmlsbChudWxsKTtcbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICB0aGlzLmVudHJpZXMuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHJvd0NvbFZhbHVlc1tpKytdID0gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAob3JkZXJlZCkge1xuICAgICAgICAgICAgLy8gT3JkZXJpbmcgdGhlIHJlc3VsdCBpc24ndCByZXF1aXJlZCBmb3IgcHJvY2Vzc2luZyBidXQgaXQgZG9lcyBtYWtlIGl0IGVhc2llciB0byB3cml0ZSB0ZXN0c1xuICAgICAgICAgICAgcm93Q29sVmFsdWVzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYS5yb3cgPT09IGIucm93KVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5jb2wgLSBiLmNvbDtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnJvdyAtIGIucm93O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJvd0NvbFZhbHVlcztcbiAgICB9XG4gICAgZ2V0RGltcygpIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLm5Sb3dzLCB0aGlzLm5Db2xzXTtcbiAgICB9XG4gICAgZ2V0Um93cygpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5lbnRyaWVzLCAoW19rZXksIHZhbHVlXSkgPT4gdmFsdWUucm93KTtcbiAgICAgICAgLy8gcmV0dXJuIHRoaXMucm93cyBhcyB1bmtub3duIGFzIG51bWJlcltdO1xuICAgIH1cbiAgICBnZXRDb2xzKCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmVudHJpZXMsIChbX2tleSwgdmFsdWVdKSA9PiB2YWx1ZS5jb2wpO1xuICAgICAgICAvLyByZXR1cm4gdGhpcy5jb2xzIGFzIHVua25vd24gYXMgbnVtYmVyW107XG4gICAgfVxuICAgIGdldFZhbHVlcygpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5lbnRyaWVzLCAoW19rZXksIHZhbHVlXSkgPT4gdmFsdWUudmFsdWUpO1xuICAgICAgICAvL3JldHVybiB0aGlzLnZhbHVlcyBhcyB1bmtub3duIGFzIG51bWJlcltdO1xuICAgIH1cbiAgICBmb3JFYWNoKGZuKSB7XG4gICAgICAgIHRoaXMuZW50cmllcy5mb3JFYWNoKCh2YWx1ZSkgPT4gZm4odmFsdWUudmFsdWUsIHZhbHVlLnJvdywgdmFsdWUuY29sKSk7XG4gICAgfVxuICAgIG1hcChmbikge1xuICAgICAgICBjb25zdCB2YWxzID0gbmV3IEZsb2F0MzJBcnJheSh0aGlzLmVudHJpZXMuc2l6ZSk7XG4gICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgdGhpcy5lbnRyaWVzLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB2YWxzW2krK10gPSBmbih2YWx1ZS52YWx1ZSwgdmFsdWUucm93LCB2YWx1ZS5jb2wpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZGltcyA9IFt0aGlzLm5Sb3dzLCB0aGlzLm5Db2xzXTtcbiAgICAgICAgcmV0dXJuIG5ldyBTcGFyc2VNYXRyaXgodGhpcy5nZXRSb3dzKCksIHRoaXMuZ2V0Q29scygpLCB2YWxzLCBkaW1zKTtcbiAgICB9XG4gICAgdG9BcnJheSgpIHtcbiAgICAgICAgY29uc3Qgcm93cyA9IHV0aWxzLmVtcHR5KHRoaXMublJvd3MpO1xuICAgICAgICBjb25zdCBvdXRwdXQgPSByb3dzLm1hcCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdXRpbHMuemVyb3ModGhpcy5uQ29scyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVudHJpZXMuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIG91dHB1dFt2YWx1ZS5yb3ddW3ZhbHVlLmNvbF0gPSB2YWx1ZS52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgfVxufVxuLyoqXG4gKiBUcmFuc3Bvc2UgYSBzcGFyc2UgbWF0cml4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc3Bvc2UobWF0cml4KSB7XG4gICAgY29uc3Qgb2xkUm93cyA9IG1hdHJpeC5nZXRSb3dzKCk7XG4gICAgY29uc3Qgb2xkQ29scyA9IG1hdHJpeC5nZXRDb2xzKCk7XG4gICAgY29uc3Qgb2xkVmFscyA9IG1hdHJpeC5nZXRWYWx1ZXMoKTtcbiAgICBjb25zdCBtYXRsZW4gPSBvbGRDb2xzLmxlbmd0aDtcbiAgICBjb25zdCBjb2xzID0gbmV3IEludDMyQXJyYXkobWF0bGVuKTtcbiAgICBjb25zdCByb3dzID0gbmV3IEludDMyQXJyYXkobWF0bGVuKTtcbiAgICBjb25zdCB2YWxzID0gbmV3IEZsb2F0MzJBcnJheShtYXRsZW4pO1xuICAgIGNvbHMuc2V0KG9sZFJvd3MpO1xuICAgIHJvd3Muc2V0KG9sZENvbHMpO1xuICAgIHZhbHMuc2V0KG9sZFZhbHMpO1xuICAgIGNvbnN0IGRpbXMgPSBbbWF0cml4Lm5Db2xzLCBtYXRyaXgublJvd3NdO1xuICAgIHJldHVybiBuZXcgU3BhcnNlTWF0cml4KHJvd3MsIGNvbHMsIHZhbHMsIGRpbXMpO1xufVxuLyoqXG4gKiBDb25zdHJ1Y3QgYSBzcGFyc2UgaWRlbnRpdHkgbWF0cml4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGl0eShzaXplKSB7XG4gICAgY29uc3QgW3Jvd3NdID0gc2l6ZTtcbiAgICBjb25zdCBtYXRyaXggPSBuZXcgU3BhcnNlTWF0cml4KFtdLCBbXSwgW10sIHNpemUpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKVxuICAgICAgICBtYXRyaXguc2V0KGksIGksIDEpO1xuICAgIHJldHVybiBtYXRyaXg7XG59XG4vKipcbiAqIEVsZW1lbnQtd2lzZSBtdWx0aXBsaWNhdGlvbiBvZiB0d28gbWF0cmljZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhaXJ3aXNlTXVsdGlwbHkoYSwgYikge1xuICAgIHJldHVybiBlbGVtZW50V2lzZShhLCBiLCAoeCwgeSkgPT4geCAqIHkpO1xufVxuLyoqXG4gKiBFbGVtZW50LXdpc2UgYWRkaXRpb24gb2YgdHdvIG1hdHJpY2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGQoYSwgYikge1xuICAgIHJldHVybiBlbGVtZW50V2lzZShhLCBiLCAoeCwgeSkgPT4geCArIHkpO1xufVxuLyoqXG4gKiBFbGVtZW50LXdpc2Ugc3VidHJhY3Rpb24gb2YgdHdvIG1hdHJpY2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdWJ0cmFjdChhLCBiKSB7XG4gICAgcmV0dXJuIGVsZW1lbnRXaXNlKGEsIGIsICh4LCB5KSA9PiB4IC0geSk7XG59XG4vKipcbiAqIEVsZW1lbnQtd2lzZSBtYXhpbXVtIG9mIHR3byBtYXRyaWNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWF4aW11bShhLCBiKSB7XG4gICAgcmV0dXJuIGVsZW1lbnRXaXNlKGEsIGIsICh4LCB5KSA9PiAoeCA+IHkgPyB4IDogeSkpO1xufVxuLyoqXG4gKiBTY2FsYXIgbXVsdGlwbGljYXRpb24gb2YgdHdvIG1hdHJpY2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtdWx0aXBseVNjYWxhcihhLCBzY2FsYXIpIHtcbiAgICByZXR1cm4gYS5tYXAoKHZhbHVlKSA9PiB7XG4gICAgICAgIHJldHVybiB2YWx1ZSAqIHNjYWxhcjtcbiAgICB9KTtcbn1cbi8qKlxuICogUmV0dXJucyBhIG5ldyBtYXRyaXggd2l0aCB6ZXJvIGVudHJpZXMgcmVtb3ZlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVsaW1pbmF0ZVplcm9zKG0pIHtcbiAgICBjb25zdCB6ZXJvSW5kaWNlcyA9IG5ldyBTZXQoKTtcbiAgICBjb25zdCB2YWx1ZXMgPSBtLmdldFZhbHVlcygpO1xuICAgIGNvbnN0IHJvd3MgPSBtLmdldFJvd3MoKTtcbiAgICBjb25zdCBjb2xzID0gbS5nZXRDb2xzKCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHZhbHVlc1tpXSA9PT0gMClcbiAgICAgICAgICAgIHplcm9JbmRpY2VzLmFkZChpKTtcbiAgICB9XG4gICAgY29uc3QgcmVtb3ZlQnlaZXJvSW5kZXggPSAoXywgaW5kZXgpID0+ICF6ZXJvSW5kaWNlcy5oYXMoaW5kZXgpO1xuICAgIGNvbnN0IG5leHRWYWx1ZXMgPSB2YWx1ZXMuZmlsdGVyKHJlbW92ZUJ5WmVyb0luZGV4KTtcbiAgICBjb25zdCBuZXh0Um93cyA9IHJvd3MuZmlsdGVyKHJlbW92ZUJ5WmVyb0luZGV4KTtcbiAgICBjb25zdCBuZXh0Q29scyA9IGNvbHMuZmlsdGVyKHJlbW92ZUJ5WmVyb0luZGV4KTtcbiAgICByZXR1cm4gbmV3IFNwYXJzZU1hdHJpeChuZXh0Um93cywgbmV4dENvbHMsIG5leHRWYWx1ZXMsIG0uZ2V0RGltcygpKTtcbn1cbi8qKlxuICogTm9ybWFsaXphdGlvbiBvZiBhIHNwYXJzZSBtYXRyaXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUobSwgbm9ybVR5cGUgPSBcImwyXCIgLyogTm9ybVR5cGUubDIgKi8pIHtcbiAgICBjb25zdCBub3JtRm4gPSBub3JtRm5zW25vcm1UeXBlXTtcbiAgICBjb25zdCBjb2xzQnlSb3cgPSBuZXcgTWFwKCk7XG4gICAgbS5mb3JFYWNoKChfLCByb3csIGNvbCkgPT4ge1xuICAgICAgICBjb25zdCBjb2xzID0gY29sc0J5Um93LmdldChyb3cpIHx8IFtdO1xuICAgICAgICBjb2xzLnB1c2goY29sKTtcbiAgICAgICAgY29sc0J5Um93LnNldChyb3csIGNvbHMpO1xuICAgIH0pO1xuICAgIGNvbnN0IG5leHRNYXRyaXggPSBuZXcgU3BhcnNlTWF0cml4KFtdLCBbXSwgW10sIG0uZ2V0RGltcygpKTtcbiAgICBmb3IgKGNvbnN0IHJvdyBvZiBjb2xzQnlSb3cua2V5cygpKSB7XG4gICAgICAgIGNvbnN0IGNvbHMgPSBjb2xzQnlSb3cuZ2V0KHJvdykuc29ydCgpO1xuICAgICAgICBjb25zdCB2YWxzID0gY29scy5tYXAoKGNvbCkgPT4gbS5nZXQocm93LCBjb2wpKTtcbiAgICAgICAgY29uc3Qgbm9ybSA9IG5vcm1Gbih2YWxzKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub3JtLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgbmV4dE1hdHJpeC5zZXQocm93LCBjb2xzW2ldLCBub3JtW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHRNYXRyaXg7XG59XG5jb25zdCBub3JtRm5zID0ge1xuICAgIFtcIm1heFwiIC8qIE5vcm1UeXBlLm1heCAqL106ICh4cykgPT4ge1xuICAgICAgICBsZXQgbWF4ID0gLUluZmluaXR5O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgbWF4ID0geHNbaV0gPiBtYXggPyB4c1tpXSA6IG1heDtcbiAgICAgICAgcmV0dXJuIHhzLm1hcCgoeCkgPT4geCAvIG1heCk7XG4gICAgfSxcbiAgICBbXCJsMVwiIC8qIE5vcm1UeXBlLmwxICovXTogKHhzKSA9PiB7XG4gICAgICAgIGxldCBzdW0gPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgc3VtICs9IHhzW2ldO1xuICAgICAgICByZXR1cm4geHMubWFwKCh4KSA9PiB4IC8gc3VtKTtcbiAgICB9LFxuICAgIFtcImwyXCIgLyogTm9ybVR5cGUubDIgKi9dOiAoeHMpID0+IHtcbiAgICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICBzdW0gKz0geHNbaV0gKiogMjtcbiAgICAgICAgcmV0dXJuIHhzLm1hcCgoeCkgPT4gTWF0aC5zcXJ0KHggKiogMiAvIHN1bSkpO1xuICAgIH0sXG59O1xuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGVsZW1lbnQtd2lzZSBvcGVyYXRpb25zLlxuICovXG5mdW5jdGlvbiBlbGVtZW50V2lzZShhLCBiLCBvcCkge1xuICAgIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0KCk7XG4gICAgY29uc3Qgcm93cyA9IFtdO1xuICAgIGNvbnN0IGNvbHMgPSBbXTtcbiAgICBjb25zdCB2YWxzID0gW107XG4gICAgY29uc3Qgb3BlcmF0ZSA9IChyb3csIGNvbCkgPT4ge1xuICAgICAgICByb3dzLnB1c2gocm93KTtcbiAgICAgICAgY29scy5wdXNoKGNvbCk7XG4gICAgICAgIGNvbnN0IG5leHRWYWx1ZSA9IG9wKGEuZ2V0KHJvdywgY29sKSwgYi5nZXQocm93LCBjb2wpKTtcbiAgICAgICAgdmFscy5wdXNoKG5leHRWYWx1ZSk7XG4gICAgfTtcbiAgICBjb25zdCB2YWx1ZXNBID0gYS5nZXRWYWx1ZXMoKTtcbiAgICBjb25zdCByb3dzQSA9IGEuZ2V0Um93cygpO1xuICAgIGNvbnN0IGNvbHNBID0gYS5nZXRDb2xzKCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZXNBLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IHJvd3NBW2ldO1xuICAgICAgICBjb25zdCBjb2wgPSBjb2xzQVtpXTtcbiAgICAgICAgY29uc3Qga2V5ID0gYCR7cm93fToke2NvbH1gO1xuICAgICAgICB2aXNpdGVkLmFkZChrZXkpO1xuICAgICAgICBvcGVyYXRlKHJvdywgY29sKTtcbiAgICB9XG4gICAgY29uc3QgdmFsdWVzQiA9IGIuZ2V0VmFsdWVzKCk7XG4gICAgY29uc3Qgcm93c0IgPSBiLmdldFJvd3MoKTtcbiAgICBjb25zdCBjb2xzQiA9IGIuZ2V0Q29scygpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWVzQi5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCByb3cgPSByb3dzQltpXTtcbiAgICAgICAgY29uc3QgY29sID0gY29sc0JbaV07XG4gICAgICAgIGNvbnN0IGtleSA9IGAke3Jvd306JHtjb2x9YDtcbiAgICAgICAgaWYgKHZpc2l0ZWQuaGFzKGtleSkpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgb3BlcmF0ZShyb3csIGNvbCk7XG4gICAgfVxuICAgIGNvbnN0IGRpbXMgPSBbYS5uUm93cywgYS5uQ29sc107XG4gICAgcmV0dXJuIG5ldyBTcGFyc2VNYXRyaXgocm93cywgY29scywgdmFscywgZGltcyk7XG59XG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiBmb3IgZ2V0dGluZyBkYXRhLCBpbmRpY2VzLCBhbmQgaW5wdHIgYXJyYXlzIGZyb20gYSBzcGFyc2VcbiAqIG1hdHJpeCB0byBmb2xsb3cgY3NyIG1hdHJpeCBjb252ZW50aW9ucy4gU3VwZXIgaW5lZmZpY2llbnQgKGFuZCBraW5kIG9mXG4gKiBkZWZlYXRzIHRoZSBwdXJwb3NlIG9mIHRoaXMgY29udmVudGlvbikgYnV0IGEgbG90IG9mIHRoZSBwb3J0ZWQgcHl0aG9uIHRyZWVcbiAqIHNlYXJjaCBsb2dpYyBkZXBlbmRzIG9uIHRoaXMgZGF0YSBmb3JtYXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDU1IoeCkge1xuICAgIGNvbnN0IGVudHJpZXMgPSBbXTtcbiAgICB4LmZvckVhY2goKHZhbHVlLCByb3csIGNvbCkgPT4ge1xuICAgICAgICBlbnRyaWVzLnB1c2goeyB2YWx1ZSwgcm93LCBjb2wgfSk7XG4gICAgfSk7XG4gICAgZW50cmllcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGlmIChhLnJvdyA9PT0gYi5yb3cpXG4gICAgICAgICAgICByZXR1cm4gYS5jb2wgLSBiLmNvbDtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIGEucm93IC0gYi5yb3c7XG4gICAgfSk7XG4gICAgY29uc3QgaW5kaWNlcyA9IFtdO1xuICAgIGNvbnN0IHZhbHVlcyA9IFtdO1xuICAgIGNvbnN0IGluZHB0ciA9IFtdO1xuICAgIGxldCBjdXJyZW50Um93ID0gLTE7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHsgcm93LCBjb2wsIHZhbHVlIH0gPSBlbnRyaWVzW2ldO1xuICAgICAgICBpZiAocm93ICE9PSBjdXJyZW50Um93KSB7XG4gICAgICAgICAgICBjdXJyZW50Um93ID0gcm93O1xuICAgICAgICAgICAgaW5kcHRyLnB1c2goaSk7XG4gICAgICAgIH1cbiAgICAgICAgaW5kaWNlcy5wdXNoKGNvbCk7XG4gICAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgaW5kaWNlcywgdmFsdWVzLCBpbmRwdHIgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJXRjBjbWw0TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2liV0YwY21sNExuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCT3pzN096czdPenM3T3pzN096czdPenRIUVdsQ1J6dEJRVVZJTEU5QlFVOHNTMEZCU3l4TFFVRkxMRTFCUVUwc1UwRkJVeXhEUVVGRE8wRkJTV3BET3p0SFFVVkhPMEZCUTBnc1RVRkJUU3hQUVVGUExGbEJRVms3U1VGTmRrSXNXVUZEUlN4SlFVRXlRaXhGUVVNelFpeEpRVUV5UWl4RlFVTXpRaXhOUVVFclFpeEZRVU12UWl4SlFVRmpPMUZCVkZJc1dVRkJUeXhIUVVGSExFbEJRVWtzUjBGQlJ5eEZRVUZwUWl4RFFVRkRPMUZCUld4RExGVkJRVXNzUjBGQlZ5eERRVUZETEVOQlFVTTdVVUZEYkVJc1ZVRkJTeXhIUVVGWExFTkJRVU1zUTBGQlF6dFJRVkY2UWl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFdEJRVXNzU1VGQlNTeERRVUZETEUxQlFVMHNTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hMUVVGTExFMUJRVTBzUTBGQlF5eE5RVUZOTEVWQlFVVTdXVUZEYUVVc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGRFlpdzBSRUZCTkVRc1EwRkROMFFzUTBGQlF6dFRRVU5JTzFGQlJVUXNiME5CUVc5RE8xRkJRM0JETEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzSkNMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNKQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMWxCUTNSRExFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOd1FpeE5RVUZOTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGNFSXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEZWtJc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGJrTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVTXNTMEZCU3l4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkRMRU5CUVVNc1EwRkJRenRUUVVOeVJEdEpRVU5JTEVOQlFVTTdTVUZGVHl4UFFVRlBMRU5CUVVNc1IwRkJWeXhGUVVGRkxFZEJRVmM3VVVGRGRFTXNUMEZCVHl4SFFVRkhMRWRCUVVjc1NVRkJTU3hIUVVGSExFVkJRVVVzUTBGQlF6dEpRVU42UWl4RFFVRkRPMGxCUlU4c1UwRkJVeXhEUVVGRExFZEJRVmNzUlVGQlJTeEhRVUZYTzFGQlEzaERMRTFCUVUwc1dVRkJXU3hIUVVGSExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4SlFVRkpMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETzFGQlF6RkVMRWxCUVVrc1EwRkJReXhaUVVGWk8xbEJRMllzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4MVJFRkJkVVFzUTBGQlF5eERRVUZETzBsQlF6ZEZMRU5CUVVNN1NVRkZSQ3hIUVVGSExFTkJRVU1zUjBGQlZ5eEZRVUZGTEVkQlFWY3NSVUZCUlN4TFFVRmhPMUZCUTNwRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRM3BDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTI1RExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU03V1VGRGVFSXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVTXNTMEZCU3l4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVU1zUTBGQlF5eERRVUZET3p0WlFVVjZReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVVc1EwRkJReXhMUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETzBsQlEzcERMRU5CUVVNN1NVRkZSQ3hIUVVGSExFTkJRVU1zUjBGQlZ5eEZRVUZGTEVkQlFWY3NSVUZCUlN4WlFVRlpMRWRCUVVjc1EwRkJRenRSUVVNMVF5d3lRa0ZCTWtJN1VVRkRNMElzVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEYmtNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNN1dVRkRka0lzVDBGQlR5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTTdPMWxCUlhCRExFOUJRVThzV1VGQldTeERRVUZETzBsQlEzaENMRU5CUVVNN1NVRkZSQ3hOUVVGTkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVazdVVUZEYmtJc1RVRkJUU3haUVVGWkxFZEJRVmtzU1VGQlNTeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRkRVVzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTFZc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1JVRkJSVHRaUVVNM1FpeFpRVUZaTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU03VVVGRE5VSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRTQ3hKUVVGSkxFOUJRVThzUlVGQlJUdFpRVU5ZTERoR1FVRTRSanRaUVVNNVJpeFpRVUZaTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzJkQ1FVTjZRaXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRWRCUVVjN2IwSkJRMnBDTEU5QlFVOHNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZET3p0dlFrRkZja0lzVDBGQlR5eERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU03V1VGRGVrSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRTanRSUVVORUxFOUJRVThzV1VGQldTeERRVUZETzBsQlEzUkNMRU5CUVVNN1NVRkZSQ3hQUVVGUE8xRkJRMHdzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBsQlEyeERMRU5CUVVNN1NVRkZSQ3hQUVVGUE8xRkJRMHdzVDBGQlR5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUXpsRUxESkRRVUV5UXp0SlFVTTNReXhEUVVGRE8wbEJSVVFzVDBGQlR6dFJRVU5NTEU5QlFVOHNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1MwRkJTeXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVNNVJDd3lRMEZCTWtNN1NVRkROME1zUTBGQlF6dEpRVVZFTEZOQlFWTTdVVUZEVUN4UFFVRlBMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRGJFVXNORU5CUVRSRE8wbEJRelZETEVOQlFVTTdTVUZGUkN4UFFVRlBMRU5CUVVNc1JVRkJjVVE3VVVGRE0wUXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eEZRVUZGTEV0QlFVc3NRMEZCUXl4SFFVRkhMRVZCUVVVc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZWtVc1EwRkJRenRKUVVWRUxFZEJRVWNzUTBGQlF5eEZRVUYxUkR0UlFVTjZSQ3hOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlEycEVMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5XTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEVWQlFVVTdXVUZETjBJc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFVkJRVVVzUzBGQlN5eERRVUZETEVkQlFVY3NSVUZCUlN4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGNFUXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRTQ3hOUVVGTkxFbEJRVWtzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFGQlEzUkRMRTlCUVU4c1NVRkJTU3haUVVGWkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RlFVRkZMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzUlVGQlJTeEpRVUV5UWl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRemRHTEVOQlFVTTdTVUZGUkN4UFFVRlBPMUZCUTB3c1RVRkJUU3hKUVVGSkxFZEJRV2RDTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFGQlEyeEVMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RlFVRkZPMWxCUXpOQ0xFOUJRVThzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRGFrTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRTQ3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hGUVVGRk8xbEJRemRDTEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU03VVVGRE4wTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRTQ3hQUVVGUExFMUJRVTBzUTBGQlF6dEpRVU5vUWl4RFFVRkRPME5CUTBZN1FVRkZSRHM3UjBGRlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4VFFVRlRMRU5CUVVNc1RVRkJiMEk3U1VGRE5VTXNUVUZCVFN4UFFVRlBMRWRCUVVjc1RVRkJUU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBsQlEycERMRTFCUVUwc1QwRkJUeXhIUVVGSExFMUJRVTBzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0SlFVTnFReXhOUVVGTkxFOUJRVThzUjBGQlJ5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNN1NVRkRia01zVFVGQlRTeE5RVUZOTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJRenRKUVVNNVFpeE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEpRVU53UXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0SlFVTndReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEZsQlFWa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVWMFF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRMnhDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRGJFSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dEpRVU5zUWl4TlFVRk5MRWxCUVVrc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVWQlFVVXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wbEJRekZETEU5QlFVOHNTVUZCU1N4WlFVRlpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1FVRkRiRVFzUTBGQlF6dEJRVVZFT3p0SFFVVkhPMEZCUTBnc1RVRkJUU3hWUVVGVkxGRkJRVkVzUTBGQlF5eEpRVUZqTzBsQlEzSkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTTdTVUZEY0VJc1RVRkJUU3hOUVVGTkxFZEJRVWNzU1VGQlNTeFpRVUZaTEVOQlFVTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdTVUZEYkVRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1JVRkJSU3hEUVVGRExFVkJRVVU3VVVGRE0wSXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUlhSQ0xFOUJRVThzVFVGQlRTeERRVUZETzBGQlEyaENMRU5CUVVNN1FVRkZSRHM3UjBGRlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4blFrRkJaMElzUTBGRE9VSXNRMEZCWlN4RlFVTm1MRU5CUVdVN1NVRkZaaXhQUVVGUExGZEJRVmNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRelZETEVOQlFVTTdRVUZGUkRzN1IwRkZSenRCUVVOSUxFMUJRVTBzVlVGQlZTeEhRVUZITEVOQlFVTXNRMEZCWlN4RlFVRkZMRU5CUVdVN1NVRkRiRVFzVDBGQlR5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU0xUXl4RFFVRkRPMEZCUlVRN08wZEJSVWM3UVVGRFNDeE5RVUZOTEZWQlFWVXNVVUZCVVN4RFFVRkRMRU5CUVdVc1JVRkJSU3hEUVVGbE8wbEJRM1pFTEU5QlFVOHNWMEZCVnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZETlVNc1EwRkJRenRCUVVWRU96dEhRVVZITzBGQlEwZ3NUVUZCVFN4VlFVRlZMRTlCUVU4c1EwRkJReXhEUVVGbExFVkJRVVVzUTBGQlpUdEpRVU4wUkN4UFFVRlBMRmRCUVZjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRkRVFzUTBGQlF6dEJRVVZFT3p0SFFVVkhPMEZCUTBnc1RVRkJUU3hWUVVGVkxHTkJRV01zUTBGQlF5eERRVUZsTEVWQlFVVXNUVUZCWXp0SlFVTTFSQ3hQUVVGUExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TFFVRmhMRVZCUVVVc1JVRkJSVHRSUVVNM1FpeFBRVUZQTEV0QlFVc3NSMEZCUnl4TlFVRk5MRU5CUVVNN1NVRkRlRUlzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEVEN4RFFVRkRPMEZCUlVRN08wZEJSVWM3UVVGRFNDeE5RVUZOTEZWQlFWVXNZMEZCWXl4RFFVRkRMRU5CUVdVN1NVRkROVU1zVFVGQlRTeFhRVUZYTEVkQlFVY3NTVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJRenRKUVVNNVFpeE5RVUZOTEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03U1VGRE4wSXNUVUZCVFN4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBsQlEzcENMRTFCUVUwc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0SlFVTjZRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0UlFVTjBReXhKUVVGSkxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRPMWxCUTJwQ0xGZEJRVmNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRkRUk3U1VGRFJDeE5RVUZOTEdsQ1FVRnBRaXhIUVVGSExFTkJRVU1zUTBGQlRTeEZRVUZGTEV0QlFXRXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhYUVVGWExFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMGxCUXpkRkxFMUJRVTBzVlVGQlZTeEhRVUZITEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNRMEZCUXp0SlFVTndSQ3hOUVVGTkxGRkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVOQlFVTTdTVUZEYUVRc1RVRkJUU3hSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETzBsQlJXaEVMRTlCUVU4c1NVRkJTU3haUVVGWkxFTkJRVU1zVVVGQlVTeEZRVUZGTEZGQlFWRXNSVUZCUlN4VlFVRlZMRVZCUVVVc1EwRkJReXhEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETEVOQlFVTTdRVUZEZGtVc1EwRkJRenRCUVVWRU96dEhRVVZITzBGQlEwZ3NUVUZCVFN4VlFVRlZMRk5CUVZNc1EwRkJReXhEUVVGbExFVkJRVVVzVVVGQlVTeDVRa0ZCWXp0SlFVTXZSQ3hOUVVGTkxFMUJRVTBzUjBGQlJ5eFBRVUZQTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1NVRkZha01zVFVGQlRTeFRRVUZUTEVkQlFVY3NTVUZCU1N4SFFVRkhMRVZCUVc5Q0xFTkJRVU03U1VGRE9VTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRVZCUVVVN1VVRkRlRUlzVFVGQlRTeEpRVUZKTEVkQlFVY3NVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTTdVVUZEZEVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTm1MRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUXpOQ0xFTkJRVU1zUTBGQlF5eERRVUZETzBsQlJVZ3NUVUZCVFN4VlFVRlZMRWRCUVVjc1NVRkJTU3haUVVGWkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETEVOQlFVTTdTVUZGTjBRc1MwRkJTeXhOUVVGTkxFZEJRVWNzU1VGQlNTeFRRVUZUTEVOQlFVTXNTVUZCU1N4RlFVRkZMRVZCUVVVN1VVRkRiRU1zVFVGQlRTeEpRVUZKTEVkQlFVY3NVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVVVzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXp0UlFVVjRReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEyaEVMRTFCUVUwc1NVRkJTU3hIUVVGSExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTXhRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZEYkVNc1ZVRkJWU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUTNwRE8wbEJSVVFzVDBGQlR5eFZRVUZWTEVOQlFVTTdRVUZEY0VJc1EwRkJRenRCUVUxRUxFMUJRVTBzVDBGQlR5eEhRVUZaTzBsQlEzWkNMREJDUVVGakxFVkJRVVVzUTBGQlF5eEZRVUZaTEVWQlFVVXNSVUZCUlR0UlFVTXZRaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETEZGQlFWRXNRMEZCUXp0UlFVTndRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZEYUVNc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRE8xRkJSV3hETEU5QlFVOHNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRMmhETEVOQlFVTTdTVUZEUkN4M1FrRkJZU3hGUVVGRkxFTkJRVU1zUlVGQldTeEZRVUZGTEVWQlFVVTdVVUZET1VJc1NVRkJTU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlExb3NTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRMmhETEVkQlFVY3NTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRlppeFBRVUZQTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOb1F5eERRVUZETzBsQlEwUXNkMEpCUVdFc1JVRkJSU3hEUVVGRExFVkJRVmtzUlVGQlJTeEZRVUZGTzFGQlF6bENMRWxCUVVrc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5hTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSVHRaUVVOb1F5eEhRVUZITEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVVZ3UWl4UFFVRlBMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMmhFTEVOQlFVTTdRMEZEUml4RFFVRkRPMEZCVVVZN08wZEJSVWM3UVVGRFNDeFRRVUZUTEZkQlFWY3NRMEZEYkVJc1EwRkJaU3hGUVVObUxFTkJRV1VzUlVGRFppeEZRVUZ2UXp0SlFVVndReXhOUVVGTkxFOUJRVThzUjBGQlJ5eEpRVUZKTEVkQlFVY3NSVUZCVlN4RFFVRkRPMGxCUTJ4RExFMUJRVTBzU1VGQlNTeEhRVUZoTEVWQlFVVXNRMEZCUXp0SlFVTXhRaXhOUVVGTkxFbEJRVWtzUjBGQllTeEZRVUZGTEVOQlFVTTdTVUZETVVJc1RVRkJUU3hKUVVGSkxFZEJRV0VzUlVGQlJTeERRVUZETzBsQlJURkNMRTFCUVUwc1QwRkJUeXhIUVVGSExFTkJRVU1zUjBGQlZ5eEZRVUZGTEVkQlFWY3NSVUZCUlN4RlFVRkZPMUZCUXpORExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRaaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTJZc1RVRkJUU3hUUVVGVExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZGtRc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0SlFVTjJRaXhEUVVGRExFTkJRVU03U1VGRFJpeE5RVUZOTEU5QlFVOHNSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03U1VGRE9VSXNUVUZCVFN4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBsQlF6RkNMRTFCUVUwc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0SlFVTXhRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1QwRkJUeXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0UlFVTjJReXhOUVVGTkxFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRja0lzVFVGQlRTeEhRVUZITEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM0pDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRWRCUVVjc1IwRkJSeXhKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETzFGQlF6VkNMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEYWtJc1QwRkJUeXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0TFFVTnVRanRKUVVWRUxFMUJRVTBzVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenRKUVVNNVFpeE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03U1VGRE1VSXNUVUZCVFN4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBsQlF6RkNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4UFFVRlBMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFGQlEzWkRMRTFCUVUwc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTnlRaXhOUVVGTkxFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRja0lzVFVGQlRTeEhRVUZITEVkQlFVY3NSMEZCUnl4SFFVRkhMRWxCUVVrc1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRE5VSXNTVUZCU1N4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF6dFpRVUZGTEZOQlFWTTdVVUZETDBJc1QwRkJUeXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0TFFVTnVRanRKUVVWRUxFMUJRVTBzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdTVUZEYUVNc1QwRkJUeXhKUVVGSkxGbEJRVmtzUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkZMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU5zUkN4RFFVRkRPMEZCUlVRN096czdPMGRCUzBjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzVFVGQlRTeERRVUZETEVOQlFXVTdTVUZEY0VNc1RVRkJUU3hQUVVGUExFZEJRVmtzUlVGQlJTeERRVUZETzBsQlJUVkNMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hGUVVGRk8xRkJRelZDTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJReXhMUVVGTExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUXl4RFFVRkRMRU5CUVVNN1NVRkRiRU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGU0N4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMUZCUTNCQ0xFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1IwRkJSenRaUVVOcVFpeFBRVUZQTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF6czdXVUZGY2tJc1QwRkJUeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNN1NVRkRla0lzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGU0N4TlFVRk5MRTlCUVU4c1IwRkJZU3hGUVVGRkxFTkJRVU03U1VGRE4wSXNUVUZCVFN4TlFVRk5MRWRCUVdFc1JVRkJSU3hEUVVGRE8wbEJRelZDTEUxQlFVMHNUVUZCVFN4SFFVRmhMRVZCUVVVc1EwRkJRenRKUVVVMVFpeEpRVUZKTEZWQlFWVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOd1FpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVDBGQlR5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRSUVVOMlF5eE5RVUZOTEVWQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hMUVVGTExFVkJRVU1zUjBGQlJ5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRja01zU1VGQlNTeEhRVUZITEV0QlFVc3NWVUZCVlN4RlFVRkZPMWxCUTNSQ0xGVkJRVlVzUjBGQlJ5eEhRVUZITEVOQlFVTTdXVUZEYWtJc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTm9RanRSUVVORUxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRiRUlzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRMUVVOd1FqdEpRVVZFTEU5QlFVOHNSVUZCUXl4UFFVRlBMRVZCUVVVc1RVRkJUU3hGUVVGRkxFMUJRVTBzUlVGQlF5eERRVUZETzBGQlEyNURMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFQnNhV05sYm5ObFhHNGdLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVGtnUjI5dloyeGxJRXhNUXk0Z1FXeHNJRkpwWjJoMGN5QlNaWE5sY25abFpDNWNiaUFxWEc0Z0tpQk1hV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRWEJoWTJobElFeHBZMlZ1YzJVc0lGWmxjbk5wYjI0Z01pNHdJQ2gwYUdVZ1hDSk1hV05sYm5ObFhDSXBPMXh1SUNvZ2VXOTFJRzFoZVNCdWIzUWdkWE5sSUhSb2FYTWdabWxzWlNCbGVHTmxjSFFnYVc0Z1kyOXRjR3hwWVc1alpTQjNhWFJvSUhSb1pTQk1hV05sYm5ObExseHVJQ29nV1c5MUlHMWhlU0J2WW5SaGFXNGdZU0JqYjNCNUlHOW1JSFJvWlNCTWFXTmxibk5sSUdGMFhHNGdLbHh1SUNvZ0lDQWdJR2gwZEhBNkx5OTNkM2N1WVhCaFkyaGxMbTl5Wnk5c2FXTmxibk5sY3k5TVNVTkZUbE5GTFRJdU1GeHVJQ3BjYmlBcUlGVnViR1Z6Y3lCeVpYRjFhWEpsWkNCaWVTQmhjSEJzYVdOaFlteGxJR3hoZHlCdmNpQmhaM0psWldRZ2RHOGdhVzRnZDNKcGRHbHVaeXdnYzI5bWRIZGhjbVZjYmlBcUlHUnBjM1J5YVdKMWRHVmtJSFZ1WkdWeUlIUm9aU0JNYVdObGJuTmxJR2x6SUdScGMzUnlhV0oxZEdWa0lHOXVJR0Z1SUZ3aVFWTWdTVk5jSWlCQ1FWTkpVeXhjYmlBcUlGZEpWRWhQVlZRZ1YwRlNVa0ZPVkVsRlV5QlBVaUJEVDA1RVNWUkpUMDVUSUU5R0lFRk9XU0JMU1U1RUxDQmxhWFJvWlhJZ1pYaHdjbVZ6Y3lCdmNpQnBiWEJzYVdWa0xseHVJQ29nVTJWbElIUm9aU0JNYVdObGJuTmxJR1p2Y2lCMGFHVWdjM0JsWTJsbWFXTWdiR0Z1WjNWaFoyVWdaMjkyWlhKdWFXNW5JSEJsY20xcGMzTnBiMjV6SUdGdVpGeHVJQ29nYkdsdGFYUmhkR2x2Ym5NZ2RXNWtaWElnZEdobElFeHBZMlZ1YzJVdVhHNGdLaUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMWNiaUFxTDF4dVhHNXBiWEJ2Y25RZ0tpQmhjeUIxZEdsc2N5Qm1jbTl0SUNjdUwzVjBhV3h6Snp0Y2JseHVkSGx3WlNCRmJuUnllU0E5SUhzZ2RtRnNkV1U2SUc1MWJXSmxjanNnY205M09pQnVkVzFpWlhJN0lHTnZiRG9nYm5WdFltVnlJSDA3WEc1Y2JpOHFLbHh1SUNvZ1NXNTBaWEp1WVd3Z01pMWthVzFsYm5OcGIyNWhiQ0J6Y0dGeWMyVWdiV0YwY21sNElHTnNZWE56WEc0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCVGNHRnljMlZOWVhSeWFYZ2dlMXh1SUNCd2NtbDJZWFJsSUdWdWRISnBaWE1nUFNCdVpYY2dUV0Z3UEhOMGNtbHVaeXdnUlc1MGNuaytLQ2s3WEc1Y2JpQWdjbVZoWkc5dWJIa2dibEp2ZDNNNklHNTFiV0psY2lBOUlEQTdYRzRnSUhKbFlXUnZibXg1SUc1RGIyeHpPaUJ1ZFcxaVpYSWdQU0F3TzF4dVhHNGdJR052Ym5OMGNuVmpkRzl5S0Z4dUlDQWdJSEp2ZDNNNklHNTFiV0psY2x0ZElId2dTVzUwTXpKQmNuSmhlU3hjYmlBZ0lDQmpiMnh6T2lCdWRXMWlaWEpiWFNCOElFbHVkRE15UVhKeVlYa3NYRzRnSUNBZ2RtRnNkV1Z6T2lCdWRXMWlaWEpiWFNCOElFWnNiMkYwTXpKQmNuSmhlU3hjYmlBZ0lDQmthVzF6T2lCdWRXMWlaWEpiWFZ4dUlDQXBJSHRjYmlBZ0lDQnBaaUFvY205M2N5NXNaVzVuZEdnZ0lUMDlJR052YkhNdWJHVnVaM1JvSUh4OElISnZkM011YkdWdVozUm9JQ0U5UFNCMllXeDFaWE11YkdWdVozUm9LU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9YRzRnSUNBZ0lDQWdJQ2R5YjNkekxDQmpiMnh6SUdGdVpDQjJZV3gxWlhNZ1lYSnlZWGx6SUcxMWMzUWdZV3hzSUdoaGRtVWdkR2hsSUhOaGJXVWdiR1Z1WjNSb0oxeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QlVUMFJQT2lCQmMzTmxjblFnZEdoaGRDQmthVzF6SUdGeVpTQnNaV2RwZEM1Y2JpQWdJQ0IwYUdsekxtNVNiM2R6SUQwZ1pHbHRjMXN3WFR0Y2JpQWdJQ0IwYUdsekxtNURiMnh6SUQwZ1pHbHRjMXN4WFR0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUhaaGJIVmxjeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnY205M0lEMGdjbTkzYzF0cFhUdGNiaUFnSUNBZ0lHTnZibk4wSUdOdmJDQTlJR052YkhOYmFWMDdYRzRnSUNBZ0lDQjBhR2x6TG1Ob1pXTnJSR2x0Y3loeWIzY3NJR052YkNrN1hHNGdJQ0FnSUNCamIyNXpkQ0JyWlhrZ1BTQjBhR2x6TG0xaGEyVkxaWGtvY205M0xDQmpiMndwTzF4dUlDQWdJQ0FnZEdocGN5NWxiblJ5YVdWekxuTmxkQ2hyWlhrc0lIdDJZV3gxWlRvZ2RtRnNkV1Z6VzJsZExDQnliM2NzSUdOdmJIMHBPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdiV0ZyWlV0bGVTaHliM2M2SUc1MWJXSmxjaXdnWTI5c09pQnVkVzFpWlhJcE9pQnpkSEpwYm1jZ2UxeHVJQ0FnSUhKbGRIVnliaUJnSkh0eWIzZDlPaVI3WTI5c2ZXQTdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJR05vWldOclJHbHRjeWh5YjNjNklHNTFiV0psY2l3Z1kyOXNPaUJ1ZFcxaVpYSXBJSHRjYmlBZ0lDQmpiMjV6ZENCM2FYUm9hVzVDYjNWdVpITWdQU0J5YjNjZ1BDQjBhR2x6TG01U2IzZHpJQ1ltSUdOdmJDQThJSFJvYVhNdWJrTnZiSE03WEc0Z0lDQWdhV1lnS0NGM2FYUm9hVzVDYjNWdVpITXBYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0ozSnZkeUJoYm1RdmIzSWdZMjlzSUhOd1pXTnBabWxsWkNCdmRYUnphV1JsSUc5bUlHMWhkSEpwZUNCa2FXMWxibk5wYjI1ekp5azdYRzRnSUgxY2JseHVJQ0J6WlhRb2NtOTNPaUJ1ZFcxaVpYSXNJR052YkRvZ2JuVnRZbVZ5TENCMllXeDFaVG9nYm5WdFltVnlLU0I3WEc0Z0lDQWdkR2hwY3k1amFHVmphMFJwYlhNb2NtOTNMQ0JqYjJ3cE8xeHVJQ0FnSUdOdmJuTjBJR3RsZVNBOUlIUm9hWE11YldGclpVdGxlU2h5YjNjc0lHTnZiQ2s3WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbVZ1ZEhKcFpYTXVhR0Z6S0d0bGVTa3BYRzRnSUNBZ0lDQjBhR2x6TG1WdWRISnBaWE11YzJWMEtHdGxlU3dnZTNaaGJIVmxMQ0J5YjNjc0lHTnZiSDBwTzF4dUlDQWdJR1ZzYzJWY2JpQWdJQ0FnSUhSb2FYTXVaVzUwY21sbGN5NW5aWFFvYTJWNUtTRXVkbUZzZFdVZ1BTQjJZV3gxWlR0Y2JpQWdmVnh1WEc0Z0lHZGxkQ2h5YjNjNklHNTFiV0psY2l3Z1kyOXNPaUJ1ZFcxaVpYSXNJR1JsWm1GMWJIUldZV3gxWlNBOUlEQXBJSHRjYmlBZ0lDQXZMM1JvYVhNdVkyaGxZMnRFYVcxektISnZkeXdnWTI5c0tUdGNiaUFnSUNCamIyNXpkQ0JyWlhrZ1BTQjBhR2x6TG0xaGEyVkxaWGtvY205M0xDQmpiMndwTzF4dUlDQWdJR2xtSUNoMGFHbHpMbVZ1ZEhKcFpYTXVhR0Z6S0d0bGVTa3BYRzRnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTVsYm5SeWFXVnpMbWRsZENoclpYa3BJUzUyWVd4MVpUdGNiaUFnSUNCbGJITmxYRzRnSUNBZ0lDQnlaWFIxY200Z1pHVm1ZWFZzZEZaaGJIVmxPMXh1SUNCOVhHNWNiaUFnWjJWMFFXeHNLRzl5WkdWeVpXUWdQU0IwY25WbEtUb2dleUIyWVd4MVpUb2diblZ0WW1WeU95QnliM2M2SUc1MWJXSmxjanNnWTI5c09pQnVkVzFpWlhJZ2ZWdGRJSHRjYmlBZ0lDQmpiMjV6ZENCeWIzZERiMnhXWVd4MVpYTTZJRVZ1ZEhKNVcxMGdQU0J1WlhjZ1FYSnlZWGtvZEdocGN5NWxiblJ5YVdWekxuTnBlbVVwTG1acGJHd29iblZzYkNrN1hHNGdJQ0FnYkdWMElHa2dQU0F3TzF4dUlDQWdJSFJvYVhNdVpXNTBjbWxsY3k1bWIzSkZZV05vS0NoMllXeDFaU2tnUFQ0Z2UxeHVJQ0FnSUNBZ2NtOTNRMjlzVm1Gc2RXVnpXMmtySzEwZ1BTQjJZV3gxWlR0Y2JpQWdJQ0I5S1R0Y2JpQWdJQ0JwWmlBb2IzSmtaWEpsWkNrZ2UxeHVJQ0FnSUNBZ0x5OGdUM0prWlhKcGJtY2dkR2hsSUhKbGMzVnNkQ0JwYzI0bmRDQnlaWEYxYVhKbFpDQm1iM0lnY0hKdlkyVnpjMmx1WnlCaWRYUWdhWFFnWkc5bGN5QnRZV3RsSUdsMElHVmhjMmxsY2lCMGJ5QjNjbWwwWlNCMFpYTjBjMXh1SUNBZ0lDQWdjbTkzUTI5c1ZtRnNkV1Z6TG5OdmNuUW9LR0VzSUdJcElEMCtJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHRXVjbTkzSUQwOVBTQmlMbkp2ZHlsY2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1lTNWpiMndnTFNCaUxtTnZiRHRjYmlBZ0lDQWdJQ0FnWld4elpWeHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQmhMbkp2ZHlBdElHSXVjbTkzTzF4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnliM2REYjJ4V1lXeDFaWE03WEc0Z0lIMWNibHh1SUNCblpYUkVhVzF6S0NrNklHNTFiV0psY2x0ZElIdGNiaUFnSUNCeVpYUjFjbTRnVzNSb2FYTXVibEp2ZDNNc0lIUm9hWE11YmtOdmJITmRPMXh1SUNCOVhHNWNiaUFnWjJWMFVtOTNjeWdwT2lCdWRXMWlaWEpiWFNCN1hHNGdJQ0FnY21WMGRYSnVJRUZ5Y21GNUxtWnliMjBvZEdocGN5NWxiblJ5YVdWekxDQW9XMTlyWlhrc0lIWmhiSFZsWFNrZ1BUNGdkbUZzZFdVdWNtOTNLVHRjYmlBZ0lDQXZMeUJ5WlhSMWNtNGdkR2hwY3k1eWIzZHpJR0Z6SUhWdWEyNXZkMjRnWVhNZ2JuVnRZbVZ5VzEwN1hHNGdJSDFjYmx4dUlDQm5aWFJEYjJ4ektDazZJRzUxYldKbGNsdGRJSHRjYmlBZ0lDQnlaWFIxY200Z1FYSnlZWGt1Wm5KdmJTaDBhR2x6TG1WdWRISnBaWE1zSUNoYlgydGxlU3dnZG1Gc2RXVmRLU0E5UGlCMllXeDFaUzVqYjJ3cE8xeHVJQ0FnSUM4dklISmxkSFZ5YmlCMGFHbHpMbU52YkhNZ1lYTWdkVzVyYm05M2JpQmhjeUJ1ZFcxaVpYSmJYVHRjYmlBZ2ZWeHVYRzRnSUdkbGRGWmhiSFZsY3lncE9pQnVkVzFpWlhKYlhTQjdYRzRnSUNBZ2NtVjBkWEp1SUVGeWNtRjVMbVp5YjIwb2RHaHBjeTVsYm5SeWFXVnpMQ0FvVzE5clpYa3NJSFpoYkhWbFhTa2dQVDRnZG1Gc2RXVXVkbUZzZFdVcE8xeHVJQ0F2TDNKbGRIVnliaUIwYUdsekxuWmhiSFZsY3lCaGN5QjFibXR1YjNkdUlHRnpJRzUxYldKbGNsdGRPMXh1SUNCOVhHNWNiaUFnWm05eVJXRmphQ2htYmpvZ0tIWmhiSFZsT2lCdWRXMWlaWElzSUhKdmR6b2diblZ0WW1WeUxDQmpiMnc2SUc1MWJXSmxjaWtnUFQ0Z2RtOXBaQ2s2SUhadmFXUWdlMXh1SUNBZ0lIUm9hWE11Wlc1MGNtbGxjeTVtYjNKRllXTm9LQ2gyWVd4MVpTa2dQVDRnWm00b2RtRnNkV1V1ZG1Gc2RXVXNJSFpoYkhWbExuSnZkeXdnZG1Gc2RXVXVZMjlzS1NrN1hHNGdJSDFjYmx4dUlDQnRZWEFvWm00NklDaDJZV3gxWlRvZ2JuVnRZbVZ5TENCeWIzYzZJRzUxYldKbGNpd2dZMjlzT2lCdWRXMWlaWElwSUQwK0lHNTFiV0psY2lrNklGTndZWEp6WlUxaGRISnBlQ0I3WEc0Z0lDQWdZMjl1YzNRZ2RtRnNjeUE5SUc1bGR5QkdiRzloZERNeVFYSnlZWGtvZEdocGN5NWxiblJ5YVdWekxuTnBlbVVwTzF4dUlDQWdJR3hsZENCcElEMGdNRHRjYmlBZ0lDQjBhR2x6TG1WdWRISnBaWE11Wm05eVJXRmphQ2dvZG1Gc2RXVXBJRDArSUh0Y2JpQWdJQ0FnSUhaaGJITmJhU3NyWFNBOUlHWnVLSFpoYkhWbExuWmhiSFZsTENCMllXeDFaUzV5YjNjc0lIWmhiSFZsTG1OdmJDazdYRzRnSUNBZ2ZTazdYRzRnSUNBZ1kyOXVjM1FnWkdsdGN5QTlJRnQwYUdsekxtNVNiM2R6TENCMGFHbHpMbTVEYjJ4elhUdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGTndZWEp6WlUxaGRISnBlQ2gwYUdsekxtZGxkRkp2ZDNNb0tTd2dkR2hwY3k1blpYUkRiMnh6S0Nrc0lIWmhiSE1nWVhNZ2RXNXJibTkzYmlCaGN5QnVkVzFpWlhKYlhTd2daR2x0Y3lrN1hHNGdJSDFjYmx4dUlDQjBiMEZ5Y21GNUtDa2dlMXh1SUNBZ0lHTnZibk4wSUhKdmQzTTZJSFZ1WkdWbWFXNWxaRnRkSUQwZ2RYUnBiSE11Wlcxd2RIa29kR2hwY3k1dVVtOTNjeWs3WEc0Z0lDQWdZMjl1YzNRZ2IzVjBjSFYwSUQwZ2NtOTNjeTV0WVhBb0tDa2dQVDRnZTF4dUlDQWdJQ0FnY21WMGRYSnVJSFYwYVd4ekxucGxjbTl6S0hSb2FYTXVia052YkhNcE8xeHVJQ0FnSUgwcE8xeHVJQ0FnSUhSb2FYTXVaVzUwY21sbGN5NW1iM0pGWVdOb0tDaDJZV3gxWlNrZ1BUNGdlMXh1SUNBZ0lDQWdiM1YwY0hWMFczWmhiSFZsTG5KdmQxMWJkbUZzZFdVdVkyOXNYU0E5SUhaaGJIVmxMblpoYkhWbE8xeHVJQ0FnSUgwcE8xeHVJQ0FnSUhKbGRIVnliaUJ2ZFhSd2RYUTdYRzRnSUgxY2JuMWNibHh1THlvcVhHNGdLaUJVY21GdWMzQnZjMlVnWVNCemNHRnljMlVnYldGMGNtbDRYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCMGNtRnVjM0J2YzJVb2JXRjBjbWw0T2lCVGNHRnljMlZOWVhSeWFYZ3BPaUJUY0dGeWMyVk5ZWFJ5YVhnZ2UxeHVJQ0JqYjI1emRDQnZiR1JTYjNkeklEMGdiV0YwY21sNExtZGxkRkp2ZDNNb0tUdGNiaUFnWTI5dWMzUWdiMnhrUTI5c2N5QTlJRzFoZEhKcGVDNW5aWFJEYjJ4ektDazdYRzRnSUdOdmJuTjBJRzlzWkZaaGJITWdQU0J0WVhSeWFYZ3VaMlYwVm1Gc2RXVnpLQ2s3WEc0Z0lHTnZibk4wSUcxaGRHeGxiaUE5SUc5c1pFTnZiSE11YkdWdVozUm9PMXh1SUNCamIyNXpkQ0JqYjJ4eklEMGdibVYzSUVsdWRETXlRWEp5WVhrb2JXRjBiR1Z1S1R0Y2JpQWdZMjl1YzNRZ2NtOTNjeUE5SUc1bGR5QkpiblF6TWtGeWNtRjVLRzFoZEd4bGJpazdYRzRnSUdOdmJuTjBJSFpoYkhNZ1BTQnVaWGNnUm14dllYUXpNa0Z5Y21GNUtHMWhkR3hsYmlrN1hHNWNiaUFnWTI5c2N5NXpaWFFvYjJ4a1VtOTNjeWs3WEc0Z0lISnZkM011YzJWMEtHOXNaRU52YkhNcE8xeHVJQ0IyWVd4ekxuTmxkQ2h2YkdSV1lXeHpLVHRjYmlBZ1kyOXVjM1FnWkdsdGN5QTlJRnR0WVhSeWFYZ3Via052YkhNc0lHMWhkSEpwZUM1dVVtOTNjMTA3WEc0Z0lISmxkSFZ5YmlCdVpYY2dVM0JoY25ObFRXRjBjbWw0S0hKdmQzTXNJR052YkhNc0lIWmhiSE1zSUdScGJYTXBPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFTnZibk4wY25WamRDQmhJSE53WVhKelpTQnBaR1Z1ZEdsMGVTQnRZWFJ5YVhoY2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2xrWlc1MGFYUjVLSE5wZW1VNklHNTFiV0psY2x0ZEtUb2dVM0JoY25ObFRXRjBjbWw0SUh0Y2JpQWdZMjl1YzNRZ1czSnZkM05kSUQwZ2MybDZaVHRjYmlBZ1kyOXVjM1FnYldGMGNtbDRJRDBnYm1WM0lGTndZWEp6WlUxaGRISnBlQ2hiWFN3Z1cxMHNJRnRkTENCemFYcGxLVHRjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnliM2R6T3lCcEt5c3BYRzRnSUNBZ2JXRjBjbWw0TG5ObGRDaHBMQ0JwTENBeEtUdGNibHh1SUNCeVpYUjFjbTRnYldGMGNtbDRPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFVnNaVzFsYm5RdGQybHpaU0J0ZFd4MGFYQnNhV05oZEdsdmJpQnZaaUIwZDI4Z2JXRjBjbWxqWlhOY2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEJoYVhKM2FYTmxUWFZzZEdsd2JIa29YRzRnSUdFNklGTndZWEp6WlUxaGRISnBlQ3hjYmlBZ1lqb2dVM0JoY25ObFRXRjBjbWw0WEc0cE9pQlRjR0Z5YzJWTllYUnlhWGdnZTF4dUlDQnlaWFIxY200Z1pXeGxiV1Z1ZEZkcGMyVW9ZU3dnWWl3Z0tIZ3NJSGtwSUQwK0lIZ2dLaUI1S1R0Y2JuMWNibHh1THlvcVhHNGdLaUJGYkdWdFpXNTBMWGRwYzJVZ1lXUmthWFJwYjI0Z2IyWWdkSGR2SUcxaGRISnBZMlZ6WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmhaR1FvWVRvZ1UzQmhjbk5sVFdGMGNtbDRMQ0JpT2lCVGNHRnljMlZOWVhSeWFYZ3BPaUJUY0dGeWMyVk5ZWFJ5YVhnZ2UxeHVJQ0J5WlhSMWNtNGdaV3hsYldWdWRGZHBjMlVvWVN3Z1lpd2dLSGdzSUhrcElEMCtJSGdnS3lCNUtUdGNibjFjYmx4dUx5b3FYRzRnS2lCRmJHVnRaVzUwTFhkcGMyVWdjM1ZpZEhKaFkzUnBiMjRnYjJZZ2RIZHZJRzFoZEhKcFkyVnpYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCemRXSjBjbUZqZENoaE9pQlRjR0Z5YzJWTllYUnlhWGdzSUdJNklGTndZWEp6WlUxaGRISnBlQ2s2SUZOd1lYSnpaVTFoZEhKcGVDQjdYRzRnSUhKbGRIVnliaUJsYkdWdFpXNTBWMmx6WlNoaExDQmlMQ0FvZUN3Z2VTa2dQVDRnZUNBdElIa3BPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFVnNaVzFsYm5RdGQybHpaU0J0WVhocGJYVnRJRzltSUhSM2J5QnRZWFJ5YVdObGMxeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYldGNGFXMTFiU2hoT2lCVGNHRnljMlZOWVhSeWFYZ3NJR0k2SUZOd1lYSnpaVTFoZEhKcGVDazZJRk53WVhKelpVMWhkSEpwZUNCN1hHNGdJSEpsZEhWeWJpQmxiR1Z0Wlc1MFYybHpaU2hoTENCaUxDQW9lQ3dnZVNrZ1BUNGdLSGdnUGlCNUlEOGdlQ0E2SUhrcEtUdGNibjFjYmx4dUx5b3FYRzRnS2lCVFkyRnNZWElnYlhWc2RHbHdiR2xqWVhScGIyNGdiMllnZEhkdklHMWhkSEpwWTJWelhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ0ZFd4MGFYQnNlVk5qWVd4aGNpaGhPaUJUY0dGeWMyVk5ZWFJ5YVhnc0lITmpZV3hoY2pvZ2JuVnRZbVZ5S1RvZ1UzQmhjbk5sVFdGMGNtbDRJSHRjYmlBZ2NtVjBkWEp1SUdFdWJXRndLQ2gyWVd4MVpUb2diblZ0WW1WeUtTQTlQaUI3WEc0Z0lDQWdjbVYwZFhKdUlIWmhiSFZsSUNvZ2MyTmhiR0Z5TzF4dUlDQjlLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQlNaWFIxY201eklHRWdibVYzSUcxaGRISnBlQ0IzYVhSb0lIcGxjbThnWlc1MGNtbGxjeUJ5WlcxdmRtVmtMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1pXeHBiV2x1WVhSbFdtVnliM01vYlRvZ1UzQmhjbk5sVFdGMGNtbDRLU0I3WEc0Z0lHTnZibk4wSUhwbGNtOUpibVJwWTJWeklEMGdibVYzSUZObGRDZ3BPMXh1SUNCamIyNXpkQ0IyWVd4MVpYTWdQU0J0TG1kbGRGWmhiSFZsY3lncE8xeHVJQ0JqYjI1emRDQnliM2R6SUQwZ2JTNW5aWFJTYjNkektDazdYRzRnSUdOdmJuTjBJR052YkhNZ1BTQnRMbWRsZEVOdmJITW9LVHRjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQjJZV3gxWlhNdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQnBaaUFvZG1Gc2RXVnpXMmxkSUQwOVBTQXdLVnh1SUNBZ0lDQWdlbVZ5YjBsdVpHbGpaWE11WVdSa0tHa3BPMXh1SUNCOVhHNGdJR052Ym5OMElISmxiVzkyWlVKNVdtVnliMGx1WkdWNElEMGdLRjg2SUdGdWVTd2dhVzVrWlhnNklHNTFiV0psY2lrZ1BUNGdJWHBsY205SmJtUnBZMlZ6TG1oaGN5aHBibVJsZUNrN1hHNGdJR052Ym5OMElHNWxlSFJXWVd4MVpYTWdQU0IyWVd4MVpYTXVabWxzZEdWeUtISmxiVzkyWlVKNVdtVnliMGx1WkdWNEtUdGNiaUFnWTI5dWMzUWdibVY0ZEZKdmQzTWdQU0J5YjNkekxtWnBiSFJsY2loeVpXMXZkbVZDZVZwbGNtOUpibVJsZUNrN1hHNGdJR052Ym5OMElHNWxlSFJEYjJ4eklEMGdZMjlzY3k1bWFXeDBaWElvY21WdGIzWmxRbmxhWlhKdlNXNWtaWGdwTzF4dVhHNGdJSEpsZEhWeWJpQnVaWGNnVTNCaGNuTmxUV0YwY21sNEtHNWxlSFJTYjNkekxDQnVaWGgwUTI5c2N5d2dibVY0ZEZaaGJIVmxjeXdnYlM1blpYUkVhVzF6S0NrcE8xeHVmVnh1WEc0dktpcGNiaUFxSUU1dmNtMWhiR2w2WVhScGIyNGdiMllnWVNCemNHRnljMlVnYldGMGNtbDRMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2JtOXliV0ZzYVhwbEtHMDZJRk53WVhKelpVMWhkSEpwZUN3Z2JtOXliVlI1Y0dVZ1BTQk9iM0p0Vkhsd1pTNXNNaWtnZTF4dUlDQmpiMjV6ZENCdWIzSnRSbTRnUFNCdWIzSnRSbTV6VzI1dmNtMVVlWEJsWFR0Y2JseHVJQ0JqYjI1emRDQmpiMnh6UW5sU2IzY2dQU0J1WlhjZ1RXRndQRzUxYldKbGNpd2diblZ0WW1WeVcxMCtLQ2s3WEc0Z0lHMHVabTl5UldGamFDZ29YeXdnY205M0xDQmpiMndwSUQwK0lIdGNiaUFnSUNCamIyNXpkQ0JqYjJ4eklEMGdZMjlzYzBKNVVtOTNMbWRsZENoeWIzY3BJSHg4SUZ0ZE8xeHVJQ0FnSUdOdmJITXVjSFZ6YUNoamIyd3BPMXh1SUNBZ0lHTnZiSE5DZVZKdmR5NXpaWFFvY205M0xDQmpiMnh6S1R0Y2JpQWdmU2s3WEc1Y2JpQWdZMjl1YzNRZ2JtVjRkRTFoZEhKcGVDQTlJRzVsZHlCVGNHRnljMlZOWVhSeWFYZ29XMTBzSUZ0ZExDQmJYU3dnYlM1blpYUkVhVzF6S0NrcE8xeHVYRzRnSUdadmNpQW9ZMjl1YzNRZ2NtOTNJRzltSUdOdmJITkNlVkp2ZHk1clpYbHpLQ2twSUh0Y2JpQWdJQ0JqYjI1emRDQmpiMnh6SUQwZ1kyOXNjMEo1VW05M0xtZGxkQ2h5YjNjcElTNXpiM0owS0NrN1hHNWNiaUFnSUNCamIyNXpkQ0IyWVd4eklEMGdZMjlzY3k1dFlYQW9LR052YkNrZ1BUNGdiUzVuWlhRb2NtOTNMQ0JqYjJ3cEtUdGNiaUFnSUNCamIyNXpkQ0J1YjNKdElEMGdibTl5YlVadUtIWmhiSE1wTzF4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnYm05eWJTNXNaVzVuZEdnN0lHa3JLeWxjYmlBZ0lDQWdJRzVsZUhSTllYUnlhWGd1YzJWMEtISnZkeXdnWTI5c2MxdHBYU3dnYm05eWJWdHBYU2s3WEc0Z0lIMWNibHh1SUNCeVpYUjFjbTRnYm1WNGRFMWhkSEpwZUR0Y2JuMWNibHh1THlvcVhHNGdLaUJXWldOMGIzSWdibTl5YldGc2FYcGhkR2x2YmlCbWRXNWpkR2x2Ym5OY2JpQXFMMXh1ZEhsd1pTQk9iM0p0Um01eklEMGdleUJiYTJWNUlHbHVJRTV2Y20xVWVYQmxYVG9nS0hZNklHNTFiV0psY2x0ZEtTQTlQaUJ1ZFcxaVpYSmJYU0I5TzF4dVkyOXVjM1FnYm05eWJVWnVjem9nVG05eWJVWnVjeUE5SUh0Y2JpQWdXMDV2Y20xVWVYQmxMbTFoZUYwNklDaDRjem9nYm5WdFltVnlXMTBwSUQwK0lIdGNiaUFnSUNCc1pYUWdiV0Y0SUQwZ0xVbHVabWx1YVhSNU8xeHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2VITXViR1Z1WjNSb095QnBLeXNwWEc0Z0lDQWdJQ0J0WVhnZ1BTQjRjMXRwWFNBK0lHMWhlQ0EvSUhoelcybGRJRG9nYldGNE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUhoekxtMWhjQ2dvZUNrZ1BUNGdlQ0F2SUcxaGVDazdYRzRnSUgwc1hHNGdJRnRPYjNKdFZIbHdaUzVzTVYwNklDaDRjem9nYm5WdFltVnlXMTBwSUQwK0lIdGNiaUFnSUNCc1pYUWdjM1Z0SUQwZ01EdGNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElIaHpMbXhsYm1kMGFEc2dhU3NyS1Z4dUlDQWdJQ0FnYzNWdElDczlJSGh6VzJsZE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUhoekxtMWhjQ2dvZUNrZ1BUNGdlQ0F2SUhOMWJTazdYRzRnSUgwc1hHNGdJRnRPYjNKdFZIbHdaUzVzTWwwNklDaDRjem9nYm5WdFltVnlXMTBwSUQwK0lIdGNiaUFnSUNCc1pYUWdjM1Z0SUQwZ01EdGNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElIaHpMbXhsYm1kMGFEc2dhU3NyS1Z4dUlDQWdJQ0FnYzNWdElDczlJSGh6VzJsZElDb3FJREk3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdlSE11YldGd0tDaDRLU0E5UGlCTllYUm9Mbk54Y25Rb2VDQXFLaUF5SUM4Z2MzVnRLU2s3WEc0Z0lIMHNYRzU5TzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnWlc1MWJTQk9iM0p0Vkhsd1pTQjdYRzRnSUcxaGVDQTlJQ2R0WVhnbkxGeHVJQ0JzTVNBOUlDZHNNU2NzWEc0Z0lHd3lJRDBnSjJ3eUp5eGNibjFjYmx4dUx5b3FYRzRnS2lCSVpXeHdaWElnWm5WdVkzUnBiMjRnWm05eUlHVnNaVzFsYm5RdGQybHpaU0J2Y0dWeVlYUnBiMjV6TGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJsYkdWdFpXNTBWMmx6WlNoY2JpQWdZVG9nVTNCaGNuTmxUV0YwY21sNExGeHVJQ0JpT2lCVGNHRnljMlZOWVhSeWFYZ3NYRzRnSUc5d09pQW9lRG9nYm5WdFltVnlMQ0I1T2lCdWRXMWlaWElwSUQwK0lHNTFiV0psY2x4dUtUb2dVM0JoY25ObFRXRjBjbWw0SUh0Y2JpQWdZMjl1YzNRZ2RtbHphWFJsWkNBOUlHNWxkeUJUWlhROGMzUnlhVzVuUGlncE8xeHVJQ0JqYjI1emRDQnliM2R6T2lCdWRXMWlaWEpiWFNBOUlGdGRPMXh1SUNCamIyNXpkQ0JqYjJ4ek9pQnVkVzFpWlhKYlhTQTlJRnRkTzF4dUlDQmpiMjV6ZENCMllXeHpPaUJ1ZFcxaVpYSmJYU0E5SUZ0ZE8xeHVYRzRnSUdOdmJuTjBJRzl3WlhKaGRHVWdQU0FvY205M09pQnVkVzFpWlhJc0lHTnZiRG9nYm5WdFltVnlLU0E5UGlCN1hHNGdJQ0FnY205M2N5NXdkWE5vS0hKdmR5azdYRzRnSUNBZ1kyOXNjeTV3ZFhOb0tHTnZiQ2s3WEc0Z0lDQWdZMjl1YzNRZ2JtVjRkRlpoYkhWbElEMGdiM0FvWVM1blpYUW9jbTkzTENCamIyd3BMQ0JpTG1kbGRDaHliM2NzSUdOdmJDa3BPMXh1SUNBZ0lIWmhiSE11Y0hWemFDaHVaWGgwVm1Gc2RXVXBPMXh1SUNCOU8xeHVJQ0JqYjI1emRDQjJZV3gxWlhOQklEMGdZUzVuWlhSV1lXeDFaWE1vS1R0Y2JpQWdZMjl1YzNRZ2NtOTNjMEVnUFNCaExtZGxkRkp2ZDNNb0tUdGNiaUFnWTI5dWMzUWdZMjlzYzBFZ1BTQmhMbWRsZEVOdmJITW9LVHRjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQjJZV3gxWlhOQkxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdZMjl1YzNRZ2NtOTNJRDBnY205M2MwRmJhVjA3WEc0Z0lDQWdZMjl1YzNRZ1kyOXNJRDBnWTI5c2MwRmJhVjA3WEc0Z0lDQWdZMjl1YzNRZ2EyVjVJRDBnWUNSN2NtOTNmVG9rZTJOdmJIMWdPMXh1SUNBZ0lIWnBjMmwwWldRdVlXUmtLR3RsZVNrN1hHNGdJQ0FnYjNCbGNtRjBaU2h5YjNjc0lHTnZiQ2s3WEc0Z0lIMWNibHh1SUNCamIyNXpkQ0IyWVd4MVpYTkNJRDBnWWk1blpYUldZV3gxWlhNb0tUdGNiaUFnWTI5dWMzUWdjbTkzYzBJZ1BTQmlMbWRsZEZKdmQzTW9LVHRjYmlBZ1kyOXVjM1FnWTI5c2MwSWdQU0JpTG1kbGRFTnZiSE1vS1R0Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0IyWVd4MVpYTkNMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnWTI5dWMzUWdjbTkzSUQwZ2NtOTNjMEpiYVYwN1hHNGdJQ0FnWTI5dWMzUWdZMjlzSUQwZ1kyOXNjMEpiYVYwN1hHNGdJQ0FnWTI5dWMzUWdhMlY1SUQwZ1lDUjdjbTkzZlRva2UyTnZiSDFnTzF4dUlDQWdJR2xtSUNoMmFYTnBkR1ZrTG1oaGN5aHJaWGtwS1NCamIyNTBhVzUxWlR0Y2JpQWdJQ0J2Y0dWeVlYUmxLSEp2ZHl3Z1kyOXNLVHRjYmlBZ2ZWeHVYRzRnSUdOdmJuTjBJR1JwYlhNZ1BTQmJZUzV1VW05M2N5d2dZUzV1UTI5c2MxMDdYRzRnSUhKbGRIVnliaUJ1WlhjZ1UzQmhjbk5sVFdGMGNtbDRLSEp2ZDNNc0lHTnZiSE1zSUhaaGJITXNJR1JwYlhNcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVobGJIQmxjaUJtZFc1amRHbHZiaUJtYjNJZ1oyVjBkR2x1WnlCa1lYUmhMQ0JwYm1ScFkyVnpMQ0JoYm1RZ2FXNXdkSElnWVhKeVlYbHpJR1p5YjIwZ1lTQnpjR0Z5YzJWY2JpQXFJRzFoZEhKcGVDQjBieUJtYjJ4c2IzY2dZM055SUcxaGRISnBlQ0JqYjI1MlpXNTBhVzl1Y3k0Z1UzVndaWElnYVc1bFptWnBZMmxsYm5RZ0tHRnVaQ0JyYVc1a0lHOW1YRzRnS2lCa1pXWmxZWFJ6SUhSb1pTQndkWEp3YjNObElHOW1JSFJvYVhNZ1kyOXVkbVZ1ZEdsdmJpa2dZblYwSUdFZ2JHOTBJRzltSUhSb1pTQndiM0owWldRZ2NIbDBhRzl1SUhSeVpXVmNiaUFxSUhObFlYSmphQ0JzYjJkcFl5QmtaWEJsYm1SeklHOXVJSFJvYVhNZ1pHRjBZU0JtYjNKdFlYUXVYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCblpYUkRVMUlvZURvZ1UzQmhjbk5sVFdGMGNtbDRLU0I3WEc0Z0lHTnZibk4wSUdWdWRISnBaWE02SUVWdWRISjVXMTBnUFNCYlhUdGNibHh1SUNCNExtWnZja1ZoWTJnb0tIWmhiSFZsTENCeWIzY3NJR052YkNrZ1BUNGdlMXh1SUNBZ0lHVnVkSEpwWlhNdWNIVnphQ2g3ZG1Gc2RXVXNJSEp2ZHl3Z1kyOXNmU2s3WEc0Z0lIMHBPMXh1WEc0Z0lHVnVkSEpwWlhNdWMyOXlkQ2dvWVN3Z1lpa2dQVDRnZTF4dUlDQWdJR2xtSUNoaExuSnZkeUE5UFQwZ1lpNXliM2NwWEc0Z0lDQWdJQ0J5WlhSMWNtNGdZUzVqYjJ3Z0xTQmlMbU52YkR0Y2JpQWdJQ0JsYkhObFhHNGdJQ0FnSUNCeVpYUjFjbTRnWVM1eWIzY2dMU0JpTG5KdmR6dGNiaUFnZlNrN1hHNWNiaUFnWTI5dWMzUWdhVzVrYVdObGN6b2diblZ0WW1WeVcxMGdQU0JiWFR0Y2JpQWdZMjl1YzNRZ2RtRnNkV1Z6T2lCdWRXMWlaWEpiWFNBOUlGdGRPMXh1SUNCamIyNXpkQ0JwYm1Sd2RISTZJRzUxYldKbGNsdGRJRDBnVzEwN1hHNWNiaUFnYkdWMElHTjFjbkpsYm5SU2IzY2dQU0F0TVR0Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JsYm5SeWFXVnpMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnWTI5dWMzUWdlM0p2ZHl3Z1kyOXNMQ0IyWVd4MVpYMGdQU0JsYm5SeWFXVnpXMmxkTzF4dUlDQWdJR2xtSUNoeWIzY2dJVDA5SUdOMWNuSmxiblJTYjNjcElIdGNiaUFnSUNBZ0lHTjFjbkpsYm5SU2IzY2dQU0J5YjNjN1hHNGdJQ0FnSUNCcGJtUndkSEl1Y0hWemFDaHBLVHRjYmlBZ0lDQjlYRzRnSUNBZ2FXNWthV05sY3k1d2RYTm9LR052YkNrN1hHNGdJQ0FnZG1Gc2RXVnpMbkIxYzJnb2RtRnNkV1VwTzF4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUh0cGJtUnBZMlZ6TENCMllXeDFaWE1zSUdsdVpIQjBjbjA3WEc1OVhHNGlYWDA9IiwiLyoqXG4gKiBAbGljZW5zZVxuICpcbiAqIENvcHlyaWdodCAyMDE5IEdvb2dsZSBMTEMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKi9cbi8qKlxuICogVGhpcyBpcyBhIEphdmFTY3JpcHQgcmVpbXBsZW1lbnRhdGlvbiBvZiBVTUFQIChvcmlnaW5hbCBsaWNlbnNlIGJlbG93KSwgZnJvbVxuICogdGhlIHB5dGhvbiBpbXBsZW1lbnRhdGlvbiBmb3VuZCBhdCBodHRwczovL2dpdGh1Yi5jb20vbG1jaW5uZXMvdW1hcC5cbiAqXG4gKiBAYXV0aG9yIGFuZHljb2VuZW5AZ29vZ2xlLmNvbSAoQW5keSBDb2VuZW4pXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIEJTRCAzLUNsYXVzZSBMaWNlbnNlXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE3LCBMZWxhbmQgTWNJbm5lc1xuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuICpcbiAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzXG4gKiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICpcbiAqICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLFxuICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uXG4gKiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICpcbiAqICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbVxuICogICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBUyBJU1wiXG4gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFXG4gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEVcbiAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUlxuICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVJcbiAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksXG4gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRVxuICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqL1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5leHBvcnQgY2xhc3MgRmxhdFRyZWUge1xuICAgIGNvbnN0cnVjdG9yKGh5cGVycGxhbmVzLCBvZmZzZXRzLCBjaGlsZHJlbiwgaW5kaWNlcykge1xuICAgICAgICB0aGlzLmh5cGVycGxhbmVzID0gaHlwZXJwbGFuZXM7XG4gICAgICAgIHRoaXMub2Zmc2V0cyA9IG9mZnNldHM7XG4gICAgICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICAgICAgdGhpcy5pbmRpY2VzID0gaW5kaWNlcztcbiAgICB9XG59XG4vKipcbiAqIEJ1aWxkIGEgcmFuZG9tIHByb2plY3Rpb24gZm9yZXN0IHdpdGggYGBuVHJlZXNgYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VGb3Jlc3QoZGF0YSwgbk5laWdoYm9ycywgblRyZWVzLCByYW5kb20pIHtcbiAgICBjb25zdCBsZWFmU2l6ZSA9IE1hdGgubWF4KDEwLCBuTmVpZ2hib3JzKTtcbiAgICBjb25zdCB0cmVlcyA9IHV0aWxzXG4gICAgICAgIC5yYW5nZShuVHJlZXMpXG4gICAgICAgIC5tYXAoKF8sIGkpID0+IG1ha2VUcmVlKGRhdGEsIGxlYWZTaXplLCBpLCByYW5kb20pKTtcbiAgICBjb25zdCBmb3Jlc3QgPSB0cmVlcy5tYXAoKHRyZWUpID0+IGZsYXR0ZW5UcmVlKHRyZWUsIGxlYWZTaXplKSk7XG4gICAgcmV0dXJuIGZvcmVzdDtcbn1cbi8qKlxuICogQ29uc3RydWN0IGEgcmFuZG9tIHByb2plY3Rpb24gdHJlZSBiYXNlZCBvbiBgYGRhdGFgYCB3aXRoIGxlYXZlc1xuICogb2Ygc2l6ZSBhdCBtb3N0IGBgbGVhZlNpemVgYFxuICovXG5mdW5jdGlvbiBtYWtlVHJlZShkYXRhLCBsZWFmU2l6ZSA9IDMwLCBuLCByYW5kb20pIHtcbiAgICBjb25zdCBpbmRpY2VzID0gdXRpbHMucmFuZ2UoZGF0YS5sZW5ndGgpO1xuICAgIGNvbnN0IHRyZWUgPSBtYWtlRXVjbGlkZWFuVHJlZShkYXRhLCBpbmRpY2VzLCBsZWFmU2l6ZSwgbiwgcmFuZG9tKTtcbiAgICByZXR1cm4gdHJlZTtcbn1cbmZ1bmN0aW9uIG1ha2VFdWNsaWRlYW5UcmVlKGRhdGEsIGluZGljZXMsIGxlYWZTaXplID0gMzAsIHEsIHJhbmRvbSkge1xuICAgIGlmIChpbmRpY2VzLmxlbmd0aCA+IGxlYWZTaXplKSB7XG4gICAgICAgIGNvbnN0IHNwbGl0UmVzdWx0cyA9IGV1Y2xpZGVhblJhbmRvbVByb2plY3Rpb25TcGxpdChkYXRhLCBpbmRpY2VzLCByYW5kb20pO1xuICAgICAgICBjb25zdCB7IGluZGljZXNMZWZ0LCBpbmRpY2VzUmlnaHQsIGh5cGVycGxhbmUsIG9mZnNldCB9ID0gc3BsaXRSZXN1bHRzO1xuICAgICAgICBjb25zdCBsZWZ0Q2hpbGQgPSBtYWtlRXVjbGlkZWFuVHJlZShkYXRhLCBpbmRpY2VzTGVmdCwgbGVhZlNpemUsIHEgKyAxLCByYW5kb20pO1xuICAgICAgICBjb25zdCByaWdodENoaWxkID0gbWFrZUV1Y2xpZGVhblRyZWUoZGF0YSwgaW5kaWNlc1JpZ2h0LCBsZWFmU2l6ZSwgcSArIDEsIHJhbmRvbSk7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB7IGxlZnRDaGlsZCwgcmlnaHRDaGlsZCwgaXNMZWFmOiBmYWxzZSwgaHlwZXJwbGFuZSwgb2Zmc2V0IH07XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IHsgaW5kaWNlcywgaXNMZWFmOiB0cnVlIH07XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbn1cbi8qKlxuICogR2l2ZW4gYSBzZXQgb2YgYGBpbmRpY2VzYGAgZm9yIGRhdGEgcG9pbnRzIGZyb20gYGBkYXRhYGAsIGNyZWF0ZVxuICogYSByYW5kb20gaHlwZXJwbGFuZSB0byBzcGxpdCB0aGUgZGF0YSwgcmV0dXJuaW5nIHR3byBhcnJheXMgaW5kaWNlc1xuICogdGhhdCBmYWxsIG9uIGVpdGhlciBzaWRlIG9mIHRoZSBoeXBlcnBsYW5lLiBUaGlzIGlzIHRoZSBiYXNpcyBmb3IgYVxuICogcmFuZG9tIHByb2plY3Rpb24gdHJlZSwgd2hpY2ggc2ltcGx5IHVzZXMgdGhpcyBzcGxpdHRpbmcgcmVjdXJzaXZlbHkuXG4gKiBUaGlzIHBhcnRpY3VsYXIgc3BsaXQgdXNlcyBldWNsaWRlYW4gZGlzdGFuY2UgdG8gZGV0ZXJtaW5lIHRoZSBoeXBlcnBsYW5lXG4gKiBhbmQgd2hpY2ggc2lkZSBlYWNoIGRhdGEgc2FtcGxlIGZhbGxzIG9uLlxuICovXG5mdW5jdGlvbiBldWNsaWRlYW5SYW5kb21Qcm9qZWN0aW9uU3BsaXQoZGF0YSwgaW5kaWNlcywgcmFuZG9tKSB7XG4gICAgLy9jb25zdCBkaW0gPSAxO1xuICAgIC8vIFNlbGVjdCB0d28gcmFuZG9tIHBvaW50cywgc2V0IHRoZSBoeXBlcnBsYW5lIGJldHdlZW4gdGhlbVxuICAgIGNvbnN0IGxlZnRJbmRleCA9IHV0aWxzLnRhdVJhbmRJbnQoaW5kaWNlcy5sZW5ndGgsIHJhbmRvbSk7XG4gICAgbGV0IHJpZ2h0SW5kZXggPSB1dGlscy50YXVSYW5kSW50KGluZGljZXMubGVuZ3RoLCByYW5kb20pO1xuICAgIHJpZ2h0SW5kZXggKz0gbGVmdEluZGV4ID09PSByaWdodEluZGV4ID8gMSA6IDA7XG4gICAgcmlnaHRJbmRleCA9IHJpZ2h0SW5kZXggJSBpbmRpY2VzLmxlbmd0aDtcbiAgICBjb25zdCBsZWZ0ID0gaW5kaWNlc1tsZWZ0SW5kZXhdO1xuICAgIGNvbnN0IHJpZ2h0ID0gaW5kaWNlc1tyaWdodEluZGV4XTtcbiAgICAvLyBDb21wdXRlIHRoZSBub3JtYWwgdmVjdG9yIHRvIHRoZSBoeXBlcnBsYW5lICh0aGUgdmVjdG9yIGJldHdlZW4gdGhlIHR3b1xuICAgIC8vIHBvaW50cykgYW5kIHRoZSBvZmZzZXQgZnJvbSB0aGUgb3JpZ2luXG4gICAgbGV0IGh5cGVycGxhbmVPZmZzZXQgPSAwO1xuICAgIGxldCBoeXBlcnBsYW5lVmVjdG9yID0gMDtcbiAgICBoeXBlcnBsYW5lVmVjdG9yID0gZGF0YVtsZWZ0XSAtIGRhdGFbcmlnaHRdO1xuICAgIGh5cGVycGxhbmVPZmZzZXQgLT1cbiAgICAgICAgKGh5cGVycGxhbmVWZWN0b3IgKiAoZGF0YVtsZWZ0XSArIGRhdGFbcmlnaHRdKSkgLyAyLjA7XG4gICAgLy8gRm9yIGVhY2ggcG9pbnQgY29tcHV0ZSB0aGUgbWFyZ2luIChwcm9qZWN0IGludG8gbm9ybWFsIHZlY3RvcilcbiAgICAvLyBJZiB3ZSBhcmUgb24gbG93ZXIgc2lkZSBvZiB0aGUgaHlwZXJwbGFuZSBwdXQgaW4gb25lIHBpbGUsIG90aGVyd2lzZVxuICAgIC8vIHB1dCBpdCBpbiB0aGUgb3RoZXIgcGlsZSAoaWYgd2UgaGl0IGh5cGVycGxhbmUgb24gdGhlIG5vc2UsIGZsaXAgYSBjb2luKVxuICAgIGxldCBuTGVmdCA9IDA7XG4gICAgbGV0IG5SaWdodCA9IDA7XG4gICAgY29uc3Qgc2lkZSA9IHV0aWxzLnplcm9zKGluZGljZXMubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IG1hcmdpbiA9IGh5cGVycGxhbmVPZmZzZXQ7XG4gICAgICAgIG1hcmdpbiArPSBoeXBlcnBsYW5lVmVjdG9yICogZGF0YVtpbmRpY2VzW2ldXTtcbiAgICAgICAgaWYgKG1hcmdpbiA9PT0gMCkge1xuICAgICAgICAgICAgc2lkZVtpXSA9IHV0aWxzLnRhdVJhbmRJbnQoMiwgcmFuZG9tKTtcbiAgICAgICAgICAgIGlmIChzaWRlW2ldID09PSAwKVxuICAgICAgICAgICAgICAgIG5MZWZ0ICs9IDE7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgblJpZ2h0ICs9IDE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWFyZ2luID4gMCkge1xuICAgICAgICAgICAgc2lkZVtpXSA9IDA7XG4gICAgICAgICAgICBuTGVmdCArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2lkZVtpXSA9IDE7XG4gICAgICAgICAgICBuUmlnaHQgKz0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBOb3cgdGhhdCB3ZSBoYXZlIHRoZSBjb3VudHMsIGFsbG9jYXRlIGFycmF5c1xuICAgIGNvbnN0IGluZGljZXNMZWZ0ID0gdXRpbHMuemVyb3MobkxlZnQpO1xuICAgIGNvbnN0IGluZGljZXNSaWdodCA9IHV0aWxzLnplcm9zKG5SaWdodCk7XG4gICAgLy8gUG9wdWxhdGUgdGhlIGFycmF5cyB3aXRoIGluZGljZXMgYWNjb3JkaW5nIHRvIHdoaWNoIHNpZGUgdGhleSBmZWxsIG9uXG4gICAgbkxlZnQgPSAwO1xuICAgIG5SaWdodCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaWRlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChzaWRlW2ldID09PSAwKSB7XG4gICAgICAgICAgICBpbmRpY2VzTGVmdFtuTGVmdF0gPSBpbmRpY2VzW2ldO1xuICAgICAgICAgICAgbkxlZnQgKz0gMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGluZGljZXNSaWdodFtuUmlnaHRdID0gaW5kaWNlc1tpXTtcbiAgICAgICAgICAgIG5SaWdodCArPSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGluZGljZXNMZWZ0LFxuICAgICAgICBpbmRpY2VzUmlnaHQsXG4gICAgICAgIGh5cGVycGxhbmU6IGh5cGVycGxhbmVWZWN0b3IsXG4gICAgICAgIG9mZnNldDogaHlwZXJwbGFuZU9mZnNldCxcbiAgICB9O1xufVxuZnVuY3Rpb24gZmxhdHRlblRyZWUodHJlZSwgbGVhZlNpemUpIHtcbiAgICBjb25zdCBuTm9kZXMgPSBudW1Ob2Rlcyh0cmVlKTtcbiAgICBjb25zdCBuTGVhdmVzID0gbnVtTGVhdmVzKHRyZWUpO1xuICAgIC8vIFRPRE86IFZlcmlmeSB0aGF0IHNwYXJzZSBjb2RlIGlzIG5vdCByZWxldmFudC4uLlxuICAgIGNvbnN0IGh5cGVycGxhbmVzID0gdXRpbHNcbiAgICAgICAgLnJhbmdlKG5Ob2RlcylcbiAgICAgICAgLm1hcCgoKSA9PiB0cmVlLmh5cGVycGxhbmUgPyAxIDogMCk7XG4gICAgY29uc3Qgb2Zmc2V0cyA9IHV0aWxzLnplcm9zKG5Ob2Rlcyk7XG4gICAgY29uc3QgY2hpbGRyZW4gPSB1dGlscy5yYW5nZShuTm9kZXMpLm1hcCgoKSA9PiBbLTEsIC0xXSk7XG4gICAgY29uc3QgaW5kaWNlcyA9IHV0aWxzXG4gICAgICAgIC5yYW5nZShuTGVhdmVzKVxuICAgICAgICAubWFwKCgpID0+IHV0aWxzLnJhbmdlKGxlYWZTaXplKS5tYXAoKCkgPT4gLTEpKTtcbiAgICByZWN1cnNpdmVGbGF0dGVuKHRyZWUsIGh5cGVycGxhbmVzLCBvZmZzZXRzLCBjaGlsZHJlbiwgaW5kaWNlcywgMCwgMCk7XG4gICAgcmV0dXJuIG5ldyBGbGF0VHJlZShoeXBlcnBsYW5lcywgb2Zmc2V0cywgY2hpbGRyZW4sIGluZGljZXMpO1xufVxuZnVuY3Rpb24gcmVjdXJzaXZlRmxhdHRlbih0cmVlLCBoeXBlcnBsYW5lcywgb2Zmc2V0cywgY2hpbGRyZW4sIGluZGljZXMsIG5vZGVOdW0sIGxlYWZOdW0pIHtcbiAgICBpZiAodHJlZS5pc0xlYWYpIHtcbiAgICAgICAgY2hpbGRyZW5bbm9kZU51bV1bMF0gPSAtbGVhZk51bTtcbiAgICAgICAgLy8gVE9ETzogVHJpcGxlIGNoZWNrIHRoaXMgb3BlcmF0aW9uIGNvcnJlc3BvbmRzIHRvXG4gICAgICAgIC8vIGluZGljZXNbbGVhZk51bSA6IHRyZWUuaW5kaWNlcy5zaGFwZVswXV0gPSB0cmVlLmluZGljZXNcbiAgICAgICAgaW5kaWNlc1tsZWFmTnVtXS5zcGxpY2UoMCwgdHJlZS5pbmRpY2VzLmxlbmd0aCwgLi4udHJlZS5pbmRpY2VzKTtcbiAgICAgICAgbGVhZk51bSArPSAxO1xuICAgICAgICByZXR1cm4geyBub2RlTnVtLCBsZWFmTnVtIH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBoeXBlcnBsYW5lc1tub2RlTnVtXSA9IHRyZWUuaHlwZXJwbGFuZTtcbiAgICAgICAgb2Zmc2V0c1tub2RlTnVtXSA9IHRyZWUub2Zmc2V0O1xuICAgICAgICBjaGlsZHJlbltub2RlTnVtXVswXSA9IG5vZGVOdW0gKyAxO1xuICAgICAgICBjb25zdCBvbGROb2RlTnVtID0gbm9kZU51bTtcbiAgICAgICAgbGV0IHJlcyA9IHJlY3Vyc2l2ZUZsYXR0ZW4odHJlZS5sZWZ0Q2hpbGQsIGh5cGVycGxhbmVzLCBvZmZzZXRzLCBjaGlsZHJlbiwgaW5kaWNlcywgbm9kZU51bSArIDEsIGxlYWZOdW0pO1xuICAgICAgICBub2RlTnVtID0gcmVzLm5vZGVOdW07XG4gICAgICAgIGxlYWZOdW0gPSByZXMubGVhZk51bTtcbiAgICAgICAgY2hpbGRyZW5bb2xkTm9kZU51bV1bMV0gPSBub2RlTnVtICsgMTtcbiAgICAgICAgcmVzID0gcmVjdXJzaXZlRmxhdHRlbih0cmVlLnJpZ2h0Q2hpbGQsIGh5cGVycGxhbmVzLCBvZmZzZXRzLCBjaGlsZHJlbiwgaW5kaWNlcywgbm9kZU51bSArIDEsIGxlYWZOdW0pO1xuICAgICAgICByZXR1cm4geyBub2RlTnVtOiByZXMubm9kZU51bSwgbGVhZk51bTogcmVzLmxlYWZOdW0gfTtcbiAgICB9XG59XG5mdW5jdGlvbiBudW1Ob2Rlcyh0cmVlKSB7XG4gICAgaWYgKHRyZWUuaXNMZWFmKVxuICAgICAgICByZXR1cm4gMTtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiAxICsgbnVtTm9kZXModHJlZS5sZWZ0Q2hpbGQpICsgbnVtTm9kZXModHJlZS5yaWdodENoaWxkKTtcbn1cbmZ1bmN0aW9uIG51bUxlYXZlcyh0cmVlKSB7XG4gICAgaWYgKHRyZWUuaXNMZWFmKVxuICAgICAgICByZXR1cm4gMTtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiBudW1MZWF2ZXModHJlZS5sZWZ0Q2hpbGQpICsgbnVtTGVhdmVzKHRyZWUucmlnaHRDaGlsZCk7XG59XG4vKipcbiAqIEdlbmVyYXRlIGFuIGFycmF5IG9mIHNldHMgb2YgY2FuZGlkYXRlIG5lYXJlc3QgbmVpZ2hib3JzIGJ5XG4gKiBjb25zdHJ1Y3RpbmcgYSByYW5kb20gcHJvamVjdGlvbiBmb3Jlc3QgYW5kIHRha2luZyB0aGUgbGVhdmVzIG9mIGFsbCB0aGVcbiAqIHRyZWVzLiBBbnkgZ2l2ZW4gdHJlZSBoYXMgbGVhdmVzIHRoYXQgYXJlIGEgc2V0IG9mIHBvdGVudGlhbCBuZWFyZXN0XG4gKiBuZWlnaGJvcnMuIEdpdmVuIGVub3VnaCB0cmVlcyB0aGUgc2V0IG9mIGFsbCBzdWNoIGxlYXZlcyBnaXZlcyBhIGdvb2RcbiAqIGxpa2VsaWhvb2Qgb2YgZ2V0dGluZyBhIGdvb2Qgc2V0IG9mIG5lYXJlc3QgbmVpZ2hib3JzIGluIGNvbXBvc2l0ZS4gU2luY2VcbiAqIHN1Y2ggYSByYW5kb20gcHJvamVjdGlvbiBmb3Jlc3QgaXMgaW5leHBlbnNpdmUgdG8gY29tcHV0ZSwgdGhpcyBjYW4gYmUgYVxuICogdXNlZnVsIG1lYW5zIG9mIHNlZWRpbmcgb3RoZXIgbmVhcmVzdCBuZWlnaGJvciBhbGdvcml0aG1zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZUxlYWZBcnJheShycEZvcmVzdCkge1xuICAgIGlmIChycEZvcmVzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IG91dHB1dCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHRyZWUgb2YgcnBGb3Jlc3QpXG4gICAgICAgICAgICBvdXRwdXQucHVzaCguLi50cmVlLmluZGljZXMpO1xuICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFtbLTFdXTtcbiAgICB9XG59XG4vKipcbiAqIFNlbGVjdHMgdGhlIHNpZGUgb2YgdGhlIHRyZWUgdG8gc2VhcmNoIGR1cmluZyBmbGF0IHRyZWUgc2VhcmNoLlxuICovXG5mdW5jdGlvbiBzZWxlY3RTaWRlKGh5cGVycGxhbmUsIG9mZnNldCwgcG9pbnQsIHJhbmRvbSkge1xuICAgIGxldCBtYXJnaW4gPSBvZmZzZXQ7XG4gICAgbWFyZ2luICs9IGh5cGVycGxhbmUgKiBwb2ludDtcbiAgICBpZiAobWFyZ2luID09PSAwKSB7XG4gICAgICAgIGNvbnN0IHNpZGUgPSB1dGlscy50YXVSYW5kSW50KDIsIHJhbmRvbSk7XG4gICAgICAgIHJldHVybiBzaWRlO1xuICAgIH1cbiAgICBlbHNlIGlmIChtYXJnaW4gPiAwKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxufVxuLyoqXG4gKiBTZWFyY2hlcyBhIGZsYXR0ZW5lZCBycC10cmVlIGZvciBhIHBvaW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VhcmNoRmxhdFRyZWUocG9pbnQsIHRyZWUsIHJhbmRvbSkge1xuICAgIGxldCBub2RlID0gMDtcbiAgICB3aGlsZSAodHJlZS5jaGlsZHJlbltub2RlXVswXSA+IDApIHtcbiAgICAgICAgY29uc3Qgc2lkZSA9IHNlbGVjdFNpZGUodHJlZS5oeXBlcnBsYW5lc1tub2RlXSwgdHJlZS5vZmZzZXRzW25vZGVdLCBwb2ludCwgcmFuZG9tKTtcbiAgICAgICAgaWYgKHNpZGUgPT09IDApXG4gICAgICAgICAgICBub2RlID0gdHJlZS5jaGlsZHJlbltub2RlXVswXTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbm9kZSA9IHRyZWUuY2hpbGRyZW5bbm9kZV1bMV07XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ID0gLTEgKiB0cmVlLmNoaWxkcmVuW25vZGVdWzBdO1xuICAgIHJldHVybiB0cmVlLmluZGljZXNbaW5kZXhdO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEhKbFpTNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW5SeVpXVXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFN096czdPenM3T3pzN096czdPenM3TzBkQmFVSkhPMEZCUlVnN096czdPMGRCUzBjN1FVRkZTRHM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3p0SFFTdENSenRCUVVWSUxFOUJRVThzUzBGQlN5eExRVUZMTEUxQlFVMHNVMEZCVXl4RFFVRkRPMEZCWldwRExFMUJRVTBzVDBGQlR5eFJRVUZSTzBsQlEyNUNMRmxCUTFNc1YwRkJjVUlzUlVGRGNrSXNUMEZCYVVJc1JVRkRha0lzVVVGQmIwSXNSVUZEY0VJc1QwRkJiVUk3VVVGSWJrSXNaMEpCUVZjc1IwRkJXQ3hYUVVGWExFTkJRVlU3VVVGRGNrSXNXVUZCVHl4SFFVRlFMRTlCUVU4c1EwRkJWVHRSUVVOcVFpeGhRVUZSTEVkQlFWSXNVVUZCVVN4RFFVRlpPMUZCUTNCQ0xGbEJRVThzUjBGQlVDeFBRVUZQTEVOQlFWazdTVUZEZWtJc1EwRkJRenREUVVOTU8wRkJSVVE3TzBkQlJVYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1ZVRkJWU3hEUVVONFFpeEpRVUZaTEVWQlExb3NWVUZCYTBJc1JVRkRiRUlzVFVGQll5eEZRVU5rTEUxQlFXZENPMGxCUldoQ0xFMUJRVTBzVVVGQlVTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hGUVVGRkxGVkJRVlVzUTBGQlF5eERRVUZETzBsQlJURkRMRTFCUVUwc1MwRkJTeXhIUVVGSExFdEJRVXM3VTBGRGFFSXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJRenRUUVVOaUxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVWQlFVVXNVVUZCVVN4RlFVRkZMRU5CUVVNc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzUkVMRTFCUVUwc1RVRkJUU3hIUVVGSExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1JVRkJSU3hEUVVGRExGZEJRVmNzUTBGQlF5eEpRVUZKTEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWb1JTeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVVE3T3p0SFFVZEhPMEZCUTBnc1UwRkJVeXhSUVVGUkxFTkJRMllzU1VGQldTeEZRVU5hTEZGQlFWRXNSMEZCUnl4RlFVRkZMRVZCUTJJc1EwRkJVeXhGUVVOVUxFMUJRV2RDTzBsQlJXaENMRTFCUVUwc1QwRkJUeXhIUVVGSExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wbEJRM3BETEUxQlFVMHNTVUZCU1N4SFFVRkhMR2xDUVVGcFFpeERRVUZETEVsQlFVa3NSVUZCUlN4UFFVRlBMRVZCUVVVc1VVRkJVU3hGUVVGRkxFTkJRVU1zUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0SlFVTnVSU3hQUVVGUExFbEJRVWtzUTBGQlF6dEJRVU5rTEVOQlFVTTdRVUZGUkN4VFFVRlRMR2xDUVVGcFFpeERRVU40UWl4SlFVRlpMRVZCUTFvc1QwRkJhVUlzUlVGRGFrSXNVVUZCVVN4SFFVRkhMRVZCUVVVc1JVRkRZaXhEUVVGVExFVkJRMVFzVFVGQlowSTdTVUZGYUVJc1NVRkJTU3hQUVVGUExFTkJRVU1zVFVGQlRTeEhRVUZITEZGQlFWRXNSVUZCUlR0UlFVTTNRaXhOUVVGTkxGbEJRVmtzUjBGQlJ5dzRRa0ZCT0VJc1EwRkJReXhKUVVGSkxFVkJRVVVzVDBGQlR5eEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUXpORkxFMUJRVTBzUlVGQlF5eFhRVUZYTEVWQlFVVXNXVUZCV1N4RlFVRkZMRlZCUVZVc1JVRkJSU3hOUVVGTkxFVkJRVU1zUjBGQlJ5eFpRVUZaTEVOQlFVTTdVVUZGY2tVc1RVRkJUU3hUUVVGVExFZEJRVWNzYVVKQlFXbENMRU5CUTJwRExFbEJRVWtzUlVGRFNpeFhRVUZYTEVWQlExZ3NVVUZCVVN4RlFVTlNMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRMHdzVFVGQlRTeERRVU5RTEVOQlFVTTdVVUZEUml4TlFVRk5MRlZCUVZVc1IwRkJSeXhwUWtGQmFVSXNRMEZEYkVNc1NVRkJTU3hGUVVOS0xGbEJRVmtzUlVGRFdpeFJRVUZSTEVWQlExSXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkRUQ3hOUVVGTkxFTkJRMUFzUTBGQlF6dFJRVVZHTEUxQlFVMHNTVUZCU1N4SFFVRkhMRVZCUVVNc1UwRkJVeXhGUVVGRkxGVkJRVlVzUlVGQlJTeE5RVUZOTEVWQlFVVXNTMEZCU3l4RlFVRkZMRlZCUVZVc1JVRkJSU3hOUVVGTkxFVkJRVU1zUTBGQlF6dFJRVU40UlN4UFFVRlBMRWxCUVVrc1EwRkJRenRMUVVOaU8xTkJRVTA3VVVGRFRDeE5RVUZOTEVsQlFVa3NSMEZCUnl4RlFVRkRMRTlCUVU4c1JVRkJSU3hOUVVGTkxFVkJRVVVzU1VGQlNTeEZRVUZETEVOQlFVTTdVVUZEY2tNc1QwRkJUeXhKUVVGSkxFTkJRVU03UzBGRFlqdEJRVU5JTEVOQlFVTTdRVUZGUkRzN096czdPenRIUVU5SE8wRkJRMGdzVTBGQlV5dzRRa0ZCT0VJc1EwRkRja01zU1VGQldTeEZRVU5hTEU5QlFXbENMRVZCUTJwQ0xFMUJRV2RDTzBsQlJXaENMR2RDUVVGblFqdEpRVVZvUWl3MFJFRkJORVE3U1VGRE5VUXNUVUZCVFN4VFFVRlRMRWRCUVVjc1MwRkJTeXhEUVVGRExGVkJRVlVzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRE8wbEJRek5FTEVsQlFVa3NWVUZCVlN4SFFVRkhMRXRCUVVzc1EwRkJReXhWUVVGVkxFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVNeFJDeFZRVUZWTEVsQlFVa3NVMEZCVXl4TFFVRkxMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRMME1zVlVGQlZTeEhRVUZITEZWQlFWVXNSMEZCUnl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRE8wbEJRM3BETEUxQlFVMHNTVUZCU1N4SFFVRkhMRTlCUVU4c1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dEpRVU5vUXl4TlFVRk5MRXRCUVVzc1IwRkJSeXhQUVVGUExFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdTVUZGYkVNc01FVkJRVEJGTzBsQlF6RkZMSGxEUVVGNVF6dEpRVU42UXl4SlFVRkpMR2RDUVVGblFpeEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVTjZRaXhKUVVGSkxHZENRVUZuUWl4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVkNlFpeG5Ra0ZCWjBJc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wbEJRelZETEdkQ1FVRm5RanRSUVVOa0xFTkJRVU1zWjBKQlFXZENMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdTVUZIZUVRc2FVVkJRV2xGTzBsQlEycEZMSFZGUVVGMVJUdEpRVU4yUlN3eVJVRkJNa1U3U1VGRE0wVXNTVUZCU1N4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRMlFzU1VGQlNTeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTJZc1RVRkJUU3hKUVVGSkxFZEJRVWNzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRGVrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEU5QlFVOHNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3VVVGRGRrTXNTVUZCU1N4TlFVRk5MRWRCUVVjc1owSkJRV2RDTEVOQlFVTTdVVUZGT1VJc1RVRkJUU3hKUVVGSkxHZENRVUZuUWl4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVVTVReXhKUVVGSkxFMUJRVTBzUzBGQlN5eERRVUZETEVWQlFVVTdXVUZEYUVJc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzFsQlEzUkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTTdaMEpCUTJZc1MwRkJTeXhKUVVGSkxFTkJRVU1zUTBGQlF6czdaMEpCUlZnc1RVRkJUU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFRRVU5tTzJGQlFVMHNTVUZCU1N4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8xbEJRM0pDTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRFdpeExRVUZMTEVsQlFVa3NRMEZCUXl4RFFVRkRPMU5CUTFvN1lVRkJUVHRaUVVOTUxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRXaXhOUVVGTkxFbEJRVWtzUTBGQlF5eERRVUZETzFOQlEySTdTMEZEUmp0SlFVVkVMQ3REUVVFclF6dEpRVU12UXl4TlFVRk5MRmRCUVZjc1IwRkJSeXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMGxCUTNaRExFMUJRVTBzV1VGQldTeEhRVUZITEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRmVrTXNkMFZCUVhkRk8wbEJRM2hGTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRWaXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETzBsQlExZ3NTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3VVVGRGNFTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTzFsQlEycENMRmRCUVZjc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRhRU1zUzBGQlN5eEpRVUZKTEVOQlFVTXNRMEZCUXp0VFFVTmFPMkZCUVUwN1dVRkRUQ3haUVVGWkxFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMnhETEUxQlFVMHNTVUZCU1N4RFFVRkRMRU5CUVVNN1UwRkRZanRMUVVOR08wbEJSVVFzVDBGQlR6dFJRVU5NTEZkQlFWYzdVVUZEV0N4WlFVRlpPMUZCUTFvc1ZVRkJWU3hGUVVGRkxHZENRVUZuUWp0UlFVTTFRaXhOUVVGTkxFVkJRVVVzWjBKQlFXZENPMHRCUTNwQ0xFTkJRVU03UVVGRFNpeERRVUZETzBGQlJVUXNVMEZCVXl4WFFVRlhMRU5CUVVNc1NVRkJPRUlzUlVGQlJTeFJRVUZuUWp0SlFVTnVSU3hOUVVGTkxFMUJRVTBzUjBGQlJ5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRPVUlzVFVGQlRTeFBRVUZQTEVkQlFVY3NVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJSV2hETEcxRVFVRnRSRHRKUVVOdVJDeE5RVUZOTEZkQlFWY3NSMEZCUnl4TFFVRkxPMU5CUTNSQ0xFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTTdVMEZEWWl4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVVjBReXhOUVVGTkxFOUJRVThzUjBGQlJ5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wbEJRM0JETEUxQlFVMHNVVUZCVVN4SFFVRkhMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM3BFTEUxQlFVMHNUMEZCVHl4SFFVRkhMRXRCUVVzN1UwRkRiRUlzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXp0VFFVTmtMRWRCUVVjc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGJFUXNaMEpCUVdkQ0xFTkJRVU1zU1VGQlNTeEZRVUZGTEZkQlFWY3NSVUZCUlN4UFFVRlBMRVZCUVVVc1VVRkJVU3hGUVVGRkxFOUJRVThzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRkRVVzVDBGQlR5eEpRVUZKTEZGQlFWRXNRMEZCUXl4WFFVRlhMRVZCUVVVc1QwRkJUeXhGUVVGRkxGRkJRVkVzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTXZSQ3hEUVVGRE8wRkJSVVFzVTBGQlV5eG5Ra0ZCWjBJc1EwRkRka0lzU1VGQk9FSXNSVUZET1VJc1YwRkJjVUlzUlVGRGNrSXNUMEZCYVVJc1JVRkRha0lzVVVGQmIwSXNSVUZEY0VJc1QwRkJiVUlzUlVGRGJrSXNUMEZCWlN4RlFVTm1MRTlCUVdVN1NVRkZaaXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVTdVVUZEWml4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNN1VVRkZhRU1zYlVSQlFXMUVPMUZCUTI1RUxEQkVRVUV3UkR0UlFVTXhSQ3hQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zVDBGQlVTeERRVUZETEUxQlFVMHNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUkxFTkJRVU1zUTBGQlF6dFJRVU51UlN4UFFVRlBMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRMklzVDBGQlR5eEZRVUZETEU5QlFVOHNSVUZCUlN4UFFVRlBMRVZCUVVNc1EwRkJRenRMUVVNelFqdFRRVUZOTzFGQlEwd3NWMEZCVnl4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFZRVUZYTEVOQlFVTTdVVUZEZUVNc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRlBMRU5CUVVNN1VVRkRhRU1zVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFOUJRVThzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEYmtNc1RVRkJUU3hWUVVGVkxFZEJRVWNzVDBGQlR5eERRVUZETzFGQlJUTkNMRWxCUVVrc1IwRkJSeXhIUVVGSExHZENRVUZuUWl4RFFVTjRRaXhKUVVGSkxFTkJRVU1zVTBGQlZTeEZRVU5tTEZkQlFWY3NSVUZEV0N4UFFVRlBMRVZCUTFBc1VVRkJVU3hGUVVOU0xFOUJRVThzUlVGRFVDeFBRVUZQTEVkQlFVY3NRMEZCUXl4RlFVTllMRTlCUVU4c1EwRkRVaXhEUVVGRE8xRkJRMFlzVDBGQlR5eEhRVUZITEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNN1VVRkRkRUlzVDBGQlR5eEhRVUZITEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNN1VVRkZkRUlzVVVGQlVTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFOUJRVThzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZGZEVNc1IwRkJSeXhIUVVGSExHZENRVUZuUWl4RFFVTndRaXhKUVVGSkxFTkJRVU1zVlVGQlZ5eEZRVU5vUWl4WFFVRlhMRVZCUTFnc1QwRkJUeXhGUVVOUUxGRkJRVkVzUlVGRFVpeFBRVUZQTEVWQlExQXNUMEZCVHl4SFFVRkhMRU5CUVVNc1JVRkRXQ3hQUVVGUExFTkJRMUlzUTBGQlF6dFJRVU5HTEU5QlFVOHNSVUZCUXl4UFFVRlBMRVZCUVVVc1IwRkJSeXhEUVVGRExFOUJRVThzUlVGQlJTeFBRVUZQTEVWQlFVVXNSMEZCUnl4RFFVRkRMRTlCUVU4c1JVRkJReXhEUVVGRE8wdEJRM0pFTzBGQlEwZ3NRMEZCUXp0QlFVVkVMRk5CUVZNc1VVRkJVU3hEUVVGRExFbEJRVGhDTzBsQlF6bERMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTA3VVVGRFlpeFBRVUZQTEVOQlFVTXNRMEZCUXpzN1VVRkZWQ3hQUVVGUExFTkJRVU1zUjBGQlJ5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZVc1EwRkJReXhIUVVGSExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNWVUZCVnl4RFFVRkRMRU5CUVVNN1FVRkRkRVVzUTBGQlF6dEJRVVZFTEZOQlFWTXNVMEZCVXl4RFFVRkRMRWxCUVRoQ08wbEJReTlETEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwN1VVRkRZaXhQUVVGUExFTkJRVU1zUTBGQlF6czdVVUZGVkN4UFFVRlBMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlZTeERRVUZETEVkQlFVY3NVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGWExFTkJRVU1zUTBGQlF6dEJRVU53UlN4RFFVRkRPMEZCUlVRN096czdPenM3TzBkQlVVYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1lVRkJZU3hEUVVGRExGRkJRVzlDTzBsQlEyaEVMRWxCUVVrc1VVRkJVU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlFVVTdVVUZEZGtJc1RVRkJUU3hOUVVGTkxFZEJRV1VzUlVGQlJTeERRVUZETzFGQlF6bENMRXRCUVVzc1RVRkJUU3hKUVVGSkxFbEJRVWtzVVVGQlVUdFpRVU42UWl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFWRXNRMEZCUXl4RFFVRkRPMUZCUldoRExFOUJRVThzVFVGQlRTeERRVUZETzB0QlEyWTdVMEZCVFR0UlFVTk1MRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0TFFVTm1PMEZCUTBnc1EwRkJRenRCUVVWRU96dEhRVVZITzBGQlEwZ3NVMEZCVXl4VlFVRlZMRU5CUTJwQ0xGVkJRV3RDTEVWQlEyeENMRTFCUVdNc1JVRkRaQ3hMUVVGaExFVkJRMklzVFVGQlowSTdTVUZGYUVJc1NVRkJTU3hOUVVGTkxFZEJRVWNzVFVGQlRTeERRVUZETzBsQlJYQkNMRTFCUVUwc1NVRkJTU3hWUVVGVkxFZEJRVWNzUzBGQlN5eERRVUZETzBsQlJ6ZENMRWxCUVVrc1RVRkJUU3hMUVVGTExFTkJRVU1zUlVGQlJUdFJRVU5vUWl4TlFVRk5MRWxCUVVrc1IwRkJSeXhMUVVGTExFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTXNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVONlF5eFBRVUZQTEVsQlFVa3NRMEZCUXp0TFFVTmlPMU5CUVUwc1NVRkJTU3hOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzFGQlEzSkNMRTlCUVU4c1EwRkJReXhEUVVGRE8wdEJRMVk3VTBGQlRUdFJRVU5NTEU5QlFVOHNRMEZCUXl4RFFVRkRPMHRCUTFZN1FVRkRTQ3hEUVVGRE8wRkJSVVE3TzBkQlJVYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1kwRkJZeXhEUVVNMVFpeExRVUZoTEVWQlEySXNTVUZCWXl4RlFVTmtMRTFCUVdkQ08wbEJSV2hDTEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOaUxFOUJRVThzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVTdVVUZEYWtNc1RVRkJUU3hKUVVGSkxFZEJRVWNzVlVGQlZTeERRVU55UWl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVU4wUWl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVU5zUWl4TFFVRkxMRVZCUTB3c1RVRkJUU3hEUVVOUUxFTkJRVU03VVVGRFJpeEpRVUZKTEVsQlFVa3NTMEZCU3l4RFFVRkRPMWxCUTFvc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03TzFsQlJUbENMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wdEJRMnBETzBsQlJVUXNUVUZCVFN4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU14UXl4UFFVRlBMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdRVUZETjBJc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUUd4cFkyVnVjMlZjYmlBcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE9TQkhiMjluYkdVZ1RFeERMaUJCYkd3Z1VtbG5hSFJ6SUZKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUV4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQmNHRmphR1VnVEdsalpXNXpaU3dnVm1WeWMybHZiaUF5TGpBZ0tIUm9aU0JjSWt4cFkyVnVjMlZjSWlrN1hHNGdLaUI1YjNVZ2JXRjVJRzV2ZENCMWMyVWdkR2hwY3lCbWFXeGxJR1Y0WTJWd2RDQnBiaUJqYjIxd2JHbGhibU5sSUhkcGRHZ2dkR2hsSUV4cFkyVnVjMlV1WEc0Z0tpQlpiM1VnYldGNUlHOWlkR0ZwYmlCaElHTnZjSGtnYjJZZ2RHaGxJRXhwWTJWdWMyVWdZWFJjYmlBcVhHNGdLaUFnSUNBZ2FIUjBjRG92TDNkM2R5NWhjR0ZqYUdVdWIzSm5MMnhwWTJWdWMyVnpMMHhKUTBWT1UwVXRNaTR3WEc0Z0tseHVJQ29nVlc1c1pYTnpJSEpsY1hWcGNtVmtJR0o1SUdGd2NHeHBZMkZpYkdVZ2JHRjNJRzl5SUdGbmNtVmxaQ0IwYnlCcGJpQjNjbWwwYVc1bkxDQnpiMlowZDJGeVpWeHVJQ29nWkdsemRISnBZblYwWldRZ2RXNWtaWElnZEdobElFeHBZMlZ1YzJVZ2FYTWdaR2x6ZEhKcFluVjBaV1FnYjI0Z1lXNGdYQ0pCVXlCSlUxd2lJRUpCVTBsVExGeHVJQ29nVjBsVVNFOVZWQ0JYUVZKU1FVNVVTVVZUSUU5U0lFTlBUa1JKVkVsUFRsTWdUMFlnUVU1WklFdEpUa1FzSUdWcGRHaGxjaUJsZUhCeVpYTnpJRzl5SUdsdGNHeHBaV1F1WEc0Z0tpQlRaV1VnZEdobElFeHBZMlZ1YzJVZ1ptOXlJSFJvWlNCemNHVmphV1pwWXlCc1lXNW5kV0ZuWlNCbmIzWmxjbTVwYm1jZ2NHVnliV2x6YzJsdmJuTWdZVzVrWEc0Z0tpQnNhVzFwZEdGMGFXOXVjeUIxYm1SbGNpQjBhR1VnVEdsalpXNXpaUzVjYmlBcUlEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFZ4dUlDb3ZYRzVjYmk4cUtseHVJQ29nVkdocGN5QnBjeUJoSUVwaGRtRlRZM0pwY0hRZ2NtVnBiWEJzWlcxbGJuUmhkR2x2YmlCdlppQlZUVUZRSUNodmNtbG5hVzVoYkNCc2FXTmxibk5sSUdKbGJHOTNLU3dnWm5KdmJWeHVJQ29nZEdobElIQjVkR2h2YmlCcGJYQnNaVzFsYm5SaGRHbHZiaUJtYjNWdVpDQmhkQ0JvZEhSd2N6b3ZMMmRwZEdoMVlpNWpiMjB2YkcxamFXNXVaWE12ZFcxaGNDNWNiaUFxWEc0Z0tpQkFZWFYwYUc5eUlHRnVaSGxqYjJWdVpXNUFaMjl2WjJ4bExtTnZiU0FvUVc1a2VTQkRiMlZ1Wlc0cFhHNGdLaTljYmx4dUx5b3FYRzRnS2lCQWJHbGpaVzV6WlZ4dUlDb2dRbE5FSURNdFEyeGhkWE5sSUV4cFkyVnVjMlZjYmlBcVhHNGdLaUJEYjNCNWNtbG5hSFFnS0dNcElESXdNVGNzSUV4bGJHRnVaQ0JOWTBsdWJtVnpYRzRnS2lCQmJHd2djbWxuYUhSeklISmxjMlZ5ZG1Wa0xseHVJQ3BjYmlBcUlGSmxaR2x6ZEhKcFluVjBhVzl1SUdGdVpDQjFjMlVnYVc0Z2MyOTFjbU5sSUdGdVpDQmlhVzVoY25rZ1ptOXliWE1zSUhkcGRHZ2diM0lnZDJsMGFHOTFkRnh1SUNvZ2JXOWthV1pwWTJGMGFXOXVMQ0JoY21VZ2NHVnliV2wwZEdWa0lIQnliM1pwWkdWa0lIUm9ZWFFnZEdobElHWnZiR3h2ZDJsdVp5QmpiMjVrYVhScGIyNXpJR0Z5WlNCdFpYUTZYRzRnS2x4dUlDb2dLaUJTWldScGMzUnlhV0oxZEdsdmJuTWdiMllnYzI5MWNtTmxJR052WkdVZ2JYVnpkQ0J5WlhSaGFXNGdkR2hsSUdGaWIzWmxJR052Y0hseWFXZG9kQ0J1YjNScFkyVXNJSFJvYVhOY2JpQXFJQ0FnYkdsemRDQnZaaUJqYjI1a2FYUnBiMjV6SUdGdVpDQjBhR1VnWm05c2JHOTNhVzVuSUdScGMyTnNZV2x0WlhJdVhHNGdLbHh1SUNvZ0tpQlNaV1JwYzNSeWFXSjFkR2x2Ym5NZ2FXNGdZbWx1WVhKNUlHWnZjbTBnYlhWemRDQnlaWEJ5YjJSMVkyVWdkR2hsSUdGaWIzWmxJR052Y0hseWFXZG9kQ0J1YjNScFkyVXNYRzRnS2lBZ0lIUm9hWE1nYkdsemRDQnZaaUJqYjI1a2FYUnBiMjV6SUdGdVpDQjBhR1VnWm05c2JHOTNhVzVuSUdScGMyTnNZV2x0WlhJZ2FXNGdkR2hsSUdSdlkzVnRaVzUwWVhScGIyNWNiaUFxSUNBZ1lXNWtMMjl5SUc5MGFHVnlJRzFoZEdWeWFXRnNjeUJ3Y205MmFXUmxaQ0IzYVhSb0lIUm9aU0JrYVhOMGNtbGlkWFJwYjI0dVhHNGdLbHh1SUNvZ0tpQk9aV2wwYUdWeUlIUm9aU0J1WVcxbElHOW1JSFJvWlNCamIzQjVjbWxuYUhRZ2FHOXNaR1Z5SUc1dmNpQjBhR1VnYm1GdFpYTWdiMllnYVhSelhHNGdLaUFnSUdOdmJuUnlhV0oxZEc5eWN5QnRZWGtnWW1VZ2RYTmxaQ0IwYnlCbGJtUnZjbk5sSUc5eUlIQnliMjF2ZEdVZ2NISnZaSFZqZEhNZ1pHVnlhWFpsWkNCbWNtOXRYRzRnS2lBZ0lIUm9hWE1nYzI5bWRIZGhjbVVnZDJsMGFHOTFkQ0J6Y0dWamFXWnBZeUJ3Y21sdmNpQjNjbWwwZEdWdUlIQmxjbTFwYzNOcGIyNHVYRzRnS2x4dUlDb2dWRWhKVXlCVFQwWlVWMEZTUlNCSlV5QlFVazlXU1VSRlJDQkNXU0JVU0VVZ1EwOVFXVkpKUjBoVUlFaFBURVJGVWxNZ1FVNUVJRU5QVGxSU1NVSlZWRTlTVXlCY0lrRlRJRWxUWENKY2JpQXFJRUZPUkNCQlRsa2dSVmhRVWtWVFV5QlBVaUJKVFZCTVNVVkVJRmRCVWxKQlRsUkpSVk1zSUVsT1EweFZSRWxPUnl3Z1FsVlVJRTVQVkNCTVNVMUpWRVZFSUZSUExDQlVTRVZjYmlBcUlFbE5VRXhKUlVRZ1YwRlNVa0ZPVkVsRlV5QlBSaUJOUlZKRFNFRk9WRUZDU1V4SlZGa2dRVTVFSUVaSlZFNUZVMU1nUms5U0lFRWdVRUZTVkVsRFZVeEJVaUJRVlZKUVQxTkZJRUZTUlZ4dUlDb2dSRWxUUTB4QlNVMUZSQzRnU1U0Z1RrOGdSVlpGVGxRZ1UwaEJURXdnVkVoRklFTlBVRmxTU1VkSVZDQklUMHhFUlZJZ1QxSWdRMDlPVkZKSlFsVlVUMUpUSUVKRklFeEpRVUpNUlZ4dUlDb2dSazlTSUVGT1dTQkVTVkpGUTFRc0lFbE9SRWxTUlVOVUxDQkpUa05KUkVWT1ZFRk1MQ0JUVUVWRFNVRk1MQ0JGV0VWTlVFeEJVbGtzSUU5U0lFTlBUbE5GVVZWRlRsUkpRVXhjYmlBcUlFUkJUVUZIUlZNZ0tFbE9RMHhWUkVsT1J5d2dRbFZVSUU1UFZDQk1TVTFKVkVWRUlGUlBMQ0JRVWs5RFZWSkZUVVZPVkNCUFJpQlRWVUpUVkVsVVZWUkZJRWRQVDBSVElFOVNYRzRnS2lCVFJWSldTVU5GVXpzZ1RFOVRVeUJQUmlCVlUwVXNJRVJCVkVFc0lFOVNJRkJTVDBaSlZGTTdJRTlTSUVKVlUwbE9SVk5USUVsT1ZFVlNVbFZRVkVsUFRpa2dTRTlYUlZaRlVseHVJQ29nUTBGVlUwVkVJRUZPUkNCUFRpQkJUbGtnVkVoRlQxSlpJRTlHSUV4SlFVSkpURWxVV1N3Z1YwaEZWRWhGVWlCSlRpQkRUMDVVVWtGRFZDd2dVMVJTU1VOVUlFeEpRVUpKVEVsVVdTeGNiaUFxSUU5U0lGUlBVbFFnS0VsT1EweFZSRWxPUnlCT1JVZE1TVWRGVGtORklFOVNJRTlVU0VWU1YwbFRSU2tnUVZKSlUwbE9SeUJKVGlCQlRsa2dWMEZaSUU5VlZDQlBSaUJVU0VVZ1ZWTkZYRzRnS2lCUFJpQlVTRWxUSUZOUFJsUlhRVkpGTENCRlZrVk9JRWxHSUVGRVZrbFRSVVFnVDBZZ1ZFaEZJRkJQVTFOSlFrbE1TVlJaSUU5R0lGTlZRMGdnUkVGTlFVZEZMbHh1SUNvdlhHNWNibWx0Y0c5eWRDQXFJR0Z6SUhWMGFXeHpJR1p5YjIwZ0p5NHZkWFJwYkhNbk8xeHVhVzF3YjNKMElIdFNZVzVrYjIxR2Jpd2dWbVZqZEc5eWZTQm1jbTl0SUNjdUwzVnRZWEFuTzF4dVhHNHZLaXBjYmlBcUlGUnlaV1VnWm5WdVkzUnBiMjVoYkdsMGVTQm1iM0lnWVhCd2NtOTRhVzFoZEdsdVp5QnVaV0Z5WlhOMElHNWxhV2RvWW05eWMxeHVJQ292WEc1cGJuUmxjbVpoWTJVZ1VtRnVaRzl0VUhKdmFtVmpkR2x2YmxSeVpXVk9iMlJsSUh0Y2JpQWdhWE5NWldGbU9pQmliMjlzWldGdU8xeHVJQ0JwYm1ScFkyVnpQem9nYm5WdFltVnlXMTA3WEc0Z0lHeGxablJEYUdsc1pEODZJRkpoYm1SdmJWQnliMnBsWTNScGIyNVVjbVZsVG05a1pUdGNiaUFnY21sbmFIUkRhR2xzWkQ4NklGSmhibVJ2YlZCeWIycGxZM1JwYjI1VWNtVmxUbTlrWlR0Y2JpQWdhSGx3WlhKd2JHRnVaVDg2SUc1MWJXSmxjanRjYmlBZ2IyWm1jMlYwUHpvZ2JuVnRZbVZ5TzF4dWZWeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1JteGhkRlJ5WldVZ2UxeHVJQ0JqYjI1emRISjFZM1J2Y2loY2JpQWdJQ0J3ZFdKc2FXTWdhSGx3WlhKd2JHRnVaWE02SUc1MWJXSmxjbHRkTEZ4dUlDQWdJSEIxWW14cFl5QnZabVp6WlhSek9pQnVkVzFpWlhKYlhTeGNiaUFnSUNCd2RXSnNhV01nWTJocGJHUnlaVzQ2SUc1MWJXSmxjbHRkVzEwc1hHNGdJQ0FnY0hWaWJHbGpJR2x1WkdsalpYTTZJRzUxYldKbGNsdGRXMTFjYmlBZ0tTQjdmVnh1ZlZ4dVhHNHZLaXBjYmlBcUlFSjFhV3hrSUdFZ2NtRnVaRzl0SUhCeWIycGxZM1JwYjI0Z1ptOXlaWE4wSUhkcGRHZ2dZR0J1VkhKbFpYTmdZQzVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHMWhhMlZHYjNKbGMzUW9YRzRnSUdSaGRHRTZJRlpsWTNSdmNpeGNiaUFnYms1bGFXZG9ZbTl5Y3pvZ2JuVnRZbVZ5TEZ4dUlDQnVWSEpsWlhNNklHNTFiV0psY2l4Y2JpQWdjbUZ1Wkc5dE9pQlNZVzVrYjIxR2JseHVLU0I3WEc0Z0lHTnZibk4wSUd4bFlXWlRhWHBsSUQwZ1RXRjBhQzV0WVhnb01UQXNJRzVPWldsbmFHSnZjbk1wTzF4dVhHNGdJR052Ym5OMElIUnlaV1Z6SUQwZ2RYUnBiSE5jYmlBZ0lDQXVjbUZ1WjJVb2JsUnlaV1Z6S1Z4dUlDQWdJQzV0WVhBb0tGOHNJR2twSUQwK0lHMWhhMlZVY21WbEtHUmhkR0VzSUd4bFlXWlRhWHBsTENCcExDQnlZVzVrYjIwcEtUdGNiaUFnWTI5dWMzUWdabTl5WlhOMElEMGdkSEpsWlhNdWJXRndLQ2gwY21WbEtTQTlQaUJtYkdGMGRHVnVWSEpsWlNoMGNtVmxMQ0JzWldGbVUybDZaU2twTzF4dVhHNGdJSEpsZEhWeWJpQm1iM0psYzNRN1hHNTlYRzVjYmk4cUtseHVJQ29nUTI5dWMzUnlkV04wSUdFZ2NtRnVaRzl0SUhCeWIycGxZM1JwYjI0Z2RISmxaU0JpWVhObFpDQnZiaUJnWUdSaGRHRmdZQ0IzYVhSb0lHeGxZWFpsYzF4dUlDb2diMllnYzJsNlpTQmhkQ0J0YjNOMElHQmdiR1ZoWmxOcGVtVmdZRnh1SUNvdlhHNW1kVzVqZEdsdmJpQnRZV3RsVkhKbFpTaGNiaUFnWkdGMFlUb2dWbVZqZEc5eUxGeHVJQ0JzWldGbVUybDZaU0E5SURNd0xGeHVJQ0J1T2lCdWRXMWlaWElzWEc0Z0lISmhibVJ2YlRvZ1VtRnVaRzl0Um01Y2JpazZJRkpoYm1SdmJWQnliMnBsWTNScGIyNVVjbVZsVG05a1pTQjdYRzRnSUdOdmJuTjBJR2x1WkdsalpYTWdQU0IxZEdsc2N5NXlZVzVuWlNoa1lYUmhMbXhsYm1kMGFDazdYRzRnSUdOdmJuTjBJSFJ5WldVZ1BTQnRZV3RsUlhWamJHbGtaV0Z1VkhKbFpTaGtZWFJoTENCcGJtUnBZMlZ6TENCc1pXRm1VMmw2WlN3Z2Jpd2djbUZ1Wkc5dEtUdGNiaUFnY21WMGRYSnVJSFJ5WldVN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUcxaGEyVkZkV05zYVdSbFlXNVVjbVZsS0Z4dUlDQmtZWFJoT2lCV1pXTjBiM0lzWEc0Z0lHbHVaR2xqWlhNNklHNTFiV0psY2x0ZExGeHVJQ0JzWldGbVUybDZaU0E5SURNd0xGeHVJQ0J4T2lCdWRXMWlaWElzWEc0Z0lISmhibVJ2YlRvZ1VtRnVaRzl0Um01Y2JpazZJRkpoYm1SdmJWQnliMnBsWTNScGIyNVVjbVZsVG05a1pTQjdYRzRnSUdsbUlDaHBibVJwWTJWekxteGxibWQwYUNBK0lHeGxZV1pUYVhwbEtTQjdYRzRnSUNBZ1kyOXVjM1FnYzNCc2FYUlNaWE4xYkhSeklEMGdaWFZqYkdsa1pXRnVVbUZ1Wkc5dFVISnZhbVZqZEdsdmJsTndiR2wwS0dSaGRHRXNJR2x1WkdsalpYTXNJSEpoYm1SdmJTazdYRzRnSUNBZ1kyOXVjM1FnZTJsdVpHbGpaWE5NWldaMExDQnBibVJwWTJWelVtbG5hSFFzSUdoNWNHVnljR3hoYm1Vc0lHOW1abk5sZEgwZ1BTQnpjR3hwZEZKbGMzVnNkSE03WEc1Y2JpQWdJQ0JqYjI1emRDQnNaV1owUTJocGJHUWdQU0J0WVd0bFJYVmpiR2xrWldGdVZISmxaU2hjYmlBZ0lDQWdJR1JoZEdFc1hHNGdJQ0FnSUNCcGJtUnBZMlZ6VEdWbWRDeGNiaUFnSUNBZ0lHeGxZV1pUYVhwbExGeHVJQ0FnSUNBZ2NTQXJJREVzWEc0Z0lDQWdJQ0J5WVc1a2IyMWNiaUFnSUNBcE8xeHVJQ0FnSUdOdmJuTjBJSEpwWjJoMFEyaHBiR1FnUFNCdFlXdGxSWFZqYkdsa1pXRnVWSEpsWlNoY2JpQWdJQ0FnSUdSaGRHRXNYRzRnSUNBZ0lDQnBibVJwWTJWelVtbG5hSFFzWEc0Z0lDQWdJQ0JzWldGbVUybDZaU3hjYmlBZ0lDQWdJSEVnS3lBeExGeHVJQ0FnSUNBZ2NtRnVaRzl0WEc0Z0lDQWdLVHRjYmx4dUlDQWdJR052Ym5OMElHNXZaR1VnUFNCN2JHVm1kRU5vYVd4a0xDQnlhV2RvZEVOb2FXeGtMQ0JwYzB4bFlXWTZJR1poYkhObExDQm9lWEJsY25Cc1lXNWxMQ0J2Wm1aelpYUjlPMXh1SUNBZ0lISmxkSFZ5YmlCdWIyUmxPMXh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJR052Ym5OMElHNXZaR1VnUFNCN2FXNWthV05sY3l3Z2FYTk1aV0ZtT2lCMGNuVmxmVHRjYmlBZ0lDQnlaWFIxY200Z2JtOWtaVHRjYmlBZ2ZWeHVmVnh1WEc0dktpcGNiaUFxSUVkcGRtVnVJR0VnYzJWMElHOW1JR0JnYVc1a2FXTmxjMkJnSUdadmNpQmtZWFJoSUhCdmFXNTBjeUJtY205dElHQmdaR0YwWVdCZ0xDQmpjbVZoZEdWY2JpQXFJR0VnY21GdVpHOXRJR2g1Y0dWeWNHeGhibVVnZEc4Z2MzQnNhWFFnZEdobElHUmhkR0VzSUhKbGRIVnlibWx1WnlCMGQyOGdZWEp5WVhseklHbHVaR2xqWlhOY2JpQXFJSFJvWVhRZ1ptRnNiQ0J2YmlCbGFYUm9aWElnYzJsa1pTQnZaaUIwYUdVZ2FIbHdaWEp3YkdGdVpTNGdWR2hwY3lCcGN5QjBhR1VnWW1GemFYTWdabTl5SUdGY2JpQXFJSEpoYm1SdmJTQndjbTlxWldOMGFXOXVJSFJ5WldVc0lIZG9hV05vSUhOcGJYQnNlU0IxYzJWeklIUm9hWE1nYzNCc2FYUjBhVzVuSUhKbFkzVnljMmwyWld4NUxseHVJQ29nVkdocGN5QndZWEowYVdOMWJHRnlJSE53YkdsMElIVnpaWE1nWlhWamJHbGtaV0Z1SUdScGMzUmhibU5sSUhSdklHUmxkR1Z5YldsdVpTQjBhR1VnYUhsd1pYSndiR0Z1WlZ4dUlDb2dZVzVrSUhkb2FXTm9JSE5wWkdVZ1pXRmphQ0JrWVhSaElITmhiWEJzWlNCbVlXeHNjeUJ2Ymk1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnWlhWamJHbGtaV0Z1VW1GdVpHOXRVSEp2YW1WamRHbHZibE53YkdsMEtGeHVJQ0JrWVhSaE9pQldaV04wYjNJc1hHNGdJR2x1WkdsalpYTTZJRzUxYldKbGNsdGRMRnh1SUNCeVlXNWtiMjA2SUZKaGJtUnZiVVp1WEc0cElIdGNiaUFnTHk5amIyNXpkQ0JrYVcwZ1BTQXhPMXh1WEc0Z0lDOHZJRk5sYkdWamRDQjBkMjhnY21GdVpHOXRJSEJ2YVc1MGN5d2djMlYwSUhSb1pTQm9lWEJsY25Cc1lXNWxJR0psZEhkbFpXNGdkR2hsYlZ4dUlDQmpiMjV6ZENCc1pXWjBTVzVrWlhnZ1BTQjFkR2xzY3k1MFlYVlNZVzVrU1c1MEtHbHVaR2xqWlhNdWJHVnVaM1JvTENCeVlXNWtiMjBwTzF4dUlDQnNaWFFnY21sbmFIUkpibVJsZUNBOUlIVjBhV3h6TG5SaGRWSmhibVJKYm5Rb2FXNWthV05sY3k1c1pXNW5kR2dzSUhKaGJtUnZiU2s3WEc0Z0lISnBaMmgwU1c1a1pYZ2dLejBnYkdWbWRFbHVaR1Y0SUQwOVBTQnlhV2RvZEVsdVpHVjRJRDhnTVNBNklEQTdYRzRnSUhKcFoyaDBTVzVrWlhnZ1BTQnlhV2RvZEVsdVpHVjRJQ1VnYVc1a2FXTmxjeTVzWlc1bmRHZzdYRzRnSUdOdmJuTjBJR3hsWm5RZ1BTQnBibVJwWTJWelcyeGxablJKYm1SbGVGMDdYRzRnSUdOdmJuTjBJSEpwWjJoMElEMGdhVzVrYVdObGMxdHlhV2RvZEVsdVpHVjRYVHRjYmx4dUlDQXZMeUJEYjIxd2RYUmxJSFJvWlNCdWIzSnRZV3dnZG1WamRHOXlJSFJ2SUhSb1pTQm9lWEJsY25Cc1lXNWxJQ2gwYUdVZ2RtVmpkRzl5SUdKbGRIZGxaVzRnZEdobElIUjNiMXh1SUNBdkx5QndiMmx1ZEhNcElHRnVaQ0IwYUdVZ2IyWm1jMlYwSUdaeWIyMGdkR2hsSUc5eWFXZHBibHh1SUNCc1pYUWdhSGx3WlhKd2JHRnVaVTltWm5ObGRDQTlJREE3WEc0Z0lHeGxkQ0JvZVhCbGNuQnNZVzVsVm1WamRHOXlJRDBnTUR0Y2JseHVYRzRnSUdoNWNHVnljR3hoYm1WV1pXTjBiM0lnUFNCa1lYUmhXMnhsWm5SZElDMGdaR0YwWVZ0eWFXZG9kRjA3WEc0Z0lHaDVjR1Z5Y0d4aGJtVlBabVp6WlhRZ0xUMWNiaUFnSUNBb2FIbHdaWEp3YkdGdVpWWmxZM1J2Y2lBcUlDaGtZWFJoVzJ4bFpuUmRJQ3NnWkdGMFlWdHlhV2RvZEYwcEtTQXZJREl1TUR0Y2JseHVYRzRnSUM4dklFWnZjaUJsWVdOb0lIQnZhVzUwSUdOdmJYQjFkR1VnZEdobElHMWhjbWRwYmlBb2NISnZhbVZqZENCcGJuUnZJRzV2Y20xaGJDQjJaV04wYjNJcFhHNGdJQzh2SUVsbUlIZGxJR0Z5WlNCdmJpQnNiM2RsY2lCemFXUmxJRzltSUhSb1pTQm9lWEJsY25Cc1lXNWxJSEIxZENCcGJpQnZibVVnY0dsc1pTd2diM1JvWlhKM2FYTmxYRzRnSUM4dklIQjFkQ0JwZENCcGJpQjBhR1VnYjNSb1pYSWdjR2xzWlNBb2FXWWdkMlVnYUdsMElHaDVjR1Z5Y0d4aGJtVWdiMjRnZEdobElHNXZjMlVzSUdac2FYQWdZU0JqYjJsdUtWeHVJQ0JzWlhRZ2JreGxablFnUFNBd08xeHVJQ0JzWlhRZ2JsSnBaMmgwSUQwZ01EdGNiaUFnWTI5dWMzUWdjMmxrWlNBOUlIVjBhV3h6TG5wbGNtOXpLR2x1WkdsalpYTXViR1Z1WjNSb0tUdGNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCcGJtUnBZMlZ6TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ2JHVjBJRzFoY21kcGJpQTlJR2g1Y0dWeWNHeGhibVZQWm1aelpYUTdYRzVjYmlBZ0lDQnRZWEpuYVc0Z0t6MGdhSGx3WlhKd2JHRnVaVlpsWTNSdmNpQXFJR1JoZEdGYmFXNWthV05sYzF0cFhWMDdYRzVjYmlBZ0lDQnBaaUFvYldGeVoybHVJRDA5UFNBd0tTQjdYRzRnSUNBZ0lDQnphV1JsVzJsZElEMGdkWFJwYkhNdWRHRjFVbUZ1WkVsdWRDZ3lMQ0J5WVc1a2IyMHBPMXh1SUNBZ0lDQWdhV1lnS0hOcFpHVmJhVjBnUFQwOUlEQXBYRzRnSUNBZ0lDQWdJRzVNWldaMElDczlJREU3WEc0Z0lDQWdJQ0JsYkhObFhHNGdJQ0FnSUNBZ0lHNVNhV2RvZENBclBTQXhPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9iV0Z5WjJsdUlENGdNQ2tnZTF4dUlDQWdJQ0FnYzJsa1pWdHBYU0E5SURBN1hHNGdJQ0FnSUNCdVRHVm1kQ0FyUFNBeE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0J6YVdSbFcybGRJRDBnTVR0Y2JpQWdJQ0FnSUc1U2FXZG9kQ0FyUFNBeE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lDOHZJRTV2ZHlCMGFHRjBJSGRsSUdoaGRtVWdkR2hsSUdOdmRXNTBjeXdnWVd4c2IyTmhkR1VnWVhKeVlYbHpYRzRnSUdOdmJuTjBJR2x1WkdsalpYTk1aV1owSUQwZ2RYUnBiSE11ZW1WeWIzTW9ia3hsWm5RcE8xeHVJQ0JqYjI1emRDQnBibVJwWTJWelVtbG5hSFFnUFNCMWRHbHNjeTU2WlhKdmN5aHVVbWxuYUhRcE8xeHVYRzRnSUM4dklGQnZjSFZzWVhSbElIUm9aU0JoY25KaGVYTWdkMmwwYUNCcGJtUnBZMlZ6SUdGalkyOXlaR2x1WnlCMGJ5QjNhR2xqYUNCemFXUmxJSFJvWlhrZ1ptVnNiQ0J2Ymx4dUlDQnVUR1ZtZENBOUlEQTdYRzRnSUc1U2FXZG9kQ0E5SURBN1hHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnYzJsa1pTNXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJR2xtSUNoemFXUmxXMmxkSUQwOVBTQXdLU0I3WEc0Z0lDQWdJQ0JwYm1ScFkyVnpUR1ZtZEZ0dVRHVm1kRjBnUFNCcGJtUnBZMlZ6VzJsZE8xeHVJQ0FnSUNBZ2JreGxablFnS3owZ01UdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnYVc1a2FXTmxjMUpwWjJoMFcyNVNhV2RvZEYwZ1BTQnBibVJwWTJWelcybGRPMXh1SUNBZ0lDQWdibEpwWjJoMElDczlJREU3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnY21WMGRYSnVJSHRjYmlBZ0lDQnBibVJwWTJWelRHVm1kQ3hjYmlBZ0lDQnBibVJwWTJWelVtbG5hSFFzWEc0Z0lDQWdhSGx3WlhKd2JHRnVaVG9nYUhsd1pYSndiR0Z1WlZabFkzUnZjaXhjYmlBZ0lDQnZabVp6WlhRNklHaDVjR1Z5Y0d4aGJtVlBabVp6WlhRc1hHNGdJSDA3WEc1OVhHNWNibVoxYm1OMGFXOXVJR1pzWVhSMFpXNVVjbVZsS0hSeVpXVTZJRkpoYm1SdmJWQnliMnBsWTNScGIyNVVjbVZsVG05a1pTd2diR1ZoWmxOcGVtVTZJRzUxYldKbGNpa2dlMXh1SUNCamIyNXpkQ0J1VG05a1pYTWdQU0J1ZFcxT2IyUmxjeWgwY21WbEtUdGNiaUFnWTI5dWMzUWdia3hsWVhabGN5QTlJRzUxYlV4bFlYWmxjeWgwY21WbEtUdGNibHh1SUNBdkx5QlVUMFJQT2lCV1pYSnBabmtnZEdoaGRDQnpjR0Z5YzJVZ1kyOWtaU0JwY3lCdWIzUWdjbVZzWlhaaGJuUXVMaTVjYmlBZ1kyOXVjM1FnYUhsd1pYSndiR0Z1WlhNZ1BTQjFkR2xzYzF4dUlDQWdJQzV5WVc1blpTaHVUbTlrWlhNcFhHNGdJQ0FnTG0xaGNDZ29LU0E5UGlCMGNtVmxMbWg1Y0dWeWNHeGhibVVnUHlBeElEb2dNQ2s3WEc1Y2JpQWdZMjl1YzNRZ2IyWm1jMlYwY3lBOUlIVjBhV3h6TG5wbGNtOXpLRzVPYjJSbGN5azdYRzRnSUdOdmJuTjBJR05vYVd4a2NtVnVJRDBnZFhScGJITXVjbUZ1WjJVb2JrNXZaR1Z6S1M1dFlYQW9LQ2tnUFQ0Z1d5MHhMQ0F0TVYwcE8xeHVJQ0JqYjI1emRDQnBibVJwWTJWeklEMGdkWFJwYkhOY2JpQWdJQ0F1Y21GdVoyVW9ia3hsWVhabGN5bGNiaUFnSUNBdWJXRndLQ2dwSUQwK0lIVjBhV3h6TG5KaGJtZGxLR3hsWVdaVGFYcGxLUzV0WVhBb0tDa2dQVDRnTFRFcEtUdGNiaUFnY21WamRYSnphWFpsUm14aGRIUmxiaWgwY21WbExDQm9lWEJsY25Cc1lXNWxjeXdnYjJabWMyVjBjeXdnWTJocGJHUnlaVzRzSUdsdVpHbGpaWE1zSURBc0lEQXBPMXh1SUNCeVpYUjFjbTRnYm1WM0lFWnNZWFJVY21WbEtHaDVjR1Z5Y0d4aGJtVnpMQ0J2Wm1aelpYUnpMQ0JqYUdsc1pISmxiaXdnYVc1a2FXTmxjeWs3WEc1OVhHNWNibVoxYm1OMGFXOXVJSEpsWTNWeWMybDJaVVpzWVhSMFpXNG9YRzRnSUhSeVpXVTZJRkpoYm1SdmJWQnliMnBsWTNScGIyNVVjbVZsVG05a1pTeGNiaUFnYUhsd1pYSndiR0Z1WlhNNklHNTFiV0psY2x0ZExGeHVJQ0J2Wm1aelpYUnpPaUJ1ZFcxaVpYSmJYU3hjYmlBZ1kyaHBiR1J5Wlc0NklHNTFiV0psY2x0ZFcxMHNYRzRnSUdsdVpHbGpaWE02SUc1MWJXSmxjbHRkVzEwc1hHNGdJRzV2WkdWT2RXMDZJRzUxYldKbGNpeGNiaUFnYkdWaFprNTFiVG9nYm5WdFltVnlYRzRwT2lCN0lHNXZaR1ZPZFcwNklHNTFiV0psY2pzZ2JHVmhaazUxYlRvZ2JuVnRZbVZ5SUgwZ2UxeHVJQ0JwWmlBb2RISmxaUzVwYzB4bFlXWXBJSHRjYmlBZ0lDQmphR2xzWkhKbGJsdHViMlJsVG5WdFhWc3dYU0E5SUMxc1pXRm1UblZ0TzF4dVhHNGdJQ0FnTHk4Z1ZFOUVUem9nVkhKcGNHeGxJR05vWldOcklIUm9hWE1nYjNCbGNtRjBhVzl1SUdOdmNuSmxjM0J2Ym1SeklIUnZYRzRnSUNBZ0x5OGdhVzVrYVdObGMxdHNaV0ZtVG5WdElEb2dkSEpsWlM1cGJtUnBZMlZ6TG5Ob1lYQmxXekJkWFNBOUlIUnlaV1V1YVc1a2FXTmxjMXh1SUNBZ0lHbHVaR2xqWlhOYmJHVmhaazUxYlYwdWMzQnNhV05sS0RBc0lIUnlaV1V1YVc1a2FXTmxjeUV1YkdWdVozUm9MQ0F1TGk1MGNtVmxMbWx1WkdsalpYTWhLVHRjYmlBZ0lDQnNaV0ZtVG5WdElDczlJREU3WEc0Z0lDQWdjbVYwZFhKdUlIdHViMlJsVG5WdExDQnNaV0ZtVG5WdGZUdGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQm9lWEJsY25Cc1lXNWxjMXR1YjJSbFRuVnRYU0E5SUhSeVpXVXVhSGx3WlhKd2JHRnVaU0U3WEc0Z0lDQWdiMlptYzJWMGMxdHViMlJsVG5WdFhTQTlJSFJ5WldVdWIyWm1jMlYwSVR0Y2JpQWdJQ0JqYUdsc1pISmxibHR1YjJSbFRuVnRYVnN3WFNBOUlHNXZaR1ZPZFcwZ0t5QXhPMXh1SUNBZ0lHTnZibk4wSUc5c1pFNXZaR1ZPZFcwZ1BTQnViMlJsVG5WdE8xeHVYRzRnSUNBZ2JHVjBJSEpsY3lBOUlISmxZM1Z5YzJsMlpVWnNZWFIwWlc0b1hHNGdJQ0FnSUNCMGNtVmxMbXhsWm5SRGFHbHNaQ0VzWEc0Z0lDQWdJQ0JvZVhCbGNuQnNZVzVsY3l4Y2JpQWdJQ0FnSUc5bVpuTmxkSE1zWEc0Z0lDQWdJQ0JqYUdsc1pISmxiaXhjYmlBZ0lDQWdJR2x1WkdsalpYTXNYRzRnSUNBZ0lDQnViMlJsVG5WdElDc2dNU3hjYmlBZ0lDQWdJR3hsWVdaT2RXMWNiaUFnSUNBcE8xeHVJQ0FnSUc1dlpHVk9kVzBnUFNCeVpYTXVibTlrWlU1MWJUdGNiaUFnSUNCc1pXRm1UblZ0SUQwZ2NtVnpMbXhsWVdaT2RXMDdYRzVjYmlBZ0lDQmphR2xzWkhKbGJsdHZiR1JPYjJSbFRuVnRYVnN4WFNBOUlHNXZaR1ZPZFcwZ0t5QXhPMXh1WEc0Z0lDQWdjbVZ6SUQwZ2NtVmpkWEp6YVhabFJteGhkSFJsYmloY2JpQWdJQ0FnSUhSeVpXVXVjbWxuYUhSRGFHbHNaQ0VzWEc0Z0lDQWdJQ0JvZVhCbGNuQnNZVzVsY3l4Y2JpQWdJQ0FnSUc5bVpuTmxkSE1zWEc0Z0lDQWdJQ0JqYUdsc1pISmxiaXhjYmlBZ0lDQWdJR2x1WkdsalpYTXNYRzRnSUNBZ0lDQnViMlJsVG5WdElDc2dNU3hjYmlBZ0lDQWdJR3hsWVdaT2RXMWNiaUFnSUNBcE8xeHVJQ0FnSUhKbGRIVnliaUI3Ym05a1pVNTFiVG9nY21WekxtNXZaR1ZPZFcwc0lHeGxZV1pPZFcwNklISmxjeTVzWldGbVRuVnRmVHRjYmlBZ2ZWeHVmVnh1WEc1bWRXNWpkR2x2YmlCdWRXMU9iMlJsY3loMGNtVmxPaUJTWVc1a2IyMVFjbTlxWldOMGFXOXVWSEpsWlU1dlpHVXBPaUJ1ZFcxaVpYSWdlMXh1SUNCcFppQW9kSEpsWlM1cGMweGxZV1lwWEc0Z0lDQWdjbVYwZFhKdUlERTdYRzRnSUdWc2MyVmNiaUFnSUNCeVpYUjFjbTRnTVNBcklHNTFiVTV2WkdWektIUnlaV1V1YkdWbWRFTm9hV3hrSVNrZ0t5QnVkVzFPYjJSbGN5aDBjbVZsTG5KcFoyaDBRMmhwYkdRaEtUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z2JuVnRUR1ZoZG1WektIUnlaV1U2SUZKaGJtUnZiVkJ5YjJwbFkzUnBiMjVVY21WbFRtOWtaU2s2SUc1MWJXSmxjaUI3WEc0Z0lHbG1JQ2gwY21WbExtbHpUR1ZoWmlsY2JpQWdJQ0J5WlhSMWNtNGdNVHRjYmlBZ1pXeHpaVnh1SUNBZ0lISmxkSFZ5YmlCdWRXMU1aV0YyWlhNb2RISmxaUzVzWldaMFEyaHBiR1FoS1NBcklHNTFiVXhsWVhabGN5aDBjbVZsTG5KcFoyaDBRMmhwYkdRaEtUdGNibjFjYmx4dUx5b3FYRzRnS2lCSFpXNWxjbUYwWlNCaGJpQmhjbkpoZVNCdlppQnpaWFJ6SUc5bUlHTmhibVJwWkdGMFpTQnVaV0Z5WlhOMElHNWxhV2RvWW05eWN5QmllVnh1SUNvZ1kyOXVjM1J5ZFdOMGFXNW5JR0VnY21GdVpHOXRJSEJ5YjJwbFkzUnBiMjRnWm05eVpYTjBJR0Z1WkNCMFlXdHBibWNnZEdobElHeGxZWFpsY3lCdlppQmhiR3dnZEdobFhHNGdLaUIwY21WbGN5NGdRVzU1SUdkcGRtVnVJSFJ5WldVZ2FHRnpJR3hsWVhabGN5QjBhR0YwSUdGeVpTQmhJSE5sZENCdlppQndiM1JsYm5ScFlXd2dibVZoY21WemRGeHVJQ29nYm1WcFoyaGliM0p6TGlCSGFYWmxiaUJsYm05MVoyZ2dkSEpsWlhNZ2RHaGxJSE5sZENCdlppQmhiR3dnYzNWamFDQnNaV0YyWlhNZ1oybDJaWE1nWVNCbmIyOWtYRzRnS2lCc2FXdGxiR2xvYjI5a0lHOW1JR2RsZEhScGJtY2dZU0JuYjI5a0lITmxkQ0J2WmlCdVpXRnlaWE4wSUc1bGFXZG9ZbTl5Y3lCcGJpQmpiMjF3YjNOcGRHVXVJRk5wYm1ObFhHNGdLaUJ6ZFdOb0lHRWdjbUZ1Wkc5dElIQnliMnBsWTNScGIyNGdabTl5WlhOMElHbHpJR2x1Wlhod1pXNXphWFpsSUhSdklHTnZiWEIxZEdVc0lIUm9hWE1nWTJGdUlHSmxJR0ZjYmlBcUlIVnpaV1oxYkNCdFpXRnVjeUJ2WmlCelpXVmthVzVuSUc5MGFHVnlJRzVsWVhKbGMzUWdibVZwWjJoaWIzSWdZV3huYjNKcGRHaHRjeTVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHMWhhMlZNWldGbVFYSnlZWGtvY25CR2IzSmxjM1E2SUVac1lYUlVjbVZsVzEwcE9pQnVkVzFpWlhKYlhWdGRJSHRjYmlBZ2FXWWdLSEp3Um05eVpYTjBMbXhsYm1kMGFDQStJREFwSUh0Y2JpQWdJQ0JqYjI1emRDQnZkWFJ3ZFhRNklHNTFiV0psY2x0ZFcxMGdQU0JiWFR0Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUhSeVpXVWdiMllnY25CR2IzSmxjM1FwWEc0Z0lDQWdJQ0J2ZFhSd2RYUXVjSFZ6YUNndUxpNTBjbVZsTG1sdVpHbGpaWE1oS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUJ2ZFhSd2RYUTdYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdjbVYwZFhKdUlGdGJMVEZkWFR0Y2JpQWdmVnh1ZlZ4dVhHNHZLaXBjYmlBcUlGTmxiR1ZqZEhNZ2RHaGxJSE5wWkdVZ2IyWWdkR2hsSUhSeVpXVWdkRzhnYzJWaGNtTm9JR1IxY21sdVp5Qm1iR0YwSUhSeVpXVWdjMlZoY21Ob0xseHVJQ292WEc1bWRXNWpkR2x2YmlCelpXeGxZM1JUYVdSbEtGeHVJQ0JvZVhCbGNuQnNZVzVsT2lCdWRXMWlaWElzWEc0Z0lHOW1abk5sZERvZ2JuVnRZbVZ5TEZ4dUlDQndiMmx1ZERvZ2JuVnRZbVZ5TEZ4dUlDQnlZVzVrYjIwNklGSmhibVJ2YlVadVhHNHBJSHRjYmlBZ2JHVjBJRzFoY21kcGJpQTlJRzltWm5ObGREdGNibHh1SUNCdFlYSm5hVzRnS3owZ2FIbHdaWEp3YkdGdVpTQXFJSEJ2YVc1ME8xeHVYRzVjYmlBZ2FXWWdLRzFoY21kcGJpQTlQVDBnTUNrZ2UxeHVJQ0FnSUdOdmJuTjBJSE5wWkdVZ1BTQjFkR2xzY3k1MFlYVlNZVzVrU1c1MEtESXNJSEpoYm1SdmJTazdYRzRnSUNBZ2NtVjBkWEp1SUhOcFpHVTdYRzRnSUgwZ1pXeHpaU0JwWmlBb2JXRnlaMmx1SUQ0Z01Da2dlMXh1SUNBZ0lISmxkSFZ5YmlBd08xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lISmxkSFZ5YmlBeE8xeHVJQ0I5WEc1OVhHNWNiaThxS2x4dUlDb2dVMlZoY21Ob1pYTWdZU0JtYkdGMGRHVnVaV1FnY25BdGRISmxaU0JtYjNJZ1lTQndiMmx1ZEM1Y2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSE5sWVhKamFFWnNZWFJVY21WbEtGeHVJQ0J3YjJsdWREb2diblZ0WW1WeUxGeHVJQ0IwY21WbE9pQkdiR0YwVkhKbFpTeGNiaUFnY21GdVpHOXRPaUJTWVc1a2IyMUdibHh1S1NCN1hHNGdJR3hsZENCdWIyUmxJRDBnTUR0Y2JpQWdkMmhwYkdVZ0tIUnlaV1V1WTJocGJHUnlaVzViYm05a1pWMWJNRjBnUGlBd0tTQjdYRzRnSUNBZ1kyOXVjM1FnYzJsa1pTQTlJSE5sYkdWamRGTnBaR1VvWEc0Z0lDQWdJQ0IwY21WbExtaDVjR1Z5Y0d4aGJtVnpXMjV2WkdWZExGeHVJQ0FnSUNBZ2RISmxaUzV2Wm1aelpYUnpXMjV2WkdWZExGeHVJQ0FnSUNBZ2NHOXBiblFzWEc0Z0lDQWdJQ0J5WVc1a2IyMWNiaUFnSUNBcE8xeHVJQ0FnSUdsbUlDaHphV1JsSUQwOVBTQXdLVnh1SUNBZ0lDQWdibTlrWlNBOUlIUnlaV1V1WTJocGJHUnlaVzViYm05a1pWMWJNRjA3WEc0Z0lDQWdaV3h6WlZ4dUlDQWdJQ0FnYm05a1pTQTlJSFJ5WldVdVkyaHBiR1J5Wlc1YmJtOWtaVjFiTVYwN1hHNGdJSDFjYmx4dUlDQmpiMjV6ZENCcGJtUmxlQ0E5SUMweElDb2dkSEpsWlM1amFHbHNaSEpsYmx0dWIyUmxYVnN3WFR0Y2JpQWdjbVYwZFhKdUlIUnlaV1V1YVc1a2FXTmxjMXRwYm1SbGVGMDdYRzU5WEc0aVhYMD0iLCIvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG4vKipcbiAqIEBsaWNlbnNlXG4gKlxuICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIExMQy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqL1xuLyoqXG4gKiBUaGlzIGlzIGEgSmF2YVNjcmlwdCByZWltcGxlbWVudGF0aW9uIG9mIFVNQVAgKG9yaWdpbmFsIGxpY2Vuc2UgYmVsb3cpLCBmcm9tXG4gKiB0aGUgcHl0aG9uIGltcGxlbWVudGF0aW9uIGZvdW5kIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9sbWNpbm5lcy91bWFwLlxuICpcbiAqIEBhdXRob3IgYW5keWNvZW5lbkBnb29nbGUuY29tIChBbmR5IENvZW5lbilcbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQlNEIDMtQ2xhdXNlIExpY2Vuc2VcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTcsIExlbGFuZCBNY0lubmVzXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG4gKlxuICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXNcbiAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKlxuICogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb25cbiAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogKiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzXG4gKiAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tXG4gKiAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCJcbiAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRVxuICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SXG4gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUlxuICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSxcbiAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFXG4gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5pbXBvcnQgKiBhcyBoZWFwIGZyb20gJy4vaGVhcCc7XG5pbXBvcnQgKiBhcyBtYXRyaXggZnJvbSAnLi9tYXRyaXgnO1xuaW1wb3J0ICogYXMgbm5EZXNjZW50IGZyb20gJy4vbm5fZGVzY2VudCc7XG5pbXBvcnQgKiBhcyB0cmVlIGZyb20gJy4vdHJlZSc7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBMTSBmcm9tICdtbC1sZXZlbmJlcmctbWFycXVhcmR0JztcbmNvbnN0IFNNT09USF9LX1RPTEVSQU5DRSA9IDFlLTU7XG5jb25zdCBNSU5fS19ESVNUX1NDQUxFID0gMWUtMztcbi8qKlxuICogVU1BUCBwcm9qZWN0aW9uIHN5c3RlbSwgYmFzZWQgb24gdGhlIHB5dGhvbiBpbXBsZW1lbnRhdGlvbiBmcm9tIE1jSW5uZXMsIEwsXG4gKiBIZWFseSwgSiwgVU1BUDogVW5pZm9ybSBNYW5pZm9sZCBBcHByb3hpbWF0aW9uIGFuZCBQcm9qZWN0aW9uIGZvciBEaW1lbnNpb25cbiAqIFJlZHVjdGlvbiAoaHR0cHM6Ly9naXRodWIuY29tL2xtY2lubmVzL3VtYXApLlxuICpcbiAqIFRoaXMgaW1wbGVtZW50YXRpb24gZGlmZmVycyBpbiBhIGZldyByZWdhcmRzOlxuICogYSkgVGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBlbWJlZGRpbmcgZm9yIG9wdGltaXphdGlvbiBpcyBub3QgY29tcHV0ZWQgdXNpbmdcbiAqICAgIGEgc3BlY3RyYWwgbWV0aG9kLCByYXRoZXIgaXQgaXMgaW5pdGlhbGl6ZWQgcmFuZG9tbHkuIFRoaXMgYXZvaWRzIHNvbWVcbiAqICAgIGNvbXB1dGF0aW9uYWxseSBpbnRlbnNpdmUgbWF0cml4IGVpZ2VuIGNvbXB1dGF0aW9ucyB0aGF0IGFyZW4ndCBlYXNpbHlcbiAqICAgIHBvcnRlZCB0byBKYXZhU2NyaXB0LlxuICogYikgQSBsb3Qgb2YgXCJleHRyYVwiIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gb21pdHRlZCBmcm9tIHRoaXMgaW1wbGVtZW50YXRpb24sXG4gKiAgICBtb3N0IG5vdGFibHkgYSBncmVhdCBkZWFsIG9mIGFsdGVybmF0ZSBkaXN0YW5jZSBmdW5jdGlvbnMuXG4gKlxuICogVGhpcyBpbXBsZW1lbnRhdGlvbiBwcm92aWRlcyB0aHJlZSBtZXRob2RzIG9mIHJlZHVjaW5nIGRpbWVuc2lvbmFsaXR5OlxuICogMSkgZml0OiBmaXQgdGhlIGRhdGEgc3luY2hyb25vdXNseVxuICogMikgZml0QXN5bmM6IGZpdCB0aGUgZGF0YSBhc3luY2hyb25vdXNseSwgd2l0aCBhIGNhbGxiYWNrIGZ1bmN0aW9uIHByb3ZpZGVkXG4gKiAgICAgIHRoYXQgaXMgaW52b2tlZCBvbiBlYWNoIG9wdGltaXphdGlvbiBzdGVwLlxuICogMykgaW5pdGlhbGl6ZUZpdCAvIHN0ZXA6IG1hbnVhbGx5IGluaXRpYWxpemUgdGhlIGFsZ29yaXRobSB0aGVuIGV4cGxpY3RseVxuICogICAgICBzdGVwIHRocm91Z2ggZWFjaCBlcG9jaCBvZiB0aGUgU0dEIG9wdGltaXphdGlvblxuICovXG5leHBvcnQgY2xhc3MgVU1BUCB7XG4gICAgZ2V0IG5laWdoYm9ycygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubk5laWdoYm9ycztcbiAgICB9XG4gICAgY29uc3RydWN0b3IocGFyYW1zID0ge30pIHtcbiAgICAgICAgdGhpcy5sZWFybmluZ1JhdGUgPSAxLjA7XG4gICAgICAgIHRoaXMubG9jYWxDb25uZWN0aXZpdHkgPSAxLjA7XG4gICAgICAgIHRoaXMubWluRGlzdCA9IDAuMTtcbiAgICAgICAgdGhpcy5uQ29tcG9uZW50cyA9IDI7XG4gICAgICAgIHRoaXMubkVwb2NocyA9IDA7XG4gICAgICAgIHRoaXMubk5laWdoYm9ycyA9IDE1O1xuICAgICAgICB0aGlzLm5lZ2F0aXZlU2FtcGxlUmF0ZSA9IDU7XG4gICAgICAgIHRoaXMucmFuZG9tID0gTWF0aC5yYW5kb207XG4gICAgICAgIHRoaXMucmVwdWxzaW9uU3RyZW5ndGggPSAxLjA7XG4gICAgICAgIHRoaXMuc2V0T3BNaXhSYXRpbyA9IDEuMDtcbiAgICAgICAgdGhpcy5zcHJlYWQgPSAxLjA7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtUXVldWVTaXplID0gNC4wO1xuICAgICAgICAvLyBTdXBlcnZpc2VkIHByb2plY3Rpb24gcGFyYW1zXG4gICAgICAgIHRoaXMudGFyZ2V0TWV0cmljID0gXCJjYXRlZ29yaWNhbFwiIC8qIFRhcmdldE1ldHJpYy5jYXRlZ29yaWNhbCAqLztcbiAgICAgICAgdGhpcy50YXJnZXRXZWlnaHQgPSAwLjU7XG4gICAgICAgIHRoaXMudGFyZ2V0Tk5laWdoYm9ycyA9IDE1O1xuICAgICAgICB0aGlzLmRpc3RhbmNlRm4gPSBudW1lcmljO1xuICAgICAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5ycEZvcmVzdCA9IFtdO1xuICAgICAgICAvLyBQcm9qZWN0ZWQgZW1iZWRkaW5nXG4gICAgICAgIHRoaXMuZW1iZWRkaW5nID0gW107XG4gICAgICAgIHRoaXMub3B0aW1pemF0aW9uU3RhdGUgPSBuZXcgT3B0aW1pemF0aW9uU3RhdGUoKTtcbiAgICAgICAgY29uc3Qgc2V0UGFyYW0gPSAoa2V5KSA9PiB7XG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICAgIGlmIChwYXJhbXNba2V5XSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIHRoaXNba2V5XSA9IHBhcmFtc1trZXldO1xuICAgICAgICB9O1xuICAgICAgICBzZXRQYXJhbSgnZGlzdGFuY2VGbicpO1xuICAgICAgICBzZXRQYXJhbSgnbGVhcm5pbmdSYXRlJyk7XG4gICAgICAgIHNldFBhcmFtKCdsb2NhbENvbm5lY3Rpdml0eScpO1xuICAgICAgICBzZXRQYXJhbSgnbWluRGlzdCcpO1xuICAgICAgICBzZXRQYXJhbSgnbkNvbXBvbmVudHMnKTtcbiAgICAgICAgc2V0UGFyYW0oJ25FcG9jaHMnKTtcbiAgICAgICAgc2V0UGFyYW0oJ25OZWlnaGJvcnMnKTtcbiAgICAgICAgc2V0UGFyYW0oJ25lZ2F0aXZlU2FtcGxlUmF0ZScpO1xuICAgICAgICBzZXRQYXJhbSgncmFuZG9tJyk7XG4gICAgICAgIHNldFBhcmFtKCdyZXB1bHNpb25TdHJlbmd0aCcpO1xuICAgICAgICBzZXRQYXJhbSgnc2V0T3BNaXhSYXRpbycpO1xuICAgICAgICBzZXRQYXJhbSgnc3ByZWFkJyk7XG4gICAgICAgIHNldFBhcmFtKCd0cmFuc2Zvcm1RdWV1ZVNpemUnKTtcbiAgICAgICAgdGhpcy50YXJnZXROTmVpZ2hib3JzID0gcGFyYW1zLm5OZWlnaGJvcnMgfHwgdGhpcy5uTmVpZ2hib3JzIHx8IHRoaXMudGFyZ2V0Tk5laWdoYm9ycztcbiAgICB9XG4gICAgLyoqXG4gICAgICogRml0IHRoZSBkYXRhIHRvIGEgcHJvamVjdGVkIGVtYmVkZGluZyBzcGFjZSBzeW5jaHJvbm91c2x5LlxuICAgICAqL1xuICAgIGZpdChYKSB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUZpdChYKTtcbiAgICAgICAgdGhpcy5vcHRpbWl6ZUxheW91dCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5lbWJlZGRpbmc7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZpdCB0aGUgZGF0YSB0byBhIHByb2plY3RlZCBlbWJlZGRpbmcgc3BhY2UgYXN5bmNocm9ub3VzbHksIHdpdGggYSBjYWxsYmFja1xuICAgICAqIGZ1bmN0aW9uIGludm9rZWQgb24gZXZlcnkgZXBvY2ggb2Ygb3B0aW1pemF0aW9uLlxuICAgICAqL1xuICAgIGFzeW5jIGZpdEFzeW5jKFgsIGNhbGxiYWNrID0gKCkgPT4gdHJ1ZSkge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVGaXQoWCk7XG4gICAgICAgIGF3YWl0IHRoaXMub3B0aW1pemVMYXlvdXRBc3luYyhjYWxsYmFjayk7XG4gICAgICAgIHJldHVybiB0aGlzLmVtYmVkZGluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgcGFyYW1ldGVycyBuZWVkZWQgZm9yIHN1cGVydmlzZWQgcHJvamVjdGlvbi5cbiAgICAgKi9cbiAgICBzZXRTdXBlcnZpc2VkUHJvamVjdGlvbihZLCBwYXJhbXMgPSB7fSkge1xuICAgICAgICB0aGlzLlkgPSBZO1xuICAgICAgICB0aGlzLnRhcmdldE1ldHJpYyA9IHBhcmFtcy50YXJnZXRNZXRyaWMgfHwgdGhpcy50YXJnZXRNZXRyaWM7XG4gICAgICAgIHRoaXMudGFyZ2V0V2VpZ2h0ID0gcGFyYW1zLnRhcmdldFdlaWdodCB8fCB0aGlzLnRhcmdldFdlaWdodDtcbiAgICAgICAgdGhpcy50YXJnZXROTmVpZ2hib3JzID0gcGFyYW1zLnRhcmdldE5OZWlnaGJvcnMgfHwgdGhpcy50YXJnZXROTmVpZ2hib3JzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplcyB1bWFwIHdpdGggcHJlY29tcHV0ZWQgS05OIGluZGljZXMgYW5kIGRpc3RhbmNlcy5cbiAgICAgKi9cbiAgICBzZXRQcmVjb21wdXRlZEtOTihrbm5JbmRpY2VzLCBrbm5EaXN0YW5jZXMpIHtcbiAgICAgICAgdGhpcy5rbm5JbmRpY2VzID0ga25uSW5kaWNlcztcbiAgICAgICAgdGhpcy5rbm5EaXN0YW5jZXMgPSBrbm5EaXN0YW5jZXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIGZpdCBieSBjb21wdXRpbmcgS05OIGFuZCBhIGZ1enp5IHNpbXBsaWNpYWwgc2V0LCBhcyB3ZWxsIGFzXG4gICAgICogaW5pdGlhbGl6aW5nIHRoZSBwcm9qZWN0ZWQgZW1iZWRkaW5ncy4gU2V0cyB0aGUgb3B0aW1pemF0aW9uIHN0YXRlIGFoZWFkXG4gICAgICogb2Ygb3B0aW1pemF0aW9uIHN0ZXBzLiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZXBvY2hzIHRvIGJlIHVzZWQgZm9yIHRoZVxuICAgICAqIFNHRCBvcHRpbWl6YXRpb24uXG4gICAgICovXG4gICAgaW5pdGlhbGl6ZUZpdChYKSB7XG4gICAgICAgIGlmIChYLmxlbmd0aCA8PSB0aGlzLm5OZWlnaGJvcnMpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vdCBlbm91Z2ggZGF0YSBwb2ludHMgKCR7WC5sZW5ndGh9KSB0byBjcmVhdGUgbk5laWdoYm9yczogJHt0aGlzLm5OZWlnaGJvcnN9LiAgQWRkIG1vcmUgZGF0YSBwb2ludHMgb3IgYWRqdXN0IHRoZSBjb25maWd1cmF0aW9uLmApO1xuICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHJlaW5pdGlhbGl6ZSBpZiB3ZSd2ZSBhbHJlYWR5IGluaXRpYWxpemVkIGZvciB0aGlzIGRhdGEuXG4gICAgICAgIGlmICh0aGlzLlggPT09IFggJiYgdGhpcy5pc0luaXRpYWxpemVkKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TkVwb2NocygpO1xuICAgICAgICB0aGlzLlggPSBYO1xuICAgICAgICBpZiAoIXRoaXMua25uSW5kaWNlcyAmJiAhdGhpcy5rbm5EaXN0YW5jZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGtublJlc3VsdHMgPSB0aGlzLm5lYXJlc3ROZWlnaGJvcnMoWCk7XG4gICAgICAgICAgICB0aGlzLmtubkluZGljZXMgPSBrbm5SZXN1bHRzLmtubkluZGljZXM7XG4gICAgICAgICAgICB0aGlzLmtubkRpc3RhbmNlcyA9IGtublJlc3VsdHMua25uRGlzdGFuY2VzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JhcGggPSB0aGlzLmZ1enp5U2ltcGxpY2lhbFNldChYLCB0aGlzLm5OZWlnaGJvcnMsIHRoaXMuc2V0T3BNaXhSYXRpbyk7XG4gICAgICAgIC8vIFNldCB1cCB0aGUgc2VhcmNoIGdyYXBoIGZvciBzdWJzZXF1ZW50IHRyYW5zZm9ybWF0aW9uLlxuICAgICAgICB0aGlzLm1ha2VTZWFyY2hGbnMoKTtcbiAgICAgICAgdGhpcy5zZWFyY2hHcmFwaCA9IHRoaXMubWFrZVNlYXJjaEdyYXBoKFgpO1xuICAgICAgICAvLyBDaGVjayBpZiBzdXBlcnZpc2VkIHByb2plY3Rpb24sIHRoZW4gYWRqdXN0IHRoZSBncmFwaC5cbiAgICAgICAgdGhpcy5wcm9jZXNzR3JhcGhGb3JTdXBlcnZpc2VkUHJvamVjdGlvbigpO1xuICAgICAgICBjb25zdCB7IGhlYWQsIHRhaWwsIGVwb2Noc1BlclNhbXBsZSwgfSA9IHRoaXMuaW5pdGlhbGl6ZVNpbXBsaWNpYWxTZXRFbWJlZGRpbmcoKTtcbiAgICAgICAgLy8gU2V0IHRoZSBvcHRpbWl6YXRpb24gcm91dGluZSBzdGF0ZVxuICAgICAgICB0aGlzLm9wdGltaXphdGlvblN0YXRlLmhlYWQgPSBoZWFkO1xuICAgICAgICB0aGlzLm9wdGltaXphdGlvblN0YXRlLnRhaWwgPSB0YWlsO1xuICAgICAgICB0aGlzLm9wdGltaXphdGlvblN0YXRlLmVwb2Noc1BlclNhbXBsZSA9IGVwb2Noc1BlclNhbXBsZTtcbiAgICAgICAgLy8gTm93LCBpbml0aWFsaXplIHRoZSBvcHRpbWl6YXRpb24gc3RlcHNcbiAgICAgICAgdGhpcy5pbml0aWFsaXplT3B0aW1pemF0aW9uKCk7XG4gICAgICAgIHRoaXMucHJlcGFyZUZvck9wdGltaXphdGlvbkxvb3AoKTtcbiAgICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TkVwb2NocygpO1xuICAgIH1cbiAgICBtYWtlU2VhcmNoRm5zKCkge1xuICAgICAgICBjb25zdCB7IGluaXRGcm9tVHJlZSwgaW5pdEZyb21SYW5kb20gfSA9IG5uRGVzY2VudC5tYWtlSW5pdGlhbGl6YXRpb25zKHRoaXMuZGlzdGFuY2VGbik7XG4gICAgICAgIHRoaXMuaW5pdEZyb21UcmVlID0gaW5pdEZyb21UcmVlO1xuICAgICAgICB0aGlzLmluaXRGcm9tUmFuZG9tID0gaW5pdEZyb21SYW5kb207XG4gICAgICAgIHRoaXMuc2VhcmNoID0gbm5EZXNjZW50Lm1ha2VJbml0aWFsaXplZE5OU2VhcmNoKHRoaXMuZGlzdGFuY2VGbik7XG4gICAgfVxuICAgIG1ha2VTZWFyY2hHcmFwaChYKSB7XG4gICAgICAgIGNvbnN0IGtubkluZGljZXMgPSB0aGlzLmtubkluZGljZXM7XG4gICAgICAgIGNvbnN0IGtubkRpc3RhbmNlcyA9IHRoaXMua25uRGlzdGFuY2VzO1xuICAgICAgICBjb25zdCBkaW1zID0gW1gubGVuZ3RoLCBYLmxlbmd0aF07XG4gICAgICAgIGNvbnN0IHNlYXJjaEdyYXBoID0gbmV3IG1hdHJpeC5TcGFyc2VNYXRyaXgoW10sIFtdLCBbXSwgZGltcyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga25uSW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qga25uID0ga25uSW5kaWNlc1tpXTtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlcyA9IGtubkRpc3RhbmNlc1tpXTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwga25uLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmVpZ2hib3IgPSBrbm5bal07XG4gICAgICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZXNbal07XG4gICAgICAgICAgICAgICAgaWYgKGRpc3RhbmNlID4gMClcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoR3JhcGguc2V0KGksIG5laWdoYm9yLCBkaXN0YW5jZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdHJhbnNwb3NlID0gbWF0cml4LnRyYW5zcG9zZShzZWFyY2hHcmFwaCk7XG4gICAgICAgIHJldHVybiBtYXRyaXgubWF4aW11bShzZWFyY2hHcmFwaCwgdHJhbnNwb3NlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVHJhbnNmb3JtcyBkYXRhIHRvIHRoZSBleGlzdGluZyBlbWJlZGRpbmcgc3BhY2UuXG4gICAgICovXG4gICAgdHJhbnNmb3JtKHRvVHJhbnNmb3JtKSB7XG4gICAgICAgIC8vIFVzZSB0aGUgcHJldmlvdXMgcmF3RGF0YVxuICAgICAgICBjb25zdCByYXdEYXRhID0gdGhpcy5YO1xuICAgICAgICBpZiAocmF3RGF0YSA9PT0gdW5kZWZpbmVkIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBkYXRhIGhhcyBiZWVuIGZpdC4nKTtcbiAgICAgICAgbGV0IG5OZWlnaGJvcnMgPSBNYXRoLmZsb29yKHRoaXMubk5laWdoYm9ycyAqIHRoaXMudHJhbnNmb3JtUXVldWVTaXplKTtcbiAgICAgICAgbk5laWdoYm9ycyA9IE1hdGgubWluKHJhd0RhdGEubGVuZ3RoLCBuTmVpZ2hib3JzKTtcbiAgICAgICAgY29uc3QgaW5pdCA9IG5uRGVzY2VudC5pbml0aWFsaXplU2VhcmNoKHRoaXMucnBGb3Jlc3QsIHJhd0RhdGEsIHRvVHJhbnNmb3JtLCBuTmVpZ2hib3JzLCB0aGlzLmluaXRGcm9tUmFuZG9tLCB0aGlzLmluaXRGcm9tVHJlZSwgdGhpcy5yYW5kb20pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNlYXJjaChyYXdEYXRhLCB0aGlzLnNlYXJjaEdyYXBoLCBpbml0LCB0b1RyYW5zZm9ybSk7XG4gICAgICAgIGxldCB7IGluZGljZXMsIHdlaWdodHM6IGRpc3RhbmNlcyB9ID0gaGVhcC5kZWhlYXBTb3J0KHJlc3VsdCk7XG4gICAgICAgIGluZGljZXMgPSBpbmRpY2VzLm1hcCgoeCkgPT4geC5zbGljZSgwLCB0aGlzLm5OZWlnaGJvcnMpKTtcbiAgICAgICAgZGlzdGFuY2VzID0gZGlzdGFuY2VzLm1hcCgoeCkgPT4geC5zbGljZSgwLCB0aGlzLm5OZWlnaGJvcnMpKTtcbiAgICAgICAgY29uc3QgYWRqdXN0ZWRMb2NhbENvbm5lY3Rpdml0eSA9IE1hdGgubWF4KDAsIHRoaXMubG9jYWxDb25uZWN0aXZpdHkgLSAxKTtcbiAgICAgICAgY29uc3QgeyBzaWdtYXMsIHJob3MgfSA9IHRoaXMuc21vb3RoS05ORGlzdGFuY2UoZGlzdGFuY2VzLCB0aGlzLm5OZWlnaGJvcnMsIGFkanVzdGVkTG9jYWxDb25uZWN0aXZpdHkpO1xuICAgICAgICBjb25zdCB7IHJvd3MsIGNvbHMsIHZhbHMgfSA9IHRoaXMuY29tcHV0ZU1lbWJlcnNoaXBTdHJlbmd0aHMoaW5kaWNlcywgZGlzdGFuY2VzLCBzaWdtYXMsIHJob3MpO1xuICAgICAgICBjb25zdCBzaXplID0gW3RvVHJhbnNmb3JtLmxlbmd0aCwgcmF3RGF0YS5sZW5ndGhdO1xuICAgICAgICBsZXQgZ3JhcGggPSBuZXcgbWF0cml4LlNwYXJzZU1hdHJpeChyb3dzLCBjb2xzLCB2YWxzLCBzaXplKTtcbiAgICAgICAgLy8gVGhpcyB3YXMgYSB2ZXJ5IHNwZWNpYWxseSBjb25zdHJ1Y3RlZCBncmFwaCB3aXRoIGNvbnN0YW50IGRlZ3JlZS5cbiAgICAgICAgLy8gVGhhdCBsZXRzIHVzIGRvIGZhbmN5IHVucGFja2luZyBieSByZXNoYXBpbmcgdGhlIGNzciBtYXRyaXggaW5kaWNlc1xuICAgICAgICAvLyBhbmQgZGF0YS4gRG9pbmcgc28gcmVsaWVzIG9uIHRoZSBjb25zdGFudCBkZWdyZWUgYXNzdW1wdGlvbiFcbiAgICAgICAgY29uc3Qgbm9ybWVkID0gbWF0cml4Lm5vcm1hbGl6ZShncmFwaCwgXCJsMVwiIC8qIG1hdHJpeC5Ob3JtVHlwZS5sMSAqLyk7XG4gICAgICAgIGNvbnN0IGNzck1hdHJpeCA9IG1hdHJpeC5nZXRDU1Iobm9ybWVkKTtcbiAgICAgICAgY29uc3QgblBvaW50cyA9IHRvVHJhbnNmb3JtLmxlbmd0aDtcbiAgICAgICAgY29uc3QgZUluZGljZXMgPSB1dGlscy5yZXNoYXBlMmQoY3NyTWF0cml4LmluZGljZXMsIG5Qb2ludHMsIHRoaXMubk5laWdoYm9ycyk7XG4gICAgICAgIGNvbnN0IGVXZWlnaHRzID0gdXRpbHMucmVzaGFwZTJkKGNzck1hdHJpeC52YWx1ZXMsIG5Qb2ludHMsIHRoaXMubk5laWdoYm9ycyk7XG4gICAgICAgIGNvbnN0IGVtYmVkZGluZyA9IGluaXRUcmFuc2Zvcm0oZUluZGljZXMsIGVXZWlnaHRzLCB0aGlzLmVtYmVkZGluZyk7XG4gICAgICAgIGNvbnN0IG5FcG9jaHMgPSB0aGlzLm5FcG9jaHMgP1xuICAgICAgICAgICAgdGhpcy5uRXBvY2hzIC8gMyA6XG4gICAgICAgICAgICBncmFwaC5uUm93cyA8PSAxMDAwMCA/XG4gICAgICAgICAgICAgICAgMTAwIDpcbiAgICAgICAgICAgICAgICAzMDtcbiAgICAgICAgY29uc3QgZ3JhcGhNYXggPSBncmFwaFxuICAgICAgICAgICAgLmdldFZhbHVlcygpXG4gICAgICAgICAgICAucmVkdWNlKChtYXgsIHZhbCkgPT4gKHZhbCA+IG1heCA/IHZhbCA6IG1heCksIDApO1xuICAgICAgICBncmFwaCA9IGdyYXBoLm1hcCgodmFsdWUpID0+ICh2YWx1ZSA8IGdyYXBoTWF4IC8gbkVwb2NocyA/IDAgOiB2YWx1ZSkpO1xuICAgICAgICBncmFwaCA9IG1hdHJpeC5lbGltaW5hdGVaZXJvcyhncmFwaCk7XG4gICAgICAgIGNvbnN0IGVwb2Noc1BlclNhbXBsZSA9IHRoaXMubWFrZUVwb2Noc1BlclNhbXBsZShncmFwaC5nZXRWYWx1ZXMoKSwgbkVwb2Nocyk7XG4gICAgICAgIGNvbnN0IGhlYWQgPSBncmFwaC5nZXRSb3dzKCk7XG4gICAgICAgIGNvbnN0IHRhaWwgPSBncmFwaC5nZXRDb2xzKCk7XG4gICAgICAgIC8vIEluaXRpYWxpemUgb3B0aW1pemF0aW9uIHNsaWdodGx5IGRpZmZlcmVudGx5IHRoYW4gdGhlIGZpdCBtZXRob2QuXG4gICAgICAgIHRoaXMuYXNzaWduT3B0aW1pemF0aW9uU3RhdGVQYXJhbWV0ZXJzKHtcbiAgICAgICAgICAgIGhlYWRFbWJlZGRpbmc6IGVtYmVkZGluZyxcbiAgICAgICAgICAgIHRhaWxFbWJlZGRpbmc6IHRoaXMuZW1iZWRkaW5nLFxuICAgICAgICAgICAgaGVhZCxcbiAgICAgICAgICAgIHRhaWwsXG4gICAgICAgICAgICBjdXJyZW50RXBvY2g6IDAsXG4gICAgICAgICAgICBuRXBvY2hzLFxuICAgICAgICAgICAgblZlcnRpY2VzOiBncmFwaC5nZXREaW1zKClbMV0sXG4gICAgICAgICAgICBlcG9jaHNQZXJTYW1wbGUsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnByZXBhcmVGb3JPcHRpbWl6YXRpb25Mb29wKCk7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGltaXplTGF5b3V0KCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB3ZSdyZSB1c2luZyBzdXBlcnZpc2VkIHByb2plY3Rpb24sIHRoZW4gcHJvY2VzcyB0aGUgZ3JhcGhcbiAgICAgKiBhY2NvcmRpbmdseS5cbiAgICAgKi9cbiAgICBwcm9jZXNzR3JhcGhGb3JTdXBlcnZpc2VkUHJvamVjdGlvbigpIHtcbiAgICAgICAgY29uc3QgeyBZLCBYIH0gPSB0aGlzO1xuICAgICAgICBpZiAoWSkge1xuICAgICAgICAgICAgaWYgKFkubGVuZ3RoICE9PSBYLmxlbmd0aClcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xlbmd0aCBvZiBYIGFuZCB5IG11c3QgYmUgZXF1YWwnKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnRhcmdldE1ldHJpYyA9PT0gXCJjYXRlZ29yaWNhbFwiIC8qIFRhcmdldE1ldHJpYy5jYXRlZ29yaWNhbCAqLykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGx0ID0gdGhpcy50YXJnZXRXZWlnaHQgPCAxLjA7XG4gICAgICAgICAgICAgICAgY29uc3QgZmFyRGlzdCA9IGx0ID8gMi41ICogKDEuMCAvICgxLjAgLSB0aGlzLnRhcmdldFdlaWdodCkpIDogMS4wZTEyO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JhcGggPSB0aGlzLmNhdGVnb3JpY2FsU2ltcGxpY2lhbFNldEludGVyc2VjdGlvbih0aGlzLmdyYXBoLCBZLCBmYXJEaXN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRPRE8gKGFuZHljb2VuZW5AKTogYWRkIG5vbi1jYXRlZ29yaWNhbCBzdXBlcnZpc2VkIGVtYmVkZGluZ3MuXG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogTWFudWFsbHkgc3RlcCB0aHJvdWdoIHRoZSBvcHRpbWl6YXRpb24gcHJvY2VzcyBvbmUgZXBvY2ggYXQgYSB0aW1lLlxuICAgICAqL1xuICAgIHN0ZXAoKSB7XG4gICAgICAgIGNvbnN0IHsgY3VycmVudEVwb2NoIH0gPSB0aGlzLm9wdGltaXphdGlvblN0YXRlO1xuICAgICAgICBpZiAoY3VycmVudEVwb2NoIDwgdGhpcy5nZXRORXBvY2hzKCkpXG4gICAgICAgICAgICB0aGlzLm9wdGltaXplTGF5b3V0U3RlcChjdXJyZW50RXBvY2gpO1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5jdXJyZW50RXBvY2g7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNvbXB1dGVkIHByb2plY3RlZCBlbWJlZGRpbmcuXG4gICAgICovXG4gICAgZ2V0RW1iZWRkaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbWJlZGRpbmc7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbXB1dGUgdGhlIGBgbk5laWdoYm9yc2BgIG5lYXJlc3QgcG9pbnRzIGZvciBlYWNoIGRhdGEgcG9pbnQgaW4gYGBYYGBcbiAgICAgKiBUaGlzIG1heSBiZSBleGFjdCwgYnV0IG1vcmUgbGlrZWx5IGlzIGFwcHJveGltYXRlZCB2aWEgbmVhcmVzdCBuZWlnaGJvclxuICAgICAqIGRlc2NlbnQuXG4gICAgICovXG4gICAgbmVhcmVzdE5laWdoYm9ycyhYKSB7XG4gICAgICAgIGNvbnN0IHsgZGlzdGFuY2VGbiwgbk5laWdoYm9ycyB9ID0gdGhpcztcbiAgICAgICAgY29uc3QgbG9nMiA9IChuKSA9PiBNYXRoLmxvZyhuKSAvIE1hdGgubG9nKDIpO1xuICAgICAgICBjb25zdCBtZXRyaWNOTkRlc2NlbnQgPSBubkRlc2NlbnQubWFrZU5ORGVzY2VudChkaXN0YW5jZUZuLCB0aGlzLnJhbmRvbSk7XG4gICAgICAgIC8vIEhhbmRsZSBweXRob24zIHJvdW5kaW5nIGRvd24gZnJvbSAwLjUgZGlzY3JwYW5jeVxuICAgICAgICBjb25zdCByb3VuZCA9IChuKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbiA9PT0gMC41ID8gMCA6IE1hdGgucm91bmQobik7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG5UcmVlcyA9IDUgKyBNYXRoLmZsb29yKHJvdW5kKFgubGVuZ3RoICoqIDAuNSAvIDIwLjApKTtcbiAgICAgICAgY29uc3Qgbkl0ZXJzID0gTWF0aC5tYXgoNSwgTWF0aC5mbG9vcihNYXRoLnJvdW5kKGxvZzIoWC5sZW5ndGgpKSkpO1xuICAgICAgICB0aGlzLnJwRm9yZXN0ID0gdHJlZS5tYWtlRm9yZXN0KFgsIG5OZWlnaGJvcnMsIG5UcmVlcywgdGhpcy5yYW5kb20pO1xuICAgICAgICBjb25zdCBsZWFmQXJyYXkgPSB0cmVlLm1ha2VMZWFmQXJyYXkodGhpcy5ycEZvcmVzdCk7XG4gICAgICAgIGNvbnN0IHsgaW5kaWNlcywgd2VpZ2h0cyB9ID0gbWV0cmljTk5EZXNjZW50KFgsIGxlYWZBcnJheSwgbk5laWdoYm9ycywgbkl0ZXJzKTtcbiAgICAgICAgcmV0dXJuIHsga25uSW5kaWNlczogaW5kaWNlcywga25uRGlzdGFuY2VzOiB3ZWlnaHRzIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdpdmVuIGEgc2V0IG9mIGRhdGEgWCwgYSBuZWlnaGJvcmhvb2Qgc2l6ZSwgYW5kIGEgbWVhc3VyZSBvZiBkaXN0YW5jZVxuICAgICAqIGNvbXB1dGUgdGhlIGZ1enp5IHNpbXBsaWNpYWwgc2V0IChoZXJlIHJlcHJlc2VudGVkIGFzIGEgZnV6enkgZ3JhcGggaW5cbiAgICAgKiB0aGUgZm9ybSBvZiBhIHNwYXJzZSBtYXRyaXgpIGFzc29jaWF0ZWQgdG8gdGhlIGRhdGEuIFRoaXMgaXMgZG9uZSBieVxuICAgICAqIGxvY2FsbHkgYXBwcm94aW1hdGluZyBnZW9kZXNpYyBkaXN0YW5jZSBhdCBlYWNoIHBvaW50LCBjcmVhdGluZyBhIGZ1enp5XG4gICAgICogc2ltcGxpY2lhbCBzZXQgZm9yIGVhY2ggc3VjaCBwb2ludCwgYW5kIHRoZW4gY29tYmluaW5nIGFsbCB0aGUgbG9jYWxcbiAgICAgKiBmdXp6eSBzaW1wbGljaWFsIHNldHMgaW50byBhIGdsb2JhbCBvbmUgdmlhIGEgZnV6enkgdW5pb24uXG4gICAgICovXG4gICAgZnV6enlTaW1wbGljaWFsU2V0KFgsIG5OZWlnaGJvcnMsIHNldE9wTWl4UmF0aW8gPSAxLjApIHtcbiAgICAgICAgY29uc3QgeyBrbm5JbmRpY2VzID0gW10sIGtubkRpc3RhbmNlcyA9IFtdLCBsb2NhbENvbm5lY3Rpdml0eSB9ID0gdGhpcztcbiAgICAgICAgY29uc3QgeyBzaWdtYXMsIHJob3MgfSA9IHRoaXMuc21vb3RoS05ORGlzdGFuY2Uoa25uRGlzdGFuY2VzLCBuTmVpZ2hib3JzLCBsb2NhbENvbm5lY3Rpdml0eSk7XG4gICAgICAgIGNvbnN0IHsgcm93cywgY29scywgdmFscyB9ID0gdGhpcy5jb21wdXRlTWVtYmVyc2hpcFN0cmVuZ3Rocyhrbm5JbmRpY2VzLCBrbm5EaXN0YW5jZXMsIHNpZ21hcywgcmhvcyk7XG4gICAgICAgIGNvbnN0IHNpemUgPSBbWC5sZW5ndGgsIFgubGVuZ3RoXTtcbiAgICAgICAgY29uc3Qgc3BhcnNlTWF0cml4ID0gbmV3IG1hdHJpeC5TcGFyc2VNYXRyaXgocm93cywgY29scywgdmFscywgc2l6ZSk7XG4gICAgICAgIGNvbnN0IHRyYW5zcG9zZSA9IG1hdHJpeC50cmFuc3Bvc2Uoc3BhcnNlTWF0cml4KTtcbiAgICAgICAgY29uc3QgcHJvZE1hdHJpeCA9IG1hdHJpeC5wYWlyd2lzZU11bHRpcGx5KHNwYXJzZU1hdHJpeCwgdHJhbnNwb3NlKTtcbiAgICAgICAgY29uc3QgYSA9IG1hdHJpeC5zdWJ0cmFjdChtYXRyaXguYWRkKHNwYXJzZU1hdHJpeCwgdHJhbnNwb3NlKSwgcHJvZE1hdHJpeCk7XG4gICAgICAgIGNvbnN0IGIgPSBtYXRyaXgubXVsdGlwbHlTY2FsYXIoYSwgc2V0T3BNaXhSYXRpbyk7XG4gICAgICAgIGNvbnN0IGMgPSBtYXRyaXgubXVsdGlwbHlTY2FsYXIocHJvZE1hdHJpeCwgMS4wIC0gc2V0T3BNaXhSYXRpbyk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG1hdHJpeC5hZGQoYiwgYyk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbWJpbmUgYSBmdXp6eSBzaW1wbGljaWFsIHNldCB3aXRoIGFub3RoZXIgZnV6enkgc2ltcGxpY2lhbCBzZXRcbiAgICAgKiBnZW5lcmF0ZWQgZnJvbSBjYXRlZ29yaWNhbCBkYXRhIHVzaW5nIGNhdGVnb3JpY2FsIGRpc3RhbmNlcy4gVGhlIHRhcmdldFxuICAgICAqIGRhdGEgaXMgYXNzdW1lZCB0byBiZSBjYXRlZ29yaWNhbCBsYWJlbCBkYXRhIChhIHZlY3RvciBvZiBsYWJlbHMpLFxuICAgICAqIGFuZCB0aGlzIHdpbGwgdXBkYXRlIHRoZSBmdXp6eSBzaW1wbGljaWFsIHNldCB0byByZXNwZWN0IHRoYXQgbGFiZWwgZGF0YS5cbiAgICAgKi9cbiAgICBjYXRlZ29yaWNhbFNpbXBsaWNpYWxTZXRJbnRlcnNlY3Rpb24oc2ltcGxpY2lhbFNldCwgdGFyZ2V0LCBmYXJEaXN0LCB1bmtub3duRGlzdCA9IDEuMCkge1xuICAgICAgICBsZXQgaW50ZXJzZWN0aW9uID0gZmFzdEludGVyc2VjdGlvbihzaW1wbGljaWFsU2V0LCB0YXJnZXQsIHVua25vd25EaXN0LCBmYXJEaXN0KTtcbiAgICAgICAgaW50ZXJzZWN0aW9uID0gbWF0cml4LmVsaW1pbmF0ZVplcm9zKGludGVyc2VjdGlvbik7XG4gICAgICAgIHJldHVybiByZXNldExvY2FsQ29ubmVjdGl2aXR5KGludGVyc2VjdGlvbik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbXB1dGUgYSBjb250aW51b3VzIHZlcnNpb24gb2YgdGhlIGRpc3RhbmNlIHRvIHRoZSBrdGggbmVhcmVzdFxuICAgICAqIG5laWdoYm9yLiBUaGF0IGlzLCB0aGlzIGlzIHNpbWlsYXIgdG8ga25uLWRpc3RhbmNlIGJ1dCBhbGxvd3MgY29udGludW91c1xuICAgICAqIGsgdmFsdWVzIHJhdGhlciB0aGFuIHJlcXVpcmluZyBhbiBpbnRlZ3JhbCBrLiBJbiBlc3NjZW5jZSB3ZSBhcmUgc2ltcGx5XG4gICAgICogY29tcHV0aW5nIHRoZSBkaXN0YW5jZSBzdWNoIHRoYXQgdGhlIGNhcmRpbmFsaXR5IG9mIGZ1enp5IHNldCB3ZSBnZW5lcmF0ZVxuICAgICAqIGlzIGsuXG4gICAgICovXG4gICAgc21vb3RoS05ORGlzdGFuY2UoZGlzdGFuY2VzLCBrLCBsb2NhbENvbm5lY3Rpdml0eSA9IDEuMCwgbkl0ZXIgPSA2NCwgYmFuZHdpZHRoID0gMS4wKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IChNYXRoLmxvZyhrKSAvIE1hdGgubG9nKDIpKSAqIGJhbmR3aWR0aDtcbiAgICAgICAgY29uc3QgcmhvID0gdXRpbHMuemVyb3MoZGlzdGFuY2VzLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHV0aWxzLnplcm9zKGRpc3RhbmNlcy5sZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpc3RhbmNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IGxvID0gMC4wO1xuICAgICAgICAgICAgbGV0IGhpID0gSW5maW5pdHk7XG4gICAgICAgICAgICBsZXQgbWlkID0gMS4wO1xuICAgICAgICAgICAgLy8gVE9ETzogVGhpcyBpcyB2ZXJ5IGluZWZmaWNpZW50LCBidXQgd2lsbCBkbyBmb3Igbm93LiBGSVhNRVxuICAgICAgICAgICAgY29uc3QgaXRoRGlzdGFuY2VzID0gZGlzdGFuY2VzW2ldO1xuICAgICAgICAgICAgY29uc3Qgbm9uWmVyb0Rpc3RzID0gaXRoRGlzdGFuY2VzLmZpbHRlcigoZCkgPT4gZCA+IDAuMCk7XG4gICAgICAgICAgICBpZiAobm9uWmVyb0Rpc3RzLmxlbmd0aCA+PSBsb2NhbENvbm5lY3Rpdml0eSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gTWF0aC5mbG9vcihsb2NhbENvbm5lY3Rpdml0eSk7XG4gICAgICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdGlvbiA9IGxvY2FsQ29ubmVjdGl2aXR5IC0gaW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByaG9baV0gPSBub25aZXJvRGlzdHNbaW5kZXggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGludGVycG9sYXRpb24gPiBTTU9PVEhfS19UT0xFUkFOQ0UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJob1tpXSArPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycG9sYXRpb24gKiAobm9uWmVyb0Rpc3RzW2luZGV4XSAtIG5vblplcm9EaXN0c1tpbmRleCAtIDFdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmhvW2ldID0gaW50ZXJwb2xhdGlvbiAqIG5vblplcm9EaXN0c1swXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChub25aZXJvRGlzdHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJob1tpXSA9IHV0aWxzLm1heChub25aZXJvRGlzdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCBuSXRlcjsgbisrKSB7XG4gICAgICAgICAgICAgICAgbGV0IHBzdW0gPSAwLjA7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDE7IGogPCBkaXN0YW5jZXNbaV0ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZCA9IGRpc3RhbmNlc1tpXVtqXSAtIHJob1tpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGQgPiAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgcHN1bSArPSBNYXRoLmV4cCgtKGQgLyBtaWQpKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgcHN1bSArPSAxLjA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhwc3VtIC0gdGFyZ2V0KSA8IFNNT09USF9LX1RPTEVSQU5DRSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgaWYgKHBzdW0gPiB0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgaGkgPSBtaWQ7XG4gICAgICAgICAgICAgICAgICAgIG1pZCA9IChsbyArIGhpKSAvIDIuMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvID0gbWlkO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGkgPT09IEluZmluaXR5KVxuICAgICAgICAgICAgICAgICAgICAgICAgbWlkICo9IDI7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pZCA9IChsbyArIGhpKSAvIDIuMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRbaV0gPSBtaWQ7XG4gICAgICAgICAgICAvLyBUT0RPOiBUaGlzIGlzIHZlcnkgaW5lZmZpY2llbnQsIGJ1dCB3aWxsIGRvIGZvciBub3cuIEZJWE1FXG4gICAgICAgICAgICBpZiAocmhvW2ldID4gMC4wKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVhbkl0aERpc3RhbmNlcyA9IHV0aWxzLm1lYW4oaXRoRGlzdGFuY2VzKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0W2ldIDwgTUlOX0tfRElTVF9TQ0FMRSAqIG1lYW5JdGhEaXN0YW5jZXMpXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtpXSA9IE1JTl9LX0RJU1RfU0NBTEUgKiBtZWFuSXRoRGlzdGFuY2VzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVhbkRpc3RhbmNlcyA9IHV0aWxzLm1lYW4oZGlzdGFuY2VzLm1hcCh1dGlscy5tZWFuKSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdFtpXSA8IE1JTl9LX0RJU1RfU0NBTEUgKiBtZWFuRGlzdGFuY2VzKVxuICAgICAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSBNSU5fS19ESVNUX1NDQUxFICogbWVhbkRpc3RhbmNlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzaWdtYXM6IHJlc3VsdCwgcmhvczogcmhvIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdCB0aGUgbWVtYmVyc2hpcCBzdHJlbmd0aCBkYXRhIGZvciB0aGUgMS1za2VsZXRvbiBvZiBlYWNoIGxvY2FsXG4gICAgICogZnV6enkgc2ltcGxpY2lhbCBzZXQgLS0gdGhpcyBpcyBmb3JtZWQgYXMgYSBzcGFyc2UgbWF0cml4IHdoZXJlIGVhY2ggcm93IGlzXG4gICAgICogYSBsb2NhbCBmdXp6eSBzaW1wbGljaWFsIHNldCwgd2l0aCBhIG1lbWJlcnNoaXAgc3RyZW5ndGggZm9yIHRoZVxuICAgICAqIDEtc2ltcGxleCB0byBlYWNoIG90aGVyIGRhdGEgcG9pbnQuXG4gICAgICovXG4gICAgY29tcHV0ZU1lbWJlcnNoaXBTdHJlbmd0aHMoa25uSW5kaWNlcywga25uRGlzdGFuY2VzLCBzaWdtYXMsIHJob3MpIHtcbiAgICAgICAgY29uc3QgblNhbXBsZXMgPSBrbm5JbmRpY2VzLmxlbmd0aDtcbiAgICAgICAgY29uc3Qgbk5laWdoYm9ycyA9IGtubkluZGljZXNbMF0ubGVuZ3RoO1xuICAgICAgICBjb25zdCByb3dzID0gdXRpbHMuemVyb3MoblNhbXBsZXMgKiBuTmVpZ2hib3JzKTtcbiAgICAgICAgY29uc3QgY29scyA9IHV0aWxzLnplcm9zKG5TYW1wbGVzICogbk5laWdoYm9ycyk7XG4gICAgICAgIGNvbnN0IHZhbHMgPSB1dGlscy56ZXJvcyhuU2FtcGxlcyAqIG5OZWlnaGJvcnMpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5TYW1wbGVzOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbk5laWdoYm9yczsgaisrKSB7XG4gICAgICAgICAgICAgICAgbGV0IHZhbCA9IDA7XG4gICAgICAgICAgICAgICAgaWYgKGtubkluZGljZXNbaV1bal0gPT09IC0xKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gV2UgZGlkbid0IGdldCB0aGUgZnVsbCBrbm4gZm9yIGlcbiAgICAgICAgICAgICAgICBpZiAoa25uSW5kaWNlc1tpXVtqXSA9PT0gaSlcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gMC4wO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtubkRpc3RhbmNlc1tpXVtqXSAtIHJob3NbaV0gPD0gMC4wKVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSAxLjA7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSBNYXRoLmV4cCgtKChrbm5EaXN0YW5jZXNbaV1bal0gLSByaG9zW2ldKSAvIHNpZ21hc1tpXSkpO1xuICAgICAgICAgICAgICAgIHJvd3NbaSAqIG5OZWlnaGJvcnMgKyBqXSA9IGk7XG4gICAgICAgICAgICAgICAgY29sc1tpICogbk5laWdoYm9ycyArIGpdID0ga25uSW5kaWNlc1tpXVtqXTtcbiAgICAgICAgICAgICAgICB2YWxzW2kgKiBuTmVpZ2hib3JzICsgal0gPSB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgcm93cywgY29scywgdmFscyB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIGEgZnV6enkgc2ltcGxpY2lhbCBzZXQgZW1iZWRkaW5nLCB1c2luZyBhIHNwZWNpZmllZFxuICAgICAqIGluaXRpYWxpc2F0aW9uIG1ldGhvZCBhbmQgdGhlbiBtaW5pbWl6aW5nIHRoZSBmdXp6eSBzZXQgY3Jvc3MgZW50cm9weVxuICAgICAqIGJldHdlZW4gdGhlIDEtc2tlbGV0b25zIG9mIHRoZSBoaWdoIGFuZCBsb3cgZGltZW5zaW9uYWwgZnV6enkgc2ltcGxpY2lhbFxuICAgICAqIHNldHMuXG4gICAgICovXG4gICAgaW5pdGlhbGl6ZVNpbXBsaWNpYWxTZXRFbWJlZGRpbmcoKSB7XG4gICAgICAgIGNvbnN0IG5FcG9jaHMgPSB0aGlzLmdldE5FcG9jaHMoKTtcbiAgICAgICAgY29uc3QgeyBuQ29tcG9uZW50cyB9ID0gdGhpcztcbiAgICAgICAgY29uc3QgZ3JhcGhWYWx1ZXMgPSB0aGlzLmdyYXBoLmdldFZhbHVlcygpO1xuICAgICAgICBsZXQgZ3JhcGhNYXggPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdyYXBoVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdyYXBoVmFsdWVzW2ldO1xuICAgICAgICAgICAgaWYgKGdyYXBoTWF4IDwgZ3JhcGhWYWx1ZXNbaV0pXG4gICAgICAgICAgICAgICAgZ3JhcGhNYXggPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBncmFwaCA9IHRoaXMuZ3JhcGgubWFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlIDwgZ3JhcGhNYXggLyBuRXBvY2hzKVxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIFdlJ3JlIG5vdCBjb21wdXRpbmcgdGhlIHNwZWN0cmFsIGluaXRpYWxpemF0aW9uIGluIHRoaXMgaW1wbGVtZW50YXRpb25cbiAgICAgICAgLy8gdW50aWwgd2UgZGV0ZXJtaW5lIGEgYmV0dGVyIGVpZ2VudmFsdWUvZWlnZW52ZWN0b3IgY29tcHV0YXRpb25cbiAgICAgICAgLy8gYXBwcm9hY2hcbiAgICAgICAgdGhpcy5lbWJlZGRpbmcgPSB1dGlscy56ZXJvcyhncmFwaC5uUm93cykubWFwKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB1dGlscy56ZXJvcyhuQ29tcG9uZW50cykubWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdXRpbHMudGF1UmFuZCh0aGlzLnJhbmRvbSkgKiAyMCArIC0xMDsgLy8gUmFuZG9tIGZyb20gLTEwIHRvIDEwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIEdldCBncmFwaCBkYXRhIGluIG9yZGVyZWQgd2F5Li4uXG4gICAgICAgIGNvbnN0IHdlaWdodHMgPSBbXTtcbiAgICAgICAgY29uc3QgaGVhZCA9IFtdO1xuICAgICAgICBjb25zdCB0YWlsID0gW107XG4gICAgICAgIGNvbnN0IHJvd0NvbFZhbHVlcyA9IGdyYXBoLmdldEFsbCgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd0NvbFZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgZW50cnkgPSByb3dDb2xWYWx1ZXNbaV07XG4gICAgICAgICAgICBpZiAoZW50cnkudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB3ZWlnaHRzLnB1c2goZW50cnkudmFsdWUpO1xuICAgICAgICAgICAgICAgIHRhaWwucHVzaChlbnRyeS5yb3cpO1xuICAgICAgICAgICAgICAgIGhlYWQucHVzaChlbnRyeS5jb2wpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVwb2Noc1BlclNhbXBsZSA9IHRoaXMubWFrZUVwb2Noc1BlclNhbXBsZSh3ZWlnaHRzLCBuRXBvY2hzKTtcbiAgICAgICAgcmV0dXJuIHsgaGVhZCwgdGFpbCwgZXBvY2hzUGVyU2FtcGxlIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdpdmVuIGEgc2V0IG9mIHdlaWdodHMgYW5kIG51bWJlciBvZiBlcG9jaHMgZ2VuZXJhdGUgdGhlIG51bWJlciBvZlxuICAgICAqIGVwb2NocyBwZXIgc2FtcGxlIGZvciBlYWNoIHdlaWdodC5cbiAgICAgKi9cbiAgICBtYWtlRXBvY2hzUGVyU2FtcGxlKHdlaWdodHMsIG5FcG9jaHMpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdXRpbHMuZmlsbGVkKHdlaWdodHMubGVuZ3RoLCAtMS4wKTtcbiAgICAgICAgY29uc3QgbWF4ID0gdXRpbHMubWF4KHdlaWdodHMpO1xuICAgICAgICBjb25zdCBuU2FtcGxlcyA9IHdlaWdodHMubWFwKCh3KSA9PiAodyAvIG1heCkgKiBuRXBvY2hzKTtcbiAgICAgICAgblNhbXBsZXMuZm9yRWFjaCgobiwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKG4gPiAwKVxuICAgICAgICAgICAgICAgIHJlc3VsdFtpXSA9IG5FcG9jaHMgLyBuU2FtcGxlc1tpXTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEFzc2lnbnMgb3B0aW1pemF0aW9uIHN0YXRlIHBhcmFtZXRlcnMgZnJvbSBhIHBhcnRpYWwgb3B0aW1pemF0aW9uIHN0YXRlLlxuICAgICAqL1xuICAgIGFzc2lnbk9wdGltaXphdGlvblN0YXRlUGFyYW1ldGVycyhzdGF0ZSkge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMub3B0aW1pemF0aW9uU3RhdGUsIHN0YXRlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyBhIGZldyBvcHRpbWl6YXRpb24gc3RhdGUgcGFyYW1ldGVycyB0aGF0IGFyZSBuZWNlc3NhcnkgYmVmb3JlIGVudGVyaW5nXG4gICAgICogdGhlIG9wdGltaXphdGlvbiBzdGVwIGxvb3AuXG4gICAgICovXG4gICAgcHJlcGFyZUZvck9wdGltaXphdGlvbkxvb3AoKSB7XG4gICAgICAgIC8vIEh5cGVycGFyYW1ldGVyc1xuICAgICAgICBjb25zdCB7IHJlcHVsc2lvblN0cmVuZ3RoLCBsZWFybmluZ1JhdGUsIG5lZ2F0aXZlU2FtcGxlUmF0ZSB9ID0gdGhpcztcbiAgICAgICAgY29uc3QgeyBlcG9jaHNQZXJTYW1wbGUsIGhlYWRFbWJlZGRpbmcsIHRhaWxFbWJlZGRpbmcsIH0gPSB0aGlzLm9wdGltaXphdGlvblN0YXRlO1xuICAgICAgICBjb25zdCBkaW0gPSBoZWFkRW1iZWRkaW5nWzBdLmxlbmd0aDtcbiAgICAgICAgY29uc3QgbW92ZU90aGVyID0gaGVhZEVtYmVkZGluZy5sZW5ndGggPT09IHRhaWxFbWJlZGRpbmcubGVuZ3RoO1xuICAgICAgICBjb25zdCBlcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZSA9IGVwb2Noc1BlclNhbXBsZS5tYXAoKGUpID0+IGUgLyBuZWdhdGl2ZVNhbXBsZVJhdGUpO1xuICAgICAgICBjb25zdCBlcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlID0gWy4uLmVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlXTtcbiAgICAgICAgY29uc3QgZXBvY2hPZk5leHRTYW1wbGUgPSBbLi4uZXBvY2hzUGVyU2FtcGxlXTtcbiAgICAgICAgdGhpcy5hc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnMoe1xuICAgICAgICAgICAgZXBvY2hPZk5leHRTYW1wbGUsXG4gICAgICAgICAgICBlcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlLFxuICAgICAgICAgICAgZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGUsXG4gICAgICAgICAgICBtb3ZlT3RoZXIsXG4gICAgICAgICAgICBpbml0aWFsQWxwaGE6IGxlYXJuaW5nUmF0ZSxcbiAgICAgICAgICAgIGFscGhhOiBsZWFybmluZ1JhdGUsXG4gICAgICAgICAgICBnYW1tYTogcmVwdWxzaW9uU3RyZW5ndGgsXG4gICAgICAgICAgICBkaW0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplcyBvcHRpbWl6YXRpb24gc3RhdGUgZm9yIHN0ZXB3aXNlIG9wdGltaXphdGlvbi5cbiAgICAgKi9cbiAgICBpbml0aWFsaXplT3B0aW1pemF0aW9uKCkge1xuICAgICAgICAvLyBBbGdvcml0aG0gc3RhdGVcbiAgICAgICAgY29uc3QgaGVhZEVtYmVkZGluZyA9IHRoaXMuZW1iZWRkaW5nO1xuICAgICAgICBjb25zdCB0YWlsRW1iZWRkaW5nID0gdGhpcy5lbWJlZGRpbmc7XG4gICAgICAgIC8vIEluaXRpYWxpemVkIGluIGluaXRpYWxpemVTaW1wbGljaWFsU2V0RW1iZWRkaW5nKClcbiAgICAgICAgY29uc3QgeyBoZWFkLCB0YWlsLCBlcG9jaHNQZXJTYW1wbGUgfSA9IHRoaXMub3B0aW1pemF0aW9uU3RhdGU7XG4gICAgICAgIGNvbnN0IG5FcG9jaHMgPSB0aGlzLmdldE5FcG9jaHMoKTtcbiAgICAgICAgY29uc3QgblZlcnRpY2VzID0gdGhpcy5ncmFwaC5uQ29scztcbiAgICAgICAgY29uc3QgeyBhLCBiIH0gPSBmaW5kQUJQYXJhbXModGhpcy5zcHJlYWQsIHRoaXMubWluRGlzdCk7XG4gICAgICAgIHRoaXMuYXNzaWduT3B0aW1pemF0aW9uU3RhdGVQYXJhbWV0ZXJzKHtcbiAgICAgICAgICAgIGhlYWRFbWJlZGRpbmcsXG4gICAgICAgICAgICB0YWlsRW1iZWRkaW5nLFxuICAgICAgICAgICAgaGVhZCxcbiAgICAgICAgICAgIHRhaWwsXG4gICAgICAgICAgICBlcG9jaHNQZXJTYW1wbGUsXG4gICAgICAgICAgICBhLFxuICAgICAgICAgICAgYixcbiAgICAgICAgICAgIG5FcG9jaHMsXG4gICAgICAgICAgICBuVmVydGljZXMsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbXByb3ZlIGFuIGVtYmVkZGluZyB1c2luZyBzdG9jaGFzdGljIGdyYWRpZW50IGRlc2NlbnQgdG8gbWluaW1pemUgdGhlXG4gICAgICogZnV6enkgc2V0IGNyb3NzIGVudHJvcHkgYmV0d2VlbiB0aGUgMS1za2VsZXRvbnMgb2YgdGhlIGhpZ2ggZGltZW5zaW9uYWxcbiAgICAgKiBhbmQgbG93IGRpbWVuc2lvbmFsIGZ1enp5IHNpbXBsaWNpYWwgc2V0cy4gSW4gcHJhY3RpY2UgdGhpcyBpcyBkb25lIGJ5XG4gICAgICogc2FtcGxpbmcgZWRnZXMgYmFzZWQgb24gdGhlaXIgbWVtYmVyc2hpcCBzdHJlbmd0aCAod2l0aCB0aGUgKDEtcCkgdGVybXNcbiAgICAgKiBjb21pbmcgZnJvbSBuZWdhdGl2ZSBzYW1wbGluZyBzaW1pbGFyIHRvIHdvcmQydmVjKS5cbiAgICAgKi9cbiAgICBvcHRpbWl6ZUxheW91dFN0ZXAobikge1xuICAgICAgICBjb25zdCB7IG9wdGltaXphdGlvblN0YXRlIH0gPSB0aGlzO1xuICAgICAgICBjb25zdCB7IGhlYWQsIHRhaWwsIGhlYWRFbWJlZGRpbmcsIHRhaWxFbWJlZGRpbmcsIGVwb2Noc1BlclNhbXBsZSwgZXBvY2hPZk5leHRTYW1wbGUsIGVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGUsIGVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlLCBtb3ZlT3RoZXIsIGluaXRpYWxBbHBoYSwgYWxwaGEsIGdhbW1hLCBhLCBiLCBkaW0sIG5FcG9jaHMsIG5WZXJ0aWNlcywgfSA9IG9wdGltaXphdGlvblN0YXRlO1xuICAgICAgICBjb25zdCBjbGlwVmFsdWUgPSA0LjA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXBvY2hzUGVyU2FtcGxlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZXBvY2hPZk5leHRTYW1wbGVbaV0gPiBuKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY29uc3QgaiA9IGhlYWRbaV07XG4gICAgICAgICAgICBjb25zdCBrID0gdGFpbFtpXTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSBoZWFkRW1iZWRkaW5nW2pdO1xuICAgICAgICAgICAgY29uc3Qgb3RoZXIgPSB0YWlsRW1iZWRkaW5nW2tdO1xuICAgICAgICAgICAgY29uc3QgZGlzdFNxdWFyZWQgPSByRGlzdChjdXJyZW50LCBvdGhlcik7XG4gICAgICAgICAgICBsZXQgZ3JhZENvZWZmID0gMDtcbiAgICAgICAgICAgIGlmIChkaXN0U3F1YXJlZCA+IDApIHtcbiAgICAgICAgICAgICAgICBncmFkQ29lZmYgPSAtMi4wICogYSAqIGIgKiBNYXRoLnBvdyhkaXN0U3F1YXJlZCwgYiAtIDEuMCk7XG4gICAgICAgICAgICAgICAgZ3JhZENvZWZmIC89IGEgKiBNYXRoLnBvdyhkaXN0U3F1YXJlZCwgYikgKyAxLjA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IGRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JhZEQgPSBjbGlwKGdyYWRDb2VmZiAqIChjdXJyZW50W2RdIC0gb3RoZXJbZF0pLCBjbGlwVmFsdWUpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRbZF0gKz0gZ3JhZEQgKiBhbHBoYTtcbiAgICAgICAgICAgICAgICBpZiAobW92ZU90aGVyKVxuICAgICAgICAgICAgICAgICAgICBvdGhlcltkXSArPSAtZ3JhZEQgKiBhbHBoYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVwb2NoT2ZOZXh0U2FtcGxlW2ldICs9IGVwb2Noc1BlclNhbXBsZVtpXTtcbiAgICAgICAgICAgIGNvbnN0IG5OZWdTYW1wbGVzID0gTWF0aC5mbG9vcigobiAtIGVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGVbaV0pIC8gZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGVbaV0pO1xuICAgICAgICAgICAgZm9yIChsZXQgcCA9IDA7IHAgPCBuTmVnU2FtcGxlczsgcCsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgayA9IHV0aWxzLnRhdVJhbmRJbnQoblZlcnRpY2VzLCB0aGlzLnJhbmRvbSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3RoZXIgPSB0YWlsRW1iZWRkaW5nW2tdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpc3RTcXVhcmVkID0gckRpc3QoY3VycmVudCwgb3RoZXIpO1xuICAgICAgICAgICAgICAgIGxldCBncmFkQ29lZmYgPSAwLjA7XG4gICAgICAgICAgICAgICAgaWYgKGRpc3RTcXVhcmVkID4gMC4wKSB7XG4gICAgICAgICAgICAgICAgICAgIGdyYWRDb2VmZiA9IDIuMCAqIGdhbW1hICogYjtcbiAgICAgICAgICAgICAgICAgICAgZ3JhZENvZWZmIC89XG4gICAgICAgICAgICAgICAgICAgICAgICAoMC4wMDEgKyBkaXN0U3F1YXJlZCkgKiAoYSAqIE1hdGgucG93KGRpc3RTcXVhcmVkLCBiKSArIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChqID09PSBrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IGRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBncmFkRCA9IDQuMDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdyYWRDb2VmZiA+IDAuMClcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyYWREID0gY2xpcChncmFkQ29lZmYgKiAoY3VycmVudFtkXSAtIG90aGVyW2RdKSwgY2xpcFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFtkXSArPSBncmFkRCAqIGFscGhhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGVbaV0gKz0gbk5lZ1NhbXBsZXMgKiBlcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZVtpXTtcbiAgICAgICAgfVxuICAgICAgICBvcHRpbWl6YXRpb25TdGF0ZS5hbHBoYSA9IGluaXRpYWxBbHBoYSAqICgxLjAgLSBuIC8gbkVwb2Nocyk7XG4gICAgICAgIG9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaCArPSAxO1xuICAgICAgICByZXR1cm4gaGVhZEVtYmVkZGluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW1wcm92ZSBhbiBlbWJlZGRpbmcgdXNpbmcgc3RvY2hhc3RpYyBncmFkaWVudCBkZXNjZW50IHRvIG1pbmltaXplIHRoZVxuICAgICAqIGZ1enp5IHNldCBjcm9zcyBlbnRyb3B5IGJldHdlZW4gdGhlIDEtc2tlbGV0b25zIG9mIHRoZSBoaWdoIGRpbWVuc2lvbmFsXG4gICAgICogYW5kIGxvdyBkaW1lbnNpb25hbCBmdXp6eSBzaW1wbGljaWFsIHNldHMuIEluIHByYWN0aWNlIHRoaXMgaXMgZG9uZSBieVxuICAgICAqIHNhbXBsaW5nIGVkZ2VzIGJhc2VkIG9uIHRoZWlyIG1lbWJlcnNoaXAgc3RyZW5ndGggKHdpdGggdGhlICgxLXApIHRlcm1zXG4gICAgICogY29taW5nIGZyb20gbmVnYXRpdmUgc2FtcGxpbmcgc2ltaWxhciB0byB3b3JkMnZlYykuXG4gICAgICovXG4gICAgb3B0aW1pemVMYXlvdXRBc3luYyhlcG9jaENhbGxiYWNrID0gKCkgPT4gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RlcCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IG5FcG9jaHMsIGN1cnJlbnRFcG9jaCB9ID0gdGhpcy5vcHRpbWl6YXRpb25TdGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWJlZGRpbmcgPSB0aGlzLm9wdGltaXplTGF5b3V0U3RlcChjdXJyZW50RXBvY2gpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcG9jaENvbXBsZXRlZCA9IHRoaXMub3B0aW1pemF0aW9uU3RhdGUuY3VycmVudEVwb2NoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRTdG9wID0gZXBvY2hDYWxsYmFjayhlcG9jaENvbXBsZXRlZCkgPT09IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0ZpbmlzaGVkID0gZXBvY2hDb21wbGV0ZWQgPT09IG5FcG9jaHM7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkU3RvcCAmJiAhaXNGaW5pc2hlZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gc3RlcCgpLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoaXNGaW5pc2hlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gc3RlcCgpLCAwKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEltcHJvdmUgYW4gZW1iZWRkaW5nIHVzaW5nIHN0b2NoYXN0aWMgZ3JhZGllbnQgZGVzY2VudCB0byBtaW5pbWl6ZSB0aGVcbiAgICAgKiBmdXp6eSBzZXQgY3Jvc3MgZW50cm9weSBiZXR3ZWVuIHRoZSAxLXNrZWxldG9ucyBvZiB0aGUgaGlnaCBkaW1lbnNpb25hbFxuICAgICAqIGFuZCBsb3cgZGltZW5zaW9uYWwgZnV6enkgc2ltcGxpY2lhbCBzZXRzLiBJbiBwcmFjdGljZSB0aGlzIGlzIGRvbmUgYnlcbiAgICAgKiBzYW1wbGluZyBlZGdlcyBiYXNlZCBvbiB0aGVpciBtZW1iZXJzaGlwIHN0cmVuZ3RoICh3aXRoIHRoZSAoMS1wKSB0ZXJtc1xuICAgICAqIGNvbWluZyBmcm9tIG5lZ2F0aXZlIHNhbXBsaW5nIHNpbWlsYXIgdG8gd29yZDJ2ZWMpLlxuICAgICAqL1xuICAgIG9wdGltaXplTGF5b3V0KGVwb2NoQ2FsbGJhY2sgPSAoKSA9PiB0cnVlKSB7XG4gICAgICAgIGxldCBpc0ZpbmlzaGVkID0gZmFsc2U7XG4gICAgICAgIGxldCBlbWJlZGRpbmcgPSBbXTtcbiAgICAgICAgd2hpbGUgKCFpc0ZpbmlzaGVkKSB7XG4gICAgICAgICAgICBjb25zdCB7IG5FcG9jaHMsIGN1cnJlbnRFcG9jaCB9ID0gdGhpcy5vcHRpbWl6YXRpb25TdGF0ZTtcbiAgICAgICAgICAgIGVtYmVkZGluZyA9IHRoaXMub3B0aW1pemVMYXlvdXRTdGVwKGN1cnJlbnRFcG9jaCk7XG4gICAgICAgICAgICBjb25zdCBlcG9jaENvbXBsZXRlZCA9IHRoaXMub3B0aW1pemF0aW9uU3RhdGUuY3VycmVudEVwb2NoO1xuICAgICAgICAgICAgY29uc3Qgc2hvdWxkU3RvcCA9IGVwb2NoQ2FsbGJhY2soZXBvY2hDb21wbGV0ZWQpID09PSBmYWxzZTtcbiAgICAgICAgICAgIGlzRmluaXNoZWQgPSBlcG9jaENvbXBsZXRlZCA9PT0gbkVwb2NocyB8fCBzaG91bGRTdG9wO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbWJlZGRpbmc7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG51bWJlciBvZiBlcG9jaHMgZm9yIG9wdGltaXppbmcgdGhlIHByb2plY3Rpb24uXG4gICAgICogTk9URTogVGhpcyBoZXVyaXN0aWMgZGlmZmVycyBmcm9tIHRoZSBweXRob24gdmVyc2lvblxuICAgICAqL1xuICAgIGdldE5FcG9jaHMoKSB7XG4gICAgICAgIGNvbnN0IGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICAgICAgaWYgKHRoaXMubkVwb2NocyA+IDApXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uRXBvY2hzO1xuICAgICAgICBpZiAoIWdyYXBoKVxuICAgICAgICAgICAgcmV0dXJuIDIwMDtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gZ3JhcGgublJvd3M7XG4gICAgICAgIGlmIChsZW5ndGggPD0gMjUwMClcbiAgICAgICAgICAgIHJldHVybiA1MDA7XG4gICAgICAgIGVsc2UgaWYgKGxlbmd0aCA8PSA1MDAwKVxuICAgICAgICAgICAgcmV0dXJuIDQwMDtcbiAgICAgICAgZWxzZSBpZiAobGVuZ3RoIDw9IDc1MDApXG4gICAgICAgICAgICByZXR1cm4gMzAwO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gMjAwO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBldWNsaWRlYW4oeCwgeSkge1xuICAgIGxldCByZXN1bHQgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeC5sZW5ndGg7IGkrKylcbiAgICAgICAgcmVzdWx0ICs9ICh4W2ldIC0geVtpXSkgKiogMjtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KHJlc3VsdCk7XG59XG5leHBvcnQgZnVuY3Rpb24gbnVtZXJpYyh4LCB5KSB7XG4gICAgY29uc3QgcmVzdWx0ID0gTWF0aC5hYnMoeCAtIHkpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnQgZnVuY3Rpb24gY29zaW5lKHgsIHkpIHtcbiAgICBsZXQgcmVzdWx0ID0gMC4wO1xuICAgIGxldCBub3JtWCA9IDAuMDtcbiAgICBsZXQgbm9ybVkgPSAwLjA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc3VsdCArPSB4W2ldICogeVtpXTtcbiAgICAgICAgbm9ybVggKz0geFtpXSAqKiAyO1xuICAgICAgICBub3JtWSArPSB5W2ldICoqIDI7XG4gICAgfVxuICAgIGlmIChub3JtWCA9PT0gMCAmJiBub3JtWSA9PT0gMClcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgZWxzZSBpZiAobm9ybVggPT09IDAgfHwgbm9ybVkgPT09IDApXG4gICAgICAgIHJldHVybiAxLjA7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gMS4wIC0gcmVzdWx0IC8gTWF0aC5zcXJ0KG5vcm1YICogbm9ybVkpO1xufVxuLyoqXG4gKiBBbiBpbnRlcmZhY2UgcmVwcmVzZW50aW5nIHRoZSBvcHRpbWl6YXRpb24gc3RhdGUgdHJhY2tlZCBiZXR3ZWVuIHN0ZXBzIG9mXG4gKiB0aGUgU0dEIG9wdGltaXphdGlvblxuICovXG5jbGFzcyBPcHRpbWl6YXRpb25TdGF0ZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudEVwb2NoID0gMDtcbiAgICAgICAgLy8gRGF0YSB0cmFja2VkIGR1cmluZyBvcHRpbWl6YXRpb24gc3RlcHMuXG4gICAgICAgIHRoaXMuaGVhZEVtYmVkZGluZyA9IFtdO1xuICAgICAgICB0aGlzLnRhaWxFbWJlZGRpbmcgPSBbXTtcbiAgICAgICAgdGhpcy5oZWFkID0gW107XG4gICAgICAgIHRoaXMudGFpbCA9IFtdO1xuICAgICAgICB0aGlzLmVwb2Noc1BlclNhbXBsZSA9IFtdO1xuICAgICAgICB0aGlzLmVwb2NoT2ZOZXh0U2FtcGxlID0gW107XG4gICAgICAgIHRoaXMuZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZSA9IFtdO1xuICAgICAgICB0aGlzLmVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlID0gW107XG4gICAgICAgIHRoaXMubW92ZU90aGVyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pbml0aWFsQWxwaGEgPSAxLjA7XG4gICAgICAgIHRoaXMuYWxwaGEgPSAxLjA7XG4gICAgICAgIHRoaXMuZ2FtbWEgPSAxLjA7XG4gICAgICAgIHRoaXMuYSA9IDEuNTc2OTQzNDYwMzExMzA3NztcbiAgICAgICAgdGhpcy5iID0gMC44OTUwNjA4Nzc5MTA5NzMzO1xuICAgICAgICB0aGlzLmRpbSA9IDI7XG4gICAgICAgIHRoaXMubkVwb2NocyA9IDUwMDtcbiAgICAgICAgdGhpcy5uVmVydGljZXMgPSAwO1xuICAgIH1cbn1cbi8qKlxuICogU3RhbmRhcmQgY2xhbXBpbmcgb2YgYSB2YWx1ZSBpbnRvIGEgZml4ZWQgcmFuZ2VcbiAqL1xuZnVuY3Rpb24gY2xpcCh4LCBjbGlwVmFsdWUpIHtcbiAgICBpZiAoeCA+IGNsaXBWYWx1ZSlcbiAgICAgICAgcmV0dXJuIGNsaXBWYWx1ZTtcbiAgICBlbHNlIGlmICh4IDwgLWNsaXBWYWx1ZSlcbiAgICAgICAgcmV0dXJuIC1jbGlwVmFsdWU7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4geDtcbn1cbi8qKlxuICogUmVkdWNlZCBFdWNsaWRlYW4gZGlzdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIHJEaXN0KHgsIHkpIHtcbiAgICBsZXQgcmVzdWx0ID0gMC4wO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeC5sZW5ndGg7IGkrKylcbiAgICAgICAgcmVzdWx0ICs9IE1hdGgucG93KHhbaV0gLSB5W2ldLCAyKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLyoqXG4gKiBGaXQgYSwgYiBwYXJhbXMgZm9yIHRoZSBkaWZmZXJlbnRpYWJsZSBjdXJ2ZSB1c2VkIGluIGxvd2VyXG4gKiBkaW1lbnNpb25hbCBmdXp6eSBzaW1wbGljaWFsIGNvbXBsZXggY29uc3RydWN0aW9uLiBXZSB3YW50IHRoZVxuICogc21vb3RoIGN1cnZlIChmcm9tIGEgcHJlLWRlZmluZWQgZmFtaWx5IHdpdGggc2ltcGxlIGdyYWRpZW50KSB0aGF0XG4gKiBiZXN0IG1hdGNoZXMgYW4gb2Zmc2V0IGV4cG9uZW50aWFsIGRlY2F5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZEFCUGFyYW1zKHNwcmVhZCwgbWluRGlzdCkge1xuICAgIGNvbnN0IGN1cnZlID0gKFthLCBiXSkgPT4gKHgpID0+IHtcbiAgICAgICAgcmV0dXJuIDEuMCAvICgxLjAgKyBhICogeCAqKiAoMiAqIGIpKTtcbiAgICB9O1xuICAgIGNvbnN0IHh2ID0gdXRpbHNcbiAgICAgICAgLmxpbmVhcigwLCBzcHJlYWQgKiAzLCAzMDApXG4gICAgICAgIC5tYXAoKHZhbCkgPT4gKHZhbCA8IG1pbkRpc3QgPyAxLjAgOiB2YWwpKTtcbiAgICBjb25zdCB5diA9IHV0aWxzLnplcm9zKHh2Lmxlbmd0aCkubWFwKCh2YWwsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGd0ZSA9IHh2W2luZGV4XSA+PSBtaW5EaXN0O1xuICAgICAgICByZXR1cm4gZ3RlID8gTWF0aC5leHAoLSh4dltpbmRleF0gLSBtaW5EaXN0KSAvIHNwcmVhZCkgOiB2YWw7XG4gICAgfSk7XG4gICAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IFswLjUsIDAuNV07XG4gICAgY29uc3QgZGF0YSA9IHsgeDogeHYsIHk6IHl2IH07XG4gICAgLy8gRGVmYXVsdCBvcHRpb25zIGZvciB0aGUgYWxnb3JpdGhtIChmcm9tIGdpdGh1YiBleGFtcGxlKVxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIGRhbXBpbmc6IDEuNSxcbiAgICAgICAgaW5pdGlhbFZhbHVlcyxcbiAgICAgICAgZ3JhZGllbnREaWZmZXJlbmNlOiAxMGUtMixcbiAgICAgICAgbWF4SXRlcmF0aW9uczogMTAwLFxuICAgICAgICBlcnJvclRvbGVyYW5jZTogMTBlLTMsXG4gICAgfTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbmV3LWNhcFxuICAgIGNvbnN0IHsgcGFyYW1ldGVyVmFsdWVzIH0gPSBMTShkYXRhLCBjdXJ2ZSwgb3B0aW9ucyk7XG4gICAgY29uc3QgW2EsIGJdID0gcGFyYW1ldGVyVmFsdWVzO1xuICAgIHJldHVybiB7IGEsIGIgfTtcbn1cbi8qKlxuICogVW5kZXIgdGhlIGFzc3VtcHRpb24gb2YgY2F0ZWdvcmljYWwgZGlzdGFuY2UgZm9yIHRoZSBpbnRlcnNlY3RpbmdcbiAqIHNpbXBsaWNpYWwgc2V0IHBlcmZvcm0gYSBmYXN0IGludGVyc2VjdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZhc3RJbnRlcnNlY3Rpb24oZ3JhcGgsIHRhcmdldCwgdW5rbm93bkRpc3QgPSAxLjAsIGZhckRpc3QgPSA1LjApIHtcbiAgICByZXR1cm4gZ3JhcGgubWFwKCh2YWx1ZSwgcm93LCBjb2wpID0+IHtcbiAgICAgICAgaWYgKHRhcmdldFtyb3ddID09PSAtMSB8fCB0YXJnZXRbY29sXSA9PT0gLTEpXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgKiBNYXRoLmV4cCgtdW5rbm93bkRpc3QpO1xuICAgICAgICBlbHNlIGlmICh0YXJnZXRbcm93XSAhPT0gdGFyZ2V0W2NvbF0pXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgKiBNYXRoLmV4cCgtZmFyRGlzdCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9KTtcbn1cbi8qKlxuICogUmVzZXQgdGhlIGxvY2FsIGNvbm5lY3Rpdml0eSByZXF1aXJlbWVudCAtLSBlYWNoIGRhdGEgc2FtcGxlIHNob3VsZFxuICogaGF2ZSBjb21wbGV0ZSBjb25maWRlbmNlIGluIGF0IGxlYXN0IG9uZSAxLXNpbXBsZXggaW4gdGhlIHNpbXBsaWNpYWwgc2V0LlxuICogV2UgY2FuIGVuZm9yY2UgdGhpcyBieSBsb2NhbGx5IHJlc2NhbGluZyBjb25maWRlbmNlcywgYW5kIHRoZW4gcmVtZXJnaW5nIHRoZVxuICogZGlmZmVyZW50IGxvY2FsIHNpbXBsaWNpYWwgc2V0cyB0b2dldGhlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0TG9jYWxDb25uZWN0aXZpdHkoc2ltcGxpY2lhbFNldCkge1xuICAgIHNpbXBsaWNpYWxTZXQgPSBtYXRyaXgubm9ybWFsaXplKHNpbXBsaWNpYWxTZXQsIFwibWF4XCIgLyogbWF0cml4Lk5vcm1UeXBlLm1heCAqLyk7XG4gICAgY29uc3QgdHJhbnNwb3NlID0gbWF0cml4LnRyYW5zcG9zZShzaW1wbGljaWFsU2V0KTtcbiAgICBjb25zdCBwcm9kTWF0cml4ID0gbWF0cml4LnBhaXJ3aXNlTXVsdGlwbHkodHJhbnNwb3NlLCBzaW1wbGljaWFsU2V0KTtcbiAgICBzaW1wbGljaWFsU2V0ID0gbWF0cml4LmFkZChzaW1wbGljaWFsU2V0LCBtYXRyaXguc3VidHJhY3QodHJhbnNwb3NlLCBwcm9kTWF0cml4KSk7XG4gICAgcmV0dXJuIG1hdHJpeC5lbGltaW5hdGVaZXJvcyhzaW1wbGljaWFsU2V0KTtcbn1cbi8qKlxuICogR2l2ZW4gaW5kaWNlcyBhbmQgd2VpZ2h0cyBhbmQgYW4gb3JpZ2luYWwgZW1iZWRkaW5nc1xuICogaW5pdGlhbGl6ZSB0aGUgcG9zaXRpb25zIG9mIG5ldyBwb2ludHMgcmVsYXRpdmUgdG8gdGhlXG4gKiBpbmRpY2VzIGFuZCB3ZWlnaHRzIChvZiB0aGVpciBuZWlnaGJvcnMgaW4gdGhlIHNvdXJjZSBkYXRhKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRUcmFuc2Zvcm0oaW5kaWNlcywgd2VpZ2h0cywgZW1iZWRkaW5nKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gdXRpbHNcbiAgICAgICAgLnplcm9zKGluZGljZXMubGVuZ3RoKVxuICAgICAgICAubWFwKChfeikgPT4gdXRpbHMuemVyb3MoZW1iZWRkaW5nWzBdLmxlbmd0aCkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGluZGljZXNbMF0ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgZW1iZWRkaW5nWzBdLmxlbmd0aDsgZCsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYSA9IGluZGljZXNbaV1bal07XG4gICAgICAgICAgICAgICAgcmVzdWx0W2ldW2RdICs9IHdlaWdodHNbaV1bal0gKiBlbWJlZGRpbmdbYV1bZF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRXMWhjQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluVnRZWEF1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRXNORUpCUVRSQ08wRkJRelZDT3pzN096czdPenM3T3pzN096czdPenRIUVdsQ1J6dEJRVVZJT3pzN096dEhRVXRITzBGQlJVZzdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3UjBFclFrYzdRVUZGU0N4UFFVRlBMRXRCUVVzc1NVRkJTU3hOUVVGTkxGRkJRVkVzUTBGQlF6dEJRVU12UWl4UFFVRlBMRXRCUVVzc1RVRkJUU3hOUVVGTkxGVkJRVlVzUTBGQlF6dEJRVU51UXl4UFFVRlBMRXRCUVVzc1UwRkJVeXhOUVVGTkxHTkJRV01zUTBGQlF6dEJRVU14UXl4UFFVRlBMRXRCUVVzc1NVRkJTU3hOUVVGTkxGRkJRVkVzUTBGQlF6dEJRVU12UWl4UFFVRlBMRXRCUVVzc1MwRkJTeXhOUVVGTkxGTkJRVk1zUTBGQlF6dEJRVU5xUXl4UFFVRlBMRVZCUVVVc1RVRkJUU3gzUWtGQmQwSXNRMEZCUXp0QlFXRjRReXhOUVVGTkxHdENRVUZyUWl4SFFVRkhMRWxCUVVrc1EwRkJRenRCUVVOb1F5eE5RVUZOTEdkQ1FVRm5RaXhIUVVGSExFbEJRVWtzUTBGQlF6dEJRVzFJT1VJN096czdPenM3T3pzN096czdPenM3T3pzN1IwRnRRa2M3UVVGRFNDeE5RVUZOTEU5QlFVOHNTVUZCU1R0SlFUSkRaaXhKUVVGSkxGTkJRVk03VVVGRFdDeFBRVUZQTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNN1NVRkRla0lzUTBGQlF6dEpRVU5FTEZsQlFWa3NVMEZCZVVJc1JVRkJSVHRSUVRkREwwSXNhVUpCUVZrc1IwRkJSeXhIUVVGSExFTkJRVU03VVVGRGJrSXNjMEpCUVdsQ0xFZEJRVWNzUjBGQlJ5eERRVUZETzFGQlEzaENMRmxCUVU4c1IwRkJSeXhIUVVGSExFTkJRVU03VVVGRFpDeG5Ra0ZCVnl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOb1FpeFpRVUZQTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTFvc1pVRkJWU3hIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU5vUWl4MVFrRkJhMElzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEZGtJc1YwRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZEY2tJc2MwSkJRV2xDTEVkQlFVY3NSMEZCUnl4RFFVRkRPMUZCUTNoQ0xHdENRVUZoTEVkQlFVY3NSMEZCUnl4RFFVRkRPMUZCUTNCQ0xGZEJRVTBzUjBGQlJ5eEhRVUZITEVOQlFVTTdVVUZEWWl4MVFrRkJhMElzUjBGQlJ5eEhRVUZITEVOQlFVTTdVVUZGYWtNc0swSkJRU3RDTzFGQlEzWkNMR2xDUVVGWkxHZEVRVUUwUWp0UlFVTjRReXhwUWtGQldTeEhRVUZITEVkQlFVY3NRMEZCUXp0UlFVTnVRaXh4UWtGQlowSXNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkZkRUlzWlVGQlZTeEhRVUZsTEU5QlFVOHNRMEZCUXp0UlFWTnFReXhyUWtGQllTeEhRVUZITEV0QlFVc3NRMEZCUXp0UlFVTjBRaXhoUVVGUkxFZEJRVzlDTEVWQlFVVXNRMEZCUXp0UlFWTjJReXh6UWtGQmMwSTdVVUZEWkN4alFVRlRMRWRCUVdVc1JVRkJSU3hEUVVGRE8xRkJRek5DTEhOQ1FVRnBRaXhIUVVGSExFbEJRVWtzYVVKQlFXbENMRVZCUVVVc1EwRkJRenRSUVU5c1JDeE5RVUZOTEZGQlFWRXNSMEZCUnl4RFFVRkRMRWRCUVhsQ0xFVkJRVVVzUlVGQlJUdFpRVU0zUXl4WlFVRlpPMWxCUTFvc1NVRkJTU3hOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NVMEZCVXp0blFrRkJSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRM3BFTEVOQlFVTXNRMEZCUXp0UlFVVkdMRkZCUVZFc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dFJRVU4yUWl4UlFVRlJMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU03VVVGRGVrSXNVVUZCVVN4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVOQlFVTTdVVUZET1VJc1VVRkJVU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzFGQlEzQkNMRkZCUVZFc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF6dFJRVU40UWl4UlFVRlJMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03VVVGRGNFSXNVVUZCVVN4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8xRkJRM1pDTEZGQlFWRXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eERRVUZETzFGQlF5OUNMRkZCUVZFc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dFJRVU51UWl4UlFVRlJMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNRMEZCUXp0UlFVTTVRaXhSUVVGUkxFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTTdVVUZETVVJc1VVRkJVU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzFGQlEyNUNMRkZCUVZFc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4RFFVRkRPMUZCUXk5Q0xFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1IwRkJSeXhOUVVGTkxFTkJRVU1zVlVGQlZTeEpRVUZKTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWxCUVVrc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRPMGxCUTNoR0xFTkJRVU03U1VGRlJEczdUMEZGUnp0SlFVTklMRWRCUVVjc1EwRkJReXhEUVVGVE8xRkJRMWdzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOMFFpeEpRVUZKTEVOQlFVTXNZMEZCWXl4RlFVRkZMRU5CUVVNN1VVRkZkRUlzVDBGQlR5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRPMGxCUTNoQ0xFTkJRVU03U1VGRlJEczdPMDlCUjBjN1NVRkRTQ3hMUVVGTExFTkJRVU1zVVVGQlVTeERRVU5hTEVOQlFWTXNSVUZEVkN4WFFVRnZSQ3hIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTzFGQlJUbEVMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGZEVJc1RVRkJUU3hKUVVGSkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03VVVGRGVrTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRE8wbEJRM2hDTEVOQlFVTTdTVUZGUkRzN1QwRkZSenRKUVVOSUxIVkNRVUYxUWl4RFFVRkRMRU5CUVZjc1JVRkJSU3hUUVVFclFpeEZRVUZGTzFGQlEzQkZMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlExZ3NTVUZCU1N4RFFVRkRMRmxCUVZrc1IwRkJSeXhOUVVGTkxFTkJRVU1zV1VGQldTeEpRVUZKTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNN1VVRkROMFFzU1VGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4TlFVRk5MRU5CUVVNc1dVRkJXU3hKUVVGSkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTTdVVUZETjBRc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4SFFVRkhMRTFCUVUwc1EwRkJReXhuUWtGQlowSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTTdTVUZETTBVc1EwRkJRenRKUVVWRU96dFBRVVZITzBsQlEwZ3NhVUpCUVdsQ0xFTkJRVU1zVlVGQmMwSXNSVUZCUlN4WlFVRjNRanRSUVVOb1JTeEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRlZCUVZVc1EwRkJRenRSUVVNM1FpeEpRVUZKTEVOQlFVTXNXVUZCV1N4SFFVRkhMRmxCUVZrc1EwRkJRenRKUVVOdVF5eERRVUZETzBsQlJVUTdPenM3TzA5QlMwYzdTVUZEU0N4aFFVRmhMRU5CUVVNc1EwRkJVenRSUVVOeVFpeEpRVUZKTEVOQlFVTXNRMEZCUXl4TlFVRk5MRWxCUVVrc1NVRkJTU3hEUVVGRExGVkJRVlU3V1VGRE4wSXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXd5UWtGQk1rSXNRMEZCUXl4RFFVRkRMRTFCUVUwc01rSkJRVEpDTEVsQlFVa3NRMEZCUXl4VlFVRlZMSE5FUVVGelJDeERRVUZETEVOQlFVTTdVVUZIZGtvc05FVkJRVFJGTzFGQlF6VkZMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMR0ZCUVdFN1dVRkRjRU1zVDBGQlR5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RlFVRkZMRU5CUVVNN1VVRkhNMElzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkZXQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZWQlFWVXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVU3V1VGRE1VTXNUVUZCVFN4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRelZETEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1ZVRkJWU3hEUVVGRExGVkJRVlVzUTBGQlF6dFpRVU40UXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hIUVVGSExGVkJRVlVzUTBGQlF5eFpRVUZaTEVOQlFVTTdVMEZETjBNN1VVRkZSQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4clFrRkJhMElzUTBGRGJFTXNRMEZCUXl4RlFVTkVMRWxCUVVrc1EwRkJReXhWUVVGVkxFVkJRMllzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZEYmtJc1EwRkJRenRSUVVWR0xIbEVRVUY1UkR0UlFVTjZSQ3hKUVVGSkxFTkJRVU1zWVVGQllTeEZRVUZGTEVOQlFVTTdVVUZEY2tJc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNaVUZCWlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVE5ETEhsRVFVRjVSRHRSUVVONlJDeEpRVUZKTEVOQlFVTXNiVU5CUVcxRExFVkJRVVVzUTBGQlF6dFJRVVV6UXl4TlFVRk5MRVZCUTBvc1NVRkJTU3hGUVVOS0xFbEJRVWtzUlVGRFNpeGxRVUZsTEVkQlEyaENMRWRCUVVjc1NVRkJTU3hEUVVGRExHZERRVUZuUXl4RlFVRkZMRU5CUVVNN1VVRkZOVU1zY1VOQlFYRkRPMUZCUTNKRExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEyNURMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRE8xRkJRMjVETEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eGxRVUZsTEVkQlFVY3NaVUZCWlN4RFFVRkRPMUZCUlhwRUxIbERRVUY1UXp0UlFVTjZReXhKUVVGSkxFTkJRVU1zYzBKQlFYTkNMRVZCUVVVc1EwRkJRenRSUVVNNVFpeEpRVUZKTEVOQlFVTXNNRUpCUVRCQ0xFVkJRVVVzUTBGQlF6dFJRVU5zUXl4SlFVRkpMRU5CUVVNc1lVRkJZU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVVV4UWl4UFFVRlBMRWxCUVVrc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF6dEpRVU16UWl4RFFVRkRPMGxCUlU4c1lVRkJZVHRSUVVOdVFpeE5RVUZOTEVWQlFVTXNXVUZCV1N4RlFVRkZMR05CUVdNc1JVRkJReXhIUVVGSExGTkJRVk1zUTBGQlF5eHRRa0ZCYlVJc1EwRkRiRVVzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZEYUVJc1EwRkJRenRSUVVOR0xFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NXVUZCV1N4RFFVRkRPMUZCUTJwRExFbEJRVWtzUTBGQlF5eGpRVUZqTEVkQlFVY3NZMEZCWXl4RFFVRkRPMUZCUTNKRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NVMEZCVXl4RFFVRkRMSFZDUVVGMVFpeERRVUZETEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRKUVVOdVJTeERRVUZETzBsQlJVOHNaVUZCWlN4RFFVRkRMRU5CUVZNN1VVRkRMMElzVFVGQlRTeFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZjc1EwRkJRenRSUVVOd1F5eE5RVUZOTEZsQlFWa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJZU3hEUVVGRE8xRkJRM2hETEUxQlFVMHNTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1VVRkRiRU1zVFVGQlRTeFhRVUZYTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1dVRkJXU3hEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRemxFTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eFZRVUZWTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8xbEJRekZETEUxQlFVMHNSMEZCUnl4SFFVRkhMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU14UWl4TlFVRk5MRk5CUVZNc1IwRkJSeXhaUVVGWkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEYkVNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdaMEpCUTI1RExFMUJRVTBzVVVGQlVTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRGVFSXNUVUZCVFN4UlFVRlJMRWRCUVVjc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTTVRaXhKUVVGSkxGRkJRVkVzUjBGQlJ5eERRVUZETzI5Q1FVTmtMRmRCUVZjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEZGQlFWRXNSVUZCUlN4UlFVRlJMRU5CUVVNc1EwRkJRenRoUVVNeFF6dFRRVU5HTzFGQlJVUXNUVUZCVFN4VFFVRlRMRWRCUVVjc1RVRkJUU3hEUVVGRExGTkJRVk1zUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0UlFVTm9SQ3hQUVVGUExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNWMEZCVnl4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRE8wbEJRMmhFTEVOQlFVTTdTVUZGUkRzN1QwRkZSenRKUVVOSUxGTkJRVk1zUTBGQlF5eFhRVUZ0UWp0UlFVTXpRaXd5UWtGQk1rSTdVVUZETTBJc1RVRkJUU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjJRaXhKUVVGSkxFOUJRVThzUzBGQlN5eFRRVUZUTEVsQlFVa3NUMEZCVHl4RFFVRkRMRTFCUVUwc1MwRkJTeXhEUVVGRE8xbEJReTlETEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNRMEZCUXp0UlFVY3pReXhKUVVGSkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETEd0Q1FVRnJRaXhEUVVGRExFTkJRVU03VVVGRGRrVXNWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNSVUZCUlN4VlFVRlZMRU5CUVVNc1EwRkJRenRSUVVOc1JDeE5RVUZOTEVsQlFVa3NSMEZCUnl4VFFVRlRMRU5CUVVNc1owSkJRV2RDTEVOQlEzSkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRMklzVDBGQlR5eEZRVU5RTEZkQlFWY3NSVUZEV0N4VlFVRlZMRVZCUTFZc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGRGJrSXNTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkRha0lzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZEV2l4RFFVRkRPMUZCUlVZc1RVRkJUU3hOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4UFFVRlBMRVZCUVVVc1NVRkJTU3hEUVVGRExGZEJRVmNzUlVGQlJTeEpRVUZKTEVWQlFVVXNWMEZCVnl4RFFVRkRMRU5CUVVNN1VVRkZla1VzU1VGQlNTeEZRVUZETEU5QlFVOHNSVUZCUlN4UFFVRlBMRVZCUVVVc1UwRkJVeXhGUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVVMVJDeFBRVUZQTEVkQlFVY3NUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRNVVFzVTBGQlV5eEhRVUZITEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlRsRUxFMUJRVTBzZVVKQlFYbENMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpGRkxFMUJRVTBzUlVGQlF5eE5RVUZOTEVWQlFVVXNTVUZCU1N4RlFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVTXpReXhUUVVGVExFVkJRMVFzU1VGQlNTeERRVUZETEZWQlFWVXNSVUZEWml4NVFrRkJlVUlzUTBGRE1VSXNRMEZCUXp0UlFVVkdMRTFCUVUwc1JVRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVsQlFVa3NSVUZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXd3UWtGQk1FSXNRMEZEZUVRc1QwRkJUeXhGUVVOUUxGTkJRVk1zUlVGRFZDeE5RVUZOTEVWQlEwNHNTVUZCU1N4RFFVTk1MRU5CUVVNN1VVRkZSaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eERRVUZETEZkQlFWY3NRMEZCUXl4TlFVRk5MRVZCUVVVc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzFGQlEyeEVMRWxCUVVrc1MwRkJTeXhIUVVGSExFbEJRVWtzVFVGQlRTeERRVUZETEZsQlFWa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVVTFSQ3h2UlVGQmIwVTdVVUZEY0VVc2MwVkJRWE5GTzFGQlEzUkZMQ3RFUVVFclJEdFJRVVV2UkN4TlFVRk5MRTFCUVUwc1IwRkJSeXhOUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFVc3NaME5CUVhGQ0xFTkJRVU03VVVGRk0wUXNUVUZCVFN4VFFVRlRMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTjRReXhOUVVGTkxFOUJRVThzUjBGQlJ5eFhRVUZYTEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUlc1RExFMUJRVTBzVVVGQlVTeEhRVUZITEV0QlFVc3NRMEZCUXl4VFFVRlRMRU5CUXpsQ0xGTkJRVk1zUTBGQlF5eFBRVUZQTEVWQlEycENMRTlCUVU4c1JVRkRVQ3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVU5vUWl4RFFVRkRPMUZCUlVZc1RVRkJUU3hSUVVGUkxFZEJRVWNzUzBGQlN5eERRVUZETEZOQlFWTXNRMEZET1VJc1UwRkJVeXhEUVVGRExFMUJRVTBzUlVGRGFFSXNUMEZCVHl4RlFVTlFMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRMmhDTEVOQlFVTTdVVUZGUml4TlFVRk5MRk5CUVZNc1IwRkJSeXhoUVVGaExFTkJRVU1zVVVGQlVTeEZRVUZGTEZGQlFWRXNSVUZCUlN4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03VVVGRmNFVXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFsQlF6VkNMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEYkVJc1MwRkJTeXhEUVVGRExFdEJRVXNzU1VGQlNTeExRVUZMTEVOQlFVTXNRMEZCUXp0blFrRkRjRUlzUjBGQlJ5eERRVUZETEVOQlFVTTdaMEpCUTB3c1JVRkJSU3hEUVVGRE8xRkJSVkFzVFVGQlRTeFJRVUZSTEVkQlFVY3NTMEZCU3p0aFFVTnVRaXhUUVVGVExFVkJRVVU3WVVGRFdDeE5RVUZOTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGNFUXNTMEZCU3l4SFFVRkhMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1MwRkJTeXhIUVVGSExGRkJRVkVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjJSU3hMUVVGTExFZEJRVWNzVFVGQlRTeERRVUZETEdOQlFXTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVWeVF5eE5RVUZOTEdWQlFXVXNSMEZCUnl4SlFVRkpMRU5CUVVNc2JVSkJRVzFDTEVOQlF6bERMRXRCUVVzc1EwRkJReXhUUVVGVExFVkJRVVVzUlVGRGFrSXNUMEZCVHl4RFFVTlNMRU5CUVVNN1VVRkRSaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1VVRkROMElzVFVGQlRTeEpRVUZKTEVkQlFVY3NTMEZCU3l4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8xRkJSVGRDTEc5RlFVRnZSVHRSUVVOd1JTeEpRVUZKTEVOQlFVTXNhVU5CUVdsRExFTkJRVU03V1VGRGNrTXNZVUZCWVN4RlFVRkZMRk5CUVZNN1dVRkRlRUlzWVVGQllTeEZRVUZGTEVsQlFVa3NRMEZCUXl4VFFVRlRPMWxCUXpkQ0xFbEJRVWs3V1VGRFNpeEpRVUZKTzFsQlEwb3NXVUZCV1N4RlFVRkZMRU5CUVVNN1dVRkRaaXhQUVVGUE8xbEJRMUFzVTBGQlV5eEZRVUZGTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRE4wSXNaVUZCWlR0VFFVTm9RaXhEUVVGRExFTkJRVU03VVVGRFNDeEpRVUZKTEVOQlFVTXNNRUpCUVRCQ0xFVkJRVVVzUTBGQlF6dFJRVVZzUXl4UFFVRlBMRWxCUVVrc1EwRkJReXhqUVVGakxFVkJRVVVzUTBGQlF6dEpRVU12UWl4RFFVRkRPMGxCUlVRN096dFBRVWRITzBsQlEwc3NiVU5CUVcxRE8xRkJRM3BETEUxQlFVMHNSVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEzQkNMRWxCUVVrc1EwRkJReXhGUVVGRk8xbEJRMHdzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4TFFVRkxMRU5CUVVNc1EwRkJReXhOUVVGTk8yZENRVU4yUWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExHbERRVUZwUXl4RFFVRkRMRU5CUVVNN1dVRkhja1FzU1VGQlNTeEpRVUZKTEVOQlFVTXNXVUZCV1N4cFJFRkJOa0lzUlVGQlJUdG5Ra0ZEYkVRc1RVRkJUU3hGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4SFFVRkhMRU5CUVVNN1owSkJRMjVETEUxQlFVMHNUMEZCVHl4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU03WjBKQlEzUkZMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEc5RFFVRnZReXhEUVVOd1JDeEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVTldMRU5CUVVNc1JVRkRSQ3hQUVVGUExFTkJRMUlzUTBGQlF6dGhRVU5JTzFsQlEwUXNhVVZCUVdsRk8xTkJRMnhGTzBsQlEwZ3NRMEZCUXp0SlFVVkVPenRQUVVWSE8wbEJRMGdzU1VGQlNUdFJRVU5HTEUxQlFVMHNSVUZCUXl4WlFVRlpMRVZCUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNN1VVRkZPVU1zU1VGQlNTeFpRVUZaTEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZVc1JVRkJSVHRaUVVOc1F5eEpRVUZKTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTTdVVUZGZUVNc1QwRkJUeXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1dVRkJXU3hEUVVGRE8wbEJRemRETEVOQlFVTTdTVUZGUkRzN1QwRkZSenRKUVVOSUxGbEJRVms3VVVGRFZpeFBRVUZQTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNN1NVRkRlRUlzUTBGQlF6dEpRVVZFT3pzN08wOUJTVWM3U1VGRFN5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGVE8xRkJRMmhETEUxQlFVMHNSVUZCUXl4VlFVRlZMRVZCUVVVc1ZVRkJWU3hGUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEzUkRMRTFCUVUwc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlV5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGRFUXNUVUZCVFN4bFFVRmxMRWRCUVVjc1UwRkJVeXhEUVVGRExHRkJRV0VzUTBGQlF5eFZRVUZWTEVWQlFVVXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xRkJSWHBGTEcxRVFVRnRSRHRSUVVOdVJDeE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVZNc1JVRkJSU3hGUVVGRk8xbEJRekZDTEU5QlFVOHNRMEZCUXl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzWkRMRU5CUVVNc1EwRkJRenRSUVVWR0xFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6ZEVMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlc1RkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFVkJRVVVzVlVGQlZTeEZRVUZGTEUxQlFVMHNSVUZCUlN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03VVVGRmNFVXNUVUZCVFN4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1VVRkRjRVFzVFVGQlRTeEZRVUZETEU5QlFVOHNSVUZCUlN4UFFVRlBMRVZCUVVNc1IwRkJSeXhsUVVGbExFTkJRM2hETEVOQlFVTXNSVUZEUkN4VFFVRlRMRVZCUTFRc1ZVRkJWU3hGUVVOV0xFMUJRVTBzUTBGRFVDeERRVUZETzFGQlEwWXNUMEZCVHl4RlFVRkRMRlZCUVZVc1JVRkJSU3hQUVVGUExFVkJRVVVzV1VGQldTeEZRVUZGTEU5QlFVOHNSVUZCUXl4RFFVRkRPMGxCUTNSRUxFTkJRVU03U1VGRlJEczdPenM3T3p0UFFVOUhPMGxCUTBzc2EwSkJRV3RDTEVOQlEzaENMRU5CUVZNc1JVRkRWQ3hWUVVGclFpeEZRVU5zUWl4aFFVRmhMRWRCUVVjc1IwRkJSenRSUVVWdVFpeE5RVUZOTEVWQlFVTXNWVUZCVlN4SFFVRkhMRVZCUVVVc1JVRkJSU3haUVVGWkxFZEJRVWNzUlVGQlJTeEZRVUZGTEdsQ1FVRnBRaXhGUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETzFGQlJYSkZMRTFCUVUwc1JVRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeEZRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVU16UXl4WlFVRlpMRVZCUTFvc1ZVRkJWU3hGUVVOV0xHbENRVUZwUWl4RFFVTnNRaXhEUVVGRE8xRkJSVVlzVFVGQlRTeEZRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETERCQ1FVRXdRaXhEUVVONFJDeFZRVUZWTEVWQlExWXNXVUZCV1N4RlFVTmFMRTFCUVUwc1JVRkRUaXhKUVVGSkxFTkJRMHdzUTBGQlF6dFJRVVZHTEUxQlFVMHNTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1VVRkRiRU1zVFVGQlRTeFpRVUZaTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1dVRkJXU3hEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJSWEpGTEUxQlFVMHNVMEZCVXl4SFFVRkhMRTFCUVUwc1EwRkJReXhUUVVGVExFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTTdVVUZEYWtRc1RVRkJUU3hWUVVGVkxFZEJRVWNzVFVGQlRTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExGbEJRVmtzUlVGQlJTeFRRVUZUTEVOQlFVTXNRMEZCUXp0UlFVVndSU3hOUVVGTkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zV1VGQldTeEZRVUZGTEZOQlFWTXNRMEZCUXl4RlFVRkZMRlZCUVZVc1EwRkJReXhEUVVGRE8xRkJRek5GTEUxQlFVMHNRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJReXhqUVVGakxFTkJRVU1zUTBGQlF5eEZRVUZGTEdGQlFXRXNRMEZCUXl4RFFVRkRPMUZCUTJ4RUxFMUJRVTBzUTBGQlF5eEhRVUZITEUxQlFVMHNRMEZCUXl4alFVRmpMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFZEJRVWNzUjBGQlJ5eGhRVUZoTEVOQlFVTXNRMEZCUXp0UlFVTnFSU3hOUVVGTkxFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFJRVVZvUXl4UFFVRlBMRTFCUVUwc1EwRkJRenRKUVVOb1FpeERRVUZETzBsQlJVUTdPenM3TzA5QlMwYzdTVUZEU3l4dlEwRkJiME1zUTBGRE1VTXNZVUZCYTBNc1JVRkRiRU1zVFVGQlowSXNSVUZEYUVJc1QwRkJaU3hGUVVObUxGZEJRVmNzUjBGQlJ5eEhRVUZITzFGQlJXcENMRWxCUVVrc1dVRkJXU3hIUVVGSExHZENRVUZuUWl4RFFVTnFReXhoUVVGaExFVkJRMklzVFVGQlRTeEZRVU5PTEZkQlFWY3NSVUZEV0N4UFFVRlBMRU5CUTFJc1EwRkJRenRSUVVOR0xGbEJRVmtzUjBGQlJ5eE5RVUZOTEVOQlFVTXNZMEZCWXl4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8xRkJRMjVFTEU5QlFVOHNjMEpCUVhOQ0xFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTTdTVUZET1VNc1EwRkJRenRKUVVWRU96czdPenM3VDBGTlJ6dEpRVU5MTEdsQ1FVRnBRaXhEUVVOMlFpeFRRVUZyUWl4RlFVTnNRaXhEUVVGVExFVkJRMVFzYVVKQlFXbENMRWRCUVVjc1IwRkJSeXhGUVVOMlFpeExRVUZMTEVkQlFVY3NSVUZCUlN4RlFVTldMRk5CUVZNc1IwRkJSeXhIUVVGSE8xRkJSV1lzVFVGQlRTeE5RVUZOTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTTdVVUZEZGtRc1RVRkJUU3hIUVVGSExFZEJRVWNzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03VVVGRE1VTXNUVUZCVFN4TlFVRk5MRWRCUVVjc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1VVRkZOME1zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRla01zU1VGQlNTeEZRVUZGTEVkQlFVY3NSMEZCUnl4RFFVRkRPMWxCUTJJc1NVRkJTU3hGUVVGRkxFZEJRVWNzVVVGQlVTeERRVUZETzFsQlEyeENMRWxCUVVrc1IwRkJSeXhIUVVGSExFZEJRVWNzUTBGQlF6dFpRVVZrTERaRVFVRTJSRHRaUVVNM1JDeE5RVUZOTEZsQlFWa3NSMEZCUnl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGJFTXNUVUZCVFN4WlFVRlpMRWRCUVVjc1dVRkJXU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlJYcEVMRWxCUVVrc1dVRkJXU3hEUVVGRExFMUJRVTBzU1VGQlNTeHBRa0ZCYVVJc1JVRkJSVHRuUWtGRE5VTXNUVUZCVFN4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhEUVVGRE8yZENRVU0xUXl4TlFVRk5MR0ZCUVdFc1IwRkJSeXhwUWtGQmFVSXNSMEZCUnl4TFFVRkxMRU5CUVVNN1owSkJRMmhFTEVsQlFVa3NTMEZCU3l4SFFVRkhMRU5CUVVNc1JVRkJSVHR2UWtGRFlpeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1dVRkJXU3hEUVVGRExFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRha01zU1VGQlNTeGhRVUZoTEVkQlFVY3NhMEpCUVd0Q0xFVkJRVVU3ZDBKQlEzUkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03TkVKQlEwb3NZVUZCWVN4SFFVRkhMRU5CUVVNc1dVRkJXU3hEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEZsQlFWa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHhRa0ZEYmtVN2FVSkJRMFk3Y1VKQlFVMDdiMEpCUTB3c1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEdGQlFXRXNSMEZCUnl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03YVVKQlF6RkRPMkZCUTBZN2FVSkJRVTBzU1VGQlNTeFpRVUZaTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkJSVHRuUWtGRGJFTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNN1lVRkRiRU03V1VGRlJDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUzBGQlN5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMmRDUVVNNVFpeEpRVUZKTEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNN1owSkJRMllzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3YjBKQlF6VkRMRTFCUVUwc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUTI1RExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTTdkMEpCUTFBc1NVRkJTU3hKUVVGSkxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZET3p0M1FrRkZOMElzU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXp0cFFrRkRaanRuUWtGRlJDeEpRVUZKTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hIUVVGSExFMUJRVTBzUTBGQlF5eEhRVUZITEd0Q1FVRnJRanR2UWtGRE9VTXNUVUZCVFR0blFrRkhVaXhKUVVGSkxFbEJRVWtzUjBGQlJ5eE5RVUZOTEVWQlFVVTdiMEpCUTJwQ0xFVkJRVVVzUjBGQlJ5eEhRVUZITEVOQlFVTTdiMEpCUTFRc1IwRkJSeXhIUVVGSExFTkJRVU1zUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJRenRwUWtGRGRrSTdjVUpCUVUwN2IwSkJRMHdzUlVGQlJTeEhRVUZITEVkQlFVY3NRMEZCUXp0dlFrRkRWQ3hKUVVGSkxFVkJRVVVzUzBGQlN5eFJRVUZSTzNkQ1FVTnFRaXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZET3p0M1FrRkZWQ3hIUVVGSExFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRE8ybENRVU42UWp0aFFVTkdPMWxCUlVRc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXp0WlFVVm9RaXcyUkVGQk5rUTdXVUZETjBRc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NSMEZCUnl4RlFVRkZPMmRDUVVOb1FpeE5RVUZOTEdkQ1FVRm5RaXhIUVVGSExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNN1owSkJRMnhFTEVsQlFVa3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExHZENRVUZuUWl4SFFVRkhMR2RDUVVGblFqdHZRa0ZEYWtRc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEdkQ1FVRm5RaXhIUVVGSExHZENRVUZuUWl4RFFVRkRPMkZCUTI1RU8ybENRVUZOTzJkQ1FVTk1MRTFCUVUwc1lVRkJZU3hIUVVGSExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkROVVFzU1VGQlNTeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1owSkJRV2RDTEVkQlFVY3NZVUZCWVR0dlFrRkRPVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMR2RDUVVGblFpeEhRVUZITEdGQlFXRXNRMEZCUXp0aFFVTm9SRHRUUVVOR08xRkJSVVFzVDBGQlR5eEZRVUZETEUxQlFVMHNSVUZCUlN4TlFVRk5MRVZCUVVVc1NVRkJTU3hGUVVGRkxFZEJRVWNzUlVGQlF5eERRVUZETzBsQlEzSkRMRU5CUVVNN1NVRkZSRHM3T3pzN1QwRkxSenRKUVVOTExEQkNRVUV3UWl4RFFVTm9ReXhWUVVGdFFpeEZRVU51UWl4WlFVRnhRaXhGUVVOeVFpeE5RVUZuUWl4RlFVTm9RaXhKUVVGak8xRkJSV1FzVFVGQlRTeFJRVUZSTEVkQlFVY3NWVUZCVlN4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVOdVF5eE5RVUZOTEZWQlFWVXNSMEZCUnl4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETzFGQlJYaERMRTFCUVUwc1NVRkJTU3hIUVVGSExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNVVUZCVVN4SFFVRkhMRlZCUVZVc1EwRkJReXhEUVVGRE8xRkJRMmhFTEUxQlFVMHNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlVTeEhRVUZITEZWQlFWVXNRMEZCUXl4RFFVRkRPMUZCUTJoRUxFMUJRVTBzU1VGQlNTeEhRVUZITEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1VVRkJVU3hIUVVGSExGVkJRVlVzUTBGQlF5eERRVUZETzFGQlJXaEVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4UlFVRlJMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRGFrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEZWQlFWVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRuUWtGRGJrTXNTVUZCU1N4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8yZENRVU5hTEVsQlFVa3NWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0dlFrRkRla0lzVTBGQlV5eERRVUZETEcxRFFVRnRRenRuUWtGRkwwTXNTVUZCU1N4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXp0dlFrRkRlRUlzUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXp0eFFrRkRVQ3hKUVVGSkxGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NSMEZCUnp0dlFrRkRNVU1zUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXpzN2IwSkJSVllzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUjJoRkxFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NWVUZCVlN4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dG5Ra0ZETjBJc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eFZRVUZWTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1ZVRkJWU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVNMVF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRlZCUVZVc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdZVUZEYUVNN1UwRkRSanRSUVVWRUxFOUJRVThzUlVGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkZMRWxCUVVrc1JVRkJReXhEUVVGRE8wbEJRelZDTEVOQlFVTTdTVUZGUkRzN096czdUMEZMUnp0SlFVTkxMR2REUVVGblF6dFJRVU4wUXl4TlFVRk5MRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTTdVVUZGYkVNc1RVRkJUU3hGUVVGRExGZEJRVmNzUlVGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTXpRaXhOUVVGTkxGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRE8xRkJRek5ETEVsQlFVa3NVVUZCVVN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOcVFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVjBGQlZ5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVNelF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRE4wSXNTVUZCU1N4UlFVRlJMRWRCUVVjc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZETTBJc1VVRkJVU3hIUVVGSExFdEJRVXNzUTBGQlF6dFRRVU53UWp0UlFVVkVMRTFCUVUwc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFVkJRVVU3V1VGRGNrTXNTVUZCU1N4TFFVRkxMRWRCUVVjc1VVRkJVU3hIUVVGSExFOUJRVTg3WjBKQlF6VkNMRTlCUVU4c1EwRkJReXhEUVVGRE96dG5Ra0ZGVkN4UFFVRlBMRXRCUVVzc1EwRkJRenRSUVVOcVFpeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVVklMSGxGUVVGNVJUdFJRVU42UlN4cFJVRkJhVVU3VVVGRGFrVXNWMEZCVnp0UlFVTllMRWxCUVVrc1EwRkJReXhUUVVGVExFZEJRVWNzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NSVUZCUlR0WlFVTnFSQ3hQUVVGUExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUlVGQlJUdG5Ra0ZEZGtNc1QwRkJUeXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4M1FrRkJkMEk3V1VGRGVFVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRUQ3hEUVVGRExFTkJRVU1zUTBGQlF6dFJRVVZJTEcxRFFVRnRRenRSUVVOdVF5eE5RVUZOTEU5QlFVOHNSMEZCWVN4RlFVRkZMRU5CUVVNN1VVRkROMElzVFVGQlRTeEpRVUZKTEVkQlFXRXNSVUZCUlN4RFFVRkRPMUZCUXpGQ0xFMUJRVTBzU1VGQlNTeEhRVUZoTEVWQlFVVXNRMEZCUXp0UlFVTXhRaXhOUVVGTkxGbEJRVmtzUjBGQlJ5eExRVUZMTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNN1VVRkRjRU1zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExGbEJRVmtzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkROVU1zVFVGQlRTeExRVUZMTEVkQlFVY3NXVUZCV1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRemxDTEVsQlFVa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkJSVHRuUWtGRFppeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dG5Ra0ZETVVJc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1owSkJRM0pDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzJGQlEzUkNPMU5CUTBZN1VVRkRSQ3hOUVVGTkxHVkJRV1VzUjBGQlJ5eEpRVUZKTEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zVDBGQlR5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUlc1RkxFOUJRVThzUlVGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkZMR1ZCUVdVc1JVRkJReXhEUVVGRE8wbEJRM1pETEVOQlFVTTdTVUZGUkRzN08wOUJSMGM3U1VGRFN5eHRRa0ZCYlVJc1EwRkJReXhQUVVGcFFpeEZRVUZGTEU5QlFXVTdVVUZETlVRc1RVRkJUU3hOUVVGTkxFZEJRVWNzUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEYkVRc1RVRkJUU3hIUVVGSExFZEJRVWNzUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVNdlFpeE5RVUZOTEZGQlFWRXNSMEZCUnl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUjBGQlJ5eFBRVUZQTEVOQlFVTXNRMEZCUXp0UlFVTjZSQ3hSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8xbEJRM2hDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNN1owSkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRTlCUVU4c1IwRkJSeXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETDBNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRFNDeFBRVUZQTEUxQlFVMHNRMEZCUXp0SlFVTm9RaXhEUVVGRE8wbEJSVVE3TzA5QlJVYzdTVUZEU3l4cFEwRkJhVU1zUTBGQlF5eExRVUZwUXp0UlFVTjZSU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0SlFVTXZReXhEUVVGRE8wbEJSVVE3T3p0UFFVZEhPMGxCUTBzc01FSkJRVEJDTzFGQlEyaERMR3RDUVVGclFqdFJRVU5zUWl4TlFVRk5MRVZCUVVNc2FVSkJRV2xDTEVWQlFVVXNXVUZCV1N4RlFVRkZMR3RDUVVGclFpeEZRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUlc1RkxFMUJRVTBzUlVGRFNpeGxRVUZsTEVWQlEyWXNZVUZCWVN4RlFVTmlMR0ZCUVdFc1IwRkRaQ3hIUVVGSExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1EwRkJRenRSUVVVelFpeE5RVUZOTEVkQlFVY3NSMEZCUnl4aFFVRmhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETzFGQlEzQkRMRTFCUVUwc1UwRkJVeXhIUVVGSExHRkJRV0VzUTBGQlF5eE5RVUZOTEV0QlFVc3NZVUZCWVN4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVWb1JTeE5RVUZOTEhWQ1FVRjFRaXhIUVVGSExHVkJRV1VzUTBGQlF5eEhRVUZITEVOQlEycEVMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVkQlFVY3NhMEpCUVd0Q0xFTkJRemxDTEVOQlFVTTdVVUZEUml4TlFVRk5MSGxDUVVGNVFpeEhRVUZITEVOQlFVTXNSMEZCUnl4MVFrRkJkVUlzUTBGQlF5eERRVUZETzFGQlF5OUVMRTFCUVUwc2FVSkJRV2xDTEVkQlFVY3NRMEZCUXl4SFFVRkhMR1ZCUVdVc1EwRkJReXhEUVVGRE8xRkJSUzlETEVsQlFVa3NRMEZCUXl4cFEwRkJhVU1zUTBGQlF6dFpRVU55UXl4cFFrRkJhVUk3V1VGRGFrSXNlVUpCUVhsQ08xbEJRM3BDTEhWQ1FVRjFRanRaUVVOMlFpeFRRVUZUTzFsQlExUXNXVUZCV1N4RlFVRkZMRmxCUVZrN1dVRkRNVUlzUzBGQlN5eEZRVUZGTEZsQlFWazdXVUZEYmtJc1MwRkJTeXhGUVVGRkxHbENRVUZwUWp0WlFVTjRRaXhIUVVGSE8xTkJRMG9zUTBGQlF5eERRVUZETzBsQlEwd3NRMEZCUXp0SlFVVkVPenRQUVVWSE8wbEJRMHNzYzBKQlFYTkNPMUZCUXpWQ0xHdENRVUZyUWp0UlFVTnNRaXhOUVVGTkxHRkJRV0VzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRPMUZCUTNKRExFMUJRVTBzWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNN1VVRkZja01zYjBSQlFXOUVPMUZCUTNCRUxFMUJRVTBzUlVGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkZMR1ZCUVdVc1JVRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1EwRkJRenRSUVVVM1JDeE5RVUZOTEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU03VVVGRGJFTXNUVUZCVFN4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTTdVVUZGYmtNc1RVRkJUU3hGUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSMEZCUnl4WlFVRlpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkZka1FzU1VGQlNTeERRVUZETEdsRFFVRnBReXhEUVVGRE8xbEJRM0pETEdGQlFXRTdXVUZEWWl4aFFVRmhPMWxCUTJJc1NVRkJTVHRaUVVOS0xFbEJRVWs3V1VGRFNpeGxRVUZsTzFsQlEyWXNRMEZCUXp0WlFVTkVMRU5CUVVNN1dVRkRSQ3hQUVVGUE8xbEJRMUFzVTBGQlV6dFRRVU5XTEVOQlFVTXNRMEZCUXp0SlFVTk1MRU5CUVVNN1NVRkZSRHM3T3pzN08wOUJUVWM3U1VGRFN5eHJRa0ZCYTBJc1EwRkJReXhEUVVGVE8xRkJRMnhETEUxQlFVMHNSVUZCUXl4cFFrRkJhVUlzUlVGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTnFReXhOUVVGTkxFVkJRMG9zU1VGQlNTeEZRVU5LTEVsQlFVa3NSVUZEU2l4aFFVRmhMRVZCUTJJc1lVRkJZU3hGUVVOaUxHVkJRV1VzUlVGRFppeHBRa0ZCYVVJc1JVRkRha0lzZVVKQlFYbENMRVZCUTNwQ0xIVkNRVUYxUWl4RlFVTjJRaXhUUVVGVExFVkJRMVFzV1VGQldTeEZRVU5hTEV0QlFVc3NSVUZEVEN4TFFVRkxMRVZCUTB3c1EwRkJReXhGUVVORUxFTkJRVU1zUlVGRFJDeEhRVUZITEVWQlEwZ3NUMEZCVHl4RlFVTlFMRk5CUVZNc1IwRkRWaXhIUVVGSExHbENRVUZwUWl4RFFVRkRPMUZCUlhSQ0xFMUJRVTBzVTBGQlV5eEhRVUZITEVkQlFVY3NRMEZCUXp0UlFVVjBRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1pVRkJaU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTXZReXhKUVVGSkxHbENRVUZwUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU03WjBKQlF6RkNMRk5CUVZNN1dVRkhXQ3hOUVVGTkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRiRUlzVFVGQlRTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJSV3hDTEUxQlFVMHNUMEZCVHl4SFFVRkhMR0ZCUVdFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5xUXl4TlFVRk5MRXRCUVVzc1IwRkJSeXhoUVVGaExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZGTDBJc1RVRkJUU3hYUVVGWExFZEJRVWNzUzBGQlN5eERRVUZETEU5QlFVOHNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRaUVVVeFF5eEpRVUZKTEZOQlFWTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRiRUlzU1VGQlNTeFhRVUZYTEVkQlFVY3NRMEZCUXl4RlFVRkZPMmRDUVVOdVFpeFRRVUZUTEVkQlFVY3NRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTTdaMEpCUXpGRUxGTkJRVk1zU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRPMkZCUTJwRU8xbEJSVVFzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0blFrRkROVUlzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeFRRVUZUTEVOQlFVTXNRMEZCUXp0blFrRkRia1VzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRXRCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU03WjBKQlF6VkNMRWxCUVVrc1UwRkJVenR2UWtGRFdDeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETzJGQlF6bENPMWxCUlVRc2FVSkJRV2xDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1pVRkJaU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlJUTkRMRTFCUVUwc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlF6VkNMRU5CUVVNc1EwRkJReXhIUVVGSExIbENRVUY1UWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzZFVKQlFYVkNMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRMmhGTEVOQlFVTTdXVUZGUml4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NWMEZCVnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8yZENRVU53UXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zVlVGQlZTeERRVUZETEZOQlFWTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03WjBKQlEyNUVMRTFCUVUwc1MwRkJTeXhIUVVGSExHRkJRV0VzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkZMMElzVFVGQlRTeFhRVUZYTEVkQlFVY3NTMEZCU3l4RFFVRkRMRTlCUVU4c1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dG5Ra0ZGTVVNc1NVRkJTU3hUUVVGVExFZEJRVWNzUjBGQlJ5eERRVUZETzJkQ1FVTndRaXhKUVVGSkxGZEJRVmNzUjBGQlJ5eEhRVUZITEVWQlFVVTdiMEpCUTNKQ0xGTkJRVk1zUjBGQlJ5eEhRVUZITEVkQlFVY3NTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJRenR2UWtGRE5VSXNVMEZCVXp0M1FrRkRVQ3hEUVVGRExFdEJRVXNzUjBGQlJ5eFhRVUZYTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dHBRa0ZET1VRN2NVSkJRVTBzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZPMjlDUVVOc1FpeFRRVUZUTzJsQ1FVTldPMmRDUVVWRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdiMEpCUXpWQ0xFbEJRVWtzUzBGQlN5eEhRVUZITEVkQlFVY3NRMEZCUXp0dlFrRkRhRUlzU1VGQlNTeFRRVUZUTEVkQlFVY3NSMEZCUnp0M1FrRkRha0lzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4VFFVRlRMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTTdiMEpCUlM5RUxFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRE8ybENRVU0zUWp0aFFVTkdPMWxCUTBRc2VVSkJRWGxDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1YwRkJWeXhIUVVGSExIVkNRVUYxUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRekZGTzFGQlEwUXNhVUpCUVdsQ0xFTkJRVU1zUzBGQlN5eEhRVUZITEZsQlFWa3NSMEZCUnl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFZEJRVWNzVDBGQlR5eERRVUZETEVOQlFVTTdVVUZGTjBRc2FVSkJRV2xDTEVOQlFVTXNXVUZCV1N4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVOd1F5eFBRVUZQTEdGQlFXRXNRMEZCUXp0SlFVTjJRaXhEUVVGRE8wbEJSVVE3T3pzN096dFBRVTFITzBsQlEwc3NiVUpCUVcxQ0xFTkJRM3BDTEdkQ1FVRjVSQ3hIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTzFGQlJXNUZMRTlCUVU4c1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eFBRVUZQTEVWQlFVVXNUVUZCVFN4RlFVRkZMRVZCUVVVN1dVRkRja01zVFVGQlRTeEpRVUZKTEVkQlFVY3NTMEZCU3l4SlFVRkpMRVZCUVVVN1owSkJRM1JDTEVsQlFVazdiMEpCUTBZc1RVRkJUU3hGUVVGRExFOUJRVThzUlVGQlJTeFpRVUZaTEVWQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTTdiMEpCUTNaRUxFbEJRVWtzUTBGQlF5eFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRPMjlDUVVOMlJDeE5RVUZOTEdOQlFXTXNSMEZCUnl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNXVUZCV1N4RFFVRkRPMjlDUVVNelJDeE5RVUZOTEZWQlFWVXNSMEZCUnl4aFFVRmhMRU5CUVVNc1kwRkJZeXhEUVVGRExFdEJRVXNzUzBGQlN5eERRVUZETzI5Q1FVTXpSQ3hOUVVGTkxGVkJRVlVzUjBGQlJ5eGpRVUZqTEV0QlFVc3NUMEZCVHl4RFFVRkRPMjlDUVVNNVF5eEpRVUZKTEVOQlFVTXNWVUZCVlN4SlFVRkpMRU5CUVVNc1ZVRkJWVHQzUWtGRE5VSXNWVUZCVlN4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFbEJRVWtzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPenQzUWtGRk5VSXNUMEZCVHl4UFFVRlBMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03YVVKQlF6bENPMmRDUVVGRExFOUJRVThzUjBGQlJ5eEZRVUZGTzI5Q1FVTmFMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dHBRa0ZEWWp0WlFVTklMRU5CUVVNc1EwRkJRenRaUVVOR0xGVkJRVlVzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4SlFVRkpMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU01UWl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOTUxFTkJRVU03U1VGRlJEczdPenM3TzA5QlRVYzdTVUZEU3l4alFVRmpMRU5CUTNCQ0xHZENRVUY1UkN4SFFVRkhMRVZCUVVVc1EwRkJReXhKUVVGSk8xRkJSVzVGTEVsQlFVa3NWVUZCVlN4SFFVRkhMRXRCUVVzc1EwRkJRenRSUVVOMlFpeEpRVUZKTEZOQlFWTXNSMEZCV1N4RlFVRkZMRU5CUVVNN1VVRkROVUlzVDBGQlR5eERRVUZETEZWQlFWVXNSVUZCUlR0WlFVTnNRaXhOUVVGTkxFVkJRVU1zVDBGQlR5eEZRVUZGTEZsQlFWa3NSVUZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNRMEZCUXp0WlFVTjJSQ3hUUVVGVExFZEJRVWNzU1VGQlNTeERRVUZETEd0Q1FVRnJRaXhEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETzFsQlEyeEVMRTFCUVUwc1kwRkJZeXhIUVVGSExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhaUVVGWkxFTkJRVU03V1VGRE0wUXNUVUZCVFN4VlFVRlZMRWRCUVVjc1lVRkJZU3hEUVVGRExHTkJRV01zUTBGQlF5eExRVUZMTEV0QlFVc3NRMEZCUXp0WlFVTXpSQ3hWUVVGVkxFZEJRVWNzWTBGQll5eExRVUZMTEU5QlFVOHNTVUZCU1N4VlFVRlZMRU5CUVVNN1UwRkRka1E3VVVGRFJDeFBRVUZQTEZOQlFWTXNRMEZCUXp0SlFVTnVRaXhEUVVGRE8wbEJSVVE3T3p0UFFVZEhPMGxCUTBrc1ZVRkJWVHRSUVVObUxFMUJRVTBzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNN1VVRkZla0lzU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRU5CUVVNN1dVRkRiRUlzVDBGQlR5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRPMUZCUjNSQ0xFbEJRVWtzUTBGQlF5eExRVUZMTzFsQlExSXNUMEZCVHl4SFFVRkhMRU5CUVVNN1VVRkhZaXhOUVVGTkxFMUJRVTBzUjBGQlJ5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRPMUZCUXpOQ0xFbEJRVWtzVFVGQlRTeEpRVUZKTEVsQlFVazdXVUZEYUVJc1QwRkJUeXhIUVVGSExFTkJRVU03WVVGRFVpeEpRVUZKTEUxQlFVMHNTVUZCU1N4SlFVRkpPMWxCUTNKQ0xFOUJRVThzUjBGQlJ5eERRVUZETzJGQlExSXNTVUZCU1N4TlFVRk5MRWxCUVVrc1NVRkJTVHRaUVVOeVFpeFBRVUZQTEVkQlFVY3NRMEZCUXpzN1dVRkZXQ3hQUVVGUExFZEJRVWNzUTBGQlF6dEpRVU5tTEVOQlFVTTdRMEZEUmp0QlFVVkVMRTFCUVUwc1ZVRkJWU3hUUVVGVExFTkJRVU1zUTBGQlV5eEZRVUZGTEVOQlFWTTdTVUZETlVNc1NVRkJTU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEyWXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRk8xRkJReTlDTEUxQlFVMHNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRkwwSXNUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBGQlF6TkNMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzVDBGQlR5eERRVUZETEVOQlFWTXNSVUZCUlN4RFFVRlRPMGxCUXpGRExFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlF5OUNMRTlCUVU4c1RVRkJUU3hEUVVGRE8wRkJRMmhDTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc1RVRkJUU3hEUVVGRExFTkJRVk1zUlVGQlJTeERRVUZUTzBsQlEzcERMRWxCUVVrc1RVRkJUU3hIUVVGSExFZEJRVWNzUTBGQlF6dEpRVU5xUWl4SlFVRkpMRXRCUVVzc1IwRkJSeXhIUVVGSExFTkJRVU03U1VGRGFFSXNTVUZCU1N4TFFVRkxMRWRCUVVjc1IwRkJSeXhEUVVGRE8wbEJSV2hDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8xRkJRMnBETEUxQlFVMHNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNSQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRMjVDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzB0QlEzQkNPMGxCUlVRc1NVRkJTU3hMUVVGTExFdEJRVXNzUTBGQlF5eEpRVUZKTEV0QlFVc3NTMEZCU3l4RFFVRkRPMUZCUXpWQ0xFOUJRVThzUTBGQlF5eERRVUZETzFOQlEwNHNTVUZCU1N4TFFVRkxMRXRCUVVzc1EwRkJReXhKUVVGSkxFdEJRVXNzUzBGQlN5eERRVUZETzFGQlEycERMRTlCUVU4c1IwRkJSeXhEUVVGRE96dFJRVVZZTEU5QlFVOHNSMEZCUnl4SFFVRkhMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJRenRCUVVOdVJDeERRVUZETzBGQlJVUTdPenRIUVVkSE8wRkJRMGdzVFVGQlRTeHBRa0ZCYVVJN1NVRkJka0k3VVVGRFJTeHBRa0ZCV1N4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVWcVFpd3dRMEZCTUVNN1VVRkRNVU1zYTBKQlFXRXNSMEZCWlN4RlFVRkZMRU5CUVVNN1VVRkRMMElzYTBKQlFXRXNSMEZCWlN4RlFVRkZMRU5CUVVNN1VVRkRMMElzVTBGQlNTeEhRVUZoTEVWQlFVVXNRMEZCUXp0UlFVTndRaXhUUVVGSkxFZEJRV0VzUlVGQlJTeERRVUZETzFGQlEzQkNMRzlDUVVGbExFZEJRV0VzUlVGQlJTeERRVUZETzFGQlF5OUNMSE5DUVVGcFFpeEhRVUZoTEVWQlFVVXNRMEZCUXp0UlFVTnFReXc0UWtGQmVVSXNSMEZCWVN4RlFVRkZMRU5CUVVNN1VVRkRla01zTkVKQlFYVkNMRWRCUVdFc1JVRkJSU3hEUVVGRE8xRkJRM1pETEdOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkRha0lzYVVKQlFWa3NSMEZCUnl4SFFVRkhMRU5CUVVNN1VVRkRia0lzVlVGQlN5eEhRVUZITEVkQlFVY3NRMEZCUXp0UlFVTmFMRlZCUVVzc1IwRkJSeXhIUVVGSExFTkJRVU03VVVGRFdpeE5RVUZETEVkQlFVY3NhMEpCUVd0Q0xFTkJRVU03VVVGRGRrSXNUVUZCUXl4SFFVRkhMR3RDUVVGclFpeERRVUZETzFGQlEzWkNMRkZCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRFVpeFpRVUZQTEVkQlFVY3NSMEZCUnl4RFFVRkRPMUZCUTJRc1kwRkJVeXhIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU5vUWl4RFFVRkRPME5CUVVFN1FVRkZSRHM3UjBGRlJ6dEJRVU5JTEZOQlFWTXNTVUZCU1N4RFFVRkRMRU5CUVZNc1JVRkJSU3hUUVVGcFFqdEpRVU40UXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhUUVVGVE8xRkJRVVVzVDBGQlR5eFRRVUZUTEVOQlFVTTdVMEZETDBJc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eFRRVUZUTzFGQlFVVXNUMEZCVHl4RFFVRkRMRk5CUVZNc1EwRkJRenM3VVVGRGRFTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1FVRkRhRUlzUTBGQlF6dEJRVVZFT3p0SFFVVkhPMEZCUTBnc1UwRkJVeXhMUVVGTExFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEY2tNc1NVRkJTU3hOUVVGTkxFZEJRVWNzUjBGQlJ5eERRVUZETzBsQlEycENMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFJRVU12UWl4TlFVRk5MRWxCUVVrc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUlhKRExFOUJRVThzVFVGQlRTeERRVUZETzBGQlEyaENMRU5CUVVNN1FVRkZSRHM3T3pzN1IwRkxSenRCUVVOSUxFMUJRVTBzVlVGQlZTeFpRVUZaTEVOQlFVTXNUVUZCWXl4RlFVRkZMRTlCUVdVN1NVRkRNVVFzVFVGQlRTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVmNzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRlRMRVZCUVVVc1JVRkJSVHRSUVVOb1JDeFBRVUZQTEVkQlFVY3NSMEZCUnl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGVFTXNRMEZCUXl4RFFVRkRPMGxCUlVZc1RVRkJUU3hGUVVGRkxFZEJRVWNzUzBGQlN6dFRRVU5pTEUxQlFVMHNRMEZCUXl4RFFVRkRMRVZCUVVVc1RVRkJUU3hIUVVGSExFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTTdVMEZETVVJc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVVUzUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNTMEZCU3l4RlFVRkZMRVZCUVVVN1VVRkRia1FzVFVGQlRTeEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFOUJRVThzUTBGQlF6dFJRVU5xUXl4UFFVRlBMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEU5QlFVOHNRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTTdTVUZETDBRc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRlNDeE5RVUZOTEdGQlFXRXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU5xUXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJReXhEUVVGRE8wbEJSVFZDTERCRVFVRXdSRHRKUVVNeFJDeE5RVUZOTEU5QlFVOHNSMEZCUnp0UlFVTmtMRTlCUVU4c1JVRkJSU3hIUVVGSE8xRkJRMW9zWVVGQllUdFJRVU5pTEd0Q1FVRnJRaXhGUVVGRkxFdEJRVXM3VVVGRGVrSXNZVUZCWVN4RlFVRkZMRWRCUVVjN1VVRkRiRUlzWTBGQll5eEZRVUZGTEV0QlFVczdTMEZEZEVJc1EwRkJRenRKUVVWR0xHMURRVUZ0UXp0SlFVTnVReXhOUVVGTkxFVkJRVU1zWlVGQlpTeEZRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrc1JVRkJSU3hMUVVGTExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdTVUZEYmtRc1RVRkJUU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSMEZCUnl4bFFVRXlRaXhEUVVGRE8wbEJRek5ETEU5QlFVOHNSVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFTkJRVU03UVVGRGFFSXNRMEZCUXp0QlFVVkVPenM3UjBGSFJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4blFrRkJaMElzUTBGRE9VSXNTMEZCTUVJc1JVRkRNVUlzVFVGQlowSXNSVUZEYUVJc1YwRkJWeXhIUVVGSExFZEJRVWNzUlVGRGFrSXNUMEZCVHl4SFFVRkhMRWRCUVVjN1NVRkZZaXhQUVVGUExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEZRVUZGTzFGQlEyNURMRWxCUVVrc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4SlFVRkpMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdXVUZETVVNc1QwRkJUeXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8yRkJRMjVETEVsQlFVa3NUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTTdXVUZEYkVNc1QwRkJUeXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE96dFpRVVZzUXl4UFFVRlBMRXRCUVVzc1EwRkJRenRKUVVOcVFpeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTk1MRU5CUVVNN1FVRkZSRHM3T3pzN1IwRkxSenRCUVVOSUxFMUJRVTBzVlVGQlZTeHpRa0ZCYzBJc1EwRkJReXhoUVVGclF6dEpRVU4yUlN4aFFVRmhMRWRCUVVjc1RVRkJUU3hEUVVGRExGTkJRVk1zUTBGQlF5eGhRVUZoTEd0RFFVRnpRaXhEUVVGRE8wbEJRM0pGTEUxQlFVMHNVMEZCVXl4SFFVRkhMRTFCUVUwc1EwRkJReXhUUVVGVExFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTTdTVUZEYkVRc1RVRkJUU3hWUVVGVkxFZEJRVWNzVFVGQlRTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExGTkJRVk1zUlVGQlJTeGhRVUZoTEVOQlFVTXNRMEZCUXp0SlFVTnlSU3hoUVVGaExFZEJRVWNzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZEZUVJc1lVRkJZU3hGUVVOaUxFMUJRVTBzUTBGQlF5eFJRVUZSTEVOQlFVTXNVMEZCVXl4RlFVRkZMRlZCUVZVc1EwRkJReXhEUVVOMlF5eERRVUZETzBsQlEwWXNUMEZCVHl4TlFVRk5MRU5CUVVNc1kwRkJZeXhEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZETzBGQlF6bERMRU5CUVVNN1FVRkZSRHM3T3p0SFFVbEhPMEZCUTBnc1RVRkJUU3hWUVVGVkxHRkJRV0VzUTBGRE0wSXNUMEZCYlVJc1JVRkRia0lzVDBGQmJVSXNSVUZEYmtJc1UwRkJhMEk3U1VGRmJFSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1MwRkJTenRUUVVOcVFpeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJRenRUUVVOeVFpeEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGYWtRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRTlCUVU4c1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdVVUZEZGtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRNVU1zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3WjBKQlF6VkRMRTFCUVUwc1EwRkJReXhIUVVGSExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRGVFSXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRGFrUTdVMEZEUmp0TFFVTkdPMGxCUTBRc1QwRkJUeXhOUVVGTkxFTkJRVU03UVVGRGFFSXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFJR1Z6YkdsdWRDMWthWE5oWW14bElHMWhlQzFzWlc0Z0tpOWNiaThxS2x4dUlDb2dRR3hwWTJWdWMyVmNiaUFxWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4T1NCSGIyOW5iR1VnVEV4RExpQkJiR3dnVW1sbmFIUnpJRkpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRXhwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JCY0dGamFHVWdUR2xqWlc1elpTd2dWbVZ5YzJsdmJpQXlMakFnS0hSb1pTQmNJa3hwWTJWdWMyVmNJaWs3WEc0Z0tpQjViM1VnYldGNUlHNXZkQ0IxYzJVZ2RHaHBjeUJtYVd4bElHVjRZMlZ3ZENCcGJpQmpiMjF3YkdsaGJtTmxJSGRwZEdnZ2RHaGxJRXhwWTJWdWMyVXVYRzRnS2lCWmIzVWdiV0Y1SUc5aWRHRnBiaUJoSUdOdmNIa2diMllnZEdobElFeHBZMlZ1YzJVZ1lYUmNiaUFxWEc0Z0tpQWdJQ0FnYUhSMGNEb3ZMM2QzZHk1aGNHRmphR1V1YjNKbkwyeHBZMlZ1YzJWekwweEpRMFZPVTBVdE1pNHdYRzRnS2x4dUlDb2dWVzVzWlhOeklISmxjWFZwY21Wa0lHSjVJR0Z3Y0d4cFkyRmliR1VnYkdGM0lHOXlJR0ZuY21WbFpDQjBieUJwYmlCM2NtbDBhVzVuTENCemIyWjBkMkZ5WlZ4dUlDb2daR2x6ZEhKcFluVjBaV1FnZFc1a1pYSWdkR2hsSUV4cFkyVnVjMlVnYVhNZ1pHbHpkSEpwWW5WMFpXUWdiMjRnWVc0Z1hDSkJVeUJKVTF3aUlFSkJVMGxUTEZ4dUlDb2dWMGxVU0U5VlZDQlhRVkpTUVU1VVNVVlRJRTlTSUVOUFRrUkpWRWxQVGxNZ1QwWWdRVTVaSUV0SlRrUXNJR1ZwZEdobGNpQmxlSEJ5WlhOeklHOXlJR2x0Y0d4cFpXUXVYRzRnS2lCVFpXVWdkR2hsSUV4cFkyVnVjMlVnWm05eUlIUm9aU0J6Y0dWamFXWnBZeUJzWVc1bmRXRm5aU0JuYjNabGNtNXBibWNnY0dWeWJXbHpjMmx2Ym5NZ1lXNWtYRzRnS2lCc2FXMXBkR0YwYVc5dWN5QjFibVJsY2lCMGFHVWdUR2xqWlc1elpTNWNiaUFxSUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVnh1SUNvdlhHNWNiaThxS2x4dUlDb2dWR2hwY3lCcGN5QmhJRXBoZG1GVFkzSnBjSFFnY21WcGJYQnNaVzFsYm5SaGRHbHZiaUJ2WmlCVlRVRlFJQ2h2Y21sbmFXNWhiQ0JzYVdObGJuTmxJR0psYkc5M0tTd2dabkp2YlZ4dUlDb2dkR2hsSUhCNWRHaHZiaUJwYlhCc1pXMWxiblJoZEdsdmJpQm1iM1Z1WkNCaGRDQm9kSFJ3Y3pvdkwyZHBkR2gxWWk1amIyMHZiRzFqYVc1dVpYTXZkVzFoY0M1Y2JpQXFYRzRnS2lCQVlYVjBhRzl5SUdGdVpIbGpiMlZ1Wlc1QVoyOXZaMnhsTG1OdmJTQW9RVzVrZVNCRGIyVnVaVzRwWEc0Z0tpOWNibHh1THlvcVhHNGdLaUJBYkdsalpXNXpaVnh1SUNvZ1FsTkVJRE10UTJ4aGRYTmxJRXhwWTJWdWMyVmNiaUFxWEc0Z0tpQkRiM0I1Y21sbmFIUWdLR01wSURJd01UY3NJRXhsYkdGdVpDQk5ZMGx1Ym1WelhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZKbFpHbHpkSEpwWW5WMGFXOXVJR0Z1WkNCMWMyVWdhVzRnYzI5MWNtTmxJR0Z1WkNCaWFXNWhjbmtnWm05eWJYTXNJSGRwZEdnZ2IzSWdkMmwwYUc5MWRGeHVJQ29nYlc5a2FXWnBZMkYwYVc5dUxDQmhjbVVnY0dWeWJXbDBkR1ZrSUhCeWIzWnBaR1ZrSUhSb1lYUWdkR2hsSUdadmJHeHZkMmx1WnlCamIyNWthWFJwYjI1eklHRnlaU0J0WlhRNlhHNGdLbHh1SUNvZ0tpQlNaV1JwYzNSeWFXSjFkR2x2Ym5NZ2IyWWdjMjkxY21ObElHTnZaR1VnYlhWemRDQnlaWFJoYVc0Z2RHaGxJR0ZpYjNabElHTnZjSGx5YVdkb2RDQnViM1JwWTJVc0lIUm9hWE5jYmlBcUlDQWdiR2x6ZENCdlppQmpiMjVrYVhScGIyNXpJR0Z1WkNCMGFHVWdabTlzYkc5M2FXNW5JR1JwYzJOc1lXbHRaWEl1WEc0Z0tseHVJQ29nS2lCU1pXUnBjM1J5YVdKMWRHbHZibk1nYVc0Z1ltbHVZWEo1SUdadmNtMGdiWFZ6ZENCeVpYQnliMlIxWTJVZ2RHaGxJR0ZpYjNabElHTnZjSGx5YVdkb2RDQnViM1JwWTJVc1hHNGdLaUFnSUhSb2FYTWdiR2x6ZENCdlppQmpiMjVrYVhScGIyNXpJR0Z1WkNCMGFHVWdabTlzYkc5M2FXNW5JR1JwYzJOc1lXbHRaWElnYVc0Z2RHaGxJR1J2WTNWdFpXNTBZWFJwYjI1Y2JpQXFJQ0FnWVc1a0wyOXlJRzkwYUdWeUlHMWhkR1Z5YVdGc2N5QndjbTkyYVdSbFpDQjNhWFJvSUhSb1pTQmthWE4wY21saWRYUnBiMjR1WEc0Z0tseHVJQ29nS2lCT1pXbDBhR1Z5SUhSb1pTQnVZVzFsSUc5bUlIUm9aU0JqYjNCNWNtbG5hSFFnYUc5c1pHVnlJRzV2Y2lCMGFHVWdibUZ0WlhNZ2IyWWdhWFJ6WEc0Z0tpQWdJR052Ym5SeWFXSjFkRzl5Y3lCdFlYa2dZbVVnZFhObFpDQjBieUJsYm1SdmNuTmxJRzl5SUhCeWIyMXZkR1VnY0hKdlpIVmpkSE1nWkdWeWFYWmxaQ0JtY205dFhHNGdLaUFnSUhSb2FYTWdjMjltZEhkaGNtVWdkMmwwYUc5MWRDQnpjR1ZqYVdacFl5QndjbWx2Y2lCM2NtbDBkR1Z1SUhCbGNtMXBjM05wYjI0dVhHNGdLbHh1SUNvZ1ZFaEpVeUJUVDBaVVYwRlNSU0JKVXlCUVVrOVdTVVJGUkNCQ1dTQlVTRVVnUTA5UVdWSkpSMGhVSUVoUFRFUkZVbE1nUVU1RUlFTlBUbFJTU1VKVlZFOVNVeUJjSWtGVElFbFRYQ0pjYmlBcUlFRk9SQ0JCVGxrZ1JWaFFVa1ZUVXlCUFVpQkpUVkJNU1VWRUlGZEJVbEpCVGxSSlJWTXNJRWxPUTB4VlJFbE9SeXdnUWxWVUlFNVBWQ0JNU1UxSlZFVkVJRlJQTENCVVNFVmNiaUFxSUVsTlVFeEpSVVFnVjBGU1VrRk9WRWxGVXlCUFJpQk5SVkpEU0VGT1ZFRkNTVXhKVkZrZ1FVNUVJRVpKVkU1RlUxTWdSazlTSUVFZ1VFRlNWRWxEVlV4QlVpQlFWVkpRVDFORklFRlNSVnh1SUNvZ1JFbFRRMHhCU1UxRlJDNGdTVTRnVGs4Z1JWWkZUbFFnVTBoQlRFd2dWRWhGSUVOUFVGbFNTVWRJVkNCSVQweEVSVklnVDFJZ1EwOU9WRkpKUWxWVVQxSlRJRUpGSUV4SlFVSk1SVnh1SUNvZ1JrOVNJRUZPV1NCRVNWSkZRMVFzSUVsT1JFbFNSVU5VTENCSlRrTkpSRVZPVkVGTUxDQlRVRVZEU1VGTUxDQkZXRVZOVUV4QlVsa3NJRTlTSUVOUFRsTkZVVlZGVGxSSlFVeGNiaUFxSUVSQlRVRkhSVk1nS0VsT1EweFZSRWxPUnl3Z1FsVlVJRTVQVkNCTVNVMUpWRVZFSUZSUExDQlFVazlEVlZKRlRVVk9WQ0JQUmlCVFZVSlRWRWxVVlZSRklFZFBUMFJUSUU5U1hHNGdLaUJUUlZKV1NVTkZVenNnVEU5VFV5QlBSaUJWVTBVc0lFUkJWRUVzSUU5U0lGQlNUMFpKVkZNN0lFOVNJRUpWVTBsT1JWTlRJRWxPVkVWU1VsVlFWRWxQVGlrZ1NFOVhSVlpGVWx4dUlDb2dRMEZWVTBWRUlFRk9SQ0JQVGlCQlRsa2dWRWhGVDFKWklFOUdJRXhKUVVKSlRFbFVXU3dnVjBoRlZFaEZVaUJKVGlCRFQwNVVVa0ZEVkN3Z1UxUlNTVU5VSUV4SlFVSkpURWxVV1N4Y2JpQXFJRTlTSUZSUFVsUWdLRWxPUTB4VlJFbE9SeUJPUlVkTVNVZEZUa05GSUU5U0lFOVVTRVZTVjBsVFJTa2dRVkpKVTBsT1J5QkpUaUJCVGxrZ1YwRlpJRTlWVkNCUFJpQlVTRVVnVlZORlhHNGdLaUJQUmlCVVNFbFRJRk5QUmxSWFFWSkZMQ0JGVmtWT0lFbEdJRUZFVmtsVFJVUWdUMFlnVkVoRklGQlBVMU5KUWtsTVNWUlpJRTlHSUZOVlEwZ2dSRUZOUVVkRkxseHVJQ292WEc1Y2JtbHRjRzl5ZENBcUlHRnpJR2hsWVhBZ1puSnZiU0FuTGk5b1pXRndKenRjYm1sdGNHOXlkQ0FxSUdGeklHMWhkSEpwZUNCbWNtOXRJQ2N1TDIxaGRISnBlQ2M3WEc1cGJYQnZjblFnS2lCaGN5QnVia1JsYzJObGJuUWdabkp2YlNBbkxpOXVibDlrWlhOalpXNTBKenRjYm1sdGNHOXlkQ0FxSUdGeklIUnlaV1VnWm5KdmJTQW5MaTkwY21WbEp6dGNibWx0Y0c5eWRDQXFJR0Z6SUhWMGFXeHpJR1p5YjIwZ0p5NHZkWFJwYkhNbk8xeHVhVzF3YjNKMElFeE5JR1p5YjIwZ0oyMXNMV3hsZG1WdVltVnlaeTF0WVhKeGRXRnlaSFFuTzF4dVhHNWxlSEJ2Y25RZ2RIbHdaU0JFYVhOMFlXNWpaVVp1SUQwZ0tIZzZJRzUxYldKbGNpd2dlVG9nYm5WdFltVnlLU0E5UGlCdWRXMWlaWEk3WEc1bGVIQnZjblFnZEhsd1pTQlNZVzVrYjIxR2JpQTlJQ2dwSUQwK0lHNTFiV0psY2p0Y2JtVjRjRzl5ZENCMGVYQmxJRVZ3YjJOb1EyRnNiR0poWTJzZ1BTQW9aWEJ2WTJnNklHNTFiV0psY2lrZ1BUNGdZbTl2YkdWaGJpQjhJSFp2YVdRN1hHNWxlSEJ2Y25RZ2RIbHdaU0JXWldOMGIzSWdQU0J1ZFcxaVpYSmJYVHRjYm1WNGNHOXlkQ0IwZVhCbElGWmxZM1J2Y25NZ1BTQldaV04wYjNKYlhUdGNibVY0Y0c5eWRDQmpiMjV6ZENCbGJuVnRJRlJoY21kbGRFMWxkSEpwWXlCN1hHNGdJR05oZEdWbmIzSnBZMkZzSUQwZ0oyTmhkR1ZuYjNKcFkyRnNKeXhjYmlBZ2JERWdQU0FuYkRFbkxGeHVJQ0JzTWlBOUlDZHNNaWNzWEc1OVhHNWNibU52Ym5OMElGTk5UMDlVU0Y5TFgxUlBURVZTUVU1RFJTQTlJREZsTFRVN1hHNWpiMjV6ZENCTlNVNWZTMTlFU1ZOVVgxTkRRVXhGSUQwZ01XVXRNenRjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCVlRVRlFVR0Z5WVcxbGRHVnljeUI3WEc0Z0lDOHFLbHh1SUNBZ0tpQlVhR1VnWkdsemRHRnVZMlVnWm5WdVkzUnBiMjRnZDJsMGFDQjNhR2xqYUNCMGJ5QmhjM05sYzNNZ2JtVmhjbVZ6ZENCdVpXbG5hR0p2Y25Nc0lHUmxabUYxYkhSelhHNGdJQ0FxSUhSdklHVjFZMnhwWkdWaGJpQmthWE4wWVc1alpTNWNiaUFnSUNvdlhHNGdJR1JwYzNSaGJtTmxSbTQvT2lCRWFYTjBZVzVqWlVadU8xeHVJQ0F2S2lwY2JpQWdJQ29nVkdobElHbHVhWFJwWVd3Z2JHVmhjbTVwYm1jZ2NtRjBaU0JtYjNJZ2RHaGxJR1Z0WW1Wa1pHbHVaeUJ2Y0hScGJXbDZZWFJwYjI0dVhHNGdJQ0FxTDF4dUlDQnNaV0Z5Ym1sdVoxSmhkR1UvT2lCdWRXMWlaWEk3WEc0Z0lDOHFLbHh1SUNBZ0tpQlVhR1VnYkc5allXd2dZMjl1Ym1WamRHbDJhWFI1SUhKbGNYVnBjbVZrSUMwdElHa3VaUzRnZEdobElHNTFiV0psY2lCdlppQnVaV0Z5WlhOMFhHNGdJQ0FxSUc1bGFXZG9ZbTl5Y3lCMGFHRjBJSE5vYjNWc1pDQmlaU0JoYzNOMWJXVmtJSFJ2SUdKbElHTnZibTVsWTNSbFpDQmhkQ0JoSUd4dlkyRnNJR3hsZG1Wc0xseHVJQ0FnS2lCVWFHVWdhR2xuYUdWeUlIUm9hWE1nZG1Gc2RXVWdkR2hsSUcxdmNtVWdZMjl1Ym1WamRHVmtJSFJvWlNCdFlXNXBabTlzWkNCaVpXTnZiV1Z6WEc0Z0lDQXFJR3h2WTJGc2JIa3VJRWx1SUhCeVlXTjBhV05sSUhSb2FYTWdjMmh2ZFd4a0lHSmxJRzV2ZENCdGIzSmxJSFJvWVc0Z2RHaGxJR3h2WTJGc0lHbHVkSEpwYm5OcFkxeHVJQ0FnS2lCa2FXMWxibk5wYjI0Z2IyWWdkR2hsSUcxaGJtbG1iMnhrTGx4dUlDQWdLaTljYmlBZ2JHOWpZV3hEYjI1dVpXTjBhWFpwZEhrL09pQnVkVzFpWlhJN1hHNGdJQzhxS2x4dUlDQWdLaUJVYUdVZ1pXWm1aV04wYVhabElHMXBibWx0ZFcwZ1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCbGJXSmxaR1JsWkNCd2IybHVkSE11SUZOdFlXeHNaWElnZG1Gc2RXVnpYRzRnSUNBcUlIZHBiR3dnY21WemRXeDBJR2x1SUdFZ2JXOXlaU0JqYkhWemRHVnlaV1F2WTJ4MWJYQmxaQ0JsYldKbFpHUnBibWNnZDJobGNtVWdibVZoY21KNUlIQnZhVzUwYzF4dUlDQWdLaUJ2YmlCMGFHVWdiV0Z1YVdadmJHUWdZWEpsSUdSeVlYZHVJR05zYjNObGNpQjBiMmRsZEdobGNpd2dkMmhwYkdVZ2JHRnlaMlZ5SUhaaGJIVmxjeUIzYVd4c1hHNGdJQ0FxSUhKbGMzVnNkQ0J2YmlCaElHMXZjbVVnWlhabGJpQmthWE53WlhKellXd2diMllnY0c5cGJuUnpMaUJVYUdVZ2RtRnNkV1VnYzJodmRXeGtJR0psSUhObGRGeHVJQ0FnS2lCeVpXeGhkR2wyWlNCMGJ5QjBhR1VnWUdCemNISmxZV1JnWUNCMllXeDFaU3dnZDJocFkyZ2daR1YwWlhKdGFXNWxjeUIwYUdVZ2MyTmhiR1VnWVhRZ2QyaHBZMmhjYmlBZ0lDb2daVzFpWldSa1pXUWdjRzlwYm5SeklIZHBiR3dnWW1VZ2MzQnlaV0ZrSUc5MWRDNWNiaUFnSUNvdlhHNGdJRzFwYmtScGMzUS9PaUJ1ZFcxaVpYSTdYRzRnSUM4cUtseHVJQ0FnS2lCVWFHVWdaR2x0Wlc1emFXOXVJRzltSUhSb1pTQnpjR0ZqWlNCMGJ5QmxiV0psWkNCcGJuUnZMaUJVYUdseklHUmxabUYxYkhSeklIUnZJRElnZEc5Y2JpQWdJQ29nY0hKdmRtbGtaU0JsWVhONUlIWnBjM1ZoYkdsNllYUnBiMjRzSUdKMWRDQmpZVzRnY21WaGMyOXVZV0pzZVNCaVpTQnpaWFFnZEc4Z1lXNTVYRzRnSUNBcUlHbHVkR1ZuWlhJZ2RtRnNkV1VnYVc0Z2RHaGxJSEpoYm1kbElESWdkRzhnTVRBd0xseHVJQ0FnS2k5Y2JpQWdia052YlhCdmJtVnVkSE0vT2lCdWRXMWlaWEk3WEc0Z0lDOHFLbHh1SUNBZ0tpQlVhR1VnYm5WdFltVnlJRzltSUhSeVlXbHVhVzVuSUdWd2IyTm9jeUIwYnlCaVpTQjFjMlZrSUdsdUlHOXdkR2x0YVhwcGJtY2dkR2hsWEc0Z0lDQXFJR3h2ZHlCa2FXMWxibk5wYjI1aGJDQmxiV0psWkdScGJtY3VJRXhoY21kbGNpQjJZV3gxWlhNZ2NtVnpkV3gwSUdsdUlHMXZjbVVnWVdOamRYSmhkR1ZjYmlBZ0lDb2daVzFpWldSa2FXNW5jeTRnU1dZZ1RtOXVaU0JwY3lCemNHVmphV1pwWldRZ1lTQjJZV3gxWlNCM2FXeHNJR0psSUhObGJHVmpkR1ZrSUdKaGMyVmtJRzl1WEc0Z0lDQXFJSFJvWlNCemFYcGxJRzltSUhSb1pTQnBibkIxZENCa1lYUmhjMlYwSUNneU1EQWdabTl5SUd4aGNtZGxJR1JoZEdGelpYUnpMQ0ExTURBZ1ptOXlJSE50WVd4c0tTNWNiaUFnSUNvdlhHNGdJRzVGY0c5amFITS9PaUJ1ZFcxaVpYSTdYRzRnSUM4cUtseHVJQ0FnS2lCVWFHVWdjMmw2WlNCdlppQnNiMk5oYkNCdVpXbG5hR0p2Y21odmIyUWdLR2x1SUhSbGNtMXpJRzltSUc1MWJXSmxjaUJ2WmlCdVpXbG5hR0p2Y21sdVoxeHVJQ0FnS2lCellXMXdiR1VnY0c5cGJuUnpLU0IxYzJWa0lHWnZjaUJ0WVc1cFptOXNaQ0JoY0hCeWIzaHBiV0YwYVc5dUxpQk1ZWEpuWlhJZ2RtRnNkV1Z6WEc0Z0lDQXFJSEpsYzNWc2RDQnBiaUJ0YjNKbElHZHNiMkpoYkNCMmFXVjNjeUJ2WmlCMGFHVWdiV0Z1YVdadmJHUXNJSGRvYVd4bElITnRZV3hzWlhKY2JpQWdJQ29nZG1Gc2RXVnpJSEpsYzNWc2RDQnBiaUJ0YjNKbElHeHZZMkZzSUdSaGRHRWdZbVZwYm1jZ2NISmxjMlZ5ZG1Wa0xpQkpiaUJuWlc1bGNtRnNYRzRnSUNBcUlIWmhiSFZsY3lCemFHOTFiR1FnWW1VZ2FXNGdkR2hsSUhKaGJtZGxJRElnZEc4Z01UQXdMbHh1SUNBZ0tpOWNiaUFnYms1bGFXZG9ZbTl5Y3o4NklHNTFiV0psY2p0Y2JpQWdMeW9xWEc0Z0lDQXFJRlJvWlNCdWRXMWlaWElnYjJZZ2JtVm5ZWFJwZG1VZ2MyRnRjR3hsY3lCMGJ5QnpaV3hsWTNRZ2NHVnlJSEJ2YzJsMGFYWmxJSE5oYlhCc1pWeHVJQ0FnS2lCcGJpQjBhR1VnYjNCMGFXMXBlbUYwYVc5dUlIQnliMk5sYzNNdUlFbHVZM0psWVhOcGJtY2dkR2hwY3lCMllXeDFaU0IzYVd4c0lISmxjM1ZzZEZ4dUlDQWdLaUJwYmlCbmNtVmhkR1Z5SUhKbGNIVnNjMmwyWlNCbWIzSmpaU0JpWldsdVp5QmhjSEJzYVdWa0xDQm5jbVZoZEdWeUlHOXdkR2x0YVhwaGRHbHZibHh1SUNBZ0tpQmpiM04wTENCaWRYUWdjMnhwWjJoMGJIa2diVzl5WlNCaFkyTjFjbUZqZVM1Y2JpQWdJQ292WEc0Z0lHNWxaMkYwYVhabFUyRnRjR3hsVW1GMFpUODZJRzUxYldKbGNqdGNiaUFnTHlvcVhHNGdJQ0FxSUZkbGFXZG9kR2x1WnlCaGNIQnNhV1ZrSUhSdklHNWxaMkYwYVhabElITmhiWEJzWlhNZ2FXNGdiRzkzSUdScGJXVnVjMmx2Ym1Gc0lHVnRZbVZrWkdsdVoxeHVJQ0FnS2lCdmNIUnBiV2w2WVhScGIyNHVJRlpoYkhWbGN5Qm9hV2RvWlhJZ2RHaGhiaUJ2Ym1VZ2QybHNiQ0J5WlhOMWJIUWdhVzRnWjNKbFlYUmxjaUIzWldsbmFIUmNiaUFnSUNvZ1ltVnBibWNnWjJsMlpXNGdkRzhnYm1WbllYUnBkbVVnYzJGdGNHeGxjeTVjYmlBZ0lDb3ZYRzRnSUhKbGNIVnNjMmx2YmxOMGNtVnVaM1JvUHpvZ2JuVnRZbVZ5TzF4dUlDQXZLaXBjYmlBZ0lDb2dWR2hsSUhCelpYVmtieTF5WVc1a2IyMGdiblZ0WW1WeUlHZGxibVZ5WVhSdmNpQjFjMlZrSUdKNUlIUm9aU0J6ZEc5amFHRnpkR2xqSUhCaGNuUnpJRzltSUhSb1pWeHVJQ0FnS2lCaGJHZHZjbWwwYUcwdVhHNGdJQ0FxTDF4dUlDQnlZVzVrYjIwL09pQlNZVzVrYjIxR2JqdGNiaUFnTHlvcVhHNGdJQ0FxSUVsdWRHVnljRzlzWVhSbElHSmxkSGRsWlc0Z0tHWjFlbnA1S1NCMWJtbHZiaUJoYm1RZ2FXNTBaWEp6WldOMGFXOXVJR0Z6SUhSb1pTQnpaWFFnYjNCbGNtRjBhVzl1WEc0Z0lDQXFJSFZ6WldRZ2RHOGdZMjl0WW1sdVpTQnNiMk5oYkNCbWRYcDZlU0J6YVcxd2JHbGphV0ZzSUhObGRITWdkRzhnYjJKMFlXbHVJR0VnWjJ4dlltRnNJR1oxZW5wNVhHNGdJQ0FxSUhOcGJYQnNhV05wWVd3Z2MyVjBjeTRnUW05MGFDQm1kWHA2ZVNCelpYUWdiM0JsY21GMGFXOXVjeUIxYzJVZ2RHaGxJSEJ5YjJSMVkzUWdkQzF1YjNKdExseHVJQ0FnS2lCVWFHVWdkbUZzZFdVZ2IyWWdkR2hwY3lCd1lYSmhiV1YwWlhJZ2MyaHZkV3hrSUdKbElHSmxkSGRsWlc0Z01DNHdJR0Z1WkNBeExqQTdJR0VnZG1Gc2RXVWdiMlpjYmlBZ0lDb2dNUzR3SUhkcGJHd2dkWE5sSUdFZ2NIVnlaU0JtZFhwNmVTQjFibWx2Yml3Z2QyaHBiR1VnTUM0d0lIZHBiR3dnZFhObElHRWdjSFZ5WlNCbWRYcDZlVnh1SUNBZ0tpQnBiblJsY25ObFkzUnBiMjR1WEc0Z0lDQXFMMXh1SUNCelpYUlBjRTFwZUZKaGRHbHZQem9nYm5WdFltVnlPMXh1SUNBdktpcGNiaUFnSUNvZ1ZHaGxJR1ZtWm1WamRHbDJaU0J6WTJGc1pTQnZaaUJsYldKbFpHUmxaQ0J3YjJsdWRITXVJRWx1SUdOdmJXSnBibUYwYVc5dUlIZHBkR2dnWUdCdGFXNWZaR2x6ZEdCZ1hHNGdJQ0FxSUhSb2FYTWdaR1YwWlhKdGFXNWxjeUJvYjNjZ1kyeDFjM1JsY21Wa0wyTnNkVzF3WldRZ2RHaGxJR1Z0WW1Wa1pHVmtJSEJ2YVc1MGN5QmhjbVV1WEc0Z0lDQXFMMXh1SUNCemNISmxZV1EvT2lCdWRXMWlaWEk3WEc0Z0lDOHFLbHh1SUNBZ0tpQkdiM0lnZEhKaGJuTm1iM0p0SUc5d1pYSmhkR2x2Ym5NZ0tHVnRZbVZrWkdsdVp5QnVaWGNnY0c5cGJuUnpJSFZ6YVc1bklHRWdkSEpoYVc1bFpDQnRiMlJsYkNsY2JpQWdJQ29nZEdocGN5QjNhV3hzSUdOdmJuUnliMndnYUc5M0lHRm5aM0psYzNOcGRtVnNlU0IwYnlCelpXRnlZMmdnWm05eUlHNWxZWEpsYzNRZ2JtVnBaMmhpYjNKekxseHVJQ0FnS2lCTVlYSm5aWElnZG1Gc2RXVnpJSGRwYkd3Z2NtVnpkV3gwSUdsdUlITnNiM2RsY2lCd1pYSm1iM0p0WVc1alpTQmlkWFFnYlc5eVpTQmhZMk4xY21GMFpWeHVJQ0FnS2lCdVpXRnlaWE4wSUc1bGFXZG9ZbTl5SUdWMllXeDFZWFJwYjI0dVhHNGdJQ0FxTDF4dUlDQjBjbUZ1YzJadmNtMVJkV1YxWlZOcGVtVS9PaUJ1ZFcxaVpYSTdYRzU5WEc1Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1ZVMUJVRk4xY0dWeWRtbHpaV1JRWVhKaGJYTWdlMXh1SUNBdktpcGNiaUFnSUNvZ1ZHaGxJRzFsZEhKcFl5QjFjMlZrSUhSdklHMWxZWE4xY21VZ1pHbHpkR0Z1WTJVZ1ptOXlJR0VnZEdGeVoyVjBJR0Z5Y21GNUlHbHpJSFZ6YVc1bklITjFjR1Z5ZG1selpXUmNiaUFnSUNvZ1pHbHRaVzV6YVc5dUlISmxaSFZqZEdsdmJpNGdRbmtnWkdWbVlYVnNkQ0IwYUdseklHbHpJQ2RqWVhSbFoyOXlhV05oYkNjZ2QyaHBZMmdnZDJsc2JDQnRaV0Z6ZFhKbFhHNGdJQ0FxSUdScGMzUmhibU5sSUdsdUlIUmxjbTF6SUc5bUlIZG9aWFJvWlhJZ1kyRjBaV2R2Y21sbGN5QnRZWFJqYUNCdmNpQmhjbVVnWkdsbVptVnlaVzUwTGlCR2RYSjBhR1Z5Ylc5eVpTeGNiaUFnSUNvZ2FXWWdjMlZ0YVMxemRYQmxjblpwYzJWa0lHbHpJSEpsY1hWcGNtVmtJSFJoY21kbGRDQjJZV3gxWlhNZ2IyWWdMVEVnZDJsc2JDQmlaU0IwY21WaGRHVmtJR0Z6WEc0Z0lDQXFJSFZ1YkdGaVpXeHNaV1FnZFc1a1pYSWdkR2hsSUNkallYUmxaMjl5YVdOaGJDY2diV1YwY21sakxpQkpaaUIwYUdVZ2RHRnlaMlYwSUdGeWNtRjVJSFJoYTJWelhHNGdJQ0FxSUdOdmJuUnBiblZ2ZFhNZ2RtRnNkV1Z6SUNobExtY3VJR1p2Y2lCaElISmxaM0psYzNOcGIyNGdjSEp2WW14bGJTa2dkR2hsYmlCdFpYUnlhV01nYjJZZ0oyd3hKMXh1SUNBZ0tpQnZjaUFuYkRJbklHbHpJSEJ5YjJKaFlteDVJRzF2Y21VZ1lYQndjbTl3Y21saGRHVXVYRzRnSUNBcUwxeHVJQ0IwWVhKblpYUk5aWFJ5YVdNL09pQlVZWEpuWlhSTlpYUnlhV003WEc0Z0lDOHFLbHh1SUNBZ0tpQlhaV2xuYUhScGJtY2dabUZqZEc5eUlHSmxkSGRsWlc0Z1pHRjBZU0IwYjNCdmJHOW5lU0JoYm1RZ2RHRnlaMlYwSUhSdmNHOXNiMmQ1TGlCQklIWmhiSFZsSUc5bVhHNGdJQ0FxSURBdU1DQjNaV2xuYUhSeklHVnVkR2x5Wld4NUlHOXVJR1JoZEdFc0lHRWdkbUZzZFdVZ2IyWWdNUzR3SUhkbGFXZG9kSE1nWlc1MGFYSmxiSGtnYjI0Z2RHRnlaMlYwTGx4dUlDQWdLaUJVYUdVZ1pHVm1ZWFZzZENCdlppQXdMalVnWW1Gc1lXNWpaWE1nZEdobElIZGxhV2RvZEdsdVp5QmxjWFZoYkd4NUlHSmxkSGRsWlc0Z1pHRjBZU0JoYm1RZ2RHRnlaMlYwTGx4dUlDQWdLaTljYmlBZ2RHRnlaMlYwVjJWcFoyaDBQem9nYm5WdFltVnlPMXh1SUNBdktpcGNiaUFnSUNvZ1ZHaGxJRzUxYldKbGNpQnZaaUJ1WldGeVpYTjBJRzVsYVdkb1ltOXljeUIwYnlCMWMyVWdkRzhnWTI5dWMzUnlkV04wSUhSb1pTQjBZWEpuWlhRZ2MybHRjR3hqYVdGc1hHNGdJQ0FxSUhObGRDNGdSR1ZtWVhWc2RITWdkRzhnZEdobElHQnVaV0Z5WlhOMFRtVnBaMmhpYjNKellDQndZWEpoYldWMFpYSXVYRzRnSUNBcUwxeHVJQ0IwWVhKblpYUk9UbVZwWjJoaWIzSnpQem9nYm5WdFltVnlPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGVk5RVkFnY0hKdmFtVmpkR2x2YmlCemVYTjBaVzBzSUdKaGMyVmtJRzl1SUhSb1pTQndlWFJvYjI0Z2FXMXdiR1Z0Wlc1MFlYUnBiMjRnWm5KdmJTQk5ZMGx1Ym1WekxDQk1MRnh1SUNvZ1NHVmhiSGtzSUVvc0lGVk5RVkE2SUZWdWFXWnZjbTBnVFdGdWFXWnZiR1FnUVhCd2NtOTRhVzFoZEdsdmJpQmhibVFnVUhKdmFtVmpkR2x2YmlCbWIzSWdSR2x0Wlc1emFXOXVYRzRnS2lCU1pXUjFZM1JwYjI0Z0tHaDBkSEJ6T2k4dloybDBhSFZpTG1OdmJTOXNiV05wYm01bGN5OTFiV0Z3S1M1Y2JpQXFYRzRnS2lCVWFHbHpJR2x0Y0d4bGJXVnVkR0YwYVc5dUlHUnBabVpsY25NZ2FXNGdZU0JtWlhjZ2NtVm5ZWEprY3pwY2JpQXFJR0VwSUZSb1pTQnBibWwwYVdGc2FYcGhkR2x2YmlCdlppQjBhR1VnWlcxaVpXUmthVzVuSUdadmNpQnZjSFJwYldsNllYUnBiMjRnYVhNZ2JtOTBJR052YlhCMWRHVmtJSFZ6YVc1blhHNGdLaUFnSUNCaElITndaV04wY21Gc0lHMWxkR2h2WkN3Z2NtRjBhR1Z5SUdsMElHbHpJR2x1YVhScFlXeHBlbVZrSUhKaGJtUnZiV3g1TGlCVWFHbHpJR0YyYjJsa2N5QnpiMjFsWEc0Z0tpQWdJQ0JqYjIxd2RYUmhkR2x2Ym1Gc2JIa2dhVzUwWlc1emFYWmxJRzFoZEhKcGVDQmxhV2RsYmlCamIyMXdkWFJoZEdsdmJuTWdkR2hoZENCaGNtVnVKM1FnWldGemFXeDVYRzRnS2lBZ0lDQndiM0owWldRZ2RHOGdTbUYyWVZOamNtbHdkQzVjYmlBcUlHSXBJRUVnYkc5MElHOW1JRndpWlhoMGNtRmNJaUJtZFc1amRHbHZibUZzYVhSNUlHaGhjeUJpWldWdUlHOXRhWFIwWldRZ1puSnZiU0IwYUdseklHbHRjR3hsYldWdWRHRjBhVzl1TEZ4dUlDb2dJQ0FnYlc5emRDQnViM1JoWW14NUlHRWdaM0psWVhRZ1pHVmhiQ0J2WmlCaGJIUmxjbTVoZEdVZ1pHbHpkR0Z1WTJVZ1puVnVZM1JwYjI1ekxseHVJQ3BjYmlBcUlGUm9hWE1nYVcxd2JHVnRaVzUwWVhScGIyNGdjSEp2ZG1sa1pYTWdkR2h5WldVZ2JXVjBhRzlrY3lCdlppQnlaV1IxWTJsdVp5QmthVzFsYm5OcGIyNWhiR2wwZVRwY2JpQXFJREVwSUdacGREb2dabWwwSUhSb1pTQmtZWFJoSUhONWJtTm9jbTl1YjNWemJIbGNiaUFxSURJcElHWnBkRUZ6ZVc1ak9pQm1hWFFnZEdobElHUmhkR0VnWVhONWJtTm9jbTl1YjNWemJIa3NJSGRwZEdnZ1lTQmpZV3hzWW1GamF5Qm1kVzVqZEdsdmJpQndjbTkyYVdSbFpGeHVJQ29nSUNBZ0lDQjBhR0YwSUdseklHbHVkbTlyWldRZ2IyNGdaV0ZqYUNCdmNIUnBiV2w2WVhScGIyNGdjM1JsY0M1Y2JpQXFJRE1wSUdsdWFYUnBZV3hwZW1WR2FYUWdMeUJ6ZEdWd09pQnRZVzUxWVd4c2VTQnBibWwwYVdGc2FYcGxJSFJvWlNCaGJHZHZjbWwwYUcwZ2RHaGxiaUJsZUhCc2FXTjBiSGxjYmlBcUlDQWdJQ0FnYzNSbGNDQjBhSEp2ZFdkb0lHVmhZMmdnWlhCdlkyZ2diMllnZEdobElGTkhSQ0J2Y0hScGJXbDZZWFJwYjI1Y2JpQXFMMXh1Wlhod2IzSjBJR05zWVhOeklGVk5RVkFnZTF4dUlDQndjbWwyWVhSbElHeGxZWEp1YVc1blVtRjBaU0E5SURFdU1EdGNiaUFnY0hKcGRtRjBaU0JzYjJOaGJFTnZibTVsWTNScGRtbDBlU0E5SURFdU1EdGNiaUFnY0hKcGRtRjBaU0J0YVc1RWFYTjBJRDBnTUM0eE8xeHVJQ0J3Y21sMllYUmxJRzVEYjIxd2IyNWxiblJ6SUQwZ01qdGNiaUFnY0hKcGRtRjBaU0J1UlhCdlkyaHpJRDBnTUR0Y2JpQWdjSEpwZG1GMFpTQnVUbVZwWjJoaWIzSnpJRDBnTVRVN1hHNGdJSEJ5YVhaaGRHVWdibVZuWVhScGRtVlRZVzF3YkdWU1lYUmxJRDBnTlR0Y2JpQWdjSEpwZG1GMFpTQnlZVzVrYjIwZ1BTQk5ZWFJvTG5KaGJtUnZiVHRjYmlBZ2NISnBkbUYwWlNCeVpYQjFiSE5wYjI1VGRISmxibWQwYUNBOUlERXVNRHRjYmlBZ2NISnBkbUYwWlNCelpYUlBjRTFwZUZKaGRHbHZJRDBnTVM0d08xeHVJQ0J3Y21sMllYUmxJSE53Y21WaFpDQTlJREV1TUR0Y2JpQWdjSEpwZG1GMFpTQjBjbUZ1YzJadmNtMVJkV1YxWlZOcGVtVWdQU0EwTGpBN1hHNWNiaUFnTHk4Z1UzVndaWEoyYVhObFpDQndjbTlxWldOMGFXOXVJSEJoY21GdGMxeHVJQ0J3Y21sMllYUmxJSFJoY21kbGRFMWxkSEpwWXlBOUlGUmhjbWRsZEUxbGRISnBZeTVqWVhSbFoyOXlhV05oYkR0Y2JpQWdjSEpwZG1GMFpTQjBZWEpuWlhSWFpXbG5hSFFnUFNBd0xqVTdYRzRnSUhCeWFYWmhkR1VnZEdGeVoyVjBUazVsYVdkb1ltOXljeUE5SURFMU8xeHVYRzRnSUhCeWFYWmhkR1VnWkdsemRHRnVZMlZHYmpvZ1JHbHpkR0Z1WTJWR2JpQTlJRzUxYldWeWFXTTdYRzVjYmlBZ0x5OGdTMDVPSUhOMFlYUmxJQ2hqWVc0Z1ltVWdjSEpsWTI5dGNIVjBaV1FnWVc1a0lITjFjSEJzYVdWa0lIWnBZU0JwYm1sMGFXRnNhWHBsUm1sMEtWeHVJQ0J3Y21sMllYUmxJR3R1YmtsdVpHbGpaWE0vT2lCdWRXMWlaWEpiWFZ0ZE8xeHVJQ0J3Y21sMllYUmxJR3R1YmtScGMzUmhibU5sY3o4NklHNTFiV0psY2x0ZFcxMDdYRzVjYmlBZ0x5OGdTVzUwWlhKdVlXd2daM0poY0dnZ1kyOXVibVZqZEdsMmFYUjVJSEpsY0hKbGMyVnVkR0YwYVc5dVhHNGdJSEJ5YVhaaGRHVWdaM0poY0dnaE9pQnRZWFJ5YVhndVUzQmhjbk5sVFdGMGNtbDRPMXh1SUNCd2NtbDJZWFJsSUZnaE9pQldaV04wYjNJN1hHNGdJSEJ5YVhaaGRHVWdhWE5KYm1sMGFXRnNhWHBsWkNBOUlHWmhiSE5sTzF4dUlDQndjbWwyWVhSbElISndSbTl5WlhOME9pQjBjbVZsTGtac1lYUlVjbVZsVzEwZ1BTQmJYVHRjYmlBZ2NISnBkbUYwWlNCcGJtbDBSbkp2YlZKaGJtUnZiU0U2SUc1dVJHVnpZMlZ1ZEM1SmJtbDBSbkp2YlZKaGJtUnZiVVp1TzF4dUlDQndjbWwyWVhSbElHbHVhWFJHY205dFZISmxaU0U2SUc1dVJHVnpZMlZ1ZEM1SmJtbDBSbkp2YlZSeVpXVkdianRjYmlBZ2NISnBkbUYwWlNCelpXRnlZMmdoT2lCdWJrUmxjMk5sYm5RdVUyVmhjbU5vUm00N1hHNGdJSEJ5YVhaaGRHVWdjMlZoY21Ob1IzSmhjR2doT2lCdFlYUnlhWGd1VTNCaGNuTmxUV0YwY21sNE8xeHVYRzRnSUM4dklGTjFjR1Z5ZG1selpXUWdjSEp2YW1WamRHbHZiaUJzWVdKbGJITWdMeUIwWVhKblpYUnpYRzRnSUhCeWFYWmhkR1VnV1Q4NklHNTFiV0psY2x0ZE8xeHVYRzRnSUM4dklGQnliMnBsWTNSbFpDQmxiV0psWkdScGJtZGNiaUFnY0hKcGRtRjBaU0JsYldKbFpHUnBibWM2SUc1MWJXSmxjbHRkVzEwZ1BTQmJYVHRjYmlBZ2NISnBkbUYwWlNCdmNIUnBiV2w2WVhScGIyNVRkR0YwWlNBOUlHNWxkeUJQY0hScGJXbDZZWFJwYjI1VGRHRjBaU2dwTzF4dVhHNWNiaUFnWjJWMElHNWxhV2RvWW05eWN5Z3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTV1VG1WcFoyaGliM0p6TzF4dUlDQjlYRzRnSUdOdmJuTjBjblZqZEc5eUtIQmhjbUZ0Y3pvZ1ZVMUJVRkJoY21GdFpYUmxjbk1nUFNCN2ZTa2dlMXh1SUNBZ0lHTnZibk4wSUhObGRGQmhjbUZ0SUQwZ0tHdGxlVG9nYTJWNWIyWWdWVTFCVUZCaGNtRnRaWFJsY25NcElEMCtJSHRjYmlBZ0lDQWdJQzh2UUhSekxXbG5ibTl5WlZ4dUlDQWdJQ0FnYVdZZ0tIQmhjbUZ0YzF0clpYbGRJQ0U5UFNCMWJtUmxabWx1WldRcElIUm9hWE5iYTJWNVhTQTlJSEJoY21GdGMxdHJaWGxkTzF4dUlDQWdJSDA3WEc1Y2JpQWdJQ0J6WlhSUVlYSmhiU2duWkdsemRHRnVZMlZHYmljcE8xeHVJQ0FnSUhObGRGQmhjbUZ0S0Nkc1pXRnlibWx1WjFKaGRHVW5LVHRjYmlBZ0lDQnpaWFJRWVhKaGJTZ25iRzlqWVd4RGIyNXVaV04wYVhacGRIa25LVHRjYmlBZ0lDQnpaWFJRWVhKaGJTZ25iV2x1UkdsemRDY3BPMXh1SUNBZ0lITmxkRkJoY21GdEtDZHVRMjl0Y0c5dVpXNTBjeWNwTzF4dUlDQWdJSE5sZEZCaGNtRnRLQ2R1UlhCdlkyaHpKeWs3WEc0Z0lDQWdjMlYwVUdGeVlXMG9KMjVPWldsbmFHSnZjbk1uS1R0Y2JpQWdJQ0J6WlhSUVlYSmhiU2duYm1WbllYUnBkbVZUWVcxd2JHVlNZWFJsSnlrN1hHNGdJQ0FnYzJWMFVHRnlZVzBvSjNKaGJtUnZiU2NwTzF4dUlDQWdJSE5sZEZCaGNtRnRLQ2R5WlhCMWJITnBiMjVUZEhKbGJtZDBhQ2NwTzF4dUlDQWdJSE5sZEZCaGNtRnRLQ2R6WlhSUGNFMXBlRkpoZEdsdkp5azdYRzRnSUNBZ2MyVjBVR0Z5WVcwb0ozTndjbVZoWkNjcE8xeHVJQ0FnSUhObGRGQmhjbUZ0S0NkMGNtRnVjMlp2Y20xUmRXVjFaVk5wZW1VbktUdGNiaUFnSUNCMGFHbHpMblJoY21kbGRFNU9aV2xuYUdKdmNuTWdQU0J3WVhKaGJYTXViazVsYVdkb1ltOXljeUI4ZkNCMGFHbHpMbTVPWldsbmFHSnZjbk1nZkh3Z2RHaHBjeTUwWVhKblpYUk9UbVZwWjJoaWIzSnpPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVacGRDQjBhR1VnWkdGMFlTQjBieUJoSUhCeWIycGxZM1JsWkNCbGJXSmxaR1JwYm1jZ2MzQmhZMlVnYzNsdVkyaHliMjV2ZFhOc2VTNWNiaUFnSUNvdlhHNGdJR1pwZENoWU9pQldaV04wYjNJcElIdGNiaUFnSUNCMGFHbHpMbWx1YVhScFlXeHBlbVZHYVhRb1dDazdYRzRnSUNBZ2RHaHBjeTV2Y0hScGJXbDZaVXhoZVc5MWRDZ3BPMXh1WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WlcxaVpXUmthVzVuTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFWnBkQ0IwYUdVZ1pHRjBZU0IwYnlCaElIQnliMnBsWTNSbFpDQmxiV0psWkdScGJtY2djM0JoWTJVZ1lYTjVibU5vY205dWIzVnpiSGtzSUhkcGRHZ2dZU0JqWVd4c1ltRmphMXh1SUNBZ0tpQm1kVzVqZEdsdmJpQnBiblp2YTJWa0lHOXVJR1YyWlhKNUlHVndiMk5vSUc5bUlHOXdkR2x0YVhwaGRHbHZiaTVjYmlBZ0lDb3ZYRzRnSUdGemVXNWpJR1pwZEVGemVXNWpLRnh1SUNBZ0lGZzZJRlpsWTNSdmNpeGNiaUFnSUNCallXeHNZbUZqYXpvZ0tHVndiMk5vVG5WdFltVnlPaUJ1ZFcxaVpYSXBJRDArSUhadmFXUWdmQ0JpYjI5c1pXRnVJRDBnS0NrZ1BUNGdkSEoxWlZ4dUlDQXBJSHRjYmlBZ0lDQjBhR2x6TG1sdWFYUnBZV3hwZW1WR2FYUW9XQ2s3WEc1Y2JpQWdJQ0JoZDJGcGRDQjBhR2x6TG05d2RHbHRhWHBsVEdGNWIzVjBRWE41Ym1Nb1kyRnNiR0poWTJzcE8xeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtVnRZbVZrWkdsdVp6dGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJKYm1sMGFXRnNhWHBsY3lCd1lYSmhiV1YwWlhKeklHNWxaV1JsWkNCbWIzSWdjM1Z3WlhKMmFYTmxaQ0J3Y205cVpXTjBhVzl1TGx4dUlDQWdLaTljYmlBZ2MyVjBVM1Z3WlhKMmFYTmxaRkJ5YjJwbFkzUnBiMjRvV1RvZ2JuVnRZbVZ5VzEwc0lIQmhjbUZ0Y3pvZ1ZVMUJVRk4xY0dWeWRtbHpaV1JRWVhKaGJYTWdQU0I3ZlNrZ2UxeHVJQ0FnSUhSb2FYTXVXU0E5SUZrN1hHNGdJQ0FnZEdocGN5NTBZWEpuWlhSTlpYUnlhV01nUFNCd1lYSmhiWE11ZEdGeVoyVjBUV1YwY21saklIeDhJSFJvYVhNdWRHRnlaMlYwVFdWMGNtbGpPMXh1SUNBZ0lIUm9hWE11ZEdGeVoyVjBWMlZwWjJoMElEMGdjR0Z5WVcxekxuUmhjbWRsZEZkbGFXZG9kQ0I4ZkNCMGFHbHpMblJoY21kbGRGZGxhV2RvZER0Y2JpQWdJQ0IwYUdsekxuUmhjbWRsZEU1T1pXbG5hR0p2Y25NZ1BTQndZWEpoYlhNdWRHRnlaMlYwVGs1bGFXZG9ZbTl5Y3lCOGZDQjBhR2x6TG5SaGNtZGxkRTVPWldsbmFHSnZjbk03WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1NXNXBkR2xoYkdsNlpYTWdkVzFoY0NCM2FYUm9JSEJ5WldOdmJYQjFkR1ZrSUV0T1RpQnBibVJwWTJWeklHRnVaQ0JrYVhOMFlXNWpaWE11WEc0Z0lDQXFMMXh1SUNCelpYUlFjbVZqYjIxd2RYUmxaRXRPVGlocmJtNUpibVJwWTJWek9pQnVkVzFpWlhKYlhWdGRMQ0JyYm01RWFYTjBZVzVqWlhNNklHNTFiV0psY2x0ZFcxMHBJSHRjYmlBZ0lDQjBhR2x6TG10dWJrbHVaR2xqWlhNZ1BTQnJibTVKYm1ScFkyVnpPMXh1SUNBZ0lIUm9hWE11YTI1dVJHbHpkR0Z1WTJWeklEMGdhMjV1UkdsemRHRnVZMlZ6TzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFbHVhWFJwWVd4cGVtVnpJR1pwZENCaWVTQmpiMjF3ZFhScGJtY2dTMDVPSUdGdVpDQmhJR1oxZW5wNUlITnBiWEJzYVdOcFlXd2djMlYwTENCaGN5QjNaV3hzSUdGelhHNGdJQ0FxSUdsdWFYUnBZV3hwZW1sdVp5QjBhR1VnY0hKdmFtVmpkR1ZrSUdWdFltVmtaR2x1WjNNdUlGTmxkSE1nZEdobElHOXdkR2x0YVhwaGRHbHZiaUJ6ZEdGMFpTQmhhR1ZoWkZ4dUlDQWdLaUJ2WmlCdmNIUnBiV2w2WVhScGIyNGdjM1JsY0hNdUlGSmxkSFZ5Ym5NZ2RHaGxJRzUxYldKbGNpQnZaaUJsY0c5amFITWdkRzhnWW1VZ2RYTmxaQ0JtYjNJZ2RHaGxYRzRnSUNBcUlGTkhSQ0J2Y0hScGJXbDZZWFJwYjI0dVhHNGdJQ0FxTDF4dUlDQnBibWwwYVdGc2FYcGxSbWwwS0ZnNklGWmxZM1J2Y2lrNklHNTFiV0psY2lCN1hHNGdJQ0FnYVdZZ0tGZ3ViR1Z1WjNSb0lEdzlJSFJvYVhNdWJrNWxhV2RvWW05eWN5bGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loZ1RtOTBJR1Z1YjNWbmFDQmtZWFJoSUhCdmFXNTBjeUFvSkh0WUxteGxibWQwYUgwcElIUnZJR055WldGMFpTQnVUbVZwWjJoaWIzSnpPaUFrZTNSb2FYTXViazVsYVdkb1ltOXljMzB1SUNCQlpHUWdiVzl5WlNCa1lYUmhJSEJ2YVc1MGN5QnZjaUJoWkdwMWMzUWdkR2hsSUdOdmJtWnBaM1Z5WVhScGIyNHVZQ2s3WEc1Y2JseHVJQ0FnSUM4dklGZGxJR1J2YmlkMElHNWxaV1FnZEc4Z2NtVnBibWwwYVdGc2FYcGxJR2xtSUhkbEozWmxJR0ZzY21WaFpIa2dhVzVwZEdsaGJHbDZaV1FnWm05eUlIUm9hWE1nWkdGMFlTNWNiaUFnSUNCcFppQW9kR2hwY3k1WUlEMDlQU0JZSUNZbUlIUm9hWE11YVhOSmJtbDBhV0ZzYVhwbFpDbGNiaUFnSUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWRsZEU1RmNHOWphSE1vS1R0Y2JseHVYRzRnSUNBZ2RHaHBjeTVZSUQwZ1dEdGNibHh1SUNBZ0lHbG1JQ2doZEdocGN5NXJibTVKYm1ScFkyVnpJQ1ltSUNGMGFHbHpMbXR1YmtScGMzUmhibU5sY3lrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYTI1dVVtVnpkV3gwY3lBOUlIUm9hWE11Ym1WaGNtVnpkRTVsYVdkb1ltOXljeWhZS1R0Y2JpQWdJQ0FnSUhSb2FYTXVhMjV1U1c1a2FXTmxjeUE5SUd0dWJsSmxjM1ZzZEhNdWEyNXVTVzVrYVdObGN6dGNiaUFnSUNBZ0lIUm9hWE11YTI1dVJHbHpkR0Z1WTJWeklEMGdhMjV1VW1WemRXeDBjeTVyYm01RWFYTjBZVzVqWlhNN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZEdocGN5NW5jbUZ3YUNBOUlIUm9hWE11Wm5WNmVubFRhVzF3YkdsamFXRnNVMlYwS0Z4dUlDQWdJQ0FnV0N4Y2JpQWdJQ0FnSUhSb2FYTXViazVsYVdkb1ltOXljeXhjYmlBZ0lDQWdJSFJvYVhNdWMyVjBUM0JOYVhoU1lYUnBiMXh1SUNBZ0lDazdYRzVjYmlBZ0lDQXZMeUJUWlhRZ2RYQWdkR2hsSUhObFlYSmphQ0JuY21Gd2FDQm1iM0lnYzNWaWMyVnhkV1Z1ZENCMGNtRnVjMlp2Y20xaGRHbHZiaTVjYmlBZ0lDQjBhR2x6TG0xaGEyVlRaV0Z5WTJoR2JuTW9LVHRjYmlBZ0lDQjBhR2x6TG5ObFlYSmphRWR5WVhCb0lEMGdkR2hwY3k1dFlXdGxVMlZoY21Ob1IzSmhjR2dvV0NrN1hHNWNiaUFnSUNBdkx5QkRhR1ZqYXlCcFppQnpkWEJsY25acGMyVmtJSEJ5YjJwbFkzUnBiMjRzSUhSb1pXNGdZV1JxZFhOMElIUm9aU0JuY21Gd2FDNWNiaUFnSUNCMGFHbHpMbkJ5YjJObGMzTkhjbUZ3YUVadmNsTjFjR1Z5ZG1selpXUlFjbTlxWldOMGFXOXVLQ2s3WEc1Y2JpQWdJQ0JqYjI1emRDQjdYRzRnSUNBZ0lDQm9aV0ZrTEZ4dUlDQWdJQ0FnZEdGcGJDeGNiaUFnSUNBZ0lHVndiMk5vYzFCbGNsTmhiWEJzWlN4Y2JpQWdJQ0I5SUQwZ2RHaHBjeTVwYm1sMGFXRnNhWHBsVTJsdGNHeHBZMmxoYkZObGRFVnRZbVZrWkdsdVp5Z3BPMXh1WEc0Z0lDQWdMeThnVTJWMElIUm9aU0J2Y0hScGJXbDZZWFJwYjI0Z2NtOTFkR2x1WlNCemRHRjBaVnh1SUNBZ0lIUm9hWE11YjNCMGFXMXBlbUYwYVc5dVUzUmhkR1V1YUdWaFpDQTlJR2hsWVdRN1hHNGdJQ0FnZEdocGN5NXZjSFJwYldsNllYUnBiMjVUZEdGMFpTNTBZV2xzSUQwZ2RHRnBiRHRjYmlBZ0lDQjBhR2x6TG05d2RHbHRhWHBoZEdsdmJsTjBZWFJsTG1Wd2IyTm9jMUJsY2xOaGJYQnNaU0E5SUdWd2IyTm9jMUJsY2xOaGJYQnNaVHRjYmx4dUlDQWdJQzh2SUU1dmR5d2dhVzVwZEdsaGJHbDZaU0IwYUdVZ2IzQjBhVzFwZW1GMGFXOXVJSE4wWlhCelhHNGdJQ0FnZEdocGN5NXBibWwwYVdGc2FYcGxUM0IwYVcxcGVtRjBhVzl1S0NrN1hHNGdJQ0FnZEdocGN5NXdjbVZ3WVhKbFJtOXlUM0IwYVcxcGVtRjBhVzl1VEc5dmNDZ3BPMXh1SUNBZ0lIUm9hWE11YVhOSmJtbDBhV0ZzYVhwbFpDQTlJSFJ5ZFdVN1hHNWNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NW5aWFJPUlhCdlkyaHpLQ2s3WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUcxaGEyVlRaV0Z5WTJoR2JuTW9LU0I3WEc0Z0lDQWdZMjl1YzNRZ2UybHVhWFJHY205dFZISmxaU3dnYVc1cGRFWnliMjFTWVc1a2IyMTlJRDBnYm01RVpYTmpaVzUwTG0xaGEyVkpibWwwYVdGc2FYcGhkR2x2Ym5Nb1hHNGdJQ0FnSUNCMGFHbHpMbVJwYzNSaGJtTmxSbTVjYmlBZ0lDQXBPMXh1SUNBZ0lIUm9hWE11YVc1cGRFWnliMjFVY21WbElEMGdhVzVwZEVaeWIyMVVjbVZsTzF4dUlDQWdJSFJvYVhNdWFXNXBkRVp5YjIxU1lXNWtiMjBnUFNCcGJtbDBSbkp2YlZKaGJtUnZiVHRjYmlBZ0lDQjBhR2x6TG5ObFlYSmphQ0E5SUc1dVJHVnpZMlZ1ZEM1dFlXdGxTVzVwZEdsaGJHbDZaV1JPVGxObFlYSmphQ2gwYUdsekxtUnBjM1JoYm1ObFJtNHBPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0J0WVd0bFUyVmhjbU5vUjNKaGNHZ29XRG9nVm1WamRHOXlLU0I3WEc0Z0lDQWdZMjl1YzNRZ2EyNXVTVzVrYVdObGN5QTlJSFJvYVhNdWEyNXVTVzVrYVdObGN5RTdYRzRnSUNBZ1kyOXVjM1FnYTI1dVJHbHpkR0Z1WTJWeklEMGdkR2hwY3k1cmJtNUVhWE4wWVc1alpYTWhPMXh1SUNBZ0lHTnZibk4wSUdScGJYTWdQU0JiV0M1c1pXNW5kR2dzSUZndWJHVnVaM1JvWFR0Y2JpQWdJQ0JqYjI1emRDQnpaV0Z5WTJoSGNtRndhQ0E5SUc1bGR5QnRZWFJ5YVhndVUzQmhjbk5sVFdGMGNtbDRLRnRkTENCYlhTd2dXMTBzSUdScGJYTXBPMXh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dhMjV1U1c1a2FXTmxjeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYTI1dUlEMGdhMjV1U1c1a2FXTmxjMXRwWFR0Y2JpQWdJQ0FnSUdOdmJuTjBJR1JwYzNSaGJtTmxjeUE5SUd0dWJrUnBjM1JoYm1ObGMxdHBYVHRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJR29nUFNBd095QnFJRHdnYTI1dUxteGxibWQwYURzZ2Fpc3JLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJRzVsYVdkb1ltOXlJRDBnYTI1dVcycGRPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQmthWE4wWVc1alpTQTlJR1JwYzNSaGJtTmxjMXRxWFR0Y2JpQWdJQ0FnSUNBZ2FXWWdLR1JwYzNSaGJtTmxJRDRnTUNsY2JpQWdJQ0FnSUNBZ0lDQnpaV0Z5WTJoSGNtRndhQzV6WlhRb2FTd2dibVZwWjJoaWIzSXNJR1JwYzNSaGJtTmxLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCMGNtRnVjM0J2YzJVZ1BTQnRZWFJ5YVhndWRISmhibk53YjNObEtITmxZWEpqYUVkeVlYQm9LVHRjYmlBZ0lDQnlaWFIxY200Z2JXRjBjbWw0TG0xaGVHbHRkVzBvYzJWaGNtTm9SM0poY0dnc0lIUnlZVzV6Y0c5elpTazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVkhKaGJuTm1iM0p0Y3lCa1lYUmhJSFJ2SUhSb1pTQmxlR2x6ZEdsdVp5QmxiV0psWkdScGJtY2djM0JoWTJVdVhHNGdJQ0FxTDF4dUlDQjBjbUZ1YzJadmNtMG9kRzlVY21GdWMyWnZjbTA2SUZabFkzUnZjaWtnZTF4dUlDQWdJQzh2SUZWelpTQjBhR1VnY0hKbGRtbHZkWE1nY21GM1JHRjBZVnh1SUNBZ0lHTnZibk4wSUhKaGQwUmhkR0VnUFNCMGFHbHpMbGc3WEc0Z0lDQWdhV1lnS0hKaGQwUmhkR0VnUFQwOUlIVnVaR1ZtYVc1bFpDQjhmQ0J5WVhkRVlYUmhMbXhsYm1kMGFDQTlQVDBnTUNsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduVG04Z1pHRjBZU0JvWVhNZ1ltVmxiaUJtYVhRdUp5azdYRzVjYmx4dUlDQWdJR3hsZENCdVRtVnBaMmhpYjNKeklEMGdUV0YwYUM1bWJHOXZjaWgwYUdsekxtNU9aV2xuYUdKdmNuTWdLaUIwYUdsekxuUnlZVzV6Wm05eWJWRjFaWFZsVTJsNlpTazdYRzRnSUNBZ2JrNWxhV2RvWW05eWN5QTlJRTFoZEdndWJXbHVLSEpoZDBSaGRHRXViR1Z1WjNSb0xDQnVUbVZwWjJoaWIzSnpLVHRjYmlBZ0lDQmpiMjV6ZENCcGJtbDBJRDBnYm01RVpYTmpaVzUwTG1sdWFYUnBZV3hwZW1WVFpXRnlZMmdvWEc0Z0lDQWdJQ0IwYUdsekxuSndSbTl5WlhOMExGeHVJQ0FnSUNBZ2NtRjNSR0YwWVN4Y2JpQWdJQ0FnSUhSdlZISmhibk5tYjNKdExGeHVJQ0FnSUNBZ2JrNWxhV2RvWW05eWN5eGNiaUFnSUNBZ0lIUm9hWE11YVc1cGRFWnliMjFTWVc1a2IyMHNYRzRnSUNBZ0lDQjBhR2x6TG1sdWFYUkdjbTl0VkhKbFpTeGNiaUFnSUNBZ0lIUm9hWE11Y21GdVpHOXRYRzRnSUNBZ0tUdGNibHh1SUNBZ0lHTnZibk4wSUhKbGMzVnNkQ0E5SUhSb2FYTXVjMlZoY21Ob0tISmhkMFJoZEdFc0lIUm9hWE11YzJWaGNtTm9SM0poY0dnc0lHbHVhWFFzSUhSdlZISmhibk5tYjNKdEtUdGNibHh1SUNBZ0lHeGxkQ0I3YVc1a2FXTmxjeXdnZDJWcFoyaDBjem9nWkdsemRHRnVZMlZ6ZlNBOUlHaGxZWEF1WkdWb1pXRndVMjl5ZENoeVpYTjFiSFFwTzF4dVhHNGdJQ0FnYVc1a2FXTmxjeUE5SUdsdVpHbGpaWE11YldGd0tDaDRLU0E5UGlCNExuTnNhV05sS0RBc0lIUm9hWE11Yms1bGFXZG9ZbTl5Y3lrcE8xeHVJQ0FnSUdScGMzUmhibU5sY3lBOUlHUnBjM1JoYm1ObGN5NXRZWEFvS0hncElEMCtJSGd1YzJ4cFkyVW9NQ3dnZEdocGN5NXVUbVZwWjJoaWIzSnpLU2s3WEc1Y2JpQWdJQ0JqYjI1emRDQmhaR3AxYzNSbFpFeHZZMkZzUTI5dWJtVmpkR2wyYVhSNUlEMGdUV0YwYUM1dFlYZ29NQ3dnZEdocGN5NXNiMk5oYkVOdmJtNWxZM1JwZG1sMGVTQXRJREVwTzF4dUlDQWdJR052Ym5OMElIdHphV2R0WVhNc0lISm9iM045SUQwZ2RHaHBjeTV6Ylc5dmRHaExUazVFYVhOMFlXNWpaU2hjYmlBZ0lDQWdJR1JwYzNSaGJtTmxjeXhjYmlBZ0lDQWdJSFJvYVhNdWJrNWxhV2RvWW05eWN5eGNiaUFnSUNBZ0lHRmthblZ6ZEdWa1RHOWpZV3hEYjI1dVpXTjBhWFpwZEhsY2JpQWdJQ0FwTzF4dVhHNGdJQ0FnWTI5dWMzUWdlM0p2ZDNNc0lHTnZiSE1zSUhaaGJITjlJRDBnZEdocGN5NWpiMjF3ZFhSbFRXVnRZbVZ5YzJocGNGTjBjbVZ1WjNSb2N5aGNiaUFnSUNBZ0lHbHVaR2xqWlhNc1hHNGdJQ0FnSUNCa2FYTjBZVzVqWlhNc1hHNGdJQ0FnSUNCemFXZHRZWE1zWEc0Z0lDQWdJQ0J5YUc5elhHNGdJQ0FnS1R0Y2JseHVJQ0FnSUdOdmJuTjBJSE5wZW1VZ1BTQmJkRzlVY21GdWMyWnZjbTB1YkdWdVozUm9MQ0J5WVhkRVlYUmhMbXhsYm1kMGFGMDdYRzRnSUNBZ2JHVjBJR2R5WVhCb0lEMGdibVYzSUcxaGRISnBlQzVUY0dGeWMyVk5ZWFJ5YVhnb2NtOTNjeXdnWTI5c2N5d2dkbUZzY3l3Z2MybDZaU2s3WEc1Y2JpQWdJQ0F2THlCVWFHbHpJSGRoY3lCaElIWmxjbmtnYzNCbFkybGhiR3g1SUdOdmJuTjBjblZqZEdWa0lHZHlZWEJvSUhkcGRHZ2dZMjl1YzNSaGJuUWdaR1ZuY21WbExseHVJQ0FnSUM4dklGUm9ZWFFnYkdWMGN5QjFjeUJrYnlCbVlXNWplU0IxYm5CaFkydHBibWNnWW5rZ2NtVnphR0Z3YVc1bklIUm9aU0JqYzNJZ2JXRjBjbWw0SUdsdVpHbGpaWE5jYmlBZ0lDQXZMeUJoYm1RZ1pHRjBZUzRnUkc5cGJtY2djMjhnY21Wc2FXVnpJRzl1SUhSb1pTQmpiMjV6ZEdGdWRDQmtaV2R5WldVZ1lYTnpkVzF3ZEdsdmJpRmNibHh1SUNBZ0lHTnZibk4wSUc1dmNtMWxaQ0E5SUcxaGRISnBlQzV1YjNKdFlXeHBlbVVvWjNKaGNHZ3NJRzFoZEhKcGVDNU9iM0p0Vkhsd1pTNXNNU2s3WEc1Y2JpQWdJQ0JqYjI1emRDQmpjM0pOWVhSeWFYZ2dQU0J0WVhSeWFYZ3VaMlYwUTFOU0tHNXZjbTFsWkNrN1hHNGdJQ0FnWTI5dWMzUWdibEJ2YVc1MGN5QTlJSFJ2VkhKaGJuTm1iM0p0TG14bGJtZDBhRHRjYmx4dUlDQWdJR052Ym5OMElHVkpibVJwWTJWeklEMGdkWFJwYkhNdWNtVnphR0Z3WlRKa0tGeHVJQ0FnSUNBZ1kzTnlUV0YwY21sNExtbHVaR2xqWlhNc1hHNGdJQ0FnSUNCdVVHOXBiblJ6TEZ4dUlDQWdJQ0FnZEdocGN5NXVUbVZwWjJoaWIzSnpYRzRnSUNBZ0tUdGNibHh1SUNBZ0lHTnZibk4wSUdWWFpXbG5hSFJ6SUQwZ2RYUnBiSE11Y21WemFHRndaVEprS0Z4dUlDQWdJQ0FnWTNOeVRXRjBjbWw0TG5aaGJIVmxjeXhjYmlBZ0lDQWdJRzVRYjJsdWRITXNYRzRnSUNBZ0lDQjBhR2x6TG01T1pXbG5hR0p2Y25OY2JpQWdJQ0FwTzF4dVhHNGdJQ0FnWTI5dWMzUWdaVzFpWldSa2FXNW5JRDBnYVc1cGRGUnlZVzV6Wm05eWJTaGxTVzVrYVdObGN5d2daVmRsYVdkb2RITXNJSFJvYVhNdVpXMWlaV1JrYVc1bktUdGNibHh1SUNBZ0lHTnZibk4wSUc1RmNHOWphSE1nUFNCMGFHbHpMbTVGY0c5amFITWdQMXh1SUNBZ0lDQWdkR2hwY3k1dVJYQnZZMmh6SUM4Z015QTZYRzRnSUNBZ0lDQm5jbUZ3YUM1dVVtOTNjeUE4UFNBeE1EQXdNQ0EvWEc0Z0lDQWdJQ0FnSURFd01DQTZYRzRnSUNBZ0lDQWdJRE13TzF4dVhHNGdJQ0FnWTI5dWMzUWdaM0poY0doTllYZ2dQU0JuY21Gd2FGeHVJQ0FnSUNBZ0xtZGxkRlpoYkhWbGN5Z3BYRzRnSUNBZ0lDQXVjbVZrZFdObEtDaHRZWGdzSUhaaGJDa2dQVDRnS0haaGJDQStJRzFoZUNBL0lIWmhiQ0E2SUcxaGVDa3NJREFwTzF4dUlDQWdJR2R5WVhCb0lEMGdaM0poY0dndWJXRndLQ2gyWVd4MVpTa2dQVDRnS0haaGJIVmxJRHdnWjNKaGNHaE5ZWGdnTHlCdVJYQnZZMmh6SUQ4Z01DQTZJSFpoYkhWbEtTazdYRzRnSUNBZ1ozSmhjR2dnUFNCdFlYUnlhWGd1Wld4cGJXbHVZWFJsV21WeWIzTW9aM0poY0dncE8xeHVYRzRnSUNBZ1kyOXVjM1FnWlhCdlkyaHpVR1Z5VTJGdGNHeGxJRDBnZEdocGN5NXRZV3RsUlhCdlkyaHpVR1Z5VTJGdGNHeGxLRnh1SUNBZ0lDQWdaM0poY0dndVoyVjBWbUZzZFdWektDa3NYRzRnSUNBZ0lDQnVSWEJ2WTJoelhHNGdJQ0FnS1R0Y2JpQWdJQ0JqYjI1emRDQm9aV0ZrSUQwZ1ozSmhjR2d1WjJWMFVtOTNjeWdwTzF4dUlDQWdJR052Ym5OMElIUmhhV3dnUFNCbmNtRndhQzVuWlhSRGIyeHpLQ2s3WEc1Y2JpQWdJQ0F2THlCSmJtbDBhV0ZzYVhwbElHOXdkR2x0YVhwaGRHbHZiaUJ6YkdsbmFIUnNlU0JrYVdabVpYSmxiblJzZVNCMGFHRnVJSFJvWlNCbWFYUWdiV1YwYUc5a0xseHVJQ0FnSUhSb2FYTXVZWE56YVdkdVQzQjBhVzFwZW1GMGFXOXVVM1JoZEdWUVlYSmhiV1YwWlhKektIdGNiaUFnSUNBZ0lHaGxZV1JGYldKbFpHUnBibWM2SUdWdFltVmtaR2x1Wnl4Y2JpQWdJQ0FnSUhSaGFXeEZiV0psWkdScGJtYzZJSFJvYVhNdVpXMWlaV1JrYVc1bkxGeHVJQ0FnSUNBZ2FHVmhaQ3hjYmlBZ0lDQWdJSFJoYVd3c1hHNGdJQ0FnSUNCamRYSnlaVzUwUlhCdlkyZzZJREFzWEc0Z0lDQWdJQ0J1UlhCdlkyaHpMRnh1SUNBZ0lDQWdibFpsY25ScFkyVnpPaUJuY21Gd2FDNW5aWFJFYVcxektDbGJNVjBzWEc0Z0lDQWdJQ0JsY0c5amFITlFaWEpUWVcxd2JHVXNYRzRnSUNBZ2ZTazdYRzRnSUNBZ2RHaHBjeTV3Y21Wd1lYSmxSbTl5VDNCMGFXMXBlbUYwYVc5dVRHOXZjQ2dwTzF4dVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWIzQjBhVzFwZW1WTVlYbHZkWFFvS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRhR1ZqYTNNZ2FXWWdkMlVuY21VZ2RYTnBibWNnYzNWd1pYSjJhWE5sWkNCd2NtOXFaV04wYVc5dUxDQjBhR1Z1SUhCeWIyTmxjM01nZEdobElHZHlZWEJvWEc0Z0lDQXFJR0ZqWTI5eVpHbHVaMng1TGx4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCd2NtOWpaWE56UjNKaGNHaEdiM0pUZFhCbGNuWnBjMlZrVUhKdmFtVmpkR2x2YmlncElIdGNiaUFnSUNCamIyNXpkQ0I3V1N3Z1dIMGdQU0IwYUdsek8xeHVJQ0FnSUdsbUlDaFpLU0I3WEc0Z0lDQWdJQ0JwWmlBb1dTNXNaVzVuZEdnZ0lUMDlJRmd1YkdWdVozUm9LVnh1SUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMHhsYm1kMGFDQnZaaUJZSUdGdVpDQjVJRzExYzNRZ1ltVWdaWEYxWVd3bktUdGNibHh1WEc0Z0lDQWdJQ0JwWmlBb2RHaHBjeTUwWVhKblpYUk5aWFJ5YVdNZ1BUMDlJRlJoY21kbGRFMWxkSEpwWXk1allYUmxaMjl5YVdOaGJDa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnNkQ0E5SUhSb2FYTXVkR0Z5WjJWMFYyVnBaMmgwSUR3Z01TNHdPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQm1ZWEpFYVhOMElEMGdiSFFnUHlBeUxqVWdLaUFvTVM0d0lDOGdLREV1TUNBdElIUm9hWE11ZEdGeVoyVjBWMlZwWjJoMEtTa2dPaUF4TGpCbE1USTdYRzRnSUNBZ0lDQWdJSFJvYVhNdVozSmhjR2dnUFNCMGFHbHpMbU5oZEdWbmIzSnBZMkZzVTJsdGNHeHBZMmxoYkZObGRFbHVkR1Z5YzJWamRHbHZiaWhjYmlBZ0lDQWdJQ0FnSUNCMGFHbHpMbWR5WVhCb0xGeHVJQ0FnSUNBZ0lDQWdJRmtzWEc0Z0lDQWdJQ0FnSUNBZ1ptRnlSR2x6ZEZ4dUlDQWdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0x5OGdWRTlFVHlBb1lXNWtlV052Wlc1bGJrQXBPaUJoWkdRZ2JtOXVMV05oZEdWbmIzSnBZMkZzSUhOMWNHVnlkbWx6WldRZ1pXMWlaV1JrYVc1bmN5NWNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dUV0Z1ZFdGc2JIa2djM1JsY0NCMGFISnZkV2RvSUhSb1pTQnZjSFJwYldsNllYUnBiMjRnY0hKdlkyVnpjeUJ2Ym1VZ1pYQnZZMmdnWVhRZ1lTQjBhVzFsTGx4dUlDQWdLaTljYmlBZ2MzUmxjQ2dwSUh0Y2JpQWdJQ0JqYjI1emRDQjdZM1Z5Y21WdWRFVndiMk5vZlNBOUlIUm9hWE11YjNCMGFXMXBlbUYwYVc5dVUzUmhkR1U3WEc1Y2JpQWdJQ0JwWmlBb1kzVnljbVZ1ZEVWd2IyTm9JRHdnZEdocGN5NW5aWFJPUlhCdlkyaHpLQ2twWEc0Z0lDQWdJQ0IwYUdsekxtOXdkR2x0YVhwbFRHRjViM1YwVTNSbGNDaGpkWEp5Wlc1MFJYQnZZMmdwTzF4dVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWIzQjBhVzFwZW1GMGFXOXVVM1JoZEdVdVkzVnljbVZ1ZEVWd2IyTm9PMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGRIVnlibk1nZEdobElHTnZiWEIxZEdWa0lIQnliMnBsWTNSbFpDQmxiV0psWkdScGJtY3VYRzRnSUNBcUwxeHVJQ0JuWlhSRmJXSmxaR1JwYm1jb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVaVzFpWldSa2FXNW5PMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOdmJYQjFkR1VnZEdobElHQmdiazVsYVdkb1ltOXljMkJnSUc1bFlYSmxjM1FnY0c5cGJuUnpJR1p2Y2lCbFlXTm9JR1JoZEdFZ2NHOXBiblFnYVc0Z1lHQllZR0JjYmlBZ0lDb2dWR2hwY3lCdFlYa2dZbVVnWlhoaFkzUXNJR0oxZENCdGIzSmxJR3hwYTJWc2VTQnBjeUJoY0hCeWIzaHBiV0YwWldRZ2RtbGhJRzVsWVhKbGMzUWdibVZwWjJoaWIzSmNiaUFnSUNvZ1pHVnpZMlZ1ZEM1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ2JtVmhjbVZ6ZEU1bGFXZG9ZbTl5Y3loWU9pQldaV04wYjNJcElIdGNiaUFnSUNCamIyNXpkQ0I3WkdsemRHRnVZMlZHYml3Z2JrNWxhV2RvWW05eWMzMGdQU0IwYUdsek8xeHVJQ0FnSUdOdmJuTjBJR3h2WnpJZ1BTQW9iam9nYm5WdFltVnlLU0E5UGlCTllYUm9MbXh2WnlodUtTQXZJRTFoZEdndWJHOW5LRElwTzF4dUlDQWdJR052Ym5OMElHMWxkSEpwWTA1T1JHVnpZMlZ1ZENBOUlHNXVSR1Z6WTJWdWRDNXRZV3RsVGs1RVpYTmpaVzUwS0dScGMzUmhibU5sUm00c0lIUm9hWE11Y21GdVpHOXRLVHRjYmx4dUlDQWdJQzh2SUVoaGJtUnNaU0J3ZVhSb2IyNHpJSEp2ZFc1a2FXNW5JR1J2ZDI0Z1puSnZiU0F3TGpVZ1pHbHpZM0p3WVc1amVWeHVJQ0FnSUdOdmJuTjBJSEp2ZFc1a0lEMGdLRzQ2SUc1MWJXSmxjaWtnUFQ0Z2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUc0Z1BUMDlJREF1TlNBL0lEQWdPaUJOWVhSb0xuSnZkVzVrS0c0cE8xeHVJQ0FnSUgwN1hHNWNiaUFnSUNCamIyNXpkQ0J1VkhKbFpYTWdQU0ExSUNzZ1RXRjBhQzVtYkc5dmNpaHliM1Z1WkNoWUxteGxibWQwYUNBcUtpQXdMalVnTHlBeU1DNHdLU2s3WEc0Z0lDQWdZMjl1YzNRZ2JrbDBaWEp6SUQwZ1RXRjBhQzV0WVhnb05Td2dUV0YwYUM1bWJHOXZjaWhOWVhSb0xuSnZkVzVrS0d4dlp6SW9XQzVzWlc1bmRHZ3BLU2twTzF4dVhHNGdJQ0FnZEdocGN5NXljRVp2Y21WemRDQTlJSFJ5WldVdWJXRnJaVVp2Y21WemRDaFlMQ0J1VG1WcFoyaGliM0p6TENCdVZISmxaWE1zSUhSb2FYTXVjbUZ1Wkc5dEtUdGNibHh1SUNBZ0lHTnZibk4wSUd4bFlXWkJjbkpoZVNBOUlIUnlaV1V1YldGclpVeGxZV1pCY25KaGVTaDBhR2x6TG5Kd1JtOXlaWE4wS1R0Y2JpQWdJQ0JqYjI1emRDQjdhVzVrYVdObGN5d2dkMlZwWjJoMGMzMGdQU0J0WlhSeWFXTk9Ua1JsYzJObGJuUW9YRzRnSUNBZ0lDQllMRnh1SUNBZ0lDQWdiR1ZoWmtGeWNtRjVMRnh1SUNBZ0lDQWdiazVsYVdkb1ltOXljeXhjYmlBZ0lDQWdJRzVKZEdWeWMxeHVJQ0FnSUNrN1hHNGdJQ0FnY21WMGRYSnVJSHRyYm01SmJtUnBZMlZ6T2lCcGJtUnBZMlZ6TENCcmJtNUVhWE4wWVc1alpYTTZJSGRsYVdkb2RITjlPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVkcGRtVnVJR0VnYzJWMElHOW1JR1JoZEdFZ1dDd2dZU0J1WldsbmFHSnZjbWh2YjJRZ2MybDZaU3dnWVc1a0lHRWdiV1ZoYzNWeVpTQnZaaUJrYVhOMFlXNWpaVnh1SUNBZ0tpQmpiMjF3ZFhSbElIUm9aU0JtZFhwNmVTQnphVzF3YkdsamFXRnNJSE5sZENBb2FHVnlaU0J5WlhCeVpYTmxiblJsWkNCaGN5QmhJR1oxZW5wNUlHZHlZWEJvSUdsdVhHNGdJQ0FxSUhSb1pTQm1iM0p0SUc5bUlHRWdjM0JoY25ObElHMWhkSEpwZUNrZ1lYTnpiMk5wWVhSbFpDQjBieUIwYUdVZ1pHRjBZUzRnVkdocGN5QnBjeUJrYjI1bElHSjVYRzRnSUNBcUlHeHZZMkZzYkhrZ1lYQndjbTk0YVcxaGRHbHVaeUJuWlc5a1pYTnBZeUJrYVhOMFlXNWpaU0JoZENCbFlXTm9JSEJ2YVc1MExDQmpjbVZoZEdsdVp5QmhJR1oxZW5wNVhHNGdJQ0FxSUhOcGJYQnNhV05wWVd3Z2MyVjBJR1p2Y2lCbFlXTm9JSE4xWTJnZ2NHOXBiblFzSUdGdVpDQjBhR1Z1SUdOdmJXSnBibWx1WnlCaGJHd2dkR2hsSUd4dlkyRnNYRzRnSUNBcUlHWjFlbnA1SUhOcGJYQnNhV05wWVd3Z2MyVjBjeUJwYm5SdklHRWdaMnh2WW1Gc0lHOXVaU0IyYVdFZ1lTQm1kWHA2ZVNCMWJtbHZiaTVjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWm5WNmVubFRhVzF3YkdsamFXRnNVMlYwS0Z4dUlDQWdJRmc2SUZabFkzUnZjaXhjYmlBZ0lDQnVUbVZwWjJoaWIzSnpPaUJ1ZFcxaVpYSXNYRzRnSUNBZ2MyVjBUM0JOYVhoU1lYUnBieUE5SURFdU1GeHVJQ0FwSUh0Y2JpQWdJQ0JqYjI1emRDQjdhMjV1U1c1a2FXTmxjeUE5SUZ0ZExDQnJibTVFYVhOMFlXNWpaWE1nUFNCYlhTd2diRzlqWVd4RGIyNXVaV04wYVhacGRIbDlJRDBnZEdocGN6dGNibHh1SUNBZ0lHTnZibk4wSUh0emFXZHRZWE1zSUhKb2IzTjlJRDBnZEdocGN5NXpiVzl2ZEdoTFRrNUVhWE4wWVc1alpTaGNiaUFnSUNBZ0lHdHVia1JwYzNSaGJtTmxjeXhjYmlBZ0lDQWdJRzVPWldsbmFHSnZjbk1zWEc0Z0lDQWdJQ0JzYjJOaGJFTnZibTVsWTNScGRtbDBlVnh1SUNBZ0lDazdYRzVjYmlBZ0lDQmpiMjV6ZENCN2NtOTNjeXdnWTI5c2N5d2dkbUZzYzMwZ1BTQjBhR2x6TG1OdmJYQjFkR1ZOWlcxaVpYSnphR2x3VTNSeVpXNW5kR2h6S0Z4dUlDQWdJQ0FnYTI1dVNXNWthV05sY3l4Y2JpQWdJQ0FnSUd0dWJrUnBjM1JoYm1ObGN5eGNiaUFnSUNBZ0lITnBaMjFoY3l4Y2JpQWdJQ0FnSUhKb2IzTmNiaUFnSUNBcE8xeHVYRzRnSUNBZ1kyOXVjM1FnYzJsNlpTQTlJRnRZTG14bGJtZDBhQ3dnV0M1c1pXNW5kR2hkTzF4dUlDQWdJR052Ym5OMElITndZWEp6WlUxaGRISnBlQ0E5SUc1bGR5QnRZWFJ5YVhndVUzQmhjbk5sVFdGMGNtbDRLSEp2ZDNNc0lHTnZiSE1zSUhaaGJITXNJSE5wZW1VcE8xeHVYRzRnSUNBZ1kyOXVjM1FnZEhKaGJuTndiM05sSUQwZ2JXRjBjbWw0TG5SeVlXNXpjRzl6WlNoemNHRnljMlZOWVhSeWFYZ3BPMXh1SUNBZ0lHTnZibk4wSUhCeWIyUk5ZWFJ5YVhnZ1BTQnRZWFJ5YVhndWNHRnBjbmRwYzJWTmRXeDBhWEJzZVNoemNHRnljMlZOWVhSeWFYZ3NJSFJ5WVc1emNHOXpaU2s3WEc1Y2JpQWdJQ0JqYjI1emRDQmhJRDBnYldGMGNtbDRMbk4xWW5SeVlXTjBLRzFoZEhKcGVDNWhaR1FvYzNCaGNuTmxUV0YwY21sNExDQjBjbUZ1YzNCdmMyVXBMQ0J3Y205a1RXRjBjbWw0S1R0Y2JpQWdJQ0JqYjI1emRDQmlJRDBnYldGMGNtbDRMbTExYkhScGNHeDVVMk5oYkdGeUtHRXNJSE5sZEU5d1RXbDRVbUYwYVc4cE8xeHVJQ0FnSUdOdmJuTjBJR01nUFNCdFlYUnlhWGd1YlhWc2RHbHdiSGxUWTJGc1lYSW9jSEp2WkUxaGRISnBlQ3dnTVM0d0lDMGdjMlYwVDNCTmFYaFNZWFJwYnlrN1hHNGdJQ0FnWTI5dWMzUWdjbVZ6ZFd4MElEMGdiV0YwY21sNExtRmtaQ2hpTENCaktUdGNibHh1SUNBZ0lISmxkSFZ5YmlCeVpYTjFiSFE3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1EyOXRZbWx1WlNCaElHWjFlbnA1SUhOcGJYQnNhV05wWVd3Z2MyVjBJSGRwZEdnZ1lXNXZkR2hsY2lCbWRYcDZlU0J6YVcxd2JHbGphV0ZzSUhObGRGeHVJQ0FnS2lCblpXNWxjbUYwWldRZ1puSnZiU0JqWVhSbFoyOXlhV05oYkNCa1lYUmhJSFZ6YVc1bklHTmhkR1ZuYjNKcFkyRnNJR1JwYzNSaGJtTmxjeTRnVkdobElIUmhjbWRsZEZ4dUlDQWdLaUJrWVhSaElHbHpJR0Z6YzNWdFpXUWdkRzhnWW1VZ1kyRjBaV2R2Y21sallXd2diR0ZpWld3Z1pHRjBZU0FvWVNCMlpXTjBiM0lnYjJZZ2JHRmlaV3h6S1N4Y2JpQWdJQ29nWVc1a0lIUm9hWE1nZDJsc2JDQjFjR1JoZEdVZ2RHaGxJR1oxZW5wNUlITnBiWEJzYVdOcFlXd2djMlYwSUhSdklISmxjM0JsWTNRZ2RHaGhkQ0JzWVdKbGJDQmtZWFJoTGx4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCallYUmxaMjl5YVdOaGJGTnBiWEJzYVdOcFlXeFRaWFJKYm5SbGNuTmxZM1JwYjI0b1hHNGdJQ0FnYzJsdGNHeHBZMmxoYkZObGREb2diV0YwY21sNExsTndZWEp6WlUxaGRISnBlQ3hjYmlBZ0lDQjBZWEpuWlhRNklHNTFiV0psY2x0ZExGeHVJQ0FnSUdaaGNrUnBjM1E2SUc1MWJXSmxjaXhjYmlBZ0lDQjFibXR1YjNkdVJHbHpkQ0E5SURFdU1GeHVJQ0FwSUh0Y2JpQWdJQ0JzWlhRZ2FXNTBaWEp6WldOMGFXOXVJRDBnWm1GemRFbHVkR1Z5YzJWamRHbHZiaWhjYmlBZ0lDQWdJSE5wYlhCc2FXTnBZV3hUWlhRc1hHNGdJQ0FnSUNCMFlYSm5aWFFzWEc0Z0lDQWdJQ0IxYm10dWIzZHVSR2x6ZEN4Y2JpQWdJQ0FnSUdaaGNrUnBjM1JjYmlBZ0lDQXBPMXh1SUNBZ0lHbHVkR1Z5YzJWamRHbHZiaUE5SUcxaGRISnBlQzVsYkdsdGFXNWhkR1ZhWlhKdmN5aHBiblJsY25ObFkzUnBiMjRwTzF4dUlDQWdJSEpsZEhWeWJpQnlaWE5sZEV4dlkyRnNRMjl1Ym1WamRHbDJhWFI1S0dsdWRHVnljMlZqZEdsdmJpazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUTI5dGNIVjBaU0JoSUdOdmJuUnBiblZ2ZFhNZ2RtVnljMmx2YmlCdlppQjBhR1VnWkdsemRHRnVZMlVnZEc4Z2RHaGxJR3QwYUNCdVpXRnlaWE4wWEc0Z0lDQXFJRzVsYVdkb1ltOXlMaUJVYUdGMElHbHpMQ0IwYUdseklHbHpJSE5wYldsc1lYSWdkRzhnYTI1dUxXUnBjM1JoYm1ObElHSjFkQ0JoYkd4dmQzTWdZMjl1ZEdsdWRXOTFjMXh1SUNBZ0tpQnJJSFpoYkhWbGN5QnlZWFJvWlhJZ2RHaGhiaUJ5WlhGMWFYSnBibWNnWVc0Z2FXNTBaV2R5WVd3Z2F5NGdTVzRnWlhOelkyVnVZMlVnZDJVZ1lYSmxJSE5wYlhCc2VWeHVJQ0FnS2lCamIyMXdkWFJwYm1jZ2RHaGxJR1JwYzNSaGJtTmxJSE4xWTJnZ2RHaGhkQ0IwYUdVZ1kyRnlaR2x1WVd4cGRIa2diMllnWm5WNmVua2djMlYwSUhkbElHZGxibVZ5WVhSbFhHNGdJQ0FxSUdseklHc3VYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJSE50YjI5MGFFdE9Ua1JwYzNSaGJtTmxLRnh1SUNBZ0lHUnBjM1JoYm1ObGN6b2dWbVZqZEc5eWN5eGNiaUFnSUNCck9pQnVkVzFpWlhJc1hHNGdJQ0FnYkc5allXeERiMjV1WldOMGFYWnBkSGtnUFNBeExqQXNYRzRnSUNBZ2JrbDBaWElnUFNBMk5DeGNiaUFnSUNCaVlXNWtkMmxrZEdnZ1BTQXhMakJjYmlBZ0tTQjdYRzRnSUNBZ1kyOXVjM1FnZEdGeVoyVjBJRDBnS0UxaGRHZ3ViRzluS0dzcElDOGdUV0YwYUM1c2IyY29NaWtwSUNvZ1ltRnVaSGRwWkhSb08xeHVJQ0FnSUdOdmJuTjBJSEpvYnlBOUlIVjBhV3h6TG5wbGNtOXpLR1JwYzNSaGJtTmxjeTVzWlc1bmRHZ3BPMXh1SUNBZ0lHTnZibk4wSUhKbGMzVnNkQ0E5SUhWMGFXeHpMbnBsY205ektHUnBjM1JoYm1ObGN5NXNaVzVuZEdncE8xeHVYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQmthWE4wWVc1alpYTXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUd4bGRDQnNieUE5SURBdU1EdGNiaUFnSUNBZ0lHeGxkQ0JvYVNBOUlFbHVabWx1YVhSNU8xeHVJQ0FnSUNBZ2JHVjBJRzFwWkNBOUlERXVNRHRjYmx4dUlDQWdJQ0FnTHk4Z1ZFOUVUem9nVkdocGN5QnBjeUIyWlhKNUlHbHVaV1ptYVdOcFpXNTBMQ0JpZFhRZ2QybHNiQ0JrYnlCbWIzSWdibTkzTGlCR1NWaE5SVnh1SUNBZ0lDQWdZMjl1YzNRZ2FYUm9SR2x6ZEdGdVkyVnpJRDBnWkdsemRHRnVZMlZ6VzJsZE8xeHVJQ0FnSUNBZ1kyOXVjM1FnYm05dVdtVnliMFJwYzNSeklEMGdhWFJvUkdsemRHRnVZMlZ6TG1acGJIUmxjaWdvWkNrZ1BUNGdaQ0ErSURBdU1DazdYRzVjYmlBZ0lDQWdJR2xtSUNodWIyNWFaWEp2UkdsemRITXViR1Z1WjNSb0lENDlJR3h2WTJGc1EyOXVibVZqZEdsMmFYUjVLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR2x1WkdWNElEMGdUV0YwYUM1bWJHOXZjaWhzYjJOaGJFTnZibTVsWTNScGRtbDBlU2s3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR2x1ZEdWeWNHOXNZWFJwYjI0Z1BTQnNiMk5oYkVOdmJtNWxZM1JwZG1sMGVTQXRJR2x1WkdWNE8xeHVJQ0FnSUNBZ0lDQnBaaUFvYVc1a1pYZ2dQaUF3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdjbWh2VzJsZElEMGdibTl1V21WeWIwUnBjM1J6VzJsdVpHVjRJQzBnTVYwN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0dsdWRHVnljRzlzWVhScGIyNGdQaUJUVFU5UFZFaGZTMTlVVDB4RlVrRk9RMFVwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpvYjF0cFhTQXJQVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnBiblJsY25CdmJHRjBhVzl1SUNvZ0tHNXZibHBsY205RWFYTjBjMXRwYm1SbGVGMGdMU0J1YjI1YVpYSnZSR2x6ZEhOYmFXNWtaWGdnTFNBeFhTazdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lISm9iMXRwWFNBOUlHbHVkR1Z5Y0c5c1lYUnBiMjRnS2lCdWIyNWFaWEp2UkdsemRITmJNRjA3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb2JtOXVXbVZ5YjBScGMzUnpMbXhsYm1kMGFDQStJREFwSUh0Y2JpQWdJQ0FnSUNBZ2NtaHZXMmxkSUQwZ2RYUnBiSE11YldGNEtHNXZibHBsY205RWFYTjBjeWs3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdadmNpQW9iR1YwSUc0Z1BTQXdPeUJ1SUR3Z2JrbDBaWEk3SUc0ckt5a2dlMXh1SUNBZ0lDQWdJQ0JzWlhRZ2NITjFiU0E5SURBdU1EdGNiaUFnSUNBZ0lDQWdabTl5SUNoc1pYUWdhaUE5SURFN0lHb2dQQ0JrYVhOMFlXNWpaWE5iYVYwdWJHVnVaM1JvT3lCcUt5c3BJSHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JrSUQwZ1pHbHpkR0Z1WTJWelcybGRXMnBkSUMwZ2NtaHZXMmxkTzF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2hrSUQ0Z01DbGNiaUFnSUNBZ0lDQWdJQ0FnSUhCemRXMGdLejBnVFdGMGFDNWxlSEFvTFNoa0lDOGdiV2xrS1NrN1hHNGdJQ0FnSUNBZ0lDQWdaV3h6WlZ4dUlDQWdJQ0FnSUNBZ0lDQWdjSE4xYlNBclBTQXhMakE3WEc0Z0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQnBaaUFvVFdGMGFDNWhZbk1vY0hOMWJTQXRJSFJoY21kbGRDa2dQQ0JUVFU5UFZFaGZTMTlVVDB4RlVrRk9RMFVwWEc0Z0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc1Y2JseHVJQ0FnSUNBZ0lDQnBaaUFvY0hOMWJTQStJSFJoY21kbGRDa2dlMXh1SUNBZ0lDQWdJQ0FnSUdocElEMGdiV2xrTzF4dUlDQWdJQ0FnSUNBZ0lHMXBaQ0E5SUNoc2J5QXJJR2hwS1NBdklESXVNRHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNCc2J5QTlJRzFwWkR0Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvYUdrZ1BUMDlJRWx1Wm1sdWFYUjVLVnh1SUNBZ0lDQWdJQ0FnSUNBZ2JXbGtJQ285SURJN1hHNGdJQ0FnSUNBZ0lDQWdaV3h6WlZ4dUlDQWdJQ0FnSUNBZ0lDQWdiV2xrSUQwZ0tHeHZJQ3NnYUdrcElDOGdNaTR3TzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lISmxjM1ZzZEZ0cFhTQTlJRzFwWkR0Y2JseHVJQ0FnSUNBZ0x5OGdWRTlFVHpvZ1ZHaHBjeUJwY3lCMlpYSjVJR2x1WldabWFXTnBaVzUwTENCaWRYUWdkMmxzYkNCa2J5Qm1iM0lnYm05M0xpQkdTVmhOUlZ4dUlDQWdJQ0FnYVdZZ0tISm9iMXRwWFNBK0lEQXVNQ2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J0WldGdVNYUm9SR2x6ZEdGdVkyVnpJRDBnZFhScGJITXViV1ZoYmlocGRHaEVhWE4wWVc1alpYTXBPMXh1SUNBZ0lDQWdJQ0JwWmlBb2NtVnpkV3gwVzJsZElEd2dUVWxPWDB0ZlJFbFRWRjlUUTBGTVJTQXFJRzFsWVc1SmRHaEVhWE4wWVc1alpYTXBYRzRnSUNBZ0lDQWdJQ0FnY21WemRXeDBXMmxkSUQwZ1RVbE9YMHRmUkVsVFZGOVRRMEZNUlNBcUlHMWxZVzVKZEdoRWFYTjBZVzVqWlhNN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J0WldGdVJHbHpkR0Z1WTJWeklEMGdkWFJwYkhNdWJXVmhiaWhrYVhOMFlXNWpaWE11YldGd0tIVjBhV3h6TG0xbFlXNHBLVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tISmxjM1ZzZEZ0cFhTQThJRTFKVGw5TFgwUkpVMVJmVTBOQlRFVWdLaUJ0WldGdVJHbHpkR0Z1WTJWektWeHVJQ0FnSUNBZ0lDQWdJSEpsYzNWc2RGdHBYU0E5SUUxSlRsOUxYMFJKVTFSZlUwTkJURVVnS2lCdFpXRnVSR2x6ZEdGdVkyVnpPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCN2MybG5iV0Z6T2lCeVpYTjFiSFFzSUhKb2IzTTZJSEpvYjMwN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRMjl1YzNSeWRXTjBJSFJvWlNCdFpXMWlaWEp6YUdsd0lITjBjbVZ1WjNSb0lHUmhkR0VnWm05eUlIUm9aU0F4TFhOclpXeGxkRzl1SUc5bUlHVmhZMmdnYkc5allXeGNiaUFnSUNvZ1puVjZlbmtnYzJsdGNHeHBZMmxoYkNCelpYUWdMUzBnZEdocGN5QnBjeUJtYjNKdFpXUWdZWE1nWVNCemNHRnljMlVnYldGMGNtbDRJSGRvWlhKbElHVmhZMmdnY205M0lHbHpYRzRnSUNBcUlHRWdiRzlqWVd3Z1puVjZlbmtnYzJsdGNHeHBZMmxoYkNCelpYUXNJSGRwZEdnZ1lTQnRaVzFpWlhKemFHbHdJSE4wY21WdVozUm9JR1p2Y2lCMGFHVmNiaUFnSUNvZ01TMXphVzF3YkdWNElIUnZJR1ZoWTJnZ2IzUm9aWElnWkdGMFlTQndiMmx1ZEM1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1kyOXRjSFYwWlUxbGJXSmxjbk5vYVhCVGRISmxibWQwYUhNb1hHNGdJQ0FnYTI1dVNXNWthV05sY3pvZ1ZtVmpkRzl5Y3l4Y2JpQWdJQ0JyYm01RWFYTjBZVzVqWlhNNklGWmxZM1J2Y25Nc1hHNGdJQ0FnYzJsbmJXRnpPaUJ1ZFcxaVpYSmJYU3hjYmlBZ0lDQnlhRzl6T2lCdWRXMWlaWEpiWFZ4dUlDQXBPaUI3SUhKdmQzTTZJRzUxYldKbGNsdGRPeUJqYjJ4ek9pQnVkVzFpWlhKYlhUc2dkbUZzY3pvZ2JuVnRZbVZ5VzEwZ2ZTQjdYRzRnSUNBZ1kyOXVjM1FnYmxOaGJYQnNaWE1nUFNCcmJtNUpibVJwWTJWekxteGxibWQwYUR0Y2JpQWdJQ0JqYjI1emRDQnVUbVZwWjJoaWIzSnpJRDBnYTI1dVNXNWthV05sYzFzd1hTNXNaVzVuZEdnN1hHNWNiaUFnSUNCamIyNXpkQ0J5YjNkeklEMGdkWFJwYkhNdWVtVnliM01vYmxOaGJYQnNaWE1nS2lCdVRtVnBaMmhpYjNKektUdGNiaUFnSUNCamIyNXpkQ0JqYjJ4eklEMGdkWFJwYkhNdWVtVnliM01vYmxOaGJYQnNaWE1nS2lCdVRtVnBaMmhpYjNKektUdGNiaUFnSUNCamIyNXpkQ0IyWVd4eklEMGdkWFJwYkhNdWVtVnliM01vYmxOaGJYQnNaWE1nS2lCdVRtVnBaMmhpYjNKektUdGNibHh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dibE5oYlhCc1pYTTdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2FpQTlJREE3SUdvZ1BDQnVUbVZwWjJoaWIzSnpPeUJxS3lzcElIdGNiaUFnSUNBZ0lDQWdiR1YwSUhaaGJDQTlJREE3WEc0Z0lDQWdJQ0FnSUdsbUlDaHJibTVKYm1ScFkyVnpXMmxkVzJwZElEMDlQU0F0TVNsY2JpQWdJQ0FnSUNBZ0lDQmpiMjUwYVc1MVpUc2dMeThnVjJVZ1pHbGtiaWQwSUdkbGRDQjBhR1VnWm5Wc2JDQnJibTRnWm05eUlHbGNibHh1SUNBZ0lDQWdJQ0JwWmlBb2EyNXVTVzVrYVdObGMxdHBYVnRxWFNBOVBUMGdhU2xjYmlBZ0lDQWdJQ0FnSUNCMllXd2dQU0F3TGpBN1hHNGdJQ0FnSUNBZ0lHVnNjMlVnYVdZZ0tHdHVia1JwYzNSaGJtTmxjMXRwWFZ0cVhTQXRJSEpvYjNOYmFWMGdQRDBnTUM0d0tWeHVJQ0FnSUNBZ0lDQWdJSFpoYkNBOUlERXVNRHRjYmlBZ0lDQWdJQ0FnWld4elpWeHVJQ0FnSUNBZ0lDQWdJSFpoYkNBOUlFMWhkR2d1Wlhod0tDMG9LR3R1YmtScGMzUmhibU5sYzF0cFhWdHFYU0F0SUhKb2IzTmJhVjBwSUM4Z2MybG5iV0Z6VzJsZEtTazdYRzVjYmx4dUlDQWdJQ0FnSUNCeWIzZHpXMmtnS2lCdVRtVnBaMmhpYjNKeklDc2dhbDBnUFNCcE8xeHVJQ0FnSUNBZ0lDQmpiMnh6VzJrZ0tpQnVUbVZwWjJoaWIzSnpJQ3NnYWwwZ1BTQnJibTVKYm1ScFkyVnpXMmxkVzJwZE8xeHVJQ0FnSUNBZ0lDQjJZV3h6VzJrZ0tpQnVUbVZwWjJoaWIzSnpJQ3NnYWwwZ1BTQjJZV3c3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlIdHliM2R6TENCamIyeHpMQ0IyWVd4emZUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJKYm1sMGFXRnNhWHBsSUdFZ1puVjZlbmtnYzJsdGNHeHBZMmxoYkNCelpYUWdaVzFpWldSa2FXNW5MQ0IxYzJsdVp5QmhJSE53WldOcFptbGxaRnh1SUNBZ0tpQnBibWwwYVdGc2FYTmhkR2x2YmlCdFpYUm9iMlFnWVc1a0lIUm9aVzRnYldsdWFXMXBlbWx1WnlCMGFHVWdablY2ZW5rZ2MyVjBJR055YjNOeklHVnVkSEp2Y0hsY2JpQWdJQ29nWW1WMGQyVmxiaUIwYUdVZ01TMXphMlZzWlhSdmJuTWdiMllnZEdobElHaHBaMmdnWVc1a0lHeHZkeUJrYVcxbGJuTnBiMjVoYkNCbWRYcDZlU0J6YVcxd2JHbGphV0ZzWEc0Z0lDQXFJSE5sZEhNdVhHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElHbHVhWFJwWVd4cGVtVlRhVzF3YkdsamFXRnNVMlYwUlcxaVpXUmthVzVuS0NrZ2UxeHVJQ0FnSUdOdmJuTjBJRzVGY0c5amFITWdQU0IwYUdsekxtZGxkRTVGY0c5amFITW9LVHRjYmx4dUlDQWdJR052Ym5OMElIdHVRMjl0Y0c5dVpXNTBjMzBnUFNCMGFHbHpPMXh1SUNBZ0lHTnZibk4wSUdkeVlYQm9WbUZzZFdWeklEMGdkR2hwY3k1bmNtRndhQzVuWlhSV1lXeDFaWE1vS1R0Y2JpQWdJQ0JzWlhRZ1ozSmhjR2hOWVhnZ1BTQXdPMXh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2daM0poY0doV1lXeDFaWE11YkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lHTnZibk4wSUhaaGJIVmxJRDBnWjNKaGNHaFdZV3gxWlhOYmFWMDdYRzRnSUNBZ0lDQnBaaUFvWjNKaGNHaE5ZWGdnUENCbmNtRndhRlpoYkhWbGMxdHBYU2xjYmlBZ0lDQWdJQ0FnWjNKaGNHaE5ZWGdnUFNCMllXeDFaVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCbmNtRndhQ0E5SUhSb2FYTXVaM0poY0dndWJXRndLQ2gyWVd4MVpTa2dQVDRnZTF4dUlDQWdJQ0FnYVdZZ0tIWmhiSFZsSUR3Z1ozSmhjR2hOWVhnZ0x5QnVSWEJ2WTJoektWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z01EdGNiaUFnSUNBZ0lHVnNjMlZjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFpoYkhWbE8xeHVJQ0FnSUgwcE8xeHVYRzRnSUNBZ0x5OGdWMlVuY21VZ2JtOTBJR052YlhCMWRHbHVaeUIwYUdVZ2MzQmxZM1J5WVd3Z2FXNXBkR2xoYkdsNllYUnBiMjRnYVc0Z2RHaHBjeUJwYlhCc1pXMWxiblJoZEdsdmJseHVJQ0FnSUM4dklIVnVkR2xzSUhkbElHUmxkR1Z5YldsdVpTQmhJR0psZEhSbGNpQmxhV2RsYm5aaGJIVmxMMlZwWjJWdWRtVmpkRzl5SUdOdmJYQjFkR0YwYVc5dVhHNGdJQ0FnTHk4Z1lYQndjbTloWTJoY2JpQWdJQ0IwYUdsekxtVnRZbVZrWkdsdVp5QTlJSFYwYVd4ekxucGxjbTl6S0dkeVlYQm9MbTVTYjNkektTNXRZWEFvS0NrZ1BUNGdlMXh1SUNBZ0lDQWdjbVYwZFhKdUlIVjBhV3h6TG5wbGNtOXpLRzVEYjIxd2IyNWxiblJ6S1M1dFlYQW9LQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RYUnBiSE11ZEdGMVVtRnVaQ2gwYUdsekxuSmhibVJ2YlNrZ0tpQXlNQ0FySUMweE1Ec2dMeThnVW1GdVpHOXRJR1p5YjIwZ0xURXdJSFJ2SURFd1hHNGdJQ0FnSUNCOUtUdGNiaUFnSUNCOUtUdGNibHh1SUNBZ0lDOHZJRWRsZENCbmNtRndhQ0JrWVhSaElHbHVJRzl5WkdWeVpXUWdkMkY1TGk0dVhHNGdJQ0FnWTI5dWMzUWdkMlZwWjJoMGN6b2diblZ0WW1WeVcxMGdQU0JiWFR0Y2JpQWdJQ0JqYjI1emRDQm9aV0ZrT2lCdWRXMWlaWEpiWFNBOUlGdGRPMXh1SUNBZ0lHTnZibk4wSUhSaGFXdzZJRzUxYldKbGNsdGRJRDBnVzEwN1hHNGdJQ0FnWTI5dWMzUWdjbTkzUTI5c1ZtRnNkV1Z6SUQwZ1ozSmhjR2d1WjJWMFFXeHNLQ2s3WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J5YjNkRGIyeFdZV3gxWlhNdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJR052Ym5OMElHVnVkSEo1SUQwZ2NtOTNRMjlzVm1Gc2RXVnpXMmxkTzF4dUlDQWdJQ0FnYVdZZ0tHVnVkSEo1TG5aaGJIVmxLU0I3WEc0Z0lDQWdJQ0FnSUhkbGFXZG9kSE11Y0hWemFDaGxiblJ5ZVM1MllXeDFaU2s3WEc0Z0lDQWdJQ0FnSUhSaGFXd3VjSFZ6YUNobGJuUnllUzV5YjNjcE8xeHVJQ0FnSUNBZ0lDQm9aV0ZrTG5CMWMyZ29aVzUwY25rdVkyOXNLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ1kyOXVjM1FnWlhCdlkyaHpVR1Z5VTJGdGNHeGxJRDBnZEdocGN5NXRZV3RsUlhCdlkyaHpVR1Z5VTJGdGNHeGxLSGRsYVdkb2RITXNJRzVGY0c5amFITXBPMXh1WEc0Z0lDQWdjbVYwZFhKdUlIdG9aV0ZrTENCMFlXbHNMQ0JsY0c5amFITlFaWEpUWVcxd2JHVjlPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVkcGRtVnVJR0VnYzJWMElHOW1JSGRsYVdkb2RITWdZVzVrSUc1MWJXSmxjaUJ2WmlCbGNHOWphSE1nWjJWdVpYSmhkR1VnZEdobElHNTFiV0psY2lCdlpseHVJQ0FnS2lCbGNHOWphSE1nY0dWeUlITmhiWEJzWlNCbWIzSWdaV0ZqYUNCM1pXbG5hSFF1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUcxaGEyVkZjRzlqYUhOUVpYSlRZVzF3YkdVb2QyVnBaMmgwY3pvZ2JuVnRZbVZ5VzEwc0lHNUZjRzlqYUhNNklHNTFiV0psY2lrZ2UxeHVJQ0FnSUdOdmJuTjBJSEpsYzNWc2RDQTlJSFYwYVd4ekxtWnBiR3hsWkNoM1pXbG5hSFJ6TG14bGJtZDBhQ3dnTFRFdU1DazdYRzRnSUNBZ1kyOXVjM1FnYldGNElEMGdkWFJwYkhNdWJXRjRLSGRsYVdkb2RITXBPMXh1SUNBZ0lHTnZibk4wSUc1VFlXMXdiR1Z6SUQwZ2QyVnBaMmgwY3k1dFlYQW9LSGNwSUQwK0lDaDNJQzhnYldGNEtTQXFJRzVGY0c5amFITXBPMXh1SUNBZ0lHNVRZVzF3YkdWekxtWnZja1ZoWTJnb0tHNHNJR2twSUQwK0lIdGNiaUFnSUNBZ0lHbG1JQ2h1SUQ0Z01Da2djbVZ6ZFd4MFcybGRJRDBnYmtWd2IyTm9jeUF2SUc1VFlXMXdiR1Z6VzJsZE8xeHVJQ0FnSUgwcE8xeHVJQ0FnSUhKbGRIVnliaUJ5WlhOMWJIUTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUVhOemFXZHVjeUJ2Y0hScGJXbDZZWFJwYjI0Z2MzUmhkR1VnY0dGeVlXMWxkR1Z5Y3lCbWNtOXRJR0VnY0dGeWRHbGhiQ0J2Y0hScGJXbDZZWFJwYjI0Z2MzUmhkR1V1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUdGemMybG5iazl3ZEdsdGFYcGhkR2x2YmxOMFlYUmxVR0Z5WVcxbGRHVnljeWh6ZEdGMFpUb2dVR0Z5ZEdsaGJEeFBjSFJwYldsNllYUnBiMjVUZEdGMFpUNHBJSHRjYmlBZ0lDQlBZbXBsWTNRdVlYTnphV2R1S0hSb2FYTXViM0IwYVcxcGVtRjBhVzl1VTNSaGRHVXNJSE4wWVhSbEtUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJUWlhSeklHRWdabVYzSUc5d2RHbHRhWHBoZEdsdmJpQnpkR0YwWlNCd1lYSmhiV1YwWlhKeklIUm9ZWFFnWVhKbElHNWxZMlZ6YzJGeWVTQmlaV1p2Y21VZ1pXNTBaWEpwYm1kY2JpQWdJQ29nZEdobElHOXdkR2x0YVhwaGRHbHZiaUJ6ZEdWd0lHeHZiM0F1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUhCeVpYQmhjbVZHYjNKUGNIUnBiV2w2WVhScGIyNU1iMjl3S0NrZ2UxeHVJQ0FnSUM4dklFaDVjR1Z5Y0dGeVlXMWxkR1Z5YzF4dUlDQWdJR052Ym5OMElIdHlaWEIxYkhOcGIyNVRkSEpsYm1kMGFDd2diR1ZoY201cGJtZFNZWFJsTENCdVpXZGhkR2wyWlZOaGJYQnNaVkpoZEdWOUlEMGdkR2hwY3p0Y2JseHVJQ0FnSUdOdmJuTjBJSHRjYmlBZ0lDQWdJR1Z3YjJOb2MxQmxjbE5oYlhCc1pTeGNiaUFnSUNBZ0lHaGxZV1JGYldKbFpHUnBibWNzWEc0Z0lDQWdJQ0IwWVdsc1JXMWlaV1JrYVc1bkxGeHVJQ0FnSUgwZ1BTQjBhR2x6TG05d2RHbHRhWHBoZEdsdmJsTjBZWFJsTzF4dVhHNGdJQ0FnWTI5dWMzUWdaR2x0SUQwZ2FHVmhaRVZ0WW1Wa1pHbHVaMXN3WFM1c1pXNW5kR2c3WEc0Z0lDQWdZMjl1YzNRZ2JXOTJaVTkwYUdWeUlEMGdhR1ZoWkVWdFltVmtaR2x1Wnk1c1pXNW5kR2dnUFQwOUlIUmhhV3hGYldKbFpHUnBibWN1YkdWdVozUm9PMXh1WEc0Z0lDQWdZMjl1YzNRZ1pYQnZZMmh6VUdWeVRtVm5ZWFJwZG1WVFlXMXdiR1VnUFNCbGNHOWphSE5RWlhKVFlXMXdiR1V1YldGd0tGeHVJQ0FnSUNBZ0tHVXBJRDArSUdVZ0x5QnVaV2RoZEdsMlpWTmhiWEJzWlZKaGRHVmNiaUFnSUNBcE8xeHVJQ0FnSUdOdmJuTjBJR1Z3YjJOb1QyWk9aWGgwVG1WbllYUnBkbVZUWVcxd2JHVWdQU0JiTGk0dVpYQnZZMmh6VUdWeVRtVm5ZWFJwZG1WVFlXMXdiR1ZkTzF4dUlDQWdJR052Ym5OMElHVndiMk5vVDJaT1pYaDBVMkZ0Y0d4bElEMGdXeTR1TG1Wd2IyTm9jMUJsY2xOaGJYQnNaVjA3WEc1Y2JpQWdJQ0IwYUdsekxtRnpjMmxuYms5d2RHbHRhWHBoZEdsdmJsTjBZWFJsVUdGeVlXMWxkR1Z5Y3loN1hHNGdJQ0FnSUNCbGNHOWphRTltVG1WNGRGTmhiWEJzWlN4Y2JpQWdJQ0FnSUdWd2IyTm9UMlpPWlhoMFRtVm5ZWFJwZG1WVFlXMXdiR1VzWEc0Z0lDQWdJQ0JsY0c5amFITlFaWEpPWldkaGRHbDJaVk5oYlhCc1pTeGNiaUFnSUNBZ0lHMXZkbVZQZEdobGNpeGNiaUFnSUNBZ0lHbHVhWFJwWVd4QmJIQm9ZVG9nYkdWaGNtNXBibWRTWVhSbExGeHVJQ0FnSUNBZ1lXeHdhR0U2SUd4bFlYSnVhVzVuVW1GMFpTeGNiaUFnSUNBZ0lHZGhiVzFoT2lCeVpYQjFiSE5wYjI1VGRISmxibWQwYUN4Y2JpQWdJQ0FnSUdScGJTeGNiaUFnSUNCOUtUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJKYm1sMGFXRnNhWHBsY3lCdmNIUnBiV2w2WVhScGIyNGdjM1JoZEdVZ1ptOXlJSE4wWlhCM2FYTmxJRzl3ZEdsdGFYcGhkR2x2Ymk1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ2FXNXBkR2xoYkdsNlpVOXdkR2x0YVhwaGRHbHZiaWdwSUh0Y2JpQWdJQ0F2THlCQmJHZHZjbWwwYUcwZ2MzUmhkR1ZjYmlBZ0lDQmpiMjV6ZENCb1pXRmtSVzFpWldSa2FXNW5JRDBnZEdocGN5NWxiV0psWkdScGJtYzdYRzRnSUNBZ1kyOXVjM1FnZEdGcGJFVnRZbVZrWkdsdVp5QTlJSFJvYVhNdVpXMWlaV1JrYVc1bk8xeHVYRzRnSUNBZ0x5OGdTVzVwZEdsaGJHbDZaV1FnYVc0Z2FXNXBkR2xoYkdsNlpWTnBiWEJzYVdOcFlXeFRaWFJGYldKbFpHUnBibWNvS1Z4dUlDQWdJR052Ym5OMElIdG9aV0ZrTENCMFlXbHNMQ0JsY0c5amFITlFaWEpUWVcxd2JHVjlJRDBnZEdocGN5NXZjSFJwYldsNllYUnBiMjVUZEdGMFpUdGNibHh1SUNBZ0lHTnZibk4wSUc1RmNHOWphSE1nUFNCMGFHbHpMbWRsZEU1RmNHOWphSE1vS1R0Y2JpQWdJQ0JqYjI1emRDQnVWbVZ5ZEdsalpYTWdQU0IwYUdsekxtZHlZWEJvTG01RGIyeHpPMXh1WEc0Z0lDQWdZMjl1YzNRZ2UyRXNJR0o5SUQwZ1ptbHVaRUZDVUdGeVlXMXpLSFJvYVhNdWMzQnlaV0ZrTENCMGFHbHpMbTFwYmtScGMzUXBPMXh1WEc0Z0lDQWdkR2hwY3k1aGMzTnBaMjVQY0hScGJXbDZZWFJwYjI1VGRHRjBaVkJoY21GdFpYUmxjbk1vZTF4dUlDQWdJQ0FnYUdWaFpFVnRZbVZrWkdsdVp5eGNiaUFnSUNBZ0lIUmhhV3hGYldKbFpHUnBibWNzWEc0Z0lDQWdJQ0JvWldGa0xGeHVJQ0FnSUNBZ2RHRnBiQ3hjYmlBZ0lDQWdJR1Z3YjJOb2MxQmxjbE5oYlhCc1pTeGNiaUFnSUNBZ0lHRXNYRzRnSUNBZ0lDQmlMRnh1SUNBZ0lDQWdia1Z3YjJOb2N5eGNiaUFnSUNBZ0lHNVdaWEowYVdObGN5eGNiaUFnSUNCOUtUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJKYlhCeWIzWmxJR0Z1SUdWdFltVmtaR2x1WnlCMWMybHVaeUJ6ZEc5amFHRnpkR2xqSUdkeVlXUnBaVzUwSUdSbGMyTmxiblFnZEc4Z2JXbHVhVzFwZW1VZ2RHaGxYRzRnSUNBcUlHWjFlbnA1SUhObGRDQmpjbTl6Y3lCbGJuUnliM0I1SUdKbGRIZGxaVzRnZEdobElERXRjMnRsYkdWMGIyNXpJRzltSUhSb1pTQm9hV2RvSUdScGJXVnVjMmx2Ym1Gc1hHNGdJQ0FxSUdGdVpDQnNiM2NnWkdsdFpXNXphVzl1WVd3Z1puVjZlbmtnYzJsdGNHeHBZMmxoYkNCelpYUnpMaUJKYmlCd2NtRmpkR2xqWlNCMGFHbHpJR2x6SUdSdmJtVWdZbmxjYmlBZ0lDb2djMkZ0Y0d4cGJtY2daV1JuWlhNZ1ltRnpaV1FnYjI0Z2RHaGxhWElnYldWdFltVnljMmhwY0NCemRISmxibWQwYUNBb2QybDBhQ0IwYUdVZ0tERXRjQ2tnZEdWeWJYTmNiaUFnSUNvZ1kyOXRhVzVuSUdaeWIyMGdibVZuWVhScGRtVWdjMkZ0Y0d4cGJtY2djMmx0YVd4aGNpQjBieUIzYjNKa01uWmxZeWt1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUc5d2RHbHRhWHBsVEdGNWIzVjBVM1JsY0NodU9pQnVkVzFpWlhJcElIdGNiaUFnSUNCamIyNXpkQ0I3YjNCMGFXMXBlbUYwYVc5dVUzUmhkR1Y5SUQwZ2RHaHBjenRjYmlBZ0lDQmpiMjV6ZENCN1hHNGdJQ0FnSUNCb1pXRmtMRnh1SUNBZ0lDQWdkR0ZwYkN4Y2JpQWdJQ0FnSUdobFlXUkZiV0psWkdScGJtY3NYRzRnSUNBZ0lDQjBZV2xzUlcxaVpXUmthVzVuTEZ4dUlDQWdJQ0FnWlhCdlkyaHpVR1Z5VTJGdGNHeGxMRnh1SUNBZ0lDQWdaWEJ2WTJoUFprNWxlSFJUWVcxd2JHVXNYRzRnSUNBZ0lDQmxjRzlqYUU5bVRtVjRkRTVsWjJGMGFYWmxVMkZ0Y0d4bExGeHVJQ0FnSUNBZ1pYQnZZMmh6VUdWeVRtVm5ZWFJwZG1WVFlXMXdiR1VzWEc0Z0lDQWdJQ0J0YjNabFQzUm9aWElzWEc0Z0lDQWdJQ0JwYm1sMGFXRnNRV3h3YUdFc1hHNGdJQ0FnSUNCaGJIQm9ZU3hjYmlBZ0lDQWdJR2RoYlcxaExGeHVJQ0FnSUNBZ1lTeGNiaUFnSUNBZ0lHSXNYRzRnSUNBZ0lDQmthVzBzWEc0Z0lDQWdJQ0J1UlhCdlkyaHpMRnh1SUNBZ0lDQWdibFpsY25ScFkyVnpMRnh1SUNBZ0lIMGdQU0J2Y0hScGJXbDZZWFJwYjI1VGRHRjBaVHRjYmx4dUlDQWdJR052Ym5OMElHTnNhWEJXWVd4MVpTQTlJRFF1TUR0Y2JseHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z1pYQnZZMmh6VUdWeVUyRnRjR3hsTG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQnBaaUFvWlhCdlkyaFBaazVsZUhSVFlXMXdiR1ZiYVYwZ1BpQnVLVnh1SUNBZ0lDQWdJQ0JqYjI1MGFXNTFaVHRjYmx4dVhHNGdJQ0FnSUNCamIyNXpkQ0JxSUQwZ2FHVmhaRnRwWFR0Y2JpQWdJQ0FnSUdOdmJuTjBJR3NnUFNCMFlXbHNXMmxkTzF4dVhHNGdJQ0FnSUNCamIyNXpkQ0JqZFhKeVpXNTBJRDBnYUdWaFpFVnRZbVZrWkdsdVoxdHFYVHRjYmlBZ0lDQWdJR052Ym5OMElHOTBhR1Z5SUQwZ2RHRnBiRVZ0WW1Wa1pHbHVaMXRyWFR0Y2JseHVJQ0FnSUNBZ1kyOXVjM1FnWkdsemRGTnhkV0Z5WldRZ1BTQnlSR2x6ZENoamRYSnlaVzUwTENCdmRHaGxjaWs3WEc1Y2JpQWdJQ0FnSUd4bGRDQm5jbUZrUTI5bFptWWdQU0F3TzF4dUlDQWdJQ0FnYVdZZ0tHUnBjM1JUY1hWaGNtVmtJRDRnTUNrZ2UxeHVJQ0FnSUNBZ0lDQm5jbUZrUTI5bFptWWdQU0F0TWk0d0lDb2dZU0FxSUdJZ0tpQk5ZWFJvTG5CdmR5aGthWE4wVTNGMVlYSmxaQ3dnWWlBdElERXVNQ2s3WEc0Z0lDQWdJQ0FnSUdkeVlXUkRiMlZtWmlBdlBTQmhJQ29nVFdGMGFDNXdiM2NvWkdsemRGTnhkV0Z5WldRc0lHSXBJQ3NnTVM0d08xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQmtJRDBnTURzZ1pDQThJR1JwYlRzZ1pDc3JLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR2R5WVdSRUlEMGdZMnhwY0NobmNtRmtRMjlsWm1ZZ0tpQW9ZM1Z5Y21WdWRGdGtYU0F0SUc5MGFHVnlXMlJkS1N3Z1kyeHBjRlpoYkhWbEtUdGNiaUFnSUNBZ0lDQWdZM1Z5Y21WdWRGdGtYU0FyUFNCbmNtRmtSQ0FxSUdGc2NHaGhPMXh1SUNBZ0lDQWdJQ0JwWmlBb2JXOTJaVTkwYUdWeUtWeHVJQ0FnSUNBZ0lDQWdJRzkwYUdWeVcyUmRJQ3M5SUMxbmNtRmtSQ0FxSUdGc2NHaGhPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JsY0c5amFFOW1UbVY0ZEZOaGJYQnNaVnRwWFNBclBTQmxjRzlqYUhOUVpYSlRZVzF3YkdWYmFWMDdYRzVjYmlBZ0lDQWdJR052Ym5OMElHNU9aV2RUWVcxd2JHVnpJRDBnVFdGMGFDNW1iRzl2Y2loY2JpQWdJQ0FnSUNBZ0tHNGdMU0JsY0c5amFFOW1UbVY0ZEU1bFoyRjBhWFpsVTJGdGNHeGxXMmxkS1NBdklHVndiMk5vYzFCbGNrNWxaMkYwYVhabFUyRnRjR3hsVzJsZFhHNGdJQ0FnSUNBcE8xeHVYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQndJRDBnTURzZ2NDQThJRzVPWldkVFlXMXdiR1Z6T3lCd0t5c3BJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdheUE5SUhWMGFXeHpMblJoZFZKaGJtUkpiblFvYmxabGNuUnBZMlZ6TENCMGFHbHpMbkpoYm1SdmJTazdYRzRnSUNBZ0lDQWdJR052Ym5OMElHOTBhR1Z5SUQwZ2RHRnBiRVZ0WW1Wa1pHbHVaMXRyWFR0Y2JseHVJQ0FnSUNBZ0lDQmpiMjV6ZENCa2FYTjBVM0YxWVhKbFpDQTlJSEpFYVhOMEtHTjFjbkpsYm5Rc0lHOTBhR1Z5S1R0Y2JseHVJQ0FnSUNBZ0lDQnNaWFFnWjNKaFpFTnZaV1ptSUQwZ01DNHdPMXh1SUNBZ0lDQWdJQ0JwWmlBb1pHbHpkRk54ZFdGeVpXUWdQaUF3TGpBcElIdGNiaUFnSUNBZ0lDQWdJQ0JuY21Ga1EyOWxabVlnUFNBeUxqQWdLaUJuWVcxdFlTQXFJR0k3WEc0Z0lDQWdJQ0FnSUNBZ1ozSmhaRU52WldabUlDODlYRzRnSUNBZ0lDQWdJQ0FnSUNBb01DNHdNREVnS3lCa2FYTjBVM0YxWVhKbFpDa2dLaUFvWVNBcUlFMWhkR2d1Y0c5M0tHUnBjM1JUY1hWaGNtVmtMQ0JpS1NBcklERXBPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0dvZ1BUMDlJR3NwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjUwYVc1MVpUdGNiaUFnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUdadmNpQW9iR1YwSUdRZ1BTQXdPeUJrSUR3Z1pHbHRPeUJrS3lzcElIdGNiaUFnSUNBZ0lDQWdJQ0JzWlhRZ1ozSmhaRVFnUFNBMExqQTdYRzRnSUNBZ0lDQWdJQ0FnYVdZZ0tHZHlZV1JEYjJWbVppQStJREF1TUNsY2JpQWdJQ0FnSUNBZ0lDQWdJR2R5WVdSRUlEMGdZMnhwY0NobmNtRmtRMjlsWm1ZZ0tpQW9ZM1Z5Y21WdWRGdGtYU0F0SUc5MGFHVnlXMlJkS1N3Z1kyeHBjRlpoYkhWbEtUdGNibHh1SUNBZ0lDQWdJQ0FnSUdOMWNuSmxiblJiWkYwZ0t6MGdaM0poWkVRZ0tpQmhiSEJvWVR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ1pYQnZZMmhQWms1bGVIUk9aV2RoZEdsMlpWTmhiWEJzWlZ0cFhTQXJQU0J1VG1WblUyRnRjR3hsY3lBcUlHVndiMk5vYzFCbGNrNWxaMkYwYVhabFUyRnRjR3hsVzJsZE8xeHVJQ0FnSUgxY2JpQWdJQ0J2Y0hScGJXbDZZWFJwYjI1VGRHRjBaUzVoYkhCb1lTQTlJR2x1YVhScFlXeEJiSEJvWVNBcUlDZ3hMakFnTFNCdUlDOGdia1Z3YjJOb2N5azdYRzVjYmlBZ0lDQnZjSFJwYldsNllYUnBiMjVUZEdGMFpTNWpkWEp5Wlc1MFJYQnZZMmdnS3owZ01UdGNiaUFnSUNCeVpYUjFjbTRnYUdWaFpFVnRZbVZrWkdsdVp6dGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJKYlhCeWIzWmxJR0Z1SUdWdFltVmtaR2x1WnlCMWMybHVaeUJ6ZEc5amFHRnpkR2xqSUdkeVlXUnBaVzUwSUdSbGMyTmxiblFnZEc4Z2JXbHVhVzFwZW1VZ2RHaGxYRzRnSUNBcUlHWjFlbnA1SUhObGRDQmpjbTl6Y3lCbGJuUnliM0I1SUdKbGRIZGxaVzRnZEdobElERXRjMnRsYkdWMGIyNXpJRzltSUhSb1pTQm9hV2RvSUdScGJXVnVjMmx2Ym1Gc1hHNGdJQ0FxSUdGdVpDQnNiM2NnWkdsdFpXNXphVzl1WVd3Z1puVjZlbmtnYzJsdGNHeHBZMmxoYkNCelpYUnpMaUJKYmlCd2NtRmpkR2xqWlNCMGFHbHpJR2x6SUdSdmJtVWdZbmxjYmlBZ0lDb2djMkZ0Y0d4cGJtY2daV1JuWlhNZ1ltRnpaV1FnYjI0Z2RHaGxhWElnYldWdFltVnljMmhwY0NCemRISmxibWQwYUNBb2QybDBhQ0IwYUdVZ0tERXRjQ2tnZEdWeWJYTmNiaUFnSUNvZ1kyOXRhVzVuSUdaeWIyMGdibVZuWVhScGRtVWdjMkZ0Y0d4cGJtY2djMmx0YVd4aGNpQjBieUIzYjNKa01uWmxZeWt1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUc5d2RHbHRhWHBsVEdGNWIzVjBRWE41Ym1Nb1hHNGdJQ0FnWlhCdlkyaERZV3hzWW1GamF6b2dLR1Z3YjJOb1RuVnRZbVZ5T2lCdWRXMWlaWElwSUQwK0lIWnZhV1FnZkNCaWIyOXNaV0Z1SUQwZ0tDa2dQVDRnZEhKMVpWeHVJQ0FwT2lCUWNtOXRhWE5sUEdKdmIyeGxZVzQrSUh0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzSUZCeWIyMXBjMlVvS0hKbGMyOXNkbVVzSUhKbGFtVmpkQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYzNSbGNDQTlJR0Z6ZVc1aklDZ3BJRDArSUh0Y2JpQWdJQ0FnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0I3YmtWd2IyTm9jeXdnWTNWeWNtVnVkRVZ3YjJOb2ZTQTlJSFJvYVhNdWIzQjBhVzFwZW1GMGFXOXVVM1JoZEdVN1hHNGdJQ0FnSUNBZ0lDQWdkR2hwY3k1bGJXSmxaR1JwYm1jZ1BTQjBhR2x6TG05d2RHbHRhWHBsVEdGNWIzVjBVM1JsY0NoamRYSnlaVzUwUlhCdlkyZ3BPMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR1Z3YjJOb1EyOXRjR3hsZEdWa0lEMGdkR2hwY3k1dmNIUnBiV2w2WVhScGIyNVRkR0YwWlM1amRYSnlaVzUwUlhCdlkyZzdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdjMmh2ZFd4a1UzUnZjQ0E5SUdWd2IyTm9RMkZzYkdKaFkyc29aWEJ2WTJoRGIyMXdiR1YwWldRcElEMDlQU0JtWVd4elpUdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQnBjMFpwYm1semFHVmtJRDBnWlhCdlkyaERiMjF3YkdWMFpXUWdQVDA5SUc1RmNHOWphSE03WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLQ0Z6YUc5MWJHUlRkRzl3SUNZbUlDRnBjMFpwYm1semFHVmtLVnh1SUNBZ0lDQWdJQ0FnSUNBZ2MyVjBWR2x0Wlc5MWRDZ29LU0E5UGlCemRHVndLQ2tzSURBcE8xeHVJQ0FnSUNBZ0lDQWdJR1ZzYzJWY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWE52YkhabEtHbHpSbWx1YVhOb1pXUXBPMXh1SUNBZ0lDQWdJQ0I5SUdOaGRHTm9JQ2hsY25JcElIdGNiaUFnSUNBZ0lDQWdJQ0J5WldwbFkzUW9aWEp5S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZUdGNiaUFnSUNBZ0lITmxkRlJwYldWdmRYUW9LQ2tnUFQ0Z2MzUmxjQ2dwTENBd0tUdGNiaUFnSUNCOUtUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJKYlhCeWIzWmxJR0Z1SUdWdFltVmtaR2x1WnlCMWMybHVaeUJ6ZEc5amFHRnpkR2xqSUdkeVlXUnBaVzUwSUdSbGMyTmxiblFnZEc4Z2JXbHVhVzFwZW1VZ2RHaGxYRzRnSUNBcUlHWjFlbnA1SUhObGRDQmpjbTl6Y3lCbGJuUnliM0I1SUdKbGRIZGxaVzRnZEdobElERXRjMnRsYkdWMGIyNXpJRzltSUhSb1pTQm9hV2RvSUdScGJXVnVjMmx2Ym1Gc1hHNGdJQ0FxSUdGdVpDQnNiM2NnWkdsdFpXNXphVzl1WVd3Z1puVjZlbmtnYzJsdGNHeHBZMmxoYkNCelpYUnpMaUJKYmlCd2NtRmpkR2xqWlNCMGFHbHpJR2x6SUdSdmJtVWdZbmxjYmlBZ0lDb2djMkZ0Y0d4cGJtY2daV1JuWlhNZ1ltRnpaV1FnYjI0Z2RHaGxhWElnYldWdFltVnljMmhwY0NCemRISmxibWQwYUNBb2QybDBhQ0IwYUdVZ0tERXRjQ2tnZEdWeWJYTmNiaUFnSUNvZ1kyOXRhVzVuSUdaeWIyMGdibVZuWVhScGRtVWdjMkZ0Y0d4cGJtY2djMmx0YVd4aGNpQjBieUIzYjNKa01uWmxZeWt1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUc5d2RHbHRhWHBsVEdGNWIzVjBLRnh1SUNBZ0lHVndiMk5vUTJGc2JHSmhZMnM2SUNobGNHOWphRTUxYldKbGNqb2diblZ0WW1WeUtTQTlQaUIyYjJsa0lId2dZbTl2YkdWaGJpQTlJQ2dwSUQwK0lIUnlkV1ZjYmlBZ0tUb2dWbVZqZEc5eWN5QjdYRzRnSUNBZ2JHVjBJR2x6Um1sdWFYTm9aV1FnUFNCbVlXeHpaVHRjYmlBZ0lDQnNaWFFnWlcxaVpXUmthVzVuT2lCV1pXTjBiM0p6SUQwZ1cxMDdYRzRnSUNBZ2QyaHBiR1VnS0NGcGMwWnBibWx6YUdWa0tTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCN2JrVndiMk5vY3l3Z1kzVnljbVZ1ZEVWd2IyTm9mU0E5SUhSb2FYTXViM0IwYVcxcGVtRjBhVzl1VTNSaGRHVTdYRzRnSUNBZ0lDQmxiV0psWkdScGJtY2dQU0IwYUdsekxtOXdkR2x0YVhwbFRHRjViM1YwVTNSbGNDaGpkWEp5Wlc1MFJYQnZZMmdwTzF4dUlDQWdJQ0FnWTI5dWMzUWdaWEJ2WTJoRGIyMXdiR1YwWldRZ1BTQjBhR2x6TG05d2RHbHRhWHBoZEdsdmJsTjBZWFJsTG1OMWNuSmxiblJGY0c5amFEdGNiaUFnSUNBZ0lHTnZibk4wSUhOb2IzVnNaRk4wYjNBZ1BTQmxjRzlqYUVOaGJHeGlZV05yS0dWd2IyTm9RMjl0Y0d4bGRHVmtLU0E5UFQwZ1ptRnNjMlU3WEc0Z0lDQWdJQ0JwYzBacGJtbHphR1ZrSUQwZ1pYQnZZMmhEYjIxd2JHVjBaV1FnUFQwOUlHNUZjRzlqYUhNZ2ZId2djMmh2ZFd4a1UzUnZjRHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdWdFltVmtaR2x1Wnp0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkhaWFJ6SUhSb1pTQnVkVzFpWlhJZ2IyWWdaWEJ2WTJoeklHWnZjaUJ2Y0hScGJXbDZhVzVuSUhSb1pTQndjbTlxWldOMGFXOXVMbHh1SUNBZ0tpQk9UMVJGT2lCVWFHbHpJR2hsZFhKcGMzUnBZeUJrYVdabVpYSnpJR1p5YjIwZ2RHaGxJSEI1ZEdodmJpQjJaWEp6YVc5dVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1oyVjBUa1Z3YjJOb2N5Z3BJSHRjYmlBZ0lDQmpiMjV6ZENCbmNtRndhQ0E5SUhSb2FYTXVaM0poY0dnN1hHNWNiaUFnSUNCcFppQW9kR2hwY3k1dVJYQnZZMmh6SUQ0Z01DbGNiaUFnSUNBZ0lISmxkSFZ5YmlCMGFHbHpMbTVGY0c5amFITTdYRzVjYmx4dUlDQWdJR2xtSUNnaFozSmhjR2dwWEc0Z0lDQWdJQ0J5WlhSMWNtNGdNakF3TzF4dVhHNWNiaUFnSUNCamIyNXpkQ0JzWlc1bmRHZ2dQU0JuY21Gd2FDNXVVbTkzY3p0Y2JpQWdJQ0JwWmlBb2JHVnVaM1JvSUR3OUlESTFNREFwWEc0Z0lDQWdJQ0J5WlhSMWNtNGdOVEF3TzF4dUlDQWdJR1ZzYzJVZ2FXWWdLR3hsYm1kMGFDQThQU0ExTURBd0tWeHVJQ0FnSUNBZ2NtVjBkWEp1SURRd01EdGNiaUFnSUNCbGJITmxJR2xtSUNoc1pXNW5kR2dnUEQwZ056VXdNQ2xjYmlBZ0lDQWdJSEpsZEhWeWJpQXpNREE3WEc0Z0lDQWdaV3h6WlZ4dUlDQWdJQ0FnY21WMGRYSnVJREl3TUR0Y2JpQWdmVnh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1pYVmpiR2xrWldGdUtIZzZJRlpsWTNSdmNpd2dlVG9nVm1WamRHOXlLU0I3WEc0Z0lHeGxkQ0J5WlhOMWJIUWdQU0F3TzF4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSGd1YkdWdVozUm9PeUJwS3lzcFhHNGdJQ0FnY21WemRXeDBJQ3M5SUNoNFcybGRJQzBnZVZ0cFhTa2dLaW9nTWp0Y2JseHVJQ0J5WlhSMWNtNGdUV0YwYUM1emNYSjBLSEpsYzNWc2RDazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCdWRXMWxjbWxqS0hnNklHNTFiV0psY2l3Z2VUb2diblZ0WW1WeUtTQjdYRzRnSUdOdmJuTjBJSEpsYzNWc2RDQTlJRTFoZEdndVlXSnpLSGdnTFNCNUtUdGNiaUFnY21WMGRYSnVJSEpsYzNWc2REdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdOdmMybHVaU2g0T2lCV1pXTjBiM0lzSUhrNklGWmxZM1J2Y2lrZ2UxeHVJQ0JzWlhRZ2NtVnpkV3gwSUQwZ01DNHdPMXh1SUNCc1pYUWdibTl5YlZnZ1BTQXdMakE3WEc0Z0lHeGxkQ0J1YjNKdFdTQTlJREF1TUR0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUhndWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQnlaWE4xYkhRZ0t6MGdlRnRwWFNBcUlIbGJhVjA3WEc0Z0lDQWdibTl5YlZnZ0t6MGdlRnRwWFNBcUtpQXlPMXh1SUNBZ0lHNXZjbTFaSUNzOUlIbGJhVjBnS2lvZ01qdGNiaUFnZlZ4dVhHNGdJR2xtSUNodWIzSnRXQ0E5UFQwZ01DQW1KaUJ1YjNKdFdTQTlQVDBnTUNsY2JpQWdJQ0J5WlhSMWNtNGdNRHRjYmlBZ1pXeHpaU0JwWmlBb2JtOXliVmdnUFQwOUlEQWdmSHdnYm05eWJWa2dQVDA5SURBcFhHNGdJQ0FnY21WMGRYSnVJREV1TUR0Y2JpQWdaV3h6WlZ4dUlDQWdJSEpsZEhWeWJpQXhMakFnTFNCeVpYTjFiSFFnTHlCTllYUm9Mbk54Y25Rb2JtOXliVmdnS2lCdWIzSnRXU2s3WEc1OVhHNWNiaThxS2x4dUlDb2dRVzRnYVc1MFpYSm1ZV05sSUhKbGNISmxjMlZ1ZEdsdVp5QjBhR1VnYjNCMGFXMXBlbUYwYVc5dUlITjBZWFJsSUhSeVlXTnJaV1FnWW1WMGQyVmxiaUJ6ZEdWd2N5QnZabHh1SUNvZ2RHaGxJRk5IUkNCdmNIUnBiV2w2WVhScGIyNWNiaUFxTDF4dVkyeGhjM01nVDNCMGFXMXBlbUYwYVc5dVUzUmhkR1VnZTF4dUlDQmpkWEp5Wlc1MFJYQnZZMmdnUFNBd08xeHVYRzRnSUM4dklFUmhkR0VnZEhKaFkydGxaQ0JrZFhKcGJtY2diM0IwYVcxcGVtRjBhVzl1SUhOMFpYQnpMbHh1SUNCb1pXRmtSVzFpWldSa2FXNW5PaUJ1ZFcxaVpYSmJYVnRkSUQwZ1cxMDdYRzRnSUhSaGFXeEZiV0psWkdScGJtYzZJRzUxYldKbGNsdGRXMTBnUFNCYlhUdGNiaUFnYUdWaFpEb2diblZ0WW1WeVcxMGdQU0JiWFR0Y2JpQWdkR0ZwYkRvZ2JuVnRZbVZ5VzEwZ1BTQmJYVHRjYmlBZ1pYQnZZMmh6VUdWeVUyRnRjR3hsT2lCdWRXMWlaWEpiWFNBOUlGdGRPMXh1SUNCbGNHOWphRTltVG1WNGRGTmhiWEJzWlRvZ2JuVnRZbVZ5VzEwZ1BTQmJYVHRjYmlBZ1pYQnZZMmhQWms1bGVIUk9aV2RoZEdsMlpWTmhiWEJzWlRvZ2JuVnRZbVZ5VzEwZ1BTQmJYVHRjYmlBZ1pYQnZZMmh6VUdWeVRtVm5ZWFJwZG1WVFlXMXdiR1U2SUc1MWJXSmxjbHRkSUQwZ1cxMDdYRzRnSUcxdmRtVlBkR2hsY2lBOUlIUnlkV1U3WEc0Z0lHbHVhWFJwWVd4QmJIQm9ZU0E5SURFdU1EdGNiaUFnWVd4d2FHRWdQU0F4TGpBN1hHNGdJR2RoYlcxaElEMGdNUzR3TzF4dUlDQmhJRDBnTVM0MU56WTVORE0wTmpBek1URXpNRGMzTzF4dUlDQmlJRDBnTUM0NE9UVXdOakE0TnpjNU1UQTVOek16TzF4dUlDQmthVzBnUFNBeU8xeHVJQ0J1UlhCdlkyaHpJRDBnTlRBd08xeHVJQ0J1Vm1WeWRHbGpaWE1nUFNBd08xeHVmVnh1WEc0dktpcGNiaUFxSUZOMFlXNWtZWEprSUdOc1lXMXdhVzVuSUc5bUlHRWdkbUZzZFdVZ2FXNTBieUJoSUdacGVHVmtJSEpoYm1kbFhHNGdLaTljYm1aMWJtTjBhVzl1SUdOc2FYQW9lRG9nYm5WdFltVnlMQ0JqYkdsd1ZtRnNkV1U2SUc1MWJXSmxjaWtnZTF4dUlDQnBaaUFvZUNBK0lHTnNhWEJXWVd4MVpTa2djbVYwZFhKdUlHTnNhWEJXWVd4MVpUdGNiaUFnWld4elpTQnBaaUFvZUNBOElDMWpiR2x3Vm1Gc2RXVXBJSEpsZEhWeWJpQXRZMnhwY0ZaaGJIVmxPMXh1SUNCbGJITmxJSEpsZEhWeWJpQjRPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGSmxaSFZqWldRZ1JYVmpiR2xrWldGdUlHUnBjM1JoYm1ObExseHVJQ292WEc1bWRXNWpkR2x2YmlCeVJHbHpkQ2g0T2lCdWRXMWlaWEpiWFN3Z2VUb2diblZ0WW1WeVcxMHBJSHRjYmlBZ2JHVjBJSEpsYzNWc2RDQTlJREF1TUR0Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0I0TG14bGJtZDBhRHNnYVNzcktWeHVJQ0FnSUhKbGMzVnNkQ0FyUFNCTllYUm9MbkJ2ZHloNFcybGRJQzBnZVZ0cFhTd2dNaWs3WEc1Y2JpQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JuMWNibHh1THlvcVhHNGdLaUJHYVhRZ1lTd2dZaUJ3WVhKaGJYTWdabTl5SUhSb1pTQmthV1ptWlhKbGJuUnBZV0pzWlNCamRYSjJaU0IxYzJWa0lHbHVJR3h2ZDJWeVhHNGdLaUJrYVcxbGJuTnBiMjVoYkNCbWRYcDZlU0J6YVcxd2JHbGphV0ZzSUdOdmJYQnNaWGdnWTI5dWMzUnlkV04wYVc5dUxpQlhaU0IzWVc1MElIUm9aVnh1SUNvZ2MyMXZiM1JvSUdOMWNuWmxJQ2htY205dElHRWdjSEpsTFdSbFptbHVaV1FnWm1GdGFXeDVJSGRwZEdnZ2MybHRjR3hsSUdkeVlXUnBaVzUwS1NCMGFHRjBYRzRnS2lCaVpYTjBJRzFoZEdOb1pYTWdZVzRnYjJabWMyVjBJR1Y0Y0c5dVpXNTBhV0ZzSUdSbFkyRjVMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1ptbHVaRUZDVUdGeVlXMXpLSE53Y21WaFpEb2diblZ0WW1WeUxDQnRhVzVFYVhOME9pQnVkVzFpWlhJcElIdGNiaUFnWTI5dWMzUWdZM1Z5ZG1VZ1BTQW9XMkVzSUdKZE9pQnVkVzFpWlhKYlhTa2dQVDRnS0hnNklHNTFiV0psY2lrZ1BUNGdlMXh1SUNBZ0lISmxkSFZ5YmlBeExqQWdMeUFvTVM0d0lDc2dZU0FxSUhnZ0tpb2dLRElnS2lCaUtTazdYRzRnSUgwN1hHNWNiaUFnWTI5dWMzUWdlSFlnUFNCMWRHbHNjMXh1SUNBZ0lDNXNhVzVsWVhJb01Dd2djM0J5WldGa0lDb2dNeXdnTXpBd0tWeHVJQ0FnSUM1dFlYQW9LSFpoYkNrZ1BUNGdLSFpoYkNBOElHMXBia1JwYzNRZ1B5QXhMakFnT2lCMllXd3BLVHRjYmx4dUlDQmpiMjV6ZENCNWRpQTlJSFYwYVd4ekxucGxjbTl6S0hoMkxteGxibWQwYUNrdWJXRndLQ2gyWVd3c0lHbHVaR1Y0S1NBOVBpQjdYRzRnSUNBZ1kyOXVjM1FnWjNSbElEMGdlSFpiYVc1a1pYaGRJRDQ5SUcxcGJrUnBjM1E3WEc0Z0lDQWdjbVYwZFhKdUlHZDBaU0EvSUUxaGRHZ3VaWGh3S0Mwb2VIWmJhVzVrWlhoZElDMGdiV2x1UkdsemRDa2dMeUJ6Y0hKbFlXUXBJRG9nZG1Gc08xeHVJQ0I5S1R0Y2JseHVJQ0JqYjI1emRDQnBibWwwYVdGc1ZtRnNkV1Z6SUQwZ1d6QXVOU3dnTUM0MVhUdGNiaUFnWTI5dWMzUWdaR0YwWVNBOUlIdDRPaUI0ZGl3Z2VUb2dlWFo5TzF4dVhHNGdJQzh2SUVSbFptRjFiSFFnYjNCMGFXOXVjeUJtYjNJZ2RHaGxJR0ZzWjI5eWFYUm9iU0FvWm5KdmJTQm5hWFJvZFdJZ1pYaGhiWEJzWlNsY2JpQWdZMjl1YzNRZ2IzQjBhVzl1Y3lBOUlIdGNiaUFnSUNCa1lXMXdhVzVuT2lBeExqVXNYRzRnSUNBZ2FXNXBkR2xoYkZaaGJIVmxjeXhjYmlBZ0lDQm5jbUZrYVdWdWRFUnBabVpsY21WdVkyVTZJREV3WlMweUxGeHVJQ0FnSUcxaGVFbDBaWEpoZEdsdmJuTTZJREV3TUN4Y2JpQWdJQ0JsY25KdmNsUnZiR1Z5WVc1alpUb2dNVEJsTFRNc1hHNGdJSDA3WEc1Y2JpQWdMeThnWlhOc2FXNTBMV1JwYzJGaWJHVXRibVY0ZEMxc2FXNWxJRzVsZHkxallYQmNiaUFnWTI5dWMzUWdlM0JoY21GdFpYUmxjbFpoYkhWbGMzMGdQU0JNVFNoa1lYUmhMQ0JqZFhKMlpTd2diM0IwYVc5dWN5azdYRzRnSUdOdmJuTjBJRnRoTENCaVhTQTlJSEJoY21GdFpYUmxjbFpoYkhWbGN5QmhjeUJ1ZFcxaVpYSmJYVHRjYmlBZ2NtVjBkWEp1SUh0aExDQmlmVHRjYm4xY2JseHVMeW9xWEc0Z0tpQlZibVJsY2lCMGFHVWdZWE56ZFcxd2RHbHZiaUJ2WmlCallYUmxaMjl5YVdOaGJDQmthWE4wWVc1alpTQm1iM0lnZEdobElHbHVkR1Z5YzJWamRHbHVaMXh1SUNvZ2MybHRjR3hwWTJsaGJDQnpaWFFnY0dWeVptOXliU0JoSUdaaGMzUWdhVzUwWlhKelpXTjBhVzl1TGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdabUZ6ZEVsdWRHVnljMlZqZEdsdmJpaGNiaUFnWjNKaGNHZzZJRzFoZEhKcGVDNVRjR0Z5YzJWTllYUnlhWGdzWEc0Z0lIUmhjbWRsZERvZ2JuVnRZbVZ5VzEwc1hHNGdJSFZ1YTI1dmQyNUVhWE4wSUQwZ01TNHdMRnh1SUNCbVlYSkVhWE4wSUQwZ05TNHdYRzRwSUh0Y2JpQWdjbVYwZFhKdUlHZHlZWEJvTG0xaGNDZ29kbUZzZFdVc0lISnZkeXdnWTI5c0tTQTlQaUI3WEc0Z0lDQWdhV1lnS0hSaGNtZGxkRnR5YjNkZElEMDlQU0F0TVNCOGZDQjBZWEpuWlhSYlkyOXNYU0E5UFQwZ0xURXBYRzRnSUNBZ0lDQnlaWFIxY200Z2RtRnNkV1VnS2lCTllYUm9MbVY0Y0NndGRXNXJibTkzYmtScGMzUXBPMXh1SUNBZ0lHVnNjMlVnYVdZZ0tIUmhjbWRsZEZ0eWIzZGRJQ0U5UFNCMFlYSm5aWFJiWTI5c1hTbGNiaUFnSUNBZ0lISmxkSFZ5YmlCMllXeDFaU0FxSUUxaGRHZ3VaWGh3S0MxbVlYSkVhWE4wS1R0Y2JpQWdJQ0JsYkhObFhHNGdJQ0FnSUNCeVpYUjFjbTRnZG1Gc2RXVTdYRzRnSUgwcE8xeHVmVnh1WEc0dktpcGNiaUFxSUZKbGMyVjBJSFJvWlNCc2IyTmhiQ0JqYjI1dVpXTjBhWFpwZEhrZ2NtVnhkV2x5WlcxbGJuUWdMUzBnWldGamFDQmtZWFJoSUhOaGJYQnNaU0J6YUc5MWJHUmNiaUFxSUdoaGRtVWdZMjl0Y0d4bGRHVWdZMjl1Wm1sa1pXNWpaU0JwYmlCaGRDQnNaV0Z6ZENCdmJtVWdNUzF6YVcxd2JHVjRJR2x1SUhSb1pTQnphVzF3YkdsamFXRnNJSE5sZEM1Y2JpQXFJRmRsSUdOaGJpQmxibVp2Y21ObElIUm9hWE1nWW5rZ2JHOWpZV3hzZVNCeVpYTmpZV3hwYm1jZ1kyOXVabWxrWlc1alpYTXNJR0Z1WkNCMGFHVnVJSEpsYldWeVoybHVaeUIwYUdWY2JpQXFJR1JwWm1abGNtVnVkQ0JzYjJOaGJDQnphVzF3YkdsamFXRnNJSE5sZEhNZ2RHOW5aWFJvWlhJdVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ5WlhObGRFeHZZMkZzUTI5dWJtVmpkR2wyYVhSNUtITnBiWEJzYVdOcFlXeFRaWFE2SUcxaGRISnBlQzVUY0dGeWMyVk5ZWFJ5YVhncElIdGNiaUFnYzJsdGNHeHBZMmxoYkZObGRDQTlJRzFoZEhKcGVDNXViM0p0WVd4cGVtVW9jMmx0Y0d4cFkybGhiRk5sZEN3Z2JXRjBjbWw0TGs1dmNtMVVlWEJsTG0xaGVDazdYRzRnSUdOdmJuTjBJSFJ5WVc1emNHOXpaU0E5SUcxaGRISnBlQzUwY21GdWMzQnZjMlVvYzJsdGNHeHBZMmxoYkZObGRDazdYRzRnSUdOdmJuTjBJSEJ5YjJSTllYUnlhWGdnUFNCdFlYUnlhWGd1Y0dGcGNuZHBjMlZOZFd4MGFYQnNlU2gwY21GdWMzQnZjMlVzSUhOcGJYQnNhV05wWVd4VFpYUXBPMXh1SUNCemFXMXdiR2xqYVdGc1UyVjBJRDBnYldGMGNtbDRMbUZrWkNoY2JpQWdJQ0J6YVcxd2JHbGphV0ZzVTJWMExGeHVJQ0FnSUcxaGRISnBlQzV6ZFdKMGNtRmpkQ2gwY21GdWMzQnZjMlVzSUhCeWIyUk5ZWFJ5YVhncFhHNGdJQ2s3WEc0Z0lISmxkSFZ5YmlCdFlYUnlhWGd1Wld4cGJXbHVZWFJsV21WeWIzTW9jMmx0Y0d4cFkybGhiRk5sZENrN1hHNTlYRzVjYmk4cUtseHVJQ29nUjJsMlpXNGdhVzVrYVdObGN5QmhibVFnZDJWcFoyaDBjeUJoYm1RZ1lXNGdiM0pwWjJsdVlXd2daVzFpWldSa2FXNW5jMXh1SUNvZ2FXNXBkR2xoYkdsNlpTQjBhR1VnY0c5emFYUnBiMjV6SUc5bUlHNWxkeUJ3YjJsdWRITWdjbVZzWVhScGRtVWdkRzhnZEdobFhHNGdLaUJwYm1ScFkyVnpJR0Z1WkNCM1pXbG5hSFJ6SUNodlppQjBhR1ZwY2lCdVpXbG5hR0p2Y25NZ2FXNGdkR2hsSUhOdmRYSmpaU0JrWVhSaEtTNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdsdWFYUlVjbUZ1YzJadmNtMG9YRzRnSUdsdVpHbGpaWE02SUc1MWJXSmxjbHRkVzEwc1hHNGdJSGRsYVdkb2RITTZJRzUxYldKbGNsdGRXMTBzWEc0Z0lHVnRZbVZrWkdsdVp6b2dWbVZqZEc5eWMxeHVLU0I3WEc0Z0lHTnZibk4wSUhKbGMzVnNkQ0E5SUhWMGFXeHpYRzRnSUNBZ0xucGxjbTl6S0dsdVpHbGpaWE11YkdWdVozUm9LVnh1SUNBZ0lDNXRZWEFvS0Y5NktTQTlQaUIxZEdsc2N5NTZaWEp2Y3lobGJXSmxaR1JwYm1kYk1GMHViR1Z1WjNSb0tTazdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnBibVJwWTJWekxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdabTl5SUNoc1pYUWdhaUE5SURBN0lHb2dQQ0JwYm1ScFkyVnpXekJkTG14bGJtZDBhRHNnYWlzcktTQjdYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQmtJRDBnTURzZ1pDQThJR1Z0WW1Wa1pHbHVaMXN3WFM1c1pXNW5kR2c3SUdRckt5a2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQmhJRDBnYVc1a2FXTmxjMXRwWFZ0cVhUdGNiaUFnSUNBZ0lDQWdjbVZ6ZFd4MFcybGRXMlJkSUNzOUlIZGxhV2RvZEhOYmFWMWJhbDBnS2lCbGJXSmxaR1JwYm1kYllWMWJaRjA3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNGdJSEpsZEhWeWJpQnlaWE4xYkhRN1hHNTlYRzRpWFgwPSIsIi8qKlxuICogQGxpY2Vuc2VcbiAqXG4gKiBDb3B5cmlnaHQgMjAxOSBHb29nbGUgTExDLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICovXG4vKipcbiAqIFRoaXMgaXMgYSBKYXZhU2NyaXB0IHJlaW1wbGVtZW50YXRpb24gb2YgVU1BUCAob3JpZ2luYWwgbGljZW5zZSBiZWxvdyksIGZyb21cbiAqIHRoZSBweXRob24gaW1wbGVtZW50YXRpb24gZm91bmQgYXQgaHR0cHM6Ly9naXRodWIuY29tL2xtY2lubmVzL3VtYXAuXG4gKlxuICogQGF1dGhvciBhbmR5Y29lbmVuQGdvb2dsZS5jb20gKEFuZHkgQ29lbmVuKVxuICovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBCU0QgMy1DbGF1c2UgTGljZW5zZVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNywgTGVsYW5kIE1jSW5uZXNcbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcbiAqXG4gKiAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpc1xuICogICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvblxuICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiAqIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHNcbiAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb21cbiAqICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIlxuICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRVxuICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFXG4gKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTFxuICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1JcbiAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSXG4gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLFxuICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0VcbiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cbmltcG9ydCAqIGFzIGhlYXAgZnJvbSAnLi9oZWFwJztcbmltcG9ydCAqIGFzIG1hdHJpeCBmcm9tICcuL21hdHJpeCc7XG5pbXBvcnQgKiBhcyB0cmVlIGZyb20gJy4vdHJlZSc7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuL3V0aWxzJztcbi8qKlxuICogQ3JlYXRlIGEgdmVyc2lvbiBvZiBuZWFyZXN0IG5laWdoYm9yIGRlc2NlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlTk5EZXNjZW50KGRpc3RhbmNlRm4sIHJhbmRvbSkge1xuICAgIHJldHVybiBmdW5jdGlvbiBuTkRlc2NlbnQoZGF0YSwgbGVhZkFycmF5LCBuTmVpZ2hib3JzLCBuSXRlcnMgPSAxMCwgbWF4Q2FuZGlkYXRlcyA9IDUwLCBkZWx0YSA9IDAuMDAxLCByaG8gPSAwLjUsIHJwVHJlZUluaXQgPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IG5WZXJ0aWNlcyA9IGRhdGEubGVuZ3RoO1xuICAgICAgICBjb25zdCBjdXJyZW50R3JhcGggPSBoZWFwLm1ha2VIZWFwKGRhdGEubGVuZ3RoLCBuTmVpZ2hib3JzKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRpY2VzID0gaGVhcC5yZWplY3Rpb25TYW1wbGUobk5laWdoYm9ycywgZGF0YS5sZW5ndGgsIHJhbmRvbSk7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGluZGljZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkID0gZGlzdGFuY2VGbihkYXRhW2ldLCBkYXRhW2luZGljZXNbal1dKTtcbiAgICAgICAgICAgICAgICBoZWFwLmhlYXBQdXNoKGN1cnJlbnRHcmFwaCwgaSwgZCwgaW5kaWNlc1tqXSwgMSk7XG4gICAgICAgICAgICAgICAgaGVhcC5oZWFwUHVzaChjdXJyZW50R3JhcGgsIGluZGljZXNbal0sIGQsIGksIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChycFRyZWVJbml0KSB7XG4gICAgICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGxlYWZBcnJheS5sZW5ndGg7IG4rKykge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVhZkFycmF5W25dLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsZWFmQXJyYXlbbl1baV0gPCAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IGxlYWZBcnJheVtuXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlYWZBcnJheVtuXVtqXSA8IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkID0gZGlzdGFuY2VGbihkYXRhW2xlYWZBcnJheVtuXVtpXV0sIGRhdGFbbGVhZkFycmF5W25dW2pdXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFwLmhlYXBQdXNoKGN1cnJlbnRHcmFwaCwgbGVhZkFycmF5W25dW2ldLCBkLCBsZWFmQXJyYXlbbl1bal0sIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhcC5oZWFwUHVzaChjdXJyZW50R3JhcGgsIGxlYWZBcnJheVtuXVtqXSwgZCwgbGVhZkFycmF5W25dW2ldLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IG5JdGVyczsgbisrKSB7XG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVOZWlnaGJvcnMgPSBoZWFwLmJ1aWxkQ2FuZGlkYXRlcyhjdXJyZW50R3JhcGgsIG5WZXJ0aWNlcywgbk5laWdoYm9ycywgbWF4Q2FuZGlkYXRlcywgcmFuZG9tKTtcbiAgICAgICAgICAgIGxldCBjID0gMDtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgblZlcnRpY2VzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1heENhbmRpZGF0ZXM7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwID0gTWF0aC5mbG9vcihjYW5kaWRhdGVOZWlnaGJvcnNbMF1baV1bal0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAocCA8IDAgfHwgdXRpbHMudGF1UmFuZChyYW5kb20pIDwgcmhvKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbWF4Q2FuZGlkYXRlczsgaysrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBxID0gTWF0aC5mbG9vcihjYW5kaWRhdGVOZWlnaGJvcnNbMF1baV1ba10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2ogPSBjYW5kaWRhdGVOZWlnaGJvcnNbMl1baV1bal07XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjayA9IGNhbmRpZGF0ZU5laWdoYm9yc1syXVtpXVtrXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxIDwgMCB8fCAoIWNqICYmICFjaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkID0gZGlzdGFuY2VGbihkYXRhW3BdLCBkYXRhW3FdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMgKz0gaGVhcC5oZWFwUHVzaChjdXJyZW50R3JhcGgsIHAsIGQsIHEsIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYyArPSBoZWFwLmhlYXBQdXNoKGN1cnJlbnRHcmFwaCwgcSwgZCwgcCwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYyA8PSBkZWx0YSAqIG5OZWlnaGJvcnMgKiBkYXRhLmxlbmd0aClcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzb3J0ZWQgPSBoZWFwLmRlaGVhcFNvcnQoY3VycmVudEdyYXBoKTtcbiAgICAgICAgcmV0dXJuIHNvcnRlZDtcbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VJbml0aWFsaXphdGlvbnMoZGlzdGFuY2VGbikge1xuICAgIGZ1bmN0aW9uIGluaXRGcm9tUmFuZG9tKG5OZWlnaGJvcnMsIGRhdGEsIHF1ZXJ5UG9pbnRzLCBfaGVhcCwgcmFuZG9tKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcXVlcnlQb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGljZXMgPSB1dGlscy5yZWplY3Rpb25TYW1wbGUobk5laWdoYm9ycywgZGF0YS5sZW5ndGgsIHJhbmRvbSk7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGluZGljZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5kaWNlc1tqXSA8IDApXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBkaXN0YW5jZUZuKGRhdGFbaW5kaWNlc1tqXV0sIHF1ZXJ5UG9pbnRzW2ldKTtcbiAgICAgICAgICAgICAgICBoZWFwLmhlYXBQdXNoKF9oZWFwLCBpLCBkLCBpbmRpY2VzW2pdLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBpbml0RnJvbVRyZWUoX3RyZWUsIGRhdGEsIHF1ZXJ5UG9pbnRzLCBfaGVhcCwgcmFuZG9tKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcXVlcnlQb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGljZXMgPSB0cmVlLnNlYXJjaEZsYXRUcmVlKHF1ZXJ5UG9pbnRzW2ldLCBfdHJlZSwgcmFuZG9tKTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgaW5kaWNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmIChpbmRpY2VzW2pdIDwgMClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBkaXN0YW5jZUZuKGRhdGFbaW5kaWNlc1tqXV0sIHF1ZXJ5UG9pbnRzW2ldKTtcbiAgICAgICAgICAgICAgICBoZWFwLmhlYXBQdXNoKF9oZWFwLCBpLCBkLCBpbmRpY2VzW2pdLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiB7IGluaXRGcm9tUmFuZG9tLCBpbml0RnJvbVRyZWUgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtYWtlSW5pdGlhbGl6ZWROTlNlYXJjaChkaXN0YW5jZUZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIG5uU2VhcmNoRm4oZGF0YSwgZ3JhcGgsIGluaXRpYWxpemF0aW9uLCBxdWVyeVBvaW50cykge1xuICAgICAgICBjb25zdCB7IGluZGljZXMsIGluZHB0ciB9ID0gbWF0cml4LmdldENTUihncmFwaCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcXVlcnlQb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRyaWVkID0gbmV3IFNldChpbml0aWFsaXphdGlvblswXVtpXSk7XG4gICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIC8vIEZpbmQgc21hbGxlc3QgZmxhZ2dlZCB2ZXJ0ZXhcbiAgICAgICAgICAgICAgICBjb25zdCB2ZXJ0ZXggPSBoZWFwLnNtYWxsZXN0RmxhZ2dlZChpbml0aWFsaXphdGlvbiwgaSk7XG4gICAgICAgICAgICAgICAgaWYgKHZlcnRleCA9PT0gLTEpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBpbmRpY2VzLnNsaWNlKGluZHB0clt2ZXJ0ZXhdLCBpbmRwdHJbdmVydGV4ICsgMV0pO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PT0gdmVydGV4IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPT09IC0xIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmllZC5oYXMoY2FuZGlkYXRlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkID0gZGlzdGFuY2VGbihkYXRhW2NhbmRpZGF0ZV0sIHF1ZXJ5UG9pbnRzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgaGVhcC51bmNoZWNrZWRIZWFwUHVzaChpbml0aWFsaXphdGlvbiwgaSwgZCwgY2FuZGlkYXRlLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgdHJpZWQuYWRkKGNhbmRpZGF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbml0aWFsaXphdGlvbjtcbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVTZWFyY2goZm9yZXN0LCBkYXRhLCBxdWVyeVBvaW50cywgbk5laWdoYm9ycywgaW5pdEZyb21SYW5kb20sIGluaXRGcm9tVHJlZSwgcmFuZG9tKSB7XG4gICAgY29uc3QgcmVzdWx0cyA9IGhlYXAubWFrZUhlYXAocXVlcnlQb2ludHMubGVuZ3RoLCBuTmVpZ2hib3JzKTtcbiAgICBpbml0RnJvbVJhbmRvbShuTmVpZ2hib3JzLCBkYXRhLCBxdWVyeVBvaW50cywgcmVzdWx0cywgcmFuZG9tKTtcbiAgICBpZiAoZm9yZXN0KSB7XG4gICAgICAgIGZvciAoY29uc3QgdHJlZSBvZiBmb3Jlc3QpXG4gICAgICAgICAgICBpbml0RnJvbVRyZWUodHJlZSwgZGF0YSwgcXVlcnlQb2ludHMsIHJlc3VsdHMsIHJhbmRvbSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYm01ZlpHVnpZMlZ1ZEM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbTV1WDJSbGMyTmxiblF1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRTdPenM3T3pzN096czdPenM3T3pzN08wZEJhVUpITzBGQlJVZzdPenM3TzBkQlMwYzdRVUZGU0RzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096dEhRU3RDUnp0QlFVVklMRTlCUVU4c1MwRkJTeXhKUVVGSkxFMUJRVTBzVVVGQlVTeERRVUZETzBGQlF5OUNMRTlCUVU4c1MwRkJTeXhOUVVGTkxFMUJRVTBzVlVGQlZTeERRVUZETzBGQlEyNURMRTlCUVU4c1MwRkJTeXhKUVVGSkxFMUJRVTBzVVVGQlVTeERRVUZETzBGQlF5OUNMRTlCUVU4c1MwRkJTeXhMUVVGTExFMUJRVTBzVTBGQlV5eERRVUZETzBGQlIycERPenRIUVVWSE8wRkJRMGdzVFVGQlRTeFZRVUZWTEdGQlFXRXNRMEZCUXl4VlFVRnpRaXhGUVVGRkxFMUJRV2RDTzBsQlEzQkZMRTlCUVU4c1UwRkJVeXhUUVVGVExFTkJRM1pDTEVsQlFWa3NSVUZEV2l4VFFVRnJRaXhGUVVOc1FpeFZRVUZyUWl4RlFVTnNRaXhOUVVGTkxFZEJRVWNzUlVGQlJTeEZRVU5ZTEdGQlFXRXNSMEZCUnl4RlFVRkZMRVZCUTJ4Q0xFdEJRVXNzUjBGQlJ5eExRVUZMTEVWQlEySXNSMEZCUnl4SFFVRkhMRWRCUVVjc1JVRkRWQ3hWUVVGVkxFZEJRVWNzU1VGQlNUdFJRVVZxUWl4TlFVRk5MRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETzFGQlF6bENMRTFCUVUwc1dVRkJXU3hIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hWUVVGVkxFTkJRVU1zUTBGQlF6dFJRVVUxUkN4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU53UXl4TlFVRk5MRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zWlVGQlpTeERRVUZETEZWQlFWVXNSVUZCUlN4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzFsQlEzUkZMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4UFFVRlBMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzJkQ1FVTjJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVVZvUkN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExGbEJRVmtzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRha1FzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4WlFVRlpMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRGJFUTdVMEZEUmp0UlFVTkVMRWxCUVVrc1ZVRkJWU3hGUVVGRk8xbEJRMlFzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRM3BETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzI5Q1FVTTFReXhKUVVGSkxGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRE8zZENRVU55UWl4TlFVRk5PMjlDUVVWU0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdDNRa0ZEYUVRc1NVRkJTU3hUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJRenMwUWtGRGNrSXNUVUZCVFR0M1FrRkZVaXhOUVVGTkxFTkJRVU1zUjBGQlJ5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8zZENRVU51UlN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExGbEJRVmtzUlVGQlJTeFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0M1FrRkRjRVVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4WlFVRlpMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03Y1VKQlEzSkZPMmxDUVVOR08yRkJRMFk3VTBGRFJqdFJRVVZFTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRMMElzVFVGQlRTeHJRa0ZCYTBJc1IwRkJSeXhKUVVGSkxFTkJRVU1zWlVGQlpTeERRVU0zUXl4WlFVRlpMRVZCUTFvc1UwRkJVeXhGUVVOVUxGVkJRVlVzUlVGRFZpeGhRVUZoTEVWQlEySXNUVUZCVFN4RFFVTlFMRU5CUVVNN1dVRkZSaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEVml4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NVMEZCVXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8yZENRVU5zUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NZVUZCWVN4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8yOUNRVU4wUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEd0Q1FVRnJRaXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEyeEVMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFZEJRVWM3ZDBKQlEzUkRMRk5CUVZNN2IwSkJSVmdzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExHRkJRV0VzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0M1FrRkRkRU1zVFVGQlRTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPM2RDUVVOc1JDeE5RVUZOTEVWQlFVVXNSMEZCUnl4clFrRkJhMElzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dDNRa0ZEZGtNc1RVRkJUU3hGUVVGRkxFZEJRVWNzYTBKQlFXdENMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2QwSkJRM1pETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRPelJDUVVOMlFpeFRRVUZUTzNkQ1FVZFlMRTFCUVUwc1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdkMEpCUTNaRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRmxCUVZrc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenQzUWtGRE4wTXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zV1VGQldTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzNGQ1FVTTVRenRwUWtGRFJqdGhRVU5HTzFsQlEwUXNTVUZCU1N4RFFVRkRMRWxCUVVrc1MwRkJTeXhIUVVGSExGVkJRVlVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFR0blFrRkRka01zVFVGQlRUdFRRVU5VTzFGQlEwUXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXp0UlFVTTNReXhQUVVGUExFMUJRVTBzUTBGQlF6dEpRVU5vUWl4RFFVRkRMRU5CUVVNN1FVRkRTaXhEUVVGRE8wRkJhMEpFTEUxQlFVMHNWVUZCVlN4dFFrRkJiVUlzUTBGQlF5eFZRVUZ6UWp0SlFVTjRSQ3hUUVVGVExHTkJRV01zUTBGRGNrSXNWVUZCYTBJc1JVRkRiRUlzU1VGQldTeEZRVU5hTEZkQlFXMUNMRVZCUTI1Q0xFdEJRV2RDTEVWQlEyaENMRTFCUVdkQ08xRkJSV2hDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eFhRVUZYTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8xbEJRek5ETEUxQlFVMHNUMEZCVHl4SFFVRkhMRXRCUVVzc1EwRkJReXhsUVVGbExFTkJRVU1zVlVGQlZTeEZRVUZGTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03V1VGRGRrVXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEU5QlFVOHNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3WjBKQlEzWkRMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTTdiMEpCUTJoQ0xGTkJRVk03WjBKQlJWZ3NUVUZCVFN4RFFVRkRMRWRCUVVjc1ZVRkJWU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRka1FzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRE0wTTdVMEZEUmp0SlFVTklMRU5CUVVNN1NVRkZSQ3hUUVVGVExGbEJRVmtzUTBGRGJrSXNTMEZCYjBJc1JVRkRjRUlzU1VGQldTeEZRVU5hTEZkQlFXMUNMRVZCUTI1Q0xFdEJRV2RDTEVWQlEyaENMRTFCUVdkQ08xRkJSV2hDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eFhRVUZYTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8xbEJRek5ETEUxQlFVMHNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRXRCUVVzc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dFpRVVZ1UlN4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdG5Ra0ZEZGtNc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXp0dlFrRkRhRUlzVDBGQlR6dG5Ra0ZGVkN4TlFVRk5MRU5CUVVNc1IwRkJSeXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOMlJDeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU16UXp0VFFVTkdPMUZCUTBRc1QwRkJUenRKUVVOVUxFTkJRVU03U1VGRlJDeFBRVUZQTEVWQlFVTXNZMEZCWXl4RlFVRkZMRmxCUVZrc1JVRkJReXhEUVVGRE8wRkJRM2hETEVOQlFVTTdRVUZUUkN4TlFVRk5MRlZCUVZVc2RVSkJRWFZDTEVOQlFVTXNWVUZCYzBJN1NVRkROVVFzVDBGQlR5eFRRVUZUTEZWQlFWVXNRMEZEZUVJc1NVRkJXU3hGUVVOYUxFdEJRVEJDTEVWQlF6RkNMR05CUVhsQ0xFVkJRM3BDTEZkQlFXMUNPMUZCUlc1Q0xFMUJRVTBzUlVGQlF5eFBRVUZQTEVWQlFVVXNUVUZCVFN4RlFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0UlFVVXZReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1YwRkJWeXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTXpReXhOUVVGTkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVkQlFVY3NRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTTFReXhQUVVGUExFbEJRVWtzUlVGQlJUdG5Ra0ZEV0N3clFrRkJLMEk3WjBKQlF5OUNMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTXNZMEZCWXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVVYyUkN4SlFVRkpMRTFCUVUwc1MwRkJTeXhEUVVGRExFTkJRVU03YjBKQlEyWXNUVUZCVFR0blFrRkZVaXhOUVVGTkxGVkJRVlVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeE5RVUZOTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEzSkZMRXRCUVVzc1RVRkJUU3hUUVVGVExFbEJRVWtzVlVGQlZTeEZRVUZGTzI5Q1FVTnNReXhKUVVORkxGTkJRVk1zUzBGQlN5eE5RVUZOTzNkQ1FVTndRaXhUUVVGVExFdEJRVXNzUTBGQlF5eERRVUZETzNkQ1FVTm9RaXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXp0M1FrRkZjRUlzVTBGQlV6dHZRa0ZGV0N4TlFVRk5MRU5CUVVNc1IwRkJSeXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4RlFVRkZMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTjBSQ3hKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1kwRkJZeXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNVMEZCVXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU16UkN4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzJsQ1FVTjBRanRoUVVOR08xTkJRMFk3VVVGRFJDeFBRVUZQTEdOQlFXTXNRMEZCUXp0SlFVTjRRaXhEUVVGRExFTkJRVU03UVVGRFNpeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR2RDUVVGblFpeERRVU01UWl4TlFVRjFRaXhGUVVOMlFpeEpRVUZaTEVWQlExb3NWMEZCYlVJc1JVRkRia0lzVlVGQmEwSXNSVUZEYkVJc1kwRkJaME1zUlVGRGFFTXNXVUZCTkVJc1JVRkROVUlzVFVGQlowSTdTVUZGYUVJc1RVRkJUU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4WFFVRlhMRU5CUVVNc1RVRkJUU3hGUVVGRkxGVkJRVlVzUTBGQlF5eERRVUZETzBsQlF6bEVMR05CUVdNc1EwRkJReXhWUVVGVkxFVkJRVVVzU1VGQlNTeEZRVUZGTEZkQlFWY3NSVUZCUlN4UFFVRlBMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGREwwUXNTVUZCU1N4TlFVRk5MRVZCUVVVN1VVRkRWaXhMUVVGTExFMUJRVTBzU1VGQlNTeEpRVUZKTEUxQlFVMDdXVUZEZGtJc1dVRkJXU3hEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNWMEZCVnl4RlFVRkZMRTlCUVU4c1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dExRVU14UkR0SlFVTkVMRTlCUVU4c1QwRkJUeXhEUVVGRE8wRkJRMnBDTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRUJzYVdObGJuTmxYRzRnS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRrZ1IyOXZaMnhsSUV4TVF5NGdRV3hzSUZKcFoyaDBjeUJTWlhObGNuWmxaQzVjYmlBcVhHNGdLaUJNYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUVhCaFkyaGxJRXhwWTJWdWMyVXNJRlpsY25OcGIyNGdNaTR3SUNoMGFHVWdYQ0pNYVdObGJuTmxYQ0lwTzF4dUlDb2dlVzkxSUcxaGVTQnViM1FnZFhObElIUm9hWE1nWm1sc1pTQmxlR05sY0hRZ2FXNGdZMjl0Y0d4cFlXNWpaU0IzYVhSb0lIUm9aU0JNYVdObGJuTmxMbHh1SUNvZ1dXOTFJRzFoZVNCdlluUmhhVzRnWVNCamIzQjVJRzltSUhSb1pTQk1hV05sYm5ObElHRjBYRzRnS2x4dUlDb2dJQ0FnSUdoMGRIQTZMeTkzZDNjdVlYQmhZMmhsTG05eVp5OXNhV05sYm5ObGN5OU1TVU5GVGxORkxUSXVNRnh1SUNwY2JpQXFJRlZ1YkdWemN5QnlaWEYxYVhKbFpDQmllU0JoY0hCc2FXTmhZbXhsSUd4aGR5QnZjaUJoWjNKbFpXUWdkRzhnYVc0Z2QzSnBkR2x1Wnl3Z2MyOW1kSGRoY21WY2JpQXFJR1JwYzNSeWFXSjFkR1ZrSUhWdVpHVnlJSFJvWlNCTWFXTmxibk5sSUdseklHUnBjM1J5YVdKMWRHVmtJRzl1SUdGdUlGd2lRVk1nU1ZOY0lpQkNRVk5KVXl4Y2JpQXFJRmRKVkVoUFZWUWdWMEZTVWtGT1ZFbEZVeUJQVWlCRFQwNUVTVlJKVDA1VElFOUdJRUZPV1NCTFNVNUVMQ0JsYVhSb1pYSWdaWGh3Y21WemN5QnZjaUJwYlhCc2FXVmtMbHh1SUNvZ1UyVmxJSFJvWlNCTWFXTmxibk5sSUdadmNpQjBhR1VnYzNCbFkybG1hV01nYkdGdVozVmhaMlVnWjI5MlpYSnVhVzVuSUhCbGNtMXBjM05wYjI1eklHRnVaRnh1SUNvZ2JHbHRhWFJoZEdsdmJuTWdkVzVrWlhJZ2RHaGxJRXhwWTJWdWMyVXVYRzRnS2lBOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmlBcUwxeHVYRzR2S2lwY2JpQXFJRlJvYVhNZ2FYTWdZU0JLWVhaaFUyTnlhWEIwSUhKbGFXMXdiR1Z0Wlc1MFlYUnBiMjRnYjJZZ1ZVMUJVQ0FvYjNKcFoybHVZV3dnYkdsalpXNXpaU0JpWld4dmR5a3NJR1p5YjIxY2JpQXFJSFJvWlNCd2VYUm9iMjRnYVcxd2JHVnRaVzUwWVhScGIyNGdabTkxYm1RZ1lYUWdhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMnh0WTJsdWJtVnpMM1Z0WVhBdVhHNGdLbHh1SUNvZ1FHRjFkR2h2Y2lCaGJtUjVZMjlsYm1WdVFHZHZiMmRzWlM1amIyMGdLRUZ1WkhrZ1EyOWxibVZ1S1Z4dUlDb3ZYRzVjYmk4cUtseHVJQ29nUUd4cFkyVnVjMlZjYmlBcUlFSlRSQ0F6TFVOc1lYVnpaU0JNYVdObGJuTmxYRzRnS2x4dUlDb2dRMjl3ZVhKcFoyaDBJQ2hqS1NBeU1ERTNMQ0JNWld4aGJtUWdUV05KYm01bGMxeHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCU1pXUnBjM1J5YVdKMWRHbHZiaUJoYm1RZ2RYTmxJR2x1SUhOdmRYSmpaU0JoYm1RZ1ltbHVZWEo1SUdadmNtMXpMQ0IzYVhSb0lHOXlJSGRwZEdodmRYUmNiaUFxSUcxdlpHbG1hV05oZEdsdmJpd2dZWEpsSUhCbGNtMXBkSFJsWkNCd2NtOTJhV1JsWkNCMGFHRjBJSFJvWlNCbWIyeHNiM2RwYm1jZ1kyOXVaR2wwYVc5dWN5QmhjbVVnYldWME9seHVJQ3BjYmlBcUlDb2dVbVZrYVhOMGNtbGlkWFJwYjI1eklHOW1JSE52ZFhKalpTQmpiMlJsSUcxMWMzUWdjbVYwWVdsdUlIUm9aU0JoWW05MlpTQmpiM0I1Y21sbmFIUWdibTkwYVdObExDQjBhR2x6WEc0Z0tpQWdJR3hwYzNRZ2IyWWdZMjl1WkdsMGFXOXVjeUJoYm1RZ2RHaGxJR1p2Ykd4dmQybHVaeUJrYVhOamJHRnBiV1Z5TGx4dUlDcGNiaUFxSUNvZ1VtVmthWE4wY21saWRYUnBiMjV6SUdsdUlHSnBibUZ5ZVNCbWIzSnRJRzExYzNRZ2NtVndjbTlrZFdObElIUm9aU0JoWW05MlpTQmpiM0I1Y21sbmFIUWdibTkwYVdObExGeHVJQ29nSUNCMGFHbHpJR3hwYzNRZ2IyWWdZMjl1WkdsMGFXOXVjeUJoYm1RZ2RHaGxJR1p2Ykd4dmQybHVaeUJrYVhOamJHRnBiV1Z5SUdsdUlIUm9aU0JrYjJOMWJXVnVkR0YwYVc5dVhHNGdLaUFnSUdGdVpDOXZjaUJ2ZEdobGNpQnRZWFJsY21saGJITWdjSEp2ZG1sa1pXUWdkMmwwYUNCMGFHVWdaR2x6ZEhKcFluVjBhVzl1TGx4dUlDcGNiaUFxSUNvZ1RtVnBkR2hsY2lCMGFHVWdibUZ0WlNCdlppQjBhR1VnWTI5d2VYSnBaMmgwSUdodmJHUmxjaUJ1YjNJZ2RHaGxJRzVoYldWeklHOW1JR2wwYzF4dUlDb2dJQ0JqYjI1MGNtbGlkWFJ2Y25NZ2JXRjVJR0psSUhWelpXUWdkRzhnWlc1a2IzSnpaU0J2Y2lCd2NtOXRiM1JsSUhCeWIyUjFZM1J6SUdSbGNtbDJaV1FnWm5KdmJWeHVJQ29nSUNCMGFHbHpJSE52Wm5SM1lYSmxJSGRwZEdodmRYUWdjM0JsWTJsbWFXTWdjSEpwYjNJZ2QzSnBkSFJsYmlCd1pYSnRhWE56YVc5dUxseHVJQ3BjYmlBcUlGUklTVk1nVTA5R1ZGZEJVa1VnU1ZNZ1VGSlBWa2xFUlVRZ1Fsa2dWRWhGSUVOUFVGbFNTVWRJVkNCSVQweEVSVkpUSUVGT1JDQkRUMDVVVWtsQ1ZWUlBVbE1nWENKQlV5QkpVMXdpWEc0Z0tpQkJUa1FnUVU1WklFVllVRkpGVTFNZ1QxSWdTVTFRVEVsRlJDQlhRVkpTUVU1VVNVVlRMQ0JKVGtOTVZVUkpUa2NzSUVKVlZDQk9UMVFnVEVsTlNWUkZSQ0JVVHl3Z1ZFaEZYRzRnS2lCSlRWQk1TVVZFSUZkQlVsSkJUbFJKUlZNZ1QwWWdUVVZTUTBoQlRsUkJRa2xNU1ZSWklFRk9SQ0JHU1ZST1JWTlRJRVpQVWlCQklGQkJVbFJKUTFWTVFWSWdVRlZTVUU5VFJTQkJVa1ZjYmlBcUlFUkpVME5NUVVsTlJVUXVJRWxPSUU1UElFVldSVTVVSUZOSVFVeE1JRlJJUlNCRFQxQlpVa2xIU0ZRZ1NFOU1SRVZTSUU5U0lFTlBUbFJTU1VKVlZFOVNVeUJDUlNCTVNVRkNURVZjYmlBcUlFWlBVaUJCVGxrZ1JFbFNSVU5VTENCSlRrUkpVa1ZEVkN3Z1NVNURTVVJGVGxSQlRDd2dVMUJGUTBsQlRDd2dSVmhGVFZCTVFWSlpMQ0JQVWlCRFQwNVRSVkZWUlU1VVNVRk1YRzRnS2lCRVFVMUJSMFZUSUNoSlRrTk1WVVJKVGtjc0lFSlZWQ0JPVDFRZ1RFbE5TVlJGUkNCVVR5d2dVRkpQUTFWU1JVMUZUbFFnVDBZZ1UxVkNVMVJKVkZWVVJTQkhUMDlFVXlCUFVseHVJQ29nVTBWU1ZrbERSVk03SUV4UFUxTWdUMFlnVlZORkxDQkVRVlJCTENCUFVpQlFVazlHU1ZSVE95QlBVaUJDVlZOSlRrVlRVeUJKVGxSRlVsSlZVRlJKVDA0cElFaFBWMFZXUlZKY2JpQXFJRU5CVlZORlJDQkJUa1FnVDA0Z1FVNVpJRlJJUlU5U1dTQlBSaUJNU1VGQ1NVeEpWRmtzSUZkSVJWUklSVklnU1U0Z1EwOU9WRkpCUTFRc0lGTlVVa2xEVkNCTVNVRkNTVXhKVkZrc1hHNGdLaUJQVWlCVVQxSlVJQ2hKVGtOTVZVUkpUa2NnVGtWSFRFbEhSVTVEUlNCUFVpQlBWRWhGVWxkSlUwVXBJRUZTU1ZOSlRrY2dTVTRnUVU1WklGZEJXU0JQVlZRZ1QwWWdWRWhGSUZWVFJWeHVJQ29nVDBZZ1ZFaEpVeUJUVDBaVVYwRlNSU3dnUlZaRlRpQkpSaUJCUkZaSlUwVkVJRTlHSUZSSVJTQlFUMU5UU1VKSlRFbFVXU0JQUmlCVFZVTklJRVJCVFVGSFJTNWNiaUFxTDF4dVhHNXBiWEJ2Y25RZ0tpQmhjeUJvWldGd0lHWnliMjBnSnk0dmFHVmhjQ2M3WEc1cGJYQnZjblFnS2lCaGN5QnRZWFJ5YVhnZ1puSnZiU0FuTGk5dFlYUnlhWGduTzF4dWFXMXdiM0owSUNvZ1lYTWdkSEpsWlNCbWNtOXRJQ2N1TDNSeVpXVW5PMXh1YVcxd2IzSjBJQ29nWVhNZ2RYUnBiSE1nWm5KdmJTQW5MaTkxZEdsc2N5YzdYRzVwYlhCdmNuUWdlMUpoYm1SdmJVWnVMQ0JXWldOMGIzSnpMQ0JFYVhOMFlXNWpaVVp1TENCV1pXTjBiM0o5SUdaeWIyMGdKeTR2ZFcxaGNDYzdYRzVjYmk4cUtseHVJQ29nUTNKbFlYUmxJR0VnZG1WeWMybHZiaUJ2WmlCdVpXRnlaWE4wSUc1bGFXZG9ZbTl5SUdSbGMyTmxiblF1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnRZV3RsVGs1RVpYTmpaVzUwS0dScGMzUmhibU5sUm00NklFUnBjM1JoYm1ObFJtNHNJSEpoYm1SdmJUb2dVbUZ1Wkc5dFJtNHBJSHRjYmlBZ2NtVjBkWEp1SUdaMWJtTjBhVzl1SUc1T1JHVnpZMlZ1ZENoY2JpQWdJQ0JrWVhSaE9pQldaV04wYjNJc1hHNGdJQ0FnYkdWaFprRnljbUY1T2lCV1pXTjBiM0p6TEZ4dUlDQWdJRzVPWldsbmFHSnZjbk02SUc1MWJXSmxjaXhjYmlBZ0lDQnVTWFJsY25NZ1BTQXhNQ3hjYmlBZ0lDQnRZWGhEWVc1a2FXUmhkR1Z6SUQwZ05UQXNYRzRnSUNBZ1pHVnNkR0VnUFNBd0xqQXdNU3hjYmlBZ0lDQnlhRzhnUFNBd0xqVXNYRzRnSUNBZ2NuQlVjbVZsU1c1cGRDQTlJSFJ5ZFdWY2JpQWdLU0I3WEc0Z0lDQWdZMjl1YzNRZ2JsWmxjblJwWTJWeklEMGdaR0YwWVM1c1pXNW5kR2c3WEc0Z0lDQWdZMjl1YzNRZ1kzVnljbVZ1ZEVkeVlYQm9JRDBnYUdWaGNDNXRZV3RsU0dWaGNDaGtZWFJoTG14bGJtZDBhQ3dnYms1bGFXZG9ZbTl5Y3lrN1hHNWNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHUmhkR0V1YkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdsdVpHbGpaWE1nUFNCb1pXRndMbkpsYW1WamRHbHZibE5oYlhCc1pTaHVUbVZwWjJoaWIzSnpMQ0JrWVhSaExteGxibWQwYUN3Z2NtRnVaRzl0S1R0Y2JpQWdJQ0FnSUdadmNpQW9iR1YwSUdvZ1BTQXdPeUJxSUR3Z2FXNWthV05sY3k1c1pXNW5kR2c3SUdvckt5a2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQmtJRDBnWkdsemRHRnVZMlZHYmloa1lYUmhXMmxkTENCa1lYUmhXMmx1WkdsalpYTmJhbDFkS1R0Y2JseHVJQ0FnSUNBZ0lDQm9aV0Z3TG1obFlYQlFkWE5vS0dOMWNuSmxiblJIY21Gd2FDd2dhU3dnWkN3Z2FXNWthV05sYzF0cVhTd2dNU2s3WEc0Z0lDQWdJQ0FnSUdobFlYQXVhR1ZoY0ZCMWMyZ29ZM1Z5Y21WdWRFZHlZWEJvTENCcGJtUnBZMlZ6VzJwZExDQmtMQ0JwTENBeEtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tISndWSEpsWlVsdWFYUXBJSHRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJRzRnUFNBd095QnVJRHdnYkdWaFprRnljbUY1TG14bGJtZDBhRHNnYmlzcktTQjdYRzRnSUNBZ0lDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnYkdWaFprRnljbUY1VzI1ZExteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLR3hsWVdaQmNuSmhlVnR1WFZ0cFhTQThJREFwWEc0Z0lDQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JseHVJQ0FnSUNBZ0lDQWdJR1p2Y2lBb2JHVjBJR29nUFNCcElDc2dNVHNnYWlBOElHeGxZV1pCY25KaGVWdHVYUzVzWlc1bmRHZzdJR29yS3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHeGxZV1pCY25KaGVWdHVYVnRxWFNBOElEQXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQmtJRDBnWkdsemRHRnVZMlZHYmloa1lYUmhXMnhsWVdaQmNuSmhlVnR1WFZ0cFhWMHNJR1JoZEdGYmJHVmhaa0Z5Y21GNVcyNWRXMnBkWFNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JvWldGd0xtaGxZWEJRZFhOb0tHTjFjbkpsYm5SSGNtRndhQ3dnYkdWaFprRnljbUY1VzI1ZFcybGRMQ0JrTENCc1pXRm1RWEp5WVhsYmJsMWJhbDBzSURFcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYUdWaGNDNW9aV0Z3VUhWemFDaGpkWEp5Wlc1MFIzSmhjR2dzSUd4bFlXWkJjbkpoZVZ0dVhWdHFYU3dnWkN3Z2JHVmhaa0Z5Y21GNVcyNWRXMmxkTENBeEtUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0J1SUQwZ01Ec2diaUE4SUc1SmRHVnljenNnYmlzcktTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCallXNWthV1JoZEdWT1pXbG5hR0p2Y25NZ1BTQm9aV0Z3TG1KMWFXeGtRMkZ1Wkdsa1lYUmxjeWhjYmlBZ0lDQWdJQ0FnWTNWeWNtVnVkRWR5WVhCb0xGeHVJQ0FnSUNBZ0lDQnVWbVZ5ZEdsalpYTXNYRzRnSUNBZ0lDQWdJRzVPWldsbmFHSnZjbk1zWEc0Z0lDQWdJQ0FnSUcxaGVFTmhibVJwWkdGMFpYTXNYRzRnSUNBZ0lDQWdJSEpoYm1SdmJWeHVJQ0FnSUNBZ0tUdGNibHh1SUNBZ0lDQWdiR1YwSUdNZ1BTQXdPMXh1SUNBZ0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1Vm1WeWRHbGpaWE03SUdrckt5a2dlMXh1SUNBZ0lDQWdJQ0JtYjNJZ0tHeGxkQ0JxSUQwZ01Ec2dhaUE4SUcxaGVFTmhibVJwWkdGMFpYTTdJR29yS3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElIQWdQU0JOWVhSb0xtWnNiMjl5S0dOaGJtUnBaR0YwWlU1bGFXZG9ZbTl5YzFzd1hWdHBYVnRxWFNrN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0hBZ1BDQXdJSHg4SUhWMGFXeHpMblJoZFZKaGJtUW9jbUZ1Wkc5dEtTQThJSEpvYnlsY2JpQWdJQ0FnSUNBZ0lDQWdJR052Ym5ScGJuVmxPMXh1WEc0Z0lDQWdJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2F5QTlJREE3SUdzZ1BDQnRZWGhEWVc1a2FXUmhkR1Z6T3lCckt5c3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUhFZ1BTQk5ZWFJvTG1ac2IyOXlLR05oYm1ScFpHRjBaVTVsYVdkb1ltOXljMXN3WFZ0cFhWdHJYU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCamFpQTlJR05oYm1ScFpHRjBaVTVsYVdkb1ltOXljMXN5WFZ0cFhWdHFYVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUdOcklEMGdZMkZ1Wkdsa1lYUmxUbVZwWjJoaWIzSnpXekpkVzJsZFcydGRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSEVnUENBd0lIeDhJQ2doWTJvZ0ppWWdJV05yS1NsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWRHbHVkV1U3WEc1Y2JseHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdaQ0E5SUdScGMzUmhibU5sUm00b1pHRjBZVnR3WFN3Z1pHRjBZVnR4WFNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqSUNzOUlHaGxZWEF1YUdWaGNGQjFjMmdvWTNWeWNtVnVkRWR5WVhCb0xDQndMQ0JrTENCeExDQXhLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTWdLejBnYUdWaGNDNW9aV0Z3VUhWemFDaGpkWEp5Wlc1MFIzSmhjR2dzSUhFc0lHUXNJSEFzSURFcE8xeHVJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnYVdZZ0tHTWdQRDBnWkdWc2RHRWdLaUJ1VG1WcFoyaGliM0p6SUNvZ1pHRjBZUzVzWlc1bmRHZ3BYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUgxY2JpQWdJQ0JqYjI1emRDQnpiM0owWldRZ1BTQm9aV0Z3TG1SbGFHVmhjRk52Y25Rb1kzVnljbVZ1ZEVkeVlYQm9LVHRjYmlBZ0lDQnlaWFIxY200Z2MyOXlkR1ZrTzF4dUlDQjlPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ2RIbHdaU0JKYm1sMFJuSnZiVkpoYm1SdmJVWnVJRDBnS0Z4dUlDQnVUbVZwWjJoaWIzSnpPaUJ1ZFcxaVpYSXNYRzRnSUdSaGRHRTZJRlpsWTNSdmNpeGNiaUFnY1hWbGNubFFiMmx1ZEhNNklGWmxZM1J2Y2l4Y2JpQWdYMmhsWVhBNklHaGxZWEF1U0dWaGNDeGNiaUFnY21GdVpHOXRPaUJTWVc1a2IyMUdibHh1S1NBOVBpQjJiMmxrTzF4dVhHNWxlSEJ2Y25RZ2RIbHdaU0JKYm1sMFJuSnZiVlJ5WldWR2JpQTlJQ2hjYmlBZ1gzUnlaV1U2SUhSeVpXVXVSbXhoZEZSeVpXVXNYRzRnSUdSaGRHRTZJRlpsWTNSdmNpeGNiaUFnY1hWbGNubFFiMmx1ZEhNNklGWmxZM1J2Y2l4Y2JpQWdYMmhsWVhBNklHaGxZWEF1U0dWaGNDeGNiaUFnY21GdVpHOXRPaUJTWVc1a2IyMUdibHh1S1NBOVBpQjJiMmxrTzF4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2JXRnJaVWx1YVhScFlXeHBlbUYwYVc5dWN5aGthWE4wWVc1alpVWnVPaUJFYVhOMFlXNWpaVVp1S1NCN1hHNGdJR1oxYm1OMGFXOXVJR2x1YVhSR2NtOXRVbUZ1Wkc5dEtGeHVJQ0FnSUc1T1pXbG5hR0p2Y25NNklHNTFiV0psY2l4Y2JpQWdJQ0JrWVhSaE9pQldaV04wYjNJc1hHNGdJQ0FnY1hWbGNubFFiMmx1ZEhNNklGWmxZM1J2Y2l4Y2JpQWdJQ0JmYUdWaGNEb2dhR1ZoY0M1SVpXRndMRnh1SUNBZ0lISmhibVJ2YlRvZ1VtRnVaRzl0Um01Y2JpQWdLU0I3WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J4ZFdWeWVWQnZhVzUwY3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2FXNWthV05sY3lBOUlIVjBhV3h6TG5KbGFtVmpkR2x2YmxOaGJYQnNaU2h1VG1WcFoyaGliM0p6TENCa1lYUmhMbXhsYm1kMGFDd2djbUZ1Wkc5dEtUdGNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHb2dQU0F3T3lCcUlEd2dhVzVrYVdObGN5NXNaVzVuZEdnN0lHb3JLeWtnZTF4dUlDQWdJQ0FnSUNCcFppQW9hVzVrYVdObGMxdHFYU0E4SURBcFhHNGdJQ0FnSUNBZ0lDQWdZMjl1ZEdsdWRXVTdYRzVjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdaQ0E5SUdScGMzUmhibU5sUm00b1pHRjBZVnRwYm1ScFkyVnpXMnBkWFN3Z2NYVmxjbmxRYjJsdWRITmJhVjBwTzF4dUlDQWdJQ0FnSUNCb1pXRndMbWhsWVhCUWRYTm9LRjlvWldGd0xDQnBMQ0JrTENCcGJtUnBZMlZ6VzJwZExDQXhLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0JtZFc1amRHbHZiaUJwYm1sMFJuSnZiVlJ5WldVb1hHNGdJQ0FnWDNSeVpXVTZJSFJ5WldVdVJteGhkRlJ5WldVc1hHNGdJQ0FnWkdGMFlUb2dWbVZqZEc5eUxGeHVJQ0FnSUhGMVpYSjVVRzlwYm5Sek9pQldaV04wYjNJc1hHNGdJQ0FnWDJobFlYQTZJR2hsWVhBdVNHVmhjQ3hjYmlBZ0lDQnlZVzVrYjIwNklGSmhibVJ2YlVadVhHNGdJQ2tnZTF4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnY1hWbGNubFFiMmx1ZEhNdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJR052Ym5OMElHbHVaR2xqWlhNZ1BTQjBjbVZsTG5ObFlYSmphRVpzWVhSVWNtVmxLSEYxWlhKNVVHOXBiblJ6VzJsZExDQmZkSEpsWlN3Z2NtRnVaRzl0S1R0Y2JseHVJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2FpQTlJREE3SUdvZ1BDQnBibVJwWTJWekxteGxibWQwYURzZ2Fpc3JLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHBibVJwWTJWelcycGRJRHdnTUNsY2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNWNiaUFnSUNBZ0lDQWdZMjl1YzNRZ1pDQTlJR1JwYzNSaGJtTmxSbTRvWkdGMFlWdHBibVJwWTJWelcycGRYU3dnY1hWbGNubFFiMmx1ZEhOYmFWMHBPMXh1SUNBZ0lDQWdJQ0JvWldGd0xtaGxZWEJRZFhOb0tGOW9aV0Z3TENCcExDQmtMQ0JwYm1ScFkyVnpXMnBkTENBeEtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVPMXh1SUNCOVhHNWNiaUFnY21WMGRYSnVJSHRwYm1sMFJuSnZiVkpoYm1SdmJTd2dhVzVwZEVaeWIyMVVjbVZsZlR0Y2JuMWNibHh1Wlhod2IzSjBJSFI1Y0dVZ1UyVmhjbU5vUm00Z1BTQW9YRzRnSUdSaGRHRTZJRlpsWTNSdmNpeGNiaUFnWjNKaGNHZzZJRzFoZEhKcGVDNVRjR0Z5YzJWTllYUnlhWGdzWEc0Z0lHbHVhWFJwWVd4cGVtRjBhVzl1T2lCb1pXRndMa2hsWVhBc1hHNGdJSEYxWlhKNVVHOXBiblJ6T2lCV1pXTjBiM0pjYmlrZ1BUNGdhR1ZoY0M1SVpXRndPMXh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYldGclpVbHVhWFJwWVd4cGVtVmtUazVUWldGeVkyZ29aR2x6ZEdGdVkyVkdiam9nUkdsemRHRnVZMlZHYmlrZ2UxeHVJQ0J5WlhSMWNtNGdablZ1WTNScGIyNGdibTVUWldGeVkyaEdiaWhjYmlBZ0lDQmtZWFJoT2lCV1pXTjBiM0lzWEc0Z0lDQWdaM0poY0dnNklHMWhkSEpwZUM1VGNHRnljMlZOWVhSeWFYZ3NYRzRnSUNBZ2FXNXBkR2xoYkdsNllYUnBiMjQ2SUdobFlYQXVTR1ZoY0N4Y2JpQWdJQ0J4ZFdWeWVWQnZhVzUwY3pvZ1ZtVmpkRzl5WEc0Z0lDa2dlMXh1SUNBZ0lHTnZibk4wSUh0cGJtUnBZMlZ6TENCcGJtUndkSEo5SUQwZ2JXRjBjbWw0TG1kbGRFTlRVaWhuY21Gd2FDazdYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSEYxWlhKNVVHOXBiblJ6TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCMGNtbGxaQ0E5SUc1bGR5QlRaWFFvYVc1cGRHbGhiR2w2WVhScGIyNWJNRjFiYVYwcE8xeHVJQ0FnSUNBZ2QyaHBiR1VnS0hSeWRXVXBJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1JtbHVaQ0J6YldGc2JHVnpkQ0JtYkdGbloyVmtJSFpsY25SbGVGeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCMlpYSjBaWGdnUFNCb1pXRndMbk50WVd4c1pYTjBSbXhoWjJkbFpDaHBibWwwYVdGc2FYcGhkR2x2Yml3Z2FTazdYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tIWmxjblJsZUNBOVBUMGdMVEVwWEc0Z0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc1Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWTJGdVpHbGtZWFJsY3lBOUlHbHVaR2xqWlhNdWMyeHBZMlVvYVc1a2NIUnlXM1psY25SbGVGMHNJR2x1WkhCMGNsdDJaWEowWlhnZ0t5QXhYU2s3WEc0Z0lDQWdJQ0FnSUdadmNpQW9ZMjl1YzNRZ1kyRnVaR2xrWVhSbElHOW1JR05oYm1ScFpHRjBaWE1wSUh0Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvWEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZVzVrYVdSaGRHVWdQVDA5SUhabGNuUmxlQ0I4ZkZ4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ1Wkdsa1lYUmxJRDA5UFNBdE1TQjhmRnh1SUNBZ0lDQWdJQ0FnSUNBZ2RISnBaV1F1YUdGektHTmhibVJwWkdGMFpTbGNiaUFnSUNBZ0lDQWdJQ0FwWEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjUwYVc1MVpUdGNibHh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR1FnUFNCa2FYTjBZVzVqWlVadUtHUmhkR0ZiWTJGdVpHbGtZWFJsWFN3Z2NYVmxjbmxRYjJsdWRITmJhVjBwTzF4dUlDQWdJQ0FnSUNBZ0lHaGxZWEF1ZFc1amFHVmphMlZrU0dWaGNGQjFjMmdvYVc1cGRHbGhiR2w2WVhScGIyNHNJR2tzSUdRc0lHTmhibVJwWkdGMFpTd2dNU2s3WEc0Z0lDQWdJQ0FnSUNBZ2RISnBaV1F1WVdSa0tHTmhibVJwWkdGMFpTazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdsdWFYUnBZV3hwZW1GMGFXOXVPMXh1SUNCOU8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYVc1cGRHbGhiR2w2WlZObFlYSmphQ2hjYmlBZ1ptOXlaWE4wT2lCMGNtVmxMa1pzWVhSVWNtVmxXMTBzWEc0Z0lHUmhkR0U2SUZabFkzUnZjaXhjYmlBZ2NYVmxjbmxRYjJsdWRITTZJRlpsWTNSdmNpeGNiaUFnYms1bGFXZG9ZbTl5Y3pvZ2JuVnRZbVZ5TEZ4dUlDQnBibWwwUm5KdmJWSmhibVJ2YlRvZ1NXNXBkRVp5YjIxU1lXNWtiMjFHYml4Y2JpQWdhVzVwZEVaeWIyMVVjbVZsT2lCSmJtbDBSbkp2YlZSeVpXVkdiaXhjYmlBZ2NtRnVaRzl0T2lCU1lXNWtiMjFHYmx4dUtTQjdYRzRnSUdOdmJuTjBJSEpsYzNWc2RITWdQU0JvWldGd0xtMWhhMlZJWldGd0tIRjFaWEo1VUc5cGJuUnpMbXhsYm1kMGFDd2diazVsYVdkb1ltOXljeWs3WEc0Z0lHbHVhWFJHY205dFVtRnVaRzl0S0c1T1pXbG5hR0p2Y25Nc0lHUmhkR0VzSUhGMVpYSjVVRzlwYm5SekxDQnlaWE4xYkhSekxDQnlZVzVrYjIwcE8xeHVJQ0JwWmlBb1ptOXlaWE4wS1NCN1hHNGdJQ0FnWm05eUlDaGpiMjV6ZENCMGNtVmxJRzltSUdadmNtVnpkQ2xjYmlBZ0lDQWdJR2x1YVhSR2NtOXRWSEpsWlNoMGNtVmxMQ0JrWVhSaExDQnhkV1Z5ZVZCdmFXNTBjeXdnY21WemRXeDBjeXdnY21GdVpHOXRLVHRjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdjbVZ6ZFd4MGN6dGNibjFjYmlKZGZRPT0iLCJpbXBvcnQgaXNBcnJheSBmcm9tICdpcy1hbnktYXJyYXknO1xuXG5pbXBvcnQgZXJyb3JDYWxjdWxhdGlvbiBmcm9tICcuL2Vycm9yQ2FsY3VsYXRpb24nO1xuaW1wb3J0IHN0ZXAgZnJvbSAnLi9zdGVwJztcblxuLyoqXG4gKiBDdXJ2ZSBmaXR0aW5nIGFsZ29yaXRobVxuICogQHBhcmFtIHt7eDpBcnJheTxudW1iZXI+LCB5OkFycmF5PG51bWJlcj59fSBkYXRhIC0gQXJyYXkgb2YgcG9pbnRzIHRvIGZpdCBpbiB0aGUgZm9ybWF0IFt4MSwgeDIsIC4uLiBdLCBbeTEsIHkyLCAuLi4gXVxuICogQHBhcmFtIHtmdW5jdGlvbn0gcGFyYW1ldGVyaXplZEZ1bmN0aW9uIC0gVGhlIHBhcmFtZXRlcnMgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB3aXRoIHRoZSBpbmRlcGVuZGVudCB2YXJpYWJsZSBhcyBhIHBhcmFtZXRlclxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXSAtIE9wdGlvbnMgb2JqZWN0XG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMuZGFtcGluZ10gLSBMZXZlbmJlcmctTWFycXVhcmR0IHBhcmFtZXRlclxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmdyYWRpZW50RGlmZmVyZW5jZSA9IDEwZS0yXSAtIEFkanVzdG1lbnQgZm9yIGRlY3JlYXNlIHRoZSBkYW1waW5nIHBhcmFtZXRlclxuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBbb3B0aW9ucy5taW5WYWx1ZXNdIC0gTWluaW11bSBhbGxvd2VkIHZhbHVlcyBmb3IgcGFyYW1ldGVyc1xuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBbb3B0aW9ucy5tYXhWYWx1ZXNdIC0gTWF4aW11bSBhbGxvd2VkIHZhbHVlcyBmb3IgcGFyYW1ldGVyc1xuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBbb3B0aW9ucy5pbml0aWFsVmFsdWVzXSAtIEFycmF5IG9mIGluaXRpYWwgcGFyYW1ldGVyIHZhbHVlc1xuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLm1heEl0ZXJhdGlvbnMgPSAxMDBdIC0gTWF4aW11bSBvZiBhbGxvd2VkIGl0ZXJhdGlvbnNcbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5lcnJvclRvbGVyYW5jZSA9IDEwZS0zXSAtIE1pbmltdW0gdW5jZXJ0YWludHkgYWxsb3dlZCBmb3IgZWFjaCBwb2ludFxuICogQHJldHVybiB7e3BhcmFtZXRlclZhbHVlczogQXJyYXk8bnVtYmVyPiwgcGFyYW1ldGVyRXJyb3I6IG51bWJlciwgaXRlcmF0aW9uczogbnVtYmVyfX1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGV2ZW5iZXJnTWFycXVhcmR0KFxuICBkYXRhLFxuICBwYXJhbWV0ZXJpemVkRnVuY3Rpb24sXG4gIG9wdGlvbnMgPSB7fSxcbikge1xuICBsZXQge1xuICAgIG1heEl0ZXJhdGlvbnMgPSAxMDAsXG4gICAgZ3JhZGllbnREaWZmZXJlbmNlID0gMTBlLTIsXG4gICAgZGFtcGluZyA9IDAsXG4gICAgZXJyb3JUb2xlcmFuY2UgPSAxMGUtMyxcbiAgICBtaW5WYWx1ZXMsXG4gICAgbWF4VmFsdWVzLFxuICAgIGluaXRpYWxWYWx1ZXMsXG4gIH0gPSBvcHRpb25zO1xuXG4gIGlmIChkYW1waW5nIDw9IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBkYW1waW5nIG9wdGlvbiBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyJyk7XG4gIH0gZWxzZSBpZiAoIWRhdGEueCB8fCAhZGF0YS55KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZGF0YSBwYXJhbWV0ZXIgbXVzdCBoYXZlIHggYW5kIHkgZWxlbWVudHMnKTtcbiAgfSBlbHNlIGlmIChcbiAgICAhaXNBcnJheShkYXRhLngpIHx8XG4gICAgZGF0YS54Lmxlbmd0aCA8IDIgfHxcbiAgICAhaXNBcnJheShkYXRhLnkpIHx8XG4gICAgZGF0YS55Lmxlbmd0aCA8IDJcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1RoZSBkYXRhIHBhcmFtZXRlciBlbGVtZW50cyBtdXN0IGJlIGFuIGFycmF5IHdpdGggbW9yZSB0aGFuIDIgcG9pbnRzJyxcbiAgICApO1xuICB9IGVsc2UgaWYgKGRhdGEueC5sZW5ndGggIT09IGRhdGEueS5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBkYXRhIHBhcmFtZXRlciBlbGVtZW50cyBtdXN0IGhhdmUgdGhlIHNhbWUgc2l6ZScpO1xuICB9XG5cbiAgbGV0IHBhcmFtZXRlcnMgPVxuICAgIGluaXRpYWxWYWx1ZXMgfHwgbmV3IEFycmF5KHBhcmFtZXRlcml6ZWRGdW5jdGlvbi5sZW5ndGgpLmZpbGwoMSk7XG4gIGxldCBwYXJMZW4gPSBwYXJhbWV0ZXJzLmxlbmd0aDtcbiAgbWF4VmFsdWVzID0gbWF4VmFsdWVzIHx8IG5ldyBBcnJheShwYXJMZW4pLmZpbGwoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpO1xuICBtaW5WYWx1ZXMgPSBtaW5WYWx1ZXMgfHwgbmV3IEFycmF5KHBhckxlbikuZmlsbChOdW1iZXIuTUlOX1NBRkVfSU5URUdFUik7XG5cbiAgaWYgKG1heFZhbHVlcy5sZW5ndGggIT09IG1pblZhbHVlcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21pblZhbHVlcyBhbmQgbWF4VmFsdWVzIG11c3QgYmUgdGhlIHNhbWUgc2l6ZScpO1xuICB9XG5cbiAgaWYgKCFpc0FycmF5KHBhcmFtZXRlcnMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbml0aWFsVmFsdWVzIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgfVxuXG4gIGxldCBlcnJvciA9IGVycm9yQ2FsY3VsYXRpb24oZGF0YSwgcGFyYW1ldGVycywgcGFyYW1ldGVyaXplZEZ1bmN0aW9uKTtcblxuICBsZXQgY29udmVyZ2VkID0gZXJyb3IgPD0gZXJyb3JUb2xlcmFuY2U7XG5cbiAgbGV0IGl0ZXJhdGlvbjtcbiAgZm9yIChpdGVyYXRpb24gPSAwOyBpdGVyYXRpb24gPCBtYXhJdGVyYXRpb25zICYmICFjb252ZXJnZWQ7IGl0ZXJhdGlvbisrKSB7XG4gICAgcGFyYW1ldGVycyA9IHN0ZXAoXG4gICAgICBkYXRhLFxuICAgICAgcGFyYW1ldGVycyxcbiAgICAgIGRhbXBpbmcsXG4gICAgICBncmFkaWVudERpZmZlcmVuY2UsXG4gICAgICBwYXJhbWV0ZXJpemVkRnVuY3Rpb24sXG4gICAgKTtcblxuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgcGFyTGVuOyBrKyspIHtcbiAgICAgIHBhcmFtZXRlcnNba10gPSBNYXRoLm1pbihcbiAgICAgICAgTWF0aC5tYXgobWluVmFsdWVzW2tdLCBwYXJhbWV0ZXJzW2tdKSxcbiAgICAgICAgbWF4VmFsdWVzW2tdLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBlcnJvciA9IGVycm9yQ2FsY3VsYXRpb24oZGF0YSwgcGFyYW1ldGVycywgcGFyYW1ldGVyaXplZEZ1bmN0aW9uKTtcbiAgICBpZiAoaXNOYU4oZXJyb3IpKSBicmVhaztcbiAgICBjb252ZXJnZWQgPSBlcnJvciA8PSBlcnJvclRvbGVyYW5jZTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcGFyYW1ldGVyVmFsdWVzOiBwYXJhbWV0ZXJzLFxuICAgIHBhcmFtZXRlckVycm9yOiBlcnJvcixcbiAgICBpdGVyYXRpb25zOiBpdGVyYXRpb24sXG4gIH07XG59XG4iLCJpbXBvcnQgeyBkbUxpbmVhckluZGV4IH0gZnJvbSAnLi4vZGlzdGFuY2UtbWF0cml4JztcbmV4cG9ydCBjbGFzcyBUU05FIHtcbiAgICBhc3NlcnQoY29uZGl0aW9uLCBtZXNzYWdlKSB7XG4gICAgICAgIGlmICghY29uZGl0aW9uKVxuICAgICAgICAgICAgdGhyb3cgbWVzc2FnZSB8fCAnQXNzZXJ0aW9uIGZhaWxlZCc7XG4gICAgfVxuICAgIC8vIHN5bnRheCBzdWdhclxuICAgIGdldG9wdChvcHQsIGZpZWxkLCBkZWZhdWx0dmFsKSB7XG4gICAgICAgIGlmIChvcHQuaGFzT3duUHJvcGVydHkoZmllbGQpKVxuICAgICAgICAgICAgcmV0dXJuIG9wdFtmaWVsZF07XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0dmFsO1xuICAgIH1cbiAgICBnYXVzc1JhbmRvbSgpIHtcbiAgICAgICAgaWYgKHRoaXMucmV0dXJuVikge1xuICAgICAgICAgICAgdGhpcy5yZXR1cm5WID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdSA9IDIgKiB0aGlzLnJhbmRvbSgpIC0gMTtcbiAgICAgICAgY29uc3QgdiA9IDIgKiB0aGlzLnJhbmRvbSgpIC0gMTtcbiAgICAgICAgY29uc3QgciA9IHUgKiB1ICsgdiAqIHY7XG4gICAgICAgIGlmIChyID09PSAwIHx8IHIgPiAxKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2F1c3NSYW5kb20oKTtcbiAgICAgICAgY29uc3QgYyA9IE1hdGguc3FydCgtMiAqIE1hdGgubG9nKHIpIC8gcik7XG4gICAgICAgIHRoaXMudlZhbHVlID0gdiAqIGM7IC8vIGNhY2hlIHRoaXMgZm9yIG5leHQgZnVuY3Rpb24gY2FsbCBmb3IgZWZmaWNpZW5jeVxuICAgICAgICB0aGlzLnJldHVyblYgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdSAqIGM7XG4gICAgfVxuICAgIC8vIHJldHVybiByYW5kb20gbm9ybWFsIG51bWJlclxuICAgIHJhbmRuKG11LCBzdGQpIHtcbiAgICAgICAgcmV0dXJuIG11ICsgdGhpcy5nYXVzc1JhbmRvbSgpICogc3RkO1xuICAgIH1cbiAgICAvLyB1dGlsaXRpdHkgdGhhdCBjcmVhdGVzIGNvbnRpZ3VvdXMgdmVjdG9yIG9mIHplcm9zIG9mIHNpemUgblxuICAgIHplcm9zKG4pIHtcbiAgICAgICAgaWYgKHR5cGVvZiAobikgPT09ICd1bmRlZmluZWQnIHx8IGlzTmFOKG4pKVxuICAgICAgICAgICAgcmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoKTtcbiAgICAgICAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIC8vIGxhY2tpbmcgYnJvd3NlciBzdXBwb3J0XG4gICAgICAgICAgICBjb25zdCBhcnIgPSBuZXcgRmxvYXQzMkFycmF5KG4pO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspXG4gICAgICAgICAgICAgICAgYXJyW2ldID0gMDtcbiAgICAgICAgICAgIHJldHVybiBhcnI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEZsb2F0MzJBcnJheShuKTsgLy8gdHlwZWQgYXJyYXlzIGFyZSBmYXN0ZXJcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyB1dGlsaXR5IHRoYXQgcmV0dXJucyAyZCBhcnJheSBmaWxsZWQgd2l0aCByYW5kb20gbnVtYmVyc1xuICAgIC8vIG9yIHdpdGggdmFsdWUgcywgaWYgcHJvdmlkZWRcbiAgICByYW5kbjJkKG4sIGQsIHMpIHtcbiAgICAgICAgY29uc3QgdXNlcyA9IHR5cGVvZiBzICE9PSAndW5kZWZpbmVkJztcbiAgICAgICAgY29uc3QgeCA9IChuZXcgQXJyYXkobikpLmZpbGwobnVsbCkubWFwKCgpID0+IG5ldyBGbG9hdDMyQXJyYXkoZCkpO1xuICAgICAgICBpZiAodXNlcykge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspXG4gICAgICAgICAgICAgICAgeFtpXSA9IG5ldyBGbG9hdDMyQXJyYXkoZCkuZmlsbChzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkOyBqKyspXG4gICAgICAgICAgICAgICAgICAgIHhbaV1bal0gPSB0aGlzLnJhbmRuKDAuMCwgMWUtNCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHg7XG4gICAgfVxuICAgIC8vIGNvbXB1dGUgTDIgZGlzdGFuY2UgYmV0d2VlbiB0d28gdmVjdG9yc1xuICAgIGwyKHgxLCB4Mikge1xuICAgICAgICBjb25zdCBEID0geDEubGVuZ3RoO1xuICAgICAgICBsZXQgZCA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgRDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB4MWkgPSB4MVtpXTtcbiAgICAgICAgICAgIGNvbnN0IHgyaSA9IHgyW2ldO1xuICAgICAgICAgICAgZCArPSAoeDFpIC0geDJpKSAqICh4MWkgLSB4MmkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkO1xuICAgIH1cbiAgICAvLyBjb21wdXRlIHBhaXJ3aXNlIGRpc3RhbmNlIGluIGFsbCB2ZWN0b3JzIGluIFhcbiAgICB4dG9kKFgpIHtcbiAgICAgICAgY29uc3QgTiA9IFgubGVuZ3RoO1xuICAgICAgICBjb25zdCBkaXN0ID0gdGhpcy56ZXJvcyhOICogTik7IC8vIGFsbG9jYXRlIGNvbnRpZ3VvdXMgYXJyYXlcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLmwyKFhbaV0sIFhbal0pO1xuICAgICAgICAgICAgICAgIGRpc3RbaSAqIE4gKyBqXSA9IGQ7XG4gICAgICAgICAgICAgICAgZGlzdFtqICogTiArIGldID0gZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGlzdDtcbiAgICB9XG4gICAgZ2V0SXRlclNpemUocm93U2l6ZSkge1xuICAgICAgICBpZiAocm93U2l6ZSA8PSAyMDAwKVxuICAgICAgICAgICAgcmV0dXJuIDEwMDtcbiAgICAgICAgZWxzZSBpZiAocm93U2l6ZSA8PSAzMDAwKVxuICAgICAgICAgICAgcmV0dXJuIDkwO1xuICAgICAgICBlbHNlIGlmIChyb3dTaXplIDw9IDUwMDApXG4gICAgICAgICAgICByZXR1cm4gODA7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiA3MDtcbiAgICB9XG4gICAgLy8gY29tcHV0ZSAocF97aXxqfSArIHBfe2p8aX0pLygybilcbiAgICBkMnAoRCwgcGVycGxleGl0eSwgdG9sLCByb3dTaXplKSB7XG4gICAgICAgIC8vIGNvbnN0IG5mID0gTWF0aC5zcXJ0KEQubGVuZ3RoKTsgLy8gdGhpcyBiZXR0ZXIgYmUgYW4gaW50ZWdlclxuICAgICAgICAvLyBjb25zdCBuID0gTWF0aC5mbG9vcihuZik7XG4gICAgICAgIC8vIHRoaXMuYXNzZXJ0KG4gPT09IG5mLCAnRCBzaG91bGQgaGF2ZSBzcXVhcmUgbnVtYmVyIG9mIGVsZW1lbnRzLicpO1xuICAgICAgICBjb25zdCBpbmRleGVyID0gZG1MaW5lYXJJbmRleChyb3dTaXplKTtcbiAgICAgICAgY29uc3QgZGlzdGFuY2VzID0gbmV3IEZsb2F0MzJBcnJheShyb3dTaXplICogcm93U2l6ZSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93U2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCByb3dTaXplOyBqKyspXG4gICAgICAgICAgICAgICAgZGlzdGFuY2VzW2kgKiByb3dTaXplICsgal0gPSBkaXN0YW5jZXNbaiAqIHJvd1NpemUgKyBpXSA9IERbaW5kZXhlcihpLCBqKV07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbiA9IHJvd1NpemU7XG4gICAgICAgIGNvbnN0IGhUYXJnZXQgPSBNYXRoLmxvZyhwZXJwbGV4aXR5KTsgLy8gdGFyZ2V0IGVudHJvcHkgb2YgZGlzdHJpYnV0aW9uXG4gICAgICAgIGNvbnN0IFAgPSB0aGlzLnplcm9zKG4gKiBuKTsgLy8gdGVtcG9yYXJ5IHByb2JhYmlsaXR5IG1hdHJpeFxuICAgICAgICBjb25zdCBwcm93ID0gdGhpcy56ZXJvcyhuKTsgLy8gYSB0ZW1wb3Jhcnkgc3RvcmFnZSBjb21wYXJ0bWVudFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgbGV0IGJldGFtaW4gPSAtSW5maW5pdHk7XG4gICAgICAgICAgICBsZXQgYmV0YW1heCA9IEluZmluaXR5O1xuICAgICAgICAgICAgbGV0IGJldGEgPSAxOyAvLyBpbml0aWFsIHZhbHVlIG9mIHByZWNpc2lvblxuICAgICAgICAgICAgbGV0IGRvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IG1heHRyaWVzID0gTWF0aC5mbG9vcih0aGlzLmdldEl0ZXJTaXplKHJvd1NpemUpIC8gNSk7XG4gICAgICAgICAgICAvLyBwZXJmb3JtIGJpbmFyeSBzZWFyY2ggdG8gZmluZCBhIHN1aXRhYmxlIHByZWNpc2lvbiBiZXRhXG4gICAgICAgICAgICAvLyBzbyB0aGF0IHRoZSBlbnRyb3B5IG9mIHRoZSBkaXN0cmlidXRpb24gaXMgYXBwcm9wcmlhdGVcbiAgICAgICAgICAgIGxldCBudW0gPSAwO1xuICAgICAgICAgICAgd2hpbGUgKCFkb25lKSB7XG4gICAgICAgICAgICAgICAgLy9kZWJ1Z2dlcjtcbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIGVudHJvcHkgYW5kIGtlcm5lbCByb3cgd2l0aCBiZXRhIHByZWNpc2lvblxuICAgICAgICAgICAgICAgIGxldCBwc3VtID0gMC4wO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBqID0gaSA9PT0gaiA/IDAgOiBNYXRoLmV4cCgtZGlzdGFuY2VzW2kgKiBuICsgal0gKiBiZXRhKTtcbiAgICAgICAgICAgICAgICAgICAgcHJvd1tqXSA9IHBqO1xuICAgICAgICAgICAgICAgICAgICBwc3VtICs9IHBqO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBub3JtYWxpemUgcCBhbmQgY29tcHV0ZSBlbnRyb3B5XG4gICAgICAgICAgICAgICAgbGV0IG5IZXJlID0gMC4wO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwajtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBzdW0gPT09IDApXG4gICAgICAgICAgICAgICAgICAgICAgICBwaiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHBqID0gcHJvd1tqXSAvIHBzdW07XG4gICAgICAgICAgICAgICAgICAgIHByb3dbal0gPSBwajtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBqID4gMWUtNylcbiAgICAgICAgICAgICAgICAgICAgICAgIG5IZXJlIC09IHBqICogTWF0aC5sb2cocGopO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBhZGp1c3QgYmV0YSBiYXNlZCBvbiByZXN1bHRcbiAgICAgICAgICAgICAgICBpZiAobkhlcmUgPiBoVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVudHJvcHkgd2FzIHRvbyBoaWdoIChkaXN0cmlidXRpb24gdG9vIGRpZmZ1c2UpXG4gICAgICAgICAgICAgICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gaW5jcmVhc2UgdGhlIHByZWNpc2lvbiBmb3IgbW9yZSBwZWFreSBkaXN0cmlidXRpb25cbiAgICAgICAgICAgICAgICAgICAgYmV0YW1pbiA9IGJldGE7IC8vIG1vdmUgdXAgdGhlIGJvdW5kc1xuICAgICAgICAgICAgICAgICAgICBpZiAoYmV0YW1heCA9PT0gSW5maW5pdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICBiZXRhID0gYmV0YSAqIDI7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGJldGEgPSAoYmV0YSArIGJldGFtYXgpIC8gMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnZlcnNlIGNhc2UuIG1ha2UgZGlzdHJ1YnRpb24gbGVzcyBwZWFreVxuICAgICAgICAgICAgICAgICAgICBiZXRhbWF4ID0gYmV0YTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJldGFtaW4gPT09IC1JbmZpbml0eSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGJldGEgPSBiZXRhIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgYmV0YSA9IChiZXRhICsgYmV0YW1pbikgLyAyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBzdG9wcGluZyBjb25kaXRpb25zOiB0b28gbWFueSB0cmllcyBvciBnb3QgYSBnb29kIHByZWNpc2lvblxuICAgICAgICAgICAgICAgIG51bSsrO1xuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhuSGVyZSAtIGhUYXJnZXQpIDwgdG9sKVxuICAgICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAobnVtID49IG1heHRyaWVzKVxuICAgICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdkYXRhIHBvaW50ICcgKyBpICsgJyBnZXRzIHByZWNpc2lvbiAnICsgYmV0YSArICcgYWZ0ZXIgJyArIG51bSArICcgYmluYXJ5IHNlYXJjaCBzdGVwcy4nKTtcbiAgICAgICAgICAgIC8vIGNvcHkgb3ZlciB0aGUgZmluYWwgcHJvdyB0byBQIGF0IHJvdyBpXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKylcbiAgICAgICAgICAgICAgICBQW2kgKiBuICsgal0gPSBwcm93W2pdO1xuICAgICAgICB9IC8vIGVuZCBsb29wIG92ZXIgZXhhbXBsZXMgaVxuICAgICAgICAvLyBzeW1tZXRyaXplIFAgYW5kIG5vcm1hbGl6ZSBpdCB0byBzdW0gdG8gMSBvdmVyIGFsbCBpalxuICAgICAgICBjb25zdCBwT3V0ID0gdGhpcy56ZXJvcyhuICogbik7XG4gICAgICAgIGNvbnN0IE4yID0gbiAqIDI7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKylcbiAgICAgICAgICAgICAgICBwT3V0W2kgKiBuICsgal0gPSBNYXRoLm1heCgoUFtpICogbiArIGpdICsgUFtqICogbiArIGldKSAvIE4yLCAxZS0xMDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwT3V0O1xuICAgIH1cbiAgICAvLyBoZWxwZXIgZnVuY3Rpb25cbiAgICBzaWduKHgpIHsgcmV0dXJuIHggPiAwID8gMSA6IHggPCAwID8gLTEgOiAwOyB9XG4gICAgY29uc3RydWN0b3Iob3B0KSB7XG4gICAgICAgIHRoaXMuaXRlciA9IDA7XG4gICAgICAgIHRoaXMucmFuZG9tID0gTWF0aC5yYW5kb207XG4gICAgICAgIC8vIHJldHVybiAwIG1lYW4gdW5pdCBzdGFuZGFyZCBkZXZpYXRpb24gcmFuZG9tIG51bWJlclxuICAgICAgICB0aGlzLnJldHVyblYgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52VmFsdWUgPSAwLjA7XG4gICAgICAgIG9wdCA9IG9wdCB8fCB7fTtcbiAgICAgICAgdGhpcy5wZXJwbGV4aXR5ID0gdGhpcy5nZXRvcHQob3B0LCAncGVycGxleGl0eScsIDMwKTsgLy8gZWZmZWN0aXZlIG51bWJlciBvZiBuZWFyZXN0IG5laWdoYm9yc1xuICAgICAgICB0aGlzLmRpbSA9IHRoaXMuZ2V0b3B0KG9wdCwgJ2RpbScsIDIpOyAvLyBieSBkZWZhdWx0IDItRCB0U05FXG4gICAgICAgIHRoaXMuZXBzaWxvbiA9IHRoaXMuZ2V0b3B0KG9wdCwgJ2Vwc2lsb24nLCAxMCk7IC8vIGxlYXJuaW5nIHJhdGVcbiAgICAgICAgdGhpcy5yYW5kb20gPSB0aGlzLmdldG9wdChvcHQsICdyYW5kb20nLCBNYXRoLnJhbmRvbSk7IC8vIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yXG4gICAgfVxuICAgIC8vIHRoaXMgZnVuY3Rpb24gdGFrZXMgYSBzZXQgb2YgaGlnaC1kaW1lbnNpb25hbCBwb2ludHNcbiAgICAvLyBhbmQgY3JlYXRlcyBtYXRyaXggUCBmcm9tIHRoZW0gdXNpbmcgZ2F1c3NpYW4ga2VybmVsXG4gICAgaW5pdERhdGFSYXcoWCkge1xuICAgICAgICBjb25zdCBOID0gWC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IEQgPSBYWzBdLmxlbmd0aDtcbiAgICAgICAgdGhpcy5hc3NlcnQoTiA+IDAsICcgWCBpcyBlbXB0eT8gWW91IG11c3QgaGF2ZSBzb21lIGRhdGEhJyk7XG4gICAgICAgIHRoaXMuYXNzZXJ0KEQgPiAwLCAnIFhbMF0gaXMgZW1wdHk/IFdoZXJlIGlzIHRoZSBkYXRhPycpO1xuICAgICAgICBjb25zdCBkaXN0cyA9IHRoaXMueHRvZChYKTsgLy8gY29udmVydCBYIHRvIGRpc3RhbmNlcyB1c2luZyBnYXVzc2lhbiBrZXJuZWxcbiAgICAgICAgdGhpcy5QID0gdGhpcy5kMnAoZGlzdHMsIHRoaXMucGVycGxleGl0eSwgMWUtNCwgRCk7IC8vIGF0dGFjaCB0byBvYmplY3RcbiAgICAgICAgdGhpcy5OID0gTjsgLy8gYmFjayB1cCB0aGUgc2l6ZSBvZiB0aGUgZGF0YXNldFxuICAgICAgICB0aGlzLmluaXRTb2x1dGlvbigpOyAvLyByZWZyZXNoIHRoaXNcbiAgICB9XG4gICAgLy8gdGhpcyBmdW5jdGlvbiB0YWtlcyBhIGdpdmVuIGRpc3RhbmNlIG1hdHJpeCBhbmQgY3JlYXRlc1xuICAgIC8vIG1hdHJpeCBQIGZyb20gdGhlbS5cbiAgICAvLyBEIGlzIGFzc3VtZWQgdG8gYmUgcHJvdmlkZWQgYXMgYSBsaXN0IG9mIGxpc3RzLCBhbmQgc2hvdWxkIGJlIHN5bW1ldHJpY1xuICAgIGluaXREYXRhRGlzdChELCByb3dTaXplKSB7XG4gICAgICAgIGNvbnN0IE4gPSBELmxlbmd0aDtcbiAgICAgICAgdGhpcy5hc3NlcnQoTiA+IDAsICcgWCBpcyBlbXB0eT8gWW91IG11c3QgaGF2ZSBzb21lIGRhdGEhJyk7XG4gICAgICAgIC8vIGNvbnZlcnQgRCB0byBhIChmYXN0KSB0eXBlZCBhcnJheSB2ZXJzaW9uXG4gICAgICAgIC8vIGRpc3RzLmZvckVhY2goKGQpID0+IGNvbnNvbGUubG9nKGQpKTtcbiAgICAgICAgY29uc29sZS50aW1lKCdkaXN0YW5jZXMgdG8gbWF0cml4Jyk7XG4gICAgICAgIHRoaXMuUCA9IHRoaXMuZDJwKEQsIHRoaXMucGVycGxleGl0eSwgMWUtNCwgcm93U2l6ZSk7XG4gICAgICAgIGNvbnNvbGUudGltZUVuZCgnZGlzdGFuY2VzIHRvIG1hdHJpeCcpO1xuICAgICAgICB0aGlzLk4gPSByb3dTaXplO1xuICAgICAgICB0aGlzLmluaXRTb2x1dGlvbigpOyAvLyByZWZyZXNoIHRoaXNcbiAgICB9XG4gICAgLy8gKHJlKWluaXRpYWxpemVzIHRoZSBzb2x1dGlvbiB0byByYW5kb21cbiAgICBpbml0U29sdXRpb24oKSB7XG4gICAgICAgIC8vIGdlbmVyYXRlIHJhbmRvbSBzb2x1dGlvbiB0byB0LVNORVxuICAgICAgICB0aGlzLlkgPSB0aGlzLnJhbmRuMmQodGhpcy5OLCB0aGlzLmRpbSk7IC8vIHRoZSBzb2x1dGlvblxuICAgICAgICB0aGlzLmdhaW5zID0gdGhpcy5yYW5kbjJkKHRoaXMuTiwgdGhpcy5kaW0sIDEuMCk7IC8vIHN0ZXAgZ2FpbnMgdG8gYWNjZWxlcmF0ZSBwcm9ncmVzcyBpbiB1bmNoYW5naW5nIGRpcmVjdGlvbnNcbiAgICAgICAgdGhpcy55c3RlcCA9IHRoaXMucmFuZG4yZCh0aGlzLk4sIHRoaXMuZGltLCAwLjApOyAvLyBtb21lbnR1bSBhY2N1bXVsYXRvclxuICAgICAgICB0aGlzLml0ZXIgPSAwO1xuICAgIH1cbiAgICAvLyByZXR1cm4gcG9pbnRlciB0byBjdXJyZW50IHNvbHV0aW9uXG4gICAgZ2V0U29sdXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLlk7XG4gICAgfVxuICAgIC8vIHBlcmZvcm0gYSBzaW5nbGUgc3RlcCBvZiBvcHRpbWl6YXRpb24gdG8gaW1wcm92ZSB0aGUgZW1iZWRkaW5nXG4gICAgc3RlcCgpIHtcbiAgICAgICAgdGhpcy5pdGVyICs9IDE7XG4gICAgICAgIGNvbnN0IE4gPSB0aGlzLk47XG4gICAgICAgIGNvbnN0IGNnID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpOyAvLyBldmFsdWF0ZSBncmFkaWVudFxuICAgICAgICBjb25zdCBjb3N0ID0gY2cuY29zdDtcbiAgICAgICAgY29uc3QgZ3JhZCA9IGNnLmdyYWQ7XG4gICAgICAgIC8vIHBlcmZvcm0gZ3JhZGllbnQgc3RlcFxuICAgICAgICBjb25zdCB5bWVhbiA9IHRoaXMuemVyb3ModGhpcy5kaW0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCB0aGlzLmRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ2lkID0gZ3JhZFtpXVtkXTtcbiAgICAgICAgICAgICAgICBjb25zdCBzaWQgPSB0aGlzLnlzdGVwW2ldW2RdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdhaW5pZCA9IHRoaXMuZ2FpbnNbaV1bZF07XG4gICAgICAgICAgICAgICAgLy8gY29tcHV0ZSBnYWluIHVwZGF0ZVxuICAgICAgICAgICAgICAgIGxldCBuZXdnYWluID0gdGhpcy5zaWduKGdpZCkgPT09IHRoaXMuc2lnbihzaWQpID8gZ2FpbmlkICogMC44IDogZ2FpbmlkICsgMC4yO1xuICAgICAgICAgICAgICAgIGlmIChuZXdnYWluIDwgMC4wMSlcbiAgICAgICAgICAgICAgICAgICAgbmV3Z2FpbiA9IDAuMDE7IC8vIGNsYW1wXG4gICAgICAgICAgICAgICAgdGhpcy5nYWluc1tpXVtkXSA9IG5ld2dhaW47IC8vIHN0b3JlIGZvciBuZXh0IHR1cm5cbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIG1vbWVudHVtIHN0ZXAgZGlyZWN0aW9uXG4gICAgICAgICAgICAgICAgY29uc3QgbW9tdmFsID0gdGhpcy5pdGVyIDwgMjUwID8gMC41IDogMC44O1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld3NpZCA9IG1vbXZhbCAqIHNpZCAtIHRoaXMuZXBzaWxvbiAqIG5ld2dhaW4gKiBncmFkW2ldW2RdO1xuICAgICAgICAgICAgICAgIHRoaXMueXN0ZXBbaV1bZF0gPSBuZXdzaWQ7IC8vIHJlbWVtYmVyIHRoZSBzdGVwIHdlIHRvb2tcbiAgICAgICAgICAgICAgICAvLyBzdGVwIVxuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSArPSBuZXdzaWQ7XG4gICAgICAgICAgICAgICAgeW1lYW5bZF0gKz0gdGhpcy5ZW2ldW2RdOyAvLyBhY2N1bXVsYXRlIG1lYW4gc28gdGhhdCB3ZSBjYW4gY2VudGVyIGxhdGVyXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVwcm9qZWN0IFkgdG8gYmUgemVybyBtZWFuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IHRoaXMuZGltOyBkKyspXG4gICAgICAgICAgICAgICAgdGhpcy5ZW2ldW2RdIC09IHltZWFuW2RdIC8gTjtcbiAgICAgICAgfVxuICAgICAgICAvL2lmKHRoaXMuaXRlciUxMDA9PT0wKSBjb25zb2xlLmxvZygnaXRlciAnICsgdGhpcy5pdGVyICsgJywgY29zdDogJyArIGNvc3QpO1xuICAgICAgICByZXR1cm4gY29zdDsgLy8gcmV0dXJuIGN1cnJlbnQgY29zdFxuICAgIH1cbiAgICAvLyBmb3IgZGVidWdnaW5nOiBncmFkaWVudCBjaGVja1xuICAgIGRlYnVnR3JhZCgpIHtcbiAgICAgICAgY29uc3QgTiA9IHRoaXMuTjtcbiAgICAgICAgY29uc3QgY2cgPSB0aGlzLmNvc3RHcmFkKHRoaXMuWSk7IC8vIGV2YWx1YXRlIGdyYWRpZW50XG4gICAgICAgIC8vY29uc3QgY29zdCA9IGNnLmNvc3Q7XG4gICAgICAgIGNvbnN0IGdyYWQgPSBjZy5ncmFkO1xuICAgICAgICBjb25zdCBlID0gMWUtNTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgdGhpcy5kaW07IGQrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHlvbGQgPSB0aGlzLllbaV1bZF07XG4gICAgICAgICAgICAgICAgdGhpcy5ZW2ldW2RdID0geW9sZCArIGU7XG4gICAgICAgICAgICAgICAgY29uc3QgY2cwID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpO1xuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSA9IHlvbGQgLSBlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNnMSA9IHRoaXMuY29zdEdyYWQodGhpcy5ZKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhbmFseXRpYyA9IGdyYWRbaV1bZF07XG4gICAgICAgICAgICAgICAgY29uc3QgbnVtZXJpY2FsID0gKGNnMC5jb3N0IC0gY2cxLmNvc3QpIC8gKDIgKiBlKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhpICsgJywnICsgZCArICc6IGdyYWRjaGVjayBhbmFseXRpYzogJyArIGFuYWx5dGljICsgJyB2cy4gbnVtZXJpY2FsOiAnICsgbnVtZXJpY2FsKTtcbiAgICAgICAgICAgICAgICB0aGlzLllbaV1bZF0gPSB5b2xkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHJldHVybiBjb3N0IGFuZCBncmFkaWVudCwgZ2l2ZW4gYW4gYXJyYW5nZW1lbnRcbiAgICBjb3N0R3JhZChZKSB7XG4gICAgICAgIGNvbnN0IE4gPSB0aGlzLk47XG4gICAgICAgIGNvbnN0IGRpbSA9IHRoaXMuZGltOyAvLyBkaW0gb2Ygb3V0cHV0IHNwYWNlXG4gICAgICAgIGNvbnN0IFAgPSB0aGlzLlA7XG4gICAgICAgIGNvbnN0IHBtdWwgPSB0aGlzLml0ZXIgPCAxMDAgPyA0IDogMTsgLy8gdHJpY2sgdGhhdCBoZWxwcyB3aXRoIGxvY2FsIG9wdGltYVxuICAgICAgICAvLyBjb21wdXRlIGN1cnJlbnQgUSBkaXN0cmlidXRpb24sIHVubm9ybWFsaXplZCBmaXJzdFxuICAgICAgICB0aGlzLnF1QXJyID8/ICh0aGlzLnF1QXJyID0gdGhpcy56ZXJvcyhOICogTikpO1xuICAgICAgICBsZXQgcXN1bSA9IDAuMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRzdW0gPSBuZXcgQXJyYXkoZGltKS5yZWR1Y2UoKHByZXYsIF8sIGQpID0+IHByZXYgKyBNYXRoLnBvdyhZW2ldW2RdIC0gWVtqXVtkXSwgMiksIDApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHF1ID0gMS4wIC8gKDEuMCArIGRzdW0pOyAvLyBTdHVkZW50IHQtZGlzdHJpYnV0aW9uXG4gICAgICAgICAgICAgICAgdGhpcy5xdUFycltpICogTiArIGpdID0gcXU7XG4gICAgICAgICAgICAgICAgdGhpcy5xdUFycltqICogTiArIGldID0gcXU7XG4gICAgICAgICAgICAgICAgcXN1bSArPSAyICogcXU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gbm9ybWFsaXplIFEgZGlzdHJpYnV0aW9uIHRvIHN1bSB0byAxXG4gICAgICAgIC8vY29uc3QgTk4gPSBOICogTjtcbiAgICAgICAgLy9jb25zdCBRID0gdGhpcy56ZXJvcyhOTik7XG4gICAgICAgIGxldCBjb3N0ID0gMC4wO1xuICAgICAgICBjb25zdCBncmFkID0gbmV3IEFycmF5KE4pLmZpbGwobnVsbCkubWFwKCgpID0+IChuZXcgRmxvYXQzMkFycmF5KGRpbSkpLmZpbGwoMC4wKSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICAvLyBjb25zdCBnc3VtID0gbmV3IEZsb2F0MzJBcnJheShkaW0pLmZpbGwoMC4wKTsgLy8gaW5pdCBncmFkIGZvciBwb2ludCBpXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBOOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBRID0gTWF0aC5tYXgodGhpcy5xdUFycltpICogTiArIGpdIC8gcXN1bSwgMWUtMTAwKTtcbiAgICAgICAgICAgICAgICBjb3N0ICs9ICgtUFtpICogTiArIGpdICogTWF0aC5sb2coUSkpICogMjsgLy8gYWNjdW11bGF0ZSBjb3N0ICh0aGUgbm9uLWNvbnN0YW50IHBvcnRpb24gYXQgbGVhc3QuLi4pXG4gICAgICAgICAgICAgICAgY29uc3QgcHJlbXVsdCA9IDQgKiAocG11bCAqIFBbaSAqIE4gKyBqXSAtIFEpICogdGhpcy5xdUFycltpICogTiArIGpdO1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2cocHJlbXVsdCwgUSwgaSwgaik7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCBkaW07IGQrKykge1xuICAgICAgICAgICAgICAgICAgICBncmFkW2ldW2RdICs9IHByZW11bHQgKiAoWVtpXVtkXSAtIFlbal1bZF0pO1xuICAgICAgICAgICAgICAgICAgICBncmFkW2pdW2RdICs9IHByZW11bHQgKiAoWVtqXVtkXSAtIFlbaV1bZF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vZ3JhZFtpXSA9IGdzdW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgY29zdCwgZ3JhZCB9O1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRDMXpibVV1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SjBMWE51WlM1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hQUVVGUExFVkJRVU1zWVVGQllTeEZRVUZETEUxQlFVMHNiMEpCUVc5Q0xFTkJRVU03UVVGSGFrUXNUVUZCVFN4UFFVRlBMRWxCUVVrN1NVRlhVQ3hOUVVGTkxFTkJRVU1zVTBGQll5eEZRVUZGTEU5QlFWazdVVUZEZWtNc1NVRkJTU3hEUVVGRExGTkJRVk03V1VGQlJTeE5RVUZOTEU5QlFVOHNTVUZCU1N4clFrRkJhMElzUTBGQlF6dEpRVU4wUkN4RFFVRkRPMGxCUlVRc1pVRkJaVHRKUVVOUUxFMUJRVTBzUTBGQlF5eEhRVUYxUWl4RlFVRkZMRXRCUVdFc1JVRkJSU3hWUVVGbE8xRkJRM0JGTEVsQlFVa3NSMEZCUnl4RFFVRkRMR05CUVdNc1EwRkJReXhMUVVGTExFTkJRVU03V1VGRE0wSXNUMEZCVHl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03TzFsQlJXeENMRTlCUVU4c1ZVRkJWU3hEUVVGRE8wbEJRM1JDTEVOQlFVTTdTVUZMUXl4WFFVRlhPMUZCUTFRc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTzFsQlEyaENMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzUzBGQlN5eERRVUZETzFsQlEzSkNMRTlCUVU4c1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dFRRVU53UWp0UlFVTkVMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMmhETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTJoRExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU40UWl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTTdXVUZCUlN4UFFVRlBMRWxCUVVrc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF6dFJRVU5vUkN4TlFVRk5MRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRNVU1zU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zYlVSQlFXMUVPMUZCUTNoRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTNCQ0xFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVTm1MRU5CUVVNN1NVRkZSQ3c0UWtGQk9FSTdTVUZEZEVJc1MwRkJTeXhEUVVGRExFVkJRVlVzUlVGQlJTeEhRVUZYTzFGQlEyNURMRTlCUVU4c1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eFhRVUZYTEVWQlFVVXNSMEZCUnl4SFFVRkhMRU5CUVVNN1NVRkRka01zUTBGQlF6dEpRVVZFTERoRVFVRTRSRHRKUVVOMFJDeExRVUZMTEVOQlFVTXNRMEZCVXp0UlFVTnlRaXhKUVVGSkxFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4WFFVRlhMRWxCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVUZGTEU5QlFVOHNTVUZCU1N4WlFVRlpMRVZCUVVVc1EwRkJRenRSUVVOMFJTeEpRVUZKTEU5QlFVOHNWMEZCVnl4TFFVRkxMRmRCUVZjc1JVRkJSVHRaUVVOMFF5d3dRa0ZCTUVJN1dVRkRNVUlzVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGFFTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVN1owSkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOMlF5eFBRVUZQTEVkQlFVY3NRMEZCUXp0VFFVTmFPMkZCUVUwN1dVRkRUQ3hQUVVGUExFbEJRVWtzV1VGQldTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc01FSkJRVEJDTzFOQlEzWkVPMGxCUTBnc1EwRkJRenRKUVVWRUxESkVRVUV5UkR0SlFVTXpSQ3dyUWtGQkswSTdTVUZEZGtJc1QwRkJUeXhEUVVGRExFTkJRVk1zUlVGQlJTeERRVUZUTEVWQlFVVXNRMEZCVlR0UlFVTTVReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eFBRVUZQTEVOQlFVTXNTMEZCU3l4WFFVRlhMRU5CUVVNN1VVRkRkRU1zVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNTVUZCU1N4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU51UlN4SlFVRkpMRWxCUVVrc1JVRkJSVHRaUVVOU0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTzJkQ1FVTjRRaXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTNSRE8yRkJRVTA3V1VGRFRDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMmRDUVVNeFFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlR0dlFrRkRlRUlzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8yRkJRMjVETzFOQlEwWTdVVUZEUkN4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVOWUxFTkJRVU03U1VGRlJDd3dRMEZCTUVNN1NVRkRiRU1zUlVGQlJTeERRVUZETEVWQlFWa3NSVUZCUlN4RlFVRlpPMUZCUTI1RExFMUJRVTBzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRjRUlzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTFZc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU14UWl4TlFVRk5MRWRCUVVjc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEYkVJc1RVRkJUU3hIUVVGSExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTJ4Q0xFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXp0VFFVTm9RenRSUVVORUxFOUJRVThzUTBGQlF5eERRVUZETzBsQlExZ3NRMEZCUXp0SlFVVkVMR2RFUVVGblJEdEpRVU40UXl4SlFVRkpMRU5CUVVNc1EwRkJlVUk3VVVGRGNFTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF6dFJRVU51UWl4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExEUkNRVUUwUWp0UlFVTTFSQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFsQlF6RkNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzJkQ1FVTTVRaXhOUVVGTkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRE9VSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMmRDUVVOd1FpeEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdZVUZEY2tJN1UwRkRSanRSUVVORUxFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyUXNRMEZCUXp0SlFVVk5MRmRCUVZjc1EwRkJReXhQUVVGbE8xRkJRMmhETEVsQlFVa3NUMEZCVHl4SlFVRkpMRWxCUVVrN1dVRkRha0lzVDBGQlR5eEhRVUZITEVOQlFVTTdZVUZEVWl4SlFVRkpMRTlCUVU4c1NVRkJTU3hKUVVGSk8xbEJRM1JDTEU5QlFVOHNSVUZCUlN4RFFVRkRPMkZCUTFBc1NVRkJTU3hQUVVGUExFbEJRVWtzU1VGQlNUdFpRVU4wUWl4UFFVRlBMRVZCUVVVc1EwRkJRenM3V1VGRlZpeFBRVUZQTEVWQlFVVXNRMEZCUXp0SlFVTmtMRU5CUVVNN1NVRkZSQ3h0UTBGQmJVTTdTVUZETTBJc1IwRkJSeXhEUVVGRExFTkJRV1VzUlVGQlJTeFZRVUZyUWl4RlFVRkZMRWRCUVZjc1JVRkJSU3hQUVVGbE8xRkJRek5GTEN0RVFVRXJSRHRSUVVNdlJDdzBRa0ZCTkVJN1VVRkROVUlzY1VWQlFYRkZPMUZCUTNKRkxFMUJRVTBzVDBGQlR5eEhRVUZITEdGQlFXRXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVOMlF5eE5RVUZOTEZOQlFWTXNSMEZCUnl4SlFVRkpMRmxCUVZrc1EwRkJReXhQUVVGUExFZEJRVWNzVDBGQlR5eERRVUZETEVOQlFVTTdVVUZEZEVRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRTlCUVU4c1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU5vUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRTlCUVU4c1JVRkJSU3hEUVVGRExFVkJRVVU3WjBKQlEyeERMRk5CUVZNc1EwRkJReXhEUVVGRExFZEJRVWNzVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJReXhEUVVGRExFZEJRVWNzVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRPVVU3VVVGRFJDeE5RVUZOTEVOQlFVTXNSMEZCUnl4UFFVRlBMRU5CUVVNN1VVRkRiRUlzVFVGQlRTeFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETEdsRFFVRnBRenRSUVVOMlJTeE5RVUZOTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMQ3RDUVVFclFqdFJRVU0xUkN4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc2EwTkJRV3RETzFGQlF6bEVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRE1VSXNTVUZCU1N4UFFVRlBMRWRCUVVjc1EwRkJReXhSUVVGUkxFTkJRVU03V1VGRGVFSXNTVUZCU1N4UFFVRlBMRWRCUVVjc1VVRkJVU3hEUVVGRE8xbEJRM1pDTEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExEWkNRVUUyUWp0WlFVTXpReXhKUVVGSkxFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTTdXVUZEYWtJc1RVRkJUU3hSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUlRORUxEQkVRVUV3UkR0WlFVTXhSQ3g1UkVGQmVVUTdXVUZEZWtRc1NVRkJTU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlExb3NUMEZCVHl4RFFVRkRMRWxCUVVrc1JVRkJSVHRuUWtGRFdpeFhRVUZYTzJkQ1FVVllMSEZFUVVGeFJEdG5Ra0ZEY2tRc1NVRkJTU3hKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETzJkQ1FVTm1MRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3YjBKQlF6RkNMRTFCUVUwc1JVRkJSU3hIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8yOUNRVU5xUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETzI5Q1FVTmlMRWxCUVVrc1NVRkJTU3hGUVVGRkxFTkJRVU03YVVKQlExbzdaMEpCUTBRc2EwTkJRV3RETzJkQ1FVTnNReXhKUVVGSkxFdEJRVXNzUjBGQlJ5eEhRVUZITEVOQlFVTTdaMEpCUTJoQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdiMEpCUXpGQ0xFbEJRVWtzUlVGQlJTeERRVUZETzI5Q1FVTlFMRWxCUVVrc1NVRkJTU3hMUVVGTExFTkJRVU03ZDBKQlExb3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenM3ZDBKQlJWQXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTTdiMEpCUlhSQ0xFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNN2IwSkJRMklzU1VGQlNTeEZRVUZGTEVkQlFVY3NTVUZCU1R0M1FrRkJSU3hMUVVGTExFbEJRVWtzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03YVVKQlF6TkRPMmRDUVVWRUxEaENRVUU0UWp0blFrRkRPVUlzU1VGQlNTeExRVUZMTEVkQlFVY3NUMEZCVHl4RlFVRkZPMjlDUVVOdVFpeHJSRUZCYTBRN2IwSkJRMnhFTEcxRlFVRnRSVHR2UWtGRGJrVXNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExIRkNRVUZ4UWp0dlFrRkRja01zU1VGQlNTeFBRVUZQTEV0QlFVc3NVVUZCVVR0M1FrRkJSU3hKUVVGSkxFZEJRVWNzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXpzN2QwSkJRVTBzU1VGQlNTeEhRVUZITEVOQlFVTXNTVUZCU1N4SFFVRkhMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dHBRa0ZETjBVN2NVSkJRVTA3YjBKQlEwd3NOa05CUVRaRE8yOUNRVU0zUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRE8yOUNRVU5tTEVsQlFVa3NUMEZCVHl4TFFVRkxMRU5CUVVNc1VVRkJVVHQzUWtGQlJTeEpRVUZKTEVkQlFVY3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJRenM3ZDBKQlFVMHNTVUZCU1N4SFFVRkhMRU5CUVVNc1NVRkJTU3hIUVVGSExFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0cFFrRkRPVVU3WjBKQlJVUXNPRVJCUVRoRU8yZENRVU01UkN4SFFVRkhMRVZCUVVVc1EwRkJRenRuUWtGRFRpeEpRVUZKTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhIUVVGSExFOUJRVThzUTBGQlF5eEhRVUZITEVkQlFVYzdiMEpCUVVVc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dG5Ra0ZEYWtRc1NVRkJTU3hIUVVGSExFbEJRVWtzVVVGQlVUdHZRa0ZCUlN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRE8yRkJRMnhETzFsQlJVUXNNRWRCUVRCSE8xbEJRekZITEhsRFFVRjVRenRaUVVONlF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlR0blFrRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVMEZEY0VRc1EwRkJReXd5UWtGQk1rSTdVVUZGTjBJc2QwUkJRWGRFTzFGQlEzaEVMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJReTlDTEUxQlFVMHNSVUZCUlN4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGFrSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVNeFFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlR0blFrRkRlRUlzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzFOQlF6RkZPMUZCUlVRc1QwRkJUeXhKUVVGSkxFTkJRVU03U1VGRFpDeERRVUZETzBsQlJVUXNhMEpCUVd0Q08wbEJRMVlzU1VGQlNTeERRVUZETEVOQlFWTXNTVUZCU1N4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGT1VRc1dVRkJXU3hIUVVGMVFqdFJRV3hOTjBJc1UwRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVTFVTEZkQlFVMHNSMEZCYVVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dFJRV0Y2UXl4elJFRkJjMFE3VVVGRE9VTXNXVUZCVHl4SFFVRkhMRXRCUVVzc1EwRkJRenRSUVVOb1FpeFhRVUZOTEVkQlFVY3NSMEZCUnl4RFFVRkRPMUZCT0V0dVFpeEhRVUZITEVkQlFVY3NSMEZCUnl4SlFVRkpMRVZCUVVVc1EwRkJRenRSUVVOb1FpeEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEZsQlFWa3NSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExIZERRVUYzUXp0UlFVTTVSaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhGUVVGRkxFdEJRVXNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMSE5DUVVGelFqdFJRVU0zUkN4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RlFVRkZMRk5CUVZNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEdkQ1FVRm5RanRSUVVOb1JTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEZGQlFWRXNSVUZCUlN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5d3dRa0ZCTUVJN1NVRkRia1lzUTBGQlF6dEpRVVZFTEhWRVFVRjFSRHRKUVVOMlJDeDFSRUZCZFVRN1NVRkRhRVFzVjBGQlZ5eERRVUZETEVOQlFXOUNPMUZCUTNKRExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRia0lzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF6dFJRVU4wUWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNkVU5CUVhWRExFTkJRVU1zUTBGQlF6dFJRVU0xUkN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNiME5CUVc5RExFTkJRVU1zUTBGQlF6dFJRVU42UkN4TlFVRk5MRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc0swTkJRU3RETzFGQlF6TkZMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRVZCUVVVc1NVRkJTU3hEUVVGRExGVkJRVlVzUlVGQlJTeEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXh0UWtGQmJVSTdVVUZEZGtVc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4clEwRkJhME03VVVGRE9VTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSU3hEUVVGRExFTkJRVU1zWlVGQlpUdEpRVU4wUXl4RFFVRkRPMGxCUlVRc01FUkJRVEJFTzBsQlF6RkVMSE5DUVVGelFqdEpRVU4wUWl3d1JVRkJNRVU3U1VGRGJrVXNXVUZCV1N4RFFVRkRMRU5CUVdVc1JVRkJSU3hQUVVGbE8xRkJRMnhFTEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRGJrSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEhWRFFVRjFReXhEUVVGRExFTkJRVU03VVVGRE5VUXNORU5CUVRSRE8xRkJRelZETEhkRFFVRjNRenRSUVVONFF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVOQlFVTTdVVUZEY0VNc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zVlVGQlZTeEZRVUZGTEVsQlFVa3NSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVOeVJDeFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVOQlFVTTdVVUZEZGtNc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eFBRVUZQTEVOQlFVTTdVVUZEYWtJc1NVRkJTU3hEUVVGRExGbEJRVmtzUlVGQlJTeERRVUZETEVOQlFVTXNaVUZCWlR0SlFVTjBReXhEUVVGRE8wbEJSVVFzZVVOQlFYbERPMGxCUTJ4RExGbEJRVms3VVVGRGFrSXNiME5CUVc5RE8xRkJRM0JETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEdWQlFXVTdVVUZEZUVRc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExEWkVRVUUyUkR0UlFVTXZSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zZFVKQlFYVkNPMUZCUTNwRkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGRlJDeHhRMEZCY1VNN1NVRkRPVUlzVjBGQlZ6dFJRVU5vUWl4UFFVRlBMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGFFSXNRMEZCUXp0SlFVVkVMR2xGUVVGcFJUdEpRVU14UkN4SlFVRkpPMUZCUTFRc1NVRkJTU3hEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZEWml4TlFVRk5MRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEycENMRTFCUVUwc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zYjBKQlFXOUNPMUZCUTNSRUxFMUJRVTBzU1VGQlNTeEhRVUZITEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNN1VVRkRja0lzVFVGQlRTeEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJRenRSUVVWeVFpeDNRa0ZCZDBJN1VVRkRlRUlzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEYmtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU14UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdG5Ra0ZEYWtNc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU4yUWl4TlFVRk5MRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU0zUWl4TlFVRk5MRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVVZvUXl4elFrRkJjMEk3WjBKQlEzUkNMRWxCUVVrc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRWRCUVVjc1EwRkJRenRuUWtGRE9VVXNTVUZCU1N4UFFVRlBMRWRCUVVjc1NVRkJTVHR2UWtGQlJTeFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1VVRkJVVHRuUWtGRE5VTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4UFFVRlBMRU5CUVVNc1EwRkJReXh6UWtGQmMwSTdaMEpCUld4RUxHdERRVUZyUXp0blFrRkRiRU1zVFVGQlRTeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRE8yZENRVU16UXl4TlFVRk5MRTFCUVUwc1IwRkJSeXhOUVVGTkxFZEJRVWNzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRGJFVXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJReXcwUWtGQk5FSTdaMEpCUlhaRUxGRkJRVkU3WjBKQlExSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4TlFVRk5MRU5CUVVNN1owSkJSWFpDTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zT0VOQlFUaERPMkZCUTNwRk8xTkJRMFk3VVVGRlJDdzRRa0ZCT0VJN1VVRkRPVUlzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTXhRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVTdaMEpCUXk5Q0xFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRUUVVOb1F6dFJRVVZFTERaRlFVRTJSVHRSUVVNM1JTeFBRVUZQTEVsQlFVa3NRMEZCUXl4RFFVRkRMSE5DUVVGelFqdEpRVU55UXl4RFFVRkRPMGxCUlVRc1owTkJRV2RETzBsQlEzcENMRk5CUVZNN1VVRkRaQ3hOUVVGTkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUldwQ0xFMUJRVTBzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNiMEpCUVc5Q08xRkJRM1JFTEhWQ1FVRjFRanRSUVVOMlFpeE5RVUZOTEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRE8xRkJSWEpDTEUxQlFVMHNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVObUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZETVVJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdaMEpCUTJwRExFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUlRGQ0xFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkRlRUlzVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUld4RExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkRlRUlzVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUld4RExFMUJRVTBzVVVGQlVTeEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZETlVJc1RVRkJUU3hUUVVGVExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4SFFVRkhMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRGJFUXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNSMEZCUnl4M1FrRkJkMElzUjBGQlJ5eFJRVUZSTEVkQlFVY3NhMEpCUVd0Q0xFZEJRVWNzVTBGQlV5eERRVUZETEVOQlFVTTdaMEpCUldoSExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETzJGQlEzSkNPMU5CUTBZN1NVRkRTQ3hEUVVGRE8wbEJSMFFzYVVSQlFXbEVPMGxCUXpGRExGRkJRVkVzUTBGQlF5eERRVUZoTzFGQlF6TkNMRTFCUVUwc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYWtJc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMSE5DUVVGelFqdFJRVU0xUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJXcENMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMSEZEUVVGeFF6dFJRVVV6UlN4eFJFRkJjVVE3VVVGRGNrUXNTVUZCU1N4RFFVRkRMRXRCUVVzc1MwRkJWaXhKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZMTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZETzFGQlEycERMRWxCUVVrc1NVRkJTU3hIUVVGSExFZEJRVWNzUTBGQlF6dFJRVU5tTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRNVUlzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRemxDTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVNM1JpeE5RVUZOTEVWQlFVVXNSMEZCUnl4SFFVRkhMRWRCUVVjc1EwRkJReXhIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4NVFrRkJlVUk3WjBKQlEzaEVMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03WjBKQlF6TkNMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03WjBKQlF6TkNMRWxCUVVrc1NVRkJTU3hEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETzJGQlEyaENPMU5CUTBZN1VVRkRSQ3gxUTBGQmRVTTdVVUZEZGtNc2JVSkJRVzFDTzFGQlEyNUNMREpDUVVFeVFqdFJRVU16UWl4SlFVRkpMRWxCUVVrc1IwRkJSeXhIUVVGSExFTkJRVU03VVVGRFppeE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNTVUZCU1N4WlFVRlpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOc1JpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMWxCUXpGQ0xIbEZRVUY1UlR0WlFVTjZSU3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0blFrRkRPVUlzVFVGQlRTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMmRDUVVONlJDeEpRVUZKTEVsQlFVa3NRMEZCUXl4RFFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXg1UkVGQmVVUTdaMEpCUTNKSExFMUJRVTBzVDBGQlR5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTNSRkxHZERRVUZuUXp0blFrRkRhRU1zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0dlFrRkROVUlzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFOUJRVThzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZETlVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRTlCUVU4c1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRwUWtGRE4wTTdZVUZEUmp0WlFVTkVMR2xDUVVGcFFqdFRRVU5zUWp0UlFVVkVMRTlCUVU4c1JVRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZETEVOQlFVTTdTVUZEZEVJc1EwRkJRenREUVVOS0lpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIdGtiVXhwYm1WaGNrbHVaR1Y0ZlNCbWNtOXRJQ2N1TGk5a2FYTjBZVzVqWlMxdFlYUnlhWGduTzF4dVhHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCVVUwNUZJSHRjYmlBZ2NISnBkbUYwWlNCd1pYSndiR1Y0YVhSNU9pQnVkVzFpWlhJN1hHNGdJSEJ5YVhaaGRHVWdaR2x0T2lCdWRXMWlaWEk3WEc0Z0lIQnlhWFpoZEdVZ1pYQnphV3h2YmpvZ2JuVnRZbVZ5TzF4dUlDQndjbWwyWVhSbElHbDBaWElnUFNBd08xeHVJQ0J3Y21sMllYUmxJRTRoT2lCdWRXMWlaWEk3WEc0Z0lIQnlhWFpoZEdVZ1VDRTZJRVpzYjJGME16SkJjbkpoZVR0Y2JpQWdjSEpwZG1GMFpTQlpJVG9nWVc1NVcxMDdYRzRnSUhCeWFYWmhkR1VnWjJGcGJuTWhPaUJoYm5sYlhUdGNiaUFnY0hKcGRtRjBaU0I1YzNSbGNDRTZJR0Z1ZVZ0ZE8xeHVJQ0J3Y21sMllYUmxJSEpoYm1SdmJUb2dLQ2tnUFQ0Z2JuVnRZbVZ5SUQwZ1RXRjBhQzV5WVc1a2IyMDdYRzRnSUhCeWFYWmhkR1VnWVhOelpYSjBLR052Ym1ScGRHbHZiam9nWVc1NUxDQnRaWE56WVdkbE9pQmhibmtwSUh0Y2JpQWdJQ0JwWmlBb0lXTnZibVJwZEdsdmJpa2dkR2h5YjNjZ2JXVnpjMkZuWlNCOGZDQW5RWE56WlhKMGFXOXVJR1poYVd4bFpDYzdYRzRnSUgxY2JseHVJQ0F2THlCemVXNTBZWGdnYzNWbllYSmNiaUFnY0hKcGRtRjBaU0JuWlhSdmNIUW9iM0IwT2lCN1cxODZJSE4wY21sdVoxMDZJR0Z1ZVgwc0lHWnBaV3hrT2lCemRISnBibWNzSUdSbFptRjFiSFIyWVd3NklHRnVlU2tnZTF4dUlDQWdJR2xtSUNodmNIUXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb1ptbGxiR1FwS1Z4dUlDQWdJQ0FnY21WMGRYSnVJRzl3ZEZ0bWFXVnNaRjA3WEc0Z0lDQWdaV3h6WlZ4dUlDQWdJQ0FnY21WMGRYSnVJR1JsWm1GMWJIUjJZV3c3WEc0Z0lIMWNibHh1SUNBZ0lDOHZJSEpsZEhWeWJpQXdJRzFsWVc0Z2RXNXBkQ0J6ZEdGdVpHRnlaQ0JrWlhacFlYUnBiMjRnY21GdVpHOXRJRzUxYldKbGNseHVJQ0FnSUhCeWFYWmhkR1VnY21WMGRYSnVWaUE5SUdaaGJITmxPMXh1SUNBZ0lIQnlhWFpoZEdVZ2RsWmhiSFZsSUQwZ01DNHdPMXh1SUNBZ0lHZGhkWE56VW1GdVpHOXRLQ2s2SUc1MWJXSmxjaUI3WEc0Z0lDQWdJQ0JwWmlBb2RHaHBjeTV5WlhSMWNtNVdLU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVjbVYwZFhKdVZpQTlJR1poYkhObE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTUyVm1Gc2RXVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQmpiMjV6ZENCMUlEMGdNaUFxSUhSb2FYTXVjbUZ1Wkc5dEtDa2dMU0F4TzF4dUlDQWdJQ0FnWTI5dWMzUWdkaUE5SURJZ0tpQjBhR2x6TG5KaGJtUnZiU2dwSUMwZ01UdGNiaUFnSUNBZ0lHTnZibk4wSUhJZ1BTQjFJQ29nZFNBcklIWWdLaUIyTzF4dUlDQWdJQ0FnYVdZZ0tISWdQVDA5SURBZ2ZId2djaUErSURFcElISmxkSFZ5YmlCMGFHbHpMbWRoZFhOelVtRnVaRzl0S0NrN1hHNGdJQ0FnSUNCamIyNXpkQ0JqSUQwZ1RXRjBhQzV6Y1hKMEtDMHlJQ29nVFdGMGFDNXNiMmNvY2lrZ0x5QnlLVHRjYmlBZ0lDQWdJSFJvYVhNdWRsWmhiSFZsSUQwZ2RpQXFJR003SUM4dklHTmhZMmhsSUhSb2FYTWdabTl5SUc1bGVIUWdablZ1WTNScGIyNGdZMkZzYkNCbWIzSWdaV1ptYVdOcFpXNWplVnh1SUNBZ0lDQWdkR2hwY3k1eVpYUjFjbTVXSUQwZ2RISjFaVHRjYmlBZ0lDQWdJSEpsZEhWeWJpQjFJQ29nWXp0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2THlCeVpYUjFjbTRnY21GdVpHOXRJRzV2Y20xaGJDQnVkVzFpWlhKY2JpQWdJQ0J3Y21sMllYUmxJSEpoYm1SdUtHMTFPaUJ1ZFcxaVpYSXNJSE4wWkRvZ2JuVnRZbVZ5S1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYlhVZ0t5QjBhR2x6TG1kaGRYTnpVbUZ1Wkc5dEtDa2dLaUJ6ZEdRN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z2RYUnBiR2wwYVhSNUlIUm9ZWFFnWTNKbFlYUmxjeUJqYjI1MGFXZDFiM1Z6SUhabFkzUnZjaUJ2WmlCNlpYSnZjeUJ2WmlCemFYcGxJRzVjYmlBZ0lDQndjbWwyWVhSbElIcGxjbTl6S0c0NklHNTFiV0psY2lrZ2UxeHVJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQW9iaWtnUFQwOUlDZDFibVJsWm1sdVpXUW5JSHg4SUdselRtRk9LRzRwS1NCeVpYUjFjbTRnYm1WM0lFWnNiMkYwTXpKQmNuSmhlU2dwTzF4dUlDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCQmNuSmhlVUoxWm1abGNpQTlQVDBnSjNWdVpHVm1hVzVsWkNjcElIdGNiaUFnSUNBZ0lDQWdMeThnYkdGamEybHVaeUJpY205M2MyVnlJSE4xY0hCdmNuUmNiaUFnSUNBZ0lDQWdZMjl1YzNRZ1lYSnlJRDBnYm1WM0lFWnNiMkYwTXpKQmNuSmhlU2h1S1R0Y2JpQWdJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnVPeUJwS3lzcElHRnljbHRwWFNBOUlEQTdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmhjbkk3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdibVYzSUVac2IyRjBNekpCY25KaGVTaHVLVHNnTHk4Z2RIbHdaV1FnWVhKeVlYbHpJR0Z5WlNCbVlYTjBaWEpjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUIxZEdsc2FYUjVJSFJvWVhRZ2NtVjBkWEp1Y3lBeVpDQmhjbkpoZVNCbWFXeHNaV1FnZDJsMGFDQnlZVzVrYjIwZ2JuVnRZbVZ5YzF4dUlDQWdJQzh2SUc5eUlIZHBkR2dnZG1Gc2RXVWdjeXdnYVdZZ2NISnZkbWxrWldSY2JpQWdJQ0J3Y21sMllYUmxJSEpoYm1SdU1tUW9iam9nYm5WdFltVnlMQ0JrT2lCdWRXMWlaWElzSUhNL09pQnVkVzFpWlhJcElIdGNiaUFnSUNBZ0lHTnZibk4wSUhWelpYTWdQU0IwZVhCbGIyWWdjeUFoUFQwZ0ozVnVaR1ZtYVc1bFpDYzdYRzRnSUNBZ0lDQmpiMjV6ZENCNElEMGdLRzVsZHlCQmNuSmhlU2h1S1NrdVptbHNiQ2h1ZFd4c0tTNXRZWEFvS0NrZ1BUNGdibVYzSUVac2IyRjBNekpCY25KaGVTaGtLU2s3WEc0Z0lDQWdJQ0JwWmlBb2RYTmxjeWtnZTF4dUlDQWdJQ0FnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHNDdJR2tyS3lsY2JpQWdJQ0FnSUNBZ0lDQjRXMmxkSUQwZ2JtVjNJRVpzYjJGME16SkJjbkpoZVNoa0tTNW1hV3hzS0hNcE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnVPeUJwS3lzcElIdGNiaUFnSUNBZ0lDQWdJQ0JtYjNJZ0tHeGxkQ0JxSUQwZ01Ec2dhaUE4SUdRN0lHb3JLeWxjYmlBZ0lDQWdJQ0FnSUNBZ0lIaGJhVjFiYWwwZ1BTQjBhR2x6TG5KaGJtUnVLREF1TUN3Z01XVXROQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhKbGRIVnliaUI0TzF4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUdOdmJYQjFkR1VnVERJZ1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCMGQyOGdkbVZqZEc5eWMxeHVJQ0FnSUhCeWFYWmhkR1VnYkRJb2VERTZJRzUxYldKbGNsdGRMQ0I0TWpvZ2JuVnRZbVZ5VzEwcElIdGNiaUFnSUNBZ0lHTnZibk4wSUVRZ1BTQjRNUzVzWlc1bmRHZzdYRzRnSUNBZ0lDQnNaWFFnWkNBOUlEQTdYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJRVE3SUdrckt5a2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQjRNV2tnUFNCNE1WdHBYVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdlREpwSUQwZ2VESmJhVjA3WEc0Z0lDQWdJQ0FnSUdRZ0t6MGdLSGd4YVNBdElIZ3lhU2tnS2lBb2VERnBJQzBnZURKcEtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lISmxkSFZ5YmlCa08xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklHTnZiWEIxZEdVZ2NHRnBjbmRwYzJVZ1pHbHpkR0Z1WTJVZ2FXNGdZV3hzSUhabFkzUnZjbk1nYVc0Z1dGeHVJQ0FnSUhCeWFYWmhkR1VnZUhSdlpDaFlPaUJCY25KaGVUd2dRWEp5WVhrOGJuVnRZbVZ5UGlBK0tTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCT0lEMGdXQzVzWlc1bmRHZzdYRzRnSUNBZ0lDQmpiMjV6ZENCa2FYTjBJRDBnZEdocGN5NTZaWEp2Y3loT0lDb2dUaWs3SUM4dklHRnNiRzlqWVhSbElHTnZiblJwWjNWdmRYTWdZWEp5WVhsY2JpQWdJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z1Rqc2dhU3NyS1NCN1hHNGdJQ0FnSUNBZ0lHWnZjaUFvYkdWMElHb2dQU0JwSUNzZ01Uc2dhaUE4SUU0N0lHb3JLeWtnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUdRZ1BTQjBhR2x6TG13eUtGaGJhVjBzSUZoYmFsMHBPMXh1SUNBZ0lDQWdJQ0FnSUdScGMzUmJhU0FxSUU0Z0t5QnFYU0E5SUdRN1hHNGdJQ0FnSUNBZ0lDQWdaR2x6ZEZ0cUlDb2dUaUFySUdsZElEMGdaRHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnY21WMGRYSnVJR1JwYzNRN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY0hWaWJHbGpJR2RsZEVsMFpYSlRhWHBsS0hKdmQxTnBlbVU2SUc1MWJXSmxjaWtnZTF4dUlDQWdJQ0FnYVdZZ0tISnZkMU5wZW1VZ1BEMGdNakF3TUNsY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SURFd01EdGNiaUFnSUNBZ0lHVnNjMlVnYVdZZ0tISnZkMU5wZW1VZ1BEMGdNekF3TUNsY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SURrd08xeHVJQ0FnSUNBZ1pXeHpaU0JwWmlBb2NtOTNVMmw2WlNBOFBTQTFNREF3S1Z4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnT0RBN1hHNGdJQ0FnSUNCbGJITmxYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQTNNRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJqYjIxd2RYUmxJQ2h3WDN0cGZHcDlJQ3NnY0Y5N2FueHBmU2t2S0RKdUtWeHVJQ0FnSUhCeWFYWmhkR1VnWkRKd0tFUTZJRVpzYjJGME16SkJjbkpoZVN3Z2NHVnljR3hsZUdsMGVUb2diblZ0WW1WeUxDQjBiMnc2SUc1MWJXSmxjaXdnY205M1UybDZaVG9nYm5WdFltVnlLU0I3WEc0Z0lDQWdJQ0F2THlCamIyNXpkQ0J1WmlBOUlFMWhkR2d1YzNGeWRDaEVMbXhsYm1kMGFDazdJQzh2SUhSb2FYTWdZbVYwZEdWeUlHSmxJR0Z1SUdsdWRHVm5aWEpjYmlBZ0lDQWdJQzh2SUdOdmJuTjBJRzRnUFNCTllYUm9MbVpzYjI5eUtHNW1LVHRjYmlBZ0lDQWdJQzh2SUhSb2FYTXVZWE56WlhKMEtHNGdQVDA5SUc1bUxDQW5SQ0J6YUc5MWJHUWdhR0YyWlNCemNYVmhjbVVnYm5WdFltVnlJRzltSUdWc1pXMWxiblJ6TGljcE8xeHVJQ0FnSUNBZ1kyOXVjM1FnYVc1a1pYaGxjaUE5SUdSdFRHbHVaV0Z5U1c1a1pYZ29jbTkzVTJsNlpTazdYRzRnSUNBZ0lDQmpiMjV6ZENCa2FYTjBZVzVqWlhNZ1BTQnVaWGNnUm14dllYUXpNa0Z5Y21GNUtISnZkMU5wZW1VZ0tpQnliM2RUYVhwbEtUdGNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2djbTkzVTJsNlpUc2dhU3NyS1NCN1hHNGdJQ0FnSUNBZ0lHWnZjaUFvYkdWMElHb2dQU0JwSUNzZ01Uc2dhaUE4SUhKdmQxTnBlbVU3SUdvckt5bGNiaUFnSUNBZ0lDQWdJQ0JrYVhOMFlXNWpaWE5iYVNBcUlISnZkMU5wZW1VZ0t5QnFYU0E5SUdScGMzUmhibU5sYzF0cUlDb2djbTkzVTJsNlpTQXJJR2xkSUQwZ1JGdHBibVJsZUdWeUtHa3NJR29wWFR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdOdmJuTjBJRzRnUFNCeWIzZFRhWHBsTzF4dUlDQWdJQ0FnWTI5dWMzUWdhRlJoY21kbGRDQTlJRTFoZEdndWJHOW5LSEJsY25Cc1pYaHBkSGtwT3lBdkx5QjBZWEpuWlhRZ1pXNTBjbTl3ZVNCdlppQmthWE4wY21saWRYUnBiMjVjYmlBZ0lDQWdJR052Ym5OMElGQWdQU0IwYUdsekxucGxjbTl6S0c0Z0tpQnVLVHNnTHk4Z2RHVnRjRzl5WVhKNUlIQnliMkpoWW1sc2FYUjVJRzFoZEhKcGVGeHVJQ0FnSUNBZ1kyOXVjM1FnY0hKdmR5QTlJSFJvYVhNdWVtVnliM01vYmlrN0lDOHZJR0VnZEdWdGNHOXlZWEo1SUhOMGIzSmhaMlVnWTI5dGNHRnlkRzFsYm5SY2JpQWdJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2Jqc2dhU3NyS1NCN1hHNGdJQ0FnSUNBZ0lHeGxkQ0JpWlhSaGJXbHVJRDBnTFVsdVptbHVhWFI1TzF4dUlDQWdJQ0FnSUNCc1pYUWdZbVYwWVcxaGVDQTlJRWx1Wm1sdWFYUjVPMXh1SUNBZ0lDQWdJQ0JzWlhRZ1ltVjBZU0E5SURFN0lDOHZJR2x1YVhScFlXd2dkbUZzZFdVZ2IyWWdjSEpsWTJsemFXOXVYRzRnSUNBZ0lDQWdJR3hsZENCa2IyNWxJRDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQWdJR052Ym5OMElHMWhlSFJ5YVdWeklEMGdUV0YwYUM1bWJHOXZjaWgwYUdsekxtZGxkRWwwWlhKVGFYcGxLSEp2ZDFOcGVtVXBJQzhnTlNrN1hHNWNiaUFnSUNBZ0lDQWdMeThnY0dWeVptOXliU0JpYVc1aGNua2djMlZoY21Ob0lIUnZJR1pwYm1RZ1lTQnpkV2wwWVdKc1pTQndjbVZqYVhOcGIyNGdZbVYwWVZ4dUlDQWdJQ0FnSUNBdkx5QnpieUIwYUdGMElIUm9aU0JsYm5SeWIzQjVJRzltSUhSb1pTQmthWE4wY21saWRYUnBiMjRnYVhNZ1lYQndjbTl3Y21saGRHVmNiaUFnSUNBZ0lDQWdiR1YwSUc1MWJTQTlJREE3WEc0Z0lDQWdJQ0FnSUhkb2FXeGxJQ2doWkc5dVpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUM4dlpHVmlkV2RuWlhJN1hHNWNiaUFnSUNBZ0lDQWdJQ0F2THlCamIyMXdkWFJsSUdWdWRISnZjSGtnWVc1a0lHdGxjbTVsYkNCeWIzY2dkMmwwYUNCaVpYUmhJSEJ5WldOcGMybHZibHh1SUNBZ0lDQWdJQ0FnSUd4bGRDQndjM1Z0SUQwZ01DNHdPMXh1SUNBZ0lDQWdJQ0FnSUdadmNpQW9iR1YwSUdvZ1BTQXdPeUJxSUR3Z2Jqc2dhaXNyS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQndhaUE5SUdrZ1BUMDlJR29nUHlBd0lEb2dUV0YwYUM1bGVIQW9MU0JrYVhOMFlXNWpaWE5iYVNBcUlHNGdLeUJxWFNBcUlHSmxkR0VwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdjSEp2ZDF0cVhTQTlJSEJxTzF4dUlDQWdJQ0FnSUNBZ0lDQWdjSE4xYlNBclBTQndhanRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdMeThnYm05eWJXRnNhWHBsSUhBZ1lXNWtJR052YlhCMWRHVWdaVzUwY205d2VWeHVJQ0FnSUNBZ0lDQWdJR3hsZENCdVNHVnlaU0E5SURBdU1EdGNiaUFnSUNBZ0lDQWdJQ0JtYjNJZ0tHeGxkQ0JxSUQwZ01Ec2dhaUE4SUc0N0lHb3JLeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdiR1YwSUhCcU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIQnpkVzBnUFQwOUlEQXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lIQnFJRDBnTUR0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJWY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnY0dvZ1BTQndjbTkzVzJwZElDOGdjSE4xYlR0Y2JseHVJQ0FnSUNBZ0lDQWdJQ0FnY0hKdmQxdHFYU0E5SUhCcU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIQnFJRDRnTVdVdE55a2dia2hsY21VZ0xUMGdjR29nS2lCTllYUm9MbXh2Wnlod2FpazdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lDQWdMeThnWVdScWRYTjBJR0psZEdFZ1ltRnpaV1FnYjI0Z2NtVnpkV3gwWEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLRzVJWlhKbElENGdhRlJoY21kbGRDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdaVzUwY205d2VTQjNZWE1nZEc5dklHaHBaMmdnS0dScGMzUnlhV0oxZEdsdmJpQjBiMjhnWkdsbVpuVnpaU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJSE52SUhkbElHNWxaV1FnZEc4Z2FXNWpjbVZoYzJVZ2RHaGxJSEJ5WldOcGMybHZiaUJtYjNJZ2JXOXlaU0J3WldGcmVTQmthWE4wY21saWRYUnBiMjVjYmlBZ0lDQWdJQ0FnSUNBZ0lHSmxkR0Z0YVc0Z1BTQmlaWFJoT3lBdkx5QnRiM1psSUhWd0lIUm9aU0JpYjNWdVpITmNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaGlaWFJoYldGNElEMDlQU0JKYm1acGJtbDBlU2tnWW1WMFlTQTlJR0psZEdFZ0tpQXlPeUJsYkhObElHSmxkR0VnUFNBb1ltVjBZU0FySUdKbGRHRnRZWGdwSUM4Z01qdGNiaUFnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdZMjl1ZG1WeWMyVWdZMkZ6WlM0Z2JXRnJaU0JrYVhOMGNuVmlkR2x2YmlCc1pYTnpJSEJsWVd0NVhHNGdJQ0FnSUNBZ0lDQWdJQ0JpWlhSaGJXRjRJRDBnWW1WMFlUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaGlaWFJoYldsdUlEMDlQU0F0U1c1bWFXNXBkSGtwSUdKbGRHRWdQU0JpWlhSaElDOGdNanNnWld4elpTQmlaWFJoSUQwZ0tHSmxkR0VnS3lCaVpYUmhiV2x1S1NBdklESTdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lDQWdMeThnYzNSdmNIQnBibWNnWTI5dVpHbDBhVzl1Y3pvZ2RHOXZJRzFoYm5rZ2RISnBaWE1nYjNJZ1oyOTBJR0VnWjI5dlpDQndjbVZqYVhOcGIyNWNiaUFnSUNBZ0lDQWdJQ0J1ZFcwckt6dGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb1RXRjBhQzVoWW5Nb2JraGxjbVVnTFNCb1ZHRnlaMlYwS1NBOElIUnZiQ2tnWkc5dVpTQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0c1MWJTQStQU0J0WVhoMGNtbGxjeWtnWkc5dVpTQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0F2THlCamIyNXpiMnhsTG14dlp5Z25aR0YwWVNCd2IybHVkQ0FuSUNzZ2FTQXJJQ2NnWjJWMGN5QndjbVZqYVhOcGIyNGdKeUFySUdKbGRHRWdLeUFuSUdGbWRHVnlJQ2NnS3lCdWRXMGdLeUFuSUdKcGJtRnllU0J6WldGeVkyZ2djM1JsY0hNdUp5azdYRzRnSUNBZ0lDQWdJQzh2SUdOdmNIa2diM1psY2lCMGFHVWdabWx1WVd3Z2NISnZkeUIwYnlCUUlHRjBJSEp2ZHlCcFhHNGdJQ0FnSUNBZ0lHWnZjaUFvYkdWMElHb2dQU0F3T3lCcUlEd2dianNnYWlzcktTQlFXMmtnS2lCdUlDc2dhbDBnUFNCd2NtOTNXMnBkTzF4dUlDQWdJQ0FnZlNBdkx5QmxibVFnYkc5dmNDQnZkbVZ5SUdWNFlXMXdiR1Z6SUdsY2JseHVJQ0FnSUNBZ0x5OGdjM2x0YldWMGNtbDZaU0JRSUdGdVpDQnViM0p0WVd4cGVtVWdhWFFnZEc4Z2MzVnRJSFJ2SURFZ2IzWmxjaUJoYkd3Z2FXcGNiaUFnSUNBZ0lHTnZibk4wSUhCUGRYUWdQU0IwYUdsekxucGxjbTl6S0c0Z0tpQnVLVHRjYmlBZ0lDQWdJR052Ym5OMElFNHlJRDBnYmlBcUlESTdYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJRzQ3SUdrckt5a2dlMXh1SUNBZ0lDQWdJQ0JtYjNJZ0tHeGxkQ0JxSUQwZ01Ec2dhaUE4SUc0N0lHb3JLeWxjYmlBZ0lDQWdJQ0FnSUNCd1QzVjBXMmtnS2lCdUlDc2dhbDBnUFNCTllYUm9MbTFoZUNnb1VGdHBJQ29nYmlBcklHcGRJQ3NnVUZ0cUlDb2diaUFySUdsZEtTQXZJRTR5TENBeFpTMHhNREFwTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCeVpYUjFjbTRnY0U5MWREdGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5Qm9aV3h3WlhJZ1puVnVZM1JwYjI1Y2JpQWdJQ0J3Y21sMllYUmxJSE5wWjI0b2VEb2diblZ0WW1WeUtTQjdJSEpsZEhWeWJpQjRJRDRnTUNBL0lERWdPaUI0SUR3Z01DQS9JQzB4SURvZ01Ec2dmVnh1WEc0Z0lDQWdZMjl1YzNSeWRXTjBiM0lvYjNCME9pQjdXMTg2SUhOMGNtbHVaMTA2SUdGdWVYMHBJSHRjYmlBZ0lDQWdJRzl3ZENBOUlHOXdkQ0I4ZkNCN2ZUdGNiaUFnSUNBZ0lIUm9hWE11Y0dWeWNHeGxlR2wwZVNBOUlIUm9hWE11WjJWMGIzQjBLRzl3ZEN3Z0ozQmxjbkJzWlhocGRIa25MQ0F6TUNrN0lDOHZJR1ZtWm1WamRHbDJaU0J1ZFcxaVpYSWdiMllnYm1WaGNtVnpkQ0J1WldsbmFHSnZjbk5jYmlBZ0lDQWdJSFJvYVhNdVpHbHRJRDBnZEdocGN5NW5aWFJ2Y0hRb2IzQjBMQ0FuWkdsdEp5d2dNaWs3SUM4dklHSjVJR1JsWm1GMWJIUWdNaTFFSUhSVFRrVmNiaUFnSUNBZ0lIUm9hWE11WlhCemFXeHZiaUE5SUhSb2FYTXVaMlYwYjNCMEtHOXdkQ3dnSjJWd2MybHNiMjRuTENBeE1DazdJQzh2SUd4bFlYSnVhVzVuSUhKaGRHVmNiaUFnSUNBZ0lIUm9hWE11Y21GdVpHOXRJRDBnZEdocGN5NW5aWFJ2Y0hRb2IzQjBMQ0FuY21GdVpHOXRKeXdnVFdGMGFDNXlZVzVrYjIwcE95QXZMeUJ5WVc1a2IyMGdiblZ0WW1WeUlHZGxibVZ5WVhSdmNseHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklIUm9hWE1nWm5WdVkzUnBiMjRnZEdGclpYTWdZU0J6WlhRZ2IyWWdhR2xuYUMxa2FXMWxibk5wYjI1aGJDQndiMmx1ZEhOY2JpQWdJQ0F2THlCaGJtUWdZM0psWVhSbGN5QnRZWFJ5YVhnZ1VDQm1jbTl0SUhSb1pXMGdkWE5wYm1jZ1oyRjFjM05wWVc0Z2EyVnlibVZzWEc0Z0lDQWdjSFZpYkdsaklHbHVhWFJFWVhSaFVtRjNLRmc2SUVGeWNtRjVQRUZ5Y21GNVBHRnVlVDQrS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JPSUQwZ1dDNXNaVzVuZEdnN1hHNGdJQ0FnSUNCamIyNXpkQ0JFSUQwZ1dGc3dYUzVzWlc1bmRHZzdYRzRnSUNBZ0lDQjBhR2x6TG1GemMyVnlkQ2hPSUQ0Z01Dd2dKeUJZSUdseklHVnRjSFI1UHlCWmIzVWdiWFZ6ZENCb1lYWmxJSE52YldVZ1pHRjBZU0VuS1R0Y2JpQWdJQ0FnSUhSb2FYTXVZWE56WlhKMEtFUWdQaUF3TENBbklGaGJNRjBnYVhNZ1pXMXdkSGsvSUZkb1pYSmxJR2x6SUhSb1pTQmtZWFJoUHljcE8xeHVJQ0FnSUNBZ1kyOXVjM1FnWkdsemRITWdQU0IwYUdsekxuaDBiMlFvV0NrN0lDOHZJR052Ym5abGNuUWdXQ0IwYnlCa2FYTjBZVzVqWlhNZ2RYTnBibWNnWjJGMWMzTnBZVzRnYTJWeWJtVnNYRzRnSUNBZ0lDQjBhR2x6TGxBZ1BTQjBhR2x6TG1ReWNDaGthWE4wY3l3Z2RHaHBjeTV3WlhKd2JHVjRhWFI1TENBeFpTMDBMQ0JFS1RzZ0x5OGdZWFIwWVdOb0lIUnZJRzlpYW1WamRGeHVJQ0FnSUNBZ2RHaHBjeTVPSUQwZ1Rqc2dMeThnWW1GamF5QjFjQ0IwYUdVZ2MybDZaU0J2WmlCMGFHVWdaR0YwWVhObGRGeHVJQ0FnSUNBZ2RHaHBjeTVwYm1sMFUyOXNkWFJwYjI0b0tUc2dMeThnY21WbWNtVnphQ0IwYUdselhHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z2RHaHBjeUJtZFc1amRHbHZiaUIwWVd0bGN5QmhJR2RwZG1WdUlHUnBjM1JoYm1ObElHMWhkSEpwZUNCaGJtUWdZM0psWVhSbGMxeHVJQ0FnSUM4dklHMWhkSEpwZUNCUUlHWnliMjBnZEdobGJTNWNiaUFnSUNBdkx5QkVJR2x6SUdGemMzVnRaV1FnZEc4Z1ltVWdjSEp2ZG1sa1pXUWdZWE1nWVNCc2FYTjBJRzltSUd4cGMzUnpMQ0JoYm1RZ2MyaHZkV3hrSUdKbElITjViVzFsZEhKcFkxeHVJQ0FnSUhCMVlteHBZeUJwYm1sMFJHRjBZVVJwYzNRb1JEb2dSbXh2WVhRek1rRnljbUY1TENCeWIzZFRhWHBsT2lCdWRXMWlaWElwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJRTRnUFNCRUxteGxibWQwYUR0Y2JpQWdJQ0FnSUhSb2FYTXVZWE56WlhKMEtFNGdQaUF3TENBbklGZ2dhWE1nWlcxd2RIay9JRmx2ZFNCdGRYTjBJR2hoZG1VZ2MyOXRaU0JrWVhSaElTY3BPMXh1SUNBZ0lDQWdMeThnWTI5dWRtVnlkQ0JFSUhSdklHRWdLR1poYzNRcElIUjVjR1ZrSUdGeWNtRjVJSFpsY25OcGIyNWNiaUFnSUNBZ0lDOHZJR1JwYzNSekxtWnZja1ZoWTJnb0tHUXBJRDArSUdOdmJuTnZiR1V1Ykc5bktHUXBLVHRjYmlBZ0lDQWdJR052Ym5OdmJHVXVkR2x0WlNnblpHbHpkR0Z1WTJWeklIUnZJRzFoZEhKcGVDY3BPMXh1SUNBZ0lDQWdkR2hwY3k1UUlEMGdkR2hwY3k1a01uQW9SQ3dnZEdocGN5NXdaWEp3YkdWNGFYUjVMQ0F4WlMwMExDQnliM2RUYVhwbEtUdGNiaUFnSUNBZ0lHTnZibk52YkdVdWRHbHRaVVZ1WkNnblpHbHpkR0Z1WTJWeklIUnZJRzFoZEhKcGVDY3BPMXh1SUNBZ0lDQWdkR2hwY3k1T0lEMGdjbTkzVTJsNlpUdGNiaUFnSUNBZ0lIUm9hWE11YVc1cGRGTnZiSFYwYVc5dUtDazdJQzh2SUhKbFpuSmxjMmdnZEdocGMxeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklDaHlaU2xwYm1sMGFXRnNhWHBsY3lCMGFHVWdjMjlzZFhScGIyNGdkRzhnY21GdVpHOXRYRzRnSUNBZ2NIVmliR2xqSUdsdWFYUlRiMngxZEdsdmJpZ3BJSHRjYmlBZ0lDQWdJQzh2SUdkbGJtVnlZWFJsSUhKaGJtUnZiU0J6YjJ4MWRHbHZiaUIwYnlCMExWTk9SVnh1SUNBZ0lDQWdkR2hwY3k1WklEMGdkR2hwY3k1eVlXNWtiakprS0hSb2FYTXVUaXdnZEdocGN5NWthVzBwT3lBdkx5QjBhR1VnYzI5c2RYUnBiMjVjYmlBZ0lDQWdJSFJvYVhNdVoyRnBibk1nUFNCMGFHbHpMbkpoYm1SdU1tUW9kR2hwY3k1T0xDQjBhR2x6TG1ScGJTd2dNUzR3S1RzZ0x5OGdjM1JsY0NCbllXbHVjeUIwYnlCaFkyTmxiR1Z5WVhSbElIQnliMmR5WlhOeklHbHVJSFZ1WTJoaGJtZHBibWNnWkdseVpXTjBhVzl1YzF4dUlDQWdJQ0FnZEdocGN5NTVjM1JsY0NBOUlIUm9hWE11Y21GdVpHNHlaQ2gwYUdsekxrNHNJSFJvYVhNdVpHbHRMQ0F3TGpBcE95QXZMeUJ0YjIxbGJuUjFiU0JoWTJOMWJYVnNZWFJ2Y2x4dUlDQWdJQ0FnZEdocGN5NXBkR1Z5SUQwZ01EdGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QnlaWFIxY200Z2NHOXBiblJsY2lCMGJ5QmpkWEp5Wlc1MElITnZiSFYwYVc5dVhHNGdJQ0FnY0hWaWJHbGpJR2RsZEZOdmJIVjBhVzl1S0NrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVXVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJ3WlhKbWIzSnRJR0VnYzJsdVoyeGxJSE4wWlhBZ2IyWWdiM0IwYVcxcGVtRjBhVzl1SUhSdklHbHRjSEp2ZG1VZ2RHaGxJR1Z0WW1Wa1pHbHVaMXh1SUNBZ0lIQjFZbXhwWXlCemRHVndLQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NXBkR1Z5SUNzOUlERTdYRzRnSUNBZ0lDQmpiMjV6ZENCT0lEMGdkR2hwY3k1T08xeHVJQ0FnSUNBZ1kyOXVjM1FnWTJjZ1BTQjBhR2x6TG1OdmMzUkhjbUZrS0hSb2FYTXVXU2s3SUM4dklHVjJZV3gxWVhSbElHZHlZV1JwWlc1MFhHNGdJQ0FnSUNCamIyNXpkQ0JqYjNOMElEMGdZMmN1WTI5emREdGNiaUFnSUNBZ0lHTnZibk4wSUdkeVlXUWdQU0JqWnk1bmNtRmtPMXh1WEc0Z0lDQWdJQ0F2THlCd1pYSm1iM0p0SUdkeVlXUnBaVzUwSUhOMFpYQmNiaUFnSUNBZ0lHTnZibk4wSUhsdFpXRnVJRDBnZEdocGN5NTZaWEp2Y3loMGFHbHpMbVJwYlNrN1hHNGdJQ0FnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElFNDdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ0lDQm1iM0lnS0d4bGRDQmtJRDBnTURzZ1pDQThJSFJvYVhNdVpHbHRPeUJrS3lzcElIdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQm5hV1FnUFNCbmNtRmtXMmxkVzJSZE8xeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElITnBaQ0E5SUhSb2FYTXVlWE4wWlhCYmFWMWJaRjA3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWjJGcGJtbGtJRDBnZEdocGN5NW5ZV2x1YzF0cFhWdGtYVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDOHZJR052YlhCMWRHVWdaMkZwYmlCMWNHUmhkR1ZjYmlBZ0lDQWdJQ0FnSUNCc1pYUWdibVYzWjJGcGJpQTlJSFJvYVhNdWMybG5iaWhuYVdRcElEMDlQU0IwYUdsekxuTnBaMjRvYzJsa0tTQS9JR2RoYVc1cFpDQXFJREF1T0NBNklHZGhhVzVwWkNBcklEQXVNanRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9ibVYzWjJGcGJpQThJREF1TURFcElHNWxkMmRoYVc0Z1BTQXdMakF4T3lBdkx5QmpiR0Z0Y0Z4dUlDQWdJQ0FnSUNBZ0lIUm9hWE11WjJGcGJuTmJhVjFiWkYwZ1BTQnVaWGRuWVdsdU95QXZMeUJ6ZEc5eVpTQm1iM0lnYm1WNGRDQjBkWEp1WEc1Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJqYjIxd2RYUmxJRzF2YldWdWRIVnRJSE4wWlhBZ1pHbHlaV04wYVc5dVhHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JXOXRkbUZzSUQwZ2RHaHBjeTVwZEdWeUlEd2dNalV3SUQ4Z01DNDFJRG9nTUM0NE8xeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElHNWxkM05wWkNBOUlHMXZiWFpoYkNBcUlITnBaQ0F0SUhSb2FYTXVaWEJ6YVd4dmJpQXFJRzVsZDJkaGFXNGdLaUJuY21Ga1cybGRXMlJkTzF4dUlDQWdJQ0FnSUNBZ0lIUm9hWE11ZVhOMFpYQmJhVjFiWkYwZ1BTQnVaWGR6YVdRN0lDOHZJSEpsYldWdFltVnlJSFJvWlNCemRHVndJSGRsSUhSdmIydGNibHh1SUNBZ0lDQWdJQ0FnSUM4dklITjBaWEFoWEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTVaVzJsZFcyUmRJQ3M5SUc1bGQzTnBaRHRjYmx4dUlDQWdJQ0FnSUNBZ0lIbHRaV0Z1VzJSZElDczlJSFJvYVhNdVdWdHBYVnRrWFRzZ0x5OGdZV05qZFcxMWJHRjBaU0J0WldGdUlITnZJSFJvWVhRZ2QyVWdZMkZ1SUdObGJuUmxjaUJzWVhSbGNseHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQzh2SUhKbGNISnZhbVZqZENCWklIUnZJR0psSUhwbGNtOGdiV1ZoYmx4dUlDQWdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCT095QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ1pDQTlJREE3SUdRZ1BDQjBhR2x6TG1ScGJUc2daQ3NyS1Z4dUlDQWdJQ0FnSUNBZ0lIUm9hWE11V1Z0cFhWdGtYU0F0UFNCNWJXVmhibHRrWFNBdklFNDdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQzh2YVdZb2RHaHBjeTVwZEdWeUpURXdNRDA5UFRBcElHTnZibk52YkdVdWJHOW5LQ2RwZEdWeUlDY2dLeUIwYUdsekxtbDBaWElnS3lBbkxDQmpiM04wT2lBbklDc2dZMjl6ZENrN1hHNGdJQ0FnSUNCeVpYUjFjbTRnWTI5emREc2dMeThnY21WMGRYSnVJR04xY25KbGJuUWdZMjl6ZEZ4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUdadmNpQmtaV0oxWjJkcGJtYzZJR2R5WVdScFpXNTBJR05vWldOclhHNGdJQ0FnY0hWaWJHbGpJR1JsWW5WblIzSmhaQ2dwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJRTRnUFNCMGFHbHpMazQ3WEc1Y2JpQWdJQ0FnSUdOdmJuTjBJR05uSUQwZ2RHaHBjeTVqYjNOMFIzSmhaQ2gwYUdsekxsa3BPeUF2THlCbGRtRnNkV0YwWlNCbmNtRmthV1Z1ZEZ4dUlDQWdJQ0FnTHk5amIyNXpkQ0JqYjNOMElEMGdZMmN1WTI5emREdGNiaUFnSUNBZ0lHTnZibk4wSUdkeVlXUWdQU0JqWnk1bmNtRmtPMXh1WEc0Z0lDQWdJQ0JqYjI1emRDQmxJRDBnTVdVdE5UdGNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dUanNnYVNzcktTQjdYRzRnSUNBZ0lDQWdJR1p2Y2lBb2JHVjBJR1FnUFNBd095QmtJRHdnZEdocGN5NWthVzA3SUdRckt5a2dlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSGx2YkdRZ1BTQjBhR2x6TGxsYmFWMWJaRjA3WEc1Y2JpQWdJQ0FnSUNBZ0lDQjBhR2x6TGxsYmFWMWJaRjBnUFNCNWIyeGtJQ3NnWlR0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCalp6QWdQU0IwYUdsekxtTnZjM1JIY21Ga0tIUm9hWE11V1NrN1hHNWNiaUFnSUNBZ0lDQWdJQ0IwYUdsekxsbGJhVjFiWkYwZ1BTQjViMnhrSUMwZ1pUdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQmpaekVnUFNCMGFHbHpMbU52YzNSSGNtRmtLSFJvYVhNdVdTazdYRzVjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JoYm1Gc2VYUnBZeUE5SUdkeVlXUmJhVjFiWkYwN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JuVnRaWEpwWTJGc0lEMGdLR05uTUM1amIzTjBJQzBnWTJjeExtTnZjM1FwSUM4Z0tESWdLaUJsS1R0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6YjJ4bExteHZaeWhwSUNzZ0p5d25JQ3NnWkNBcklDYzZJR2R5WVdSamFHVmpheUJoYm1Gc2VYUnBZem9nSnlBcklHRnVZV3g1ZEdsaklDc2dKeUIyY3k0Z2JuVnRaWEpwWTJGc09pQW5JQ3NnYm5WdFpYSnBZMkZzS1R0Y2JseHVJQ0FnSUNBZ0lDQWdJSFJvYVhNdVdWdHBYVnRrWFNBOUlIbHZiR1E3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0J3Y21sMllYUmxJSEYxUVhKeVB6b2dSbXh2WVhRek1rRnljbUY1TzF4dUlDQWdJQzh2SUhKbGRIVnliaUJqYjNOMElHRnVaQ0JuY21Ga2FXVnVkQ3dnWjJsMlpXNGdZVzRnWVhKeVlXNW5aVzFsYm5SY2JpQWdJQ0J3ZFdKc2FXTWdZMjl6ZEVkeVlXUW9XVG9nYm5WdFltVnlXMTFiWFNrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnVGlBOUlIUm9hWE11VGp0Y2JpQWdJQ0FnSUdOdmJuTjBJR1JwYlNBOUlIUm9hWE11WkdsdE95QXZMeUJrYVcwZ2IyWWdiM1YwY0hWMElITndZV05sWEc0Z0lDQWdJQ0JqYjI1emRDQlFJRDBnZEdocGN5NVFPMXh1WEc0Z0lDQWdJQ0JqYjI1emRDQndiWFZzSUQwZ2RHaHBjeTVwZEdWeUlEd2dNVEF3SUQ4Z05DQTZJREU3SUM4dklIUnlhV05ySUhSb1lYUWdhR1ZzY0hNZ2QybDBhQ0JzYjJOaGJDQnZjSFJwYldGY2JseHVJQ0FnSUNBZ0x5OGdZMjl0Y0hWMFpTQmpkWEp5Wlc1MElGRWdaR2x6ZEhKcFluVjBhVzl1TENCMWJtNXZjbTFoYkdsNlpXUWdabWx5YzNSY2JpQWdJQ0FnSUhSb2FYTXVjWFZCY25JZ1B6ODlJSFJvYVhNdWVtVnliM01vVGlBcUlFNHBPMXh1SUNBZ0lDQWdiR1YwSUhGemRXMGdQU0F3TGpBN1hHNGdJQ0FnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElFNDdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ0lDQm1iM0lnS0d4bGRDQnFJRDBnYVNBcklERTdJR29nUENCT095QnFLeXNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCa2MzVnRJRDBnYm1WM0lFRnljbUY1S0dScGJTa3VjbVZrZFdObEtDaHdjbVYyTENCZkxDQmtLU0E5UGlCd2NtVjJJQ3NnVFdGMGFDNXdiM2NvV1Z0cFhWdGtYU0F0SUZsYmFsMWJaRjBzSURJcExDQXdLVHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J4ZFNBOUlERXVNQ0F2SUNneExqQWdLeUJrYzNWdEtUc2dMeThnVTNSMVpHVnVkQ0IwTFdScGMzUnlhV0oxZEdsdmJseHVJQ0FnSUNBZ0lDQWdJSFJvYVhNdWNYVkJjbkpiYVNBcUlFNGdLeUJxWFNBOUlIRjFPMXh1SUNBZ0lDQWdJQ0FnSUhSb2FYTXVjWFZCY25KYmFpQXFJRTRnS3lCcFhTQTlJSEYxTzF4dUlDQWdJQ0FnSUNBZ0lIRnpkVzBnS3owZ01pQXFJSEYxTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNBdkx5QnViM0p0WVd4cGVtVWdVU0JrYVhOMGNtbGlkWFJwYjI0Z2RHOGdjM1Z0SUhSdklERmNiaUFnSUNBZ0lDOHZZMjl1YzNRZ1RrNGdQU0JPSUNvZ1RqdGNiaUFnSUNBZ0lDOHZZMjl1YzNRZ1VTQTlJSFJvYVhNdWVtVnliM01vVGs0cE8xeHVJQ0FnSUNBZ2JHVjBJR052YzNRZ1BTQXdMakE3WEc0Z0lDQWdJQ0JqYjI1emRDQm5jbUZrSUQwZ2JtVjNJRUZ5Y21GNUtFNHBMbVpwYkd3b2JuVnNiQ2t1YldGd0tDZ3BJRDArSUNodVpYY2dSbXh2WVhRek1rRnljbUY1S0dScGJTa3BMbVpwYkd3b01DNHdLU2s3WEc0Z0lDQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUU0N0lHa3JLeWtnZTF4dUlDQWdJQ0FnSUNBdkx5QmpiMjV6ZENCbmMzVnRJRDBnYm1WM0lFWnNiMkYwTXpKQmNuSmhlU2hrYVcwcExtWnBiR3dvTUM0d0tUc2dMeThnYVc1cGRDQm5jbUZrSUdadmNpQndiMmx1ZENCcFhHNGdJQ0FnSUNBZ0lHWnZjaUFvYkdWMElHb2dQU0JwSUNzZ01Uc2dhaUE4SUU0N0lHb3JLeWtnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUZFZ1BTQk5ZWFJvTG0xaGVDaDBhR2x6TG5GMVFYSnlXMmtnS2lCT0lDc2dhbDBnTHlCeGMzVnRMQ0F4WlMweE1EQXBPMXh1SUNBZ0lDQWdJQ0FnSUdOdmMzUWdLejBnS0MwZ1VGdHBJQ29nVGlBcklHcGRJQ29nVFdGMGFDNXNiMmNvVVNrcElDb2dNanNnTHk4Z1lXTmpkVzExYkdGMFpTQmpiM04wSUNoMGFHVWdibTl1TFdOdmJuTjBZVzUwSUhCdmNuUnBiMjRnWVhRZ2JHVmhjM1F1TGk0cFhHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2NISmxiWFZzZENBOUlEUWdLaUFvY0cxMWJDQXFJRkJiYVNBcUlFNGdLeUJxWFNBdElGRXBJQ29nZEdocGN5NXhkVUZ5Y2x0cElDb2dUaUFySUdwZE8xeHVJQ0FnSUNBZ0lDQWdJQzh2WTI5dWMyOXNaUzVzYjJjb2NISmxiWFZzZEN3Z1VTd2dhU3dnYWlrN1hHNGdJQ0FnSUNBZ0lDQWdabTl5SUNoc1pYUWdaQ0E5SURBN0lHUWdQQ0JrYVcwN0lHUXJLeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdaM0poWkZ0cFhWdGtYU0FyUFNCd2NtVnRkV3gwSUNvZ0tGbGJhVjFiWkYwZ0xTQlpXMnBkVzJSZEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdkeVlXUmJhbDFiWkYwZ0t6MGdjSEpsYlhWc2RDQXFJQ2haVzJwZFcyUmRJQzBnV1Z0cFhWdGtYU2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQzh2WjNKaFpGdHBYU0E5SUdkemRXMDdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJSEpsZEhWeWJpQjdZMjl6ZEN3Z1ozSmhaSDA3WEc0Z0lDQWdmVnh1ZlZ4dUlsMTkiLCIvKiogUHJveHkgZm9yIERpc3RhbmNlTWF0cml4IGNsYXNzLiBBbGxvd3MgdG8gaW5kZXggbWF0cml4IGFzIG1hdHJpeFtpXVtqXVxuICogTm90ZTogbXVjaCBzbG93ZXIgdGhhbiBkaXJlY3QgaW5kZXhpbmcsIGJ1dCBzdGlsbCBtdWNoIGZhc3RlciB0aGFuIHJlY2FsY3VsYXRpbmcgZGlzdGFuY2VzLlxuICogd2lsbCBiZSB1c2VkIGZvciBULVNORSBtYWlubHkuXG4gKiBAcGFyYW0ge0Zsb2F0MzJBcnJheX1jb25kZW5zZWRBcnJheSAtIGFycmF5IG9mIGRpc3RhbmNlcyBiZXR3ZWVuIGFsbCBwYWlycyBvZiBvYmplY3RzXG4gKiBAcGFyYW0ge251bWJlcn1zaXplIC0gbnVtYmVyIG9mIGNvbXBhcmVibGVzIGluIG1hdHJpeFxuICogQHJldHVybiB7RmxvYXQzMkFycmF5fSAtIHByb3h5IGZvciBjb25kZW5zZWRBcnJheVxuKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZU1hdHJpeFByb3h5KGNvbmRlbnNlZEFycmF5LCBzaXplKSB7XG4gICAgY29uc3QgbGluZWFyRnVuYyA9IGRtTGluZWFySW5kZXgoc2l6ZSk7XG4gICAgZnVuY3Rpb24gbGluZWFySW5kZXgoaSwgaikge1xuICAgICAgICBjb25zdCBpTnVtID0gTnVtYmVyKGkpO1xuICAgICAgICBjb25zdCBqTnVtID0gTnVtYmVyKGopO1xuICAgICAgICByZXR1cm4gbGluZWFyRnVuYyhpTnVtLCBqTnVtKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaWR4MkhhbmRsZXIoaWR4MSkge1xuICAgICAgICByZXR1cm4gKHtcbiAgICAgICAgICAgIGdldCh0YXJnZXQsIGlkeDIsIF9yZWNlaXZlcikge1xuICAgICAgICAgICAgICAgIGlmIChpZHgxID09PSBpZHgyKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lYXJJZHggPSBOdW1iZXIoaWR4MSkgPiBOdW1iZXIoaWR4MikgPyBsaW5lYXJJbmRleChpZHgyLCBpZHgxKSA6IGxpbmVhckluZGV4KGlkeDEsIGlkeDIpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbGluZWFySWR4XTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBpZHgxSGFuZGxlciA9IHtcbiAgICAgICAgZ2V0KHRhcmdldCwgaWR4MSwgX3JlY2VpdmVyKSB7XG4gICAgICAgICAgICBpZiAoaWR4MSA9PT0gJ2xlbmd0aCcpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNpemU7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb3h5KHRhcmdldCwgaWR4MkhhbmRsZXIoaWR4MSkpO1xuICAgICAgICB9LFxuICAgIH07XG4gICAgcmV0dXJuIG5ldyBQcm94eShjb25kZW5zZWRBcnJheSwgaWR4MUhhbmRsZXIpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRtTGluZWFySW5kZXgoc2l6ZSkge1xuICAgIHJldHVybiAoaSwgaikgPT4gc2l6ZSAqIGkgKyBqIC0gTWF0aC5mbG9vcigoKGkgKyAyKSAqIChpICsgMSkpIC8gMik7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljSEp2ZUhrdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUp3Y205NGVTNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZGUVRzN096czdPMFZCVFVVN1FVRkRSaXhOUVVGTkxGVkJRVlVzYlVKQlFXMUNMRU5CUVVNc1kwRkJORUlzUlVGQlJTeEpRVUZaTzBsQlF6VkZMRTFCUVUwc1ZVRkJWU3hIUVVGSExHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTjJReXhUUVVGVExGZEJRVmNzUTBGQlF5eERRVUZyUWl4RlFVRkZMRU5CUVd0Q08xRkJRM3BFTEUxQlFVMHNTVUZCU1N4SFFVRkhMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU4yUWl4TlFVRk5MRWxCUVVrc1IwRkJSeXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZGtJc1QwRkJUeXhWUVVGVkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUTJoRExFTkJRVU03U1VGRlJDeFRRVUZUTEZkQlFWY3NRMEZCUXl4SlFVRnhRanRSUVVONFF5eFBRVUZQTEVOQlEwdzdXVUZEUlN4SFFVRkhMRU5CUVVNc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlJTeFRRVUZUTzJkQ1FVTjZRaXhKUVVGSkxFbEJRVWtzUzBGQlN5eEpRVUZKTzI5Q1FVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8yZENRVU0xUWl4TlFVRk5MRk5CUVZNc1IwRkJSeXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFhRVUZYTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFhRVUZYTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8yZENRVU5zUnl4UFFVRlBMRTFCUVUwc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dFpRVU16UWl4RFFVRkRPMU5CUTBZc1EwRkRSaXhEUVVGRE8wbEJRMG9zUTBGQlF6dEpRVU5FTEUxQlFVMHNWMEZCVnl4SFFVRXJRanRSUVVNNVF5eEhRVUZITEVOQlFVTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1JVRkJSU3hUUVVGVE8xbEJRM3BDTEVsQlFVa3NTVUZCU1N4TFFVRkxMRkZCUVZFN1owSkJRVVVzVDBGQlR5eEpRVUZKTEVOQlFVTTdXVUZEYmtNc1QwRkJUeXhKUVVGSkxFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNWMEZCVnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRE9VTXNRMEZCUXp0TFFVTkdMRU5CUVVNN1NVRkZSaXhQUVVGUExFbEJRVWtzUzBGQlN5eERRVUZETEdOQlFXTXNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJRenRCUVVOb1JDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR0ZCUVdFc1EwRkJReXhKUVVGWk8wbEJRM2hETEU5QlFVOHNRMEZCUXl4RFFVRlRMRVZCUVVVc1EwRkJVeXhGUVVGRkxFVkJRVVVzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU4wUml4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpWEc1Y2JpOHFLaUJRY205NGVTQm1iM0lnUkdsemRHRnVZMlZOWVhSeWFYZ2dZMnhoYzNNdUlFRnNiRzkzY3lCMGJ5QnBibVJsZUNCdFlYUnlhWGdnWVhNZ2JXRjBjbWw0VzJsZFcycGRYRzRnS2lCT2IzUmxPaUJ0ZFdOb0lITnNiM2RsY2lCMGFHRnVJR1JwY21WamRDQnBibVJsZUdsdVp5d2dZblYwSUhOMGFXeHNJRzExWTJnZ1ptRnpkR1Z5SUhSb1lXNGdjbVZqWVd4amRXeGhkR2x1WnlCa2FYTjBZVzVqWlhNdVhHNGdLaUIzYVd4c0lHSmxJSFZ6WldRZ1ptOXlJRlF0VTA1RklHMWhhVzVzZVM1Y2JpQXFJRUJ3WVhKaGJTQjdSbXh2WVhRek1rRnljbUY1ZldOdmJtUmxibk5sWkVGeWNtRjVJQzBnWVhKeVlYa2diMllnWkdsemRHRnVZMlZ6SUdKbGRIZGxaVzRnWVd4c0lIQmhhWEp6SUc5bUlHOWlhbVZqZEhOY2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZYTnBlbVVnTFNCdWRXMWlaWElnYjJZZ1kyOXRjR0Z5WldKc1pYTWdhVzRnYldGMGNtbDRYRzRnS2lCQWNtVjBkWEp1SUh0R2JHOWhkRE15UVhKeVlYbDlJQzBnY0hKdmVIa2dabTl5SUdOdmJtUmxibk5sWkVGeWNtRjVYRzRxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdScGMzUmhibU5sVFdGMGNtbDRVSEp2ZUhrb1kyOXVaR1Z1YzJWa1FYSnlZWGs2SUVac2IyRjBNekpCY25KaGVTd2djMmw2WlRvZ2JuVnRZbVZ5S1RvZ1JteHZZWFF6TWtGeWNtRjVJSHRjYmlBZ1kyOXVjM1FnYkdsdVpXRnlSblZ1WXlBOUlHUnRUR2x1WldGeVNXNWtaWGdvYzJsNlpTazdYRzRnSUdaMWJtTjBhVzl1SUd4cGJtVmhja2x1WkdWNEtHazZJSE41YldKdmJDQjhJSE4wY21sdVp5d2dham9nYzNsdFltOXNJSHdnYzNSeWFXNW5LU0I3WEc0Z0lDQWdZMjl1YzNRZ2FVNTFiU0E5SUU1MWJXSmxjaWhwS1R0Y2JpQWdJQ0JqYjI1emRDQnFUblZ0SUQwZ1RuVnRZbVZ5S0dvcE8xeHVJQ0FnSUhKbGRIVnliaUJzYVc1bFlYSkdkVzVqS0dsT2RXMHNJR3BPZFcwcE8xeHVJQ0I5WEc1Y2JpQWdablZ1WTNScGIyNGdhV1I0TWtoaGJtUnNaWElvYVdSNE1Ub2djM2x0WW05c0lId2djM1J5YVc1bktUcFFjbTk0ZVVoaGJtUnNaWEk4Um14dllYUXpNa0Z5Y21GNVBpQjdYRzRnSUNBZ2NtVjBkWEp1SUNoY2JpQWdJQ0FnSUh0Y2JpQWdJQ0FnSUNBZ1oyVjBLSFJoY21kbGRDd2dhV1I0TWl3Z1gzSmxZMlZwZG1WeUtTQjdYRzRnSUNBZ0lDQWdJQ0FnYVdZZ0tHbGtlREVnUFQwOUlHbGtlRElwSUhKbGRIVnliaUF3TzF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUd4cGJtVmhja2xrZUNBOUlFNTFiV0psY2locFpIZ3hLU0ErSUU1MWJXSmxjaWhwWkhneUtTQS9JR3hwYm1WaGNrbHVaR1Y0S0dsa2VESXNJR2xrZURFcElEb2diR2x1WldGeVNXNWtaWGdvYVdSNE1Td2dhV1I0TWlrN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIUmhjbWRsZEZ0c2FXNWxZWEpKWkhoZE8xeHVJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdmVnh1SUNBZ0lDazdYRzRnSUgxY2JpQWdZMjl1YzNRZ2FXUjRNVWhoYm1Sc1pYSTZJRkJ5YjNoNVNHRnVaR3hsY2p4R2JHOWhkRE15UVhKeVlYaytJRDBnZTF4dUlDQWdJR2RsZENoMFlYSm5aWFFzSUdsa2VERXNJRjl5WldObGFYWmxjaWtnZTF4dUlDQWdJQ0FnYVdZZ0tHbGtlREVnUFQwOUlDZHNaVzVuZEdnbktTQnlaWFIxY200Z2MybDZaVHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnVaWGNnVUhKdmVIa29kR0Z5WjJWMExDQnBaSGd5U0dGdVpHeGxjaWhwWkhneEtTazdYRzRnSUNBZ2ZTeGNiaUFnZlR0Y2JseHVJQ0J5WlhSMWNtNGdibVYzSUZCeWIzaDVLR052Ym1SbGJuTmxaRUZ5Y21GNUxDQnBaSGd4U0dGdVpHeGxjaWs3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmtiVXhwYm1WaGNrbHVaR1Y0S0hOcGVtVTZJRzUxYldKbGNpazZJQ2hwT2lCdWRXMWlaWElzSUdvNklHNTFiV0psY2lrZ1BUNGdiblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJQ2hwT2lCdWRXMWlaWElzSUdvNklHNTFiV0psY2lrZ1BUNGdjMmw2WlNBcUlHa2dLeUJxSUMwZ1RXRjBhQzVtYkc5dmNpZ29LR2tnS3lBeUtTQXFJQ2hwSUNzZ01Ta3BJQzhnTWlrN1hHNTlYRzRpWFgwPSIsImZ1bmN0aW9uIGV1Y2xpZGVhbkFnZ3JlZ2F0aW9uV2dzbChhcnJheVNpemUpIHtcbiAgICByZXR1cm4gYFxuICAgICAgICB2YXIgc3VtID0gMC4wO1xuICAgICAgICBmb3IgKHZhciBpID0gMHU7IGkgPCAke2FycmF5U2l6ZX07IGkgPSBpICsgMXUpIHtcbiAgICAgICAgICAgIHN1bSA9IHN1bSArIGRpc3RhbmNlc1tpXSAqIGRpc3RhbmNlc1tpXSAqIGNvbXB1dGVJbmZvLndlaWdodHNbaV0gKiBjb21wdXRlSW5mby53ZWlnaHRzW2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzcXJ0KHN1bSk7XG4gICAgYDtcbn1cbjtcbmZ1bmN0aW9uIG1hbmhhdHRhbkFnZ3JlZ2F0aW9uV2dzbChhcnJheVNpemUpIHtcbiAgICByZXR1cm4gYFxuICAgICAgICB2YXIgc3VtID0gMC4wO1xuICAgICAgICBmb3IgKHZhciBpID0gMHU7IGkgPCAke2FycmF5U2l6ZX07IGkgPSBpICsgMXUpIHtcbiAgICAgICAgICAgIHN1bSA9IHN1bSArIGFicyhkaXN0YW5jZXNbaV0pICogY29tcHV0ZUluZm8ud2VpZ2h0c1tpXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VtO1xuICAgIGA7XG59XG5leHBvcnQgY29uc3QgV0VCR1NMQUdHUkVHQVRJT05GVU5DVElPTlMgPSB7XG4gICAgW1wiRVVDTElERUFOXCIgLyogV0VCR1NMQUdHUkVHQVRJT04uRVVDTElERUFOICovXTogZXVjbGlkZWFuQWdncmVnYXRpb25XZ3NsLFxuICAgIFtcIk1BTkhBVFRBTlwiIC8qIFdFQkdTTEFHR1JFR0FUSU9OLk1BTkhBVFRBTiAqL106IG1hbmhhdHRhbkFnZ3JlZ2F0aW9uV2dzbFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXdlYkdQVS1hZ2dyZWdhdGlvbi5qcy5tYXAiLCIvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG4vLyBpbiBhbGwgdGhlIGZ1bmN0aW9ucyBiZWxvdywgdGhlIHZhcmlhYmxlcyBhIGFuZCBiIGFyZSBhc3N1bWVkIHRvIGJlIGFycmF5cyBvZiB1aW50MzIvZjMyXG4vL3ZhbHVlcyB3aGljaCBhcmUgaW5mZXJlZCBmcm9tIHRoZSBjb2RlIHRoaXMgY2h1bmsgaXMgaW5qZWN0ZWQgaW50b1xuLy8gYWxzbywgd2UgaGF2ZSBhY2Nlc3MgdG8gY29tcHV0ZUluZm8gc3RydWN0LCB3aGljaCBjb250YWlucyB0aGUgZm9sbG93aW5nIGZpZWxkczpcbi8vIGNvbXB1dGVJbmZvLmVudHJ5U2l6ZXM6IGFycmF5IG9mIGFycmF5cyBvZiB1MzIgY29udGFpbmluZyB0aGUgc2l6ZXMgb2YgdGhlIGVudHJpZXNcbi8vIG90aGVyIGZpZWxkcyBhcmUgc3BlY2lmaWMgdG8gdGhlIGRpc3RhbmNlIGZ1bmN0aW9uIHNob3VsZCBiZSBpbmplY3RlZCBmcm9tIHRoZSBtYWluIHNjcmlwdCB0aGF0IGNhbGxzIHRoaXMgZnVuY3Rpb24sXG4vLyBhbmQgc2hvdWxkIGJlIGF2YWlsYWJsZSBpbiB0aGUgc3VwcGxlbWVudGFyeUluZm8gc3RydWN0XG4vLyBsaWtlIHRoZSBzaW1pbGFyaXR5IG1hdHJpeCBmb3IgbW9ub21lciBjaGVtaWNhbCBkaXN0YW5jZS5cbi8vIHRoZSBnZXRQcm9jZXNzSW5mbyBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGNvcnJlY3QgYnVmZmVyIGFsbG9jYXRpb24gbWVjaGFuaXNtIGZvciB0aGUgc3VwcGxlbWVudGFyeUluZm8sXG4vLyBmb3IgZXZlcnkgZW50cnkgbGlzdFxuLy8gdGhlIG1heERpc3RhbmNlIHZhcmlhYmxlIGlzIGFsc28gYXNzdW1lZCB0byBiZSBhdmFpbGFibGUgaW4gdGhlXG4vLyBzY29wZSBvZiB0aGUgZnVuY3Rpb24sIGluIGNhc2Ugb2Yga25uIGl0IGlzIHRoZSBkaXN0YW5jZSBpbiB0aGUgbGFzdCBwb3N0aW9uIG9mIGtubiBvbiB0aGlzIGluZGV4LFxuLy8gaW4gY2FzZSBvZiBzcGFyc2UgbWF0cml4LCBpdCBjYW4gYmUganVzdCB0aGUgdGhyZXNob2xkIGZvciB0aGUgZGlzdGFuY2UuXG4vLyBoYW1taW5nIGRpc3RhbmNlIGZvciBzZXF1bmVuY2VzIG9mIHVpbnQzMiBhcnJheXMgb2YgbWF4IGxlbmd0aCAke21heEFycmF5U2l6ZX1cbmV4cG9ydCBmdW5jdGlvbiB3ZWJHUFVIYW1taW5nKF9tYXhBcnJheVNpemUsIGVudHJ5SW5kZXgpIHtcbiAgICByZXR1cm4gYFxuICBsZXQgYUxlbmd0aDogdTMyID0gY29tcHV0ZUluZm8uZW50cnlTaXplc1ske2VudHJ5SW5kZXh9XVthSW5kZXhdO1xuICBsZXQgYkxlbmd0aDogdTMyID0gY29tcHV0ZUluZm8uZW50cnlTaXplc1ske2VudHJ5SW5kZXh9XVtiSW5kZXhdO1xuICBsZXQgbWF4TGVuZ3RoOiB1MzIgPSBtYXgoYUxlbmd0aCwgYkxlbmd0aCk7XG4gIGxldCBtaW5MZW5ndGg6IHUzMiA9IG1pbihhTGVuZ3RoLCBiTGVuZ3RoKTtcbiAgbGV0IHNpemVEaWZmOiB1MzIgPSBtYXhMZW5ndGggLSBtaW5MZW5ndGg7XG4gIFxuICBsZXQgbWF4SW50RGlzdGFuY2UgPSBjZWlsKG1heERpc3RhbmNlICogZjMyKG1heExlbmd0aCkpIC0gZjMyKHNpemVEaWZmKTtcblxuICB2YXIgZGlmZjogZjMyID0gMC4wO1xuICBmb3IgKHZhciBpID0gMHU7IGkgPCAke19tYXhBcnJheVNpemV9OyBpID0gaSArIDF1KSB7XG4gICAgICBkaWZmID0gZGlmZiArIGYzMihhW2ldICE9IGJbaV0pO1xuICAgICAgaWYgKGRpZmYgPj0gbWF4SW50RGlzdGFuY2UpIHtcbiAgICAgICAgICAgIHJldHVybiAxLjA7XG4gICAgICAgIH1cbiAgfVxuICBkaWZmICs9IGYzMihzaXplRGlmZik7XG4gIHJldHVybiBkaWZmIC8gJHtfbWF4QXJyYXlTaXplfTtcbiAgYDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB3ZWJHUFVNb25vbWVyQ2hlbWljYWxEaXN0YW5jZShfbWF4QXJyYXlTaXplLCBlbnRyeUluZGV4KSB7XG4gICAgLy8gaXQgaXMgYXNzdW1ldCB0aGF0IHN1cHBJbmZvIHN0cnVjdCBjb250YWlucyBjb3JyZWN0IG1hdHJpeCBjYWxsZWQgc2ltaWxhcml0eU1hdHJpeCR7ZW50cnlJbmRleH0sIChzaW1pbGFyaXR5TWF0cml4MCwgc2ltaWxhcml0eU1hdHJpeDEsIGV0YylcbiAgICAvLyB0aGlzIHNob3VsZCBiZSBndWFyYW50ZWVkIGJ5IHRoZSBnZXRQcm9jZXNzSW5mbyBmdW5jdGlvbi5cbiAgICByZXR1cm4gYFxuICBsZXQgYUxlbmd0aDogdTMyID0gY29tcHV0ZUluZm8uZW50cnlTaXplc1ske2VudHJ5SW5kZXh9XVthSW5kZXhdO1xuICBsZXQgYkxlbmd0aDogdTMyID0gY29tcHV0ZUluZm8uZW50cnlTaXplc1ske2VudHJ5SW5kZXh9XVtiSW5kZXhdO1xuICBsZXQgbWF4TGVuZ3RoOiB1MzIgPSBtYXgoYUxlbmd0aCwgYkxlbmd0aCk7XG4gIGxldCBtaW5MZW5ndGg6IHUzMiA9IG1pbihhTGVuZ3RoLCBiTGVuZ3RoKTtcbiAgbGV0IHNpemVEaWZmOiB1MzIgPSBtYXhMZW5ndGggLSBtaW5MZW5ndGg7XG4gIFxuICBsZXQgbWF4SW50RGlzdGFuY2UgPSBjZWlsKG1heERpc3RhbmNlICogZjMyKG1heExlbmd0aCkpIC0gZjMyKHNpemVEaWZmKTtcblxuICBsZXQgc2ltTWF0cml4ID0gJihzdXBwSW5mby5zaW1pbGFyaXR5TWF0cml4JHtlbnRyeUluZGV4fSk7IC8vIHVzaW5nIHBvaW50ZXJzIG1ha2UgdGhpbmdzIGZhc3RlclxuICB2YXIgZGlmZjogZjMyID0gMC4wO1xuICBmb3IgKHZhciBpID0gMHU7IGkgPCAke19tYXhBcnJheVNpemV9OyBpID0gaSArIDF1KSB7XG4gICAgICBkaWZmID0gZGlmZiArIDEuMCAtICgqc2ltTWF0cml4KVt1MzIoYVtpXSldW3UzMihiW2ldKV07XG4gICAgICBpZiAoZGlmZiA+PSBtYXhJbnREaXN0YW5jZSkge1xuICAgICAgICAgICAgcmV0dXJuIDEuMDtcbiAgICAgICAgfVxuICB9XG4gIGRpZmYgKz0gZjMyKHNpemVEaWZmKTtcbiAgcmV0dXJuIGRpZmYgLyAke19tYXhBcnJheVNpemV9O1xuICBgO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHdlYkdQVUxldmVuc3RlaW4obWF4QXJyYXlTaXplLCBlbnRyeUluZGV4KSB7XG4gICAgcmV0dXJuIGBcbiAgbGV0IGFMZW5ndGg6IHUzMiA9IGNvbXB1dGVJbmZvLmVudHJ5U2l6ZXNbJHtlbnRyeUluZGV4fV1bYUluZGV4XTtcbiAgbGV0IGJMZW5ndGg6IHUzMiA9IGNvbXB1dGVJbmZvLmVudHJ5U2l6ZXNbJHtlbnRyeUluZGV4fV1bYkluZGV4XTtcbiAgbGV0IG1heExlbmd0aDogdTMyID0gbWF4KGFMZW5ndGgsIGJMZW5ndGgpO1xuICBsZXQgbWluTGVuZ3RoOiB1MzIgPSBtaW4oYUxlbmd0aCwgYkxlbmd0aCk7XG5cbiAgbGV0IG1heEludERpc3RhbmNlID0gY2VpbChtYXhEaXN0YW5jZSAqIGYzMihtYXhMZW5ndGgpKTtcblxuICAvLyB3ZSB3aWxsIHN0b3JlIHR3byBhcnJheXMgYXMgbWF0cml4IGFuZCBzd2FwIHRoZSB3b3JraW5nIGluZGljZXMgcGVyIHBhc3MuXG4gIC8vIHRoaXMgd2F5IHdlIGNhbiByZWR1Y2UgbWVtb3J5IHVzYWdlIHBlciBjb21wdXRhdGlvbiB0byBqdXN0IE8oYUxlbmd0aClcbiAgLy8gdGhlIGdyaWQgd2lsbCBoYXZlIGFMZW5ndGggKyAxIGNvbHVtbnMgYW5kIGJMZW5ndGggKyAxIHJvd3NcbiAgLy8gdGhpcyB3aWxsIGJlIGd1YXJhbnRlZWQgYnkgaXRlcmF0aW9uLCBidXQgdGhlIGFycmF5IHNpemVzIG11c3QgYmUga25vd24gYXQgY29tcGlsZSB0aW1lLCBzbyB3ZSB3aWxsIHVzZSBhIGZpeGVkIHNpemUgb2YgbWF4QXJyYXlTaXplXG4gIHZhciBkeW5hbWljUGFzc01hdDogYXJyYXk8YXJyYXk8ZjMyLCAke21heEFycmF5U2l6ZSArIDF9dT4sIDI+OyAvLyBpbml0aWFsaXplIHRvIDBcbiAgXG4gIHZhciBwcmV2SW5kZXg6IHUzMiA9IDA7XG4gIHZhciBjdXJJbmRleDogdTMyID0gMTsgLy8gd2Ugd2lsbCBzd2FwIHRoZXNlIGluZGljZXMgcGVyIHBhc3NcblxuICAvLyBpbml0aWFsaXplIHRoZSBmaXJzdCByb3dcbiAgZm9yICh2YXIgaSA9IDB1OyBpIDw9IGFMZW5ndGg7IGkgPSBpICsgMXUpIHtcbiAgICAgIGR5bmFtaWNQYXNzTWF0W3ByZXZJbmRleF1baV0gPSBmMzIoaSk7XG4gIH1cblxuICAvLyBpdGVyYXRlIG92ZXIgdGhlIHJvd3NcbiAgZm9yICh2YXIgaSA9IDF1OyBpIDw9IGJMZW5ndGg7IGkgPSBpICsgMXUpIHtcbiAgICAgIGR5bmFtaWNQYXNzTWF0W2N1ckluZGV4XVswXSA9IGYzMihpKTtcbiAgICAgIHZhciBtaW5FbnRyeTogZjMyID0gZjMyKG1heExlbmd0aCk7XG4gICAgICBsZXQgcHJldlJvdyA9ICZkeW5hbWljUGFzc01hdFtwcmV2SW5kZXhdO1xuICAgICAgbGV0IGN1clJvdyA9ICZkeW5hbWljUGFzc01hdFtjdXJJbmRleF07XG4gICAgICBsZXQgYk1vbiA9IHUzMihiW2kgLSAxXSk7XG4gICAgICBmb3IgKHZhciBqID0gMXU7IGogPD0gYUxlbmd0aDsgaiA9IGogKyAxdSkge1xuICAgICAgICAgIHZhciBjb3N0OiBmMzIgPSBmMzIoYVtqIC0gMV0gIT0gYk1vbik7XG4gICAgICAgICAgdmFyIHJlczogZjMyID0gbWluKFxuICAgICAgICAgICAgICBtaW4oXG4gICAgICAgICAgICAgICAgKCpwcmV2Um93KVtqXSArIDEuMCwgLy8gZGVsZXRpb25cbiAgICAgICAgICAgICAgICAoKmN1clJvdylbaiAtIDFdICsgMS4wLCAvLyBpbnNlcnRpb25cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKCpwcmV2Um93KVtqIC0gMV0gKyBjb3N0IC8vIHN1YnN0aXR1dGlvblxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAoKmN1clJvdylbal0gPSByZXM7XG4gICAgICAgICAgaWYgKHJlcyA8IG1pbkVudHJ5KSB7XG4gICAgICAgICAgICAgIG1pbkVudHJ5ID0gcmVzO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIHN3YXAgdGhlIGluZGljZXNcbiAgICAgIGxldCB0ZW1wOiB1MzIgPSBwcmV2SW5kZXg7XG4gICAgICBwcmV2SW5kZXggPSBjdXJJbmRleDtcbiAgICAgIGN1ckluZGV4ID0gdGVtcDtcbiAgICAgIGlmIChtaW5FbnRyeSA+PSBtYXhJbnREaXN0YW5jZSkge1xuICAgICAgICAgIHJldHVybiAxLjA7XG4gICAgICB9XG4gIH1cblxuICByZXR1cm4gZHluYW1pY1Bhc3NNYXRbcHJldkluZGV4XVthTGVuZ3RoXSAvIGYzMihtYXhMZW5ndGgpO1xuICBgO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHdlYkdQVU5lZWRsZW1hbld1bnNjaChtYXhBcnJheVNpemUsIGVudHJ5SW5kZXgpIHtcbiAgICAvLyB2ZXJzaW9uIG9mIHRoZSBsZXZlbnNodGFpbiB3aGVyZSB0aGUgY29zdCBvZiBzdWJzdGl0dXRpb24gaXMgY3VzdG9taXphYmxlXG4gICAgLy8gaXQgaXMgYXNzdW1ldCB0aGF0IHN1cHBJbmZvIHN0cnVjdCBjb250YWlucyBjb3JyZWN0IG1hdHJpeCBjYWxsZWQgc2ltaWxhcml0eU1hdHJpeCR7ZW50cnlJbmRleH0sIChzaW1pbGFyaXR5TWF0cml4MCwgc2ltaWxhcml0eU1hdHJpeDEsIGV0YylcbiAgICAvLyBhbmQgZ2FwT3BlblBlbmFsdHksIGdhcEV4dGVuc2lvblBlbmFsdHlcbiAgICAvLyB0aGlzIHNob3VsZCBiZSBndWFyYW50ZWVkIGJ5IHRoZSBnZXRQcm9jZXNzSW5mbyBmdW5jdGlvbi5cbiAgICByZXR1cm4gYFxuICAgICAgbGV0IGFMZW5ndGg6IHUzMiA9IGNvbXB1dGVJbmZvLmVudHJ5U2l6ZXNbJHtlbnRyeUluZGV4fV1bYUluZGV4XTtcbiAgICAgIGxldCBiTGVuZ3RoOiB1MzIgPSBjb21wdXRlSW5mby5lbnRyeVNpemVzWyR7ZW50cnlJbmRleH1dW2JJbmRleF07XG4gICAgICBsZXQgbWF4TGVuZ3RoOiB1MzIgPSBtYXgoYUxlbmd0aCwgYkxlbmd0aCk7XG4gICAgICBsZXQgbWluTGVuZ3RoOiB1MzIgPSBtaW4oYUxlbmd0aCwgYkxlbmd0aCk7XG4gIFxuICAgICAgbGV0IG1heEludERpc3RhbmNlID0gY2VpbChtYXhEaXN0YW5jZSAqIGYzMihtYXhMZW5ndGgpKTtcbiAgICAgIC8vIHdlIHdpbGwgc3RvcmUgdHdvIGFycmF5cyBhcyBtYXRyaXggYW5kIHN3YXAgdGhlIHdvcmtpbmcgaW5kaWNlcyBwZXIgcGFzcy5cbiAgICAgIC8vIHRoaXMgd2F5IHdlIGNhbiByZWR1Y2UgbWVtb3J5IHVzYWdlIHBlciBjb21wdXRhdGlvbiB0byBqdXN0IE8oYUxlbmd0aClcbiAgICAgIC8vIHRoZSBncmlkIHdpbGwgaGF2ZSBhTGVuZ3RoICsgMSBjb2x1bW5zIGFuZCBiTGVuZ3RoICsgMSByb3dzXG4gICAgICAvLyB0aGlzIHdpbGwgYmUgZ3VhcmFudGVlZCBieSBpdGVyYXRpb24sIGJ1dCB0aGUgYXJyYXkgc2l6ZXMgbXVzdCBiZSBrbm93biBhdCBjb21waWxlIHRpbWUsIHNvIHdlIHdpbGwgdXNlIGEgZml4ZWQgc2l6ZSBvZiBtYXhBcnJheVNpemVcbiAgICAgIHZhciBkeW5hbWljUGFzc01hdDogYXJyYXk8YXJyYXk8ZjMyLCAke21heEFycmF5U2l6ZSArIDF9dT4sIDI+OyAvLyBpbml0aWFsaXplIHRvIDBcbiAgICAgIFxuICAgICAgLy8gd2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIG9wZXJhdGlvbiBsZWQgdG8gdGhlIGN1cnJlbnQgY2VsbFxuICAgICAgLy8gaS5lLiB3aGV0aGVyIHdlIGNhbWUgZnJvbSB0aGUgbGVmdCwgdG9wIG9yIGRpYWdvbmFsIHRvIGFzc2lnbiBnYXAgb3Blbi9nYXAgZXh0ZW5kIHBlbmFsdHlcbiAgICAgIHZhciB2ZXJ0aWNhbEdhcHM6IGFycmF5PHUzMiwgJHttYXhBcnJheVNpemUgKyAxfXU+O1xuICAgICAgdmFyIGhvcml6b250YWxHYXBzOiBhcnJheTx1MzIsICR7bWF4QXJyYXlTaXplICsgMX11PjtcblxuICAgICAgbGV0IGdhcE9wZW5QZW5hbHR5OiBmMzIgPSBzdXBwSW5mby5nYXBPcGVuUGVuYWx0eSR7ZW50cnlJbmRleH07XG4gICAgICBsZXQgZ2FwRXh0ZW5zaW9uUGVuYWx0eTogZjMyID0gc3VwcEluZm8uZ2FwRXh0ZW5zaW9uUGVuYWx0eSR7ZW50cnlJbmRleH07XG4gICAgICB2YXIgcHJldkluZGV4OiB1MzIgPSAwO1xuICAgICAgdmFyIGN1ckluZGV4OiB1MzIgPSAxOyAvLyB3ZSB3aWxsIHN3YXAgdGhlc2UgaW5kaWNlcyBwZXIgcGFzc1xuICAgICAgLy8gaW5pdGlhbGl6ZSB0aGUgZmlyc3Qgcm93XG4gICAgICBmb3IgKHZhciBpID0gMHU7IGkgPD0gYUxlbmd0aDsgaSA9IGkgKyAxdSkge1xuICAgICAgICAgIGR5bmFtaWNQYXNzTWF0W3ByZXZJbmRleF1baV0gPSBnYXBPcGVuUGVuYWx0eSArIGYzMihpIC0gMSkgKiBnYXBFeHRlbnNpb25QZW5hbHR5O1xuICAgICAgICAgIGR5bmFtaWNQYXNzTWF0W2N1ckluZGV4XVtpXSA9IDAuMDtcbiAgICAgIH1cbiAgICAgIGR5bmFtaWNQYXNzTWF0WzBdWzBdID0gMC4wO1xuXG4gICAgICBsZXQgc2ltTWF0cml4ID0gJnN1cHBJbmZvLnNpbWlsYXJpdHlNYXRyaXgke2VudHJ5SW5kZXh9OyAvLyB1c2luZyBwb2ludGVycyBtYWtlIHRoaW5ncyBmYXN0ZXJcbiAgICAgIC8vIGl0ZXJhdGUgb3ZlciB0aGUgcm93c1xuICAgICAgZm9yICh2YXIgaSA9IDF1OyBpIDw9IGJMZW5ndGg7IGkgPSBpICsgMXUpIHtcbiAgICAgICAgICBsZXQgcHJldlJvdyA9ICZkeW5hbWljUGFzc01hdFtwcmV2SW5kZXhdO1xuICAgICAgICAgIGxldCBjdXJSb3cgPSAmZHluYW1pY1Bhc3NNYXRbY3VySW5kZXhdO1xuICAgICAgICAgICgqY3VyUm93KVswXSA9IGdhcE9wZW5QZW5hbHR5ICsgZjMyKGkgLSAxKSAqIGdhcEV4dGVuc2lvblBlbmFsdHk7XG4gICAgICAgICAgdmFyIG1pbkVudHJ5OiBmMzIgPSBmMzIobWF4TGVuZ3RoKTtcbiAgICAgICAgICBsZXQgbW9uQiA9IHUzMihiW2kgLSAxXSk7XG4gICAgICAgICAgZm9yICh2YXIgaiA9IDF1OyBqIDw9IGFMZW5ndGg7IGogPSBqICsgMXUpIHtcbiAgICAgICAgICAgICAgbGV0IG1vbkEgPSB1MzIoYVtqIC0gMV0pO1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgbGV0IGNvc3Q6IGYzMiA9ICgqcHJldlJvdylbaiAtIDFdICsgMWYgLSAoKnNpbU1hdHJpeClbbW9uQV1bbW9uQl07XG4gICAgICAgICAgICAgIHZhciB0b3AgPSAoKnByZXZSb3cpW2pdOyAvLyBkZWxldGlvblxuICAgICAgICAgICAgICBpZiAodmVydGljYWxHYXBzW2pdID4gMCkge1xuICAgICAgICAgICAgICAgICAgdG9wID0gdG9wICsgZ2FwRXh0ZW5zaW9uUGVuYWx0eTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHRvcCA9IHRvcCArIGdhcE9wZW5QZW5hbHR5O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHZhciBsZWZ0ID0gKCpjdXJSb3cpW2ogLSAxXTsgLy8gaW5zZXJ0aW9uXG4gICAgICAgICAgICAgIGlmIChob3Jpem9udGFsR2Fwc1tqIC0gMV0gPiAwKSB7XG4gICAgICAgICAgICAgICAgICBsZWZ0ID0gbGVmdCArIGdhcEV4dGVuc2lvblBlbmFsdHk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBsZWZ0ID0gbGVmdCArIGdhcE9wZW5QZW5hbHR5O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHZhciByZXM6IGYzMiA9IG1pbihcbiAgICAgICAgICAgICAgICAgIG1pbihcbiAgICAgICAgICAgICAgICAgICAgICB0b3AsIC8vIGRlbGV0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgbGVmdCwgLy8gaW5zZXJ0aW9uXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgY29zdCAvLyBzdWJzdGl0dXRpb25cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAoKmN1clJvdylbal0gPSByZXM7XG4gICAgICAgICAgICAgIGlmIChyZXMgPCBtaW5FbnRyeSkge1xuICAgICAgICAgICAgICAgICAgbWluRW50cnkgPSByZXM7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBnYXBzXG4gICAgICAgICAgICAgIGlmIChyZXMgPT0gY29zdCkge1xuICAgICAgICAgICAgICAgICAgdmVydGljYWxHYXBzW2pdID0gMDtcbiAgICAgICAgICAgICAgICAgIGhvcml6b250YWxHYXBzW2pdID0gMDtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPT0gbGVmdCkge1xuICAgICAgICAgICAgICAgICAgdmVydGljYWxHYXBzW2pdID0gMDtcbiAgICAgICAgICAgICAgICAgIGhvcml6b250YWxHYXBzW2pdID0gMTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHZlcnRpY2FsR2Fwc1tqXSA9IDE7XG4gICAgICAgICAgICAgICAgICBob3Jpem9udGFsR2Fwc1tqXSA9IDA7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gc3dhcCB0aGUgaW5kaWNlc1xuICAgICAgICAgIGxldCB0ZW1wOiB1MzIgPSBwcmV2SW5kZXg7XG4gICAgICAgICAgcHJldkluZGV4ID0gY3VySW5kZXg7XG4gICAgICAgICAgY3VySW5kZXggPSB0ZW1wO1xuICAgICAgICAgIGlmIChtaW5FbnRyeSA+PSBtYXhJbnREaXN0YW5jZSkge1xuICAgICAgICAgICAgICByZXR1cm4gMS4wO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBkeW5hbWljUGFzc01hdFtwcmV2SW5kZXhdW2FMZW5ndGhdIC8gZjMyKG1heExlbmd0aCk7XG4gIFxuICBgO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHdlYkdQVUV1Y2xpZGVhbihtYXhBcnJheVNpemUsIF9lbnRyeUluZGV4KSB7XG4gICAgcmV0dXJuIGBcbiAgdmFyIGRpc3Q6IGYzMiA9IDAuMDtcbiAgZm9yICh2YXIgaSA9IDB1OyBpIDwgJHttYXhBcnJheVNpemV9OyBpID0gaSArIDF1KSB7XG4gICAgZGlzdCA9IGRpc3QgKyBmMzIoYVtpXSAtIGJbaV0pICogZjMyKGFbaV0gLSBiW2ldKTtcbiAgfVxuICByZXR1cm4gc3FydChkaXN0KTtcbiAgYDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB3ZWJHUFVNYW5oYXR0YW4obWF4QXJyYXlTaXplLCBfZW50cnlJbmRleCkge1xuICAgIHJldHVybiBgXG4gIHZhciBkaXN0OiBmMzIgPSAwLjA7XG4gIGZvciAodmFyIGkgPSAwdTsgaSA8ICR7bWF4QXJyYXlTaXplfTsgaSA9IGkgKyAxdSkge1xuICAgIGRpc3QgPSBkaXN0ICsgYWJzKGYzMihhW2ldIC0gYltpXSkpO1xuICB9XG4gIHJldHVybiBkaXN0O1xuICBgO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHdlYkdQVU9uZUhvdERpc3RhbmNlKF9tYXhBcnJheVNpemUsIGVudHJ5SW5kZXgpIHtcbiAgICByZXR1cm4gYFxuICBsZXQgYUxlbmd0aDogdTMyID0gY29tcHV0ZUluZm8uZW50cnlTaXplc1ske2VudHJ5SW5kZXh9XVthSW5kZXhdO1xuICBsZXQgYkxlbmd0aDogdTMyID0gY29tcHV0ZUluZm8uZW50cnlTaXplc1ske2VudHJ5SW5kZXh9XVtiSW5kZXhdO1xuICBpZiAoYUxlbmd0aCAhPSBiTGVuZ3RoKSB7XG4gICAgcmV0dXJuIDEuMDtcbiAgfVxuICBmb3IgKHZhciBpID0gMHU7IGkgPCBhTGVuZ3RoOyBpID0gaSArIDF1KSB7XG4gICAgaWYoYVtpXSAhPSBiW2ldKSB7XG4gICAgICByZXR1cm4gMS4wO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMC4wO1xuICBgO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHdlYkdQVU51bWVyaWNEaXN0YW5jZShfbWF4QXJyYXlTaXplLCBlbnRyeUluZGV4KSB7XG4gICAgLy8gd2UgYXNzdW1lIHRoYXQgcmFuZ2Uke2VudHJ5SW5kZXh9IGlzIGF2YWlsYWJsZSBpbiB0aGUgc3VwcGxlbWVudGFyeUluZm8gc3RydWN0XG4gICAgcmV0dXJuIGBcbiAgICBsZXQgcmFuZ2UgPSBzdXBwSW5mby5yYW5nZSR7ZW50cnlJbmRleH07XG4gICAgcmV0dXJuIGYzMihhYnMoZjMyKGFbMF0pIC0gZjMyKGJbMF0pKSAvIHJhbmdlKTtcbiAgYDtcbn1cbi8vIHRhbmltb3RvIGRpc3RhbmNlIGZvciB1aW50MzIgYXJyYXlzIG9mIGxlbmd0aCAke21heEFycmF5U2l6ZX1cbmV4cG9ydCBmdW5jdGlvbiB3ZWJHUFVUYW5pbW90b0JpdEFycmF5KG1heEFycmF5U2l6ZSwgX2VudHJ5SW5kZXgpIHtcbiAgICByZXR1cm4gYFxuICB2YXIgb25CaXRzYTogdTMyID0gMHU7XG4gIHZhciBvbkJpdHNiOiB1MzIgPSAwdTtcbiAgZm9yICh2YXIgaSA9IDB1OyBpIDwgJHttYXhBcnJheVNpemV9dTsgaSA9IGkgKyAxdSkge1xuICAgICAgb25CaXRzYSA9IG9uQml0c2EgKyBjb3VudE9uZUJpdHMoYVtpXSk7XG4gICAgICBvbkJpdHNiID0gb25CaXRzYiArIGNvdW50T25lQml0cyhiW2ldKTtcbiAgfVxuXG4gIGlmIChvbkJpdHNhID09IDB1ICYmIG9uQml0c2IgPT0gMHUpIHtcbiAgICAgIHJldHVybiAwLjA7XG4gIH1cblxuICBsZXQgdG90YWxPbkJpdHMgPSBvbkJpdHNhICsgb25CaXRzYjtcbiAgdmFyIGNvbW1vbkJpdHM6IHUzMiA9IDB1O1xuICBmb3IgKHZhciBpID0gMHU7IGkgPCAke21heEFycmF5U2l6ZX11OyBpID0gaSArIDF1KSB7XG4gICAgICBjb21tb25CaXRzID0gY29tbW9uQml0cyArIGNvdW50T25lQml0cyhhW2ldICYgYltpXSk7XG4gIH1cblxuICByZXR1cm4gMS4wIC0gZjMyKGNvbW1vbkJpdHMpIC8gZjMyKHRvdGFsT25CaXRzIC0gY29tbW9uQml0cyk7XG4gIGA7XG59XG5leHBvcnQgZnVuY3Rpb24gd2ViR1BVQXN5bW1ldHJpY0JpdEFycmF5KG1heEFycmF5U2l6ZSwgX2VudHJ5SW5kZXgpIHtcbiAgICByZXR1cm4gYFxuICB2YXIgb25CaXRzYTogdTMyID0gMHU7XG4gIHZhciBvbkJpdHNiOiB1MzIgPSAwdTtcbiAgZm9yICh2YXIgaSA9IDB1OyBpIDwgJHttYXhBcnJheVNpemV9dTsgaSA9IGkgKyAxdSkge1xuICAgICAgb25CaXRzYSA9IG9uQml0c2EgKyBjb3VudE9uZUJpdHMoYVtpXSk7XG4gICAgICBvbkJpdHNiID0gb25CaXRzYiArIGNvdW50T25lQml0cyhiW2ldKTtcbiAgfVxuICBsZXQgbWluID0gbWluKG9uQml0c2EsIG9uQml0c2IpO1xuICBpZiAobWluID09IDB1KSB7XG4gICAgcmV0dXJuIDEuMDtcbiAgfVxuICB2YXIgY29tbW9uQml0czogdTMyID0gMHU7XG4gIGZvciAodmFyIGkgPSAwdTsgaSA8ICR7bWF4QXJyYXlTaXplfXU7IGkgPSBpICsgMXUpIHtcbiAgICAgIGNvbW1vbkJpdHMgPSBjb21tb25CaXRzICsgY291bnRPbmVCaXRzKGFbaV0gJiBiW2ldKTtcbiAgfVxuICByZXR1cm4gMS4wIC0gZjMyKGNvbW1vbkJpdHMpIC8gZjMyKG1pbik7XG4gIGA7XG59XG5leHBvcnQgZnVuY3Rpb24gd2ViR1BVQ29zaW5lQml0QXJyYXkobWF4QXJyYXlTaXplLCBfZW50cnlJbmRleCkge1xuICAgIHJldHVybiBgXG4gIHZhciBvbkJpdHNhOiB1MzIgPSAwdTtcbiAgdmFyIG9uQml0c2I6IHUzMiA9IDB1O1xuICBmb3IgKHZhciBpID0gMHU7IGkgPCAke21heEFycmF5U2l6ZX11OyBpID0gaSArIDF1KSB7XG4gICAgICBvbkJpdHNhID0gb25CaXRzYSArIGNvdW50T25lQml0cyhhW2ldKTtcbiAgICAgIG9uQml0c2IgPSBvbkJpdHNiICsgY291bnRPbmVCaXRzKGJbaV0pO1xuICB9XG4gIGxldCB0b3RhbCA9IG9uQml0c2EgKiBvbkJpdHNiOyAvLyBwLnMuIGhlcmUgdG90YWwgaXMgdGFrZW4gYnkgbXVsdGlwbHlpbmdcbiAgaWYgKHRvdGFsID09IDB1KSB7XG4gICAgcmV0dXJuIDEuMDtcbiAgfVxuICB2YXIgY29tbW9uQml0czogdTMyID0gMHU7XG4gIGZvciAodmFyIGkgPSAwdTsgaSA8ICR7bWF4QXJyYXlTaXplfXU7IGkgPSBpICsgMXUpIHtcbiAgICAgIGNvbW1vbkJpdHMgPSBjb21tb25CaXRzICsgY291bnRPbmVCaXRzKGFbaV0gJiBiW2ldKTtcbiAgfVxuICByZXR1cm4gMS4wIC0gZjMyKGNvbW1vbkJpdHMpIC8gc3FydChmMzIodG90YWwpKTtcbiAgYDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB3ZWJHUFVTb2thbEJpdEFycmF5KG1heEFycmF5U2l6ZSwgX2VudHJ5SW5kZXgpIHtcbiAgICByZXR1cm4gYFxuICB2YXIgb25CaXRzYTogdTMyID0gMHU7XG4gIHZhciBvbkJpdHNiOiB1MzIgPSAwdTtcbiAgZm9yICh2YXIgaSA9IDB1OyBpIDwgJHttYXhBcnJheVNpemV9dTsgaSA9IGkgKyAxdSkge1xuICAgICAgb25CaXRzYSA9IG9uQml0c2EgKyBjb3VudE9uZUJpdHMoYVtpXSk7XG4gICAgICBvbkJpdHNiID0gb25CaXRzYiArIGNvdW50T25lQml0cyhiW2ldKTtcbiAgfVxuICBsZXQgdG90YWwgPSBvbkJpdHNhICsgb25CaXRzYjtcbiAgaWYgKHRvdGFsID09IDB1KSB7XG4gICAgcmV0dXJuIDEuMDtcbiAgfVxuICB2YXIgY29tbW9uQml0czogdTMyID0gMHU7XG4gIGZvciAodmFyIGkgPSAwdTsgaSA8ICR7bWF4QXJyYXlTaXplfXU7IGkgPSBpICsgMXUpIHtcbiAgICAgIGNvbW1vbkJpdHMgPSBjb21tb25CaXRzICsgY291bnRPbmVCaXRzKGFbaV0gJiBiW2ldKTtcbiAgfVxuICByZXR1cm4gMS4wIC0gZjMyKGNvbW1vbkJpdHMpIC8gZjMyKHRvdGFsICogMiAtIGNvbW1vbkJpdHMgKiAzKTtcbiAgYDtcbn1cbmV4cG9ydCB2YXIgV0VCR1BVRElTVEFOQ0U7XG4oZnVuY3Rpb24gKFdFQkdQVURJU1RBTkNFKSB7XG4gICAgV0VCR1BVRElTVEFOQ0VbXCJIQU1NSU5HXCJdID0gXCJIYW1taW5nXCI7XG4gICAgV0VCR1BVRElTVEFOQ0VbXCJFVUNMSURFQU5cIl0gPSBcIkV1Y2xpZGVhblwiO1xuICAgIFdFQkdQVURJU1RBTkNFW1wiTUFOSEFUVEFOXCJdID0gXCJNYW5oYXR0YW5cIjtcbiAgICBXRUJHUFVESVNUQU5DRVtcIlRBTklNT1RPXCJdID0gXCJUYW5pbW90b1wiO1xuICAgIFdFQkdQVURJU1RBTkNFW1wiTEVWRU5TVEVJTlwiXSA9IFwiTGV2ZW5zaHRlaW5cIjtcbiAgICBXRUJHUFVESVNUQU5DRVtcIk5FRURMRU1BTl9XVU5TQ0hcIl0gPSBcIk5lZWRsZW1hbm4tV3Vuc2NoXCI7XG4gICAgV0VCR1BVRElTVEFOQ0VbXCJNT05PTUVSX0NIRU1JQ0FMX0RJU1RBTkNFXCJdID0gXCJNb25vbWVyIGNoZW1pY2FsIGRpc3RhbmNlXCI7XG4gICAgV0VCR1BVRElTVEFOQ0VbXCJTT0tBTFwiXSA9IFwiU29rYWxcIjtcbiAgICBXRUJHUFVESVNUQU5DRVtcIkNPU0lORVwiXSA9IFwiQ29zaW5lXCI7XG4gICAgV0VCR1BVRElTVEFOQ0VbXCJBU1lNTUVUUklDXCJdID0gXCJBc3ltbWV0cmljXCI7XG4gICAgV0VCR1BVRElTVEFOQ0VbXCJEaWZmZXJlbmNlXCJdID0gXCJEaWZmZXJlbmNlXCI7XG4gICAgV0VCR1BVRElTVEFOQ0VbXCJPbmVIb3RcIl0gPSBcIk9uZS1Ib3RcIjtcbn0pKFdFQkdQVURJU1RBTkNFIHx8IChXRUJHUFVESVNUQU5DRSA9IHt9KSk7XG5leHBvcnQgY29uc3Qgd2ViR1BVRnVuY3Rpb25zID0ge1xuICAgIFtXRUJHUFVESVNUQU5DRS5IQU1NSU5HXTogd2ViR1BVSGFtbWluZyxcbiAgICBbV0VCR1BVRElTVEFOQ0UuRVVDTElERUFOXTogd2ViR1BVRXVjbGlkZWFuLFxuICAgIFtXRUJHUFVESVNUQU5DRS5NQU5IQVRUQU5dOiB3ZWJHUFVNYW5oYXR0YW4sXG4gICAgW1dFQkdQVURJU1RBTkNFLlRBTklNT1RPXTogd2ViR1BVVGFuaW1vdG9CaXRBcnJheSxcbiAgICBbV0VCR1BVRElTVEFOQ0UuTEVWRU5TVEVJTl06IHdlYkdQVUxldmVuc3RlaW4sXG4gICAgW1dFQkdQVURJU1RBTkNFLk5FRURMRU1BTl9XVU5TQ0hdOiB3ZWJHUFVOZWVkbGVtYW5XdW5zY2gsXG4gICAgW1dFQkdQVURJU1RBTkNFLk1PTk9NRVJfQ0hFTUlDQUxfRElTVEFOQ0VdOiB3ZWJHUFVNb25vbWVyQ2hlbWljYWxEaXN0YW5jZSxcbiAgICBbV0VCR1BVRElTVEFOQ0UuU09LQUxdOiB3ZWJHUFVTb2thbEJpdEFycmF5LFxuICAgIFtXRUJHUFVESVNUQU5DRS5DT1NJTkVdOiB3ZWJHUFVDb3NpbmVCaXRBcnJheSxcbiAgICBbV0VCR1BVRElTVEFOQ0UuQVNZTU1FVFJJQ106IHdlYkdQVUFzeW1tZXRyaWNCaXRBcnJheSxcbiAgICBbV0VCR1BVRElTVEFOQ0UuRGlmZmVyZW5jZV06IHdlYkdQVU51bWVyaWNEaXN0YW5jZSxcbiAgICBbV0VCR1BVRElTVEFOQ0UuT25lSG90XTogd2ViR1BVT25lSG90RGlzdGFuY2Vcbn07XG5leHBvcnQgY29uc3QgZGlzdGFuY2VGdW5jdGlvbkNvbXBsZXhpdHkgPSB7XG4gICAgW1dFQkdQVURJU1RBTkNFLkhBTU1JTkddOiAobWF4RW50cnlTaXplKSA9PiBNYXRoLmNlaWwobWF4RW50cnlTaXplIC8gMzApLFxuICAgIFtXRUJHUFVESVNUQU5DRS5FVUNMSURFQU5dOiAobWF4RW50cnlTaXplKSA9PiBNYXRoLmNlaWwobWF4RW50cnlTaXplIC8gMzApLFxuICAgIFtXRUJHUFVESVNUQU5DRS5NQU5IQVRUQU5dOiAobWF4RW50cnlTaXplKSA9PiBNYXRoLmNlaWwobWF4RW50cnlTaXplIC8gMzApLFxuICAgIFtXRUJHUFVESVNUQU5DRS5UQU5JTU9UT106IChtYXhFbnRyeVNpemUpID0+IE1hdGguY2VpbChtYXhFbnRyeVNpemUgLyA4MCksXG4gICAgW1dFQkdQVURJU1RBTkNFLlNPS0FMXTogKG1heEVudHJ5U2l6ZSkgPT4gTWF0aC5jZWlsKG1heEVudHJ5U2l6ZSAvIDgwKSxcbiAgICBbV0VCR1BVRElTVEFOQ0UuQ09TSU5FXTogKG1heEVudHJ5U2l6ZSkgPT4gTWF0aC5jZWlsKG1heEVudHJ5U2l6ZSAvIDgwKSxcbiAgICBbV0VCR1BVRElTVEFOQ0UuQVNZTU1FVFJJQ106IChtYXhFbnRyeVNpemUpID0+IE1hdGguY2VpbChtYXhFbnRyeVNpemUgLyA4MCksXG4gICAgW1dFQkdQVURJU1RBTkNFLkxFVkVOU1RFSU5dOiAobWF4RW50cnlTaXplKSA9PiBNYXRoLmNlaWwobWF4RW50cnlTaXplICogbWF4RW50cnlTaXplIC8gNjApLFxuICAgIFtXRUJHUFVESVNUQU5DRS5ORUVETEVNQU5fV1VOU0NIXTogKG1heEVudHJ5U2l6ZSkgPT4gTWF0aC5jZWlsKG1heEVudHJ5U2l6ZSAqIG1heEVudHJ5U2l6ZSAvIDYwKSxcbiAgICBbV0VCR1BVRElTVEFOQ0UuTU9OT01FUl9DSEVNSUNBTF9ESVNUQU5DRV06IChtYXhFbnRyeVNpemUpID0+IE1hdGguY2VpbChtYXhFbnRyeVNpemUgLyAyNSksXG4gICAgW1dFQkdQVURJU1RBTkNFLkRpZmZlcmVuY2VdOiAoX21heEVudHJ5U2l6ZSkgPT4gMSxcbiAgICBbV0VCR1BVRElTVEFOQ0UuT25lSG90XTogKF9tYXhFbnRyeVNpemUpID0+IE1hdGguY2VpbChfbWF4RW50cnlTaXplIC8gNDApLFxufTtcbmV4cG9ydCBjb25zdCBUeXBlU3VwcG9ydGVkRGlzdGFuY2VzID0ge1xuICAgIFtcIlNUUklOR1wiIC8qIFdHUFVFTlRSWVRZUEUuU1RSSU5HICovXTogbmV3IFNldChbV0VCR1BVRElTVEFOQ0UuSEFNTUlORywgV0VCR1BVRElTVEFOQ0UuTEVWRU5TVEVJTiwgV0VCR1BVRElTVEFOQ0UuTkVFRExFTUFOX1dVTlNDSCwgV0VCR1BVRElTVEFOQ0UuTU9OT01FUl9DSEVNSUNBTF9ESVNUQU5DRSwgV0VCR1BVRElTVEFOQ0UuT25lSG90XSksXG4gICAgW1wiVUlOVDMyQVJSQVlcIiAvKiBXR1BVRU5UUllUWVBFLlVJTlQzMkFSUkFZICovXTogbmV3IFNldChbV0VCR1BVRElTVEFOQ0UuSEFNTUlORywgV0VCR1BVRElTVEFOQ0UuRVVDTElERUFOLCBXRUJHUFVESVNUQU5DRS5NQU5IQVRUQU4sIFdFQkdQVURJU1RBTkNFLk1PTk9NRVJfQ0hFTUlDQUxfRElTVEFOQ0UsIFdFQkdQVURJU1RBTkNFLkxFVkVOU1RFSU4sIFdFQkdQVURJU1RBTkNFLk5FRURMRU1BTl9XVU5TQ0gsIFdFQkdQVURJU1RBTkNFLlRBTklNT1RPLCBXRUJHUFVESVNUQU5DRS5DT1NJTkUsIFdFQkdQVURJU1RBTkNFLlNPS0FMLCBXRUJHUFVESVNUQU5DRS5BU1lNTUVUUklDLCBXRUJHUFVESVNUQU5DRS5PbmVIb3QsIFdFQkdQVURJU1RBTkNFLkRpZmZlcmVuY2VdKSxcbiAgICBbXCJGTE9BVDMyQVJSQVlcIiAvKiBXR1BVRU5UUllUWVBFLkZMT0FUMzJBUlJBWSAqL106IG5ldyBTZXQoW1dFQkdQVURJU1RBTkNFLkVVQ0xJREVBTiwgV0VCR1BVRElTVEFOQ0UuTUFOSEFUVEFOLCBXRUJHUFVESVNUQU5DRS5EaWZmZXJlbmNlXSksXG4gICAgW1wiTlVNQkVSXCIgLyogV0dQVUVOVFJZVFlQRS5OVU1CRVIgKi9dOiBuZXcgU2V0KFtXRUJHUFVESVNUQU5DRS5FVUNMSURFQU4sIFdFQkdQVURJU1RBTkNFLk1BTkhBVFRBTiwgV0VCR1BVRElTVEFOQ0UuRGlmZmVyZW5jZV0pLFxuICAgIFtcIkJJVEFSUkFZXCIgLyogV0dQVUVOVFJZVFlQRS5CSVRBUlJBWSAqL106IG5ldyBTZXQoW1dFQkdQVURJU1RBTkNFLlRBTklNT1RPLCBXRUJHUFVESVNUQU5DRS5DT1NJTkUsIFdFQkdQVURJU1RBTkNFLlNPS0FMLCBXRUJHUFVESVNUQU5DRS5BU1lNTUVUUklDXSlcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD13ZWJHUFUtbXVsdGljb2wtZGlzdGFuY2VzLmpzLm1hcCIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuaW1wb3J0IHsgV0VCR1NMQUdHUkVHQVRJT05GVU5DVElPTlMgfSBmcm9tICcuL3dlYkdQVS1hZ2dyZWdhdGlvbic7XG5pbXBvcnQgeyB3ZWJHUFVGdW5jdGlvbnMgfSBmcm9tICcuL3dlYkdQVS1tdWx0aWNvbC1kaXN0YW5jZXMnO1xuaW1wb3J0IHsgd2ViR1BVUHJvY2Vzc0luZm8gfSBmcm9tICcuL3dlYkdQVS1wcm9jZXNzLWluZm8nO1xuLyoqIGdlbmVyYXRlIEtOTiBiYXNlZCBvbiBsaXN0IG9mIGxpc3RzIG9mIGVudHJpZXMuXG4gKiAgdGhlc2UgZW50cmllcyBhcmUgZWFjaCBlbmNvZGVkIGFzIFVpbnQzMkFycmF5IG9yIEZMT0FUMzJBcnJheSAoZGVwZW5kaW5nIG9uIHRoZWlyIHR5cGUpLlxuICogZm9yIGV4YW1wbGUsIHNlcXVlbmNlcyB3b3VsZCBiZSBlbmNvZGVkIGFzIFVpbnQzMkFycmF5IGJhc2VkIG9uIGNoYXIgY29kZSBvZiB0aGUgbGV0dGVyIGF0IGVhY2ggcG9zaXRpb24uXG4gKiBbNjUsIDY2LCA2NywgNjgsIDY5XSB3b3VsZCBiZSBhIHNlcXVlbmNlIG9mIDUgbGV0dGVycy5cbiAqIGZvciBjaGVtaWNhbCBmaW5nZXJwcmludHMsIGl0IHdvdWxkIGJlIGEgYmluYXJ5IGFycmF5IG9mIDBzIGFuZCAxcyxcbiAqIHJlcHJlc2VudGVkIGFzIFVpbnQzMkFycmF5KF9kYXRhIHByb3BlcnR5IG9mIERHIGJpdGFycmF5KS5cbiAqXG4gKiBCZSB3YXJlIHRoYXQgc2l6ZSBvZiBlbnRyeUxpc3QsIGRpc3RhbmNlTWV0cmljcywgd2VpZ2h0cyBhbmQgb3B0aW9ucyBtdXN0IGJlIHRoZSBzYW1lLlxuICogaWYgdGhlcmUgYXJlIG5vIG9wdGlvbnMgZm9yIGVudHJpZXMgaSwgcGFzcyBhbiBlbXB0eSBvYmplY3QuXG4gKiBmb3Igbm93IG9wdGlvbnMgYXJlIG5lZWRlZCBmb3I6XG4gKiBuZWVkbGVtYW4td3Vuc2NoIGFuZCBtb25vbWVyIGNoZW1pY2FsIGRpc3RhbmNlczogc2VlIHtAbGluayBCaW9EaXN0YW5jZUZuT3B0aW9uc30gYXMgZm9yIGhvdyBpdCBzaG91bGQgYmUgcGFzc2VkXG4gKiBudW1lcmljIGRpc3RhbmNlcyAoRGlmZmVyZW5jZSk6IHtyYW5nZTogbnVtYmVyfSB3aGVyZSByYW5nZSBpcyB0aGUgcmFuZ2Ugb2YgdGhlIHZhbHVlcyBpbiB0aGUgY29sdW1uIChtYXggLSBtaW4pLlxuICogaW4gYm90aCBjYXNlcywgaWYgb3B0aW9ucyBhcmUgbm90IHByb3ZpZGVkLCB0aGV5IHdpbGwgYmUgY2FsY3VsYXRlZCBhdXRvbWF0aWNhbGx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbXVsdGlDb2xXZWJHUFVLTk4oZW50cnlMaXN0LCAvLyBsaXN0IG9mIGxpc3RzIG9mIGVudHJpZXMsIGZvciBtdWx0aXBsZSBjb2x1bW5zXG5rbm5TaXplID0gMTUsIC8vIHNpemUgb2YgdGhlIGstbmVhcmVzdCBuZWlnaGJvcnNcbmRpc3RhbmNlTWV0cmljcywgLy8gZGlzdGFuY2UgbWV0cmljcyBmb3IgZWFjaCBjb2x1bW5cbmFnZ3JlZ2F0aW9uRnVuY3Rpb24sIC8vIGFnZ3JlZ2F0aW9uIGZ1bmN0aW9uIGZvciB0aGUgZGlzdGFuY2VzXG53ZWlnaHRzLCAvLyB3ZWlnaHRzIGZvciBlYWNoIGNvbHVtblxub3B0aW9ucyAvLyBzdXBwbGVtZW50YXJ5IG9wdGlvbnMgZm9yIGVhY2ggY29sdW1uXG4pIHtcbiAgICB2YXIgX2E7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgLy8gZmlyc3QsIGNoZWNrIHRoYXQgYWxsIHRoZSBzdXBwbGVtZW50YXJ5IG9wdGlvbnMgYXJlIHByb3ZpZGVkIGFuZCBhcmUgdGhlIHNhbWUgbGVuZ3RoOlxuICAgICAgICBpZiAob3B0aW9ucy5sZW5ndGggIT09IGVudHJ5TGlzdC5sZW5ndGggfHxcbiAgICAgICAgICAgIG9wdGlvbnMubGVuZ3RoICE9PSBkaXN0YW5jZU1ldHJpY3MubGVuZ3RoIHx8IG9wdGlvbnMubGVuZ3RoICE9PSB3ZWlnaHRzLmxlbmd0aClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignT3B0aW9ucywgd2VpZ3RocyBhbmQgZGlzdGFuY2UgZnVuY3Rpb25zIG11c3QgYmUgcHJvdmlkZWQgZm9yIGVhY2ggY29sdW1uJyk7XG4gICAgICAgIC8vIGNoZWNrIHRoYXQgYWxsIHRoZSBlbnRyeSBsaXN0cyBhcmUgdGhlIHNhbWUgbGVuZ3RoXG4gICAgICAgIGlmIChlbnRyeUxpc3Quc29tZSgobGlzdCkgPT4gbGlzdC5sZW5ndGggIT09IGVudHJ5TGlzdFswXS5sZW5ndGgpKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBbGwgZW50cnkgbGlzdHMgbXVzdCBiZSB0aGUgc2FtZSBsZW5ndGgnKTtcbiAgICAgICAgY29uc3QgbnVtT2ZDb2x1bW5zID0gZW50cnlMaXN0Lmxlbmd0aDsgLy8gbnVtYmVyIG9mIGNvbHVtbnNcbiAgICAgICAgY29uc3QgbGlzdFNpemUgPSBlbnRyeUxpc3RbMF0ubGVuZ3RoOyAvLyBzaXplIG9mIGVhY2ggbGlzdCAob3IgY29sdW1uKVxuICAgICAgICBjb25zdCBwcm9jZXNzSW5mbyA9IGVudHJ5TGlzdC5tYXAoKGVudHJ5LCBpKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gd2ViR1BVUHJvY2Vzc0luZm8oZW50cnksIGRpc3RhbmNlTWV0cmljc1tpXSwgaSwgb3B0aW9uc1tpXSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAobnVtT2ZDb2x1bW5zID09PSAwKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBjb2x1bW5zIHByb3ZpZGVkLiBQbGVhc2UgcHJvdmlkZSBhdCBsZWFzdCBvbmUgY29sdW1uIG9mIGRhdGEuJyk7XG4gICAgICAgIGlmIChudW1PZkNvbHVtbnMgPT09IDEpXG4gICAgICAgICAgICBhZ2dyZWdhdGlvbkZ1bmN0aW9uID0gXCJNQU5IQVRUQU5cIiAvKiBXRUJHU0xBR0dSRUdBVElPTi5NQU5IQVRUQU4gKi87IC8vIHNhdmUgYSBiaXQgb2YgdGltZVxuICAgICAgICAvLyBjb21iaW5lIGFsbCBzdHJ1Y3QgdHlwZXMgaW50byBvbmUgdG8gcHV0IGludG8gdGhlIHN1cHBJbmZvIHN0cnVjdC5cbiAgICAgICAgbGV0IHN1cHBJbmZvV2dzbCA9IHByb2Nlc3NJbmZvLm1hcCgoaW5mbykgPT4gaW5mby5zdXBwSW5mb1N0cnVjdFdnc2wpXG4gICAgICAgICAgICAuZmlsdGVyKCh3Z3NsKSA9PiAhIXdnc2wgJiYgd2dzbCAhPSAnJykuam9pbignLFxcbicpO1xuICAgICAgICAvLyBzdHJ1Y3R1cmVzIGluIHdnc2wgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBtZW1iZXIsIHNvIGlmIHdlIGhhdmUgbm8gc3RydWN0dXJlcywgd2UgbmVlZCB0byBhZGQgYSBkdW1teSBvbmVcbiAgICAgICAgbGV0IG5lZWRzRHVtbXkgPSBmYWxzZTtcbiAgICAgICAgaWYgKCFzdXBwSW5mb1dnc2wgfHwgc3VwcEluZm9XZ3NsLnRyaW0oKSA9PSAnJykge1xuICAgICAgICAgICAgbmVlZHNEdW1teSA9IHRydWU7XG4gICAgICAgICAgICBzdXBwSW5mb1dnc2wgPSAnXFxuZHVtbXk6IGYzMlxcbic7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29tYmluZSBhbGwgY29tcGxleGl0aWVzIGludG8gb25lXG4gICAgICAgIGNvbnN0IGNvbWJpbmVkQ29tcGxleGl0eSA9IHByb2Nlc3NJbmZvLnJlZHVjZSgoYSwgYikgPT4gYSArIGIuY29tcGxleGl0eSwgMCk7XG4gICAgICAgIC8vIGNvbWJpbmUgYWxsIGRhdGEgd2dzbCBzdHJ1Y3QgY29kZSBpbnRvIG9uZVxuICAgICAgICBjb25zdCBkYXRhV2dzbCA9IHByb2Nlc3NJbmZvLm1hcCgoaW5mbykgPT4gaW5mby5kYXRhU3RydWN0V2dzbCkuZmlsdGVyKCh3Z3NsKSA9PiAhIXdnc2wgJiYgd2dzbCAhPSAnJykuam9pbignLFxcbicpO1xuICAgICAgICAvLyBjb21iaW5lIGFsbCBhcnJheSBzaXplcyBpbnRvIG9uZSBhcnJheSAoZWFzaWVyIGZvciBzZXR0aW5nKVxuICAgICAgICBjb25zdCBhcnJheVNpemVzID0gbmV3IFVpbnQzMkFycmF5KG51bU9mQ29sdW1ucyAqIGxpc3RTaXplKTtcbiAgICAgICAgcHJvY2Vzc0luZm8uZm9yRWFjaCgoaW5mbywgaSkgPT4ge1xuICAgICAgICAgICAgYXJyYXlTaXplcy5zZXQoaW5mby5hcnJheVNpemVzLCBpICogbGlzdFNpemUpO1xuICAgICAgICB9KTsgLy8gYXJyYXkuZmxhdCBpcyBub3QgYXMgb3B0aW1pemVkIGFzIHRoaXNcbiAgICAgICAgLy8gaWYgd2UgdHJ5IHRvIG1hcCBsYXJnZSBrbm4gZGlyZWN0bHkgZnJvbSBHUFUsIHNvbWV0aW1lcywgZGV2aWNlIGRpc2Nvbm5lY3RzLiBzbyB3ZSBuZWVkIHRvIGRvIGl0IGluIGNodW5rcywgYSBnb29kIG51bWJlclxuICAgICAgICAvLyB3ZSBmb3VuZCBpcyAxMDAwMC4gU28gd2Ugd2lsbCBwZXJmb3JtIGNvbXB1dGF0aW9ucyBpbiBjaHVua3Mgb2YgMTAwMDAuXG4gICAgICAgIGNvbnN0IGNvbXB1dGF0aW9uc1BlclBhc3MgPSAxMDAwMDtcbiAgICAgICAgLy8gYWxzbywgYXMgdGhlIGNvbXB1dGF0aW9uIHBlciB0aHJlYWQgdGFrZXMgc29tZSB0aW1lLCB3ZSBhbHNvIG5lZWQgdG8gZGl2aWRlIHRoZSB3b3JrIGludG8gc21hbGxlciBjaHVua3MuIG1lYW5pbmdcbiAgICAgICAgLy8gdGhhdCB3ZSB3aWxsIGRpdmlkZSBudW1tcGVyIG9mIHBhaXIgY29tcHV0YXRpb25zIHBlciBwYXNzLiBzdGFydCBhbmQgZW5kIG9mIHRoZSBwYWlyIGNvbXBhcmlzb25zIHdpbGwgYmUgc3RvcmVkIGluIHN0YXJ0QXRFbmRBdCBidWZmZXIgKHZlYzQ8dTMyPikgYXMgeiBhbmQgdyBjb29yZGluYXRlcy5cbiAgICAgICAgY29uc3QgcGFpckNvbXBhcmlzb25zUGVyUGFzcyA9IE1hdGguY2VpbCgxMDAwMCAvIGNvbWJpbmVkQ29tcGxleGl0eSk7XG4gICAgICAgIC8vIGdldCB0aGUgYWRhcHRlclxuICAgICAgICBjb25zdCBhZGFwdGVyID0geWllbGQgKChfYSA9IG5hdmlnYXRvci5ncHUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZXF1ZXN0QWRhcHRlcigpKTtcbiAgICAgICAgY29uc3QgZGV2aWNlID0geWllbGQgKGFkYXB0ZXIgPT09IG51bGwgfHwgYWRhcHRlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCkpO1xuICAgICAgICBpZiAoIWRldmljZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3Qgd29ya0dyb3VwRGl2aXNpb24gPSAxMDsgLy8gaG93IG1hbnkgdGhyZWFkcyBpbnNpZGUgb2Ygb25lIHdvcmtncm91cCBkaW1lbnNpb24gKGluIHRoaXMgY2FzZSAxMCAqIDEwIHRocmVhZHMgcGVyIHdvcmtncm91cClcbiAgICAgICAgY29uc3QgdGhyZWFkc1Blcldvcmtncm91cCA9IHdvcmtHcm91cERpdmlzaW9uICogd29ya0dyb3VwRGl2aXNpb247XG4gICAgICAgIGNvbnN0IHdvcmtncm91cHNEaW0gPSBNYXRoLmNlaWwoTWF0aC5zcXJ0KE1hdGguY2VpbChjb21wdXRhdGlvbnNQZXJQYXNzIC8gdGhyZWFkc1Blcldvcmtncm91cCkpKTsgLy8gaG93IG1hbnkgd29ya2dyb3VwcyBwZXIgMmQgZGltZW5zaW9uXG4gICAgICAgIGNvbnN0IGdsb2JhbFRocmVhZERpbVNpemUgPSB3b3JrZ3JvdXBzRGltICogd29ya0dyb3VwRGl2aXNpb247IC8vIGhvdyBtYW55IHRocmVhZHMgcGVyIDJkIGRpbWVuc2lvblxuICAgICAgICAvLyBjb25zb2xlLmxvZyhnZXRDb21iaW5lZERpc3RhbmNlU2NyaXB0KGRpc3RhbmNlTWV0cmljcywgcHJvY2Vzc0luZm8ubWFwKChpbmZvKSA9PiBpbmZvLm1heEVudHJ5TGVuKSwga25uU2l6ZSwgYWdncmVnYXRpb25GdW5jdGlvbikpO1xuICAgICAgICAvLyByZXR1cm47XG4gICAgICAgIGNvbnN0IHJlc3VsdEluZGV4ZXMgPSBuZXcgQXJyYXkobGlzdFNpemUpXG4gICAgICAgICAgICAuZmlsbChudWxsKVxuICAgICAgICAgICAgLm1hcCgoKSA9PiBuZXcgVWludDMyQXJyYXkoa25uU2l6ZSkpO1xuICAgICAgICBjb25zdCByZXN1bHREaXN0YW5jZXMgPSBuZXcgQXJyYXkobGlzdFNpemUpXG4gICAgICAgICAgICAuZmlsbChudWxsKVxuICAgICAgICAgICAgLm1hcCgoKSA9PiBuZXcgRmxvYXQzMkFycmF5KGtublNpemUpKTtcbiAgICAgICAgY29uc3QgbW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7XG4gICAgICAgICAgICBsYWJlbDogJ0tOTiBjb21wdXRlIHNoYWRlcicsXG4gICAgICAgICAgICBjb2RlOiBgXG4gICAgICAgICAgLy8gdGhpcyBzdHJ1Y3Qgd2lsbCBjb250YWluIGFsbCB0aGUgaW5mbyBhYm91dCB0aGUgY29tcHV0YXRpb24sIHN0YXJ0QXRFbmRBdCB3aWxsIGNvbnRhaW4gdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIGtubkRpc3RhbmNlcyBhbmQga25uSW5kZXhlcy5cbiAgICAgICAgICAvLyBhcnJheSBvZiBzaXplcyBmb3IgZWFjaCBlbnRyaWVzLCBhbmQgdGhlIG1haW4gZGF0YSBhcyBhcnJheXMgb2YgYXJyYXlzIGNhbGxlZCBkYXRhMCwgZGF0YTEgYW5kIHNvIG9uLiBnb29kIHRoaW5nIGlzIHRoYXQgYmVjYXVzZSB0aGUgZmlyc3QgZW50cnkgaXMgdmVjNDx1MzI+LFxuICAgICAgICAgIC8vIHRoZXJlIHdpbGwgYmUgbm8gcGFkZGluZ3MsIHNvIG5vIG5lZWQgdG8gd29ycnkgYWJvdXQgcGFkZGluZyBkYXRhLiBhbHNvLCBhcnJheXMgYW5kIG1hdHJpY2VzIGdldCBzdHVja2VkIHRvZ2V0aGVyLCBzbyBubyBwYWRkaW5nIHRoZXJlIGFzIHdlbGwuXG4gICAgICAgICAgLy8gd2hhdCB3ZSBuZWVkIHRvIHdvcnJ5IGFib3V0IGlzIHRoZSBwYWRkaW5nIG9mIG92ZXJhbGwgc3RydWN0LiB0aGUgc2l6ZSBvZiBvdmVyYWxsIHN0cnVjdCB3aWxsIGJlIGZhY3RvciBvZiAxNiBieXRlcywgc28ga2VlcCB0aGF0IGluIG1pbmQuXG4gICAgICAgICAgc3RydWN0IENvbXB1dGVJbmZvIHtcbiAgICAgICAgICAgIC8vIHRoZSB4IGNvb3JkaW5hdGUgd2lsbCBjb250YWluIHRoZSBzdGFydCBpbmRleCBvZiB0aGUga25uRGlzdGFuY2VzIGFuZCBrbm5JbmRleGVzLCB3aGlsZSB5IHdpbGwgY29udGFpbiB0aGUgZW5kIGluZGV4ICAgXG4gICAgICAgICAgICAvLyB0aGUgeiBjb29yZGluYXRlIHdpbGwgY29udGFpbiB0aGUgc3RhcnQgb2YgdGhlIHBhaXIgY29tcGFyaXNvbnMsIHdoaWxlIHcgd2lsbCBjb250YWluIHRoZSBlbmQgb2YgdGhlIHBhaXIgY29tcGFyaXNvbnNcbiAgICAgICAgICAgIC8vIGp1c3Qga2VlcCBpbiBtaW5kIHRoYXQgdGhpcyB2ZWM0IHdpbGwgYmUgaW4gZmlyc3QgMTYgYnl0ZXMgb2YgY29ycmVzcG9uZGluZyBidWZmZXIuXG4gICAgICAgICAgICBzdGFydEF0RW5kQXQ6IHZlYzQ8dTMyPixcbiAgICAgICAgICAgIC8vIHRoZSBBQ1RVQUxMWSBzaXplcyBvZiBlYWNoIGVudHJ5XG4gICAgICAgICAgICBlbnRyeVNpemVzOiBhcnJheTxhcnJheTx1MzIsICR7bGlzdFNpemV9PiwgJHtudW1PZkNvbHVtbnN9PixcbiAgICAgICAgICAgIC8vIHRoZSB3ZWlnaHRzIGZvciBlYWNoIGVudHJ5XG4gICAgICAgICAgICB3ZWlnaHRzOiBhcnJheTxmMzIsICR7bnVtT2ZDb2x1bW5zfT4sXG4gICAgICAgICAgICAvLyB0aGUgZGF0YSBmb3IgZWFjaCBlbnRyeVxuICAgICAgICAgICAgJHtkYXRhV2dzbH0gLy8gYW4gZXhhbXBsZSBvZiB0aGUgZGF0YVdnc2wgd291bGQgYmU6XG4gICAgICAgICAgICAvL2RhdGEwOiBhcnJheTxhcnJheTx1MzIsMjA+LDEwMD4sXG4gICAgICAgICAgICAvL2RhdGExOiBhcnJheTxhcnJheTx1MzIsMjA+LDEwMD5cbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgc3RydWN0IFN1cHBJbmZvIHtcbiAgICAgICAgICAgIC8vIHN0cnVjdCBjb250YWluaW5nIGFsbCB0aGUgc3VwcGxlbWVudGFyeSBpbmZvLCBsaWtlIHNjb3JpbmcgbWF0cml4LCBhbHBoYWJldCBpbmRleGVzLCByYW5nZSwgZXRjLlxuICAgICAgICAgICAgJHtzdXBwSW5mb1dnc2x9XG4gICAgICAgICAgfTtcbiAgICBcbiAgICAgICAgICBAZ3JvdXAoMCkgQGJpbmRpbmcoMCkgdmFyPHN0b3JhZ2UsIHJlYWRfd3JpdGU+IGtubkluZGV4ZXM6IGFycmF5PGFycmF5PHUzMiwgJHtrbm5TaXplfT4sICR7Y29tcHV0YXRpb25zUGVyUGFzc30+O1xuICAgICAgICAgIEBncm91cCgwKSBAYmluZGluZygxKSB2YXI8c3RvcmFnZSwgcmVhZF93cml0ZT4ga25uRGlzdGFuY2VzOiBhcnJheTxhcnJheTxmMzIsICR7a25uU2l6ZX0+LCAke2NvbXB1dGF0aW9uc1BlclBhc3N9PjsgLy8gZWFjaCB0aW1lIGp1c3QgY29tcHV0ZSBmb3IgYSBzdWJzZXQgb2YgdGhlIGxpc3RcbiAgICAgICAgICBAZ3JvdXAoMCkgQGJpbmRpbmcoMikgdmFyPHN0b3JhZ2UsIHJlYWRfd3JpdGU+IGNvbXB1dGVJbmZvOiBDb21wdXRlSW5mbztcbiAgICAgICAgICBAZ3JvdXAoMCkgQGJpbmRpbmcoMykgdmFyPHN0b3JhZ2UsIHJlYWRfd3JpdGU+IHN1cHBJbmZvOiBTdXBwSW5mbztcbiAgICAgICAgICBcbiAgICAgICAgICBAY29tcHV0ZSBAd29ya2dyb3VwX3NpemUoJHt3b3JrR3JvdXBEaXZpc2lvbn0sICR7d29ya0dyb3VwRGl2aXNpb259KSBmbiBjYWxjS05OKFxuICAgICAgICAgICAgQGJ1aWx0aW4oZ2xvYmFsX2ludm9jYXRpb25faWQpIGlkOiB2ZWMzPHUzMj4sXG4gICAgICAgICAgICBAYnVpbHRpbihsb2NhbF9pbnZvY2F0aW9uX2lkKSBsb2NhbElkOiB2ZWMzPHUzMj5cbiAgICAgICAgICApIHtcbiAgICAgICAgICAgICR7bmVlZHNEdW1teSA/IGBsZXQgb3RoZXJEdW1teSA9IHN1cHBJbmZvLmR1bW15ICogMjtgIDogJyd9IC8vIGp1c3QgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHN1cHBJbmZvIGlzIG5vdCBvcHRpbWl6ZWQgb3V0XG4gICAgICAgICAgICBsZXQgY29sID0gaWQueDsgLy8qICR7d29ya0dyb3VwRGl2aXNpb259ICsgbG9jYWxJZC54O1xuICAgICAgICAgICAgbGV0IHJvdyA9IGlkLnk7IC8vKiAke3dvcmtHcm91cERpdmlzaW9ufSArIGxvY2FsSWQueTtcbiAgICAgICAgICAgIGxldCBncmFwaEluZGV4ID0gcm93ICogJHtnbG9iYWxUaHJlYWREaW1TaXplfSArIGNvbDtcbiAgICAgICAgICAgIGxldCBpbmRleCA9IGdyYXBoSW5kZXggKyBjb21wdXRlSW5mby5zdGFydEF0RW5kQXQueDsgLy8gYWRkIHRoZSBzdGFydGluZyBpbmRleCBvZiB0aGUga25uRGlzdGFuY2VzIGFuZCBrbm5JbmRleGVzXG4gICAgXG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gbWluKCR7bGlzdFNpemV9dSwgY29tcHV0ZUluZm8uc3RhcnRBdEVuZEF0LnkpKSB7cmV0dXJuO31cbiAgICBcbiAgICAgICAgICAgIGxldCBwYWlyQ29tcGFyaXNvblN0YXJ0QXQgPSBjb21wdXRlSW5mby5zdGFydEF0RW5kQXQuejtcbiAgICAgICAgICAgIGxldCBwYWlyQ29tcGFyaXNvbkVuZEF0ID0gbWluKGNvbXB1dGVJbmZvLnN0YXJ0QXRFbmRBdC53LCAke2xpc3RTaXplfXUpO1xuICAgIFxuICAgIFxuICAgICAgICAgICAgLy8gb25seSBjbGVhciB0aGUga25uRGlzdGFuY2VzIGFuZCBrbm5JbmRleGVzIGlmIHdlIGFyZSBhdCB0aGUgc3RhcnQgb2YgdGhlIHBhaXIgY29tcGFyaXNvblxuICAgICAgICAgICAgaWYgKHBhaXJDb21wYXJpc29uU3RhcnRBdCA9PSAwdSkge1xuICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMHU7IGkgPCAke2tublNpemV9OyBpID0gaSArIDF1KSB7XG4gICAgICAgICAgICAgICAga25uRGlzdGFuY2VzW2dyYXBoSW5kZXhdW2ldID0gOTk5OTkuMDtcbiAgICAgICAgICAgICAgICBrbm5JbmRleGVzW2dyYXBoSW5kZXhdW2ldID0gMHU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgIGZvciAodmFyIGk6IHUzMiA9IHBhaXJDb21wYXJpc29uU3RhcnRBdDsgaSA8IHBhaXJDb21wYXJpc29uRW5kQXQ7IGkgPSBpICsgMXUpIHtcbiAgICAgICAgICAgICAgaWYgKGkgPT0gaW5kZXgpIHtjb250aW51ZTt9XG4gICAgICAgICAgICAgIGxldCBkaXN0ID0gY29tYmluZWREaXN0YW5jZShpbmRleCwgaSk7XG4gICAgICAgICAgICAgIGluc2VydEtubihncmFwaEluZGV4LCBkaXN0LCBpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB0aGlzIHdpbGwgZ2VuZXJhdGUgdGhlIGRpc3RhbmNlIHNjcmlwdCBmb3IgZWFjaCBkaXN0YW5jZSBtZXRyaWMgYW5kIHRoZW4gY29tYmluZSB0aGVtIGludG8gb25lXG4gICAgICAgICAgJHtnZXRDb21iaW5lZERpc3RhbmNlU2NyaXB0KGRpc3RhbmNlTWV0cmljcywgcHJvY2Vzc0luZm8ubWFwKChpbmZvKSA9PiBpbmZvLm1heEVudHJ5TGVuKSwga25uU2l6ZSwgYWdncmVnYXRpb25GdW5jdGlvbil9XG4gICAgXG4gICAgICAgICAgZm4gaW5zZXJ0S25uKGtubkluZGV4OiB1MzIsIGRpc3Q6IGYzMiwgaW5kZXg6IHUzMikge1xuICAgICAgICAgICAgLy8gc21hbGwgb3B0aW1pemF0aW9uLCBpZiB0aGUgZGlzdGFuY2UgaXMgbGFyZ2VyIHRoYW4gdGhlIGxhc3QgZWxlbWVudCBpbiB0aGUga25uRGlzdGFuY2VzLCB3ZSBjYW4gc2tpcFxuICAgICAgICAgICAgaWYgKGRpc3QgPj0ga25uRGlzdGFuY2VzW2tubkluZGV4XVske2tublNpemV9IC0gMXVdKSB7cmV0dXJuO31cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwdTsgaSA8ICR7a25uU2l6ZX07IGkgPSBpICsgMXUpIHtcbiAgICAgICAgICAgICAgaWYgKGRpc3QgPCBrbm5EaXN0YW5jZXNba25uSW5kZXhdW2ldKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9ICR7a25uU2l6ZX0gLSAxdTsgaiA+IGk7IGogPSBqIC0gMXUpIHtcbiAgICAgICAgICAgICAgICAgIGtubkRpc3RhbmNlc1trbm5JbmRleF1bal0gPSBrbm5EaXN0YW5jZXNba25uSW5kZXhdW2ogLSAxdV07XG4gICAgICAgICAgICAgICAgICBrbm5JbmRleGVzW2tubkluZGV4XVtqXSA9IGtubkluZGV4ZXNba25uSW5kZXhdW2ogLSAxdV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGtubkRpc3RhbmNlc1trbm5JbmRleF1baV0gPSBkaXN0O1xuICAgICAgICAgICAgICAgIGtubkluZGV4ZXNba25uSW5kZXhdW2ldID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBgLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKHtcbiAgICAgICAgICAgIGxhYmVsOiAnaGFtbWluZyBjb21wdXRlIHBpcGVsaW5lJyxcbiAgICAgICAgICAgIGxheW91dDogJ2F1dG8nLFxuICAgICAgICAgICAgY29tcHV0ZToge1xuICAgICAgICAgICAgICAgIG1vZHVsZSxcbiAgICAgICAgICAgICAgICBlbnRyeVBvaW50OiAnY2FsY0tOTicsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gY2FsY3VsYXRlIHRoZSBzaXplIG9mIGNvbXB1dGVJbmZvIHN0cnVjdCBidWZmZXIgaW4gdGVybXMgb2YgMzJiaXQgdmFsdWVzXG4gICAgICAgIC8vICAgICAgICAgICBzdGFydEF0RW5kQXQ9NCwgICAgICAgICAgZW50cnlTaXplcywgICAgICAgIHdlaWdodHMsICAgICAgICAgIGRhdGEwICsgZGF0YTEgKyAuLi5cbiAgICAgICAgY29uc3QgY29tcHV0ZUluZm8zMlNpemUgPSA0ICsgbnVtT2ZDb2x1bW5zICogbGlzdFNpemUgKyBudW1PZkNvbHVtbnMgKyBwcm9jZXNzSW5mby5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLnNvdXJjZUFycmF5U2l6ZSwgMCk7XG4gICAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgc2l6ZSBvZiBzdXBwSW5mbyBzdHJ1Y3QgYnVmZmVyIGluIHRlcm1zIG9mIDMyYml0IHZhbHVlc1xuICAgICAgICBjb25zdCBzdXBwSW5mbzMyU2l6ZSA9IHByb2Nlc3NJbmZvLnJlZHVjZSgoYSwgYikgPT4gYSArIGIuc3VwcEluZm9TaXplLCAwKTtcbiAgICAgICAgLy8gY3JlYXRlIGEgYnVmZmVyIG9uIHRoZSBHUFUgdG8gaG9sZCBjb21wdXRlSW5mb1xuICAgICAgICAvLyBiZXdhcmUgdGhhdCBzdHJ1Y3QgbXVzdCBiZSBwYWRkZWQgdG8gMTYgYnl0ZXMsIHNvIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBzaXplIG9mIHRoZSBzdHJ1Y3QgaW4gMzJiaXQgdmFsdWVzXG4gICAgICAgIGNvbnN0IGNvbXB1dGVJbmZvQnVmZmVyU2l6ZSA9IGNvbXB1dGVJbmZvMzJTaXplICogVWludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQ7XG4gICAgICAgIGxldCBwYWRkZWRDb21wdXRlSW5mb0J1ZmZlclNpemUgPSBjb21wdXRlSW5mb0J1ZmZlclNpemU7XG4gICAgICAgIGNvbnN0IHJlbWFpbmRlciA9IGNvbXB1dGVJbmZvQnVmZmVyU2l6ZSAmIDE1OyAvLyBjaGVjayBpZiB0aGUgc2l6ZSBpcyBhIG11bHRpcGxlIG9mIDE2XG4gICAgICAgIGlmIChyZW1haW5kZXIgIT09IDApXG4gICAgICAgICAgICBwYWRkZWRDb21wdXRlSW5mb0J1ZmZlclNpemUgKz0gMTYgLSByZW1haW5kZXI7IC8vIHBhZCB0aGUgc2l6ZSBhY2NvcmRpbmdseVxuICAgICAgICBjb25zdCBjb21wdXRlSW5mb0J1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoe1xuICAgICAgICAgICAgbGFiZWw6ICdjb21wdXRlIGluZm8gYnVmZmVyJyxcbiAgICAgICAgICAgIHNpemU6IHBhZGRlZENvbXB1dGVJbmZvQnVmZmVyU2l6ZSxcbiAgICAgICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHxcbiAgICAgICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQyB8XG4gICAgICAgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QsXG4gICAgICAgICAgICBtYXBwZWRBdENyZWF0aW9uOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgbWFwcGVkQ29tcHV0ZUluZm9BcnJheUJ1ZmZlciA9IGNvbXB1dGVJbmZvQnVmZmVyLmdldE1hcHBlZFJhbmdlKCk7IC8vIGdldCBmdWxsIGJ1ZmZlclxuICAgICAgICAvLyBjcmVhdGUgdmFycyB0byBob2xkIHN0YXJ0QXRFbmRBdFxuICAgICAgICBsZXQgc3RhcnRBdCA9IDA7XG4gICAgICAgIGxldCBlbmRBdCA9IGNvbXB1dGF0aW9uc1BlclBhc3M7XG4gICAgICAgIGxldCBwYWlyQ29tcGFyaXNvblN0YXJ0QXQgPSAwO1xuICAgICAgICBsZXQgcGFpckNvbXBhcmlzb25FbmRBdCA9IHBhaXJDb21wYXJpc29uc1BlclBhc3M7XG4gICAgICAgIGNvbnN0IHN0YXJ0QXRFbmRBdFNpemUgPSA0O1xuICAgICAgICAvLyBjb3B5IHRoZSBkYXRhIGludG8gdGhlIGJ1ZmZlciBhdCBjb3JyZWN0IHBsYWNlc1xuICAgICAgICBsZXQgY29tcHV0ZUluZm9PZmZTZXQgPSAwO1xuICAgICAgICBjb25zdCBzdGFydEF0RW5kQXRWaWV3ID0gbmV3IFVpbnQzMkFycmF5KG1hcHBlZENvbXB1dGVJbmZvQXJyYXlCdWZmZXIsIGNvbXB1dGVJbmZvT2ZmU2V0LCBzdGFydEF0RW5kQXRTaXplKTsgLy9uZXcgVWludDMyQXJyYXkoY29tcHV0ZUluZm9CdWZmZXIuZ2V0TWFwcGVkUmFuZ2UoY29tcHV0ZUluZm9PZmZTZXQsIDQgKiBVaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCkpO1xuICAgICAgICBzdGFydEF0RW5kQXRWaWV3LnNldChbc3RhcnRBdCwgZW5kQXQsIHBhaXJDb21wYXJpc29uU3RhcnRBdCwgcGFpckNvbXBhcmlzb25FbmRBdF0pO1xuICAgICAgICAvLyB3cml0ZSBlbnRyeSBzaXplc1xuICAgICAgICBjb21wdXRlSW5mb09mZlNldCArPSBzdGFydEF0RW5kQXRTaXplICogVWludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQ7XG4gICAgICAgIGNvbnN0IGVudHJ5U2l6ZXNWaWV3ID0gbmV3IFVpbnQzMkFycmF5KG1hcHBlZENvbXB1dGVJbmZvQXJyYXlCdWZmZXIsIGNvbXB1dGVJbmZvT2ZmU2V0LCBhcnJheVNpemVzLmxlbmd0aCk7IC8vbmV3IFVpbnQzMkFycmF5KGNvbXB1dGVJbmZvQnVmZmVyLmdldE1hcHBlZFJhbmdlKGNvbXB1dGVJbmZvT2ZmU2V0LCBhcnJheVNpemVzLmJ5dGVMZW5ndGgpKTtcbiAgICAgICAgZW50cnlTaXplc1ZpZXcuc2V0KGFycmF5U2l6ZXMpO1xuICAgICAgICAvLyB3cml0ZSB3ZWlnaHRzXG4gICAgICAgIGNvbXB1dGVJbmZvT2ZmU2V0ICs9IGFycmF5U2l6ZXMuYnl0ZUxlbmd0aDsgLy8gYXJyYXlTaXplcy5sZW5ndGggKiBVaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVDtcbiAgICAgICAgY29uc3Qgd2VpZ2h0c1ZpZXcgPSBuZXcgRmxvYXQzMkFycmF5KG1hcHBlZENvbXB1dGVJbmZvQXJyYXlCdWZmZXIsIGNvbXB1dGVJbmZvT2ZmU2V0LCBudW1PZkNvbHVtbnMpOyAvL25ldyBGbG9hdDMyQXJyYXkoY29tcHV0ZUluZm9CdWZmZXIuZ2V0TWFwcGVkUmFuZ2UoY29tcHV0ZUluZm9PZmZTZXQsIG51bU9mQ29sdW1ucyAqIEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCkpO1xuICAgICAgICB3ZWlnaHRzVmlldy5zZXQod2VpZ2h0cyk7XG4gICAgICAgIC8vIHdyaXRlIGRhdGFcbiAgICAgICAgY29tcHV0ZUluZm9PZmZTZXQgKz0gbnVtT2ZDb2x1bW5zICogRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UO1xuICAgICAgICBmb3IgKGNvbnN0IGluZm8gb2YgcHJvY2Vzc0luZm8pIHtcbiAgICAgICAgICAgIC8vZGV2aWNlLnF1ZXVlLndyaXRlQnVmZmVyKGNvbXB1dGVJbmZvQnVmZmVyLCBjb21wdXRlSW5mb09mZlNldCwgaW5mby5mbGF0U291cmNlQXJyYXksIDAsIGNodW5rQnl0ZVNpemUpO1xuICAgICAgICAgICAgY29uc3QgQXJyYXlDb25zdHJ1Y3RvciA9IGluZm8uaXNVaW50MzJBcnJheSA/IFVpbnQzMkFycmF5IDogRmxvYXQzMkFycmF5O1xuICAgICAgICAgICAgY29uc3QgY2h1bmtTaXplID0gaW5mby5zb3VyY2VBcnJheVNpemU7XG4gICAgICAgICAgICBjb25zdCBkYXRhVmlldyA9IG5ldyBBcnJheUNvbnN0cnVjdG9yKG1hcHBlZENvbXB1dGVJbmZvQXJyYXlCdWZmZXIsIGNvbXB1dGVJbmZvT2ZmU2V0LCBjaHVua1NpemUpOyAvL25ldyBBcnJheUNvbnN0cnVjdG9yKGNvbXB1dGVJbmZvQnVmZmVyLmdldE1hcHBlZFJhbmdlKGNvbXB1dGVJbmZvT2ZmU2V0LCBjaHVua0J5dGVTaXplKSk7XG4gICAgICAgICAgICBkYXRhVmlldy5zZXQoaW5mby5mbGF0U291cmNlQXJyYXkpO1xuICAgICAgICAgICAgY29tcHV0ZUluZm9PZmZTZXQgKz0gY2h1bmtTaXplICogQXJyYXlDb25zdHJ1Y3Rvci5CWVRFU19QRVJfRUxFTUVOVDtcbiAgICAgICAgfVxuICAgICAgICAvLyB3ZSBhcmUgZG9uZSBhdCB0aGlzIHBvaW50LlxuICAgICAgICBjb21wdXRlSW5mb0J1ZmZlci51bm1hcCgpO1xuICAgICAgICAvLyBjcmVhdGUgYSBidWZmZXIgb24gdGhlIEdQVSB0byBob2xkIHN1cHBJbmZvXG4gICAgICAgIC8vIHNhbWUgaGVyZSwgd2UgbmVlZCB0byBwYWQgdGhlIHNpemUgb2YgdGhlIHN0cnVjdCB0byAxNiBieXRlc1xuICAgICAgICBjb25zdCBzdXBwSW5mb0J1ZmZlclNpemUgPSBzdXBwSW5mbzMyU2l6ZSAqIFVpbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UO1xuICAgICAgICBsZXQgcGFkZGVkU3VwcEluZm9CdWZmZXJTaXplID0gc3VwcEluZm9CdWZmZXJTaXplO1xuICAgICAgICBjb25zdCBzdXBwSW5mb1JlbWFpbmRlciA9IHN1cHBJbmZvQnVmZmVyU2l6ZSAmIDE1OyAvLyBjaGVjayBpZiB0aGUgc2l6ZSBpcyBhIG11bHRpcGxlIG9mIDE2XG4gICAgICAgIGlmIChzdXBwSW5mb1JlbWFpbmRlciAhPT0gMClcbiAgICAgICAgICAgIHBhZGRlZFN1cHBJbmZvQnVmZmVyU2l6ZSArPSAxNiAtIHN1cHBJbmZvUmVtYWluZGVyOyAvLyBwYWQgdGhlIHNpemUgYWNjb3JkaW5nbHlcbiAgICAgICAgcGFkZGVkU3VwcEluZm9CdWZmZXJTaXplID0gTWF0aC5tYXgocGFkZGVkU3VwcEluZm9CdWZmZXJTaXplLCAxNik7XG4gICAgICAgIGNvbnN0IHN1cHBJbmZvQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7XG4gICAgICAgICAgICBsYWJlbDogJ3N1cHAgaW5mbyBidWZmZXInLFxuICAgICAgICAgICAgc2l6ZTogcGFkZGVkU3VwcEluZm9CdWZmZXJTaXplLFxuICAgICAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfFxuICAgICAgICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDIHxcbiAgICAgICAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCxcbiAgICAgICAgICAgIG1hcHBlZEF0Q3JlYXRpb246IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBtYXBwZWRTdXBwSW5mb0FycmF5QnVmZmVyID0gc3VwcEluZm9CdWZmZXIuZ2V0TWFwcGVkUmFuZ2UoKTsgLy8gZ2V0IGZ1bGwgYnVmZmVyXG4gICAgICAgIGxldCBzdXBwSW5mb09mZlNldCA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgaW5mbyBvZiBwcm9jZXNzSW5mbykge1xuICAgICAgICAgICAgaWYgKGluZm8uc3VwcEluZm9CdWZmZXIgJiYgaW5mby5zdXBwSW5mb0J1ZmZlci5ieXRlTGVuZ3RoID4gMCAmJiBpbmZvLnN1cHBJbmZvU2l6ZSA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBBcnJheUNvbnN0cnVjdG9yID0gaW5mby5zdXBwSW5mb1R5cGUgPT09IFwiVUlOVDMyQVJSQVlcIiAvKiBXR1BVRU5UUllUWVBFLlVJTlQzMkFSUkFZICovID8gVWludDMyQXJyYXkgOiBGbG9hdDMyQXJyYXk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3VwcEluZm9WaWV3ID0gbmV3IEFycmF5Q29uc3RydWN0b3IobWFwcGVkU3VwcEluZm9BcnJheUJ1ZmZlciwgc3VwcEluZm9PZmZTZXQsIGluZm8uc3VwcEluZm9CdWZmZXIubGVuZ3RoKTsgLy9uZXcgQXJyYXlDb25zdHJ1Y3RvcihzdXBwSW5mb0J1ZmZlci5nZXRNYXBwZWRSYW5nZShzdXBwSW5mb09mZlNldCwgaW5mby5zdXBwSW5mb0J1ZmZlci5ieXRlTGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgc3VwcEluZm9WaWV3LnNldChpbmZvLnN1cHBJbmZvQnVmZmVyKTtcbiAgICAgICAgICAgICAgICBzdXBwSW5mb09mZlNldCArPSBpbmZvLnN1cHBJbmZvQnVmZmVyLmJ5dGVMZW5ndGg7IC8vIGluZm8uc3VwcEluZm9CdWZmZXIubGVuZ3RoICogQXJyYXlDb25zdHJ1Y3Rvci5CWVRFU19QRVJfRUxFTUVOVDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc3VwcEluZm9PZmZTZXQgPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGR1bW15VmlldyA9IG5ldyBVaW50MzJBcnJheShtYXBwZWRTdXBwSW5mb0FycmF5QnVmZmVyLCAwLCA0KTsgLy9uZXcgVWludDMyQXJyYXkoc3VwcEluZm9CdWZmZXIuZ2V0TWFwcGVkUmFuZ2UoMCwgMTYpKTtcbiAgICAgICAgICAgIGR1bW15Vmlldy5zZXQoWzEsIDEsIDEsIDFdKTtcbiAgICAgICAgfVxuICAgICAgICBzdXBwSW5mb0J1ZmZlci51bm1hcCgpO1xuICAgICAgICBjb25zdCBvdXRLbm5BcnJheVNpemUgPSBrbm5TaXplICogVWludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiBjb21wdXRhdGlvbnNQZXJQYXNzOyAvLyBzaXplIG9mIHRoZSBzbGljZSBvZiB0aGUga25uSW5kZXhlcyBhbmQga25uRGlzdGFuY2VzXG4gICAgICAgIC8vIGNyZWF0ZSBhIGJ1ZmZlciBvbiB0aGUgR1BVIHRvIGhvbGQga25uSW5kZXhlcyBhbmQga25uRGlzdGFuY2VzXG4gICAgICAgIGNvbnN0IGJ1ZmZlckRpc3RhbmNlcyA9IGRldmljZS5jcmVhdGVCdWZmZXIoe1xuICAgICAgICAgICAgbGFiZWw6ICdidWZmZXIgZGlzdGFuY2VzJyxcbiAgICAgICAgICAgIHNpemU6IG91dEtubkFycmF5U2l6ZSxcbiAgICAgICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBidWZmZXJJbmRleGVzID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7XG4gICAgICAgICAgICBsYWJlbDogJ2J1ZmZlciBpbmRleGVzJyxcbiAgICAgICAgICAgIHNpemU6IG91dEtubkFycmF5U2l6ZSxcbiAgICAgICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBubyBuZWVkIHRvIGNvcHkgYW55dGhpbmcgdG8gdGhlIGtubiBidWZmZXJzLlxuICAgICAgICBjb25zdCBieXRlc1Blck91dEFycmF5Um93ID0ga25uU2l6ZSAqIFVpbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UOyAvLyBob3cgbWFueSBieXRlcyBvbmUgcm93IG9mIHRoZSBrbm5EaXN0YW5jZXMgYW5kIGtubkluZGV4ZXMgd2lsbCB0YWtlXG4gICAgICAgIC8vIFNldHVwIGEgYmluZEdyb3VwIHRvIHRlbGwgdGhlIHNoYWRlciB3aGljaFxuICAgICAgICAvLyBidWZmZXIgdG8gdXNlIGZvciB0aGUgY29tcHV0YXRpb25cbiAgICAgICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7XG4gICAgICAgICAgICBsYWJlbDogJ2JpbmRHcm91cCBmb3Iga25uIGJ1ZmZlcicsXG4gICAgICAgICAgICBsYXlvdXQ6IHBpcGVsaW5lLmdldEJpbmRHcm91cExheW91dCgwKSxcbiAgICAgICAgICAgIGVudHJpZXM6IFtcbiAgICAgICAgICAgICAgICB7IGJpbmRpbmc6IDAsIHJlc291cmNlOiB7IGJ1ZmZlcjogYnVmZmVySW5kZXhlcyB9IH0sXG4gICAgICAgICAgICAgICAgeyBiaW5kaW5nOiAxLCByZXNvdXJjZTogeyBidWZmZXI6IGJ1ZmZlckRpc3RhbmNlcyB9IH0sXG4gICAgICAgICAgICAgICAgeyBiaW5kaW5nOiAyLCByZXNvdXJjZTogeyBidWZmZXI6IGNvbXB1dGVJbmZvQnVmZmVyIH0gfSxcbiAgICAgICAgICAgICAgICB7IGJpbmRpbmc6IDMsIHJlc291cmNlOiB7IGJ1ZmZlcjogc3VwcEluZm9CdWZmZXIgfSB9LFxuICAgICAgICAgICAgICAgIC8vIHsgYmluZGluZzogNCwgcmVzb3VyY2U6IHsgYnVmZmVyOiBhcnJheVNpemVzQnVmZmVyIH0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgICAgICBmb3IgKGxldCBpdGVyID0gMDsgaXRlciA8IE1hdGguY2VpbChsaXN0U2l6ZSAvIGNvbXB1dGF0aW9uc1BlclBhc3MpOyBpdGVyKyspIHtcbiAgICAgICAgICAgIHN0YXJ0QXQgPSBpdGVyICogY29tcHV0YXRpb25zUGVyUGFzcztcbiAgICAgICAgICAgIGVuZEF0ID0gTWF0aC5taW4oKGl0ZXIgKyAxKSAqIGNvbXB1dGF0aW9uc1BlclBhc3MsIGxpc3RTaXplKTtcbiAgICAgICAgICAgIGNvbnN0IHBhaXJDb21wYXJpc29uUGFzc2VzID0gTWF0aC5jZWlsKGxpc3RTaXplIC8gcGFpckNvbXBhcmlzb25zUGVyUGFzcyk7XG4gICAgICAgICAgICBmb3IgKGxldCBwYWlySXRlciA9IDA7IHBhaXJJdGVyIDwgcGFpckNvbXBhcmlzb25QYXNzZXM7IHBhaXJJdGVyKyspIHtcbiAgICAgICAgICAgICAgICBwYWlyQ29tcGFyaXNvblN0YXJ0QXQgPSBwYWlySXRlciAqIHBhaXJDb21wYXJpc29uc1BlclBhc3M7XG4gICAgICAgICAgICAgICAgcGFpckNvbXBhcmlzb25FbmRBdCA9IE1hdGgubWluKChwYWlySXRlciArIDEpICogcGFpckNvbXBhcmlzb25zUGVyUGFzcywgbGlzdFNpemUpO1xuICAgICAgICAgICAgICAgIC8vIHdyaXRlIG9ubHkgZm91ciB2YWx1ZXMgdG8gdGhlIGJ1ZmZlciwgc3RhcnRBdCwgZW5kQXQsIHBhaXJDb21wYXJpc29uU3RhcnRBdCwgcGFpckNvbXBhcmlzb25FbmRBdCwgY29ycmVzcG9uZGluZyB0byB2ZWM0PHUzMj4gYXQgdGhlIHN0YXJ0IG9mIGluZm8gc3RydWN0XG4gICAgICAgICAgICAgICAgZGV2aWNlLnF1ZXVlLndyaXRlQnVmZmVyKGNvbXB1dGVJbmZvQnVmZmVyLCAwLCBuZXcgVWludDMyQXJyYXkoW1xuICAgICAgICAgICAgICAgICAgICBzdGFydEF0LFxuICAgICAgICAgICAgICAgICAgICBlbmRBdCxcbiAgICAgICAgICAgICAgICAgICAgcGFpckNvbXBhcmlzb25TdGFydEF0LFxuICAgICAgICAgICAgICAgICAgICBwYWlyQ29tcGFyaXNvbkVuZEF0LFxuICAgICAgICAgICAgICAgIF0pKTtcbiAgICAgICAgICAgICAgICAvLyBFbmNvZGUgY29tbWFuZHMgdG8gZG8gdGhlIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgICAgY29uc3QgZW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rlcih7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZGlzdGFuY2UgZW5jb2RlcicsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFzcyA9IGVuY29kZXIuYmVnaW5Db21wdXRlUGFzcyh7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZGlzdGFuY2UgY29tcHV0ZSBwYXNzJyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBwYXNzLnNldFBpcGVsaW5lKHBpcGVsaW5lKTtcbiAgICAgICAgICAgICAgICBwYXNzLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApO1xuICAgICAgICAgICAgICAgIHBhc3MuZGlzcGF0Y2hXb3JrZ3JvdXBzKHdvcmtncm91cHNEaW0sIFxuICAgICAgICAgICAgICAgIC8vd29ya2dyb3Vwc0RpbSxcbiAgICAgICAgICAgICAgICBNYXRoLmNlaWwoY29tcHV0YXRpb25zUGVyUGFzcyAvIHdvcmtncm91cHNEaW0gLyB0aHJlYWRzUGVyV29ya2dyb3VwKSk7XG4gICAgICAgICAgICAgICAgcGFzcy5lbmQoKTtcbiAgICAgICAgICAgICAgICAvLyBpZiB3ZSBhcmUgYXQgdGhlIGxhc3QgcGFpciBjb21wYXJpc29uIHBhc3MsIHdlIG5lZWQgdG8gcmVhZCB0aGUgcmVzdWx0c1xuICAgICAgICAgICAgICAgIGlmIChwYWlySXRlciA9PT0gcGFpckNvbXBhcmlzb25QYXNzZXMgLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vY3JlYXRlIGEgYnVmZmVyIG9uIHRoZSBHUFUgdG8gZ2V0IGEgY29weSBvZiB0aGUgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHRCdWZmZXJEaXN0YW5jZXMgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAncmVzdWx0IGJ1ZmZlciBkaXN0YW5jZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogYnVmZmVyRGlzdGFuY2VzLnNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfCBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIEVuY29kZSBhIGNvbW1hbmQgdG8gY29weSB0aGUgcmVzdWx0cyB0byBhIG1hcHBhYmxlIGJ1ZmZlci5cbiAgICAgICAgICAgICAgICAgICAgZW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyRGlzdGFuY2VzLCAwLCByZXN1bHRCdWZmZXJEaXN0YW5jZXMsIDAsIHJlc3VsdEJ1ZmZlckRpc3RhbmNlcy5zaXplKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0QnVmZmVySW5kZXhlcyA9IGRldmljZS5jcmVhdGVCdWZmZXIoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdyZXN1bHQgYnVmZmVyIGluZGV4ZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogYnVmZmVySW5kZXhlcy5zaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBlbmNvZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcihidWZmZXJJbmRleGVzLCAwLCByZXN1bHRCdWZmZXJJbmRleGVzLCAwLCByZXN1bHRCdWZmZXJJbmRleGVzLnNpemUpO1xuICAgICAgICAgICAgICAgICAgICAvLyBGaW5pc2ggZW5jb2RpbmcgYW5kIHN1Ym1pdCB0aGUgY29tbWFuZHNcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGVuY29kZXIuZmluaXNoKCk7XG4gICAgICAgICAgICAgICAgICAgIGRldmljZS5xdWV1ZS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVhZCB0aGUgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUudGltZSgncGFzcyBlbmQnKTtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQgZGV2aWNlLnF1ZXVlLm9uU3VibWl0dGVkV29ya0RvbmUoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS50aW1lRW5kKCdwYXNzIGVuZCcpO1xuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLnRpbWUoXCJyZWFkXCIpO1xuICAgICAgICAgICAgICAgICAgICAvL2NvbnN0IG9mZnNldEJ5dGVzID0gc3RhcnRBdCAqIGJ5dGVzUGVyT3V0QXJyYXlSb3c7XG4gICAgICAgICAgICAgICAgICAgIC8vY29uc3Qgc2l6ZUJ5dGVzID0gKGVuZEF0IC0gc3RhcnRBdCkgKiBieXRlc1Blck91dEFycmF5Um93O1xuICAgICAgICAgICAgICAgICAgICB5aWVsZCByZXN1bHRCdWZmZXJEaXN0YW5jZXMubWFwQXN5bmMoR1BVTWFwTW9kZS5SRUFEKTtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQgcmVzdWx0QnVmZmVySW5kZXhlcy5tYXBBc3luYyhHUFVNYXBNb2RlLlJFQUQpO1xuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLnRpbWVFbmQoXCJyZWFkXCIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleGVzID0gcmVzdWx0QnVmZmVySW5kZXhlcy5nZXRNYXBwZWRSYW5nZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXN0YW5jZXMgPSByZXN1bHRCdWZmZXJEaXN0YW5jZXMuZ2V0TWFwcGVkUmFuZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS50aW1lKFwiZGVjb2RlXCIpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVuZEF0IC0gc3RhcnRBdDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IG5ldyBVaW50MzJBcnJheShpbmRleGVzLCBpICogYnl0ZXNQZXJPdXRBcnJheVJvdywga25uU2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IG5ldyBGbG9hdDMyQXJyYXkoZGlzdGFuY2VzLCBpICogYnl0ZXNQZXJPdXRBcnJheVJvdywga25uU2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRJbmRleGVzW3N0YXJ0QXQgKyBpXS5zZXQoaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0RGlzdGFuY2VzW3N0YXJ0QXQgKyBpXS5zZXQoZGlzdGFuY2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdEJ1ZmZlckluZGV4ZXMudW5tYXAoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0QnVmZmVyRGlzdGFuY2VzLnVubWFwKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gZW5jb2Rlci5maW5pc2goKTtcbiAgICAgICAgICAgICAgICAgICAgZGV2aWNlLnF1ZXVlLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pO1xuICAgICAgICAgICAgICAgICAgICAvLyBSZWFkIHRoZSByZXN1bHRzXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUudGltZSgncGFzcyBiZXR3ZWVuJyk7XG4gICAgICAgICAgICAgICAgICAgIHlpZWxkIGRldmljZS5xdWV1ZS5vblN1Ym1pdHRlZFdvcmtEb25lKCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUudGltZUVuZCgncGFzcyBiZXR3ZWVuJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUudGltZUVuZChcImRlY29kZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBrbm5JbmRleGVzOiByZXN1bHRJbmRleGVzLCBrbm5EaXN0YW5jZXM6IHJlc3VsdERpc3RhbmNlcyB9O1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZ2V0Q29tYmluZWREaXN0YW5jZVNjcmlwdChkaXN0YW5jZU1ldHJpY3MsIG1heEVudHJ5TGVucywga25uU2l6ZSwgYWdncmVnYXRpb24pIHtcbiAgICBjb25zdCBkaXN0YW5jZVdnc2xzID0gZGlzdGFuY2VNZXRyaWNzLm1hcCgobWV0cmljLCBpKSA9PiB7XG4gICAgICAgIHJldHVybiBgXG4gICAgICAgIGZuIGRpc3RhbmNlU2NyaXB0JHtpfShhSW5kZXg6IHUzMiwgYkluZGV4OiB1MzIpIC0+IGYzMiB7XG4gICAgICAgICAgbGV0IGEgPSBjb21wdXRlSW5mby5kYXRhJHtpfVthSW5kZXhdO1xuICAgICAgICAgIGxldCBiID0gY29tcHV0ZUluZm8uZGF0YSR7aX1bYkluZGV4XTtcbiAgICAgICAgICBsZXQgbWF4RGlzdGFuY2U6IGYzMiA9IGtubkRpc3RhbmNlc1thSW5kZXggLSBjb21wdXRlSW5mby5zdGFydEF0RW5kQXQueF1bJHtrbm5TaXplfSAtIDF1XTtcbiAgICAgICAgICAke3dlYkdQVUZ1bmN0aW9uc1ttZXRyaWNdKG1heEVudHJ5TGVuc1tpXSwgaSl9XG4gICAgICAgIH1cbiAgICAgIGA7XG4gICAgfSk7XG4gICAgY29uc3QgYWxsRGlzdGFuY2VTY3JpcHRzID0gZGlzdGFuY2VXZ3Nscy5qb2luKCdcXG4nKTtcbiAgICBjb25zdCBjb21iaW5lRGlzdGFuY2VzU2NyaXB0ID0gYFxuICAgICAgZm4gY29tYmluZWREaXN0YW5jZShhSW5kZXg6IHUzMiwgYkluZGV4OiB1MzIpIC0+IGYzMiB7XG4gICAgICAgIHZhciBkaXN0YW5jZXM6IGFycmF5PGYzMiwgJHtkaXN0YW5jZU1ldHJpY3MubGVuZ3RofT47XG4gICAgICAgICR7ZGlzdGFuY2VNZXRyaWNzLm1hcCgoXywgaSkgPT4gYGRpc3RhbmNlc1ske2l9XSA9IGRpc3RhbmNlU2NyaXB0JHtpfShhSW5kZXgsIGJJbmRleCk7YCkuam9pbignXFxuJyl9XG4gICAgICAgICR7V0VCR1NMQUdHUkVHQVRJT05GVU5DVElPTlNbYWdncmVnYXRpb25dKGRpc3RhbmNlTWV0cmljcy5sZW5ndGgpfVxuICAgICAgfVxuICAgIFxuICAgIGA7XG4gICAgcmV0dXJuIGFsbERpc3RhbmNlU2NyaXB0cyArICdcXG4nICsgY29tYmluZURpc3RhbmNlc1NjcmlwdDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW11bHRpQ29sLUtOTi5qcy5tYXAiLCIvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5pbXBvcnQgeyBkaXN0YW5jZUZ1bmN0aW9uQ29tcGxleGl0eSwgVHlwZVN1cHBvcnRlZERpc3RhbmNlcywgV0VCR1BVRElTVEFOQ0UgfSBmcm9tICcuL3dlYkdQVS1tdWx0aWNvbC1kaXN0YW5jZXMnO1xuZXhwb3J0IGZ1bmN0aW9uIHdlYkdQVVByb2Nlc3NJbmZvKGVudHJ5TGlzdCwgZGlzdGFuY2VNZXRyaWMgPSBXRUJHUFVESVNUQU5DRS5IQU1NSU5HLCBlbnRyeUluZGV4LCAvLyBpbmRleCBvZiB0aGUgZW50cmllcyBpbiB0aGUgbGlzdCBvZiBsaXN0cyB0aGF0IHdlIHdhbnQgdG8gcHJvY2Vzc1xub3B0aW9ucyA9IHsgZ2FwT3BlblBlbmFsdHk6IDEuMCwgZ2FwRXh0ZW5zaW9uUGVuYWx0eTogMC42IH0pIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGxldCBlbnRyeVR5cGUgPSBudWxsO1xuICAgIGNvbnN0IGVuY29kZWRMaXN0ID0gKCgpID0+IHtcbiAgICAgICAgaWYgKGVudHJ5TGlzdC5zb21lKChlKSA9PiB0eXBlb2YgZSA9PT0gJ3N0cmluZycpKSB7XG4gICAgICAgICAgICBlbnRyeVR5cGUgPSBcIlNUUklOR1wiIC8qIFdHUFVFTlRSWVRZUEUuU1RSSU5HICovO1xuICAgICAgICAgICAgcmV0dXJuIGVudHJ5TGlzdC5tYXAoKGVudHJ5KSA9PiBuZXcgVWludDMyQXJyYXkoZW50cnkuc3BsaXQoJycpLm1hcCgoYykgPT4gYy5jaGFyQ29kZUF0KDApKSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbnRyeUxpc3Quc29tZSgoZSkgPT4gdHlwZW9mIGUgPT09ICdudW1iZXInKSkge1xuICAgICAgICAgICAgZW50cnlUeXBlID0gXCJOVU1CRVJcIiAvKiBXR1BVRU5UUllUWVBFLk5VTUJFUiAqLztcbiAgICAgICAgICAgIHJldHVybiBlbnRyeUxpc3QubWFwKChlbnRyeSkgPT4gbmV3IEZsb2F0MzJBcnJheShbZW50cnldKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBlbnRyeUxpc3RbMF0gPT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgIGVudHJ5TGlzdC5zb21lKChlKSA9PiAnX2RhdGEnIGluIGUgJiYgJ19sZW5ndGgnIGluIGUpKSB7XG4gICAgICAgICAgICBlbnRyeVR5cGUgPSBcIkJJVEFSUkFZXCIgLyogV0dQVUVOVFJZVFlQRS5CSVRBUlJBWSAqLztcbiAgICAgICAgICAgIHJldHVybiBlbnRyeUxpc3QubWFwKChlbnRyeSkgPT4gZW50cnkuX2RhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbnRyeUxpc3Quc29tZSgoZSkgPT4gZSBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSkpIHtcbiAgICAgICAgICAgIGVudHJ5VHlwZSA9IFwiRkxPQVQzMkFSUkFZXCIgLyogV0dQVUVOVFJZVFlQRS5GTE9BVDMyQVJSQVkgKi87XG4gICAgICAgICAgICByZXR1cm4gZW50cnlMaXN0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbnRyeUxpc3Quc29tZSgoZSkgPT4gZSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5KSkge1xuICAgICAgICAgICAgZW50cnlUeXBlID0gXCJVSU5UMzJBUlJBWVwiIC8qIFdHUFVFTlRSWVRZUEUuVUlOVDMyQVJSQVkgKi87XG4gICAgICAgICAgICByZXR1cm4gZW50cnlMaXN0O1xuICAgICAgICB9XG4gICAgICAgIC8vcmV0dXJuIGVudHJ5TGlzdCBhcyBVaW50MzJBcnJheVtdO1xuICAgIH0pKCk7XG4gICAgaWYgKCFlbmNvZGVkTGlzdCB8fCAhZW50cnlUeXBlKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZW50cnkgdHlwZSwgY291bGQgbm90IGRldGVybWluZSBlbnRyeSB0eXBlIGZyb20gaW5wdXQgbGlzdCcpO1xuICAgIGNvbnN0IGlzVWludDMyQXJyYXkgPSBlbmNvZGVkTGlzdFswXSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5O1xuICAgIC8vIHNpemVzIG9mIGVhY2ggZW50cmllcyBtaWdodCBkaWZmZXIsIHNvIHdlIG5lZWRcbiAgICAvL3RvIGtlZXAgdHJhY2sgb2YgdGhhdCBmb3Igc29tZSBkaXN0YW5jZSBtZXRyaWNzLCBsaWtlIGhhbW1pbmcgZm9yIGV4YW1wbGVcbiAgICBjb25zdCBhcnJheVNpemVzID0gbmV3IFVpbnQzMkFycmF5KGVuY29kZWRMaXN0Lm1hcCgoYXJyKSA9PiBhcnIubGVuZ3RoKSk7XG4gICAgaWYgKCFUeXBlU3VwcG9ydGVkRGlzdGFuY2VzW2VudHJ5VHlwZV0gfHwgIVR5cGVTdXBwb3J0ZWREaXN0YW5jZXNbZW50cnlUeXBlXS5oYXMoZGlzdGFuY2VNZXRyaWMpKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERpc3RhbmNlIG1ldHJpYyAnJHtkaXN0YW5jZU1ldHJpY30nIG5vdCBzdXBwb3J0ZWQgZm9yIGVudHJ5IHR5cGUgJyR7ZW50cnlUeXBlfSdgKTtcbiAgICBjb25zdCBtYXhFbnRyeUxlbiA9IGFycmF5U2l6ZXMucmVkdWNlKChhLCBiKSA9PiBNYXRoLm1heChhLCBiKSwgMCk7XG4gICAgLy8gZ2V0IHRoZSBjb21wbGV4aXR5IG9mIHVzZWQgYWxnb3JpdGhtXG4gICAgY29uc3QgY29tcGxleGl0eSA9IGRpc3RhbmNlRnVuY3Rpb25Db21wbGV4aXR5W2Rpc3RhbmNlTWV0cmljXShtYXhFbnRyeUxlbik7XG4gICAgY29uc3QgZmxhdFNvdXJjZUFycmF5ID0gaXNVaW50MzJBcnJheSA/IG5ldyBVaW50MzJBcnJheShlbmNvZGVkTGlzdC5sZW5ndGggKiBtYXhFbnRyeUxlbikgOlxuICAgICAgICBuZXcgRmxvYXQzMkFycmF5KGVuY29kZWRMaXN0Lmxlbmd0aCAqIG1heEVudHJ5TGVuKTtcbiAgICAvLyB3aGVuIHNldHRpbmcsIHdlIG5lZWQgdG8gc2V0IGVhY2ggYXJyYXkgYXQgYVxuICAgIC8vIHNwZWNpZmljIG9mZnNldCwgd2hpY2ggaXMgY29udHJvbGxlZCBieSBtYXhBcnJheUxlbiBiZWNhdXNlIGVhY2ggYXJyYXkgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgc2l6ZXMuXG4gICAgLy8gdGhpcyB3YXkgd2Ugd2lsbCBnZXQgY29ycmVjdCBtYXRyaXggcmVwcmVzZW50YXRpb24gaW4gdGhlIGNvbXB1dGUgc2hhZGVyXG4gICAgZW5jb2RlZExpc3QuZm9yRWFjaCgoc2VxLCBpKSA9PiB7XG4gICAgICAgIGZsYXRTb3VyY2VBcnJheS5zZXQoc2VxLCBpICogbWF4RW50cnlMZW4pO1xuICAgIH0pO1xuICAgIC8vIE5CISBhbGwgdGhpcyBiZWZvcmUgdGhlIGxpbmUgd2FzIGdlbmVyaWMsXG4gICAgLy9ub3cgd2UgbmVlZCB0byBjYWxjdWxhdGUgc29tZSBzcGVjaWZpYyB0aGluZ3MgZm9yIHNvbWUgc3BlY2lmaWMgZGlzdGFuY2UgbWV0cmljc1xuICAgIC8vIGluaXRpYWxpemUgc3VwcCBpbmZvIGxpbmUgdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBmaW5hbCBzaGFkZXI7XG4gICAgbGV0IHN1cHBJbmZvU3RydWN0V2dzbCA9ICcnOyAvLyB0aGUgY29kZSB0aGF0IHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIHN0cnVjdCBvZiBzdXBwSW5mb1xuICAgIGxldCBzdXBwSW5mb1NpemUgPSAwO1xuICAgIGxldCBzdXBwSW5mb1R5cGUgPSBcIkZMT0FUMzJBUlJBWVwiIC8qIFdHUFVFTlRSWVRZUEUuRkxPQVQzMkFSUkFZICovO1xuICAgIGxldCBzdXBwSW5mb0J1ZmZlciA9IG51bGw7XG4gICAgaWYgKGRpc3RhbmNlTWV0cmljID09PSBXRUJHUFVESVNUQU5DRS5ORUVETEVNQU5fV1VOU0NIIHx8XG4gICAgICAgIGRpc3RhbmNlTWV0cmljID09PSBXRUJHUFVESVNUQU5DRS5NT05PTUVSX0NIRU1JQ0FMX0RJU1RBTkNFKSB7XG4gICAgICAgIGxldCBtYXhNb25vbWVySW5kZXggPSBvcHRpb25zLnNjb3JpbmdNYXRyaXggJiYgb3B0aW9ucy5hbHBoYWJldEluZGV4ZXMgP1xuICAgICAgICAgICAgT2JqZWN0LmtleXMob3B0aW9ucy5hbHBoYWJldEluZGV4ZXMpLnJlZHVjZSgocHJldiwgbikgPT4gTWF0aC5tYXgocHJldiwgbi5jaGFyQ29kZUF0KDApKSwgMCkgOiAtMTtcbiAgICAgICAgLy8gZ2VuZXJhdGUgZGVmYXVsdCBzaW1pbGFyaXR5IG1hdHJpeCBpZiBpdCBpcyBub3QgcHJvdmlkZWRcbiAgICAgICAgaWYgKCFvcHRpb25zLmFscGhhYmV0SW5kZXhlcyB8fCAhb3B0aW9ucy5zY29yaW5nTWF0cml4KSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZsYXRTb3VyY2VBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChmbGF0U291cmNlQXJyYXlbaV0gPiBtYXhNb25vbWVySW5kZXgpXG4gICAgICAgICAgICAgICAgICAgIG1heE1vbm9tZXJJbmRleCA9IGZsYXRTb3VyY2VBcnJheVtpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnMuc2NvcmluZ01hdHJpeCA9XG4gICAgICAgICAgICAgICAgbmV3IEFycmF5KG1heE1vbm9tZXJJbmRleCArIDEpLmZpbGwobnVsbCkubWFwKCgpID0+IG5ldyBBcnJheShtYXhNb25vbWVySW5kZXggKyAxKS5maWxsKDApKTtcbiAgICAgICAgICAgIG9wdGlvbnMuYWxwaGFiZXRJbmRleGVzID0ge307XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMuc2NvcmluZ01hdHJpeC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuc2NvcmluZ01hdHJpeFtpXVtpXSA9IDE7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5hbHBoYWJldEluZGV4ZXNbU3RyaW5nLmZyb21DaGFyQ29kZShpKV0gPSBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNpbWlsYXJpdHlNYXRyaXhTaXplID0gKG1heE1vbm9tZXJJbmRleCArIDEpICogKG1heE1vbm9tZXJJbmRleCArIDEpO1xuICAgICAgICBjb25zdCB0cmFuc2ZlcmVkU2ltaWxhcml0eU1hdHJpeCA9IG5ldyBBcnJheShtYXhNb25vbWVySW5kZXggKyAxKS5maWxsKG51bGwpLm1hcCgoKSA9PiBuZXcgRmxvYXQzMkFycmF5KG1heE1vbm9tZXJJbmRleCArIDEpKTtcbiAgICAgICAgLy8gc2V0IGRpYWdvbmFsIHRvIDFcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhNb25vbWVySW5kZXggKyAxOyBpKyspXG4gICAgICAgICAgICB0cmFuc2ZlcmVkU2ltaWxhcml0eU1hdHJpeFtpXVtpXSA9IDE7XG4gICAgICAgIGNvbnN0IGFscGhhYmV0SW5kZXhlcyA9IG9wdGlvbnMuYWxwaGFiZXRJbmRleGVzO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhhbHBoYWJldEluZGV4ZXMpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleTIgb2YgT2JqZWN0LmtleXMoYWxwaGFiZXRJbmRleGVzKSkge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IGtleTIpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIHRyYW5zZmVyZWRTaW1pbGFyaXR5TWF0cml4W2tleS5jaGFyQ29kZUF0KDApXVtrZXkyLmNoYXJDb2RlQXQoMCldID1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5zY29yaW5nTWF0cml4W2FscGhhYmV0SW5kZXhlc1trZXldXVthbHBoYWJldEluZGV4ZXNba2V5Ml1dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGluIG1lbW9yeSBsYXlvdXQsIHdlIHdpbGwgaGF2ZSAyIGZsb2F0MzIgcyBmb3IgZ2FwT3BlbiBhbmQgZ2FwRXh0ZW5zaW9uIHBlbmFsdGllcyxcbiAgICAgICAgLy8gYW5kIHRoZW4gZjMyIGFycmF5PGFycmF5PGYzMj4+IGZvciBzaW1pbGFyaXR5IG1hdHJpeC5cbiAgICAgICAgLy8gYmVjYXVzZSBvZiBwcmltaXRpdmVzLCB0aGVyZSB3aWxsIGJlIG5vIHBhZGRpbmcsIHNvIHdlIGNhbiBjYWxjdWxhdGUgdGhlIHNpemUgZGlyZWN0bHlcbiAgICAgICAgc3VwcEluZm9TaXplID0gMiArIHNpbWlsYXJpdHlNYXRyaXhTaXplO1xuICAgICAgICBzdXBwSW5mb1R5cGUgPSBcIkZMT0FUMzJBUlJBWVwiIC8qIFdHUFVFTlRSWVRZUEUuRkxPQVQzMkFSUkFZICovO1xuICAgICAgICBzdXBwSW5mb0J1ZmZlciA9IG5ldyBGbG9hdDMyQXJyYXkoc3VwcEluZm9TaXplKTtcbiAgICAgICAgc3VwcEluZm9CdWZmZXJbMF0gPSAoX2EgPSBvcHRpb25zLmdhcE9wZW5QZW5hbHR5KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAxLjA7XG4gICAgICAgIHN1cHBJbmZvQnVmZmVyWzFdID0gKF9iID0gb3B0aW9ucy5nYXBFeHRlbnNpb25QZW5hbHR5KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAwLjY7XG4gICAgICAgIGxldCBvZmZzZXQgPSAyO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRyYW5zZmVyZWRTaW1pbGFyaXR5TWF0cml4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBzdXBwSW5mb0J1ZmZlci5zZXQodHJhbnNmZXJlZFNpbWlsYXJpdHlNYXRyaXhbaV0sIG9mZnNldCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gdHJhbnNmZXJlZFNpbWlsYXJpdHlNYXRyaXhbaV0ubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHN1cHBJbmZvU3RydWN0V2dzbCA9IGBcbiAgICAgICAgICAgIGdhcE9wZW5QZW5hbHR5JHtlbnRyeUluZGV4fTogZjMyLFxuICAgICAgICAgICAgZ2FwRXh0ZW5zaW9uUGVuYWx0eSR7ZW50cnlJbmRleH06IGYzMixcbiAgICAgICAgICAgIHNpbWlsYXJpdHlNYXRyaXgke2VudHJ5SW5kZXh9OiBhcnJheTxhcnJheTxmMzIsICR7bWF4TW9ub21lckluZGV4ICsgMX0+LCAke21heE1vbm9tZXJJbmRleCArIDF9PmA7XG4gICAgfVxuICAgIGVsc2UgaWYgKGRpc3RhbmNlTWV0cmljID09PSBXRUJHUFVESVNUQU5DRS5EaWZmZXJlbmNlKSB7XG4gICAgICAgIC8vIGZvciBkaWZmZXJlbmNlLCB3ZSBuZWVkIHJhbmdlIG9mIHZhbHVlcyBmb3Igbm9ybWFsaXphdGlvbiBvZiB0aGUgZGlmZmVyZW5jZVxuICAgICAgICBpZiAoIW9wdGlvbnMucmFuZ2UgfHwgdHlwZW9mIG9wdGlvbnMucmFuZ2UgIT09ICdudW1iZXInIHx8IG9wdGlvbnMucmFuZ2UgPD0gMCkge1xuICAgICAgICAgICAgY29uc3QgbWluID0gZmxhdFNvdXJjZUFycmF5LnJlZHVjZSgoYSwgYikgPT4gTWF0aC5taW4oYSwgYiksIGZsYXRTb3VyY2VBcnJheVswXSk7XG4gICAgICAgICAgICBjb25zdCBtYXggPSBmbGF0U291cmNlQXJyYXkucmVkdWNlKChhLCBiKSA9PiBNYXRoLm1heChhLCBiKSwgZmxhdFNvdXJjZUFycmF5WzBdKTtcbiAgICAgICAgICAgIG9wdGlvbnMucmFuZ2UgPSBtYXggLSBtaW47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMucmFuZ2UgPD0gMClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCByYW5nZSBmb3IgZGlmZmVyZW5jZSBkaXN0YW5jZSBtZXRyaWM6ICcgKyBvcHRpb25zLnJhbmdlKTtcbiAgICAgICAgc3VwcEluZm9TaXplID0gMTtcbiAgICAgICAgc3VwcEluZm9UeXBlID0gXCJGTE9BVDMyQVJSQVlcIiAvKiBXR1BVRU5UUllUWVBFLkZMT0FUMzJBUlJBWSAqLztcbiAgICAgICAgc3VwcEluZm9CdWZmZXIgPSBuZXcgRmxvYXQzMkFycmF5KFtvcHRpb25zLnJhbmdlXSk7XG4gICAgICAgIHN1cHBJbmZvU3RydWN0V2dzbCA9IGBcbiAgICAgICAgICAgIHJhbmdlJHtlbnRyeUluZGV4fTogZjMyYDtcbiAgICB9XG4gICAgY29uc3QgZGF0YVN0cnVjdFdnc2wgPSBgZGF0YSR7ZW50cnlJbmRleH06IGFycmF5PGFycmF5PCR7aXNVaW50MzJBcnJheSA/ICd1MzInIDogJ2YzMid9LCAke21heEVudHJ5TGVufT4sICR7ZW5jb2RlZExpc3QubGVuZ3RofT5gO1xuICAgIC8vIGZvciBub3csIG90aGVyIGRpc3RhbmNlcyBkbyBub3QgcmVxdWlyZSBhbnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgc28gd2UgY2FuIHNraXAgdGhhdFxuICAgIHJldHVybiB7XG4gICAgICAgIGZsYXRTb3VyY2VBcnJheSxcbiAgICAgICAgc291cmNlQXJyYXlTaXplOiBmbGF0U291cmNlQXJyYXkubGVuZ3RoLFxuICAgICAgICBtYXhFbnRyeUxlbixcbiAgICAgICAgYXJyYXlTaXplcyxcbiAgICAgICAgY29tcGxleGl0eSxcbiAgICAgICAgc3VwcEluZm9CdWZmZXIsXG4gICAgICAgIHN1cHBJbmZvU2l6ZSxcbiAgICAgICAgc3VwcEluZm9UeXBlOiBzdXBwSW5mb1R5cGUsXG4gICAgICAgIHN1cHBJbmZvU3RydWN0V2dzbCxcbiAgICAgICAgZW50cnlUeXBlLFxuICAgICAgICBpc1VpbnQzMkFycmF5LFxuICAgICAgICBkYXRhU3RydWN0V2dzbFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD13ZWJHUFUtcHJvY2Vzcy1pbmZvLmpzLm1hcCIsImltcG9ydCB7IFZlY3RvciB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7IEF2YWlsYWJsZU1ldHJpY3MsIE1lYXN1cmUsIGlzQml0QXJyYXlNZXRyaWMgfSBmcm9tICcuLi90eXBlZC1tZXRyaWNzJztcbmltcG9ydCB7IERpc3RhbmNlTWF0cml4U2VydmljZSB9IGZyb20gJy4uL2Rpc3RhbmNlLW1hdHJpeCc7XG5pbXBvcnQgeyBVTUFQIH0gZnJvbSAnLi4vdW1hcCc7XG5pbXBvcnQgeyBhc3NlcnQsIHRyYW5zcG9zZU1hdHJpeCB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zJztcbmltcG9ydCB7IFNwYXJzZU1hdHJpeFNlcnZpY2UgfSBmcm9tICcuLi9kaXN0YW5jZS1tYXRyaXgvc3BhcnNlLW1hdHJpeC1zZXJ2aWNlJztcbmltcG9ydCBCaXRBcnJheSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9iaXQtYXJyYXknO1xuaW1wb3J0IHNlZWRSYW5kb20gZnJvbSAnc2VlZHJhbmRvbSc7XG4vL2ltcG9ydCB7VFNORX0gZnJvbSAnQGtlY2tlbHQvdHNuZSc7XG5pbXBvcnQgeyBUU05FIH0gZnJvbSAnLi4vdC1zbmUvdC1zbmUnO1xuaW1wb3J0IHsgbXVsdGlDb2xXZWJHUFVLTk4gfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL21hdGgnO1xuY2xhc3MgTXVsdGlDb2x1bW5SZWR1Y2VyIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuZGF0YSA9IG9wdGlvbnMuZGF0YTtcbiAgICAgICAgdGhpcy53ZWlnaHRzID0gb3B0aW9ucy53ZWlnaHRzO1xuICAgICAgICB0aGlzLmFnZ3JlZ2F0aW9uTWV0aG9kID0gb3B0aW9ucy5hZ2dyZWdhdGlvbk1ldGhvZDtcbiAgICB9XG59XG5jbGFzcyBUU05FUmVkdWNlciBleHRlbmRzIE11bHRpQ29sdW1uUmVkdWNlciB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBUU05FUmVkdWNlci5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IG9wdGlvbnMgT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBAbWVtYmVyb2YgVFNORVJlZHVjZXJcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICBjb25zdCByYW5kb21TZWVkID0gb3B0aW9ucy5yYW5kb21TZWVkID8/IERhdGUoKTtcbiAgICAgICAgY29uc3QgcmFuZG9tRm4gPSBzZWVkUmFuZG9tKHJhbmRvbVNlZWQpO1xuICAgICAgICBvcHRpb25zLnJhbmRvbSA9IHJhbmRvbUZuO1xuICAgICAgICB0aGlzLnJlZHVjZXIgPSBuZXcgVFNORShvcHRpb25zKTtcbiAgICAgICAgdGhpcy5pdGVyYXRpb25zID0gb3B0aW9ucz8uaXRlcmF0aW9ucyA/PyB0aGlzLnJlZHVjZXIuZ2V0SXRlclNpemUodGhpcy5kYXRhWzBdLmxlbmd0aCk7XG4gICAgICAgIHRoaXMuZGlzdGFuY2VGbmFtZXMgPSBvcHRpb25zLmRpc3RhbmNlRm5hbWVzO1xuICAgICAgICB0aGlzLmRpc3RhbmNlRm5zID0gb3B0aW9ucy5kaXN0YW5jZUZucztcbiAgICAgICAgdGhpcy5kaXN0YW5jZUZuQXJncyA9IG9wdGlvbnMuZGlzdGFuY2VGbkFyZ3M7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3NGdW5jID0gb3B0aW9ucy5wcm9ncmVzc0Z1bmM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEVtYmVkcyB0aGUgZGF0YSBnaXZlbiBpbnRvIHRoZSB0d28tZGltZW5zaW9uYWwgc3BhY2UgdXNpbmcgdC1TTkUgbWV0aG9kLlxcXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbcGFyYWxsZWxEaXN0YW5jZVdvcmtlcnNdIFdoZXRoZXIgdG8gdXNlIHBhcmFsbGVsIGRpc3RhbmNlIHdvcmtlcnMuXG4gICAgICogQHJldHVybiB7YW55fSBDYXJ0ZXNpYW4gY29vcmRpbmF0ZSBvZiB0aGlzIGVtYmVkZGluZyBhbmQgZGlzdGFuY2UgbWF0cml4IHdoZXJlIGFwcGxpY2FibGUuXG4gICAgICovXG4gICAgYXN5bmMgdHJhbnNmb3JtKCkge1xuICAgICAgICBpZiAodGhpcy5kYXRhWzBdLmxlbmd0aCA+IDEwMDAwKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYXhpbXVtIG51bWJlciBvZiBzYW1wbGVzIGZvciBULVNORSBpcyAxMDAwMCcpO1xuICAgICAgICBjb25zdCBtYXRyaXhTZXJ2aWNlID0gbmV3IERpc3RhbmNlTWF0cml4U2VydmljZSh0cnVlLCBmYWxzZSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBjb25zdCBhZ2dyZWdhdGUgPSBnZXRBZ2dyZWdhdGlvbkZ1bmN0aW9uKHRoaXMuYWdncmVnYXRpb25NZXRob2QsIHRoaXMud2VpZ2h0cyk7XG4gICAgICAgICAgICAvLyBjb25zdCBkaXN0YW5jZXM6IEFycmF5PEZsb2F0MzJBcnJheT4gPSBbXTtcbiAgICAgICAgICAgIC8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAvLyAgIGNvbnN0IGRpc3QgPSBhd2FpdCBtYXRyaXhTZXJ2aWNlLmNhbGModGhpcy5kYXRhW2ldLCB0aGlzLmRpc3RhbmNlRm5hbWVzW2ldLCBmYWxzZSwgdGhpcy5kaXN0YW5jZUZuQXJnc1tpXSk7XG4gICAgICAgICAgICAvLyAgIGRpc3RhbmNlcy5wdXNoKGRpc3QpO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgLy8gY29uc3QgZGlzdGFuY2UgPSBuZXcgRmxvYXQzMkFycmF5KGRpc3RhbmNlc1swXS5sZW5ndGgpLmZpbGwoMCk7XG4gICAgICAgICAgICAvLyBmb3IgKGxldCBpID0gMDsgaSA8IGRpc3RhbmNlc1swXS5sZW5ndGg7ICsraSlcbiAgICAgICAgICAgIC8vICAgZGlzdGFuY2VbaV0gPSBhZ2dyZWdhdGUoZGlzdGFuY2VzLm1hcCgoZCkgPT4gZFtpXSkpO1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBhd2FpdCBtYXRyaXhTZXJ2aWNlLmNhbGNNdWx0aSh0aGlzLmRhdGEsIHRoaXMuZGlzdGFuY2VGbmFtZXMsIGZhbHNlLCB0aGlzLmRpc3RhbmNlRm5BcmdzLCB0aGlzLndlaWdodHMsIHRoaXMuYWdncmVnYXRpb25NZXRob2QpO1xuICAgICAgICAgICAgbWF0cml4U2VydmljZS50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgIC8vIGNvbnN0IG1hdHJpeFByb3h5ID0gZGlzdGFuY2VNYXRyaXhQcm94eShkaXN0YW5jZSwgdGhpcy5kYXRhWzBdLmxlbmd0aCk7XG4gICAgICAgICAgICB0aGlzLnJlZHVjZXIuaW5pdERhdGFEaXN0KGRpc3RhbmNlLCB0aGlzLmRhdGFbMF0ubGVuZ3RoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5pdGVyYXRpb25zOyArK2kpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZHVjZXIuc3RlcCgpOyAvLyBldmVyeSB0aW1lIHlvdSBjYWxsIHRoaXMsIHNvbHV0aW9uIGdldHMgYmV0dGVyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvZ3Jlc3NGdW5jKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2dyZXNzRnVuYyhpLCB0aGlzLml0ZXJhdGlvbnMsIFtdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlZHVjZXIuZ2V0U29sdXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgbWF0cml4U2VydmljZS50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICB9XG59XG5jbGFzcyBVTUFQUmVkdWNlciBleHRlbmRzIE11bHRpQ29sdW1uUmVkdWNlciB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBVTUFQUmVkdWNlci5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IG9wdGlvbnMgT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBAbWVtYmVyb2YgVU1BUFJlZHVjZXJcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHJhbmRvbVNlZWQgPSBvcHRpb25zLnJhbmRvbVNlZWQgPz8gRGF0ZSgpO1xuICAgICAgICBjb25zdCByYW5kb21GbiA9IHNlZWRSYW5kb20ocmFuZG9tU2VlZCk7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLnVzZVdFQkdQVSA9IGZhbHNlO1xuICAgICAgICBhc3NlcnQoJ2Rpc3RhbmNlRm5hbWVzJyBpbiBvcHRpb25zKTtcbiAgICAgICAgYXNzZXJ0KCdkaXN0YW5jZUZucycgaW4gb3B0aW9ucyk7XG4gICAgICAgIHRoaXMuZGlzdGFuY2VGbkFyZ3MgPSBvcHRpb25zLmRpc3RhbmNlRm5BcmdzO1xuICAgICAgICB0aGlzLmRpc3RhbmNlRm5zID0gb3B0aW9ucy5kaXN0YW5jZUZucztcbiAgICAgICAgdGhpcy5wcm9ncmVzc0Z1bmMgPSBvcHRpb25zLnByb2dyZXNzRnVuYztcbiAgICAgICAgdGhpcy51c2VXRUJHUFUgPSBvcHRpb25zLnVzZVdFQkdQVSA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5kaXN0YW5jZUZuYW1lcyA9IG9wdGlvbnMuZGlzdGFuY2VGbmFtZXM7XG4gICAgICAgIC8vVW1hcCB1c2VzIHZlY3RvciBpbmRleGluZywgc28gd2UgbmVlZCB0byBjcmVhdGUgYW4gYXJyYXkgb2YgdmVjdG9ycyBhcyBpbmRlY2VzLlxuICAgICAgICB0aGlzLnZlY3RvcnMgPSBuZXcgQXJyYXkodGhpcy5kYXRhWzBdLmxlbmd0aCkuZmlsbCgwKS5tYXAoKF8sIGkpID0+IGkpO1xuICAgICAgICBpZiAodGhpcy5kYXRhWzBdLmxlbmd0aCA8PSAob3B0aW9ucy5uTmVpZ2hib3JzID8/IDE1KSlcbiAgICAgICAgICAgIG9wdGlvbnMubk5laWdoYm9ycyA9IHRoaXMuZGF0YVswXS5sZW5ndGggLSAxO1xuICAgICAgICBvcHRpb25zLnJhbmRvbSA9IHJhbmRvbUZuO1xuICAgICAgICB0aGlzLnJlZHVjZXIgPSBuZXcgVU1BUChvcHRpb25zKTtcbiAgICAgICAgLy8gdGhpcy5yZWR1Y2VyLmRpc3RhbmNlRm4gPSB0aGlzLl9lbmNvZGVkRGlzdGFuY2UuYmluZCh0aGlzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSBkYXRhIGdpdmVuIGludG8gdGhlIHR3by1kaW1lbnNpb25hbCBzcGFjZSB1c2luZyBVTUFQIG1ldGhvZC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtfcGFyYWxsZWxEaXN0YW5jZVdvcmtlcnNdIFdoZXRoZXIgdG8gdXNlIHBhcmFsbGVsIGRpc3RhbmNlIG1hdHJpeCB3b3JrZXJzLlxuICAgICAqIEByZXR1cm4ge2FueX0gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcuXG4gICAgICovXG4gICAgYXN5bmMgdHJhbnNmb3JtKF9wYXJhbGxlbERpc3RhbmNlV29ya2Vycykge1xuICAgICAgICBjb25zb2xlLnRpbWUoJ2tubiBncmFwaCcpO1xuICAgICAgICBsZXQga25uR3JhcGggPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh0aGlzLnVzZVdFQkdQVSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBrbm5HcmFwaCA9IGF3YWl0IG11bHRpQ29sV2ViR1BVS05OKHRoaXMuZGF0YSwgdGhpcy5yZWR1Y2VyLm5laWdoYm9ycywgdGhpcy5kaXN0YW5jZUZuYW1lcywgdGhpcy5hZ2dyZWdhdGlvbk1ldGhvZCwgdGhpcy53ZWlnaHRzLCB0aGlzLmRpc3RhbmNlRm5BcmdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignV0VCR1BVIEtOTiBmYWlsZWQsIGZhbGxpbmcgYmFjayB0byBtdWx0aXRocmVhZGVkIENQVSBpbXBsZW1lbnRhdGlvbicpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFrbm5HcmFwaCkge1xuICAgICAgICAgICAga25uR3JhcGggPSBhd2FpdCBuZXcgU3BhcnNlTWF0cml4U2VydmljZSgpXG4gICAgICAgICAgICAgICAgLm11bHRpQ29sdW1uS05OKHRoaXMuZGF0YSwgdGhpcy5kaXN0YW5jZUZuYW1lcywgdGhpcy5yZWR1Y2VyLm5laWdoYm9ycywgdGhpcy5kaXN0YW5jZUZuQXJncywgdGhpcy53ZWlnaHRzLCB0aGlzLmFnZ3JlZ2F0aW9uTWV0aG9kKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ2tubiBncmFwaCcpO1xuICAgICAgICB0aGlzLnJlZHVjZXIuc2V0UHJlY29tcHV0ZWRLTk4oa25uR3JhcGgua25uSW5kZXhlcywga25uR3JhcGgua25uRGlzdGFuY2VzKTtcbiAgICAgICAgLy8gbmVlZGVkIHNvIHRoYXQgZ2FyYmFnZSBjb2xsZWN0b3IgY2FuIGZyZWUgbWVtb3J5IGZyb20gZGlzdGFuY2UgbWF0cml4XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZW1iZWRkaW5nID0gYXdhaXQgdGhpcy5yZWR1Y2VyLmZpdEFzeW5jKHRoaXMudmVjdG9ycywgKGVwb2MpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByb2dyZXNzRnVuYylcbiAgICAgICAgICAgICAgICB0aGlzLnByb2dyZXNzRnVuYyhlcG9jLCB0aGlzLnJlZHVjZXIuZ2V0TkVwb2NocygpLCB0aGlzLnJlZHVjZXIuZ2V0RW1iZWRkaW5nKCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gYXJyYXlDYXN0MkNvb3JkaW5hdGVzKGRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQXJyYXkoZGF0YS5sZW5ndGgpLmZpbGwoMCkubWFwKChfLCBpKSA9PiAoVmVjdG9yLmZyb20oZGF0YVtpXSkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJyYXlDYXN0MkNvb3JkaW5hdGVzKGVtYmVkZGluZyk7XG4gICAgfVxufVxuY29uc3QgQXZhaWxhYmxlUmVkdWNlcnMgPSB7XG4gICAgJ1VNQVAnOiBVTUFQUmVkdWNlcixcbiAgICAndC1TTkUnOiBUU05FUmVkdWNlcixcbn07XG5leHBvcnQgY2xhc3MgTXVsdGlDb2xEaW1SZWR1Y2VyIHtcbiAgICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBEaW1lbnNpb25hbGl0eVJlZHVjZXIuXG4gICAqIEBwYXJhbSB7YW55W119IGRhdGEgVmVjdG9ycyB0byBlbWJlZC5cbiAgICogQHBhcmFtIHtLbm93bk1ldGhvZHN9IG1ldGhvZCBFbWJlZGRpbmcgbWV0aG9kIHRvIGJlIGFwcGxpZWRcbiAgICogQHBhcmFtIHtLbm93bk1ldHJpY3N9IG1ldHJpYyBEaXN0YW5jZSBtZXRyaWMgdG8gYmUgY29tcHV0ZWQgYmV0d2VlbiBlYWNoIG9mIHRoZSB2ZWN0b3JzLlxuICAgKiBAcGFyYW0ge09wdGlvbnN9IFtvcHRpb25zXSBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGltcGxlbWVudGluZyBlbWJlZGRlcnMuXG4gICAqIEBtZW1iZXJvZiBEaW1lbnNpb25hbGl0eVJlZHVjZXJcbiAgICovXG4gICAgY29uc3RydWN0b3IoZGF0YSwgbWV0aG9kLCBtZXRyaWNzLCB3ZWlnaHRzLCBkaXN0YW5jZUFnZ3JlZ2F0aW9uLCBvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IG1lYXN1cmVzID0gW107XG4gICAgICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IG1ldHJpY3MubGVuZ3RoOyArK2lkeCkge1xuICAgICAgICAgICAgY29uc3QgbWVhc3VyZSA9IG5ldyBNZWFzdXJlKG1ldHJpY3NbaWR4XSkuZ2V0TWVhc3VyZShvcHRpb25zLmRpc3RhbmNlRm5BcmdzW2lkeF0pO1xuICAgICAgICAgICAgbWVhc3VyZXMucHVzaChtZWFzdXJlKTtcbiAgICAgICAgICAgIGxldCBiaXRBcnJheUxlbmd0aCA9IDIwNDg7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFbaWR4XS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGlmIChkYXRhW2lkeF1baV0gJiYgZGF0YVtpZHhdW2ldLl9sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgYml0QXJyYXlMZW5ndGggPSBkYXRhW2lkeF1baV0uX2xlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzQml0QXJyYXlNZXRyaWMobWV0cmljc1tpZHhdKSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YVtpZHhdLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW2lkeF1baV0gJiYgZGF0YVtpZHhdW2ldLl9kYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtpZHhdW2ldID0gbmV3IEJpdEFycmF5KGRhdGFbaWR4XVtpXS5fZGF0YSwgZGF0YVtpZHhdW2ldLl9sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2lkeF1baV0gPSBuZXcgQml0QXJyYXkoYml0QXJyYXlMZW5ndGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobWV0aG9kID09ICdVTUFQJykge1xuICAgICAgICAgICAgdGhpcy5yZWR1Y2VyID0gbmV3IFVNQVBSZWR1Y2VyKHtcbiAgICAgICAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgICAgICAgIGRpc3RhbmNlRm5hbWVzOiBtZXRyaWNzLFxuICAgICAgICAgICAgICAgIGRpc3RhbmNlRm5zOiBtZWFzdXJlcyxcbiAgICAgICAgICAgICAgICBkaXN0YW5jZUZuQXJnczogb3B0aW9ucy5kaXN0YW5jZUZuQXJncyxcbiAgICAgICAgICAgICAgICB3ZWlnaHRzOiB3ZWlnaHRzLFxuICAgICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uTWV0aG9kOiBkaXN0YW5jZUFnZ3JlZ2F0aW9uLFxuICAgICAgICAgICAgICAgIC4uLm9wdGlvbnNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1ldGhvZCA9PSAndC1TTkUnKSB7XG4gICAgICAgICAgICB0aGlzLnJlZHVjZXIgPSBuZXcgVFNORVJlZHVjZXIoe1xuICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgICAgICAgZGlzdGFuY2VGbmFtZXM6IG1ldHJpY3MsXG4gICAgICAgICAgICAgICAgZGlzdGFuY2VGbnM6IG1lYXN1cmVzLFxuICAgICAgICAgICAgICAgIGRpc3RhbmNlRm5BcmdzOiBvcHRpb25zLmRpc3RhbmNlRm5BcmdzLFxuICAgICAgICAgICAgICAgIHdlaWdodHM6IHdlaWdodHMsXG4gICAgICAgICAgICAgICAgYWdncmVnYXRpb25NZXRob2Q6IGRpc3RhbmNlQWdncmVnYXRpb24sXG4gICAgICAgICAgICAgICAgLi4ub3B0aW9uc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAqIEVtYmVkcyB0aGUgZGF0YSBnaXZlbiBpbnRvIHRoZSB0d28tZGltZW5zaW9uYWwgc3BhY2UgdXNpbmcgdGhlIGNob3NlbiBtZXRob2QuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gdHJhbnNwb3NlIFdoZXRoZXIgdG8gdHJhbnNmb3JtIGNvb3JkaW5hdGVzIHRvIGhhdmUgY29sdW1ucy1maXJzdCBvcmllbnRhdGlvbi5cbiAgICogQHBhcmFtIHtib29sZWFufSBwYXJhbGxlbERpc3RhbmNlV29ya2VycyBXaGV0aGVyIHRvIHVzZSBwYXJhbGxlbCBkaXN0YW5jZSBjb21wdXRhdGlvbi5cbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBlbWJlZGRpbmcgbWV0aG9kIHdhcyBub3QgZm91bmQuXG4gICAqIEByZXR1cm4ge2FueX0gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcgYW5kIGRpc3RhbmNlIG1hdHJpeCB3aGVyZSBhcHBsaWNhYmxlLlxuICAgKiBAbWVtYmVyb2YgRGltZW5zaW9uYWxpdHlSZWR1Y2VyXG4gICAqL1xuICAgIGFzeW5jIHRyYW5zZm9ybSh0cmFuc3Bvc2UgPSBmYWxzZSkge1xuICAgICAgICBpZiAodGhpcy5yZWR1Y2VyID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlZHVjZXIgd2FzIG5vdCBkZWZpbmVkLicpO1xuICAgICAgICBsZXQgZW1iZWRkaW5nID0gYXdhaXQgdGhpcy5yZWR1Y2VyLnRyYW5zZm9ybSgpO1xuICAgICAgICBpZiAodHJhbnNwb3NlKVxuICAgICAgICAgICAgZW1iZWRkaW5nID0gdHJhbnNwb3NlTWF0cml4KGVtYmVkZGluZyk7XG4gICAgICAgIHJldHVybiBlbWJlZGRpbmc7XG4gICAgfVxuICAgIC8qKlxuICAgKiBSZXR1cm5zIG1ldHJpY3MgYXZhaWxhYmxlIGJ5IHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSB7QXZhaWxhYmxlRGF0YVR5cGVzfSB0eXBlTmFtZSB0eXBlIG5hbWVcbiAgICogQHJldHVybiB7c3RyaW5nW119IE1ldHJpYyBuYW1lcyB3aGljaCBleHBlY3RzIHRoZSBnaXZlbiBkYXRhIHR5cGVcbiAgICogQG1lbWJlcm9mIERpbWVuc2lvbmFsaXR5UmVkdWNlclxuICAgKi9cbiAgICBzdGF0aWMgYXZhaWxhYmxlTWV0cmljc0J5VHlwZSh0eXBlTmFtZSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljc1t0eXBlTmFtZV0pO1xuICAgIH1cbiAgICAvKipcbiAgICogUmV0dXJucyBkaW1lbnNpb25hbGl0eSByZWR1Y3Rpb24gbWV0aG9kcyBhdmFpbGFibGUuXG4gICAqXG4gICAqIEByZWFkb25seVxuICAgKiBAbWVtYmVyb2YgRGltZW5zaW9uYWxpdHlSZWR1Y2VyXG4gICAqL1xuICAgIHN0YXRpYyBnZXQgYXZhaWxhYmxlTWV0aG9kcygpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKEF2YWlsYWJsZVJlZHVjZXJzKTtcbiAgICB9XG4gICAgLyoqXG4gICAqIFJldHVybnMgbWV0cmljcyBhdmFpbGFibGUuXG4gICAqXG4gICAqIEByZWFkb25seVxuICAgKiBAbWVtYmVyb2YgRGltZW5zaW9uYWxpdHlSZWR1Y2VyXG4gICAqL1xuICAgIHN0YXRpYyBnZXQgYXZhaWxhYmxlTWV0cmljcygpIHtcbiAgICAgICAgbGV0IGFucyA9IFtdO1xuICAgICAgICBPYmplY3QudmFsdWVzKEF2YWlsYWJsZU1ldHJpY3MpLmZvckVhY2goKG9iaikgPT4ge1xuICAgICAgICAgICAgY29uc3QgYXJyYXkgPSBPYmplY3QudmFsdWVzKG9iaik7XG4gICAgICAgICAgICBhbnMgPSBbLi4uYW5zLCAuLi5hcnJheV07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYW5zO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJYVnNkR2t0WTI5c2RXMXVMV1JwYlMxeVpXUjFZMlZ5TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2liWFZzZEdrdFkyOXNkVzF1TFdScGJTMXlaV1IxWTJWeUxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTEU5QlFVOHNSVUZCSzBNc1RVRkJUU3hGUVVGVkxFMUJReTlFTEdsRVFVRnBSQ3hEUVVGRE8wRkJRM3BFTEU5QlFVOHNSVUZCY1VJc1owSkJRV2RDTEVWQlFXZENMRTlCUVU4c1JVRkJSU3huUWtGQlowSXNSVUZCUXl4TlFVRk5MR3RDUVVGclFpeERRVUZETzBGQlF5OUhMRTlCUVU4c1JVRkJReXh4UWtGQmNVSXNSVUZCUXl4TlFVRk5MRzlDUVVGdlFpeERRVUZETzBGQlJYcEVMRTlCUVU4c1JVRkJReXhKUVVGSkxFVkJRVU1zVFVGQlRTeFRRVUZUTEVOQlFVTTdRVUZETjBJc1QwRkJUeXhGUVVGRExFMUJRVTBzUlVGQlJTeGxRVUZsTEVWQlFVTXNUVUZCVFN4cFJFRkJhVVFzUTBGQlF6dEJRVU40Uml4UFFVRlBMRVZCUVZrc2JVSkJRVzFDTEVWQlFVTXNUVUZCVFN3d1EwRkJNRU1zUTBGQlF6dEJRVVY0Uml4UFFVRlBMRkZCUVZFc1RVRkJUU3g1UTBGQmVVTXNRMEZCUXp0QlFVTXZSQ3hQUVVGUExGVkJRVlVzVFVGQlRTeFpRVUZaTEVOQlFVTTdRVUZEY0VNc2NVTkJRWEZETzBGQlEzSkRMRTlCUVU4c1JVRkJReXhKUVVGSkxFVkJRVU1zVFVGQlRTeG5Ra0ZCWjBJc1EwRkJRenRCUVVOd1F5eFBRVUZQTEVWQlFVTXNhVUpCUVdsQ0xFVkJRVU1zVFVGQlRTd3dRa0ZCTUVJc1EwRkJRenRCUVN0Q00wUXNUVUZCWlN4clFrRkJhMEk3U1VGSk4wSXNXVUZCV1N4UFFVRm5RanRSUVVNeFFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU03VVVGRGVrSXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETzFGQlF5OUNMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNSMEZCUnl4UFFVRlBMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTTdTVUZEY2tRc1EwRkJRenREUVV0S08wRkJSVVFzVFVGQlRTeFhRVUZaTEZOQlFWRXNhMEpCUVd0Q08wbEJUM2hET3pzN08wOUJTVWM3U1VGRFNDeFpRVUZaTEU5QlFXZENPMUZCUXpGQ0xFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0UlFVTm1MRTFCUVUwc1ZVRkJWU3hIUVVGWExFOUJRVThzUTBGQlF5eFZRVUZWTEVsQlFVa3NTVUZCU1N4RlFVRkZMRU5CUVVNN1VVRkRlRVFzVFVGQlRTeFJRVUZSTEVkQlFVY3NWVUZCVlN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8xRkJRM2hETEU5QlFVOHNRMEZCUXl4TlFVRk5MRWRCUVVjc1VVRkJVU3hEUVVGRE8xRkJRekZDTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdVVUZEYWtNc1NVRkJTU3hEUVVGRExGVkJRVlVzUjBGQlJ5eFBRVUZQTEVWQlFVVXNWVUZCVlN4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZGtZc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eFBRVUZQTEVOQlFVTXNZMEZCWXl4RFFVRkRPMUZCUXpkRExFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NUMEZCVHl4RFFVRkRMRmRCUVZjc1EwRkJRenRSUVVOMlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4SFFVRkhMRTlCUVU4c1EwRkJReXhqUVVGakxFTkJRVU03VVVGRE4wTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1IwRkJSeXhQUVVGUExFTkJRVU1zV1VGQldTeERRVUZETzBsQlF6TkRMRU5CUVVNN1NVRkZSRHM3T3p0UFFVbEhPMGxCUTBrc1MwRkJTeXhEUVVGRExGTkJRVk03VVVGRGNFSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNSMEZCUnl4TFFVRkxPMWxCUXpkQ0xFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNPRU5CUVRoRExFTkJRVU1zUTBGQlF6dFJRVU5zUlN4TlFVRk5MR0ZCUVdFc1IwRkJSeXhKUVVGSkxIRkNRVUZ4UWl4RFFVRkRMRWxCUVVrc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dFJRVU0zUkN4SlFVRkpPMWxCUTBZc2EwWkJRV3RHTzFsQlEyeEdMRFpEUVVFMlF6dFpRVU0zUXl3clEwRkJLME03V1VGREwwTXNaMGhCUVdkSU8xbEJRMmhJTERCQ1FVRXdRanRaUVVNeFFpeEpRVUZKTzFsQlEwb3NhMFZCUVd0Rk8xbEJRMnhGTEdkRVFVRm5SRHRaUVVOb1JDeDVSRUZCZVVRN1dVRkRla1FzVFVGQlRTeFJRVUZSTEVkQlFVY3NUVUZCVFN4aFFVRmhMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3hMUVVGTExFVkJRVVVzU1VGQlNTeERRVUZETEdOQlFXTXNSVUZEZGtjc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zUTBGQlF6dFpRVU40UXl4aFFVRmhMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03V1VGRE1VSXNNRVZCUVRCRk8xbEJRekZGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1dVRkJXU3hEUVVGRExGRkJRVkVzUlVGQlJTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzFsQlJYcEVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzJkQ1FVTjRReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc2FVUkJRV2xFTzJkQ1FVTjBSU3hKUVVGSkxFbEJRVWtzUTBGQlF5eFpRVUZaTzI5Q1FVTnVRaXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzJGQlF6ZERPMWxCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRPMU5CUTI1RE8xRkJRVU1zVDBGQlR5eERRVUZETEVWQlFVVTdXVUZEVml4aFFVRmhMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03V1VGRE1VSXNUVUZCVFN4RFFVRkRMRU5CUVVNN1UwRkRWRHRKUVVOSUxFTkJRVU03UTBGRFNqdEJRVVZFTEUxQlFVMHNWMEZCV1N4VFFVRlJMR3RDUVVGclFqdEpRVkY0UXpzN096dFBRVWxITzBsQlEwZ3NXVUZCV1N4UFFVRm5RanRSUVVNeFFpeE5RVUZOTEZWQlFWVXNSMEZCVnl4UFFVRlBMRU5CUVVNc1ZVRkJWU3hKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETzFGQlEzaEVMRTFCUVUwc1VVRkJVU3hIUVVGSExGVkJRVlVzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0UlFVTjRReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdVVUZVVUN4alFVRlRMRWRCUVZrc1MwRkJTeXhEUVVGRE8xRkJWVzVETEUxQlFVMHNRMEZCUXl4blFrRkJaMElzU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXp0UlFVTndReXhOUVVGTkxFTkJRVU1zWVVGQllTeEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTJwRExFbEJRVWtzUTBGQlF5eGpRVUZqTEVkQlFVY3NUMEZCVHl4RFFVRkRMR05CUVdNc1EwRkJRenRSUVVNM1F5eEpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRTlCUVU4c1EwRkJReXhYUVVGWkxFTkJRVU03VVVGRGVFTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1IwRkJSeXhQUVVGUExFTkJRVU1zV1VGQldTeERRVUZETzFGQlEzcERMRWxCUVVrc1EwRkJReXhUUVVGVExFZEJRVWNzVDBGQlR5eERRVUZETEZOQlFWTXNTVUZCU1N4TFFVRkxMRU5CUVVNN1VVRkROVU1zU1VGQlNTeERRVUZETEdOQlFXTXNSMEZCUnl4UFFVRlBMRU5CUVVNc1kwRkJaU3hEUVVGRE8xRkJRemxETEdsR1FVRnBSanRSUVVOcVJpeEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSWFpGTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1ZVRkJWU3hKUVVGSkxFVkJRVVVzUTBGQlF6dFpRVU51UkN4UFFVRlBMRU5CUVVNc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU12UXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hIUVVGSExGRkJRVkVzUTBGQlF6dFJRVU14UWl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTJwRExEaEVRVUU0UkR0SlFVTm9SU3hEUVVGRE8wbEJSVVE3T3pzN1QwRkpSenRKUVVOSkxFdEJRVXNzUTBGQlF5eFRRVUZUTEVOQlFVTXNkMEpCUVd0RE8xRkJRM1pFTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03VVVGRE1VSXNTVUZCU1N4UlFVRlJMRWRCUVRCQ0xGTkJRVk1zUTBGQlF6dFJRVU5vUkN4SlFVRkpMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVU3V1VGRGJFSXNTVUZCU1R0blFrRkRSaXhSUVVGUkxFZEJRVWNzVFVGQlRTeHBRa0ZCYVVJc1EwRkRhRU1zU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExGTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNZMEZCY1VJc1JVRkJSU3hKUVVGSkxFTkJRVU1zYVVKQlFYZENMRVZCUXpWR0xFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVXNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkRWaXhEUVVGRE8yRkJRek5DTzFsQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVN1owSkJRMVlzVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4eFJVRkJjVVVzUTBGQlF5eERRVUZETzJkQ1FVTnlSaXhQUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMkZCUTJ4Q08xTkJRMFk3VVVGRFJDeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZPMWxCUTJJc1VVRkJVU3hIUVVGSExFMUJRVTBzU1VGQlNTeHRRa0ZCYlVJc1JVRkJSVHRwUWtGRGRrTXNZMEZCWXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEdOQlFXTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExGTkJRVk1zUlVGRGNFVXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETzFOQlEyaEZPMUZCUTBRc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0UlFVTTNRaXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEdsQ1FVRnBRaXhEUVVGRExGRkJRVkVzUTBGQlF5eFZRVUZWTEVWQlFVVXNVVUZCVVN4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8xRkJSVE5GTEhkRlFVRjNSVHRSUVVONFJTeE5RVUZOTEVsQlFVa3NUMEZCVHl4RFFVRlBMRU5CUVVNc1QwRkJUeXhGUVVGRkxFVkJRVVU3V1VGRGJFTXNWVUZCVlN4RFFVRkRMRWRCUVVjc1JVRkJSVHRuUWtGRFpDeFBRVUZQTEVWQlFVVXNRMEZCUXp0WlFVTmFMRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5XTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlVnc1RVRkJUU3hUUVVGVExFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RlFVRkZMRVZCUVVVN1dVRkRia1VzU1VGQlNTeEpRVUZKTEVOQlFVTXNXVUZCV1R0blFrRkRia0lzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVWQlFVVXNSVUZCUlN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExGbEJRVmtzUlVGQlJTeERRVUZETEVOQlFVTTdVVUZEY0VZc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRlNDeFRRVUZUTEhGQ1FVRnhRaXhEUVVGRExFbEJRV2RDTzFsQlF6ZERMRTlCUVU4c1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpsRkxFTkJRVU03VVVGRlJDeFBRVUZQTEhGQ1FVRnhRaXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzBsQlF6RkRMRU5CUVVNN1EwRkRTanRCUVVWRUxFMUJRVTBzYVVKQlFXbENMRWRCUVVjN1NVRkRlRUlzVFVGQlRTeEZRVUZGTEZkQlFWYzdTVUZEYmtJc1QwRkJUeXhGUVVGRkxGZEJRVmM3UTBGRGNrSXNRMEZCUXp0QlFVbEdMRTFCUVUwc1QwRkJUeXhyUWtGQmEwSTdTVUZGTTBJN096czdPenM3UzBGUFF6dEpRVU5FTEZsQlFWa3NTVUZCYTBJc1JVRkJSU3hOUVVFeVFpeEZRVUZGTEU5QlFYVkNMRVZCUTJ4R0xFOUJRV2xDTEVWQlFVVXNiVUpCUVRoRExFVkJRVVVzVDBGQlowSTdVVUZEYmtZc1RVRkJUU3hSUVVGUkxFZEJRWEZDTEVWQlFVVXNRMEZCUXp0UlFVTjBReXhMUVVGTExFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTXNSVUZCUlN4SFFVRkhMRWRCUVVjc1QwRkJUeXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEVkQlFVY3NSVUZCUlR0WlFVTTNReXhOUVVGTkxFOUJRVThzUjBGQlJ5eEpRVUZKTEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eFZRVUZWTEVOQlFVTXNUMEZCVHl4RFFVRkRMR05CUVdNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEyeEdMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdXVUZEZGtJc1NVRkJTU3hqUVVGakxFZEJRVWNzU1VGQlNTeERRVUZETzFsQlF6RkNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMmRDUVVONlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eEZRVUZGTzI5Q1FVTjRReXhqUVVGakxFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF6dHZRa0ZEZEVNc1RVRkJUVHRwUWtGRFVEdGhRVU5HTzFsQlEwUXNTVUZCU1N4blFrRkJaMElzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSVHRuUWtGRGJFTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdiMEpCUTNwRExFbEJRVWtzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTE8zZENRVU53UXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03TzNkQ1FVVjBSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hSUVVGUkxFTkJRVU1zWTBGQll5eERRVUZETEVOQlFVTTdhVUpCUXk5RE8yRkJRMFk3VTBGRFJqdFJRVVZFTEVsQlFVa3NUVUZCVFN4SlFVRkpMRTFCUVUwc1JVRkJSVHRaUVVOd1FpeEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1YwRkJWeXhEUVVGRE8yZENRVU0zUWl4SlFVRkpMRVZCUVVVc1NVRkJTVHRuUWtGRFZpeGpRVUZqTEVWQlFVVXNUMEZCVHp0blFrRkRka0lzVjBGQlZ5eEZRVUZGTEZGQlFWRTdaMEpCUTNKQ0xHTkJRV01zUlVGQlJTeFBRVUZQTEVOQlFVTXNZMEZCWXp0blFrRkRkRU1zVDBGQlR5eEZRVUZGTEU5QlFVODdaMEpCUTJoQ0xHbENRVUZwUWl4RlFVRkZMRzFDUVVGdFFqdG5Ra0ZEZEVNc1IwRkJSeXhQUVVGUE8yRkJRMWdzUTBGQlF5eERRVUZETzFOQlEwbzdZVUZCVFN4SlFVRkpMRTFCUVUwc1NVRkJTU3hQUVVGUExFVkJRVVU3V1VGRE5VSXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhKUVVGSkxGZEJRVmNzUTBGQlF6dG5Ra0ZETjBJc1NVRkJTU3hGUVVGRkxFbEJRVWs3WjBKQlExWXNZMEZCWXl4RlFVRkZMRTlCUVU4N1owSkJRM1pDTEZkQlFWY3NSVUZCUlN4UlFVRlJPMmRDUVVOeVFpeGpRVUZqTEVWQlFVVXNUMEZCVHl4RFFVRkRMR05CUVdNN1owSkJRM1JETEU5QlFVOHNSVUZCUlN4UFFVRlBPMmRDUVVOb1FpeHBRa0ZCYVVJc1JVRkJSU3h0UWtGQmJVSTdaMEpCUTNSRExFZEJRVWNzVDBGQlR6dGhRVU5ZTEVOQlFVTXNRMEZCUXp0VFFVTktPMGxCUTBnc1EwRkJRenRKUVVWRU96czdPenM3T3p0TFFWRkRPMGxCUTAwc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eFpRVUZ4UWl4TFFVRkxPMUZCUXk5RExFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNTMEZCU3l4VFFVRlRPMWxCUXpWQ0xFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNNRUpCUVRCQ0xFTkJRVU1zUTBGQlF6dFJRVVU1UXl4SlFVRkpMRk5CUVZNc1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNN1VVRkZMME1zU1VGQlNTeFRRVUZUTzFsQlExZ3NVMEZCVXl4SFFVRkhMR1ZCUVdVc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dFJRVVY2UXl4UFFVRlBMRk5CUVZNc1EwRkJRenRKUVVOdVFpeERRVUZETzBsQlJVUTdPenM3T3p0TFFVMURPMGxCUTBRc1RVRkJUU3hEUVVGRExITkNRVUZ6UWl4RFFVRkRMRkZCUVRSQ08xRkJRM2hFTEU5QlFVOHNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMnBFTEVOQlFVTTdTVUZGUkRzN096czdTMEZMUXp0SlFVTkVMRTFCUVUwc1MwRkJTeXhuUWtGQlowSTdVVUZEZWtJc1QwRkJUeXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFTkJRVU03U1VGRGVFTXNRMEZCUXp0SlFVVkVPenM3T3p0TFFVdERPMGxCUTBRc1RVRkJUU3hMUVVGTExHZENRVUZuUWp0UlFVTjZRaXhKUVVGSkxFZEJRVWNzUjBGQllTeEZRVUZGTEVOQlFVTTdVVUZEZGtJc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZPMWxCUXpsRExFMUJRVTBzUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGFrTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFVkJRVVVzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXp0UlFVTXpRaXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5JTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTJJc1EwRkJRenREUVVOS0lpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIdERiMjl5WkdsdVlYUmxjeXdnUkdsemRHRnVZMlZOWlhSeWFXTXNJRTFoZEhKcGVDd2dUM0IwYVc5dWN5d2dWbVZqZEc5eUxDQldaV04wYjNKemZWeHVJQ0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTBGMllXbHNZV0pzWlVSaGRHRlVlWEJsY3l3Z1FYWmhhV3hoWW14bFRXVjBjbWxqY3l3Z1MyNXZkMjVOWlhSeWFXTnpMQ0JOWldGemRYSmxMQ0JwYzBKcGRFRnljbUY1VFdWMGNtbGpmU0JtY205dElDY3VMaTkwZVhCbFpDMXRaWFJ5YVdOekp6dGNibWx0Y0c5eWRDQjdSR2x6ZEdGdVkyVk5ZWFJ5YVhoVFpYSjJhV05sZlNCbWNtOXRJQ2N1TGk5a2FYTjBZVzVqWlMxdFlYUnlhWGduTzF4dWFXMXdiM0owSUh0RWFYTjBZVzVqWlVGblozSmxaMkYwYVc5dVRXVjBhRzlrZlNCbWNtOXRJQ2N1TGk5a2FYTjBZVzVqWlMxdFlYUnlhWGd2ZEhsd1pYTW5PMXh1YVcxd2IzSjBJSHRWVFVGUWZTQm1jbTl0SUNjdUxpOTFiV0Z3Snp0Y2JtbHRjRzl5ZENCN1lYTnpaWEowTENCMGNtRnVjM0J2YzJWTllYUnlhWGg5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNabFkzUnZjaTF2Y0dWeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN1MyNXVVbVZ6ZFd4MExDQlRjR0Z5YzJWTllYUnlhWGhUWlhKMmFXTmxmU0JtY205dElDY3VMaTlrYVhOMFlXNWpaUzF0WVhSeWFYZ3ZjM0JoY25ObExXMWhkSEpwZUMxelpYSjJhV05sSnp0Y2JtbHRjRzl5ZENCN1JHbHRVbVZrZFdOMGFXOXVUV1YwYUc5a2MzMGdabkp2YlNBbkxpOTBlWEJsY3ljN1hHNXBiWEJ2Y25RZ1FtbDBRWEp5WVhrZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdlltbDBMV0Z5Y21GNUp6dGNibWx0Y0c5eWRDQnpaV1ZrVW1GdVpHOXRJR1p5YjIwZ0ozTmxaV1J5WVc1a2IyMG5PMXh1THk5cGJYQnZjblFnZTFSVFRrVjlJR1p5YjIwZ0owQnJaV05yWld4MEwzUnpibVVuTzF4dWFXMXdiM0owSUh0VVUwNUZmU0JtY205dElDY3VMaTkwTFhOdVpTOTBMWE51WlNjN1hHNXBiWEJ2Y25RZ2UyMTFiSFJwUTI5c1YyVmlSMUJWUzA1T2ZTQm1jbTl0SUNkQVpHRjBZV2R5YjJzdGJHbGljbUZ5YVdWekwyMWhkR2duTzF4dVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElFbFZUVUZRVDNCMGFXOXVjeUI3WEc0Z0lDQWdiR1ZoY201cGJtZFNZWFJsUHpvZ2JuVnRZbVZ5TzF4dUlDQWdJRzVEYjIxd2IyNWxiblJ6UHpvZ2JuVnRZbVZ5TzF4dUlDQWdJRzVGY0c5amFITS9PaUJ1ZFcxaVpYSTdYRzRnSUNBZ2JrNWxhV2RvWW05eWN6ODZJRzUxYldKbGNqdGNiaUFnSUNCemNISmxZV1EvT2lCdWRXMWlaWEk3WEc0Z0lDQWdiV2x1UkdsemREODZJRzUxYldKbGNqdGNiaUFnSUNCd2NtOW5jbVZ6YzBaMWJtTS9PaUFvWlhCdll6b2diblZ0WW1WeUxDQmxjRzlqYUhOTVpXNW5kR2c2SUc1MWJXSmxjaXdnWlcxaVpXUmthVzVuY3pvZ2JuVnRZbVZ5VzExYlhTa2dQVDRnZG05cFpEdGNiaUFnSUNCeVlXNWtiMjFUWldWa1B6b2djM1J5YVc1bk8xeHVJQ0FnSUhWelpWZEZRa2RRVlQ4NklHSnZiMnhsWVc0N1hHNTlYRzVjYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnU1ZSVFRrVlBjSFJwYjI1eklIdGNiaUFnSUNCbGNITnBiRzl1UHpvZ2JuVnRZbVZ5TzF4dUlDQWdJSEJsY25Cc1pYaHBkSGsvT2lCdWRXMWlaWEk3WEc0Z0lDQWdaR2x0UHpvZ2JuVnRZbVZ5TzF4dWZWeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRWxFYVcxU1pXUjFZM1JwYjI1UVlYSmhiVHhVSUdWNGRHVnVaSE1nYm5WdFltVnlJSHdnYzNSeWFXNW5JSHdnWW05dmJHVmhiaUE5SUc1MWJXSmxjajRnZTF4dUlDQWdJSFZwVG1GdFpUb2djM1J5YVc1bk8xeHVJQ0FnSUhaaGJIVmxPaUFvVkNCbGVIUmxibVJ6SUc1MWJXSmxjaUEvSUc1MWJXSmxjaUE2SUZRZ1pYaDBaVzVrY3lCemRISnBibWNnUHlCemRISnBibWNnT2lCaWIyOXNaV0Z1S1NCOElHNTFiR3c3WEc0Z0lDQWdkRzl2YkhScGNEb2djM1J5YVc1bk8xeHVJQ0FnSUhSNWNHVS9PaUJVSUdWNGRHVnVaSE1nYm5WdFltVnlJRDhnSjI1MWJXSmxjaWNnT2lCVUlHVjRkR1Z1WkhNZ2MzUnlhVzVuSUQ4Z0ozTjBjbWx1WnljZ09pQW5ZbTl2YkdWaGJpYzdYRzRnSUNBZ2NHeGhZMlZvYjJ4a1pYSS9PaUJ6ZEhKcGJtYzdYRzRnSUNBZ2JXbHVQem9nYm5WdFltVnlPMXh1SUNBZ0lHMWhlRDg2SUc1MWJXSmxjanRjYmlBZ0lDQnpkR1Z3UHpvZ2JuVnRZbVZ5TzF4dWZWeHVYRzVoWW5OMGNtRmpkQ0JqYkdGemN5Qk5kV3gwYVVOdmJIVnRibEpsWkhWalpYSWdlMXh1SUNBZ0lIQnliM1JsWTNSbFpDQmtZWFJoT2lCV1pXTjBiM0p6VzEwN1hHNGdJQ0FnY0hKdmRHVmpkR1ZrSUhkbGFXZG9kSE02SUc1MWJXSmxjbHRkTzF4dUlDQWdJSEJ5YjNSbFkzUmxaQ0JoWjJkeVpXZGhkR2x2YmsxbGRHaHZaRG9nUkdsemRHRnVZMlZCWjJkeVpXZGhkR2x2YmsxbGRHaHZaRHRjYmlBZ0lDQmpiMjV6ZEhKMVkzUnZjaWh2Y0hScGIyNXpPaUJQY0hScGIyNXpLU0I3WEc0Z0lDQWdJQ0IwYUdsekxtUmhkR0VnUFNCdmNIUnBiMjV6TG1SaGRHRTdYRzRnSUNBZ0lDQjBhR2x6TG5kbGFXZG9kSE1nUFNCdmNIUnBiMjV6TG5kbGFXZG9kSE03WEc0Z0lDQWdJQ0IwYUdsekxtRm5aM0psWjJGMGFXOXVUV1YwYUc5a0lEMGdiM0IwYVc5dWN5NWhaMmR5WldkaGRHbHZiazFsZEdodlpEdGNiaUFnSUNCOVhHNWNiaUFnSUNBdktpb2dSVzFpWldSeklIUm9aU0JrWVhSaElHZHBkbVZ1SUdsdWRHOGdkR2hsSUhSM2J5MWthVzFsYm5OcGIyNWhiQ0J6Y0dGalpTNWNiaUFnSUNBZ0tpQkFjbVYwZFhKdUlIdGhibmw5SUVOaGNuUmxjMmxoYmlCamIyOXlaR2x1WVhSbElHOW1JSFJvYVhNZ1pXMWlaV1JrYVc1bklHRnVaQ0JrYVhOMFlXNWpaU0J0WVhSeWFYZ2dkMmhsY21VZ1lYQndiR2xqWVdKc1pTNGdLaTljYmlBZ0lDQmhZbk4wY21GamRDQjBjbUZ1YzJadmNtMG9LVG9nVUhKdmJXbHpaVHhOWVhSeWFYZytPMXh1ZlZ4dVhHNWpiR0Z6Y3lCVVUwNUZVbVZrZFdObGNpQmxlSFJsYm1SeklFMTFiSFJwUTI5c2RXMXVVbVZrZFdObGNpQjdYRzRnSUNBZ2NISnZkR1ZqZEdWa0lISmxaSFZqWlhJNklGUlRUa1U3WEc0Z0lDQWdjSEp2ZEdWamRHVmtJR2wwWlhKaGRHbHZibk02SUc1MWJXSmxjanRjYmlBZ0lDQndjbTkwWldOMFpXUWdaR2x6ZEdGdVkyVkdibUZ0WlhNNklFdHViM2R1VFdWMGNtbGpjMXRkTzF4dUlDQWdJSEJ5YjNSbFkzUmxaQ0JrYVhOMFlXNWpaVVp1Y3pvZ0tDaGhPaUJoYm5rc0lHSTZJR0Z1ZVNrZ1BUNGdiblZ0WW1WeUtWdGRPMXh1SUNBZ0lIQnliM1JsWTNSbFpDQmthWE4wWVc1alpVWnVRWEpuY3pvZ2UxdGZPaUJ6ZEhKcGJtZGRPaUJoYm5sOVcxMDdYRzRnSUNBZ2NISnZkR1ZqZEdWa0lIQnliMmR5WlhOelJuVnVZejg2SUNobGNHOWpPaUJ1ZFcxaVpYSXNJR1Z3YjJOb2MweGxibWQwYURvZ2JuVnRZbVZ5TENCbGJXSmxaR1JwYm1kelB6b2diblZ0WW1WeVcxMWJYU2tnUFQ0Z2RtOXBaRHRjYmlBZ0lDQXZLaXBjYmlBZ0lDQWdLaUJEY21WaGRHVnpJR0Z1SUdsdWMzUmhibU5sSUc5bUlGUlRUa1ZTWldSMVkyVnlMbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQjdUM0IwYVc5dWMzMGdiM0IwYVc5dWN5QlBjSFJwYjI1eklIUnZJSEJoYzNNZ2RHOGdkR2hsSUdOdmJuTjBjblZqZEc5eUxseHVJQ0FnSUNBcUlFQnRaVzFpWlhKdlppQlVVMDVGVW1Wa2RXTmxjbHh1SUNBZ0lDQXFMMXh1SUNBZ0lHTnZibk4wY25WamRHOXlLRzl3ZEdsdmJuTTZJRTl3ZEdsdmJuTXBJSHRjYmlBZ0lDQWdJSE4xY0dWeUtHOXdkR2x2Ym5NcE8xeHVJQ0FnSUNBZ1kyOXVjM1FnY21GdVpHOXRVMlZsWkRvZ2MzUnlhVzVuSUQwZ2IzQjBhVzl1Y3k1eVlXNWtiMjFUWldWa0lEOC9JRVJoZEdVb0tUdGNiaUFnSUNBZ0lHTnZibk4wSUhKaGJtUnZiVVp1SUQwZ2MyVmxaRkpoYm1SdmJTaHlZVzVrYjIxVFpXVmtLVHRjYmlBZ0lDQWdJRzl3ZEdsdmJuTXVjbUZ1Wkc5dElEMGdjbUZ1Wkc5dFJtNDdYRzRnSUNBZ0lDQjBhR2x6TG5KbFpIVmpaWElnUFNCdVpYY2dWRk5PUlNodmNIUnBiMjV6S1R0Y2JpQWdJQ0FnSUhSb2FYTXVhWFJsY21GMGFXOXVjeUE5SUc5d2RHbHZibk0vTG1sMFpYSmhkR2x2Ym5NZ1B6OGdkR2hwY3k1eVpXUjFZMlZ5TG1kbGRFbDBaWEpUYVhwbEtIUm9hWE11WkdGMFlWc3dYUzVzWlc1bmRHZ3BPMXh1SUNBZ0lDQWdkR2hwY3k1a2FYTjBZVzVqWlVadVlXMWxjeUE5SUc5d2RHbHZibk11WkdsemRHRnVZMlZHYm1GdFpYTTdYRzRnSUNBZ0lDQjBhR2x6TG1ScGMzUmhibU5sUm01eklEMGdiM0IwYVc5dWN5NWthWE4wWVc1alpVWnVjenRjYmlBZ0lDQWdJSFJvYVhNdVpHbHpkR0Z1WTJWR2JrRnlaM01nUFNCdmNIUnBiMjV6TG1ScGMzUmhibU5sUm01QmNtZHpPMXh1SUNBZ0lDQWdkR2hwY3k1d2NtOW5jbVZ6YzBaMWJtTWdQU0J2Y0hScGIyNXpMbkJ5YjJkeVpYTnpSblZ1WXp0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2S2lwY2JpQWdJQ0FnS2lCRmJXSmxaSE1nZEdobElHUmhkR0VnWjJsMlpXNGdhVzUwYnlCMGFHVWdkSGR2TFdScGJXVnVjMmx2Ym1Gc0lITndZV05sSUhWemFXNW5JSFF0VTA1RklHMWxkR2h2WkM1Y1hGeHVJQ0FnSUNBcUlFQndZWEpoYlNCN1ltOXZiR1ZoYm4wZ1czQmhjbUZzYkdWc1JHbHpkR0Z1WTJWWGIzSnJaWEp6WFNCWGFHVjBhR1Z5SUhSdklIVnpaU0J3WVhKaGJHeGxiQ0JrYVhOMFlXNWpaU0IzYjNKclpYSnpMbHh1SUNBZ0lDQXFJRUJ5WlhSMWNtNGdlMkZ1ZVgwZ1EyRnlkR1Z6YVdGdUlHTnZiM0prYVc1aGRHVWdiMllnZEdocGN5QmxiV0psWkdScGJtY2dZVzVrSUdScGMzUmhibU5sSUcxaGRISnBlQ0IzYUdWeVpTQmhjSEJzYVdOaFlteGxMbHh1SUNBZ0lDQXFMMXh1SUNBZ0lIQjFZbXhwWXlCaGMzbHVZeUIwY21GdWMyWnZjbTBvS1RvZ1VISnZiV2x6WlR4TllYUnlhWGcrSUh0Y2JpQWdJQ0FnSUdsbUlDaDBhR2x6TG1SaGRHRmJNRjB1YkdWdVozUm9JRDRnTVRBd01EQXBYRzRnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpZ25UV0Y0YVcxMWJTQnVkVzFpWlhJZ2IyWWdjMkZ0Y0d4bGN5Qm1iM0lnVkMxVFRrVWdhWE1nTVRBd01EQW5LVHRjYmlBZ0lDQWdJR052Ym5OMElHMWhkSEpwZUZObGNuWnBZMlVnUFNCdVpYY2dSR2x6ZEdGdVkyVk5ZWFJ5YVhoVFpYSjJhV05sS0hSeWRXVXNJR1poYkhObEtUdGNiaUFnSUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0FnSUM4dklHTnZibk4wSUdGblozSmxaMkYwWlNBOUlHZGxkRUZuWjNKbFoyRjBhVzl1Um5WdVkzUnBiMjRvZEdocGN5NWhaMmR5WldkaGRHbHZiazFsZEdodlpDd2dkR2hwY3k1M1pXbG5hSFJ6S1R0Y2JpQWdJQ0FnSUNBZ0x5OGdZMjl1YzNRZ1pHbHpkR0Z1WTJWek9pQkJjbkpoZVR4R2JHOWhkRE15UVhKeVlYaytJRDBnVzEwN1hHNGdJQ0FnSUNBZ0lDOHZJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnZEdocGN5NWtZWFJoTG14bGJtZDBhRHNnS3l0cEtTQjdYRzRnSUNBZ0lDQWdJQzh2SUNBZ1kyOXVjM1FnWkdsemRDQTlJR0YzWVdsMElHMWhkSEpwZUZObGNuWnBZMlV1WTJGc1l5aDBhR2x6TG1SaGRHRmJhVjBzSUhSb2FYTXVaR2x6ZEdGdVkyVkdibUZ0WlhOYmFWMHNJR1poYkhObExDQjBhR2x6TG1ScGMzUmhibU5sUm01QmNtZHpXMmxkS1R0Y2JpQWdJQ0FnSUNBZ0x5OGdJQ0JrYVhOMFlXNWpaWE11Y0hWemFDaGthWE4wS1R0Y2JpQWdJQ0FnSUNBZ0x5OGdmVnh1SUNBZ0lDQWdJQ0F2THlCamIyNXpkQ0JrYVhOMFlXNWpaU0E5SUc1bGR5QkdiRzloZERNeVFYSnlZWGtvWkdsemRHRnVZMlZ6V3pCZExteGxibWQwYUNrdVptbHNiQ2d3S1R0Y2JpQWdJQ0FnSUNBZ0x5OGdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JrYVhOMFlXNWpaWE5iTUYwdWJHVnVaM1JvT3lBcksya3BYRzRnSUNBZ0lDQWdJQzh2SUNBZ1pHbHpkR0Z1WTJWYmFWMGdQU0JoWjJkeVpXZGhkR1VvWkdsemRHRnVZMlZ6TG0xaGNDZ29aQ2tnUFQ0Z1pGdHBYU2twTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JrYVhOMFlXNWpaU0E5SUdGM1lXbDBJRzFoZEhKcGVGTmxjblpwWTJVdVkyRnNZMDExYkhScEtIUm9hWE11WkdGMFlTd2dkR2hwY3k1a2FYTjBZVzVqWlVadVlXMWxjeXdnWm1Gc2MyVXNJSFJvYVhNdVpHbHpkR0Z1WTJWR2JrRnlaM01zWEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTUzWldsbmFIUnpMQ0IwYUdsekxtRm5aM0psWjJGMGFXOXVUV1YwYUc5a0tUdGNiaUFnSUNBZ0lDQWdiV0YwY21sNFUyVnlkbWxqWlM1MFpYSnRhVzVoZEdVb0tUdGNiaUFnSUNBZ0lDQWdMeThnWTI5dWMzUWdiV0YwY21sNFVISnZlSGtnUFNCa2FYTjBZVzVqWlUxaGRISnBlRkJ5YjNoNUtHUnBjM1JoYm1ObExDQjBhR2x6TG1SaGRHRmJNRjB1YkdWdVozUm9LVHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXlaV1IxWTJWeUxtbHVhWFJFWVhSaFJHbHpkQ2hrYVhOMFlXNWpaU3dnZEdocGN5NWtZWFJoV3pCZExteGxibWQwYUNrN1hHNWNiaUFnSUNBZ0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0IwYUdsekxtbDBaWEpoZEdsdmJuTTdJQ3NyYVNrZ2UxeHVJQ0FnSUNBZ0lDQWdJSFJvYVhNdWNtVmtkV05sY2k1emRHVndLQ2s3SUM4dklHVjJaWEo1SUhScGJXVWdlVzkxSUdOaGJHd2dkR2hwY3l3Z2MyOXNkWFJwYjI0Z1oyVjBjeUJpWlhSMFpYSmNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2RHaHBjeTV3Y205bmNtVnpjMFoxYm1NcFhHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxuQnliMmR5WlhOelJuVnVZeWhwTENCMGFHbHpMbWwwWlhKaGRHbHZibk1zSUZ0ZEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1eVpXUjFZMlZ5TG1kbGRGTnZiSFYwYVc5dUtDazdYRzRnSUNBZ0lDQjlJR05oZEdOb0lDaGxLU0I3WEc0Z0lDQWdJQ0FnSUcxaGRISnBlRk5sY25acFkyVXVkR1Z5YldsdVlYUmxLQ2s3WEc0Z0lDQWdJQ0FnSUhSb2NtOTNJR1U3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1ZlZ4dVhHNWpiR0Z6Y3lCVlRVRlFVbVZrZFdObGNpQmxlSFJsYm1SeklFMTFiSFJwUTI5c2RXMXVVbVZrZFdObGNpQjdYRzRnSUNBZ2NISnZkR1ZqZEdWa0lISmxaSFZqWlhJNklGVk5RVkE3WEc0Z0lDQWdjSEp2ZEdWamRHVmtJR1JwYzNSaGJtTmxSbTVoYldWek9pQkxibTkzYmsxbGRISnBZM05iWFR0Y2JpQWdJQ0J3Y205MFpXTjBaV1FnWkdsemRHRnVZMlZHYm5NNklFWjFibU4wYVc5dVcxMDdYRzRnSUNBZ2NISnZkR1ZqZEdWa0lIWmxZM1J2Y25NNklHNTFiV0psY2x0ZE8xeHVJQ0FnSUhCeWIzUmxZM1JsWkNCd2NtOW5jbVZ6YzBaMWJtTS9PaUFvWlhCdll6b2diblZ0WW1WeUxDQmxjRzlqYUhOTVpXNW5kR2c2SUc1MWJXSmxjaXdnWlcxaVpXUmthVzVuT2lCdWRXMWlaWEpiWFZ0ZEtTQTlQaUIyYjJsa08xeHVJQ0FnSUhCeWIzUmxZM1JsWkNCa2FYTjBZVzVqWlVadVFYSm5jem9nZTF0Zk9pQnpkSEpwYm1kZE9pQmhibmw5VzEwN1hHNGdJQ0FnY0hKdmRHVmpkR1ZrSUhWelpWZEZRa2RRVlRvZ1ltOXZiR1ZoYmlBOUlHWmhiSE5sTzF4dUlDQWdJQzhxS2x4dUlDQWdJQ0FxSUVOeVpXRjBaWE1nWVc0Z2FXNXpkR0Z1WTJVZ2IyWWdWVTFCVUZKbFpIVmpaWEl1WEc0Z0lDQWdJQ29nUUhCaGNtRnRJSHRQY0hScGIyNXpmU0J2Y0hScGIyNXpJRTl3ZEdsdmJuTWdkRzhnY0dGemN5QjBieUIwYUdVZ1kyOXVjM1J5ZFdOMGIzSXVYRzRnSUNBZ0lDb2dRRzFsYldKbGNtOW1JRlZOUVZCU1pXUjFZMlZ5WEc0Z0lDQWdJQ292WEc0Z0lDQWdZMjl1YzNSeWRXTjBiM0lvYjNCMGFXOXVjem9nVDNCMGFXOXVjeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdjbUZ1Wkc5dFUyVmxaRG9nYzNSeWFXNW5JRDBnYjNCMGFXOXVjeTV5WVc1a2IyMVRaV1ZrSUQ4L0lFUmhkR1VvS1R0Y2JpQWdJQ0FnSUdOdmJuTjBJSEpoYm1SdmJVWnVJRDBnYzJWbFpGSmhibVJ2YlNoeVlXNWtiMjFUWldWa0tUdGNiaUFnSUNBZ0lITjFjR1Z5S0c5d2RHbHZibk1wTzF4dUlDQWdJQ0FnWVhOelpYSjBLQ2RrYVhOMFlXNWpaVVp1WVcxbGN5Y2dhVzRnYjNCMGFXOXVjeWs3WEc0Z0lDQWdJQ0JoYzNObGNuUW9KMlJwYzNSaGJtTmxSbTV6SnlCcGJpQnZjSFJwYjI1ektUdGNiaUFnSUNBZ0lIUm9hWE11WkdsemRHRnVZMlZHYmtGeVozTWdQU0J2Y0hScGIyNXpMbVJwYzNSaGJtTmxSbTVCY21kek8xeHVJQ0FnSUNBZ2RHaHBjeTVrYVhOMFlXNWpaVVp1Y3lBOUlHOXdkR2x2Ym5NdVpHbHpkR0Z1WTJWR2JuTWhPMXh1SUNBZ0lDQWdkR2hwY3k1d2NtOW5jbVZ6YzBaMWJtTWdQU0J2Y0hScGIyNXpMbkJ5YjJkeVpYTnpSblZ1WXp0Y2JpQWdJQ0FnSUhSb2FYTXVkWE5sVjBWQ1IxQlZJRDBnYjNCMGFXOXVjeTUxYzJWWFJVSkhVRlVnUHo4Z1ptRnNjMlU3WEc0Z0lDQWdJQ0IwYUdsekxtUnBjM1JoYm1ObFJtNWhiV1Z6SUQwZ2IzQjBhVzl1Y3k1a2FYTjBZVzVqWlVadVlXMWxjeUU3WEc0Z0lDQWdJQ0F2TDFWdFlYQWdkWE5sY3lCMlpXTjBiM0lnYVc1a1pYaHBibWNzSUhOdklIZGxJRzVsWldRZ2RHOGdZM0psWVhSbElHRnVJR0Z5Y21GNUlHOW1JSFpsWTNSdmNuTWdZWE1nYVc1a1pXTmxjeTVjYmlBZ0lDQWdJSFJvYVhNdWRtVmpkRzl5Y3lBOUlHNWxkeUJCY25KaGVTaDBhR2x6TG1SaGRHRmJNRjB1YkdWdVozUm9LUzVtYVd4c0tEQXBMbTFoY0Nnb1h5d2dhU2tnUFQ0Z2FTazdYRzVjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMbVJoZEdGYk1GMHViR1Z1WjNSb0lEdzlJQ2h2Y0hScGIyNXpMbTVPWldsbmFHSnZjbk1nUHo4Z01UVXBLVnh1SUNBZ0lDQWdJQ0J2Y0hScGIyNXpMbTVPWldsbmFHSnZjbk1nUFNCMGFHbHpMbVJoZEdGYk1GMHViR1Z1WjNSb0lDMGdNVHRjYmlBZ0lDQWdJRzl3ZEdsdmJuTXVjbUZ1Wkc5dElEMGdjbUZ1Wkc5dFJtNDdYRzRnSUNBZ0lDQjBhR2x6TG5KbFpIVmpaWElnUFNCdVpYY2dWVTFCVUNodmNIUnBiMjV6S1R0Y2JpQWdJQ0FnSUM4dklIUm9hWE11Y21Wa2RXTmxjaTVrYVhOMFlXNWpaVVp1SUQwZ2RHaHBjeTVmWlc1amIyUmxaRVJwYzNSaGJtTmxMbUpwYm1Rb2RHaHBjeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeW9xWEc0Z0lDQWdJQ29nUlcxaVpXUnpJSFJvWlNCa1lYUmhJR2RwZG1WdUlHbHVkRzhnZEdobElIUjNieTFrYVcxbGJuTnBiMjVoYkNCemNHRmpaU0IxYzJsdVp5QlZUVUZRSUcxbGRHaHZaQzVjYmlBZ0lDQWdLaUJBY0dGeVlXMGdlMkp2YjJ4bFlXNTlJRnRmY0dGeVlXeHNaV3hFYVhOMFlXNWpaVmR2Y210bGNuTmRJRmRvWlhSb1pYSWdkRzhnZFhObElIQmhjbUZzYkdWc0lHUnBjM1JoYm1ObElHMWhkSEpwZUNCM2IzSnJaWEp6TGx4dUlDQWdJQ0FxSUVCeVpYUjFjbTRnZTJGdWVYMGdRMkZ5ZEdWemFXRnVJR052YjNKa2FXNWhkR1VnYjJZZ2RHaHBjeUJsYldKbFpHUnBibWN1WEc0Z0lDQWdJQ292WEc0Z0lDQWdjSFZpYkdsaklHRnplVzVqSUhSeVlXNXpabTl5YlNoZmNHRnlZV3hzWld4RWFYTjBZVzVqWlZkdmNtdGxjbk0vT2lCaWIyOXNaV0Z1S1RvZ1VISnZiV2x6WlR4TllYUnlhWGcrSUh0Y2JpQWdJQ0FnSUdOdmJuTnZiR1V1ZEdsdFpTZ25hMjV1SUdkeVlYQm9KeWs3WEc0Z0lDQWdJQ0JzWlhRZ2EyNXVSM0poY0dnNklFdHVibEpsYzNWc2RDQjhJSFZ1WkdWbWFXNWxaQ0E5SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0FnSUdsbUlDaDBhR2x6TG5WelpWZEZRa2RRVlNrZ2UxeHVJQ0FnSUNBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnSUNBZ0lHdHVia2R5WVhCb0lEMGdZWGRoYVhRZ2JYVnNkR2xEYjJ4WFpXSkhVRlZMVGs0b1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxtUmhkR0VzSUhSb2FYTXVjbVZrZFdObGNpNXVaV2xuYUdKdmNuTXNJSFJvYVhNdVpHbHpkR0Z1WTJWR2JtRnRaWE1nWVhNZ1lXNTVMQ0IwYUdsekxtRm5aM0psWjJGMGFXOXVUV1YwYUc5a0lHRnpJR0Z1ZVN4Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWQyVnBaMmgwY3l3Z2RHaHBjeTVrYVhOMFlXNWpaVVp1UVhKbmMxeHVJQ0FnSUNBZ0lDQWdJQ2tnWVhNZ2RXNXJibTkzYmlCaGN5QkxibTVTWlhOMWJIUTdYRzRnSUNBZ0lDQWdJSDBnWTJGMFkyZ2dLR1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6YjJ4bExtVnljbTl5S0NkWFJVSkhVRlVnUzA1T0lHWmhhV3hsWkN3Z1ptRnNiR2x1WnlCaVlXTnJJSFJ2SUcxMWJIUnBkR2h5WldGa1pXUWdRMUJWSUdsdGNHeGxiV1Z1ZEdGMGFXOXVKeWs3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjMjlzWlM1bGNuSnZjaWhsS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2FXWWdLQ0ZyYm01SGNtRndhQ2tnZTF4dUlDQWdJQ0FnSUNCcmJtNUhjbUZ3YUNBOUlHRjNZV2wwSUc1bGR5QlRjR0Z5YzJWTllYUnlhWGhUWlhKMmFXTmxLQ2xjYmlBZ0lDQWdJQ0FnSUNBdWJYVnNkR2xEYjJ4MWJXNUxUazRvZEdocGN5NWtZWFJoTENCMGFHbHpMbVJwYzNSaGJtTmxSbTVoYldWekxDQjBhR2x6TG5KbFpIVmpaWEl1Ym1WcFoyaGliM0p6TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1a2FYTjBZVzVqWlVadVFYSm5jeXdnZEdocGN5NTNaV2xuYUhSekxDQjBhR2x6TG1GblozSmxaMkYwYVc5dVRXVjBhRzlrS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdOdmJuTnZiR1V1ZEdsdFpVVnVaQ2duYTI1dUlHZHlZWEJvSnlrN1hHNGdJQ0FnSUNCMGFHbHpMbkpsWkhWalpYSXVjMlYwVUhKbFkyOXRjSFYwWldSTFRrNG9hMjV1UjNKaGNHZ3VhMjV1U1c1a1pYaGxjeXdnYTI1dVIzSmhjR2d1YTI1dVJHbHpkR0Z1WTJWektUdGNibHh1SUNBZ0lDQWdMeThnYm1WbFpHVmtJSE52SUhSb1lYUWdaMkZ5WW1GblpTQmpiMnhzWldOMGIzSWdZMkZ1SUdaeVpXVWdiV1Z0YjNKNUlHWnliMjBnWkdsemRHRnVZMlVnYldGMGNtbDRYRzRnSUNBZ0lDQmhkMkZwZENCdVpYY2dVSEp2YldselpUeDJiMmxrUGlnb2NtVnpiMngyWlNrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0J6WlhSVWFXMWxiM1YwS0NncElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYTnZiSFpsS0NrN1hHNGdJQ0FnSUNBZ0lIMHNJRE13TUNrN1hHNGdJQ0FnSUNCOUtUdGNibHh1SUNBZ0lDQWdZMjl1YzNRZ1pXMWlaV1JrYVc1bklEMGdZWGRoYVhRZ2RHaHBjeTV5WldSMVkyVnlMbVpwZEVGemVXNWpLSFJvYVhNdWRtVmpkRzl5Y3l3Z0tHVndiMk1wSUQwK0lIdGNiaUFnSUNBZ0lDQWdhV1lnS0hSb2FYTXVjSEp2WjNKbGMzTkdkVzVqS1Z4dUlDQWdJQ0FnSUNBZ0lIUm9hWE11Y0hKdlozSmxjM05HZFc1aktHVndiMk1zSUhSb2FYTXVjbVZrZFdObGNpNW5aWFJPUlhCdlkyaHpLQ2tzSUhSb2FYTXVjbVZrZFdObGNpNW5aWFJGYldKbFpHUnBibWNvS1NrN1hHNGdJQ0FnSUNCOUtUdGNibHh1SUNBZ0lDQWdablZ1WTNScGIyNGdZWEp5WVhsRFlYTjBNa052YjNKa2FXNWhkR1Z6S0dSaGRHRTZJRzUxYldKbGNsdGRXMTBwT2lCRGIyOXlaR2x1WVhSbGN5QjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnVaWGNnUVhKeVlYa29aR0YwWVM1c1pXNW5kR2dwTG1acGJHd29NQ2t1YldGd0tDaGZMQ0JwS1NBOVBpQW9WbVZqZEc5eUxtWnliMjBvWkdGMFlWdHBYU2twS1R0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2NtVjBkWEp1SUdGeWNtRjVRMkZ6ZERKRGIyOXlaR2x1WVhSbGN5aGxiV0psWkdScGJtY3BPMXh1SUNBZ0lIMWNibjFjYmx4dVkyOXVjM1FnUVhaaGFXeGhZbXhsVW1Wa2RXTmxjbk1nUFNCN1hHNGdJQ2RWVFVGUUp6b2dWVTFCVUZKbFpIVmpaWElzWEc0Z0lDZDBMVk5PUlNjNklGUlRUa1ZTWldSMVkyVnlMRnh1ZlR0Y2JseHVaWGh3YjNKMElIUjVjR1VnUzI1dmQyNU5aWFJvYjJSeklEMGdhMlY1YjJZZ2RIbHdaVzltSUVGMllXbHNZV0pzWlZKbFpIVmpaWEp6TzF4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nVFhWc2RHbERiMnhFYVcxU1pXUjFZMlZ5SUh0Y2JpQWdJQ0J3Y21sMllYUmxJSEpsWkhWalpYSTZJRTExYkhScFEyOXNkVzF1VW1Wa2RXTmxjaUI4SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxjeUJoYmlCcGJuTjBZVzVqWlNCdlppQkVhVzFsYm5OcGIyNWhiR2wwZVZKbFpIVmpaWEl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdZVzU1VzExOUlHUmhkR0VnVm1WamRHOXljeUIwYnlCbGJXSmxaQzVjYmlBZ0lDb2dRSEJoY21GdElIdExibTkzYmsxbGRHaHZaSE45SUcxbGRHaHZaQ0JGYldKbFpHUnBibWNnYldWMGFHOWtJSFJ2SUdKbElHRndjR3hwWldSY2JpQWdJQ29nUUhCaGNtRnRJSHRMYm05M2JrMWxkSEpwWTNOOUlHMWxkSEpwWXlCRWFYTjBZVzVqWlNCdFpYUnlhV01nZEc4Z1ltVWdZMjl0Y0hWMFpXUWdZbVYwZDJWbGJpQmxZV05vSUc5bUlIUm9aU0IyWldOMGIzSnpMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwOXdkR2x2Ym5OOUlGdHZjSFJwYjI1elhTQlBjSFJwYjI1eklIUnZJSEJoYzNNZ2RHOGdkR2hsSUdsdGNHeGxiV1Z1ZEdsdVp5QmxiV0psWkdSbGNuTXVYRzRnSUNBcUlFQnRaVzFpWlhKdlppQkVhVzFsYm5OcGIyNWhiR2wwZVZKbFpIVmpaWEpjYmlBZ0lDb3ZYRzRnSUNBZ1kyOXVjM1J5ZFdOMGIzSW9aR0YwWVRvZ1FYSnlZWGs4WVc1NVcxMCtMQ0J0WlhSb2IyUTZJRVJwYlZKbFpIVmpkR2x2YmsxbGRHaHZaSE1zSUcxbGRISnBZM002SUV0dWIzZHVUV1YwY21samMxdGRMRnh1SUNBZ0lDQWdkMlZwWjJoMGN6b2diblZ0WW1WeVcxMHNJR1JwYzNSaGJtTmxRV2RuY21WbllYUnBiMjQ2SUVScGMzUmhibU5sUVdkbmNtVm5ZWFJwYjI1TlpYUm9iMlFzSUc5d2RHbHZibk02SUU5d2RHbHZibk1wSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJRzFsWVhOMWNtVnpPaUJFYVhOMFlXNWpaVTFsZEhKcFkxdGRJRDBnVzEwN1hHNGdJQ0FnSUNCbWIzSWdLR3hsZENCcFpIZ2dQU0F3T3lCcFpIZ2dQQ0J0WlhSeWFXTnpMbXhsYm1kMGFEc2dLeXRwWkhncElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2JXVmhjM1Z5WlNBOUlHNWxkeUJOWldGemRYSmxLRzFsZEhKcFkzTmJhV1I0WFNrdVoyVjBUV1ZoYzNWeVpTaHZjSFJwYjI1ekxtUnBjM1JoYm1ObFJtNUJjbWR6VzJsa2VGMHBPMXh1SUNBZ0lDQWdJQ0J0WldGemRYSmxjeTV3ZFhOb0tHMWxZWE4xY21VcE8xeHVJQ0FnSUNBZ0lDQnNaWFFnWW1sMFFYSnlZWGxNWlc1bmRHZ2dQU0F5TURRNE8xeHVJQ0FnSUNBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR1JoZEdGYmFXUjRYUzVzWlc1bmRHZzdJQ3NyYVNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2xtSUNoa1lYUmhXMmxrZUYxYmFWMGdKaVlnWkdGMFlWdHBaSGhkVzJsZExsOXNaVzVuZEdncElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdKcGRFRnljbUY1VEdWdVozUm9JRDBnWkdGMFlWdHBaSGhkVzJsZExsOXNaVzVuZEdnN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2FXWWdLR2x6UW1sMFFYSnlZWGxOWlhSeWFXTW9iV1YwY21samMxdHBaSGhkS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnWkdGMFlWdHBaSGhkTG14bGJtZDBhRHNnS3l0cEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9aR0YwWVZ0cFpIaGRXMmxkSUNZbUlHUmhkR0ZiYVdSNFhWdHBYUzVmWkdGMFlTbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1pHRjBZVnRwWkhoZFcybGRJRDBnYm1WM0lFSnBkRUZ5Y21GNUtHUmhkR0ZiYVdSNFhWdHBYUzVmWkdGMFlTd2daR0YwWVZ0cFpIaGRXMmxkTGw5c1pXNW5kR2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdaV3h6WlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JrWVhSaFcybGtlRjFiYVYwZ1BTQnVaWGNnUW1sMFFYSnlZWGtvWW1sMFFYSnlZWGxNWlc1bmRHZ3BPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQnBaaUFvYldWMGFHOWtJRDA5SUNkVlRVRlFKeWtnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbkpsWkhWalpYSWdQU0J1WlhjZ1ZVMUJVRkpsWkhWalpYSW9lMXh1SUNBZ0lDQWdJQ0FnSUdSaGRHRTZJR1JoZEdFc1hHNGdJQ0FnSUNBZ0lDQWdaR2x6ZEdGdVkyVkdibUZ0WlhNNklHMWxkSEpwWTNNc1hHNGdJQ0FnSUNBZ0lDQWdaR2x6ZEdGdVkyVkdibk02SUcxbFlYTjFjbVZ6TEZ4dUlDQWdJQ0FnSUNBZ0lHUnBjM1JoYm1ObFJtNUJjbWR6T2lCdmNIUnBiMjV6TG1ScGMzUmhibU5sUm01QmNtZHpMRnh1SUNBZ0lDQWdJQ0FnSUhkbGFXZG9kSE02SUhkbGFXZG9kSE1zWEc0Z0lDQWdJQ0FnSUNBZ1lXZG5jbVZuWVhScGIyNU5aWFJvYjJRNklHUnBjM1JoYm1ObFFXZG5jbVZuWVhScGIyNHNYRzRnSUNBZ0lDQWdJQ0FnTGk0dWIzQjBhVzl1YzF4dUlDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9iV1YwYUc5a0lEMDlJQ2QwTFZOT1JTY3BJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXlaV1IxWTJWeUlEMGdibVYzSUZSVFRrVlNaV1IxWTJWeUtIdGNiaUFnSUNBZ0lDQWdJQ0JrWVhSaE9pQmtZWFJoTEZ4dUlDQWdJQ0FnSUNBZ0lHUnBjM1JoYm1ObFJtNWhiV1Z6T2lCdFpYUnlhV056TEZ4dUlDQWdJQ0FnSUNBZ0lHUnBjM1JoYm1ObFJtNXpPaUJ0WldGemRYSmxjeXhjYmlBZ0lDQWdJQ0FnSUNCa2FYTjBZVzVqWlVadVFYSm5jem9nYjNCMGFXOXVjeTVrYVhOMFlXNWpaVVp1UVhKbmN5eGNiaUFnSUNBZ0lDQWdJQ0IzWldsbmFIUnpPaUIzWldsbmFIUnpMRnh1SUNBZ0lDQWdJQ0FnSUdGblozSmxaMkYwYVc5dVRXVjBhRzlrT2lCa2FYTjBZVzVqWlVGblozSmxaMkYwYVc5dUxGeHVJQ0FnSUNBZ0lDQWdJQzR1TG05d2RHbHZibk5jYmlBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHlvcVhHNGdJQ0FxSUVWdFltVmtjeUIwYUdVZ1pHRjBZU0JuYVhabGJpQnBiblJ2SUhSb1pTQjBkMjh0WkdsdFpXNXphVzl1WVd3Z2MzQmhZMlVnZFhOcGJtY2dkR2hsSUdOb2IzTmxiaUJ0WlhSb2IyUXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnZEhKaGJuTndiM05sSUZkb1pYUm9aWElnZEc4Z2RISmhibk5tYjNKdElHTnZiM0prYVc1aGRHVnpJSFJ2SUdoaGRtVWdZMjlzZFcxdWN5MW1hWEp6ZENCdmNtbGxiblJoZEdsdmJpNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0aWIyOXNaV0Z1ZlNCd1lYSmhiR3hsYkVScGMzUmhibU5sVjI5eWEyVnljeUJYYUdWMGFHVnlJSFJ2SUhWelpTQndZWEpoYkd4bGJDQmthWE4wWVc1alpTQmpiMjF3ZFhSaGRHbHZiaTVjYmlBZ0lDb2dRSFJvY205M2N5QjdSWEp5YjNKOUlFbG1JSFJvWlNCbGJXSmxaR1JwYm1jZ2JXVjBhRzlrSUhkaGN5QnViM1FnWm05MWJtUXVYRzRnSUNBcUlFQnlaWFIxY200Z2UyRnVlWDBnUTJGeWRHVnphV0Z1SUdOdmIzSmthVzVoZEdVZ2IyWWdkR2hwY3lCbGJXSmxaR1JwYm1jZ1lXNWtJR1JwYzNSaGJtTmxJRzFoZEhKcGVDQjNhR1Z5WlNCaGNIQnNhV05oWW14bExseHVJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1JHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVnlYRzRnSUNBcUwxeHVJQ0FnSUhCMVlteHBZeUJoYzNsdVl5QjBjbUZ1YzJadmNtMG9kSEpoYm5Od2IzTmxPaUJpYjI5c1pXRnVJRDBnWm1Gc2MyVXBPaUJRY205dGFYTmxQRTFoZEhKcGVENGdlMXh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVjbVZrZFdObGNpQTlQVDBnZFc1a1pXWnBibVZrS1Z4dUlDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjFKbFpIVmpaWElnZDJGeklHNXZkQ0JrWldacGJtVmtMaWNwTzF4dVhHNGdJQ0FnSUNCc1pYUWdaVzFpWldSa2FXNW5JRDBnWVhkaGFYUWdkR2hwY3k1eVpXUjFZMlZ5TG5SeVlXNXpabTl5YlNncE8xeHVYRzRnSUNBZ0lDQnBaaUFvZEhKaGJuTndiM05sS1Z4dUlDQWdJQ0FnSUNCbGJXSmxaR1JwYm1jZ1BTQjBjbUZ1YzNCdmMyVk5ZWFJ5YVhnb1pXMWlaV1JrYVc1bktUdGNibHh1SUNBZ0lDQWdjbVYwZFhKdUlHVnRZbVZrWkdsdVp6dGNiaUFnSUNCOVhHNWNiaUFnSUNBdktpcGNiaUFnSUNvZ1VtVjBkWEp1Y3lCdFpYUnlhV056SUdGMllXbHNZV0pzWlNCaWVTQjBlWEJsTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGMzMGdkSGx3WlU1aGJXVWdkSGx3WlNCdVlXMWxYRzRnSUNBcUlFQnlaWFIxY200Z2UzTjBjbWx1WjF0ZGZTQk5aWFJ5YVdNZ2JtRnRaWE1nZDJocFkyZ2daWGh3WldOMGN5QjBhR1VnWjJsMlpXNGdaR0YwWVNCMGVYQmxYRzRnSUNBcUlFQnRaVzFpWlhKdlppQkVhVzFsYm5OcGIyNWhiR2wwZVZKbFpIVmpaWEpjYmlBZ0lDb3ZYRzRnSUNBZ2MzUmhkR2xqSUdGMllXbHNZV0pzWlUxbGRISnBZM05DZVZSNWNHVW9kSGx3WlU1aGJXVTZJRUYyWVdsc1lXSnNaVVJoZEdGVWVYQmxjeWtnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRTlpYW1WamRDNXJaWGx6S0VGMllXbHNZV0pzWlUxbGRISnBZM05iZEhsd1pVNWhiV1ZkS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVjeUJrYVcxbGJuTnBiMjVoYkdsMGVTQnlaV1IxWTNScGIyNGdiV1YwYUc5a2N5QmhkbUZwYkdGaWJHVXVYRzRnSUNBcVhHNGdJQ0FxSUVCeVpXRmtiMjVzZVZ4dUlDQWdLaUJBYldWdFltVnliMllnUkdsdFpXNXphVzl1WVd4cGRIbFNaV1IxWTJWeVhHNGdJQ0FxTDF4dUlDQWdJSE4wWVhScFl5Qm5aWFFnWVhaaGFXeGhZbXhsVFdWMGFHOWtjeWdwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJQWW1wbFkzUXVhMlY1Y3loQmRtRnBiR0ZpYkdWU1pXUjFZMlZ5Y3lrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHlvcVhHNGdJQ0FxSUZKbGRIVnlibk1nYldWMGNtbGpjeUJoZG1GcGJHRmliR1V1WEc0Z0lDQXFYRzRnSUNBcUlFQnlaV0ZrYjI1c2VWeHVJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1JHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVnlYRzRnSUNBcUwxeHVJQ0FnSUhOMFlYUnBZeUJuWlhRZ1lYWmhhV3hoWW14bFRXVjBjbWxqY3lncElIdGNiaUFnSUNBZ0lHeGxkQ0JoYm5NNklITjBjbWx1WjF0ZElEMGdXMTA3WEc0Z0lDQWdJQ0JQWW1wbFkzUXVkbUZzZFdWektFRjJZV2xzWVdKc1pVMWxkSEpwWTNNcExtWnZja1ZoWTJnb0tHOWlhaWtnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCaGNuSmhlU0E5SUU5aWFtVmpkQzUyWVd4MVpYTW9iMkpxS1R0Y2JpQWdJQ0FnSUNBZ1lXNXpJRDBnV3k0dUxtRnVjeXdnTGk0dVlYSnlZWGxkTzF4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCeVpYUjFjbTRnWVc1ek8xeHVJQ0FnSUgxY2JuMWNiaUpkZlE9PSIsImltcG9ydCB7IE11bHRpQ29sRGltUmVkdWNlciB9IGZyb20gJy4vbXVsdGktY29sdW1uLWRpbS1yZWR1Y2VyJztcbi8qKlxuICogV29ya2VyIHRocmVhZCByZWNlaXZpbmcgZGF0YSBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0ge2FueVtdfSBjb2x1bW5EYXRhIFNhbXBsZXMgdG8gcHJvY2Vzcy5cbiAqIEBwYXJhbSB7S25vd25NZXRob2RzfSBtZXRob2QgRW1iZWRkaW5nIG1ldGhvZC5cbiAqIEBwYXJhbSB7S25vd25NZXRyaWNzfSBtZWFzdXJlIERpc3RhbmNlIG1ldHJpYy5cbiAqIEBwYXJhbSB7YW55fSBvcHRpb25zIE9wdGlvbnMgdG8gcGFzcyB0byBhbGdvcml0aG0uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHBhcmFsbGVsRGlzdGFuY2VXb3JrZXJzIFdoZXRoZXIgdG8gdXNlIHBhcmFsbGVsIGRpc3RhbmNlIHdvcmtlcnMuXG4gKiBAcmV0dXJuIHthbnl9IEVtYmVkZGluZyAoYW5kIGRpc3RhbmNlIG1hdHJpeCB3aGVyZSBhcHBsaWNhYmxlKS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gb25NZXNzYWdlKGNvbHVtbnNEYXRhLCBtZXRob2QsIG1ldHJpY3MsIHdlaWdodHMsIGFnZ3JlZ2F0aW9uTWV0aG9kLCBvcHRpb25zKSB7XG4gICAgY29uc3QgcmVkdWNlciA9IG5ldyBNdWx0aUNvbERpbVJlZHVjZXIoY29sdW1uc0RhdGEsIG1ldGhvZCwgbWV0cmljcywgd2VpZ2h0cywgYWdncmVnYXRpb25NZXRob2QsIHsgLi4ub3B0aW9ucywgcHJvZ3Jlc3NGdW5jIH0pO1xuICAgIHJldHVybiBhd2FpdCByZWR1Y2VyLnRyYW5zZm9ybSh0cnVlKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHByb2dyZXNzRnVuYyhlcG9jaE51bSwgZXBvY2hzTGVuZ3RoLCBlbWJlZGRpbmcpIHtcbiAgICBpZiAoZXBvY2hOdW0gJSA1ID09PSAwKVxuICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKHsgZXBvY2hOdW0sIGVwb2Noc0xlbmd0aCwgZW1iZWRkaW5nIH0pO1xufVxuc2VsZi5vbm1lc3NhZ2UgPSBhc3luYyAoeyBkYXRhOiB7IGNvbHVtbnNEYXRhLCBtZXRob2QsIGRpc3RhbmNlTWV0cmljcywgb3B0aW9ucywgd2VpZ2h0cywgYWdncmVnYXRpb25NZXRob2QgfSB9KSA9PiB7XG4gICAgbGV0IGRhdGE7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZW1iZWRkaW5nID0gYXdhaXQgb25NZXNzYWdlKGNvbHVtbnNEYXRhLCBtZXRob2QsIGRpc3RhbmNlTWV0cmljcywgd2VpZ2h0cywgYWdncmVnYXRpb25NZXRob2QsIG9wdGlvbnMpO1xuICAgICAgICBkYXRhID0geyBlbWJlZGRpbmcgfTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgZGF0YSA9IHsgZXJyb3I6IGUgfTtcbiAgICB9XG4gICAgc2VsZi5wb3N0TWVzc2FnZSh7XG4gICAgICAgIGVycm9yOiBkYXRhLmVycm9yLFxuICAgICAgICBlbWJlZGRpbmc6IGRhdGEuZW1iZWRkaW5nLFxuICAgIH0pO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJYVnNhWFF0WTI5c2RXMXVMV1JwYlMxeVpXUjFZMlZ5TFhkdmNtdGxjaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkltMTFiR2wwTFdOdmJIVnRiaTFrYVcwdGNtVmtkV05sY2kxM2IzSnJaWEl1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlNVRXNUMEZCVHl4RlFVRkRMR3RDUVVGclFpeEZRVUZETEUxQlFVMHNORUpCUVRSQ0xFTkJRVU03UVVGRk9VUTdPenM3T3pzN096dEhRVk5ITzBGQlEwZ3NTMEZCU3l4VlFVRlZMRk5CUVZNc1EwRkJReXhYUVVGNVFpeEZRVUZGTEUxQlFUSkNMRVZCUVVVc1QwRkJkVUlzUlVGRGRFY3NUMEZCYVVJc1JVRkJSU3hwUWtGQk5FTXNSVUZETDBRc1QwRkJXVHRKUVVOYUxFMUJRVTBzVDBGQlR5eEhRVUZITEVsQlFVa3NhMEpCUVd0Q0xFTkJRM0JETEZkQlFWY3NSVUZEV0N4TlFVRk5MRVZCUTA0c1QwRkJUeXhGUVVOUUxFOUJRVThzUlVGRFVDeHBRa0ZCYVVJc1JVRkRha0lzUlVGQlF5eEhRVUZITEU5QlFVOHNSVUZCUlN4WlFVRlpMRVZCUVVNc1EwRkRNMElzUTBGQlF6dEpRVU5HTEU5QlFVOHNUVUZCVFN4UFFVRlBMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBGQlEzWkRMRU5CUVVNN1FVRkZSQ3hMUVVGTExGVkJRVlVzV1VGQldTeERRVUZETEZGQlFXZENMRVZCUVVVc1dVRkJiMElzUlVGQlJTeFRRVUZ4UWp0SlFVTjJSaXhKUVVGSkxGRkJRVkVzUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXp0UlFVTndRaXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEVWQlFVTXNVVUZCVVN4RlFVRkZMRmxCUVZrc1JVRkJSU3hUUVVGVExFVkJRVU1zUTBGQlF5eERRVUZETzBGQlF6RkVMRU5CUVVNN1FVRkZSQ3hKUVVGSkxFTkJRVU1zVTBGQlV5eEhRVUZITEV0QlFVc3NSVUZCUlN4RlFVRkRMRWxCUVVrc1JVRkJSU3hGUVVGRExGZEJRVmNzUlVGQlJTeE5RVUZOTEVWQlFVVXNaVUZCWlN4RlFVRkZMRTlCUVU4c1JVRkJSU3hQUVVGUExFVkJRVVVzYVVKQlFXbENMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVVU3U1VGRE4wY3NTVUZCU1N4SlFVRnZReXhEUVVGRE8wbEJRM3BETEVsQlFVazdVVUZEUml4TlFVRk5MRk5CUVZNc1IwRkJSeXhOUVVGTkxGTkJRVk1zUTBGQlF5eFhRVUZYTEVWQlFVVXNUVUZCVFN4RlFVRkZMR1ZCUVdVc1JVRkJSU3hQUVVGUExFVkJRVVVzYVVKQlFXbENMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGRE4wY3NTVUZCU1N4SFFVRkhMRVZCUVVNc1UwRkJVeXhGUVVGRExFTkJRVU03UzBGRGNFSTdTVUZCUXl4UFFVRlBMRU5CUVUwc1JVRkJSVHRSUVVObUxFbEJRVWtzUjBGQlJ5eEZRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRMRVZCUVVNc1EwRkJRenRMUVVOdVFqdEpRVU5FTEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNN1VVRkRaaXhMUVVGTExFVkJRVVVzU1VGQlNTeERRVUZETEV0QlFVczdVVUZEYWtJc1UwRkJVeXhGUVVGRkxFbEJRVWtzUTBGQlF5eFRRVUZUTzB0QlF6RkNMRU5CUVVNc1EwRkJRenRCUVVOTUxFTkJRVU1zUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdUV0YwY21sNGZTQm1jbTl0SUNkQVpHRjBZV2R5YjJzdGJHbGljbUZ5YVdWekwzVjBhV3h6TDNOeVl5OTBlWEJsTFdSbFkyeGhjbUYwYVc5dWN5YzdYRzVwYlhCdmNuUWdlMHR1YjNkdVRXVjBjbWxqYzMwZ1puSnZiU0FuTGk0dmRIbHdaV1F0YldWMGNtbGpjeTkwZVhCbFpDMXRaWFJ5YVdOekp6dGNibWx0Y0c5eWRDQjdSR2x0VW1Wa2RXTjBhVzl1VFdWMGFHOWtjMzBnWm5KdmJTQW5MaTkwZVhCbGN5YzdYRzVwYlhCdmNuUWdlMFJwYzNSaGJtTmxRV2RuY21WbllYUnBiMjVOWlhSb2IyUjlJR1p5YjIwZ0p5NHVMMlJwYzNSaGJtTmxMVzFoZEhKcGVDOTBlWEJsY3ljN1hHNXBiWEJ2Y25RZ2UwMTFiSFJwUTI5c1JHbHRVbVZrZFdObGNuMGdabkp2YlNBbkxpOXRkV3gwYVMxamIyeDFiVzR0WkdsdExYSmxaSFZqWlhJbk8xeHVYRzR2S2lwY2JpQXFJRmR2Y210bGNpQjBhSEpsWVdRZ2NtVmpaV2wyYVc1bklHUmhkR0VnWm5WdVkzUnBiMjR1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRoYm5sYlhYMGdZMjlzZFcxdVJHRjBZU0JUWVcxd2JHVnpJSFJ2SUhCeWIyTmxjM011WEc0Z0tpQkFjR0Z5WVcwZ2UwdHViM2R1VFdWMGFHOWtjMzBnYldWMGFHOWtJRVZ0WW1Wa1pHbHVaeUJ0WlhSb2IyUXVYRzRnS2lCQWNHRnlZVzBnZTB0dWIzZHVUV1YwY21samMzMGdiV1ZoYzNWeVpTQkVhWE4wWVc1alpTQnRaWFJ5YVdNdVhHNGdLaUJBY0dGeVlXMGdlMkZ1ZVgwZ2IzQjBhVzl1Y3lCUGNIUnBiMjV6SUhSdklIQmhjM01nZEc4Z1lXeG5iM0pwZEdodExseHVJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0J3WVhKaGJHeGxiRVJwYzNSaGJtTmxWMjl5YTJWeWN5QlhhR1YwYUdWeUlIUnZJSFZ6WlNCd1lYSmhiR3hsYkNCa2FYTjBZVzVqWlNCM2IzSnJaWEp6TGx4dUlDb2dRSEpsZEhWeWJpQjdZVzU1ZlNCRmJXSmxaR1JwYm1jZ0tHRnVaQ0JrYVhOMFlXNWpaU0J0WVhSeWFYZ2dkMmhsY21VZ1lYQndiR2xqWVdKc1pTa3VYRzRnS2k5Y2JtRnplVzVqSUdaMWJtTjBhVzl1SUc5dVRXVnpjMkZuWlNoamIyeDFiVzV6UkdGMFlUb2dRWEp5WVhrOFlXNTVXMTArTENCdFpYUm9iMlE2SUVScGJWSmxaSFZqZEdsdmJrMWxkR2h2WkhNc0lHMWxkSEpwWTNNNklFdHViM2R1VFdWMGNtbGpjMXRkTEZ4dUlDQjNaV2xuYUhSek9pQnVkVzFpWlhKYlhTd2dZV2RuY21WbllYUnBiMjVOWlhSb2IyUTZJRVJwYzNSaGJtTmxRV2RuY21WbllYUnBiMjVOWlhSb2IyUXNYRzRnSUc5d2RHbHZibk02SUdGdWVTazZJRkJ5YjIxcGMyVThUV0YwY21sNFBpQjdYRzRnSUdOdmJuTjBJSEpsWkhWalpYSWdQU0J1WlhjZ1RYVnNkR2xEYjJ4RWFXMVNaV1IxWTJWeUtGeHVJQ0FnSUdOdmJIVnRibk5FWVhSaExGeHVJQ0FnSUcxbGRHaHZaQ3hjYmlBZ0lDQnRaWFJ5YVdOekxGeHVJQ0FnSUhkbGFXZG9kSE1zWEc0Z0lDQWdZV2RuY21WbllYUnBiMjVOWlhSb2IyUXNYRzRnSUNBZ2V5NHVMbTl3ZEdsdmJuTXNJSEJ5YjJkeVpYTnpSblZ1WTMxY2JpQWdLVHRjYmlBZ2NtVjBkWEp1SUdGM1lXbDBJSEpsWkhWalpYSXVkSEpoYm5ObWIzSnRLSFJ5ZFdVcE8xeHVmVnh1WEc1aGMzbHVZeUJtZFc1amRHbHZiaUJ3Y205bmNtVnpjMFoxYm1Nb1pYQnZZMmhPZFcwNklHNTFiV0psY2l3Z1pYQnZZMmh6VEdWdVozUm9PaUJ1ZFcxaVpYSXNJR1Z0WW1Wa1pHbHVaem9nYm5WdFltVnlXMTFiWFNrZ2UxeHVJQ0JwWmlBb1pYQnZZMmhPZFcwZ0pTQTFJRDA5UFNBd0tWeHVJQ0FnSUhObGJHWXVjRzl6ZEUxbGMzTmhaMlVvZTJWd2IyTm9UblZ0TENCbGNHOWphSE5NWlc1bmRHZ3NJR1Z0WW1Wa1pHbHVaMzBwTzF4dWZWeHVYRzV6Wld4bUxtOXViV1Z6YzJGblpTQTlJR0Z6ZVc1aklDaDdaR0YwWVRvZ2UyTnZiSFZ0Ym5ORVlYUmhMQ0J0WlhSb2IyUXNJR1JwYzNSaGJtTmxUV1YwY21samN5d2diM0IwYVc5dWN5d2dkMlZwWjJoMGN5d2dZV2RuY21WbllYUnBiMjVOWlhSb2IyUjlmU2tnUFQ0Z2UxeHVJQ0JzWlhRZ1pHRjBZVG9nZTJWeWNtOXlQem9nWVc1NUxDQmxiV0psWkdScGJtYy9PaUJoYm5sOU8xeHVJQ0IwY25rZ2UxeHVJQ0FnSUdOdmJuTjBJR1Z0WW1Wa1pHbHVaeUE5SUdGM1lXbDBJRzl1VFdWemMyRm5aU2hqYjJ4MWJXNXpSR0YwWVN3Z2JXVjBhRzlrTENCa2FYTjBZVzVqWlUxbGRISnBZM01zSUhkbGFXZG9kSE1zSUdGblozSmxaMkYwYVc5dVRXVjBhRzlrTENCdmNIUnBiMjV6S1R0Y2JpQWdJQ0JrWVhSaElEMGdlMlZ0WW1Wa1pHbHVaMzA3WEc0Z0lIMGdZMkYwWTJnZ0tHVTZJR0Z1ZVNrZ2UxeHVJQ0FnSUdSaGRHRWdQU0I3WlhKeWIzSTZJR1Y5TzF4dUlDQjlYRzRnSUhObGJHWXVjRzl6ZEUxbGMzTmhaMlVvZTF4dUlDQWdJR1Z5Y205eU9pQmtZWFJoTG1WeWNtOXlMRnh1SUNBZ0lHVnRZbVZrWkdsdVp6b2daR0YwWVM1bGJXSmxaR1JwYm1jc1hHNGdJSDBwTzF4dWZUdGNiaUpkZlE9PSIsIi8vIEEgbGlicmFyeSBvZiBzZWVkYWJsZSBSTkdzIGltcGxlbWVudGVkIGluIEphdmFzY3JpcHQuXG4vL1xuLy8gVXNhZ2U6XG4vL1xuLy8gdmFyIHNlZWRyYW5kb20gPSByZXF1aXJlKCdzZWVkcmFuZG9tJyk7XG4vLyB2YXIgcmFuZG9tID0gc2VlZHJhbmRvbSgxKTsgLy8gb3IgYW55IHNlZWQuXG4vLyB2YXIgeCA9IHJhbmRvbSgpOyAgICAgICAvLyAwIDw9IHggPCAxLiAgRXZlcnkgYml0IGlzIHJhbmRvbS5cbi8vIHZhciB4ID0gcmFuZG9tLnF1aWNrKCk7IC8vIDAgPD0geCA8IDEuICAzMiBiaXRzIG9mIHJhbmRvbW5lc3MuXG5cbi8vIGFsZWEsIGEgNTMtYml0IG11bHRpcGx5LXdpdGgtY2FycnkgZ2VuZXJhdG9yIGJ5IEpvaGFubmVzIEJhYWfDuGUuXG4vLyBQZXJpb2Q6IH4yXjExNlxuLy8gUmVwb3J0ZWQgdG8gcGFzcyBhbGwgQmlnQ3J1c2ggdGVzdHMuXG52YXIgYWxlYSA9IHJlcXVpcmUoJy4vbGliL2FsZWEnKTtcblxuLy8geG9yMTI4LCBhIHB1cmUgeG9yLXNoaWZ0IGdlbmVyYXRvciBieSBHZW9yZ2UgTWFyc2FnbGlhLlxuLy8gUGVyaW9kOiAyXjEyOC0xLlxuLy8gUmVwb3J0ZWQgdG8gZmFpbDogTWF0cml4UmFuayBhbmQgTGluZWFyQ29tcC5cbnZhciB4b3IxMjggPSByZXF1aXJlKCcuL2xpYi94b3IxMjgnKTtcblxuLy8geG9yd293LCBHZW9yZ2UgTWFyc2FnbGlhJ3MgMTYwLWJpdCB4b3Itc2hpZnQgY29tYmluZWQgcGx1cyB3ZXlsLlxuLy8gUGVyaW9kOiAyXjE5Mi0yXjMyXG4vLyBSZXBvcnRlZCB0byBmYWlsOiBDb2xsaXNpb25PdmVyLCBTaW1wUG9rZXIsIGFuZCBMaW5lYXJDb21wLlxudmFyIHhvcndvdyA9IHJlcXVpcmUoJy4vbGliL3hvcndvdycpO1xuXG4vLyB4b3JzaGlmdDcsIGJ5IEZyYW7Dp29pcyBQYW5uZXRvbiBhbmQgUGllcnJlIEwnZWN1eWVyLCB0YWtlc1xuLy8gYSBkaWZmZXJlbnQgYXBwcm9hY2g6IGl0IGFkZHMgcm9idXN0bmVzcyBieSBhbGxvd2luZyBtb3JlIHNoaWZ0c1xuLy8gdGhhbiBNYXJzYWdsaWEncyBvcmlnaW5hbCB0aHJlZS4gIEl0IGlzIGEgNy1zaGlmdCBnZW5lcmF0b3Jcbi8vIHdpdGggMjU2IGJpdHMsIHRoYXQgcGFzc2VzIEJpZ0NydXNoIHdpdGggbm8gc3lzdG1hdGljIGZhaWx1cmVzLlxuLy8gUGVyaW9kIDJeMjU2LTEuXG4vLyBObyBzeXN0ZW1hdGljIEJpZ0NydXNoIGZhaWx1cmVzIHJlcG9ydGVkLlxudmFyIHhvcnNoaWZ0NyA9IHJlcXVpcmUoJy4vbGliL3hvcnNoaWZ0NycpO1xuXG4vLyB4b3I0MDk2LCBieSBSaWNoYXJkIEJyZW50LCBpcyBhIDQwOTYtYml0IHhvci1zaGlmdCB3aXRoIGFcbi8vIHZlcnkgbG9uZyBwZXJpb2QgdGhhdCBhbHNvIGFkZHMgYSBXZXlsIGdlbmVyYXRvci4gSXQgYWxzbyBwYXNzZXNcbi8vIEJpZ0NydXNoIHdpdGggbm8gc3lzdGVtYXRpYyBmYWlsdXJlcy4gIEl0cyBsb25nIHBlcmlvZCBtYXlcbi8vIGJlIHVzZWZ1bCBpZiB5b3UgaGF2ZSBtYW55IGdlbmVyYXRvcnMgYW5kIG5lZWQgdG8gYXZvaWRcbi8vIGNvbGxpc2lvbnMuXG4vLyBQZXJpb2Q6IDJeNDEyOC0yXjMyLlxuLy8gTm8gc3lzdGVtYXRpYyBCaWdDcnVzaCBmYWlsdXJlcyByZXBvcnRlZC5cbnZhciB4b3I0MDk2ID0gcmVxdWlyZSgnLi9saWIveG9yNDA5NicpO1xuXG4vLyBUeWNoZS1pLCBieSBTYW11ZWwgTmV2ZXMgYW5kIEZpbGlwZSBBcmF1am8sIGlzIGEgYml0LXNoaWZ0aW5nIHJhbmRvbVxuLy8gbnVtYmVyIGdlbmVyYXRvciBkZXJpdmVkIGZyb20gQ2hhQ2hhLCBhIG1vZGVybiBzdHJlYW0gY2lwaGVyLlxuLy8gaHR0cHM6Ly9lZGVuLmRlaS51Yy5wdC9+c25ldmVzL3B1YnMvMjAxMS1zbmZhMi5wZGZcbi8vIFBlcmlvZDogfjJeMTI3XG4vLyBObyBzeXN0ZW1hdGljIEJpZ0NydXNoIGZhaWx1cmVzIHJlcG9ydGVkLlxudmFyIHR5Y2hlaSA9IHJlcXVpcmUoJy4vbGliL3R5Y2hlaScpO1xuXG4vLyBUaGUgb3JpZ2luYWwgQVJDNC1iYXNlZCBwcm5nIGluY2x1ZGVkIGluIHRoaXMgbGlicmFyeS5cbi8vIFBlcmlvZDogfjJeMTYwMFxudmFyIHNyID0gcmVxdWlyZSgnLi9zZWVkcmFuZG9tJyk7XG5cbnNyLmFsZWEgPSBhbGVhO1xuc3IueG9yMTI4ID0geG9yMTI4O1xuc3IueG9yd293ID0geG9yd293O1xuc3IueG9yc2hpZnQ3ID0geG9yc2hpZnQ3O1xuc3IueG9yNDA5NiA9IHhvcjQwOTY7XG5zci50eWNoZWkgPSB0eWNoZWk7XG5cbm1vZHVsZS5leHBvcnRzID0gc3I7XG4iLCIvLyBBIHBvcnQgb2YgYW4gYWxnb3JpdGhtIGJ5IEpvaGFubmVzIEJhYWfDuGUgPGJhYWdvZUBiYWFnb2UuY29tPiwgMjAxMFxuLy8gaHR0cDovL2JhYWdvZS5jb20vZW4vUmFuZG9tTXVzaW5ncy9qYXZhc2NyaXB0L1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL25xdWlubGFuL2JldHRlci1yYW5kb20tbnVtYmVycy1mb3ItamF2YXNjcmlwdC1taXJyb3Jcbi8vIE9yaWdpbmFsIHdvcmsgaXMgdW5kZXIgTUlUIGxpY2Vuc2UgLVxuXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgYnkgSm9oYW5uZXMgQmFhZ8O4ZSA8YmFhZ29lQGJhYWdvZS5vcmc+XG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuXG5cbihmdW5jdGlvbihnbG9iYWwsIG1vZHVsZSwgZGVmaW5lKSB7XG5cbmZ1bmN0aW9uIEFsZWEoc2VlZCkge1xuICB2YXIgbWUgPSB0aGlzLCBtYXNoID0gTWFzaCgpO1xuXG4gIG1lLm5leHQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgdCA9IDIwOTE2MzkgKiBtZS5zMCArIG1lLmMgKiAyLjMyODMwNjQzNjUzODY5NjNlLTEwOyAvLyAyXi0zMlxuICAgIG1lLnMwID0gbWUuczE7XG4gICAgbWUuczEgPSBtZS5zMjtcbiAgICByZXR1cm4gbWUuczIgPSB0IC0gKG1lLmMgPSB0IHwgMCk7XG4gIH07XG5cbiAgLy8gQXBwbHkgdGhlIHNlZWRpbmcgYWxnb3JpdGhtIGZyb20gQmFhZ29lLlxuICBtZS5jID0gMTtcbiAgbWUuczAgPSBtYXNoKCcgJyk7XG4gIG1lLnMxID0gbWFzaCgnICcpO1xuICBtZS5zMiA9IG1hc2goJyAnKTtcbiAgbWUuczAgLT0gbWFzaChzZWVkKTtcbiAgaWYgKG1lLnMwIDwgMCkgeyBtZS5zMCArPSAxOyB9XG4gIG1lLnMxIC09IG1hc2goc2VlZCk7XG4gIGlmIChtZS5zMSA8IDApIHsgbWUuczEgKz0gMTsgfVxuICBtZS5zMiAtPSBtYXNoKHNlZWQpO1xuICBpZiAobWUuczIgPCAwKSB7IG1lLnMyICs9IDE7IH1cbiAgbWFzaCA9IG51bGw7XG59XG5cbmZ1bmN0aW9uIGNvcHkoZiwgdCkge1xuICB0LmMgPSBmLmM7XG4gIHQuczAgPSBmLnMwO1xuICB0LnMxID0gZi5zMTtcbiAgdC5zMiA9IGYuczI7XG4gIHJldHVybiB0O1xufVxuXG5mdW5jdGlvbiBpbXBsKHNlZWQsIG9wdHMpIHtcbiAgdmFyIHhnID0gbmV3IEFsZWEoc2VlZCksXG4gICAgICBzdGF0ZSA9IG9wdHMgJiYgb3B0cy5zdGF0ZSxcbiAgICAgIHBybmcgPSB4Zy5uZXh0O1xuICBwcm5nLmludDMyID0gZnVuY3Rpb24oKSB7IHJldHVybiAoeGcubmV4dCgpICogMHgxMDAwMDAwMDApIHwgMDsgfVxuICBwcm5nLmRvdWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBwcm5nKCkgKyAocHJuZygpICogMHgyMDAwMDAgfCAwKSAqIDEuMTEwMjIzMDI0NjI1MTU2NWUtMTY7IC8vIDJeLTUzXG4gIH07XG4gIHBybmcucXVpY2sgPSBwcm5nO1xuICBpZiAoc3RhdGUpIHtcbiAgICBpZiAodHlwZW9mKHN0YXRlKSA9PSAnb2JqZWN0JykgY29weShzdGF0ZSwgeGcpO1xuICAgIHBybmcuc3RhdGUgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGNvcHkoeGcsIHt9KTsgfVxuICB9XG4gIHJldHVybiBwcm5nO1xufVxuXG5mdW5jdGlvbiBNYXNoKCkge1xuICB2YXIgbiA9IDB4ZWZjODI0OWQ7XG5cbiAgdmFyIG1hc2ggPSBmdW5jdGlvbihkYXRhKSB7XG4gICAgZGF0YSA9IFN0cmluZyhkYXRhKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIG4gKz0gZGF0YS5jaGFyQ29kZUF0KGkpO1xuICAgICAgdmFyIGggPSAwLjAyNTE5NjAzMjgyNDE2OTM4ICogbjtcbiAgICAgIG4gPSBoID4+PiAwO1xuICAgICAgaCAtPSBuO1xuICAgICAgaCAqPSBuO1xuICAgICAgbiA9IGggPj4+IDA7XG4gICAgICBoIC09IG47XG4gICAgICBuICs9IGggKiAweDEwMDAwMDAwMDsgLy8gMl4zMlxuICAgIH1cbiAgICByZXR1cm4gKG4gPj4+IDApICogMi4zMjgzMDY0MzY1Mzg2OTYzZS0xMDsgLy8gMl4tMzJcbiAgfTtcblxuICByZXR1cm4gbWFzaDtcbn1cblxuXG5pZiAobW9kdWxlICYmIG1vZHVsZS5leHBvcnRzKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gaW1wbDtcbn0gZWxzZSBpZiAoZGVmaW5lICYmIGRlZmluZS5hbWQpIHtcbiAgZGVmaW5lKGZ1bmN0aW9uKCkgeyByZXR1cm4gaW1wbDsgfSk7XG59IGVsc2Uge1xuICB0aGlzLmFsZWEgPSBpbXBsO1xufVxuXG59KShcbiAgdGhpcyxcbiAgKHR5cGVvZiBtb2R1bGUpID09ICdvYmplY3QnICYmIG1vZHVsZSwgICAgLy8gcHJlc2VudCBpbiBub2RlLmpzXG4gICh0eXBlb2YgZGVmaW5lKSA9PSAnZnVuY3Rpb24nICYmIGRlZmluZSAgIC8vIHByZXNlbnQgd2l0aCBhbiBBTUQgbG9hZGVyXG4pO1xuXG5cbiIsIi8vIEEgSmF2YXNjcmlwdCBpbXBsZW1lbnRhaW9uIG9mIHRoZSBcIlR5Y2hlLWlcIiBwcm5nIGFsZ29yaXRobSBieVxuLy8gU2FtdWVsIE5ldmVzIGFuZCBGaWxpcGUgQXJhdWpvLlxuLy8gU2VlIGh0dHBzOi8vZWRlbi5kZWkudWMucHQvfnNuZXZlcy9wdWJzLzIwMTEtc25mYTIucGRmXG5cbihmdW5jdGlvbihnbG9iYWwsIG1vZHVsZSwgZGVmaW5lKSB7XG5cbmZ1bmN0aW9uIFhvckdlbihzZWVkKSB7XG4gIHZhciBtZSA9IHRoaXMsIHN0cnNlZWQgPSAnJztcblxuICAvLyBTZXQgdXAgZ2VuZXJhdG9yIGZ1bmN0aW9uLlxuICBtZS5uZXh0ID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGIgPSBtZS5iLCBjID0gbWUuYywgZCA9IG1lLmQsIGEgPSBtZS5hO1xuICAgIGIgPSAoYiA8PCAyNSkgXiAoYiA+Pj4gNykgXiBjO1xuICAgIGMgPSAoYyAtIGQpIHwgMDtcbiAgICBkID0gKGQgPDwgMjQpIF4gKGQgPj4+IDgpIF4gYTtcbiAgICBhID0gKGEgLSBiKSB8IDA7XG4gICAgbWUuYiA9IGIgPSAoYiA8PCAyMCkgXiAoYiA+Pj4gMTIpIF4gYztcbiAgICBtZS5jID0gYyA9IChjIC0gZCkgfCAwO1xuICAgIG1lLmQgPSAoZCA8PCAxNikgXiAoYyA+Pj4gMTYpIF4gYTtcbiAgICByZXR1cm4gbWUuYSA9IChhIC0gYikgfCAwO1xuICB9O1xuXG4gIC8qIFRoZSBmb2xsb3dpbmcgaXMgbm9uLWludmVydGVkIHR5Y2hlLCB3aGljaCBoYXMgYmV0dGVyIGludGVybmFsXG4gICAqIGJpdCBkaWZmdXNpb24sIGJ1dCB3aGljaCBpcyBhYm91dCAyNSUgc2xvd2VyIHRoYW4gdHljaGUtaSBpbiBKUy5cbiAgbWUubmV4dCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBhID0gbWUuYSwgYiA9IG1lLmIsIGMgPSBtZS5jLCBkID0gbWUuZDtcbiAgICBhID0gKG1lLmEgKyBtZS5iIHwgMCkgPj4+IDA7XG4gICAgZCA9IG1lLmQgXiBhOyBkID0gZCA8PCAxNiBeIGQgPj4+IDE2O1xuICAgIGMgPSBtZS5jICsgZCB8IDA7XG4gICAgYiA9IG1lLmIgXiBjOyBiID0gYiA8PCAxMiBeIGQgPj4+IDIwO1xuICAgIG1lLmEgPSBhID0gYSArIGIgfCAwO1xuICAgIGQgPSBkIF4gYTsgbWUuZCA9IGQgPSBkIDw8IDggXiBkID4+PiAyNDtcbiAgICBtZS5jID0gYyA9IGMgKyBkIHwgMDtcbiAgICBiID0gYiBeIGM7XG4gICAgcmV0dXJuIG1lLmIgPSAoYiA8PCA3IF4gYiA+Pj4gMjUpO1xuICB9XG4gICovXG5cbiAgbWUuYSA9IDA7XG4gIG1lLmIgPSAwO1xuICBtZS5jID0gMjY1NDQzNTc2OSB8IDA7XG4gIG1lLmQgPSAxMzY3MTMwNTUxO1xuXG4gIGlmIChzZWVkID09PSBNYXRoLmZsb29yKHNlZWQpKSB7XG4gICAgLy8gSW50ZWdlciBzZWVkLlxuICAgIG1lLmEgPSAoc2VlZCAvIDB4MTAwMDAwMDAwKSB8IDA7XG4gICAgbWUuYiA9IHNlZWQgfCAwO1xuICB9IGVsc2Uge1xuICAgIC8vIFN0cmluZyBzZWVkLlxuICAgIHN0cnNlZWQgKz0gc2VlZDtcbiAgfVxuXG4gIC8vIE1peCBpbiBzdHJpbmcgc2VlZCwgdGhlbiBkaXNjYXJkIGFuIGluaXRpYWwgYmF0Y2ggb2YgNjQgdmFsdWVzLlxuICBmb3IgKHZhciBrID0gMDsgayA8IHN0cnNlZWQubGVuZ3RoICsgMjA7IGsrKykge1xuICAgIG1lLmIgXj0gc3Ryc2VlZC5jaGFyQ29kZUF0KGspIHwgMDtcbiAgICBtZS5uZXh0KCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29weShmLCB0KSB7XG4gIHQuYSA9IGYuYTtcbiAgdC5iID0gZi5iO1xuICB0LmMgPSBmLmM7XG4gIHQuZCA9IGYuZDtcbiAgcmV0dXJuIHQ7XG59O1xuXG5mdW5jdGlvbiBpbXBsKHNlZWQsIG9wdHMpIHtcbiAgdmFyIHhnID0gbmV3IFhvckdlbihzZWVkKSxcbiAgICAgIHN0YXRlID0gb3B0cyAmJiBvcHRzLnN0YXRlLFxuICAgICAgcHJuZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gKHhnLm5leHQoKSA+Pj4gMCkgLyAweDEwMDAwMDAwMDsgfTtcbiAgcHJuZy5kb3VibGUgPSBmdW5jdGlvbigpIHtcbiAgICBkbyB7XG4gICAgICB2YXIgdG9wID0geGcubmV4dCgpID4+PiAxMSxcbiAgICAgICAgICBib3QgPSAoeGcubmV4dCgpID4+PiAwKSAvIDB4MTAwMDAwMDAwLFxuICAgICAgICAgIHJlc3VsdCA9ICh0b3AgKyBib3QpIC8gKDEgPDwgMjEpO1xuICAgIH0gd2hpbGUgKHJlc3VsdCA9PT0gMCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbiAgcHJuZy5pbnQzMiA9IHhnLm5leHQ7XG4gIHBybmcucXVpY2sgPSBwcm5nO1xuICBpZiAoc3RhdGUpIHtcbiAgICBpZiAodHlwZW9mKHN0YXRlKSA9PSAnb2JqZWN0JykgY29weShzdGF0ZSwgeGcpO1xuICAgIHBybmcuc3RhdGUgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGNvcHkoeGcsIHt9KTsgfVxuICB9XG4gIHJldHVybiBwcm5nO1xufVxuXG5pZiAobW9kdWxlICYmIG1vZHVsZS5leHBvcnRzKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gaW1wbDtcbn0gZWxzZSBpZiAoZGVmaW5lICYmIGRlZmluZS5hbWQpIHtcbiAgZGVmaW5lKGZ1bmN0aW9uKCkgeyByZXR1cm4gaW1wbDsgfSk7XG59IGVsc2Uge1xuICB0aGlzLnR5Y2hlaSA9IGltcGw7XG59XG5cbn0pKFxuICB0aGlzLFxuICAodHlwZW9mIG1vZHVsZSkgPT0gJ29iamVjdCcgJiYgbW9kdWxlLCAgICAvLyBwcmVzZW50IGluIG5vZGUuanNcbiAgKHR5cGVvZiBkZWZpbmUpID09ICdmdW5jdGlvbicgJiYgZGVmaW5lICAgLy8gcHJlc2VudCB3aXRoIGFuIEFNRCBsb2FkZXJcbik7XG5cblxuIiwiLy8gQSBKYXZhc2NyaXB0IGltcGxlbWVudGFpb24gb2YgdGhlIFwieG9yMTI4XCIgcHJuZyBhbGdvcml0aG0gYnlcbi8vIEdlb3JnZSBNYXJzYWdsaWEuICBTZWUgaHR0cDovL3d3dy5qc3RhdHNvZnQub3JnL3YwOC9pMTQvcGFwZXJcblxuKGZ1bmN0aW9uKGdsb2JhbCwgbW9kdWxlLCBkZWZpbmUpIHtcblxuZnVuY3Rpb24gWG9yR2VuKHNlZWQpIHtcbiAgdmFyIG1lID0gdGhpcywgc3Ryc2VlZCA9ICcnO1xuXG4gIG1lLnggPSAwO1xuICBtZS55ID0gMDtcbiAgbWUueiA9IDA7XG4gIG1lLncgPSAwO1xuXG4gIC8vIFNldCB1cCBnZW5lcmF0b3IgZnVuY3Rpb24uXG4gIG1lLm5leHQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgdCA9IG1lLnggXiAobWUueCA8PCAxMSk7XG4gICAgbWUueCA9IG1lLnk7XG4gICAgbWUueSA9IG1lLno7XG4gICAgbWUueiA9IG1lLnc7XG4gICAgcmV0dXJuIG1lLncgXj0gKG1lLncgPj4+IDE5KSBeIHQgXiAodCA+Pj4gOCk7XG4gIH07XG5cbiAgaWYgKHNlZWQgPT09IChzZWVkIHwgMCkpIHtcbiAgICAvLyBJbnRlZ2VyIHNlZWQuXG4gICAgbWUueCA9IHNlZWQ7XG4gIH0gZWxzZSB7XG4gICAgLy8gU3RyaW5nIHNlZWQuXG4gICAgc3Ryc2VlZCArPSBzZWVkO1xuICB9XG5cbiAgLy8gTWl4IGluIHN0cmluZyBzZWVkLCB0aGVuIGRpc2NhcmQgYW4gaW5pdGlhbCBiYXRjaCBvZiA2NCB2YWx1ZXMuXG4gIGZvciAodmFyIGsgPSAwOyBrIDwgc3Ryc2VlZC5sZW5ndGggKyA2NDsgaysrKSB7XG4gICAgbWUueCBePSBzdHJzZWVkLmNoYXJDb2RlQXQoaykgfCAwO1xuICAgIG1lLm5leHQoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb3B5KGYsIHQpIHtcbiAgdC54ID0gZi54O1xuICB0LnkgPSBmLnk7XG4gIHQueiA9IGYuejtcbiAgdC53ID0gZi53O1xuICByZXR1cm4gdDtcbn1cblxuZnVuY3Rpb24gaW1wbChzZWVkLCBvcHRzKSB7XG4gIHZhciB4ZyA9IG5ldyBYb3JHZW4oc2VlZCksXG4gICAgICBzdGF0ZSA9IG9wdHMgJiYgb3B0cy5zdGF0ZSxcbiAgICAgIHBybmcgPSBmdW5jdGlvbigpIHsgcmV0dXJuICh4Zy5uZXh0KCkgPj4+IDApIC8gMHgxMDAwMDAwMDA7IH07XG4gIHBybmcuZG91YmxlID0gZnVuY3Rpb24oKSB7XG4gICAgZG8ge1xuICAgICAgdmFyIHRvcCA9IHhnLm5leHQoKSA+Pj4gMTEsXG4gICAgICAgICAgYm90ID0gKHhnLm5leHQoKSA+Pj4gMCkgLyAweDEwMDAwMDAwMCxcbiAgICAgICAgICByZXN1bHQgPSAodG9wICsgYm90KSAvICgxIDw8IDIxKTtcbiAgICB9IHdoaWxlIChyZXN1bHQgPT09IDApO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIHBybmcuaW50MzIgPSB4Zy5uZXh0O1xuICBwcm5nLnF1aWNrID0gcHJuZztcbiAgaWYgKHN0YXRlKSB7XG4gICAgaWYgKHR5cGVvZihzdGF0ZSkgPT0gJ29iamVjdCcpIGNvcHkoc3RhdGUsIHhnKTtcbiAgICBwcm5nLnN0YXRlID0gZnVuY3Rpb24oKSB7IHJldHVybiBjb3B5KHhnLCB7fSk7IH1cbiAgfVxuICByZXR1cm4gcHJuZztcbn1cblxuaWYgKG1vZHVsZSAmJiBtb2R1bGUuZXhwb3J0cykge1xuICBtb2R1bGUuZXhwb3J0cyA9IGltcGw7XG59IGVsc2UgaWYgKGRlZmluZSAmJiBkZWZpbmUuYW1kKSB7XG4gIGRlZmluZShmdW5jdGlvbigpIHsgcmV0dXJuIGltcGw7IH0pO1xufSBlbHNlIHtcbiAgdGhpcy54b3IxMjggPSBpbXBsO1xufVxuXG59KShcbiAgdGhpcyxcbiAgKHR5cGVvZiBtb2R1bGUpID09ICdvYmplY3QnICYmIG1vZHVsZSwgICAgLy8gcHJlc2VudCBpbiBub2RlLmpzXG4gICh0eXBlb2YgZGVmaW5lKSA9PSAnZnVuY3Rpb24nICYmIGRlZmluZSAgIC8vIHByZXNlbnQgd2l0aCBhbiBBTUQgbG9hZGVyXG4pO1xuXG5cbiIsIi8vIEEgSmF2YXNjcmlwdCBpbXBsZW1lbnRhaW9uIG9mIFJpY2hhcmQgQnJlbnQncyBYb3JnZW5zIHhvcjQwOTYgYWxnb3JpdGhtLlxuLy9cbi8vIFRoaXMgZmFzdCBub24tY3J5cHRvZ3JhcGhpYyByYW5kb20gbnVtYmVyIGdlbmVyYXRvciBpcyBkZXNpZ25lZCBmb3Jcbi8vIHVzZSBpbiBNb250ZS1DYXJsbyBhbGdvcml0aG1zLiBJdCBjb21iaW5lcyBhIGxvbmctcGVyaW9kIHhvcnNoaWZ0XG4vLyBnZW5lcmF0b3Igd2l0aCBhIFdleWwgZ2VuZXJhdG9yLCBhbmQgaXQgcGFzc2VzIGFsbCBjb21tb24gYmF0dGVyaWVzXG4vLyBvZiBzdGFzdGljaWFsIHRlc3RzIGZvciByYW5kb21uZXNzIHdoaWxlIGNvbnN1bWluZyBvbmx5IGEgZmV3IG5hbm9zZWNvbmRzXG4vLyBmb3IgZWFjaCBwcm5nIGdlbmVyYXRlZC4gIEZvciBiYWNrZ3JvdW5kIG9uIHRoZSBnZW5lcmF0b3IsIHNlZSBCcmVudCdzXG4vLyBwYXBlcjogXCJTb21lIGxvbmctcGVyaW9kIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9ycyB1c2luZyBzaGlmdHMgYW5kIHhvcnMuXCJcbi8vIGh0dHA6Ly9hcnhpdi5vcmcvcGRmLzEwMDQuMzExNXYxLnBkZlxuLy9cbi8vIFVzYWdlOlxuLy9cbi8vIHZhciB4b3I0MDk2ID0gcmVxdWlyZSgneG9yNDA5NicpO1xuLy8gcmFuZG9tID0geG9yNDA5NigxKTsgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWVkIHdpdGggaW50MzIgb3Igc3RyaW5nLlxuLy8gYXNzZXJ0LmVxdWFsKHJhbmRvbSgpLCAwLjE1MjA0MzY0NTA1Mzg1NDcpOyAvLyAoMCwgMSkgcmFuZ2UsIDUzIGJpdHMuXG4vLyBhc3NlcnQuZXF1YWwocmFuZG9tLmludDMyKCksIDE4MDY1MzQ4OTcpOyAgIC8vIHNpZ25lZCBpbnQzMiwgMzIgYml0cy5cbi8vXG4vLyBGb3Igbm9uemVybyBudW1lcmljIGtleXMsIHRoaXMgaW1wZWxlbWVudGF0aW9uIHByb3ZpZGVzIGEgc2VxdWVuY2Vcbi8vIGlkZW50aWNhbCB0byB0aGF0IGJ5IEJyZW50J3MgeG9yZ2VucyAzIGltcGxlbWVudGFpb24gaW4gQy4gIFRoaXNcbi8vIGltcGxlbWVudGF0aW9uIGFsc28gcHJvdmlkZXMgZm9yIGluaXRhbGl6aW5nIHRoZSBnZW5lcmF0b3Igd2l0aFxuLy8gc3RyaW5nIHNlZWRzLCBvciBmb3Igc2F2aW5nIGFuZCByZXN0b3JpbmcgdGhlIHN0YXRlIG9mIHRoZSBnZW5lcmF0b3IuXG4vL1xuLy8gT24gQ2hyb21lLCB0aGlzIHBybmcgYmVuY2htYXJrcyBhYm91dCAyLjEgdGltZXMgc2xvd2VyIHRoYW5cbi8vIEphdmFzY3JpcHQncyBidWlsdC1pbiBNYXRoLnJhbmRvbSgpLlxuXG4oZnVuY3Rpb24oZ2xvYmFsLCBtb2R1bGUsIGRlZmluZSkge1xuXG5mdW5jdGlvbiBYb3JHZW4oc2VlZCkge1xuICB2YXIgbWUgPSB0aGlzO1xuXG4gIC8vIFNldCB1cCBnZW5lcmF0b3IgZnVuY3Rpb24uXG4gIG1lLm5leHQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgdyA9IG1lLncsXG4gICAgICAgIFggPSBtZS5YLCBpID0gbWUuaSwgdCwgdjtcbiAgICAvLyBVcGRhdGUgV2V5bCBnZW5lcmF0b3IuXG4gICAgbWUudyA9IHcgPSAodyArIDB4NjFjODg2NDcpIHwgMDtcbiAgICAvLyBVcGRhdGUgeG9yIGdlbmVyYXRvci5cbiAgICB2ID0gWFsoaSArIDM0KSAmIDEyN107XG4gICAgdCA9IFhbaSA9ICgoaSArIDEpICYgMTI3KV07XG4gICAgdiBePSB2IDw8IDEzO1xuICAgIHQgXj0gdCA8PCAxNztcbiAgICB2IF49IHYgPj4+IDE1O1xuICAgIHQgXj0gdCA+Pj4gMTI7XG4gICAgLy8gVXBkYXRlIFhvciBnZW5lcmF0b3IgYXJyYXkgc3RhdGUuXG4gICAgdiA9IFhbaV0gPSB2IF4gdDtcbiAgICBtZS5pID0gaTtcbiAgICAvLyBSZXN1bHQgaXMgdGhlIGNvbWJpbmF0aW9uLlxuICAgIHJldHVybiAodiArICh3IF4gKHcgPj4+IDE2KSkpIHwgMDtcbiAgfTtcblxuICBmdW5jdGlvbiBpbml0KG1lLCBzZWVkKSB7XG4gICAgdmFyIHQsIHYsIGksIGosIHcsIFggPSBbXSwgbGltaXQgPSAxMjg7XG4gICAgaWYgKHNlZWQgPT09IChzZWVkIHwgMCkpIHtcbiAgICAgIC8vIE51bWVyaWMgc2VlZHMgaW5pdGlhbGl6ZSB2LCB3aGljaCBpcyB1c2VkIHRvIGdlbmVyYXRlcyBYLlxuICAgICAgdiA9IHNlZWQ7XG4gICAgICBzZWVkID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU3RyaW5nIHNlZWRzIGFyZSBtaXhlZCBpbnRvIHYgYW5kIFggb25lIGNoYXJhY3RlciBhdCBhIHRpbWUuXG4gICAgICBzZWVkID0gc2VlZCArICdcXDAnO1xuICAgICAgdiA9IDA7XG4gICAgICBsaW1pdCA9IE1hdGgubWF4KGxpbWl0LCBzZWVkLmxlbmd0aCk7XG4gICAgfVxuICAgIC8vIEluaXRpYWxpemUgY2lyY3VsYXIgYXJyYXkgYW5kIHdleWwgdmFsdWUuXG4gICAgZm9yIChpID0gMCwgaiA9IC0zMjsgaiA8IGxpbWl0OyArK2opIHtcbiAgICAgIC8vIFB1dCB0aGUgdW5pY29kZSBjaGFyYWN0ZXJzIGludG8gdGhlIGFycmF5LCBhbmQgc2h1ZmZsZSB0aGVtLlxuICAgICAgaWYgKHNlZWQpIHYgXj0gc2VlZC5jaGFyQ29kZUF0KChqICsgMzIpICUgc2VlZC5sZW5ndGgpO1xuICAgICAgLy8gQWZ0ZXIgMzIgc2h1ZmZsZXMsIHRha2UgdiBhcyB0aGUgc3RhcnRpbmcgdyB2YWx1ZS5cbiAgICAgIGlmIChqID09PSAwKSB3ID0gdjtcbiAgICAgIHYgXj0gdiA8PCAxMDtcbiAgICAgIHYgXj0gdiA+Pj4gMTU7XG4gICAgICB2IF49IHYgPDwgNDtcbiAgICAgIHYgXj0gdiA+Pj4gMTM7XG4gICAgICBpZiAoaiA+PSAwKSB7XG4gICAgICAgIHcgPSAodyArIDB4NjFjODg2NDcpIHwgMDsgICAgIC8vIFdleWwuXG4gICAgICAgIHQgPSAoWFtqICYgMTI3XSBePSAodiArIHcpKTsgIC8vIENvbWJpbmUgeG9yIGFuZCB3ZXlsIHRvIGluaXQgYXJyYXkuXG4gICAgICAgIGkgPSAoMCA9PSB0KSA/IGkgKyAxIDogMDsgICAgIC8vIENvdW50IHplcm9lcy5cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gV2UgaGF2ZSBkZXRlY3RlZCBhbGwgemVyb2VzOyBtYWtlIHRoZSBrZXkgbm9uemVyby5cbiAgICBpZiAoaSA+PSAxMjgpIHtcbiAgICAgIFhbKHNlZWQgJiYgc2VlZC5sZW5ndGggfHwgMCkgJiAxMjddID0gLTE7XG4gICAgfVxuICAgIC8vIFJ1biB0aGUgZ2VuZXJhdG9yIDUxMiB0aW1lcyB0byBmdXJ0aGVyIG1peCB0aGUgc3RhdGUgYmVmb3JlIHVzaW5nIGl0LlxuICAgIC8vIEZhY3RvcmluZyB0aGlzIGFzIGEgZnVuY3Rpb24gc2xvd3MgdGhlIG1haW4gZ2VuZXJhdG9yLCBzbyBpdCBpcyBqdXN0XG4gICAgLy8gdW5yb2xsZWQgaGVyZS4gIFRoZSB3ZXlsIGdlbmVyYXRvciBpcyBub3QgYWR2YW5jZWQgd2hpbGUgd2FybWluZyB1cC5cbiAgICBpID0gMTI3O1xuICAgIGZvciAoaiA9IDQgKiAxMjg7IGogPiAwOyAtLWopIHtcbiAgICAgIHYgPSBYWyhpICsgMzQpICYgMTI3XTtcbiAgICAgIHQgPSBYW2kgPSAoKGkgKyAxKSAmIDEyNyldO1xuICAgICAgdiBePSB2IDw8IDEzO1xuICAgICAgdCBePSB0IDw8IDE3O1xuICAgICAgdiBePSB2ID4+PiAxNTtcbiAgICAgIHQgXj0gdCA+Pj4gMTI7XG4gICAgICBYW2ldID0gdiBeIHQ7XG4gICAgfVxuICAgIC8vIFN0b3Jpbmcgc3RhdGUgYXMgb2JqZWN0IG1lbWJlcnMgaXMgZmFzdGVyIHRoYW4gdXNpbmcgY2xvc3VyZSB2YXJpYWJsZXMuXG4gICAgbWUudyA9IHc7XG4gICAgbWUuWCA9IFg7XG4gICAgbWUuaSA9IGk7XG4gIH1cblxuICBpbml0KG1lLCBzZWVkKTtcbn1cblxuZnVuY3Rpb24gY29weShmLCB0KSB7XG4gIHQuaSA9IGYuaTtcbiAgdC53ID0gZi53O1xuICB0LlggPSBmLlguc2xpY2UoKTtcbiAgcmV0dXJuIHQ7XG59O1xuXG5mdW5jdGlvbiBpbXBsKHNlZWQsIG9wdHMpIHtcbiAgaWYgKHNlZWQgPT0gbnVsbCkgc2VlZCA9ICsobmV3IERhdGUpO1xuICB2YXIgeGcgPSBuZXcgWG9yR2VuKHNlZWQpLFxuICAgICAgc3RhdGUgPSBvcHRzICYmIG9wdHMuc3RhdGUsXG4gICAgICBwcm5nID0gZnVuY3Rpb24oKSB7IHJldHVybiAoeGcubmV4dCgpID4+PiAwKSAvIDB4MTAwMDAwMDAwOyB9O1xuICBwcm5nLmRvdWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIGRvIHtcbiAgICAgIHZhciB0b3AgPSB4Zy5uZXh0KCkgPj4+IDExLFxuICAgICAgICAgIGJvdCA9ICh4Zy5uZXh0KCkgPj4+IDApIC8gMHgxMDAwMDAwMDAsXG4gICAgICAgICAgcmVzdWx0ID0gKHRvcCArIGJvdCkgLyAoMSA8PCAyMSk7XG4gICAgfSB3aGlsZSAocmVzdWx0ID09PSAwKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICBwcm5nLmludDMyID0geGcubmV4dDtcbiAgcHJuZy5xdWljayA9IHBybmc7XG4gIGlmIChzdGF0ZSkge1xuICAgIGlmIChzdGF0ZS5YKSBjb3B5KHN0YXRlLCB4Zyk7XG4gICAgcHJuZy5zdGF0ZSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gY29weSh4Zywge30pOyB9XG4gIH1cbiAgcmV0dXJuIHBybmc7XG59XG5cbmlmIChtb2R1bGUgJiYgbW9kdWxlLmV4cG9ydHMpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBpbXBsO1xufSBlbHNlIGlmIChkZWZpbmUgJiYgZGVmaW5lLmFtZCkge1xuICBkZWZpbmUoZnVuY3Rpb24oKSB7IHJldHVybiBpbXBsOyB9KTtcbn0gZWxzZSB7XG4gIHRoaXMueG9yNDA5NiA9IGltcGw7XG59XG5cbn0pKFxuICB0aGlzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aW5kb3cgb2JqZWN0IG9yIGdsb2JhbFxuICAodHlwZW9mIG1vZHVsZSkgPT0gJ29iamVjdCcgJiYgbW9kdWxlLCAgICAvLyBwcmVzZW50IGluIG5vZGUuanNcbiAgKHR5cGVvZiBkZWZpbmUpID09ICdmdW5jdGlvbicgJiYgZGVmaW5lICAgLy8gcHJlc2VudCB3aXRoIGFuIEFNRCBsb2FkZXJcbik7XG4iLCIvLyBBIEphdmFzY3JpcHQgaW1wbGVtZW50YWlvbiBvZiB0aGUgXCJ4b3JzaGlmdDdcIiBhbGdvcml0aG0gYnlcbi8vIEZyYW7Dp29pcyBQYW5uZXRvbiBhbmQgUGllcnJlIEwnZWN1eWVyOlxuLy8gXCJPbiB0aGUgWG9yZ3NoaWZ0IFJhbmRvbSBOdW1iZXIgR2VuZXJhdG9yc1wiXG4vLyBodHRwOi8vc2FsdWMuZW5nci51Y29ubi5lZHUvcmVmcy9jcnlwdG8vcm5nL3Bhbm5ldG9uMDVvbnRoZXhvcnNoaWZ0LnBkZlxuXG4oZnVuY3Rpb24oZ2xvYmFsLCBtb2R1bGUsIGRlZmluZSkge1xuXG5mdW5jdGlvbiBYb3JHZW4oc2VlZCkge1xuICB2YXIgbWUgPSB0aGlzO1xuXG4gIC8vIFNldCB1cCBnZW5lcmF0b3IgZnVuY3Rpb24uXG4gIG1lLm5leHQgPSBmdW5jdGlvbigpIHtcbiAgICAvLyBVcGRhdGUgeG9yIGdlbmVyYXRvci5cbiAgICB2YXIgWCA9IG1lLngsIGkgPSBtZS5pLCB0LCB2LCB3O1xuICAgIHQgPSBYW2ldOyB0IF49ICh0ID4+PiA3KTsgdiA9IHQgXiAodCA8PCAyNCk7XG4gICAgdCA9IFhbKGkgKyAxKSAmIDddOyB2IF49IHQgXiAodCA+Pj4gMTApO1xuICAgIHQgPSBYWyhpICsgMykgJiA3XTsgdiBePSB0IF4gKHQgPj4+IDMpO1xuICAgIHQgPSBYWyhpICsgNCkgJiA3XTsgdiBePSB0IF4gKHQgPDwgNyk7XG4gICAgdCA9IFhbKGkgKyA3KSAmIDddOyB0ID0gdCBeICh0IDw8IDEzKTsgdiBePSB0IF4gKHQgPDwgOSk7XG4gICAgWFtpXSA9IHY7XG4gICAgbWUuaSA9IChpICsgMSkgJiA3O1xuICAgIHJldHVybiB2O1xuICB9O1xuXG4gIGZ1bmN0aW9uIGluaXQobWUsIHNlZWQpIHtcbiAgICB2YXIgaiwgdywgWCA9IFtdO1xuXG4gICAgaWYgKHNlZWQgPT09IChzZWVkIHwgMCkpIHtcbiAgICAgIC8vIFNlZWQgc3RhdGUgYXJyYXkgdXNpbmcgYSAzMi1iaXQgaW50ZWdlci5cbiAgICAgIHcgPSBYWzBdID0gc2VlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU2VlZCBzdGF0ZSB1c2luZyBhIHN0cmluZy5cbiAgICAgIHNlZWQgPSAnJyArIHNlZWQ7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgc2VlZC5sZW5ndGg7ICsraikge1xuICAgICAgICBYW2ogJiA3XSA9IChYW2ogJiA3XSA8PCAxNSkgXlxuICAgICAgICAgICAgKHNlZWQuY2hhckNvZGVBdChqKSArIFhbKGogKyAxKSAmIDddIDw8IDEzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gRW5mb3JjZSBhbiBhcnJheSBsZW5ndGggb2YgOCwgbm90IGFsbCB6ZXJvZXMuXG4gICAgd2hpbGUgKFgubGVuZ3RoIDwgOCkgWC5wdXNoKDApO1xuICAgIGZvciAoaiA9IDA7IGogPCA4ICYmIFhbal0gPT09IDA7ICsraik7XG4gICAgaWYgKGogPT0gOCkgdyA9IFhbN10gPSAtMTsgZWxzZSB3ID0gWFtqXTtcblxuICAgIG1lLnggPSBYO1xuICAgIG1lLmkgPSAwO1xuXG4gICAgLy8gRGlzY2FyZCBhbiBpbml0aWFsIDI1NiB2YWx1ZXMuXG4gICAgZm9yIChqID0gMjU2OyBqID4gMDsgLS1qKSB7XG4gICAgICBtZS5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgaW5pdChtZSwgc2VlZCk7XG59XG5cbmZ1bmN0aW9uIGNvcHkoZiwgdCkge1xuICB0LnggPSBmLnguc2xpY2UoKTtcbiAgdC5pID0gZi5pO1xuICByZXR1cm4gdDtcbn1cblxuZnVuY3Rpb24gaW1wbChzZWVkLCBvcHRzKSB7XG4gIGlmIChzZWVkID09IG51bGwpIHNlZWQgPSArKG5ldyBEYXRlKTtcbiAgdmFyIHhnID0gbmV3IFhvckdlbihzZWVkKSxcbiAgICAgIHN0YXRlID0gb3B0cyAmJiBvcHRzLnN0YXRlLFxuICAgICAgcHJuZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gKHhnLm5leHQoKSA+Pj4gMCkgLyAweDEwMDAwMDAwMDsgfTtcbiAgcHJuZy5kb3VibGUgPSBmdW5jdGlvbigpIHtcbiAgICBkbyB7XG4gICAgICB2YXIgdG9wID0geGcubmV4dCgpID4+PiAxMSxcbiAgICAgICAgICBib3QgPSAoeGcubmV4dCgpID4+PiAwKSAvIDB4MTAwMDAwMDAwLFxuICAgICAgICAgIHJlc3VsdCA9ICh0b3AgKyBib3QpIC8gKDEgPDwgMjEpO1xuICAgIH0gd2hpbGUgKHJlc3VsdCA9PT0gMCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbiAgcHJuZy5pbnQzMiA9IHhnLm5leHQ7XG4gIHBybmcucXVpY2sgPSBwcm5nO1xuICBpZiAoc3RhdGUpIHtcbiAgICBpZiAoc3RhdGUueCkgY29weShzdGF0ZSwgeGcpO1xuICAgIHBybmcuc3RhdGUgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGNvcHkoeGcsIHt9KTsgfVxuICB9XG4gIHJldHVybiBwcm5nO1xufVxuXG5pZiAobW9kdWxlICYmIG1vZHVsZS5leHBvcnRzKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gaW1wbDtcbn0gZWxzZSBpZiAoZGVmaW5lICYmIGRlZmluZS5hbWQpIHtcbiAgZGVmaW5lKGZ1bmN0aW9uKCkgeyByZXR1cm4gaW1wbDsgfSk7XG59IGVsc2Uge1xuICB0aGlzLnhvcnNoaWZ0NyA9IGltcGw7XG59XG5cbn0pKFxuICB0aGlzLFxuICAodHlwZW9mIG1vZHVsZSkgPT0gJ29iamVjdCcgJiYgbW9kdWxlLCAgICAvLyBwcmVzZW50IGluIG5vZGUuanNcbiAgKHR5cGVvZiBkZWZpbmUpID09ICdmdW5jdGlvbicgJiYgZGVmaW5lICAgLy8gcHJlc2VudCB3aXRoIGFuIEFNRCBsb2FkZXJcbik7XG5cbiIsIi8vIEEgSmF2YXNjcmlwdCBpbXBsZW1lbnRhaW9uIG9mIHRoZSBcInhvcndvd1wiIHBybmcgYWxnb3JpdGhtIGJ5XG4vLyBHZW9yZ2UgTWFyc2FnbGlhLiAgU2VlIGh0dHA6Ly93d3cuanN0YXRzb2Z0Lm9yZy92MDgvaTE0L3BhcGVyXG5cbihmdW5jdGlvbihnbG9iYWwsIG1vZHVsZSwgZGVmaW5lKSB7XG5cbmZ1bmN0aW9uIFhvckdlbihzZWVkKSB7XG4gIHZhciBtZSA9IHRoaXMsIHN0cnNlZWQgPSAnJztcblxuICAvLyBTZXQgdXAgZ2VuZXJhdG9yIGZ1bmN0aW9uLlxuICBtZS5uZXh0ID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHQgPSAobWUueCBeIChtZS54ID4+PiAyKSk7XG4gICAgbWUueCA9IG1lLnk7IG1lLnkgPSBtZS56OyBtZS56ID0gbWUudzsgbWUudyA9IG1lLnY7XG4gICAgcmV0dXJuIChtZS5kID0gKG1lLmQgKyAzNjI0MzcgfCAwKSkgK1xuICAgICAgIChtZS52ID0gKG1lLnYgXiAobWUudiA8PCA0KSkgXiAodCBeICh0IDw8IDEpKSkgfCAwO1xuICB9O1xuXG4gIG1lLnggPSAwO1xuICBtZS55ID0gMDtcbiAgbWUueiA9IDA7XG4gIG1lLncgPSAwO1xuICBtZS52ID0gMDtcblxuICBpZiAoc2VlZCA9PT0gKHNlZWQgfCAwKSkge1xuICAgIC8vIEludGVnZXIgc2VlZC5cbiAgICBtZS54ID0gc2VlZDtcbiAgfSBlbHNlIHtcbiAgICAvLyBTdHJpbmcgc2VlZC5cbiAgICBzdHJzZWVkICs9IHNlZWQ7XG4gIH1cblxuICAvLyBNaXggaW4gc3RyaW5nIHNlZWQsIHRoZW4gZGlzY2FyZCBhbiBpbml0aWFsIGJhdGNoIG9mIDY0IHZhbHVlcy5cbiAgZm9yICh2YXIgayA9IDA7IGsgPCBzdHJzZWVkLmxlbmd0aCArIDY0OyBrKyspIHtcbiAgICBtZS54IF49IHN0cnNlZWQuY2hhckNvZGVBdChrKSB8IDA7XG4gICAgaWYgKGsgPT0gc3Ryc2VlZC5sZW5ndGgpIHtcbiAgICAgIG1lLmQgPSBtZS54IDw8IDEwIF4gbWUueCA+Pj4gNDtcbiAgICB9XG4gICAgbWUubmV4dCgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvcHkoZiwgdCkge1xuICB0LnggPSBmLng7XG4gIHQueSA9IGYueTtcbiAgdC56ID0gZi56O1xuICB0LncgPSBmLnc7XG4gIHQudiA9IGYudjtcbiAgdC5kID0gZi5kO1xuICByZXR1cm4gdDtcbn1cblxuZnVuY3Rpb24gaW1wbChzZWVkLCBvcHRzKSB7XG4gIHZhciB4ZyA9IG5ldyBYb3JHZW4oc2VlZCksXG4gICAgICBzdGF0ZSA9IG9wdHMgJiYgb3B0cy5zdGF0ZSxcbiAgICAgIHBybmcgPSBmdW5jdGlvbigpIHsgcmV0dXJuICh4Zy5uZXh0KCkgPj4+IDApIC8gMHgxMDAwMDAwMDA7IH07XG4gIHBybmcuZG91YmxlID0gZnVuY3Rpb24oKSB7XG4gICAgZG8ge1xuICAgICAgdmFyIHRvcCA9IHhnLm5leHQoKSA+Pj4gMTEsXG4gICAgICAgICAgYm90ID0gKHhnLm5leHQoKSA+Pj4gMCkgLyAweDEwMDAwMDAwMCxcbiAgICAgICAgICByZXN1bHQgPSAodG9wICsgYm90KSAvICgxIDw8IDIxKTtcbiAgICB9IHdoaWxlIChyZXN1bHQgPT09IDApO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIHBybmcuaW50MzIgPSB4Zy5uZXh0O1xuICBwcm5nLnF1aWNrID0gcHJuZztcbiAgaWYgKHN0YXRlKSB7XG4gICAgaWYgKHR5cGVvZihzdGF0ZSkgPT0gJ29iamVjdCcpIGNvcHkoc3RhdGUsIHhnKTtcbiAgICBwcm5nLnN0YXRlID0gZnVuY3Rpb24oKSB7IHJldHVybiBjb3B5KHhnLCB7fSk7IH1cbiAgfVxuICByZXR1cm4gcHJuZztcbn1cblxuaWYgKG1vZHVsZSAmJiBtb2R1bGUuZXhwb3J0cykge1xuICBtb2R1bGUuZXhwb3J0cyA9IGltcGw7XG59IGVsc2UgaWYgKGRlZmluZSAmJiBkZWZpbmUuYW1kKSB7XG4gIGRlZmluZShmdW5jdGlvbigpIHsgcmV0dXJuIGltcGw7IH0pO1xufSBlbHNlIHtcbiAgdGhpcy54b3J3b3cgPSBpbXBsO1xufVxuXG59KShcbiAgdGhpcyxcbiAgKHR5cGVvZiBtb2R1bGUpID09ICdvYmplY3QnICYmIG1vZHVsZSwgICAgLy8gcHJlc2VudCBpbiBub2RlLmpzXG4gICh0eXBlb2YgZGVmaW5lKSA9PSAnZnVuY3Rpb24nICYmIGRlZmluZSAgIC8vIHByZXNlbnQgd2l0aCBhbiBBTUQgbG9hZGVyXG4pO1xuXG5cbiIsIi8qXG5Db3B5cmlnaHQgMjAxOSBEYXZpZCBCYXUuXG5cblBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZ1xuYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG5cIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbndpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbmRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0b1xucGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvXG50aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cblRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlXG5pbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cblxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCxcbkVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULlxuSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTllcbkNMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsXG5UT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRVxuU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbiovXG5cbihmdW5jdGlvbiAoZ2xvYmFsLCBwb29sLCBtYXRoKSB7XG4vL1xuLy8gVGhlIGZvbGxvd2luZyBjb25zdGFudHMgYXJlIHJlbGF0ZWQgdG8gSUVFRSA3NTQgbGltaXRzLlxuLy9cblxudmFyIHdpZHRoID0gMjU2LCAgICAgICAgLy8gZWFjaCBSQzQgb3V0cHV0IGlzIDAgPD0geCA8IDI1NlxuICAgIGNodW5rcyA9IDYsICAgICAgICAgLy8gYXQgbGVhc3Qgc2l4IFJDNCBvdXRwdXRzIGZvciBlYWNoIGRvdWJsZVxuICAgIGRpZ2l0cyA9IDUyLCAgICAgICAgLy8gdGhlcmUgYXJlIDUyIHNpZ25pZmljYW50IGRpZ2l0cyBpbiBhIGRvdWJsZVxuICAgIHJuZ25hbWUgPSAncmFuZG9tJywgLy8gcm5nbmFtZTogbmFtZSBmb3IgTWF0aC5yYW5kb20gYW5kIE1hdGguc2VlZHJhbmRvbVxuICAgIHN0YXJ0ZGVub20gPSBtYXRoLnBvdyh3aWR0aCwgY2h1bmtzKSxcbiAgICBzaWduaWZpY2FuY2UgPSBtYXRoLnBvdygyLCBkaWdpdHMpLFxuICAgIG92ZXJmbG93ID0gc2lnbmlmaWNhbmNlICogMixcbiAgICBtYXNrID0gd2lkdGggLSAxLFxuICAgIG5vZGVjcnlwdG87ICAgICAgICAgLy8gbm9kZS5qcyBjcnlwdG8gbW9kdWxlLCBpbml0aWFsaXplZCBhdCB0aGUgYm90dG9tLlxuXG4vL1xuLy8gc2VlZHJhbmRvbSgpXG4vLyBUaGlzIGlzIHRoZSBzZWVkcmFuZG9tIGZ1bmN0aW9uIGRlc2NyaWJlZCBhYm92ZS5cbi8vXG5mdW5jdGlvbiBzZWVkcmFuZG9tKHNlZWQsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHZhciBrZXkgPSBbXTtcbiAgb3B0aW9ucyA9IChvcHRpb25zID09IHRydWUpID8geyBlbnRyb3B5OiB0cnVlIH0gOiAob3B0aW9ucyB8fCB7fSk7XG5cbiAgLy8gRmxhdHRlbiB0aGUgc2VlZCBzdHJpbmcgb3IgYnVpbGQgb25lIGZyb20gbG9jYWwgZW50cm9weSBpZiBuZWVkZWQuXG4gIHZhciBzaG9ydHNlZWQgPSBtaXhrZXkoZmxhdHRlbihcbiAgICBvcHRpb25zLmVudHJvcHkgPyBbc2VlZCwgdG9zdHJpbmcocG9vbCldIDpcbiAgICAoc2VlZCA9PSBudWxsKSA/IGF1dG9zZWVkKCkgOiBzZWVkLCAzKSwga2V5KTtcblxuICAvLyBVc2UgdGhlIHNlZWQgdG8gaW5pdGlhbGl6ZSBhbiBBUkM0IGdlbmVyYXRvci5cbiAgdmFyIGFyYzQgPSBuZXcgQVJDNChrZXkpO1xuXG4gIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIHJhbmRvbSBkb3VibGUgaW4gWzAsIDEpIHRoYXQgY29udGFpbnNcbiAgLy8gcmFuZG9tbmVzcyBpbiBldmVyeSBiaXQgb2YgdGhlIG1hbnRpc3NhIG9mIHRoZSBJRUVFIDc1NCB2YWx1ZS5cbiAgdmFyIHBybmcgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgbiA9IGFyYzQuZyhjaHVua3MpLCAgICAgICAgICAgICAvLyBTdGFydCB3aXRoIGEgbnVtZXJhdG9yIG4gPCAyIF4gNDhcbiAgICAgICAgZCA9IHN0YXJ0ZGVub20sICAgICAgICAgICAgICAgICAvLyAgIGFuZCBkZW5vbWluYXRvciBkID0gMiBeIDQ4LlxuICAgICAgICB4ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgYW5kIG5vICdleHRyYSBsYXN0IGJ5dGUnLlxuICAgIHdoaWxlIChuIDwgc2lnbmlmaWNhbmNlKSB7ICAgICAgICAgIC8vIEZpbGwgdXAgYWxsIHNpZ25pZmljYW50IGRpZ2l0cyBieVxuICAgICAgbiA9IChuICsgeCkgKiB3aWR0aDsgICAgICAgICAgICAgIC8vICAgc2hpZnRpbmcgbnVtZXJhdG9yIGFuZFxuICAgICAgZCAqPSB3aWR0aDsgICAgICAgICAgICAgICAgICAgICAgIC8vICAgZGVub21pbmF0b3IgYW5kIGdlbmVyYXRpbmcgYVxuICAgICAgeCA9IGFyYzQuZygxKTsgICAgICAgICAgICAgICAgICAgIC8vICAgbmV3IGxlYXN0LXNpZ25pZmljYW50LWJ5dGUuXG4gICAgfVxuICAgIHdoaWxlIChuID49IG92ZXJmbG93KSB7ICAgICAgICAgICAgIC8vIFRvIGF2b2lkIHJvdW5kaW5nIHVwLCBiZWZvcmUgYWRkaW5nXG4gICAgICBuIC89IDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBsYXN0IGJ5dGUsIHNoaWZ0IGV2ZXJ5dGhpbmdcbiAgICAgIGQgLz0gMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHJpZ2h0IHVzaW5nIGludGVnZXIgbWF0aCB1bnRpbFxuICAgICAgeCA+Pj49IDE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgd2UgaGF2ZSBleGFjdGx5IHRoZSBkZXNpcmVkIGJpdHMuXG4gICAgfVxuICAgIHJldHVybiAobiArIHgpIC8gZDsgICAgICAgICAgICAgICAgIC8vIEZvcm0gdGhlIG51bWJlciB3aXRoaW4gWzAsIDEpLlxuICB9O1xuXG4gIHBybmcuaW50MzIgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGFyYzQuZyg0KSB8IDA7IH1cbiAgcHJuZy5xdWljayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJjNC5nKDQpIC8gMHgxMDAwMDAwMDA7IH1cbiAgcHJuZy5kb3VibGUgPSBwcm5nO1xuXG4gIC8vIE1peCB0aGUgcmFuZG9tbmVzcyBpbnRvIGFjY3VtdWxhdGVkIGVudHJvcHkuXG4gIG1peGtleSh0b3N0cmluZyhhcmM0LlMpLCBwb29sKTtcblxuICAvLyBDYWxsaW5nIGNvbnZlbnRpb246IHdoYXQgdG8gcmV0dXJuIGFzIGEgZnVuY3Rpb24gb2YgcHJuZywgc2VlZCwgaXNfbWF0aC5cbiAgcmV0dXJuIChvcHRpb25zLnBhc3MgfHwgY2FsbGJhY2sgfHxcbiAgICAgIGZ1bmN0aW9uKHBybmcsIHNlZWQsIGlzX21hdGhfY2FsbCwgc3RhdGUpIHtcbiAgICAgICAgaWYgKHN0YXRlKSB7XG4gICAgICAgICAgLy8gTG9hZCB0aGUgYXJjNCBzdGF0ZSBmcm9tIHRoZSBnaXZlbiBzdGF0ZSBpZiBpdCBoYXMgYW4gUyBhcnJheS5cbiAgICAgICAgICBpZiAoc3RhdGUuUykgeyBjb3B5KHN0YXRlLCBhcmM0KTsgfVxuICAgICAgICAgIC8vIE9ubHkgcHJvdmlkZSB0aGUgLnN0YXRlIG1ldGhvZCBpZiByZXF1ZXN0ZWQgdmlhIG9wdGlvbnMuc3RhdGUuXG4gICAgICAgICAgcHJuZy5zdGF0ZSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gY29weShhcmM0LCB7fSk7IH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIGNhbGxlZCBhcyBhIG1ldGhvZCBvZiBNYXRoIChNYXRoLnNlZWRyYW5kb20oKSksIG11dGF0ZVxuICAgICAgICAvLyBNYXRoLnJhbmRvbSBiZWNhdXNlIHRoYXQgaXMgaG93IHNlZWRyYW5kb20uanMgaGFzIHdvcmtlZCBzaW5jZSB2MS4wLlxuICAgICAgICBpZiAoaXNfbWF0aF9jYWxsKSB7IG1hdGhbcm5nbmFtZV0gPSBwcm5nOyByZXR1cm4gc2VlZDsgfVxuXG4gICAgICAgIC8vIE90aGVyd2lzZSwgaXQgaXMgYSBuZXdlciBjYWxsaW5nIGNvbnZlbnRpb24sIHNvIHJldHVybiB0aGVcbiAgICAgICAgLy8gcHJuZyBkaXJlY3RseS5cbiAgICAgICAgZWxzZSByZXR1cm4gcHJuZztcbiAgICAgIH0pKFxuICBwcm5nLFxuICBzaG9ydHNlZWQsXG4gICdnbG9iYWwnIGluIG9wdGlvbnMgPyBvcHRpb25zLmdsb2JhbCA6ICh0aGlzID09IG1hdGgpLFxuICBvcHRpb25zLnN0YXRlKTtcbn1cblxuLy9cbi8vIEFSQzRcbi8vXG4vLyBBbiBBUkM0IGltcGxlbWVudGF0aW9uLiAgVGhlIGNvbnN0cnVjdG9yIHRha2VzIGEga2V5IGluIHRoZSBmb3JtIG9mXG4vLyBhbiBhcnJheSBvZiBhdCBtb3N0ICh3aWR0aCkgaW50ZWdlcnMgdGhhdCBzaG91bGQgYmUgMCA8PSB4IDwgKHdpZHRoKS5cbi8vXG4vLyBUaGUgZyhjb3VudCkgbWV0aG9kIHJldHVybnMgYSBwc2V1ZG9yYW5kb20gaW50ZWdlciB0aGF0IGNvbmNhdGVuYXRlc1xuLy8gdGhlIG5leHQgKGNvdW50KSBvdXRwdXRzIGZyb20gQVJDNC4gIEl0cyByZXR1cm4gdmFsdWUgaXMgYSBudW1iZXIgeFxuLy8gdGhhdCBpcyBpbiB0aGUgcmFuZ2UgMCA8PSB4IDwgKHdpZHRoIF4gY291bnQpLlxuLy9cbmZ1bmN0aW9uIEFSQzQoa2V5KSB7XG4gIHZhciB0LCBrZXlsZW4gPSBrZXkubGVuZ3RoLFxuICAgICAgbWUgPSB0aGlzLCBpID0gMCwgaiA9IG1lLmkgPSBtZS5qID0gMCwgcyA9IG1lLlMgPSBbXTtcblxuICAvLyBUaGUgZW1wdHkga2V5IFtdIGlzIHRyZWF0ZWQgYXMgWzBdLlxuICBpZiAoIWtleWxlbikgeyBrZXkgPSBba2V5bGVuKytdOyB9XG5cbiAgLy8gU2V0IHVwIFMgdXNpbmcgdGhlIHN0YW5kYXJkIGtleSBzY2hlZHVsaW5nIGFsZ29yaXRobS5cbiAgd2hpbGUgKGkgPCB3aWR0aCkge1xuICAgIHNbaV0gPSBpKys7XG4gIH1cbiAgZm9yIChpID0gMDsgaSA8IHdpZHRoOyBpKyspIHtcbiAgICBzW2ldID0gc1tqID0gbWFzayAmIChqICsga2V5W2kgJSBrZXlsZW5dICsgKHQgPSBzW2ldKSldO1xuICAgIHNbal0gPSB0O1xuICB9XG5cbiAgLy8gVGhlIFwiZ1wiIG1ldGhvZCByZXR1cm5zIHRoZSBuZXh0IChjb3VudCkgb3V0cHV0cyBhcyBvbmUgbnVtYmVyLlxuICAobWUuZyA9IGZ1bmN0aW9uKGNvdW50KSB7XG4gICAgLy8gVXNpbmcgaW5zdGFuY2UgbWVtYmVycyBpbnN0ZWFkIG9mIGNsb3N1cmUgc3RhdGUgbmVhcmx5IGRvdWJsZXMgc3BlZWQuXG4gICAgdmFyIHQsIHIgPSAwLFxuICAgICAgICBpID0gbWUuaSwgaiA9IG1lLmosIHMgPSBtZS5TO1xuICAgIHdoaWxlIChjb3VudC0tKSB7XG4gICAgICB0ID0gc1tpID0gbWFzayAmIChpICsgMSldO1xuICAgICAgciA9IHIgKiB3aWR0aCArIHNbbWFzayAmICgoc1tpXSA9IHNbaiA9IG1hc2sgJiAoaiArIHQpXSkgKyAoc1tqXSA9IHQpKV07XG4gICAgfVxuICAgIG1lLmkgPSBpOyBtZS5qID0gajtcbiAgICByZXR1cm4gcjtcbiAgICAvLyBGb3Igcm9idXN0IHVucHJlZGljdGFiaWxpdHksIHRoZSBmdW5jdGlvbiBjYWxsIGJlbG93IGF1dG9tYXRpY2FsbHlcbiAgICAvLyBkaXNjYXJkcyBhbiBpbml0aWFsIGJhdGNoIG9mIHZhbHVlcy4gIFRoaXMgaXMgY2FsbGVkIFJDNC1kcm9wWzI1Nl0uXG4gICAgLy8gU2VlIGh0dHA6Ly9nb29nbGUuY29tL3NlYXJjaD9xPXJzYStmbHVocmVyK3Jlc3BvbnNlJmJ0bklcbiAgfSkod2lkdGgpO1xufVxuXG4vL1xuLy8gY29weSgpXG4vLyBDb3BpZXMgaW50ZXJuYWwgc3RhdGUgb2YgQVJDNCB0byBvciBmcm9tIGEgcGxhaW4gb2JqZWN0LlxuLy9cbmZ1bmN0aW9uIGNvcHkoZiwgdCkge1xuICB0LmkgPSBmLmk7XG4gIHQuaiA9IGYuajtcbiAgdC5TID0gZi5TLnNsaWNlKCk7XG4gIHJldHVybiB0O1xufTtcblxuLy9cbi8vIGZsYXR0ZW4oKVxuLy8gQ29udmVydHMgYW4gb2JqZWN0IHRyZWUgdG8gbmVzdGVkIGFycmF5cyBvZiBzdHJpbmdzLlxuLy9cbmZ1bmN0aW9uIGZsYXR0ZW4ob2JqLCBkZXB0aCkge1xuICB2YXIgcmVzdWx0ID0gW10sIHR5cCA9ICh0eXBlb2Ygb2JqKSwgcHJvcDtcbiAgaWYgKGRlcHRoICYmIHR5cCA9PSAnb2JqZWN0Jykge1xuICAgIGZvciAocHJvcCBpbiBvYmopIHtcbiAgICAgIHRyeSB7IHJlc3VsdC5wdXNoKGZsYXR0ZW4ob2JqW3Byb3BdLCBkZXB0aCAtIDEpKTsgfSBjYXRjaCAoZSkge31cbiAgICB9XG4gIH1cbiAgcmV0dXJuIChyZXN1bHQubGVuZ3RoID8gcmVzdWx0IDogdHlwID09ICdzdHJpbmcnID8gb2JqIDogb2JqICsgJ1xcMCcpO1xufVxuXG4vL1xuLy8gbWl4a2V5KClcbi8vIE1peGVzIGEgc3RyaW5nIHNlZWQgaW50byBhIGtleSB0aGF0IGlzIGFuIGFycmF5IG9mIGludGVnZXJzLCBhbmRcbi8vIHJldHVybnMgYSBzaG9ydGVuZWQgc3RyaW5nIHNlZWQgdGhhdCBpcyBlcXVpdmFsZW50IHRvIHRoZSByZXN1bHQga2V5LlxuLy9cbmZ1bmN0aW9uIG1peGtleShzZWVkLCBrZXkpIHtcbiAgdmFyIHN0cmluZ3NlZWQgPSBzZWVkICsgJycsIHNtZWFyLCBqID0gMDtcbiAgd2hpbGUgKGogPCBzdHJpbmdzZWVkLmxlbmd0aCkge1xuICAgIGtleVttYXNrICYgal0gPVxuICAgICAgbWFzayAmICgoc21lYXIgXj0ga2V5W21hc2sgJiBqXSAqIDE5KSArIHN0cmluZ3NlZWQuY2hhckNvZGVBdChqKyspKTtcbiAgfVxuICByZXR1cm4gdG9zdHJpbmcoa2V5KTtcbn1cblxuLy9cbi8vIGF1dG9zZWVkKClcbi8vIFJldHVybnMgYW4gb2JqZWN0IGZvciBhdXRvc2VlZGluZywgdXNpbmcgd2luZG93LmNyeXB0byBhbmQgTm9kZSBjcnlwdG9cbi8vIG1vZHVsZSBpZiBhdmFpbGFibGUuXG4vL1xuZnVuY3Rpb24gYXV0b3NlZWQoKSB7XG4gIHRyeSB7XG4gICAgdmFyIG91dDtcbiAgICBpZiAobm9kZWNyeXB0byAmJiAob3V0ID0gbm9kZWNyeXB0by5yYW5kb21CeXRlcykpIHtcbiAgICAgIC8vIFRoZSB1c2Ugb2YgJ291dCcgdG8gcmVtZW1iZXIgcmFuZG9tQnl0ZXMgbWFrZXMgdGlnaHQgbWluaWZpZWQgY29kZS5cbiAgICAgIG91dCA9IG91dCh3aWR0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCA9IG5ldyBVaW50OEFycmF5KHdpZHRoKTtcbiAgICAgIChnbG9iYWwuY3J5cHRvIHx8IGdsb2JhbC5tc0NyeXB0bykuZ2V0UmFuZG9tVmFsdWVzKG91dCk7XG4gICAgfVxuICAgIHJldHVybiB0b3N0cmluZyhvdXQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdmFyIGJyb3dzZXIgPSBnbG9iYWwubmF2aWdhdG9yLFxuICAgICAgICBwbHVnaW5zID0gYnJvd3NlciAmJiBicm93c2VyLnBsdWdpbnM7XG4gICAgcmV0dXJuIFsrbmV3IERhdGUsIGdsb2JhbCwgcGx1Z2lucywgZ2xvYmFsLnNjcmVlbiwgdG9zdHJpbmcocG9vbCldO1xuICB9XG59XG5cbi8vXG4vLyB0b3N0cmluZygpXG4vLyBDb252ZXJ0cyBhbiBhcnJheSBvZiBjaGFyY29kZXMgdG8gYSBzdHJpbmdcbi8vXG5mdW5jdGlvbiB0b3N0cmluZyhhKSB7XG4gIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KDAsIGEpO1xufVxuXG4vL1xuLy8gV2hlbiBzZWVkcmFuZG9tLmpzIGlzIGxvYWRlZCwgd2UgaW1tZWRpYXRlbHkgbWl4IGEgZmV3IGJpdHNcbi8vIGZyb20gdGhlIGJ1aWx0LWluIFJORyBpbnRvIHRoZSBlbnRyb3B5IHBvb2wuICBCZWNhdXNlIHdlIGRvXG4vLyBub3Qgd2FudCB0byBpbnRlcmZlcmUgd2l0aCBkZXRlcm1pbmlzdGljIFBSTkcgc3RhdGUgbGF0ZXIsXG4vLyBzZWVkcmFuZG9tIHdpbGwgbm90IGNhbGwgbWF0aC5yYW5kb20gb24gaXRzIG93biBhZ2FpbiBhZnRlclxuLy8gaW5pdGlhbGl6YXRpb24uXG4vL1xubWl4a2V5KG1hdGgucmFuZG9tKCksIHBvb2wpO1xuXG4vL1xuLy8gTm9kZWpzIGFuZCBBTUQgc3VwcG9ydDogZXhwb3J0IHRoZSBpbXBsZW1lbnRhdGlvbiBhcyBhIG1vZHVsZSB1c2luZ1xuLy8gZWl0aGVyIGNvbnZlbnRpb24uXG4vL1xuaWYgKCh0eXBlb2YgbW9kdWxlKSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHNlZWRyYW5kb207XG4gIC8vIFdoZW4gaW4gbm9kZS5qcywgdHJ5IHVzaW5nIGNyeXB0byBwYWNrYWdlIGZvciBhdXRvc2VlZGluZy5cbiAgdHJ5IHtcbiAgICBub2RlY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJyk7XG4gIH0gY2F0Y2ggKGV4KSB7fVxufSBlbHNlIGlmICgodHlwZW9mIGRlZmluZSkgPT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gIGRlZmluZShmdW5jdGlvbigpIHsgcmV0dXJuIHNlZWRyYW5kb207IH0pO1xufSBlbHNlIHtcbiAgLy8gV2hlbiBpbmNsdWRlZCBhcyBhIHBsYWluIHNjcmlwdCwgc2V0IHVwIE1hdGguc2VlZHJhbmRvbSBnbG9iYWwuXG4gIG1hdGhbJ3NlZWQnICsgcm5nbmFtZV0gPSBzZWVkcmFuZG9tO1xufVxuXG5cbi8vIEVuZCBhbm9ueW1vdXMgc2NvcGUsIGFuZCBwYXNzIGluaXRpYWwgdmFsdWVzLlxufSkoXG4gIC8vIGdsb2JhbDogYHNlbGZgIGluIGJyb3dzZXJzIChpbmNsdWRpbmcgc3RyaWN0IG1vZGUgYW5kIHdlYiB3b3JrZXJzKSxcbiAgLy8gb3RoZXJ3aXNlIGB0aGlzYCBpbiBOb2RlIGFuZCBvdGhlciBlbnZpcm9ubWVudHNcbiAgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJykgPyBzZWxmIDogdGhpcyxcbiAgW10sICAgICAvLyBwb29sOiBlbnRyb3B5IHBvb2wgc3RhcnRzIGVtcHR5XG4gIE1hdGggICAgLy8gbWF0aDogcGFja2FnZSBjb250YWluaW5nIHJhbmRvbSwgcG93LCBhbmQgc2VlZHJhbmRvbVxuKTtcbiJdLCJuYW1lcyI6WyJfc2NyaXB0RGlyIiwiZXhwb3J0Q3BwRGJzY2FuTGliIiwiZG9jdW1lbnQiLCJjdXJyZW50U2NyaXB0Iiwic3JjIiwidW5kZWZpbmVkIiwicmVhZHlQcm9taXNlUmVzb2x2ZSIsInJlYWR5UHJvbWlzZVJlamVjdCIsIk1vZHVsZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicmVhZEJpbmFyeSIsIm1vZHVsZU92ZXJyaWRlcyIsIk9iamVjdCIsImFzc2lnbiIsIkVOVklST05NRU5UX0lTX1dFQiIsIndpbmRvdyIsIkVOVklST05NRU5UX0lTX1dPUktFUiIsImltcG9ydFNjcmlwdHMiLCJzY3JpcHREaXJlY3RvcnkiLCJwcm9jZXNzIiwidmVyc2lvbnMiLCJub2RlIiwic2VsZiIsImxvY2F0aW9uIiwiaHJlZiIsImluZGV4T2YiLCJzdWJzdHIiLCJyZXBsYWNlIiwibGFzdEluZGV4T2YiLCJ1cmwiLCJ4aHIiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJyZXNwb25zZVR5cGUiLCJzZW5kIiwiVWludDhBcnJheSIsImNvbnNvbGUiLCJsb2ciLCJiaW5kIiwid2FzbUJpbmFyeSIsIndhc21NZW1vcnkiLCJlcnIiLCJ3YXJuIiwiV2ViQXNzZW1ibHkiLCJhYm9ydCIsIkhFQVA4IiwiSEVBUFU4IiwiSEVBUFUzMiIsIkFCT1JUIiwidXBkYXRlTWVtb3J5Vmlld3MiLCJiIiwiYnVmZmVyIiwiSW50OEFycmF5IiwiSW50MTZBcnJheSIsIkludDMyQXJyYXkiLCJVaW50MTZBcnJheSIsIlVpbnQzMkFycmF5IiwiRmxvYXQzMkFycmF5IiwiRmxvYXQ2NEFycmF5IiwiX19BVFBSRVJVTl9fIiwiX19BVElOSVRfXyIsIl9fQVRQT1NUUlVOX18iLCJydW5EZXBlbmRlbmNpZXMiLCJydW5EZXBlbmRlbmN5V2F0Y2hlciIsImRlcGVuZGVuY2llc0Z1bGZpbGxlZCIsIndoYXQiLCJlIiwiUnVudGltZUVycm9yIiwid2FzbUJpbmFyeUZpbGUiLCJwYXRoIiwiaXNEYXRhVVJJIiwiZmlsZW5hbWUiLCJzdGFydHNXaXRoIiwiZ2V0QmluYXJ5IiwiZmlsZSIsImluc3RhbnRpYXRlQXJyYXlCdWZmZXIiLCJiaW5hcnlGaWxlIiwiaW1wb3J0cyIsInJlY2VpdmVyIiwiZmV0Y2giLCJ0aGVuIiwiY3JlZGVudGlhbHMiLCJyZXNwb25zZSIsImNhdGNoIiwiZ2V0QmluYXJ5UHJvbWlzZSIsImJpbmFyeSIsImluc3RhbnRpYXRlIiwiaW5zdGFuY2UiLCJyZWFzb24iLCJjYWxsUnVudGltZUNhbGxiYWNrcyIsImNhbGxiYWNrcyIsImxlbmd0aCIsInNoaWZ0IiwiRXhjZXB0aW9uSW5mbyIsImV4Y1B0ciIsInRoaXMiLCJwdHIiLCJzZXRfdHlwZSIsInR5cGUiLCJnZXRfdHlwZSIsInNldF9kZXN0cnVjdG9yIiwiZGVzdHJ1Y3RvciIsImdldF9kZXN0cnVjdG9yIiwic2V0X2NhdWdodCIsImNhdWdodCIsImdldF9jYXVnaHQiLCJzZXRfcmV0aHJvd24iLCJyZXRocm93biIsImdldF9yZXRocm93biIsImluaXQiLCJzZXRfYWRqdXN0ZWRfcHRyIiwiYWRqdXN0ZWRQdHIiLCJnZXRfYWRqdXN0ZWRfcHRyIiwiZ2V0X2V4Y2VwdGlvbl9wdHIiLCJfX19jeGFfaXNfcG9pbnRlcl90eXBlIiwiYWRqdXN0ZWQiLCJlbXNjcmlwdGVuX3JlYWxsb2NfYnVmZmVyIiwic2l6ZSIsImdyb3ciLCJieXRlTGVuZ3RoIiwiZ2V0Q0Z1bmMiLCJpZGVudCIsIlVURjhEZWNvZGVyIiwiVGV4dERlY29kZXIiLCJjY2FsbCIsInJldHVyblR5cGUiLCJhcmdUeXBlcyIsImFyZ3MiLCJvcHRzIiwidG9DIiwic3RyIiwicmV0IiwibGVuIiwiaSIsImMiLCJjaGFyQ29kZUF0IiwibGVuZ3RoQnl0ZXNVVEY4Iiwic3RhY2tBbGxvYyIsIm91dFB0ciIsIm1heEJ5dGVzVG9Xcml0ZSIsImhlYXAiLCJvdXRJZHgiLCJlbmRJZHgiLCJ1Iiwic3RyaW5nVG9VVEY4QXJyYXkiLCJzdHJpbmdUb1VURjgiLCJzdHJpbmdUb1VURjhPblN0YWNrIiwiYXJyIiwiYXJyYXkiLCJzZXQiLCJmdW5jIiwiY0FyZ3MiLCJzdGFjayIsImNvbnZlcnRlciIsInN0YWNrU2F2ZSIsImFwcGx5Iiwic3RhY2tSZXN0b3JlIiwiaGVhcE9yQXJyYXkiLCJpZHgiLCJtYXhCeXRlc1RvUmVhZCIsImVuZFB0ciIsImRlY29kZSIsInN1YmFycmF5IiwidTAiLCJ1MSIsInUyIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwiY2giLCJVVEY4QXJyYXlUb1N0cmluZyIsIkJvb2xlYW4iLCJjb252ZXJ0UmV0dXJuVmFsdWUiLCJvbkRvbmUiLCJjYWxsZWRSdW4iLCJ3YXNtSW1wb3J0cyIsImRlc3QiLCJudW0iLCJjb3B5V2l0aGluIiwicmVxdWVzdGVkU2l6ZSIsIngiLCJvbGRTaXplIiwibWF4SGVhcFNpemUiLCJjdXREb3duIiwib3Zlckdyb3duSGVhcFNpemUiLCJNYXRoIiwibWluIiwibWF4IiwiY2FsbGJhY2siLCJpbmZvIiwicmVjZWl2ZUluc3RhbmNlIiwibW9kdWxlIiwiY2IiLCJleHBvcnRzIiwidW5zaGlmdCIsImlkIiwiY2xlYXJJbnRlcnZhbCIsInJlbW92ZVJ1bkRlcGVuZGVuY3kiLCJyZXN1bHQiLCJpbnN0YW50aWF0ZVN0cmVhbWluZyIsImNyZWF0ZVdhc20iLCJhcmd1bWVudHMiLCJydW4iLCJkb1J1biIsInBvc3RSdW4iLCJwcmVSdW4iLCJzZXRUaW1lb3V0IiwibnVtZXJpY0FyZ3MiLCJldmVyeSIsInJ1bkNhbGxlciIsInBvcCIsInJlYWR5IiwiZGVmaW5lIiwiaXNOaWwiLCJpbnNlcnRTbWFsbGVyIiwiZGlzdGFuY2VzQXIiLCJpbmRleGVzIiwiaW5kZXgiLCJuZXdQb3NpdGlvbiIsImZpbmRJbmRleCIsInYiLCJzcGxpY2UiLCJhc3NlcnQiLCJjb25kaXRpb24iLCJtZXNzYWdlIiwiRXJyb3IiLCJ2ZWN0b3JEaXN0YW5jZU1ldHJpY3NNZXRob2RzIiwicCIsInEiLCJwb3ciLCJzcXJ0Iiwic3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kcyIsInMxIiwiczIiLCJkaXN0IiwiYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzIiwiaW50QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzIiwibnVtYmVyRGlzdGFuY2VNZXRyaWNzTWV0aG9kcyIsIm51bWJlckFycmF5RGlzdGFuY2VNZXRyaWNzIiwiQXZhaWxhYmxlTWV0cmljcyIsIk1ldHJpY1RvRGF0YVR5cGUiLCJrZXlzIiwicmVkdWNlIiwia2V5IiwidmFsIiwiTWVhc3VyZSIsImNvbnN0cnVjdG9yIiwibWV0aG9kIiwiZGF0YVR5cGUiLCJtZXRyaWNOZWVkc0FyZ3MiLCJuYW1lIiwiaXNOdW1iZXJBcnJheU1ldHJpYyIsImdldE1lYXN1cmUiLCJkaWN0IiwiaGFzT3duUHJvcGVydHkiLCJzdGF0aWMiLCJhdmFpbGFibGVNZWFzdXJlcyIsIkRpc3RhbmNlTWF0cml4U2VydmljZSIsInVzZUNvbmN1cnJlbnRXb3JrZXJzIiwidGVybWluYXRlT25Db21wbGV0ZSIsInRocmVhZENvdW50IiwibmF2aWdhdG9yIiwiaGFyZHdhcmVDb25jdXJyZW5jeSIsIl93b3JrZXJDb3VudCIsIl93b3JrZXJzIiwiQXJyYXkiLCJmaWxsIiwibWFwIiwiV29ya2VyIiwiVVJMIiwiX3Rlcm1pbmF0ZU9uQ29tcGxldGUiLCJhc3luYyIsInZhbHVlcyIsImZuTmFtZSIsIm5vcm1hbGl6ZSIsImNhbGNNdWx0aSIsImZuTmFtZXMiLCJ3ZWlnaHRzIiwiYWdncmVnYXRpb25NZXRob2QiLCJwcm9taXNlcyIsInRvdGFsTGVuZ3RoIiwiY2h1bmtTaXplIiwiZGlzdGFuY2VNYXRyaXgiLCJlbmRSb3ciLCJlbmRDb2wiLCJsbWluIiwibG1heCIsIk51bWJlciIsIk1JTl9WQUxVRSIsInN0YXJ0IiwiZmxvb3IiLCJlbmQiLCJzdGFydFJvdyIsInN0YXJ0Q29sIiwicG9zdE1lc3NhZ2UiLCJjaHVuY2tTaXplIiwicmVzb2x2ZVdvcmtlciIsInJlamVjdFdvcmtlciIsIm9ubWVzc2FnZSIsImRhdGEiLCJlcnJvciIsImRpc3RhbmNlTWF0cml4RGF0YSIsInRlcm1pbmF0ZSIsImFsbCIsImZvckVhY2giLCJ2YWx1ZSIsIndvcmtlciIsInRhdVJhbmRJbnQiLCJuIiwicmFuZG9tIiwidGF1UmFuZCIsImVtcHR5Iiwib3V0cHV0IiwicHVzaCIsInJhbmdlIiwiXyIsImZpbGxlZCIsInplcm9zIiwibWVhbiIsImlucHV0Iiwic3VtIiwicmVqZWN0aW9uU2FtcGxlIiwiblNhbXBsZXMiLCJwb29sU2l6ZSIsInJlamVjdFNhbXBsZSIsImoiLCJicm9rZW4iLCJrIiwicmVzaGFwZTJkIiwiYSIsInJvd3MiLCJjb2wiLCJtYWtlSGVhcCIsIm5Qb2ludHMiLCJtYWtlQXJyYXlzIiwiZmlsbFZhbHVlIiwiSW5maW5pdHkiLCJoZWFwUHVzaCIsInJvdyIsIndlaWdodCIsImZsYWciLCJpbmRpY2VzIiwidW5jaGVja2VkSGVhcFB1c2giLCJpc05ldyIsImlTd2FwIiwiaWMxIiwiaWMyIiwiaGVhcFNoYXBlMiIsImJ1aWxkQ2FuZGlkYXRlcyIsImN1cnJlbnRHcmFwaCIsIm5WZXJ0aWNlcyIsIm5OZWlnaGJvcnMiLCJtYXhDYW5kaWRhdGVzIiwiY2FuZGlkYXRlTmVpZ2hib3JzIiwiaXNuIiwiZCIsImRlaGVhcFNvcnQiLCJpbmRIZWFwIiwiZGlzdEhlYXAiLCJpbmRIZWFwSW5kZXgiLCJkaXN0SGVhcEluZGV4IiwidGVtcDEiLCJ0ZW1wMiIsInNpZnREb3duIiwiaGVhcDEiLCJoZWFwMiIsImNlaWxpbmciLCJlbHQiLCJsZWZ0Q2hpbGQiLCJyaWdodENoaWxkIiwic3dhcCIsInNtYWxsZXN0RmxhZ2dlZCIsImluZCIsIm1pbkRpc3QiLCJyZXN1bHRJbmRleCIsIlNwYXJzZU1hdHJpeCIsImNvbHMiLCJkaW1zIiwiZW50cmllcyIsIk1hcCIsIm5Sb3dzIiwibkNvbHMiLCJjaGVja0RpbXMiLCJtYWtlS2V5IiwiaGFzIiwiZ2V0IiwiZGVmYXVsdFZhbHVlIiwiZ2V0QWxsIiwib3JkZXJlZCIsInJvd0NvbFZhbHVlcyIsInNvcnQiLCJnZXREaW1zIiwiZ2V0Um93cyIsImZyb20iLCJfa2V5IiwiZ2V0Q29scyIsImdldFZhbHVlcyIsImZuIiwidmFscyIsInRvQXJyYXkiLCJtYXRyaXgiLCJvbGRSb3dzIiwib2xkQ29scyIsIm9sZFZhbHMiLCJtYXRsZW4iLCJwYWlyd2lzZU11bHRpcGx5IiwiZWxlbWVudFdpc2UiLCJ5IiwiYWRkIiwic3VidHJhY3QiLCJtdWx0aXBseVNjYWxhciIsInNjYWxhciIsImVsaW1pbmF0ZVplcm9zIiwibSIsInplcm9JbmRpY2VzIiwiU2V0IiwicmVtb3ZlQnlaZXJvSW5kZXgiLCJuZXh0VmFsdWVzIiwiZmlsdGVyIiwibmV4dFJvd3MiLCJuZXh0Q29scyIsIm5vcm1UeXBlIiwibm9ybUZuIiwibm9ybUZucyIsImNvbHNCeVJvdyIsIm5leHRNYXRyaXgiLCJub3JtIiwieHMiLCJvcCIsInZpc2l0ZWQiLCJvcGVyYXRlIiwibmV4dFZhbHVlIiwidmFsdWVzQSIsInJvd3NBIiwiY29sc0EiLCJ2YWx1ZXNCIiwicm93c0IiLCJjb2xzQiIsImdldENTUiIsImluZHB0ciIsImN1cnJlbnRSb3ciLCJGbGF0VHJlZSIsImh5cGVycGxhbmVzIiwib2Zmc2V0cyIsImNoaWxkcmVuIiwibWFrZUZvcmVzdCIsIm5UcmVlcyIsImxlYWZTaXplIiwidHJlZXMiLCJtYWtlRXVjbGlkZWFuVHJlZSIsIm1ha2VUcmVlIiwiZm9yZXN0IiwidHJlZSIsIm5Ob2RlcyIsIm51bU5vZGVzIiwibkxlYXZlcyIsIm51bUxlYXZlcyIsImh5cGVycGxhbmUiLCJyZWN1cnNpdmVGbGF0dGVuIiwiZmxhdHRlblRyZWUiLCJzcGxpdFJlc3VsdHMiLCJsZWZ0SW5kZXgiLCJyaWdodEluZGV4IiwibGVmdCIsInJpZ2h0IiwiaHlwZXJwbGFuZU9mZnNldCIsImh5cGVycGxhbmVWZWN0b3IiLCJuTGVmdCIsIm5SaWdodCIsInNpZGUiLCJtYXJnaW4iLCJpbmRpY2VzTGVmdCIsImluZGljZXNSaWdodCIsIm9mZnNldCIsImV1Y2xpZGVhblJhbmRvbVByb2plY3Rpb25TcGxpdCIsImlzTGVhZiIsIm5vZGVOdW0iLCJsZWFmTnVtIiwib2xkTm9kZU51bSIsInJlcyIsInNlbGVjdFNpZGUiLCJwb2ludCIsInNlYXJjaEZsYXRUcmVlIiwiU01PT1RIX0tfVE9MRVJBTkNFIiwiTUlOX0tfRElTVF9TQ0FMRSIsIlVNQVAiLCJuZWlnaGJvcnMiLCJwYXJhbXMiLCJsZWFybmluZ1JhdGUiLCJsb2NhbENvbm5lY3Rpdml0eSIsIm5Db21wb25lbnRzIiwibkVwb2NocyIsIm5lZ2F0aXZlU2FtcGxlUmF0ZSIsInJlcHVsc2lvblN0cmVuZ3RoIiwic2V0T3BNaXhSYXRpbyIsInNwcmVhZCIsInRyYW5zZm9ybVF1ZXVlU2l6ZSIsInRhcmdldE1ldHJpYyIsInRhcmdldFdlaWdodCIsInRhcmdldE5OZWlnaGJvcnMiLCJkaXN0YW5jZUZuIiwibnVtZXJpYyIsImlzSW5pdGlhbGl6ZWQiLCJycEZvcmVzdCIsImVtYmVkZGluZyIsIm9wdGltaXphdGlvblN0YXRlIiwiT3B0aW1pemF0aW9uU3RhdGUiLCJzZXRQYXJhbSIsImZpdCIsIlgiLCJpbml0aWFsaXplRml0Iiwib3B0aW1pemVMYXlvdXQiLCJvcHRpbWl6ZUxheW91dEFzeW5jIiwic2V0U3VwZXJ2aXNlZFByb2plY3Rpb24iLCJZIiwic2V0UHJlY29tcHV0ZWRLTk4iLCJrbm5JbmRpY2VzIiwia25uRGlzdGFuY2VzIiwiZ2V0TkVwb2NocyIsImtublJlc3VsdHMiLCJuZWFyZXN0TmVpZ2hib3JzIiwiZ3JhcGgiLCJmdXp6eVNpbXBsaWNpYWxTZXQiLCJtYWtlU2VhcmNoRm5zIiwic2VhcmNoR3JhcGgiLCJtYWtlU2VhcmNoR3JhcGgiLCJwcm9jZXNzR3JhcGhGb3JTdXBlcnZpc2VkUHJvamVjdGlvbiIsImhlYWQiLCJ0YWlsIiwiZXBvY2hzUGVyU2FtcGxlIiwiaW5pdGlhbGl6ZVNpbXBsaWNpYWxTZXRFbWJlZGRpbmciLCJpbml0aWFsaXplT3B0aW1pemF0aW9uIiwicHJlcGFyZUZvck9wdGltaXphdGlvbkxvb3AiLCJpbml0RnJvbVRyZWUiLCJpbml0RnJvbVJhbmRvbSIsInF1ZXJ5UG9pbnRzIiwiX2hlYXAiLCJfdHJlZSIsInNlYXJjaCIsImluaXRpYWxpemF0aW9uIiwidHJpZWQiLCJ2ZXJ0ZXgiLCJjYW5kaWRhdGVzIiwic2xpY2UiLCJjYW5kaWRhdGUiLCJrbm4iLCJkaXN0YW5jZXMiLCJuZWlnaGJvciIsImRpc3RhbmNlIiwidHJhbnNmb3JtIiwidG9UcmFuc2Zvcm0iLCJyYXdEYXRhIiwicmVzdWx0cyIsImFkanVzdGVkTG9jYWxDb25uZWN0aXZpdHkiLCJzaWdtYXMiLCJyaG9zIiwic21vb3RoS05ORGlzdGFuY2UiLCJjb21wdXRlTWVtYmVyc2hpcFN0cmVuZ3RocyIsImNzck1hdHJpeCIsIl96IiwiaW5pdFRyYW5zZm9ybSIsImdyYXBoTWF4IiwibWFrZUVwb2Noc1BlclNhbXBsZSIsImFzc2lnbk9wdGltaXphdGlvblN0YXRlUGFyYW1ldGVycyIsImhlYWRFbWJlZGRpbmciLCJ0YWlsRW1iZWRkaW5nIiwiY3VycmVudEVwb2NoIiwiZmFyRGlzdCIsImNhdGVnb3JpY2FsU2ltcGxpY2lhbFNldEludGVyc2VjdGlvbiIsInN0ZXAiLCJvcHRpbWl6ZUxheW91dFN0ZXAiLCJnZXRFbWJlZGRpbmciLCJtZXRyaWNOTkRlc2NlbnQiLCJsZWFmQXJyYXkiLCJuSXRlcnMiLCJkZWx0YSIsInJobyIsInJwVHJlZUluaXQiLCJjaiIsImNrIiwicm91bmQiLCJsb2cyIiwic3BhcnNlTWF0cml4IiwidHJhbnNwb3NlIiwicHJvZE1hdHJpeCIsInNpbXBsaWNpYWxTZXQiLCJ0YXJnZXQiLCJ1bmtub3duRGlzdCIsImludGVyc2VjdGlvbiIsImV4cCIsImZhc3RJbnRlcnNlY3Rpb24iLCJyZXNldExvY2FsQ29ubmVjdGl2aXR5Iiwibkl0ZXIiLCJiYW5kd2lkdGgiLCJsbyIsImhpIiwibWlkIiwiaXRoRGlzdGFuY2VzIiwibm9uWmVyb0Rpc3RzIiwiaW50ZXJwb2xhdGlvbiIsInBzdW0iLCJhYnMiLCJtZWFuSXRoRGlzdGFuY2VzIiwibWVhbkRpc3RhbmNlcyIsImdyYXBoVmFsdWVzIiwiZW50cnkiLCJ3Iiwic3RhdGUiLCJkaW0iLCJtb3ZlT3RoZXIiLCJlcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZSIsImVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGUiLCJlcG9jaE9mTmV4dFNhbXBsZSIsImluaXRpYWxBbHBoYSIsImFscGhhIiwiZ2FtbWEiLCJ4diIsInl2IiwicGFyYW1ldGVyVmFsdWVzIiwicGFyYW1ldGVyaXplZEZ1bmN0aW9uIiwib3B0aW9ucyIsIm1heEl0ZXJhdGlvbnMiLCJncmFkaWVudERpZmZlcmVuY2UiLCJkYW1waW5nIiwiZXJyb3JUb2xlcmFuY2UiLCJtaW5WYWx1ZXMiLCJtYXhWYWx1ZXMiLCJpbml0aWFsVmFsdWVzIiwicGFyYW1ldGVycyIsInBhckxlbiIsIk1BWF9TQUZFX0lOVEVHRVIiLCJNSU5fU0FGRV9JTlRFR0VSIiwiaXRlcmF0aW9uIiwiZXJyb3JDYWxjdWxhdGlvbiIsImNvbnZlcmdlZCIsImlzTmFOIiwicGFyYW1ldGVyRXJyb3IiLCJpdGVyYXRpb25zIiwiZmluZEFCUGFyYW1zIiwiY3VycmVudCIsIm90aGVyIiwiZGlzdFNxdWFyZWQiLCJyRGlzdCIsImdyYWRDb2VmZiIsImdyYWREIiwiY2xpcCIsIm5OZWdTYW1wbGVzIiwiZXBvY2hDYWxsYmFjayIsImVwb2NoQ29tcGxldGVkIiwic2hvdWxkU3RvcCIsImlzRmluaXNoZWQiLCJjbGlwVmFsdWUiLCJUU05FIiwiZ2V0b3B0Iiwib3B0IiwiZmllbGQiLCJkZWZhdWx0dmFsIiwiZ2F1c3NSYW5kb20iLCJyZXR1cm5WIiwidlZhbHVlIiwiciIsInJhbmRuIiwibXUiLCJzdGQiLCJBcnJheUJ1ZmZlciIsInJhbmRuMmQiLCJzIiwidXNlcyIsImwyIiwieDEiLCJ4MiIsIkQiLCJ4MWkiLCJ4MmkiLCJ4dG9kIiwiTiIsImdldEl0ZXJTaXplIiwicm93U2l6ZSIsImQycCIsInBlcnBsZXhpdHkiLCJ0b2wiLCJpbmRleGVyIiwiaFRhcmdldCIsIlAiLCJwcm93IiwiYmV0YW1pbiIsImJldGFtYXgiLCJiZXRhIiwiZG9uZSIsIm1heHRyaWVzIiwicGoiLCJuSGVyZSIsInBPdXQiLCJOMiIsInNpZ24iLCJpdGVyIiwiZXBzaWxvbiIsImluaXREYXRhUmF3IiwiZGlzdHMiLCJpbml0U29sdXRpb24iLCJpbml0RGF0YURpc3QiLCJ0aW1lIiwidGltZUVuZCIsImdhaW5zIiwieXN0ZXAiLCJnZXRTb2x1dGlvbiIsImNnIiwiY29zdEdyYWQiLCJjb3N0IiwiZ3JhZCIsInltZWFuIiwiZ2lkIiwic2lkIiwiZ2FpbmlkIiwibmV3Z2FpbiIsIm5ld3NpZCIsImRlYnVnR3JhZCIsInlvbGQiLCJjZzAiLCJjZzEiLCJhbmFseXRpYyIsIm51bWVyaWNhbCIsInBtdWwiLCJxdUFyciIsInFzdW0iLCJxdSIsInByZXYiLCJRIiwicHJlbXVsdCIsIldFQkdTTEFHR1JFR0FUSU9ORlVOQ1RJT05TIiwiYXJyYXlTaXplIiwiV0VCR1BVRElTVEFOQ0UiLCJ3ZWJHUFVGdW5jdGlvbnMiLCJIQU1NSU5HIiwiX21heEFycmF5U2l6ZSIsImVudHJ5SW5kZXgiLCJFVUNMSURFQU4iLCJtYXhBcnJheVNpemUiLCJfZW50cnlJbmRleCIsIk1BTkhBVFRBTiIsIlRBTklNT1RPIiwiTEVWRU5TVEVJTiIsIk5FRURMRU1BTl9XVU5TQ0giLCJNT05PTUVSX0NIRU1JQ0FMX0RJU1RBTkNFIiwiU09LQUwiLCJDT1NJTkUiLCJBU1lNTUVUUklDIiwiRGlmZmVyZW5jZSIsIk9uZUhvdCIsImRpc3RhbmNlRnVuY3Rpb25Db21wbGV4aXR5IiwibWF4RW50cnlTaXplIiwiY2VpbCIsIl9tYXhFbnRyeVNpemUiLCJUeXBlU3VwcG9ydGVkRGlzdGFuY2VzIiwibXVsdGlDb2xXZWJHUFVLTk4iLCJlbnRyeUxpc3QiLCJrbm5TaXplIiwiZGlzdGFuY2VNZXRyaWNzIiwiYWdncmVnYXRpb25GdW5jdGlvbiIsIl9hIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJnZW5lcmF0b3IiLCJzb21lIiwibGlzdCIsIm51bU9mQ29sdW1ucyIsImxpc3RTaXplIiwicHJvY2Vzc0luZm8iLCJkaXN0YW5jZU1ldHJpYyIsImdhcE9wZW5QZW5hbHR5IiwiZ2FwRXh0ZW5zaW9uUGVuYWx0eSIsIl9iIiwiZW50cnlUeXBlIiwiZW5jb2RlZExpc3QiLCJzcGxpdCIsIl9kYXRhIiwiaXNVaW50MzJBcnJheSIsImFycmF5U2l6ZXMiLCJtYXhFbnRyeUxlbiIsImNvbXBsZXhpdHkiLCJmbGF0U291cmNlQXJyYXkiLCJzZXEiLCJzdXBwSW5mb1N0cnVjdFdnc2wiLCJzdXBwSW5mb1NpemUiLCJzdXBwSW5mb1R5cGUiLCJzdXBwSW5mb0J1ZmZlciIsIm1heE1vbm9tZXJJbmRleCIsInNjb3JpbmdNYXRyaXgiLCJhbHBoYWJldEluZGV4ZXMiLCJzaW1pbGFyaXR5TWF0cml4U2l6ZSIsInRyYW5zZmVyZWRTaW1pbGFyaXR5TWF0cml4Iiwia2V5MiIsImRhdGFTdHJ1Y3RXZ3NsIiwic291cmNlQXJyYXlTaXplIiwid2ViR1BVUHJvY2Vzc0luZm8iLCJzdXBwSW5mb1dnc2wiLCJ3Z3NsIiwiam9pbiIsIm5lZWRzRHVtbXkiLCJ0cmltIiwiY29tYmluZWRDb21wbGV4aXR5IiwiZGF0YVdnc2wiLCJjb21wdXRhdGlvbnNQZXJQYXNzIiwicGFpckNvbXBhcmlzb25zUGVyUGFzcyIsImFkYXB0ZXIiLCJncHUiLCJyZXF1ZXN0QWRhcHRlciIsImRldmljZSIsInJlcXVlc3REZXZpY2UiLCJ3b3JrZ3JvdXBzRGltIiwiZ2xvYmFsVGhyZWFkRGltU2l6ZSIsInJlc3VsdEluZGV4ZXMiLCJyZXN1bHREaXN0YW5jZXMiLCJjcmVhdGVTaGFkZXJNb2R1bGUiLCJsYWJlbCIsImNvZGUiLCJnZXRDb21iaW5lZERpc3RhbmNlU2NyaXB0IiwicGlwZWxpbmUiLCJjcmVhdGVDb21wdXRlUGlwZWxpbmUiLCJsYXlvdXQiLCJjb21wdXRlIiwiZW50cnlQb2ludCIsImNvbXB1dGVJbmZvMzJTaXplIiwic3VwcEluZm8zMlNpemUiLCJjb21wdXRlSW5mb0J1ZmZlclNpemUiLCJCWVRFU19QRVJfRUxFTUVOVCIsInBhZGRlZENvbXB1dGVJbmZvQnVmZmVyU2l6ZSIsInJlbWFpbmRlciIsImNvbXB1dGVJbmZvQnVmZmVyIiwiY3JlYXRlQnVmZmVyIiwidXNhZ2UiLCJHUFVCdWZmZXJVc2FnZSIsIlNUT1JBR0UiLCJDT1BZX1NSQyIsIkNPUFlfRFNUIiwibWFwcGVkQXRDcmVhdGlvbiIsIm1hcHBlZENvbXB1dGVJbmZvQXJyYXlCdWZmZXIiLCJnZXRNYXBwZWRSYW5nZSIsInN0YXJ0QXQiLCJlbmRBdCIsInBhaXJDb21wYXJpc29uU3RhcnRBdCIsInBhaXJDb21wYXJpc29uRW5kQXQiLCJjb21wdXRlSW5mb09mZlNldCIsIkFycmF5Q29uc3RydWN0b3IiLCJ1bm1hcCIsInN1cHBJbmZvQnVmZmVyU2l6ZSIsInBhZGRlZFN1cHBJbmZvQnVmZmVyU2l6ZSIsInN1cHBJbmZvUmVtYWluZGVyIiwibWFwcGVkU3VwcEluZm9BcnJheUJ1ZmZlciIsInN1cHBJbmZvT2ZmU2V0Iiwib3V0S25uQXJyYXlTaXplIiwiYnVmZmVyRGlzdGFuY2VzIiwiYnVmZmVySW5kZXhlcyIsImJ5dGVzUGVyT3V0QXJyYXlSb3ciLCJiaW5kR3JvdXAiLCJjcmVhdGVCaW5kR3JvdXAiLCJnZXRCaW5kR3JvdXBMYXlvdXQiLCJiaW5kaW5nIiwicmVzb3VyY2UiLCJwYWlyQ29tcGFyaXNvblBhc3NlcyIsInBhaXJJdGVyIiwicXVldWUiLCJ3cml0ZUJ1ZmZlciIsImVuY29kZXIiLCJjcmVhdGVDb21tYW5kRW5jb2RlciIsInBhc3MiLCJiZWdpbkNvbXB1dGVQYXNzIiwic2V0UGlwZWxpbmUiLCJzZXRCaW5kR3JvdXAiLCJkaXNwYXRjaFdvcmtncm91cHMiLCJ3b3JrR3JvdXBEaXZpc2lvbiIsInJlc3VsdEJ1ZmZlckRpc3RhbmNlcyIsIk1BUF9SRUFEIiwiY29weUJ1ZmZlclRvQnVmZmVyIiwicmVzdWx0QnVmZmVySW5kZXhlcyIsImNvbW1hbmRCdWZmZXIiLCJmaW5pc2giLCJzdWJtaXQiLCJvblN1Ym1pdHRlZFdvcmtEb25lIiwibWFwQXN5bmMiLCJHUFVNYXBNb2RlIiwiUkVBRCIsImtubkluZGV4ZXMiLCJmdWxmaWxsZWQiLCJuZXh0IiwicmVqZWN0ZWQiLCJtYXhFbnRyeUxlbnMiLCJhZ2dyZWdhdGlvbiIsIm1ldHJpYyIsIk11bHRpQ29sdW1uUmVkdWNlciIsIlRTTkVSZWR1Y2VyIiwic3VwZXIiLCJyYW5kb21TZWVkIiwiRGF0ZSIsInJhbmRvbUZuIiwicmVkdWNlciIsImRpc3RhbmNlRm5hbWVzIiwiZGlzdGFuY2VGbnMiLCJkaXN0YW5jZUZuQXJncyIsInByb2dyZXNzRnVuYyIsIm1hdHJpeFNlcnZpY2UiLCJVTUFQUmVkdWNlciIsInVzZVdFQkdQVSIsInZlY3RvcnMiLCJfcGFyYWxsZWxEaXN0YW5jZVdvcmtlcnMiLCJrbm5HcmFwaCIsIm11bHRpQ29sdW1uS05OIiwiZml0QXN5bmMiLCJlcG9jIiwiQXZhaWxhYmxlUmVkdWNlcnMiLCJNdWx0aUNvbERpbVJlZHVjZXIiLCJtZXRyaWNzIiwiZGlzdGFuY2VBZ2dyZWdhdGlvbiIsIm1lYXN1cmVzIiwibWVhc3VyZSIsImJpdEFycmF5TGVuZ3RoIiwiX2xlbmd0aCIsInR5cGVOYW1lIiwiYXZhaWxhYmxlTWV0aG9kcyIsImF2YWlsYWJsZU1ldHJpY3MiLCJhbnMiLCJvYmoiLCJlcG9jaE51bSIsImVwb2Noc0xlbmd0aCIsImNvbHVtbnNEYXRhIiwib25NZXNzYWdlIiwiYWxlYSIsInhvcjEyOCIsInhvcndvdyIsInhvcnNoaWZ0NyIsInhvcjQwOTYiLCJ0eWNoZWkiLCJzciIsImdsb2JhbCIsIkFsZWEiLCJzZWVkIiwibWUiLCJtYXNoIiwiaCIsInQiLCJzMCIsImNvcHkiLCJmIiwiaW1wbCIsInhnIiwicHJuZyIsImludDMyIiwiZG91YmxlIiwicXVpY2siLCJYb3JHZW4iLCJzdHJzZWVkIiwieiIsImxpbWl0IiwicG9vbCIsIm1hdGgiLCJub2RlY3J5cHRvIiwid2lkdGgiLCJzdGFydGRlbm9tIiwic2lnbmlmaWNhbmNlIiwib3ZlcmZsb3ciLCJtYXNrIiwic2VlZHJhbmRvbSIsInNob3J0c2VlZCIsIm1peGtleSIsImZsYXR0ZW4iLCJlbnRyb3B5IiwidG9zdHJpbmciLCJvdXQiLCJyYW5kb21CeXRlcyIsImNyeXB0byIsIm1zQ3J5cHRvIiwiZ2V0UmFuZG9tVmFsdWVzIiwiYnJvd3NlciIsInBsdWdpbnMiLCJzY3JlZW4iLCJhdXRvc2VlZCIsImFyYzQiLCJBUkM0IiwiZyIsIlMiLCJpc19tYXRoX2NhbGwiLCJrZXlsZW4iLCJjb3VudCIsImRlcHRoIiwicHJvcCIsInR5cCIsInNtZWFyIiwic3RyaW5nc2VlZCIsImV4Il0sInNvdXJjZVJvb3QiOiIifQ==
|