@datagrok/peptides 1.14.1 → 1.15.1

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.
Files changed (51) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/196.js +3 -0
  3. package/dist/196.js.LICENSE.txt +51 -0
  4. package/dist/209.js +2 -2
  5. package/dist/361.js +2 -0
  6. package/dist/381.js +2 -0
  7. package/dist/436.js +2 -0
  8. package/dist/694.js +2 -0
  9. package/dist/831.js +2 -0
  10. package/dist/868.js +2 -0
  11. package/dist/package-test.js +3 -2
  12. package/dist/package-test.js.LICENSE.txt +51 -0
  13. package/dist/package.js +3 -2
  14. package/dist/package.js.LICENSE.txt +51 -0
  15. package/files/help/logo-summary-table.md +23 -0
  16. package/files/help/monomer-position.md +31 -0
  17. package/files/help/most-potent-residues.md +17 -0
  18. package/files/icons/ribbon/logo-summary-viewer.svg +8 -0
  19. package/files/icons/ribbon/peptide-sar-vertical-viewer.svg +10 -0
  20. package/files/icons/ribbon/peptide-sar-viewer.svg +11 -0
  21. package/files/tests/100k.d42 +0 -0
  22. package/files/tests/200k.d42 +0 -0
  23. package/files/tests/50k.d42 +0 -0
  24. package/files/tests/{aligned_5k.d42 → 5k.d42} +0 -0
  25. package/package.json +5 -5
  26. package/src/model.ts +85 -175
  27. package/src/package-test.ts +7 -6
  28. package/src/tests/benchmarks.ts +95 -0
  29. package/src/tests/core.ts +4 -75
  30. package/src/tests/{algorithms.ts → misc.ts} +3 -16
  31. package/src/tests/model.ts +3 -14
  32. package/src/tests/table-view.ts +4 -14
  33. package/src/tests/viewers.ts +7 -1
  34. package/src/tests/widgets.ts +9 -1
  35. package/src/utils/algorithms.ts +166 -16
  36. package/src/utils/cell-renderer.ts +12 -7
  37. package/src/utils/constants.ts +2 -0
  38. package/src/utils/misc.ts +2 -1
  39. package/src/utils/parallel-mutation-cliffs.ts +106 -0
  40. package/src/utils/types.ts +1 -1
  41. package/src/viewers/logo-summary.ts +9 -6
  42. package/src/viewers/sar-viewer.ts +28 -14
  43. package/src/widgets/mutation-cliffs.ts +2 -2
  44. package/src/widgets/peptides.ts +15 -5
  45. package/src/widgets/selection.ts +9 -0
  46. package/src/widgets/settings.ts +3 -8
  47. package/src/workers/mutation-cliffs-worker.ts +77 -0
  48. package/dist/521.js +0 -2
  49. package/dist/677.js +0 -2
  50. package/dist/729.js +0 -2
  51. package/dist/959.js +0 -2
package/dist/196.js ADDED
@@ -0,0 +1,3 @@
1
+ /*! For license information please see 196.js.LICENSE.txt */
2
+ var peptides;(()=>{"use strict";var t,e,r={3196:(t,e,r)=>{var s=r(7659),n=r(3659);function i(t){return Math.random()*t}function o(t){return Math.floor(i(t))}function h(t=!1,e="Assertion error."){if(!t)throw new Error(e)}function a(t,e,r=1){const s=t.length;h(s==e.length,"Vector lengths do not match.");const i=new n.OW(s);for(let s=0;s<t.length;++s)i[s]=t[s]+r*e[s];return i}function l(t,e,r=1){const s=function(t,e,r=0){return new Array(t).fill(r).map((()=>new n.OW(e).fill(r)))}(t,e);for(let n=0;n<t;++n)for(let t=0;t<e;++t)s[n][t]=i(r);return s}function u(t,e){const r=function(t){let e=0;for(let r=0;r<t.length;++r)e+=t[r];return e}(function(t){const e=t.length,r=new n.OW(e);for(let e=0;e<t.length;++e)r[e]=t[e]*t[e];return r}(a(t,e,-1)));return Math.sqrt(r)}function c(t){return(e,r)=>t*e+r-Math.floor((e+2)*(e+1)/2)}class f{constructor(t=!0,e=!0){const s=navigator.hardwareConcurrency;this._workerCount=t?Math.max(s-2,1):1,this._workers=new Array(this._workerCount).fill(null).map((()=>new Worker(new URL(r.p+r.u(868),r.b)))),this._terminateOnComplete=e}async calc(t,e,r=!0,s){return new Promise((async(n,i)=>{try{const i=t.length,o=new Array(this._workerCount),h=i*(i-1)/2;this._workerCount=Math.min(this._workerCount,h);const a=h/this._workerCount,l=new Float32Array(h);let u=0,c=1,f=0,m=Number.MIN_VALUE;for(let r=0;r<this._workerCount;r++){const n=Math.floor(r*a),g=r===this._workerCount-1?h:Math.floor((r+1)*a),p=u,d=c;r!==this._workerCount-1&&(u=i-2-Math.floor(Math.sqrt(-8*g+4*i*(i-1)-7)/2-.5),c=g-i*u+Math.floor((u+1)*(u+2)/2)),this._workers[r].postMessage({values:t,fnName:e,startRow:p,startCol:d,chunckSize:g-n,opts:s}),o[r]=new Promise(((t,e)=>{this._workers[r].onmessage=({data:{error:s,distanceMatrixData:i,min:o,max:h}})=>{this._terminateOnComplete&&this._workers[r].terminate(),s?e(s):(l.set(i,n),o<f&&(f=o),h>m&&(m=h),t())}}))}await Promise.all(o),r&&l.forEach(((t,e)=>{l[e]=(t-f)/(m-f)})),n(l)}catch(t){i(t)}}))}terminate(){this._workers.forEach((t=>t.terminate()))}}class m{constructor(t){this.steps=t?.steps??0,this.cycles=t?.cycles??1e6,this.cutoff=t?.cutoff??0,this.lambda=t?.lambda??2,this.dlambda=t?.dlambda??.01,this.lambda2=this.lambda/2,this.dlambda2=this.dlambda/2,this.epsilon=t?.epsilon??1e-10,this.distanceFunction=t?.distance??u,this.distance=new Float32Array,this.distanceFunctionName=t?.distanceFunctionName}async initDistance(t){this.dmIndexFunct=c(t.length);const e=new f(!0,!1);this.distance=await e.calc(t,this.distanceFunctionName),e.terminate()}calcDistance(t,e,r){return this.distance[this.dmIndexFunct(e,r)]}async embed(t){const e=t.length,r=l(e,m.dimension,40);let s=this.lambda2;0===this.steps&&(this.steps=t.length-1),await this.initDistance(t);for(let n=0;n<this.cycles;++n){for(let n=0;n<this.steps;++n){const n=o(e);let i=o(e);for(;n==i;)i=o(e);const h=r[n],l=r[i],c=this.calcDistance(t,n,i),f=u(h,l);if(0==this.cutoff||c<=this.cutoff||f<c){const t=s*(c-f)/(f+this.epsilon),e=a(h,l,-1);r[n]=a(h,e,t),r[i]=a(l,e,-t)}}if(s-=this.dlambda2,s<=0)break}return r}}m.dimension=2;class g extends m{async embed(t){const e=t.length,r=l(e,g.dimension,40);let s=this.lambda;await this.initDistance(t);for(let n=0;n<this.cycles;++n){const n=o(e),i=r[n];for(let o=0;o<e;++o){if(n==o)continue;const e=r[o],h=this.calcDistance(t,n,o),l=u(i,e);if(0==this.cutoff||h<=this.cutoff||l<h){const t=s*(h-l)/(l+this.epsilon),n=a(i,e,-1);r[o]=a(e,n,-t)}}if(s-=this.dlambda,s<=0)break}return r}}class p extends m{constructor(t){super(t),this.cycles=t?.cycles??1e3,this.steps=t?.steps??1e5,this.radiusPercent=t?.radiusPercent??1,this.maxDistance=t?.maxDistance??null,this.maxDistanceSteps=t?.maxDistanceSteps??null}async embed(t){const e=t.length,r=l(e,p.dimension,40);if(await this.initDistance(t),null===this.maxDistanceSteps&&(this.maxDistanceSteps=e*Math.floor((e-1)/2)),null===this.maxDistance){this.maxDistance=-1e37;for(let r=0;r<this.maxDistanceSteps;r++){const r=o(e);let s=o(e);for(;r==s;)s=o(e);const n=this.calcDistance(t,r,s);n>this.maxDistance&&(this.maxDistance=n)}}let s=this.lambda;const n=0==this.radiusPercent?this.maxDistance:this.maxDistance*this.radiusPercent;for(let i=0;i<this.cycles;++i){for(let i=0;i<this.steps;++i){const i=o(e);let h=o(e);for(;i==h;)h=o(e);const l=r[i],c=r[h],f=this.calcDistance(t,i,h),m=u(l,c);if(f<=n||m<f){const t=.5*s*(f-m)/(m+this.epsilon),e=a(l,c,-1);r[i]=a(l,e,t),r[h]=a(c,e,-t)}}if(s-=(this.lambda-this.dlambda)/(this.cycles-1),s<this.dlambda)break}return r}}var d,w,y,b,M,x,E=r(1811),S=r(3979),v=r(9657);!function(t){t.Levenshtein="Levenshtein",t.JaroWinkler="Jaro-Winkler",t.Manhattan="Manhattan"}(d||(d={})),function(t){t.Euclidean="Euclidean"}(w||(w={})),function(t){t.Tanimoto="Tanimoto",t.Dice="Dice",t.Asymmetric="Asymmetric",t.BraunBlanquet="Braun-Blanquet",t.Cosine="Cosine",t.Kulczynski="Kulczynski",t.McConnaughey="Mc-Connaughey",t.RogotGoldberg="Rogot-Goldberg",t.Russel="Russel",t.Sokal="Sokal",t.Hamming="Hamming",t.Euclidean="Euclidean"}(y||(y={})),function(t){t.TanimotoIntArray="TanimotoIntArray"}(b||(b={})),function(t){t.Vector="Vector",t.String="String",t.BitArray="BitArray",t.MacroMolecule="MacroMolecule",t.Number="Number",t.IntArray="IntArray"}(M||(M={})),function(t){t.NumericDistance="NumericDistance"}(x||(x={}));var N=r(708);function k(t,e){const r=t.trueCount()+e.trueCount();if(0==r)return 1;const s=t.andWithCountBits(e,!0);return s/(r-s)}function C(t){return 0===t?3402823e32:1/t-1}y.Tanimoto,y.Dice,y.Asymmetric,y.BraunBlanquet,y.Cosine,y.Kulczynski,y.McConnaughey,y.RogotGoldberg,y.Russel,y.Sokal,y.Hamming,y.Euclidean,y.Tanimoto,y.Dice,y.Asymmetric,y.BraunBlanquet,y.Cosine,y.Kulczynski,y.McConnaughey,y.RogotGoldberg,y.Russel,y.Sokal,y.Hamming,y.Euclidean,y.Tanimoto,y.Dice,y.Cosine,y.Tanimoto,y.Asymmetric,y.Cosine,y.Sokal,N.U.HAMMING,N.U.LEVENSHTEIN,N.U.MONOMER_CHEMICAL_DISTANCE;const R={[w.Euclidean]:u},A={[d.Levenshtein]:E.T,[d.JaroWinkler]:S.H$,[d.Manhattan]:function(t,e){if(t.length!==e.length)return 1;{let r=0;for(let s=1;s<t.length;s++)r+=t[s]==e[s]?0:1;return r/t.length}}},F={[y.Tanimoto]:function(t,e){return C(k(t,e))},[y.Dice]:function(t,e){return C(function(t,e){const r=t.trueCount()+e.trueCount();return 0==r?0:2*t.andWithCountBits(e,!0)/r}(t,e))},[y.Asymmetric]:function(t,e){return C(function(t,e){const r=Math.min(t.trueCount(),e.trueCount());return 0==r?0:t.andWithCountBits(e,!0)/r}(t,e))},[y.BraunBlanquet]:function(t,e){return C(function(t,e){const r=Math.max(t.trueCount(),e.trueCount());return 0==r?0:t.andWithCountBits(e,!0)/r}(t,e))},[y.Cosine]:function(t,e){return C(function(t,e){const r=t.trueCount()*e.trueCount();return 0==r?0:t.andWithCountBits(e,!0)/Math.sqrt(r)}(t,e))},[y.Kulczynski]:function(t,e){return C(function(t,e){const r=t.trueCount()+e.trueCount(),s=t.trueCount()*e.trueCount();return 0==s?0:t.andWithCountBits(e,!0)*r/(2*s)}(t,e))},[y.McConnaughey]:function(t,e){return C(function(t,e){const r=t.trueCount()+e.trueCount(),s=t.trueCount()*e.trueCount();return 0==s?0:(t.andWithCountBits(e,!0)*r-s)/s}(t,e))},[y.RogotGoldberg]:function(t,e){return C(function(t,e){const r=t.andWithCountBits(e,!0),s=t.countBits(!0)+e.countBits(!0),n=t.length,i=n-s+r;return r==n||i==n?1:r/s+i/(2*n-s)}(t,e))},[y.Russel]:function(t,e){return C(function(t,e){return 0==t.length?0:t.andWithCountBits(e,!0)/t.length}(t,e))},[y.Sokal]:function(t,e){return C(function(t,e){const r=t.trueCount()+e.trueCount(),s=t.andWithCountBits(e,!0);return s/(2*r-3*s)}(t,e))},[y.Hamming]:function(t,e){return t.trueCount()+e.trueCount()-2*t.andWithCountBits(e,!0)},[y.Euclidean]:function(t,e){return Math.sqrt(t.trueCount()+e.trueCount()-2*t.andWithCountBits(e,!0))}},I={[b.TanimotoIntArray]:function(t,e){return C(k(new v.Z(t,32*t.length),new v.Z(e,32*e.length)))}},z={[x.NumericDistance]:function(t,e){return Math.abs(t-e)}},T={[M.Vector]:{[w.Euclidean]:R[w.Euclidean]},[M.String]:{[d.Levenshtein]:A[d.Levenshtein],[d.JaroWinkler]:A[d.JaroWinkler],[d.Manhattan]:A[d.Manhattan]},[M.BitArray]:{[y.Tanimoto]:F[y.Tanimoto],[y.Dice]:F[y.Dice],[y.Asymmetric]:F[y.Asymmetric],[y.BraunBlanquet]:F[y.BraunBlanquet],[y.Cosine]:F[y.Cosine],[y.Kulczynski]:F[y.Kulczynski],[y.McConnaughey]:F[y.McConnaughey],[y.RogotGoldberg]:F[y.RogotGoldberg],[y.Russel]:F[y.Russel],[y.Sokal]:F[y.Sokal]},[M.MacroMolecule]:{[N.U.HAMMING]:N.o[N.U.HAMMING],[N.U.LEVENSHTEIN]:N.o[N.U.LEVENSHTEIN],[N.U.NEEDLEMANN_WUNSCH]:N.o[N.U.NEEDLEMANN_WUNSCH],[N.U.MONOMER_CHEMICAL_DISTANCE]:N.o[N.U.MONOMER_CHEMICAL_DISTANCE]},[M.Number]:{[x.NumericDistance]:z[x.NumericDistance]},[M.IntArray]:{[b.TanimotoIntArray]:I[b.TanimotoIntArray]}},_=Object.keys(T).reduce(((t,e)=>{for(const r of Object.keys(T[e]))t[r]=e;return t}),{});class D{constructor(t){this.method=t,this.dataType=_[t]}getMeasure(t){const e=T;if(!e.hasOwnProperty(this.dataType)||!e[this.dataType].hasOwnProperty(this.method))throw new Error(`Unknown measure ${this.method} for data type ${this.dataType}`);return r=this.method,_[r]==M.MacroMolecule.toString()?e[this.dataType][this.method](t):e[this.dataType][this.method];var r}static getMetricByDataType(t){return Object.keys(T[t])}static get availableMeasures(){return Object.keys(T)}}function P(t,e){return Math.floor(e()*t)}function V(t){return t()}function O(t){const e=[];for(let r=0;r<t;r++)e.push(void 0);return e}function j(t){return O(t).map(((t,e)=>e))}function q(t,e){return O(t).map((()=>e))}function L(t){return q(t,0)}function $(t){return function(t){return t.reduce(((t,e)=>t+e))}(t)/t.length}function B(t){let e=0;for(let r=0;r<t.length;r++)e=t[r]>e?t[r]:e;return e}function W(t,e,r){const s=L(t);for(let n=0;n<t;n++){let t=!0;for(;t;){const i=P(e,r);let o=!1;for(let t=0;t<n;t++)if(i===s[t]){o=!0;break}o||(t=!1),s[n]=i}}return s}function U(t,e,r){const s=[];let n=0,i=0;if(t.length!==e*r)throw new Error("Array dimensions must match input length.");for(let o=0;o<e;o++){const e=[];for(let s=0;s<r;s++)e.push(t[i]),i+=1;s.push(e),n+=1}return s}function G(t,e){const r=r=>O(t).map((()=>q(e,r))),s=[];return s.push(r(-1)),s.push(r(1/0)),s.push(r(0)),s}function Y(t,e,r){const s=L(t);for(let n=0;n<t;n++){let t=!0,i=0;for(;t;){i=P(e,r);let o=!1;for(let t=0;t<n;t++)if(i===s[t]){o=!0;break}o||(t=!1)}s[n]=i}return s}function H(t,e,r,s,n){e=Math.floor(e);const i=t[0][e],o=t[1][e];if(t[2][e],r>=o[0])return 0;for(let t=0;t<i.length;t++)if(s===i[t])return 0;return K(t,e,r,s,n)}function K(t,e,r,s,n){const i=t[0][e],o=t[1][e],h=t[2][e];if(r>=o[0])return 0;o[0]=r,i[0]=s,h[0]=n;let a=0,l=0;for(;;){const e=2*a+1,s=e+1,n=t[0][0].length;if(e>=n)break;if(s>=n){if(!(o[e]>r))break;l=e}else if(o[e]>=o[s]){if(!(r<o[e]))break;l=e}else{if(!(r<o[s]))break;l=s}o[a]=o[l],i[a]=i[l],h[a]=h[l],a=l}return o[a]=r,i[a]=s,h[a]=n,1}function J(t,e,r,s,n){const i=G(e,s);for(let s=0;s<e;s++)for(let e=0;e<r;e++){if(t[0][s][e]<0)continue;const r=t[0][s][e],o=t[2][s][e],h=V(n);H(i,s,h,r,o),H(i,r,h,s,o),t[2][s][e]=0}return i}function X(t){const e=t[0],r=t[1];for(let t=0;t<e.length;t++){const s=e[t],n=r[t];for(let t=0;t<s.length-1;t++){const e=s.length-t-1,r=n.length-t-1,i=s[0];s[0]=s[e],s[e]=i;const o=n[0];n[0]=n[r],n[r]=o,Q(n,s,r,0)}}return{indices:e,weights:r}}function Q(t,e,r,s){for(;2*s+1<r;){const n=2*s+1,i=n+1;let o=s;if(t[o]<t[n]&&(o=n),i<r&&t[o]<t[i]&&(o=i),o===s)break;{const r=t[s];t[s]=t[o],t[o]=r;const n=e[s];e[s]=e[o],e[o]=n,s=o}}}function Z(t,e){const r=t[0][e],s=t[1][e],n=t[2][e];let i=1/0,o=-1;for(let t=0;t>r.length;t++)1===n[t]&&s[t]<i&&(i=s[t],o=t);return o>=0?(n[o]=0,Math.floor(r[o])):-1}class tt{constructor(t,e,r,s){if(this.entries=new Map,this.nRows=0,this.nCols=0,t.length!==e.length||t.length!==r.length)throw new Error("rows, cols and values arrays must all have the same length");this.nRows=s[0],this.nCols=s[1];for(let s=0;s<r.length;s++){const n=t[s],i=e[s];this.checkDims(n,i);const o=this.makeKey(n,i);this.entries.set(o,{value:r[s],row:n,col:i})}}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,r){this.checkDims(t,e);const s=this.makeKey(t,e);this.entries.has(s)?this.entries.get(s).value=r:this.entries.set(s,{value:r,row:t,col:e})}get(t,e,r=0){const s=this.makeKey(t,e);return this.entries.has(s)?this.entries.get(s).value:r}getAll(t=!0){const e=new Array(this.entries.size).fill(null);let r=0;return this.entries.forEach((t=>{e[r++]=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 r=0;this.entries.forEach((s=>{e[r++]=t(s.value,s.row,s.col)}));const s=[this.nRows,this.nCols];return new tt(this.getRows(),this.getCols(),e,s)}toArray(){const t=O(this.nRows).map((()=>L(this.nCols)));return this.entries.forEach((e=>{t[e.row][e.col]=e.value})),t}}function et(t){const e=t.getRows(),r=t.getCols(),s=t.getValues(),n=r.length,i=new Int32Array(n),o=new Int32Array(n),h=new Float32Array(n);i.set(e),o.set(r),h.set(s);const a=[t.nCols,t.nRows];return new tt(o,i,h,a)}function rt(t,e){return lt(t,e,((t,e)=>t*e))}function st(t,e){return lt(t,e,((t,e)=>t+e))}function nt(t,e){return lt(t,e,((t,e)=>t-e))}function it(t,e){return t.map((t=>t*e))}function ot(t){const e=new Set,r=t.getValues(),s=t.getRows(),n=t.getCols();for(let t=0;t<r.length;t++)0===r[t]&&e.add(t);const i=(t,r)=>!e.has(r),o=r.filter(i),h=s.filter(i),a=n.filter(i);return new tt(h,a,o,t.getDims())}function ht(t,e="l2"){const r=at[e],s=new Map;t.forEach(((t,e,r)=>{const n=s.get(e)||[];n.push(r),s.set(e,n)}));const n=new tt([],[],[],t.getDims());for(let e of s.keys()){const i=s.get(e).sort(),o=r(i.map((r=>t.get(e,r))));for(let t=0;t<o.length;t++)n.set(e,i[t],o[t])}return n}const at={max:t=>{let e=-1/0;for(let r=0;r<t.length;r++)e=t[r]>e?t[r]:e;return t.map((t=>t/e))},l1:t=>{let e=0;for(let r=0;r<t.length;r++)e+=t[r];return t.map((t=>t/e))},l2:t=>{let e=0;for(let r=0;r<t.length;r++)e+=t[r]**2;return t.map((t=>Math.sqrt(t**2/e)))}};function lt(t,e,r){const s=new Set,n=[],i=[],o=[],h=(s,h)=>{n.push(s),i.push(h);const a=r(t.get(s,h),e.get(s,h));o.push(a)},a=t.getValues(),l=t.getRows(),u=t.getCols();for(let t=0;t<a.length;t++){const e=l[t],r=u[t],n=`${e}:${r}`;s.add(n),h(e,r)}const c=e.getValues(),f=e.getRows(),m=e.getCols();for(let t=0;t<c.length;t++){const e=f[t],r=m[t],n=`${e}:${r}`;s.has(n)||h(e,r)}const g=[t.nRows,t.nCols];return new tt(n,i,o,g)}function ut(t){const e=[];t.forEach(((t,r,s)=>{e.push({value:t,row:r,col:s})})),e.sort(((t,e)=>t.row===e.row?t.col-e.col:t.row-e.row));const r=[],s=[],n=[];let i=-1;for(let t=0;t<e.length;t++){const{row:o,col:h,value:a}=e[t];o!==i&&(i=o,n.push(t)),r.push(h),s.push(a)}return{indices:r,values:s,indptr:n}}class ct{constructor(t,e,r,s){this.hyperplanes=t,this.offsets=e,this.children=r,this.indices=s}}function ft(t,e,r,s){const n=Math.max(10,e),i=j(r).map(((e,r)=>function(t,e=30,r,s){return mt(t,j(t.length),e,r,s)}(t,n,r,s))),o=i.map((t=>function(t,e){const r=pt(t),s=dt(t),n=j(r).map((()=>t.hyperplane?1:0)),i=L(r),o=j(r).map((()=>[-1,-1])),h=j(s).map((()=>j(e).map((()=>-1))));return gt(t,n,i,o,h,0,0),new ct(n,i,o,h)}(t,n)));return o}function mt(t,e,r=30,s,n){if(e.length>r){const i=function(t,e,r){let s=P(e.length,r),n=P(e.length,r);n+=s===n?1:0,n%=e.length;const i=e[s],o=e[n];let h=0,a=0;a=t[i]-t[o],h-=a*(t[i]+t[o])/2;let l=0,u=0;const c=L(e.length);for(let s=0;s<e.length;s++){let n=h;n+=a*t[e[s]],0===n?(c[s]=P(2,r),0===c[s]?l+=1:u+=1):n>0?(c[s]=0,l+=1):(c[s]=1,u+=1)}const f=L(l),m=L(u);l=0,u=0;for(let t=0;t<c.length;t++)0===c[t]?(f[l]=e[t],l+=1):(m[u]=e[t],u+=1);return{indicesLeft:f,indicesRight:m,hyperplane:a,offset:h}}(t,e,n),{indicesLeft:o,indicesRight:h,hyperplane:a,offset:l}=i;return{leftChild:mt(t,o,r,s+1,n),rightChild:mt(t,h,r,s+1,n),isLeaf:!1,hyperplane:a,offset:l}}return{indices:e,isLeaf:!0}}function gt(t,e,r,s,n,i,o){if(t.isLeaf)return s[i][0]=-o,n[o].splice(0,t.indices.length,...t.indices),{nodeNum:i,leafNum:o+=1};{e[i]=t.hyperplane,r[i]=t.offset,s[i][0]=i+1;const h=i;let a=gt(t.leftChild,e,r,s,n,i+1,o);return i=a.nodeNum,o=a.leafNum,s[h][1]=i+1,a=gt(t.rightChild,e,r,s,n,i+1,o),{nodeNum:a.nodeNum,leafNum:a.leafNum}}}function pt(t){return t.isLeaf?1:1+pt(t.leftChild)+pt(t.rightChild)}function dt(t){return t.isLeaf?1:dt(t.leftChild)+dt(t.rightChild)}function wt(t,e,r,s){let n=e;return n+=t*r,0===n?P(2,s):n>0?0:1}function yt(t,e,r){let s=0;for(;e.children[s][0]>0;)s=0===wt(e.hyperplanes[s],e.offsets[s],t,r)?e.children[s][0]:e.children[s][1];const n=-1*e.children[s][0];return e.indices[n]}const bt=Object.prototype.toString;function Mt(t){return bt.call(t).endsWith("Array]")}function xt(t,e,r){let s=0;const n=r(e);for(let e=0;e<t.x.length;e++)s+=Math.abs(t.y[e]-n(t.x[e]));return s}const Et=Object.prototype.toString;function St(t){const e=Et.call(t);return e.endsWith("Array]")&&!e.includes("Big")}const vt=Object.prototype.toString;function Nt(t){const e=vt.call(t);return e.endsWith("Array]")&&!e.includes("Big")}const kt=Object.prototype.toString;const Ct=Object.prototype.toString;function Rt(t){var e,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!Nt(t))throw new TypeError("input must be an array");if(0===t.length)throw new TypeError("input must not be empty");if(void 0!==r.output){if(!Nt(r.output))throw new TypeError("output option must be an array if specified");e=r.output}else e=new Array(t.length);var s=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!function(t){const e=Ct.call(t);return e.endsWith("Array]")&&!e.includes("Big")}(t))throw new TypeError("input must be an array");if(0===t.length)throw new TypeError("input must not be empty");var r=e.fromIndex,s=void 0===r?0:r,n=e.toIndex,i=void 0===n?t.length:n;if(s<0||s>=t.length||!Number.isInteger(s))throw new Error("fromIndex must be a positive integer smaller than length");if(i<=s||i>t.length||!Number.isInteger(i))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var o=t[s],h=s+1;h<i;h++)t[h]<o&&(o=t[h]);return o}(t),n=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!function(t){const e=kt.call(t);return e.endsWith("Array]")&&!e.includes("Big")}(t))throw new TypeError("input must be an array");if(0===t.length)throw new TypeError("input must not be empty");var r=e.fromIndex,s=void 0===r?0:r,n=e.toIndex,i=void 0===n?t.length:n;if(s<0||s>=t.length||!Number.isInteger(s))throw new Error("fromIndex must be a positive integer smaller than length");if(i<=s||i>t.length||!Number.isInteger(i))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var o=t[s],h=s+1;h<i;h++)t[h]>o&&(o=t[h]);return o}(t);if(s===n)throw new RangeError("minimum and maximum input values are equal. Cannot rescale a constant array");var i=r.min,o=void 0===i?r.autoMinMax?s:0:i,h=r.max,a=void 0===h?r.autoMinMax?n:1:h;if(o>=a)throw new RangeError("min option must be smaller than max option");for(var l=(a-o)/(n-s),u=0;u<t.length;u++)e[u]=(t[u]-s)*l+o;return e}const At=" ".repeat(2),Ft=" ".repeat(4);function It(t,e={}){const{maxRows:r=15,maxColumns:s=10,maxNumSize:n=8,padMinus:i="auto"}=e;return`${t.constructor.name} {\n${At}[\n${Ft}${function(t,e,r,s,n){const{rows:i,columns:o}=t,h=Math.min(i,e),a=Math.min(o,r),l=[];if("auto"===n){n=!1;t:for(let e=0;e<h;e++)for(let r=0;r<a;r++)if(t.get(e,r)<0){n=!0;break t}}for(let e=0;e<h;e++){let r=[];for(let i=0;i<a;i++)r.push(zt(t.get(e,i),s,n));l.push(`${r.join(" ")}`)}return a!==o&&(l[l.length-1]+=` ... ${o-r} more columns`),h!==i&&l.push(`... ${i-e} more rows`),l.join(`\n${Ft}`)}(t,r,s,n,i)}\n${At}]\n${At}rows: ${t.rows}\n${At}columns: ${t.columns}\n}`}function zt(t,e,r){return(t>=0&&r?` ${Tt(t,e-1)}`:Tt(t,e)).padEnd(e)}function Tt(t,e){let r=t.toString();if(r.length<=e)return r;let s=t.toFixed(e);if(s.length>e&&(s=t.toFixed(Math.max(0,e-(s.length-e)))),s.length<=e&&!s.startsWith("0.000")&&!s.startsWith("-0.000"))return s;let n=t.toExponential(e);return n.length>e&&(n=t.toExponential(Math.max(0,e-(n.length-e)))),n.slice(0)}function _t(t,e,r){let s=r?t.rows:t.rows-1;if(e<0||e>s)throw new RangeError("Row index out of range")}function Dt(t,e,r){let s=r?t.columns:t.columns-1;if(e<0||e>s)throw new RangeError("Column index out of range")}function Pt(t,e){if(e.to1DArray&&(e=e.to1DArray()),e.length!==t.columns)throw new RangeError("vector size must be the same as the number of columns");return e}function Vt(t,e){if(e.to1DArray&&(e=e.to1DArray()),e.length!==t.rows)throw new RangeError("vector size must be the same as the number of rows");return e}function Ot(t,e,r,s,n){if(5!==arguments.length)throw new RangeError("expected 4 arguments");if(qt("startRow",e),qt("endRow",r),qt("startColumn",s),qt("endColumn",n),e>r||s>n||e<0||e>=t.rows||r<0||r>=t.rows||s<0||s>=t.columns||n<0||n>=t.columns)throw new RangeError("Submatrix indices are out of range")}function jt(t,e=0){let r=[];for(let s=0;s<t;s++)r.push(e);return r}function qt(t,e){if("number"!=typeof e)throw new TypeError(`${t} must be a number`)}function Lt(t){if(t.isEmpty())throw new Error("Empty matrix has no elements to index")}class $t{static from1DArray(t,e,r){if(t*e!==r.length)throw new RangeError("data length does not match given dimensions");let s=new Wt(t,e);for(let n=0;n<t;n++)for(let t=0;t<e;t++)s.set(n,t,r[n*e+t]);return s}static rowVector(t){let e=new Wt(1,t.length);for(let r=0;r<t.length;r++)e.set(0,r,t[r]);return e}static columnVector(t){let e=new Wt(t.length,1);for(let r=0;r<t.length;r++)e.set(r,0,t[r]);return e}static zeros(t,e){return new Wt(t,e)}static ones(t,e){return new Wt(t,e).fill(1)}static rand(t,e,r={}){if("object"!=typeof r)throw new TypeError("options must be an object");const{random:s=Math.random}=r;let n=new Wt(t,e);for(let r=0;r<t;r++)for(let t=0;t<e;t++)n.set(r,t,s());return n}static randInt(t,e,r={}){if("object"!=typeof r)throw new TypeError("options must be an object");const{min:s=0,max:n=1e3,random:i=Math.random}=r;if(!Number.isInteger(s))throw new TypeError("min must be an integer");if(!Number.isInteger(n))throw new TypeError("max must be an integer");if(s>=n)throw new RangeError("min must be smaller than max");let o=n-s,h=new Wt(t,e);for(let r=0;r<t;r++)for(let t=0;t<e;t++){let e=s+Math.round(i()*o);h.set(r,t,e)}return h}static eye(t,e,r){void 0===e&&(e=t),void 0===r&&(r=1);let s=Math.min(t,e),n=this.zeros(t,e);for(let t=0;t<s;t++)n.set(t,t,r);return n}static diag(t,e,r){let s=t.length;void 0===e&&(e=s),void 0===r&&(r=e);let n=Math.min(s,e,r),i=this.zeros(e,r);for(let e=0;e<n;e++)i.set(e,e,t[e]);return i}static min(t,e){t=this.checkMatrix(t),e=this.checkMatrix(e);let r=t.rows,s=t.columns,n=new Wt(r,s);for(let i=0;i<r;i++)for(let r=0;r<s;r++)n.set(i,r,Math.min(t.get(i,r),e.get(i,r)));return n}static max(t,e){t=this.checkMatrix(t),e=this.checkMatrix(e);let r=t.rows,s=t.columns,n=new this(r,s);for(let i=0;i<r;i++)for(let r=0;r<s;r++)n.set(i,r,Math.max(t.get(i,r),e.get(i,r)));return n}static checkMatrix(t){return $t.isMatrix(t)?t:new Wt(t)}static isMatrix(t){return null!=t&&"Matrix"===t.klass}get size(){return this.rows*this.columns}apply(t){if("function"!=typeof t)throw new TypeError("callback must be a function");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t.call(this,e,r);return this}to1DArray(){let t=[];for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t.push(this.get(e,r));return t}to2DArray(){let t=[];for(let e=0;e<this.rows;e++){t.push([]);for(let r=0;r<this.columns;r++)t[e].push(this.get(e,r))}return t}toJSON(){return this.to2DArray()}isRowVector(){return 1===this.rows}isColumnVector(){return 1===this.columns}isVector(){return 1===this.rows||1===this.columns}isSquare(){return this.rows===this.columns}isEmpty(){return 0===this.rows||0===this.columns}isSymmetric(){if(this.isSquare()){for(let t=0;t<this.rows;t++)for(let e=0;e<=t;e++)if(this.get(t,e)!==this.get(e,t))return!1;return!0}return!1}isEchelonForm(){let t=0,e=0,r=-1,s=!0,n=!1;for(;t<this.rows&&s;){for(e=0,n=!1;e<this.columns&&!1===n;)0===this.get(t,e)?e++:1===this.get(t,e)&&e>r?(n=!0,r=e):(s=!1,n=!0);t++}return s}isReducedEchelonForm(){let t=0,e=0,r=-1,s=!0,n=!1;for(;t<this.rows&&s;){for(e=0,n=!1;e<this.columns&&!1===n;)0===this.get(t,e)?e++:1===this.get(t,e)&&e>r?(n=!0,r=e):(s=!1,n=!0);for(let r=e+1;r<this.rows;r++)0!==this.get(t,r)&&(s=!1);t++}return s}echelonForm(){let t=this.clone(),e=0,r=0;for(;e<t.rows&&r<t.columns;){let s=e;for(let n=e;n<t.rows;n++)t.get(n,r)>t.get(s,r)&&(s=n);if(0===t.get(s,r))r++;else{t.swapRows(e,s);let n=t.get(e,r);for(let s=r;s<t.columns;s++)t.set(e,s,t.get(e,s)/n);for(let s=e+1;s<t.rows;s++){let n=t.get(s,r)/t.get(e,r);t.set(s,r,0);for(let i=r+1;i<t.columns;i++)t.set(s,i,t.get(s,i)-t.get(e,i)*n)}e++,r++}}return t}reducedEchelonForm(){let t=this.echelonForm(),e=t.columns,r=t.rows,s=r-1;for(;s>=0;)if(0===t.maxRow(s))s--;else{let n=0,i=!1;for(;n<r&&!1===i;)1===t.get(s,n)?i=!0:n++;for(let r=0;r<s;r++){let i=t.get(r,n);for(let o=n;o<e;o++){let e=t.get(r,o)-i*t.get(s,o);t.set(r,o,e)}}s--}return t}set(){throw new Error("set method is unimplemented")}get(){throw new Error("get method is unimplemented")}repeat(t={}){if("object"!=typeof t)throw new TypeError("options must be an object");const{rows:e=1,columns:r=1}=t;if(!Number.isInteger(e)||e<=0)throw new TypeError("rows must be a positive integer");if(!Number.isInteger(r)||r<=0)throw new TypeError("columns must be a positive integer");let s=new Wt(this.rows*e,this.columns*r);for(let t=0;t<e;t++)for(let e=0;e<r;e++)s.setSubMatrix(this,this.rows*t,this.columns*e);return s}fill(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,t);return this}neg(){return this.mulS(-1)}getRow(t){_t(this,t);let e=[];for(let r=0;r<this.columns;r++)e.push(this.get(t,r));return e}getRowVector(t){return Wt.rowVector(this.getRow(t))}setRow(t,e){_t(this,t),e=Pt(this,e);for(let r=0;r<this.columns;r++)this.set(t,r,e[r]);return this}swapRows(t,e){_t(this,t),_t(this,e);for(let r=0;r<this.columns;r++){let s=this.get(t,r);this.set(t,r,this.get(e,r)),this.set(e,r,s)}return this}getColumn(t){Dt(this,t);let e=[];for(let r=0;r<this.rows;r++)e.push(this.get(r,t));return e}getColumnVector(t){return Wt.columnVector(this.getColumn(t))}setColumn(t,e){Dt(this,t),e=Vt(this,e);for(let r=0;r<this.rows;r++)this.set(r,t,e[r]);return this}swapColumns(t,e){Dt(this,t),Dt(this,e);for(let r=0;r<this.rows;r++){let s=this.get(r,t);this.set(r,t,this.get(r,e)),this.set(r,e,s)}return this}addRowVector(t){t=Pt(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)+t[r]);return this}subRowVector(t){t=Pt(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)-t[r]);return this}mulRowVector(t){t=Pt(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)*t[r]);return this}divRowVector(t){t=Pt(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)/t[r]);return this}addColumnVector(t){t=Vt(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)+t[e]);return this}subColumnVector(t){t=Vt(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)-t[e]);return this}mulColumnVector(t){t=Vt(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)*t[e]);return this}divColumnVector(t){t=Vt(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)/t[e]);return this}mulRow(t,e){_t(this,t);for(let r=0;r<this.columns;r++)this.set(t,r,this.get(t,r)*e);return this}mulColumn(t,e){Dt(this,t);for(let r=0;r<this.rows;r++)this.set(r,t,this.get(r,t)*e);return this}max(t){if(this.isEmpty())return NaN;switch(t){case"row":{const t=new Array(this.rows).fill(Number.NEGATIVE_INFINITY);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)>t[e]&&(t[e]=this.get(e,r));return t}case"column":{const t=new Array(this.columns).fill(Number.NEGATIVE_INFINITY);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)>t[r]&&(t[r]=this.get(e,r));return t}case void 0:{let t=this.get(0,0);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)>t&&(t=this.get(e,r));return t}default:throw new Error(`invalid option: ${t}`)}}maxIndex(){Lt(this);let t=this.get(0,0),e=[0,0];for(let r=0;r<this.rows;r++)for(let s=0;s<this.columns;s++)this.get(r,s)>t&&(t=this.get(r,s),e[0]=r,e[1]=s);return e}min(t){if(this.isEmpty())return NaN;switch(t){case"row":{const t=new Array(this.rows).fill(Number.POSITIVE_INFINITY);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)<t[e]&&(t[e]=this.get(e,r));return t}case"column":{const t=new Array(this.columns).fill(Number.POSITIVE_INFINITY);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)<t[r]&&(t[r]=this.get(e,r));return t}case void 0:{let t=this.get(0,0);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)<t&&(t=this.get(e,r));return t}default:throw new Error(`invalid option: ${t}`)}}minIndex(){Lt(this);let t=this.get(0,0),e=[0,0];for(let r=0;r<this.rows;r++)for(let s=0;s<this.columns;s++)this.get(r,s)<t&&(t=this.get(r,s),e[0]=r,e[1]=s);return e}maxRow(t){if(_t(this,t),this.isEmpty())return NaN;let e=this.get(t,0);for(let r=1;r<this.columns;r++)this.get(t,r)>e&&(e=this.get(t,r));return e}maxRowIndex(t){_t(this,t),Lt(this);let e=this.get(t,0),r=[t,0];for(let s=1;s<this.columns;s++)this.get(t,s)>e&&(e=this.get(t,s),r[1]=s);return r}minRow(t){if(_t(this,t),this.isEmpty())return NaN;let e=this.get(t,0);for(let r=1;r<this.columns;r++)this.get(t,r)<e&&(e=this.get(t,r));return e}minRowIndex(t){_t(this,t),Lt(this);let e=this.get(t,0),r=[t,0];for(let s=1;s<this.columns;s++)this.get(t,s)<e&&(e=this.get(t,s),r[1]=s);return r}maxColumn(t){if(Dt(this,t),this.isEmpty())return NaN;let e=this.get(0,t);for(let r=1;r<this.rows;r++)this.get(r,t)>e&&(e=this.get(r,t));return e}maxColumnIndex(t){Dt(this,t),Lt(this);let e=this.get(0,t),r=[0,t];for(let s=1;s<this.rows;s++)this.get(s,t)>e&&(e=this.get(s,t),r[0]=s);return r}minColumn(t){if(Dt(this,t),this.isEmpty())return NaN;let e=this.get(0,t);for(let r=1;r<this.rows;r++)this.get(r,t)<e&&(e=this.get(r,t));return e}minColumnIndex(t){Dt(this,t),Lt(this);let e=this.get(0,t),r=[0,t];for(let s=1;s<this.rows;s++)this.get(s,t)<e&&(e=this.get(s,t),r[0]=s);return r}diag(){let t=Math.min(this.rows,this.columns),e=[];for(let r=0;r<t;r++)e.push(this.get(r,r));return e}norm(t="frobenius"){let e=0;if("max"===t)return this.max();if("frobenius"===t){for(let t=0;t<this.rows;t++)for(let r=0;r<this.columns;r++)e+=this.get(t,r)*this.get(t,r);return Math.sqrt(e)}throw new RangeError(`unknown norm type: ${t}`)}cumulativeSum(){let t=0;for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t+=this.get(e,r),this.set(e,r,t);return this}dot(t){$t.isMatrix(t)&&(t=t.to1DArray());let e=this.to1DArray();if(e.length!==t.length)throw new RangeError("vectors do not have the same size");let r=0;for(let s=0;s<e.length;s++)r+=e[s]*t[s];return r}mmul(t){t=Wt.checkMatrix(t);let e=this.rows,r=this.columns,s=t.columns,n=new Wt(e,s),i=new Float64Array(r);for(let o=0;o<s;o++){for(let e=0;e<r;e++)i[e]=t.get(e,o);for(let t=0;t<e;t++){let e=0;for(let s=0;s<r;s++)e+=this.get(t,s)*i[s];n.set(t,o,e)}}return n}strassen2x2(t){t=Wt.checkMatrix(t);let e=new Wt(2,2);const r=this.get(0,0),s=t.get(0,0),n=this.get(0,1),i=t.get(0,1),o=this.get(1,0),h=t.get(1,0),a=this.get(1,1),l=t.get(1,1),u=(r+a)*(s+l),c=(o+a)*s,f=r*(i-l),m=a*(h-s),g=(r+n)*l,p=u+m-g+(n-a)*(h+l),d=f+g,w=c+m,y=u-c+f+(o-r)*(s+i);return e.set(0,0,p),e.set(0,1,d),e.set(1,0,w),e.set(1,1,y),e}strassen3x3(t){t=Wt.checkMatrix(t);let e=new Wt(3,3);const r=this.get(0,0),s=this.get(0,1),n=this.get(0,2),i=this.get(1,0),o=this.get(1,1),h=this.get(1,2),a=this.get(2,0),l=this.get(2,1),u=this.get(2,2),c=t.get(0,0),f=t.get(0,1),m=t.get(0,2),g=t.get(1,0),p=t.get(1,1),d=t.get(1,2),w=t.get(2,0),y=t.get(2,1),b=t.get(2,2),M=(r-i)*(-f+p),x=(-r+i+o)*(c-f+p),E=(i+o)*(-c+f),S=r*c,v=(-r+a+l)*(c-m+d),N=(-r+a)*(m-d),k=(a+l)*(-c+m),C=(-n+l+u)*(p+w-y),R=(n-u)*(p-y),A=n*w,F=(l+u)*(-w+y),I=(-n+o+h)*(d+w-b),z=(n-h)*(d-b),T=(o+h)*(-w+b),_=S+A+s*g,D=(r+s+n-i-o-l-u)*p+x+E+S+C+A+F,P=S+v+k+(r+s+n-o-h-a-l)*d+A+I+T,V=M+o*(-c+f+g-p-d-w+b)+x+S+A+I+z,O=M+x+E+S+h*y,j=A+I+z+T+i*m,q=S+v+N+l*(-c+m+g-p-d-w+y)+C+R+A,L=C+R+A+F+a*f,$=S+v+N+k+u*b;return e.set(0,0,_),e.set(0,1,D),e.set(0,2,P),e.set(1,0,V),e.set(1,1,O),e.set(1,2,j),e.set(2,0,q),e.set(2,1,L),e.set(2,2,$),e}mmulStrassen(t){t=Wt.checkMatrix(t);let e=this.clone(),r=e.rows,s=e.columns,n=t.rows,i=t.columns;function o(t,e,r){let s=t.rows,n=t.columns;if(s===e&&n===r)return t;{let s=$t.zeros(e,r);return s=s.setSubMatrix(t,0,0),s}}s!==n&&console.warn(`Multiplying ${r} x ${s} and ${n} x ${i} matrix: dimensions do not match.`);let h=Math.max(r,n),a=Math.max(s,i);return e=o(e,h,a),function t(e,r,s,n){if(s<=512||n<=512)return e.mmul(r);s%2==1&&n%2==1?(e=o(e,s+1,n+1),r=o(r,s+1,n+1)):s%2==1?(e=o(e,s+1,n),r=o(r,s+1,n)):n%2==1&&(e=o(e,s,n+1),r=o(r,s,n+1));let i=parseInt(e.rows/2,10),h=parseInt(e.columns/2,10),a=e.subMatrix(0,i-1,0,h-1),l=r.subMatrix(0,i-1,0,h-1),u=e.subMatrix(0,i-1,h,e.columns-1),c=r.subMatrix(0,i-1,h,r.columns-1),f=e.subMatrix(i,e.rows-1,0,h-1),m=r.subMatrix(i,r.rows-1,0,h-1),g=e.subMatrix(i,e.rows-1,h,e.columns-1),p=r.subMatrix(i,r.rows-1,h,r.columns-1),d=t($t.add(a,g),$t.add(l,p),i,h),w=t($t.add(f,g),l,i,h),y=t(a,$t.sub(c,p),i,h),b=t(g,$t.sub(m,l),i,h),M=t($t.add(a,u),p,i,h),x=t($t.sub(f,a),$t.add(l,c),i,h),E=t($t.sub(u,g),$t.add(m,p),i,h),S=$t.add(d,b);S.sub(M),S.add(E);let v=$t.add(y,M),N=$t.add(w,b),k=$t.sub(d,w);k.add(y),k.add(x);let C=$t.zeros(2*S.rows,2*S.columns);return C=C.setSubMatrix(S,0,0),C=C.setSubMatrix(v,S.rows,0),C=C.setSubMatrix(N,0,S.columns),C=C.setSubMatrix(k,S.rows,S.columns),C.subMatrix(0,s-1,0,n-1)}(e,t=o(t,h,a),h,a)}scaleRows(t={}){if("object"!=typeof t)throw new TypeError("options must be an object");const{min:e=0,max:r=1}=t;if(!Number.isFinite(e))throw new TypeError("min must be a number");if(!Number.isFinite(r))throw new TypeError("max must be a number");if(e>=r)throw new RangeError("min must be smaller than max");let s=new Wt(this.rows,this.columns);for(let t=0;t<this.rows;t++){const n=this.getRow(t);n.length>0&&Rt(n,{min:e,max:r,output:n}),s.setRow(t,n)}return s}scaleColumns(t={}){if("object"!=typeof t)throw new TypeError("options must be an object");const{min:e=0,max:r=1}=t;if(!Number.isFinite(e))throw new TypeError("min must be a number");if(!Number.isFinite(r))throw new TypeError("max must be a number");if(e>=r)throw new RangeError("min must be smaller than max");let s=new Wt(this.rows,this.columns);for(let t=0;t<this.columns;t++){const n=this.getColumn(t);n.length&&Rt(n,{min:e,max:r,output:n}),s.setColumn(t,n)}return s}flipRows(){const t=Math.ceil(this.columns/2);for(let e=0;e<this.rows;e++)for(let r=0;r<t;r++){let t=this.get(e,r),s=this.get(e,this.columns-1-r);this.set(e,r,s),this.set(e,this.columns-1-r,t)}return this}flipColumns(){const t=Math.ceil(this.rows/2);for(let e=0;e<this.columns;e++)for(let r=0;r<t;r++){let t=this.get(r,e),s=this.get(this.rows-1-r,e);this.set(r,e,s),this.set(this.rows-1-r,e,t)}return this}kroneckerProduct(t){t=Wt.checkMatrix(t);let e=this.rows,r=this.columns,s=t.rows,n=t.columns,i=new Wt(e*s,r*n);for(let o=0;o<e;o++)for(let e=0;e<r;e++)for(let r=0;r<s;r++)for(let h=0;h<n;h++)i.set(s*o+r,n*e+h,this.get(o,e)*t.get(r,h));return i}kroneckerSum(t){if(t=Wt.checkMatrix(t),!this.isSquare()||!t.isSquare())throw new Error("Kronecker Sum needs two Square Matrices");let e=this.rows,r=t.rows,s=this.kroneckerProduct(Wt.eye(r,r)),n=Wt.eye(e,e).kroneckerProduct(t);return s.add(n)}transpose(){let t=new Wt(this.columns,this.rows);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t.set(r,e,this.get(e,r));return t}sortRows(t=Bt){for(let e=0;e<this.rows;e++)this.setRow(e,this.getRow(e).sort(t));return this}sortColumns(t=Bt){for(let e=0;e<this.columns;e++)this.setColumn(e,this.getColumn(e).sort(t));return this}subMatrix(t,e,r,s){Ot(this,t,e,r,s);let n=new Wt(e-t+1,s-r+1);for(let i=t;i<=e;i++)for(let e=r;e<=s;e++)n.set(i-t,e-r,this.get(i,e));return n}subMatrixRow(t,e,r){if(void 0===e&&(e=0),void 0===r&&(r=this.columns-1),e>r||e<0||e>=this.columns||r<0||r>=this.columns)throw new RangeError("Argument out of range");let s=new Wt(t.length,r-e+1);for(let n=0;n<t.length;n++)for(let i=e;i<=r;i++){if(t[n]<0||t[n]>=this.rows)throw new RangeError(`Row index out of range: ${t[n]}`);s.set(n,i-e,this.get(t[n],i))}return s}subMatrixColumn(t,e,r){if(void 0===e&&(e=0),void 0===r&&(r=this.rows-1),e>r||e<0||e>=this.rows||r<0||r>=this.rows)throw new RangeError("Argument out of range");let s=new Wt(r-e+1,t.length);for(let n=0;n<t.length;n++)for(let i=e;i<=r;i++){if(t[n]<0||t[n]>=this.columns)throw new RangeError(`Column index out of range: ${t[n]}`);s.set(i-e,n,this.get(i,t[n]))}return s}setSubMatrix(t,e,r){if((t=Wt.checkMatrix(t)).isEmpty())return this;Ot(this,e,e+t.rows-1,r,r+t.columns-1);for(let s=0;s<t.rows;s++)for(let n=0;n<t.columns;n++)this.set(e+s,r+n,t.get(s,n));return this}selection(t,e){!function(t,e){if(!St(e))throw new TypeError("row indices must be an array");for(let r=0;r<e.length;r++)if(e[r]<0||e[r]>=t.rows)throw new RangeError("row indices are out of range")}(this,t),function(t,e){if(!St(e))throw new TypeError("column indices must be an array");for(let r=0;r<e.length;r++)if(e[r]<0||e[r]>=t.columns)throw new RangeError("column indices are out of range")}(this,e);let r=new Wt(t.length,e.length);for(let s=0;s<t.length;s++){let n=t[s];for(let t=0;t<e.length;t++){let i=e[t];r.set(s,t,this.get(n,i))}}return r}trace(){let t=Math.min(this.rows,this.columns),e=0;for(let r=0;r<t;r++)e+=this.get(r,r);return e}clone(){let t=new Wt(this.rows,this.columns);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t.set(e,r,this.get(e,r));return t}sum(t){switch(t){case"row":return function(t){let e=jt(t.rows);for(let r=0;r<t.rows;++r)for(let s=0;s<t.columns;++s)e[r]+=t.get(r,s);return e}(this);case"column":return function(t){let e=jt(t.columns);for(let r=0;r<t.rows;++r)for(let s=0;s<t.columns;++s)e[s]+=t.get(r,s);return e}(this);case void 0:return function(t){let e=0;for(let r=0;r<t.rows;r++)for(let s=0;s<t.columns;s++)e+=t.get(r,s);return e}(this);default:throw new Error(`invalid option: ${t}`)}}product(t){switch(t){case"row":return function(t){let e=jt(t.rows,1);for(let r=0;r<t.rows;++r)for(let s=0;s<t.columns;++s)e[r]*=t.get(r,s);return e}(this);case"column":return function(t){let e=jt(t.columns,1);for(let r=0;r<t.rows;++r)for(let s=0;s<t.columns;++s)e[s]*=t.get(r,s);return e}(this);case void 0:return function(t){let e=1;for(let r=0;r<t.rows;r++)for(let s=0;s<t.columns;s++)e*=t.get(r,s);return e}(this);default:throw new Error(`invalid option: ${t}`)}}mean(t){const e=this.sum(t);switch(t){case"row":for(let t=0;t<this.rows;t++)e[t]/=this.columns;return e;case"column":for(let t=0;t<this.columns;t++)e[t]/=this.rows;return e;case void 0:return e/this.size;default:throw new Error(`invalid option: ${t}`)}}variance(t,e={}){if("object"==typeof t&&(e=t,t=void 0),"object"!=typeof e)throw new TypeError("options must be an object");const{unbiased:r=!0,mean:s=this.mean(t)}=e;if("boolean"!=typeof r)throw new TypeError("unbiased must be a boolean");switch(t){case"row":if(!St(s))throw new TypeError("mean must be an array");return function(t,e,r){const s=t.rows,n=t.columns,i=[];for(let o=0;o<s;o++){let s=0,h=0,a=0;for(let e=0;e<n;e++)a=t.get(o,e)-r[o],s+=a,h+=a*a;e?i.push((h-s*s/n)/(n-1)):i.push((h-s*s/n)/n)}return i}(this,r,s);case"column":if(!St(s))throw new TypeError("mean must be an array");return function(t,e,r){const s=t.rows,n=t.columns,i=[];for(let o=0;o<n;o++){let n=0,h=0,a=0;for(let e=0;e<s;e++)a=t.get(e,o)-r[o],n+=a,h+=a*a;e?i.push((h-n*n/s)/(s-1)):i.push((h-n*n/s)/s)}return i}(this,r,s);case void 0:if("number"!=typeof s)throw new TypeError("mean must be a number");return function(t,e,r){const s=t.rows,n=t.columns,i=s*n;let o=0,h=0,a=0;for(let e=0;e<s;e++)for(let s=0;s<n;s++)a=t.get(e,s)-r,o+=a,h+=a*a;return e?(h-o*o/i)/(i-1):(h-o*o/i)/i}(this,r,s);default:throw new Error(`invalid option: ${t}`)}}standardDeviation(t,e){"object"==typeof t&&(e=t,t=void 0);const r=this.variance(t,e);if(void 0===t)return Math.sqrt(r);for(let t=0;t<r.length;t++)r[t]=Math.sqrt(r[t]);return r}center(t,e={}){if("object"==typeof t&&(e=t,t=void 0),"object"!=typeof e)throw new TypeError("options must be an object");const{center:r=this.mean(t)}=e;switch(t){case"row":if(!St(r))throw new TypeError("center must be an array");return function(t,e){for(let r=0;r<t.rows;r++)for(let s=0;s<t.columns;s++)t.set(r,s,t.get(r,s)-e[r])}(this,r),this;case"column":if(!St(r))throw new TypeError("center must be an array");return function(t,e){for(let r=0;r<t.rows;r++)for(let s=0;s<t.columns;s++)t.set(r,s,t.get(r,s)-e[s])}(this,r),this;case void 0:if("number"!=typeof r)throw new TypeError("center must be a number");return function(t,e){for(let r=0;r<t.rows;r++)for(let s=0;s<t.columns;s++)t.set(r,s,t.get(r,s)-e)}(this,r),this;default:throw new Error(`invalid option: ${t}`)}}scale(t,e={}){if("object"==typeof t&&(e=t,t=void 0),"object"!=typeof e)throw new TypeError("options must be an object");let r=e.scale;switch(t){case"row":if(void 0===r)r=function(t){const e=[];for(let r=0;r<t.rows;r++){let s=0;for(let e=0;e<t.columns;e++)s+=Math.pow(t.get(r,e),2)/(t.columns-1);e.push(Math.sqrt(s))}return e}(this);else if(!St(r))throw new TypeError("scale must be an array");return function(t,e){for(let r=0;r<t.rows;r++)for(let s=0;s<t.columns;s++)t.set(r,s,t.get(r,s)/e[r])}(this,r),this;case"column":if(void 0===r)r=function(t){const e=[];for(let r=0;r<t.columns;r++){let s=0;for(let e=0;e<t.rows;e++)s+=Math.pow(t.get(e,r),2)/(t.rows-1);e.push(Math.sqrt(s))}return e}(this);else if(!St(r))throw new TypeError("scale must be an array");return function(t,e){for(let r=0;r<t.rows;r++)for(let s=0;s<t.columns;s++)t.set(r,s,t.get(r,s)/e[s])}(this,r),this;case void 0:if(void 0===r)r=function(t){const e=t.size-1;let r=0;for(let s=0;s<t.columns;s++)for(let n=0;n<t.rows;n++)r+=Math.pow(t.get(n,s),2)/e;return Math.sqrt(r)}(this);else if("number"!=typeof r)throw new TypeError("scale must be a number");return function(t,e){for(let r=0;r<t.rows;r++)for(let s=0;s<t.columns;s++)t.set(r,s,t.get(r,s)/e)}(this,r),this;default:throw new Error(`invalid option: ${t}`)}}toString(t){return It(this,t)}}function Bt(t,e){return t-e}$t.prototype.klass="Matrix","undefined"!=typeof Symbol&&($t.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return It(this)}),$t.random=$t.rand,$t.randomInt=$t.randInt,$t.diagonal=$t.diag,$t.prototype.diagonal=$t.prototype.diag,$t.identity=$t.eye,$t.prototype.negate=$t.prototype.neg,$t.prototype.tensorProduct=$t.prototype.kroneckerProduct;class Wt extends $t{constructor(t,e){if(super(),Wt.isMatrix(t))return t.clone();if(Number.isInteger(t)&&t>=0){if(this.data=[],!(Number.isInteger(e)&&e>=0))throw new TypeError("nColumns must be a positive integer");for(let r=0;r<t;r++)this.data.push(new Float64Array(e))}else{if(!St(t))throw new TypeError("First argument must be a positive number or an array");{const r=t;if("number"!=typeof(e=(t=r.length)?r[0].length:0))throw new TypeError("Data must be a 2D array with at least one element");this.data=[];for(let s=0;s<t;s++){if(r[s].length!==e)throw new RangeError("Inconsistent array dimensions");if(!r[s].every((t=>"number"==typeof t)))throw new TypeError("Input data contains non-numeric values");this.data.push(Float64Array.from(r[s]))}}}this.rows=t,this.columns=e}set(t,e,r){return this.data[t][e]=r,this}get(t,e){return this.data[t][e]}removeRow(t){return _t(this,t),this.data.splice(t,1),this.rows-=1,this}addRow(t,e){return void 0===e&&(e=t,t=this.rows),_t(this,t,!0),e=Float64Array.from(Pt(this,e)),this.data.splice(t,0,e),this.rows+=1,this}removeColumn(t){Dt(this,t);for(let e=0;e<this.rows;e++){const r=new Float64Array(this.columns-1);for(let s=0;s<t;s++)r[s]=this.data[e][s];for(let s=t+1;s<this.columns;s++)r[s-1]=this.data[e][s];this.data[e]=r}return this.columns-=1,this}addColumn(t,e){void 0===e&&(e=t,t=this.columns),Dt(this,t,!0),e=Vt(this,e);for(let r=0;r<this.rows;r++){const s=new Float64Array(this.columns+1);let n=0;for(;n<t;n++)s[n]=this.data[r][n];for(s[n++]=e[r];n<this.columns+1;n++)s[n]=this.data[r][n-1];this.data[r]=s}return this.columns+=1,this}}!function(t,e){t.prototype.add=function(t){return"number"==typeof t?this.addS(t):this.addM(t)},t.prototype.addS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)+t);return this},t.prototype.addM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)+t.get(e,r));return this},t.add=function(t,r){return new e(t).add(r)},t.prototype.sub=function(t){return"number"==typeof t?this.subS(t):this.subM(t)},t.prototype.subS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)-t);return this},t.prototype.subM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)-t.get(e,r));return this},t.sub=function(t,r){return new e(t).sub(r)},t.prototype.subtract=t.prototype.sub,t.prototype.subtractS=t.prototype.subS,t.prototype.subtractM=t.prototype.subM,t.subtract=t.sub,t.prototype.mul=function(t){return"number"==typeof t?this.mulS(t):this.mulM(t)},t.prototype.mulS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)*t);return this},t.prototype.mulM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)*t.get(e,r));return this},t.mul=function(t,r){return new e(t).mul(r)},t.prototype.multiply=t.prototype.mul,t.prototype.multiplyS=t.prototype.mulS,t.prototype.multiplyM=t.prototype.mulM,t.multiply=t.mul,t.prototype.div=function(t){return"number"==typeof t?this.divS(t):this.divM(t)},t.prototype.divS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)/t);return this},t.prototype.divM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)/t.get(e,r));return this},t.div=function(t,r){return new e(t).div(r)},t.prototype.divide=t.prototype.div,t.prototype.divideS=t.prototype.divS,t.prototype.divideM=t.prototype.divM,t.divide=t.div,t.prototype.mod=function(t){return"number"==typeof t?this.modS(t):this.modM(t)},t.prototype.modS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)%t);return this},t.prototype.modM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)%t.get(e,r));return this},t.mod=function(t,r){return new e(t).mod(r)},t.prototype.modulus=t.prototype.mod,t.prototype.modulusS=t.prototype.modS,t.prototype.modulusM=t.prototype.modM,t.modulus=t.mod,t.prototype.and=function(t){return"number"==typeof t?this.andS(t):this.andM(t)},t.prototype.andS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)&t);return this},t.prototype.andM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)&t.get(e,r));return this},t.and=function(t,r){return new e(t).and(r)},t.prototype.or=function(t){return"number"==typeof t?this.orS(t):this.orM(t)},t.prototype.orS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)|t);return this},t.prototype.orM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)|t.get(e,r));return this},t.or=function(t,r){return new e(t).or(r)},t.prototype.xor=function(t){return"number"==typeof t?this.xorS(t):this.xorM(t)},t.prototype.xorS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)^t);return this},t.prototype.xorM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)^t.get(e,r));return this},t.xor=function(t,r){return new e(t).xor(r)},t.prototype.leftShift=function(t){return"number"==typeof t?this.leftShiftS(t):this.leftShiftM(t)},t.prototype.leftShiftS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)<<t);return this},t.prototype.leftShiftM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)<<t.get(e,r));return this},t.leftShift=function(t,r){return new e(t).leftShift(r)},t.prototype.signPropagatingRightShift=function(t){return"number"==typeof t?this.signPropagatingRightShiftS(t):this.signPropagatingRightShiftM(t)},t.prototype.signPropagatingRightShiftS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)>>t);return this},t.prototype.signPropagatingRightShiftM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)>>t.get(e,r));return this},t.signPropagatingRightShift=function(t,r){return new e(t).signPropagatingRightShift(r)},t.prototype.rightShift=function(t){return"number"==typeof t?this.rightShiftS(t):this.rightShiftM(t)},t.prototype.rightShiftS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)>>>t);return this},t.prototype.rightShiftM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)>>>t.get(e,r));return this},t.rightShift=function(t,r){return new e(t).rightShift(r)},t.prototype.zeroFillRightShift=t.prototype.rightShift,t.prototype.zeroFillRightShiftS=t.prototype.rightShiftS,t.prototype.zeroFillRightShiftM=t.prototype.rightShiftM,t.zeroFillRightShift=t.rightShift,t.prototype.not=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,~this.get(t,e));return this},t.not=function(t){return new e(t).not()},t.prototype.abs=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.abs(this.get(t,e)));return this},t.abs=function(t){return new e(t).abs()},t.prototype.acos=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.acos(this.get(t,e)));return this},t.acos=function(t){return new e(t).acos()},t.prototype.acosh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.acosh(this.get(t,e)));return this},t.acosh=function(t){return new e(t).acosh()},t.prototype.asin=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.asin(this.get(t,e)));return this},t.asin=function(t){return new e(t).asin()},t.prototype.asinh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.asinh(this.get(t,e)));return this},t.asinh=function(t){return new e(t).asinh()},t.prototype.atan=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.atan(this.get(t,e)));return this},t.atan=function(t){return new e(t).atan()},t.prototype.atanh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.atanh(this.get(t,e)));return this},t.atanh=function(t){return new e(t).atanh()},t.prototype.cbrt=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.cbrt(this.get(t,e)));return this},t.cbrt=function(t){return new e(t).cbrt()},t.prototype.ceil=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.ceil(this.get(t,e)));return this},t.ceil=function(t){return new e(t).ceil()},t.prototype.clz32=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.clz32(this.get(t,e)));return this},t.clz32=function(t){return new e(t).clz32()},t.prototype.cos=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.cos(this.get(t,e)));return this},t.cos=function(t){return new e(t).cos()},t.prototype.cosh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.cosh(this.get(t,e)));return this},t.cosh=function(t){return new e(t).cosh()},t.prototype.exp=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.exp(this.get(t,e)));return this},t.exp=function(t){return new e(t).exp()},t.prototype.expm1=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.expm1(this.get(t,e)));return this},t.expm1=function(t){return new e(t).expm1()},t.prototype.floor=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.floor(this.get(t,e)));return this},t.floor=function(t){return new e(t).floor()},t.prototype.fround=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.fround(this.get(t,e)));return this},t.fround=function(t){return new e(t).fround()},t.prototype.log=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.log(this.get(t,e)));return this},t.log=function(t){return new e(t).log()},t.prototype.log1p=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.log1p(this.get(t,e)));return this},t.log1p=function(t){return new e(t).log1p()},t.prototype.log10=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.log10(this.get(t,e)));return this},t.log10=function(t){return new e(t).log10()},t.prototype.log2=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.log2(this.get(t,e)));return this},t.log2=function(t){return new e(t).log2()},t.prototype.round=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.round(this.get(t,e)));return this},t.round=function(t){return new e(t).round()},t.prototype.sign=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.sign(this.get(t,e)));return this},t.sign=function(t){return new e(t).sign()},t.prototype.sin=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.sin(this.get(t,e)));return this},t.sin=function(t){return new e(t).sin()},t.prototype.sinh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.sinh(this.get(t,e)));return this},t.sinh=function(t){return new e(t).sinh()},t.prototype.sqrt=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.sqrt(this.get(t,e)));return this},t.sqrt=function(t){return new e(t).sqrt()},t.prototype.tan=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.tan(this.get(t,e)));return this},t.tan=function(t){return new e(t).tan()},t.prototype.tanh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.tanh(this.get(t,e)));return this},t.tanh=function(t){return new e(t).tanh()},t.prototype.trunc=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.trunc(this.get(t,e)));return this},t.trunc=function(t){return new e(t).trunc()},t.pow=function(t,r){return new e(t).pow(r)},t.prototype.pow=function(t){return"number"==typeof t?this.powS(t):this.powM(t)},t.prototype.powS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,Math.pow(this.get(e,r),t));return this},t.prototype.powM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,Math.pow(this.get(e,r),t.get(e,r)));return this}}($t,Wt);class Ut extends $t{constructor(t){super(),this.data=t,this.rows=t.length,this.columns=t[0].length}set(t,e,r){return this.data[t][e]=r,this}get(t,e){return this.data[t][e]}}class Gt{constructor(t){let e,r,s,n,i,o,h,a,l,u=(t=Ut.checkMatrix(t)).clone(),c=u.rows,f=u.columns,m=new Float64Array(c),g=1;for(e=0;e<c;e++)m[e]=e;for(a=new Float64Array(c),r=0;r<f;r++){for(e=0;e<c;e++)a[e]=u.get(e,r);for(e=0;e<c;e++){for(l=Math.min(e,r),i=0,s=0;s<l;s++)i+=u.get(e,s)*a[s];a[e]-=i,u.set(e,r,a[e])}for(n=r,e=r+1;e<c;e++)Math.abs(a[e])>Math.abs(a[n])&&(n=e);if(n!==r){for(s=0;s<f;s++)o=u.get(n,s),u.set(n,s,u.get(r,s)),u.set(r,s,o);h=m[n],m[n]=m[r],m[r]=h,g=-g}if(r<c&&0!==u.get(r,r))for(e=r+1;e<c;e++)u.set(e,r,u.get(e,r)/u.get(r,r))}this.LU=u,this.pivotVector=m,this.pivotSign=g}isSingular(){let t=this.LU,e=t.columns;for(let r=0;r<e;r++)if(0===t.get(r,r))return!0;return!1}solve(t){t=Wt.checkMatrix(t);let e=this.LU;if(e.rows!==t.rows)throw new Error("Invalid matrix dimensions");if(this.isSingular())throw new Error("LU matrix is singular");let r,s,n,i=t.columns,o=t.subMatrixRow(this.pivotVector,0,i-1),h=e.columns;for(n=0;n<h;n++)for(r=n+1;r<h;r++)for(s=0;s<i;s++)o.set(r,s,o.get(r,s)-o.get(n,s)*e.get(r,n));for(n=h-1;n>=0;n--){for(s=0;s<i;s++)o.set(n,s,o.get(n,s)/e.get(n,n));for(r=0;r<n;r++)for(s=0;s<i;s++)o.set(r,s,o.get(r,s)-o.get(n,s)*e.get(r,n))}return o}get determinant(){let t=this.LU;if(!t.isSquare())throw new Error("Matrix must be square");let e=this.pivotSign,r=t.columns;for(let s=0;s<r;s++)e*=t.get(s,s);return e}get lowerTriangularMatrix(){let t=this.LU,e=t.rows,r=t.columns,s=new Wt(e,r);for(let n=0;n<e;n++)for(let e=0;e<r;e++)n>e?s.set(n,e,t.get(n,e)):n===e?s.set(n,e,1):s.set(n,e,0);return s}get upperTriangularMatrix(){let t=this.LU,e=t.rows,r=t.columns,s=new Wt(e,r);for(let n=0;n<e;n++)for(let e=0;e<r;e++)n<=e?s.set(n,e,t.get(n,e)):s.set(n,e,0);return s}get pivotPermutationVector(){return Array.from(this.pivotVector)}}function Yt(t,e){let r=0;return Math.abs(t)>Math.abs(e)?(r=e/t,Math.abs(t)*Math.sqrt(1+r*r)):0!==e?(r=t/e,Math.abs(e)*Math.sqrt(1+r*r)):0}class Ht{constructor(t){let e,r,s,n,i=(t=Ut.checkMatrix(t)).clone(),o=t.rows,h=t.columns,a=new Float64Array(h);for(s=0;s<h;s++){let t=0;for(e=s;e<o;e++)t=Yt(t,i.get(e,s));if(0!==t){for(i.get(s,s)<0&&(t=-t),e=s;e<o;e++)i.set(e,s,i.get(e,s)/t);for(i.set(s,s,i.get(s,s)+1),r=s+1;r<h;r++){for(n=0,e=s;e<o;e++)n+=i.get(e,s)*i.get(e,r);for(n=-n/i.get(s,s),e=s;e<o;e++)i.set(e,r,i.get(e,r)+n*i.get(e,s))}}a[s]=-t}this.QR=i,this.Rdiag=a}solve(t){t=Wt.checkMatrix(t);let e=this.QR,r=e.rows;if(t.rows!==r)throw new Error("Matrix row dimensions must agree");if(!this.isFullRank())throw new Error("Matrix is rank deficient");let s,n,i,o,h=t.columns,a=t.clone(),l=e.columns;for(i=0;i<l;i++)for(n=0;n<h;n++){for(o=0,s=i;s<r;s++)o+=e.get(s,i)*a.get(s,n);for(o=-o/e.get(i,i),s=i;s<r;s++)a.set(s,n,a.get(s,n)+o*e.get(s,i))}for(i=l-1;i>=0;i--){for(n=0;n<h;n++)a.set(i,n,a.get(i,n)/this.Rdiag[i]);for(s=0;s<i;s++)for(n=0;n<h;n++)a.set(s,n,a.get(s,n)-a.get(i,n)*e.get(s,i))}return a.subMatrix(0,l-1,0,h-1)}isFullRank(){let t=this.QR.columns;for(let e=0;e<t;e++)if(0===this.Rdiag[e])return!1;return!0}get upperTriangularMatrix(){let t,e,r=this.QR,s=r.columns,n=new Wt(s,s);for(t=0;t<s;t++)for(e=0;e<s;e++)t<e?n.set(t,e,r.get(t,e)):t===e?n.set(t,e,this.Rdiag[t]):n.set(t,e,0);return n}get orthogonalMatrix(){let t,e,r,s,n=this.QR,i=n.rows,o=n.columns,h=new Wt(i,o);for(r=o-1;r>=0;r--){for(t=0;t<i;t++)h.set(t,r,0);for(h.set(r,r,1),e=r;e<o;e++)if(0!==n.get(r,r)){for(s=0,t=r;t<i;t++)s+=n.get(t,r)*h.get(t,e);for(s=-s/n.get(r,r),t=r;t<i;t++)h.set(t,e,h.get(t,e)+s*n.get(t,r))}}return h}}class Kt{constructor(t,e={}){if((t=Ut.checkMatrix(t)).isEmpty())throw new Error("Matrix must be non-empty");let r=t.rows,s=t.columns;const{computeLeftSingularVectors:n=!0,computeRightSingularVectors:i=!0,autoTranspose:o=!1}=e;let h,a=Boolean(n),l=Boolean(i),u=!1;if(r<s)if(o){h=t.transpose(),r=h.rows,s=h.columns,u=!0;let e=a;a=l,l=e}else h=t.clone(),console.warn("Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose");else h=t.clone();let c=Math.min(r,s),f=Math.min(r+1,s),m=new Float64Array(f),g=new Wt(r,c),p=new Wt(s,s),d=new Float64Array(s),w=new Float64Array(r),y=new Float64Array(f);for(let t=0;t<f;t++)y[t]=t;let b=Math.min(r-1,s),M=Math.max(0,Math.min(s-2,r)),x=Math.max(b,M);for(let t=0;t<x;t++){if(t<b){m[t]=0;for(let e=t;e<r;e++)m[t]=Yt(m[t],h.get(e,t));if(0!==m[t]){h.get(t,t)<0&&(m[t]=-m[t]);for(let e=t;e<r;e++)h.set(e,t,h.get(e,t)/m[t]);h.set(t,t,h.get(t,t)+1)}m[t]=-m[t]}for(let e=t+1;e<s;e++){if(t<b&&0!==m[t]){let s=0;for(let n=t;n<r;n++)s+=h.get(n,t)*h.get(n,e);s=-s/h.get(t,t);for(let n=t;n<r;n++)h.set(n,e,h.get(n,e)+s*h.get(n,t))}d[e]=h.get(t,e)}if(a&&t<b)for(let e=t;e<r;e++)g.set(e,t,h.get(e,t));if(t<M){d[t]=0;for(let e=t+1;e<s;e++)d[t]=Yt(d[t],d[e]);if(0!==d[t]){d[t+1]<0&&(d[t]=0-d[t]);for(let e=t+1;e<s;e++)d[e]/=d[t];d[t+1]+=1}if(d[t]=-d[t],t+1<r&&0!==d[t]){for(let e=t+1;e<r;e++)w[e]=0;for(let e=t+1;e<r;e++)for(let r=t+1;r<s;r++)w[e]+=d[r]*h.get(e,r);for(let e=t+1;e<s;e++){let s=-d[e]/d[t+1];for(let n=t+1;n<r;n++)h.set(n,e,h.get(n,e)+s*w[n])}}if(l)for(let e=t+1;e<s;e++)p.set(e,t,d[e])}}let E=Math.min(s,r+1);if(b<s&&(m[b]=h.get(b,b)),r<E&&(m[E-1]=0),M+1<E&&(d[M]=h.get(M,E-1)),d[E-1]=0,a){for(let t=b;t<c;t++){for(let e=0;e<r;e++)g.set(e,t,0);g.set(t,t,1)}for(let t=b-1;t>=0;t--)if(0!==m[t]){for(let e=t+1;e<c;e++){let s=0;for(let n=t;n<r;n++)s+=g.get(n,t)*g.get(n,e);s=-s/g.get(t,t);for(let n=t;n<r;n++)g.set(n,e,g.get(n,e)+s*g.get(n,t))}for(let e=t;e<r;e++)g.set(e,t,-g.get(e,t));g.set(t,t,1+g.get(t,t));for(let e=0;e<t-1;e++)g.set(e,t,0)}else{for(let e=0;e<r;e++)g.set(e,t,0);g.set(t,t,1)}}if(l)for(let t=s-1;t>=0;t--){if(t<M&&0!==d[t])for(let e=t+1;e<s;e++){let r=0;for(let n=t+1;n<s;n++)r+=p.get(n,t)*p.get(n,e);r=-r/p.get(t+1,t);for(let n=t+1;n<s;n++)p.set(n,e,p.get(n,e)+r*p.get(n,t))}for(let e=0;e<s;e++)p.set(e,t,0);p.set(t,t,1)}let S=E-1,v=0,N=Number.EPSILON;for(;E>0;){let t,e;for(t=E-2;t>=-1&&-1!==t;t--){const e=Number.MIN_VALUE+N*Math.abs(m[t]+Math.abs(m[t+1]));if(Math.abs(d[t])<=e||Number.isNaN(d[t])){d[t]=0;break}}if(t===E-2)e=4;else{let r;for(r=E-1;r>=t&&r!==t;r--){let e=(r!==E?Math.abs(d[r]):0)+(r!==t+1?Math.abs(d[r-1]):0);if(Math.abs(m[r])<=N*e){m[r]=0;break}}r===t?e=3:r===E-1?e=1:(e=2,t=r)}switch(t++,e){case 1:{let e=d[E-2];d[E-2]=0;for(let r=E-2;r>=t;r--){let n=Yt(m[r],e),i=m[r]/n,o=e/n;if(m[r]=n,r!==t&&(e=-o*d[r-1],d[r-1]=i*d[r-1]),l)for(let t=0;t<s;t++)n=i*p.get(t,r)+o*p.get(t,E-1),p.set(t,E-1,-o*p.get(t,r)+i*p.get(t,E-1)),p.set(t,r,n)}break}case 2:{let e=d[t-1];d[t-1]=0;for(let s=t;s<E;s++){let n=Yt(m[s],e),i=m[s]/n,o=e/n;if(m[s]=n,e=-o*d[s],d[s]=i*d[s],a)for(let e=0;e<r;e++)n=i*g.get(e,s)+o*g.get(e,t-1),g.set(e,t-1,-o*g.get(e,s)+i*g.get(e,t-1)),g.set(e,s,n)}break}case 3:{const e=Math.max(Math.abs(m[E-1]),Math.abs(m[E-2]),Math.abs(d[E-2]),Math.abs(m[t]),Math.abs(d[t])),n=m[E-1]/e,i=m[E-2]/e,o=d[E-2]/e,h=m[t]/e,u=d[t]/e,c=((i+n)*(i-n)+o*o)/2,f=n*o*(n*o);let w=0;0===c&&0===f||(w=c<0?0-Math.sqrt(c*c+f):Math.sqrt(c*c+f),w=f/(c+w));let y=(h+n)*(h-n)+w,b=h*u;for(let e=t;e<E-1;e++){let n=Yt(y,b);0===n&&(n=Number.MIN_VALUE);let i=y/n,o=b/n;if(e!==t&&(d[e-1]=n),y=i*m[e]+o*d[e],d[e]=i*d[e]-o*m[e],b=o*m[e+1],m[e+1]=i*m[e+1],l)for(let t=0;t<s;t++)n=i*p.get(t,e)+o*p.get(t,e+1),p.set(t,e+1,-o*p.get(t,e)+i*p.get(t,e+1)),p.set(t,e,n);if(n=Yt(y,b),0===n&&(n=Number.MIN_VALUE),i=y/n,o=b/n,m[e]=n,y=i*d[e]+o*m[e+1],m[e+1]=-o*d[e]+i*m[e+1],b=o*d[e+1],d[e+1]=i*d[e+1],a&&e<r-1)for(let t=0;t<r;t++)n=i*g.get(t,e)+o*g.get(t,e+1),g.set(t,e+1,-o*g.get(t,e)+i*g.get(t,e+1)),g.set(t,e,n)}d[E-2]=y,v+=1;break}case 4:if(m[t]<=0&&(m[t]=m[t]<0?-m[t]:0,l))for(let e=0;e<=S;e++)p.set(e,t,-p.get(e,t));for(;t<S&&!(m[t]>=m[t+1]);){let e=m[t];if(m[t]=m[t+1],m[t+1]=e,l&&t<s-1)for(let r=0;r<s;r++)e=p.get(r,t+1),p.set(r,t+1,p.get(r,t)),p.set(r,t,e);if(a&&t<r-1)for(let s=0;s<r;s++)e=g.get(s,t+1),g.set(s,t+1,g.get(s,t)),g.set(s,t,e);t++}v=0,E--}}if(u){let t=p;p=g,g=t}this.m=r,this.n=s,this.s=m,this.U=g,this.V=p}solve(t){let e=t,r=this.threshold,s=this.s.length,n=Wt.zeros(s,s);for(let t=0;t<s;t++)Math.abs(this.s[t])<=r?n.set(t,t,0):n.set(t,t,1/this.s[t]);let i=this.U,o=this.rightSingularVectors,h=o.mmul(n),a=o.rows,l=i.rows,u=Wt.zeros(a,l);for(let t=0;t<a;t++)for(let e=0;e<l;e++){let r=0;for(let n=0;n<s;n++)r+=h.get(t,n)*i.get(e,n);u.set(t,e,r)}return u.mmul(e)}solveForDiagonal(t){return this.solve(Wt.diag(t))}inverse(){let t=this.V,e=this.threshold,r=t.rows,s=t.columns,n=new Wt(r,this.s.length);for(let i=0;i<r;i++)for(let r=0;r<s;r++)Math.abs(this.s[r])>e&&n.set(i,r,t.get(i,r)/this.s[r]);let i=this.U,o=i.rows,h=i.columns,a=new Wt(r,o);for(let t=0;t<r;t++)for(let e=0;e<o;e++){let r=0;for(let s=0;s<h;s++)r+=n.get(t,s)*i.get(e,s);a.set(t,e,r)}return a}get condition(){return this.s[0]/this.s[Math.min(this.m,this.n)-1]}get norm2(){return this.s[0]}get rank(){let t=Math.max(this.m,this.n)*this.s[0]*Number.EPSILON,e=0,r=this.s;for(let s=0,n=r.length;s<n;s++)r[s]>t&&e++;return e}get diagonal(){return Array.from(this.s)}get threshold(){return Number.EPSILON/2*Math.max(this.m,this.n)*this.s[0]}get leftSingularVectors(){return this.U}get rightSingularVectors(){return this.V}get diagonalMatrix(){return Wt.diag(this.s)}}function Jt(t,e,r,s,n){let i=r*s*s,o=Wt.eye(e.length,e.length,i);const h=n(e);let a=new Float64Array(t.x.length);for(let e=0;e<t.x.length;e++)a[e]=h(t.x[e]);let l=function(t,e,r,s,n){const i=r.length,o=t.x.length;let h=new Array(i);for(let a=0;a<i;a++){h[a]=new Array(o);let i=r.slice();i[a]+=s;let l=n(i);for(let r=0;r<o;r++)h[a][r]=e[r]-l(t.x[r])}return new Wt(h)}(t,a,e,s,n),u=function(t,e){const r=t.x.length;let s=new Array(r);for(let n=0;n<r;n++)s[n]=[t.y[n]-e[n]];return new Wt(s)}(t,a),c=function(t,e=!1){return t=Ut.checkMatrix(t),e?new Kt(t).inverse():function(t,e,r=!1){return t=Ut.checkMatrix(t),e=Ut.checkMatrix(e),r?new Kt(t).solve(e):t.isSquare()?new Gt(t).solve(e):new Ht(t).solve(e)}(t,Wt.eye(t.rows))}(o.add(l.mmul(l.transpose())));return(e=(e=new Wt([e])).sub(c.mmul(l).mmul(u).mul(s).transpose())).to1DArray()}const Xt=1e-5,Qt=.001;class Zt{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=this.nNeighbors,this.distanceFn=te,this.isInitialized=!1,this.rpForest=[],this.embedding=[],this.optimizationState=new ee;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")}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:r,epochsPerSample:s}=this.initializeSimplicialSetEmbedding();return this.optimizationState.head=e,this.optimizationState.tail=r,this.optimizationState.epochsPerSample=s,this.initializeOptimization(),this.prepareForOptimizationLoop(),this.isInitialized=!0,this.getNEpochs()}makeSearchFns(){const{initFromTree:t,initFromRandom:e}=(r=this.distanceFn,{initFromRandom:function(t,e,s,n,i){for(let o=0;o<s.length;o++){const h=W(t,e.length,i);for(let t=0;t<h.length;t++)h[t]<0||H(n,o,r(e[h[t]],s[o]),h[t],1)}},initFromTree:function(t,e,s,n,i){for(let o=0;o<s.length;o++){const h=yt(s[o],t,i);for(let t=0;t<h.length;t++){if(h[t]<0)return;H(n,o,r(e[h[t]],s[o]),h[t],1)}}}});var r;this.initFromTree=t,this.initFromRandom=e,this.search=function(t){return function(e,r,s,n){const{indices:i,indptr:o}=ut(r);for(let r=0;r<n.length;r++){const h=new Set(s[0][r]);for(;;){const a=Z(s,r);if(-1===a)break;const l=i.slice(o[a],o[a+1]);for(const i of l)i===a||-1===i||h.has(i)||(K(s,r,t(e[i],n[r]),i,1),h.add(i))}}return s}}(this.distanceFn)}makeSearchGraph(t){const e=this.knnIndices,r=this.knnDistances,s=[t.length,t.length],n=new tt([],[],[],s);for(let t=0;t<e.length;t++){const s=e[t],i=r[t];for(let e=0;e<s.length;e++){const r=s[e],o=i[e];o>0&&n.set(t,r,o)}}return lt(n,et(n),((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 r=Math.floor(this.nNeighbors*this.transformQueueSize);r=Math.min(e.length,r);const s=function(t,e,r,s,n,i,o){const h=G(r.length,s);if(n(s,e,r,h,o),t)for(let s of t)i(s,e,r,h,o);return h}(this.rpForest,e,t,r,this.initFromRandom,this.initFromTree,this.random),n=this.search(e,this.searchGraph,s,t);let{indices:i,weights:o}=X(n);i=i.map((t=>t.slice(0,this.nNeighbors))),o=o.map((t=>t.slice(0,this.nNeighbors)));const h=Math.max(0,this.localConnectivity-1),{sigmas:a,rhos:l}=this.smoothKNNDistance(o,this.nNeighbors,h),{rows:u,cols:c,vals:f}=this.computeMembershipStrengths(i,o,a,l),m=[t.length,e.length];let g=new tt(u,c,f,m);const p=ut(ht(g,"l1")),d=t.length,w=function(t,e,r){const s=L(t.length).map((t=>L(r[0].length)));for(let n=0;n<t.length;n++)for(let i=0;i<t[0].length;i++)for(let o=0;o<r[0].length;o++){const h=t[n][i];s[n][o]+=e[n][i]*r[h][o]}return s}(U(p.indices,d,this.nNeighbors),U(p.values,d,this.nNeighbors),this.embedding),y=this.nEpochs?this.nEpochs/3:g.nRows<=1e4?100:30,b=g.getValues().reduce(((t,e)=>e>t?e:t),0);g=g.map((t=>t<b/y?0:t)),g=ot(g);const M=this.makeEpochsPerSample(g.getValues(),y),x=g.getRows(),E=g.getCols();return this.assignOptimizationStateParameters({headEmbedding:w,tailEmbedding:this.embedding,head:x,tail:E,currentEpoch:0,nEpochs:y,nVertices:g.getDims()[1],epochsPerSample:M}),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:r}=this,s=function(t,e){return function(r,s,n,i=10,o=50,h=.001,a=.5,l=!0){const u=r.length,c=G(r.length,n);for(let s=0;s<r.length;s++){const i=Y(n,r.length,e);for(let e=0;e<i.length;e++){const n=t(r[s],r[i[e]]);H(c,s,n,i[e],1),H(c,i[e],n,s,1)}}if(l)for(let e=0;e<s.length;e++)for(let n=0;n<s[e].length&&!(s[e][n]<0);n++)for(let i=n+1;i<s[e].length&&!(s[e][i]<0);i++){const o=t(r[s[e][n]],r[s[e][i]]);H(c,s[e][n],o,s[e][i],1),H(c,s[e][i],o,s[e][n],1)}for(let s=0;s<i;s++){const s=J(c,u,n,o,e);let i=0;for(let n=0;n<u;n++)for(let h=0;h<o;h++){let l=Math.floor(s[0][n][h]);if(!(l<0||V(e)<a))for(let e=0;e<o;e++){const o=Math.floor(s[0][n][e]),a=s[2][n][h],u=s[2][n][e];if(o<0||!a&&!u)continue;const f=t(r[l],r[o]);i+=H(c,l,f,o,1),i+=H(c,o,f,l,1)}}if(i<=h*n*r.length)break}return X(c)}}(e,this.random),n=5+Math.floor(.5==(i=t.length**.5/20)?0:Math.round(i));var i;const o=Math.max(5,Math.floor(Math.round((t=>Math.log(t)/Math.log(2))(t.length))));this.rpForest=ft(t,r,n,this.random);const h=function(t){if(t.length>0){const e=[];for(let r of t)e.push(...r.indices);return e}return[[-1]]}(this.rpForest),{indices:a,weights:l}=s(t,h,r,o);return{knnIndices:a,knnDistances:l}}fuzzySimplicialSet(t,e,r=1){const{knnIndices:s=[],knnDistances:n=[],localConnectivity:i}=this,{sigmas:o,rhos:h}=this.smoothKNNDistance(n,e,i),{rows:a,cols:l,vals:u}=this.computeMembershipStrengths(s,n,o,h),c=[t.length,t.length],f=new tt(a,l,u,c),m=et(f),g=rt(f,m),p=nt(st(f,m),g);return st(it(p,r),it(g,1-r))}categoricalSimplicialSetIntersection(t,e,r,s=1){let n=function(t,e,r=1,s=5){return t.map(((t,n,i)=>-1===e[n]||-1===e[i]?t*Math.exp(-r):e[n]!==e[i]?t*Math.exp(-s):t))}(t,e,s,r);return n=ot(n),function(t){const e=et(t=ht(t,"max"));return ot(t=st(t,nt(e,rt(e,t))))}(n)}smoothKNNDistance(t,e,r=1,s=64,n=1){const i=Math.log(e)/Math.log(2)*n,o=L(t.length),h=L(t.length);for(let e=0;e<t.length;e++){let n=0,a=1/0,l=1;const u=t[e],c=u.filter((t=>t>0));if(c.length>=r){let t=Math.floor(r),s=r-t;t>0?(o[e]=c[t-1],s>Xt&&(o[e]+=s*(c[t]-c[t-1]))):o[e]=s*c[0]}else c.length>0&&(o[e]=B(c));for(let r=0;r<s;r++){let r=0;for(let s=1;s<t[e].length;s++){const n=t[e][s]-o[e];r+=n>0?Math.exp(-n/l):1}if(Math.abs(r-i)<Xt)break;r>i?(a=l,l=(n+a)/2):(n=l,a===1/0?l*=2:l=(n+a)/2)}if(h[e]=l,o[e]>0){const t=$(u);h[e]<Qt*t&&(h[e]=Qt*t)}else{const r=$(t.map($));h[e]<Qt*r&&(h[e]=Qt*r)}}return{sigmas:h,rhos:o}}computeMembershipStrengths(t,e,r,s){const n=t.length,i=t[0].length,o=L(n*i),h=L(n*i),a=L(n*i);for(let l=0;l<n;l++)for(let n=0;n<i;n++){let u=0;-1!==t[l][n]&&(u=t[l][n]===l?0:e[l][n]-s[l]<=0?1:Math.exp(-(e[l][n]-s[l])/r[l]),o[l*i+n]=l,h[l*i+n]=t[l][n],a[l*i+n]=u)}return{rows:o,cols:h,vals:a}}initializeSimplicialSetEmbedding(){const t=this.getNEpochs(),{nComponents:e}=this,r=this.graph.getValues();let s=0;for(let t=0;t<r.length;t++){const e=r[t];s<r[t]&&(s=e)}const n=this.graph.map((e=>e<s/t?0:e));this.embedding=L(n.nRows).map((()=>L(e).map((()=>20*V(this.random)-10))));const i=[],o=[],h=[],a=n.getAll();for(let t=0;t<a.length;t++){const e=a[t];e.value&&(i.push(e.value),h.push(e.row),o.push(e.col))}return{head:o,tail:h,epochsPerSample:this.makeEpochsPerSample(i,t)}}makeEpochsPerSample(t,e){const r=q(t.length,-1),s=B(t),n=t.map((t=>t/s*e));return n.forEach(((t,s)=>{t>0&&(r[s]=e/n[s])})),r}assignOptimizationStateParameters(t){Object.assign(this.optimizationState,t)}prepareForOptimizationLoop(){const{repulsionStrength:t,learningRate:e,negativeSampleRate:r}=this,{epochsPerSample:s,headEmbedding:n,tailEmbedding:i}=this.optimizationState,o=n[0].length,h=n.length===i.length,a=s.map((t=>t/r)),l=[...a],u=[...s];this.assignOptimizationStateParameters({epochOfNextSample:u,epochOfNextNegativeSample:l,epochsPerNegativeSample:a,moveOther:h,initialAlpha:e,alpha:e,gamma:t,dim:o})}initializeOptimization(){const t=this.embedding,e=this.embedding,{head:r,tail:s,epochsPerSample:n}=this.optimizationState,i=this.getNEpochs(),o=this.graph.nCols,{a:h,b:a}=function(t,e){const r=function(t,e,r){return O(300).map(((t,r)=>0+r*((e-0)/299)))}(0,3*t).map((t=>t<e?1:t)),s=L(r.length).map(((s,n)=>r[n]>=e?Math.exp(-(r[n]-e)/t):s)),n={x:r,y:s},{parameterValues:i}=function(t,e,r={}){let{maxIterations:s=100,gradientDifference:n=.1,damping:i=0,errorTolerance:o=.01,minValues:h,maxValues:a,initialValues:l}=r;if(i<=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(!Mt(t.x)||t.x.length<2||!Mt(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 u=l||new Array(e.length).fill(1),c=u.length;if(a=a||new Array(c).fill(Number.MAX_SAFE_INTEGER),h=h||new Array(c).fill(Number.MIN_SAFE_INTEGER),a.length!==h.length)throw new Error("minValues and maxValues must be the same size");if(!Mt(u))throw new Error("initialValues must be an array");let f,m=xt(t,u,e),g=m<=o;for(f=0;f<s&&!g;f++){u=Jt(t,u,i,n,e);for(let t=0;t<c;t++)u[t]=Math.min(Math.max(h[t],u[t]),a[t]);if(m=xt(t,u,e),isNaN(m))break;g=m<=o}return{parameterValues:u,parameterError:m,iterations:f}}(n,(([t,e])=>r=>1/(1+t*r**(2*e))),{damping:1.5,initialValues:[.5,.5],gradientDifference:.1,maxIterations:100,errorTolerance:.01}),[o,h]=i;return{a:o,b:h}}(this.spread,this.minDist);this.assignOptimizationStateParameters({headEmbedding:t,tailEmbedding:e,head:r,tail:s,epochsPerSample:n,a:h,b:a,nEpochs:i,nVertices:o})}optimizeLayoutStep(t){const{optimizationState:e}=this,{head:r,tail:s,headEmbedding:n,tailEmbedding:i,epochsPerSample:o,epochOfNextSample:h,epochOfNextNegativeSample:a,epochsPerNegativeSample:l,moveOther:u,initialAlpha:c,alpha:f,gamma:m,a:g,b:p,dim:d,nEpochs:w,nVertices:y}=e;for(let e=0;e<o.length;e++){if(h[e]>t)continue;const c=r[e],w=s[e],b=n[c],M=i[w],x=se(b,M);let E=0;x>0&&(E=-2*g*p*Math.pow(x,p-1),E/=g*Math.pow(x,p)+1);for(let t=0;t<d;t++){const e=re(E*(b[t]-M[t]),4);b[t]+=e*f,u&&(M[t]+=-e*f)}h[e]+=o[e];const S=Math.floor((t-a[e])/l[e]);for(let t=0;t<S;t++){const t=P(y,this.random),e=i[t],r=se(b,e);let s=0;if(r>0)s=2*m*p,s/=(.001+r)*(g*Math.pow(r,p)+1);else if(c===t)continue;for(let t=0;t<d;t++){let r=4;s>0&&(r=re(s*(b[t]-e[t]),4)),b[t]+=r*f}}a[e]+=S*l[e]}return e.alpha=c*(1-t/w),e.currentEpoch+=1,n}optimizeLayoutAsync(t=(()=>!0)){return new Promise(((e,r)=>{const s=async()=>{try{const{nEpochs:r,currentEpoch:n}=this.optimizationState;this.embedding=this.optimizeLayoutStep(n);const i=this.optimizationState.currentEpoch,o=!1===t(i),h=i===r;if(o||h)return e(h);setTimeout((()=>s()),0)}catch(t){r(t)}};setTimeout((()=>s()),0)}))}optimizeLayout(t=(()=>!0)){let e=!1,r=[];for(;!e;){const{nEpochs:s,currentEpoch:n}=this.optimizationState;r=this.optimizeLayoutStep(n);const i=this.optimizationState.currentEpoch,o=!1===t(i);e=i===s||o}return r}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 te(t,e){return Math.abs(t-e)}class ee{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 re(t,e){return t>e?e:t<-e?-e:t}function se(t,e){let r=0;for(let s=0;s<t.length;s++)r+=Math.pow(t[s]-e[s],2);return r}var ne,ie=r(6814);class oe{get data(){return this._data}get size(){return this._size}constructor(t,e){if(null==e){if(null==t)throw new Error("Arguments error: data or size is required.");if(this._data=t,this._size=(1+Math.sqrt(1+8*this._data.length))/2,this._size!=Math.floor(this._size))throw new Error(`Invalid data length ${this._data.length} leads to non integer size ${this._size}`)}else{this._size=e;const r=e*(e-1)/2;if(t){if(t.length!=r)throw new Error(`Invalid data length. Observations size ${e} requires data length ${r}.`);this._data=t}else this._data=new Float32Array(r)}}_linearizeIJ(t,e){if(!(t<e))throw new Error("i must be less than j");return this._size*t+e-Math.floor((t+2)*(t+1)/2)}get(t,e){return t==e?0:t<e?this._data[this._linearizeIJ(t,e)]:this._data[this._linearizeIJ(e,t)]}set(t,e,r){this._data[this._linearizeIJ(t,e)]=r}static calc(t,e){const r=t.length,s=new oe(void 0,r);for(let n=0;n<r;n++)for(let i=n+1;i<r;i++)s.set(n,i,(0,ie.k)(t[n])||(0,ie.k)(t[i])?1:e(t[n],t[i]));return s}square(){for(let t=0;t<this._data.length;t++)this._data[t]=this._data[t]**2}add(t){if(this._size!==t._size)throw new Error(`Matrices must have the same size. This size: ${this._size}, other size: ${t._size}`);for(let e=0;e<this._data.length;e++)this._data[e]+=t._data[e]}sqrt(){for(let t=0;t<this._data.length;t++)this._data[t]=Math.sqrt(this._data[t])}normalize(){let t=0,e=this._data[0];for(let r=0;r<this._data.length;r++)this._data[r]<t&&(t=this._data[r]),this._data[r]>e&&(e=this._data[r]);const r=e-t;for(let s=0;s<this._data.length;s++)this._data[s]=0===r?this._data[s]-t:(this._data[s]-t)/(e-t)}}class he{constructor(){this._workerCount=Math.max(navigator.hardwareConcurrency-2,1),this._workers=new Array(this._workerCount).fill(null).map((()=>new Worker(new URL(r.p+r.u(381),r.b))))}async calc(t,e,r,s){const n=t.length*(t.length-1)/2,i=Math.floor(n/this._workerCount),o=new Array(this._workerCount);for(let h=0;h<this._workerCount;h++)o[h]=new Promise(((o,a)=>{const l=h*i,u=h===this._workerCount-1?n:(h+1)*i;this._workers[h].postMessage({values:t,startIdx:l,endIdx:u,threshold:r,fnName:e,opts:s}),this._workers[h].onmessage=({data:{error:t,i:e,j:r,distance:s}})=>{t?a(t):(this._workers[h].terminate(),o({i:e,j:r,distance:s,idx:h}))}}));const h=await Promise.all(o),a=h.reduce(((t,e)=>t+e.i.length),0),l=new Int32Array(a),u=new Int32Array(a),c=new Float32Array(a);let f=0;for(const t of h)l.set(t.i,f),u.set(t.j,f),c.set(t.distance,f),f+=t.i.length;return{i:l,j:u,distance:c}}static calcSync(t,e,r,s){const n=[],i=[],o=[];let h=0,a=0,l=0;const u=t.length*(t.length-1)/2;for(;h<u;){const u=(0,ie.k)(t[a])||(0,ie.k)(t[l])?1:r(t[a],t[l]);(Object.values(y).some((t=>t===e))?1/(1+u):1-u)>=s&&(n.push(a),i.push(l),o.push(u)),h++,l++,l===t.length&&(a++,l=a+1)}return{i:new Int32Array(n),j:new Int32Array(i),distance:new Float32Array(o)}}}!function(t){t.UMAP="UMAP",t.T_SNE="t-SNE"}(ne||(ne={}));class ae{constructor(t){this.data=t.data}}const le={UMAP:class extends ae{constructor(t){super(t),h("distanceFname"in t),h("distanceFn"in t),this.distanceFnArgs=t?.distanceFnArgs,this.distanceFn=t.distanceFn,this.usingSparseMatrix=!!t.usingSparseMatrix||!!t.sparseMatrix,this.sparseMatrixThreshold=t.sparseMatrixThreshold??.8,this.transferedSparseMatrix=t.sparseMatrix,this.progressFunc=t.progressFunc,this.distanceFname=t.distanceFname,this.dmIndexFunc=c(this.data.length),this.vectors=new Array(this.data.length).fill(0).map(((t,e)=>e)),this.usingDistanceMatrix=!(!t.preCalculateDistanceMatrix&&this.data.length>2e4||this.usingSparseMatrix),this.usingDistanceMatrix?t.distanceFn=this._encodedDistanceMatrix.bind(this):this.usingSparseMatrix?t.distanceFn=this._encodedSparseMatrix.bind(this):t.distanceFn=this._encodedDistance.bind(this),this.data.length<15&&(t.nNeighbors=this.data.length-1),this.reducer=new Zt(t)}_encodedDistanceMatrix(t,e){return t===e?0:t>e?this.distanceMatrix[this.dmIndexFunc(e,t)]:this.distanceMatrix[this.dmIndexFunc(t,e)]}_encodedSparseMatrix(t,e){return this.sparseMatrix.get(t)?.get(e)??this.sparseMatrix.get(e)?.get(t)??1}_encodedDistance(t,e){return this.distanceFn(this.data[t],this.data[e])}async transform(t){if(this.usingDistanceMatrix)this.distanceMatrix=t?await(async()=>{const t=new f(!0,!1);try{const e=await t.calc(this.data,this.distanceFname,!0,this.distanceFnArgs);return t.terminate(),e}catch(e){throw t.terminate(),e}})():(()=>oe.calc(this.data,((t,e)=>this.distanceFn(t,e))).data)();else if(this.usingSparseMatrix){console.time("sparse matrix");let t=this.transferedSparseMatrix??await(new he).calc(this.data,this.distanceFname,this.sparseMatrixThreshold,this.distanceFnArgs);console.timeEnd("sparse matrix");const e=function(t,e,r,s,n){function i(t,e,r,s){if(r>t[t.length-1])return;let n=t.length-2;for(n=t.length-2;n>=0&&!(r>t[n]);n--);t.splice(t.length-1,1),t.splice(n+1,0,r),e.splice(e.length-1,1),e.splice(n+1,0,s)}console.time("knnGraph");const o=new Array(n).fill(null).map((()=>new Array(s).fill(1))),h=new Array(n).fill(null).map((()=>new Array(s).fill(1)));for(let s=0;s<t.length;s++)i(h[t[s]],o[t[s]],r[s],e[s]),i(h[e[s]],o[e[s]],r[s],t[s]);return console.timeEnd("knnGraph"),{knnIndexes:o,knnDistances:h}}(t.i,t.j,t.distance,this.reducer.neighbors,this.data.length);this.reducer.setPrecomputedKNN(e.knnIndexes,e.knnDistances),console.time("sparse matrix to map"),this.sparseMatrix=new Map;for(let e=0;e<t.i.length;++e){const r=t.i[e],s=t.j[e],n=t.distance[e];this.sparseMatrix.has(r)||this.sparseMatrix.set(r,new Map),this.sparseMatrix.get(r).set(s,n)}console.timeEnd("sparse matrix to map"),t.distance=null,t.i=null,t.j=null,t=null,await new Promise((t=>{setTimeout((()=>{t()}),500)}))}const e=await this.reducer.fitAsync(this.vectors,(t=>{this.progressFunc&&this.progressFunc(t,this.reducer.getNEpochs(),this.reducer.getEmbedding())}));return{embedding:(r=e,new Array(r.length).fill(0).map(((t,e)=>n.OW.from(r[e])))),...this.distanceMatrix?{distance:this.distanceMatrix}:{}};var r}},"t-SNE":class extends ae{constructor(t){super(t),this.reducer=new s.Z(t),this.iterations=t?.iterations??100,this.distanceFname=t.distanceFname,this.distanceFn=t.distanceFn}async transform(t){const e=t?await(async()=>{const t=new f(!0,!1);try{const e=await t.calc(this.data,this.distanceFname);return t.terminate(),e}catch(e){throw t.terminate(),e}})():(()=>{const t=oe.calc(this.data,((t,e)=>this.distanceFn(t,e)));return t.normalize(),t.data})(),r=function(t,e){const r=c(e);function s(t,e){const s=Number(t),n=Number(e);return r(s,n)}const n={get:(t,r,n)=>"length"===r?e:new Proxy(t,function(t){return{get:(e,r,n)=>t===r?0:e[Number(t)>Number(r)?s(r,t):s(t,r)]}}(r))};return new Proxy(t,n)}(e,this.data.length);this.reducer.initDataDist(r);for(let t=0;t<this.iterations;++t)this.reducer.step();return{distance:e,embedding:this.reducer.getSolution()}}},SPE:class extends ae{constructor(t){super(t),this.reducer=new m(t)}async transform(){const t=await this.reducer.embed(this.data);return{distance:this.reducer.distance,embedding:t}}},pSPE:class extends ae{constructor(t){super(t),this.reducer=new g(t)}async transform(){const t=await this.reducer.embed(this.data);return{distance:this.reducer.distance,embedding:t}}},OriginalSPE:class extends ae{constructor(t){super(t),this.reducer=new p(t)}async transform(){const t=await this.reducer.embed(this.data);return{distance:this.reducer.distance,embedding:t}}}};class ue{constructor(t,e,r,s){const n=new D(r).getMeasure(s?.distanceFnArgs);let i={};if("BitArray"==_[r])for(let e=0;e<t.length;++e)t[e]=new v.Z(t[e]._data,t[e]._length);i="UMAP"==e?{data:t,distanceFn:n,distanceFname:r,nEpochs:s?.cycles,...s}:"t-SNE"==e?{data:t,distanceFn:n,distanceFname:r,iterations:s?.cycles??void 0,...s}:{data:t,distance:n,distanceFunctionName:r,...s},this.reducer=new le[e](i)}async transform(t=!1,e){if(void 0===this.reducer)throw new Error("Reducer was not defined.");let{embedding:r,distance:s}=await this.reducer.transform(e);var i;return t&&(i=r,r=new Array(i[0].length).fill(0).map(((t,e)=>new n.OW(i.length).fill(0).map(((t,r)=>i[r][e]))))),{distance:s,embedding:r}}static availableMetricsByType(t){return Object.keys(T[t])}static get availableMethods(){return Object.keys(le)}static get availableMetrics(){let t=[];return Object.values(T).forEach((e=>{const r=Object.values(e);t=[...t,...r]})),t}}async function ce(t,e,r){t%5==0&&self.postMessage({epochNum:t,epochsLength:e,embedding:r})}self.onmessage=async({data:{columnData:t,method:e,measure:r,options:s,parallelDistanceWorkers:n}})=>{let i;try{i=await async function(t,e,r,s,n){const i=new ue(t,e,r,{...s,progressFunc:ce});return await i.transform(!0,n)}(t,e,r,s,n)}catch(t){i={error:t}}self.postMessage({error:i.error,distance:i.distance,embedding:i.embedding})}},7659:(t,e,r)=>{e.Z=void 0;var s=r(6215);Object.defineProperty(e,"Z",{enumerable:!0,get:function(){return s.TSNE}})},6215:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.TSNE=void 0,e.TSNE=class{constructor(t){this.returnV=!1,this.vValue=0,this.iter=0,t=t||{},this.perplexity=this.getopt(t,"perplexity",30),this.dim=this.getopt(t,"dim",2),this.epsilon=this.getopt(t,"epsilon",10)}assert(t,e){if(!t)throw e||"Assertion failed"}getopt(t,e,r){return t.hasOwnProperty(e)?t[e]:r}gaussRandom(){if(this.returnV)return this.returnV=!1,this.vValue;const t=2*Math.random()-1,e=2*Math.random()-1,r=t*t+e*e;if(0===r||r>1)return this.gaussRandom();const s=Math.sqrt(-2*Math.log(r)/r);return this.vValue=e*s,this.returnV=!0,t*s}randn(t,e){return t+this.gaussRandom()*e}zeros(t){if(void 0===t||isNaN(t))return[];if("undefined"==typeof ArrayBuffer){const e=new Array(t);for(let r=0;r<t;r++)e[r]=0;return e}return new Float64Array(t)}randn2d(t,e,r){const s=void 0!==r,n=[];for(let i=0;i<t;i++){const t=[];for(let n=0;n<e;n++)s?t.push(r):t.push(this.randn(0,1e-4));n.push(t)}return n}L2(t,e){const r=t.length;let s=0;for(let n=0;n<r;n++){const r=t[n],i=e[n];s+=(r-i)*(r-i)}return s}xtod(t){const e=t.length,r=this.zeros(e*e);for(let s=0;s<e;s++)for(let n=s+1;n<e;n++){const i=this.L2(t[s],t[n]);r[s*e+n]=i,r[n*e+s]=i}return r}d2p(t,e,r){const s=Math.sqrt(t.length),n=Math.floor(s);this.assert(n===s,"D should have square number of elements.");const i=Math.log(e),o=this.zeros(n*n),h=this.zeros(n);for(let e=0;e<n;e++){let s=-1/0,a=1/0,l=1,u=!1;const c=50;let f=0;for(;!u;){let o=0;for(let r=0;r<n;r++){let s=Math.exp(-t[e*n+r]*l);e===r&&(s=0),h[r]=s,o+=s}let m=0;for(let t=0;t<n;t++){let e;e=0===o?0:h[t]/o,h[t]=e,e>1e-7&&(m-=e*Math.log(e))}m>i?(s=l,a===1/0?l*=2:l=(l+a)/2):(a=l,s===-1/0?l/=2:l=(l+s)/2),f++,Math.abs(m-i)<r&&(u=!0),f>=c&&(u=!0)}for(let t=0;t<n;t++)o[e*n+t]=h[t]}const a=this.zeros(n*n),l=2*n;for(let t=0;t<n;t++)for(let e=0;e<n;e++)a[t*n+e]=Math.max((o[t*n+e]+o[e*n+t])/l,1e-100);return a}sign(t){return t>0?1:t<0?-1:0}initDataRaw(t){const e=t.length,r=t[0].length;this.assert(e>0," X is empty? You must have some data!"),this.assert(r>0," X[0] is empty? Where is the data?");const s=this.xtod(t);this.P=this.d2p(s,this.perplexity,1e-4),this.N=e,this.initSolution()}initDataDist(t){const e=t.length;this.assert(e>0," X is empty? You must have some data!");const r=this.zeros(e*e);for(let s=0;s<e;s++)for(let n=s+1;n<e;n++){const i=t[s][n];r[s*e+n]=i,r[n*e+s]=i}this.P=this.d2p(r,this.perplexity,1e-4),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),r=e.cost,s=e.grad,n=this.zeros(this.dim);for(let e=0;e<t;e++)for(let t=0;t<this.dim;t++){const r=s[e][t],i=this.ystep[e][t],o=this.gains[e][t];let h=this.sign(r)===this.sign(i)?.8*o:o+.2;h<.01&&(h=.01),this.gains[e][t]=h;const a=(this.iter<250?.5:.8)*i-this.epsilon*h*s[e][t];this.ystep[e][t]=a,this.Y[e][t]+=a,n[t]+=this.Y[e][t]}for(let e=0;e<t;e++)for(let r=0;r<this.dim;r++)this.Y[e][r]-=n[r]/t;return r}debugGrad(){const t=this.N,e=this.costGrad(this.Y),r=(e.cost,e.grad),s=1e-5;for(let e=0;e<t;e++)for(let t=0;t<this.dim;t++){const n=this.Y[e][t];this.Y[e][t]=n+s;const i=this.costGrad(this.Y);this.Y[e][t]=n-s;const o=this.costGrad(this.Y),h=r[e][t],a=(i.cost-o.cost)/(2*s);console.log(e+","+t+": gradcheck analytic: "+h+" vs. numerical: "+a),this.Y[e][t]=n}}costGrad(t){const e=this.N,r=this.dim,s=this.P,n=this.iter<100?4:1,i=this.zeros(e*e);let o=0;for(let s=0;s<e;s++)for(let n=s+1;n<e;n++){let h=0;for(let e=0;e<r;e++){const r=t[s][e]-t[n][e];h+=r*r}const a=1/(1+h);i[s*e+n]=a,i[n*e+s]=a,o+=2*a}const h=e*e,a=this.zeros(h);for(let t=0;t<h;t++)a[t]=Math.max(i[t]/o,1e-100);let l=0;const u=[];for(let o=0;o<e;o++){const h=new Array(r);for(let t=0;t<r;t++)h[t]=0;for(let u=0;u<e;u++){l+=-s[o*e+u]*Math.log(a[o*e+u]);const c=4*(n*s[o*e+u]-a[o*e+u])*i[o*e+u];for(let e=0;e<r;e++)h[e]+=c*(t[o][e]-t[u][e])}u.push(h)}return{cost:l,grad:u}}}}},s={};function n(t){var e=s[t];if(void 0!==e)return e.exports;var i=s[t]={exports:{}};return r[t](i,i.exports,n),i.exports}n.m=r,n.x=()=>{var t=n.O(void 0,[694],(()=>n(3196)));return n.O(t)},t=[],n.O=(e,r,s,i)=>{if(!r){var o=1/0;for(u=0;u<t.length;u++){for(var[r,s,i]=t[u],h=!0,a=0;a<r.length;a++)(!1&i||o>=i)&&Object.keys(n.O).every((t=>n.O[t](r[a])))?r.splice(a--,1):(h=!1,i<o&&(o=i));if(h){t.splice(u--,1);var l=s();void 0!==l&&(e=l)}}return e}i=i||0;for(var u=t.length;u>0&&t[u-1][2]>i;u--)t[u]=t[u-1];t[u]=[r,s,i]},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.f={},n.e=t=>Promise.all(Object.keys(n.f).reduce(((e,r)=>(n.f[r](t,e),e)),[])),n.u=t=>t+".js",n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),(()=>{var t;n.g.importScripts&&(t=n.g.location+"");var e=n.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var r=e.getElementsByTagName("script");if(r.length)for(var s=r.length-1;s>-1&&!t;)t=r[s--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=t})(),(()=>{n.b=self.location+"";var t={196:1};n.f.i=(e,r)=>{t[e]||importScripts(n.p+n.u(e))};var e=self.webpackChunkpeptides=self.webpackChunkpeptides||[],r=e.push.bind(e);e.push=e=>{var[s,i,o]=e;for(var h in i)n.o(i,h)&&(n.m[h]=i[h]);for(o&&o(n);s.length;)t[s.pop()]=1;r(e)}})(),e=n.x,n.x=()=>n.e(694).then(e);var i=n.x();peptides=i})();
3
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QixJQUloRCxJQURHOEIsR0FBU0EsRUFBUS9CLEdBQ2RPLEVBQVM5bkMsUUFDZGtwQyxFQUFnQnBCLEVBQVN5QixPQUFTLEVBQ25DSCxFQUEyQmxsQyxFQUFLLE1uRG5CN0JqRixFQUFPc29DLEVBQW9CNy9CLEVBQy9CNi9CLEVBQW9CNy9CLEVBQUksSUFDaEI2L0IsRUFBb0I1aUMsRUFBRSxLQUFLNmtDLEtBQUt2cUMsR29ERHhDLElBQUkyb0MsRUFBc0JMLEVBQW9CNy9CIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL2NodW5rIGxvYWRlZCIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvc3RhcnR1cCBjaHVuayBkZXBlbmRlbmNpZXMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvcmFuZG9tLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL2Rpc3RhbmNlLW1hdHJpeC9wcm94eS5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9kaXN0YW5jZS1tYXRyaXgvZGlzdGFuY2UtbWF0cml4LXNlcnZpY2UuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvc3BlLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3R5cGVkLW1ldHJpY3MvY29uc3RzLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL2Rpc3RhbmNlLW1ldHJpY3MtbWV0aG9kcy5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy90eXBlZC1tZXRyaWNzL3R5cGVkLW1ldHJpY3MuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdW1hcC91dGlscy5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy91bWFwL2hlYXAuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdW1hcC9tYXRyaXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdW1hcC90cmVlLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL2lzLWFueS1hcnJheS9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbGV2ZW5iZXJnLW1hcnF1YXJkdC9zcmMvZXJyb3JDYWxjdWxhdGlvbi5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvbm9kZV9tb2R1bGVzL2lzLWFueS1hcnJheS9saWItZXNtL2luZGV4LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLWFycmF5LXJlc2NhbGUvbm9kZV9tb2R1bGVzL2lzLWFueS1hcnJheS9saWItZXNtL2luZGV4LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLWFycmF5LW1heC9ub2RlX21vZHVsZXMvaXMtYW55LWFycmF5L2xpYi1lc20vaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtYXJyYXktbWluL25vZGVfbW9kdWxlcy9pcy1hbnktYXJyYXkvbGliLWVzbS9pbmRleC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1hcnJheS1yZXNjYWxlL2xpYi1lczYvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtYXJyYXktbWluL2xpYi1lczYvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtYXJyYXktbWF4L2xpYi1lczYvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy9pbnNwZWN0LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLW1hdHJpeC9zcmMvdXRpbC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL21hdHJpeC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL3N0YXQuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy9tYXRoT3BlcmF0aW9ucy5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL3dyYXAvV3JhcHBlck1hdHJpeDJELmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLW1hdHJpeC9zcmMvZGMvbHUuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy9kYy91dGlsLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLW1hdHJpeC9zcmMvZGMvcXIuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy9kYy9zdmQuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbGV2ZW5iZXJnLW1hcnF1YXJkdC9zcmMvc3RlcC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL2RlY29tcG9zaXRpb25zLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3VtYXAvdW1hcC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy91bWFwL25uX2Rlc2NlbnQuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbGV2ZW5iZXJnLW1hcnF1YXJkdC9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvcmVkdWNlLWRpbWVuc2lvbmFsaXR5LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL2Rpc3RhbmNlLW1hdHJpeC9kaXN0YW5jZS1tYXRyaXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvZGlzdGFuY2UtbWF0cml4L3NwYXJzZS1tYXRyaXgtc2VydmljZS5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy91bWFwL2tubkdyYXBoLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3dvcmtlcnMvZGltZW5zaW9uYWxpdHktcmVkdWNlci5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9Aa2Vja2VsdC90c25lL2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9Aa2Vja2VsdC90c25lL2xpYi90c25lLmpzIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvZW5zdXJlIGNodW5rIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9nZXQgamF2YXNjcmlwdCBjaHVuayBmaWxlbmFtZSIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvZ2xvYmFsIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL3B1YmxpY1BhdGgiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL2ltcG9ydFNjcmlwdHMgY2h1bmsgbG9hZGluZyIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZmVycmVkID0gW107XG5fX3dlYnBhY2tfcmVxdWlyZV9fLk8gPSAocmVzdWx0LCBjaHVua0lkcywgZm4sIHByaW9yaXR5KSA9PiB7XG5cdGlmKGNodW5rSWRzKSB7XG5cdFx0cHJpb3JpdHkgPSBwcmlvcml0eSB8fCAwO1xuXHRcdGZvcih2YXIgaSA9IGRlZmVycmVkLmxlbmd0aDsgaSA+IDAgJiYgZGVmZXJyZWRbaSAtIDFdWzJdID4gcHJpb3JpdHk7IGktLSkgZGVmZXJyZWRbaV0gPSBkZWZlcnJlZFtpIC0gMV07XG5cdFx0ZGVmZXJyZWRbaV0gPSBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV07XG5cdFx0cmV0dXJuO1xuXHR9XG5cdHZhciBub3RGdWxmaWxsZWQgPSBJbmZpbml0eTtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkZWZlcnJlZC5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV0gPSBkZWZlcnJlZFtpXTtcblx0XHR2YXIgZnVsZmlsbGVkID0gdHJ1ZTtcblx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGNodW5rSWRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRpZiAoKHByaW9yaXR5ICYgMSA9PT0gMCB8fCBub3RGdWxmaWxsZWQgPj0gcHJpb3JpdHkpICYmIE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uTykuZXZlcnkoKGtleSkgPT4gKF9fd2VicGFja19yZXF1aXJlX18uT1trZXldKGNodW5rSWRzW2pdKSkpKSB7XG5cdFx0XHRcdGNodW5rSWRzLnNwbGljZShqLS0sIDEpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZnVsZmlsbGVkID0gZmFsc2U7XG5cdFx0XHRcdGlmKHByaW9yaXR5IDwgbm90RnVsZmlsbGVkKSBub3RGdWxmaWxsZWQgPSBwcmlvcml0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYoZnVsZmlsbGVkKSB7XG5cdFx0XHRkZWZlcnJlZC5zcGxpY2UoaS0tLCAxKVxuXHRcdFx0dmFyIHIgPSBmbigpO1xuXHRcdFx0aWYgKHIgIT09IHVuZGVmaW5lZCkgcmVzdWx0ID0gcjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07IiwidmFyIG5leHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLng7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fLmUoNjk0KS50aGVuKG5leHQpO1xufTsiLCIvKipcbiAqIEdlbmVyYXRlcyBzaW5nbGUgcmFuZG9tIGZsb2F0IGZyb20gMCB0byByYW5nZS5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge251bWJlcn0gcmFuZ2UgTWF4IGdlbmVyYXRpbmcgdmFsdWUuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEEgcmFuZG9tIGZsb2F0IGdlbmVyYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbUZsb2F0KHJhbmdlKSB7XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgKiByYW5nZTtcbn1cbi8qKlxuICogR2VuZXJhdGVzIHNpbmdsZSByYW5kb20gaW50ZWdlciBmcm9tIDAgdG8gcmFuZ2UuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtudW1iZXJ9IHJhbmdlIE1heCBnZW5lcmF0aW5nIHZhbHVlLlxuICogQHJldHVybiB7bnVtYmVyfSBBIHJhbmRvbSBpbnRlZ2VyIGdlbmVyYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbUludChyYW5nZSkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKHJhbmRvbUZsb2F0KHJhbmdlKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbUZ1Wkc5dExtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpY21GdVpHOXRMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQk96czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4WFFVRlhMRU5CUVVNc1MwRkJZVHRKUVVOMlF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhMUVVGTExFTkJRVU03UVVGREwwSXNRMEZCUXp0QlFVVkVPenM3T3pzN1IwRk5SenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNTMEZCWVR0SlFVTnlReXhQUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGVFTXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1IyVnVaWEpoZEdWeklITnBibWRzWlNCeVlXNWtiMjBnWm14dllYUWdabkp2YlNBd0lIUnZJSEpoYm1kbExseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQnlZVzVuWlNCTllYZ2daMlZ1WlhKaGRHbHVaeUIyWVd4MVpTNWNiaUFxSUVCeVpYUjFjbTRnZTI1MWJXSmxjbjBnUVNCeVlXNWtiMjBnWm14dllYUWdaMlZ1WlhKaGRHVmtMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NtRnVaRzl0Um14dllYUW9jbUZ1WjJVNklHNTFiV0psY2lrNklHNTFiV0psY2lCN1hHNGdJSEpsZEhWeWJpQk5ZWFJvTG5KaGJtUnZiU2dwSUNvZ2NtRnVaMlU3WEc1OVhHNWNiaThxS2x4dUlDb2dSMlZ1WlhKaGRHVnpJSE5wYm1kc1pTQnlZVzVrYjIwZ2FXNTBaV2RsY2lCbWNtOXRJREFnZEc4Z2NtRnVaMlV1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUhKaGJtZGxJRTFoZUNCblpXNWxjbUYwYVc1bklIWmhiSFZsTGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQkJJSEpoYm1SdmJTQnBiblJsWjJWeUlHZGxibVZ5WVhSbFpDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhKaGJtUnZiVWx1ZENoeVlXNW5aVG9nYm5WdFltVnlLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUUxaGRHZ3VabXh2YjNJb2NtRnVaRzl0Um14dllYUW9jbUZ1WjJVcEtUdGNibjFjYmlKZGZRPT0iLCJpbXBvcnQgeyBWZWN0b3IgfSBmcm9tICcuL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7IHJhbmRvbUZsb2F0LCByYW5kb21JbnQgfSBmcm9tICcuL3JhbmRvbSc7XG4vKipcbiAqIEFzc2VydHMgYSBjb25kaXRpb24gYnkgdGhyb3dpbmcgYW4gRXJyb3IuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtib29sZWFufSBbY29uZGl0aW9uPWZhbHNlXSBDb25kaXRpb24gdG8gYXNzZXJ0LlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlPSdBc3NlcnRpb24gZXJyb3IuJ10gTWVzc2FnZSB0byBvdXRwdXQuXG4gKiBAdGhyb3dzIHtFcnJvcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24gPSBmYWxzZSwgbWVzc2FnZSA9ICdBc3NlcnRpb24gZXJyb3IuJykge1xuICAgIGlmICghY29uZGl0aW9uKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG59XG4vKipcbiAqIENyZWF0ZXMgbmV3IHR3by1kaW1lbnNpb25hbCBhcnJheSBhbmQgZmlsbHMgaXQgd2l0aCB0aGUgdmFsdWUgZ2l2ZW4uXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjEgVGhlIGZpcnN0IGRpbWVuc2lvbiBvZiB0aGUgY29vcmRpbmF0ZXMgKG51bWJlciBvZiByb3dzKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24yIFRoZSBzZWNvbmQgZGltZW5zaW9uIG9mIHRoZSBjb29yZGluYXRlcyAobnVtYmVyIG9mIGNvbHVtbnMpLlxuICogQHBhcmFtIHtudW1iZXJ9IFtmaWxsPTBdIEEgdmFsdWUgdG8gZmlsbCB0aGUgY29vcmRpbmF0ZXMgd2l0aC5cbiAqIEByZXR1cm4ge0Nvb3JkaW5hdGVzfSBBIHR3by1kaW1lbnNpb25hbCBmaWxsZWQgd2l0aCB0aGUgdmFsdWUgZ2l2ZW4uXG4gKiBAdG9kbyBNaWdodCBiZSBzbG93IHNpbmNlIHVzZWQgQXJyYXkubWFwLiBQcm9iYWJseSBuZWVkcyBwZXJmb3JtYW5jZSByZXZpc2lvbi5cbiAqL1xuZnVuY3Rpb24gaW5pdENvb3JkaW5hdGVzKGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIsIGZpbGwgPSAwKSB7XG4gICAgcmV0dXJuIG5ldyBBcnJheShkaW1lbnNpb24xKS5maWxsKGZpbGwpLm1hcCgoKSA9PiAobmV3IFZlY3RvcihkaW1lbnNpb24yKS5maWxsKGZpbGwpKSk7XG59XG4vKipcbiAqIFRyYW5zcG9zZSBtYXRyaXguXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtNYXRyaXh9IG1hdHJpeCBUaGUgbWF0cml4IHRvIGJlIHRyYW5zcG9zZWQuXG4gKiBAcmV0dXJuIHtNYXRyaXh9IFRyYW5zcG9zZWQgbWF0cml4LlxuICogQHRvZG8gTWlnaHQgYmUgc2xvdyBzaW5jZSB1c2VkIEFycmF5Lm1hcC4gUHJvYmFibHkgbmVlZHMgcGVyZm9ybWFuY2UgcmV2aXNpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc3Bvc2VNYXRyaXgobWF0cml4KSB7XG4gICAgcmV0dXJuIG5ldyBBcnJheShtYXRyaXhbMF0ubGVuZ3RoKS5maWxsKDApXG4gICAgICAgIC5tYXAoKF8sIGkpID0+IChuZXcgVmVjdG9yKG1hdHJpeC5sZW5ndGgpLmZpbGwoMCkubWFwKChfLCBqKSA9PiAobWF0cml4W2pdW2ldKSkpKTtcbn1cbi8qKlxuICogQWRkcyB0d28gdmVjdG9ycyB3aXRoIHRoZSBzZWNvbmQgb25lIHRvIGJlIG11bHRpcGxpZWQgYnkgdGhlIGdpdmVuIHJhdGlvLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yfSBwIFRoZSBmaXJzdCB2ZWN0b3IgdG8gYWRkLlxuICogQHBhcmFtIHtWZWN0b3J9IHEgVGhlIHNlY29uZCB2ZWN0b3IgdG8gYWRkLlxuICogQHBhcmFtIHtudW1iZXJ9IFttdWx0aXBsaWVyPTFdIEEgbXVsdGlwbGllciB0byBiZSB1c2VkIGJlZm9yZSB0aGUgc2Vjb25kIHZlY3RvciBpcyBhZGRlZC5cbiAqIEByZXR1cm4ge1ZlY3Rvcn0gTmV3IHZlY3RvciBjb250YWluZWQgdGhlIHJlc3VsdCBvZiBvcGVyYXRpb24gcCttdWx0aXBsaWVyKnEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JBZGQocCwgcSwgbXVsdGlwbGllciA9IDEpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBwLmxlbmd0aDtcbiAgICBhc3NlcnQobkl0ZW1zID09IHEubGVuZ3RoLCAnVmVjdG9yIGxlbmd0aHMgZG8gbm90IG1hdGNoLicpO1xuICAgIGNvbnN0IHRvdGFsID0gbmV3IFZlY3RvcihuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcC5sZW5ndGg7ICsraSlcbiAgICAgICAgdG90YWxbaV0gPSBwW2ldICsgbXVsdGlwbGllciAqIHFbaV07XG4gICAgcmV0dXJuIHRvdGFsO1xufVxuLyoqXG4gKiBTdW1zIHRoZSB2ZWN0b3IncyBpdGVtcy5cbiAqXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gdiBUaGUgdmVjdG9yIHRvIGJlIHN1bW1lZC5cbiAqIEByZXR1cm4ge251bWJlcn0gVGhlIHZlY3RvcidzIGl0ZW1zIHN1bS5cbiAqL1xuZnVuY3Rpb24gaXRlbXNTdW0odikge1xuICAgIGxldCB0b3RhbCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgKytpKVxuICAgICAgICB0b3RhbCArPSB2W2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbi8qKlxuICogU3VxYXJlcyB0aGUgdmVjdG9yJ3MgaXRlbXMuXG4gKlxuICogQHBhcmFtIHtWZWN0b3J9IHYgVGhlIHZlY3RvciB0byBzcXVhcmUuXG4gKiBAcmV0dXJuIHtWZWN0b3J9IEEgbmV3IHZlY3RvciBjb250YWluaW5nIHRoZSBvcmlnaW5hbCdzIGl0ZW1zIHNxdWFyZWQuXG4gKi9cbmZ1bmN0aW9uIHZlY3RvclNxdWFyZSh2KSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gdi5sZW5ndGg7XG4gICAgY29uc3QgdG90YWwgPSBuZXcgVmVjdG9yKG5JdGVtcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgKytpKVxuICAgICAgICB0b3RhbFtpXSA9IHZbaV0gKiB2W2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JMZW5ndGgodikge1xuICAgIGxldCBzcXJTdW0gPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKylcbiAgICAgICAgc3FyU3VtICs9IHZbaV0gKiB2W2ldO1xuICAgIHJldHVybiBNYXRoLnNxcnQoc3FyU3VtKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JEb3RQcm9kdWN0KHYxLCB2Mikge1xuICAgIGlmICh2MS5sZW5ndGggIT0gdjIubGVuZ3RoKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBkaW1lbnNpb25hbGl0eSBvZiB0aGUgdmVjdG9ycyBtdXN0IG1hdGNoJyk7XG4gICAgbGV0IHByb2QgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdjEubGVuZ3RoOyBpKyspXG4gICAgICAgIHByb2QgKz0gdjFbaV0gKiB2MltpXTtcbiAgICByZXR1cm4gcHJvZDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG1hdHJpeCBmaWxsZWQgd2l0aCByYW5kb20gZmxvYXRpbmcgcG9pbnQgdmFsdWVzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24xIFRoZSBmaXJzdCBkaW1lbnNpb24gb2YgdGhlIG1hdHJpeC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24yIFRoZSBzZWNvbmQgZGltZW5zaW9uIG9mIHRoZSBtYXRyaXguXG4gKiBAcGFyYW0ge251bWJlcn0gW3NjYWxlPTEuXSBNYXggdmFsdWUgZ2l2ZW4gYnkgcmFuZG9tIGdlbmVyYXRvci5cbiAqIEByZXR1cm4ge01hdHJpeH0gQSBuZXcgbWF0cml4IGZpbGxlZCB3aXRoIHJhbmRvbSBmbG9hdGluZyBwb2ludCAgdmFsdWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsbFJhbmRvbU1hdHJpeChkaW1lbnNpb24xLCBkaW1lbnNpb24yLCBzY2FsZSA9IDEuKSB7XG4gICAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltZW5zaW9uMTsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZGltZW5zaW9uMjsgKytqKVxuICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gcmFuZG9tRmxvYXQoc2NhbGUpO1xuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIEV1Y2xpZGVhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWN0b3JzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yfSBwIFRoZSBmaXJzdCB2ZWN0b3IuXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcSBUaGUgc2Vjb25kIHZlY3Rvci5cbiAqIEByZXR1cm4ge251bWJlcn0gRXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gdGhlIGdpdmVuIHZlY3RvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZShwLCBxKSB7XG4gICAgY29uc3QgZGlmZiA9IHZlY3RvckFkZChwLCBxLCAtMSk7XG4gICAgY29uc3Qgc3FkaWZmID0gdmVjdG9yU3F1YXJlKGRpZmYpO1xuICAgIGNvbnN0IHNxZGlmZlN1bW0gPSBpdGVtc1N1bShzcWRpZmYpO1xuICAgIHJldHVybiBNYXRoLnNxcnQoc3FkaWZmU3VtbSk7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBkaXN0YW5jZSBtYXRyaXggdXNpbmcgYSBjdXN0b20gZGlzdGFuY2UgZnVuY3Rpb24uXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3JzfSBkYXRhIElucHV0IHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlcy5cbiAqIEBwYXJhbSB7RGlzdGFuY2VNZXRyaWN9IGRpc3RhbmNlIEN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge01hdHJpeH0gQ2FsY3VsYXRlZCBjdXN0b20gZGlzdGFuY2UgbWF0cml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY0Rpc3RhbmNlTWF0cml4KGRhdGEsIGRpc3RhbmNlKSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gZGF0YS5sZW5ndGg7XG4gICAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKG5JdGVtcywgbkl0ZW1zLCAwKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IG5JdGVtczsgKytqKSB7XG4gICAgICAgICAgICBjb25zdCBkID0gKGRhdGFbaV0gPT0gbnVsbCkgfHwgKGRhdGFbal0gPT0gbnVsbCkgPyAwIDogZGlzdGFuY2UoZGF0YVtpXSwgZGF0YVtqXSk7XG4gICAgICAgICAgICBtYXRyaXhbaV1bal0gPSBtYXRyaXhbal1baV0gPSBkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBkaXN0YW5jZSBtYXRyaXggdXNpbmcgYSBjdXN0b20gZGlzdGFuY2UgZnVuY3Rpb24uXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3JzfSBkYXRhIElucHV0IHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlcy5cbiAqIEBwYXJhbSB7RGlzdGFuY2VNZXRyaWN9IGRpc3RhbmNlIEN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge01hdHJpeH0gQ2FsY3VsYXRlZCBjdXN0b20gZGlzdGFuY2UgbWF0cml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY05vcm1hbGl6ZWREaXN0YW5jZU1hdHJpeChkYXRhLCBkaXN0YW5jZSkge1xuICAgIGNvbnN0IG5JdGVtcyA9IGRhdGEubGVuZ3RoO1xuICAgIGNvbnN0IG1hdHJpeCA9IGluaXRDb29yZGluYXRlcyhuSXRlbXMsIG5JdGVtcywgMCk7XG4gICAgbGV0IG1heCA9IE51bWJlci5NSU5fVkFMVUU7XG4gICAgbGV0IG1pbiA9IE51bWJlci5NQVhfVkFMVUU7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuSXRlbXM7ICsraSkge1xuICAgICAgICBmb3IgKGxldCBqID0gaTsgaiA8IG5JdGVtczsgKytqKSB7XG4gICAgICAgICAgICBjb25zdCBkID0gKGRhdGFbaV0gPT0gbnVsbCkgfHwgKGRhdGFbal0gPT0gbnVsbCB8fCBpID09PSBqKSA/IDAgOiBkaXN0YW5jZShkYXRhW2ldLCBkYXRhW2pdKTtcbiAgICAgICAgICAgIG1hdHJpeFtpXVtqXSA9IG1hdHJpeFtqXVtpXSA9IGQ7XG4gICAgICAgICAgICBpZiAoZCA+IG1heClcbiAgICAgICAgICAgICAgICBtYXggPSBkO1xuICAgICAgICAgICAgaWYgKGQgPCBtaW4pXG4gICAgICAgICAgICAgICAgbWluID0gZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IG5JdGVtczsgKytqKVxuICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gbWF0cml4W2pdW2ldID0gKG1hdHJpeFtpXVtqXSAtIG1pbikgLyAobWF4IC0gbWluKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbn1cbi8qKiBHZW5lcmF0ZXMgYXJyYXkgZnJvbSBhIHJhbmdlIFtiZWdpbjsgZW5kXSBvciBbYmVnaW47IGVuZCkgaWYgZW5kRXhjbHVzaXZlLiAqKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5SYW5nZShiZWdpbiwgZW5kLCBlbmRFeGNsdXNpdmUgPSBmYWxzZSkge1xuICAgIGNvbnN0IG5JdGVtcyA9IGVuZCAtIGJlZ2luICsgKGVuZEV4Y2x1c2l2ZSA/IDAgOiAxKTtcbiAgICBjb25zdCBzZXJpZXMgPSBuZXcgSW50MzJBcnJheShuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpXG4gICAgICAgIHNlcmllc1tpXSA9IGJlZ2luICsgaTtcbiAgICByZXR1cm4gc2VyaWVzO1xufVxuLyoqXG4gKiBSZXR1cm5zIG9yZGVyIG9mIHZhbHVlcyBhcyBpZiB0aGV5IGFyZSBzb3J0ZWQuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHthbnlbXX0gdmFsdWVzIElucHV0IGFycmF5LlxuICogQHBhcmFtIHtib29sZWFufSBbcmV2ZXJzZT1mYWxzZV0gV2hldGhlciB0byByZXR1cm4gcmV2ZXJzZWQgb3JkZXIuXG4gKiBAcmV0dXJuIHtudW1iZXJbXX0gVGhlIG9yZGVyIGNvbXB1dGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJnU29ydCh2YWx1ZXMsIHJldmVyc2UgPSBmYWxzZSkge1xuICAgIGNvbnN0IHNvcnRmbiA9IHJldmVyc2UgPyAoYSwgYikgPT4gKGJbMF0gLSBhWzBdKSA6IChhLCBiKSA9PiAoYVswXSAtIGJbMF0pO1xuICAgIGNvbnN0IGRlY29yID0gKHYsIGkpID0+IFt2LCBpXTsgLy8gc2V0IGluZGV4IHRvIHZhbHVlXG4gICAgY29uc3QgdW5kZWNvciA9IChhKSA9PiBhWzFdOyAvLyBsZWF2ZSBvbmx5IGluZGV4XG4gICAgY29uc3QgX2FyZ3NvcnQgPSAoYXJyKSA9PiBhcnIubWFwKGRlY29yKS5zb3J0KHNvcnRmbikubWFwKHVuZGVjb3IpO1xuICAgIHJldHVybiBfYXJnc29ydCh2YWx1ZXMpO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbmRleGVzIG9mIHRoZSBtb3N0IGRpdmVyc2Ugb2JqZWN0cyBhY2NvcmRpbmcgdG8gdGhlIGRpc3QgZnVuY3Rpb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGggdG90YWwgbnVtYmVyIG9mIG9iamVjdHNcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIG51bWJlciBvZiBkaXZlcnNlIGVsZW1lbnRzIHRvIGZpbmRcbiAqIEBwYXJhbSB7KGkxOiBudW1iZXIsIGkyOiBudW1iZXIpID0+IG51bWJlcn0gZGlzdCBhIGZ1bmN0aW9uIHdoaWNoIGNhbGN1bGF0ZXMgZGlzdGFuY2UgYmV0d2VlblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR3byBvYmplY3RzIHVzaW5nIHRoZWlyIGluZGV4ZXNcbiAqIEByZXR1cm5zIHtudW1iZXJbXX0gVGhlIGluZGV4ZXMgb2YgdGhlIG1vc3QgZGl2ZXJzZSBvYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXZlcnNlU3Vic2V0KGxlbmd0aCwgbiwgZGlzdCkge1xuICAgIGZ1bmN0aW9uIG1heEJ5KHZhbHVlcywgb3JkZXJCeSkge1xuICAgICAgICBsZXQgbWF4VmFsdWUgPSBudWxsO1xuICAgICAgICBsZXQgbWF4T3JkZXJCeSA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRPcmRlckJ5ID0gb3JkZXJCeShlbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChtYXhPcmRlckJ5ID09IG51bGwgfHwgZWxlbWVudE9yZGVyQnkgPiBtYXhPcmRlckJ5KSB7XG4gICAgICAgICAgICAgICAgbWF4VmFsdWUgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIG1heE9yZGVyQnkgPSBlbGVtZW50T3JkZXJCeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHN1YnNldCA9IFtyYW5kb21JbnQobGVuZ3RoIC0gMSldO1xuICAgIGNvbnN0IGNvbXBsZW1lbnQgPSBuZXcgU2V0KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgICAgICBpZiAoIXN1YnNldC5pbmNsdWRlcyhpKSlcbiAgICAgICAgICAgIGNvbXBsZW1lbnQuYWRkKGkpO1xuICAgIH1cbiAgICB3aGlsZSAoc3Vic2V0Lmxlbmd0aCA8IG4pIHtcbiAgICAgICAgY29uc3QgaWR4ID0gbWF4QnkoY29tcGxlbWVudC52YWx1ZXMoKSwgKGkpID0+IE1hdGgubWluLmFwcGx5KE1hdGgsIHN1YnNldC5tYXAoZnVuY3Rpb24gKHZhbCwgaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXN0KGksIHZhbCk7XG4gICAgICAgIH0pKSk7XG4gICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgIHN1YnNldC5wdXNoKGlkeCk7XG4gICAgICAgICAgICBjb21wbGVtZW50LmRlbGV0ZShpZHgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdWJzZXQ7XG59XG4vKipcbiAqIFJldHVybnMgbm9ybWFsaXplZCB2ZWN0b3JcbiAqIEBwYXJhbSB7VmVjdG9yfSBkYXRhIG51bWVyaWNhbCBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKGRhdGEpIHtcbiAgICBsZXQgbWVhbiA9IDA7XG4gICAgbGV0IHN0ZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKVxuICAgICAgICBtZWFuICs9IGRhdGFbaV07XG4gICAgbWVhbiAvPSBkYXRhLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpXG4gICAgICAgIHN0ZCArPSAoZGF0YVtpXSAtIG1lYW4pICogKGRhdGFbaV0gLSBtZWFuKTtcbiAgICBzdGQgPSBNYXRoLnNxcnQoc3RkIC8gZGF0YS5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSlcbiAgICAgICAgZGF0YVtpXSA9IChkYXRhW2ldIC0gbWVhbikgLyBzdGQ7XG4gICAgcmV0dXJuIGRhdGE7XG59XG4vKipcbiAqIEZpbmRzIHNldCBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGxpc3RzLlxuICogQHBhcmFtIHthbnlbXX0gYSBUaGUgZmlyc3QgbGlzdC5cbiAqIEBwYXJhbSB7YW55W119IGIgVGhlIHNlY29uZCBsaXN0LlxuICogQHJldHVybiB7YW55W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXREaWZmZXJlbmNlKGEsIGIpIHtcbiAgICBjb25zdCBiU2V0ID0gbmV3IFNldChiKTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KGEuZmlsdGVyKCh4KSA9PiAhYlNldC5oYXMoeCkpKS52YWx1ZXMoKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkbVZqZEc5eUxXOXdaWEpoZEdsdmJuTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKMlpXTjBiM0l0YjNCbGNtRjBhVzl1Y3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hQUVVGUExFVkJRVk1zVFVGQlRTeEZRVUYxUXl4TlFVRk5MSEZDUVVGeFFpeERRVUZETzBGQlEzcEdMRTlCUVU4c1JVRkJReXhYUVVGWExFVkJRVVVzVTBGQlV5eEZRVUZETEUxQlFVMHNWVUZCVlN4RFFVRkRPMEZCUldoRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1RVRkJUU3hEUVVGRExGbEJRWEZDTEV0QlFVc3NSVUZCUlN4VlFVRnJRaXhyUWtGQmEwSTdTVUZEY2tZc1NVRkJTU3hEUVVGRExGTkJRVk03VVVGRFdpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRemRDTEVOQlFVTTdRVUZGUkRzN096czdPenM3UjBGUlJ6dEJRVU5JTEZOQlFWTXNaVUZCWlN4RFFVRkRMRlZCUVd0Q0xFVkJRVVVzVlVGQmEwSXNSVUZCUlN4UFFVRmxMRU5CUVVNN1NVRkRMMFVzVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjZSaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hsUVVGbExFTkJRVU1zVFVGQll6dEpRVU0xUXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzWkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNSR0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNRMEZCVXl4RlFVRkZMRU5CUVZNc1JVRkJSU3hoUVVGeFFpeERRVUZETzBsQlEzQkZMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZGZUVJc1RVRkJUU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRGhDUVVFNFFpeERRVUZETEVOQlFVTTdTVUZGTTBRc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkZha01zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXk5Q0xFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVlVGQlZTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWMFF5eFBRVUZQTEV0QlFVc3NRMEZCUXp0QlFVTm1MRU5CUVVNN1FVRkZSRHM3T3pzN1IwRkxSenRCUVVOSUxGTkJRVk1zVVVGQlVTeERRVUZETEVOQlFWTTdTVUZEZWtJc1NVRkJTU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJXUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmFFSXNUMEZCVHl4TFFVRkxMRU5CUVVNN1FVRkRaaXhEUVVGRE8wRkJSVVE3T3pzN08wZEJTMGM3UVVGRFNDeFRRVUZUTEZsQlFWa3NRMEZCUXl4RFFVRlRPMGxCUXpkQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkRlRUlzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRmFrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSWHBDTEU5QlFVOHNTMEZCU3l4RFFVRkRPMEZCUTJZc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeFpRVUZaTEVOQlFVTXNRMEZCVXp0SlFVTndReXhKUVVGSkxFMUJRVTBzUjBGQlZ5eERRVUZETEVOQlFVTTdTVUZEZGtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlZ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlEzWkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM2hDTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU16UWl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHZENRVUZuUWl4RFFVRkRMRVZCUVZVc1JVRkJSU3hGUVVGVk8wbEJRM0pFTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTFCUVUwc1NVRkJTU3hGUVVGRkxFTkJRVU1zVFVGQlRUdFJRVU40UWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExEaERRVUU0UXl4RFFVRkRMRU5CUVVNN1NVRkRiRVVzU1VGQlNTeEpRVUZKTEVkQlFWY3NRMEZCUXl4RFFVRkRPMGxCUTNKQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFWY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTjRReXhKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU40UWl4UFFVRlBMRWxCUVVrc1EwRkJRenRCUVVOa0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxFMUJRVTBzVlVGQlZTeG5Ra0ZCWjBJc1EwRkJReXhWUVVGclFpeEZRVUZGTEZWQlFXdENMRVZCUVVVc1VVRkJaMElzUlVGQlJUdEpRVU42Uml4TlFVRk5MRTFCUVUwc1IwRkJSeXhsUVVGbExFTkJRVU1zVlVGQlZTeEZRVUZGTEZWQlFWVXNRMEZCUXl4RFFVRkRPMGxCUlhaRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhWUVVGVkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZEYmtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRlZCUVZVc1JVRkJSU3hGUVVGRkxFTkJRVU03V1VGRGFrTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEZkQlFWY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRMUVVOeVF6dEpRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU03UVVGRlJEczdPenM3T3p0SFFVOUhPMEZCUTBnc1RVRkJUU3hWUVVGVkxEQkNRVUV3UWl4RFFVRkRMRU5CUVZNc1JVRkJSU3hEUVVGVE8wbEJRemRFTEUxQlFVMHNTVUZCU1N4SFFVRkhMRk5CUVZNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRha01zVFVGQlRTeE5RVUZOTEVkQlFVY3NXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRMnhETEUxQlFVMHNWVUZCVlN4SFFVRkhMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEpRVU53UXl4UFFVRlBMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdRVUZETDBJc1EwRkJRenRCUVVWRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc2EwSkJRV3RDTEVOQlFVTXNTVUZCWVN4RlFVRkZMRkZCUVhkQ08wbEJRM2hGTEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRE0wSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1pVRkJaU3hEUVVGRExFMUJRVTBzUlVGQlJTeE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZiRVFzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTXZRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTnVReXhOUVVGTkxFTkJRVU1zUjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6RkdMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMU5CUTJwRE8wdEJRMFk3U1VGRFJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3cwUWtGQk5FSXNRMEZCUXl4SlFVRmhMRVZCUVVVc1VVRkJkMEk3U1VGRGJFWXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dEpRVU16UWl4TlFVRk5MRTFCUVUwc1IwRkJSeXhsUVVGbExFTkJRVU1zVFVGQlRTeEZRVUZGTEUxQlFVMHNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOc1JDeEpRVUZKTEVkQlFVY3NSMEZCUnl4TlFVRk5MRU5CUVVNc1UwRkJVeXhEUVVGRE8wbEJRek5DTEVsQlFVa3NSMEZCUnl4SFFVRkhMRTFCUVUwc1EwRkJReXhUUVVGVExFTkJRVU03U1VGRE0wSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRSUVVNdlFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUXk5Q0xFMUJRVTBzUTBGQlF5eEhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOeVJ5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU5vUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhIUVVGSE8yZENRVUZGTEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRja0lzU1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnp0blFrRkJSU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzFOQlEzUkNPMHRCUTBZN1NVRkRSQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlF5OUNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF6dFpRVU5xUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzB0QlEzQkZPMGxCUTBRc1QwRkJUeXhOUVVGTkxFTkJRVU03UVVGRGFFSXNRMEZCUXp0QlFVVkVMR3RHUVVGclJqdEJRVU5zUml4TlFVRk5MRlZCUVZVc1VVRkJVU3hEUVVGRExFdEJRV0VzUlVGQlJTeEhRVUZYTEVWQlFVVXNXVUZCV1N4SFFVRkhMRXRCUVVzN1NVRkRka1VzVFVGQlRTeE5RVUZOTEVkQlFVY3NSMEZCUnl4SFFVRkhMRXRCUVVzc1IwRkJSeXhEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU53UkN4TlFVRk5MRTFCUVUwc1IwRkJSeXhKUVVGSkxGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0SlFVVjBReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF6dFJRVU0zUWl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVVjRRaXhQUVVGUExFMUJRVTBzUTBGQlF6dEJRVU5vUWl4RFFVRkRPMEZCUlVRN096czdPenM3UjBGUFJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4UFFVRlBMRU5CUVVNc1RVRkJZU3hGUVVGRkxFOUJRVThzUjBGQlJ5eExRVUZMTzBsQlEzQkVMRTFCUVUwc1RVRkJUU3hIUVVGSExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRlJMRVZCUVVVc1EwRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGUkxFVkJRVVVzUTBGQlVTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOMlJ5eE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVUwc1JVRkJSU3hEUVVGVExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zY1VKQlFYRkNPMGxCUTJ4RkxFMUJRVTBzVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCVVN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4dFFrRkJiVUk3U1VGRGRrUXNUVUZCVFN4UlFVRlJMRWRCUVVjc1EwRkJReXhIUVVGVkxFVkJRVVVzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dEpRVU14UlN4UFFVRlBMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU14UWl4RFFVRkRPMEZCUlVRN096czdPenM3UjBGUFJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4blFrRkJaMElzUTBGQlF5eE5RVUZqTEVWQlFVVXNRMEZCVXl4RlFVRkZMRWxCUVhkRE8wbEJRMnhITEZOQlFWTXNTMEZCU3l4RFFVRkRMRTFCUVdkRExFVkJRVVVzVDBGQk9FSTdVVUZETjBVc1NVRkJTU3hSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEzQkNMRWxCUVVrc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVVYwUWl4TFFVRkxMRTFCUVUwc1QwRkJUeXhKUVVGSkxFMUJRVTBzUlVGQlJUdFpRVU0xUWl4TlFVRk5MR05CUVdNc1IwRkJSeXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdXVUZEZUVNc1NVRkJTU3hWUVVGVkxFbEJRVWtzU1VGQlNTeEpRVUZKTEdOQlFXTXNSMEZCUnl4VlFVRlZMRVZCUVVVN1owSkJRM0pFTEZGQlFWRXNSMEZCUnl4UFFVRlBMRU5CUVVNN1owSkJRMjVDTEZWQlFWVXNSMEZCUnl4alFVRmpMRU5CUVVNN1lVRkROMEk3VTBGRFJqdFJRVU5FTEU5QlFVOHNVVUZCVVN4RFFVRkRPMGxCUTJ4Q0xFTkJRVU03U1VGRlJDeE5RVUZOTEUxQlFVMHNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjJReXhOUVVGTkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMGxCUlRkQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZETDBJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNKQ0xGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRja0k3U1VGRlJDeFBRVUZQTEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8xRkJRM2hDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRXRCUVVzc1EwRkRaaXhWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUU0UWl4RlFVTXZReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeEZRVUZGTEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJVeXhIUVVGSExFVkJRVVVzUzBGQlN6dFpRVU40UkN4UFFVRlBMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEZEVJc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlExQXNTVUZCU1N4SFFVRkhMRVZCUVVVN1dVRkRVQ3hOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTJwQ0xGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1UwRkRlRUk3UzBGRFJqdEpRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU03UVVGRlJEczdPMGRCUjBjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzVTBGQlV5eERRVUZETEVsQlFWazdTVUZEY0VNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEySXNTVUZCU1N4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJSVm9zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUTJ4RExFbEJRVWtzU1VGQlNTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZiRUlzU1VGQlNTeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkZjRUlzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUTJ4RExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVVUzUXl4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wbEJSVzVETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRVZCUVVVc1EwRkJRenRSUVVOc1F5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRE8wbEJSVzVETEU5QlFVOHNTVUZCU1N4RFFVRkRPMEZCUTJRc1EwRkJRenRCUVVWRU96czdPenRIUVV0SE8wRkJRMGdzVFVGQlRTeFZRVUZWTEdGQlFXRXNRMEZCUXl4RFFVRlJMRVZCUVVVc1EwRkJVVHRKUVVNNVF5eE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU40UWl4UFFVRlBMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRM0pGTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdlMDFoZEhKcGVDd2dWbVZqZEc5eUxDQkRiMjl5WkdsdVlYUmxjeXdnVm1WamRHOXljeXdnUkdsemRHRnVZMlZOWlhSeWFXTjlJR1p5YjIwZ0p5NHZkSGx3WlMxa1pXTnNZWEpoZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHR5WVc1a2IyMUdiRzloZEN3Z2NtRnVaRzl0U1c1MGZTQm1jbTl0SUNjdUwzSmhibVJ2YlNjN1hHNWNiaThxS2x4dUlDb2dRWE56WlhKMGN5QmhJR052Ym1ScGRHbHZiaUJpZVNCMGFISnZkMmx1WnlCaGJpQkZjbkp2Y2k1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UySnZiMnhsWVc1OUlGdGpiMjVrYVhScGIyNDlabUZzYzJWZElFTnZibVJwZEdsdmJpQjBieUJoYzNObGNuUXVYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnVzIxbGMzTmhaMlU5SjBGemMyVnlkR2x2YmlCbGNuSnZjaTRuWFNCTlpYTnpZV2RsSUhSdklHOTFkSEIxZEM1Y2JpQXFJRUIwYUhKdmQzTWdlMFZ5Y205eWZWeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWVhOelpYSjBLR052Ym1ScGRHbHZiam9nWW05dmJHVmhiaUE5SUdaaGJITmxMQ0J0WlhOellXZGxPaUJ6ZEhKcGJtY2dQU0FuUVhOelpYSjBhVzl1SUdWeWNtOXlMaWNwSUh0Y2JpQWdhV1lnS0NGamIyNWthWFJwYjI0cFhHNGdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLRzFsYzNOaFoyVXBPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFTnlaV0YwWlhNZ2JtVjNJSFIzYnkxa2FXMWxibk5wYjI1aGJDQmhjbkpoZVNCaGJtUWdabWxzYkhNZ2FYUWdkMmwwYUNCMGFHVWdkbUZzZFdVZ1oybDJaVzR1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJR1JwYldWdWMybHZiakVnVkdobElHWnBjbk4wSUdScGJXVnVjMmx2YmlCdlppQjBhR1VnWTI5dmNtUnBibUYwWlhNZ0tHNTFiV0psY2lCdlppQnliM2R6S1M1Y2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQmthVzFsYm5OcGIyNHlJRlJvWlNCelpXTnZibVFnWkdsdFpXNXphVzl1SUc5bUlIUm9aU0JqYjI5eVpHbHVZWFJsY3lBb2JuVnRZbVZ5SUc5bUlHTnZiSFZ0Ym5NcExseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRnRtYVd4c1BUQmRJRUVnZG1Gc2RXVWdkRzhnWm1sc2JDQjBhR1VnWTI5dmNtUnBibUYwWlhNZ2QybDBhQzVjYmlBcUlFQnlaWFIxY200Z2UwTnZiM0prYVc1aGRHVnpmU0JCSUhSM2J5MWthVzFsYm5OcGIyNWhiQ0JtYVd4c1pXUWdkMmwwYUNCMGFHVWdkbUZzZFdVZ1oybDJaVzR1WEc0Z0tpQkFkRzlrYnlCTmFXZG9kQ0JpWlNCemJHOTNJSE5wYm1ObElIVnpaV1FnUVhKeVlYa3ViV0Z3TGlCUWNtOWlZV0pzZVNCdVpXVmtjeUJ3WlhKbWIzSnRZVzVqWlNCeVpYWnBjMmx2Ymk1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnYVc1cGRFTnZiM0prYVc1aGRHVnpLR1JwYldWdWMybHZiakU2SUc1MWJXSmxjaXdnWkdsdFpXNXphVzl1TWpvZ2JuVnRZbVZ5TENCbWFXeHNPaUJ1ZFcxaVpYSWdQU0F3S1RvZ1EyOXZjbVJwYm1GMFpYTWdlMXh1SUNCeVpYUjFjbTRnYm1WM0lFRnljbUY1S0dScGJXVnVjMmx2YmpFcExtWnBiR3dvWm1sc2JDa3ViV0Z3S0NncElEMCtJQ2h1WlhjZ1ZtVmpkRzl5S0dScGJXVnVjMmx2YmpJcExtWnBiR3dvWm1sc2JDa3BLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQlVjbUZ1YzNCdmMyVWdiV0YwY21sNExseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdUV0YwY21sNGZTQnRZWFJ5YVhnZ1ZHaGxJRzFoZEhKcGVDQjBieUJpWlNCMGNtRnVjM0J2YzJWa0xseHVJQ29nUUhKbGRIVnliaUI3VFdGMGNtbDRmU0JVY21GdWMzQnZjMlZrSUcxaGRISnBlQzVjYmlBcUlFQjBiMlJ2SUUxcFoyaDBJR0psSUhOc2IzY2djMmx1WTJVZ2RYTmxaQ0JCY25KaGVTNXRZWEF1SUZCeWIySmhZbXg1SUc1bFpXUnpJSEJsY21admNtMWhibU5sSUhKbGRtbHphVzl1TGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdkSEpoYm5Od2IzTmxUV0YwY21sNEtHMWhkSEpwZURvZ1RXRjBjbWw0S1RvZ1RXRjBjbWw0SUh0Y2JpQWdjbVYwZFhKdUlHNWxkeUJCY25KaGVTaHRZWFJ5YVhoYk1GMHViR1Z1WjNSb0tTNW1hV3hzS0RBcFhHNGdJQ0FnTG0xaGNDZ29YeXdnYVNrZ1BUNGdLRzVsZHlCV1pXTjBiM0lvYldGMGNtbDRMbXhsYm1kMGFDa3VabWxzYkNnd0tTNXRZWEFvS0Y4c0lHb3BJRDArSUNodFlYUnlhWGhiYWwxYmFWMHBLU2twTzF4dWZWeHVYRzR2S2lwY2JpQXFJRUZrWkhNZ2RIZHZJSFpsWTNSdmNuTWdkMmwwYUNCMGFHVWdjMlZqYjI1a0lHOXVaU0IwYnlCaVpTQnRkV3gwYVhCc2FXVmtJR0o1SUhSb1pTQm5hWFpsYmlCeVlYUnBieTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQWNHRnlZVzBnZTFabFkzUnZjbjBnY0NCVWFHVWdabWx5YzNRZ2RtVmpkRzl5SUhSdklHRmtaQzVjYmlBcUlFQndZWEpoYlNCN1ZtVmpkRzl5ZlNCeElGUm9aU0J6WldOdmJtUWdkbVZqZEc5eUlIUnZJR0ZrWkM1Y2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQmJiWFZzZEdsd2JHbGxjajB4WFNCQklHMTFiSFJwY0d4cFpYSWdkRzhnWW1VZ2RYTmxaQ0JpWldadmNtVWdkR2hsSUhObFkyOXVaQ0IyWldOMGIzSWdhWE1nWVdSa1pXUXVYRzRnS2lCQWNtVjBkWEp1SUh0V1pXTjBiM0o5SUU1bGR5QjJaV04wYjNJZ1kyOXVkR0ZwYm1Wa0lIUm9aU0J5WlhOMWJIUWdiMllnYjNCbGNtRjBhVzl1SUhBcmJYVnNkR2x3YkdsbGNpcHhMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2RtVmpkRzl5UVdSa0tIQTZJRlpsWTNSdmNpd2djVG9nVm1WamRHOXlMQ0J0ZFd4MGFYQnNhV1Z5T2lCdWRXMWlaWElnUFNBeEtUb2dWbVZqZEc5eUlIdGNiaUFnWTI5dWMzUWdia2wwWlcxeklEMGdjQzVzWlc1bmRHZzdYRzVjYmlBZ1lYTnpaWEowS0c1SmRHVnRjeUE5UFNCeExteGxibWQwYUN3Z0oxWmxZM1J2Y2lCc1pXNW5kR2h6SUdSdklHNXZkQ0J0WVhSamFDNG5LVHRjYmx4dUlDQmpiMjV6ZENCMGIzUmhiQ0E5SUc1bGR5QldaV04wYjNJb2JrbDBaVzF6S1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUhBdWJHVnVaM1JvT3lBcksya3BYRzRnSUNBZ2RHOTBZV3hiYVYwZ1BTQndXMmxkSUNzZ2JYVnNkR2x3YkdsbGNpQXFJSEZiYVYwN1hHNWNiaUFnY21WMGRYSnVJSFJ2ZEdGc08xeHVmVnh1WEc0dktpcGNiaUFxSUZOMWJYTWdkR2hsSUhabFkzUnZjaWR6SUdsMFpXMXpMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdWbVZqZEc5eWZTQjJJRlJvWlNCMlpXTjBiM0lnZEc4Z1ltVWdjM1Z0YldWa0xseHVJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlmU0JVYUdVZ2RtVmpkRzl5SjNNZ2FYUmxiWE1nYzNWdExseHVJQ292WEc1bWRXNWpkR2x2YmlCcGRHVnRjMU4xYlNoMk9pQldaV04wYjNJcE9pQnVkVzFpWlhJZ2UxeHVJQ0JzWlhRZ2RHOTBZV3dnUFNBd08xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2RpNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQjBiM1JoYkNBclBTQjJXMmxkTzF4dVhHNGdJSEpsZEhWeWJpQjBiM1JoYkR0Y2JuMWNibHh1THlvcVhHNGdLaUJUZFhGaGNtVnpJSFJvWlNCMlpXTjBiM0luY3lCcGRHVnRjeTVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuMGdkaUJVYUdVZ2RtVmpkRzl5SUhSdklITnhkV0Z5WlM1Y2JpQXFJRUJ5WlhSMWNtNGdlMVpsWTNSdmNuMGdRU0J1WlhjZ2RtVmpkRzl5SUdOdmJuUmhhVzVwYm1jZ2RHaGxJRzl5YVdkcGJtRnNKM01nYVhSbGJYTWdjM0YxWVhKbFpDNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z2RtVmpkRzl5VTNGMVlYSmxLSFk2SUZabFkzUnZjaWs2SUZabFkzUnZjaUI3WEc0Z0lHTnZibk4wSUc1SmRHVnRjeUE5SUhZdWJHVnVaM1JvTzF4dUlDQmpiMjV6ZENCMGIzUmhiQ0E5SUc1bGR5QldaV04wYjNJb2JrbDBaVzF6S1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUhZdWJHVnVaM1JvT3lBcksya3BYRzRnSUNBZ2RHOTBZV3hiYVYwZ1BTQjJXMmxkSUNvZ2RsdHBYVHRjYmx4dUlDQnlaWFIxY200Z2RHOTBZV3c3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjJaV04wYjNKTVpXNW5kR2dvZGpvZ1ZtVmpkRzl5S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdiR1YwSUhOeGNsTjFiVG9nYm5WdFltVnlJRDBnTUR0Y2JpQWdabTl5SUNoc1pYUWdhVG9nYm5WdFltVnlJRDBnTURzZ2FTQThJSFl1YkdWdVozUm9PeUJwS3lzcFhHNGdJQ0FnYzNGeVUzVnRJQ3M5SUhaYmFWMGdLaUIyVzJsZE8xeHVJQ0J5WlhSMWNtNGdUV0YwYUM1emNYSjBLSE54Y2xOMWJTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCMlpXTjBiM0pFYjNSUWNtOWtkV04wS0hZeE9pQldaV04wYjNJc0lIWXlPaUJXWldOMGIzSXBPaUJ1ZFcxaVpYSWdlMXh1SUNCcFppQW9kakV1YkdWdVozUm9JQ0U5SUhZeUxteGxibWQwYUNsY2JpQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMVJvWlNCa2FXMWxibk5wYjI1aGJHbDBlU0J2WmlCMGFHVWdkbVZqZEc5eWN5QnRkWE4wSUcxaGRHTm9KeWs3WEc0Z0lHeGxkQ0J3Y205a09pQnVkVzFpWlhJZ1BTQXdPMXh1SUNCbWIzSWdLR3hsZENCcE9pQnVkVzFpWlhJZ1BTQXdPeUJwSUR3Z2RqRXViR1Z1WjNSb095QnBLeXNwWEc0Z0lDQWdjSEp2WkNBclBTQjJNVnRwWFNBcUlIWXlXMmxkTzF4dUlDQnlaWFIxY200Z2NISnZaRHRjYm4xY2JseHVMeW9xWEc0Z0tpQkRjbVZoZEdWeklHRWdiV0YwY21sNElHWnBiR3hsWkNCM2FYUm9JSEpoYm1SdmJTQm1iRzloZEdsdVp5QndiMmx1ZENCMllXeDFaWE11WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdScGJXVnVjMmx2YmpFZ1ZHaGxJR1pwY25OMElHUnBiV1Z1YzJsdmJpQnZaaUIwYUdVZ2JXRjBjbWw0TGx4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlHUnBiV1Z1YzJsdmJqSWdWR2hsSUhObFkyOXVaQ0JrYVcxbGJuTnBiMjRnYjJZZ2RHaGxJRzFoZEhKcGVDNWNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0JiYzJOaGJHVTlNUzVkSUUxaGVDQjJZV3gxWlNCbmFYWmxiaUJpZVNCeVlXNWtiMjBnWjJWdVpYSmhkRzl5TGx4dUlDb2dRSEpsZEhWeWJpQjdUV0YwY21sNGZTQkJJRzVsZHlCdFlYUnlhWGdnWm1sc2JHVmtJSGRwZEdnZ2NtRnVaRzl0SUdac2IyRjBhVzVuSUhCdmFXNTBJQ0IyWVd4MVpYTXVYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCbWFXeHNVbUZ1Wkc5dFRXRjBjbWw0S0dScGJXVnVjMmx2YmpFNklHNTFiV0psY2l3Z1pHbHRaVzV6YVc5dU1qb2diblZ0WW1WeUxDQnpZMkZzWlRvZ2JuVnRZbVZ5SUQwZ01TNHBPaUJOWVhSeWFYZ2dlMXh1SUNCamIyNXpkQ0J0WVhSeWFYZ2dQU0JwYm1sMFEyOXZjbVJwYm1GMFpYTW9aR2x0Wlc1emFXOXVNU3dnWkdsdFpXNXphVzl1TWlrN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCa2FXMWxibk5wYjI0eE95QXJLMmtwSUh0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JxSUQwZ01Ec2dhaUE4SUdScGJXVnVjMmx2YmpJN0lDc3JhaWxjYmlBZ0lDQWdJRzFoZEhKcGVGdHBYVnRxWFNBOUlISmhibVJ2YlVac2IyRjBLSE5qWVd4bEtUdGNiaUFnZlZ4dUlDQnlaWFIxY200Z2JXRjBjbWw0TzF4dWZWeHVYRzR2S2lwY2JpQXFJRU5oYkdOMWJHRjBaWE1nUlhWamJHbGtaV0Z1SUdScGMzUmhibU5sSUdKbGRIZGxaVzRnZEhkdklIWmxZM1J2Y25NdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRSEJoY21GdElIdFdaV04wYjNKOUlIQWdWR2hsSUdacGNuTjBJSFpsWTNSdmNpNWNiaUFxSUVCd1lYSmhiU0I3Vm1WamRHOXlmU0J4SUZSb1pTQnpaV052Ym1RZ2RtVmpkRzl5TGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQkZkV05zYVdSbFlXNGdaR2x6ZEdGdVkyVWdZbVYwZDJWbGJpQjBhR1VnWjJsMlpXNGdkbVZqZEc5eWN5NWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdOaGJHTjFiR0YwWlVWMVkyeHBaR1ZoYmtScGMzUmhibU5sS0hBNklGWmxZM1J2Y2l3Z2NUb2dWbVZqZEc5eUtUb2diblZ0WW1WeUlIdGNiaUFnWTI5dWMzUWdaR2xtWmlBOUlIWmxZM1J2Y2tGa1pDaHdMQ0J4TENBdE1TazdYRzRnSUdOdmJuTjBJSE54WkdsbVppQTlJSFpsWTNSdmNsTnhkV0Z5WlNoa2FXWm1LVHRjYmlBZ1kyOXVjM1FnYzNGa2FXWm1VM1Z0YlNBOUlHbDBaVzF6VTNWdEtITnhaR2xtWmlrN1hHNGdJSEpsZEhWeWJpQk5ZWFJvTG5OeGNuUW9jM0ZrYVdabVUzVnRiU2s3WEc1OVhHNWNiaThxS2x4dUlDb2dRM0psWVhSbGN5QmhJR1JwYzNSaGJtTmxJRzFoZEhKcGVDQjFjMmx1WnlCaElHTjFjM1J2YlNCa2FYTjBZVzVqWlNCbWRXNWpkR2x2Ymk1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y25OOUlHUmhkR0VnU1c1d2RYUWdkbVZqZEc5eWN5QjBieUJqWVd4amRXeGhkR1VnWkdsemRHRnVZMlZ6TGx4dUlDb2dRSEJoY21GdElIdEVhWE4wWVc1alpVMWxkSEpwWTMwZ1pHbHpkR0Z1WTJVZ1EzVnpkRzl0SUdScGMzUmhibU5sSUdaMWJtTjBhVzl1TGx4dUlDb2dRSEpsZEhWeWJpQjdUV0YwY21sNGZTQkRZV3hqZFd4aGRHVmtJR04xYzNSdmJTQmthWE4wWVc1alpTQnRZWFJ5YVhndVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJqWVd4alJHbHpkR0Z1WTJWTllYUnlhWGdvWkdGMFlUb2dWbVZqZEc5eWN5d2daR2x6ZEdGdVkyVTZJRVJwYzNSaGJtTmxUV1YwY21saktUb2dUV0YwY21sNElIdGNiaUFnWTI5dWMzUWdia2wwWlcxeklEMGdaR0YwWVM1c1pXNW5kR2c3WEc0Z0lHTnZibk4wSUcxaGRISnBlQ0E5SUdsdWFYUkRiMjl5WkdsdVlYUmxjeWh1U1hSbGJYTXNJRzVKZEdWdGN5d2dNQ2s3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1U1hSbGJYTTdJQ3NyYVNrZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUdvZ1BTQnBJQ3NnTVRzZ2FpQThJRzVKZEdWdGN6c2dLeXRxS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JrT2lCdWRXMWlaWElnUFNBb1pHRjBZVnRwWFNBOVBTQnVkV3hzS1NCOGZDQW9aR0YwWVZ0cVhTQTlQU0J1ZFd4c0tTQS9JREFnT2lCa2FYTjBZVzVqWlNoa1lYUmhXMmxkTENCa1lYUmhXMnBkS1R0Y2JpQWdJQ0FnSUcxaGRISnBlRnRwWFZ0cVhTQTlJRzFoZEhKcGVGdHFYVnRwWFNBOUlHUTdYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCdFlYUnlhWGc3WEc1OVhHNWNiaThxS2x4dUlDb2dRM0psWVhSbGN5QmhJR1JwYzNSaGJtTmxJRzFoZEhKcGVDQjFjMmx1WnlCaElHTjFjM1J2YlNCa2FYTjBZVzVqWlNCbWRXNWpkR2x2Ymk1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y25OOUlHUmhkR0VnU1c1d2RYUWdkbVZqZEc5eWN5QjBieUJqWVd4amRXeGhkR1VnWkdsemRHRnVZMlZ6TGx4dUlDb2dRSEJoY21GdElIdEVhWE4wWVc1alpVMWxkSEpwWTMwZ1pHbHpkR0Z1WTJVZ1EzVnpkRzl0SUdScGMzUmhibU5sSUdaMWJtTjBhVzl1TGx4dUlDb2dRSEpsZEhWeWJpQjdUV0YwY21sNGZTQkRZV3hqZFd4aGRHVmtJR04xYzNSdmJTQmthWE4wWVc1alpTQnRZWFJ5YVhndVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJqWVd4alRtOXliV0ZzYVhwbFpFUnBjM1JoYm1ObFRXRjBjbWw0S0dSaGRHRTZJRlpsWTNSdmNuTXNJR1JwYzNSaGJtTmxPaUJFYVhOMFlXNWpaVTFsZEhKcFl5azZJRTFoZEhKcGVDQjdYRzRnSUdOdmJuTjBJRzVKZEdWdGN5QTlJR1JoZEdFdWJHVnVaM1JvTzF4dUlDQmpiMjV6ZENCdFlYUnlhWGdnUFNCcGJtbDBRMjl2Y21ScGJtRjBaWE1vYmtsMFpXMXpMQ0J1U1hSbGJYTXNJREFwTzF4dUlDQnNaWFFnYldGNElEMGdUblZ0WW1WeUxrMUpUbDlXUVV4VlJUdGNiaUFnYkdWMElHMXBiaUE5SUU1MWJXSmxjaTVOUVZoZlZrRk1WVVU3WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dia2wwWlcxek95QXJLMmtwSUh0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JxSUQwZ2FUc2dhaUE4SUc1SmRHVnRjenNnS3l0cUtTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCa09pQnVkVzFpWlhJZ1BTQW9aR0YwWVZ0cFhTQTlQU0J1ZFd4c0tTQjhmQ0FvWkdGMFlWdHFYU0E5UFNCdWRXeHNJSHg4SUdrZ1BUMDlJR29wSUQ4Z01DQTZJR1JwYzNSaGJtTmxLR1JoZEdGYmFWMHNJR1JoZEdGYmFsMHBPMXh1SUNBZ0lDQWdiV0YwY21sNFcybGRXMnBkSUQwZ2JXRjBjbWw0VzJwZFcybGRJRDBnWkR0Y2JpQWdJQ0FnSUdsbUlDaGtJRDRnYldGNEtTQnRZWGdnUFNCa08xeHVJQ0FnSUNBZ2FXWWdLR1FnUENCdGFXNHBJRzFwYmlBOUlHUTdYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dia2wwWlcxek95QXJLMmtwSUh0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JxSUQwZ2FTQXJJREU3SUdvZ1BDQnVTWFJsYlhNN0lDc3JhaWxjYmlBZ0lDQWdJRzFoZEhKcGVGdHBYVnRxWFNBOUlHMWhkSEpwZUZ0cVhWdHBYU0E5SUNodFlYUnlhWGhiYVYxYmFsMGdMU0J0YVc0cElDOGdLRzFoZUNBdElHMXBiaWs3WEc0Z0lIMWNiaUFnY21WMGRYSnVJRzFoZEhKcGVEdGNibjFjYmx4dUx5b3FJRWRsYm1WeVlYUmxjeUJoY25KaGVTQm1jbTl0SUdFZ2NtRnVaMlVnVzJKbFoybHVPeUJsYm1SZElHOXlJRnRpWldkcGJqc2daVzVrS1NCcFppQmxibVJGZUdOc2RYTnBkbVV1SUNvcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxibEpoYm1kbEtHSmxaMmx1T2lCdWRXMWlaWElzSUdWdVpEb2diblZ0WW1WeUxDQmxibVJGZUdOc2RYTnBkbVVnUFNCbVlXeHpaU2s2SUVsdWRETXlRWEp5WVhrZ2UxeHVJQ0JqYjI1emRDQnVTWFJsYlhNZ1BTQmxibVFnTFNCaVpXZHBiaUFySUNobGJtUkZlR05zZFhOcGRtVWdQeUF3SURvZ01TazdYRzRnSUdOdmJuTjBJSE5sY21sbGN5QTlJRzVsZHlCSmJuUXpNa0Z5Y21GNUtHNUpkR1Z0Y3lrN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCdVNYUmxiWE03SUNzcmFTbGNiaUFnSUNCelpYSnBaWE5iYVYwZ1BTQmlaV2RwYmlBcklHazdYRzVjYmlBZ2NtVjBkWEp1SUhObGNtbGxjenRjYm4xY2JseHVMeW9xWEc0Z0tpQlNaWFIxY201eklHOXlaR1Z5SUc5bUlIWmhiSFZsY3lCaGN5QnBaaUIwYUdWNUlHRnlaU0J6YjNKMFpXUXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhCaGNtRnRJSHRoYm5sYlhYMGdkbUZzZFdWeklFbHVjSFYwSUdGeWNtRjVMbHh1SUNvZ1FIQmhjbUZ0SUh0aWIyOXNaV0Z1ZlNCYmNtVjJaWEp6WlQxbVlXeHpaVjBnVjJobGRHaGxjaUIwYnlCeVpYUjFjbTRnY21WMlpYSnpaV1FnYjNKa1pYSXVYRzRnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEpiWFgwZ1ZHaGxJRzl5WkdWeUlHTnZiWEIxZEdWa0xseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWVhKblUyOXlkQ2gyWVd4MVpYTTZJR0Z1ZVZ0ZExDQnlaWFpsY25ObElEMGdabUZzYzJVcE9pQnVkVzFpWlhKYlhTQjdYRzRnSUdOdmJuTjBJSE52Y25SbWJpQTlJSEpsZG1WeWMyVWdQeUFvWVRvZ1lXNTVXMTBzSUdJNklHRnVlVnRkS1NBOVBpQW9ZbHN3WFNBdElHRmJNRjBwSURvZ0tHRTZJR0Z1ZVZ0ZExDQmlPaUJoYm5sYlhTa2dQVDRnS0dGYk1GMGdMU0JpV3pCZEtUdGNiaUFnWTI5dWMzUWdaR1ZqYjNJZ1BTQW9kam9nWVc1NUxDQnBPaUJ1ZFcxaVpYSXBJRDArSUZ0MkxDQnBYVHNnTHk4Z2MyVjBJR2x1WkdWNElIUnZJSFpoYkhWbFhHNGdJR052Ym5OMElIVnVaR1ZqYjNJZ1BTQW9ZVG9nWVc1NVcxMHBJRDArSUdGYk1WMDdJQzh2SUd4bFlYWmxJRzl1YkhrZ2FXNWtaWGhjYmlBZ1kyOXVjM1FnWDJGeVozTnZjblFnUFNBb1lYSnlPaUJoYm5sYlhTa2dQVDRnWVhKeUxtMWhjQ2hrWldOdmNpa3VjMjl5ZENoemIzSjBabTRwTG0xaGNDaDFibVJsWTI5eUtUdGNiaUFnY21WMGRYSnVJRjloY21kemIzSjBLSFpoYkhWbGN5azdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1VtVjBkWEp1Y3lCMGFHVWdhVzVrWlhobGN5QnZaaUIwYUdVZ2JXOXpkQ0JrYVhabGNuTmxJRzlpYW1WamRITWdZV05qYjNKa2FXNW5JSFJ2SUhSb1pTQmthWE4wSUdaMWJtTjBhVzl1WEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ2JHVnVaM1JvSUhSdmRHRnNJRzUxYldKbGNpQnZaaUJ2WW1wbFkzUnpYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnYmlCdWRXMWlaWElnYjJZZ1pHbDJaWEp6WlNCbGJHVnRaVzUwY3lCMGJ5Qm1hVzVrWEc0Z0tpQkFjR0Z5WVcwZ2V5aHBNVG9nYm5WdFltVnlMQ0JwTWpvZ2JuVnRZbVZ5S1NBOVBpQnVkVzFpWlhKOUlHUnBjM1FnWVNCbWRXNWpkR2x2YmlCM2FHbGphQ0JqWVd4amRXeGhkR1Z6SUdScGMzUmhibU5sSUdKbGRIZGxaVzVjYmlBcUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwZDI4Z2IySnFaV04wY3lCMWMybHVaeUIwYUdWcGNpQnBibVJsZUdWelhHNGdLaUJBY21WMGRYSnVjeUI3Ym5WdFltVnlXMTE5SUZSb1pTQnBibVJsZUdWeklHOW1JSFJvWlNCdGIzTjBJR1JwZG1WeWMyVWdiMkpxWldOMGMxeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWjJWMFJHbDJaWEp6WlZOMVluTmxkQ2hzWlc1bmRHZzZJRzUxYldKbGNpd2diam9nYm5WdFltVnlMQ0JrYVhOME9pQW9hVEU2SUc1MWJXSmxjaXdnYVRJNklHNTFiV0psY2lrZ1BUNGdiblZ0WW1WeUtUb2diblZ0WW1WeVcxMGdlMXh1SUNCbWRXNWpkR2x2YmlCdFlYaENlU2gyWVd4MVpYTTZJRWwwWlhKaFlteGxTWFJsY21GMGIzSThiblZ0WW1WeVBpd2diM0prWlhKQ2VUb2dLR2s2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5S1NCN1hHNGdJQ0FnYkdWMElHMWhlRlpoYkhWbElEMGdiblZzYkR0Y2JpQWdJQ0JzWlhRZ2JXRjRUM0prWlhKQ2VTQTlJRzUxYkd3N1hHNWNiaUFnSUNCbWIzSWdLR052Ym5OMElHVnNaVzFsYm5RZ2IyWWdkbUZzZFdWektTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCbGJHVnRaVzUwVDNKa1pYSkNlU0E5SUc5eVpHVnlRbmtvWld4bGJXVnVkQ2s3WEc0Z0lDQWdJQ0JwWmlBb2JXRjRUM0prWlhKQ2VTQTlQU0J1ZFd4c0lIeDhJR1ZzWlcxbGJuUlBjbVJsY2tKNUlENGdiV0Y0VDNKa1pYSkNlU2tnZTF4dUlDQWdJQ0FnSUNCdFlYaFdZV3gxWlNBOUlHVnNaVzFsYm5RN1hHNGdJQ0FnSUNBZ0lHMWhlRTl5WkdWeVFua2dQU0JsYkdWdFpXNTBUM0prWlhKQ2VUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJRzFoZUZaaGJIVmxPMXh1SUNCOVhHNWNiaUFnWTI5dWMzUWdjM1ZpYzJWMElEMGdXM0poYm1SdmJVbHVkQ2hzWlc1bmRHZ2dMU0F4S1YwN1hHNGdJR052Ym5OMElHTnZiWEJzWlcxbGJuUWdQU0J1WlhjZ1UyVjBLQ2s3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JzWlc1bmRHZzdJQ3NyYVNrZ2UxeHVJQ0FnSUdsbUlDZ2hjM1ZpYzJWMExtbHVZMngxWkdWektHa3BLVnh1SUNBZ0lDQWdZMjl0Y0d4bGJXVnVkQzVoWkdRb2FTazdYRzRnSUgxY2JseHVJQ0IzYUdsc1pTQW9jM1ZpYzJWMExteGxibWQwYUNBOElHNHBJSHRjYmlBZ0lDQmpiMjV6ZENCcFpIZ2dQU0J0WVhoQ2VTaGNiaUFnSUNBZ0lHTnZiWEJzWlcxbGJuUXVkbUZzZFdWektDa2dZWE1nU1hSbGNtRmliR1ZKZEdWeVlYUnZjanh1ZFcxaVpYSStMRnh1SUNBZ0lDQWdLR2twSUQwK0lFMWhkR2d1YldsdUxtRndjR3g1S0UxaGRHZ3NJSE4xWW5ObGRDNXRZWEFvWm5WdVkzUnBiMjRvZG1Gc0xDQnBibVJsZUNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1pHbHpkQ2hwTENCMllXd3BPMXh1SUNBZ0lDQWdmU2twS1R0Y2JpQWdJQ0JwWmlBb2FXUjRLU0I3WEc0Z0lDQWdJQ0J6ZFdKelpYUXVjSFZ6YUNocFpIZ3BPMXh1SUNBZ0lDQWdZMjl0Y0d4bGJXVnVkQzVrWld4bGRHVW9hV1I0S1R0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnY21WMGRYSnVJSE4xWW5ObGREdGNibjFjYmx4dUx5b3FYRzRnS2lCU1pYUjFjbTV6SUc1dmNtMWhiR2w2WldRZ2RtVmpkRzl5WEc0Z0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y24wZ1pHRjBZU0J1ZFcxbGNtbGpZV3dnWVhKeVlYbGNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUc1dmNtMWhiR2w2WlNoa1lYUmhPaUJXWldOMGIzSXBPaUJXWldOMGIzSWdlMXh1SUNCc1pYUWdiV1ZoYmlBOUlEQTdYRzRnSUd4bGRDQnpkR1FnUFNBd08xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z1pHRjBZUzVzWlc1bmRHZzdJQ3NyYVNsY2JpQWdJQ0J0WldGdUlDczlJR1JoZEdGYmFWMDdYRzVjYmlBZ2JXVmhiaUF2UFNCa1lYUmhMbXhsYm1kMGFEdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHUmhkR0V1YkdWdVozUm9PeUFySzJrcFhHNGdJQ0FnYzNSa0lDczlJQ2hrWVhSaFcybGRJQzBnYldWaGJpa2dLaUFvWkdGMFlWdHBYU0F0SUcxbFlXNHBPMXh1WEc0Z0lITjBaQ0E5SUUxaGRHZ3VjM0Z5ZENoemRHUWdMeUJrWVhSaExteGxibWQwYUNrN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCa1lYUmhMbXhsYm1kMGFEc2dLeXRwS1Z4dUlDQWdJR1JoZEdGYmFWMGdQU0FvWkdGMFlWdHBYU0F0SUcxbFlXNHBJQzhnYzNSa08xeHVYRzRnSUhKbGRIVnliaUJrWVhSaE8xeHVmVnh1WEc0dktpcGNiaUFxSUVacGJtUnpJSE5sZENCa2FXWm1aWEpsYm1ObElHSmxkSGRsWlc0Z2RIZHZJR3hwYzNSekxseHVJQ29nUUhCaGNtRnRJSHRoYm5sYlhYMGdZU0JVYUdVZ1ptbHljM1FnYkdsemRDNWNiaUFxSUVCd1lYSmhiU0I3WVc1NVcxMTlJR0lnVkdobElITmxZMjl1WkNCc2FYTjBMbHh1SUNvZ1FISmxkSFZ5YmlCN1lXNTVXMTE5WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnpaWFJFYVdabVpYSmxibU5sS0dFNklHRnVlVnRkTENCaU9pQmhibmxiWFNrNklHRnVlVnRkSUh0Y2JpQWdZMjl1YzNRZ1lsTmxkQ0E5SUc1bGR5QlRaWFFvWWlrN1hHNGdJSEpsZEhWeWJpQkJjbkpoZVM1bWNtOXRLRzVsZHlCVFpYUW9ZUzVtYVd4MFpYSW9LSGdwSUQwK0lDRmlVMlYwTG1oaGN5aDRLU2twTG5aaGJIVmxjeWdwS1R0Y2JuMWNiaUpkZlE9PSIsIi8qKiBQcm94eSBmb3IgRGlzdGFuY2VNYXRyaXggY2xhc3MuIEFsbG93cyB0byBpbmRleCBtYXRyaXggYXMgbWF0cml4W2ldW2pdXG4gKiBOb3RlOiBtdWNoIHNsb3dlciB0aGFuIGRpcmVjdCBpbmRleGluZywgYnV0IHN0aWxsIG11Y2ggZmFzdGVyIHRoYW4gcmVjYWxjdWxhdGluZyBkaXN0YW5jZXMuXG4gKiB3aWxsIGJlIHVzZWQgZm9yIFQtU05FIG1haW5seS5cbiAqIEBwYXJhbSB7RmxvYXQzMkFycmF5fWNvbmRlbnNlZEFycmF5IC0gYXJyYXkgb2YgZGlzdGFuY2VzIGJldHdlZW4gYWxsIHBhaXJzIG9mIG9iamVjdHNcbiAqIEBwYXJhbSB7bnVtYmVyfXNpemUgLSBudW1iZXIgb2YgY29tcGFyZWJsZXMgaW4gbWF0cml4XG4gKiBAcmV0dXJuIHtGbG9hdDMyQXJyYXl9IC0gcHJveHkgZm9yIGNvbmRlbnNlZEFycmF5XG4qL1xuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlTWF0cml4UHJveHkoY29uZGVuc2VkQXJyYXksIHNpemUpIHtcbiAgICBjb25zdCBsaW5lYXJGdW5jID0gZG1MaW5lYXJJbmRleChzaXplKTtcbiAgICBmdW5jdGlvbiBsaW5lYXJJbmRleChpLCBqKSB7XG4gICAgICAgIGNvbnN0IGlOdW0gPSBOdW1iZXIoaSk7XG4gICAgICAgIGNvbnN0IGpOdW0gPSBOdW1iZXIoaik7XG4gICAgICAgIHJldHVybiBsaW5lYXJGdW5jKGlOdW0sIGpOdW0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpZHgySGFuZGxlcihpZHgxKSB7XG4gICAgICAgIHJldHVybiAoe1xuICAgICAgICAgICAgZ2V0KHRhcmdldCwgaWR4MiwgX3JlY2VpdmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlkeDEgPT09IGlkeDIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVhcklkeCA9IE51bWJlcihpZHgxKSA+IE51bWJlcihpZHgyKSA/IGxpbmVhckluZGV4KGlkeDIsIGlkeDEpIDogbGluZWFySW5kZXgoaWR4MSwgaWR4Mik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtsaW5lYXJJZHhdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGlkeDFIYW5kbGVyID0ge1xuICAgICAgICBnZXQodGFyZ2V0LCBpZHgxLCBfcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIGlmIChpZHgxID09PSAnbGVuZ3RoJylcbiAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJveHkodGFyZ2V0LCBpZHgySGFuZGxlcihpZHgxKSk7XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICByZXR1cm4gbmV3IFByb3h5KGNvbmRlbnNlZEFycmF5LCBpZHgxSGFuZGxlcik7XG59XG5leHBvcnQgZnVuY3Rpb24gZG1MaW5lYXJJbmRleChzaXplKSB7XG4gICAgcmV0dXJuIChpLCBqKSA9PiBzaXplICogaSArIGogLSBNYXRoLmZsb29yKCgoaSArIDIpICogKGkgKyAxKSkgLyAyKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWNISnZlSGt1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SndjbTk0ZVM1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkZRVHM3T3pzN08wVkJUVVU3UVVGRFJpeE5RVUZOTEZWQlFWVXNiVUpCUVcxQ0xFTkJRVU1zWTBGQk5FSXNSVUZCUlN4SlFVRlpPMGxCUXpWRkxFMUJRVTBzVlVGQlZTeEhRVUZITEdGQlFXRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVOMlF5eFRRVUZUTEZkQlFWY3NRMEZCUXl4RFFVRnJRaXhGUVVGRkxFTkJRV3RDTzFGQlEzcEVMRTFCUVUwc1NVRkJTU3hIUVVGSExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjJRaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRka0lzVDBGQlR5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRMmhETEVOQlFVTTdTVUZGUkN4VFFVRlRMRmRCUVZjc1EwRkJReXhKUVVGeFFqdFJRVU40UXl4UFFVRlBMRU5CUTB3N1dVRkRSU3hIUVVGSExFTkJRVU1zVFVGQlRTeEZRVUZGTEVsQlFVa3NSVUZCUlN4VFFVRlRPMmRDUVVONlFpeEpRVUZKTEVsQlFVa3NTMEZCU3l4SlFVRkpPMjlDUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETzJkQ1FVTTFRaXhOUVVGTkxGTkJRVk1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4WFFVRlhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4WFFVRlhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzJkQ1FVTnNSeXhQUVVGUExFMUJRVTBzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0WlFVTXpRaXhEUVVGRE8xTkJRMFlzUTBGRFJpeERRVUZETzBsQlEwb3NRMEZCUXp0SlFVTkVMRTFCUVUwc1YwRkJWeXhIUVVFclFqdFJRVU01UXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlJTeFRRVUZUTzFsQlEzcENMRWxCUVVrc1NVRkJTU3hMUVVGTExGRkJRVkU3WjBKQlFVVXNUMEZCVHl4SlFVRkpMRU5CUVVNN1dVRkRia01zVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1YwRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZET1VNc1EwRkJRenRMUVVOR0xFTkJRVU03U1VGRlJpeFBRVUZQTEVsQlFVa3NTMEZCU3l4RFFVRkRMR05CUVdNc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dEJRVU5vUkN4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHRkJRV0VzUTBGQlF5eEpRVUZaTzBsQlEzaERMRTlCUVU4c1EwRkJReXhEUVVGVExFVkJRVVVzUTBGQlV5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjBSaXhEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lYRzVjYmk4cUtpQlFjbTk0ZVNCbWIzSWdSR2x6ZEdGdVkyVk5ZWFJ5YVhnZ1kyeGhjM011SUVGc2JHOTNjeUIwYnlCcGJtUmxlQ0J0WVhSeWFYZ2dZWE1nYldGMGNtbDRXMmxkVzJwZFhHNGdLaUJPYjNSbE9pQnRkV05vSUhOc2IzZGxjaUIwYUdGdUlHUnBjbVZqZENCcGJtUmxlR2x1Wnl3Z1luVjBJSE4wYVd4c0lHMTFZMmdnWm1GemRHVnlJSFJvWVc0Z2NtVmpZV3hqZFd4aGRHbHVaeUJrYVhOMFlXNWpaWE11WEc0Z0tpQjNhV3hzSUdKbElIVnpaV1FnWm05eUlGUXRVMDVGSUcxaGFXNXNlUzVjYmlBcUlFQndZWEpoYlNCN1JteHZZWFF6TWtGeWNtRjVmV052Ym1SbGJuTmxaRUZ5Y21GNUlDMGdZWEp5WVhrZ2IyWWdaR2x6ZEdGdVkyVnpJR0psZEhkbFpXNGdZV3hzSUhCaGFYSnpJRzltSUc5aWFtVmpkSE5jYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlhOcGVtVWdMU0J1ZFcxaVpYSWdiMllnWTI5dGNHRnlaV0pzWlhNZ2FXNGdiV0YwY21sNFhHNGdLaUJBY21WMGRYSnVJSHRHYkc5aGRETXlRWEp5WVhsOUlDMGdjSEp2ZUhrZ1ptOXlJR052Ym1SbGJuTmxaRUZ5Y21GNVhHNHFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1JwYzNSaGJtTmxUV0YwY21sNFVISnZlSGtvWTI5dVpHVnVjMlZrUVhKeVlYazZJRVpzYjJGME16SkJjbkpoZVN3Z2MybDZaVG9nYm5WdFltVnlLVG9nUm14dllYUXpNa0Z5Y21GNUlIdGNiaUFnWTI5dWMzUWdiR2x1WldGeVJuVnVZeUE5SUdSdFRHbHVaV0Z5U1c1a1pYZ29jMmw2WlNrN1hHNGdJR1oxYm1OMGFXOXVJR3hwYm1WaGNrbHVaR1Y0S0drNklITjViV0p2YkNCOElITjBjbWx1Wnl3Z2Fqb2djM2x0WW05c0lId2djM1J5YVc1bktTQjdYRzRnSUNBZ1kyOXVjM1FnYVU1MWJTQTlJRTUxYldKbGNpaHBLVHRjYmlBZ0lDQmpiMjV6ZENCcVRuVnRJRDBnVG5WdFltVnlLR29wTzF4dUlDQWdJSEpsZEhWeWJpQnNhVzVsWVhKR2RXNWpLR2xPZFcwc0lHcE9kVzBwTzF4dUlDQjlYRzVjYmlBZ1puVnVZM1JwYjI0Z2FXUjRNa2hoYm1Sc1pYSW9hV1I0TVRvZ2MzbHRZbTlzSUh3Z2MzUnlhVzVuS1RwUWNtOTRlVWhoYm1Sc1pYSThSbXh2WVhRek1rRnljbUY1UGlCN1hHNGdJQ0FnY21WMGRYSnVJQ2hjYmlBZ0lDQWdJSHRjYmlBZ0lDQWdJQ0FnWjJWMEtIUmhjbWRsZEN3Z2FXUjRNaXdnWDNKbFkyVnBkbVZ5S1NCN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0dsa2VERWdQVDA5SUdsa2VESXBJSEpsZEhWeWJpQXdPMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR3hwYm1WaGNrbGtlQ0E5SUU1MWJXSmxjaWhwWkhneEtTQStJRTUxYldKbGNpaHBaSGd5S1NBL0lHeHBibVZoY2tsdVpHVjRLR2xrZURJc0lHbGtlREVwSURvZ2JHbHVaV0Z5U1c1a1pYZ29hV1I0TVN3Z2FXUjRNaWs3WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSaGNtZGxkRnRzYVc1bFlYSkpaSGhkTzF4dUlDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNrN1hHNGdJSDFjYmlBZ1kyOXVjM1FnYVdSNE1VaGhibVJzWlhJNklGQnliM2g1U0dGdVpHeGxjanhHYkc5aGRETXlRWEp5WVhrK0lEMGdlMXh1SUNBZ0lHZGxkQ2gwWVhKblpYUXNJR2xrZURFc0lGOXlaV05sYVhabGNpa2dlMXh1SUNBZ0lDQWdhV1lnS0dsa2VERWdQVDA5SUNkc1pXNW5kR2duS1NCeVpYUjFjbTRnYzJsNlpUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdVpYY2dVSEp2ZUhrb2RHRnlaMlYwTENCcFpIZ3lTR0Z1Wkd4bGNpaHBaSGd4S1NrN1hHNGdJQ0FnZlN4Y2JpQWdmVHRjYmx4dUlDQnlaWFIxY200Z2JtVjNJRkJ5YjNoNUtHTnZibVJsYm5ObFpFRnljbUY1TENCcFpIZ3hTR0Z1Wkd4bGNpazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCa2JVeHBibVZoY2tsdVpHVjRLSE5wZW1VNklHNTFiV0psY2lrNklDaHBPaUJ1ZFcxaVpYSXNJR282SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlDaHBPaUJ1ZFcxaVpYSXNJR282SUc1MWJXSmxjaWtnUFQ0Z2MybDZaU0FxSUdrZ0t5QnFJQzBnVFdGMGFDNW1iRzl2Y2lnb0tHa2dLeUF5S1NBcUlDaHBJQ3NnTVNrcElDOGdNaWs3WEc1OVhHNGlYWDA9IiwiZXhwb3J0IGNsYXNzIERpc3RhbmNlTWF0cml4U2VydmljZSB7XG4gICAgY29uc3RydWN0b3IodXNlQ29uY3VycmVudFdvcmtlcnMgPSB0cnVlLCB0ZXJtaW5hdGVPbkNvbXBsZXRlID0gdHJ1ZSkge1xuICAgICAgICBjb25zdCB0aHJlYWRDb3VudCA9IG5hdmlnYXRvci5oYXJkd2FyZUNvbmN1cnJlbmN5O1xuICAgICAgICB0aGlzLl93b3JrZXJDb3VudCA9IHVzZUNvbmN1cnJlbnRXb3JrZXJzID8gTWF0aC5tYXgodGhyZWFkQ291bnQgLSAyLCAxKSA6IDE7XG4gICAgICAgIHRoaXMuX3dvcmtlcnMgPSBuZXcgQXJyYXkodGhpcy5fd29ya2VyQ291bnQpLmZpbGwobnVsbClcbiAgICAgICAgICAgIC5tYXAoKCkgPT4gbmV3IFdvcmtlcihuZXcgVVJMKCcuL2Rpc3RhbmNlLW1hdHJpeC13b3JrZXInLCBpbXBvcnQubWV0YS51cmwpKSk7XG4gICAgICAgIHRoaXMuX3Rlcm1pbmF0ZU9uQ29tcGxldGUgPSB0ZXJtaW5hdGVPbkNvbXBsZXRlO1xuICAgIH1cbiAgICA7XG4gICAgYXN5bmMgY2FsYyh2YWx1ZXMsIGZuTmFtZSwgbm9ybWFsaXplID0gdHJ1ZSwgb3B0cykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBsZW4gPSB2YWx1ZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb21pc2VzID0gbmV3IEFycmF5KHRoaXMuX3dvcmtlckNvdW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCB0b3RhbExlbmd0aCA9IGxlbiAqIChsZW4gLSAxKSAvIDI7IC8vIHNpemUgb2YgcmVkdWNlZCBkaXN0YW5jZSBtYXRyaXhcbiAgICAgICAgICAgICAgICB0aGlzLl93b3JrZXJDb3VudCA9IE1hdGgubWluKHRoaXMuX3dvcmtlckNvdW50LCB0b3RhbExlbmd0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2h1bmtTaXplID0gdG90YWxMZW5ndGggLyB0aGlzLl93b3JrZXJDb3VudDtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXN0YW5jZU1hdHJpeCA9IG5ldyBGbG9hdDMyQXJyYXkodG90YWxMZW5ndGgpO1xuICAgICAgICAgICAgICAgIGxldCBlbmRSb3cgPSAwO1xuICAgICAgICAgICAgICAgIGxldCBlbmRDb2wgPSAxO1xuICAgICAgICAgICAgICAgIC8vIG1pbm1heCBmb3Igbm9ybWFsaXphdGlvblxuICAgICAgICAgICAgICAgIGxldCBsbWluID0gMDtcbiAgICAgICAgICAgICAgICBsZXQgbG1heCA9IE51bWJlci5NSU5fVkFMVUU7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl93b3JrZXJDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5mbG9vcihpICogY2h1bmtTaXplKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kID0gKGkgPT09IHRoaXMuX3dvcmtlckNvdW50IC0gMSkgPyB0b3RhbExlbmd0aCA6IE1hdGguZmxvb3IoKGkgKyAxKSAqIGNodW5rU2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0Um93ID0gZW5kUm93O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGFydENvbCA9IGVuZENvbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT09IHRoaXMuX3dvcmtlckNvdW50IC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlc2UgZm9ybXVsYXMgbWFwIHRoZSBsaW5lYXIgaW5kZXggdG8gdGhlIHVwcGVyIHRyaWFuZ3VsYXIgbWF0cml4IGluZGljZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZFJvdyA9IGxlbiAtIDIgLSBNYXRoLmZsb29yKE1hdGguc3FydCgtOCAqIGVuZCArIDQgKiBsZW4gKiAobGVuIC0gMSkgLSA3KSAvIDIgLSAwLjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kQ29sID0gZW5kIC0gbGVuICogZW5kUm93ICsgTWF0aC5mbG9vcigoZW5kUm93ICsgMSkgKiAoZW5kUm93ICsgMikgLyAyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl93b3JrZXJzW2ldLnBvc3RNZXNzYWdlKHsgdmFsdWVzLCBmbk5hbWUsIHN0YXJ0Um93LCBzdGFydENvbCwgY2h1bmNrU2l6ZTogZW5kIC0gc3RhcnQsIG9wdHMgfSk7XG4gICAgICAgICAgICAgICAgICAgIHByb21pc2VzW2ldID0gbmV3IFByb21pc2UoKHJlc29sdmVXb3JrZXIsIHJlamVjdFdvcmtlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fd29ya2Vyc1tpXS5vbm1lc3NhZ2UgPSAoeyBkYXRhOiB7IGVycm9yLCBkaXN0YW5jZU1hdHJpeERhdGEsIG1pbiwgbWF4IH0gfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Rlcm1pbmF0ZU9uQ29tcGxldGUgJiYgdGhpcy5fd29ya2Vyc1tpXS50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0V29ya2VyKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlTWF0cml4LnNldChkaXN0YW5jZU1hdHJpeERhdGEsIHN0YXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbiA8IGxtaW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbWluID0gbWluO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF4ID4gbG1heClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxtYXggPSBtYXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVXb3JrZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemUpXG4gICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlTWF0cml4LmZvckVhY2goKHZhbHVlLCBpbmRleCkgPT4geyBkaXN0YW5jZU1hdHJpeFtpbmRleF0gPSAodmFsdWUgLSBsbWluKSAvIChsbWF4IC0gbG1pbik7IH0pO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoZGlzdGFuY2VNYXRyaXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB0ZXJtaW5hdGUoKSB7XG4gICAgICAgIHRoaXMuX3dvcmtlcnMuZm9yRWFjaCgod29ya2VyKSA9PiB3b3JrZXIudGVybWluYXRlKCkpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpHbHpkR0Z1WTJVdGJXRjBjbWw0TFhObGNuWnBZMlV1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SmthWE4wWVc1alpTMXRZWFJ5YVhndGMyVnlkbWxqWlM1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkZRU3hOUVVGTkxFOUJRVThzY1VKQlFYRkNPMGxCU1RsQ0xGbEJRVzFDTEc5Q1FVRnZRaXhIUVVGSExFbEJRVWtzUlVGQlJTeHRRa0ZCYlVJc1IwRkJSeXhKUVVGSk8xRkJRM2hGTEUxQlFVMHNWMEZCVnl4SFFVRkhMRk5CUVZNc1EwRkJReXh0UWtGQmJVSXNRMEZCUXp0UlFVTnNSQ3hKUVVGSkxFTkJRVU1zV1VGQldTeEhRVUZITEc5Q1FVRnZRaXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRmRCUVZjc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNMVJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRE8yRkJRM0JFTEVkQlFVY3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhKUVVGSkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl3d1FrRkJNRUlzUlVGQlJTeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU12UlN4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVkQlFVY3NiVUpCUVcxQ0xFTkJRVU03U1VGRGJFUXNRMEZCUXp0SlFVRkJMRU5CUVVNN1NVRkZTeXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZKTEUxQlFTdENMRVZCUVVVc1RVRkJiMElzUlVGRGVFVXNVMEZCVXl4SFFVRkhMRWxCUVVrc1JVRkJSU3hKUVVGNVFqdFJRVU16UXl4UFFVRlBMRWxCUVVrc1QwRkJUeXhEUVVGRExFdEJRVXNzUlVGQlJTeFBRVUZQTEVWQlFVVXNUVUZCVFN4RlFVRkZMRVZCUVVVN1dVRkRNME1zU1VGQlNUdG5Ra0ZEUml4TlFVRk5MRWRCUVVjc1IwRkJSeXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETzJkQ1FVTXhRaXhOUVVGTkxGRkJRVkVzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCWjBJc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETzJkQ1FVTTNSQ3hOUVVGTkxGZEJRVmNzUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNhME5CUVd0RE8yZENRVU16UlN4SlFVRkpMRU5CUVVNc1dVRkJXU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dG5Ra0ZETjBRc1RVRkJUU3hUUVVGVExFZEJRVWNzVjBGQlZ5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNN1owSkJRMnhFTEUxQlFVMHNZMEZCWXl4SFFVRkhMRWxCUVVrc1dVRkJXU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETzJkQ1FVTnlSQ3hKUVVGSkxFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTTdaMEpCUTJZc1NVRkJTU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETzJkQ1FVTm1MREpDUVVFeVFqdG5Ra0ZETTBJc1NVRkJTU3hKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETzJkQ1FVTmlMRWxCUVVrc1NVRkJTU3hIUVVGSExFMUJRVTBzUTBGQlF5eFRRVUZUTEVOQlFVTTdaMEpCUXpWQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMjlDUVVNeFF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTXNRMEZCUXp0dlFrRkRlRU1zVFVGQlRTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRMRXRCUVVzc1NVRkJTU3hEUVVGRExGbEJRVmtzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4RFFVRkRPMjlDUVVNeFJpeE5RVUZOTEZGQlFWRXNSMEZCUnl4TlFVRk5MRU5CUVVNN2IwSkJRM2hDTEUxQlFVMHNVVUZCVVN4SFFVRkhMRTFCUVUwc1EwRkJRenR2UWtGRGVFSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1NVRkJTU3hEUVVGRExGbEJRVmtzUjBGQlJ5eERRVUZETEVWQlFVVTdkMEpCUXk5Q0xEWkZRVUUyUlR0M1FrRkROMFVzVFVGQlRTeEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF6dDNRa0ZEZGtZc1RVRkJUU3hIUVVGSExFZEJRVWNzUjBGQlJ5eEhRVUZITEVkQlFVY3NUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN2NVSkJRek5GTzI5Q1FVTkVMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNWMEZCVnl4RFFVRkRMRVZCUVVNc1RVRkJUU3hGUVVGRkxFMUJRVTBzUlVGQlJTeFJRVUZSTEVWQlFVVXNVVUZCVVN4RlFVRkZMRlZCUVZVc1JVRkJSU3hIUVVGSExFZEJRVWNzUzBGQlN5eEZRVUZGTEVsQlFVa3NSVUZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRMnhITEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFOUJRVThzUTBGQlF5eERRVUZETEdGQlFXRXNSVUZCUlN4WlFVRlpMRVZCUVVVc1JVRkJSVHQzUWtGRGVFUXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFRRVUZUTEVkQlFVY3NRMEZCUXl4RlFVRkRMRWxCUVVrc1JVRkJSU3hGUVVGRExFdEJRVXNzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZETEVWQlFVTXNSVUZCVVN4RlFVRkZPelJDUVVOdVJpeEpRVUZKTEVOQlFVTXNiMEpCUVc5Q0xFbEJRVWtzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6czBRa0ZETVVRc1NVRkJTU3hMUVVGTExFVkJRVVU3WjBOQlExUXNXVUZCV1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE96WkNRVU55UWp0cFEwRkJUVHRuUTBGRFRDeGpRVUZqTEVOQlFVTXNSMEZCUnl4RFFVRkRMR3RDUVVGclFpeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMmREUVVNNVF5eEpRVUZKTEVkQlFVY3NSMEZCUnl4SlFVRkpPMjlEUVVOYUxFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTTdaME5CUTJJc1NVRkJTU3hIUVVGSExFZEJRVWNzU1VGQlNUdHZRMEZEV2l4SlFVRkpMRWRCUVVjc1IwRkJSeXhEUVVGRE8yZERRVU5pTEdGQlFXRXNSVUZCUlN4RFFVRkRPelpDUVVOcVFqdDNRa0ZEU0N4RFFVRkRMRU5CUVVNN2IwSkJRMG9zUTBGQlF5eERRVUZETEVOQlFVTTdhVUpCUTBvN1owSkJRMFFzVFVGQlRTeFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8yZENRVU0xUWl4SlFVRkpMRk5CUVZNN2IwSkJRMWdzWTBGQll5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hMUVVGTExFVkJRVVVzUlVGQlJTeEhRVUZITEdOQlFXTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVONFJ5eFBRVUZQTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNN1lVRkRla0k3V1VGQlF5eFBRVUZQTEVOQlFVTXNSVUZCUlR0blFrRkRWaXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEV0R0UlFVTklMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMHdzUTBGQlF6dEpRVVZOTEZOQlFWTTdVVUZEWkN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETEVOQlFVTTdTVUZEZUVRc1EwRkJRenREUVVOS0lpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIdExibTkzYmsxbGRISnBZM045SUdaeWIyMGdKeTR1TDNSNWNHVmtMVzFsZEhKcFkzTW5PMXh1WEc1bGVIQnZjblFnWTJ4aGMzTWdSR2x6ZEdGdVkyVk5ZWFJ5YVhoVFpYSjJhV05sSUh0Y2JpQWdJQ0J3Y21sMllYUmxJRjkzYjNKclpYSnpPaUJYYjNKclpYSmJYVHRjYmlBZ0lDQndjbWwyWVhSbElGOTNiM0pyWlhKRGIzVnVkRG9nYm5WdFltVnlPMXh1SUNBZ0lIQnlhWFpoZEdVZ1gzUmxjbTFwYm1GMFpVOXVRMjl0Y0d4bGRHVTZJR0p2YjJ4bFlXNDdYRzRnSUNBZ2NIVmliR2xqSUdOdmJuTjBjblZqZEc5eUtIVnpaVU52Ym1OMWNuSmxiblJYYjNKclpYSnpJRDBnZEhKMVpTd2dkR1Z5YldsdVlYUmxUMjVEYjIxd2JHVjBaU0E5SUhSeWRXVXBJSHRjYmlBZ0lDQWdJR052Ym5OMElIUm9jbVZoWkVOdmRXNTBJRDBnYm1GMmFXZGhkRzl5TG1oaGNtUjNZWEpsUTI5dVkzVnljbVZ1WTNrN1hHNGdJQ0FnSUNCMGFHbHpMbDkzYjNKclpYSkRiM1Z1ZENBOUlIVnpaVU52Ym1OMWNuSmxiblJYYjNKclpYSnpJRDhnVFdGMGFDNXRZWGdvZEdoeVpXRmtRMjkxYm5RZ0xTQXlMQ0F4S1NBNklERTdYRzRnSUNBZ0lDQjBhR2x6TGw5M2IzSnJaWEp6SUQwZ2JtVjNJRUZ5Y21GNUtIUm9hWE11WDNkdmNtdGxja052ZFc1MEtTNW1hV3hzS0c1MWJHd3BYRzRnSUNBZ0lDQWdJQzV0WVhBb0tDa2dQVDRnYm1WM0lGZHZjbXRsY2lodVpYY2dWVkpNS0NjdUwyUnBjM1JoYm1ObExXMWhkSEpwZUMxM2IzSnJaWEluTENCcGJYQnZjblF1YldWMFlTNTFjbXdwS1NrN1hHNGdJQ0FnSUNCMGFHbHpMbDkwWlhKdGFXNWhkR1ZQYmtOdmJYQnNaWFJsSUQwZ2RHVnliV2x1WVhSbFQyNURiMjF3YkdWMFpUdGNiaUFnSUNCOU8xeHVYRzRnSUNBZ2NIVmliR2xqSUdGemVXNWpJR05oYkdNOFZENG9kbUZzZFdWek9pQkJjbkpoZVR4VVBpQjhJRUZ5Y21GNVRHbHJaVHhVUGl3Z1ptNU9ZVzFsT2lCTGJtOTNiazFsZEhKcFkzTXNYRzRnSUNBZ0lDQnViM0p0WVd4cGVtVWdQU0IwY25WbExDQnZjSFJ6UHpvZ2UxdGZPaUJ6ZEhKcGJtZGRPaUJoYm5sOUtUb2dVSEp2YldselpUeEdiRzloZERNeVFYSnlZWGsrSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ1WlhjZ1VISnZiV2x6WlNoaGMzbHVZeUFvY21WemIyeDJaU3dnY21WcVpXTjBLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYkdWdUlEMGdkbUZzZFdWekxteGxibWQwYUR0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCd2NtOXRhWE5sY3lBOUlHNWxkeUJCY25KaGVUeFFjbTl0YVhObFBIWnZhV1ErUGloMGFHbHpMbDkzYjNKclpYSkRiM1Z1ZENrN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2RHOTBZV3hNWlc1bmRHZ2dQU0JzWlc0Z0tpQW9iR1Z1SUMwZ01Ta2dMeUF5T3lBdkx5QnphWHBsSUc5bUlISmxaSFZqWldRZ1pHbHpkR0Z1WTJVZ2JXRjBjbWw0WEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTVmZDI5eWEyVnlRMjkxYm5RZ1BTQk5ZWFJvTG0xcGJpaDBhR2x6TGw5M2IzSnJaWEpEYjNWdWRDd2dkRzkwWVd4TVpXNW5kR2dwTzF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUdOb2RXNXJVMmw2WlNBOUlIUnZkR0ZzVEdWdVozUm9JQzhnZEdocGN5NWZkMjl5YTJWeVEyOTFiblE3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWkdsemRHRnVZMlZOWVhSeWFYZ2dQU0J1WlhjZ1JteHZZWFF6TWtGeWNtRjVLSFJ2ZEdGc1RHVnVaM1JvS1R0Y2JpQWdJQ0FnSUNBZ0lDQnNaWFFnWlc1a1VtOTNJRDBnTUR0Y2JpQWdJQ0FnSUNBZ0lDQnNaWFFnWlc1a1EyOXNJRDBnTVR0Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJ0YVc1dFlYZ2dabTl5SUc1dmNtMWhiR2w2WVhScGIyNWNiaUFnSUNBZ0lDQWdJQ0JzWlhRZ2JHMXBiaUE5SURBN1hHNGdJQ0FnSUNBZ0lDQWdiR1YwSUd4dFlYZ2dQU0JPZFcxaVpYSXVUVWxPWDFaQlRGVkZPMXh1SUNBZ0lDQWdJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2RHaHBjeTVmZDI5eWEyVnlRMjkxYm5RN0lHa3JLeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2MzUmhjblFnUFNCTllYUm9MbVpzYjI5eUtHa2dLaUJqYUhWdWExTnBlbVVwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1pXNWtJRDBnS0drZ1BUMDlJSFJvYVhNdVgzZHZjbXRsY2tOdmRXNTBJQzBnTVNrZ1B5QjBiM1JoYkV4bGJtZDBhQ0E2SUUxaGRHZ3VabXh2YjNJb0tHa2dLeUF4S1NBcUlHTm9kVzVyVTJsNlpTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J6ZEdGeWRGSnZkeUE5SUdWdVpGSnZkenRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUhOMFlYSjBRMjlzSUQwZ1pXNWtRMjlzTzF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0drZ0lUMDlJSFJvYVhNdVgzZHZjbXRsY2tOdmRXNTBJQzBnTVNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QlVhR1Z6WlNCbWIzSnRkV3hoY3lCdFlYQWdkR2hsSUd4cGJtVmhjaUJwYm1SbGVDQjBieUIwYUdVZ2RYQndaWElnZEhKcFlXNW5kV3hoY2lCdFlYUnlhWGdnYVc1a2FXTmxjMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQmxibVJTYjNjZ1BTQnNaVzRnTFNBeUlDMGdUV0YwYUM1bWJHOXZjaWhOWVhSb0xuTnhjblFvTFRnZ0tpQmxibVFnS3lBMElDb2diR1Z1SUNvZ0tHeGxiaUF0SURFcElDMGdOeWtnTHlBeUlDMGdNQzQxS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnWlc1a1EyOXNJRDBnWlc1a0lDMGdiR1Z1SUNvZ1pXNWtVbTkzSUNzZ1RXRjBhQzVtYkc5dmNpZ29aVzVrVW05M0lDc2dNU2tnS2lBb1pXNWtVbTkzSUNzZ01pa2dMeUF5S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11WDNkdmNtdGxjbk5iYVYwdWNHOXpkRTFsYzNOaFoyVW9lM1poYkhWbGN5d2dabTVPWVcxbExDQnpkR0Z5ZEZKdmR5d2djM1JoY25SRGIyd3NJR05vZFc1amExTnBlbVU2SUdWdVpDQXRJSE4wWVhKMExDQnZjSFJ6ZlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J3Y205dGFYTmxjMXRwWFNBOUlHNWxkeUJRY205dGFYTmxLQ2h5WlhOdmJIWmxWMjl5YTJWeUxDQnlaV3BsWTNSWGIzSnJaWElwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVmZDI5eWEyVnljMXRwWFM1dmJtMWxjM05oWjJVZ1BTQW9lMlJoZEdFNklIdGxjbkp2Y2l3Z1pHbHpkR0Z1WTJWTllYUnlhWGhFWVhSaExDQnRhVzRzSUcxaGVIMTlLVG9nZG05cFpDQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NWZkR1Z5YldsdVlYUmxUMjVEYjIxd2JHVjBaU0FtSmlCMGFHbHpMbDkzYjNKclpYSnpXMmxkTG5SbGNtMXBibUYwWlNncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hsY25KdmNpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WcVpXTjBWMjl5YTJWeUtHVnljbTl5S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pHbHpkR0Z1WTJWTllYUnlhWGd1YzJWMEtHUnBjM1JoYm1ObFRXRjBjbWw0UkdGMFlTd2djM1JoY25RcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0cxcGJpQThJR3h0YVc0cFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3h0YVc0Z1BTQnRhVzQ3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9iV0Y0SUQ0Z2JHMWhlQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHMWhlQ0E5SUcxaGVEdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsYzI5c2RtVlhiM0pyWlhJb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lIMDdYRzRnSUNBZ0lDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ1lYZGhhWFFnVUhKdmJXbHpaUzVoYkd3b2NISnZiV2x6WlhNcE8xeHVJQ0FnSUNBZ0lDQWdJR2xtSUNodWIzSnRZV3hwZW1VcFhHNGdJQ0FnSUNBZ0lDQWdJQ0JrYVhOMFlXNWpaVTFoZEhKcGVDNW1iM0pGWVdOb0tDaDJZV3gxWlN3Z2FXNWtaWGdwSUQwK0lIc2daR2x6ZEdGdVkyVk5ZWFJ5YVhoYmFXNWtaWGhkSUQwZ0tIWmhiSFZsSUMwZ2JHMXBiaWtnTHlBb2JHMWhlQ0F0SUd4dGFXNHBPeUI5S1R0Y2JpQWdJQ0FnSUNBZ0lDQnlaWE52YkhabEtHUnBjM1JoYm1ObFRXRjBjbWw0S1R0Y2JpQWdJQ0FnSUNBZ2ZTQmpZWFJqYUNBb1pTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhKbGFtVmpkQ2hsS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NIVmliR2xqSUhSbGNtMXBibUYwWlNncE9pQjJiMmxrSUh0Y2JpQWdJQ0FnSUhSb2FYTXVYM2R2Y210bGNuTXVabTl5UldGamFDZ29kMjl5YTJWeUtTQTlQaUIzYjNKclpYSXVkR1Z5YldsdVlYUmxLQ2twTzF4dUlDQWdJSDFjYm4xY2JpSmRmUT09IiwiaW1wb3J0IHsgY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UsIGZpbGxSYW5kb21NYXRyaXgsIHZlY3RvckFkZCwgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5pbXBvcnQgeyByYW5kb21JbnQgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9yYW5kb20nO1xuaW1wb3J0IHsgRGlzdGFuY2VNYXRyaXhTZXJ2aWNlLCBkbUxpbmVhckluZGV4IH0gZnJvbSAnLi9kaXN0YW5jZS1tYXRyaXgnO1xuLyoqXG4gKiBJbXBsZW1lbnRzIHN0b2NoYXN0aWMgcHJveGltaXR5IGVtYmVkZGluZy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgU1BFQmFzZVxuICogQGxpbmsgZG9pOjEwLjEwMTYvUzEwOTMtMzI2MygwMykwMDE1NS00XG4gKi9cbmNsYXNzIFNQRUJhc2Uge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgU1BFQmFzZS5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IFtvcHRpb25zXSBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIEBtZW1iZXJvZiBTUEVCYXNlXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLnN0ZXBzID0gb3B0aW9ucz8uc3RlcHMgPz8gMDtcbiAgICAgICAgdGhpcy5jeWNsZXMgPSBvcHRpb25zPy5jeWNsZXMgPz8gMWU2O1xuICAgICAgICAvLyBTZWxlY3QgYSBjdXRvZmYgZGlzdGFuY2Uge2N1dG9mZn0gYW5kIC4uLlxuICAgICAgICB0aGlzLmN1dG9mZiA9IG9wdGlvbnM/LmN1dG9mZiA/PyAwO1xuICAgICAgICAvLyAuLi4gYW4gaW5pdGlhbCBsZWFybmluZyByYXRlIHtsYW1iZGF9ID4gMFxuICAgICAgICB0aGlzLmxhbWJkYSA9IG9wdGlvbnM/LmxhbWJkYSA/PyAyLjA7XG4gICAgICAgIHRoaXMuZGxhbWJkYSA9IG9wdGlvbnM/LmRsYW1iZGEgPz8gMC4wMTtcbiAgICAgICAgdGhpcy5sYW1iZGEyID0gdGhpcy5sYW1iZGEgLyAyLjtcbiAgICAgICAgdGhpcy5kbGFtYmRhMiA9IHRoaXMuZGxhbWJkYSAvIDIuO1xuICAgICAgICB0aGlzLmVwc2lsb24gPSBvcHRpb25zPy5lcHNpbG9uID8/IDFlLTEwO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYnJhY2Utc3R5bGVcbiAgICAgICAgdGhpcy5kaXN0YW5jZUZ1bmN0aW9uID0gb3B0aW9ucz8uZGlzdGFuY2UgPz8gY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2U7XG4gICAgICAgIHRoaXMuZGlzdGFuY2UgPSBuZXcgRmxvYXQzMkFycmF5KCk7XG4gICAgICAgIHRoaXMuZGlzdGFuY2VGdW5jdGlvbk5hbWUgPSBvcHRpb25zPy5kaXN0YW5jZUZ1bmN0aW9uTmFtZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgZGlzdGFuY2UgbWF0cml4LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtWZWN0b3JzfSB2ZWN0b3JzIElucHV0IHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlIGJldHdlZW4uXG4gICAgICogQG1lbWJlcm9mIFNQRUJhc2VcbiAgICAgKi9cbiAgICBhc3luYyBpbml0RGlzdGFuY2UodmVjdG9ycykge1xuICAgICAgICB0aGlzLmRtSW5kZXhGdW5jdCA9IGRtTGluZWFySW5kZXgodmVjdG9ycy5sZW5ndGgpO1xuICAgICAgICBjb25zdCBtYXRyaXhTZXJ2aWNlID0gbmV3IERpc3RhbmNlTWF0cml4U2VydmljZSh0cnVlLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuZGlzdGFuY2UgPSBhd2FpdCBtYXRyaXhTZXJ2aWNlLmNhbGModmVjdG9ycywgdGhpcy5kaXN0YW5jZUZ1bmN0aW9uTmFtZSk7XG4gICAgICAgIG1hdHJpeFNlcnZpY2UudGVybWluYXRlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgZGlzdGFuY2UgYmV0d2VlbiB0aGUgdHdvIHZlY3RvcnMgZ2l2ZW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1ZlY3RvcnN9IHZlY3RvcnMgU2V0IG9mIHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlcyBiZXR3ZWVuLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleDEgSW5kZXggb2YgdGhlIGZpcnN0IHZlY3RvciBvZiB0aGUgcGFpci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXgyIEluZGV4IG9mIHRoZSBzZWNvbmQgdmVjdG9yIG9mIHRoZSBwYWlyLlxuICAgICAqIEByZXR1cm4ge251bWJlcn0gRGlzdGFuY2UgYmV0d2VlbiB0aGVzZSB0d28gdmVjdG9ycy5cbiAgICAgKi9cbiAgICBjYWxjRGlzdGFuY2UodmVjdG9ycywgaW5kZXgxLCBpbmRleDIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzdGFuY2VbdGhpcy5kbUluZGV4RnVuY3QoaW5kZXgxLCBpbmRleDIpXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSB2ZWN0b3JzIGdpdmVuIGludG8gYSB0d28tZGltZW5zaW9uYWwgc3BhY2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1ZlY3RvcnN9IHZlY3RvcnMgRC1kaW1lbnNpb25hbCBjb29yZGluYXRlcy5cbiAgICAgKiBAcmV0dXJuIHtDb29yZGluYXRlc30gU1BFIGNvb3JkaW5hdGVzIGluIEQgc3BhY2UuXG4gICAgICovXG4gICAgYXN5bmMgZW1iZWQodmVjdG9ycykge1xuICAgICAgICBjb25zdCBuSXRlbXMgPSB2ZWN0b3JzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgYXJlYVdpZHRoID0gNDA7XG4gICAgICAgIC8vIEluaXRpYWxpemUgdGhlIEQtZGltZW5zaW9uYWwgY29vcmRpbmF0ZXMgb2YgdGhlIE4gcG9pbnRzLlxuICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IGZpbGxSYW5kb21NYXRyaXgobkl0ZW1zLCBTUEVCYXNlLmRpbWVuc2lvbiwgYXJlYVdpZHRoKTtcbiAgICAgICAgbGV0IGxhbWJkYTIgPSB0aGlzLmxhbWJkYTI7XG4gICAgICAgIGlmICh0aGlzLnN0ZXBzID09PSAwKVxuICAgICAgICAgICAgdGhpcy5zdGVwcyA9IHZlY3RvcnMubGVuZ3RoIC0gMTtcbiAgICAgICAgYXdhaXQgdGhpcy5pbml0RGlzdGFuY2UodmVjdG9ycyk7XG4gICAgICAgIGZvciAobGV0IGN5Y2xlID0gMDsgY3ljbGUgPCB0aGlzLmN5Y2xlczsgKytjeWNsZSkge1xuICAgICAgICAgICAgZm9yIChsZXQgc3RlcCA9IDA7IHN0ZXAgPCB0aGlzLnN0ZXBzOyArK3N0ZXApIHtcbiAgICAgICAgICAgICAgICAvLyBTZWxlY3QgdHdvIHBvaW50cywgaSBhbmQgaiwgYXQgcmFuZG9tLCAuLi5cbiAgICAgICAgICAgICAgICBjb25zdCBpID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICAgICAgbGV0IGogPSByYW5kb21JbnQobkl0ZW1zKTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoaSA9PSBqKVxuICAgICAgICAgICAgICAgICAgICBqID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm93aSA9IGNvb3JkaW5hdGVzW2ldO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvd2ogPSBjb29yZGluYXRlc1tqXTtcbiAgICAgICAgICAgICAgICAvLyAuLi4gcmV0cmlldmUgKG9yIGV2YWx1YXRlKSB0aGVpciBwcm94aW1pdHkgaW4gdGhlIGlucHV0IHNwYWNlLCByaWogYW5kIC4uLlxuICAgICAgICAgICAgICAgIGNvbnN0IHIgPSB0aGlzLmNhbGNEaXN0YW5jZSh2ZWN0b3JzLCBpLCBqKTtcbiAgICAgICAgICAgICAgICAvLyAuLi4gY29tcHV0ZSB0aGVpciBFdWNsaWRlYW4gZGlzdGFuY2Ugb24gdGhlIEQtZGltZW5zaW9uYWwgbWFwLCBkaWouXG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlKHJvd2ksIHJvd2opO1xuICAgICAgICAgICAgICAgIC8vIElmIHJpaiA8PSByYywgb3IgaWYgcmlqID4gcmMgYW5kIGRpaiA8IHJpaiAuLi5cbiAgICAgICAgICAgICAgICBpZiAoKHRoaXMuY3V0b2ZmID09IDApIHx8IChyIDw9IHRoaXMuY3V0b2ZmKSB8fCAoZCA8IHIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSBsYW1iZGEyICogKHIgLSBkKSAvIChkICsgdGhpcy5lcHNpbG9uKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gLi4uIHVwZGF0ZSB0aGUgY29vcmRpbmF0ZXMgeGkgYW5kIHhqLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWZmSUogPSB2ZWN0b3JBZGQocm93aSwgcm93aiwgLTEpO1xuICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlc1tpXSA9IHZlY3RvckFkZChyb3dpLCBkaWZmSUosIG11bHRpcGxpZXIpO1xuICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlc1tqXSA9IHZlY3RvckFkZChyb3dqLCBkaWZmSUosIC1tdWx0aXBsaWVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBEZWNyZWFzZSB0aGUgbGVhcm5pbmcgcmF0ZSB7bGFtYmRhfSBieSBhIHByZXNjcmliZWQge2RsYW1iZGF9LlxuICAgICAgICAgICAgbGFtYmRhMiAtPSB0aGlzLmRsYW1iZGEyO1xuICAgICAgICAgICAgaWYgKGxhbWJkYTIgPD0gMC4pXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvb3JkaW5hdGVzO1xuICAgIH1cbn1cblNQRUJhc2UuZGltZW5zaW9uID0gMjtcbmV4cG9ydCB7IFNQRUJhc2UgfTtcbi8qKlxuICogSW1wbGVtZW50cyBtb2RpZmllZCBzdG9jaGFzdGljIHByb3hpbWl0eSBlbWJlZGRpbmcuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIFBTUEVCYXNlXG4gKiBAbGluayBkb2k6MTAuMTAxNi9TMTA5My0zMjYzKDAzKTAwMTU1LTRcbiAqL1xuZXhwb3J0IGNsYXNzIFBTUEVCYXNlIGV4dGVuZHMgU1BFQmFzZSB7XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSB2ZWN0b3JzIGdpdmVuIGludG8gYSB0d28tZGltZW5zaW9uYWwgc3BhY2UgdXNpbmcgYSBtb2RpZmllZCB1cGRhdGUgcnVsZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7VmVjdG9yc30gdmVjdG9ycyBELWRpbWVuc2lvbmFsIGNvb3JkaW5hdGVzLlxuICAgICAqIEByZXR1cm4ge0Nvb3JkaW5hdGVzfSBTUEUgY29vcmRpbmF0ZXMgaW4gRCBzcGFjZS5cbiAgICAgKi9cbiAgICBhc3luYyBlbWJlZCh2ZWN0b3JzKSB7XG4gICAgICAgIGNvbnN0IG5JdGVtcyA9IHZlY3RvcnMubGVuZ3RoO1xuICAgICAgICBjb25zdCBhcmVhV2lkdGggPSA0MDtcbiAgICAgICAgLy8gIEluaXRpYWxpemUgdGhlIEQtZGltZW5zaW9uYWwgY29vcmRpbmF0ZXMgb2YgdGhlIE4gcG9pbnRzLlxuICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IGZpbGxSYW5kb21NYXRyaXgobkl0ZW1zLCBQU1BFQmFzZS5kaW1lbnNpb24sIGFyZWFXaWR0aCk7XG4gICAgICAgIGxldCBsYW1iZGEgPSB0aGlzLmxhbWJkYTtcbiAgICAgICAgYXdhaXQgdGhpcy5pbml0RGlzdGFuY2UodmVjdG9ycyk7XG4gICAgICAgIGZvciAobGV0IGN5Y2xlID0gMDsgY3ljbGUgPCB0aGlzLmN5Y2xlczsgKytjeWNsZSkge1xuICAgICAgICAgICAgLy8gU2VsZWN0IGEgcG9pbnQsIGksIGF0IHJhbmRvbSAocGl2b3QpLlxuICAgICAgICAgICAgY29uc3QgaSA9IHJhbmRvbUludChuSXRlbXMpO1xuICAgICAgICAgICAgY29uc3Qgcm93aSA9IGNvb3JkaW5hdGVzW2ldO1xuICAgICAgICAgICAgLy8gRm9yIGV2ZXJ5IHBvaW50IGogIT0gaSAuLi5cbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbkl0ZW1zOyArK2opIHtcbiAgICAgICAgICAgICAgICBpZiAoaSA9PSBqKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjb25zdCByb3dqID0gY29vcmRpbmF0ZXNbal07XG4gICAgICAgICAgICAgICAgLy8gLi4uIHJldHJpZXZlIChvciBldmFsdWF0ZSkgaXRzIHByb3hpbWl0eSB0byBpIGluIHRoZSBpbnB1dCBzcGFjZSwgcmlqIC4uLlxuICAgICAgICAgICAgICAgIGNvbnN0IHIgPSB0aGlzLmNhbGNEaXN0YW5jZSh2ZWN0b3JzLCBpLCBqKTtcbiAgICAgICAgICAgICAgICAvLyAuLi4gYW5kIGNvbXB1dGUgdGhlaXIgRXVjbGlkZWFuIGRpc3RhbmNlIG9uIHRoZSBELWRpbWVuc2lvbmFsIG1hcCwgZGlqLlxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZShyb3dpLCByb3dqKTtcbiAgICAgICAgICAgICAgICAvLyBJZiByaWogPD0gcmMsIG9yIGlmIHJpaiA+IHJjIGFuZCBkaWogPCByaWogLi4uXG4gICAgICAgICAgICAgICAgaWYgKCh0aGlzLmN1dG9mZiA9PSAwKSB8fCAociA8PSB0aGlzLmN1dG9mZikgfHwgKGQgPCByKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aXBsaWVyID0gbGFtYmRhICogKHIgLSBkKSAvIChkICsgdGhpcy5lcHNpbG9uKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlmZklKID0gdmVjdG9yQWRkKHJvd2ksIHJvd2osIC0xKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gLi4uIHVwZGF0ZSB0aGUgY29vcmRpbmF0ZXMgeGouXG4gICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzW2pdID0gdmVjdG9yQWRkKHJvd2osIGRpZmZJSiwgLW11bHRpcGxpZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIERlY3JlYXNlIHRoZSBsZWFybmluZyByYXRlIHtsYW1iZGF9IGJ5IGEgcHJlc2NyaWJlZCB7ZGxhbWJkYX0uXG4gICAgICAgICAgICBsYW1iZGEgLT0gdGhpcy5kbGFtYmRhO1xuICAgICAgICAgICAgaWYgKGxhbWJkYSA8PSAwLilcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29vcmRpbmF0ZXM7XG4gICAgfVxufVxuLyoqXG4gKiBJbXBsZW1lbnRzIG1vZGlmaWVkIHN0b2NoYXN0aWMgcHJveGltaXR5IGVtYmVkZGluZy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgT3JpZ2luYWxTUEVcbiAqIEBsaW5rIGRvaToxMC4xMDAyL2pjYy4xMDIzNFxuICovXG5leHBvcnQgY2xhc3MgT3JpZ2luYWxTUEUgZXh0ZW5kcyBTUEVCYXNlIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLmN5Y2xlcyA9IG9wdGlvbnM/LmN5Y2xlcyA/PyAxZTM7XG4gICAgICAgIHRoaXMuc3RlcHMgPSBvcHRpb25zPy5zdGVwcyA/PyAxMDAwMDA7XG4gICAgICAgIHRoaXMucmFkaXVzUGVyY2VudCA9IG9wdGlvbnM/LnJhZGl1c1BlcmNlbnQgPz8gMS4wO1xuICAgICAgICB0aGlzLm1heERpc3RhbmNlID0gb3B0aW9ucz8ubWF4RGlzdGFuY2UgPz8gbnVsbDtcbiAgICAgICAgdGhpcy5tYXhEaXN0YW5jZVN0ZXBzID0gb3B0aW9ucz8ubWF4RGlzdGFuY2VTdGVwcyA/PyBudWxsO1xuICAgIH1cbiAgICBhc3luYyBlbWJlZCh2ZWN0b3JzKSB7XG4gICAgICAgIGNvbnN0IG5JdGVtcyA9IHZlY3RvcnMubGVuZ3RoO1xuICAgICAgICBjb25zdCBhcmVhV2lkdGggPSA0MDtcbiAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgRC1kaW1lbnNpb25hbCBjb29yZGluYXRlcyBvZiB0aGUgTiBwb2ludHMuXG4gICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZmlsbFJhbmRvbU1hdHJpeChuSXRlbXMsIE9yaWdpbmFsU1BFLmRpbWVuc2lvbiwgYXJlYVdpZHRoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5pbml0RGlzdGFuY2UodmVjdG9ycyk7XG4gICAgICAgIGlmICh0aGlzLm1heERpc3RhbmNlU3RlcHMgPT09IG51bGwpXG4gICAgICAgICAgICB0aGlzLm1heERpc3RhbmNlU3RlcHMgPSBuSXRlbXMgKiBNYXRoLmZsb29yKChuSXRlbXMgLSAxKSAvIDIpO1xuICAgICAgICBpZiAodGhpcy5tYXhEaXN0YW5jZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5tYXhEaXN0YW5jZSA9IC0xZTM3O1xuICAgICAgICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCB0aGlzLm1heERpc3RhbmNlU3RlcHM7IG4rKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGkgPSByYW5kb21JbnQobkl0ZW1zKTtcbiAgICAgICAgICAgICAgICBsZXQgaiA9IHJhbmRvbUludChuSXRlbXMpO1xuICAgICAgICAgICAgICAgIHdoaWxlIChpID09IGopXG4gICAgICAgICAgICAgICAgICAgIGogPSByYW5kb21JbnQobkl0ZW1zKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkID0gdGhpcy5jYWxjRGlzdGFuY2UodmVjdG9ycywgaSwgaik7XG4gICAgICAgICAgICAgICAgaWYgKGQgPiB0aGlzLm1heERpc3RhbmNlKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1heERpc3RhbmNlID0gZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgbGFtYmRhID0gdGhpcy5sYW1iZGE7XG4gICAgICAgIGNvbnN0IHJhZGl1cyA9ICh0aGlzLnJhZGl1c1BlcmNlbnQgPT0gMC4wKSA/IHRoaXMubWF4RGlzdGFuY2UgOiB0aGlzLm1heERpc3RhbmNlICogdGhpcy5yYWRpdXNQZXJjZW50O1xuICAgICAgICBmb3IgKGxldCBjeWNsZSA9IDA7IGN5Y2xlIDwgdGhpcy5jeWNsZXM7ICsrY3ljbGUpIHtcbiAgICAgICAgICAgIGZvciAobGV0IHN0ZXAgPSAwOyBzdGVwIDwgdGhpcy5zdGVwczsgKytzdGVwKSB7XG4gICAgICAgICAgICAgICAgLy8gU2VsZWN0IHR3byBwb2ludHMsIGkgYW5kIGosIGF0IHJhbmRvbSwgLi4uXG4gICAgICAgICAgICAgICAgY29uc3QgaSA9IHJhbmRvbUludChuSXRlbXMpO1xuICAgICAgICAgICAgICAgIGxldCBqID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGkgPT0gailcbiAgICAgICAgICAgICAgICAgICAgaiA9IHJhbmRvbUludChuSXRlbXMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvd2kgPSBjb29yZGluYXRlc1tpXTtcbiAgICAgICAgICAgICAgICBjb25zdCByb3dqID0gY29vcmRpbmF0ZXNbal07XG4gICAgICAgICAgICAgICAgLy8gcmV0cmlldmUgKG9yIGV2YWx1YXRlKSB0aGVpciBwcm94aW1pdHkgaW4gdGhlIGlucHV0IHNwYWNlLCByaWogYW5kIC4uLlxuICAgICAgICAgICAgICAgIGNvbnN0IHIgPSB0aGlzLmNhbGNEaXN0YW5jZSh2ZWN0b3JzLCBpLCBqKTtcbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIHRoZWlyIEV1Y2xpZGVhbiBkaXN0YW5jZSBvbiB0aGUgRC1kaW1lbnNpb25hbCBtYXAsIGRpai5cbiAgICAgICAgICAgICAgICBjb25zdCBkID0gY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2Uocm93aSwgcm93aik7XG4gICAgICAgICAgICAgICAgaWYgKChyIDw9IHJhZGl1cykgfHwgKGQgPCByKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aXBsaWVyID0gbGFtYmRhICogMC41ICogKHIgLSBkKSAvIChkICsgdGhpcy5lcHNpbG9uKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gLi4uIHVwZGF0ZSB0aGUgY29vcmRpbmF0ZXMgeGkgYW5kIHhqLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWZmSUogPSB2ZWN0b3JBZGQocm93aSwgcm93aiwgLTEpO1xuICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlc1tpXSA9IHZlY3RvckFkZChyb3dpLCBkaWZmSUosIG11bHRpcGxpZXIpO1xuICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlc1tqXSA9IHZlY3RvckFkZChyb3dqLCBkaWZmSUosIC1tdWx0aXBsaWVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYW1iZGEgLT0gKCh0aGlzLmxhbWJkYSAtIHRoaXMuZGxhbWJkYSkgLyAodGhpcy5jeWNsZXMgLSAxLjApKTtcbiAgICAgICAgICAgIDtcbiAgICAgICAgICAgIGlmIChsYW1iZGEgPCB0aGlzLmRsYW1iZGEpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvb3JkaW5hdGVzO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMzQmxMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaWMzQmxMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVOQkxFOUJRVThzUlVGRFRDd3dRa0ZCTUVJc1JVRkRNVUlzWjBKQlFXZENMRVZCUTJoQ0xGTkJRVk1zUjBGRFZpeE5RVUZOTEdsRVFVRnBSQ3hEUVVGRE8wRkJRM3BFTEU5QlFVOHNSVUZCUXl4VFFVRlRMRVZCUVVNc1RVRkJUU3h6UTBGQmMwTXNRMEZCUXp0QlFVVXZSQ3hQUVVGUExFVkJRVU1zY1VKQlFYRkNMRVZCUVVVc1lVRkJZU3hGUVVGRExFMUJRVTBzYlVKQlFXMUNMRU5CUVVNN1FVRkZka1U3T3pzN096dEhRVTFITzBGQlEwZ3NUVUZCWVN4UFFVRlBPMGxCWld4Q096czdPMDlCU1VjN1NVRkRTQ3haUVVGWkxFOUJRV2xDTzFGQlF6TkNMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzVDBGQlR5eEZRVUZGTEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRha01zU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4UFFVRlBMRVZCUVVVc1RVRkJUU3hKUVVGSkxFZEJRVWNzUTBGQlF6dFJRVU55UXl3MFEwRkJORU03VVVGRE5VTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhQUVVGUExFVkJRVVVzVFVGQlRTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTnVReXcwUTBGQk5FTTdVVUZETlVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eFBRVUZQTEVWQlFVVXNUVUZCVFN4SlFVRkpMRWRCUVVjc1EwRkJRenRSUVVOeVF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRTlCUVU4c1JVRkJSU3hQUVVGUExFbEJRVWtzU1VGQlNTeERRVUZETzFGQlEzaERMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRhRU1zU1VGQlNTeERRVUZETEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU5zUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFOUJRVThzUlVGQlJTeFBRVUZQTEVsQlFVa3NTMEZCU3l4RFFVRkRPMUZCUTNwRExIVkRRVUYxUXp0UlFVTjJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRWRCUVVjc1QwRkJUeXhGUVVGRkxGRkJRVkVzU1VGQlNTd3dRa0ZCTUVJc1EwRkJRenRSUVVONFJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRWxCUVVrc1dVRkJXU3hGUVVGRkxFTkJRVU03VVVGRGJrTXNTVUZCU1N4RFFVRkRMRzlDUVVGdlFpeEhRVUZITEU5QlFVOHNSVUZCUlN4dlFrRkJjVUlzUTBGQlF6dEpRVU0zUkN4RFFVRkRPMGxCUlVRN096czdPMDlCUzBjN1NVRkRUeXhMUVVGTExFTkJRVU1zV1VGQldTeERRVUZETEU5QlFXZENPMUZCUXpORExFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NZVUZCWVN4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU5zUkN4TlFVRk5MR0ZCUVdFc1IwRkJSeXhKUVVGSkxIRkNRVUZ4UWl4RFFVRkRMRWxCUVVrc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dFJRVU0zUkN4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFMUJRVTBzWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1NVRkJTU3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRU5CUVVNN1VVRkROMFVzWVVGQllTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMGxCUXpWQ0xFTkJRVU03U1VGRlJEczdPenM3T3p0UFFVOUhPMGxCUTA4c1dVRkJXU3hEUVVGRExFOUJRV2RDTEVWQlFVVXNUVUZCWXl4RlFVRkZMRTFCUVdNN1VVRkRja1VzVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGaExFTkJRVU1zVFVGQlRTeEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRNMFFzUTBGQlF6dEpRVVZFT3pzN096dFBRVXRITzBsQlEwa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGblFqdFJRVU5xUXl4TlFVRk5MRTFCUVUwc1IwRkJSeXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETzFGQlF6bENMRTFCUVUwc1UwRkJVeXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU55UWl3MFJFRkJORVE3VVVGRE5VUXNUVUZCVFN4WFFVRlhMRWRCUVVjc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RlFVRkZMRTlCUVU4c1EwRkJReXhUUVVGVExFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTTdVVUZGTTBVc1NVRkJTU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXp0UlFVVXpRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEV0QlFVc3NRMEZCUXp0WlFVTnNRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEU5QlFVOHNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJSMnhETEUxQlFVMHNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVVZxUXl4TFFVRkxMRWxCUVVrc1MwRkJTeXhIUVVGSExFTkJRVU1zUlVGQlJTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJUdFpRVU5vUkN4TFFVRkxMRWxCUVVrc1NVRkJTU3hIUVVGSExFTkJRVU1zUlVGQlJTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hGUVVGRkxFbEJRVWtzUlVGQlJUdG5Ra0ZETlVNc05rTkJRVFpETzJkQ1FVTTNReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1owSkJRelZDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dG5Ra0ZETVVJc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF6dHZRa0ZCUlN4RFFVRkRMRWRCUVVjc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzJkQ1FVVnlReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRelZDTEUxQlFVMHNTVUZCU1N4SFFVRkhMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZGTlVJc05rVkJRVFpGTzJkQ1FVTTNSU3hOUVVGTkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUXpORExITkZRVUZ6UlR0blFrRkRkRVVzVFVGQlRTeERRVUZETEVkQlFVY3NNRUpCUVRCQ0xFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVWcVJDeHBSRUZCYVVRN1owSkJRMnBFTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSVHR2UWtGRGRrUXNUVUZCVFN4VlFVRlZMRWRCUVVjc1QwRkJUeXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0dlFrRkRNVVFzZDBOQlFYZERPMjlDUVVONFF5eE5RVUZOTEUxQlFVMHNSMEZCUnl4VFFVRlRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVONlF5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1UwRkJVeXhEUVVGRExFbEJRVWtzUlVGQlJTeE5RVUZOTEVWQlFVVXNWVUZCVlN4RFFVRkRMRU5CUVVNN2IwSkJRM0pFTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zU1VGQlNTeEZRVUZGTEUxQlFVMHNSVUZCUlN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8ybENRVU4yUkR0aFFVTkdPMWxCUTBRc2FVVkJRV2xGTzFsQlEycEZMRTlCUVU4c1NVRkJTU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETzFsQlEzcENMRWxCUVVrc1QwRkJUeXhKUVVGSkxFVkJRVVU3WjBKQlEyWXNUVUZCVFR0VFFVTlVPMUZCUTBRc1QwRkJUeXhYUVVGWExFTkJRVU03U1VGRGNrSXNRMEZCUXpzN1FVRXZSMmRDTEdsQ1FVRlRMRWRCUVVjc1EwRkJReXhEUVVGRE8xTkJSSEJDTEU5QlFVODdRVUZ0U0hCQ096czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNUMEZCVHl4UlFVRlRMRk5CUVZFc1QwRkJUenRKUVVOdVF6czdPenM3VDBGTFJ6dEpRVU5KTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJaMEk3VVVGRGFrTXNUVUZCVFN4TlFVRk5MRWRCUVVjc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF6dFJRVU01UWl4TlFVRk5MRk5CUVZNc1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRGNrSXNOa1JCUVRaRU8xRkJRemRFTEUxQlFVMHNWMEZCVnl4SFFVRkhMR2RDUVVGblFpeERRVUZETEUxQlFVMHNSVUZCUlN4UlFVRlJMRU5CUVVNc1UwRkJVeXhGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzFGQlF6VkZMRWxCUVVrc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZGZWtJc1RVRkJUU3hKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUldwRExFdEJRVXNzU1VGQlNTeExRVUZMTEVkQlFVY3NRMEZCUXl4RlFVRkZMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNTMEZCU3l4RlFVRkZPMWxCUTJoRUxIZERRVUYzUXp0WlFVTjRReXhOUVVGTkxFTkJRVU1zUjBGQlZ5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1dVRkRjRU1zVFVGQlRTeEpRVUZKTEVkQlFVY3NWMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJSVFZDTERaQ1FVRTJRanRaUVVNM1FpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMmRDUVVNdlFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRPMjlDUVVGRkxGTkJRVk03WjBKQlEzSkNMRTFCUVUwc1NVRkJTU3hIUVVGSExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkROVUlzTkVWQlFUUkZPMmRDUVVNMVJTeE5RVUZOTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRek5ETERCRlFVRXdSVHRuUWtGRE1VVXNUVUZCVFN4RFFVRkRMRWRCUVVjc01FSkJRVEJDTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8yZENRVU5xUkN4cFJFRkJhVVE3WjBKQlEycEVMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJUdHZRa0ZEZGtRc1RVRkJUU3hWUVVGVkxFZEJRVWNzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenR2UWtGRGVrUXNUVUZCVFN4TlFVRk5MRWRCUVVjc1UwRkJVeXhEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRGVrTXNhVU5CUVdsRE8yOUNRVU5xUXl4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVTBGQlV5eERRVUZETEVsQlFVa3NSVUZCUlN4TlFVRk5MRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dHBRa0ZEZGtRN1lVRkRSanRaUVVORUxHbEZRVUZwUlR0WlFVTnFSU3hOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXp0WlFVTjJRaXhKUVVGSkxFMUJRVTBzU1VGQlNTeEZRVUZGTzJkQ1FVTmtMRTFCUVUwN1UwRkRWRHRSUVVORUxFOUJRVThzVjBGQlZ5eERRVUZETzBsQlEzSkNMRU5CUVVNN1EwRkRSanRCUVVWRU96czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNUMEZCVHl4WFFVRlpMRk5CUVZFc1QwRkJUenRKUVZkMFF5eFpRVUZaTEU5QlFXbENPMUZCUXpOQ0xFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0UlFVTm1MRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzVDBGQlR5eEZRVUZGTEUxQlFVMHNTVUZCU1N4SFFVRkhMRU5CUVVNN1VVRkRja01zU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4UFFVRlBMRVZCUVVVc1MwRkJTeXhKUVVGSkxFMUJRVTBzUTBGQlF6dFJRVU4wUXl4SlFVRkpMRU5CUVVNc1lVRkJZU3hIUVVGSExFOUJRVThzUlVGQlJTeGhRVUZoTEVsQlFVa3NSMEZCUnl4RFFVRkRPMUZCUTI1RUxFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NUMEZCVHl4RlFVRkZMRmRCUVZjc1NVRkJTU3hKUVVGSkxFTkJRVU03VVVGRGFFUXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeEhRVUZITEU5QlFVOHNSVUZCUlN4blFrRkJaMElzU1VGQlNTeEpRVUZKTEVOQlFVTTdTVUZETlVRc1EwRkJRenRKUVVWTkxFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCWjBJN1VVRkRha01zVFVGQlRTeE5RVUZOTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVNNVFpeE5RVUZOTEZOQlFWTXNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRja0lzTkVSQlFUUkVPMUZCUXpWRUxFMUJRVTBzVjBGQlZ5eEhRVUZITEdkQ1FVRm5RaXhEUVVGRExFMUJRVTBzUlVGQlJTeFhRVUZYTEVOQlFVTXNVMEZCVXl4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJSUzlGTEUxQlFVMHNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVVZxUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNTMEZCU3l4SlFVRkpPMWxCUTJoRExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1IwRkJSeXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVVm9SU3hKUVVGSkxFbEJRVWtzUTBGQlF5eFhRVUZYTEV0QlFVc3NTVUZCU1N4RlFVRkZPMWxCUXpkQ0xFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNN1dVRkRla0lzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdG5Ra0ZET1VNc1RVRkJUU3hEUVVGRExFZEJRVWNzVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMmRDUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRuUWtGRGRrUXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJRenR2UWtGQlJTeERRVUZETEVkQlFVY3NVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8yZENRVVZ5UXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlF6TkRMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFhRVUZYTzI5Q1FVTjBRaXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVOQlFVTXNRMEZCUXp0aFFVTjRRanRUUVVOR08xRkJSVVFzU1VGQlNTeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVONlFpeE5RVUZOTEUxQlFVMHNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF6dFJRVVYwUnl4TFFVRkxMRWxCUVVrc1MwRkJTeXhIUVVGSExFTkJRVU1zUlVGQlJTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJUdFpRVU5vUkN4TFFVRkxMRWxCUVVrc1NVRkJTU3hIUVVGSExFTkJRVU1zUlVGQlJTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hGUVVGRkxFbEJRVWtzUlVGQlJUdG5Ra0ZETlVNc05rTkJRVFpETzJkQ1FVTTNReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1owSkJRelZDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dG5Ra0ZETVVJc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF6dHZRa0ZCUlN4RFFVRkRMRWRCUVVjc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzJkQ1FVVnlReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRelZDTEUxQlFVMHNTVUZCU1N4SFFVRkhMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZGTlVJc2VVVkJRWGxGTzJkQ1FVTjZSU3hOUVVGTkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUXpORExHdEZRVUZyUlR0blFrRkRiRVVzVFVGQlRTeERRVUZETEVkQlFVY3NNRUpCUVRCQ0xFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVWcVJDeEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZPMjlDUVVNMVFpeE5RVUZOTEZWQlFWVXNSMEZCUnl4TlFVRk5MRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0dlFrRkRMMFFzZDBOQlFYZERPMjlDUVVONFF5eE5RVUZOTEUxQlFVMHNSMEZCUnl4VFFVRlRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVONlF5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1UwRkJVeXhEUVVGRExFbEJRVWtzUlVGQlJTeE5RVUZOTEVWQlFVVXNWVUZCVlN4RFFVRkRMRU5CUVVNN2IwSkJRM0pFTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zU1VGQlNTeEZRVUZGTEUxQlFVMHNSVUZCUlN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8ybENRVU4yUkR0aFFVTkdPMWxCUTBRc1RVRkJUU3hKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVUZETEVOQlFVTTdXVUZEYWtVc1NVRkJTU3hOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVODdaMEpCUTNaQ0xFMUJRVTA3VTBGRFZEdFJRVU5FTEU5QlFVOHNWMEZCVnl4RFFVRkRPMGxCUTNKQ0xFTkJRVU03UTBGRFJpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdUM0IwYVc5dWN5d2dRMjl2Y21ScGJtRjBaWE1zSUZabFkzUnZjbk1zSUVScGMzUmhibU5sVFdWMGNtbGpmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTF4dUlDQmpZV3hqZFd4aGRHVkZkV05zYVdSbFlXNUVhWE4wWVc1alpTeGNiaUFnWm1sc2JGSmhibVJ2YlUxaGRISnBlQ3hjYmlBZ2RtVmpkRzl5UVdSa0xGeHVmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkyWldOMGIzSXRiM0JsY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTNKaGJtUnZiVWx1ZEgwZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdmNtRnVaRzl0Snp0Y2JtbHRjRzl5ZENCN1MyNXZkMjVOWlhSeWFXTnpmU0JtY205dElDY3VMM1I1Y0dWa0xXMWxkSEpwWTNNbk8xeHVhVzF3YjNKMElIdEVhWE4wWVc1alpVMWhkSEpwZUZObGNuWnBZMlVzSUdSdFRHbHVaV0Z5U1c1a1pYaDlJR1p5YjIwZ0p5NHZaR2x6ZEdGdVkyVXRiV0YwY21sNEp6dGNibHh1THlvcVhHNGdLaUJKYlhCc1pXMWxiblJ6SUhOMGIyTm9ZWE4wYVdNZ2NISnZlR2x0YVhSNUlHVnRZbVZrWkdsdVp5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBWTJ4aGMzTWdVMUJGUW1GelpWeHVJQ29nUUd4cGJtc2daRzlwT2pFd0xqRXdNVFl2VXpFd09UTXRNekkyTXlnd015a3dNREUxTlMwMFhHNGdLaTljYm1WNGNHOXlkQ0JqYkdGemN5QlRVRVZDWVhObElIdGNiaUFnY0hKdmRHVmpkR1ZrSUhOMFlYUnBZeUJrYVcxbGJuTnBiMjRnUFNBeU8xeHVJQ0J3Y205MFpXTjBaV1FnYzNSbGNITTZJRzUxYldKbGNqdGNiaUFnY0hKdmRHVmpkR1ZrSUdONVkyeGxjem9nYm5WdFltVnlPMXh1SUNCd2NtOTBaV04wWldRZ1kzVjBiMlptT2lCdWRXMWlaWEk3WEc0Z0lIQnliM1JsWTNSbFpDQnNZVzFpWkdFNklHNTFiV0psY2p0Y2JpQWdjSEp2ZEdWamRHVmtJR1JzWVcxaVpHRTZJRzUxYldKbGNqdGNiaUFnY0hKdmRHVmpkR1ZrSUd4aGJXSmtZVEk2SUc1MWJXSmxjanRjYmlBZ2NISnZkR1ZqZEdWa0lHUnNZVzFpWkdFeU9pQnVkVzFpWlhJN1hHNGdJSEJ5YjNSbFkzUmxaQ0JsY0hOcGJHOXVPaUJ1ZFcxaVpYSTdYRzRnSUhCeWIzUmxZM1JsWkNCa2FYTjBZVzVqWlVaMWJtTjBhVzl1T2lCRWFYTjBZVzVqWlUxbGRISnBZenRjYmlBZ2NISnZkR1ZqZEdWa0lHUnBjM1JoYm1ObFJuVnVZM1JwYjI1T1lXMWxPaUJMYm05M2JrMWxkSEpwWTNNN1hHNGdJR1JwYzNSaGJtTmxPaUJHYkc5aGRETXlRWEp5WVhrN1hHNGdJSEJ5YjNSbFkzUmxaQ0JrYlVsdVpHVjRSblZ1WTNRL09pQW9hVG9nYm5WdFltVnlMQ0JxT2lCdWRXMWlaWElwSUQwK0lHNTFiV0psY2p0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxjeUJoYmlCcGJuTjBZVzVqWlNCdlppQlRVRVZDWVhObExseHVJQ0FnS2lCQWNHRnlZVzBnZTA5d2RHbHZibk45SUZ0dmNIUnBiMjV6WFNCUGNIUnBiMjV6SUhSdklIQmhjM01nZEc4Z2RHaGxJR052Ym5OMGNuVmpkRzl5TGx4dUlDQWdLaUJBYldWdFltVnliMllnVTFCRlFtRnpaVnh1SUNBZ0tpOWNiaUFnWTI5dWMzUnlkV04wYjNJb2IzQjBhVzl1Y3o4NklFOXdkR2x2Ym5NcElIdGNiaUFnSUNCMGFHbHpMbk4wWlhCeklEMGdiM0IwYVc5dWN6OHVjM1JsY0hNZ1B6OGdNRHRjYmlBZ0lDQjBhR2x6TG1ONVkyeGxjeUE5SUc5d2RHbHZibk0vTG1ONVkyeGxjeUEvUHlBeFpUWTdYRzRnSUNBZ0x5OGdVMlZzWldOMElHRWdZM1YwYjJabUlHUnBjM1JoYm1ObElIdGpkWFJ2Wm1aOUlHRnVaQ0F1TGk1Y2JpQWdJQ0IwYUdsekxtTjFkRzltWmlBOUlHOXdkR2x2Ym5NL0xtTjFkRzltWmlBL1B5QXdPMXh1SUNBZ0lDOHZJQzR1TGlCaGJpQnBibWwwYVdGc0lHeGxZWEp1YVc1bklISmhkR1VnZTJ4aGJXSmtZWDBnUGlBd1hHNGdJQ0FnZEdocGN5NXNZVzFpWkdFZ1BTQnZjSFJwYjI1elB5NXNZVzFpWkdFZ1B6OGdNaTR3TzF4dUlDQWdJSFJvYVhNdVpHeGhiV0prWVNBOUlHOXdkR2x2Ym5NL0xtUnNZVzFpWkdFZ1B6OGdNQzR3TVR0Y2JpQWdJQ0IwYUdsekxteGhiV0prWVRJZ1BTQjBhR2x6TG14aGJXSmtZU0F2SURJdU8xeHVJQ0FnSUhSb2FYTXVaR3hoYldKa1lUSWdQU0IwYUdsekxtUnNZVzFpWkdFZ0x5QXlManRjYmlBZ0lDQjBhR2x6TG1Wd2MybHNiMjRnUFNCdmNIUnBiMjV6UHk1bGNITnBiRzl1SUQ4L0lERmxMVEV3TzF4dUlDQWdJQzh2SUdWemJHbHVkQzFrYVhOaFlteGxMVzVsZUhRdGJHbHVaU0JpY21GalpTMXpkSGxzWlZ4dUlDQWdJSFJvYVhNdVpHbHpkR0Z1WTJWR2RXNWpkR2x2YmlBOUlHOXdkR2x2Ym5NL0xtUnBjM1JoYm1ObElEOC9JR05oYkdOMWJHRjBaVVYxWTJ4cFpHVmhia1JwYzNSaGJtTmxPMXh1SUNBZ0lIUm9hWE11WkdsemRHRnVZMlVnUFNCdVpYY2dSbXh2WVhRek1rRnljbUY1S0NrN1hHNGdJQ0FnZEdocGN5NWthWE4wWVc1alpVWjFibU4wYVc5dVRtRnRaU0E5SUc5d2RHbHZibk0vTG1ScGMzUmhibU5sUm5WdVkzUnBiMjVPWVcxbElUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJKYm1sMGFXRnNhWHBsY3lCa2FYTjBZVzVqWlNCdFlYUnlhWGd1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1ZtVmpkRzl5YzMwZ2RtVmpkRzl5Y3lCSmJuQjFkQ0IyWldOMGIzSnpJSFJ2SUdOaGJHTjFiR0YwWlNCa2FYTjBZVzVqWlNCaVpYUjNaV1Z1TGx4dUlDQWdLaUJBYldWdFltVnliMllnVTFCRlFtRnpaVnh1SUNBZ0tpOWNiaUFnY0hKdmRHVmpkR1ZrSUdGemVXNWpJR2x1YVhSRWFYTjBZVzVqWlNoMlpXTjBiM0p6T2lCV1pXTjBiM0p6S1NCN1hHNGdJQ0FnZEdocGN5NWtiVWx1WkdWNFJuVnVZM1FnUFNCa2JVeHBibVZoY2tsdVpHVjRLSFpsWTNSdmNuTXViR1Z1WjNSb0tUdGNiaUFnSUNCamIyNXpkQ0J0WVhSeWFYaFRaWEoyYVdObElEMGdibVYzSUVScGMzUmhibU5sVFdGMGNtbDRVMlZ5ZG1salpTaDBjblZsTENCbVlXeHpaU2s3WEc0Z0lDQWdkR2hwY3k1a2FYTjBZVzVqWlNBOUlHRjNZV2wwSUcxaGRISnBlRk5sY25acFkyVXVZMkZzWXloMlpXTjBiM0p6TENCMGFHbHpMbVJwYzNSaGJtTmxSblZ1WTNScGIyNU9ZVzFsS1R0Y2JpQWdJQ0J0WVhSeWFYaFRaWEoyYVdObExuUmxjbTFwYm1GMFpTZ3BPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOaGJHTjFiR0YwWlhNZ1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCMGFHVWdkSGR2SUhabFkzUnZjbk1nWjJsMlpXNHVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3Vm1WamRHOXljMzBnZG1WamRHOXljeUJUWlhRZ2IyWWdkbVZqZEc5eWN5QjBieUJqWVd4amRXeGhkR1VnWkdsemRHRnVZMlZ6SUdKbGRIZGxaVzR1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQnBibVJsZURFZ1NXNWtaWGdnYjJZZ2RHaGxJR1pwY25OMElIWmxZM1J2Y2lCdlppQjBhR1VnY0dGcGNpNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdsdVpHVjRNaUJKYm1SbGVDQnZaaUIwYUdVZ2MyVmpiMjVrSUhabFkzUnZjaUJ2WmlCMGFHVWdjR0ZwY2k1Y2JpQWdJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlmU0JFYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFJvWlhObElIUjNieUIyWldOMGIzSnpMbHh1SUNBZ0tpOWNiaUFnY0hKdmRHVmpkR1ZrSUdOaGJHTkVhWE4wWVc1alpTaDJaV04wYjNKek9pQldaV04wYjNKekxDQnBibVJsZURFNklHNTFiV0psY2l3Z2FXNWtaWGd5T2lCdWRXMWlaWElwT2lCdWRXMWlaWElnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1ScGMzUmhibU5sVzNSb2FYTXVaRzFKYm1SbGVFWjFibU4wSVNocGJtUmxlREVzSUdsdVpHVjRNaWxkTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFVnRZbVZrY3lCMGFHVWdkbVZqZEc5eWN5Qm5hWFpsYmlCcGJuUnZJR0VnZEhkdkxXUnBiV1Z1YzJsdmJtRnNJSE53WVdObExseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuTjlJSFpsWTNSdmNuTWdSQzFrYVcxbGJuTnBiMjVoYkNCamIyOXlaR2x1WVhSbGN5NWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1EyOXZjbVJwYm1GMFpYTjlJRk5RUlNCamIyOXlaR2x1WVhSbGN5QnBiaUJFSUhOd1lXTmxMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR0Z6ZVc1aklHVnRZbVZrS0habFkzUnZjbk02SUZabFkzUnZjbk1wT2lCUWNtOXRhWE5sUEVOdmIzSmthVzVoZEdWelBpQjdYRzRnSUNBZ1kyOXVjM1FnYmtsMFpXMXpJRDBnZG1WamRHOXljeTVzWlc1bmRHZzdYRzRnSUNBZ1kyOXVjM1FnWVhKbFlWZHBaSFJvSUQwZ05EQTdYRzRnSUNBZ0x5OGdTVzVwZEdsaGJHbDZaU0IwYUdVZ1JDMWthVzFsYm5OcGIyNWhiQ0JqYjI5eVpHbHVZWFJsY3lCdlppQjBhR1VnVGlCd2IybHVkSE11WEc0Z0lDQWdZMjl1YzNRZ1kyOXZjbVJwYm1GMFpYTWdQU0JtYVd4c1VtRnVaRzl0VFdGMGNtbDRLRzVKZEdWdGN5d2dVMUJGUW1GelpTNWthVzFsYm5OcGIyNHNJR0Z5WldGWGFXUjBhQ2s3WEc1Y2JpQWdJQ0JzWlhRZ2JHRnRZbVJoTWlBOUlIUm9hWE11YkdGdFltUmhNanRjYmx4dUlDQWdJR2xtSUNoMGFHbHpMbk4wWlhCeklEMDlQU0F3S1Z4dUlDQWdJQ0FnZEdocGN5NXpkR1Z3Y3lBOUlIWmxZM1J2Y25NdWJHVnVaM1JvSUMwZ01UdGNibHh1WEc0Z0lDQWdZWGRoYVhRZ2RHaHBjeTVwYm1sMFJHbHpkR0Z1WTJVb2RtVmpkRzl5Y3lrN1hHNWNiaUFnSUNCbWIzSWdLR3hsZENCamVXTnNaU0E5SURBN0lHTjVZMnhsSUR3Z2RHaHBjeTVqZVdOc1pYTTdJQ3NyWTNsamJHVXBJSHRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJSE4wWlhBZ1BTQXdPeUJ6ZEdWd0lEd2dkR2hwY3k1emRHVndjenNnS3l0emRHVndLU0I3WEc0Z0lDQWdJQ0FnSUM4dklGTmxiR1ZqZENCMGQyOGdjRzlwYm5SekxDQnBJR0Z1WkNCcUxDQmhkQ0J5WVc1a2IyMHNJQzR1TGx4dUlDQWdJQ0FnSUNCamIyNXpkQ0JwSUQwZ2NtRnVaRzl0U1c1MEtHNUpkR1Z0Y3lrN1hHNGdJQ0FnSUNBZ0lHeGxkQ0JxSUQwZ2NtRnVaRzl0U1c1MEtHNUpkR1Z0Y3lrN1hHNGdJQ0FnSUNBZ0lIZG9hV3hsSUNocElEMDlJR29wSUdvZ1BTQnlZVzVrYjIxSmJuUW9ia2wwWlcxektUdGNibHh1SUNBZ0lDQWdJQ0JqYjI1emRDQnliM2RwSUQwZ1kyOXZjbVJwYm1GMFpYTmJhVjA3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSEp2ZDJvZ1BTQmpiMjl5WkdsdVlYUmxjMXRxWFR0Y2JseHVJQ0FnSUNBZ0lDQXZMeUF1TGk0Z2NtVjBjbWxsZG1VZ0tHOXlJR1YyWVd4MVlYUmxLU0IwYUdWcGNpQndjbTk0YVcxcGRIa2dhVzRnZEdobElHbHVjSFYwSUhOd1lXTmxMQ0J5YVdvZ1lXNWtJQzR1TGx4dUlDQWdJQ0FnSUNCamIyNXpkQ0J5SUQwZ2RHaHBjeTVqWVd4alJHbHpkR0Z1WTJVb2RtVmpkRzl5Y3l3Z2FTd2dhaWs3WEc0Z0lDQWdJQ0FnSUM4dklDNHVMaUJqYjIxd2RYUmxJSFJvWldseUlFVjFZMnhwWkdWaGJpQmthWE4wWVc1alpTQnZiaUIwYUdVZ1JDMWthVzFsYm5OcGIyNWhiQ0J0WVhBc0lHUnBhaTVjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdaQ0E5SUdOaGJHTjFiR0YwWlVWMVkyeHBaR1ZoYmtScGMzUmhibU5sS0hKdmQya3NJSEp2ZDJvcE8xeHVYRzRnSUNBZ0lDQWdJQzh2SUVsbUlISnBhaUE4UFNCeVl5d2diM0lnYVdZZ2NtbHFJRDRnY21NZ1lXNWtJR1JwYWlBOElISnBhaUF1TGk1Y2JpQWdJQ0FnSUNBZ2FXWWdLQ2gwYUdsekxtTjFkRzltWmlBOVBTQXdLU0I4ZkNBb2NpQThQU0IwYUdsekxtTjFkRzltWmlrZ2ZId2dLR1FnUENCeUtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzExYkhScGNHeHBaWElnUFNCc1lXMWlaR0V5SUNvZ0tISWdMU0JrS1NBdklDaGtJQ3NnZEdocGN5NWxjSE5wYkc5dUtUdGNiaUFnSUNBZ0lDQWdJQ0F2THlBdUxpNGdkWEJrWVhSbElIUm9aU0JqYjI5eVpHbHVZWFJsY3lCNGFTQmhibVFnZUdvdVhHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1pHbG1aa2xLSUQwZ2RtVmpkRzl5UVdSa0tISnZkMmtzSUhKdmQyb3NJQzB4S1R0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjl5WkdsdVlYUmxjMXRwWFNBOUlIWmxZM1J2Y2tGa1pDaHliM2RwTENCa2FXWm1TVW9zSUcxMWJIUnBjR3hwWlhJcE8xeHVJQ0FnSUNBZ0lDQWdJR052YjNKa2FXNWhkR1Z6VzJwZElEMGdkbVZqZEc5eVFXUmtLSEp2ZDJvc0lHUnBabVpKU2l3Z0xXMTFiSFJwY0d4cFpYSXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0F2THlCRVpXTnlaV0Z6WlNCMGFHVWdiR1ZoY201cGJtY2djbUYwWlNCN2JHRnRZbVJoZlNCaWVTQmhJSEJ5WlhOamNtbGlaV1FnZTJSc1lXMWlaR0Y5TGx4dUlDQWdJQ0FnYkdGdFltUmhNaUF0UFNCMGFHbHpMbVJzWVcxaVpHRXlPMXh1SUNBZ0lDQWdhV1lnS0d4aGJXSmtZVElnUEQwZ01DNHBYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdZMjl2Y21ScGJtRjBaWE03WEc0Z0lIMWNibjFjYmx4dUx5b3FYRzRnS2lCSmJYQnNaVzFsYm5SeklHMXZaR2xtYVdWa0lITjBiMk5vWVhOMGFXTWdjSEp2ZUdsdGFYUjVJR1Z0WW1Wa1pHbHVaeTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQVkyeGhjM01nVUZOUVJVSmhjMlZjYmlBcUlFQnNhVzVySUdSdmFUb3hNQzR4TURFMkwxTXhNRGt6TFRNeU5qTW9NRE1wTURBeE5UVXRORnh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nVUZOUVJVSmhjMlVnWlhoMFpXNWtjeUJUVUVWQ1lYTmxJSHRjYmlBZ0x5b3FYRzRnSUNBcUlFVnRZbVZrY3lCMGFHVWdkbVZqZEc5eWN5Qm5hWFpsYmlCcGJuUnZJR0VnZEhkdkxXUnBiV1Z1YzJsdmJtRnNJSE53WVdObElIVnphVzVuSUdFZ2JXOWthV1pwWldRZ2RYQmtZWFJsSUhKMWJHVXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3Vm1WamRHOXljMzBnZG1WamRHOXljeUJFTFdScGJXVnVjMmx2Ym1Gc0lHTnZiM0prYVc1aGRHVnpMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdERiMjl5WkdsdVlYUmxjMzBnVTFCRklHTnZiM0prYVc1aGRHVnpJR2x1SUVRZ2MzQmhZMlV1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWVhONWJtTWdaVzFpWldRb2RtVmpkRzl5Y3pvZ1ZtVmpkRzl5Y3lrNklGQnliMjFwYzJVOFEyOXZjbVJwYm1GMFpYTStJSHRjYmlBZ0lDQmpiMjV6ZENCdVNYUmxiWE1nUFNCMlpXTjBiM0p6TG14bGJtZDBhRHRjYmlBZ0lDQmpiMjV6ZENCaGNtVmhWMmxrZEdnZ1BTQTBNRHRjYmlBZ0lDQXZMeUFnU1c1cGRHbGhiR2w2WlNCMGFHVWdSQzFrYVcxbGJuTnBiMjVoYkNCamIyOXlaR2x1WVhSbGN5QnZaaUIwYUdVZ1RpQndiMmx1ZEhNdVhHNGdJQ0FnWTI5dWMzUWdZMjl2Y21ScGJtRjBaWE1nUFNCbWFXeHNVbUZ1Wkc5dFRXRjBjbWw0S0c1SmRHVnRjeXdnVUZOUVJVSmhjMlV1WkdsdFpXNXphVzl1TENCaGNtVmhWMmxrZEdncE8xeHVJQ0FnSUd4bGRDQnNZVzFpWkdFZ1BTQjBhR2x6TG14aGJXSmtZVHRjYmx4dUlDQWdJR0YzWVdsMElIUm9hWE11YVc1cGRFUnBjM1JoYm1ObEtIWmxZM1J2Y25NcE8xeHVYRzRnSUNBZ1ptOXlJQ2hzWlhRZ1kzbGpiR1VnUFNBd095QmplV05zWlNBOElIUm9hWE11WTNsamJHVnpPeUFySzJONVkyeGxLU0I3WEc0Z0lDQWdJQ0F2THlCVFpXeGxZM1FnWVNCd2IybHVkQ3dnYVN3Z1lYUWdjbUZ1Wkc5dElDaHdhWFp2ZENrdVhHNGdJQ0FnSUNCamIyNXpkQ0JwT2lCdWRXMWlaWElnUFNCeVlXNWtiMjFKYm5Rb2JrbDBaVzF6S1R0Y2JpQWdJQ0FnSUdOdmJuTjBJSEp2ZDJrZ1BTQmpiMjl5WkdsdVlYUmxjMXRwWFR0Y2JseHVJQ0FnSUNBZ0x5OGdSbTl5SUdWMlpYSjVJSEJ2YVc1MElHb2dJVDBnYVNBdUxpNWNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHb2dQU0F3T3lCcUlEd2dia2wwWlcxek95QXJLMm9wSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR2tnUFQwZ2Fpa2dZMjl1ZEdsdWRXVTdYRzRnSUNBZ0lDQWdJR052Ym5OMElISnZkMm9nUFNCamIyOXlaR2x1WVhSbGMxdHFYVHRjYmlBZ0lDQWdJQ0FnTHk4Z0xpNHVJSEpsZEhKcFpYWmxJQ2h2Y2lCbGRtRnNkV0YwWlNrZ2FYUnpJSEJ5YjNocGJXbDBlU0IwYnlCcElHbHVJSFJvWlNCcGJuQjFkQ0J6Y0dGalpTd2djbWxxSUM0dUxseHVJQ0FnSUNBZ0lDQmpiMjV6ZENCeUlEMGdkR2hwY3k1allXeGpSR2x6ZEdGdVkyVW9kbVZqZEc5eWN5d2dhU3dnYWlrN1hHNGdJQ0FnSUNBZ0lDOHZJQzR1TGlCaGJtUWdZMjl0Y0hWMFpTQjBhR1ZwY2lCRmRXTnNhV1JsWVc0Z1pHbHpkR0Z1WTJVZ2IyNGdkR2hsSUVRdFpHbHRaVzV6YVc5dVlXd2diV0Z3TENCa2FXb3VYRzRnSUNBZ0lDQWdJR052Ym5OMElHUWdQU0JqWVd4amRXeGhkR1ZGZFdOc2FXUmxZVzVFYVhOMFlXNWpaU2h5YjNkcExDQnliM2RxS1R0Y2JpQWdJQ0FnSUNBZ0x5OGdTV1lnY21scUlEdzlJSEpqTENCdmNpQnBaaUJ5YVdvZ1BpQnlZeUJoYm1RZ1pHbHFJRHdnY21scUlDNHVMbHh1SUNBZ0lDQWdJQ0JwWmlBb0tIUm9hWE11WTNWMGIyWm1JRDA5SURBcElIeDhJQ2h5SUR3OUlIUm9hWE11WTNWMGIyWm1LU0I4ZkNBb1pDQThJSElwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JYVnNkR2x3YkdsbGNpQTlJR3hoYldKa1lTQXFJQ2h5SUMwZ1pDa2dMeUFvWkNBcklIUm9hWE11WlhCemFXeHZiaWs3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWkdsbVprbEtJRDBnZG1WamRHOXlRV1JrS0hKdmQya3NJSEp2ZDJvc0lDMHhLVHRjYmlBZ0lDQWdJQ0FnSUNBdkx5QXVMaTRnZFhCa1lYUmxJSFJvWlNCamIyOXlaR2x1WVhSbGN5QjRhaTVjYmlBZ0lDQWdJQ0FnSUNCamIyOXlaR2x1WVhSbGMxdHFYU0E5SUhabFkzUnZja0ZrWkNoeWIzZHFMQ0JrYVdabVNVb3NJQzF0ZFd4MGFYQnNhV1Z5S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0x5OGdSR1ZqY21WaGMyVWdkR2hsSUd4bFlYSnVhVzVuSUhKaGRHVWdlMnhoYldKa1lYMGdZbmtnWVNCd2NtVnpZM0pwWW1Wa0lIdGtiR0Z0WW1SaGZTNWNiaUFnSUNBZ0lHeGhiV0prWVNBdFBTQjBhR2x6TG1Sc1lXMWlaR0U3WEc0Z0lDQWdJQ0JwWmlBb2JHRnRZbVJoSUR3OUlEQXVLVnh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR052YjNKa2FXNWhkR1Z6TzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1NXMXdiR1Z0Wlc1MGN5QnRiMlJwWm1sbFpDQnpkRzlqYUdGemRHbGpJSEJ5YjNocGJXbDBlU0JsYldKbFpHUnBibWN1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FHTnNZWE56SUU5eWFXZHBibUZzVTFCRlhHNGdLaUJBYkdsdWF5QmtiMms2TVRBdU1UQXdNaTlxWTJNdU1UQXlNelJjYmlBcUwxeHVaWGh3YjNKMElHTnNZWE56SUU5eWFXZHBibUZzVTFCRklHVjRkR1Z1WkhNZ1UxQkZRbUZ6WlNCN1hHNGdJQzhxS2x4dUlDQWdLaUJGYldKbFpITWdkR2hsSUhabFkzUnZjbk1nWjJsMlpXNGdhVzUwYnlCaElIUjNieTFrYVcxbGJuTnBiMjVoYkNCemNHRmpaU0IxYzJsdVp5QmhJRzF2WkdsbWFXVmtJSFZ3WkdGMFpTQnlkV3hsTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y25OOUlIWmxZM1J2Y25NZ1JDMWthVzFsYm5OcGIyNWhiQ0JqYjI5eVpHbHVZWFJsY3k1Y2JpQWdJQ29nUUhKbGRIVnliaUI3UTI5dmNtUnBibUYwWlhOOUlGTlFSU0JqYjI5eVpHbHVZWFJsY3lCcGJpQkVJSE53WVdObExseHVJQ0FnS2k5Y2JpQWdjSEp2ZEdWamRHVmtJSEpoWkdsMWMxQmxjbU5sYm5RNklHNTFiV0psY2p0Y2JpQWdjSEp2ZEdWamRHVmtJRzFoZUVScGMzUmhibU5sT2lCdWRXMWlaWEk3WEc0Z0lIQnliM1JsWTNSbFpDQnRZWGhFYVhOMFlXNWpaVk4wWlhCek9pQnVkVzFpWlhJN1hHNWNiaUFnWTI5dWMzUnlkV04wYjNJb2IzQjBhVzl1Y3o4NklFOXdkR2x2Ym5NcElIdGNiaUFnSUNCemRYQmxjaWh2Y0hScGIyNXpLVHRjYmlBZ0lDQjBhR2x6TG1ONVkyeGxjeUE5SUc5d2RHbHZibk0vTG1ONVkyeGxjeUEvUHlBeFpUTTdYRzRnSUNBZ2RHaHBjeTV6ZEdWd2N5QTlJRzl3ZEdsdmJuTS9Mbk4wWlhCeklEOC9JREV3TURBd01EdGNiaUFnSUNCMGFHbHpMbkpoWkdsMWMxQmxjbU5sYm5RZ1BTQnZjSFJwYjI1elB5NXlZV1JwZFhOUVpYSmpaVzUwSUQ4L0lERXVNRHRjYmlBZ0lDQjBhR2x6TG0xaGVFUnBjM1JoYm1ObElEMGdiM0IwYVc5dWN6OHViV0Y0UkdsemRHRnVZMlVnUHo4Z2JuVnNiRHRjYmlBZ0lDQjBhR2x6TG0xaGVFUnBjM1JoYm1ObFUzUmxjSE1nUFNCdmNIUnBiMjV6UHk1dFlYaEVhWE4wWVc1alpWTjBaWEJ6SUQ4L0lHNTFiR3c3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWVhONWJtTWdaVzFpWldRb2RtVmpkRzl5Y3pvZ1ZtVmpkRzl5Y3lrNklGQnliMjFwYzJVOFEyOXZjbVJwYm1GMFpYTStJSHRjYmlBZ0lDQmpiMjV6ZENCdVNYUmxiWE1nUFNCMlpXTjBiM0p6TG14bGJtZDBhRHRjYmlBZ0lDQmpiMjV6ZENCaGNtVmhWMmxrZEdnZ1BTQTBNRHRjYmlBZ0lDQXZMeUJKYm1sMGFXRnNhWHBsSUhSb1pTQkVMV1JwYldWdWMybHZibUZzSUdOdmIzSmthVzVoZEdWeklHOW1JSFJvWlNCT0lIQnZhVzUwY3k1Y2JpQWdJQ0JqYjI1emRDQmpiMjl5WkdsdVlYUmxjeUE5SUdacGJHeFNZVzVrYjIxTllYUnlhWGdvYmtsMFpXMXpMQ0JQY21sbmFXNWhiRk5RUlM1a2FXMWxibk5wYjI0c0lHRnlaV0ZYYVdSMGFDazdYRzVjYmlBZ0lDQmhkMkZwZENCMGFHbHpMbWx1YVhSRWFYTjBZVzVqWlNoMlpXTjBiM0p6S1R0Y2JseHVJQ0FnSUdsbUlDaDBhR2x6TG0xaGVFUnBjM1JoYm1ObFUzUmxjSE1nUFQwOUlHNTFiR3dwWEc0Z0lDQWdJQ0IwYUdsekxtMWhlRVJwYzNSaGJtTmxVM1JsY0hNZ1BTQnVTWFJsYlhNZ0tpQk5ZWFJvTG1ac2IyOXlLQ2h1U1hSbGJYTWdMU0F4S1NBdklESXBPMXh1WEc0Z0lDQWdhV1lnS0hSb2FYTXViV0Y0UkdsemRHRnVZMlVnUFQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUhSb2FYTXViV0Y0UkdsemRHRnVZMlVnUFNBdE1XVXpOenRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJRzRnUFNBd095QnVJRHdnZEdocGN5NXRZWGhFYVhOMFlXNWpaVk4wWlhCek95QnVLeXNwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYVNBOUlISmhibVJ2YlVsdWRDaHVTWFJsYlhNcE95QnNaWFFnYWlBOUlISmhibVJ2YlVsdWRDaHVTWFJsYlhNcE8xeHVJQ0FnSUNBZ0lDQjNhR2xzWlNBb2FTQTlQU0JxS1NCcUlEMGdjbUZ1Wkc5dFNXNTBLRzVKZEdWdGN5azdYRzVjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdaQ0E5SUhSb2FYTXVZMkZzWTBScGMzUmhibU5sS0habFkzUnZjbk1zSUdrc0lHb3BPMXh1SUNBZ0lDQWdJQ0JwWmlBb1pDQStJSFJvYVhNdWJXRjRSR2x6ZEdGdVkyVXBYRzRnSUNBZ0lDQWdJQ0FnZEdocGN5NXRZWGhFYVhOMFlXNWpaU0E5SUdRN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnYkdWMElHeGhiV0prWVNBOUlIUm9hWE11YkdGdFltUmhPMXh1SUNBZ0lHTnZibk4wSUhKaFpHbDFjeUE5SUNoMGFHbHpMbkpoWkdsMWMxQmxjbU5sYm5RZ1BUMGdNQzR3S1NBL0lIUm9hWE11YldGNFJHbHpkR0Z1WTJVZ09pQjBhR2x6TG0xaGVFUnBjM1JoYm1ObElDb2dkR2hwY3k1eVlXUnBkWE5RWlhKalpXNTBPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdZM2xqYkdVZ1BTQXdPeUJqZVdOc1pTQThJSFJvYVhNdVkzbGpiR1Z6T3lBcksyTjVZMnhsS1NCN1hHNGdJQ0FnSUNCbWIzSWdLR3hsZENCemRHVndJRDBnTURzZ2MzUmxjQ0E4SUhSb2FYTXVjM1JsY0hNN0lDc3JjM1JsY0NrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJUWld4bFkzUWdkSGR2SUhCdmFXNTBjeXdnYVNCaGJtUWdhaXdnWVhRZ2NtRnVaRzl0TENBdUxpNWNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2FTQTlJSEpoYm1SdmJVbHVkQ2h1U1hSbGJYTXBPMXh1SUNBZ0lDQWdJQ0JzWlhRZ2FpQTlJSEpoYm1SdmJVbHVkQ2h1U1hSbGJYTXBPMXh1SUNBZ0lDQWdJQ0IzYUdsc1pTQW9hU0E5UFNCcUtTQnFJRDBnY21GdVpHOXRTVzUwS0c1SmRHVnRjeWs3WEc1Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnY205M2FTQTlJR052YjNKa2FXNWhkR1Z6VzJsZE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCeWIzZHFJRDBnWTI5dmNtUnBibUYwWlhOYmFsMDdYRzVjYmlBZ0lDQWdJQ0FnTHk4Z2NtVjBjbWxsZG1VZ0tHOXlJR1YyWVd4MVlYUmxLU0IwYUdWcGNpQndjbTk0YVcxcGRIa2dhVzRnZEdobElHbHVjSFYwSUhOd1lXTmxMQ0J5YVdvZ1lXNWtJQzR1TGx4dUlDQWdJQ0FnSUNCamIyNXpkQ0J5SUQwZ2RHaHBjeTVqWVd4alJHbHpkR0Z1WTJVb2RtVmpkRzl5Y3l3Z2FTd2dhaWs3WEc0Z0lDQWdJQ0FnSUM4dklHTnZiWEIxZEdVZ2RHaGxhWElnUlhWamJHbGtaV0Z1SUdScGMzUmhibU5sSUc5dUlIUm9aU0JFTFdScGJXVnVjMmx2Ym1Gc0lHMWhjQ3dnWkdscUxseHVJQ0FnSUNBZ0lDQmpiMjV6ZENCa0lEMGdZMkZzWTNWc1lYUmxSWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVW9jbTkzYVN3Z2NtOTNhaWs3WEc1Y2JpQWdJQ0FnSUNBZ2FXWWdLQ2h5SUR3OUlISmhaR2wxY3lrZ2ZId2dLR1FnUENCeUtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzExYkhScGNHeHBaWElnUFNCc1lXMWlaR0VnS2lBd0xqVWdLaUFvY2lBdElHUXBJQzhnS0dRZ0t5QjBhR2x6TG1Wd2MybHNiMjRwTzF4dUlDQWdJQ0FnSUNBZ0lDOHZJQzR1TGlCMWNHUmhkR1VnZEdobElHTnZiM0prYVc1aGRHVnpJSGhwSUdGdVpDQjRhaTVjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JrYVdabVNVb2dQU0IyWldOMGIzSkJaR1FvY205M2FTd2djbTkzYWl3Z0xURXBPMXh1SUNBZ0lDQWdJQ0FnSUdOdmIzSmthVzVoZEdWelcybGRJRDBnZG1WamRHOXlRV1JrS0hKdmQya3NJR1JwWm1aSlNpd2diWFZzZEdsd2JHbGxjaWs3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXZjbVJwYm1GMFpYTmJhbDBnUFNCMlpXTjBiM0pCWkdRb2NtOTNhaXdnWkdsbVprbEtMQ0F0YlhWc2RHbHdiR2xsY2lrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHeGhiV0prWVNBdFBTQW9LSFJvYVhNdWJHRnRZbVJoSUMwZ2RHaHBjeTVrYkdGdFltUmhLU0F2SUNoMGFHbHpMbU41WTJ4bGN5QXRJREV1TUNrcE95QTdYRzRnSUNBZ0lDQnBaaUFvYkdGdFltUmhJRHdnZEdocGN5NWtiR0Z0WW1SaEtWeHVJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHTnZiM0prYVc1aGRHVnpPMXh1SUNCOVhHNTlYRzRpWFgwPSIsImV4cG9ydCB2YXIgU3RyaW5nTWV0cmljc05hbWVzO1xuKGZ1bmN0aW9uIChTdHJpbmdNZXRyaWNzTmFtZXMpIHtcbiAgICBTdHJpbmdNZXRyaWNzTmFtZXNbXCJMZXZlbnNodGVpblwiXSA9IFwiTGV2ZW5zaHRlaW5cIjtcbiAgICBTdHJpbmdNZXRyaWNzTmFtZXNbXCJKYXJvV2lua2xlclwiXSA9IFwiSmFyby1XaW5rbGVyXCI7XG4gICAgU3RyaW5nTWV0cmljc05hbWVzW1wiTWFuaGF0dGFuXCJdID0gXCJNYW5oYXR0YW5cIjtcbn0pKFN0cmluZ01ldHJpY3NOYW1lcyB8fCAoU3RyaW5nTWV0cmljc05hbWVzID0ge30pKTtcbmV4cG9ydCB2YXIgVmVjdG9yTWV0cmljc05hbWVzO1xuKGZ1bmN0aW9uIChWZWN0b3JNZXRyaWNzTmFtZXMpIHtcbiAgICBWZWN0b3JNZXRyaWNzTmFtZXNbXCJFdWNsaWRlYW5cIl0gPSBcIkV1Y2xpZGVhblwiO1xufSkoVmVjdG9yTWV0cmljc05hbWVzIHx8IChWZWN0b3JNZXRyaWNzTmFtZXMgPSB7fSkpO1xuZXhwb3J0IHZhciBCaXRBcnJheU1ldHJpY3NOYW1lcztcbihmdW5jdGlvbiAoQml0QXJyYXlNZXRyaWNzTmFtZXMpIHtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIlRhbmltb3RvXCJdID0gXCJUYW5pbW90b1wiO1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiRGljZVwiXSA9IFwiRGljZVwiO1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiQXN5bW1ldHJpY1wiXSA9IFwiQXN5bW1ldHJpY1wiO1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiQnJhdW5CbGFucXVldFwiXSA9IFwiQnJhdW4tQmxhbnF1ZXRcIjtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIkNvc2luZVwiXSA9IFwiQ29zaW5lXCI7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJLdWxjenluc2tpXCJdID0gXCJLdWxjenluc2tpXCI7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJNY0Nvbm5hdWdoZXlcIl0gPSBcIk1jLUNvbm5hdWdoZXlcIjtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIlJvZ290R29sZGJlcmdcIl0gPSBcIlJvZ290LUdvbGRiZXJnXCI7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJSdXNzZWxcIl0gPSBcIlJ1c3NlbFwiO1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiU29rYWxcIl0gPSBcIlNva2FsXCI7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJIYW1taW5nXCJdID0gXCJIYW1taW5nXCI7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJFdWNsaWRlYW5cIl0gPSBcIkV1Y2xpZGVhblwiO1xufSkoQml0QXJyYXlNZXRyaWNzTmFtZXMgfHwgKEJpdEFycmF5TWV0cmljc05hbWVzID0ge30pKTtcbmV4cG9ydCB2YXIgSW50QXJyYXlNZXRyaWNzTmFtZXM7XG4oZnVuY3Rpb24gKEludEFycmF5TWV0cmljc05hbWVzKSB7XG4gICAgSW50QXJyYXlNZXRyaWNzTmFtZXNbXCJUYW5pbW90b0ludEFycmF5XCJdID0gXCJUYW5pbW90b0ludEFycmF5XCI7XG59KShJbnRBcnJheU1ldHJpY3NOYW1lcyB8fCAoSW50QXJyYXlNZXRyaWNzTmFtZXMgPSB7fSkpO1xuZXhwb3J0IHZhciBEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cztcbihmdW5jdGlvbiAoRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMpIHtcbiAgICBEaXN0YW5jZU1ldHJpY3NTdWJqZWN0c1tcIlZlY3RvclwiXSA9IFwiVmVjdG9yXCI7XG4gICAgRGlzdGFuY2VNZXRyaWNzU3ViamVjdHNbXCJTdHJpbmdcIl0gPSBcIlN0cmluZ1wiO1xuICAgIERpc3RhbmNlTWV0cmljc1N1YmplY3RzW1wiQml0QXJyYXlcIl0gPSBcIkJpdEFycmF5XCI7XG4gICAgRGlzdGFuY2VNZXRyaWNzU3ViamVjdHNbXCJNYWNyb01vbGVjdWxlXCJdID0gXCJNYWNyb01vbGVjdWxlXCI7XG4gICAgRGlzdGFuY2VNZXRyaWNzU3ViamVjdHNbXCJOdW1iZXJcIl0gPSBcIk51bWJlclwiO1xuICAgIERpc3RhbmNlTWV0cmljc1N1YmplY3RzW1wiSW50QXJyYXlcIl0gPSBcIkludEFycmF5XCI7XG59KShEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cyB8fCAoRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMgPSB7fSkpO1xuZXhwb3J0IHZhciBOdW1iZXJNZXRyaWNzTmFtZXM7XG4oZnVuY3Rpb24gKE51bWJlck1ldHJpY3NOYW1lcykge1xuICAgIE51bWJlck1ldHJpY3NOYW1lc1tcIk51bWVyaWNEaXN0YW5jZVwiXSA9IFwiTnVtZXJpY0Rpc3RhbmNlXCI7XG59KShOdW1iZXJNZXRyaWNzTmFtZXMgfHwgKE51bWJlck1ldHJpY3NOYW1lcyA9IHt9KSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZMjl1YzNSekxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpWTI5dWMzUnpMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxFMUJRVTBzUTBGQlRpeEpRVUZaTEd0Q1FVbFVPMEZCU2tnc1YwRkJXU3hyUWtGQmEwSTdTVUZETVVJc2FVUkJRVEpDTEVOQlFVRTdTVUZETTBJc2EwUkJRVFJDTEVOQlFVRTdTVUZETlVJc05rTkJRWFZDTEVOQlFVRTdRVUZEZWtJc1EwRkJReXhGUVVwVExHdENRVUZyUWl4TFFVRnNRaXhyUWtGQmEwSXNVVUZKTTBJN1FVRkZTQ3hOUVVGTkxFTkJRVTRzU1VGQldTeHJRa0ZGVkR0QlFVWklMRmRCUVZrc2EwSkJRV3RDTzBsQlF6RkNMRFpEUVVGMVFpeERRVUZCTzBGQlEzcENMRU5CUVVNc1JVRkdVeXhyUWtGQmEwSXNTMEZCYkVJc2EwSkJRV3RDTEZGQlJUTkNPMEZCUlVnc1RVRkJUU3hEUVVGT0xFbEJRVmtzYjBKQllWUTdRVUZpU0N4WFFVRlpMRzlDUVVGdlFqdEpRVU0xUWl3MlEwRkJjVUlzUTBGQlFUdEpRVU55UWl4eFEwRkJZU3hEUVVGQk8wbEJRMklzYVVSQlFYbENMRU5CUVVFN1NVRkRla0lzZDBSQlFXZERMRU5CUVVFN1NVRkRhRU1zZVVOQlFXbENMRU5CUVVFN1NVRkRha0lzYVVSQlFYbENMRU5CUVVFN1NVRkRla0lzYzBSQlFUaENMRU5CUVVFN1NVRkRPVUlzZDBSQlFXZERMRU5CUVVFN1NVRkRhRU1zZVVOQlFXbENMRU5CUVVFN1NVRkRha0lzZFVOQlFXVXNRMEZCUVR0SlFVTm1MREpEUVVGdFFpeERRVUZCTzBsQlEyNUNMQ3REUVVGMVFpeERRVUZCTzBGQlEzcENMRU5CUVVNc1JVRmlVeXh2UWtGQmIwSXNTMEZCY0VJc2IwSkJRVzlDTEZGQllUZENPMEZCUlVnc1RVRkJUU3hEUVVGT0xFbEJRVmtzYjBKQlJWZzdRVUZHUkN4WFFVRlpMRzlDUVVGdlFqdEpRVU01UWl3MlJFRkJjVU1zUTBGQlFUdEJRVU4yUXl4RFFVRkRMRVZCUmxjc2IwSkJRVzlDTEV0QlFYQkNMRzlDUVVGdlFpeFJRVVV2UWp0QlFVVkVMRTFCUVUwc1EwRkJUaXhKUVVGWkxIVkNRVTlVTzBGQlVFZ3NWMEZCV1N4MVFrRkJkVUk3U1VGREwwSXNORU5CUVdsQ0xFTkJRVUU3U1VGRGFrSXNORU5CUVdsQ0xFTkJRVUU3U1VGRGFrSXNaMFJCUVhGQ0xFTkJRVUU3U1VGRGNrSXNNRVJCUVN0Q0xFTkJRVUU3U1VGREwwSXNORU5CUVdsQ0xFTkJRVUU3U1VGRGFrSXNaMFJCUVhGQ0xFTkJRVUU3UVVGRGRrSXNRMEZCUXl4RlFWQlRMSFZDUVVGMVFpeExRVUYyUWl4MVFrRkJkVUlzVVVGUGFFTTdRVUZGU0N4TlFVRk5MRU5CUVU0c1NVRkJXU3hyUWtGRldEdEJRVVpFTEZkQlFWa3NhMEpCUVd0Q08wbEJRelZDTEhsRVFVRnRReXhEUVVGQk8wRkJRM0pETEVOQlFVTXNSVUZHVnl4clFrRkJhMElzUzBGQmJFSXNhMEpCUVd0Q0xGRkJSVGRDSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaVpYaHdiM0owSUdWdWRXMGdVM1J5YVc1blRXVjBjbWxqYzA1aGJXVnpJSHRjYmlBZ0lDQk1aWFpsYm5Ob2RHVnBiaUE5SUNkTVpYWmxibk5vZEdWcGJpY3NYRzRnSUNBZ1NtRnliMWRwYm10c1pYSWdQU0FuU21GeWJ5MVhhVzVyYkdWeUp5eGNiaUFnSUNCTllXNW9ZWFIwWVc0Z1BTQW5UV0Z1YUdGMGRHRnVKeXhjYmlBZ2ZWeHVYRzVsZUhCdmNuUWdaVzUxYlNCV1pXTjBiM0pOWlhSeWFXTnpUbUZ0WlhNZ2UxeHVJQ0FnSUVWMVkyeHBaR1ZoYmlBOUlDZEZkV05zYVdSbFlXNG5MRnh1SUNCOVhHNWNibVY0Y0c5eWRDQmxiblZ0SUVKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWeklIdGNiaUFnSUNCVVlXNXBiVzkwYnlBOUlDZFVZVzVwYlc5MGJ5Y3NYRzRnSUNBZ1JHbGpaU0E5SUNkRWFXTmxKeXhjYmlBZ0lDQkJjM2x0YldWMGNtbGpJRDBnSjBGemVXMXRaWFJ5YVdNbkxGeHVJQ0FnSUVKeVlYVnVRbXhoYm5GMVpYUWdQU0FuUW5KaGRXNHRRbXhoYm5GMVpYUW5MRnh1SUNBZ0lFTnZjMmx1WlNBOUlDZERiM05wYm1VbkxGeHVJQ0FnSUV0MWJHTjZlVzV6YTJrZ1BTQW5TM1ZzWTNwNWJuTnJhU2NzWEc0Z0lDQWdUV05EYjI1dVlYVm5hR1Y1SUQwZ0owMWpMVU52Ym01aGRXZG9aWGtuTEZ4dUlDQWdJRkp2WjI5MFIyOXNaR0psY21jZ1BTQW5VbTluYjNRdFIyOXNaR0psY21jbkxGeHVJQ0FnSUZKMWMzTmxiQ0E5SUNkU2RYTnpaV3duTEZ4dUlDQWdJRk52YTJGc0lEMGdKMU52YTJGc0p5eGNiaUFnSUNCSVlXMXRhVzVuSUQwZ0owaGhiVzFwYm1jbkxGeHVJQ0FnSUVWMVkyeHBaR1ZoYmlBOUlDZEZkV05zYVdSbFlXNG5MRnh1SUNCOVhHNWNibVY0Y0c5eWRDQmxiblZ0SUVsdWRFRnljbUY1VFdWMGNtbGpjMDVoYldWeklIdGNiaUFnVkdGdWFXMXZkRzlKYm5SQmNuSmhlU0E5SUNkVVlXNXBiVzkwYjBsdWRFRnljbUY1Snl4Y2JuMWNibHh1Wlhod2IzSjBJR1Z1ZFcwZ1JHbHpkR0Z1WTJWTlpYUnlhV056VTNWaWFtVmpkSE1nZTF4dUlDQWdJRlpsWTNSdmNpQTlJQ2RXWldOMGIzSW5MRnh1SUNBZ0lGTjBjbWx1WnlBOUlDZFRkSEpwYm1jbkxGeHVJQ0FnSUVKcGRFRnljbUY1SUQwZ0owSnBkRUZ5Y21GNUp5eGNiaUFnSUNCTllXTnliMDF2YkdWamRXeGxJRDBnSjAxaFkzSnZUVzlzWldOMWJHVW5MRnh1SUNBZ0lFNTFiV0psY2lBOUlDZE9kVzFpWlhJbkxGeHVJQ0FnSUVsdWRFRnljbUY1SUQwZ0owbHVkRUZ5Y21GNUp5eGNiaUFnZlZ4dVhHNWxlSEJ2Y25RZ1pXNTFiU0JPZFcxaVpYSk5aWFJ5YVdOelRtRnRaWE1nZTF4dUlDQk9kVzFsY21salJHbHpkR0Z1WTJVZ1BTQW5UblZ0WlhKcFkwUnBjM1JoYm1ObEp5eGNibjFjYmx4dUlsMTkiLCJpbXBvcnQgQml0QXJyYXkgZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvYml0LWFycmF5JztcbmltcG9ydCB7IEJpdEFycmF5TWV0cmljc05hbWVzIH0gZnJvbSAnLi90eXBlZC1tZXRyaWNzL2NvbnN0cyc7XG5pbXBvcnQgeyBNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMgfSBmcm9tICcuL21hY3JvbW9sZWN1bGUtZGlzdGFuY2UtZnVuY3Rpb25zJztcbmV4cG9ydCBjb25zdCBzaW1pbGFyaXR5TWV0cmljID0ge1xuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5UYW5pbW90b106IHRhbmltb3RvU2ltaWxhcml0eSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuRGljZV06IGRpY2VTaW1pbGFyaXR5LFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Bc3ltbWV0cmljXTogYXN5bW1ldHJpY1NpbWlsYXJpdHksXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkJyYXVuQmxhbnF1ZXRdOiBicmF1bkJsYW5xdWV0U2ltaWxhcml0eSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuQ29zaW5lXTogY29zaW5lU2ltaWxhcml0eSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuS3VsY3p5bnNraV06IGt1bGN6eW5za2lTaW1pbGFyaXR5LFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5NY0Nvbm5hdWdoZXldOiBtY0Nvbm5hdWdoZXlTaW1pbGFyaXR5LFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Sb2dvdEdvbGRiZXJnXTogcm9nb3RHb2xkYmVyZ1NpbWlsYXJpdHksXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlJ1c3NlbF06IHJ1c3NlbFNpbWlsYXJpdHksXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlNva2FsXTogc29rYWxTaW1pbGFyaXR5LFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5IYW1taW5nXTogaGFtbWluZ1NpbWlsYXJpdHksXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkV1Y2xpZGVhbl06IGV1Y2xpZGVhblNpbWlsYXJpdHksXG59O1xuZXhwb3J0IGNvbnN0IGRpc3RhbmNlTWV0cmljcyA9IHtcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuVGFuaW1vdG9dOiB0YW5pbW90b0Rpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5EaWNlXTogZGljZURpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Bc3ltbWV0cmljXTogYXN5bW1ldHJpY0Rpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5CcmF1bkJsYW5xdWV0XTogYnJhdW5CbGFucXVldERpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Db3NpbmVdOiBjb3NpbmVEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuS3VsY3p5bnNraV06IGt1bGN6eW5za2lEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuTWNDb25uYXVnaGV5XTogbWNDb25uYXVnaGV5RGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlJvZ290R29sZGJlcmddOiByb2dvdEdvbGRiZXJnRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlJ1c3NlbF06IHJ1c3NlbERpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Tb2thbF06IHNva2FsRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkhhbW1pbmddOiBoYW1taW5nRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkV1Y2xpZGVhbl06IGV1Y2xpZGVhbkRpc3RhbmNlLFxufTtcbmV4cG9ydCBjb25zdCBDSEVNX1NJTUlMQVJJVFlfTUVUUklDUyA9IFtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lcy5UYW5pbW90byxcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lcy5EaWNlLFxuICAgIEJpdEFycmF5TWV0cmljc05hbWVzLkNvc2luZVxuXTtcbmV4cG9ydCBjb25zdCBTRVFfU1BBQ0VfU0lNSUxBUklUWV9NRVRSSUNTID0gW1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzLlRhbmltb3RvLFxuICAgIEJpdEFycmF5TWV0cmljc05hbWVzLkFzeW1tZXRyaWMsXG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXMuQ29zaW5lLFxuICAgIEJpdEFycmF5TWV0cmljc05hbWVzLlNva2FsXG5dO1xuZXhwb3J0IGNvbnN0IE1BQ1JPTU9MRUNVTEVfU0lNSUxBUklUWV9NRVRSSUNTID0gW1xuICAgIE1tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5IQU1NSU5HLFxuICAgIE1tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5MRVZFTlNIVEVJTixcbiAgICBNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMuTU9OT01FUl9DSEVNSUNBTF9ESVNUQU5DRVxuXTtcbmV4cG9ydCBmdW5jdGlvbiB0YW5pbW90b1NpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCk7XG4gICAgaWYgKHRvdGFsID09IDApXG4gICAgICAgIHJldHVybiAxLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiBjb21tb24gLyAodG90YWwgLSBjb21tb24pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRhbmltb3RvRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KHRhbmltb3RvU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdGFuaW1vdG9EaXN0YW5jZUludEFycmF5KHgsIHkpIHtcbiAgICBjb25zdCB4YiA9IG5ldyBCaXRBcnJheSh4LCB4Lmxlbmd0aCAqIDMyKTtcbiAgICBjb25zdCB5YiA9IG5ldyBCaXRBcnJheSh5LCB5Lmxlbmd0aCAqIDMyKTtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eSh0YW5pbW90b1NpbWlsYXJpdHkoeGIsIHliKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZGljZVNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCk7XG4gICAgaWYgKHRvdGFsID09IDApXG4gICAgICAgIHJldHVybiAwLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiAyICogY29tbW9uIC8gdG90YWw7XG59XG5leHBvcnQgZnVuY3Rpb24gZGljZURpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShkaWNlU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gY29zaW5lU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgY29uc3QgdG90YWwgPSB4LnRydWVDb3VudCgpICogeS50cnVlQ291bnQoKTtcbiAgICBpZiAodG90YWwgPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGNvbW1vbiAvIE1hdGguc3FydCh0b3RhbCk7XG59XG5leHBvcnQgZnVuY3Rpb24gY29zaW5lRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KGNvc2luZVNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGV1Y2xpZGVhblNpbWlsYXJpdHkoeCwgeSkge1xuICAgIHJldHVybiBnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlKGV1Y2xpZGVhbkRpc3RhbmNlKHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBldWNsaWRlYW5EaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIE1hdGguc3FydCh4LnRydWVDb3VudCgpICsgeS50cnVlQ291bnQoKSAtIDIgKiB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGhhbW1pbmdTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZShoYW1taW5nRGlzdGFuY2UoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGhhbW1pbmdEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpIC0gMiAqIHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzb2thbFNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCk7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiBjb21tb24gLyAoMiAqIHRvdGFsIC0gMyAqIGNvbW1vbik7XG59XG5leHBvcnQgZnVuY3Rpb24gc29rYWxEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoc29rYWxTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBrdWxjenluc2tpU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgY29uc3QgdG90YWwgPSB4LnRydWVDb3VudCgpICsgeS50cnVlQ291bnQoKTtcbiAgICBjb25zdCB0b3RhbFByb2QgPSB4LnRydWVDb3VudCgpICogeS50cnVlQ291bnQoKTtcbiAgICBpZiAodG90YWxQcm9kID09IDApXG4gICAgICAgIHJldHVybiAwLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiAoY29tbW9uICogdG90YWwpIC8gKDIgKiB0b3RhbFByb2QpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGt1bGN6eW5za2lEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoa3VsY3p5bnNraVNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG1jQ29ubmF1Z2hleVNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCk7XG4gICAgY29uc3QgdG90YWxQcm9kID0geC50cnVlQ291bnQoKSAqIHkudHJ1ZUNvdW50KCk7XG4gICAgaWYgKHRvdGFsUHJvZCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gKGNvbW1vbiAqIHRvdGFsIC0gdG90YWxQcm9kKSAvIHRvdGFsUHJvZDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtY0Nvbm5hdWdoZXlEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkobWNDb25uYXVnaGV5U2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXN5bW1ldHJpY1NpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKHgudHJ1ZUNvdW50KCksIHkudHJ1ZUNvdW50KCkpO1xuICAgIGlmIChtaW4gPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGNvbW1vbiAvIG1pbjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3ltbWV0cmljRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KGFzeW1tZXRyaWNTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBicmF1bkJsYW5xdWV0U2ltaWxhcml0eSh4LCB5KSB7XG4gICAgY29uc3QgbWF4ID0gTWF0aC5tYXgoeC50cnVlQ291bnQoKSwgeS50cnVlQ291bnQoKSk7XG4gICAgaWYgKG1heCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gY29tbW9uIC8gbWF4O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGJyYXVuQmxhbnF1ZXREaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoYnJhdW5CbGFucXVldFNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJ1c3NlbFNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGlmICh4Lmxlbmd0aCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gY29tbW9uIC8geC5sZW5ndGg7XG59XG5leHBvcnQgZnVuY3Rpb24gcnVzc2VsRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KHJ1c3NlbFNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJvZ290R29sZGJlcmdTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgY29uc3QgdG90YWwgPSB4LmNvdW50Qml0cyh0cnVlKSArIHkuY291bnRCaXRzKHRydWUpO1xuICAgIGNvbnN0IGxlbiA9IHgubGVuZ3RoO1xuICAgIGNvbnN0IGRpZmYgPSBsZW4gLSB0b3RhbCArIGNvbW1vbjtcbiAgICBpZiAoKGNvbW1vbiA9PSBsZW4pIHx8IChkaWZmID09IGxlbikpXG4gICAgICAgIHJldHVybiAxLjA7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gY29tbW9uIC8gdG90YWwgKyBkaWZmIC8gKDIgKiBsZW4gLSB0b3RhbCk7XG59XG5leHBvcnQgZnVuY3Rpb24gcm9nb3RHb2xkYmVyZ0Rpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShyb2dvdEdvbGRiZXJnU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZShkaXN0YW5jZSkge1xuICAgIHJldHVybiAxIC8gKDEgKyBkaXN0YW5jZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShzaW1pbGFyaXR5KSB7XG4gICAgcmV0dXJuIHNpbWlsYXJpdHkgPT09IDAgPyAzLjQwMjgyM0UrMzggOiAoMSAvIHNpbWlsYXJpdHkpIC0gMTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBudW1lcmljRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBNYXRoLmFicyh4IC0geSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laR2x6ZEdGdVkyVXRiV1YwY21samN5MXRaWFJvYjJSekxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpWkdsemRHRnVZMlV0YldWMGNtbGpjeTF0WlhSb2IyUnpMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxFOUJRVThzVVVGQlVTeE5RVUZOTEhsRFFVRjVReXhEUVVGRE8wRkJReTlFTEU5QlFVOHNSVUZCUXl4dlFrRkJiMElzUlVGQmRVSXNUVUZCVFN4M1FrRkJkMElzUTBGQlF6dEJRVU5zUml4UFFVRlBMRVZCUVVVc2QwSkJRWGRDTEVWQlFVVXNUVUZCVFN4dlEwRkJiME1zUTBGQlF6dEJRVVU1UlN4TlFVRk5MRU5CUVVNc1RVRkJUU3huUWtGQlowSXNSMEZCTmtRN1NVRkRlRVlzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhSUVVGUkxFTkJRVU1zUlVGQlJTeHJRa0ZCYTBJN1NVRkRia1FzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeGpRVUZqTzBsQlF6TkRMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNWVUZCVlN4RFFVRkRMRVZCUVVVc2IwSkJRVzlDTzBsQlEzWkVMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNZVUZCWVN4RFFVRkRMRVZCUVVVc2RVSkJRWFZDTzBsQlF6ZEVMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1owSkJRV2RDTzBsQlF5OURMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNWVUZCVlN4RFFVRkRMRVZCUVVVc2IwSkJRVzlDTzBsQlEzWkVMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNXVUZCV1N4RFFVRkRMRVZCUVVVc2MwSkJRWE5DTzBsQlF6TkVMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNZVUZCWVN4RFFVRkRMRVZCUVVVc2RVSkJRWFZDTzBsQlF6ZEVMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1owSkJRV2RDTzBsQlF5OURMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc1pVRkJaVHRKUVVNM1F5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExFOUJRVThzUTBGQlF5eEZRVUZGTEdsQ1FVRnBRanRKUVVOcVJDeERRVUZETEc5Q1FVRnZRaXhEUVVGRExGTkJRVk1zUTBGQlF5eEZRVUZGTEcxQ1FVRnRRanREUVVOMFJDeERRVUZETzBGQlJVWXNUVUZCVFN4RFFVRkRMRTFCUVUwc1pVRkJaU3hIUVVFMlJEdEpRVU4yUml4RFFVRkRMRzlDUVVGdlFpeERRVUZETEZGQlFWRXNRMEZCUXl4RlFVRkZMR2RDUVVGblFqdEpRVU5xUkN4RFFVRkRMRzlDUVVGdlFpeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRmxCUVZrN1NVRkRla01zUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhWUVVGVkxFTkJRVU1zUlVGQlJTeHJRa0ZCYTBJN1NVRkRja1FzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhoUVVGaExFTkJRVU1zUlVGQlJTeHhRa0ZCY1VJN1NVRkRNMFFzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeGpRVUZqTzBsQlF6ZERMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNWVUZCVlN4RFFVRkRMRVZCUVVVc2EwSkJRV3RDTzBsQlEzSkVMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNXVUZCV1N4RFFVRkRMRVZCUVVVc2IwSkJRVzlDTzBsQlEzcEVMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNZVUZCWVN4RFFVRkRMRVZCUVVVc2NVSkJRWEZDTzBsQlF6TkVMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1kwRkJZenRKUVVNM1F5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTEdGQlFXRTdTVUZETTBNc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSU3hsUVVGbE8wbEJReTlETEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVTBGQlV5eERRVUZETEVWQlFVVXNhVUpCUVdsQ08wTkJRM0JFTEVOQlFVTTdRVUZGUml4TlFVRk5MRU5CUVVNc1RVRkJUU3gxUWtGQmRVSXNSMEZCUnp0SlFVTnlReXh2UWtGQmIwSXNRMEZCUXl4UlFVRlJPMGxCUXpkQ0xHOUNRVUZ2UWl4RFFVRkRMRWxCUVVrN1NVRkRla0lzYjBKQlFXOUNMRU5CUVVNc1RVRkJUVHREUVVGRExFTkJRVU03UVVGREwwSXNUVUZCVFN4RFFVRkRMRTFCUVUwc05FSkJRVFJDTEVkQlFVYzdTVUZETVVNc2IwSkJRVzlDTEVOQlFVTXNVVUZCVVR0SlFVTTNRaXh2UWtGQmIwSXNRMEZCUXl4VlFVRlZPMGxCUXk5Q0xHOUNRVUZ2UWl4RFFVRkRMRTFCUVUwN1NVRkRNMElzYjBKQlFXOUNMRU5CUVVNc1MwRkJTenREUVVGRExFTkJRVU03UVVGRE9VSXNUVUZCVFN4RFFVRkRMRTFCUVUwc1owTkJRV2RETEVkQlFVYzdTVUZET1VNc2QwSkJRWGRDTEVOQlFVTXNUMEZCVHp0SlFVTm9ReXgzUWtGQmQwSXNRMEZCUXl4WFFVRlhPMGxCUTNCRExIZENRVUYzUWl4RFFVRkRMSGxDUVVGNVFqdERRVUZETEVOQlFVTTdRVUZIZEVRc1RVRkJUU3hWUVVGVkxHdENRVUZyUWl4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJRM3BFTEUxQlFVMHNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNN1NVRkROVU1zU1VGQlNTeExRVUZMTEVsQlFVa3NRMEZCUXp0UlFVRkZMRTlCUVU4c1IwRkJSeXhEUVVGRE8wbEJRek5DTEUxQlFVMHNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRE0wTXNUMEZCVHl4TlFVRk5MRWRCUVVjc1EwRkJReXhMUVVGTExFZEJRVWNzVFVGQlRTeERRVUZETEVOQlFVTTdRVUZEYmtNc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeG5Ra0ZCWjBJc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU4yUkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEd0Q1FVRnJRaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpkRUxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNkMEpCUVhkQ0xFTkJRVU1zUTBGQll5eEZRVUZGTEVOQlFXTTdTVUZEY2tVc1RVRkJUU3hGUVVGRkxFZEJRVWNzU1VGQlNTeFJRVUZSTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTTdTVUZETVVNc1RVRkJUU3hGUVVGRkxFZEJRVWNzU1VGQlNTeFJRVUZSTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTTdTVUZETVVNc1QwRkJUeXg1UWtGQmVVSXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNdlJDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR05CUVdNc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU55UkN4TlFVRk5MRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRE8wbEJRelZETEVsQlFVa3NTMEZCU3l4SlFVRkpMRU5CUVVNN1VVRkJSU3hQUVVGUExFZEJRVWNzUTBGQlF6dEpRVU16UWl4TlFVRk5MRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzBsQlF6TkRMRTlCUVU4c1EwRkJReXhIUVVGSExFMUJRVTBzUjBGQlJ5eExRVUZMTEVOQlFVTTdRVUZETlVJc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeFpRVUZaTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1NVRkRia1FzVDBGQlR5eDVRa0ZCZVVJc1EwRkJReXhqUVVGakxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRla1FzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4blFrRkJaMElzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTjJSQ3hOUVVGTkxFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETzBsQlF6VkRMRWxCUVVrc1MwRkJTeXhKUVVGSkxFTkJRVU03VVVGQlJTeFBRVUZQTEVkQlFVY3NRMEZCUXp0SlFVTXpRaXhOUVVGTkxFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUXpORExFOUJRVThzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03UVVGRGJrTXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3hqUVVGakxFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEY2tRc1QwRkJUeXg1UWtGQmVVSXNRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNelJDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMRzFDUVVGdFFpeERRVUZETEVOQlFWY3NSVUZCUlN4RFFVRlhPMGxCUXpGRUxFOUJRVThzZVVKQlFYbENMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRE5VUXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3hwUWtGQmFVSXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVONFJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNCR0xFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNhVUpCUVdsQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZUVRc1QwRkJUeXg1UWtGQmVVSXNRMEZCUXl4bFFVRmxMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZETVVRc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeGxRVUZsTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1NVRkRkRVFzVDBGQlR5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8wRkJRM3BGTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc1pVRkJaU3hEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlEzUkVMRTFCUVUwc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03U1VGRE5VTXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU16UXl4UFFVRlBMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eExRVUZMTEVkQlFVY3NRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRek5ETEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc1lVRkJZU3hEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlEzQkVMRTlCUVU4c2VVSkJRWGxDTEVOQlFVTXNaVUZCWlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6RkVMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzYjBKQlFXOUNMRU5CUVVNc1EwRkJWeXhGUVVGRkxFTkJRVmM3U1VGRE0wUXNUVUZCVFN4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenRKUVVNMVF5eE5RVUZOTEZOQlFWTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMGxCUTJoRUxFbEJRVWtzVTBGQlV5eEpRVUZKTEVOQlFVTTdVVUZCUlN4UFFVRlBMRWRCUVVjc1EwRkJRenRKUVVNdlFpeE5RVUZOTEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRek5ETEU5QlFVOHNRMEZCUXl4TlFVRk5MRWRCUVVjc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NVMEZCVXl4RFFVRkRMRU5CUVVNN1FVRkROVU1zUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4clFrRkJhMElzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTjZSQ3hQUVVGUExIbENRVUY1UWl4RFFVRkRMRzlDUVVGdlFpeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJReTlFTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc2MwSkJRWE5DTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1NVRkROMFFzVFVGQlRTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZCUXp0SlFVTTFReXhOUVVGTkxGTkJRVk1zUjBGQlJ5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETzBsQlEyaEVMRWxCUVVrc1UwRkJVeXhKUVVGSkxFTkJRVU03VVVGQlJTeFBRVUZQTEVkQlFVY3NRMEZCUXp0SlFVTXZRaXhOUVVGTkxFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUXpORExFOUJRVThzUTBGQlF5eE5RVUZOTEVkQlFVY3NTMEZCU3l4SFFVRkhMRk5CUVZNc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF6dEJRVU5zUkN4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHOUNRVUZ2UWl4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJRek5FTEU5QlFVOHNlVUpCUVhsQ0xFTkJRVU1zYzBKQlFYTkNMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEYWtVc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeHZRa0ZCYjBJc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU16UkN4TlFVRk5MRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTXNRMEZCUXp0SlFVTnVSQ3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlFVVXNUMEZCVHl4SFFVRkhMRU5CUVVNN1NVRkRla0lzVFVGQlRTeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVNelF5eFBRVUZQTEUxQlFVMHNSMEZCUnl4SFFVRkhMRU5CUVVNN1FVRkRkRUlzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4clFrRkJhMElzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTjZSQ3hQUVVGUExIbENRVUY1UWl4RFFVRkRMRzlDUVVGdlFpeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJReTlFTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc2RVSkJRWFZDTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1NVRkRPVVFzVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRExFTkJRVU03U1VGRGJrUXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVGRkxFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEzcENMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdTVUZETTBNc1QwRkJUeXhOUVVGTkxFZEJRVWNzUjBGQlJ5eERRVUZETzBGQlEzUkNMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzY1VKQlFYRkNMRU5CUVVNc1EwRkJWeXhGUVVGRkxFTkJRVmM3U1VGRE5VUXNUMEZCVHl4NVFrRkJlVUlzUTBGQlF5eDFRa0ZCZFVJc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTnNSU3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdkQ1FVRm5RaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlEzWkVMRWxCUVVrc1EwRkJReXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETzFGQlFVVXNUMEZCVHl4SFFVRkhMRU5CUVVNN1NVRkRPVUlzVFVGQlRTeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVNelF5eFBRVUZQTEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRE8wRkJRek5DTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc1kwRkJZeXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlEzSkVMRTlCUVU4c2VVSkJRWGxDTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRNMFFzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4MVFrRkJkVUlzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTTVSQ3hOUVVGTkxFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUXpORExFMUJRVTBzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVOd1JDeE5RVUZOTEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRE8wbEJRM0pDTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWRCUVVjc1IwRkJSeXhMUVVGTExFZEJRVWNzVFVGQlRTeERRVUZETzBsQlEyeERMRWxCUVVrc1EwRkJReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRE8xRkJRVVVzVDBGQlR5eEhRVUZITEVOQlFVTTdPMUZCUXpWRExFOUJRVThzVFVGQlRTeEhRVUZITEV0QlFVc3NSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUTNoRUxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNjVUpCUVhGQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZETlVRc1QwRkJUeXg1UWtGQmVVSXNRMEZCUXl4MVFrRkJkVUlzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOc1JTeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMSGxDUVVGNVFpeERRVUZETEZGQlFXZENPMGxCUTNoRUxFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRelZDTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc2VVSkJRWGxDTEVOQlFVTXNWVUZCYTBJN1NVRkRNVVFzVDBGQlR5eFZRVUZWTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dEJRVU5vUlN4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHVkJRV1VzUTBGQlF5eERRVUZUTEVWQlFVVXNRMEZCVXp0SlFVTnNSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM3BDTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdRbWwwUVhKeVlYa2dabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZZbWwwTFdGeWNtRjVKenRjYm1sdGNHOXlkQ0I3UW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNc0lFbHVkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpmU0JtY205dElDY3VMM1I1Y0dWa0xXMWxkSEpwWTNNdlkyOXVjM1J6Snp0Y2JtbHRjRzl5ZENCN0lFMXRSR2x6ZEdGdVkyVkdkVzVqZEdsdmJuTk9ZVzFsY3lCOUlHWnliMjBnSnk0dmJXRmpjbTl0YjJ4bFkzVnNaUzFrYVhOMFlXNWpaUzFtZFc1amRHbHZibk1uTzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnYzJsdGFXeGhjbWwwZVUxbGRISnBZem9nZXlCYmJtRnRaVG9nYzNSeWFXNW5YVG9nS0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2tnUFQ0Z2JuVnRZbVZ5SUgwZ1BTQjdYRzRnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NVVZVzVwYlc5MGIxMDZJSFJoYm1sdGIzUnZVMmx0YVd4aGNtbDBlU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa1JwWTJWZE9pQmthV05sVTJsdGFXeGhjbWwwZVN4Y2JpQWdXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGtGemVXMXRaWFJ5YVdOZE9pQmhjM2x0YldWMGNtbGpVMmx0YVd4aGNtbDBlU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa0p5WVhWdVFteGhibkYxWlhSZE9pQmljbUYxYmtKc1lXNXhkV1YwVTJsdGFXeGhjbWwwZVN4Y2JpQWdXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGtOdmMybHVaVjA2SUdOdmMybHVaVk5wYldsc1lYSnBkSGtzWEc0Z0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVMZFd4amVubHVjMnRwWFRvZ2EzVnNZM3A1Ym5OcmFWTnBiV2xzWVhKcGRIa3NYRzRnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NU5ZME52Ym01aGRXZG9aWGxkT2lCdFkwTnZibTVoZFdkb1pYbFRhVzFwYkdGeWFYUjVMRnh1SUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVVbTluYjNSSGIyeGtZbVZ5WjEwNklISnZaMjkwUjI5c1pHSmxjbWRUYVcxcGJHRnlhWFI1TEZ4dUlDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11VW5WemMyVnNYVG9nY25WemMyVnNVMmx0YVd4aGNtbDBlU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMbE52YTJGc1hUb2djMjlyWVd4VGFXMXBiR0Z5YVhSNUxGeHVJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVNHRnRiV2x1WjEwNklHaGhiVzFwYm1kVGFXMXBiR0Z5YVhSNUxGeHVJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVJYVmpiR2xrWldGdVhUb2daWFZqYkdsa1pXRnVVMmx0YVd4aGNtbDBlU3hjYm4wN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCa2FYTjBZVzVqWlUxbGRISnBZM002SUhzZ1cyNWhiV1U2SUhOMGNtbHVaMTA2SUNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwSUQwK0lHNTFiV0psY2lCOUlEMGdlMXh1SUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVWR0Z1YVcxdmRHOWRPaUIwWVc1cGJXOTBiMFJwYzNSaGJtTmxMRnh1SUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVSR2xqWlYwNklHUnBZMlZFYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa0Z6ZVcxdFpYUnlhV05kT2lCaGMzbHRiV1YwY21salJHbHpkR0Z1WTJVc1hHNGdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1Q2NtRjFia0pzWVc1eGRXVjBYVG9nWW5KaGRXNUNiR0Z1Y1hWbGRFUnBjM1JoYm1ObExGeHVJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVEyOXphVzVsWFRvZ1kyOXphVzVsUkdsemRHRnVZMlVzWEc0Z0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVMZFd4amVubHVjMnRwWFRvZ2EzVnNZM3A1Ym5OcmFVUnBjM1JoYm1ObExGeHVJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVRXTkRiMjV1WVhWbmFHVjVYVG9nYldORGIyNXVZWFZuYUdWNVJHbHpkR0Z1WTJVc1hHNGdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1U2IyZHZkRWR2YkdSaVpYSm5YVG9nY205bmIzUkhiMnhrWW1WeVowUnBjM1JoYm1ObExGeHVJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVVuVnpjMlZzWFRvZ2NuVnpjMlZzUkdsemRHRnVZMlVzWEc0Z0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVUYjJ0aGJGMDZJSE52YTJGc1JHbHpkR0Z1WTJVc1hHNGdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1SVlXMXRhVzVuWFRvZ2FHRnRiV2x1WjBScGMzUmhibU5sTEZ4dUlDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11UlhWamJHbGtaV0Z1WFRvZ1pYVmpiR2xrWldGdVJHbHpkR0Z1WTJVc1hHNTlPMXh1WEc1bGVIQnZjblFnWTI5dWMzUWdRMGhGVFY5VFNVMUpURUZTU1ZSWlgwMUZWRkpKUTFNZ1BTQmJYRzRnSUVKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsUmhibWx0YjNSdkxGeHVJQ0JDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1RWFXTmxMRnh1SUNCQ2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NURiM05wYm1WZE8xeHVaWGh3YjNKMElHTnZibk4wSUZORlVWOVRVRUZEUlY5VFNVMUpURUZTU1ZSWlgwMUZWRkpKUTFNZ1BTQmJYRzRnSUVKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsUmhibWx0YjNSdkxGeHVJQ0JDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1QmMzbHRiV1YwY21sakxGeHVJQ0JDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1RGIzTnBibVVzWEc0Z0lFSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMbE52YTJGc1hUdGNibVY0Y0c5eWRDQmpiMjV6ZENCTlFVTlNUMDFQVEVWRFZVeEZYMU5KVFVsTVFWSkpWRmxmVFVWVVVrbERVeUE5SUZ0Y2JpQWdUVzFFYVhOMFlXNWpaVVoxYm1OMGFXOXVjMDVoYldWekxraEJUVTFKVGtjc1hHNGdJRTF0UkdsemRHRnVZMlZHZFc1amRHbHZibk5PWVcxbGN5NU1SVlpGVGxOSVZFVkpUaXhjYmlBZ1RXMUVhWE4wWVc1alpVWjFibU4wYVc5dWMwNWhiV1Z6TGsxUFRrOU5SVkpmUTBoRlRVbERRVXhmUkVsVFZFRk9RMFZkTzF4dVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjBZVzVwYlc5MGIxTnBiV2xzWVhKcGRIa29lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnWTI5dWMzUWdkRzkwWVd3Z1BTQjRMblJ5ZFdWRGIzVnVkQ2dwSUNzZ2VTNTBjblZsUTI5MWJuUW9LVHRjYmlBZ2FXWWdLSFJ2ZEdGc0lEMDlJREFwSUhKbGRIVnliaUF4TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJR052YlcxdmJpQXZJQ2gwYjNSaGJDQXRJR052YlcxdmJpazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCMFlXNXBiVzkwYjBScGMzUmhibU5sS0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lISmxkSFZ5YmlCblpYUkVhWE4wWVc1alpVWnliMjFUYVcxcGJHRnlhWFI1S0hSaGJtbHRiM1J2VTJsdGFXeGhjbWwwZVNoNExDQjVLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjBZVzVwYlc5MGIwUnBjM1JoYm1ObFNXNTBRWEp5WVhrb2VEb2dWV2x1ZERNeVFYSnlZWGtzSUhrNklGVnBiblF6TWtGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ1kyOXVjM1FnZUdJZ1BTQnVaWGNnUW1sMFFYSnlZWGtvZUN3Z2VDNXNaVzVuZEdnZ0tpQXpNaWs3WEc0Z0lHTnZibk4wSUhsaUlEMGdibVYzSUVKcGRFRnljbUY1S0hrc0lIa3ViR1Z1WjNSb0lDb2dNeklwTzF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoMFlXNXBiVzkwYjFOcGJXbHNZWEpwZEhrb2VHSXNJSGxpS1NrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJrYVdObFUybHRhV3hoY21sMGVTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0JqYjI1emRDQjBiM1JoYkNBOUlIZ3VkSEoxWlVOdmRXNTBLQ2tnS3lCNUxuUnlkV1ZEYjNWdWRDZ3BPMXh1SUNCcFppQW9kRzkwWVd3Z1BUMGdNQ2tnY21WMGRYSnVJREF1TUR0Y2JpQWdZMjl1YzNRZ1kyOXRiVzl1SUQwZ2VDNWhibVJYYVhSb1EyOTFiblJDYVhSektIa3NJSFJ5ZFdVcE8xeHVJQ0J5WlhSMWNtNGdNaUFxSUdOdmJXMXZiaUF2SUhSdmRHRnNPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1pHbGpaVVJwYzNSaGJtTmxLSGc2SUVKcGRFRnljbUY1TENCNU9pQkNhWFJCY25KaGVTazZJRzUxYldKbGNpQjdYRzRnSUhKbGRIVnliaUJuWlhSRWFYTjBZVzVqWlVaeWIyMVRhVzFwYkdGeWFYUjVLR1JwWTJWVGFXMXBiR0Z5YVhSNUtIZ3NJSGtwS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR052YzJsdVpWTnBiV2xzWVhKcGRIa29lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnWTI5dWMzUWdkRzkwWVd3Z1BTQjRMblJ5ZFdWRGIzVnVkQ2dwSUNvZ2VTNTBjblZsUTI5MWJuUW9LVHRjYmlBZ2FXWWdLSFJ2ZEdGc0lEMDlJREFwSUhKbGRIVnliaUF3TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJR052YlcxdmJpQXZJRTFoZEdndWMzRnlkQ2gwYjNSaGJDazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCamIzTnBibVZFYVhOMFlXNWpaU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCeVpYUjFjbTRnWjJWMFJHbHpkR0Z1WTJWR2NtOXRVMmx0YVd4aGNtbDBlU2hqYjNOcGJtVlRhVzFwYkdGeWFYUjVLSGdzSUhrcEtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdWMVkyeHBaR1ZoYmxOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlHZGxkRk5wYldsc1lYSnBkSGxHY205dFJHbHpkR0Z1WTJVb1pYVmpiR2xrWldGdVJHbHpkR0Z1WTJVb2VDd2dlU2twTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVW9lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJRTFoZEdndWMzRnlkQ2g0TG5SeWRXVkRiM1Z1ZENncElDc2dlUzUwY25WbFEyOTFiblFvS1NBdElESWdLaUI0TG1GdVpGZHBkR2hEYjNWdWRFSnBkSE1vZVN3Z2RISjFaU2twTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdhR0Z0YldsdVoxTnBiV2xzWVhKcGRIa29lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJR2RsZEZOcGJXbHNZWEpwZEhsR2NtOXRSR2x6ZEdGdVkyVW9hR0Z0YldsdVowUnBjM1JoYm1ObEtIZ3NJSGtwS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2hoYlcxcGJtZEVhWE4wWVc1alpTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0J5WlhSMWNtNGdlQzUwY25WbFEyOTFiblFvS1NBcklIa3VkSEoxWlVOdmRXNTBLQ2tnTFNBeUlDb2dlQzVoYm1SWGFYUm9RMjkxYm5SQ2FYUnpLSGtzSUhSeWRXVXBPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2MyOXJZV3hUYVcxcGJHRnlhWFI1S0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lHTnZibk4wSUhSdmRHRnNJRDBnZUM1MGNuVmxRMjkxYm5Rb0tTQXJJSGt1ZEhKMVpVTnZkVzUwS0NrN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJR052YlcxdmJpQXZJQ2d5SUNvZ2RHOTBZV3dnTFNBeklDb2dZMjl0Ylc5dUtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhOdmEyRnNSR2x6ZEdGdVkyVW9lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJR2RsZEVScGMzUmhibU5sUm5KdmJWTnBiV2xzWVhKcGRIa29jMjlyWVd4VGFXMXBiR0Z5YVhSNUtIZ3NJSGtwS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR3QxYkdONmVXNXphMmxUYVcxcGJHRnlhWFI1S0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lHTnZibk4wSUhSdmRHRnNJRDBnZUM1MGNuVmxRMjkxYm5Rb0tTQXJJSGt1ZEhKMVpVTnZkVzUwS0NrN1hHNGdJR052Ym5OMElIUnZkR0ZzVUhKdlpDQTlJSGd1ZEhKMVpVTnZkVzUwS0NrZ0tpQjVMblJ5ZFdWRGIzVnVkQ2dwTzF4dUlDQnBaaUFvZEc5MFlXeFFjbTlrSUQwOUlEQXBJSEpsZEhWeWJpQXdMakE3WEc0Z0lHTnZibk4wSUdOdmJXMXZiaUE5SUhndVlXNWtWMmwwYUVOdmRXNTBRbWwwY3loNUxDQjBjblZsS1R0Y2JpQWdjbVYwZFhKdUlDaGpiMjF0YjI0Z0tpQjBiM1JoYkNrZ0x5QW9NaUFxSUhSdmRHRnNVSEp2WkNrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJyZFd4amVubHVjMnRwUkdsemRHRnVZMlVvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUdkbGRFUnBjM1JoYm1ObFJuSnZiVk5wYldsc1lYSnBkSGtvYTNWc1kzcDVibk5yYVZOcGJXbHNZWEpwZEhrb2VDd2dlU2twTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdiV05EYjI1dVlYVm5hR1Y1VTJsdGFXeGhjbWwwZVNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQmpiMjV6ZENCMGIzUmhiQ0E5SUhndWRISjFaVU52ZFc1MEtDa2dLeUI1TG5SeWRXVkRiM1Z1ZENncE8xeHVJQ0JqYjI1emRDQjBiM1JoYkZCeWIyUWdQU0I0TG5SeWRXVkRiM1Z1ZENncElDb2dlUzUwY25WbFEyOTFiblFvS1R0Y2JpQWdhV1lnS0hSdmRHRnNVSEp2WkNBOVBTQXdLU0J5WlhSMWNtNGdNQzR3TzF4dUlDQmpiMjV6ZENCamIyMXRiMjRnUFNCNExtRnVaRmRwZEdoRGIzVnVkRUpwZEhNb2VTd2dkSEoxWlNrN1hHNGdJSEpsZEhWeWJpQW9ZMjl0Ylc5dUlDb2dkRzkwWVd3Z0xTQjBiM1JoYkZCeWIyUXBJQzhnZEc5MFlXeFFjbTlrTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdiV05EYjI1dVlYVm5hR1Y1UkdsemRHRnVZMlVvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUdkbGRFUnBjM1JoYm1ObFJuSnZiVk5wYldsc1lYSnBkSGtvYldORGIyNXVZWFZuYUdWNVUybHRhV3hoY21sMGVTaDRMQ0I1S1NrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJoYzNsdGJXVjBjbWxqVTJsdGFXeGhjbWwwZVNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQmpiMjV6ZENCdGFXNGdQU0JOWVhSb0xtMXBiaWg0TG5SeWRXVkRiM1Z1ZENncExDQjVMblJ5ZFdWRGIzVnVkQ2dwS1R0Y2JpQWdhV1lnS0cxcGJpQTlQU0F3S1NCeVpYUjFjbTRnTUM0d08xeHVJQ0JqYjI1emRDQmpiMjF0YjI0Z1BTQjRMbUZ1WkZkcGRHaERiM1Z1ZEVKcGRITW9lU3dnZEhKMVpTazdYRzRnSUhKbGRIVnliaUJqYjIxdGIyNGdMeUJ0YVc0N1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJoYzNsdGJXVjBjbWxqUkdsemRHRnVZMlVvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUdkbGRFUnBjM1JoYm1ObFJuSnZiVk5wYldsc1lYSnBkSGtvWVhONWJXMWxkSEpwWTFOcGJXbHNZWEpwZEhrb2VDd2dlU2twTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdZbkpoZFc1Q2JHRnVjWFZsZEZOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdZMjl1YzNRZ2JXRjRJRDBnVFdGMGFDNXRZWGdvZUM1MGNuVmxRMjkxYm5Rb0tTd2dlUzUwY25WbFEyOTFiblFvS1NrN1hHNGdJR2xtSUNodFlYZ2dQVDBnTUNrZ2NtVjBkWEp1SURBdU1EdGNiaUFnWTI5dWMzUWdZMjl0Ylc5dUlEMGdlQzVoYm1SWGFYUm9RMjkxYm5SQ2FYUnpLSGtzSUhSeWRXVXBPMXh1SUNCeVpYUjFjbTRnWTI5dGJXOXVJQzhnYldGNE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWW5KaGRXNUNiR0Z1Y1hWbGRFUnBjM1JoYm1ObEtIZzZJRUpwZEVGeWNtRjVMQ0I1T2lCQ2FYUkJjbkpoZVNrNklHNTFiV0psY2lCN1hHNGdJSEpsZEhWeWJpQm5aWFJFYVhOMFlXNWpaVVp5YjIxVGFXMXBiR0Z5YVhSNUtHSnlZWFZ1UW14aGJuRjFaWFJUYVcxcGJHRnlhWFI1S0hnc0lIa3BLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlISjFjM05sYkZOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdhV1lnS0hndWJHVnVaM1JvSUQwOUlEQXBJSEpsZEhWeWJpQXdMakE3WEc0Z0lHTnZibk4wSUdOdmJXMXZiaUE5SUhndVlXNWtWMmwwYUVOdmRXNTBRbWwwY3loNUxDQjBjblZsS1R0Y2JpQWdjbVYwZFhKdUlHTnZiVzF2YmlBdklIZ3ViR1Z1WjNSb08xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY25WemMyVnNSR2x6ZEdGdVkyVW9lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJR2RsZEVScGMzUmhibU5sUm5KdmJWTnBiV2xzWVhKcGRIa29jblZ6YzJWc1UybHRhV3hoY21sMGVTaDRMQ0I1S1NrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ5YjJkdmRFZHZiR1JpWlhKblUybHRhV3hoY21sMGVTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0JqYjI1emRDQmpiMjF0YjI0Z1BTQjRMbUZ1WkZkcGRHaERiM1Z1ZEVKcGRITW9lU3dnZEhKMVpTazdYRzRnSUdOdmJuTjBJSFJ2ZEdGc0lEMGdlQzVqYjNWdWRFSnBkSE1vZEhKMVpTa2dLeUI1TG1OdmRXNTBRbWwwY3loMGNuVmxLVHRjYmlBZ1kyOXVjM1FnYkdWdUlEMGdlQzVzWlc1bmRHZzdYRzRnSUdOdmJuTjBJR1JwWm1ZZ1BTQnNaVzRnTFNCMGIzUmhiQ0FySUdOdmJXMXZianRjYmlBZ2FXWWdLQ2hqYjIxdGIyNGdQVDBnYkdWdUtTQjhmQ0FvWkdsbVppQTlQU0JzWlc0cEtTQnlaWFIxY200Z01TNHdPMXh1SUNCbGJITmxJSEpsZEhWeWJpQmpiMjF0YjI0Z0x5QjBiM1JoYkNBcklHUnBabVlnTHlBb01pQXFJR3hsYmlBdElIUnZkR0ZzS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEp2WjI5MFIyOXNaR0psY21kRWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoeWIyZHZkRWR2YkdSaVpYSm5VMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCblpYUlRhVzFwYkdGeWFYUjVSbkp2YlVScGMzUmhibU5sS0dScGMzUmhibU5sT2lCdWRXMWlaWElwSUh0Y2JpQWdjbVYwZFhKdUlERWdMeUFvTVNBcklHUnBjM1JoYm1ObEtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGRFUnBjM1JoYm1ObFJuSnZiVk5wYldsc1lYSnBkSGtvYzJsdGFXeGhjbWwwZVRvZ2JuVnRZbVZ5S1NCN0lDOHZhVzRnWTJGelpTQnphVzFwYkdGeWFYUjVJR2x6SURBc0lIVnpaU0J0WVhnZ2JuVnRZbVZ5SUdadmNpQm1iRzloZERNeVhHNGdJSEpsZEhWeWJpQnphVzFwYkdGeWFYUjVJRDA5UFNBd0lEOGdNeTQwTURJNE1qTkZLek00SURvZ0tERWdMeUJ6YVcxcGJHRnlhWFI1S1NBdElERTdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCdWRXMWxjbWxqUkdsemRHRnVZMlVvZURvZ2JuVnRZbVZ5TENCNU9pQnVkVzFpWlhJcElIdGNiaUFnY21WMGRYSnVJRTFoZEdndVlXSnpLSGdnTFNCNUtUdGNibjFjYmlKZGZRPT0iLCJpbXBvcnQgKiBhcyBmbCBmcm9tICdmYXN0ZXN0LWxldmVuc2h0ZWluJztcbmltcG9ydCB7IGphcm9XaW5rbGVyIH0gZnJvbSAnamFyby13aW5rbGVyLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgYXN5bW1ldHJpY0Rpc3RhbmNlLCBicmF1bkJsYW5xdWV0RGlzdGFuY2UsIGNvc2luZURpc3RhbmNlLCBkaWNlRGlzdGFuY2UsIGV1Y2xpZGVhbkRpc3RhbmNlLCBoYW1taW5nRGlzdGFuY2UsIGt1bGN6eW5za2lEaXN0YW5jZSwgbWNDb25uYXVnaGV5RGlzdGFuY2UsIHJvZ290R29sZGJlcmdEaXN0YW5jZSwgcnVzc2VsRGlzdGFuY2UsIHNva2FsRGlzdGFuY2UsIHRhbmltb3RvRGlzdGFuY2UsIG51bWVyaWNEaXN0YW5jZSwgdGFuaW1vdG9EaXN0YW5jZUludEFycmF5LCB9IGZyb20gJy4uL2Rpc3RhbmNlLW1ldHJpY3MtbWV0aG9kcyc7XG5pbXBvcnQgeyBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZSB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zJztcbmltcG9ydCB7IG1tRGlzdGFuY2VGdW5jdGlvbnMsIE1tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcyB9IGZyb20gJy4uL21hY3JvbW9sZWN1bGUtZGlzdGFuY2UtZnVuY3Rpb25zJztcbmltcG9ydCB7IERpc3RhbmNlTWV0cmljc1N1YmplY3RzLCBCaXRBcnJheU1ldHJpY3NOYW1lcywgU3RyaW5nTWV0cmljc05hbWVzLCBWZWN0b3JNZXRyaWNzTmFtZXMsIE51bWJlck1ldHJpY3NOYW1lcywgSW50QXJyYXlNZXRyaWNzTmFtZXMgfSBmcm9tICcuL2NvbnN0cyc7XG5leHBvcnQgY29uc3QgdmVjdG9yRGlzdGFuY2VNZXRyaWNzTWV0aG9kcyA9IHtcbiAgICBbVmVjdG9yTWV0cmljc05hbWVzLkV1Y2xpZGVhbl06IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlLFxufTtcbmV4cG9ydCBjb25zdCBzdHJpbmdEaXN0YW5jZU1ldHJpY3NNZXRob2RzID0ge1xuICAgIFtTdHJpbmdNZXRyaWNzTmFtZXMuTGV2ZW5zaHRlaW5dOiBmbC5kaXN0YW5jZSxcbiAgICBbU3RyaW5nTWV0cmljc05hbWVzLkphcm9XaW5rbGVyXTogamFyb1dpbmtsZXIsXG4gICAgW1N0cmluZ01ldHJpY3NOYW1lcy5NYW5oYXR0YW5dOiBtYW5oYXR0YW5EaXN0YW5jZSxcbn07XG5leHBvcnQgY29uc3QgYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzID0ge1xuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5UYW5pbW90b106IHRhbmltb3RvRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkRpY2VdOiBkaWNlRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkFzeW1tZXRyaWNdOiBhc3ltbWV0cmljRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkJyYXVuQmxhbnF1ZXRdOiBicmF1bkJsYW5xdWV0RGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkNvc2luZV06IGNvc2luZURpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5LdWxjenluc2tpXToga3VsY3p5bnNraURpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5NY0Nvbm5hdWdoZXldOiBtY0Nvbm5hdWdoZXlEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuUm9nb3RHb2xkYmVyZ106IHJvZ290R29sZGJlcmdEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuUnVzc2VsXTogcnVzc2VsRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlNva2FsXTogc29rYWxEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuSGFtbWluZ106IGhhbW1pbmdEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuRXVjbGlkZWFuXTogZXVjbGlkZWFuRGlzdGFuY2UsXG59O1xuZXhwb3J0IGNvbnN0IGludEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kcyA9IHtcbiAgICBbSW50QXJyYXlNZXRyaWNzTmFtZXMuVGFuaW1vdG9JbnRBcnJheV06IHRhbmltb3RvRGlzdGFuY2VJbnRBcnJheSxcbn07XG5leHBvcnQgY29uc3QgbnVtYmVyRGlzdGFuY2VNZXRyaWNzTWV0aG9kcyA9IHtcbiAgICBbTnVtYmVyTWV0cmljc05hbWVzLk51bWVyaWNEaXN0YW5jZV06IG51bWVyaWNEaXN0YW5jZSxcbn07XG5leHBvcnQgY29uc3QgQXZhaWxhYmxlTWV0cmljcyA9IHtcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuVmVjdG9yXToge1xuICAgICAgICBbVmVjdG9yTWV0cmljc05hbWVzLkV1Y2xpZGVhbl06IHZlY3RvckRpc3RhbmNlTWV0cmljc01ldGhvZHNbVmVjdG9yTWV0cmljc05hbWVzLkV1Y2xpZGVhbl0sXG4gICAgfSxcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuU3RyaW5nXToge1xuICAgICAgICBbU3RyaW5nTWV0cmljc05hbWVzLkxldmVuc2h0ZWluXTogc3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tTdHJpbmdNZXRyaWNzTmFtZXMuTGV2ZW5zaHRlaW5dLFxuICAgICAgICBbU3RyaW5nTWV0cmljc05hbWVzLkphcm9XaW5rbGVyXTogc3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tTdHJpbmdNZXRyaWNzTmFtZXMuSmFyb1dpbmtsZXJdLFxuICAgICAgICBbU3RyaW5nTWV0cmljc05hbWVzLk1hbmhhdHRhbl06IHN0cmluZ0Rpc3RhbmNlTWV0cmljc01ldGhvZHNbU3RyaW5nTWV0cmljc05hbWVzLk1hbmhhdHRhbl0sXG4gICAgfSxcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuQml0QXJyYXldOiB7XG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5UYW5pbW90b106IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5UYW5pbW90b10sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5EaWNlXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLkRpY2VdLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuQXN5bW1ldHJpY106IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5Bc3ltbWV0cmljXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkJyYXVuQmxhbnF1ZXRdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuQnJhdW5CbGFucXVldF0sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Db3NpbmVdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuQ29zaW5lXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkt1bGN6eW5za2ldOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuS3VsY3p5bnNraV0sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5NY0Nvbm5hdWdoZXldOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuTWNDb25uYXVnaGV5XSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlJvZ290R29sZGJlcmddOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuUm9nb3RHb2xkYmVyZ10sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5SdXNzZWxdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuUnVzc2VsXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlNva2FsXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLlNva2FsXSxcbiAgICB9LFxuICAgIFtEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cy5NYWNyb01vbGVjdWxlXToge1xuICAgICAgICBbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLkhBTU1JTkddOiBtbURpc3RhbmNlRnVuY3Rpb25zW01tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5IQU1NSU5HXSxcbiAgICAgICAgW01tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5MRVZFTlNIVEVJTl06IG1tRGlzdGFuY2VGdW5jdGlvbnNbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLkxFVkVOU0hURUlOXSxcbiAgICAgICAgW01tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5ORUVETEVNQU5OX1dVTlNDSF06IG1tRGlzdGFuY2VGdW5jdGlvbnNbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLk5FRURMRU1BTk5fV1VOU0NIXSxcbiAgICAgICAgW01tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5NT05PTUVSX0NIRU1JQ0FMX0RJU1RBTkNFXTogbW1EaXN0YW5jZUZ1bmN0aW9uc1tNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMuTU9OT01FUl9DSEVNSUNBTF9ESVNUQU5DRV0sXG4gICAgfSxcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuTnVtYmVyXToge1xuICAgICAgICBbTnVtYmVyTWV0cmljc05hbWVzLk51bWVyaWNEaXN0YW5jZV06IG51bWJlckRpc3RhbmNlTWV0cmljc01ldGhvZHNbTnVtYmVyTWV0cmljc05hbWVzLk51bWVyaWNEaXN0YW5jZV0sXG4gICAgfSxcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuSW50QXJyYXldOiB7XG4gICAgICAgIFtJbnRBcnJheU1ldHJpY3NOYW1lcy5UYW5pbW90b0ludEFycmF5XTogaW50QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0ludEFycmF5TWV0cmljc05hbWVzLlRhbmltb3RvSW50QXJyYXldLFxuICAgIH1cbn07XG5leHBvcnQgY29uc3QgTWV0cmljVG9EYXRhVHlwZSA9IE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3MpXG4gICAgLnJlZHVjZSgocmV0LCBrZXkpID0+IHtcbiAgICBmb3IgKGNvbnN0IHZhbCBvZiBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzW2tleV0pKVxuICAgICAgICByZXRbdmFsXSA9IGtleTtcbiAgICByZXR1cm4gcmV0O1xufSwge30pO1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nTWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSAnU3RyaW5nJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0JpdEFycmF5TWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSAnQml0QXJyYXknO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVmVjdG9yTWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSAnVmVjdG9yJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc01hY3JvTW9sZWN1bGVNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09IERpc3RhbmNlTWV0cmljc1N1YmplY3RzLk1hY3JvTW9sZWN1bGUudG9TdHJpbmcoKTtcbn1cbi8qKiBNYW5oYXR0YW4gZGlzdGFuY2UgYmV0d2VlbiB0d28gc2VxdWVuY2VzIChtYXRjaCAtIDAsIG1pc21hdGNoIC0gMSkgbm9ybWFsaXplZCBmb3IgbGVuZ3RoLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hbmhhdHRhbkRpc3RhbmNlKHMxLCBzMikge1xuICAgIGlmIChzMS5sZW5ndGggIT09IHMyLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGxldCBkaXN0ID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBzMS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIGRpc3QgKz0gczFbaV0gPT0gczJbaV0gPyAwIDogMTtcbiAgICAgICAgcmV0dXJuIGRpc3QgLyBzMS5sZW5ndGg7XG4gICAgfVxufVxuLyoqIFVuaWZpZWQgY2xhc3MgaW1wbGVtZW50aW5nIGRpZmZlcmVudCBzdHJpbmcgbWVhc3VyZXMuICovXG5leHBvcnQgY2xhc3MgTWVhc3VyZSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBNZWFzdXJlIHdpdGggLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgTWV0aG9kIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZSBiZXR3ZWVuIHN0cmluZ3MuXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgY29uc3RydWN0b3IobWV0aG9kKSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gbWV0aG9kO1xuICAgICAgICB0aGlzLmRhdGFUeXBlID0gTWV0cmljVG9EYXRhVHlwZVttZXRob2RdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1c3RvbSBzdHJpbmcgZGlzdGFuY2UgZnVuY3Rpb24gc3BlY2lmaWVkLlxuICAgICAqIEBwYXJhbSB7b3B0c30gb3B0cyBPcHRpb25zIGZvciB0aGUgbWVhc3VyZS4gdXNlZCBmb3IgbWFjcm9tb2xlY3VsZSBkaXN0YW5jZXNcbiAgICAgKiBAcmV0dXJuIHtEaXN0YW5jZU1ldHJpY30gQ2FsbGJhY2sgb2YgdGhlIG1lYXN1cmUgY2hvc2VuLlxuICAgICAqIEBtZW1iZXJvZiBNZWFzdXJlclxuICAgICAqL1xuICAgIGdldE1lYXN1cmUob3B0cykge1xuICAgICAgICBjb25zdCBkaWN0ID0gQXZhaWxhYmxlTWV0cmljcztcbiAgICAgICAgaWYgKCFkaWN0Lmhhc093blByb3BlcnR5KHRoaXMuZGF0YVR5cGUpIHx8ICFkaWN0W3RoaXMuZGF0YVR5cGVdLmhhc093blByb3BlcnR5KHRoaXMubWV0aG9kKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBtZWFzdXJlICR7dGhpcy5tZXRob2R9IGZvciBkYXRhIHR5cGUgJHt0aGlzLmRhdGFUeXBlfWApO1xuICAgICAgICByZXR1cm4gaXNNYWNyb01vbGVjdWxlTWV0cmljKHRoaXMubWV0aG9kKSA/XG4gICAgICAgICAgICBkaWN0W3RoaXMuZGF0YVR5cGVdW3RoaXMubWV0aG9kXShvcHRzKSA6XG4gICAgICAgICAgICBkaWN0W3RoaXMuZGF0YVR5cGVdW3RoaXMubWV0aG9kXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjdXN0b20gc3RyaW5nIGRpc3RhbmNlIGJ5IHRoZSBnaXZlbiBkYXRhIHR5cGUuXG4gICAgICogQHBhcmFtIHtBdmFpbGFibGVEYXRhVHlwZXN9IGRhdGFUeXBlIE1ldHJpYydzIGRhdGEgdHlwZVxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSBNZXRyaWMgbmFtZXMgd2hpY2ggZXhwZWN0cyB0aGUgZ2l2ZW4gZGF0YSB0eXBlXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgc3RhdGljIGdldE1ldHJpY0J5RGF0YVR5cGUoZGF0YVR5cGUpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3NbZGF0YVR5cGVdKTtcbiAgICB9XG4gICAgLyoqIFJldHVybnMgbWV0cmljIG5hbWVzIGF2YWlsYWJsZS5cbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0IGF2YWlsYWJsZU1lYXN1cmVzKCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljcyk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEhsd1pXUXRiV1YwY21samN5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW5SNWNHVmtMVzFsZEhKcFkzTXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhMUVVGTExFVkJRVVVzVFVGQlRTeHhRa0ZCY1VJc1EwRkJRenRCUVVNeFF5eFBRVUZQTEVWQlFVTXNWMEZCVnl4RlFVRkRMRTFCUVUwc2VVSkJRWGxDTEVOQlFVTTdRVUZGY0VRc1QwRkJUeXhGUVVOTUxHdENRVUZyUWl4RlFVTnNRaXh4UWtGQmNVSXNSVUZEY2tJc1kwRkJZeXhGUVVOa0xGbEJRVmtzUlVGRFdpeHBRa0ZCYVVJc1JVRkRha0lzWlVGQlpTeEZRVU5tTEd0Q1FVRnJRaXhGUVVOc1FpeHZRa0ZCYjBJc1JVRkRjRUlzY1VKQlFYRkNMRVZCUTNKQ0xHTkJRV01zUlVGRFpDeGhRVUZoTEVWQlEySXNaMEpCUVdkQ0xFVkJRMmhDTEdWQlFXVXNSVUZEWml4M1FrRkJkMElzUjBGRGVrSXNUVUZCVFN3MlFrRkJOa0lzUTBGQlF6dEJRVVZ5UXl4UFFVRlBMRVZCUVVNc01FSkJRVEJDTEVWQlFVTXNUVUZCVFN4cFJFRkJhVVFzUTBGQlF6dEJRVWN6Uml4UFFVRlBMRVZCUVVNc2JVSkJRVzFDTEVWQlFVVXNkMEpCUVhkQ0xFVkJRVU1zVFVGQlRTeHhRMEZCY1VNc1EwRkJRenRCUVVOc1J5eFBRVUZQTEVWQlFVTXNkVUpCUVhWQ0xFVkJRVVVzYjBKQlFXOUNMRVZCUTI1RUxHdENRVUZyUWl4RlFVRkZMR3RDUVVGclFpeEZRVUZGTEd0Q1FVRnJRaXhGUVVGRkxHOUNRVUZ2UWl4RlFVRkRMRTFCUVUwc1ZVRkJWU3hEUVVGRE8wRkJSM0JITEUxQlFVMHNRMEZCUXl4TlFVRk5MRFJDUVVFMFFpeEhRVUY1UkR0SlFVTm9SeXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRk5CUVZNc1EwRkJReXhGUVVGRkxEQkNRVUV3UWp0RFFVTXpSQ3hEUVVGRE8wRkJSVVlzVFVGQlRTeERRVUZETEUxQlFVMHNORUpCUVRSQ0xFZEJRWGxFTzBsQlEyaEhMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNWMEZCVnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExGRkJRVkU3U1VGRE4wTXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eFhRVUZYTEVOQlFVTXNSVUZCUlN4WFFVRlhPMGxCUXpkRExFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1UwRkJVeXhEUVVGRExFVkJRVVVzYVVKQlFXbENPME5CUTJ4RUxFTkJRVU03UVVGRlJpeE5RVUZOTEVOQlFVTXNUVUZCVFN3NFFrRkJPRUlzUjBGQk5rUTdTVUZEZEVjc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4UlFVRlJMRU5CUVVNc1JVRkJSU3huUWtGQlowSTdTVUZEYWtRc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3haUVVGWk8wbEJRM3BETEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNhMEpCUVd0Q08wbEJRM0pFTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zWVVGQllTeERRVUZETEVWQlFVVXNjVUpCUVhGQ08wbEJRek5FTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNZMEZCWXp0SlFVTTNReXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRlZCUVZVc1EwRkJReXhGUVVGRkxHdENRVUZyUWp0SlFVTnlSQ3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRmxCUVZrc1EwRkJReXhGUVVGRkxHOUNRVUZ2UWp0SlFVTjZSQ3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMR0ZCUVdFc1EwRkJReXhGUVVGRkxIRkNRVUZ4UWp0SlFVTXpSQ3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxHTkJRV003U1VGRE4wTXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4aFFVRmhPMGxCUXpORExFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1QwRkJUeXhEUVVGRExFVkJRVVVzWlVGQlpUdEpRVU12UXl4RFFVRkRMRzlDUVVGdlFpeERRVUZETEZOQlFWTXNRMEZCUXl4RlFVRkZMR2xDUVVGcFFqdERRVU53UkN4RFFVRkRPMEZCUlVZc1RVRkJUU3hEUVVGRExFMUJRVTBzT0VKQlFUaENMRWRCUVcxRk8wbEJRelZITEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1JVRkJSU3gzUWtGQmQwSTdRMEZEYkVVc1EwRkJRenRCUVVWR0xFMUJRVTBzUTBGQlF5eE5RVUZOTERSQ1FVRTBRaXhIUVVGNVJEdEpRVU5vUnl4RFFVRkRMR3RDUVVGclFpeERRVUZETEdWQlFXVXNRMEZCUXl4RlFVRkZMR1ZCUVdVN1EwRkRkRVFzUTBGQlF6dEJRVVZHTEUxQlFVMHNRMEZCUXl4TlFVRk5MR2RDUVVGblFpeEhRVUZITzBsQlF6bENMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVN1VVRkRhRU1zUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhUUVVGVExFTkJRVU1zUlVGQlJTdzBRa0ZCTkVJc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4VFFVRlRMRU5CUVVNN1MwRkRNMFk3U1VGRFJDeERRVUZETEhWQ1FVRjFRaXhEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTzFGQlEyaERMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNWMEZCVnl4RFFVRkRMRVZCUVVVc05FSkJRVFJDTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVjBGQlZ5eERRVUZETzFGQlF6bEdMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNWMEZCVnl4RFFVRkRMRVZCUVVVc05FSkJRVFJDTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVjBGQlZ5eERRVUZETzFGQlF6bEdMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNVMEZCVXl4RFFVRkRMRVZCUVVVc05FSkJRVFJDTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVTBGQlV5eERRVUZETzB0QlF6TkdPMGxCUTBRc1EwRkJReXgxUWtGQmRVSXNRMEZCUXl4UlFVRlJMRU5CUVVNc1JVRkJSVHRSUVVOc1F5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExGRkJRVkVzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRkZCUVZFc1EwRkJRenRSUVVNNVJpeERRVUZETEc5Q1FVRnZRaXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRWxCUVVrc1EwRkJRenRSUVVOMFJpeERRVUZETEc5Q1FVRnZRaXhEUVVGRExGVkJRVlVzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRlZCUVZVc1EwRkJRenRSUVVOc1J5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExHRkJRV0VzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMR0ZCUVdFc1EwRkJRenRSUVVONFJ5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVNeFJpeERRVUZETEc5Q1FVRnZRaXhEUVVGRExGVkJRVlVzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRlZCUVZVc1EwRkJRenRSUVVOc1J5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExGbEJRVmtzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRmxCUVZrc1EwRkJRenRSUVVOMFJ5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExHRkJRV0VzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMR0ZCUVdFc1EwRkJRenRSUVVONFJ5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVNeFJpeERRVUZETEc5Q1FVRnZRaXhEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRXRCUVVzc1EwRkJRenRMUVVONlJqdEpRVU5FTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zWVVGQllTeERRVUZETEVWQlFVVTdVVUZEZGtNc1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSU3h0UWtGQmJVSXNRMEZCUXl4M1FrRkJkMElzUTBGQlF5eFBRVUZQTEVOQlFVTTdVVUZEZWtZc1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4WFFVRlhMRU5CUVVNc1JVRkJSU3h0UWtGQmJVSXNRMEZCUXl4M1FrRkJkMElzUTBGQlF5eFhRVUZYTEVOQlFVTTdVVUZEYWtjc1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eEZRVUZGTEcxQ1FVRnRRaXhEUVVGRExIZENRVUYzUWl4RFFVRkRMR2xDUVVGcFFpeERRVUZETzFGQlF6ZEhMRU5CUVVNc2QwSkJRWGRDTEVOQlFVTXNlVUpCUVhsQ0xFTkJRVU1zUlVGQlJTeHRRa0ZCYlVJc1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4NVFrRkJlVUlzUTBGQlF6dExRVU01U0R0SlFVTkVMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVN1VVRkRhRU1zUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhsUVVGbExFTkJRVU1zUlVGQlJTdzBRa0ZCTkVJc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4bFFVRmxMRU5CUVVNN1MwRkRka2M3U1VGRFJDeERRVUZETEhWQ1FVRjFRaXhEUVVGRExGRkJRVkVzUTBGQlF5eEZRVUZGTzFGQlEyeERMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUlVGQlJTdzRRa0ZCT0VJc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4blFrRkJaMElzUTBGQlF6dExRVU12Unp0RFFVTkdMRU5CUVVNN1FVRkZSaXhOUVVGTkxFTkJRVU1zVFVGQlRTeG5Ra0ZCWjBJc1IwRkJjVUlzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF6dExRVU0xUlN4TlFVRk5MRU5CUVVNc1EwRkJReXhIUVVGeFFpeEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZPMGxCUTNKRExFdEJRVXNzVFVGQlRTeEhRVUZITEVsQlFVa3NUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4SFFVRjVRaXhEUVVGRExFTkJRVU03VVVGRGVFVXNSMEZCUnl4RFFVRkRMRWRCUVhsQ0xFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdTVUZGZGtNc1QwRkJUeXhIUVVGSExFTkJRVU03UVVGRFlpeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRmxWQ3hOUVVGTkxGVkJRVlVzWTBGQll5eERRVUZETEVsQlFXdENPMGxCUXk5RExFOUJRVThzWjBKQlFXZENMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzVVVGQlVTeERRVUZETzBGQlF6VkRMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzWjBKQlFXZENMRU5CUVVNc1NVRkJhMEk3U1VGRGFrUXNUMEZCVHl4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4VlFVRlZMRU5CUVVNN1FVRkRPVU1zUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4alFVRmpMRU5CUVVNc1NVRkJhMEk3U1VGREwwTXNUMEZCVHl4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4UlFVRlJMRU5CUVVNN1FVRkROVU1zUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4eFFrRkJjVUlzUTBGQlF5eEpRVUZyUWp0SlFVTjBSQ3hQUVVGUExHZENRVUZuUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxIVkNRVUYxUWl4RFFVRkRMR0ZCUVdFc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dEJRVU53Uml4RFFVRkRPMEZCUlVRc1owZEJRV2RITzBGQlEyaEhMRTFCUVUwc1ZVRkJWU3hwUWtGQmFVSXNRMEZCUXl4RlFVRlZMRVZCUVVVc1JVRkJWVHRKUVVOMFJDeEpRVUZKTEVWQlFVVXNRMEZCUXl4TlFVRk5MRXRCUVVzc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJUdFJRVU16UWl4UFFVRlBMRU5CUVVNc1EwRkJRenRMUVVOV08xTkJRVTA3VVVGRFRDeEpRVUZKTEVsQlFVa3NSMEZCVnl4RFFVRkRMRU5CUVVNN1VVRkRja0lzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTJoRExFbEJRVWtzU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5xUXl4UFFVRlBMRWxCUVVrc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETzB0QlEzcENPMEZCUTBnc1EwRkJRenRCUVVWRUxEUkVRVUUwUkR0QlFVTTFSQ3hOUVVGTkxFOUJRVThzVDBGQlR6dEpRVWxzUWpzN096dFBRVWxITzBsQlEwZ3NXVUZCV1N4TlFVRnZRanRSUVVNNVFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJRenRSUVVOeVFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMR2RDUVVGblFpeERRVUZETEUxQlFVMHNRMEZCZFVJc1EwRkJRenRKUVVOcVJTeERRVUZETzBsQlJVUTdPenM3TzA5QlMwYzdTVUZEU1N4VlFVRlZMRU5CUVVNc1NVRkJWVHRSUVVNeFFpeE5RVUZOTEVsQlFVa3NSMEZGVGl4blFrRkJaMElzUTBGQlF6dFJRVU55UWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMR05CUVdNc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETzFsQlEzcEdMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zYlVKQlFXMUNMRWxCUVVrc1EwRkJReXhOUVVGTkxHdENRVUZyUWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU1zUTBGQlF6dFJRVU51Uml4UFFVRlBMSEZDUVVGeFFpeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM2hETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCY1VNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6ZEZMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJiVUlzUTBGQlF6dEpRVU4yUkN4RFFVRkRPMGxCUlVRN096czdPMDlCUzBjN1NVRkRTU3hOUVVGTkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1VVRkJORUk3VVVGRE5VUXNUMEZCVHl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGFrUXNRMEZCUXp0SlFVVkVPenRQUVVWSE8wbEJRMGdzVFVGQlRTeExRVUZMTEdsQ1FVRnBRanRSUVVNeFFpeFBRVUZQTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNRMEZCUXp0SlFVTjJReXhEUVVGRE8wTkJRMFlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnS2lCaGN5Qm1iQ0JtY205dElDZG1ZWE4wWlhOMExXeGxkbVZ1YzJoMFpXbHVKenRjYm1sdGNHOXlkQ0I3YW1GeWIxZHBibXRzWlhKOUlHWnliMjBnSjJwaGNtOHRkMmx1YTJ4bGNpMTBlWEJsYzJOeWFYQjBKenRjYm1sdGNHOXlkQ0I3UkdsemRHRnVZMlZOWlhSeWFXTjlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM1I1Y0dVdFpHVmpiR0Z5WVhScGIyNXpKenRjYm1sdGNHOXlkQ0I3WEc0Z0lHRnplVzF0WlhSeWFXTkVhWE4wWVc1alpTeGNiaUFnWW5KaGRXNUNiR0Z1Y1hWbGRFUnBjM1JoYm1ObExGeHVJQ0JqYjNOcGJtVkVhWE4wWVc1alpTeGNiaUFnWkdsalpVUnBjM1JoYm1ObExGeHVJQ0JsZFdOc2FXUmxZVzVFYVhOMFlXNWpaU3hjYmlBZ2FHRnRiV2x1WjBScGMzUmhibU5sTEZ4dUlDQnJkV3hqZW5sdWMydHBSR2x6ZEdGdVkyVXNYRzRnSUcxalEyOXVibUYxWjJobGVVUnBjM1JoYm1ObExGeHVJQ0J5YjJkdmRFZHZiR1JpWlhKblJHbHpkR0Z1WTJVc1hHNGdJSEoxYzNObGJFUnBjM1JoYm1ObExGeHVJQ0J6YjJ0aGJFUnBjM1JoYm1ObExGeHVJQ0IwWVc1cGJXOTBiMFJwYzNSaGJtTmxMRnh1SUNCdWRXMWxjbWxqUkdsemRHRnVZMlVzWEc0Z0lIUmhibWx0YjNSdlJHbHpkR0Z1WTJWSmJuUkJjbkpoZVN4Y2JuMGdabkp2YlNBbkxpNHZaR2x6ZEdGdVkyVXRiV1YwY21samN5MXRaWFJvYjJSekp6dGNibHh1YVcxd2IzSjBJSHRqWVd4amRXeGhkR1ZGZFdOc2FXUmxZVzVFYVhOMFlXNWpaWDBnWm5KdmJTQW5RR1JoZEdGbmNtOXJMV3hwWW5KaGNtbGxjeTkxZEdsc2N5OXpjbU12ZG1WamRHOXlMVzl3WlhKaGRHbHZibk1uTzF4dWFXMXdiM0owSUVKcGRFRnljbUY1SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDJKcGRDMWhjbkpoZVNjN1hHNXBiWEJ2Y25RZ2UxWmxZM1J2Y2l3Z1UzUnlhVzVuUkdsamRHbHZibUZ5ZVgwZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdmRIbHdaUzFrWldOc1lYSmhkR2x2Ym5Nbk8xeHVhVzF3YjNKMElIdHRiVVJwYzNSaGJtTmxSblZ1WTNScGIyNXpMQ0JOYlVScGMzUmhibU5sUm5WdVkzUnBiMjV6VG1GdFpYTjlJR1p5YjIwZ0p5NHVMMjFoWTNKdmJXOXNaV04xYkdVdFpHbHpkR0Z1WTJVdFpuVnVZM1JwYjI1ekp6dGNibWx0Y0c5eWRDQjdSR2x6ZEdGdVkyVk5aWFJ5YVdOelUzVmlhbVZqZEhNc0lFSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMRnh1SUNCVGRISnBibWROWlhSeWFXTnpUbUZ0WlhNc0lGWmxZM1J2Y2sxbGRISnBZM05PWVcxbGN5d2dUblZ0WW1WeVRXVjBjbWxqYzA1aGJXVnpMQ0JKYm5SQmNuSmhlVTFsZEhKcFkzTk9ZVzFsYzMwZ1puSnZiU0FuTGk5amIyNXpkSE1uTzF4dVhHNWNibVY0Y0c5eWRDQmpiMjV6ZENCMlpXTjBiM0pFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSek9pQjdJRnR1WVcxbE9pQnpkSEpwYm1kZE9pQW9lRG9nVm1WamRHOXlMQ0I1T2lCV1pXTjBiM0lwSUQwK0lHNTFiV0psY2lCOUlEMGdlMXh1SUNCYlZtVmpkRzl5VFdWMGNtbGpjMDVoYldWekxrVjFZMnhwWkdWaGJsMDZJR05oYkdOMWJHRjBaVVYxWTJ4cFpHVmhia1JwYzNSaGJtTmxMRnh1ZlR0Y2JseHVaWGh3YjNKMElHTnZibk4wSUhOMGNtbHVaMFJwYzNSaGJtTmxUV1YwY21samMwMWxkR2h2WkhNNklIc2dXMjVoYldVNklITjBjbWx1WjEwNklDaDRPaUJ6ZEhKcGJtY3NJSGs2SUhOMGNtbHVaeWtnUFQ0Z2JuVnRZbVZ5SUgwZ1BTQjdYRzRnSUZ0VGRISnBibWROWlhSeWFXTnpUbUZ0WlhNdVRHVjJaVzV6YUhSbGFXNWRPaUJtYkM1a2FYTjBZVzVqWlN4Y2JpQWdXMU4wY21sdVowMWxkSEpwWTNOT1lXMWxjeTVLWVhKdlYybHVhMnhsY2wwNklHcGhjbTlYYVc1cmJHVnlMRnh1SUNCYlUzUnlhVzVuVFdWMGNtbGpjMDVoYldWekxrMWhibWhoZEhSaGJsMDZJRzFoYm1oaGRIUmhia1JwYzNSaGJtTmxMRnh1ZlR0Y2JseHVaWGh3YjNKMElHTnZibk4wSUdKcGRFRnljbUY1UkdsemRHRnVZMlZOWlhSeWFXTnpUV1YwYUc5a2N6b2dleUJiYm1GdFpUb2djM1J5YVc1blhUb2dLSGc2SUVKcGRFRnljbUY1TENCNU9pQkNhWFJCY25KaGVTa2dQVDRnYm5WdFltVnlJSDBnUFNCN1hHNGdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1VVlXNXBiVzkwYjEwNklIUmhibWx0YjNSdlJHbHpkR0Z1WTJVc1hHNGdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1RWFXTmxYVG9nWkdsalpVUnBjM1JoYm1ObExGeHVJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVFYTjViVzFsZEhKcFkxMDZJR0Z6ZVcxdFpYUnlhV05FYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa0p5WVhWdVFteGhibkYxWlhSZE9pQmljbUYxYmtKc1lXNXhkV1YwUkdsemRHRnVZMlVzWEc0Z0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVEYjNOcGJtVmRPaUJqYjNOcGJtVkVhWE4wWVc1alpTeGNiaUFnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxrdDFiR042ZVc1emEybGRPaUJyZFd4amVubHVjMnRwUkdsemRHRnVZMlVzWEc0Z0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVOWTBOdmJtNWhkV2RvWlhsZE9pQnRZME52Ym01aGRXZG9aWGxFYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMbEp2WjI5MFIyOXNaR0psY21kZE9pQnliMmR2ZEVkdmJHUmlaWEpuUkdsemRHRnVZMlVzWEc0Z0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVTZFhOelpXeGRPaUJ5ZFhOelpXeEVhWE4wWVc1alpTeGNiaUFnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsTnZhMkZzWFRvZ2MyOXJZV3hFYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa2hoYlcxcGJtZGRPaUJvWVcxdGFXNW5SR2x6ZEdGdVkyVXNYRzRnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NUZkV05zYVdSbFlXNWRPaUJsZFdOc2FXUmxZVzVFYVhOMFlXNWpaU3hjYm4wN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCcGJuUkJjbkpoZVVScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITTZJSHNnVzI1aGJXVTZJSE4wY21sdVoxMDZJQ2g0T2lCVmFXNTBNekpCY25KaGVTd2dlVG9nVldsdWRETXlRWEp5WVhrcElEMCtJRzUxYldKbGNpQjlJRDBnZTF4dUlDQmJTVzUwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11VkdGdWFXMXZkRzlKYm5SQmNuSmhlVjA2SUhSaGJtbHRiM1J2UkdsemRHRnVZMlZKYm5SQmNuSmhlU3hjYm4wN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCdWRXMWlaWEpFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSek9pQjdJRnR1WVcxbE9pQnpkSEpwYm1kZE9pQW9lRG9nYm5WdFltVnlMQ0I1T2lCdWRXMWlaWElwSUQwK0lHNTFiV0psY2lCOUlEMGdlMXh1SUNCYlRuVnRZbVZ5VFdWMGNtbGpjMDVoYldWekxrNTFiV1Z5YVdORWFYTjBZVzVqWlYwNklHNTFiV1Z5YVdORWFYTjBZVzVqWlN4Y2JuMDdYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQkJkbUZwYkdGaWJHVk5aWFJ5YVdOeklEMGdlMXh1SUNCYlJHbHpkR0Z1WTJWTlpYUnlhV056VTNWaWFtVmpkSE11Vm1WamRHOXlYVG9nZTF4dUlDQWdJRnRXWldOMGIzSk5aWFJ5YVdOelRtRnRaWE11UlhWamJHbGtaV0Z1WFRvZ2RtVmpkRzl5UkdsemRHRnVZMlZOWlhSeWFXTnpUV1YwYUc5a2MxdFdaV04wYjNKTlpYUnlhV056VG1GdFpYTXVSWFZqYkdsa1pXRnVYU3hjYmlBZ2ZTeGNiaUFnVzBScGMzUmhibU5sVFdWMGNtbGpjMU4xWW1wbFkzUnpMbE4wY21sdVoxMDZJSHRjYmlBZ0lDQmJVM1J5YVc1blRXVjBjbWxqYzA1aGJXVnpMa3hsZG1WdWMyaDBaV2x1WFRvZ2MzUnlhVzVuUkdsemRHRnVZMlZOWlhSeWFXTnpUV1YwYUc5a2MxdFRkSEpwYm1kTlpYUnlhV056VG1GdFpYTXVUR1YyWlc1emFIUmxhVzVkTEZ4dUlDQWdJRnRUZEhKcGJtZE5aWFJ5YVdOelRtRnRaWE11U21GeWIxZHBibXRzWlhKZE9pQnpkSEpwYm1kRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMU4wY21sdVowMWxkSEpwWTNOT1lXMWxjeTVLWVhKdlYybHVhMnhsY2wwc1hHNGdJQ0FnVzFOMGNtbHVaMDFsZEhKcFkzTk9ZVzFsY3k1TllXNW9ZWFIwWVc1ZE9pQnpkSEpwYm1kRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMU4wY21sdVowMWxkSEpwWTNOT1lXMWxjeTVOWVc1b1lYUjBZVzVkTEZ4dUlDQjlMRnh1SUNCYlJHbHpkR0Z1WTJWTlpYUnlhV056VTNWaWFtVmpkSE11UW1sMFFYSnlZWGxkT2lCN1hHNGdJQ0FnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsUmhibWx0YjNSdlhUb2dZbWwwUVhKeVlYbEVhWE4wWVc1alpVMWxkSEpwWTNOTlpYUm9iMlJ6VzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsUmhibWx0YjNSdlhTeGNiaUFnSUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVSR2xqWlYwNklHSnBkRUZ5Y21GNVJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1RWFXTmxYU3hjYmlBZ0lDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11UVhONWJXMWxkSEpwWTEwNklHSnBkRUZ5Y21GNVJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1QmMzbHRiV1YwY21salhTeGNiaUFnSUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVRbkpoZFc1Q2JHRnVjWFZsZEYwNklHSnBkRUZ5Y21GNVJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1Q2NtRjFia0pzWVc1eGRXVjBYU3hjYmlBZ0lDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11UTI5emFXNWxYVG9nWW1sMFFYSnlZWGxFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSelcwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa052YzJsdVpWMHNYRzRnSUNBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa3QxYkdONmVXNXphMmxkT2lCaWFYUkJjbkpoZVVScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11UzNWc1kzcDVibk5yYVYwc1hHNGdJQ0FnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxrMWpRMjl1Ym1GMVoyaGxlVjA2SUdKcGRFRnljbUY1UkdsemRHRnVZMlZOWlhSeWFXTnpUV1YwYUc5a2MxdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVOWTBOdmJtNWhkV2RvWlhsZExGeHVJQ0FnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NVNiMmR2ZEVkdmJHUmlaWEpuWFRvZ1ltbDBRWEp5WVhsRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGxKdloyOTBSMjlzWkdKbGNtZGRMRnh1SUNBZ0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVTZFhOelpXeGRPaUJpYVhSQmNuSmhlVVJwYzNSaGJtTmxUV1YwY21samMwMWxkR2h2WkhOYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVVblZ6YzJWc1hTeGNiaUFnSUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVVMjlyWVd4ZE9pQmlhWFJCY25KaGVVUnBjM1JoYm1ObFRXVjBjbWxqYzAxbGRHaHZaSE5iUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVUyOXJZV3hkTEZ4dUlDQjlMRnh1SUNCYlJHbHpkR0Z1WTJWTlpYUnlhV056VTNWaWFtVmpkSE11VFdGamNtOU5iMnhsWTNWc1pWMDZJSHNnTHk4Z2IzQjBhVzl1WVd3Z1lYSm5jeUJ1WldWa1pXUWdabTl5SUcxaFkzSnZiVzlzWldOMWJHVWdablZ1WTNScGIyNXpJSGRvYVdOb0lHbHVhWFJwWVd4cGVtVWdkR2hsYlZ4dUlDQWdJRnROYlVScGMzUmhibU5sUm5WdVkzUnBiMjV6VG1GdFpYTXVTRUZOVFVsT1IxMDZJRzF0UkdsemRHRnVZMlZHZFc1amRHbHZibk5iVFcxRWFYTjBZVzVqWlVaMWJtTjBhVzl1YzA1aGJXVnpMa2hCVFUxSlRrZGRMRnh1SUNBZ0lGdE5iVVJwYzNSaGJtTmxSblZ1WTNScGIyNXpUbUZ0WlhNdVRFVldSVTVUU0ZSRlNVNWRPaUJ0YlVScGMzUmhibU5sUm5WdVkzUnBiMjV6VzAxdFJHbHpkR0Z1WTJWR2RXNWpkR2x2Ym5OT1lXMWxjeTVNUlZaRlRsTklWRVZKVGwwc1hHNGdJQ0FnVzAxdFJHbHpkR0Z1WTJWR2RXNWpkR2x2Ym5OT1lXMWxjeTVPUlVWRVRFVk5RVTVPWDFkVlRsTkRTRjA2SUcxdFJHbHpkR0Z1WTJWR2RXNWpkR2x2Ym5OYlRXMUVhWE4wWVc1alpVWjFibU4wYVc5dWMwNWhiV1Z6TGs1RlJVUk1SVTFCVGs1ZlYxVk9VME5JWFN4Y2JpQWdJQ0JiVFcxRWFYTjBZVzVqWlVaMWJtTjBhVzl1YzA1aGJXVnpMazFQVGs5TlJWSmZRMGhGVFVsRFFVeGZSRWxUVkVGT1EwVmRPaUJ0YlVScGMzUmhibU5sUm5WdVkzUnBiMjV6VzAxdFJHbHpkR0Z1WTJWR2RXNWpkR2x2Ym5OT1lXMWxjeTVOVDA1UFRVVlNYME5JUlUxSlEwRk1YMFJKVTFSQlRrTkZYU3hjYmlBZ2ZTeGNiaUFnVzBScGMzUmhibU5sVFdWMGNtbGpjMU4xWW1wbFkzUnpMazUxYldKbGNsMDZJSHRjYmlBZ0lDQmJUblZ0WW1WeVRXVjBjbWxqYzA1aGJXVnpMazUxYldWeWFXTkVhWE4wWVc1alpWMDZJRzUxYldKbGNrUnBjM1JoYm1ObFRXVjBjbWxqYzAxbGRHaHZaSE5iVG5WdFltVnlUV1YwY21samMwNWhiV1Z6TGs1MWJXVnlhV05FYVhOMFlXNWpaVjBzWEc0Z0lIMHNYRzRnSUZ0RWFYTjBZVzVqWlUxbGRISnBZM05UZFdKcVpXTjBjeTVKYm5SQmNuSmhlVjA2SUh0Y2JpQWdJQ0JiU1c1MFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVZHRnVhVzF2ZEc5SmJuUkJjbkpoZVYwNklHbHVkRUZ5Y21GNVJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRKYm5SQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1VVlXNXBiVzkwYjBsdWRFRnljbUY1WFN4Y2JpQWdmVnh1ZlR0Y2JseHVaWGh3YjNKMElHTnZibk4wSUUxbGRISnBZMVJ2UkdGMFlWUjVjR1U2SUZOMGNtbHVaMFJwWTNScGIyNWhjbmtnUFNCUFltcGxZM1F1YTJWNWN5aEJkbUZwYkdGaWJHVk5aWFJ5YVdOektWeHVJQ0F1Y21Wa2RXTmxLQ2h5WlhRNklGTjBjbWx1WjBScFkzUnBiMjVoY25rc0lHdGxlU2tnUFQ0Z2UxeHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ2RtRnNJRzltSUU5aWFtVmpkQzVyWlhsektFRjJZV2xzWVdKc1pVMWxkSEpwWTNOYmEyVjVJR0Z6SUVGMllXbHNZV0pzWlVSaGRHRlVlWEJsYzEwcEtWeHVJQ0FnSUNBZ2NtVjBXM1poYkNCaGN5QkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTmRJRDBnYTJWNU8xeHVYRzRnSUNBZ2NtVjBkWEp1SUhKbGREdGNiaUFnZlN3Z2UzMHBPMXh1WEc1bGVIQnZjblFnZEhsd1pTQkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTWdQU0JyWlhsdlppQjBlWEJsYjJZZ1FYWmhhV3hoWW14bFRXVjBjbWxqY3p0Y2JtVjRjRzl5ZENCMGVYQmxJRlpsWTNSdmNrMWxkSEpwWTNNZ1BTQnJaWGx2WmlCMGVYQmxiMllnUVhaaGFXeGhZbXhsVFdWMGNtbGpjMXRFYVhOMFlXNWpaVTFsZEhKcFkzTlRkV0pxWldOMGN5NVdaV04wYjNKZE8xeHVaWGh3YjNKMElIUjVjR1VnVTNSeWFXNW5UV1YwY21samN5QTlJR3RsZVc5bUlIUjVjR1Z2WmlCQmRtRnBiR0ZpYkdWTlpYUnlhV056VzBScGMzUmhibU5sVFdWMGNtbGpjMU4xWW1wbFkzUnpMbE4wY21sdVoxMDdYRzVsZUhCdmNuUWdkSGx3WlNCQ2FYUkJjbkpoZVUxbGRISnBZM01nUFNCclpYbHZaaUIwZVhCbGIyWWdRWFpoYVd4aFlteGxUV1YwY21samMxdEVhWE4wWVc1alpVMWxkSEpwWTNOVGRXSnFaV04wY3k1Q2FYUkJjbkpoZVYwN1hHNWxlSEJ2Y25RZ2RIbHdaU0JMYm05M2JrMWxkSEpwWTNNZ1BTQlRkSEpwYm1kTlpYUnlhV056SUh3Z1FtbDBRWEp5WVhsTlpYUnlhV056SUh3Z1ZtVmpkRzl5VFdWMGNtbGpjeUI4WEc0Z0lFMXRSR2x6ZEdGdVkyVkdkVzVqZEdsdmJuTk9ZVzFsY3lCOElFNTFiV0psY2sxbGRISnBZM05PWVcxbGN5QjhJRWx1ZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TzF4dVhHNWxlSEJ2Y25RZ2RIbHdaU0JXWVd4cFpGUjVjR1Z6SUQxY2JpQWdleUJrWVhSaE9pQnpkSEpwYm1kYlhTd2diV1YwY21sak9pQlRkSEpwYm1kTlpYUnlhV056SUh3Z1RXMUVhWE4wWVc1alpVWjFibU4wYVc5dWMwNWhiV1Z6SUgwZ2ZGeHVJQ0I3SUdSaGRHRTZJRlpsWTNSdmNsdGRMQ0J0WlhSeWFXTTZJRlpsWTNSdmNrMWxkSEpwWTNNZ2ZTQjhYRzRnSUhzZ1pHRjBZVG9nUW1sMFFYSnlZWGxiWFN3Z2JXVjBjbWxqT2lCQ2FYUkJjbkpoZVUxbGRISnBZM01nZlNCOFhHNGdJSHNnWkdGMFlUb2diblZ0WW1WeVcxMHNJRzFsZEhKcFl6b2dUblZ0WW1WeVRXVjBjbWxqYzA1aGJXVnpJSDA3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGMxTjBjbWx1WjAxbGRISnBZeWh1WVcxbE9pQkxibTkzYmsxbGRISnBZM01wSUh0Y2JpQWdjbVYwZFhKdUlFMWxkSEpwWTFSdlJHRjBZVlI1Y0dWYmJtRnRaVjBnUFQwZ0oxTjBjbWx1WnljN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJwYzBKcGRFRnljbUY1VFdWMGNtbGpLRzVoYldVNklFdHViM2R1VFdWMGNtbGpjeWtnZTF4dUlDQnlaWFIxY200Z1RXVjBjbWxqVkc5RVlYUmhWSGx3WlZ0dVlXMWxYU0E5UFNBblFtbDBRWEp5WVhrbk8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYVhOV1pXTjBiM0pOWlhSeWFXTW9ibUZ0WlRvZ1MyNXZkMjVOWlhSeWFXTnpLU0I3WEc0Z0lISmxkSFZ5YmlCTlpYUnlhV05VYjBSaGRHRlVlWEJsVzI1aGJXVmRJRDA5SUNkV1pXTjBiM0luTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdhWE5OWVdOeWIwMXZiR1ZqZFd4bFRXVjBjbWxqS0c1aGJXVTZJRXR1YjNkdVRXVjBjbWxqY3lrZ2UxeHVJQ0J5WlhSMWNtNGdUV1YwY21salZHOUVZWFJoVkhsd1pWdHVZVzFsWFNBOVBTQkVhWE4wWVc1alpVMWxkSEpwWTNOVGRXSnFaV04wY3k1TllXTnliMDF2YkdWamRXeGxMblJ2VTNSeWFXNW5LQ2s3WEc1OVhHNWNiaThxS2lCTllXNW9ZWFIwWVc0Z1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCMGQyOGdjMlZ4ZFdWdVkyVnpJQ2h0WVhSamFDQXRJREFzSUcxcGMyMWhkR05vSUMwZ01Ta2dibTl5YldGc2FYcGxaQ0JtYjNJZ2JHVnVaM1JvTGlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHMWhibWhoZEhSaGJrUnBjM1JoYm1ObEtITXhPaUJ6ZEhKcGJtY3NJSE15T2lCemRISnBibWNwT2lCdWRXMWlaWElnZTF4dUlDQnBaaUFvY3pFdWJHVnVaM1JvSUNFOVBTQnpNaTVzWlc1bmRHZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z01UdGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQnNaWFFnWkdsemREb2diblZ0WW1WeUlEMGdNRHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTVRzZ2FTQThJSE14TG14bGJtZDBhRHNnYVNzcktWeHVJQ0FnSUNBZ1pHbHpkQ0FyUFNCek1WdHBYU0E5UFNCek1sdHBYU0EvSURBZ09pQXhPMXh1SUNBZ0lISmxkSFZ5YmlCa2FYTjBJQzhnY3pFdWJHVnVaM1JvTzF4dUlDQjlYRzU5WEc1Y2JpOHFLaUJWYm1sbWFXVmtJR05zWVhOeklHbHRjR3hsYldWdWRHbHVaeUJrYVdabVpYSmxiblFnYzNSeWFXNW5JRzFsWVhOMWNtVnpMaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRTFsWVhOMWNtVWdlMXh1SUNCd2NtOTBaV04wWldRZ2JXVjBhRzlrT2lCTGJtOTNiazFsZEhKcFkzTTdYRzRnSUhCeWIzUmxZM1JsWkNCa1lYUmhWSGx3WlRvZ1FYWmhhV3hoWW14bFJHRjBZVlI1Y0dWek8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGNtVmhkR1Z6SUdGdUlHbHVjM1JoYm1ObElHOW1JRTFsWVhOMWNtVWdkMmwwYUNBdVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J0WlhSb2IyUWdUV1YwYUc5a0lIUnZJR05oYkdOMWJHRjBaU0JrYVhOMFlXNWpaU0JpWlhSM1pXVnVJSE4wY21sdVozTXVYRzRnSUNBcUlFQnRaVzFpWlhKdlppQk5aV0Z6ZFhKbGNseHVJQ0FnS2k5Y2JpQWdZMjl1YzNSeWRXTjBiM0lvYldWMGFHOWtPaUJMYm05M2JrMWxkSEpwWTNNcElIdGNiaUFnSUNCMGFHbHpMbTFsZEdodlpDQTlJRzFsZEdodlpEdGNiaUFnSUNCMGFHbHpMbVJoZEdGVWVYQmxJRDBnVFdWMGNtbGpWRzlFWVhSaFZIbHdaVnR0WlhSb2IyUmRJR0Z6SUVGMllXbHNZV0pzWlVSaGRHRlVlWEJsY3p0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklHTjFjM1J2YlNCemRISnBibWNnWkdsemRHRnVZMlVnWm5WdVkzUnBiMjRnYzNCbFkybG1hV1ZrTGx4dUlDQWdLaUJBY0dGeVlXMGdlMjl3ZEhOOUlHOXdkSE1nVDNCMGFXOXVjeUJtYjNJZ2RHaGxJRzFsWVhOMWNtVXVJSFZ6WldRZ1ptOXlJRzFoWTNKdmJXOXNaV04xYkdVZ1pHbHpkR0Z1WTJWelhHNGdJQ0FxSUVCeVpYUjFjbTRnZTBScGMzUmhibU5sVFdWMGNtbGpmU0JEWVd4c1ltRmpheUJ2WmlCMGFHVWdiV1ZoYzNWeVpTQmphRzl6Wlc0dVhHNGdJQ0FxSUVCdFpXMWlaWEp2WmlCTlpXRnpkWEpsY2x4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdkbGRFMWxZWE4xY21Vb2IzQjBjejg2SUdGdWVTazZJRVJwYzNSaGJtTmxUV1YwY21saklIdGNiaUFnSUNCamIyNXpkQ0JrYVdOME9pQjdJRnRyWlhrNklITjBjbWx1WjEwNlhHNGdJQ0FnSUNCN1cydGxlVEk2SUhOMGNtbHVaMTA2SUVScGMzUmhibU5sVFdWMGNtbGpJSHdnS0NodmNIUnpPaUJoYm5rcElEMCtJRVJwYzNSaGJtTmxUV1YwY21saktYMWNiaUFnSUNCOUlEMGdRWFpoYVd4aFlteGxUV1YwY21samN6dGNiaUFnSUNCcFppQW9JV1JwWTNRdWFHRnpUM2R1VUhKdmNHVnlkSGtvZEdocGN5NWtZWFJoVkhsd1pTa2dmSHdnSVdScFkzUmJkR2hwY3k1a1lYUmhWSGx3WlYwdWFHRnpUM2R1VUhKdmNHVnlkSGtvZEdocGN5NXRaWFJvYjJRcEtWeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0dCVmJtdHViM2R1SUcxbFlYTjFjbVVnSkh0MGFHbHpMbTFsZEdodlpIMGdabTl5SUdSaGRHRWdkSGx3WlNBa2UzUm9hWE11WkdGMFlWUjVjR1Y5WUNrN1hHNGdJQ0FnY21WMGRYSnVJR2x6VFdGamNtOU5iMnhsWTNWc1pVMWxkSEpwWXloMGFHbHpMbTFsZEdodlpDa2dQMXh1SUNBZ0lDQWdLR1JwWTNSYmRHaHBjeTVrWVhSaFZIbHdaVjFiZEdocGN5NXRaWFJvYjJSZElHRnpJQ2dvYjNCMGN6b2dZVzU1S1NBOVBpQkVhWE4wWVc1alpVMWxkSEpwWXlrcEtHOXdkSE1wSURwY2JpQWdJQ0FnSUdScFkzUmJkR2hwY3k1a1lYUmhWSGx3WlYxYmRHaHBjeTV0WlhSb2IyUmRJR0Z6SUVScGMzUmhibU5sVFdWMGNtbGpPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGRIVnlibk1nWTNWemRHOXRJSE4wY21sdVp5QmthWE4wWVc1alpTQmllU0IwYUdVZ1oybDJaVzRnWkdGMFlTQjBlWEJsTGx4dUlDQWdLaUJBY0dGeVlXMGdlMEYyWVdsc1lXSnNaVVJoZEdGVWVYQmxjMzBnWkdGMFlWUjVjR1VnVFdWMGNtbGpKM01nWkdGMFlTQjBlWEJsWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVoxdGRmU0JOWlhSeWFXTWdibUZ0WlhNZ2QyaHBZMmdnWlhod1pXTjBjeUIwYUdVZ1oybDJaVzRnWkdGMFlTQjBlWEJsWEc0Z0lDQXFJRUJ0WlcxaVpYSnZaaUJOWldGemRYSmxjbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qm5aWFJOWlhSeWFXTkNlVVJoZEdGVWVYQmxLR1JoZEdGVWVYQmxPaUJCZG1GcGJHRmliR1ZFWVhSaFZIbHdaWE1wT2lCemRISnBibWRiWFNCN1hHNGdJQ0FnY21WMGRYSnVJRTlpYW1WamRDNXJaWGx6S0VGMllXbHNZV0pzWlUxbGRISnBZM05iWkdGMFlWUjVjR1ZkS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJTWlhSMWNtNXpJRzFsZEhKcFl5QnVZVzFsY3lCaGRtRnBiR0ZpYkdVdVhHNGdJQ0FxSUVCdFpXMWlaWEp2WmlCTlpXRnpkWEpsY2x4dUlDQWdLaTljYmlBZ2MzUmhkR2xqSUdkbGRDQmhkbUZwYkdGaWJHVk5aV0Z6ZFhKbGN5Z3BPaUJ6ZEhKcGJtZGJYU0I3WEc0Z0lDQWdjbVYwZFhKdUlFOWlhbVZqZEM1clpYbHpLRUYyWVdsc1lXSnNaVTFsZEhKcFkzTXBPMXh1SUNCOVhHNTlYRzRpWFgwPSIsIi8qKlxuICogQGxpY2Vuc2VcbiAqXG4gKiBDb3B5cmlnaHQgMjAxOSBHb29nbGUgTExDLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICovXG4vKipcbiAqIFNpbXBsZSByYW5kb20gaW50ZWdlciBmdW5jdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gdGF1UmFuZEludChuLCByYW5kb20pIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihyYW5kb20oKSAqIG4pO1xufVxuLyoqXG4gKiBTaW1wbGUgcmFuZG9tIGZsb2F0IGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YXVSYW5kKHJhbmRvbSkge1xuICAgIHJldHVybiByYW5kb20oKTtcbn1cbi8qKlxuICogQ29tcHV0ZSB0aGUgKHN0YW5kYXJkIGwyKSBub3JtIG9mIGEgdmVjdG9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybSh2ZWMpIHtcbiAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICBmb3IgKGxldCBpdGVtIG9mIHZlYykge1xuICAgICAgICByZXN1bHQgKz0gaXRlbSAqKiAyO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5zcXJ0KHJlc3VsdCk7XG59XG4vKipcbiAqIENyZWF0ZXMgYW4gZW1wdHkgYXJyYXkgKGZpbGxlZCB3aXRoIHVuZGVmaW5lZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtcHR5KG4pIHtcbiAgICBjb25zdCBvdXRwdXQgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICBvdXRwdXQucHVzaCh1bmRlZmluZWQpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGZpbGxlZCB3aXRoIGluZGV4IHZhbHVlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmFuZ2Uobikge1xuICAgIHJldHVybiBlbXB0eShuKS5tYXAoKF8sIGkpID0+IGkpO1xufVxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGZpbGxlZCB3aXRoIGEgc3BlY2lmaWMgdmFsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbGxlZChuLCB2KSB7XG4gICAgcmV0dXJuIGVtcHR5KG4pLm1hcCgoKSA9PiB2KTtcbn1cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBmaWxsZWQgd2l0aCB6ZXJvc1xuICovXG5leHBvcnQgZnVuY3Rpb24gemVyb3Mobikge1xuICAgIHJldHVybiBmaWxsZWQobiwgMCk7XG59XG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgZmlsbGVkIHdpdGggb25lc1xuICovXG5leHBvcnQgZnVuY3Rpb24gb25lcyhuKSB7XG4gICAgcmV0dXJuIGZpbGxlZChuLCAxKTtcbn1cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBmcm9tIGEgdG8gYiwgb2YgbGVuZ3RoIGxlbiwgaW5jbHVzaXZlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaW5lYXIoYSwgYiwgbGVuKSB7XG4gICAgcmV0dXJuIGVtcHR5KGxlbikubWFwKChfLCBpKSA9PiB7XG4gICAgICAgIHJldHVybiBhICsgaSAqICgoYiAtIGEpIC8gKGxlbiAtIDEpKTtcbiAgICB9KTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgc3VtIG9mIGFuIGFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdW0oaW5wdXQpIHtcbiAgICByZXR1cm4gaW5wdXQucmVkdWNlKChzdW0sIHZhbCkgPT4gc3VtICsgdmFsKTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgbWVhbiBvZiBhbiBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVhbihpbnB1dCkge1xuICAgIHJldHVybiBzdW0oaW5wdXQpIC8gaW5wdXQubGVuZ3RoO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBtYXhpbXVtIHZhbHVlIG9mIGFuIGFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXgoaW5wdXQpIHtcbiAgICBsZXQgbWF4ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG1heCA9IGlucHV0W2ldID4gbWF4ID8gaW5wdXRbaV0gOiBtYXg7XG4gICAgfVxuICAgIHJldHVybiBtYXg7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUgb2YgYSAyZCBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWF4MmQoaW5wdXQpIHtcbiAgICBsZXQgbWF4ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgaW5wdXRbaV0ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgIG1heCA9IGlucHV0W2ldW2pdID4gbWF4ID8gaW5wdXRbaV1bal0gOiBtYXg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1heDtcbn1cbi8qKlxuICogR2VuZXJhdGUgblNhbXBsZXMgbWFueSBpbnRlZ2VycyBmcm9tIDAgdG8gcG9vbFNpemUgc3VjaCB0aGF0IG5vXG4gKiBpbnRlZ2VyIGlzIHNlbGVjdGVkIHR3aWNlLiBUaGUgZHVwbGljYXRpb24gY29uc3RyYWludCBpcyBhY2hpZXZlZCB2aWFcbiAqIHJlamVjdGlvbiBzYW1wbGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlamVjdGlvblNhbXBsZShuU2FtcGxlcywgcG9vbFNpemUsIHJhbmRvbSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IHplcm9zKG5TYW1wbGVzKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5TYW1wbGVzOyBpKyspIHtcbiAgICAgICAgbGV0IHJlamVjdFNhbXBsZSA9IHRydWU7XG4gICAgICAgIHdoaWxlIChyZWplY3RTYW1wbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGogPSB0YXVSYW5kSW50KHBvb2xTaXplLCByYW5kb20pO1xuICAgICAgICAgICAgbGV0IGJyb2tlbiA9IGZhbHNlO1xuICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBpOyBrKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaiA9PT0gcmVzdWx0W2tdKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyb2tlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghYnJva2VuKSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0U2FtcGxlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRbaV0gPSBqO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4vKipcbiAqIFJlc2hhcGVzIGEgMWQgYXJyYXkgaW50byBhIDJEIG9mIGdpdmVuIGRpbWVuc2lvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNoYXBlMmQoeCwgYSwgYikge1xuICAgIGNvbnN0IHJvd3MgPSBbXTtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGxldCBpbmRleCA9IDA7XG4gICAgaWYgKHgubGVuZ3RoICE9PSBhICogYikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FycmF5IGRpbWVuc2lvbnMgbXVzdCBtYXRjaCBpbnB1dCBsZW5ndGguJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYTsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNvbCA9IFtdO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGI7IGorKykge1xuICAgICAgICAgICAgY29sLnB1c2goeFtpbmRleF0pO1xuICAgICAgICAgICAgaW5kZXggKz0gMTtcbiAgICAgICAgfVxuICAgICAgICByb3dzLnB1c2goY29sKTtcbiAgICAgICAgY291bnQgKz0gMTtcbiAgICB9XG4gICAgcmV0dXJuIHJvd3M7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkWFJwYkhNdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUoxZEdsc2N5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVRzN096czdPenM3T3pzN096czdPenM3UjBGcFFrYzdRVUZKU0RzN1IwRkZSenRCUVVOSUxFMUJRVTBzVlVGQlZTeFZRVUZWTEVOQlFVTXNRMEZCVXl4RlFVRkZMRTFCUVdkQ08wbEJRM0JFTEU5QlFVOHNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTnNReXhEUVVGRE8wRkJSVVE3TzBkQlJVYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1QwRkJUeXhEUVVGRExFMUJRV2RDTzBsQlEzUkRMRTlCUVU4c1RVRkJUU3hGUVVGRkxFTkJRVU03UVVGRGJFSXNRMEZCUXp0QlFVTkVPenRIUVVWSE8wRkJRMGdzVFVGQlRTeFZRVUZWTEVsQlFVa3NRMEZCUXl4SFFVRmhPMGxCUTJoRExFbEJRVWtzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVTm1MRXRCUVVzc1NVRkJTU3hKUVVGSkxFbEJRVWtzUjBGQlJ5eEZRVUZGTzFGQlEzQkNMRTFCUVUwc1NVRkJTU3hKUVVGSkxFbEJRVWtzUTBGQlF5eERRVUZETzB0QlEzSkNPMGxCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUXpOQ0xFTkJRVU03UVVGRlJEczdSMEZGUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hMUVVGTExFTkJRVU1zUTBGQlV6dEpRVU0zUWl4TlFVRk5MRTFCUVUwc1IwRkJaMElzUlVGQlJTeERRVUZETzBsQlF5OUNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3VVVGRE1VSXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dExRVU40UWp0SlFVTkVMRTlCUVU4c1RVRkJUU3hEUVVGRE8wRkJRMmhDTEVOQlFVTTdRVUZGUkRzN1IwRkZSenRCUVVOSUxFMUJRVTBzVlVGQlZTeExRVUZMTEVOQlFVTXNRMEZCVXp0SlFVTTNRaXhQUVVGUExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOdVF5eERRVUZETzBGQlJVUTdPMGRCUlVjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzVFVGQlRTeERRVUZETEVOQlFWTXNSVUZCUlN4RFFVRlRPMGxCUTNwRExFOUJRVThzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTXZRaXhEUVVGRE8wRkJSVVE3TzBkQlJVYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1MwRkJTeXhEUVVGRExFTkJRVk03U1VGRE4wSXNUMEZCVHl4TlFVRk5MRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzUkNMRU5CUVVNN1FVRkZSRHM3UjBGRlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4SlFVRkpMRU5CUVVNc1EwRkJVenRKUVVNMVFpeFBRVUZQTEUxQlFVMHNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGRFSXNRMEZCUXp0QlFVVkVPenRIUVVWSE8wRkJRMGdzVFVGQlRTeFZRVUZWTEUxQlFVMHNRMEZCUXl4RFFVRlRMRVZCUVVVc1EwRkJVeXhGUVVGRkxFZEJRVmM3U1VGRGRFUXNUMEZCVHl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8xRkJRemRDTEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZGtNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRFRDeERRVUZETzBGQlJVUTdPMGRCUlVjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzUjBGQlJ5eERRVUZETEV0QlFXVTdTVUZEYWtNc1QwRkJUeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUXk5RExFTkJRVU03UVVGRlJEczdSMEZGUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hKUVVGSkxFTkJRVU1zUzBGQlpUdEpRVU5zUXl4UFFVRlBMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRPMEZCUTI1RExFTkJRVU03UVVGRlJEczdSMEZGUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hIUVVGSExFTkJRVU1zUzBGQlpUdEpRVU5xUXl4SlFVRkpMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRFdpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRSUVVOeVF5eEhRVUZITEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTTdTMEZEZGtNN1NVRkRSQ3hQUVVGUExFZEJRVWNzUTBGQlF6dEJRVU5pTEVOQlFVTTdRVUZGUkRzN1IwRkZSenRCUVVOSUxFMUJRVTBzVlVGQlZTeExRVUZMTEVOQlFVTXNTMEZCYVVJN1NVRkRja01zU1VGQlNTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTFvc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdVVUZEY2tNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRlRU1zUjBGQlJ5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRE8xTkJRemRETzB0QlEwWTdTVUZEUkN4UFFVRlBMRWRCUVVjc1EwRkJRenRCUVVOaUxFTkJRVU03UVVGRlJEczdPenRIUVVsSE8wRkJRMGdzVFVGQlRTeFZRVUZWTEdWQlFXVXNRMEZETjBJc1VVRkJaMElzUlVGRGFFSXNVVUZCWjBJc1JVRkRhRUlzVFVGQlowSTdTVUZGYUVJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUzBGQlN5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMGxCUXk5Q0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhSUVVGUkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdVVUZEYWtNc1NVRkJTU3haUVVGWkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEzaENMRTlCUVU4c1dVRkJXU3hGUVVGRk8xbEJRMjVDTEUxQlFVMHNRMEZCUXl4SFFVRkhMRlZCUVZVc1EwRkJReXhSUVVGUkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdXVUZEZGtNc1NVRkJTU3hOUVVGTkxFZEJRVWNzUzBGQlN5eERRVUZETzFsQlEyNUNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3WjBKQlF6RkNMRWxCUVVrc1EwRkJReXhMUVVGTExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlR0dlFrRkRia0lzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXp0dlFrRkRaQ3hOUVVGTk8ybENRVU5RTzJGQlEwWTdXVUZEUkN4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRk8yZENRVU5ZTEZsQlFWa3NSMEZCUnl4TFFVRkxMRU5CUVVNN1lVRkRkRUk3V1VGRFJDeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xTkJRMlk3UzBGRFJqdEpRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU03UVVGRlJEczdSMEZGUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hUUVVGVExFTkJRVWtzUTBGQlRTeEZRVUZGTEVOQlFWTXNSVUZCUlN4RFFVRlRPMGxCUTNaRUxFMUJRVTBzU1VGQlNTeEhRVUZWTEVWQlFVVXNRMEZCUXp0SlFVTjJRaXhKUVVGSkxFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEWkN4SlFVRkpMRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRlpDeEpRVUZKTEVOQlFVTXNRMEZCUXl4TlFVRk5MRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJUdFJRVU4wUWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExESkRRVUV5UXl4RFFVRkRMRU5CUVVNN1MwRkRPVVE3U1VGRlJDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMUZCUXpGQ0xFMUJRVTBzUjBGQlJ5eEhRVUZSTEVWQlFVVXNRMEZCUXp0UlFVTndRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFsQlF6RkNMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRia0lzUzBGQlN5eEpRVUZKTEVOQlFVTXNRMEZCUXp0VFFVTmFPMUZCUTBRc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTm1MRXRCUVVzc1NVRkJTU3hEUVVGRExFTkJRVU03UzBGRFdqdEpRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRPMEZCUTJRc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUUd4cFkyVnVjMlZjYmlBcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE9TQkhiMjluYkdVZ1RFeERMaUJCYkd3Z1VtbG5hSFJ6SUZKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUV4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQmNHRmphR1VnVEdsalpXNXpaU3dnVm1WeWMybHZiaUF5TGpBZ0tIUm9aU0JjSWt4cFkyVnVjMlZjSWlrN1hHNGdLaUI1YjNVZ2JXRjVJRzV2ZENCMWMyVWdkR2hwY3lCbWFXeGxJR1Y0WTJWd2RDQnBiaUJqYjIxd2JHbGhibU5sSUhkcGRHZ2dkR2hsSUV4cFkyVnVjMlV1WEc0Z0tpQlpiM1VnYldGNUlHOWlkR0ZwYmlCaElHTnZjSGtnYjJZZ2RHaGxJRXhwWTJWdWMyVWdZWFJjYmlBcVhHNGdLaUFnSUNBZ2FIUjBjRG92TDNkM2R5NWhjR0ZqYUdVdWIzSm5MMnhwWTJWdWMyVnpMMHhKUTBWT1UwVXRNaTR3WEc0Z0tseHVJQ29nVlc1c1pYTnpJSEpsY1hWcGNtVmtJR0o1SUdGd2NHeHBZMkZpYkdVZ2JHRjNJRzl5SUdGbmNtVmxaQ0IwYnlCcGJpQjNjbWwwYVc1bkxDQnpiMlowZDJGeVpWeHVJQ29nWkdsemRISnBZblYwWldRZ2RXNWtaWElnZEdobElFeHBZMlZ1YzJVZ2FYTWdaR2x6ZEhKcFluVjBaV1FnYjI0Z1lXNGdYQ0pCVXlCSlUxd2lJRUpCVTBsVExGeHVJQ29nVjBsVVNFOVZWQ0JYUVZKU1FVNVVTVVZUSUU5U0lFTlBUa1JKVkVsUFRsTWdUMFlnUVU1WklFdEpUa1FzSUdWcGRHaGxjaUJsZUhCeVpYTnpJRzl5SUdsdGNHeHBaV1F1WEc0Z0tpQlRaV1VnZEdobElFeHBZMlZ1YzJVZ1ptOXlJSFJvWlNCemNHVmphV1pwWXlCc1lXNW5kV0ZuWlNCbmIzWmxjbTVwYm1jZ2NHVnliV2x6YzJsdmJuTWdZVzVrWEc0Z0tpQnNhVzFwZEdGMGFXOXVjeUIxYm1SbGNpQjBhR1VnVEdsalpXNXpaUzVjYmlBcUlEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFZ4dUlDb3ZYRzVjYm1sdGNHOXlkQ0I3SUZKaGJtUnZiVVp1SUgwZ1puSnZiU0FuTGk5MWJXRndKenRjYmx4dUx5b3FYRzRnS2lCVGFXMXdiR1VnY21GdVpHOXRJR2x1ZEdWblpYSWdablZ1WTNScGIyNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhSaGRWSmhibVJKYm5Rb2Jqb2diblZ0WW1WeUxDQnlZVzVrYjIwNklGSmhibVJ2YlVadUtTQjdYRzRnSUhKbGRIVnliaUJOWVhSb0xtWnNiMjl5S0hKaGJtUnZiU2dwSUNvZ2JpazdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1UybHRjR3hsSUhKaGJtUnZiU0JtYkc5aGRDQm1kVzVqZEdsdmJseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnZEdGMVVtRnVaQ2h5WVc1a2IyMDZJRkpoYm1SdmJVWnVLU0I3WEc0Z0lISmxkSFZ5YmlCeVlXNWtiMjBvS1R0Y2JuMWNiaThxS2x4dUlDb2dRMjl0Y0hWMFpTQjBhR1VnS0hOMFlXNWtZWEprSUd3eUtTQnViM0p0SUc5bUlHRWdkbVZqZEc5eUxseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYm05eWJTaDJaV002SUc1MWJXSmxjbHRkS1NCN1hHNGdJR3hsZENCeVpYTjFiSFFnUFNBd08xeHVJQ0JtYjNJZ0tHeGxkQ0JwZEdWdElHOW1JSFpsWXlrZ2UxeHVJQ0FnSUhKbGMzVnNkQ0FyUFNCcGRHVnRJQ29xSURJN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUUxaGRHZ3VjM0Z5ZENoeVpYTjFiSFFwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRU55WldGMFpYTWdZVzRnWlcxd2RIa2dZWEp5WVhrZ0tHWnBiR3hsWkNCM2FYUm9JSFZ1WkdWbWFXNWxaQ2xjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHVnRjSFI1S0c0NklHNTFiV0psY2lrNklIVnVaR1ZtYVc1bFpGdGRJSHRjYmlBZ1kyOXVjM1FnYjNWMGNIVjBPaUIxYm1SbFptbHVaV1JiWFNBOUlGdGRPMXh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHNDdJR2tyS3lrZ2UxeHVJQ0FnSUc5MWRIQjFkQzV3ZFhOb0tIVnVaR1ZtYVc1bFpDazdYRzRnSUgxY2JpQWdjbVYwZFhKdUlHOTFkSEIxZER0Y2JuMWNibHh1THlvcVhHNGdLaUJEY21WaGRHVnpJR0Z1SUdGeWNtRjVJR1pwYkd4bFpDQjNhWFJvSUdsdVpHVjRJSFpoYkhWbGMxeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY21GdVoyVW9iam9nYm5WdFltVnlLVG9nYm5WdFltVnlXMTBnZTF4dUlDQnlaWFIxY200Z1pXMXdkSGtvYmlrdWJXRndLQ2hmTENCcEtTQTlQaUJwS1R0Y2JuMWNibHh1THlvcVhHNGdLaUJEY21WaGRHVnpJR0Z1SUdGeWNtRjVJR1pwYkd4bFpDQjNhWFJvSUdFZ2MzQmxZMmxtYVdNZ2RtRnNkV1ZjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHWnBiR3hsWkNodU9pQnVkVzFpWlhJc0lIWTZJRzUxYldKbGNpazZJRzUxYldKbGNsdGRJSHRjYmlBZ2NtVjBkWEp1SUdWdGNIUjVLRzRwTG0xaGNDZ29LU0E5UGlCMktUdGNibjFjYmx4dUx5b3FYRzRnS2lCRGNtVmhkR1Z6SUdGdUlHRnljbUY1SUdacGJHeGxaQ0IzYVhSb0lIcGxjbTl6WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjZaWEp2Y3lodU9pQnVkVzFpWlhJcE9pQnVkVzFpWlhKYlhTQjdYRzRnSUhKbGRIVnliaUJtYVd4c1pXUW9iaXdnTUNrN1hHNTlYRzVjYmk4cUtseHVJQ29nUTNKbFlYUmxjeUJoYmlCaGNuSmhlU0JtYVd4c1pXUWdkMmwwYUNCdmJtVnpYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCdmJtVnpLRzQ2SUc1MWJXSmxjaWs2SUc1MWJXSmxjbHRkSUh0Y2JpQWdjbVYwZFhKdUlHWnBiR3hsWkNodUxDQXhLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkRjbVZoZEdWeklHRnVJR0Z5Y21GNUlHWnliMjBnWVNCMGJ5QmlMQ0J2WmlCc1pXNW5kR2dnYkdWdUxDQnBibU5zZFhOcGRtVmNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUd4cGJtVmhjaWhoT2lCdWRXMWlaWElzSUdJNklHNTFiV0psY2l3Z2JHVnVPaUJ1ZFcxaVpYSXBPaUJ1ZFcxaVpYSmJYU0I3WEc0Z0lISmxkSFZ5YmlCbGJYQjBlU2hzWlc0cExtMWhjQ2dvWHl3Z2FTa2dQVDRnZTF4dUlDQWdJSEpsZEhWeWJpQmhJQ3NnYVNBcUlDZ29ZaUF0SUdFcElDOGdLR3hsYmlBdElERXBLVHRjYmlBZ2ZTazdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1VtVjBkWEp1Y3lCMGFHVWdjM1Z0SUc5bUlHRnVJR0Z5Y21GNVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ6ZFcwb2FXNXdkWFE2SUc1MWJXSmxjbHRkS1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlHbHVjSFYwTG5KbFpIVmpaU2dvYzNWdExDQjJZV3dwSUQwK0lITjFiU0FySUhaaGJDazdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1VtVjBkWEp1Y3lCMGFHVWdiV1ZoYmlCdlppQmhiaUJoY25KaGVWeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYldWaGJpaHBibkIxZERvZ2JuVnRZbVZ5VzEwcE9pQnVkVzFpWlhJZ2UxeHVJQ0J5WlhSMWNtNGdjM1Z0S0dsdWNIVjBLU0F2SUdsdWNIVjBMbXhsYm1kMGFEdGNibjFjYmx4dUx5b3FYRzRnS2lCU1pYUjFjbTV6SUhSb1pTQnRZWGhwYlhWdElIWmhiSFZsSUc5bUlHRnVJR0Z5Y21GNVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ0WVhnb2FXNXdkWFE2SUc1MWJXSmxjbHRkS1RvZ2JuVnRZbVZ5SUh0Y2JpQWdiR1YwSUcxaGVDQTlJREE3WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dhVzV3ZFhRdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQnRZWGdnUFNCcGJuQjFkRnRwWFNBK0lHMWhlQ0EvSUdsdWNIVjBXMmxkSURvZ2JXRjRPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnRZWGc3WEc1OVhHNWNiaThxS2x4dUlDb2dVbVYwZFhKdWN5QjBhR1VnYldGNGFXMTFiU0IyWVd4MVpTQnZaaUJoSURKa0lHRnljbUY1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnRZWGd5WkNocGJuQjFkRG9nYm5WdFltVnlXMTFiWFNrNklHNTFiV0psY2lCN1hHNGdJR3hsZENCdFlYZ2dQU0F3TzF4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR2x1Y0hWMExteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdabTl5SUNoc1pYUWdhaUE5SURBN0lHb2dQQ0JwYm5CMWRGdHBYUzVzWlc1bmRHZzdJR29yS3lrZ2UxeHVJQ0FnSUNBZ2JXRjRJRDBnYVc1d2RYUmJhVjFiYWwwZ1BpQnRZWGdnUHlCcGJuQjFkRnRwWFZ0cVhTQTZJRzFoZUR0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnY21WMGRYSnVJRzFoZUR0Y2JuMWNibHh1THlvcVhHNGdLaUJIWlc1bGNtRjBaU0J1VTJGdGNHeGxjeUJ0WVc1NUlHbHVkR1ZuWlhKeklHWnliMjBnTUNCMGJ5QndiMjlzVTJsNlpTQnpkV05vSUhSb1lYUWdibTljYmlBcUlHbHVkR1ZuWlhJZ2FYTWdjMlZzWldOMFpXUWdkSGRwWTJVdUlGUm9aU0JrZFhCc2FXTmhkR2x2YmlCamIyNXpkSEpoYVc1MElHbHpJR0ZqYUdsbGRtVmtJSFpwWVZ4dUlDb2djbVZxWldOMGFXOXVJSE5oYlhCc2FXNW5MbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NtVnFaV04wYVc5dVUyRnRjR3hsS0Z4dUlDQnVVMkZ0Y0d4bGN6b2diblZ0WW1WeUxGeHVJQ0J3YjI5c1UybDZaVG9nYm5WdFltVnlMRnh1SUNCeVlXNWtiMjA2SUZKaGJtUnZiVVp1WEc0cE9pQnVkVzFpWlhKYlhTQjdYRzRnSUdOdmJuTjBJSEpsYzNWc2RDQTlJSHBsY205ektHNVRZVzF3YkdWektUdGNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCdVUyRnRjR3hsY3pzZ2FTc3JLU0I3WEc0Z0lDQWdiR1YwSUhKbGFtVmpkRk5oYlhCc1pTQTlJSFJ5ZFdVN1hHNGdJQ0FnZDJocGJHVWdLSEpsYW1WamRGTmhiWEJzWlNrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYWlBOUlIUmhkVkpoYm1SSmJuUW9jRzl2YkZOcGVtVXNJSEpoYm1SdmJTazdYRzRnSUNBZ0lDQnNaWFFnWW5KdmEyVnVJRDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQnJJRDBnTURzZ2F5QThJR2s3SUdzckt5a2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2FpQTlQVDBnY21WemRXeDBXMnRkS1NCN1hHNGdJQ0FnSUNBZ0lDQWdZbkp2YTJWdUlEMGdkSEoxWlR0Y2JpQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2FXWWdLQ0ZpY205clpXNHBJSHRjYmlBZ0lDQWdJQ0FnY21WcVpXTjBVMkZ0Y0d4bElEMGdabUZzYzJVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYTjFiSFJiYVYwZ1BTQnFPMXh1SUNBZ0lIMWNiaUFnZlZ4dUlDQnlaWFIxY200Z2NtVnpkV3gwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRkpsYzJoaGNHVnpJR0VnTVdRZ1lYSnlZWGtnYVc1MGJ5QmhJREpFSUc5bUlHZHBkbVZ1SUdScGJXVnVjMmx2Ym5NdVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ5WlhOb1lYQmxNbVE4VkQ0b2VEb2dWRnRkTENCaE9pQnVkVzFpWlhJc0lHSTZJRzUxYldKbGNpazZJRlJiWFZ0ZElIdGNiaUFnWTI5dWMzUWdjbTkzY3pvZ1ZGdGRXMTBnUFNCYlhUdGNiaUFnYkdWMElHTnZkVzUwSUQwZ01EdGNiaUFnYkdWMElHbHVaR1Y0SUQwZ01EdGNibHh1SUNCcFppQW9lQzVzWlc1bmRHZ2dJVDA5SUdFZ0tpQmlLU0I3WEc0Z0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZEJjbkpoZVNCa2FXMWxibk5wYjI1eklHMTFjM1FnYldGMFkyZ2dhVzV3ZFhRZ2JHVnVaM1JvTGljcE8xeHVJQ0I5WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JoT3lCcEt5c3BJSHRjYmlBZ0lDQmpiMjV6ZENCamIydzZJRlJiWFNBOUlGdGRPMXh1SUNBZ0lHWnZjaUFvYkdWMElHb2dQU0F3T3lCcUlEd2dZanNnYWlzcktTQjdYRzRnSUNBZ0lDQmpiMnd1Y0hWemFDaDRXMmx1WkdWNFhTazdYRzRnSUNBZ0lDQnBibVJsZUNBclBTQXhPMXh1SUNBZ0lIMWNiaUFnSUNCeWIzZHpMbkIxYzJnb1kyOXNLVHRjYmlBZ0lDQmpiM1Z1ZENBclBTQXhPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnliM2R6TzF4dWZWeHVJbDE5IiwiLyoqXG4gKiBAbGljZW5zZVxuICpcbiAqIENvcHlyaWdodCAyMDE5IEdvb2dsZSBMTEMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKi9cbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuLyoqXG4gKiAgQ29uc3RydWN0b3IgZm9yIHRoZSBoZWFwIG9iamVjdHMuIFRoZSBoZWFwcyBhcmUgdXNlZFxuICogZm9yIGFwcHJveGltYXRlIG5lYXJlc3QgbmVpZ2hib3Igc2VhcmNoLCBtYWludGFpbmluZyBhIGxpc3Qgb2YgcG90ZW50aWFsXG4gKiBuZWlnaGJvcnMgc29ydGVkIGJ5IHRoZWlyIGRpc3RhbmNlLiBXZSBhbHNvIGZsYWcgaWYgcG90ZW50aWFsIG5laWdoYm9yc1xuICogYXJlIG5ld2x5IGFkZGVkIHRvIHRoZSBsaXN0IG9yIG5vdC4gSW50ZXJuYWxseSB0aGlzIGlzIHN0b3JlZCBhc1xuICogYSBzaW5nbGUgYXJyYXk7IHRoZSBmaXJzdCBheGlzIGRldGVybWluZXMgd2hldGhlciB3ZSBhcmUgbG9va2luZyBhdCB0aGVcbiAqIGFycmF5IG9mIGNhbmRpZGF0ZSBpbmRpY2VzLCB0aGUgYXJyYXkgb2YgZGlzdGFuY2VzLCBvciB0aGUgZmxhZyBhcnJheSBmb3JcbiAqIHdoZXRoZXIgZWxlbWVudHMgYXJlIG5ldyBvciBub3QuIEVhY2ggb2YgdGhlc2UgYXJyYXlzIGFyZSBvZiBzaGFwZVxuICogKGBgblBvaW50c2BgLCBgYHNpemVgYClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VIZWFwKG5Qb2ludHMsIHNpemUpIHtcbiAgICBjb25zdCBtYWtlQXJyYXlzID0gKGZpbGxWYWx1ZSkgPT4ge1xuICAgICAgICByZXR1cm4gdXRpbHMuZW1wdHkoblBvaW50cykubWFwKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB1dGlscy5maWxsZWQoc2l6ZSwgZmlsbFZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBjb25zdCBoZWFwID0gW107XG4gICAgaGVhcC5wdXNoKG1ha2VBcnJheXMoLTEpKTtcbiAgICBoZWFwLnB1c2gobWFrZUFycmF5cyhJbmZpbml0eSkpO1xuICAgIGhlYXAucHVzaChtYWtlQXJyYXlzKDApKTtcbiAgICByZXR1cm4gaGVhcDtcbn1cbi8qKlxuICogR2VuZXJhdGUgbl9zYW1wbGVzIG1hbnkgaW50ZWdlcnMgZnJvbSAwIHRvIHBvb2xfc2l6ZSBzdWNoIHRoYXQgbm9cbiAqIGludGVnZXIgaXMgc2VsZWN0ZWQgdHdpY2UuIFRoZSBkdXBsaWNhdGlvbiBjb25zdHJhaW50IGlzIGFjaGlldmVkIHZpYVxuICogcmVqZWN0aW9uIHNhbXBsaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVqZWN0aW9uU2FtcGxlKG5TYW1wbGVzLCBwb29sU2l6ZSwgcmFuZG9tKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gdXRpbHMuemVyb3MoblNhbXBsZXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgblNhbXBsZXM7IGkrKykge1xuICAgICAgICBsZXQgcmVqZWN0U2FtcGxlID0gdHJ1ZTtcbiAgICAgICAgbGV0IGogPSAwO1xuICAgICAgICB3aGlsZSAocmVqZWN0U2FtcGxlKSB7XG4gICAgICAgICAgICBqID0gdXRpbHMudGF1UmFuZEludChwb29sU2l6ZSwgcmFuZG9tKTtcbiAgICAgICAgICAgIGxldCBicm9rZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgaTsgaysrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGogPT09IHJlc3VsdFtrXSkge1xuICAgICAgICAgICAgICAgICAgICBicm9rZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWJyb2tlbilcbiAgICAgICAgICAgICAgICByZWplY3RTYW1wbGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbaV0gPSBqO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLyoqXG4gKiBQdXNoIGEgbmV3IGVsZW1lbnQgb250byB0aGUgaGVhcC4gVGhlIGhlYXAgc3RvcmVzIHBvdGVudGlhbCBuZWlnaGJvcnNcbiAqIGZvciBlYWNoIGRhdGEgcG9pbnQuIFRoZSBgYHJvd2BgIHBhcmFtZXRlciBkZXRlcm1pbmVzIHdoaWNoIGRhdGEgcG9pbnQgd2VcbiAqIGFyZSBhZGRyZXNzaW5nLCB0aGUgYGB3ZWlnaHRgYCBkZXRlcm1pbmVzIHRoZSBkaXN0YW5jZSAoZm9yIGhlYXAgc29ydGluZyksXG4gKiB0aGUgYGBpbmRleGBgIGlzIHRoZSBlbGVtZW50IHRvIGFkZCwgYW5kIHRoZSBmbGFnIGRldGVybWluZXMgd2hldGhlciB0aGlzXG4gKiBpcyB0byBiZSBjb25zaWRlcmVkIGEgbmV3IGFkZGl0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGVhcFB1c2goaGVhcCwgcm93LCB3ZWlnaHQsIGluZGV4LCBmbGFnKSB7XG4gICAgcm93ID0gTWF0aC5mbG9vcihyb3cpO1xuICAgIGNvbnN0IGluZGljZXMgPSBoZWFwWzBdW3Jvd107XG4gICAgY29uc3Qgd2VpZ2h0cyA9IGhlYXBbMV1bcm93XTtcbiAgICBjb25zdCBpc05ldyA9IGhlYXBbMl1bcm93XTtcbiAgICBpZiAod2VpZ2h0ID49IHdlaWdodHNbMF0pIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIC8vIEJyZWFrIGlmIHdlIGFscmVhZHkgaGF2ZSB0aGlzIGVsZW1lbnQuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpbmRleCA9PT0gaW5kaWNlc1tpXSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuY2hlY2tlZEhlYXBQdXNoKGhlYXAsIHJvdywgd2VpZ2h0LCBpbmRleCwgZmxhZyk7XG59XG4vKipcbiAqIFB1c2ggYSBuZXcgZWxlbWVudCBvbnRvIHRoZSBoZWFwLiBUaGUgaGVhcCBzdG9yZXMgcG90ZW50aWFsIG5laWdoYm9yc1xuICogZm9yIGVhY2ggZGF0YSBwb2ludC4gVGhlIGBgcm93YGAgcGFyYW1ldGVyIGRldGVybWluZXMgd2hpY2ggZGF0YSBwb2ludCB3ZVxuICogYXJlIGFkZHJlc3NpbmcsIHRoZSBgYHdlaWdodGBgIGRldGVybWluZXMgdGhlIGRpc3RhbmNlIChmb3IgaGVhcCBzb3J0aW5nKSxcbiAqIHRoZSBgYGluZGV4YGAgaXMgdGhlIGVsZW1lbnQgdG8gYWRkLCBhbmQgdGhlIGZsYWcgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoaXNcbiAqIGlzIHRvIGJlIGNvbnNpZGVyZWQgYSBuZXcgYWRkaXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmNoZWNrZWRIZWFwUHVzaChoZWFwLCByb3csIHdlaWdodCwgaW5kZXgsIGZsYWcpIHtcbiAgICBjb25zdCBpbmRpY2VzID0gaGVhcFswXVtyb3ddO1xuICAgIGNvbnN0IHdlaWdodHMgPSBoZWFwWzFdW3Jvd107XG4gICAgY29uc3QgaXNOZXcgPSBoZWFwWzJdW3Jvd107XG4gICAgaWYgKHdlaWdodCA+PSB3ZWlnaHRzWzBdKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICAvLyBJbnNlcnQgdmFsIGF0IHBvc2l0aW9uIHplcm9cbiAgICB3ZWlnaHRzWzBdID0gd2VpZ2h0O1xuICAgIGluZGljZXNbMF0gPSBpbmRleDtcbiAgICBpc05ld1swXSA9IGZsYWc7XG4gICAgLy8gRGVzY2VuZCB0aGUgaGVhcCwgc3dhcHBpbmcgdmFsdWVzIHVudGlsIHRoZSBtYXggaGVhcCBjcml0ZXJpb24gaXMgbWV0XG4gICAgbGV0IGkgPSAwO1xuICAgIGxldCBpU3dhcCA9IDA7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgY29uc3QgaWMxID0gMiAqIGkgKyAxO1xuICAgICAgICBjb25zdCBpYzIgPSBpYzEgKyAxO1xuICAgICAgICBjb25zdCBoZWFwU2hhcGUyID0gaGVhcFswXVswXS5sZW5ndGg7XG4gICAgICAgIGlmIChpYzEgPj0gaGVhcFNoYXBlMikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaWMyID49IGhlYXBTaGFwZTIpIHtcbiAgICAgICAgICAgIGlmICh3ZWlnaHRzW2ljMV0gPiB3ZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBpU3dhcCA9IGljMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHdlaWdodHNbaWMxXSA+PSB3ZWlnaHRzW2ljMl0pIHtcbiAgICAgICAgICAgIGlmICh3ZWlnaHQgPCB3ZWlnaHRzW2ljMV0pIHtcbiAgICAgICAgICAgICAgICBpU3dhcCA9IGljMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHdlaWdodCA8IHdlaWdodHNbaWMyXSkge1xuICAgICAgICAgICAgICAgIGlTd2FwID0gaWMyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgd2VpZ2h0c1tpXSA9IHdlaWdodHNbaVN3YXBdO1xuICAgICAgICBpbmRpY2VzW2ldID0gaW5kaWNlc1tpU3dhcF07XG4gICAgICAgIGlzTmV3W2ldID0gaXNOZXdbaVN3YXBdO1xuICAgICAgICBpID0gaVN3YXA7XG4gICAgfVxuICAgIHdlaWdodHNbaV0gPSB3ZWlnaHQ7XG4gICAgaW5kaWNlc1tpXSA9IGluZGV4O1xuICAgIGlzTmV3W2ldID0gZmxhZztcbiAgICByZXR1cm4gMTtcbn1cbi8qKlxuICogQnVpbGQgYSBoZWFwIG9mIGNhbmRpZGF0ZSBuZWlnaGJvcnMgZm9yIG5lYXJlc3QgbmVpZ2hib3IgZGVzY2VudC4gRm9yXG4gKiBlYWNoIHZlcnRleCB0aGUgY2FuZGlkYXRlIG5laWdoYm9ycyBhcmUgYW55IGN1cnJlbnQgbmVpZ2hib3JzLCBhbmQgYW55XG4gKiB2ZXJ0aWNlcyB0aGF0IGhhdmUgdGhlIHZlcnRleCBhcyBvbmUgb2YgdGhlaXIgbmVhcmVzdCBuZWlnaGJvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZENhbmRpZGF0ZXMoY3VycmVudEdyYXBoLCBuVmVydGljZXMsIG5OZWlnaGJvcnMsIG1heENhbmRpZGF0ZXMsIHJhbmRvbSkge1xuICAgIGNvbnN0IGNhbmRpZGF0ZU5laWdoYm9ycyA9IG1ha2VIZWFwKG5WZXJ0aWNlcywgbWF4Q2FuZGlkYXRlcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuVmVydGljZXM7IGkrKykge1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG5OZWlnaGJvcnM7IGorKykge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRHcmFwaFswXVtpXVtqXSA8IDApIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IGN1cnJlbnRHcmFwaFswXVtpXVtqXTtcbiAgICAgICAgICAgIGNvbnN0IGlzbiA9IGN1cnJlbnRHcmFwaFsyXVtpXVtqXTtcbiAgICAgICAgICAgIGNvbnN0IGQgPSB1dGlscy50YXVSYW5kKHJhbmRvbSk7XG4gICAgICAgICAgICBoZWFwUHVzaChjYW5kaWRhdGVOZWlnaGJvcnMsIGksIGQsIGlkeCwgaXNuKTtcbiAgICAgICAgICAgIGhlYXBQdXNoKGNhbmRpZGF0ZU5laWdoYm9ycywgaWR4LCBkLCBpLCBpc24pO1xuICAgICAgICAgICAgY3VycmVudEdyYXBoWzJdW2ldW2pdID0gMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2FuZGlkYXRlTmVpZ2hib3JzO1xufVxuLyoqXG4gKiBHaXZlbiBhbiBhcnJheSBvZiBoZWFwcyAob2YgaW5kaWNlcyBhbmQgd2VpZ2h0cyksIHVucGFjayB0aGUgaGVhcFxuICogb3V0IHRvIGdpdmUgYW5kIGFycmF5IG9mIHNvcnRlZCBsaXN0cyBvZiBpbmRpY2VzIGFuZCB3ZWlnaHRzIGJ5IGluY3JlYXNpbmdcbiAqIHdlaWdodC4gVGhpcyBpcyBlZmZlY3RpdmVseSBqdXN0IHRoZSBzZWNvbmQgaGFsZiBvZiBoZWFwIHNvcnQgKHRoZSBmaXJzdFxuICogaGFsZiBub3QgYmVpbmcgcmVxdWlyZWQgc2luY2Ugd2UgYWxyZWFkeSBoYXZlIHRoZSBkYXRhIGluIGEgaGVhcCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWhlYXBTb3J0KGhlYXApIHtcbiAgICBjb25zdCBpbmRpY2VzID0gaGVhcFswXTtcbiAgICBjb25zdCB3ZWlnaHRzID0gaGVhcFsxXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgaW5kSGVhcCA9IGluZGljZXNbaV07XG4gICAgICAgIGNvbnN0IGRpc3RIZWFwID0gd2VpZ2h0c1tpXTtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBpbmRIZWFwLmxlbmd0aCAtIDE7IGorKykge1xuICAgICAgICAgICAgY29uc3QgaW5kSGVhcEluZGV4ID0gaW5kSGVhcC5sZW5ndGggLSBqIC0gMTtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RIZWFwSW5kZXggPSBkaXN0SGVhcC5sZW5ndGggLSBqIC0gMTtcbiAgICAgICAgICAgIGNvbnN0IHRlbXAxID0gaW5kSGVhcFswXTtcbiAgICAgICAgICAgIGluZEhlYXBbMF0gPSBpbmRIZWFwW2luZEhlYXBJbmRleF07XG4gICAgICAgICAgICBpbmRIZWFwW2luZEhlYXBJbmRleF0gPSB0ZW1wMTtcbiAgICAgICAgICAgIGNvbnN0IHRlbXAyID0gZGlzdEhlYXBbMF07XG4gICAgICAgICAgICBkaXN0SGVhcFswXSA9IGRpc3RIZWFwW2Rpc3RIZWFwSW5kZXhdO1xuICAgICAgICAgICAgZGlzdEhlYXBbZGlzdEhlYXBJbmRleF0gPSB0ZW1wMjtcbiAgICAgICAgICAgIHNpZnREb3duKGRpc3RIZWFwLCBpbmRIZWFwLCBkaXN0SGVhcEluZGV4LCAwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBpbmRpY2VzLCB3ZWlnaHRzIH07XG59XG4vKipcbiAqIFJlc3RvcmUgdGhlIGhlYXAgcHJvcGVydHkgZm9yIGEgaGVhcCB3aXRoIGFuIG91dCBvZiBwbGFjZSBlbGVtZW50XG4gKiBhdCBwb3NpdGlvbiBgYGVsdGBgLiBUaGlzIHdvcmtzIHdpdGggYSBoZWFwIHBhaXIgd2hlcmUgaGVhcDEgY2Fycmllc1xuICogdGhlIHdlaWdodHMgYW5kIGhlYXAyIGhvbGRzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLlxuICovXG5mdW5jdGlvbiBzaWZ0RG93bihoZWFwMSwgaGVhcDIsIGNlaWxpbmcsIGVsdCkge1xuICAgIHdoaWxlIChlbHQgKiAyICsgMSA8IGNlaWxpbmcpIHtcbiAgICAgICAgY29uc3QgbGVmdENoaWxkID0gZWx0ICogMiArIDE7XG4gICAgICAgIGNvbnN0IHJpZ2h0Q2hpbGQgPSBsZWZ0Q2hpbGQgKyAxO1xuICAgICAgICBsZXQgc3dhcCA9IGVsdDtcbiAgICAgICAgaWYgKGhlYXAxW3N3YXBdIDwgaGVhcDFbbGVmdENoaWxkXSkge1xuICAgICAgICAgICAgc3dhcCA9IGxlZnRDaGlsZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmlnaHRDaGlsZCA8IGNlaWxpbmcgJiYgaGVhcDFbc3dhcF0gPCBoZWFwMVtyaWdodENoaWxkXSkge1xuICAgICAgICAgICAgc3dhcCA9IHJpZ2h0Q2hpbGQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN3YXAgPT09IGVsdCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB0ZW1wMSA9IGhlYXAxW2VsdF07XG4gICAgICAgICAgICBoZWFwMVtlbHRdID0gaGVhcDFbc3dhcF07XG4gICAgICAgICAgICBoZWFwMVtzd2FwXSA9IHRlbXAxO1xuICAgICAgICAgICAgY29uc3QgdGVtcDIgPSBoZWFwMltlbHRdO1xuICAgICAgICAgICAgaGVhcDJbZWx0XSA9IGhlYXAyW3N3YXBdO1xuICAgICAgICAgICAgaGVhcDJbc3dhcF0gPSB0ZW1wMjtcbiAgICAgICAgICAgIGVsdCA9IHN3YXA7XG4gICAgICAgIH1cbiAgICB9XG59XG4vKipcbiAqIFNlYXJjaCB0aGUgaGVhcCBmb3IgdGhlIHNtYWxsZXN0IGVsZW1lbnQgdGhhdCBpcyBzdGlsbCBmbGFnZ2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc21hbGxlc3RGbGFnZ2VkKGhlYXAsIHJvdykge1xuICAgIGNvbnN0IGluZCA9IGhlYXBbMF1bcm93XTtcbiAgICBjb25zdCBkaXN0ID0gaGVhcFsxXVtyb3ddO1xuICAgIGNvbnN0IGZsYWcgPSBoZWFwWzJdW3Jvd107XG4gICAgbGV0IG1pbkRpc3QgPSBJbmZpbml0eTtcbiAgICBsZXQgcmVzdWx0SW5kZXggPSAtMTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA+IGluZC5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZmxhZ1tpXSA9PT0gMSAmJiBkaXN0W2ldIDwgbWluRGlzdCkge1xuICAgICAgICAgICAgbWluRGlzdCA9IGRpc3RbaV07XG4gICAgICAgICAgICByZXN1bHRJbmRleCA9IGk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJlc3VsdEluZGV4ID49IDApIHtcbiAgICAgICAgZmxhZ1tyZXN1bHRJbmRleF0gPSAwO1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihpbmRbcmVzdWx0SW5kZXhdKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lhR1ZoY0M1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbWhsWVhBdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUU3T3pzN096czdPenM3T3pzN096czdPMGRCYVVKSE8wRkJNa05JTEU5QlFVOHNTMEZCU3l4TFFVRkxMRTFCUVUwc1UwRkJVeXhEUVVGRE8wRkJTV3BET3pzN096czdPenM3UjBGVFJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4UlFVRlJMRU5CUVVNc1QwRkJaU3hGUVVGRkxFbEJRVms3U1VGRGNFUXNUVUZCVFN4VlFVRlZMRWRCUVVjc1EwRkJReXhUUVVGcFFpeEZRVUZGTEVWQlFVVTdVVUZEZGtNc1QwRkJUeXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFVkJRVVU3V1VGRGJrTXNUMEZCVHl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUlVGQlJTeFRRVUZUTEVOQlFVTXNRMEZCUXp0UlFVTjJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5NTEVOQlFVTXNRMEZCUXp0SlFVVkdMRTFCUVUwc1NVRkJTU3hIUVVGVExFVkJRVVVzUTBGQlF6dEpRVU4wUWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRNVUlzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5vUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNwQ0xFOUJRVThzU1VGQlNTeERRVUZETzBGQlEyUXNRMEZCUXp0QlFVVkVPenM3TzBkQlNVYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1pVRkJaU3hEUVVNM1FpeFJRVUZuUWl4RlFVTm9RaXhSUVVGblFpeEZRVU5vUWl4TlFVRm5RanRKUVVWb1FpeE5RVUZOTEUxQlFVMHNSMEZCUnl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBsQlEzSkRMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4UlFVRlJMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3VVVGRGFrTXNTVUZCU1N4WlFVRlpMRWRCUVVjc1NVRkJTU3hEUVVGRE8xRkJRM2hDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOV0xFOUJRVThzV1VGQldTeEZRVUZGTzFsQlEyNUNMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zVlVGQlZTeERRVUZETEZGQlFWRXNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenRaUVVOMlF5eEpRVUZKTEUxQlFVMHNSMEZCUnl4TFFVRkxMRU5CUVVNN1dVRkRia0lzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0blFrRkRNVUlzU1VGQlNTeERRVUZETEV0QlFVc3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRk8yOUNRVU51UWl4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRE8yOUNRVU5rTEUxQlFVMDdhVUpCUTFBN1lVRkRSanRaUVVORUxFbEJRVWtzUTBGQlF5eE5RVUZOTzJkQ1FVRkZMRmxCUVZrc1IwRkJSeXhMUVVGTExFTkJRVU03VTBGRGJrTTdVVUZEUkN4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzB0QlEyWTdTVUZEUkN4UFFVRlBMRTFCUVUwc1EwRkJRenRCUVVOb1FpeERRVUZETzBGQlJVUTdPenM3T3p0SFFVMUhPMEZCUTBnc1RVRkJUU3hWUVVGVkxGRkJRVkVzUTBGRGRFSXNTVUZCVlN4RlFVTldMRWRCUVZjc1JVRkRXQ3hOUVVGakxFVkJRMlFzUzBGQllTeEZRVU5pTEVsQlFWazdTVUZGV2l4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVTjBRaXhOUVVGTkxFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRE4wSXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUXpkQ0xFMUJRVTBzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dEpRVVV6UWl4SlFVRkpMRTFCUVUwc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdVVUZEZUVJc1QwRkJUeXhEUVVGRExFTkJRVU03UzBGRFZqdEpRVVZFTEhsRFFVRjVRenRKUVVONlF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVDBGQlR5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRSUVVOMlF5eEpRVUZKTEV0QlFVc3NTMEZCU3l4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVU3V1VGRGVFSXNUMEZCVHl4RFFVRkRMRU5CUVVNN1UwRkRWanRMUVVOR08wbEJSVVFzVDBGQlR5eHBRa0ZCYVVJc1EwRkJReXhKUVVGSkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEUxQlFVMHNSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRE0wUXNRMEZCUXp0QlFVVkVPenM3T3pzN1IwRk5SenRCUVVOSUxFMUJRVTBzVlVGQlZTeHBRa0ZCYVVJc1EwRkRMMElzU1VGQlZTeEZRVU5XTEVkQlFWY3NSVUZEV0N4TlFVRmpMRVZCUTJRc1MwRkJZU3hGUVVOaUxFbEJRVms3U1VGRldpeE5RVUZOTEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZETjBJc1RVRkJUU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRemRDTEUxQlFVMHNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVVXpRaXhKUVVGSkxFMUJRVTBzU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVN1VVRkRlRUlzVDBGQlR5eERRVUZETEVOQlFVTTdTMEZEVmp0SlFVVkVMRGhDUVVFNFFqdEpRVU01UWl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETzBsQlEzQkNMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTTdTVUZEYmtJc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXp0SlFVVm9RaXgzUlVGQmQwVTdTVUZEZUVVc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlExWXNTVUZCU1N4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRMlFzVDBGQlR5eEpRVUZKTEVWQlFVVTdVVUZEV0N4TlFVRk5MRWRCUVVjc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTjBRaXhOUVVGTkxFZEJRVWNzUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUlhCQ0xFMUJRVTBzVlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZEY2tNc1NVRkJTU3hIUVVGSExFbEJRVWtzVlVGQlZTeEZRVUZGTzFsQlEzSkNMRTFCUVUwN1UwRkRVRHRoUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEZWQlFWVXNSVUZCUlR0WlFVTTFRaXhKUVVGSkxFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4TlFVRk5MRVZCUVVVN1owSkJRM3BDTEV0QlFVc3NSMEZCUnl4SFFVRkhMRU5CUVVNN1lVRkRZanRwUWtGQlRUdG5Ra0ZEVEN4TlFVRk5PMkZCUTFBN1UwRkRSanRoUVVGTkxFbEJRVWtzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJUdFpRVU4yUXl4SlFVRkpMRTFCUVUwc1IwRkJSeXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVTdaMEpCUTNwQ0xFdEJRVXNzUjBGQlJ5eEhRVUZITEVOQlFVTTdZVUZEWWp0cFFrRkJUVHRuUWtGRFRDeE5RVUZOTzJGQlExQTdVMEZEUmp0aFFVRk5PMWxCUTB3c1NVRkJTU3hOUVVGTkxFZEJRVWNzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZPMmRDUVVONlFpeExRVUZMTEVkQlFVY3NSMEZCUnl4RFFVRkRPMkZCUTJJN2FVSkJRVTA3WjBKQlEwd3NUVUZCVFR0aFFVTlFPMU5CUTBZN1VVRkZSQ3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJRelZDTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhQUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdVVUZETlVJc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVWNFFpeERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRPMHRCUTFnN1NVRkZSQ3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRPMGxCUTNCQ0xFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN1NVRkRia0lzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJRenRKUVVOb1FpeFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTllMRU5CUVVNN1FVRkZSRHM3T3p0SFFVbEhPMEZCUTBnc1RVRkJUU3hWUVVGVkxHVkJRV1VzUTBGRE4wSXNXVUZCYTBJc1JVRkRiRUlzVTBGQmFVSXNSVUZEYWtJc1ZVRkJhMElzUlVGRGJFSXNZVUZCY1VJc1JVRkRja0lzVFVGQlowSTdTVUZGYUVJc1RVRkJUU3hyUWtGQmEwSXNSMEZCUnl4UlFVRlJMRU5CUVVNc1UwRkJVeXhGUVVGRkxHRkJRV0VzUTBGQlF5eERRVUZETzBsQlF6bEVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4VFFVRlRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3VVVGRGJFTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEZWQlFWVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOdVF5eEpRVUZKTEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVN1owSkJRemRDTEZOQlFWTTdZVUZEVmp0WlFVTkVMRTFCUVUwc1IwRkJSeXhIUVVGSExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5zUXl4TlFVRk5MRWRCUVVjc1IwRkJSeXhaUVVGWkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGJFTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0WlFVTm9ReXhSUVVGUkxFTkJRVU1zYTBKQlFXdENMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkROME1zVVVGQlVTeERRVUZETEd0Q1FVRnJRaXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRemRETEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1UwRkRNMEk3UzBGRFJqdEpRVU5FTEU5QlFVOHNhMEpCUVd0Q0xFTkJRVU03UVVGRE5VSXNRMEZCUXp0QlFVVkVPenM3T3p0SFFVdEhPMEZCUTBnc1RVRkJUU3hWUVVGVkxGVkJRVlVzUTBGQlF5eEpRVUZWTzBsQlEyNURMRTFCUVUwc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjRRaXhOUVVGTkxFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZlRUlzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFOUJRVThzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1VVRkRka01zVFVGQlRTeFBRVUZQTEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRek5DTEUxQlFVMHNVVUZCVVN4SFFVRkhMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVVUxUWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZETTBNc1RVRkJUU3haUVVGWkxFZEJRVWNzVDBGQlR5eERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRelZETEUxQlFVMHNZVUZCWVN4SFFVRkhMRkZCUVZFc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVVTVReXhOUVVGTkxFdEJRVXNzUjBGQlJ5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRla0lzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRTlCUVU4c1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dFpRVU51UXl4UFFVRlBMRU5CUVVNc1dVRkJXU3hEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETzFsQlJUbENMRTFCUVUwc1MwRkJTeXhIUVVGSExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTXhRaXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NVVUZCVVN4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRE8xbEJRM1JETEZGQlFWRXNRMEZCUXl4aFFVRmhMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU03V1VGRmFFTXNVVUZCVVN4RFFVRkRMRkZCUVZFc1JVRkJSU3hQUVVGUExFVkJRVVVzWVVGQllTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUXk5RE8wdEJRMFk3U1VGRFJDeFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkZMRTlCUVU4c1JVRkJSU3hEUVVGRE8wRkJRemxDTEVOQlFVTTdRVUZGUkRzN096dEhRVWxITzBGQlEwZ3NVMEZCVXl4UlFVRlJMRU5CUTJZc1MwRkJaU3hGUVVObUxFdEJRV1VzUlVGRFppeFBRVUZsTEVWQlEyWXNSMEZCVnp0SlFVVllMRTlCUVU4c1IwRkJSeXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NUMEZCVHl4RlFVRkZPMUZCUXpWQ0xFMUJRVTBzVTBGQlV5eEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRemxDTEUxQlFVMHNWVUZCVlN4SFFVRkhMRk5CUVZNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGFrTXNTVUZCU1N4SlFVRkpMRWRCUVVjc1IwRkJSeXhEUVVGRE8xRkJSV1lzU1VGQlNTeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eEZRVUZGTzFsQlEyeERMRWxCUVVrc1IwRkJSeXhUUVVGVExFTkJRVU03VTBGRGJFSTdVVUZEUkN4SlFVRkpMRlZCUVZVc1IwRkJSeXhQUVVGUExFbEJRVWtzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhWUVVGVkxFTkJRVU1zUlVGQlJUdFpRVU16UkN4SlFVRkpMRWRCUVVjc1ZVRkJWU3hEUVVGRE8xTkJRMjVDTzFGQlJVUXNTVUZCU1N4SlFVRkpMRXRCUVVzc1IwRkJSeXhGUVVGRk8xbEJRMmhDTEUxQlFVMDdVMEZEVUR0aFFVRk5PMWxCUTB3c1RVRkJUU3hMUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTNwQ0xFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGRGVrSXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF6dFpRVVZ3UWl4TlFVRk5MRXRCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEZWtJc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVONlFpeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRE8xbEJRM0JDTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNN1UwRkRXanRMUVVOR08wRkJRMGdzUTBGQlF6dEJRVVZFT3p0SFFVVkhPMEZCUTBnc1RVRkJUU3hWUVVGVkxHVkJRV1VzUTBGQlF5eEpRVUZWTEVWQlFVVXNSMEZCVnp0SlFVTnlSQ3hOUVVGTkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRGVrSXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUXpGQ0xFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dEpRVVV4UWl4SlFVRkpMRTlCUVU4c1IwRkJSeXhSUVVGUkxFTkJRVU03U1VGRGRrSXNTVUZCU1N4WFFVRlhMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmNrSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3VVVGRGJrTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhQUVVGUExFVkJRVVU3V1VGRGRFTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5zUWl4WFFVRlhMRWRCUVVjc1EwRkJReXhEUVVGRE8xTkJRMnBDTzB0QlEwWTdTVUZGUkN4SlFVRkpMRmRCUVZjc1NVRkJTU3hEUVVGRExFVkJRVVU3VVVGRGNFSXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU4wUWl4UFFVRlBMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRja003VTBGQlRUdFJRVU5NTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRXRHRCUVVOSUxFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVCc2FXTmxibk5sWEc0Z0tseHVJQ29nUTI5d2VYSnBaMmgwSURJd01Ua2dSMjl2WjJ4bElFeE1ReTRnUVd4c0lGSnBaMmgwY3lCU1pYTmxjblpsWkM1Y2JpQXFYRzRnS2lCTWFXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FYQmhZMmhsSUV4cFkyVnVjMlVzSUZabGNuTnBiMjRnTWk0d0lDaDBhR1VnWENKTWFXTmxibk5sWENJcE8xeHVJQ29nZVc5MUlHMWhlU0J1YjNRZ2RYTmxJSFJvYVhNZ1ptbHNaU0JsZUdObGNIUWdhVzRnWTI5dGNHeHBZVzVqWlNCM2FYUm9JSFJvWlNCTWFXTmxibk5sTGx4dUlDb2dXVzkxSUcxaGVTQnZZblJoYVc0Z1lTQmpiM0I1SUc5bUlIUm9aU0JNYVdObGJuTmxJR0YwWEc0Z0tseHVJQ29nSUNBZ0lHaDBkSEE2THk5M2QzY3VZWEJoWTJobExtOXlaeTlzYVdObGJuTmxjeTlNU1VORlRsTkZMVEl1TUZ4dUlDcGNiaUFxSUZWdWJHVnpjeUJ5WlhGMWFYSmxaQ0JpZVNCaGNIQnNhV05oWW14bElHeGhkeUJ2Y2lCaFozSmxaV1FnZEc4Z2FXNGdkM0pwZEdsdVp5d2djMjltZEhkaGNtVmNiaUFxSUdScGMzUnlhV0oxZEdWa0lIVnVaR1Z5SUhSb1pTQk1hV05sYm5ObElHbHpJR1JwYzNSeWFXSjFkR1ZrSUc5dUlHRnVJRndpUVZNZ1NWTmNJaUJDUVZOSlV5eGNiaUFxSUZkSlZFaFBWVlFnVjBGU1VrRk9WRWxGVXlCUFVpQkRUMDVFU1ZSSlQwNVRJRTlHSUVGT1dTQkxTVTVFTENCbGFYUm9aWElnWlhod2NtVnpjeUJ2Y2lCcGJYQnNhV1ZrTGx4dUlDb2dVMlZsSUhSb1pTQk1hV05sYm5ObElHWnZjaUIwYUdVZ2MzQmxZMmxtYVdNZ2JHRnVaM1ZoWjJVZ1oyOTJaWEp1YVc1bklIQmxjbTFwYzNOcGIyNXpJR0Z1WkZ4dUlDb2diR2x0YVhSaGRHbHZibk1nZFc1a1pYSWdkR2hsSUV4cFkyVnVjMlV1WEc0Z0tpQTlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQxY2JpQXFMMXh1WEc0dktpcGNiaUFxSUZSb2FYTWdhWE1nWVNCS1lYWmhVMk55YVhCMElISmxhVzF3YkdWdFpXNTBZWFJwYjI0Z2IyWWdWVTFCVUNBb2IzSnBaMmx1WVd3Z2JHbGpaVzV6WlNCaVpXeHZkeWtzSUdaeWIyMWNiaUFxSUhSb1pTQndlWFJvYjI0Z2FXMXdiR1Z0Wlc1MFlYUnBiMjRnWm05MWJtUWdZWFFnYUhSMGNITTZMeTluYVhSb2RXSXVZMjl0TDJ4dFkybHVibVZ6TDNWdFlYQXVYRzRnS2x4dUlDb2dRR0YxZEdodmNpQmhibVI1WTI5bGJtVnVRR2R2YjJkc1pTNWpiMjBnS0VGdVpIa2dRMjlsYm1WdUtWeHVJQ292WEc1Y2JpOHFLbHh1SUNvZ1FHeHBZMlZ1YzJWY2JpQXFJRUpUUkNBekxVTnNZWFZ6WlNCTWFXTmxibk5sWEc0Z0tseHVJQ29nUTI5d2VYSnBaMmgwSUNoaktTQXlNREUzTENCTVpXeGhibVFnVFdOSmJtNWxjMXh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlNaV1JwYzNSeWFXSjFkR2x2YmlCaGJtUWdkWE5sSUdsdUlITnZkWEpqWlNCaGJtUWdZbWx1WVhKNUlHWnZjbTF6TENCM2FYUm9JRzl5SUhkcGRHaHZkWFJjYmlBcUlHMXZaR2xtYVdOaGRHbHZiaXdnWVhKbElIQmxjbTFwZEhSbFpDQndjbTkyYVdSbFpDQjBhR0YwSUhSb1pTQm1iMnhzYjNkcGJtY2dZMjl1WkdsMGFXOXVjeUJoY21VZ2JXVjBPbHh1SUNwY2JpQXFJQ29nVW1Wa2FYTjBjbWxpZFhScGIyNXpJRzltSUhOdmRYSmpaU0JqYjJSbElHMTFjM1FnY21WMFlXbHVJSFJvWlNCaFltOTJaU0JqYjNCNWNtbG5hSFFnYm05MGFXTmxMQ0IwYUdselhHNGdLaUFnSUd4cGMzUWdiMllnWTI5dVpHbDBhVzl1Y3lCaGJtUWdkR2hsSUdadmJHeHZkMmx1WnlCa2FYTmpiR0ZwYldWeUxseHVJQ3BjYmlBcUlDb2dVbVZrYVhOMGNtbGlkWFJwYjI1eklHbHVJR0pwYm1GeWVTQm1iM0p0SUcxMWMzUWdjbVZ3Y205a2RXTmxJSFJvWlNCaFltOTJaU0JqYjNCNWNtbG5hSFFnYm05MGFXTmxMRnh1SUNvZ0lDQjBhR2x6SUd4cGMzUWdiMllnWTI5dVpHbDBhVzl1Y3lCaGJtUWdkR2hsSUdadmJHeHZkMmx1WnlCa2FYTmpiR0ZwYldWeUlHbHVJSFJvWlNCa2IyTjFiV1Z1ZEdGMGFXOXVYRzRnS2lBZ0lHRnVaQzl2Y2lCdmRHaGxjaUJ0WVhSbGNtbGhiSE1nY0hKdmRtbGtaV1FnZDJsMGFDQjBhR1VnWkdsemRISnBZblYwYVc5dUxseHVJQ3BjYmlBcUlDb2dUbVZwZEdobGNpQjBhR1VnYm1GdFpTQnZaaUIwYUdVZ1kyOXdlWEpwWjJoMElHaHZiR1JsY2lCdWIzSWdkR2hsSUc1aGJXVnpJRzltSUdsMGMxeHVJQ29nSUNCamIyNTBjbWxpZFhSdmNuTWdiV0Y1SUdKbElIVnpaV1FnZEc4Z1pXNWtiM0p6WlNCdmNpQndjbTl0YjNSbElIQnliMlIxWTNSeklHUmxjbWwyWldRZ1puSnZiVnh1SUNvZ0lDQjBhR2x6SUhOdlpuUjNZWEpsSUhkcGRHaHZkWFFnYzNCbFkybG1hV01nY0hKcGIzSWdkM0pwZEhSbGJpQndaWEp0YVhOemFXOXVMbHh1SUNwY2JpQXFJRlJJU1ZNZ1UwOUdWRmRCVWtVZ1NWTWdVRkpQVmtsRVJVUWdRbGtnVkVoRklFTlBVRmxTU1VkSVZDQklUMHhFUlZKVElFRk9SQ0JEVDA1VVVrbENWVlJQVWxNZ1hDSkJVeUJKVTF3aVhHNGdLaUJCVGtRZ1FVNVpJRVZZVUZKRlUxTWdUMUlnU1UxUVRFbEZSQ0JYUVZKU1FVNVVTVVZUTENCSlRrTk1WVVJKVGtjc0lFSlZWQ0JPVDFRZ1RFbE5TVlJGUkNCVVR5d2dWRWhGWEc0Z0tpQkpUVkJNU1VWRUlGZEJVbEpCVGxSSlJWTWdUMFlnVFVWU1EwaEJUbFJCUWtsTVNWUlpJRUZPUkNCR1NWUk9SVk5USUVaUFVpQkJJRkJCVWxSSlExVk1RVklnVUZWU1VFOVRSU0JCVWtWY2JpQXFJRVJKVTBOTVFVbE5SVVF1SUVsT0lFNVBJRVZXUlU1VUlGTklRVXhNSUZSSVJTQkRUMUJaVWtsSFNGUWdTRTlNUkVWU0lFOVNJRU5QVGxSU1NVSlZWRTlTVXlCQ1JTQk1TVUZDVEVWY2JpQXFJRVpQVWlCQlRsa2dSRWxTUlVOVUxDQkpUa1JKVWtWRFZDd2dTVTVEU1VSRlRsUkJUQ3dnVTFCRlEwbEJUQ3dnUlZoRlRWQk1RVkpaTENCUFVpQkRUMDVUUlZGVlJVNVVTVUZNWEc0Z0tpQkVRVTFCUjBWVElDaEpUa05NVlVSSlRrY3NJRUpWVkNCT1QxUWdURWxOU1ZSRlJDQlVUeXdnVUZKUFExVlNSVTFGVGxRZ1QwWWdVMVZDVTFSSlZGVlVSU0JIVDA5RVV5QlBVbHh1SUNvZ1UwVlNWa2xEUlZNN0lFeFBVMU1nVDBZZ1ZWTkZMQ0JFUVZSQkxDQlBVaUJRVWs5R1NWUlRPeUJQVWlCQ1ZWTkpUa1ZUVXlCSlRsUkZVbEpWVUZSSlQwNHBJRWhQVjBWV1JWSmNiaUFxSUVOQlZWTkZSQ0JCVGtRZ1QwNGdRVTVaSUZSSVJVOVNXU0JQUmlCTVNVRkNTVXhKVkZrc0lGZElSVlJJUlZJZ1NVNGdRMDlPVkZKQlExUXNJRk5VVWtsRFZDQk1TVUZDU1V4SlZGa3NYRzRnS2lCUFVpQlVUMUpVSUNoSlRrTk1WVVJKVGtjZ1RrVkhURWxIUlU1RFJTQlBVaUJQVkVoRlVsZEpVMFVwSUVGU1NWTkpUa2NnU1U0Z1FVNVpJRmRCV1NCUFZWUWdUMFlnVkVoRklGVlRSVnh1SUNvZ1QwWWdWRWhKVXlCVFQwWlVWMEZTUlN3Z1JWWkZUaUJKUmlCQlJGWkpVMFZFSUU5R0lGUklSU0JRVDFOVFNVSkpURWxVV1NCUFJpQlRWVU5JSUVSQlRVRkhSUzVjYmlBcUwxeHVYRzVwYlhCdmNuUWdleUJTWVc1a2IyMUdiaUI5SUdaeWIyMGdKeTR2ZFcxaGNDYzdYRzVwYlhCdmNuUWdLaUJoY3lCMWRHbHNjeUJtY205dElDY3VMM1YwYVd4ekp6dGNibHh1Wlhod2IzSjBJSFI1Y0dVZ1NHVmhjQ0E5SUc1MWJXSmxjbHRkVzExYlhUdGNibHh1THlvcVhHNGdLaUFnUTI5dWMzUnlkV04wYjNJZ1ptOXlJSFJvWlNCb1pXRndJRzlpYW1WamRITXVJRlJvWlNCb1pXRndjeUJoY21VZ2RYTmxaRnh1SUNvZ1ptOXlJR0Z3Y0hKdmVHbHRZWFJsSUc1bFlYSmxjM1FnYm1WcFoyaGliM0lnYzJWaGNtTm9MQ0J0WVdsdWRHRnBibWx1WnlCaElHeHBjM1FnYjJZZ2NHOTBaVzUwYVdGc1hHNGdLaUJ1WldsbmFHSnZjbk1nYzI5eWRHVmtJR0o1SUhSb1pXbHlJR1JwYzNSaGJtTmxMaUJYWlNCaGJITnZJR1pzWVdjZ2FXWWdjRzkwWlc1MGFXRnNJRzVsYVdkb1ltOXljMXh1SUNvZ1lYSmxJRzVsZDJ4NUlHRmtaR1ZrSUhSdklIUm9aU0JzYVhOMElHOXlJRzV2ZEM0Z1NXNTBaWEp1WVd4c2VTQjBhR2x6SUdseklITjBiM0psWkNCaGMxeHVJQ29nWVNCemFXNW5iR1VnWVhKeVlYazdJSFJvWlNCbWFYSnpkQ0JoZUdseklHUmxkR1Z5YldsdVpYTWdkMmhsZEdobGNpQjNaU0JoY21VZ2JHOXZhMmx1WnlCaGRDQjBhR1ZjYmlBcUlHRnljbUY1SUc5bUlHTmhibVJwWkdGMFpTQnBibVJwWTJWekxDQjBhR1VnWVhKeVlYa2diMllnWkdsemRHRnVZMlZ6TENCdmNpQjBhR1VnWm14aFp5QmhjbkpoZVNCbWIzSmNiaUFxSUhkb1pYUm9aWElnWld4bGJXVnVkSE1nWVhKbElHNWxkeUJ2Y2lCdWIzUXVJRVZoWTJnZ2IyWWdkR2hsYzJVZ1lYSnlZWGx6SUdGeVpTQnZaaUJ6YUdGd1pWeHVJQ29nS0dCZ2JsQnZhVzUwYzJCZ0xDQmdZSE5wZW1WZ1lDbGNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUcxaGEyVklaV0Z3S0c1UWIybHVkSE02SUc1MWJXSmxjaXdnYzJsNlpUb2diblZ0WW1WeUtUb2dTR1ZoY0NCN1hHNGdJR052Ym5OMElHMWhhMlZCY25KaGVYTWdQU0FvWm1sc2JGWmhiSFZsT2lCdWRXMWlaWElwSUQwK0lIdGNiaUFnSUNCeVpYUjFjbTRnZFhScGJITXVaVzF3ZEhrb2JsQnZhVzUwY3lrdWJXRndLQ2dwSUQwK0lIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCMWRHbHNjeTVtYVd4c1pXUW9jMmw2WlN3Z1ptbHNiRlpoYkhWbEtUdGNiaUFnSUNCOUtUdGNiaUFnZlR0Y2JseHVJQ0JqYjI1emRDQm9aV0Z3T2lCSVpXRndJRDBnVzEwN1hHNGdJR2hsWVhBdWNIVnphQ2h0WVd0bFFYSnlZWGx6S0MweEtTazdYRzRnSUdobFlYQXVjSFZ6YUNodFlXdGxRWEp5WVhsektFbHVabWx1YVhSNUtTazdYRzRnSUdobFlYQXVjSFZ6YUNodFlXdGxRWEp5WVhsektEQXBLVHRjYmlBZ2NtVjBkWEp1SUdobFlYQTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1IyVnVaWEpoZEdVZ2JsOXpZVzF3YkdWeklHMWhibmtnYVc1MFpXZGxjbk1nWm5KdmJTQXdJSFJ2SUhCdmIyeGZjMmw2WlNCemRXTm9JSFJvWVhRZ2JtOWNiaUFxSUdsdWRHVm5aWElnYVhNZ2MyVnNaV04wWldRZ2RIZHBZMlV1SUZSb1pTQmtkWEJzYVdOaGRHbHZiaUJqYjI1emRISmhhVzUwSUdseklHRmphR2xsZG1Wa0lIWnBZVnh1SUNvZ2NtVnFaV04wYVc5dUlITmhiWEJzYVc1bkxseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY21WcVpXTjBhVzl1VTJGdGNHeGxLRnh1SUNCdVUyRnRjR3hsY3pvZ2JuVnRZbVZ5TEZ4dUlDQndiMjlzVTJsNlpUb2diblZ0WW1WeUxGeHVJQ0J5WVc1a2IyMDZJRkpoYm1SdmJVWnVYRzRwSUh0Y2JpQWdZMjl1YzNRZ2NtVnpkV3gwSUQwZ2RYUnBiSE11ZW1WeWIzTW9ibE5oYlhCc1pYTXBPMXh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHNVRZVzF3YkdWek95QnBLeXNwSUh0Y2JpQWdJQ0JzWlhRZ2NtVnFaV04wVTJGdGNHeGxJRDBnZEhKMVpUdGNiaUFnSUNCc1pYUWdhaUE5SURBN1hHNGdJQ0FnZDJocGJHVWdLSEpsYW1WamRGTmhiWEJzWlNrZ2UxeHVJQ0FnSUNBZ2FpQTlJSFYwYVd4ekxuUmhkVkpoYm1SSmJuUW9jRzl2YkZOcGVtVXNJSEpoYm1SdmJTazdYRzRnSUNBZ0lDQnNaWFFnWW5KdmEyVnVJRDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQnJJRDBnTURzZ2F5QThJR2s3SUdzckt5a2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2FpQTlQVDBnY21WemRXeDBXMnRkS1NCN1hHNGdJQ0FnSUNBZ0lDQWdZbkp2YTJWdUlEMGdkSEoxWlR0Y2JpQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2FXWWdLQ0ZpY205clpXNHBJSEpsYW1WamRGTmhiWEJzWlNBOUlHWmhiSE5sTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWE4xYkhSYmFWMGdQU0JxTzF4dUlDQjlYRzRnSUhKbGRIVnliaUJ5WlhOMWJIUTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1VIVnphQ0JoSUc1bGR5QmxiR1Z0Wlc1MElHOXVkRzhnZEdobElHaGxZWEF1SUZSb1pTQm9aV0Z3SUhOMGIzSmxjeUJ3YjNSbGJuUnBZV3dnYm1WcFoyaGliM0p6WEc0Z0tpQm1iM0lnWldGamFDQmtZWFJoSUhCdmFXNTBMaUJVYUdVZ1lHQnliM2RnWUNCd1lYSmhiV1YwWlhJZ1pHVjBaWEp0YVc1bGN5QjNhR2xqYUNCa1lYUmhJSEJ2YVc1MElIZGxYRzRnS2lCaGNtVWdZV1JrY21WemMybHVaeXdnZEdobElHQmdkMlZwWjJoMFlHQWdaR1YwWlhKdGFXNWxjeUIwYUdVZ1pHbHpkR0Z1WTJVZ0tHWnZjaUJvWldGd0lITnZjblJwYm1jcExGeHVJQ29nZEdobElHQmdhVzVrWlhoZ1lDQnBjeUIwYUdVZ1pXeGxiV1Z1ZENCMGJ5QmhaR1FzSUdGdVpDQjBhR1VnWm14aFp5QmtaWFJsY20xcGJtVnpJSGRvWlhSb1pYSWdkR2hwYzF4dUlDb2dhWE1nZEc4Z1ltVWdZMjl1YzJsa1pYSmxaQ0JoSUc1bGR5QmhaR1JwZEdsdmJpNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdobFlYQlFkWE5vS0Z4dUlDQm9aV0Z3T2lCSVpXRndMRnh1SUNCeWIzYzZJRzUxYldKbGNpeGNiaUFnZDJWcFoyaDBPaUJ1ZFcxaVpYSXNYRzRnSUdsdVpHVjRPaUJ1ZFcxaVpYSXNYRzRnSUdac1lXYzZJRzUxYldKbGNseHVLVG9nYm5WdFltVnlJSHRjYmlBZ2NtOTNJRDBnVFdGMGFDNW1iRzl2Y2loeWIzY3BPMXh1SUNCamIyNXpkQ0JwYm1ScFkyVnpJRDBnYUdWaGNGc3dYVnR5YjNkZE8xeHVJQ0JqYjI1emRDQjNaV2xuYUhSeklEMGdhR1ZoY0ZzeFhWdHliM2RkTzF4dUlDQmpiMjV6ZENCcGMwNWxkeUE5SUdobFlYQmJNbDFiY205M1hUdGNibHh1SUNCcFppQW9kMlZwWjJoMElENDlJSGRsYVdkb2RITmJNRjBwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdNRHRjYmlBZ2ZWeHVYRzRnSUM4dklFSnlaV0ZySUdsbUlIZGxJR0ZzY21WaFpIa2dhR0YyWlNCMGFHbHpJR1ZzWlcxbGJuUXVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2FXNWthV05sY3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lHbG1JQ2hwYm1SbGVDQTlQVDBnYVc1a2FXTmxjMXRwWFNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SURBN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUhWdVkyaGxZMnRsWkVobFlYQlFkWE5vS0dobFlYQXNJSEp2ZHl3Z2QyVnBaMmgwTENCcGJtUmxlQ3dnWm14aFp5azdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1VIVnphQ0JoSUc1bGR5QmxiR1Z0Wlc1MElHOXVkRzhnZEdobElHaGxZWEF1SUZSb1pTQm9aV0Z3SUhOMGIzSmxjeUJ3YjNSbGJuUnBZV3dnYm1WcFoyaGliM0p6WEc0Z0tpQm1iM0lnWldGamFDQmtZWFJoSUhCdmFXNTBMaUJVYUdVZ1lHQnliM2RnWUNCd1lYSmhiV1YwWlhJZ1pHVjBaWEp0YVc1bGN5QjNhR2xqYUNCa1lYUmhJSEJ2YVc1MElIZGxYRzRnS2lCaGNtVWdZV1JrY21WemMybHVaeXdnZEdobElHQmdkMlZwWjJoMFlHQWdaR1YwWlhKdGFXNWxjeUIwYUdVZ1pHbHpkR0Z1WTJVZ0tHWnZjaUJvWldGd0lITnZjblJwYm1jcExGeHVJQ29nZEdobElHQmdhVzVrWlhoZ1lDQnBjeUIwYUdVZ1pXeGxiV1Z1ZENCMGJ5QmhaR1FzSUdGdVpDQjBhR1VnWm14aFp5QmtaWFJsY20xcGJtVnpJSGRvWlhSb1pYSWdkR2hwYzF4dUlDb2dhWE1nZEc4Z1ltVWdZMjl1YzJsa1pYSmxaQ0JoSUc1bGR5QmhaR1JwZEdsdmJpNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhWdVkyaGxZMnRsWkVobFlYQlFkWE5vS0Z4dUlDQm9aV0Z3T2lCSVpXRndMRnh1SUNCeWIzYzZJRzUxYldKbGNpeGNiaUFnZDJWcFoyaDBPaUJ1ZFcxaVpYSXNYRzRnSUdsdVpHVjRPaUJ1ZFcxaVpYSXNYRzRnSUdac1lXYzZJRzUxYldKbGNseHVLVG9nYm5WdFltVnlJSHRjYmlBZ1kyOXVjM1FnYVc1a2FXTmxjeUE5SUdobFlYQmJNRjFiY205M1hUdGNiaUFnWTI5dWMzUWdkMlZwWjJoMGN5QTlJR2hsWVhCYk1WMWJjbTkzWFR0Y2JpQWdZMjl1YzNRZ2FYTk9aWGNnUFNCb1pXRndXekpkVzNKdmQxMDdYRzVjYmlBZ2FXWWdLSGRsYVdkb2RDQStQU0IzWldsbmFIUnpXekJkS1NCN1hHNGdJQ0FnY21WMGRYSnVJREE3WEc0Z0lIMWNibHh1SUNBdkx5Qkpibk5sY25RZ2RtRnNJR0YwSUhCdmMybDBhVzl1SUhwbGNtOWNiaUFnZDJWcFoyaDBjMXN3WFNBOUlIZGxhV2RvZER0Y2JpQWdhVzVrYVdObGMxc3dYU0E5SUdsdVpHVjRPMXh1SUNCcGMwNWxkMXN3WFNBOUlHWnNZV2M3WEc1Y2JpQWdMeThnUkdWelkyVnVaQ0IwYUdVZ2FHVmhjQ3dnYzNkaGNIQnBibWNnZG1Gc2RXVnpJSFZ1ZEdsc0lIUm9aU0J0WVhnZ2FHVmhjQ0JqY21sMFpYSnBiMjRnYVhNZ2JXVjBYRzRnSUd4bGRDQnBJRDBnTUR0Y2JpQWdiR1YwSUdsVGQyRndJRDBnTUR0Y2JpQWdkMmhwYkdVZ0tIUnlkV1VwSUh0Y2JpQWdJQ0JqYjI1emRDQnBZekVnUFNBeUlDb2dhU0FySURFN1hHNGdJQ0FnWTI5dWMzUWdhV015SUQwZ2FXTXhJQ3NnTVR0Y2JseHVJQ0FnSUdOdmJuTjBJR2hsWVhCVGFHRndaVElnUFNCb1pXRndXekJkV3pCZExteGxibWQwYUR0Y2JpQWdJQ0JwWmlBb2FXTXhJRDQ5SUdobFlYQlRhR0Z3WlRJcElIdGNiaUFnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJSDBnWld4elpTQnBaaUFvYVdNeUlENDlJR2hsWVhCVGFHRndaVElwSUh0Y2JpQWdJQ0FnSUdsbUlDaDNaV2xuYUhSelcybGpNVjBnUGlCM1pXbG5hSFFwSUh0Y2JpQWdJQ0FnSUNBZ2FWTjNZWEFnUFNCcFl6RTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0hkbGFXZG9kSE5iYVdNeFhTQStQU0IzWldsbmFIUnpXMmxqTWwwcElIdGNiaUFnSUNBZ0lHbG1JQ2gzWldsbmFIUWdQQ0IzWldsbmFIUnpXMmxqTVYwcElIdGNiaUFnSUNBZ0lDQWdhVk4zWVhBZ1BTQnBZekU3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lIMWNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnYVdZZ0tIZGxhV2RvZENBOElIZGxhV2RvZEhOYmFXTXlYU2tnZTF4dUlDQWdJQ0FnSUNCcFUzZGhjQ0E5SUdsak1qdGNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJSGRsYVdkb2RITmJhVjBnUFNCM1pXbG5hSFJ6VzJsVGQyRndYVHRjYmlBZ0lDQnBibVJwWTJWelcybGRJRDBnYVc1a2FXTmxjMXRwVTNkaGNGMDdYRzRnSUNBZ2FYTk9aWGRiYVYwZ1BTQnBjMDVsZDF0cFUzZGhjRjA3WEc1Y2JpQWdJQ0JwSUQwZ2FWTjNZWEE3WEc0Z0lIMWNibHh1SUNCM1pXbG5hSFJ6VzJsZElEMGdkMlZwWjJoME8xeHVJQ0JwYm1ScFkyVnpXMmxkSUQwZ2FXNWtaWGc3WEc0Z0lHbHpUbVYzVzJsZElEMGdabXhoWnp0Y2JpQWdjbVYwZFhKdUlERTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1FuVnBiR1FnWVNCb1pXRndJRzltSUdOaGJtUnBaR0YwWlNCdVpXbG5hR0p2Y25NZ1ptOXlJRzVsWVhKbGMzUWdibVZwWjJoaWIzSWdaR1Z6WTJWdWRDNGdSbTl5WEc0Z0tpQmxZV05vSUhabGNuUmxlQ0IwYUdVZ1kyRnVaR2xrWVhSbElHNWxhV2RvWW05eWN5QmhjbVVnWVc1NUlHTjFjbkpsYm5RZ2JtVnBaMmhpYjNKekxDQmhibVFnWVc1NVhHNGdLaUIyWlhKMGFXTmxjeUIwYUdGMElHaGhkbVVnZEdobElIWmxjblJsZUNCaGN5QnZibVVnYjJZZ2RHaGxhWElnYm1WaGNtVnpkQ0J1WldsbmFHSnZjbk11WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmlkV2xzWkVOaGJtUnBaR0YwWlhNb1hHNGdJR04xY25KbGJuUkhjbUZ3YURvZ1NHVmhjQ3hjYmlBZ2JsWmxjblJwWTJWek9pQnVkVzFpWlhJc1hHNGdJRzVPWldsbmFHSnZjbk02SUc1MWJXSmxjaXhjYmlBZ2JXRjRRMkZ1Wkdsa1lYUmxjem9nYm5WdFltVnlMRnh1SUNCeVlXNWtiMjA2SUZKaGJtUnZiVVp1WEc0cElIdGNiaUFnWTI5dWMzUWdZMkZ1Wkdsa1lYUmxUbVZwWjJoaWIzSnpJRDBnYldGclpVaGxZWEFvYmxabGNuUnBZMlZ6TENCdFlYaERZVzVrYVdSaGRHVnpLVHRjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnVWbVZ5ZEdsalpYTTdJR2tyS3lrZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUdvZ1BTQXdPeUJxSUR3Z2JrNWxhV2RvWW05eWN6c2dhaXNyS1NCN1hHNGdJQ0FnSUNCcFppQW9ZM1Z5Y21WdWRFZHlZWEJvV3pCZFcybGRXMnBkSUR3Z01Da2dlMXh1SUNBZ0lDQWdJQ0JqYjI1MGFXNTFaVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR052Ym5OMElHbGtlQ0E5SUdOMWNuSmxiblJIY21Gd2FGc3dYVnRwWFZ0cVhUdGNiaUFnSUNBZ0lHTnZibk4wSUdsemJpQTlJR04xY25KbGJuUkhjbUZ3YUZzeVhWdHBYVnRxWFR0Y2JpQWdJQ0FnSUdOdmJuTjBJR1FnUFNCMWRHbHNjeTUwWVhWU1lXNWtLSEpoYm1SdmJTazdYRzRnSUNBZ0lDQm9aV0Z3VUhWemFDaGpZVzVrYVdSaGRHVk9aV2xuYUdKdmNuTXNJR2tzSUdRc0lHbGtlQ3dnYVhOdUtUdGNiaUFnSUNBZ0lHaGxZWEJRZFhOb0tHTmhibVJwWkdGMFpVNWxhV2RvWW05eWN5d2dhV1I0TENCa0xDQnBMQ0JwYzI0cE8xeHVJQ0FnSUNBZ1kzVnljbVZ1ZEVkeVlYQm9XekpkVzJsZFcycGRJRDBnTUR0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnY21WMGRYSnVJR05oYm1ScFpHRjBaVTVsYVdkb1ltOXljenRjYm4xY2JseHVMeW9xWEc0Z0tpQkhhWFpsYmlCaGJpQmhjbkpoZVNCdlppQm9aV0Z3Y3lBb2IyWWdhVzVrYVdObGN5QmhibVFnZDJWcFoyaDBjeWtzSUhWdWNHRmpheUIwYUdVZ2FHVmhjRnh1SUNvZ2IzVjBJSFJ2SUdkcGRtVWdZVzVrSUdGeWNtRjVJRzltSUhOdmNuUmxaQ0JzYVhOMGN5QnZaaUJwYm1ScFkyVnpJR0Z1WkNCM1pXbG5hSFJ6SUdKNUlHbHVZM0psWVhOcGJtZGNiaUFxSUhkbGFXZG9kQzRnVkdocGN5QnBjeUJsWm1abFkzUnBkbVZzZVNCcWRYTjBJSFJvWlNCelpXTnZibVFnYUdGc1ppQnZaaUJvWldGd0lITnZjblFnS0hSb1pTQm1hWEp6ZEZ4dUlDb2dhR0ZzWmlCdWIzUWdZbVZwYm1jZ2NtVnhkV2x5WldRZ2MybHVZMlVnZDJVZ1lXeHlaV0ZrZVNCb1lYWmxJSFJvWlNCa1lYUmhJR2x1SUdFZ2FHVmhjQ2t1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmtaV2hsWVhCVGIzSjBLR2hsWVhBNklFaGxZWEFwSUh0Y2JpQWdZMjl1YzNRZ2FXNWthV05sY3lBOUlHaGxZWEJiTUYwN1hHNGdJR052Ym5OMElIZGxhV2RvZEhNZ1BTQm9aV0Z3V3pGZE8xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2FXNWthV05sY3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lHTnZibk4wSUdsdVpFaGxZWEFnUFNCcGJtUnBZMlZ6VzJsZE8xeHVJQ0FnSUdOdmJuTjBJR1JwYzNSSVpXRndJRDBnZDJWcFoyaDBjMXRwWFR0Y2JseHVJQ0FnSUdadmNpQW9iR1YwSUdvZ1BTQXdPeUJxSUR3Z2FXNWtTR1ZoY0M1c1pXNW5kR2dnTFNBeE95QnFLeXNwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR2x1WkVobFlYQkpibVJsZUNBOUlHbHVaRWhsWVhBdWJHVnVaM1JvSUMwZ2FpQXRJREU3WEc0Z0lDQWdJQ0JqYjI1emRDQmthWE4wU0dWaGNFbHVaR1Y0SUQwZ1pHbHpkRWhsWVhBdWJHVnVaM1JvSUMwZ2FpQXRJREU3WEc1Y2JpQWdJQ0FnSUdOdmJuTjBJSFJsYlhBeElEMGdhVzVrU0dWaGNGc3dYVHRjYmlBZ0lDQWdJR2x1WkVobFlYQmJNRjBnUFNCcGJtUklaV0Z3VzJsdVpFaGxZWEJKYm1SbGVGMDdYRzRnSUNBZ0lDQnBibVJJWldGd1cybHVaRWhsWVhCSmJtUmxlRjBnUFNCMFpXMXdNVHRjYmx4dUlDQWdJQ0FnWTI5dWMzUWdkR1Z0Y0RJZ1BTQmthWE4wU0dWaGNGc3dYVHRjYmlBZ0lDQWdJR1JwYzNSSVpXRndXekJkSUQwZ1pHbHpkRWhsWVhCYlpHbHpkRWhsWVhCSmJtUmxlRjA3WEc0Z0lDQWdJQ0JrYVhOMFNHVmhjRnRrYVhOMFNHVmhjRWx1WkdWNFhTQTlJSFJsYlhBeU8xeHVYRzRnSUNBZ0lDQnphV1owUkc5M2JpaGthWE4wU0dWaGNDd2dhVzVrU0dWaGNDd2daR2x6ZEVobFlYQkpibVJsZUN3Z01DazdYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCN0lHbHVaR2xqWlhNc0lIZGxhV2RvZEhNZ2ZUdGNibjFjYmx4dUx5b3FYRzRnS2lCU1pYTjBiM0psSUhSb1pTQm9aV0Z3SUhCeWIzQmxjblI1SUdadmNpQmhJR2hsWVhBZ2QybDBhQ0JoYmlCdmRYUWdiMllnY0d4aFkyVWdaV3hsYldWdWRGeHVJQ29nWVhRZ2NHOXphWFJwYjI0Z1lHQmxiSFJnWUM0Z1ZHaHBjeUIzYjNKcmN5QjNhWFJvSUdFZ2FHVmhjQ0J3WVdseUlIZG9aWEpsSUdobFlYQXhJR05oY25KcFpYTmNiaUFxSUhSb1pTQjNaV2xuYUhSeklHRnVaQ0JvWldGd01pQm9iMnhrY3lCMGFHVWdZMjl5Y21WemNHOXVaR2x1WnlCbGJHVnRaVzUwY3k1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnYzJsbWRFUnZkMjRvWEc0Z0lHaGxZWEF4T2lCdWRXMWlaWEpiWFN4Y2JpQWdhR1ZoY0RJNklHNTFiV0psY2x0ZExGeHVJQ0JqWldsc2FXNW5PaUJ1ZFcxaVpYSXNYRzRnSUdWc2REb2diblZ0WW1WeVhHNHBJSHRjYmlBZ2QyaHBiR1VnS0dWc2RDQXFJRElnS3lBeElEd2dZMlZwYkdsdVp5a2dlMXh1SUNBZ0lHTnZibk4wSUd4bFpuUkRhR2xzWkNBOUlHVnNkQ0FxSURJZ0t5QXhPMXh1SUNBZ0lHTnZibk4wSUhKcFoyaDBRMmhwYkdRZ1BTQnNaV1owUTJocGJHUWdLeUF4TzF4dUlDQWdJR3hsZENCemQyRndJRDBnWld4ME8xeHVYRzRnSUNBZ2FXWWdLR2hsWVhBeFczTjNZWEJkSUR3Z2FHVmhjREZiYkdWbWRFTm9hV3hrWFNrZ2UxeHVJQ0FnSUNBZ2MzZGhjQ0E5SUd4bFpuUkRhR2xzWkR0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0hKcFoyaDBRMmhwYkdRZ1BDQmpaV2xzYVc1bklDWW1JR2hsWVhBeFczTjNZWEJkSUR3Z2FHVmhjREZiY21sbmFIUkRhR2xzWkYwcElIdGNiaUFnSUNBZ0lITjNZWEFnUFNCeWFXZG9kRU5vYVd4a08xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHpkMkZ3SUQwOVBTQmxiSFFwSUh0Y2JpQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCamIyNXpkQ0IwWlcxd01TQTlJR2hsWVhBeFcyVnNkRjA3WEc0Z0lDQWdJQ0JvWldGd01WdGxiSFJkSUQwZ2FHVmhjREZiYzNkaGNGMDdYRzRnSUNBZ0lDQm9aV0Z3TVZ0emQyRndYU0E5SUhSbGJYQXhPMXh1WEc0Z0lDQWdJQ0JqYjI1emRDQjBaVzF3TWlBOUlHaGxZWEF5VzJWc2RGMDdYRzRnSUNBZ0lDQm9aV0Z3TWx0bGJIUmRJRDBnYUdWaGNESmJjM2RoY0YwN1hHNGdJQ0FnSUNCb1pXRndNbHR6ZDJGd1hTQTlJSFJsYlhBeU8xeHVJQ0FnSUNBZ1pXeDBJRDBnYzNkaGNEdGNiaUFnSUNCOVhHNGdJSDFjYm4xY2JseHVMeW9xWEc0Z0tpQlRaV0Z5WTJnZ2RHaGxJR2hsWVhBZ1ptOXlJSFJvWlNCemJXRnNiR1Z6ZENCbGJHVnRaVzUwSUhSb1lYUWdhWE1nYzNScGJHd2dabXhoWjJkbFpDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhOdFlXeHNaWE4wUm14aFoyZGxaQ2hvWldGd09pQklaV0Z3TENCeWIzYzZJRzUxYldKbGNpa2dlMXh1SUNCamIyNXpkQ0JwYm1RZ1BTQm9aV0Z3V3pCZFczSnZkMTA3WEc0Z0lHTnZibk4wSUdScGMzUWdQU0JvWldGd1d6RmRXM0p2ZDEwN1hHNGdJR052Ym5OMElHWnNZV2NnUFNCb1pXRndXekpkVzNKdmQxMDdYRzVjYmlBZ2JHVjBJRzFwYmtScGMzUWdQU0JKYm1acGJtbDBlVHRjYmlBZ2JHVjBJSEpsYzNWc2RFbHVaR1Y0SUQwZ0xURTdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BpQnBibVF1YkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNCcFppQW9abXhoWjF0cFhTQTlQVDBnTVNBbUppQmthWE4wVzJsZElEd2diV2x1UkdsemRDa2dlMXh1SUNBZ0lDQWdiV2x1UkdsemRDQTlJR1JwYzNSYmFWMDdYRzRnSUNBZ0lDQnlaWE4xYkhSSmJtUmxlQ0E5SUdrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ2FXWWdLSEpsYzNWc2RFbHVaR1Y0SUQ0OUlEQXBJSHRjYmlBZ0lDQm1iR0ZuVzNKbGMzVnNkRWx1WkdWNFhTQTlJREE3WEc0Z0lDQWdjbVYwZFhKdUlFMWhkR2d1Wm14dmIzSW9hVzVrVzNKbGMzVnNkRWx1WkdWNFhTazdYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdjbVYwZFhKdUlDMHhPMXh1SUNCOVhHNTlYRzRpWFgwPSIsIi8qKlxuICogQGxpY2Vuc2VcbiAqXG4gKiBDb3B5cmlnaHQgMjAxOSBHb29nbGUgTExDLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICovXG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuL3V0aWxzJztcbi8qKlxuICogSW50ZXJuYWwgMi1kaW1lbnNpb25hbCBzcGFyc2UgbWF0cml4IGNsYXNzXG4gKi9cbmV4cG9ydCBjbGFzcyBTcGFyc2VNYXRyaXgge1xuICAgIGNvbnN0cnVjdG9yKHJvd3MsIGNvbHMsIHZhbHVlcywgZGltcykge1xuICAgICAgICB0aGlzLmVudHJpZXMgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMublJvd3MgPSAwO1xuICAgICAgICB0aGlzLm5Db2xzID0gMDtcbiAgICAgICAgaWYgKHJvd3MubGVuZ3RoICE9PSBjb2xzLmxlbmd0aCB8fCByb3dzLmxlbmd0aCAhPT0gdmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyb3dzLCBjb2xzIGFuZCB2YWx1ZXMgYXJyYXlzIG11c3QgYWxsIGhhdmUgdGhlIHNhbWUgbGVuZ3RoJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVE9ETzogQXNzZXJ0IHRoYXQgZGltcyBhcmUgbGVnaXQuXG4gICAgICAgIHRoaXMublJvd3MgPSBkaW1zWzBdO1xuICAgICAgICB0aGlzLm5Db2xzID0gZGltc1sxXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IHJvd3NbaV07XG4gICAgICAgICAgICBjb25zdCBjb2wgPSBjb2xzW2ldO1xuICAgICAgICAgICAgdGhpcy5jaGVja0RpbXMocm93LCBjb2wpO1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5tYWtlS2V5KHJvdywgY29sKTtcbiAgICAgICAgICAgIHRoaXMuZW50cmllcy5zZXQoa2V5LCB7IHZhbHVlOiB2YWx1ZXNbaV0sIHJvdywgY29sIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIG1ha2VLZXkocm93LCBjb2wpIHtcbiAgICAgICAgcmV0dXJuIGAke3Jvd306JHtjb2x9YDtcbiAgICB9XG4gICAgY2hlY2tEaW1zKHJvdywgY29sKSB7XG4gICAgICAgIGNvbnN0IHdpdGhpbkJvdW5kcyA9IHJvdyA8IHRoaXMublJvd3MgJiYgY29sIDwgdGhpcy5uQ29scztcbiAgICAgICAgaWYgKCF3aXRoaW5Cb3VuZHMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncm93IGFuZC9vciBjb2wgc3BlY2lmaWVkIG91dHNpZGUgb2YgbWF0cml4IGRpbWVuc2lvbnMnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzZXQocm93LCBjb2wsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuY2hlY2tEaW1zKHJvdywgY29sKTtcbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5tYWtlS2V5KHJvdywgY29sKTtcbiAgICAgICAgaWYgKCF0aGlzLmVudHJpZXMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgIHRoaXMuZW50cmllcy5zZXQoa2V5LCB7IHZhbHVlLCByb3csIGNvbCB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW50cmllcy5nZXQoa2V5KS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldChyb3csIGNvbCwgZGVmYXVsdFZhbHVlID0gMCkge1xuICAgICAgICAvL3RoaXMuY2hlY2tEaW1zKHJvdywgY29sKTtcbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5tYWtlS2V5KHJvdywgY29sKTtcbiAgICAgICAgaWYgKHRoaXMuZW50cmllcy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW50cmllcy5nZXQoa2V5KS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0QWxsKG9yZGVyZWQgPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IHJvd0NvbFZhbHVlcyA9IG5ldyBBcnJheSh0aGlzLmVudHJpZXMuc2l6ZSkuZmlsbChudWxsKTtcbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICB0aGlzLmVudHJpZXMuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICByb3dDb2xWYWx1ZXNbaSsrXSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG9yZGVyZWQpIHtcbiAgICAgICAgICAgIC8vIE9yZGVyaW5nIHRoZSByZXN1bHQgaXNuJ3QgcmVxdWlyZWQgZm9yIHByb2Nlc3NpbmcgYnV0IGl0IGRvZXMgbWFrZSBpdCBlYXNpZXIgdG8gd3JpdGUgdGVzdHNcbiAgICAgICAgICAgIHJvd0NvbFZhbHVlcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGEucm93ID09PSBiLnJvdykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5jb2wgLSBiLmNvbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnJvdyAtIGIucm93O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByb3dDb2xWYWx1ZXM7XG4gICAgfVxuICAgIGdldERpbXMoKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5uUm93cywgdGhpcy5uQ29sc107XG4gICAgfVxuICAgIGdldFJvd3MoKSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZW50cmllcywgKFtrZXksIHZhbHVlXSkgPT4gdmFsdWUucm93KTtcbiAgICAgICAgLy8gcmV0dXJuIHRoaXMucm93cyBhcyB1bmtub3duIGFzIG51bWJlcltdO1xuICAgIH1cbiAgICBnZXRDb2xzKCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmVudHJpZXMsIChba2V5LCB2YWx1ZV0pID0+IHZhbHVlLmNvbCk7XG4gICAgICAgIC8vIHJldHVybiB0aGlzLmNvbHMgYXMgdW5rbm93biBhcyBudW1iZXJbXTtcbiAgICB9XG4gICAgZ2V0VmFsdWVzKCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmVudHJpZXMsIChba2V5LCB2YWx1ZV0pID0+IHZhbHVlLnZhbHVlKTtcbiAgICAgICAgLy9yZXR1cm4gdGhpcy52YWx1ZXMgYXMgdW5rbm93biBhcyBudW1iZXJbXTtcbiAgICB9XG4gICAgZm9yRWFjaChmbikge1xuICAgICAgICB0aGlzLmVudHJpZXMuZm9yRWFjaCh2YWx1ZSA9PiBmbih2YWx1ZS52YWx1ZSwgdmFsdWUucm93LCB2YWx1ZS5jb2wpKTtcbiAgICB9XG4gICAgbWFwKGZuKSB7XG4gICAgICAgIGNvbnN0IHZhbHMgPSBuZXcgRmxvYXQzMkFycmF5KHRoaXMuZW50cmllcy5zaXplKTtcbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICB0aGlzLmVudHJpZXMuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICB2YWxzW2krK10gPSBmbih2YWx1ZS52YWx1ZSwgdmFsdWUucm93LCB2YWx1ZS5jb2wpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZGltcyA9IFt0aGlzLm5Sb3dzLCB0aGlzLm5Db2xzXTtcbiAgICAgICAgcmV0dXJuIG5ldyBTcGFyc2VNYXRyaXgodGhpcy5nZXRSb3dzKCksIHRoaXMuZ2V0Q29scygpLCB2YWxzLCBkaW1zKTtcbiAgICB9XG4gICAgdG9BcnJheSgpIHtcbiAgICAgICAgY29uc3Qgcm93cyA9IHV0aWxzLmVtcHR5KHRoaXMublJvd3MpO1xuICAgICAgICBjb25zdCBvdXRwdXQgPSByb3dzLm1hcCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdXRpbHMuemVyb3ModGhpcy5uQ29scyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVudHJpZXMuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICBvdXRwdXRbdmFsdWUucm93XVt2YWx1ZS5jb2xdID0gdmFsdWUudmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgIH1cbn1cbi8qKlxuICogVHJhbnNwb3NlIGEgc3BhcnNlIG1hdHJpeFxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNwb3NlKG1hdHJpeCkge1xuICAgIGNvbnN0IG9sZFJvd3MgPSBtYXRyaXguZ2V0Um93cygpO1xuICAgIGNvbnN0IG9sZENvbHMgPSBtYXRyaXguZ2V0Q29scygpO1xuICAgIGNvbnN0IG9sZFZhbHMgPSBtYXRyaXguZ2V0VmFsdWVzKCk7XG4gICAgY29uc3QgbWF0bGVuID0gb2xkQ29scy5sZW5ndGg7XG4gICAgY29uc3QgY29scyA9IG5ldyBJbnQzMkFycmF5KG1hdGxlbik7XG4gICAgY29uc3Qgcm93cyA9IG5ldyBJbnQzMkFycmF5KG1hdGxlbik7XG4gICAgY29uc3QgdmFscyA9IG5ldyBGbG9hdDMyQXJyYXkobWF0bGVuKTtcbiAgICBjb2xzLnNldChvbGRSb3dzKTtcbiAgICByb3dzLnNldChvbGRDb2xzKTtcbiAgICB2YWxzLnNldChvbGRWYWxzKTtcbiAgICBjb25zdCBkaW1zID0gW21hdHJpeC5uQ29scywgbWF0cml4Lm5Sb3dzXTtcbiAgICByZXR1cm4gbmV3IFNwYXJzZU1hdHJpeChyb3dzLCBjb2xzLCB2YWxzLCBkaW1zKTtcbn1cbi8qKlxuICogQ29uc3RydWN0IGEgc3BhcnNlIGlkZW50aXR5IG1hdHJpeFxuICovXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpdHkoc2l6ZSkge1xuICAgIGNvbnN0IFtyb3dzXSA9IHNpemU7XG4gICAgY29uc3QgbWF0cml4ID0gbmV3IFNwYXJzZU1hdHJpeChbXSwgW10sIFtdLCBzaXplKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgICBtYXRyaXguc2V0KGksIGksIDEpO1xuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xufVxuLyoqXG4gKiBFbGVtZW50LXdpc2UgbXVsdGlwbGljYXRpb24gb2YgdHdvIG1hdHJpY2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYWlyd2lzZU11bHRpcGx5KGEsIGIpIHtcbiAgICByZXR1cm4gZWxlbWVudFdpc2UoYSwgYiwgKHgsIHkpID0+IHggKiB5KTtcbn1cbi8qKlxuICogRWxlbWVudC13aXNlIGFkZGl0aW9uIG9mIHR3byBtYXRyaWNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkKGEsIGIpIHtcbiAgICByZXR1cm4gZWxlbWVudFdpc2UoYSwgYiwgKHgsIHkpID0+IHggKyB5KTtcbn1cbi8qKlxuICogRWxlbWVudC13aXNlIHN1YnRyYWN0aW9uIG9mIHR3byBtYXRyaWNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc3VidHJhY3QoYSwgYikge1xuICAgIHJldHVybiBlbGVtZW50V2lzZShhLCBiLCAoeCwgeSkgPT4geCAtIHkpO1xufVxuLyoqXG4gKiBFbGVtZW50LXdpc2UgbWF4aW11bSBvZiB0d28gbWF0cmljZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1heGltdW0oYSwgYikge1xuICAgIHJldHVybiBlbGVtZW50V2lzZShhLCBiLCAoeCwgeSkgPT4gKHggPiB5ID8geCA6IHkpKTtcbn1cbi8qKlxuICogU2NhbGFyIG11bHRpcGxpY2F0aW9uIG9mIHR3byBtYXRyaWNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbXVsdGlwbHlTY2FsYXIoYSwgc2NhbGFyKSB7XG4gICAgcmV0dXJuIGEubWFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICByZXR1cm4gdmFsdWUgKiBzY2FsYXI7XG4gICAgfSk7XG59XG4vKipcbiAqIFJldHVybnMgYSBuZXcgbWF0cml4IHdpdGggemVybyBlbnRyaWVzIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbGltaW5hdGVaZXJvcyhtKSB7XG4gICAgY29uc3QgemVyb0luZGljZXMgPSBuZXcgU2V0KCk7XG4gICAgY29uc3QgdmFsdWVzID0gbS5nZXRWYWx1ZXMoKTtcbiAgICBjb25zdCByb3dzID0gbS5nZXRSb3dzKCk7XG4gICAgY29uc3QgY29scyA9IG0uZ2V0Q29scygpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh2YWx1ZXNbaV0gPT09IDApIHtcbiAgICAgICAgICAgIHplcm9JbmRpY2VzLmFkZChpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByZW1vdmVCeVplcm9JbmRleCA9IChfLCBpbmRleCkgPT4gIXplcm9JbmRpY2VzLmhhcyhpbmRleCk7XG4gICAgY29uc3QgbmV4dFZhbHVlcyA9IHZhbHVlcy5maWx0ZXIocmVtb3ZlQnlaZXJvSW5kZXgpO1xuICAgIGNvbnN0IG5leHRSb3dzID0gcm93cy5maWx0ZXIocmVtb3ZlQnlaZXJvSW5kZXgpO1xuICAgIGNvbnN0IG5leHRDb2xzID0gY29scy5maWx0ZXIocmVtb3ZlQnlaZXJvSW5kZXgpO1xuICAgIHJldHVybiBuZXcgU3BhcnNlTWF0cml4KG5leHRSb3dzLCBuZXh0Q29scywgbmV4dFZhbHVlcywgbS5nZXREaW1zKCkpO1xufVxuLyoqXG4gKiBOb3JtYWxpemF0aW9uIG9mIGEgc3BhcnNlIG1hdHJpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShtLCBub3JtVHlwZSA9IFwibDJcIiAvKiBOb3JtVHlwZS5sMiAqLykge1xuICAgIGNvbnN0IG5vcm1GbiA9IG5vcm1GbnNbbm9ybVR5cGVdO1xuICAgIGNvbnN0IGNvbHNCeVJvdyA9IG5ldyBNYXAoKTtcbiAgICBtLmZvckVhY2goKF8sIHJvdywgY29sKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHMgPSBjb2xzQnlSb3cuZ2V0KHJvdykgfHwgW107XG4gICAgICAgIGNvbHMucHVzaChjb2wpO1xuICAgICAgICBjb2xzQnlSb3cuc2V0KHJvdywgY29scyk7XG4gICAgfSk7XG4gICAgY29uc3QgbmV4dE1hdHJpeCA9IG5ldyBTcGFyc2VNYXRyaXgoW10sIFtdLCBbXSwgbS5nZXREaW1zKCkpO1xuICAgIGZvciAobGV0IHJvdyBvZiBjb2xzQnlSb3cua2V5cygpKSB7XG4gICAgICAgIGNvbnN0IGNvbHMgPSBjb2xzQnlSb3cuZ2V0KHJvdykuc29ydCgpO1xuICAgICAgICBjb25zdCB2YWxzID0gY29scy5tYXAoY29sID0+IG0uZ2V0KHJvdywgY29sKSk7XG4gICAgICAgIGNvbnN0IG5vcm0gPSBub3JtRm4odmFscyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9ybS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbmV4dE1hdHJpeC5zZXQocm93LCBjb2xzW2ldLCBub3JtW2ldKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV4dE1hdHJpeDtcbn1cbmNvbnN0IG5vcm1GbnMgPSB7XG4gICAgW1wibWF4XCIgLyogTm9ybVR5cGUubWF4ICovXTogKHhzKSA9PiB7XG4gICAgICAgIGxldCBtYXggPSAtSW5maW5pdHk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG1heCA9IHhzW2ldID4gbWF4ID8geHNbaV0gOiBtYXg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHhzLm1hcCh4ID0+IHggLyBtYXgpO1xuICAgIH0sXG4gICAgW1wibDFcIiAvKiBOb3JtVHlwZS5sMSAqL106ICh4cykgPT4ge1xuICAgICAgICBsZXQgc3VtID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgc3VtICs9IHhzW2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4cy5tYXAoeCA9PiB4IC8gc3VtKTtcbiAgICB9LFxuICAgIFtcImwyXCIgLyogTm9ybVR5cGUubDIgKi9dOiAoeHMpID0+IHtcbiAgICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHN1bSArPSB4c1tpXSAqKiAyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4cy5tYXAoeCA9PiBNYXRoLnNxcnQoeCAqKiAyIC8gc3VtKSk7XG4gICAgfSxcbn07XG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiBmb3IgZWxlbWVudC13aXNlIG9wZXJhdGlvbnMuXG4gKi9cbmZ1bmN0aW9uIGVsZW1lbnRXaXNlKGEsIGIsIG9wKSB7XG4gICAgY29uc3QgdmlzaXRlZCA9IG5ldyBTZXQoKTtcbiAgICBjb25zdCByb3dzID0gW107XG4gICAgY29uc3QgY29scyA9IFtdO1xuICAgIGNvbnN0IHZhbHMgPSBbXTtcbiAgICBjb25zdCBvcGVyYXRlID0gKHJvdywgY29sKSA9PiB7XG4gICAgICAgIHJvd3MucHVzaChyb3cpO1xuICAgICAgICBjb2xzLnB1c2goY29sKTtcbiAgICAgICAgY29uc3QgbmV4dFZhbHVlID0gb3AoYS5nZXQocm93LCBjb2wpLCBiLmdldChyb3csIGNvbCkpO1xuICAgICAgICB2YWxzLnB1c2gobmV4dFZhbHVlKTtcbiAgICB9O1xuICAgIGNvbnN0IHZhbHVlc0EgPSBhLmdldFZhbHVlcygpO1xuICAgIGNvbnN0IHJvd3NBID0gYS5nZXRSb3dzKCk7XG4gICAgY29uc3QgY29sc0EgPSBhLmdldENvbHMoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlc0EubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qgcm93ID0gcm93c0FbaV07XG4gICAgICAgIGNvbnN0IGNvbCA9IGNvbHNBW2ldO1xuICAgICAgICBjb25zdCBrZXkgPSBgJHtyb3d9OiR7Y29sfWA7XG4gICAgICAgIHZpc2l0ZWQuYWRkKGtleSk7XG4gICAgICAgIG9wZXJhdGUocm93LCBjb2wpO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZXNCID0gYi5nZXRWYWx1ZXMoKTtcbiAgICBjb25zdCByb3dzQiA9IGIuZ2V0Um93cygpO1xuICAgIGNvbnN0IGNvbHNCID0gYi5nZXRDb2xzKCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZXNCLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IHJvd3NCW2ldO1xuICAgICAgICBjb25zdCBjb2wgPSBjb2xzQltpXTtcbiAgICAgICAgY29uc3Qga2V5ID0gYCR7cm93fToke2NvbH1gO1xuICAgICAgICBpZiAodmlzaXRlZC5oYXMoa2V5KSlcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBvcGVyYXRlKHJvdywgY29sKTtcbiAgICB9XG4gICAgY29uc3QgZGltcyA9IFthLm5Sb3dzLCBhLm5Db2xzXTtcbiAgICByZXR1cm4gbmV3IFNwYXJzZU1hdHJpeChyb3dzLCBjb2xzLCB2YWxzLCBkaW1zKTtcbn1cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIGZvciBnZXR0aW5nIGRhdGEsIGluZGljZXMsIGFuZCBpbnB0ciBhcnJheXMgZnJvbSBhIHNwYXJzZVxuICogbWF0cml4IHRvIGZvbGxvdyBjc3IgbWF0cml4IGNvbnZlbnRpb25zLiBTdXBlciBpbmVmZmljaWVudCAoYW5kIGtpbmQgb2ZcbiAqIGRlZmVhdHMgdGhlIHB1cnBvc2Ugb2YgdGhpcyBjb252ZW50aW9uKSBidXQgYSBsb3Qgb2YgdGhlIHBvcnRlZCBweXRob24gdHJlZVxuICogc2VhcmNoIGxvZ2ljIGRlcGVuZHMgb24gdGhpcyBkYXRhIGZvcm1hdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENTUih4KSB7XG4gICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgIHguZm9yRWFjaCgodmFsdWUsIHJvdywgY29sKSA9PiB7XG4gICAgICAgIGVudHJpZXMucHVzaCh7IHZhbHVlLCByb3csIGNvbCB9KTtcbiAgICB9KTtcbiAgICBlbnRyaWVzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgaWYgKGEucm93ID09PSBiLnJvdykge1xuICAgICAgICAgICAgcmV0dXJuIGEuY29sIC0gYi5jb2w7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYS5yb3cgLSBiLnJvdztcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGluZGljZXMgPSBbXTtcbiAgICBjb25zdCB2YWx1ZXMgPSBbXTtcbiAgICBjb25zdCBpbmRwdHIgPSBbXTtcbiAgICBsZXQgY3VycmVudFJvdyA9IC0xO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCB7IHJvdywgY29sLCB2YWx1ZSB9ID0gZW50cmllc1tpXTtcbiAgICAgICAgaWYgKHJvdyAhPT0gY3VycmVudFJvdykge1xuICAgICAgICAgICAgY3VycmVudFJvdyA9IHJvdztcbiAgICAgICAgICAgIGluZHB0ci5wdXNoKGkpO1xuICAgICAgICB9XG4gICAgICAgIGluZGljZXMucHVzaChjb2wpO1xuICAgICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB7IGluZGljZXMsIHZhbHVlcywgaW5kcHRyIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liV0YwY21sNExtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpYldGMGNtbDRMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQk96czdPenM3T3pzN096czdPenM3T3p0SFFXbENSenRCUVVWSUxFOUJRVThzUzBGQlN5eExRVUZMTEUxQlFVMHNVMEZCVXl4RFFVRkRPMEZCU1dwRE96dEhRVVZITzBGQlEwZ3NUVUZCVFN4UFFVRlBMRmxCUVZrN1NVRk5ka0lzV1VGRFJTeEpRVUV5UWl4RlFVTXpRaXhKUVVFeVFpeEZRVU16UWl4TlFVRXJRaXhGUVVNdlFpeEpRVUZqTzFGQlZGSXNXVUZCVHl4SFFVRkhMRWxCUVVrc1IwRkJSeXhGUVVGcFFpeERRVUZETzFGQlJXeERMRlZCUVVzc1IwRkJWeXhEUVVGRExFTkJRVU03VVVGRGJFSXNWVUZCU3l4SFFVRlhMRU5CUVVNc1EwRkJRenRSUVZGNlFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRXRCUVVzc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4TFFVRkxMRTFCUVUwc1EwRkJReXhOUVVGTkxFVkJRVVU3V1VGRGFFVXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkRZaXcwUkVGQk5FUXNRMEZETjBRc1EwRkJRenRUUVVOSU8xRkJSVVFzYjBOQlFXOURPMUZCUTNCRExFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM0pDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzSkNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFsQlEzUkRMRTFCUVUwc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTndRaXhOUVVGTkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRjRUlzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGVrSXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRia01zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFVkJRVVVzUzBGQlN5eEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXp0VFFVTjJSRHRKUVVOSUxFTkJRVU03U1VGRlR5eFBRVUZQTEVOQlFVTXNSMEZCVnl4RlFVRkZMRWRCUVZjN1VVRkRkRU1zVDBGQlR5eEhRVUZITEVkQlFVY3NTVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJRenRKUVVONlFpeERRVUZETzBsQlJVOHNVMEZCVXl4RFFVRkRMRWRCUVZjc1JVRkJSU3hIUVVGWE8xRkJRM2hETEUxQlFVMHNXVUZCV1N4SFFVRkhMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eEpRVUZKTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8xRkJRekZFTEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVN1dVRkRha0lzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4MVJFRkJkVVFzUTBGQlF5eERRVUZETzFOQlF6RkZPMGxCUTBnc1EwRkJRenRKUVVWRUxFZEJRVWNzUTBGQlF5eEhRVUZYTEVWQlFVVXNSMEZCVnl4RlFVRkZMRXRCUVdFN1VVRkRla01zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGVrSXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRia01zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTzFsQlF6RkNMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZMRXRCUVVzc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXp0VFFVTTFRenRoUVVGTk8xbEJRMHdzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRkxFTkJRVU1zUzBGQlN5eEhRVUZITEV0QlFVc3NRMEZCUXp0VFFVTjBRenRKUVVOSUxFTkJRVU03U1VGRlJDeEhRVUZITEVOQlFVTXNSMEZCVnl4RlFVRkZMRWRCUVZjc1JVRkJSU3haUVVGWkxFZEJRVWNzUTBGQlF6dFJRVU0xUXl3eVFrRkJNa0k3VVVGRE0wSXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRia01zU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJUdFpRVU42UWl4UFFVRlBMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUlN4RFFVRkRMRXRCUVVzc1EwRkJRenRUUVVOeVF6dGhRVUZOTzFsQlEwd3NUMEZCVHl4WlFVRlpMRU5CUVVNN1UwRkRja0k3U1VGRFNDeERRVUZETzBsQlJVUXNUVUZCVFN4RFFVRkRMRTlCUVU4c1IwRkJSeXhKUVVGSk8xRkJRMjVDTEUxQlFVMHNXVUZCV1N4SFFVRlpMRWxCUVVrc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlEzUkZMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5XTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTzFsQlF6TkNMRmxCUVZrc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXp0UlFVTTFRaXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5JTEVsQlFVa3NUMEZCVHl4RlFVRkZPMWxCUTFnc09FWkJRVGhHTzFsQlF6bEdMRmxCUVZrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRM3BDTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTzI5Q1FVTnVRaXhQUVVGUExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJRenRwUWtGRGRFSTdjVUpCUVUwN2IwSkJRMHdzVDBGQlR5eERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU03YVVKQlEzUkNPMWxCUTBnc1EwRkJReXhEUVVGRExFTkJRVU03VTBGRFNqdFJRVU5FTEU5QlFVOHNXVUZCV1N4RFFVRkRPMGxCUTNSQ0xFTkJRVU03U1VGRlJDeFBRVUZQTzFGQlEwd3NUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMGxCUTJ4RExFTkJRVU03U1VGRlJDeFBRVUZQTzFGQlEwNHNUMEZCVHl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hMUVVGTExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRemRFTERKRFFVRXlRenRKUVVNMVF5eERRVUZETzBsQlJVUXNUMEZCVHp0UlFVTk9MRTlCUVU4c1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUzBGQlN5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU0zUkN3eVEwRkJNa003U1VGRE5VTXNRMEZCUXp0SlFVVkVMRk5CUVZNN1VVRkRWQ3hQUVVGUExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdVVUZETDBRc05FTkJRVFJETzBsQlF6VkRMRU5CUVVNN1NVRkZSQ3hQUVVGUExFTkJRVU1zUlVGQmNVUTdVVUZETTBRc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NSVUZCUlN4TFFVRkxMRU5CUVVNc1IwRkJSeXhGUVVGRkxFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNaRkxFTkJRVU03U1VGRlJDeEhRVUZITEVOQlFVTXNSVUZCZFVRN1VVRkRla1FzVFVGQlRTeEpRVUZKTEVkQlFVY3NTVUZCU1N4WlFVRlpMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTnFSQ3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVRTdVVUZEVkN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlR0WlFVTXpRaXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUlVGQlJTeExRVUZMTEVOQlFVTXNSMEZCUnl4RlFVRkZMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU53UkN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOSUxFMUJRVTBzU1VGQlNTeEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdVVUZEZEVNc1QwRkJUeXhKUVVGSkxGbEJRVmtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZMRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeEZRVUZGTEVsQlFUSkNMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRE4wWXNRMEZCUXp0SlFVVkVMRTlCUVU4N1VVRkRUQ3hOUVVGTkxFbEJRVWtzUjBGQlowSXNTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdVVUZEYkVRc1RVRkJUU3hOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRVZCUVVVN1dVRkRNMElzVDBGQlR5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFJRVU5xUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOSUxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRk8xbEJRek5DTEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU03VVVGRE4wTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRTQ3hQUVVGUExFMUJRVTBzUTBGQlF6dEpRVU5vUWl4RFFVRkRPME5CUTBZN1FVRkZSRHM3UjBGRlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4VFFVRlRMRU5CUVVNc1RVRkJiMEk3U1VGRE5VTXNUVUZCVFN4UFFVRlBMRWRCUVVjc1RVRkJUU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBsQlEycERMRTFCUVUwc1QwRkJUeXhIUVVGSExFMUJRVTBzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0SlFVTnFReXhOUVVGTkxFOUJRVThzUjBGQlJ5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNN1NVRkRia01zVFVGQlRTeE5RVUZOTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJRenRKUVVNNVFpeE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEpRVU53UXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0SlFVTndReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEZsQlFWa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVWMFF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRMnhDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRGJFSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dEpRVU5zUWl4TlFVRk5MRWxCUVVrc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVWQlFVVXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wbEJRekZETEU5QlFVOHNTVUZCU1N4WlFVRlpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1FVRkRiRVFzUTBGQlF6dEJRVVZFT3p0SFFVVkhPMEZCUTBnc1RVRkJUU3hWUVVGVkxGRkJRVkVzUTBGQlF5eEpRVUZqTzBsQlEzSkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTTdTVUZEY0VJc1RVRkJUU3hOUVVGTkxFZEJRVWNzU1VGQlNTeFpRVUZaTEVOQlFVTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdTVUZEYkVRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFJRVU0zUWl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRja0k3U1VGRFJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVVE3TzBkQlJVYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1owSkJRV2RDTEVOQlF6bENMRU5CUVdVc1JVRkRaaXhEUVVGbE8wbEJSV1lzVDBGQlR5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU0xUXl4RFFVRkRPMEZCUlVRN08wZEJSVWM3UVVGRFNDeE5RVUZOTEZWQlFWVXNSMEZCUnl4RFFVRkRMRU5CUVdVc1JVRkJSU3hEUVVGbE8wbEJRMnhFTEU5QlFVOHNWMEZCVnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZETlVNc1EwRkJRenRCUVVWRU96dEhRVVZITzBGQlEwZ3NUVUZCVFN4VlFVRlZMRkZCUVZFc1EwRkJReXhEUVVGbExFVkJRVVVzUTBGQlpUdEpRVU4yUkN4UFFVRlBMRmRCUVZjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpWRExFTkJRVU03UVVGRlJEczdSMEZGUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hQUVVGUExFTkJRVU1zUTBGQlpTeEZRVUZGTEVOQlFXVTdTVUZEZEVRc1QwRkJUeXhYUVVGWExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM1JFTEVOQlFVTTdRVUZGUkRzN1IwRkZSenRCUVVOSUxFMUJRVTBzVlVGQlZTeGpRVUZqTEVOQlFVTXNRMEZCWlN4RlFVRkZMRTFCUVdNN1NVRkROVVFzVDBGQlR5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1MwRkJZU3hGUVVGRkxFVkJRVVU3VVVGRE4wSXNUMEZCVHl4TFFVRkxMRWRCUVVjc1RVRkJUU3hEUVVGRE8wbEJRM2hDTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTB3c1EwRkJRenRCUVVWRU96dEhRVVZITzBGQlEwZ3NUVUZCVFN4VlFVRlZMR05CUVdNc1EwRkJReXhEUVVGbE8wbEJRelZETEUxQlFVMHNWMEZCVnl4SFFVRkhMRWxCUVVrc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRE9VSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETzBsQlF6ZENMRTFCUVUwc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0SlFVTjZRaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1NVRkRla0lzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFMUJRVTBzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1VVRkRkRU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRk8xbEJRMjVDTEZkQlFWY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VTBGRGNFSTdTMEZEUmp0SlFVTkVMRTFCUVUwc2FVSkJRV2xDTEVkQlFVY3NRMEZCUXl4RFFVRk5MRVZCUVVVc1MwRkJZU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEZkQlFWY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03U1VGRE4wVXNUVUZCVFN4VlFVRlZMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhEUVVGRE8wbEJRM0JFTEUxQlFVMHNVVUZCVVN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1EwRkJRenRKUVVOb1JDeE5RVUZOTEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRU5CUVVNN1NVRkZhRVFzVDBGQlR5eEpRVUZKTEZsQlFWa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1VVRkJVU3hGUVVGRkxGVkJRVlVzUlVGQlJTeERRVUZETEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNc1EwRkJRenRCUVVOMlJTeERRVUZETzBGQlJVUTdPMGRCUlVjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzVTBGQlV5eERRVUZETEVOQlFXVXNSVUZCUlN4UlFVRlJMSGxDUVVGak8wbEJReTlFTEUxQlFVMHNUVUZCVFN4SFFVRkhMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dEpRVVZxUXl4TlFVRk5MRk5CUVZNc1IwRkJSeXhKUVVGSkxFZEJRVWNzUlVGQmIwSXNRMEZCUXp0SlFVTTVReXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGQlJUdFJRVU40UWl4TlFVRk5MRWxCUVVrc1IwRkJSeXhUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJRenRSUVVOMFF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMllzVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRE0wSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZTQ3hOUVVGTkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEZsQlFWa3NRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNc1EwRkJRenRKUVVVM1JDeExRVUZMTEVsQlFVa3NSMEZCUnl4SlFVRkpMRk5CUVZNc1EwRkJReXhKUVVGSkxFVkJRVVVzUlVGQlJUdFJRVU5vUXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUlN4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRE8xRkJSWGhETEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpsRExFMUJRVTBzU1VGQlNTeEhRVUZITEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVNeFFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOd1F5eFZRVUZWTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VTBGRGRrTTdTMEZEUmp0SlFVVkVMRTlCUVU4c1ZVRkJWU3hEUVVGRE8wRkJRM0JDTEVOQlFVTTdRVUZOUkN4TlFVRk5MRTlCUVU4c1IwRkJXVHRKUVVOMlFpd3dRa0ZCWXl4RlFVRkZMRU5CUVVNc1JVRkJXU3hGUVVGRkxFVkJRVVU3VVVGREwwSXNTVUZCU1N4SFFVRkhMRWRCUVVjc1EwRkJReXhSUVVGUkxFTkJRVU03VVVGRGNFSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRGJFTXNSMEZCUnl4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRPMU5CUTJwRE8xRkJRMFFzVDBGQlR5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUXpsQ0xFTkJRVU03U1VGRFJDeDNRa0ZCWVN4RlFVRkZMRU5CUVVNc1JVRkJXU3hGUVVGRkxFVkJRVVU3VVVGRE9VSXNTVUZCU1N4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMW9zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRiRU1zUjBGQlJ5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVOa08xRkJRMFFzVDBGQlR5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUXpsQ0xFTkJRVU03U1VGRFJDeDNRa0ZCWVN4RlFVRkZMRU5CUVVNc1JVRkJXU3hGUVVGRkxFVkJRVVU3VVVGRE9VSXNTVUZCU1N4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMW9zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRiRU1zUjBGQlJ5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VTBGRGJrSTdVVUZEUkN4UFFVRlBMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVNNVF5eERRVUZETzBOQlEwWXNRMEZCUXp0QlFWRkdPenRIUVVWSE8wRkJRMGdzVTBGQlV5eFhRVUZYTEVOQlEyeENMRU5CUVdVc1JVRkRaaXhEUVVGbExFVkJRMllzUlVGQmIwTTdTVUZGY0VNc1RVRkJUU3hQUVVGUExFZEJRVWNzU1VGQlNTeEhRVUZITEVWQlFWVXNRMEZCUXp0SlFVTnNReXhOUVVGTkxFbEJRVWtzUjBGQllTeEZRVUZGTEVOQlFVTTdTVUZETVVJc1RVRkJUU3hKUVVGSkxFZEJRV0VzUlVGQlJTeERRVUZETzBsQlF6RkNMRTFCUVUwc1NVRkJTU3hIUVVGaExFVkJRVVVzUTBGQlF6dEpRVVV4UWl4TlFVRk5MRTlCUVU4c1IwRkJSeXhEUVVGRExFZEJRVmNzUlVGQlJTeEhRVUZYTEVWQlFVVXNSVUZCUlR0UlFVTXpReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTJZc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTm1MRTFCUVUwc1UwRkJVeXhIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzWkVMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTTdTVUZEZGtJc1EwRkJReXhEUVVGRE8wbEJRMFlzVFVGQlRTeFBRVUZQTEVkQlFVY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRE8wbEJRemxDTEUxQlFVMHNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEpRVU14UWl4TlFVRk5MRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdTVUZETVVJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRTlCUVU4c1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdVVUZEZGtNc1RVRkJUU3hIUVVGSExFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNKQ0xFMUJRVTBzUjBGQlJ5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOeVFpeE5RVUZOTEVkQlFVY3NSMEZCUnl4SFFVRkhMRWRCUVVjc1NVRkJTU3hIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU0xUWl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEycENMRTlCUVU4c1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdTMEZEYmtJN1NVRkZSQ3hOUVVGTkxFOUJRVThzUjBGQlJ5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNN1NVRkRPVUlzVFVGQlRTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8wbEJRekZDTEUxQlFVMHNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEpRVU14UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFJRVU4yUXl4TlFVRk5MRWRCUVVjc1IwRkJSeXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEY2tJc1RVRkJUU3hIUVVGSExFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNKQ0xFMUJRVTBzUjBGQlJ5eEhRVUZITEVkQlFVY3NSMEZCUnl4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRelZDTEVsQlFVa3NUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU03V1VGQlJTeFRRVUZUTzFGQlF5OUNMRTlCUVU4c1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdTMEZEYmtJN1NVRkZSQ3hOUVVGTkxFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBsQlEyaERMRTlCUVU4c1NVRkJTU3haUVVGWkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NSVUZCUlN4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRGJFUXNRMEZCUXp0QlFVVkVPenM3T3p0SFFVdEhPMEZCUTBnc1RVRkJUU3hWUVVGVkxFMUJRVTBzUTBGQlF5eERRVUZsTzBsQlEzQkRMRTFCUVUwc1QwRkJUeXhIUVVGWkxFVkJRVVVzUTBGQlF6dEpRVVUxUWl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1JVRkJSVHRSUVVNMVFpeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1MwRkJTeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRPMGxCUTNCRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlJVZ3NUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0UlFVTndRaXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSVHRaUVVOdVFpeFBRVUZQTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF6dFRRVU4wUWp0aFFVRk5PMWxCUTB3c1QwRkJUeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNN1UwRkRkRUk3U1VGRFNDeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVVklMRTFCUVUwc1QwRkJUeXhIUVVGaExFVkJRVVVzUTBGQlF6dEpRVU0zUWl4TlFVRk5MRTFCUVUwc1IwRkJZU3hGUVVGRkxFTkJRVU03U1VGRE5VSXNUVUZCVFN4TlFVRk5MRWRCUVdFc1JVRkJSU3hEUVVGRE8wbEJSVFZDTEVsQlFVa3NWVUZCVlN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM0JDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8xRkJRM1pETEUxQlFVMHNSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEhRVUZITEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOMlF5eEpRVUZKTEVkQlFVY3NTMEZCU3l4VlFVRlZMRVZCUVVVN1dVRkRkRUlzVlVGQlZTeEhRVUZITEVkQlFVY3NRMEZCUXp0WlFVTnFRaXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTJoQ08xRkJRMFFzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOc1FpeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wdEJRM0JDTzBsQlJVUXNUMEZCVHl4RlFVRkZMRTlCUVU4c1JVRkJSU3hOUVVGTkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVOQlFVTTdRVUZEY2tNc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUUd4cFkyVnVjMlZjYmlBcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE9TQkhiMjluYkdVZ1RFeERMaUJCYkd3Z1VtbG5hSFJ6SUZKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUV4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQmNHRmphR1VnVEdsalpXNXpaU3dnVm1WeWMybHZiaUF5TGpBZ0tIUm9aU0JjSWt4cFkyVnVjMlZjSWlrN1hHNGdLaUI1YjNVZ2JXRjVJRzV2ZENCMWMyVWdkR2hwY3lCbWFXeGxJR1Y0WTJWd2RDQnBiaUJqYjIxd2JHbGhibU5sSUhkcGRHZ2dkR2hsSUV4cFkyVnVjMlV1WEc0Z0tpQlpiM1VnYldGNUlHOWlkR0ZwYmlCaElHTnZjSGtnYjJZZ2RHaGxJRXhwWTJWdWMyVWdZWFJjYmlBcVhHNGdLaUFnSUNBZ2FIUjBjRG92TDNkM2R5NWhjR0ZqYUdVdWIzSm5MMnhwWTJWdWMyVnpMMHhKUTBWT1UwVXRNaTR3WEc0Z0tseHVJQ29nVlc1c1pYTnpJSEpsY1hWcGNtVmtJR0o1SUdGd2NHeHBZMkZpYkdVZ2JHRjNJRzl5SUdGbmNtVmxaQ0IwYnlCcGJpQjNjbWwwYVc1bkxDQnpiMlowZDJGeVpWeHVJQ29nWkdsemRISnBZblYwWldRZ2RXNWtaWElnZEdobElFeHBZMlZ1YzJVZ2FYTWdaR2x6ZEhKcFluVjBaV1FnYjI0Z1lXNGdYQ0pCVXlCSlUxd2lJRUpCVTBsVExGeHVJQ29nVjBsVVNFOVZWQ0JYUVZKU1FVNVVTVVZUSUU5U0lFTlBUa1JKVkVsUFRsTWdUMFlnUVU1WklFdEpUa1FzSUdWcGRHaGxjaUJsZUhCeVpYTnpJRzl5SUdsdGNHeHBaV1F1WEc0Z0tpQlRaV1VnZEdobElFeHBZMlZ1YzJVZ1ptOXlJSFJvWlNCemNHVmphV1pwWXlCc1lXNW5kV0ZuWlNCbmIzWmxjbTVwYm1jZ2NHVnliV2x6YzJsdmJuTWdZVzVrWEc0Z0tpQnNhVzFwZEdGMGFXOXVjeUIxYm1SbGNpQjBhR1VnVEdsalpXNXpaUzVjYmlBcUlEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFZ4dUlDb3ZYRzVjYm1sdGNHOXlkQ0FxSUdGeklIVjBhV3h6SUdaeWIyMGdKeTR2ZFhScGJITW5PMXh1WEc1MGVYQmxJRVZ1ZEhKNUlEMGdleUIyWVd4MVpUb2diblZ0WW1WeU95QnliM2M2SUc1MWJXSmxjanNnWTI5c09pQnVkVzFpWlhJZ2ZUdGNibHh1THlvcVhHNGdLaUJKYm5SbGNtNWhiQ0F5TFdScGJXVnVjMmx2Ym1Gc0lITndZWEp6WlNCdFlYUnlhWGdnWTJ4aGMzTmNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRk53WVhKelpVMWhkSEpwZUNCN1hHNGdJSEJ5YVhaaGRHVWdaVzUwY21sbGN5QTlJRzVsZHlCTllYQThjM1J5YVc1bkxDQkZiblJ5ZVQ0b0tUdGNibHh1SUNCeVpXRmtiMjVzZVNCdVVtOTNjem9nYm5WdFltVnlJRDBnTUR0Y2JpQWdjbVZoWkc5dWJIa2dia052YkhNNklHNTFiV0psY2lBOUlEQTdYRzVjYmlBZ1kyOXVjM1J5ZFdOMGIzSW9YRzRnSUNBZ2NtOTNjem9nYm5WdFltVnlXMTBnZkNCSmJuUXpNa0Z5Y21GNUxGeHVJQ0FnSUdOdmJITTZJRzUxYldKbGNsdGRJSHdnU1c1ME16SkJjbkpoZVN4Y2JpQWdJQ0IyWVd4MVpYTTZJRzUxYldKbGNsdGRJSHdnUm14dllYUXpNa0Z5Y21GNUxGeHVJQ0FnSUdScGJYTTZJRzUxYldKbGNsdGRYRzRnSUNrZ2UxeHVJQ0FnSUdsbUlDaHliM2R6TG14bGJtZDBhQ0FoUFQwZ1kyOXNjeTVzWlc1bmRHZ2dmSHdnY205M2N5NXNaVzVuZEdnZ0lUMDlJSFpoYkhWbGN5NXNaVzVuZEdncElIdGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loY2JpQWdJQ0FnSUNBZ0ozSnZkM01zSUdOdmJITWdZVzVrSUhaaGJIVmxjeUJoY25KaGVYTWdiWFZ6ZENCaGJHd2dhR0YyWlNCMGFHVWdjMkZ0WlNCc1pXNW5kR2duWEc0Z0lDQWdJQ0FwTzF4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUZSUFJFODZJRUZ6YzJWeWRDQjBhR0YwSUdScGJYTWdZWEpsSUd4bFoybDBMbHh1SUNBZ0lIUm9hWE11YmxKdmQzTWdQU0JrYVcxeld6QmRPMXh1SUNBZ0lIUm9hWE11YmtOdmJITWdQU0JrYVcxeld6RmRPMXh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dkbUZzZFdWekxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQnliM2NnUFNCeWIzZHpXMmxkTzF4dUlDQWdJQ0FnWTI5dWMzUWdZMjlzSUQwZ1kyOXNjMXRwWFR0Y2JpQWdJQ0FnSUhSb2FYTXVZMmhsWTJ0RWFXMXpLSEp2ZHl3Z1kyOXNLVHRjYmlBZ0lDQWdJR052Ym5OMElHdGxlU0E5SUhSb2FYTXViV0ZyWlV0bGVTaHliM2NzSUdOdmJDazdYRzRnSUNBZ0lDQjBhR2x6TG1WdWRISnBaWE11YzJWMEtHdGxlU3dnZXlCMllXeDFaVG9nZG1Gc2RXVnpXMmxkTENCeWIzY3NJR052YkNCOUtUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElHMWhhMlZMWlhrb2NtOTNPaUJ1ZFcxaVpYSXNJR052YkRvZ2JuVnRZbVZ5S1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0J5WlhSMWNtNGdZQ1I3Y205M2ZUb2tlMk52YkgxZ08xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQmphR1ZqYTBScGJYTW9jbTkzT2lCdWRXMWlaWElzSUdOdmJEb2diblZ0WW1WeUtTQjdYRzRnSUNBZ1kyOXVjM1FnZDJsMGFHbHVRbTkxYm1SeklEMGdjbTkzSUR3Z2RHaHBjeTV1VW05M2N5QW1KaUJqYjJ3Z1BDQjBhR2x6TG01RGIyeHpPMXh1SUNBZ0lHbG1JQ2doZDJsMGFHbHVRbTkxYm1SektTQjdYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0ozSnZkeUJoYm1RdmIzSWdZMjlzSUhOd1pXTnBabWxsWkNCdmRYUnphV1JsSUc5bUlHMWhkSEpwZUNCa2FXMWxibk5wYjI1ekp5azdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdjMlYwS0hKdmR6b2diblZ0WW1WeUxDQmpiMnc2SUc1MWJXSmxjaXdnZG1Gc2RXVTZJRzUxYldKbGNpa2dlMXh1SUNBZ0lIUm9hWE11WTJobFkydEVhVzF6S0hKdmR5d2dZMjlzS1R0Y2JpQWdJQ0JqYjI1emRDQnJaWGtnUFNCMGFHbHpMbTFoYTJWTFpYa29jbTkzTENCamIyd3BPMXh1SUNBZ0lHbG1JQ2doZEdocGN5NWxiblJ5YVdWekxtaGhjeWhyWlhrcEtTQjdYRzRnSUNBZ0lDQjBhR2x6TG1WdWRISnBaWE11YzJWMEtHdGxlU3dnZXlCMllXeDFaU3dnY205M0xDQmpiMndnZlNrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSFJvYVhNdVpXNTBjbWxsY3k1blpYUW9hMlY1S1NFdWRtRnNkV1VnUFNCMllXeDFaVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0JuWlhRb2NtOTNPaUJ1ZFcxaVpYSXNJR052YkRvZ2JuVnRZbVZ5TENCa1pXWmhkV3gwVm1Gc2RXVWdQU0F3S1NCN1hHNGdJQ0FnTHk5MGFHbHpMbU5vWldOclJHbHRjeWh5YjNjc0lHTnZiQ2s3WEc0Z0lDQWdZMjl1YzNRZ2EyVjVJRDBnZEdocGN5NXRZV3RsUzJWNUtISnZkeXdnWTI5c0tUdGNiaUFnSUNCcFppQW9kR2hwY3k1bGJuUnlhV1Z6TG1oaGN5aHJaWGtwS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NWxiblJ5YVdWekxtZGxkQ2hyWlhrcElTNTJZV3gxWlR0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHUmxabUYxYkhSV1lXeDFaVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0JuWlhSQmJHd29iM0prWlhKbFpDQTlJSFJ5ZFdVcE9pQjdJSFpoYkhWbE9pQnVkVzFpWlhJN0lISnZkem9nYm5WdFltVnlPeUJqYjJ3NklHNTFiV0psY2lCOVcxMGdlMXh1SUNBZ0lHTnZibk4wSUhKdmQwTnZiRlpoYkhWbGN6b2dSVzUwY25sYlhTQTlJRzVsZHlCQmNuSmhlU2gwYUdsekxtVnVkSEpwWlhNdWMybDZaU2t1Wm1sc2JDaHVkV3hzS1R0Y2JpQWdJQ0JzWlhRZ2FTQTlJREE3WEc0Z0lDQWdkR2hwY3k1bGJuUnlhV1Z6TG1admNrVmhZMmdvZG1Gc2RXVWdQVDRnZTF4dUlDQWdJQ0FnY205M1EyOXNWbUZzZFdWelcya3JLMTBnUFNCMllXeDFaVHRjYmlBZ0lDQjlLVHRjYmlBZ0lDQnBaaUFvYjNKa1pYSmxaQ2tnZTF4dUlDQWdJQ0FnTHk4Z1QzSmtaWEpwYm1jZ2RHaGxJSEpsYzNWc2RDQnBjMjRuZENCeVpYRjFhWEpsWkNCbWIzSWdjSEp2WTJWemMybHVaeUJpZFhRZ2FYUWdaRzlsY3lCdFlXdGxJR2wwSUdWaGMybGxjaUIwYnlCM2NtbDBaU0IwWlhOMGMxeHVJQ0FnSUNBZ2NtOTNRMjlzVm1Gc2RXVnpMbk52Y25Rb0tHRXNJR0lwSUQwK0lIdGNiaUFnSUNBZ0lDQWdhV1lnS0dFdWNtOTNJRDA5UFNCaUxuSnZkeWtnZTF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCaExtTnZiQ0F0SUdJdVkyOXNPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJoTG5KdmR5QXRJR0l1Y205M08xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhKdmQwTnZiRlpoYkhWbGN6dGNiaUFnZlZ4dVhHNGdJR2RsZEVScGJYTW9LVG9nYm5WdFltVnlXMTBnZTF4dUlDQWdJSEpsZEhWeWJpQmJkR2hwY3k1dVVtOTNjeXdnZEdocGN5NXVRMjlzYzEwN1hHNGdJSDFjYmx4dUlDQm5aWFJTYjNkektDazZJRzUxYldKbGNsdGRJSHRjYmlBZ0lISmxkSFZ5YmlCQmNuSmhlUzVtY205dEtIUm9hWE11Wlc1MGNtbGxjeXdnS0Z0clpYa3NJSFpoYkhWbFhTa2dQVDRnZG1Gc2RXVXVjbTkzS1R0Y2JpQWdJQzh2SUhKbGRIVnliaUIwYUdsekxuSnZkM01nWVhNZ2RXNXJibTkzYmlCaGN5QnVkVzFpWlhKYlhUdGNiaUFnZlZ4dVhHNGdJR2RsZEVOdmJITW9LVG9nYm5WdFltVnlXMTE3WEc0Z0lDQnlaWFIxY200Z1FYSnlZWGt1Wm5KdmJTaDBhR2x6TG1WdWRISnBaWE1zSUNoYmEyVjVMQ0IyWVd4MVpWMHBJRDArSUhaaGJIVmxMbU52YkNrN1hHNGdJQ0F2THlCeVpYUjFjbTRnZEdocGN5NWpiMnh6SUdGeklIVnVhMjV2ZDI0Z1lYTWdiblZ0WW1WeVcxMDdYRzRnSUgxY2JseHVJQ0JuWlhSV1lXeDFaWE1vS1RvZ2JuVnRZbVZ5VzEwZ2UxeHVJQ0J5WlhSMWNtNGdRWEp5WVhrdVpuSnZiU2gwYUdsekxtVnVkSEpwWlhNc0lDaGJhMlY1TENCMllXeDFaVjBwSUQwK0lIWmhiSFZsTG5aaGJIVmxLVHRjYmlBZ0x5OXlaWFIxY200Z2RHaHBjeTUyWVd4MVpYTWdZWE1nZFc1cmJtOTNiaUJoY3lCdWRXMWlaWEpiWFR0Y2JpQWdmVnh1WEc0Z0lHWnZja1ZoWTJnb1ptNDZJQ2gyWVd4MVpUb2diblZ0WW1WeUxDQnliM2M2SUc1MWJXSmxjaXdnWTI5c09pQnVkVzFpWlhJcElEMCtJSFp2YVdRcE9pQjJiMmxrSUh0Y2JpQWdJQ0IwYUdsekxtVnVkSEpwWlhNdVptOXlSV0ZqYUNoMllXeDFaU0E5UGlCbWJpaDJZV3gxWlM1MllXeDFaU3dnZG1Gc2RXVXVjbTkzTENCMllXeDFaUzVqYjJ3cEtUdGNiaUFnZlZ4dVhHNGdJRzFoY0NobWJqb2dLSFpoYkhWbE9pQnVkVzFpWlhJc0lISnZkem9nYm5WdFltVnlMQ0JqYjJ3NklHNTFiV0psY2lrZ1BUNGdiblZ0WW1WeUtUb2dVM0JoY25ObFRXRjBjbWw0SUh0Y2JpQWdJQ0JqYjI1emRDQjJZV3h6SUQwZ2JtVjNJRVpzYjJGME16SkJjbkpoZVNoMGFHbHpMbVZ1ZEhKcFpYTXVjMmw2WlNrN1hHNGdJQ0FnYkdWMElHa2dQU0F3WEc0Z0lDQWdkR2hwY3k1bGJuUnlhV1Z6TG1admNrVmhZMmdvZG1Gc2RXVWdQVDRnZTF4dUlDQWdJQ0FnZG1Gc2MxdHBLeXRkSUQwZ1ptNG9kbUZzZFdVdWRtRnNkV1VzSUhaaGJIVmxMbkp2ZHl3Z2RtRnNkV1V1WTI5c0tUdGNiaUFnSUNCOUtUdGNiaUFnSUNCamIyNXpkQ0JrYVcxeklEMGdXM1JvYVhNdWJsSnZkM01zSUhSb2FYTXVia052YkhOZE8xeHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1UzQmhjbk5sVFdGMGNtbDRLSFJvYVhNdVoyVjBVbTkzY3lncExDQjBhR2x6TG1kbGRFTnZiSE1vS1N3Z2RtRnNjeUJoY3lCMWJtdHViM2R1SUdGeklHNTFiV0psY2x0ZExDQmthVzF6S1R0Y2JpQWdmVnh1WEc0Z0lIUnZRWEp5WVhrb0tTQjdYRzRnSUNBZ1kyOXVjM1FnY205M2N6b2dkVzVrWldacGJtVmtXMTBnUFNCMWRHbHNjeTVsYlhCMGVTaDBhR2x6TG01U2IzZHpLVHRjYmlBZ0lDQmpiMjV6ZENCdmRYUndkWFFnUFNCeWIzZHpMbTFoY0Nnb0tTQTlQaUI3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkWFJwYkhNdWVtVnliM01vZEdocGN5NXVRMjlzY3lrN1hHNGdJQ0FnZlNrN1hHNGdJQ0FnZEdocGN5NWxiblJ5YVdWekxtWnZja1ZoWTJnb2RtRnNkV1VnUFQ0Z2UxeHVJQ0FnSUNBZ2IzVjBjSFYwVzNaaGJIVmxMbkp2ZDExYmRtRnNkV1V1WTI5c1hTQTlJSFpoYkhWbExuWmhiSFZsTzF4dUlDQWdJSDBwTzF4dUlDQWdJSEpsZEhWeWJpQnZkWFJ3ZFhRN1hHNGdJSDFjYm4xY2JseHVMeW9xWEc0Z0tpQlVjbUZ1YzNCdmMyVWdZU0J6Y0dGeWMyVWdiV0YwY21sNFhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIwY21GdWMzQnZjMlVvYldGMGNtbDRPaUJUY0dGeWMyVk5ZWFJ5YVhncE9pQlRjR0Z5YzJWTllYUnlhWGdnZTF4dUlDQmpiMjV6ZENCdmJHUlNiM2R6SUQwZ2JXRjBjbWw0TG1kbGRGSnZkM01vS1R0Y2JpQWdZMjl1YzNRZ2IyeGtRMjlzY3lBOUlHMWhkSEpwZUM1blpYUkRiMnh6S0NrN1hHNGdJR052Ym5OMElHOXNaRlpoYkhNZ1BTQnRZWFJ5YVhndVoyVjBWbUZzZFdWektDazdYRzRnSUdOdmJuTjBJRzFoZEd4bGJpQTlJRzlzWkVOdmJITXViR1Z1WjNSb08xeHVJQ0JqYjI1emRDQmpiMnh6SUQwZ2JtVjNJRWx1ZERNeVFYSnlZWGtvYldGMGJHVnVLVHRjYmlBZ1kyOXVjM1FnY205M2N5QTlJRzVsZHlCSmJuUXpNa0Z5Y21GNUtHMWhkR3hsYmlrN1hHNGdJR052Ym5OMElIWmhiSE1nUFNCdVpYY2dSbXh2WVhRek1rRnljbUY1S0cxaGRHeGxiaWs3WEc1Y2JpQWdZMjlzY3k1elpYUW9iMnhrVW05M2N5azdYRzRnSUhKdmQzTXVjMlYwS0c5c1pFTnZiSE1wTzF4dUlDQjJZV3h6TG5ObGRDaHZiR1JXWVd4ektUdGNiaUFnWTI5dWMzUWdaR2x0Y3lBOUlGdHRZWFJ5YVhndWJrTnZiSE1zSUcxaGRISnBlQzV1VW05M2MxMDdYRzRnSUhKbGRIVnliaUJ1WlhjZ1UzQmhjbk5sVFdGMGNtbDRLSEp2ZDNNc0lHTnZiSE1zSUhaaGJITXNJR1JwYlhNcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVOdmJuTjBjblZqZENCaElITndZWEp6WlNCcFpHVnVkR2wwZVNCdFlYUnlhWGhjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHbGtaVzUwYVhSNUtITnBlbVU2SUc1MWJXSmxjbHRkS1RvZ1UzQmhjbk5sVFdGMGNtbDRJSHRjYmlBZ1kyOXVjM1FnVzNKdmQzTmRJRDBnYzJsNlpUdGNiaUFnWTI5dWMzUWdiV0YwY21sNElEMGdibVYzSUZOd1lYSnpaVTFoZEhKcGVDaGJYU3dnVzEwc0lGdGRMQ0J6YVhwbEtUdGNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCeWIzZHpPeUJwS3lzcElIdGNiaUFnSUNCdFlYUnlhWGd1YzJWMEtHa3NJR2tzSURFcE8xeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCdFlYUnlhWGc3WEc1OVhHNWNiaThxS2x4dUlDb2dSV3hsYldWdWRDMTNhWE5sSUcxMWJIUnBjR3hwWTJGMGFXOXVJRzltSUhSM2J5QnRZWFJ5YVdObGMxeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY0dGcGNuZHBjMlZOZFd4MGFYQnNlU2hjYmlBZ1lUb2dVM0JoY25ObFRXRjBjbWw0TEZ4dUlDQmlPaUJUY0dGeWMyVk5ZWFJ5YVhoY2JpazZJRk53WVhKelpVMWhkSEpwZUNCN1hHNGdJSEpsZEhWeWJpQmxiR1Z0Wlc1MFYybHpaU2hoTENCaUxDQW9lQ3dnZVNrZ1BUNGdlQ0FxSUhrcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVWc1pXMWxiblF0ZDJselpTQmhaR1JwZEdsdmJpQnZaaUIwZDI4Z2JXRjBjbWxqWlhOY2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR0ZrWkNoaE9pQlRjR0Z5YzJWTllYUnlhWGdzSUdJNklGTndZWEp6WlUxaGRISnBlQ2s2SUZOd1lYSnpaVTFoZEhKcGVDQjdYRzRnSUhKbGRIVnliaUJsYkdWdFpXNTBWMmx6WlNoaExDQmlMQ0FvZUN3Z2VTa2dQVDRnZUNBcklIa3BPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFVnNaVzFsYm5RdGQybHpaU0J6ZFdKMGNtRmpkR2x2YmlCdlppQjBkMjhnYldGMGNtbGpaWE5jYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlITjFZblJ5WVdOMEtHRTZJRk53WVhKelpVMWhkSEpwZUN3Z1lqb2dVM0JoY25ObFRXRjBjbWw0S1RvZ1UzQmhjbk5sVFdGMGNtbDRJSHRjYmlBZ2NtVjBkWEp1SUdWc1pXMWxiblJYYVhObEtHRXNJR0lzSUNoNExDQjVLU0E5UGlCNElDMGdlU2s3WEc1OVhHNWNiaThxS2x4dUlDb2dSV3hsYldWdWRDMTNhWE5sSUcxaGVHbHRkVzBnYjJZZ2RIZHZJRzFoZEhKcFkyVnpYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCdFlYaHBiWFZ0S0dFNklGTndZWEp6WlUxaGRISnBlQ3dnWWpvZ1UzQmhjbk5sVFdGMGNtbDRLVG9nVTNCaGNuTmxUV0YwY21sNElIdGNiaUFnY21WMGRYSnVJR1ZzWlcxbGJuUlhhWE5sS0dFc0lHSXNJQ2g0TENCNUtTQTlQaUFvZUNBK0lIa2dQeUI0SURvZ2VTa3BPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGTmpZV3hoY2lCdGRXeDBhWEJzYVdOaGRHbHZiaUJ2WmlCMGQyOGdiV0YwY21salpYTmNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUcxMWJIUnBjR3g1VTJOaGJHRnlLR0U2SUZOd1lYSnpaVTFoZEhKcGVDd2djMk5oYkdGeU9pQnVkVzFpWlhJcE9pQlRjR0Z5YzJWTllYUnlhWGdnZTF4dUlDQnlaWFIxY200Z1lTNXRZWEFvS0haaGJIVmxPaUJ1ZFcxaVpYSXBJRDArSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkbUZzZFdVZ0tpQnpZMkZzWVhJN1hHNGdJSDBwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRkpsZEhWeWJuTWdZU0J1WlhjZ2JXRjBjbWw0SUhkcGRHZ2dlbVZ5YnlCbGJuUnlhV1Z6SUhKbGJXOTJaV1F1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmxiR2x0YVc1aGRHVmFaWEp2Y3lodE9pQlRjR0Z5YzJWTllYUnlhWGdwSUh0Y2JpQWdZMjl1YzNRZ2VtVnliMGx1WkdsalpYTWdQU0J1WlhjZ1UyVjBLQ2s3WEc0Z0lHTnZibk4wSUhaaGJIVmxjeUE5SUcwdVoyVjBWbUZzZFdWektDazdYRzRnSUdOdmJuTjBJSEp2ZDNNZ1BTQnRMbWRsZEZKdmQzTW9LVHRjYmlBZ1kyOXVjM1FnWTI5c2N5QTlJRzB1WjJWMFEyOXNjeWdwTzF4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFpoYkhWbGN5NXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJR2xtSUNoMllXeDFaWE5iYVYwZ1BUMDlJREFwSUh0Y2JpQWdJQ0FnSUhwbGNtOUpibVJwWTJWekxtRmtaQ2hwS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnWTI5dWMzUWdjbVZ0YjNabFFubGFaWEp2U1c1a1pYZ2dQU0FvWHpvZ1lXNTVMQ0JwYm1SbGVEb2diblZ0WW1WeUtTQTlQaUFoZW1WeWIwbHVaR2xqWlhNdWFHRnpLR2x1WkdWNEtUdGNiaUFnWTI5dWMzUWdibVY0ZEZaaGJIVmxjeUE5SUhaaGJIVmxjeTVtYVd4MFpYSW9jbVZ0YjNabFFubGFaWEp2U1c1a1pYZ3BPMXh1SUNCamIyNXpkQ0J1WlhoMFVtOTNjeUE5SUhKdmQzTXVabWxzZEdWeUtISmxiVzkyWlVKNVdtVnliMGx1WkdWNEtUdGNiaUFnWTI5dWMzUWdibVY0ZEVOdmJITWdQU0JqYjJ4ekxtWnBiSFJsY2loeVpXMXZkbVZDZVZwbGNtOUpibVJsZUNrN1hHNWNiaUFnY21WMGRYSnVJRzVsZHlCVGNHRnljMlZOWVhSeWFYZ29ibVY0ZEZKdmQzTXNJRzVsZUhSRGIyeHpMQ0J1WlhoMFZtRnNkV1Z6TENCdExtZGxkRVJwYlhNb0tTazdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1RtOXliV0ZzYVhwaGRHbHZiaUJ2WmlCaElITndZWEp6WlNCdFlYUnlhWGd1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnViM0p0WVd4cGVtVW9iVG9nVTNCaGNuTmxUV0YwY21sNExDQnViM0p0Vkhsd1pTQTlJRTV2Y20xVWVYQmxMbXd5S1NCN1hHNGdJR052Ym5OMElHNXZjbTFHYmlBOUlHNXZjbTFHYm5OYmJtOXliVlI1Y0dWZE8xeHVYRzRnSUdOdmJuTjBJR052YkhOQ2VWSnZkeUE5SUc1bGR5Qk5ZWEE4Ym5WdFltVnlMQ0J1ZFcxaVpYSmJYVDRvS1R0Y2JpQWdiUzVtYjNKRllXTm9LQ2hmTENCeWIzY3NJR052YkNrZ1BUNGdlMXh1SUNBZ0lHTnZibk4wSUdOdmJITWdQU0JqYjJ4elFubFNiM2N1WjJWMEtISnZkeWtnZkh3Z1cxMDdYRzRnSUNBZ1kyOXNjeTV3ZFhOb0tHTnZiQ2s3WEc0Z0lDQWdZMjlzYzBKNVVtOTNMbk5sZENoeWIzY3NJR052YkhNcE8xeHVJQ0I5S1R0Y2JseHVJQ0JqYjI1emRDQnVaWGgwVFdGMGNtbDRJRDBnYm1WM0lGTndZWEp6WlUxaGRISnBlQ2hiWFN3Z1cxMHNJRnRkTENCdExtZGxkRVJwYlhNb0tTazdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2NtOTNJRzltSUdOdmJITkNlVkp2ZHk1clpYbHpLQ2twSUh0Y2JpQWdJQ0JqYjI1emRDQmpiMnh6SUQwZ1kyOXNjMEo1VW05M0xtZGxkQ2h5YjNjcElTNXpiM0owS0NrN1hHNWNiaUFnSUNCamIyNXpkQ0IyWVd4eklEMGdZMjlzY3k1dFlYQW9ZMjlzSUQwK0lHMHVaMlYwS0hKdmR5d2dZMjlzS1NrN1hHNGdJQ0FnWTI5dWMzUWdibTl5YlNBOUlHNXZjbTFHYmloMllXeHpLVHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJRzV2Y20wdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJRzVsZUhSTllYUnlhWGd1YzJWMEtISnZkeXdnWTI5c2MxdHBYU3dnYm05eWJWdHBYU2s3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnY21WMGRYSnVJRzVsZUhSTllYUnlhWGc3WEc1OVhHNWNiaThxS2x4dUlDb2dWbVZqZEc5eUlHNXZjbTFoYkdsNllYUnBiMjRnWm5WdVkzUnBiMjV6WEc0Z0tpOWNiblI1Y0dVZ1RtOXliVVp1Y3lBOUlIc2dXMnRsZVNCcGJpQk9iM0p0Vkhsd1pWMDZJQ2gyT2lCdWRXMWlaWEpiWFNrZ1BUNGdiblZ0WW1WeVcxMGdmVHRjYm1OdmJuTjBJRzV2Y20xR2JuTTZJRTV2Y20xR2JuTWdQU0I3WEc0Z0lGdE9iM0p0Vkhsd1pTNXRZWGhkT2lBb2VITTZJRzUxYldKbGNsdGRLU0E5UGlCN1hHNGdJQ0FnYkdWMElHMWhlQ0E5SUMxSmJtWnBibWwwZVR0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUhoekxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0J0WVhnZ1BTQjRjMXRwWFNBK0lHMWhlQ0EvSUhoelcybGRJRG9nYldGNE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdlSE11YldGd0tIZ2dQVDRnZUNBdklHMWhlQ2s3WEc0Z0lIMHNYRzRnSUZ0T2IzSnRWSGx3WlM1c01WMDZJQ2g0Y3pvZ2JuVnRZbVZ5VzEwcElEMCtJSHRjYmlBZ0lDQnNaWFFnYzNWdElEMGdNRHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSGh6TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQnpkVzBnS3owZ2VITmJhVjA3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCNGN5NXRZWEFvZUNBOVBpQjRJQzhnYzNWdEtUdGNiaUFnZlN4Y2JpQWdXMDV2Y20xVWVYQmxMbXd5WFRvZ0tIaHpPaUJ1ZFcxaVpYSmJYU2tnUFQ0Z2UxeHVJQ0FnSUd4bGRDQnpkVzBnUFNBd08xeHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2VITXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUhOMWJTQXJQU0I0YzF0cFhTQXFLaUF5TzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2VITXViV0Z3S0hnZ1BUNGdUV0YwYUM1emNYSjBLSGdnS2lvZ01pQXZJSE4xYlNrcE8xeHVJQ0I5TEZ4dWZUdGNibHh1Wlhod2IzSjBJR052Ym5OMElHVnVkVzBnVG05eWJWUjVjR1VnZTF4dUlDQnRZWGdnUFNBbmJXRjRKeXhjYmlBZ2JERWdQU0FuYkRFbkxGeHVJQ0JzTWlBOUlDZHNNaWNzWEc1OVhHNWNiaThxS2x4dUlDb2dTR1ZzY0dWeUlHWjFibU4wYVc5dUlHWnZjaUJsYkdWdFpXNTBMWGRwYzJVZ2IzQmxjbUYwYVc5dWN5NWNiaUFxTDF4dVpuVnVZM1JwYjI0Z1pXeGxiV1Z1ZEZkcGMyVW9YRzRnSUdFNklGTndZWEp6WlUxaGRISnBlQ3hjYmlBZ1lqb2dVM0JoY25ObFRXRjBjbWw0TEZ4dUlDQnZjRG9nS0hnNklHNTFiV0psY2l3Z2VUb2diblZ0WW1WeUtTQTlQaUJ1ZFcxaVpYSmNiaWs2SUZOd1lYSnpaVTFoZEhKcGVDQjdYRzRnSUdOdmJuTjBJSFpwYzJsMFpXUWdQU0J1WlhjZ1UyVjBQSE4wY21sdVp6NG9LVHRjYmlBZ1kyOXVjM1FnY205M2N6b2diblZ0WW1WeVcxMGdQU0JiWFR0Y2JpQWdZMjl1YzNRZ1kyOXNjem9nYm5WdFltVnlXMTBnUFNCYlhUdGNiaUFnWTI5dWMzUWdkbUZzY3pvZ2JuVnRZbVZ5VzEwZ1BTQmJYVHRjYmx4dUlDQmpiMjV6ZENCdmNHVnlZWFJsSUQwZ0tISnZkem9nYm5WdFltVnlMQ0JqYjJ3NklHNTFiV0psY2lrZ1BUNGdlMXh1SUNBZ0lISnZkM011Y0hWemFDaHliM2NwTzF4dUlDQWdJR052YkhNdWNIVnphQ2hqYjJ3cE8xeHVJQ0FnSUdOdmJuTjBJRzVsZUhSV1lXeDFaU0E5SUc5d0tHRXVaMlYwS0hKdmR5d2dZMjlzS1N3Z1lpNW5aWFFvY205M0xDQmpiMndwS1R0Y2JpQWdJQ0IyWVd4ekxuQjFjMmdvYm1WNGRGWmhiSFZsS1R0Y2JpQWdmVHRjYmlBZ1kyOXVjM1FnZG1Gc2RXVnpRU0E5SUdFdVoyVjBWbUZzZFdWektDazdYRzRnSUdOdmJuTjBJSEp2ZDNOQklEMGdZUzVuWlhSU2IzZHpLQ2s3WEc0Z0lHTnZibk4wSUdOdmJITkJJRDBnWVM1blpYUkRiMnh6S0NrN1hHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnZG1Gc2RXVnpRUzVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUdOdmJuTjBJSEp2ZHlBOUlISnZkM05CVzJsZE8xeHVJQ0FnSUdOdmJuTjBJR052YkNBOUlHTnZiSE5CVzJsZE8xeHVJQ0FnSUdOdmJuTjBJR3RsZVNBOUlHQWtlM0p2ZDMwNkpIdGpiMng5WUR0Y2JpQWdJQ0IyYVhOcGRHVmtMbUZrWkNoclpYa3BPMXh1SUNBZ0lHOXdaWEpoZEdVb2NtOTNMQ0JqYjJ3cE8xeHVJQ0I5WEc1Y2JpQWdZMjl1YzNRZ2RtRnNkV1Z6UWlBOUlHSXVaMlYwVm1Gc2RXVnpLQ2s3WEc0Z0lHTnZibk4wSUhKdmQzTkNJRDBnWWk1blpYUlNiM2R6S0NrN1hHNGdJR052Ym5OMElHTnZiSE5DSUQwZ1lpNW5aWFJEYjJ4ektDazdYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2RtRnNkV1Z6UWk1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lHTnZibk4wSUhKdmR5QTlJSEp2ZDNOQ1cybGRPMXh1SUNBZ0lHTnZibk4wSUdOdmJDQTlJR052YkhOQ1cybGRPMXh1SUNBZ0lHTnZibk4wSUd0bGVTQTlJR0FrZTNKdmQzMDZKSHRqYjJ4OVlEdGNiaUFnSUNCcFppQW9kbWx6YVhSbFpDNW9ZWE1vYTJWNUtTa2dZMjl1ZEdsdWRXVTdYRzRnSUNBZ2IzQmxjbUYwWlNoeWIzY3NJR052YkNrN1hHNGdJSDFjYmx4dUlDQmpiMjV6ZENCa2FXMXpJRDBnVzJFdWJsSnZkM01zSUdFdWJrTnZiSE5kTzF4dUlDQnlaWFIxY200Z2JtVjNJRk53WVhKelpVMWhkSEpwZUNoeWIzZHpMQ0JqYjJ4ekxDQjJZV3h6TENCa2FXMXpLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQklaV3h3WlhJZ1puVnVZM1JwYjI0Z1ptOXlJR2RsZEhScGJtY2daR0YwWVN3Z2FXNWthV05sY3l3Z1lXNWtJR2x1Y0hSeUlHRnljbUY1Y3lCbWNtOXRJR0VnYzNCaGNuTmxYRzRnS2lCdFlYUnlhWGdnZEc4Z1ptOXNiRzkzSUdOemNpQnRZWFJ5YVhnZ1kyOXVkbVZ1ZEdsdmJuTXVJRk4xY0dWeUlHbHVaV1ptYVdOcFpXNTBJQ2hoYm1RZ2EybHVaQ0J2Wmx4dUlDb2daR1ZtWldGMGN5QjBhR1VnY0hWeWNHOXpaU0J2WmlCMGFHbHpJR052Ym5abGJuUnBiMjRwSUdKMWRDQmhJR3h2ZENCdlppQjBhR1VnY0c5eWRHVmtJSEI1ZEdodmJpQjBjbVZsWEc0Z0tpQnpaV0Z5WTJnZ2JHOW5hV01nWkdWd1pXNWtjeUJ2YmlCMGFHbHpJR1JoZEdFZ1ptOXliV0YwTGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaMlYwUTFOU0tIZzZJRk53WVhKelpVMWhkSEpwZUNrZ2UxeHVJQ0JqYjI1emRDQmxiblJ5YVdWek9pQkZiblJ5ZVZ0ZElEMGdXMTA3WEc1Y2JpQWdlQzVtYjNKRllXTm9LQ2gyWVd4MVpTd2djbTkzTENCamIyd3BJRDArSUh0Y2JpQWdJQ0JsYm5SeWFXVnpMbkIxYzJnb2V5QjJZV3gxWlN3Z2NtOTNMQ0JqYjJ3Z2ZTazdYRzRnSUgwcE8xeHVYRzRnSUdWdWRISnBaWE11YzI5eWRDZ29ZU3dnWWlrZ1BUNGdlMXh1SUNBZ0lHbG1JQ2hoTG5KdmR5QTlQVDBnWWk1eWIzY3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQmhMbU52YkNBdElHSXVZMjlzTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1lTNXliM2NnTFNCaUxuSnZkenRjYmlBZ0lDQjlYRzRnSUgwcE8xeHVYRzRnSUdOdmJuTjBJR2x1WkdsalpYTTZJRzUxYldKbGNsdGRJRDBnVzEwN1hHNGdJR052Ym5OMElIWmhiSFZsY3pvZ2JuVnRZbVZ5VzEwZ1BTQmJYVHRjYmlBZ1kyOXVjM1FnYVc1a2NIUnlPaUJ1ZFcxaVpYSmJYU0E5SUZ0ZE8xeHVYRzRnSUd4bGRDQmpkWEp5Wlc1MFVtOTNJRDBnTFRFN1hHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnWlc1MGNtbGxjeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUdOdmJuTjBJSHNnY205M0xDQmpiMndzSUhaaGJIVmxJSDBnUFNCbGJuUnlhV1Z6VzJsZE8xeHVJQ0FnSUdsbUlDaHliM2NnSVQwOUlHTjFjbkpsYm5SU2IzY3BJSHRjYmlBZ0lDQWdJR04xY25KbGJuUlNiM2NnUFNCeWIzYzdYRzRnSUNBZ0lDQnBibVJ3ZEhJdWNIVnphQ2hwS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdhVzVrYVdObGN5NXdkWE5vS0dOdmJDazdYRzRnSUNBZ2RtRnNkV1Z6TG5CMWMyZ29kbUZzZFdVcE8xeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlIc2dhVzVrYVdObGN5d2dkbUZzZFdWekxDQnBibVJ3ZEhJZ2ZUdGNibjFjYmlKZGZRPT0iLCIvKipcbiAqIEBsaWNlbnNlXG4gKlxuICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIExMQy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqL1xuLyoqXG4gKiBUaGlzIGlzIGEgSmF2YVNjcmlwdCByZWltcGxlbWVudGF0aW9uIG9mIFVNQVAgKG9yaWdpbmFsIGxpY2Vuc2UgYmVsb3cpLCBmcm9tXG4gKiB0aGUgcHl0aG9uIGltcGxlbWVudGF0aW9uIGZvdW5kIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9sbWNpbm5lcy91bWFwLlxuICpcbiAqIEBhdXRob3IgYW5keWNvZW5lbkBnb29nbGUuY29tIChBbmR5IENvZW5lbilcbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQlNEIDMtQ2xhdXNlIExpY2Vuc2VcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTcsIExlbGFuZCBNY0lubmVzXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG4gKlxuICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXNcbiAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKlxuICogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb25cbiAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogKiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzXG4gKiAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tXG4gKiAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCJcbiAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRVxuICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SXG4gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUlxuICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSxcbiAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFXG4gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCBjbGFzcyBGbGF0VHJlZSB7XG4gICAgY29uc3RydWN0b3IoaHlwZXJwbGFuZXMsIG9mZnNldHMsIGNoaWxkcmVuLCBpbmRpY2VzKSB7XG4gICAgICAgIHRoaXMuaHlwZXJwbGFuZXMgPSBoeXBlcnBsYW5lcztcbiAgICAgICAgdGhpcy5vZmZzZXRzID0gb2Zmc2V0cztcbiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgICAgICB0aGlzLmluZGljZXMgPSBpbmRpY2VzO1xuICAgIH1cbn1cbi8qKlxuICogQnVpbGQgYSByYW5kb20gcHJvamVjdGlvbiBmb3Jlc3Qgd2l0aCBgYG5UcmVlc2BgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZUZvcmVzdChkYXRhLCBuTmVpZ2hib3JzLCBuVHJlZXMsIHJhbmRvbSkge1xuICAgIGNvbnN0IGxlYWZTaXplID0gTWF0aC5tYXgoMTAsIG5OZWlnaGJvcnMpO1xuICAgIGNvbnN0IHRyZWVzID0gdXRpbHNcbiAgICAgICAgLnJhbmdlKG5UcmVlcylcbiAgICAgICAgLm1hcCgoXywgaSkgPT4gbWFrZVRyZWUoZGF0YSwgbGVhZlNpemUsIGksIHJhbmRvbSkpO1xuICAgIGNvbnN0IGZvcmVzdCA9IHRyZWVzLm1hcCh0cmVlID0+IGZsYXR0ZW5UcmVlKHRyZWUsIGxlYWZTaXplKSk7XG4gICAgcmV0dXJuIGZvcmVzdDtcbn1cbi8qKlxuICogQ29uc3RydWN0IGEgcmFuZG9tIHByb2plY3Rpb24gdHJlZSBiYXNlZCBvbiBgYGRhdGFgYCB3aXRoIGxlYXZlc1xuICogb2Ygc2l6ZSBhdCBtb3N0IGBgbGVhZlNpemVgYFxuICovXG5mdW5jdGlvbiBtYWtlVHJlZShkYXRhLCBsZWFmU2l6ZSA9IDMwLCBuLCByYW5kb20pIHtcbiAgICBjb25zdCBpbmRpY2VzID0gdXRpbHMucmFuZ2UoZGF0YS5sZW5ndGgpO1xuICAgIGNvbnN0IHRyZWUgPSBtYWtlRXVjbGlkZWFuVHJlZShkYXRhLCBpbmRpY2VzLCBsZWFmU2l6ZSwgbiwgcmFuZG9tKTtcbiAgICByZXR1cm4gdHJlZTtcbn1cbmZ1bmN0aW9uIG1ha2VFdWNsaWRlYW5UcmVlKGRhdGEsIGluZGljZXMsIGxlYWZTaXplID0gMzAsIHEsIHJhbmRvbSkge1xuICAgIGlmIChpbmRpY2VzLmxlbmd0aCA+IGxlYWZTaXplKSB7XG4gICAgICAgIGNvbnN0IHNwbGl0UmVzdWx0cyA9IGV1Y2xpZGVhblJhbmRvbVByb2plY3Rpb25TcGxpdChkYXRhLCBpbmRpY2VzLCByYW5kb20pO1xuICAgICAgICBjb25zdCB7IGluZGljZXNMZWZ0LCBpbmRpY2VzUmlnaHQsIGh5cGVycGxhbmUsIG9mZnNldCB9ID0gc3BsaXRSZXN1bHRzO1xuICAgICAgICBjb25zdCBsZWZ0Q2hpbGQgPSBtYWtlRXVjbGlkZWFuVHJlZShkYXRhLCBpbmRpY2VzTGVmdCwgbGVhZlNpemUsIHEgKyAxLCByYW5kb20pO1xuICAgICAgICBjb25zdCByaWdodENoaWxkID0gbWFrZUV1Y2xpZGVhblRyZWUoZGF0YSwgaW5kaWNlc1JpZ2h0LCBsZWFmU2l6ZSwgcSArIDEsIHJhbmRvbSk7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB7IGxlZnRDaGlsZCwgcmlnaHRDaGlsZCwgaXNMZWFmOiBmYWxzZSwgaHlwZXJwbGFuZSwgb2Zmc2V0IH07XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IHsgaW5kaWNlcywgaXNMZWFmOiB0cnVlIH07XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbn1cbi8qKlxuICogR2l2ZW4gYSBzZXQgb2YgYGBpbmRpY2VzYGAgZm9yIGRhdGEgcG9pbnRzIGZyb20gYGBkYXRhYGAsIGNyZWF0ZVxuICogYSByYW5kb20gaHlwZXJwbGFuZSB0byBzcGxpdCB0aGUgZGF0YSwgcmV0dXJuaW5nIHR3byBhcnJheXMgaW5kaWNlc1xuICogdGhhdCBmYWxsIG9uIGVpdGhlciBzaWRlIG9mIHRoZSBoeXBlcnBsYW5lLiBUaGlzIGlzIHRoZSBiYXNpcyBmb3IgYVxuICogcmFuZG9tIHByb2plY3Rpb24gdHJlZSwgd2hpY2ggc2ltcGx5IHVzZXMgdGhpcyBzcGxpdHRpbmcgcmVjdXJzaXZlbHkuXG4gKiBUaGlzIHBhcnRpY3VsYXIgc3BsaXQgdXNlcyBldWNsaWRlYW4gZGlzdGFuY2UgdG8gZGV0ZXJtaW5lIHRoZSBoeXBlcnBsYW5lXG4gKiBhbmQgd2hpY2ggc2lkZSBlYWNoIGRhdGEgc2FtcGxlIGZhbGxzIG9uLlxuICovXG5mdW5jdGlvbiBldWNsaWRlYW5SYW5kb21Qcm9qZWN0aW9uU3BsaXQoZGF0YSwgaW5kaWNlcywgcmFuZG9tKSB7XG4gICAgY29uc3QgZGltID0gMTtcbiAgICAvLyBTZWxlY3QgdHdvIHJhbmRvbSBwb2ludHMsIHNldCB0aGUgaHlwZXJwbGFuZSBiZXR3ZWVuIHRoZW1cbiAgICBsZXQgbGVmdEluZGV4ID0gdXRpbHMudGF1UmFuZEludChpbmRpY2VzLmxlbmd0aCwgcmFuZG9tKTtcbiAgICBsZXQgcmlnaHRJbmRleCA9IHV0aWxzLnRhdVJhbmRJbnQoaW5kaWNlcy5sZW5ndGgsIHJhbmRvbSk7XG4gICAgcmlnaHRJbmRleCArPSBsZWZ0SW5kZXggPT09IHJpZ2h0SW5kZXggPyAxIDogMDtcbiAgICByaWdodEluZGV4ID0gcmlnaHRJbmRleCAlIGluZGljZXMubGVuZ3RoO1xuICAgIGNvbnN0IGxlZnQgPSBpbmRpY2VzW2xlZnRJbmRleF07XG4gICAgY29uc3QgcmlnaHQgPSBpbmRpY2VzW3JpZ2h0SW5kZXhdO1xuICAgIC8vIENvbXB1dGUgdGhlIG5vcm1hbCB2ZWN0b3IgdG8gdGhlIGh5cGVycGxhbmUgKHRoZSB2ZWN0b3IgYmV0d2VlbiB0aGUgdHdvXG4gICAgLy8gcG9pbnRzKSBhbmQgdGhlIG9mZnNldCBmcm9tIHRoZSBvcmlnaW5cbiAgICBsZXQgaHlwZXJwbGFuZU9mZnNldCA9IDA7XG4gICAgbGV0IGh5cGVycGxhbmVWZWN0b3IgPSAwO1xuICAgIGh5cGVycGxhbmVWZWN0b3IgPSBkYXRhW2xlZnRdIC0gZGF0YVtyaWdodF07XG4gICAgaHlwZXJwbGFuZU9mZnNldCAtPVxuICAgICAgICAoaHlwZXJwbGFuZVZlY3RvciAqIChkYXRhW2xlZnRdICsgZGF0YVtyaWdodF0pKSAvIDIuMDtcbiAgICAvLyBGb3IgZWFjaCBwb2ludCBjb21wdXRlIHRoZSBtYXJnaW4gKHByb2plY3QgaW50byBub3JtYWwgdmVjdG9yKVxuICAgIC8vIElmIHdlIGFyZSBvbiBsb3dlciBzaWRlIG9mIHRoZSBoeXBlcnBsYW5lIHB1dCBpbiBvbmUgcGlsZSwgb3RoZXJ3aXNlXG4gICAgLy8gcHV0IGl0IGluIHRoZSBvdGhlciBwaWxlIChpZiB3ZSBoaXQgaHlwZXJwbGFuZSBvbiB0aGUgbm9zZSwgZmxpcCBhIGNvaW4pXG4gICAgbGV0IG5MZWZ0ID0gMDtcbiAgICBsZXQgblJpZ2h0ID0gMDtcbiAgICBjb25zdCBzaWRlID0gdXRpbHMuemVyb3MoaW5kaWNlcy5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgbWFyZ2luID0gaHlwZXJwbGFuZU9mZnNldDtcbiAgICAgICAgbWFyZ2luICs9IGh5cGVycGxhbmVWZWN0b3IgKiBkYXRhW2luZGljZXNbaV1dO1xuICAgICAgICBpZiAobWFyZ2luID09PSAwKSB7XG4gICAgICAgICAgICBzaWRlW2ldID0gdXRpbHMudGF1UmFuZEludCgyLCByYW5kb20pO1xuICAgICAgICAgICAgaWYgKHNpZGVbaV0gPT09IDApIHtcbiAgICAgICAgICAgICAgICBuTGVmdCArPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgblJpZ2h0ICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWFyZ2luID4gMCkge1xuICAgICAgICAgICAgc2lkZVtpXSA9IDA7XG4gICAgICAgICAgICBuTGVmdCArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2lkZVtpXSA9IDE7XG4gICAgICAgICAgICBuUmlnaHQgKz0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBOb3cgdGhhdCB3ZSBoYXZlIHRoZSBjb3VudHMsIGFsbG9jYXRlIGFycmF5c1xuICAgIGNvbnN0IGluZGljZXNMZWZ0ID0gdXRpbHMuemVyb3MobkxlZnQpO1xuICAgIGNvbnN0IGluZGljZXNSaWdodCA9IHV0aWxzLnplcm9zKG5SaWdodCk7XG4gICAgLy8gUG9wdWxhdGUgdGhlIGFycmF5cyB3aXRoIGluZGljZXMgYWNjb3JkaW5nIHRvIHdoaWNoIHNpZGUgdGhleSBmZWxsIG9uXG4gICAgbkxlZnQgPSAwO1xuICAgIG5SaWdodCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaWRlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChzaWRlW2ldID09PSAwKSB7XG4gICAgICAgICAgICBpbmRpY2VzTGVmdFtuTGVmdF0gPSBpbmRpY2VzW2ldO1xuICAgICAgICAgICAgbkxlZnQgKz0gMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGluZGljZXNSaWdodFtuUmlnaHRdID0gaW5kaWNlc1tpXTtcbiAgICAgICAgICAgIG5SaWdodCArPSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGluZGljZXNMZWZ0LFxuICAgICAgICBpbmRpY2VzUmlnaHQsXG4gICAgICAgIGh5cGVycGxhbmU6IGh5cGVycGxhbmVWZWN0b3IsXG4gICAgICAgIG9mZnNldDogaHlwZXJwbGFuZU9mZnNldCxcbiAgICB9O1xufVxuZnVuY3Rpb24gZmxhdHRlblRyZWUodHJlZSwgbGVhZlNpemUpIHtcbiAgICBjb25zdCBuTm9kZXMgPSBudW1Ob2Rlcyh0cmVlKTtcbiAgICBjb25zdCBuTGVhdmVzID0gbnVtTGVhdmVzKHRyZWUpO1xuICAgIC8vIFRPRE86IFZlcmlmeSB0aGF0IHNwYXJzZSBjb2RlIGlzIG5vdCByZWxldmFudC4uLlxuICAgIGNvbnN0IGh5cGVycGxhbmVzID0gdXRpbHNcbiAgICAgICAgLnJhbmdlKG5Ob2RlcylcbiAgICAgICAgLm1hcCgoKSA9PiB0cmVlLmh5cGVycGxhbmUgPyAxIDogMCk7XG4gICAgY29uc3Qgb2Zmc2V0cyA9IHV0aWxzLnplcm9zKG5Ob2Rlcyk7XG4gICAgY29uc3QgY2hpbGRyZW4gPSB1dGlscy5yYW5nZShuTm9kZXMpLm1hcCgoKSA9PiBbLTEsIC0xXSk7XG4gICAgY29uc3QgaW5kaWNlcyA9IHV0aWxzXG4gICAgICAgIC5yYW5nZShuTGVhdmVzKVxuICAgICAgICAubWFwKCgpID0+IHV0aWxzLnJhbmdlKGxlYWZTaXplKS5tYXAoKCkgPT4gLTEpKTtcbiAgICByZWN1cnNpdmVGbGF0dGVuKHRyZWUsIGh5cGVycGxhbmVzLCBvZmZzZXRzLCBjaGlsZHJlbiwgaW5kaWNlcywgMCwgMCk7XG4gICAgcmV0dXJuIG5ldyBGbGF0VHJlZShoeXBlcnBsYW5lcywgb2Zmc2V0cywgY2hpbGRyZW4sIGluZGljZXMpO1xufVxuZnVuY3Rpb24gcmVjdXJzaXZlRmxhdHRlbih0cmVlLCBoeXBlcnBsYW5lcywgb2Zmc2V0cywgY2hpbGRyZW4sIGluZGljZXMsIG5vZGVOdW0sIGxlYWZOdW0pIHtcbiAgICBpZiAodHJlZS5pc0xlYWYpIHtcbiAgICAgICAgY2hpbGRyZW5bbm9kZU51bV1bMF0gPSAtbGVhZk51bTtcbiAgICAgICAgLy8gVE9ETzogVHJpcGxlIGNoZWNrIHRoaXMgb3BlcmF0aW9uIGNvcnJlc3BvbmRzIHRvXG4gICAgICAgIC8vIGluZGljZXNbbGVhZk51bSA6IHRyZWUuaW5kaWNlcy5zaGFwZVswXV0gPSB0cmVlLmluZGljZXNcbiAgICAgICAgaW5kaWNlc1tsZWFmTnVtXS5zcGxpY2UoMCwgdHJlZS5pbmRpY2VzLmxlbmd0aCwgLi4udHJlZS5pbmRpY2VzKTtcbiAgICAgICAgbGVhZk51bSArPSAxO1xuICAgICAgICByZXR1cm4geyBub2RlTnVtLCBsZWFmTnVtIH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBoeXBlcnBsYW5lc1tub2RlTnVtXSA9IHRyZWUuaHlwZXJwbGFuZTtcbiAgICAgICAgb2Zmc2V0c1tub2RlTnVtXSA9IHRyZWUub2Zmc2V0O1xuICAgICAgICBjaGlsZHJlbltub2RlTnVtXVswXSA9IG5vZGVOdW0gKyAxO1xuICAgICAgICBjb25zdCBvbGROb2RlTnVtID0gbm9kZU51bTtcbiAgICAgICAgbGV0IHJlcyA9IHJlY3Vyc2l2ZUZsYXR0ZW4odHJlZS5sZWZ0Q2hpbGQsIGh5cGVycGxhbmVzLCBvZmZzZXRzLCBjaGlsZHJlbiwgaW5kaWNlcywgbm9kZU51bSArIDEsIGxlYWZOdW0pO1xuICAgICAgICBub2RlTnVtID0gcmVzLm5vZGVOdW07XG4gICAgICAgIGxlYWZOdW0gPSByZXMubGVhZk51bTtcbiAgICAgICAgY2hpbGRyZW5bb2xkTm9kZU51bV1bMV0gPSBub2RlTnVtICsgMTtcbiAgICAgICAgcmVzID0gcmVjdXJzaXZlRmxhdHRlbih0cmVlLnJpZ2h0Q2hpbGQsIGh5cGVycGxhbmVzLCBvZmZzZXRzLCBjaGlsZHJlbiwgaW5kaWNlcywgbm9kZU51bSArIDEsIGxlYWZOdW0pO1xuICAgICAgICByZXR1cm4geyBub2RlTnVtOiByZXMubm9kZU51bSwgbGVhZk51bTogcmVzLmxlYWZOdW0gfTtcbiAgICB9XG59XG5mdW5jdGlvbiBudW1Ob2Rlcyh0cmVlKSB7XG4gICAgaWYgKHRyZWUuaXNMZWFmKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDEgKyBudW1Ob2Rlcyh0cmVlLmxlZnRDaGlsZCkgKyBudW1Ob2Rlcyh0cmVlLnJpZ2h0Q2hpbGQpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG51bUxlYXZlcyh0cmVlKSB7XG4gICAgaWYgKHRyZWUuaXNMZWFmKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bUxlYXZlcyh0cmVlLmxlZnRDaGlsZCkgKyBudW1MZWF2ZXModHJlZS5yaWdodENoaWxkKTtcbiAgICB9XG59XG4vKipcbiAqIEdlbmVyYXRlIGFuIGFycmF5IG9mIHNldHMgb2YgY2FuZGlkYXRlIG5lYXJlc3QgbmVpZ2hib3JzIGJ5XG4gKiBjb25zdHJ1Y3RpbmcgYSByYW5kb20gcHJvamVjdGlvbiBmb3Jlc3QgYW5kIHRha2luZyB0aGUgbGVhdmVzIG9mIGFsbCB0aGVcbiAqIHRyZWVzLiBBbnkgZ2l2ZW4gdHJlZSBoYXMgbGVhdmVzIHRoYXQgYXJlIGEgc2V0IG9mIHBvdGVudGlhbCBuZWFyZXN0XG4gKiBuZWlnaGJvcnMuIEdpdmVuIGVub3VnaCB0cmVlcyB0aGUgc2V0IG9mIGFsbCBzdWNoIGxlYXZlcyBnaXZlcyBhIGdvb2RcbiAqIGxpa2VsaWhvb2Qgb2YgZ2V0dGluZyBhIGdvb2Qgc2V0IG9mIG5lYXJlc3QgbmVpZ2hib3JzIGluIGNvbXBvc2l0ZS4gU2luY2VcbiAqIHN1Y2ggYSByYW5kb20gcHJvamVjdGlvbiBmb3Jlc3QgaXMgaW5leHBlbnNpdmUgdG8gY29tcHV0ZSwgdGhpcyBjYW4gYmUgYVxuICogdXNlZnVsIG1lYW5zIG9mIHNlZWRpbmcgb3RoZXIgbmVhcmVzdCBuZWlnaGJvciBhbGdvcml0aG1zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZUxlYWZBcnJheShycEZvcmVzdCkge1xuICAgIGlmIChycEZvcmVzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IG91dHB1dCA9IFtdO1xuICAgICAgICBmb3IgKGxldCB0cmVlIG9mIHJwRm9yZXN0KSB7XG4gICAgICAgICAgICBvdXRwdXQucHVzaCguLi50cmVlLmluZGljZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gW1stMV1dO1xuICAgIH1cbn1cbi8qKlxuICogU2VsZWN0cyB0aGUgc2lkZSBvZiB0aGUgdHJlZSB0byBzZWFyY2ggZHVyaW5nIGZsYXQgdHJlZSBzZWFyY2guXG4gKi9cbmZ1bmN0aW9uIHNlbGVjdFNpZGUoaHlwZXJwbGFuZSwgb2Zmc2V0LCBwb2ludCwgcmFuZG9tKSB7XG4gICAgbGV0IG1hcmdpbiA9IG9mZnNldDtcbiAgICBtYXJnaW4gKz0gaHlwZXJwbGFuZSAqIHBvaW50O1xuICAgIGlmIChtYXJnaW4gPT09IDApIHtcbiAgICAgICAgY29uc3Qgc2lkZSA9IHV0aWxzLnRhdVJhbmRJbnQoMiwgcmFuZG9tKTtcbiAgICAgICAgcmV0dXJuIHNpZGU7XG4gICAgfVxuICAgIGVsc2UgaWYgKG1hcmdpbiA+IDApIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG59XG4vKipcbiAqIFNlYXJjaGVzIGEgZmxhdHRlbmVkIHJwLXRyZWUgZm9yIGEgcG9pbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWFyY2hGbGF0VHJlZShwb2ludCwgdHJlZSwgcmFuZG9tKSB7XG4gICAgbGV0IG5vZGUgPSAwO1xuICAgIHdoaWxlICh0cmVlLmNoaWxkcmVuW25vZGVdWzBdID4gMCkge1xuICAgICAgICBjb25zdCBzaWRlID0gc2VsZWN0U2lkZSh0cmVlLmh5cGVycGxhbmVzW25vZGVdLCB0cmVlLm9mZnNldHNbbm9kZV0sIHBvaW50LCByYW5kb20pO1xuICAgICAgICBpZiAoc2lkZSA9PT0gMCkge1xuICAgICAgICAgICAgbm9kZSA9IHRyZWUuY2hpbGRyZW5bbm9kZV1bMF07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBub2RlID0gdHJlZS5jaGlsZHJlbltub2RlXVsxXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBpbmRleCA9IC0xICogdHJlZS5jaGlsZHJlbltub2RlXVswXTtcbiAgICByZXR1cm4gdHJlZS5pbmRpY2VzW2luZGV4XTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRISmxaUzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluUnlaV1V1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRTdPenM3T3pzN096czdPenM3T3pzN08wZEJhVUpITzBGQlJVZzdPenM3TzBkQlMwYzdRVUZGU0RzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096dEhRU3RDUnp0QlFVVklMRTlCUVU4c1MwRkJTeXhMUVVGTExFMUJRVTBzVTBGQlV5eERRVUZETzBGQlpXcERMRTFCUVUwc1QwRkJUeXhSUVVGUk8wbEJRMjVDTEZsQlExTXNWMEZCY1VJc1JVRkRja0lzVDBGQmFVSXNSVUZEYWtJc1VVRkJiMElzUlVGRGNFSXNUMEZCYlVJN1VVRklia0lzWjBKQlFWY3NSMEZCV0N4WFFVRlhMRU5CUVZVN1VVRkRja0lzV1VGQlR5eEhRVUZRTEU5QlFVOHNRMEZCVlR0UlFVTnFRaXhoUVVGUkxFZEJRVklzVVVGQlVTeERRVUZaTzFGQlEzQkNMRmxCUVU4c1IwRkJVQ3hQUVVGUExFTkJRVms3U1VGRGVrSXNRMEZCUXp0RFFVTk1PMEZCUlVRN08wZEJSVWM3UVVGRFNDeE5RVUZOTEZWQlFWVXNWVUZCVlN4RFFVTjRRaXhKUVVGWkxFVkJRMW9zVlVGQmEwSXNSVUZEYkVJc1RVRkJZeXhGUVVOa0xFMUJRV2RDTzBsQlJXaENMRTFCUVUwc1VVRkJVU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RlFVRkZMRlZCUVZVc1EwRkJReXhEUVVGRE8wbEJSVEZETEUxQlFVMHNTMEZCU3l4SFFVRkhMRXRCUVVzN1UwRkRhRUlzUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXp0VFFVTmlMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzVVVGQlVTeEZRVUZGTEVOQlFVTXNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM1JFTEUxQlFVMHNUVUZCVFN4SFFVRkhMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4WFFVRlhMRU5CUVVNc1NVRkJTU3hGUVVGRkxGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGT1VRc1QwRkJUeXhOUVVGTkxFTkJRVU03UVVGRGFFSXNRMEZCUXp0QlFVVkVPenM3UjBGSFJ6dEJRVU5JTEZOQlFWTXNVVUZCVVN4RFFVTm1MRWxCUVZrc1JVRkRXaXhSUVVGUkxFZEJRVWNzUlVGQlJTeEZRVU5pTEVOQlFWTXNSVUZEVkN4TlFVRm5RanRKUVVWb1FpeE5RVUZOTEU5QlFVOHNSMEZCUnl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0SlFVTjZReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eHBRa0ZCYVVJc1EwRkJReXhKUVVGSkxFVkJRVVVzVDBGQlR5eEZRVUZGTEZGQlFWRXNSVUZCUlN4RFFVRkRMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRGJrVXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRaQ3hEUVVGRE8wRkJSVVFzVTBGQlV5eHBRa0ZCYVVJc1EwRkRlRUlzU1VGQldTeEZRVU5hTEU5QlFXbENMRVZCUTJwQ0xGRkJRVkVzUjBGQlJ5eEZRVUZGTEVWQlEySXNRMEZCVXl4RlFVTlVMRTFCUVdkQ08wbEJSV2hDTEVsQlFVa3NUMEZCVHl4RFFVRkRMRTFCUVUwc1IwRkJSeXhSUVVGUkxFVkJRVVU3VVVGRE4wSXNUVUZCVFN4WlFVRlpMRWRCUVVjc09FSkJRVGhDTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTlCUVU4c1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU16UlN4TlFVRk5MRVZCUVVVc1YwRkJWeXhGUVVGRkxGbEJRVmtzUlVGQlJTeFZRVUZWTEVWQlFVVXNUVUZCVFN4RlFVRkZMRWRCUVVjc1dVRkJXU3hEUVVGRE8xRkJSWFpGTEUxQlFVMHNVMEZCVXl4SFFVRkhMR2xDUVVGcFFpeERRVU5xUXl4SlFVRkpMRVZCUTBvc1YwRkJWeXhGUVVOWUxGRkJRVkVzUlVGRFVpeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVTk1MRTFCUVUwc1EwRkRVQ3hEUVVGRE8xRkJRMFlzVFVGQlRTeFZRVUZWTEVkQlFVY3NhVUpCUVdsQ0xFTkJRMnhETEVsQlFVa3NSVUZEU2l4WlFVRlpMRVZCUTFvc1VVRkJVU3hGUVVOU0xFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlEwd3NUVUZCVFN4RFFVTlFMRU5CUVVNN1VVRkZSaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eEZRVUZGTEZOQlFWTXNSVUZCUlN4VlFVRlZMRVZCUVVVc1RVRkJUU3hGUVVGRkxFdEJRVXNzUlVGQlJTeFZRVUZWTEVWQlFVVXNUVUZCVFN4RlFVRkZMRU5CUVVNN1VVRkRNVVVzVDBGQlR5eEpRVUZKTEVOQlFVTTdTMEZEWWp0VFFVRk5PMUZCUTB3c1RVRkJUU3hKUVVGSkxFZEJRVWNzUlVGQlJTeFBRVUZQTEVWQlFVVXNUVUZCVFN4RlFVRkZMRWxCUVVrc1JVRkJSU3hEUVVGRE8xRkJRM1pETEU5QlFVOHNTVUZCU1N4RFFVRkRPMHRCUTJJN1FVRkRTQ3hEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRk5CUVZNc09FSkJRVGhDTEVOQlEzSkRMRWxCUVZrc1JVRkRXaXhQUVVGcFFpeEZRVU5xUWl4TlFVRm5RanRKUVVWb1FpeE5RVUZOTEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkZaQ3cwUkVGQk5FUTdTVUZETlVRc1NVRkJTU3hUUVVGVExFZEJRVWNzUzBGQlN5eERRVUZETEZWQlFWVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzBsQlEzcEVMRWxCUVVrc1ZVRkJWU3hIUVVGSExFdEJRVXNzUTBGQlF5eFZRVUZWTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dEpRVU14UkN4VlFVRlZMRWxCUVVrc1UwRkJVeXhMUVVGTExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGREwwTXNWVUZCVlN4SFFVRkhMRlZCUVZVc1IwRkJSeXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETzBsQlEzcERMRTFCUVUwc1NVRkJTU3hIUVVGSExFOUJRVThzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0SlFVTm9ReXhOUVVGTkxFdEJRVXNzUjBGQlJ5eFBRVUZQTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN1NVRkZiRU1zTUVWQlFUQkZPMGxCUXpGRkxIbERRVUY1UXp0SlFVTjZReXhKUVVGSkxHZENRVUZuUWl4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVONlFpeEpRVUZKTEdkQ1FVRm5RaXhIUVVGSExFTkJRVU1zUTBGQlF6dEpRVWQ2UWl4blFrRkJaMElzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBsQlF6VkRMR2RDUVVGblFqdFJRVU5rTEVOQlFVTXNaMEpCUVdkQ0xFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNN1NVRkhlRVFzYVVWQlFXbEZPMGxCUTJwRkxIVkZRVUYxUlR0SlFVTjJSU3d5UlVGQk1rVTdTVUZETTBVc1NVRkJTU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEyUXNTVUZCU1N4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRMllzVFVGQlRTeEpRVUZKTEVkQlFVY3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZEZWtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRTlCUVU4c1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdVVUZEZGtNc1NVRkJTU3hOUVVGTkxFZEJRVWNzWjBKQlFXZENMRU5CUVVNN1VVRkZOVUlzVFVGQlRTeEpRVUZKTEdkQ1FVRm5RaXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVWb1JDeEpRVUZKTEUxQlFVMHNTMEZCU3l4RFFVRkRMRVZCUVVVN1dVRkRhRUlzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMWxCUTNSRExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSVHRuUWtGRGFrSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1EwRkJRenRoUVVOYU8ybENRVUZOTzJkQ1FVTk1MRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU03WVVGRFlqdFRRVU5HTzJGQlFVMHNTVUZCU1N4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8xbEJRM0pDTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRFdpeExRVUZMTEVsQlFVa3NRMEZCUXl4RFFVRkRPMU5CUTFvN1lVRkJUVHRaUVVOTUxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRXaXhOUVVGTkxFbEJRVWtzUTBGQlF5eERRVUZETzFOQlEySTdTMEZEUmp0SlFVVkVMQ3REUVVFclF6dEpRVU12UXl4TlFVRk5MRmRCUVZjc1IwRkJSeXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMGxCUTNaRExFMUJRVTBzV1VGQldTeEhRVUZITEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRmVrTXNkMFZCUVhkRk8wbEJRM2hGTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRWaXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETzBsQlExZ3NTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3VVVGRGNFTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTzFsQlEycENMRmRCUVZjc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRhRU1zUzBGQlN5eEpRVUZKTEVOQlFVTXNRMEZCUXp0VFFVTmFPMkZCUVUwN1dVRkRUQ3haUVVGWkxFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMnhETEUxQlFVMHNTVUZCU1N4RFFVRkRMRU5CUVVNN1UwRkRZanRMUVVOR08wbEJSVVFzVDBGQlR6dFJRVU5NTEZkQlFWYzdVVUZEV0N4WlFVRlpPMUZCUTFvc1ZVRkJWU3hGUVVGRkxHZENRVUZuUWp0UlFVTTFRaXhOUVVGTkxFVkJRVVVzWjBKQlFXZENPMHRCUTNwQ0xFTkJRVU03UVVGRFNpeERRVUZETzBGQlJVUXNVMEZCVXl4WFFVRlhMRU5CUVVNc1NVRkJPRUlzUlVGQlJTeFJRVUZuUWp0SlFVTnVSU3hOUVVGTkxFMUJRVTBzUjBGQlJ5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRPVUlzVFVGQlRTeFBRVUZQTEVkQlFVY3NVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJSV2hETEcxRVFVRnRSRHRKUVVOdVJDeE5RVUZOTEZkQlFWY3NSMEZCUnl4TFFVRkxPMU5CUTNSQ0xFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTTdVMEZEWWl4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVVjBReXhOUVVGTkxFOUJRVThzUjBGQlJ5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wbEJRM0JETEUxQlFVMHNVVUZCVVN4SFFVRkhMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM3BFTEUxQlFVMHNUMEZCVHl4SFFVRkhMRXRCUVVzN1UwRkRiRUlzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXp0VFFVTmtMRWRCUVVjc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGJFUXNaMEpCUVdkQ0xFTkJRVU1zU1VGQlNTeEZRVUZGTEZkQlFWY3NSVUZCUlN4UFFVRlBMRVZCUVVVc1VVRkJVU3hGUVVGRkxFOUJRVThzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRkRVVzVDBGQlR5eEpRVUZKTEZGQlFWRXNRMEZCUXl4WFFVRlhMRVZCUVVVc1QwRkJUeXhGUVVGRkxGRkJRVkVzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTXZSQ3hEUVVGRE8wRkJSVVFzVTBGQlV5eG5Ra0ZCWjBJc1EwRkRka0lzU1VGQk9FSXNSVUZET1VJc1YwRkJjVUlzUlVGRGNrSXNUMEZCYVVJc1JVRkRha0lzVVVGQmIwSXNSVUZEY0VJc1QwRkJiVUlzUlVGRGJrSXNUMEZCWlN4RlFVTm1MRTlCUVdVN1NVRkZaaXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVTdVVUZEWml4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNN1VVRkZhRU1zYlVSQlFXMUVPMUZCUTI1RUxEQkVRVUV3UkR0UlFVTXhSQ3hQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zVDBGQlVTeERRVUZETEUxQlFVMHNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUkxFTkJRVU1zUTBGQlF6dFJRVU51UlN4UFFVRlBMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRMklzVDBGQlR5eEZRVUZGTEU5QlFVOHNSVUZCUlN4UFFVRlBMRVZCUVVVc1EwRkJRenRMUVVNM1FqdFRRVUZOTzFGQlEwd3NWMEZCVnl4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFZRVUZYTEVOQlFVTTdVVUZEZUVNc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRlBMRU5CUVVNN1VVRkRhRU1zVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFOUJRVThzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEYmtNc1RVRkJUU3hWUVVGVkxFZEJRVWNzVDBGQlR5eERRVUZETzFGQlJUTkNMRWxCUVVrc1IwRkJSeXhIUVVGSExHZENRVUZuUWl4RFFVTjRRaXhKUVVGSkxFTkJRVU1zVTBGQlZTeEZRVU5tTEZkQlFWY3NSVUZEV0N4UFFVRlBMRVZCUTFBc1VVRkJVU3hGUVVOU0xFOUJRVThzUlVGRFVDeFBRVUZQTEVkQlFVY3NRMEZCUXl4RlFVTllMRTlCUVU4c1EwRkRVaXhEUVVGRE8xRkJRMFlzVDBGQlR5eEhRVUZITEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNN1VVRkRkRUlzVDBGQlR5eEhRVUZITEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNN1VVRkZkRUlzVVVGQlVTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFOUJRVThzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZGZEVNc1IwRkJSeXhIUVVGSExHZENRVUZuUWl4RFFVTndRaXhKUVVGSkxFTkJRVU1zVlVGQlZ5eEZRVU5vUWl4WFFVRlhMRVZCUTFnc1QwRkJUeXhGUVVOUUxGRkJRVkVzUlVGRFVpeFBRVUZQTEVWQlExQXNUMEZCVHl4SFFVRkhMRU5CUVVNc1JVRkRXQ3hQUVVGUExFTkJRMUlzUTBGQlF6dFJRVU5HTEU5QlFVOHNSVUZCUlN4UFFVRlBMRVZCUVVVc1IwRkJSeXhEUVVGRExFOUJRVThzUlVGQlJTeFBRVUZQTEVWQlFVVXNSMEZCUnl4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8wdEJRM1pFTzBGQlEwZ3NRMEZCUXp0QlFVVkVMRk5CUVZNc1VVRkJVU3hEUVVGRExFbEJRVGhDTzBsQlF6bERMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJUdFJRVU5tTEU5QlFVOHNRMEZCUXl4RFFVRkRPMHRCUTFZN1UwRkJUVHRSUVVOTUxFOUJRVThzUTBGQlF5eEhRVUZITEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJWU3hEUVVGRExFZEJRVWNzVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4VlFVRlhMRU5CUVVNc1EwRkJRenRMUVVOdVJUdEJRVU5JTEVOQlFVTTdRVUZGUkN4VFFVRlRMRk5CUVZNc1EwRkJReXhKUVVFNFFqdEpRVU12UXl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVU3VVVGRFppeFBRVUZQTEVOQlFVTXNRMEZCUXp0TFFVTldPMU5CUVUwN1VVRkRUQ3hQUVVGUExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVlN4RFFVRkRMRWRCUVVjc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZYTEVOQlFVTXNRMEZCUXp0TFFVTnFSVHRCUVVOSUxFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxFMUJRVTBzVlVGQlZTeGhRVUZoTEVOQlFVTXNVVUZCYjBJN1NVRkRhRVFzU1VGQlNTeFJRVUZSTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkJSVHRSUVVOMlFpeE5RVUZOTEUxQlFVMHNSMEZCWlN4RlFVRkZMRU5CUVVNN1VVRkRPVUlzUzBGQlN5eEpRVUZKTEVsQlFVa3NTVUZCU1N4UlFVRlJMRVZCUVVVN1dVRkRla0lzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUkxFTkJRVU1zUTBGQlF6dFRRVU12UWp0UlFVTkVMRTlCUVU4c1RVRkJUU3hEUVVGRE8wdEJRMlk3VTBGQlRUdFJRVU5NTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dExRVU5tTzBGQlEwZ3NRMEZCUXp0QlFVVkVPenRIUVVWSE8wRkJRMGdzVTBGQlV5eFZRVUZWTEVOQlEycENMRlZCUVd0Q0xFVkJRMnhDTEUxQlFXTXNSVUZEWkN4TFFVRmhMRVZCUTJJc1RVRkJaMEk3U1VGRmFFSXNTVUZCU1N4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRE8wbEJSV3hDTEUxQlFVMHNTVUZCU1N4VlFVRlZMRWRCUVVjc1MwRkJTeXhEUVVGRE8wbEJSeTlDTEVsQlFVa3NUVUZCVFN4TFFVRkxMRU5CUVVNc1JVRkJSVHRSUVVOb1FpeE5RVUZOTEVsQlFVa3NSMEZCUnl4TFFVRkxMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTjZReXhQUVVGUExFbEJRVWtzUTBGQlF6dExRVU5pTzFOQlFVMHNTVUZCU1N4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8xRkJRM0pDTEU5QlFVOHNRMEZCUXl4RFFVRkRPMHRCUTFZN1UwRkJUVHRSUVVOTUxFOUJRVThzUTBGQlF5eERRVUZETzB0QlExWTdRVUZEU0N4RFFVRkRPMEZCUlVRN08wZEJSVWM3UVVGRFNDeE5RVUZOTEZWQlFWVXNZMEZCWXl4RFFVTTFRaXhMUVVGaExFVkJRMklzU1VGQll5eEZRVU5rTEUxQlFXZENPMGxCUldoQ0xFbEJRVWtzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVTmlMRTlCUVU4c1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVU3VVVGRGFrTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1ZVRkJWU3hEUVVOeVFpeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVOMFFpeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVOc1FpeExRVUZMTEVWQlEwd3NUVUZCVFN4RFFVTlFMRU5CUVVNN1VVRkRSaXhKUVVGSkxFbEJRVWtzUzBGQlN5eERRVUZETEVWQlFVVTdXVUZEWkN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVNdlFqdGhRVUZOTzFsQlEwd3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRMMEk3UzBGRFJqdEpRVVZFTEUxQlFVMHNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRE1VTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBGQlF6ZENMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFQnNhV05sYm5ObFhHNGdLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVGtnUjI5dloyeGxJRXhNUXk0Z1FXeHNJRkpwWjJoMGN5QlNaWE5sY25abFpDNWNiaUFxWEc0Z0tpQk1hV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRWEJoWTJobElFeHBZMlZ1YzJVc0lGWmxjbk5wYjI0Z01pNHdJQ2gwYUdVZ1hDSk1hV05sYm5ObFhDSXBPMXh1SUNvZ2VXOTFJRzFoZVNCdWIzUWdkWE5sSUhSb2FYTWdabWxzWlNCbGVHTmxjSFFnYVc0Z1kyOXRjR3hwWVc1alpTQjNhWFJvSUhSb1pTQk1hV05sYm5ObExseHVJQ29nV1c5MUlHMWhlU0J2WW5SaGFXNGdZU0JqYjNCNUlHOW1JSFJvWlNCTWFXTmxibk5sSUdGMFhHNGdLbHh1SUNvZ0lDQWdJR2gwZEhBNkx5OTNkM2N1WVhCaFkyaGxMbTl5Wnk5c2FXTmxibk5sY3k5TVNVTkZUbE5GTFRJdU1GeHVJQ3BjYmlBcUlGVnViR1Z6Y3lCeVpYRjFhWEpsWkNCaWVTQmhjSEJzYVdOaFlteGxJR3hoZHlCdmNpQmhaM0psWldRZ2RHOGdhVzRnZDNKcGRHbHVaeXdnYzI5bWRIZGhjbVZjYmlBcUlHUnBjM1J5YVdKMWRHVmtJSFZ1WkdWeUlIUm9aU0JNYVdObGJuTmxJR2x6SUdScGMzUnlhV0oxZEdWa0lHOXVJR0Z1SUZ3aVFWTWdTVk5jSWlCQ1FWTkpVeXhjYmlBcUlGZEpWRWhQVlZRZ1YwRlNVa0ZPVkVsRlV5QlBVaUJEVDA1RVNWUkpUMDVUSUU5R0lFRk9XU0JMU1U1RUxDQmxhWFJvWlhJZ1pYaHdjbVZ6Y3lCdmNpQnBiWEJzYVdWa0xseHVJQ29nVTJWbElIUm9aU0JNYVdObGJuTmxJR1p2Y2lCMGFHVWdjM0JsWTJsbWFXTWdiR0Z1WjNWaFoyVWdaMjkyWlhKdWFXNW5JSEJsY20xcGMzTnBiMjV6SUdGdVpGeHVJQ29nYkdsdGFYUmhkR2x2Ym5NZ2RXNWtaWElnZEdobElFeHBZMlZ1YzJVdVhHNGdLaUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMWNiaUFxTDF4dVhHNHZLaXBjYmlBcUlGUm9hWE1nYVhNZ1lTQktZWFpoVTJOeWFYQjBJSEpsYVcxd2JHVnRaVzUwWVhScGIyNGdiMllnVlUxQlVDQW9iM0pwWjJsdVlXd2diR2xqWlc1elpTQmlaV3h2ZHlrc0lHWnliMjFjYmlBcUlIUm9aU0J3ZVhSb2IyNGdhVzF3YkdWdFpXNTBZWFJwYjI0Z1ptOTFibVFnWVhRZ2FIUjBjSE02THk5bmFYUm9kV0l1WTI5dEwyeHRZMmx1Ym1WekwzVnRZWEF1WEc0Z0tseHVJQ29nUUdGMWRHaHZjaUJoYm1SNVkyOWxibVZ1UUdkdmIyZHNaUzVqYjIwZ0tFRnVaSGtnUTI5bGJtVnVLVnh1SUNvdlhHNWNiaThxS2x4dUlDb2dRR3hwWTJWdWMyVmNiaUFxSUVKVFJDQXpMVU5zWVhWelpTQk1hV05sYm5ObFhHNGdLbHh1SUNvZ1EyOXdlWEpwWjJoMElDaGpLU0F5TURFM0xDQk1aV3hoYm1RZ1RXTkpibTVsYzF4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJTWldScGMzUnlhV0oxZEdsdmJpQmhibVFnZFhObElHbHVJSE52ZFhKalpTQmhibVFnWW1sdVlYSjVJR1p2Y20xekxDQjNhWFJvSUc5eUlIZHBkR2h2ZFhSY2JpQXFJRzF2WkdsbWFXTmhkR2x2Yml3Z1lYSmxJSEJsY20xcGRIUmxaQ0J3Y205MmFXUmxaQ0IwYUdGMElIUm9aU0JtYjJ4c2IzZHBibWNnWTI5dVpHbDBhVzl1Y3lCaGNtVWdiV1YwT2x4dUlDcGNiaUFxSUNvZ1VtVmthWE4wY21saWRYUnBiMjV6SUc5bUlITnZkWEpqWlNCamIyUmxJRzExYzNRZ2NtVjBZV2x1SUhSb1pTQmhZbTkyWlNCamIzQjVjbWxuYUhRZ2JtOTBhV05sTENCMGFHbHpYRzRnS2lBZ0lHeHBjM1FnYjJZZ1kyOXVaR2wwYVc5dWN5QmhibVFnZEdobElHWnZiR3h2ZDJsdVp5QmthWE5qYkdGcGJXVnlMbHh1SUNwY2JpQXFJQ29nVW1Wa2FYTjBjbWxpZFhScGIyNXpJR2x1SUdKcGJtRnllU0JtYjNKdElHMTFjM1FnY21Wd2NtOWtkV05sSUhSb1pTQmhZbTkyWlNCamIzQjVjbWxuYUhRZ2JtOTBhV05sTEZ4dUlDb2dJQ0IwYUdseklHeHBjM1FnYjJZZ1kyOXVaR2wwYVc5dWN5QmhibVFnZEdobElHWnZiR3h2ZDJsdVp5QmthWE5qYkdGcGJXVnlJR2x1SUhSb1pTQmtiMk4xYldWdWRHRjBhVzl1WEc0Z0tpQWdJR0Z1WkM5dmNpQnZkR2hsY2lCdFlYUmxjbWxoYkhNZ2NISnZkbWxrWldRZ2QybDBhQ0IwYUdVZ1pHbHpkSEpwWW5WMGFXOXVMbHh1SUNwY2JpQXFJQ29nVG1WcGRHaGxjaUIwYUdVZ2JtRnRaU0J2WmlCMGFHVWdZMjl3ZVhKcFoyaDBJR2h2YkdSbGNpQnViM0lnZEdobElHNWhiV1Z6SUc5bUlHbDBjMXh1SUNvZ0lDQmpiMjUwY21saWRYUnZjbk1nYldGNUlHSmxJSFZ6WldRZ2RHOGdaVzVrYjNKelpTQnZjaUJ3Y205dGIzUmxJSEJ5YjJSMVkzUnpJR1JsY21sMlpXUWdabkp2YlZ4dUlDb2dJQ0IwYUdseklITnZablIzWVhKbElIZHBkR2h2ZFhRZ2MzQmxZMmxtYVdNZ2NISnBiM0lnZDNKcGRIUmxiaUJ3WlhKdGFYTnphVzl1TGx4dUlDcGNiaUFxSUZSSVNWTWdVMDlHVkZkQlVrVWdTVk1nVUZKUFZrbEVSVVFnUWxrZ1ZFaEZJRU5QVUZsU1NVZElWQ0JJVDB4RVJWSlRJRUZPUkNCRFQwNVVVa2xDVlZSUFVsTWdYQ0pCVXlCSlUxd2lYRzRnS2lCQlRrUWdRVTVaSUVWWVVGSkZVMU1nVDFJZ1NVMVFURWxGUkNCWFFWSlNRVTVVU1VWVExDQkpUa05NVlVSSlRrY3NJRUpWVkNCT1QxUWdURWxOU1ZSRlJDQlVUeXdnVkVoRlhHNGdLaUJKVFZCTVNVVkVJRmRCVWxKQlRsUkpSVk1nVDBZZ1RVVlNRMGhCVGxSQlFrbE1TVlJaSUVGT1JDQkdTVlJPUlZOVElFWlBVaUJCSUZCQlVsUkpRMVZNUVZJZ1VGVlNVRTlUUlNCQlVrVmNiaUFxSUVSSlUwTk1RVWxOUlVRdUlFbE9JRTVQSUVWV1JVNVVJRk5JUVV4TUlGUklSU0JEVDFCWlVrbEhTRlFnU0U5TVJFVlNJRTlTSUVOUFRsUlNTVUpWVkU5U1V5QkNSU0JNU1VGQ1RFVmNiaUFxSUVaUFVpQkJUbGtnUkVsU1JVTlVMQ0JKVGtSSlVrVkRWQ3dnU1U1RFNVUkZUbFJCVEN3Z1UxQkZRMGxCVEN3Z1JWaEZUVkJNUVZKWkxDQlBVaUJEVDA1VFJWRlZSVTVVU1VGTVhHNGdLaUJFUVUxQlIwVlRJQ2hKVGtOTVZVUkpUa2NzSUVKVlZDQk9UMVFnVEVsTlNWUkZSQ0JVVHl3Z1VGSlBRMVZTUlUxRlRsUWdUMFlnVTFWQ1UxUkpWRlZVUlNCSFQwOUVVeUJQVWx4dUlDb2dVMFZTVmtsRFJWTTdJRXhQVTFNZ1QwWWdWVk5GTENCRVFWUkJMQ0JQVWlCUVVrOUdTVlJUT3lCUFVpQkNWVk5KVGtWVFV5QkpUbFJGVWxKVlVGUkpUMDRwSUVoUFYwVldSVkpjYmlBcUlFTkJWVk5GUkNCQlRrUWdUMDRnUVU1WklGUklSVTlTV1NCUFJpQk1TVUZDU1V4SlZGa3NJRmRJUlZSSVJWSWdTVTRnUTA5T1ZGSkJRMVFzSUZOVVVrbERWQ0JNU1VGQ1NVeEpWRmtzWEc0Z0tpQlBVaUJVVDFKVUlDaEpUa05NVlVSSlRrY2dUa1ZIVEVsSFJVNURSU0JQVWlCUFZFaEZVbGRKVTBVcElFRlNTVk5KVGtjZ1NVNGdRVTVaSUZkQldTQlBWVlFnVDBZZ1ZFaEZJRlZUUlZ4dUlDb2dUMFlnVkVoSlV5QlRUMFpVVjBGU1JTd2dSVlpGVGlCSlJpQkJSRlpKVTBWRUlFOUdJRlJJUlNCUVQxTlRTVUpKVEVsVVdTQlBSaUJUVlVOSUlFUkJUVUZIUlM1Y2JpQXFMMXh1WEc1cGJYQnZjblFnS2lCaGN5QjFkR2xzY3lCbWNtOXRJQ2N1TDNWMGFXeHpKenRjYm1sdGNHOXlkQ0I3SUZKaGJtUnZiVVp1TENCV1pXTjBiM0lzSUZabFkzUnZjbk1nZlNCbWNtOXRJQ2N1TDNWdFlYQW5PMXh1WEc0dktpcGNiaUFxSUZSeVpXVWdablZ1WTNScGIyNWhiR2wwZVNCbWIzSWdZWEJ3Y205NGFXMWhkR2x1WnlCdVpXRnlaWE4wSUc1bGFXZG9ZbTl5YzF4dUlDb3ZYRzVwYm5SbGNtWmhZMlVnVW1GdVpHOXRVSEp2YW1WamRHbHZibFJ5WldWT2IyUmxJSHRjYmlBZ2FYTk1aV0ZtT2lCaWIyOXNaV0Z1TzF4dUlDQnBibVJwWTJWelB6b2diblZ0WW1WeVcxMDdYRzRnSUd4bFpuUkRhR2xzWkQ4NklGSmhibVJ2YlZCeWIycGxZM1JwYjI1VWNtVmxUbTlrWlR0Y2JpQWdjbWxuYUhSRGFHbHNaRDg2SUZKaGJtUnZiVkJ5YjJwbFkzUnBiMjVVY21WbFRtOWtaVHRjYmlBZ2FIbHdaWEp3YkdGdVpUODZJRzUxYldKbGNqdGNiaUFnYjJabWMyVjBQem9nYm5WdFltVnlPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nUm14aGRGUnlaV1VnZTF4dUlDQmpiMjV6ZEhKMVkzUnZjaWhjYmlBZ0lDQndkV0pzYVdNZ2FIbHdaWEp3YkdGdVpYTTZJRzUxYldKbGNsdGRMRnh1SUNBZ0lIQjFZbXhwWXlCdlptWnpaWFJ6T2lCdWRXMWlaWEpiWFN4Y2JpQWdJQ0J3ZFdKc2FXTWdZMmhwYkdSeVpXNDZJRzUxYldKbGNsdGRXMTBzWEc0Z0lDQWdjSFZpYkdsaklHbHVaR2xqWlhNNklHNTFiV0psY2x0ZFcxMWNiaUFnS1NCN2ZWeHVmVnh1WEc0dktpcGNiaUFxSUVKMWFXeGtJR0VnY21GdVpHOXRJSEJ5YjJwbFkzUnBiMjRnWm05eVpYTjBJSGRwZEdnZ1lHQnVWSEpsWlhOZ1lDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUcxaGEyVkdiM0psYzNRb1hHNGdJR1JoZEdFNklGWmxZM1J2Y2l4Y2JpQWdiazVsYVdkb1ltOXljem9nYm5WdFltVnlMRnh1SUNCdVZISmxaWE02SUc1MWJXSmxjaXhjYmlBZ2NtRnVaRzl0T2lCU1lXNWtiMjFHYmx4dUtTQjdYRzRnSUdOdmJuTjBJR3hsWVdaVGFYcGxJRDBnVFdGMGFDNXRZWGdvTVRBc0lHNU9aV2xuYUdKdmNuTXBPMXh1WEc0Z0lHTnZibk4wSUhSeVpXVnpJRDBnZFhScGJITmNiaUFnSUNBdWNtRnVaMlVvYmxSeVpXVnpLVnh1SUNBZ0lDNXRZWEFvS0Y4c0lHa3BJRDArSUcxaGEyVlVjbVZsS0dSaGRHRXNJR3hsWVdaVGFYcGxMQ0JwTENCeVlXNWtiMjBwS1R0Y2JpQWdZMjl1YzNRZ1ptOXlaWE4wSUQwZ2RISmxaWE11YldGd0tIUnlaV1VnUFQ0Z1pteGhkSFJsYmxSeVpXVW9kSEpsWlN3Z2JHVmhabE5wZW1VcEtUdGNibHh1SUNCeVpYUjFjbTRnWm05eVpYTjBPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFTnZibk4wY25WamRDQmhJSEpoYm1SdmJTQndjbTlxWldOMGFXOXVJSFJ5WldVZ1ltRnpaV1FnYjI0Z1lHQmtZWFJoWUdBZ2QybDBhQ0JzWldGMlpYTmNiaUFxSUc5bUlITnBlbVVnWVhRZ2JXOXpkQ0JnWUd4bFlXWlRhWHBsWUdCY2JpQXFMMXh1Wm5WdVkzUnBiMjRnYldGclpWUnlaV1VvWEc0Z0lHUmhkR0U2SUZabFkzUnZjaXhjYmlBZ2JHVmhabE5wZW1VZ1BTQXpNQ3hjYmlBZ2Jqb2diblZ0WW1WeUxGeHVJQ0J5WVc1a2IyMDZJRkpoYm1SdmJVWnVYRzRwT2lCU1lXNWtiMjFRY205cVpXTjBhVzl1VkhKbFpVNXZaR1VnZTF4dUlDQmpiMjV6ZENCcGJtUnBZMlZ6SUQwZ2RYUnBiSE11Y21GdVoyVW9aR0YwWVM1c1pXNW5kR2dwTzF4dUlDQmpiMjV6ZENCMGNtVmxJRDBnYldGclpVVjFZMnhwWkdWaGJsUnlaV1VvWkdGMFlTd2dhVzVrYVdObGN5d2diR1ZoWmxOcGVtVXNJRzRzSUhKaGJtUnZiU2s3WEc0Z0lISmxkSFZ5YmlCMGNtVmxPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnRZV3RsUlhWamJHbGtaV0Z1VkhKbFpTaGNiaUFnWkdGMFlUb2dWbVZqZEc5eUxGeHVJQ0JwYm1ScFkyVnpPaUJ1ZFcxaVpYSmJYU3hjYmlBZ2JHVmhabE5wZW1VZ1BTQXpNQ3hjYmlBZ2NUb2diblZ0WW1WeUxGeHVJQ0J5WVc1a2IyMDZJRkpoYm1SdmJVWnVYRzRwT2lCU1lXNWtiMjFRY205cVpXTjBhVzl1VkhKbFpVNXZaR1VnZTF4dUlDQnBaaUFvYVc1a2FXTmxjeTVzWlc1bmRHZ2dQaUJzWldGbVUybDZaU2tnZTF4dUlDQWdJR052Ym5OMElITndiR2wwVW1WemRXeDBjeUE5SUdWMVkyeHBaR1ZoYmxKaGJtUnZiVkJ5YjJwbFkzUnBiMjVUY0d4cGRDaGtZWFJoTENCcGJtUnBZMlZ6TENCeVlXNWtiMjBwTzF4dUlDQWdJR052Ym5OMElIc2dhVzVrYVdObGMweGxablFzSUdsdVpHbGpaWE5TYVdkb2RDd2dhSGx3WlhKd2JHRnVaU3dnYjJabWMyVjBJSDBnUFNCemNHeHBkRkpsYzNWc2RITTdYRzVjYmlBZ0lDQmpiMjV6ZENCc1pXWjBRMmhwYkdRZ1BTQnRZV3RsUlhWamJHbGtaV0Z1VkhKbFpTaGNiaUFnSUNBZ0lHUmhkR0VzWEc0Z0lDQWdJQ0JwYm1ScFkyVnpUR1ZtZEN4Y2JpQWdJQ0FnSUd4bFlXWlRhWHBsTEZ4dUlDQWdJQ0FnY1NBcklERXNYRzRnSUNBZ0lDQnlZVzVrYjIxY2JpQWdJQ0FwTzF4dUlDQWdJR052Ym5OMElISnBaMmgwUTJocGJHUWdQU0J0WVd0bFJYVmpiR2xrWldGdVZISmxaU2hjYmlBZ0lDQWdJR1JoZEdFc1hHNGdJQ0FnSUNCcGJtUnBZMlZ6VW1sbmFIUXNYRzRnSUNBZ0lDQnNaV0ZtVTJsNlpTeGNiaUFnSUNBZ0lIRWdLeUF4TEZ4dUlDQWdJQ0FnY21GdVpHOXRYRzRnSUNBZ0tUdGNibHh1SUNBZ0lHTnZibk4wSUc1dlpHVWdQU0I3SUd4bFpuUkRhR2xzWkN3Z2NtbG5hSFJEYUdsc1pDd2dhWE5NWldGbU9pQm1ZV3h6WlN3Z2FIbHdaWEp3YkdGdVpTd2diMlptYzJWMElIMDdYRzRnSUNBZ2NtVjBkWEp1SUc1dlpHVTdYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdZMjl1YzNRZ2JtOWtaU0E5SUhzZ2FXNWthV05sY3l3Z2FYTk1aV0ZtT2lCMGNuVmxJSDA3WEc0Z0lDQWdjbVYwZFhKdUlHNXZaR1U3WEc0Z0lIMWNibjFjYmx4dUx5b3FYRzRnS2lCSGFYWmxiaUJoSUhObGRDQnZaaUJnWUdsdVpHbGpaWE5nWUNCbWIzSWdaR0YwWVNCd2IybHVkSE1nWm5KdmJTQmdZR1JoZEdGZ1lDd2dZM0psWVhSbFhHNGdLaUJoSUhKaGJtUnZiU0JvZVhCbGNuQnNZVzVsSUhSdklITndiR2wwSUhSb1pTQmtZWFJoTENCeVpYUjFjbTVwYm1jZ2RIZHZJR0Z5Y21GNWN5QnBibVJwWTJWelhHNGdLaUIwYUdGMElHWmhiR3dnYjI0Z1pXbDBhR1Z5SUhOcFpHVWdiMllnZEdobElHaDVjR1Z5Y0d4aGJtVXVJRlJvYVhNZ2FYTWdkR2hsSUdKaGMybHpJR1p2Y2lCaFhHNGdLaUJ5WVc1a2IyMGdjSEp2YW1WamRHbHZiaUIwY21WbExDQjNhR2xqYUNCemFXMXdiSGtnZFhObGN5QjBhR2x6SUhOd2JHbDBkR2x1WnlCeVpXTjFjbk5wZG1Wc2VTNWNiaUFxSUZSb2FYTWdjR0Z5ZEdsamRXeGhjaUJ6Y0d4cGRDQjFjMlZ6SUdWMVkyeHBaR1ZoYmlCa2FYTjBZVzVqWlNCMGJ5QmtaWFJsY20xcGJtVWdkR2hsSUdoNWNHVnljR3hoYm1WY2JpQXFJR0Z1WkNCM2FHbGphQ0J6YVdSbElHVmhZMmdnWkdGMFlTQnpZVzF3YkdVZ1ptRnNiSE1nYjI0dVhHNGdLaTljYm1aMWJtTjBhVzl1SUdWMVkyeHBaR1ZoYmxKaGJtUnZiVkJ5YjJwbFkzUnBiMjVUY0d4cGRDaGNiaUFnWkdGMFlUb2dWbVZqZEc5eUxGeHVJQ0JwYm1ScFkyVnpPaUJ1ZFcxaVpYSmJYU3hjYmlBZ2NtRnVaRzl0T2lCU1lXNWtiMjFHYmx4dUtTQjdYRzRnSUdOdmJuTjBJR1JwYlNBOUlERTdYRzVjYmlBZ0x5OGdVMlZzWldOMElIUjNieUJ5WVc1a2IyMGdjRzlwYm5SekxDQnpaWFFnZEdobElHaDVjR1Z5Y0d4aGJtVWdZbVYwZDJWbGJpQjBhR1Z0WEc0Z0lHeGxkQ0JzWldaMFNXNWtaWGdnUFNCMWRHbHNjeTUwWVhWU1lXNWtTVzUwS0dsdVpHbGpaWE11YkdWdVozUm9MQ0J5WVc1a2IyMHBPMXh1SUNCc1pYUWdjbWxuYUhSSmJtUmxlQ0E5SUhWMGFXeHpMblJoZFZKaGJtUkpiblFvYVc1a2FXTmxjeTVzWlc1bmRHZ3NJSEpoYm1SdmJTazdYRzRnSUhKcFoyaDBTVzVrWlhnZ0t6MGdiR1ZtZEVsdVpHVjRJRDA5UFNCeWFXZG9kRWx1WkdWNElEOGdNU0E2SURBN1hHNGdJSEpwWjJoMFNXNWtaWGdnUFNCeWFXZG9kRWx1WkdWNElDVWdhVzVrYVdObGN5NXNaVzVuZEdnN1hHNGdJR052Ym5OMElHeGxablFnUFNCcGJtUnBZMlZ6VzJ4bFpuUkpibVJsZUYwN1hHNGdJR052Ym5OMElISnBaMmgwSUQwZ2FXNWthV05sYzF0eWFXZG9kRWx1WkdWNFhUdGNibHh1SUNBdkx5QkRiMjF3ZFhSbElIUm9aU0J1YjNKdFlXd2dkbVZqZEc5eUlIUnZJSFJvWlNCb2VYQmxjbkJzWVc1bElDaDBhR1VnZG1WamRHOXlJR0psZEhkbFpXNGdkR2hsSUhSM2IxeHVJQ0F2THlCd2IybHVkSE1wSUdGdVpDQjBhR1VnYjJabWMyVjBJR1p5YjIwZ2RHaGxJRzl5YVdkcGJseHVJQ0JzWlhRZ2FIbHdaWEp3YkdGdVpVOW1abk5sZENBOUlEQTdYRzRnSUd4bGRDQm9lWEJsY25Cc1lXNWxWbVZqZEc5eUlEMGdNRHRjYmx4dUlDQmNiaUFnYUhsd1pYSndiR0Z1WlZabFkzUnZjaUE5SUdSaGRHRmJiR1ZtZEYwZ0xTQmtZWFJoVzNKcFoyaDBYVHRjYmlBZ2FIbHdaWEp3YkdGdVpVOW1abk5sZENBdFBWeHVJQ0FnSUNob2VYQmxjbkJzWVc1bFZtVmpkRzl5SUNvZ0tHUmhkR0ZiYkdWbWRGMGdLeUJrWVhSaFczSnBaMmgwWFNrcElDOGdNaTR3TzF4dUlDQmNibHh1SUNBdkx5QkdiM0lnWldGamFDQndiMmx1ZENCamIyMXdkWFJsSUhSb1pTQnRZWEpuYVc0Z0tIQnliMnBsWTNRZ2FXNTBieUJ1YjNKdFlXd2dkbVZqZEc5eUtWeHVJQ0F2THlCSlppQjNaU0JoY21VZ2IyNGdiRzkzWlhJZ2MybGtaU0J2WmlCMGFHVWdhSGx3WlhKd2JHRnVaU0J3ZFhRZ2FXNGdiMjVsSUhCcGJHVXNJRzkwYUdWeWQybHpaVnh1SUNBdkx5QndkWFFnYVhRZ2FXNGdkR2hsSUc5MGFHVnlJSEJwYkdVZ0tHbG1JSGRsSUdocGRDQm9lWEJsY25Cc1lXNWxJRzl1SUhSb1pTQnViM05sTENCbWJHbHdJR0VnWTI5cGJpbGNiaUFnYkdWMElHNU1aV1owSUQwZ01EdGNiaUFnYkdWMElHNVNhV2RvZENBOUlEQTdYRzRnSUdOdmJuTjBJSE5wWkdVZ1BTQjFkR2xzY3k1NlpYSnZjeWhwYm1ScFkyVnpMbXhsYm1kMGFDazdYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2FXNWthV05sY3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lHeGxkQ0J0WVhKbmFXNGdQU0JvZVhCbGNuQnNZVzVsVDJabWMyVjBPMXh1SUNBZ0lGeHVJQ0FnSUNBZ2JXRnlaMmx1SUNzOUlHaDVjR1Z5Y0d4aGJtVldaV04wYjNJZ0tpQmtZWFJoVzJsdVpHbGpaWE5iYVYxZE8xeHVJQ0FnSUZ4dUlDQWdJR2xtSUNodFlYSm5hVzRnUFQwOUlEQXBJSHRjYmlBZ0lDQWdJSE5wWkdWYmFWMGdQU0IxZEdsc2N5NTBZWFZTWVc1a1NXNTBLRElzSUhKaGJtUnZiU2s3WEc0Z0lDQWdJQ0JwWmlBb2MybGtaVnRwWFNBOVBUMGdNQ2tnZTF4dUlDQWdJQ0FnSUNCdVRHVm1kQ0FyUFNBeE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2JsSnBaMmgwSUNzOUlERTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaHRZWEpuYVc0Z1BpQXdLU0I3WEc0Z0lDQWdJQ0J6YVdSbFcybGRJRDBnTUR0Y2JpQWdJQ0FnSUc1TVpXWjBJQ3M5SURFN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSE5wWkdWYmFWMGdQU0F4TzF4dUlDQWdJQ0FnYmxKcFoyaDBJQ3M5SURFN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ0x5OGdUbTkzSUhSb1lYUWdkMlVnYUdGMlpTQjBhR1VnWTI5MWJuUnpMQ0JoYkd4dlkyRjBaU0JoY25KaGVYTmNiaUFnWTI5dWMzUWdhVzVrYVdObGMweGxablFnUFNCMWRHbHNjeTU2WlhKdmN5aHVUR1ZtZENrN1hHNGdJR052Ym5OMElHbHVaR2xqWlhOU2FXZG9kQ0E5SUhWMGFXeHpMbnBsY205ektHNVNhV2RvZENrN1hHNWNiaUFnTHk4Z1VHOXdkV3hoZEdVZ2RHaGxJR0Z5Y21GNWN5QjNhWFJvSUdsdVpHbGpaWE1nWVdOamIzSmthVzVuSUhSdklIZG9hV05vSUhOcFpHVWdkR2hsZVNCbVpXeHNJRzl1WEc0Z0lHNU1aV1owSUQwZ01EdGNiaUFnYmxKcFoyaDBJRDBnTUR0Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J6YVdSbExteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdhV1lnS0hOcFpHVmJhVjBnUFQwOUlEQXBJSHRjYmlBZ0lDQWdJR2x1WkdsalpYTk1aV1owVzI1TVpXWjBYU0E5SUdsdVpHbGpaWE5iYVYwN1hHNGdJQ0FnSUNCdVRHVm1kQ0FyUFNBeE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JwYm1ScFkyVnpVbWxuYUhSYmJsSnBaMmgwWFNBOUlHbHVaR2xqWlhOYmFWMDdYRzRnSUNBZ0lDQnVVbWxuYUhRZ0t6MGdNVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdlMXh1SUNBZ0lHbHVaR2xqWlhOTVpXWjBMRnh1SUNBZ0lHbHVaR2xqWlhOU2FXZG9kQ3hjYmlBZ0lDQm9lWEJsY25Cc1lXNWxPaUJvZVhCbGNuQnNZVzVsVm1WamRHOXlMRnh1SUNBZ0lHOW1abk5sZERvZ2FIbHdaWEp3YkdGdVpVOW1abk5sZEN4Y2JpQWdmVHRjYm4xY2JseHVablZ1WTNScGIyNGdabXhoZEhSbGJsUnlaV1VvZEhKbFpUb2dVbUZ1Wkc5dFVISnZhbVZqZEdsdmJsUnlaV1ZPYjJSbExDQnNaV0ZtVTJsNlpUb2diblZ0WW1WeUtTQjdYRzRnSUdOdmJuTjBJRzVPYjJSbGN5QTlJRzUxYlU1dlpHVnpLSFJ5WldVcE8xeHVJQ0JqYjI1emRDQnVUR1ZoZG1WeklEMGdiblZ0VEdWaGRtVnpLSFJ5WldVcE8xeHVYRzRnSUM4dklGUlBSRTg2SUZabGNtbG1lU0IwYUdGMElITndZWEp6WlNCamIyUmxJR2x6SUc1dmRDQnlaV3hsZG1GdWRDNHVMbHh1SUNCamIyNXpkQ0JvZVhCbGNuQnNZVzVsY3lBOUlIVjBhV3h6WEc0Z0lDQWdMbkpoYm1kbEtHNU9iMlJsY3lsY2JpQWdJQ0F1YldGd0tDZ3BJRDArSUhSeVpXVXVhSGx3WlhKd2JHRnVaU0EvSURFZ09pQXdLVHRjYmx4dUlDQmpiMjV6ZENCdlptWnpaWFJ6SUQwZ2RYUnBiSE11ZW1WeWIzTW9iazV2WkdWektUdGNiaUFnWTI5dWMzUWdZMmhwYkdSeVpXNGdQU0IxZEdsc2N5NXlZVzVuWlNodVRtOWtaWE1wTG0xaGNDZ29LU0E5UGlCYkxURXNJQzB4WFNrN1hHNGdJR052Ym5OMElHbHVaR2xqWlhNZ1BTQjFkR2xzYzF4dUlDQWdJQzV5WVc1blpTaHVUR1ZoZG1WektWeHVJQ0FnSUM1dFlYQW9LQ2tnUFQ0Z2RYUnBiSE11Y21GdVoyVW9iR1ZoWmxOcGVtVXBMbTFoY0Nnb0tTQTlQaUF0TVNrcE8xeHVJQ0J5WldOMWNuTnBkbVZHYkdGMGRHVnVLSFJ5WldVc0lHaDVjR1Z5Y0d4aGJtVnpMQ0J2Wm1aelpYUnpMQ0JqYUdsc1pISmxiaXdnYVc1a2FXTmxjeXdnTUN3Z01DazdYRzRnSUhKbGRIVnliaUJ1WlhjZ1JteGhkRlJ5WldVb2FIbHdaWEp3YkdGdVpYTXNJRzltWm5ObGRITXNJR05vYVd4a2NtVnVMQ0JwYm1ScFkyVnpLVHRjYm4xY2JseHVablZ1WTNScGIyNGdjbVZqZFhKemFYWmxSbXhoZEhSbGJpaGNiaUFnZEhKbFpUb2dVbUZ1Wkc5dFVISnZhbVZqZEdsdmJsUnlaV1ZPYjJSbExGeHVJQ0JvZVhCbGNuQnNZVzVsY3pvZ2JuVnRZbVZ5VzEwc1hHNGdJRzltWm5ObGRITTZJRzUxYldKbGNsdGRMRnh1SUNCamFHbHNaSEpsYmpvZ2JuVnRZbVZ5VzExYlhTeGNiaUFnYVc1a2FXTmxjem9nYm5WdFltVnlXMTFiWFN4Y2JpQWdibTlrWlU1MWJUb2diblZ0WW1WeUxGeHVJQ0JzWldGbVRuVnRPaUJ1ZFcxaVpYSmNiaWs2SUhzZ2JtOWtaVTUxYlRvZ2JuVnRZbVZ5T3lCc1pXRm1UblZ0T2lCdWRXMWlaWElnZlNCN1hHNGdJR2xtSUNoMGNtVmxMbWx6VEdWaFppa2dlMXh1SUNBZ0lHTm9hV3hrY21WdVcyNXZaR1ZPZFcxZFd6QmRJRDBnTFd4bFlXWk9kVzA3WEc1Y2JpQWdJQ0F2THlCVVQwUlBPaUJVY21sd2JHVWdZMmhsWTJzZ2RHaHBjeUJ2Y0dWeVlYUnBiMjRnWTI5eWNtVnpjRzl1WkhNZ2RHOWNiaUFnSUNBdkx5QnBibVJwWTJWelcyeGxZV1pPZFcwZ09pQjBjbVZsTG1sdVpHbGpaWE11YzJoaGNHVmJNRjFkSUQwZ2RISmxaUzVwYm1ScFkyVnpYRzRnSUNBZ2FXNWthV05sYzF0c1pXRm1UblZ0WFM1emNHeHBZMlVvTUN3Z2RISmxaUzVwYm1ScFkyVnpJUzVzWlc1bmRHZ3NJQzR1TG5SeVpXVXVhVzVrYVdObGN5RXBPMXh1SUNBZ0lHeGxZV1pPZFcwZ0t6MGdNVHRjYmlBZ0lDQnlaWFIxY200Z2V5QnViMlJsVG5WdExDQnNaV0ZtVG5WdElIMDdYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdhSGx3WlhKd2JHRnVaWE5iYm05a1pVNTFiVjBnUFNCMGNtVmxMbWg1Y0dWeWNHeGhibVVoTzF4dUlDQWdJRzltWm5ObGRITmJibTlrWlU1MWJWMGdQU0IwY21WbExtOW1abk5sZENFN1hHNGdJQ0FnWTJocGJHUnlaVzViYm05a1pVNTFiVjFiTUYwZ1BTQnViMlJsVG5WdElDc2dNVHRjYmlBZ0lDQmpiMjV6ZENCdmJHUk9iMlJsVG5WdElEMGdibTlrWlU1MWJUdGNibHh1SUNBZ0lHeGxkQ0J5WlhNZ1BTQnlaV04xY25OcGRtVkdiR0YwZEdWdUtGeHVJQ0FnSUNBZ2RISmxaUzVzWldaMFEyaHBiR1FoTEZ4dUlDQWdJQ0FnYUhsd1pYSndiR0Z1WlhNc1hHNGdJQ0FnSUNCdlptWnpaWFJ6TEZ4dUlDQWdJQ0FnWTJocGJHUnlaVzRzWEc0Z0lDQWdJQ0JwYm1ScFkyVnpMRnh1SUNBZ0lDQWdibTlrWlU1MWJTQXJJREVzWEc0Z0lDQWdJQ0JzWldGbVRuVnRYRzRnSUNBZ0tUdGNiaUFnSUNCdWIyUmxUblZ0SUQwZ2NtVnpMbTV2WkdWT2RXMDdYRzRnSUNBZ2JHVmhaazUxYlNBOUlISmxjeTVzWldGbVRuVnRPMXh1WEc0Z0lDQWdZMmhwYkdSeVpXNWJiMnhrVG05a1pVNTFiVjFiTVYwZ1BTQnViMlJsVG5WdElDc2dNVHRjYmx4dUlDQWdJSEpsY3lBOUlISmxZM1Z5YzJsMlpVWnNZWFIwWlc0b1hHNGdJQ0FnSUNCMGNtVmxMbkpwWjJoMFEyaHBiR1FoTEZ4dUlDQWdJQ0FnYUhsd1pYSndiR0Z1WlhNc1hHNGdJQ0FnSUNCdlptWnpaWFJ6TEZ4dUlDQWdJQ0FnWTJocGJHUnlaVzRzWEc0Z0lDQWdJQ0JwYm1ScFkyVnpMRnh1SUNBZ0lDQWdibTlrWlU1MWJTQXJJREVzWEc0Z0lDQWdJQ0JzWldGbVRuVnRYRzRnSUNBZ0tUdGNiaUFnSUNCeVpYUjFjbTRnZXlCdWIyUmxUblZ0T2lCeVpYTXVibTlrWlU1MWJTd2diR1ZoWms1MWJUb2djbVZ6TG14bFlXWk9kVzBnZlR0Y2JpQWdmVnh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnVkVzFPYjJSbGN5aDBjbVZsT2lCU1lXNWtiMjFRY205cVpXTjBhVzl1VkhKbFpVNXZaR1VwT2lCdWRXMWlaWElnZTF4dUlDQnBaaUFvZEhKbFpTNXBjMHhsWVdZcElIdGNiaUFnSUNCeVpYUjFjbTRnTVR0Y2JpQWdmU0JsYkhObElIdGNiaUFnSUNCeVpYUjFjbTRnTVNBcklHNTFiVTV2WkdWektIUnlaV1V1YkdWbWRFTm9hV3hrSVNrZ0t5QnVkVzFPYjJSbGN5aDBjbVZsTG5KcFoyaDBRMmhwYkdRaEtUdGNiaUFnZlZ4dWZWeHVYRzVtZFc1amRHbHZiaUJ1ZFcxTVpXRjJaWE1vZEhKbFpUb2dVbUZ1Wkc5dFVISnZhbVZqZEdsdmJsUnlaV1ZPYjJSbEtUb2diblZ0WW1WeUlIdGNiaUFnYVdZZ0tIUnlaV1V1YVhOTVpXRm1LU0I3WEc0Z0lDQWdjbVYwZFhKdUlERTdYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdjbVYwZFhKdUlHNTFiVXhsWVhabGN5aDBjbVZsTG14bFpuUkRhR2xzWkNFcElDc2diblZ0VEdWaGRtVnpLSFJ5WldVdWNtbG5hSFJEYUdsc1pDRXBPMXh1SUNCOVhHNTlYRzVjYmk4cUtseHVJQ29nUjJWdVpYSmhkR1VnWVc0Z1lYSnlZWGtnYjJZZ2MyVjBjeUJ2WmlCallXNWthV1JoZEdVZ2JtVmhjbVZ6ZENCdVpXbG5hR0p2Y25NZ1lubGNiaUFxSUdOdmJuTjBjblZqZEdsdVp5QmhJSEpoYm1SdmJTQndjbTlxWldOMGFXOXVJR1p2Y21WemRDQmhibVFnZEdGcmFXNW5JSFJvWlNCc1pXRjJaWE1nYjJZZ1lXeHNJSFJvWlZ4dUlDb2dkSEpsWlhNdUlFRnVlU0JuYVhabGJpQjBjbVZsSUdoaGN5QnNaV0YyWlhNZ2RHaGhkQ0JoY21VZ1lTQnpaWFFnYjJZZ2NHOTBaVzUwYVdGc0lHNWxZWEpsYzNSY2JpQXFJRzVsYVdkb1ltOXljeTRnUjJsMlpXNGdaVzV2ZFdkb0lIUnlaV1Z6SUhSb1pTQnpaWFFnYjJZZ1lXeHNJSE4xWTJnZ2JHVmhkbVZ6SUdkcGRtVnpJR0VnWjI5dlpGeHVJQ29nYkdsclpXeHBhRzl2WkNCdlppQm5aWFIwYVc1bklHRWdaMjl2WkNCelpYUWdiMllnYm1WaGNtVnpkQ0J1WldsbmFHSnZjbk1nYVc0Z1kyOXRjRzl6YVhSbExpQlRhVzVqWlZ4dUlDb2djM1ZqYUNCaElISmhibVJ2YlNCd2NtOXFaV04wYVc5dUlHWnZjbVZ6ZENCcGN5QnBibVY0Y0dWdWMybDJaU0IwYnlCamIyMXdkWFJsTENCMGFHbHpJR05oYmlCaVpTQmhYRzRnS2lCMWMyVm1kV3dnYldWaGJuTWdiMllnYzJWbFpHbHVaeUJ2ZEdobGNpQnVaV0Z5WlhOMElHNWxhV2RvWW05eUlHRnNaMjl5YVhSb2JYTXVYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCdFlXdGxUR1ZoWmtGeWNtRjVLSEp3Um05eVpYTjBPaUJHYkdGMFZISmxaVnRkS1RvZ2JuVnRZbVZ5VzExYlhTQjdYRzRnSUdsbUlDaHljRVp2Y21WemRDNXNaVzVuZEdnZ1BpQXdLU0I3WEc0Z0lDQWdZMjl1YzNRZ2IzVjBjSFYwT2lCdWRXMWlaWEpiWFZ0ZElEMGdXMTA3WEc0Z0lDQWdabTl5SUNoc1pYUWdkSEpsWlNCdlppQnljRVp2Y21WemRDa2dlMXh1SUNBZ0lDQWdiM1YwY0hWMExuQjFjMmdvTGk0dWRISmxaUzVwYm1ScFkyVnpJU2s3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCdmRYUndkWFE3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnY21WMGRYSnVJRnRiTFRGZFhUdGNiaUFnZlZ4dWZWeHVYRzR2S2lwY2JpQXFJRk5sYkdWamRITWdkR2hsSUhOcFpHVWdiMllnZEdobElIUnlaV1VnZEc4Z2MyVmhjbU5vSUdSMWNtbHVaeUJtYkdGMElIUnlaV1VnYzJWaGNtTm9MbHh1SUNvdlhHNW1kVzVqZEdsdmJpQnpaV3hsWTNSVGFXUmxLRnh1SUNCb2VYQmxjbkJzWVc1bE9pQnVkVzFpWlhJc1hHNGdJRzltWm5ObGREb2diblZ0WW1WeUxGeHVJQ0J3YjJsdWREb2diblZ0WW1WeUxGeHVJQ0J5WVc1a2IyMDZJRkpoYm1SdmJVWnVYRzRwSUh0Y2JpQWdiR1YwSUcxaGNtZHBiaUE5SUc5bVpuTmxkRHRjYmx4dUlDQWdJRzFoY21kcGJpQXJQU0JvZVhCbGNuQnNZVzVsSUNvZ2NHOXBiblE3WEc0Z0lGeHVYRzRnSUdsbUlDaHRZWEpuYVc0Z1BUMDlJREFwSUh0Y2JpQWdJQ0JqYjI1emRDQnphV1JsSUQwZ2RYUnBiSE11ZEdGMVVtRnVaRWx1ZENneUxDQnlZVzVrYjIwcE8xeHVJQ0FnSUhKbGRIVnliaUJ6YVdSbE8xeHVJQ0I5SUdWc2MyVWdhV1lnS0cxaGNtZHBiaUErSURBcElIdGNiaUFnSUNCeVpYUjFjbTRnTUR0Y2JpQWdmU0JsYkhObElIdGNiaUFnSUNCeVpYUjFjbTRnTVR0Y2JpQWdmVnh1ZlZ4dVhHNHZLaXBjYmlBcUlGTmxZWEpqYUdWeklHRWdabXhoZEhSbGJtVmtJSEp3TFhSeVpXVWdabTl5SUdFZ2NHOXBiblF1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnpaV0Z5WTJoR2JHRjBWSEpsWlNoY2JpQWdjRzlwYm5RNklHNTFiV0psY2l4Y2JpQWdkSEpsWlRvZ1JteGhkRlJ5WldVc1hHNGdJSEpoYm1SdmJUb2dVbUZ1Wkc5dFJtNWNiaWtnZTF4dUlDQnNaWFFnYm05a1pTQTlJREE3WEc0Z0lIZG9hV3hsSUNoMGNtVmxMbU5vYVd4a2NtVnVXMjV2WkdWZFd6QmRJRDRnTUNrZ2UxeHVJQ0FnSUdOdmJuTjBJSE5wWkdVZ1BTQnpaV3hsWTNSVGFXUmxLRnh1SUNBZ0lDQWdkSEpsWlM1b2VYQmxjbkJzWVc1bGMxdHViMlJsWFN4Y2JpQWdJQ0FnSUhSeVpXVXViMlptYzJWMGMxdHViMlJsWFN4Y2JpQWdJQ0FnSUhCdmFXNTBMRnh1SUNBZ0lDQWdjbUZ1Wkc5dFhHNGdJQ0FnS1R0Y2JpQWdJQ0JwWmlBb2MybGtaU0E5UFQwZ01Da2dlMXh1SUNBZ0lDQWdibTlrWlNBOUlIUnlaV1V1WTJocGJHUnlaVzViYm05a1pWMWJNRjA3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHNXZaR1VnUFNCMGNtVmxMbU5vYVd4a2NtVnVXMjV2WkdWZFd6RmRPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJR052Ym5OMElHbHVaR1Y0SUQwZ0xURWdLaUIwY21WbExtTm9hV3hrY21WdVcyNXZaR1ZkV3pCZE8xeHVJQ0J5WlhSMWNtNGdkSEpsWlM1cGJtUnBZMlZ6VzJsdVpHVjRYVHRjYm4xY2JpSmRmUT09IiwiY29uc3QgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0FueUFycmF5KG9iamVjdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmplY3QpLmVuZHNXaXRoKCdBcnJheV0nKTtcbn1cbiIsIi8qKlxuICogQ2FsY3VsYXRlIGN1cnJlbnQgZXJyb3JcbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSB7e3g6QXJyYXk8bnVtYmVyPiwgeTpBcnJheTxudW1iZXI+fX0gZGF0YSAtIEFycmF5IG9mIHBvaW50cyB0byBmaXQgaW4gdGhlIGZvcm1hdCBbeDEsIHgyLCAuLi4gXSwgW3kxLCB5MiwgLi4uIF1cbiAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcGFyYW1ldGVycyAtIEFycmF5IG9mIGN1cnJlbnQgcGFyYW1ldGVyIHZhbHVlc1xuICogQHBhcmFtIHtmdW5jdGlvbn0gcGFyYW1ldGVyaXplZEZ1bmN0aW9uIC0gVGhlIHBhcmFtZXRlcnMgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB3aXRoIHRoZSBpbmRlcGVuZGVudCB2YXJpYWJsZSBhcyBhIHBhcmFtZXRlclxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlcnJvckNhbGN1bGF0aW9uKFxuICBkYXRhLFxuICBwYXJhbWV0ZXJzLFxuICBwYXJhbWV0ZXJpemVkRnVuY3Rpb24sXG4pIHtcbiAgbGV0IGVycm9yID0gMDtcbiAgY29uc3QgZnVuYyA9IHBhcmFtZXRlcml6ZWRGdW5jdGlvbihwYXJhbWV0ZXJzKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEueC5sZW5ndGg7IGkrKykge1xuICAgIGVycm9yICs9IE1hdGguYWJzKGRhdGEueVtpXSAtIGZ1bmMoZGF0YS54W2ldKSk7XG4gIH1cblxuICByZXR1cm4gZXJyb3I7XG59XG4iLCIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kXG5jb25zdCB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG4vKipcbiAqIENoZWNrcyBpZiBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgYW4gQXJyYXkgKGFycmF5IG9yIHR5cGVkIGFycmF5LCBleGNlcHQgdGhvc2UgdGhhdCBjb250YWluIGJpZ2ludCB2YWx1ZXMpLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIE9iamVjdCB0byBjaGVjay5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIG9iamVjdCBpcyBhbiBhcnJheSBvciBhIHR5cGVkIGFycmF5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBbnlBcnJheSh2YWx1ZSkge1xuICAgIGNvbnN0IHRhZyA9IHRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICAgIHJldHVybiB0YWcuZW5kc1dpdGgoJ0FycmF5XScpICYmICF0YWcuaW5jbHVkZXMoJ0JpZycpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZFxuY29uc3QgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuLyoqXG4gKiBDaGVja3MgaWYgYW4gb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIGFuIEFycmF5IChhcnJheSBvciB0eXBlZCBhcnJheSwgZXhjZXB0IHRob3NlIHRoYXQgY29udGFpbiBiaWdpbnQgdmFsdWVzKS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBPYmplY3QgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBvYmplY3QgaXMgYW4gYXJyYXkgb3IgYSB0eXBlZCBhcnJheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQW55QXJyYXkodmFsdWUpIHtcbiAgICBjb25zdCB0YWcgPSB0b1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICByZXR1cm4gdGFnLmVuZHNXaXRoKCdBcnJheV0nKSAmJiAhdGFnLmluY2x1ZGVzKCdCaWcnKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2RcbmNvbnN0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbi8qKlxuICogQ2hlY2tzIGlmIGFuIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBhbiBBcnJheSAoYXJyYXkgb3IgdHlwZWQgYXJyYXksIGV4Y2VwdCB0aG9zZSB0aGF0IGNvbnRhaW4gYmlnaW50IHZhbHVlcykuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gT2JqZWN0IHRvIGNoZWNrLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGFuIGFycmF5IG9yIGEgdHlwZWQgYXJyYXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FueUFycmF5KHZhbHVlKSB7XG4gICAgY29uc3QgdGFnID0gdG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gICAgcmV0dXJuIHRhZy5lbmRzV2l0aCgnQXJyYXldJykgJiYgIXRhZy5pbmNsdWRlcygnQmlnJyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kXG5jb25zdCB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG4vKipcbiAqIENoZWNrcyBpZiBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgYW4gQXJyYXkgKGFycmF5IG9yIHR5cGVkIGFycmF5LCBleGNlcHQgdGhvc2UgdGhhdCBjb250YWluIGJpZ2ludCB2YWx1ZXMpLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIE9iamVjdCB0byBjaGVjay5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIG9iamVjdCBpcyBhbiBhcnJheSBvciBhIHR5cGVkIGFycmF5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBbnlBcnJheSh2YWx1ZSkge1xuICAgIGNvbnN0IHRhZyA9IHRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICAgIHJldHVybiB0YWcuZW5kc1dpdGgoJ0FycmF5XScpICYmICF0YWcuaW5jbHVkZXMoJ0JpZycpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiaW1wb3J0IHsgaXNBbnlBcnJheSB9IGZyb20gJ2lzLWFueS1hcnJheSc7XG5pbXBvcnQgbWF4IGZyb20gJ21sLWFycmF5LW1heCc7XG5pbXBvcnQgbWluIGZyb20gJ21sLWFycmF5LW1pbic7XG5cbmZ1bmN0aW9uIHJlc2NhbGUoaW5wdXQpIHtcbiAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gIGlmICghaXNBbnlBcnJheShpbnB1dCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnB1dCBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gIH0gZWxzZSBpZiAoaW5wdXQubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW5wdXQgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgfVxuXG4gIHZhciBvdXRwdXQ7XG5cbiAgaWYgKG9wdGlvbnMub3V0cHV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoIWlzQW55QXJyYXkob3B0aW9ucy5vdXRwdXQpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvdXRwdXQgb3B0aW9uIG11c3QgYmUgYW4gYXJyYXkgaWYgc3BlY2lmaWVkJyk7XG4gICAgfVxuXG4gICAgb3V0cHV0ID0gb3B0aW9ucy5vdXRwdXQ7XG4gIH0gZWxzZSB7XG4gICAgb3V0cHV0ID0gbmV3IEFycmF5KGlucHV0Lmxlbmd0aCk7XG4gIH1cblxuICB2YXIgY3VycmVudE1pbiA9IG1pbihpbnB1dCk7XG4gIHZhciBjdXJyZW50TWF4ID0gbWF4KGlucHV0KTtcblxuICBpZiAoY3VycmVudE1pbiA9PT0gY3VycmVudE1heCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdtaW5pbXVtIGFuZCBtYXhpbXVtIGlucHV0IHZhbHVlcyBhcmUgZXF1YWwuIENhbm5vdCByZXNjYWxlIGEgY29uc3RhbnQgYXJyYXknKTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyRtaW4gPSBvcHRpb25zLm1pbixcbiAgICAgIG1pblZhbHVlID0gX29wdGlvbnMkbWluID09PSB2b2lkIDAgPyBvcHRpb25zLmF1dG9NaW5NYXggPyBjdXJyZW50TWluIDogMCA6IF9vcHRpb25zJG1pbixcbiAgICAgIF9vcHRpb25zJG1heCA9IG9wdGlvbnMubWF4LFxuICAgICAgbWF4VmFsdWUgPSBfb3B0aW9ucyRtYXggPT09IHZvaWQgMCA/IG9wdGlvbnMuYXV0b01pbk1heCA/IGN1cnJlbnRNYXggOiAxIDogX29wdGlvbnMkbWF4O1xuXG4gIGlmIChtaW5WYWx1ZSA+PSBtYXhWYWx1ZSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdtaW4gb3B0aW9uIG11c3QgYmUgc21hbGxlciB0aGFuIG1heCBvcHRpb24nKTtcbiAgfVxuXG4gIHZhciBmYWN0b3IgPSAobWF4VmFsdWUgLSBtaW5WYWx1ZSkgLyAoY3VycmVudE1heCAtIGN1cnJlbnRNaW4pO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICBvdXRwdXRbaV0gPSAoaW5wdXRbaV0gLSBjdXJyZW50TWluKSAqIGZhY3RvciArIG1pblZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuZXhwb3J0IHsgcmVzY2FsZSBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgeyBpc0FueUFycmF5IH0gZnJvbSAnaXMtYW55LWFycmF5JztcblxuZnVuY3Rpb24gbWluKGlucHV0KSB7XG4gIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcblxuICBpZiAoIWlzQW55QXJyYXkoaW5wdXQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW5wdXQgbXVzdCBiZSBhbiBhcnJheScpO1xuICB9XG5cbiAgaWYgKGlucHV0Lmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2lucHV0IG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gIH1cblxuICB2YXIgX29wdGlvbnMkZnJvbUluZGV4ID0gb3B0aW9ucy5mcm9tSW5kZXgsXG4gICAgICBmcm9tSW5kZXggPSBfb3B0aW9ucyRmcm9tSW5kZXggPT09IHZvaWQgMCA/IDAgOiBfb3B0aW9ucyRmcm9tSW5kZXgsXG4gICAgICBfb3B0aW9ucyR0b0luZGV4ID0gb3B0aW9ucy50b0luZGV4LFxuICAgICAgdG9JbmRleCA9IF9vcHRpb25zJHRvSW5kZXggPT09IHZvaWQgMCA/IGlucHV0Lmxlbmd0aCA6IF9vcHRpb25zJHRvSW5kZXg7XG5cbiAgaWYgKGZyb21JbmRleCA8IDAgfHwgZnJvbUluZGV4ID49IGlucHV0Lmxlbmd0aCB8fCAhTnVtYmVyLmlzSW50ZWdlcihmcm9tSW5kZXgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdmcm9tSW5kZXggbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgc21hbGxlciB0aGFuIGxlbmd0aCcpO1xuICB9XG5cbiAgaWYgKHRvSW5kZXggPD0gZnJvbUluZGV4IHx8IHRvSW5kZXggPiBpbnB1dC5sZW5ndGggfHwgIU51bWJlci5pc0ludGVnZXIodG9JbmRleCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RvSW5kZXggbXVzdCBiZSBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBmcm9tSW5kZXggYW5kIGF0IG1vc3QgZXF1YWwgdG8gbGVuZ3RoJyk7XG4gIH1cblxuICB2YXIgbWluVmFsdWUgPSBpbnB1dFtmcm9tSW5kZXhdO1xuXG4gIGZvciAodmFyIGkgPSBmcm9tSW5kZXggKyAxOyBpIDwgdG9JbmRleDsgaSsrKSB7XG4gICAgaWYgKGlucHV0W2ldIDwgbWluVmFsdWUpIG1pblZhbHVlID0gaW5wdXRbaV07XG4gIH1cblxuICByZXR1cm4gbWluVmFsdWU7XG59XG5cbmV4cG9ydCB7IG1pbiBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgeyBpc0FueUFycmF5IH0gZnJvbSAnaXMtYW55LWFycmF5JztcblxuZnVuY3Rpb24gbWF4KGlucHV0KSB7XG4gIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcblxuICBpZiAoIWlzQW55QXJyYXkoaW5wdXQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW5wdXQgbXVzdCBiZSBhbiBhcnJheScpO1xuICB9XG5cbiAgaWYgKGlucHV0Lmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2lucHV0IG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gIH1cblxuICB2YXIgX29wdGlvbnMkZnJvbUluZGV4ID0gb3B0aW9ucy5mcm9tSW5kZXgsXG4gICAgICBmcm9tSW5kZXggPSBfb3B0aW9ucyRmcm9tSW5kZXggPT09IHZvaWQgMCA/IDAgOiBfb3B0aW9ucyRmcm9tSW5kZXgsXG4gICAgICBfb3B0aW9ucyR0b0luZGV4ID0gb3B0aW9ucy50b0luZGV4LFxuICAgICAgdG9JbmRleCA9IF9vcHRpb25zJHRvSW5kZXggPT09IHZvaWQgMCA/IGlucHV0Lmxlbmd0aCA6IF9vcHRpb25zJHRvSW5kZXg7XG5cbiAgaWYgKGZyb21JbmRleCA8IDAgfHwgZnJvbUluZGV4ID49IGlucHV0Lmxlbmd0aCB8fCAhTnVtYmVyLmlzSW50ZWdlcihmcm9tSW5kZXgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdmcm9tSW5kZXggbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgc21hbGxlciB0aGFuIGxlbmd0aCcpO1xuICB9XG5cbiAgaWYgKHRvSW5kZXggPD0gZnJvbUluZGV4IHx8IHRvSW5kZXggPiBpbnB1dC5sZW5ndGggfHwgIU51bWJlci5pc0ludGVnZXIodG9JbmRleCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RvSW5kZXggbXVzdCBiZSBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBmcm9tSW5kZXggYW5kIGF0IG1vc3QgZXF1YWwgdG8gbGVuZ3RoJyk7XG4gIH1cblxuICB2YXIgbWF4VmFsdWUgPSBpbnB1dFtmcm9tSW5kZXhdO1xuXG4gIGZvciAodmFyIGkgPSBmcm9tSW5kZXggKyAxOyBpIDwgdG9JbmRleDsgaSsrKSB7XG4gICAgaWYgKGlucHV0W2ldID4gbWF4VmFsdWUpIG1heFZhbHVlID0gaW5wdXRbaV07XG4gIH1cblxuICByZXR1cm4gbWF4VmFsdWU7XG59XG5cbmV4cG9ydCB7IG1heCBhcyBkZWZhdWx0IH07XG4iLCJjb25zdCBpbmRlbnQgPSAnICcucmVwZWF0KDIpO1xuY29uc3QgaW5kZW50RGF0YSA9ICcgJy5yZXBlYXQoNCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNwZWN0TWF0cml4KCkge1xuICByZXR1cm4gaW5zcGVjdE1hdHJpeFdpdGhPcHRpb25zKHRoaXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdE1hdHJpeFdpdGhPcHRpb25zKG1hdHJpeCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBtYXhSb3dzID0gMTUsXG4gICAgbWF4Q29sdW1ucyA9IDEwLFxuICAgIG1heE51bVNpemUgPSA4LFxuICAgIHBhZE1pbnVzID0gJ2F1dG8nLFxuICB9ID0gb3B0aW9ucztcbiAgcmV0dXJuIGAke21hdHJpeC5jb25zdHJ1Y3Rvci5uYW1lfSB7XG4ke2luZGVudH1bXG4ke2luZGVudERhdGF9JHtpbnNwZWN0RGF0YShtYXRyaXgsIG1heFJvd3MsIG1heENvbHVtbnMsIG1heE51bVNpemUsIHBhZE1pbnVzKX1cbiR7aW5kZW50fV1cbiR7aW5kZW50fXJvd3M6ICR7bWF0cml4LnJvd3N9XG4ke2luZGVudH1jb2x1bW5zOiAke21hdHJpeC5jb2x1bW5zfVxufWA7XG59XG5cbmZ1bmN0aW9uIGluc3BlY3REYXRhKG1hdHJpeCwgbWF4Um93cywgbWF4Q29sdW1ucywgbWF4TnVtU2l6ZSwgcGFkTWludXMpIHtcbiAgY29uc3QgeyByb3dzLCBjb2x1bW5zIH0gPSBtYXRyaXg7XG4gIGNvbnN0IG1heEkgPSBNYXRoLm1pbihyb3dzLCBtYXhSb3dzKTtcbiAgY29uc3QgbWF4SiA9IE1hdGgubWluKGNvbHVtbnMsIG1heENvbHVtbnMpO1xuICBjb25zdCByZXN1bHQgPSBbXTtcblxuICBpZiAocGFkTWludXMgPT09ICdhdXRvJykge1xuICAgIHBhZE1pbnVzID0gZmFsc2U7XG4gICAgbG9vcDogZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhJOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF4SjsgaisrKSB7XG4gICAgICAgIGlmIChtYXRyaXguZ2V0KGksIGopIDwgMCkge1xuICAgICAgICAgIHBhZE1pbnVzID0gdHJ1ZTtcbiAgICAgICAgICBicmVhayBsb29wO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhJOyBpKyspIHtcbiAgICBsZXQgbGluZSA9IFtdO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF4SjsgaisrKSB7XG4gICAgICBsaW5lLnB1c2goZm9ybWF0TnVtYmVyKG1hdHJpeC5nZXQoaSwgaiksIG1heE51bVNpemUsIHBhZE1pbnVzKSk7XG4gICAgfVxuICAgIHJlc3VsdC5wdXNoKGAke2xpbmUuam9pbignICcpfWApO1xuICB9XG4gIGlmIChtYXhKICE9PSBjb2x1bW5zKSB7XG4gICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSArPSBgIC4uLiAke2NvbHVtbnMgLSBtYXhDb2x1bW5zfSBtb3JlIGNvbHVtbnNgO1xuICB9XG4gIGlmIChtYXhJICE9PSByb3dzKSB7XG4gICAgcmVzdWx0LnB1c2goYC4uLiAke3Jvd3MgLSBtYXhSb3dzfSBtb3JlIHJvd3NgKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0LmpvaW4oYFxcbiR7aW5kZW50RGF0YX1gKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0TnVtYmVyKG51bSwgbWF4TnVtU2l6ZSwgcGFkTWludXMpIHtcbiAgcmV0dXJuIChcbiAgICBudW0gPj0gMCAmJiBwYWRNaW51c1xuICAgICAgPyBgICR7Zm9ybWF0TnVtYmVyMihudW0sIG1heE51bVNpemUgLSAxKX1gXG4gICAgICA6IGZvcm1hdE51bWJlcjIobnVtLCBtYXhOdW1TaXplKVxuICApLnBhZEVuZChtYXhOdW1TaXplKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0TnVtYmVyMihudW0sIGxlbikge1xuICAvLyBzbWFsbC5sZW5ndGggbnVtYmVycyBzaG91bGQgYmUgYXMgaXNcbiAgbGV0IHN0ciA9IG51bS50b1N0cmluZygpO1xuICBpZiAoc3RyLmxlbmd0aCA8PSBsZW4pIHJldHVybiBzdHI7XG5cbiAgLy8gKDcpJzAuMDAxMjMnIGlzIGJldHRlciB0aGVuICg3KScxLjIzZS0yJ1xuICAvLyAoOCknMC4wMDAxMjMnIGlzIHdvcnNlIHRoZW4gKDcpJzEuMjNlLTMnLFxuICBsZXQgZml4ID0gbnVtLnRvRml4ZWQobGVuKTtcbiAgaWYgKGZpeC5sZW5ndGggPiBsZW4pIHtcbiAgICBmaXggPSBudW0udG9GaXhlZChNYXRoLm1heCgwLCBsZW4gLSAoZml4Lmxlbmd0aCAtIGxlbikpKTtcbiAgfVxuICBpZiAoXG4gICAgZml4Lmxlbmd0aCA8PSBsZW4gJiZcbiAgICAhZml4LnN0YXJ0c1dpdGgoJzAuMDAwJykgJiZcbiAgICAhZml4LnN0YXJ0c1dpdGgoJy0wLjAwMCcpXG4gICkge1xuICAgIHJldHVybiBmaXg7XG4gIH1cblxuICAvLyB3ZWxsLCBpZiBpdCdzIHN0aWxsIHRvbyBsb25nIHRoZSB1c2VyIHNob3VsZCd2ZSB1c2VkIGxvbmdlciBudW1iZXJzXG4gIGxldCBleHAgPSBudW0udG9FeHBvbmVudGlhbChsZW4pO1xuICBpZiAoZXhwLmxlbmd0aCA+IGxlbikge1xuICAgIGV4cCA9IG51bS50b0V4cG9uZW50aWFsKE1hdGgubWF4KDAsIGxlbiAtIChleHAubGVuZ3RoIC0gbGVuKSkpO1xuICB9XG4gIHJldHVybiBleHAuc2xpY2UoMCk7XG59XG4iLCJpbXBvcnQgeyBpc0FueUFycmF5IH0gZnJvbSAnaXMtYW55LWFycmF5JztcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICogQ2hlY2sgdGhhdCBhIHJvdyBpbmRleCBpcyBub3Qgb3V0IG9mIGJvdW5kc1xuICogQHBhcmFtIHtNYXRyaXh9IG1hdHJpeFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvdXRlcl1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUm93SW5kZXgobWF0cml4LCBpbmRleCwgb3V0ZXIpIHtcbiAgbGV0IG1heCA9IG91dGVyID8gbWF0cml4LnJvd3MgOiBtYXRyaXgucm93cyAtIDE7XG4gIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPiBtYXgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignUm93IGluZGV4IG91dCBvZiByYW5nZScpO1xuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqIENoZWNrIHRoYXQgYSBjb2x1bW4gaW5kZXggaXMgbm90IG91dCBvZiBib3VuZHNcbiAqIEBwYXJhbSB7TWF0cml4fSBtYXRyaXhcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtIHtib29sZWFufSBbb3V0ZXJdXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0NvbHVtbkluZGV4KG1hdHJpeCwgaW5kZXgsIG91dGVyKSB7XG4gIGxldCBtYXggPSBvdXRlciA/IG1hdHJpeC5jb2x1bW5zIDogbWF0cml4LmNvbHVtbnMgLSAxO1xuICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID4gbWF4KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0NvbHVtbiBpbmRleCBvdXQgb2YgcmFuZ2UnKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBDaGVjayB0aGF0IHRoZSBwcm92aWRlZCB2ZWN0b3IgaXMgYW4gYXJyYXkgd2l0aCB0aGUgcmlnaHQgbGVuZ3RoXG4gKiBAcGFyYW0ge01hdHJpeH0gbWF0cml4XG4gKiBAcGFyYW0ge0FycmF5fE1hdHJpeH0gdmVjdG9yXG4gKiBAcmV0dXJuIHtBcnJheX1cbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1Jvd1ZlY3RvcihtYXRyaXgsIHZlY3Rvcikge1xuICBpZiAodmVjdG9yLnRvMURBcnJheSkge1xuICAgIHZlY3RvciA9IHZlY3Rvci50bzFEQXJyYXkoKTtcbiAgfVxuICBpZiAodmVjdG9yLmxlbmd0aCAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcbiAgICAgICd2ZWN0b3Igc2l6ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBudW1iZXIgb2YgY29sdW1ucycsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdmVjdG9yO1xufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBDaGVjayB0aGF0IHRoZSBwcm92aWRlZCB2ZWN0b3IgaXMgYW4gYXJyYXkgd2l0aCB0aGUgcmlnaHQgbGVuZ3RoXG4gKiBAcGFyYW0ge01hdHJpeH0gbWF0cml4XG4gKiBAcGFyYW0ge0FycmF5fE1hdHJpeH0gdmVjdG9yXG4gKiBAcmV0dXJuIHtBcnJheX1cbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0NvbHVtblZlY3RvcihtYXRyaXgsIHZlY3Rvcikge1xuICBpZiAodmVjdG9yLnRvMURBcnJheSkge1xuICAgIHZlY3RvciA9IHZlY3Rvci50bzFEQXJyYXkoKTtcbiAgfVxuICBpZiAodmVjdG9yLmxlbmd0aCAhPT0gbWF0cml4LnJvd3MpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigndmVjdG9yIHNpemUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgbnVtYmVyIG9mIHJvd3MnKTtcbiAgfVxuICByZXR1cm4gdmVjdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tSb3dJbmRpY2VzKG1hdHJpeCwgcm93SW5kaWNlcykge1xuICBpZiAoIWlzQW55QXJyYXkocm93SW5kaWNlcykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdyb3cgaW5kaWNlcyBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd0luZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAocm93SW5kaWNlc1tpXSA8IDAgfHwgcm93SW5kaWNlc1tpXSA+PSBtYXRyaXgucm93cykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3JvdyBpbmRpY2VzIGFyZSBvdXQgb2YgcmFuZ2UnKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQ29sdW1uSW5kaWNlcyhtYXRyaXgsIGNvbHVtbkluZGljZXMpIHtcbiAgaWYgKCFpc0FueUFycmF5KGNvbHVtbkluZGljZXMpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY29sdW1uIGluZGljZXMgbXVzdCBiZSBhbiBhcnJheScpO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5JbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGNvbHVtbkluZGljZXNbaV0gPCAwIHx8IGNvbHVtbkluZGljZXNbaV0gPj0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdjb2x1bW4gaW5kaWNlcyBhcmUgb3V0IG9mIHJhbmdlJyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1JhbmdlKG1hdHJpeCwgc3RhcnRSb3csIGVuZFJvdywgc3RhcnRDb2x1bW4sIGVuZENvbHVtbikge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPT0gNSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdleHBlY3RlZCA0IGFyZ3VtZW50cycpO1xuICB9XG4gIGNoZWNrTnVtYmVyKCdzdGFydFJvdycsIHN0YXJ0Um93KTtcbiAgY2hlY2tOdW1iZXIoJ2VuZFJvdycsIGVuZFJvdyk7XG4gIGNoZWNrTnVtYmVyKCdzdGFydENvbHVtbicsIHN0YXJ0Q29sdW1uKTtcbiAgY2hlY2tOdW1iZXIoJ2VuZENvbHVtbicsIGVuZENvbHVtbik7XG4gIGlmIChcbiAgICBzdGFydFJvdyA+IGVuZFJvdyB8fFxuICAgIHN0YXJ0Q29sdW1uID4gZW5kQ29sdW1uIHx8XG4gICAgc3RhcnRSb3cgPCAwIHx8XG4gICAgc3RhcnRSb3cgPj0gbWF0cml4LnJvd3MgfHxcbiAgICBlbmRSb3cgPCAwIHx8XG4gICAgZW5kUm93ID49IG1hdHJpeC5yb3dzIHx8XG4gICAgc3RhcnRDb2x1bW4gPCAwIHx8XG4gICAgc3RhcnRDb2x1bW4gPj0gbWF0cml4LmNvbHVtbnMgfHxcbiAgICBlbmRDb2x1bW4gPCAwIHx8XG4gICAgZW5kQ29sdW1uID49IG1hdHJpeC5jb2x1bW5zXG4gICkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdTdWJtYXRyaXggaW5kaWNlcyBhcmUgb3V0IG9mIHJhbmdlJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5ld0FycmF5KGxlbmd0aCwgdmFsdWUgPSAwKSB7XG4gIGxldCBhcnJheSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgYXJyYXkucHVzaCh2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5mdW5jdGlvbiBjaGVja051bWJlcihuYW1lLCB2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYCR7bmFtZX0gbXVzdCBiZSBhIG51bWJlcmApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja05vbkVtcHR5KG1hdHJpeCkge1xuICBpZiAobWF0cml4LmlzRW1wdHkoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRW1wdHkgbWF0cml4IGhhcyBubyBlbGVtZW50cyB0byBpbmRleCcpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBpc0FueUFycmF5IH0gZnJvbSAnaXMtYW55LWFycmF5JztcbmltcG9ydCByZXNjYWxlIGZyb20gJ21sLWFycmF5LXJlc2NhbGUnO1xuXG5pbXBvcnQgeyBpbnNwZWN0TWF0cml4LCBpbnNwZWN0TWF0cml4V2l0aE9wdGlvbnMgfSBmcm9tICcuL2luc3BlY3QnO1xuaW1wb3J0IHsgaW5zdGFsbE1hdGhPcGVyYXRpb25zIH0gZnJvbSAnLi9tYXRoT3BlcmF0aW9ucyc7XG5pbXBvcnQge1xuICBzdW1CeVJvdyxcbiAgc3VtQnlDb2x1bW4sXG4gIHN1bUFsbCxcbiAgcHJvZHVjdEJ5Um93LFxuICBwcm9kdWN0QnlDb2x1bW4sXG4gIHByb2R1Y3RBbGwsXG4gIHZhcmlhbmNlQnlSb3csXG4gIHZhcmlhbmNlQnlDb2x1bW4sXG4gIHZhcmlhbmNlQWxsLFxuICBjZW50ZXJCeVJvdyxcbiAgY2VudGVyQnlDb2x1bW4sXG4gIGNlbnRlckFsbCxcbiAgc2NhbGVCeVJvdyxcbiAgc2NhbGVCeUNvbHVtbixcbiAgc2NhbGVBbGwsXG4gIGdldFNjYWxlQnlSb3csXG4gIGdldFNjYWxlQnlDb2x1bW4sXG4gIGdldFNjYWxlQWxsLFxufSBmcm9tICcuL3N0YXQnO1xuaW1wb3J0IHtcbiAgY2hlY2tSb3dWZWN0b3IsXG4gIGNoZWNrUm93SW5kZXgsXG4gIGNoZWNrQ29sdW1uSW5kZXgsXG4gIGNoZWNrQ29sdW1uVmVjdG9yLFxuICBjaGVja1JhbmdlLFxuICBjaGVja05vbkVtcHR5LFxuICBjaGVja1Jvd0luZGljZXMsXG4gIGNoZWNrQ29sdW1uSW5kaWNlcyxcbn0gZnJvbSAnLi91dGlsJztcblxuZXhwb3J0IGNsYXNzIEFic3RyYWN0TWF0cml4IHtcbiAgc3RhdGljIGZyb20xREFycmF5KG5ld1Jvd3MsIG5ld0NvbHVtbnMsIG5ld0RhdGEpIHtcbiAgICBsZXQgbGVuZ3RoID0gbmV3Um93cyAqIG5ld0NvbHVtbnM7XG4gICAgaWYgKGxlbmd0aCAhPT0gbmV3RGF0YS5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdkYXRhIGxlbmd0aCBkb2VzIG5vdCBtYXRjaCBnaXZlbiBkaW1lbnNpb25zJyk7XG4gICAgfVxuICAgIGxldCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG5ld1Jvd3MsIG5ld0NvbHVtbnMpO1xuICAgIGZvciAobGV0IHJvdyA9IDA7IHJvdyA8IG5ld1Jvd3M7IHJvdysrKSB7XG4gICAgICBmb3IgKGxldCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBuZXdDb2x1bW5zOyBjb2x1bW4rKykge1xuICAgICAgICBuZXdNYXRyaXguc2V0KHJvdywgY29sdW1uLCBuZXdEYXRhW3JvdyAqIG5ld0NvbHVtbnMgKyBjb2x1bW5dKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld01hdHJpeDtcbiAgfVxuXG4gIHN0YXRpYyByb3dWZWN0b3IobmV3RGF0YSkge1xuICAgIGxldCB2ZWN0b3IgPSBuZXcgTWF0cml4KDEsIG5ld0RhdGEubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld0RhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZlY3Rvci5zZXQoMCwgaSwgbmV3RGF0YVtpXSk7XG4gICAgfVxuICAgIHJldHVybiB2ZWN0b3I7XG4gIH1cblxuICBzdGF0aWMgY29sdW1uVmVjdG9yKG5ld0RhdGEpIHtcbiAgICBsZXQgdmVjdG9yID0gbmV3IE1hdHJpeChuZXdEYXRhLmxlbmd0aCwgMSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdEYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2ZWN0b3Iuc2V0KGksIDAsIG5ld0RhdGFbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gdmVjdG9yO1xuICB9XG5cbiAgc3RhdGljIHplcm9zKHJvd3MsIGNvbHVtbnMpIHtcbiAgICByZXR1cm4gbmV3IE1hdHJpeChyb3dzLCBjb2x1bW5zKTtcbiAgfVxuXG4gIHN0YXRpYyBvbmVzKHJvd3MsIGNvbHVtbnMpIHtcbiAgICByZXR1cm4gbmV3IE1hdHJpeChyb3dzLCBjb2x1bW5zKS5maWxsKDEpO1xuICB9XG5cbiAgc3RhdGljIHJhbmQocm93cywgY29sdW1ucywgb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cbiAgICBjb25zdCB7IHJhbmRvbSA9IE1hdGgucmFuZG9tIH0gPSBvcHRpb25zO1xuICAgIGxldCBtYXRyaXggPSBuZXcgTWF0cml4KHJvd3MsIGNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHVtbnM7IGorKykge1xuICAgICAgICBtYXRyaXguc2V0KGksIGosIHJhbmRvbSgpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbiAgfVxuXG4gIHN0YXRpYyByYW5kSW50KHJvd3MsIGNvbHVtbnMsIG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG4gICAgY29uc3QgeyBtaW4gPSAwLCBtYXggPSAxMDAwLCByYW5kb20gPSBNYXRoLnJhbmRvbSB9ID0gb3B0aW9ucztcbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIobWluKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignbWluIG11c3QgYmUgYW4gaW50ZWdlcicpO1xuICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihtYXgpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdtYXggbXVzdCBiZSBhbiBpbnRlZ2VyJyk7XG4gICAgaWYgKG1pbiA+PSBtYXgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdtaW4gbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4Jyk7XG4gICAgbGV0IGludGVydmFsID0gbWF4IC0gbWluO1xuICAgIGxldCBtYXRyaXggPSBuZXcgTWF0cml4KHJvd3MsIGNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHVtbnM7IGorKykge1xuICAgICAgICBsZXQgdmFsdWUgPSBtaW4gKyBNYXRoLnJvdW5kKHJhbmRvbSgpICogaW50ZXJ2YWwpO1xuICAgICAgICBtYXRyaXguc2V0KGksIGosIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbiAgfVxuXG4gIHN0YXRpYyBleWUocm93cywgY29sdW1ucywgdmFsdWUpIHtcbiAgICBpZiAoY29sdW1ucyA9PT0gdW5kZWZpbmVkKSBjb2x1bW5zID0gcm93cztcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgdmFsdWUgPSAxO1xuICAgIGxldCBtaW4gPSBNYXRoLm1pbihyb3dzLCBjb2x1bW5zKTtcbiAgICBsZXQgbWF0cml4ID0gdGhpcy56ZXJvcyhyb3dzLCBjb2x1bW5zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1pbjsgaSsrKSB7XG4gICAgICBtYXRyaXguc2V0KGksIGksIHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbiAgfVxuXG4gIHN0YXRpYyBkaWFnKGRhdGEsIHJvd3MsIGNvbHVtbnMpIHtcbiAgICBsZXQgbCA9IGRhdGEubGVuZ3RoO1xuICAgIGlmIChyb3dzID09PSB1bmRlZmluZWQpIHJvd3MgPSBsO1xuICAgIGlmIChjb2x1bW5zID09PSB1bmRlZmluZWQpIGNvbHVtbnMgPSByb3dzO1xuICAgIGxldCBtaW4gPSBNYXRoLm1pbihsLCByb3dzLCBjb2x1bW5zKTtcbiAgICBsZXQgbWF0cml4ID0gdGhpcy56ZXJvcyhyb3dzLCBjb2x1bW5zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1pbjsgaSsrKSB7XG4gICAgICBtYXRyaXguc2V0KGksIGksIGRhdGFbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xuICB9XG5cbiAgc3RhdGljIG1pbihtYXRyaXgxLCBtYXRyaXgyKSB7XG4gICAgbWF0cml4MSA9IHRoaXMuY2hlY2tNYXRyaXgobWF0cml4MSk7XG4gICAgbWF0cml4MiA9IHRoaXMuY2hlY2tNYXRyaXgobWF0cml4Mik7XG4gICAgbGV0IHJvd3MgPSBtYXRyaXgxLnJvd3M7XG4gICAgbGV0IGNvbHVtbnMgPSBtYXRyaXgxLmNvbHVtbnM7XG4gICAgbGV0IHJlc3VsdCA9IG5ldyBNYXRyaXgocm93cywgY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICAgIHJlc3VsdC5zZXQoaSwgaiwgTWF0aC5taW4obWF0cml4MS5nZXQoaSwgaiksIG1hdHJpeDIuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzdGF0aWMgbWF4KG1hdHJpeDEsIG1hdHJpeDIpIHtcbiAgICBtYXRyaXgxID0gdGhpcy5jaGVja01hdHJpeChtYXRyaXgxKTtcbiAgICBtYXRyaXgyID0gdGhpcy5jaGVja01hdHJpeChtYXRyaXgyKTtcbiAgICBsZXQgcm93cyA9IG1hdHJpeDEucm93cztcbiAgICBsZXQgY29sdW1ucyA9IG1hdHJpeDEuY29sdW1ucztcbiAgICBsZXQgcmVzdWx0ID0gbmV3IHRoaXMocm93cywgY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICAgIHJlc3VsdC5zZXQoaSwgaiwgTWF0aC5tYXgobWF0cml4MS5nZXQoaSwgaiksIG1hdHJpeDIuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzdGF0aWMgY2hlY2tNYXRyaXgodmFsdWUpIHtcbiAgICByZXR1cm4gQWJzdHJhY3RNYXRyaXguaXNNYXRyaXgodmFsdWUpID8gdmFsdWUgOiBuZXcgTWF0cml4KHZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyBpc01hdHJpeCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHZhbHVlLmtsYXNzID09PSAnTWF0cml4JztcbiAgfVxuXG4gIGdldCBzaXplKCkge1xuICAgIHJldHVybiB0aGlzLnJvd3MgKiB0aGlzLmNvbHVtbnM7XG4gIH1cblxuICBhcHBseShjYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIGNhbGxiYWNrLmNhbGwodGhpcywgaSwgaik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdG8xREFycmF5KCkge1xuICAgIGxldCBhcnJheSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgYXJyYXkucHVzaCh0aGlzLmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIHRvMkRBcnJheSgpIHtcbiAgICBsZXQgY29weSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGNvcHkucHVzaChbXSk7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIGNvcHlbaV0ucHVzaCh0aGlzLmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb3B5O1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLnRvMkRBcnJheSgpO1xuICB9XG5cbiAgaXNSb3dWZWN0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMucm93cyA9PT0gMTtcbiAgfVxuXG4gIGlzQ29sdW1uVmVjdG9yKCkge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMgPT09IDE7XG4gIH1cblxuICBpc1ZlY3RvcigpIHtcbiAgICByZXR1cm4gdGhpcy5yb3dzID09PSAxIHx8IHRoaXMuY29sdW1ucyA9PT0gMTtcbiAgfVxuXG4gIGlzU3F1YXJlKCkge1xuICAgIHJldHVybiB0aGlzLnJvd3MgPT09IHRoaXMuY29sdW1ucztcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMucm93cyA9PT0gMCB8fCB0aGlzLmNvbHVtbnMgPT09IDA7XG4gIH1cblxuICBpc1N5bW1ldHJpYygpIHtcbiAgICBpZiAodGhpcy5pc1NxdWFyZSgpKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDw9IGk7IGorKykge1xuICAgICAgICAgIGlmICh0aGlzLmdldChpLCBqKSAhPT0gdGhpcy5nZXQoaiwgaSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpc0VjaGVsb25Gb3JtKCkge1xuICAgIGxldCBpID0gMDtcbiAgICBsZXQgaiA9IDA7XG4gICAgbGV0IHByZXZpb3VzQ29sdW1uID0gLTE7XG4gICAgbGV0IGlzRWNoZWxvbkZvcm0gPSB0cnVlO1xuICAgIGxldCBjaGVja2VkID0gZmFsc2U7XG4gICAgd2hpbGUgKGkgPCB0aGlzLnJvd3MgJiYgaXNFY2hlbG9uRm9ybSkge1xuICAgICAgaiA9IDA7XG4gICAgICBjaGVja2VkID0gZmFsc2U7XG4gICAgICB3aGlsZSAoaiA8IHRoaXMuY29sdW1ucyAmJiBjaGVja2VkID09PSBmYWxzZSkge1xuICAgICAgICBpZiAodGhpcy5nZXQoaSwgaikgPT09IDApIHtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXQoaSwgaikgPT09IDEgJiYgaiA+IHByZXZpb3VzQ29sdW1uKSB7XG4gICAgICAgICAgY2hlY2tlZCA9IHRydWU7XG4gICAgICAgICAgcHJldmlvdXNDb2x1bW4gPSBqO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzRWNoZWxvbkZvcm0gPSBmYWxzZTtcbiAgICAgICAgICBjaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaSsrO1xuICAgIH1cbiAgICByZXR1cm4gaXNFY2hlbG9uRm9ybTtcbiAgfVxuXG4gIGlzUmVkdWNlZEVjaGVsb25Gb3JtKCkge1xuICAgIGxldCBpID0gMDtcbiAgICBsZXQgaiA9IDA7XG4gICAgbGV0IHByZXZpb3VzQ29sdW1uID0gLTE7XG4gICAgbGV0IGlzUmVkdWNlZEVjaGVsb25Gb3JtID0gdHJ1ZTtcbiAgICBsZXQgY2hlY2tlZCA9IGZhbHNlO1xuICAgIHdoaWxlIChpIDwgdGhpcy5yb3dzICYmIGlzUmVkdWNlZEVjaGVsb25Gb3JtKSB7XG4gICAgICBqID0gMDtcbiAgICAgIGNoZWNrZWQgPSBmYWxzZTtcbiAgICAgIHdoaWxlIChqIDwgdGhpcy5jb2x1bW5zICYmIGNoZWNrZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmICh0aGlzLmdldChpLCBqKSA9PT0gMCkge1xuICAgICAgICAgIGorKztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdldChpLCBqKSA9PT0gMSAmJiBqID4gcHJldmlvdXNDb2x1bW4pIHtcbiAgICAgICAgICBjaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICBwcmV2aW91c0NvbHVtbiA9IGo7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXNSZWR1Y2VkRWNoZWxvbkZvcm0gPSBmYWxzZTtcbiAgICAgICAgICBjaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9yIChsZXQgayA9IGogKyAxOyBrIDwgdGhpcy5yb3dzOyBrKyspIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KGksIGspICE9PSAwKSB7XG4gICAgICAgICAgaXNSZWR1Y2VkRWNoZWxvbkZvcm0gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaSsrO1xuICAgIH1cbiAgICByZXR1cm4gaXNSZWR1Y2VkRWNoZWxvbkZvcm07XG4gIH1cblxuICBlY2hlbG9uRm9ybSgpIHtcbiAgICBsZXQgcmVzdWx0ID0gdGhpcy5jbG9uZSgpO1xuICAgIGxldCBoID0gMDtcbiAgICBsZXQgayA9IDA7XG4gICAgd2hpbGUgKGggPCByZXN1bHQucm93cyAmJiBrIDwgcmVzdWx0LmNvbHVtbnMpIHtcbiAgICAgIGxldCBpTWF4ID0gaDtcbiAgICAgIGZvciAobGV0IGkgPSBoOyBpIDwgcmVzdWx0LnJvd3M7IGkrKykge1xuICAgICAgICBpZiAocmVzdWx0LmdldChpLCBrKSA+IHJlc3VsdC5nZXQoaU1heCwgaykpIHtcbiAgICAgICAgICBpTWF4ID0gaTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdC5nZXQoaU1heCwgaykgPT09IDApIHtcbiAgICAgICAgaysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0LnN3YXBSb3dzKGgsIGlNYXgpO1xuICAgICAgICBsZXQgdG1wID0gcmVzdWx0LmdldChoLCBrKTtcbiAgICAgICAgZm9yIChsZXQgaiA9IGs7IGogPCByZXN1bHQuY29sdW1uczsgaisrKSB7XG4gICAgICAgICAgcmVzdWx0LnNldChoLCBqLCByZXN1bHQuZ2V0KGgsIGopIC8gdG1wKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gaCArIDE7IGkgPCByZXN1bHQucm93czsgaSsrKSB7XG4gICAgICAgICAgbGV0IGZhY3RvciA9IHJlc3VsdC5nZXQoaSwgaykgLyByZXN1bHQuZ2V0KGgsIGspO1xuICAgICAgICAgIHJlc3VsdC5zZXQoaSwgaywgMCk7XG4gICAgICAgICAgZm9yIChsZXQgaiA9IGsgKyAxOyBqIDwgcmVzdWx0LmNvbHVtbnM7IGorKykge1xuICAgICAgICAgICAgcmVzdWx0LnNldChpLCBqLCByZXN1bHQuZ2V0KGksIGopIC0gcmVzdWx0LmdldChoLCBqKSAqIGZhY3Rvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGgrKztcbiAgICAgICAgaysrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcmVkdWNlZEVjaGVsb25Gb3JtKCkge1xuICAgIGxldCByZXN1bHQgPSB0aGlzLmVjaGVsb25Gb3JtKCk7XG4gICAgbGV0IG0gPSByZXN1bHQuY29sdW1ucztcbiAgICBsZXQgbiA9IHJlc3VsdC5yb3dzO1xuICAgIGxldCBoID0gbiAtIDE7XG4gICAgd2hpbGUgKGggPj0gMCkge1xuICAgICAgaWYgKHJlc3VsdC5tYXhSb3coaCkgPT09IDApIHtcbiAgICAgICAgaC0tO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHAgPSAwO1xuICAgICAgICBsZXQgcGl2b3QgPSBmYWxzZTtcbiAgICAgICAgd2hpbGUgKHAgPCBuICYmIHBpdm90ID09PSBmYWxzZSkge1xuICAgICAgICAgIGlmIChyZXN1bHQuZ2V0KGgsIHApID09PSAxKSB7XG4gICAgICAgICAgICBwaXZvdCA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHArKztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoOyBpKyspIHtcbiAgICAgICAgICBsZXQgZmFjdG9yID0gcmVzdWx0LmdldChpLCBwKTtcbiAgICAgICAgICBmb3IgKGxldCBqID0gcDsgaiA8IG07IGorKykge1xuICAgICAgICAgICAgbGV0IHRtcCA9IHJlc3VsdC5nZXQoaSwgaikgLSBmYWN0b3IgKiByZXN1bHQuZ2V0KGgsIGopO1xuICAgICAgICAgICAgcmVzdWx0LnNldChpLCBqLCB0bXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBoLS07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzZXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXQgbWV0aG9kIGlzIHVuaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIGdldCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldCBtZXRob2QgaXMgdW5pbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgcmVwZWF0KG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG4gICAgY29uc3QgeyByb3dzID0gMSwgY29sdW1ucyA9IDEgfSA9IG9wdGlvbnM7XG4gICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHJvd3MpIHx8IHJvd3MgPD0gMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncm93cyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcicpO1xuICAgIH1cbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIoY29sdW1ucykgfHwgY29sdW1ucyA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjb2x1bW5zIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyJyk7XG4gICAgfVxuICAgIGxldCBtYXRyaXggPSBuZXcgTWF0cml4KHRoaXMucm93cyAqIHJvd3MsIHRoaXMuY29sdW1ucyAqIGNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHVtbnM7IGorKykge1xuICAgICAgICBtYXRyaXguc2V0U3ViTWF0cml4KHRoaXMsIHRoaXMucm93cyAqIGksIHRoaXMuY29sdW1ucyAqIGopO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xuICB9XG5cbiAgZmlsbCh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG5lZygpIHtcbiAgICByZXR1cm4gdGhpcy5tdWxTKC0xKTtcbiAgfVxuXG4gIGdldFJvdyhpbmRleCkge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGxldCByb3cgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICByb3cucHVzaCh0aGlzLmdldChpbmRleCwgaSkpO1xuICAgIH1cbiAgICByZXR1cm4gcm93O1xuICB9XG5cbiAgZ2V0Um93VmVjdG9yKGluZGV4KSB7XG4gICAgcmV0dXJuIE1hdHJpeC5yb3dWZWN0b3IodGhpcy5nZXRSb3coaW5kZXgpKTtcbiAgfVxuXG4gIHNldFJvdyhpbmRleCwgYXJyYXkpIHtcbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIGluZGV4KTtcbiAgICBhcnJheSA9IGNoZWNrUm93VmVjdG9yKHRoaXMsIGFycmF5KTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICB0aGlzLnNldChpbmRleCwgaSwgYXJyYXlbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN3YXBSb3dzKHJvdzEsIHJvdzIpIHtcbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIHJvdzEpO1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgcm93Mik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgbGV0IHRlbXAgPSB0aGlzLmdldChyb3cxLCBpKTtcbiAgICAgIHRoaXMuc2V0KHJvdzEsIGksIHRoaXMuZ2V0KHJvdzIsIGkpKTtcbiAgICAgIHRoaXMuc2V0KHJvdzIsIGksIHRlbXApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldENvbHVtbihpbmRleCkge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGxldCBjb2x1bW4gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBjb2x1bW4ucHVzaCh0aGlzLmdldChpLCBpbmRleCkpO1xuICAgIH1cbiAgICByZXR1cm4gY29sdW1uO1xuICB9XG5cbiAgZ2V0Q29sdW1uVmVjdG9yKGluZGV4KSB7XG4gICAgcmV0dXJuIE1hdHJpeC5jb2x1bW5WZWN0b3IodGhpcy5nZXRDb2x1bW4oaW5kZXgpKTtcbiAgfVxuXG4gIHNldENvbHVtbihpbmRleCwgYXJyYXkpIHtcbiAgICBjaGVja0NvbHVtbkluZGV4KHRoaXMsIGluZGV4KTtcbiAgICBhcnJheSA9IGNoZWNrQ29sdW1uVmVjdG9yKHRoaXMsIGFycmF5KTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICB0aGlzLnNldChpLCBpbmRleCwgYXJyYXlbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN3YXBDb2x1bW5zKGNvbHVtbjEsIGNvbHVtbjIpIHtcbiAgICBjaGVja0NvbHVtbkluZGV4KHRoaXMsIGNvbHVtbjEpO1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgY29sdW1uMik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgbGV0IHRlbXAgPSB0aGlzLmdldChpLCBjb2x1bW4xKTtcbiAgICAgIHRoaXMuc2V0KGksIGNvbHVtbjEsIHRoaXMuZ2V0KGksIGNvbHVtbjIpKTtcbiAgICAgIHRoaXMuc2V0KGksIGNvbHVtbjIsIHRlbXApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFkZFJvd1ZlY3Rvcih2ZWN0b3IpIHtcbiAgICB2ZWN0b3IgPSBjaGVja1Jvd1ZlY3Rvcih0aGlzLCB2ZWN0b3IpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgKyB2ZWN0b3Jbal0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN1YlJvd1ZlY3Rvcih2ZWN0b3IpIHtcbiAgICB2ZWN0b3IgPSBjaGVja1Jvd1ZlY3Rvcih0aGlzLCB2ZWN0b3IpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgLSB2ZWN0b3Jbal0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG11bFJvd1ZlY3Rvcih2ZWN0b3IpIHtcbiAgICB2ZWN0b3IgPSBjaGVja1Jvd1ZlY3Rvcih0aGlzLCB2ZWN0b3IpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgKiB2ZWN0b3Jbal0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRpdlJvd1ZlY3Rvcih2ZWN0b3IpIHtcbiAgICB2ZWN0b3IgPSBjaGVja1Jvd1ZlY3Rvcih0aGlzLCB2ZWN0b3IpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgLyB2ZWN0b3Jbal0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFkZENvbHVtblZlY3Rvcih2ZWN0b3IpIHtcbiAgICB2ZWN0b3IgPSBjaGVja0NvbHVtblZlY3Rvcih0aGlzLCB2ZWN0b3IpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgKyB2ZWN0b3JbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN1YkNvbHVtblZlY3Rvcih2ZWN0b3IpIHtcbiAgICB2ZWN0b3IgPSBjaGVja0NvbHVtblZlY3Rvcih0aGlzLCB2ZWN0b3IpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgLSB2ZWN0b3JbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG11bENvbHVtblZlY3Rvcih2ZWN0b3IpIHtcbiAgICB2ZWN0b3IgPSBjaGVja0NvbHVtblZlY3Rvcih0aGlzLCB2ZWN0b3IpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgKiB2ZWN0b3JbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRpdkNvbHVtblZlY3Rvcih2ZWN0b3IpIHtcbiAgICB2ZWN0b3IgPSBjaGVja0NvbHVtblZlY3Rvcih0aGlzLCB2ZWN0b3IpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgLyB2ZWN0b3JbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG11bFJvdyhpbmRleCwgdmFsdWUpIHtcbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIGluZGV4KTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICB0aGlzLnNldChpbmRleCwgaSwgdGhpcy5nZXQoaW5kZXgsIGkpICogdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG11bENvbHVtbihpbmRleCwgdmFsdWUpIHtcbiAgICBjaGVja0NvbHVtbkluZGV4KHRoaXMsIGluZGV4KTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICB0aGlzLnNldChpLCBpbmRleCwgdGhpcy5nZXQoaSwgaW5kZXgpICogdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG1heChieSkge1xuICAgIGlmICh0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIE5hTjtcbiAgICB9XG4gICAgc3dpdGNoIChieSkge1xuICAgICAgY2FzZSAncm93Jzoge1xuICAgICAgICBjb25zdCBtYXggPSBuZXcgQXJyYXkodGhpcy5yb3dzKS5maWxsKE51bWJlci5ORUdBVElWRV9JTkZJTklUWSk7XG4gICAgICAgIGZvciAobGV0IHJvdyA9IDA7IHJvdyA8IHRoaXMucm93czsgcm93KyspIHtcbiAgICAgICAgICBmb3IgKGxldCBjb2x1bW4gPSAwOyBjb2x1bW4gPCB0aGlzLmNvbHVtbnM7IGNvbHVtbisrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXQocm93LCBjb2x1bW4pID4gbWF4W3Jvd10pIHtcbiAgICAgICAgICAgICAgbWF4W3Jvd10gPSB0aGlzLmdldChyb3csIGNvbHVtbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXg7XG4gICAgICB9XG4gICAgICBjYXNlICdjb2x1bW4nOiB7XG4gICAgICAgIGNvbnN0IG1heCA9IG5ldyBBcnJheSh0aGlzLmNvbHVtbnMpLmZpbGwoTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKTtcbiAgICAgICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgdGhpcy5yb3dzOyByb3crKykge1xuICAgICAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHRoaXMuY29sdW1uczsgY29sdW1uKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldChyb3csIGNvbHVtbikgPiBtYXhbY29sdW1uXSkge1xuICAgICAgICAgICAgICBtYXhbY29sdW1uXSA9IHRoaXMuZ2V0KHJvdywgY29sdW1uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heDtcbiAgICAgIH1cbiAgICAgIGNhc2UgdW5kZWZpbmVkOiB7XG4gICAgICAgIGxldCBtYXggPSB0aGlzLmdldCgwLCAwKTtcbiAgICAgICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgdGhpcy5yb3dzOyByb3crKykge1xuICAgICAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHRoaXMuY29sdW1uczsgY29sdW1uKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldChyb3csIGNvbHVtbikgPiBtYXgpIHtcbiAgICAgICAgICAgICAgbWF4ID0gdGhpcy5nZXQocm93LCBjb2x1bW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4O1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHtieX1gKTtcbiAgICB9XG4gIH1cblxuICBtYXhJbmRleCgpIHtcbiAgICBjaGVja05vbkVtcHR5KHRoaXMpO1xuICAgIGxldCB2ID0gdGhpcy5nZXQoMCwgMCk7XG4gICAgbGV0IGlkeCA9IFswLCAwXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIGlmICh0aGlzLmdldChpLCBqKSA+IHYpIHtcbiAgICAgICAgICB2ID0gdGhpcy5nZXQoaSwgaik7XG4gICAgICAgICAgaWR4WzBdID0gaTtcbiAgICAgICAgICBpZHhbMV0gPSBqO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpZHg7XG4gIH1cblxuICBtaW4oYnkpIHtcbiAgICBpZiAodGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgIHJldHVybiBOYU47XG4gICAgfVxuXG4gICAgc3dpdGNoIChieSkge1xuICAgICAgY2FzZSAncm93Jzoge1xuICAgICAgICBjb25zdCBtaW4gPSBuZXcgQXJyYXkodGhpcy5yb3dzKS5maWxsKE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7XG4gICAgICAgIGZvciAobGV0IHJvdyA9IDA7IHJvdyA8IHRoaXMucm93czsgcm93KyspIHtcbiAgICAgICAgICBmb3IgKGxldCBjb2x1bW4gPSAwOyBjb2x1bW4gPCB0aGlzLmNvbHVtbnM7IGNvbHVtbisrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXQocm93LCBjb2x1bW4pIDwgbWluW3Jvd10pIHtcbiAgICAgICAgICAgICAgbWluW3Jvd10gPSB0aGlzLmdldChyb3csIGNvbHVtbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtaW47XG4gICAgICB9XG4gICAgICBjYXNlICdjb2x1bW4nOiB7XG4gICAgICAgIGNvbnN0IG1pbiA9IG5ldyBBcnJheSh0aGlzLmNvbHVtbnMpLmZpbGwoTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTtcbiAgICAgICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgdGhpcy5yb3dzOyByb3crKykge1xuICAgICAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHRoaXMuY29sdW1uczsgY29sdW1uKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldChyb3csIGNvbHVtbikgPCBtaW5bY29sdW1uXSkge1xuICAgICAgICAgICAgICBtaW5bY29sdW1uXSA9IHRoaXMuZ2V0KHJvdywgY29sdW1uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pbjtcbiAgICAgIH1cbiAgICAgIGNhc2UgdW5kZWZpbmVkOiB7XG4gICAgICAgIGxldCBtaW4gPSB0aGlzLmdldCgwLCAwKTtcbiAgICAgICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgdGhpcy5yb3dzOyByb3crKykge1xuICAgICAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHRoaXMuY29sdW1uczsgY29sdW1uKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldChyb3csIGNvbHVtbikgPCBtaW4pIHtcbiAgICAgICAgICAgICAgbWluID0gdGhpcy5nZXQocm93LCBjb2x1bW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHtieX1gKTtcbiAgICB9XG4gIH1cblxuICBtaW5JbmRleCgpIHtcbiAgICBjaGVja05vbkVtcHR5KHRoaXMpO1xuICAgIGxldCB2ID0gdGhpcy5nZXQoMCwgMCk7XG4gICAgbGV0IGlkeCA9IFswLCAwXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIGlmICh0aGlzLmdldChpLCBqKSA8IHYpIHtcbiAgICAgICAgICB2ID0gdGhpcy5nZXQoaSwgaik7XG4gICAgICAgICAgaWR4WzBdID0gaTtcbiAgICAgICAgICBpZHhbMV0gPSBqO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpZHg7XG4gIH1cblxuICBtYXhSb3cocm93KSB7XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCByb3cpO1xuICAgIGlmICh0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIE5hTjtcbiAgICB9XG4gICAgbGV0IHYgPSB0aGlzLmdldChyb3csIDApO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmdldChyb3csIGkpID4gdikge1xuICAgICAgICB2ID0gdGhpcy5nZXQocm93LCBpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHY7XG4gIH1cblxuICBtYXhSb3dJbmRleChyb3cpIHtcbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIHJvdyk7XG4gICAgY2hlY2tOb25FbXB0eSh0aGlzKTtcbiAgICBsZXQgdiA9IHRoaXMuZ2V0KHJvdywgMCk7XG4gICAgbGV0IGlkeCA9IFtyb3csIDBdO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmdldChyb3csIGkpID4gdikge1xuICAgICAgICB2ID0gdGhpcy5nZXQocm93LCBpKTtcbiAgICAgICAgaWR4WzFdID0gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlkeDtcbiAgfVxuXG4gIG1pblJvdyhyb3cpIHtcbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIHJvdyk7XG4gICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gTmFOO1xuICAgIH1cbiAgICBsZXQgdiA9IHRoaXMuZ2V0KHJvdywgMCk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgaSkgPCB2KSB7XG4gICAgICAgIHYgPSB0aGlzLmdldChyb3csIGkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdjtcbiAgfVxuXG4gIG1pblJvd0luZGV4KHJvdykge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgcm93KTtcbiAgICBjaGVja05vbkVtcHR5KHRoaXMpO1xuICAgIGxldCB2ID0gdGhpcy5nZXQocm93LCAwKTtcbiAgICBsZXQgaWR4ID0gW3JvdywgMF07XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgaSkgPCB2KSB7XG4gICAgICAgIHYgPSB0aGlzLmdldChyb3csIGkpO1xuICAgICAgICBpZHhbMV0gPSBpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaWR4O1xuICB9XG5cbiAgbWF4Q29sdW1uKGNvbHVtbikge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgY29sdW1uKTtcbiAgICBpZiAodGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgIHJldHVybiBOYU47XG4gICAgfVxuICAgIGxldCB2ID0gdGhpcy5nZXQoMCwgY29sdW1uKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5nZXQoaSwgY29sdW1uKSA+IHYpIHtcbiAgICAgICAgdiA9IHRoaXMuZ2V0KGksIGNvbHVtbik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2O1xuICB9XG5cbiAgbWF4Q29sdW1uSW5kZXgoY29sdW1uKSB7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBjb2x1bW4pO1xuICAgIGNoZWNrTm9uRW1wdHkodGhpcyk7XG4gICAgbGV0IHYgPSB0aGlzLmdldCgwLCBjb2x1bW4pO1xuICAgIGxldCBpZHggPSBbMCwgY29sdW1uXTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5nZXQoaSwgY29sdW1uKSA+IHYpIHtcbiAgICAgICAgdiA9IHRoaXMuZ2V0KGksIGNvbHVtbik7XG4gICAgICAgIGlkeFswXSA9IGk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpZHg7XG4gIH1cblxuICBtaW5Db2x1bW4oY29sdW1uKSB7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBjb2x1bW4pO1xuICAgIGlmICh0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIE5hTjtcbiAgICB9XG4gICAgbGV0IHYgPSB0aGlzLmdldCgwLCBjb2x1bW4pO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmdldChpLCBjb2x1bW4pIDwgdikge1xuICAgICAgICB2ID0gdGhpcy5nZXQoaSwgY29sdW1uKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHY7XG4gIH1cblxuICBtaW5Db2x1bW5JbmRleChjb2x1bW4pIHtcbiAgICBjaGVja0NvbHVtbkluZGV4KHRoaXMsIGNvbHVtbik7XG4gICAgY2hlY2tOb25FbXB0eSh0aGlzKTtcbiAgICBsZXQgdiA9IHRoaXMuZ2V0KDAsIGNvbHVtbik7XG4gICAgbGV0IGlkeCA9IFswLCBjb2x1bW5dO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmdldChpLCBjb2x1bW4pIDwgdikge1xuICAgICAgICB2ID0gdGhpcy5nZXQoaSwgY29sdW1uKTtcbiAgICAgICAgaWR4WzBdID0gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlkeDtcbiAgfVxuXG4gIGRpYWcoKSB7XG4gICAgbGV0IG1pbiA9IE1hdGgubWluKHRoaXMucm93cywgdGhpcy5jb2x1bW5zKTtcbiAgICBsZXQgZGlhZyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWluOyBpKyspIHtcbiAgICAgIGRpYWcucHVzaCh0aGlzLmdldChpLCBpKSk7XG4gICAgfVxuICAgIHJldHVybiBkaWFnO1xuICB9XG5cbiAgbm9ybSh0eXBlID0gJ2Zyb2Jlbml1cycpIHtcbiAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICBpZiAodHlwZSA9PT0gJ21heCcpIHtcbiAgICAgIHJldHVybiB0aGlzLm1heCgpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2Zyb2Jlbml1cycpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIHRoaXMuZ2V0KGksIGopICogdGhpcy5nZXQoaSwgaik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBNYXRoLnNxcnQocmVzdWx0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYHVua25vd24gbm9ybSB0eXBlOiAke3R5cGV9YCk7XG4gICAgfVxuICB9XG5cbiAgY3VtdWxhdGl2ZVN1bSgpIHtcbiAgICBsZXQgc3VtID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHN1bSArPSB0aGlzLmdldChpLCBqKTtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgc3VtKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBkb3QodmVjdG9yMikge1xuICAgIGlmIChBYnN0cmFjdE1hdHJpeC5pc01hdHJpeCh2ZWN0b3IyKSkgdmVjdG9yMiA9IHZlY3RvcjIudG8xREFycmF5KCk7XG4gICAgbGV0IHZlY3RvcjEgPSB0aGlzLnRvMURBcnJheSgpO1xuICAgIGlmICh2ZWN0b3IxLmxlbmd0aCAhPT0gdmVjdG9yMi5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd2ZWN0b3JzIGRvIG5vdCBoYXZlIHRoZSBzYW1lIHNpemUnKTtcbiAgICB9XG4gICAgbGV0IGRvdCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2ZWN0b3IxLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkb3QgKz0gdmVjdG9yMVtpXSAqIHZlY3RvcjJbaV07XG4gICAgfVxuICAgIHJldHVybiBkb3Q7XG4gIH1cblxuICBtbXVsKG90aGVyKSB7XG4gICAgb3RoZXIgPSBNYXRyaXguY2hlY2tNYXRyaXgob3RoZXIpO1xuXG4gICAgbGV0IG0gPSB0aGlzLnJvd3M7XG4gICAgbGV0IG4gPSB0aGlzLmNvbHVtbnM7XG4gICAgbGV0IHAgPSBvdGhlci5jb2x1bW5zO1xuXG4gICAgbGV0IHJlc3VsdCA9IG5ldyBNYXRyaXgobSwgcCk7XG5cbiAgICBsZXQgQmNvbGogPSBuZXcgRmxvYXQ2NEFycmF5KG4pO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgcDsgaisrKSB7XG4gICAgICBmb3IgKGxldCBrID0gMDsgayA8IG47IGsrKykge1xuICAgICAgICBCY29saltrXSA9IG90aGVyLmdldChrLCBqKTtcbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgbGV0IHMgPSAwO1xuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IG47IGsrKykge1xuICAgICAgICAgIHMgKz0gdGhpcy5nZXQoaSwgaykgKiBCY29saltrXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3VsdC5zZXQoaSwgaiwgcyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzdHJhc3NlbjJ4MihvdGhlcikge1xuICAgIG90aGVyID0gTWF0cml4LmNoZWNrTWF0cml4KG90aGVyKTtcbiAgICBsZXQgcmVzdWx0ID0gbmV3IE1hdHJpeCgyLCAyKTtcbiAgICBjb25zdCBhMTEgPSB0aGlzLmdldCgwLCAwKTtcbiAgICBjb25zdCBiMTEgPSBvdGhlci5nZXQoMCwgMCk7XG4gICAgY29uc3QgYTEyID0gdGhpcy5nZXQoMCwgMSk7XG4gICAgY29uc3QgYjEyID0gb3RoZXIuZ2V0KDAsIDEpO1xuICAgIGNvbnN0IGEyMSA9IHRoaXMuZ2V0KDEsIDApO1xuICAgIGNvbnN0IGIyMSA9IG90aGVyLmdldCgxLCAwKTtcbiAgICBjb25zdCBhMjIgPSB0aGlzLmdldCgxLCAxKTtcbiAgICBjb25zdCBiMjIgPSBvdGhlci5nZXQoMSwgMSk7XG5cbiAgICAvLyBDb21wdXRlIGludGVybWVkaWF0ZSB2YWx1ZXMuXG4gICAgY29uc3QgbTEgPSAoYTExICsgYTIyKSAqIChiMTEgKyBiMjIpO1xuICAgIGNvbnN0IG0yID0gKGEyMSArIGEyMikgKiBiMTE7XG4gICAgY29uc3QgbTMgPSBhMTEgKiAoYjEyIC0gYjIyKTtcbiAgICBjb25zdCBtNCA9IGEyMiAqIChiMjEgLSBiMTEpO1xuICAgIGNvbnN0IG01ID0gKGExMSArIGExMikgKiBiMjI7XG4gICAgY29uc3QgbTYgPSAoYTIxIC0gYTExKSAqIChiMTEgKyBiMTIpO1xuICAgIGNvbnN0IG03ID0gKGExMiAtIGEyMikgKiAoYjIxICsgYjIyKTtcblxuICAgIC8vIENvbWJpbmUgaW50ZXJtZWRpYXRlIHZhbHVlcyBpbnRvIHRoZSBvdXRwdXQuXG4gICAgY29uc3QgYzAwID0gbTEgKyBtNCAtIG01ICsgbTc7XG4gICAgY29uc3QgYzAxID0gbTMgKyBtNTtcbiAgICBjb25zdCBjMTAgPSBtMiArIG00O1xuICAgIGNvbnN0IGMxMSA9IG0xIC0gbTIgKyBtMyArIG02O1xuXG4gICAgcmVzdWx0LnNldCgwLCAwLCBjMDApO1xuICAgIHJlc3VsdC5zZXQoMCwgMSwgYzAxKTtcbiAgICByZXN1bHQuc2V0KDEsIDAsIGMxMCk7XG4gICAgcmVzdWx0LnNldCgxLCAxLCBjMTEpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzdHJhc3NlbjN4MyhvdGhlcikge1xuICAgIG90aGVyID0gTWF0cml4LmNoZWNrTWF0cml4KG90aGVyKTtcbiAgICBsZXQgcmVzdWx0ID0gbmV3IE1hdHJpeCgzLCAzKTtcblxuICAgIGNvbnN0IGEwMCA9IHRoaXMuZ2V0KDAsIDApO1xuICAgIGNvbnN0IGEwMSA9IHRoaXMuZ2V0KDAsIDEpO1xuICAgIGNvbnN0IGEwMiA9IHRoaXMuZ2V0KDAsIDIpO1xuICAgIGNvbnN0IGExMCA9IHRoaXMuZ2V0KDEsIDApO1xuICAgIGNvbnN0IGExMSA9IHRoaXMuZ2V0KDEsIDEpO1xuICAgIGNvbnN0IGExMiA9IHRoaXMuZ2V0KDEsIDIpO1xuICAgIGNvbnN0IGEyMCA9IHRoaXMuZ2V0KDIsIDApO1xuICAgIGNvbnN0IGEyMSA9IHRoaXMuZ2V0KDIsIDEpO1xuICAgIGNvbnN0IGEyMiA9IHRoaXMuZ2V0KDIsIDIpO1xuXG4gICAgY29uc3QgYjAwID0gb3RoZXIuZ2V0KDAsIDApO1xuICAgIGNvbnN0IGIwMSA9IG90aGVyLmdldCgwLCAxKTtcbiAgICBjb25zdCBiMDIgPSBvdGhlci5nZXQoMCwgMik7XG4gICAgY29uc3QgYjEwID0gb3RoZXIuZ2V0KDEsIDApO1xuICAgIGNvbnN0IGIxMSA9IG90aGVyLmdldCgxLCAxKTtcbiAgICBjb25zdCBiMTIgPSBvdGhlci5nZXQoMSwgMik7XG4gICAgY29uc3QgYjIwID0gb3RoZXIuZ2V0KDIsIDApO1xuICAgIGNvbnN0IGIyMSA9IG90aGVyLmdldCgyLCAxKTtcbiAgICBjb25zdCBiMjIgPSBvdGhlci5nZXQoMiwgMik7XG5cbiAgICBjb25zdCBtMSA9IChhMDAgKyBhMDEgKyBhMDIgLSBhMTAgLSBhMTEgLSBhMjEgLSBhMjIpICogYjExO1xuICAgIGNvbnN0IG0yID0gKGEwMCAtIGExMCkgKiAoLWIwMSArIGIxMSk7XG4gICAgY29uc3QgbTMgPSBhMTEgKiAoLWIwMCArIGIwMSArIGIxMCAtIGIxMSAtIGIxMiAtIGIyMCArIGIyMik7XG4gICAgY29uc3QgbTQgPSAoLWEwMCArIGExMCArIGExMSkgKiAoYjAwIC0gYjAxICsgYjExKTtcbiAgICBjb25zdCBtNSA9IChhMTAgKyBhMTEpICogKC1iMDAgKyBiMDEpO1xuICAgIGNvbnN0IG02ID0gYTAwICogYjAwO1xuICAgIGNvbnN0IG03ID0gKC1hMDAgKyBhMjAgKyBhMjEpICogKGIwMCAtIGIwMiArIGIxMik7XG4gICAgY29uc3QgbTggPSAoLWEwMCArIGEyMCkgKiAoYjAyIC0gYjEyKTtcbiAgICBjb25zdCBtOSA9IChhMjAgKyBhMjEpICogKC1iMDAgKyBiMDIpO1xuICAgIGNvbnN0IG0xMCA9IChhMDAgKyBhMDEgKyBhMDIgLSBhMTEgLSBhMTIgLSBhMjAgLSBhMjEpICogYjEyO1xuICAgIGNvbnN0IG0xMSA9IGEyMSAqICgtYjAwICsgYjAyICsgYjEwIC0gYjExIC0gYjEyIC0gYjIwICsgYjIxKTtcbiAgICBjb25zdCBtMTIgPSAoLWEwMiArIGEyMSArIGEyMikgKiAoYjExICsgYjIwIC0gYjIxKTtcbiAgICBjb25zdCBtMTMgPSAoYTAyIC0gYTIyKSAqIChiMTEgLSBiMjEpO1xuICAgIGNvbnN0IG0xNCA9IGEwMiAqIGIyMDtcbiAgICBjb25zdCBtMTUgPSAoYTIxICsgYTIyKSAqICgtYjIwICsgYjIxKTtcbiAgICBjb25zdCBtMTYgPSAoLWEwMiArIGExMSArIGExMikgKiAoYjEyICsgYjIwIC0gYjIyKTtcbiAgICBjb25zdCBtMTcgPSAoYTAyIC0gYTEyKSAqIChiMTIgLSBiMjIpO1xuICAgIGNvbnN0IG0xOCA9IChhMTEgKyBhMTIpICogKC1iMjAgKyBiMjIpO1xuICAgIGNvbnN0IG0xOSA9IGEwMSAqIGIxMDtcbiAgICBjb25zdCBtMjAgPSBhMTIgKiBiMjE7XG4gICAgY29uc3QgbTIxID0gYTEwICogYjAyO1xuICAgIGNvbnN0IG0yMiA9IGEyMCAqIGIwMTtcbiAgICBjb25zdCBtMjMgPSBhMjIgKiBiMjI7XG5cbiAgICBjb25zdCBjMDAgPSBtNiArIG0xNCArIG0xOTtcbiAgICBjb25zdCBjMDEgPSBtMSArIG00ICsgbTUgKyBtNiArIG0xMiArIG0xNCArIG0xNTtcbiAgICBjb25zdCBjMDIgPSBtNiArIG03ICsgbTkgKyBtMTAgKyBtMTQgKyBtMTYgKyBtMTg7XG4gICAgY29uc3QgYzEwID0gbTIgKyBtMyArIG00ICsgbTYgKyBtMTQgKyBtMTYgKyBtMTc7XG4gICAgY29uc3QgYzExID0gbTIgKyBtNCArIG01ICsgbTYgKyBtMjA7XG4gICAgY29uc3QgYzEyID0gbTE0ICsgbTE2ICsgbTE3ICsgbTE4ICsgbTIxO1xuICAgIGNvbnN0IGMyMCA9IG02ICsgbTcgKyBtOCArIG0xMSArIG0xMiArIG0xMyArIG0xNDtcbiAgICBjb25zdCBjMjEgPSBtMTIgKyBtMTMgKyBtMTQgKyBtMTUgKyBtMjI7XG4gICAgY29uc3QgYzIyID0gbTYgKyBtNyArIG04ICsgbTkgKyBtMjM7XG5cbiAgICByZXN1bHQuc2V0KDAsIDAsIGMwMCk7XG4gICAgcmVzdWx0LnNldCgwLCAxLCBjMDEpO1xuICAgIHJlc3VsdC5zZXQoMCwgMiwgYzAyKTtcbiAgICByZXN1bHQuc2V0KDEsIDAsIGMxMCk7XG4gICAgcmVzdWx0LnNldCgxLCAxLCBjMTEpO1xuICAgIHJlc3VsdC5zZXQoMSwgMiwgYzEyKTtcbiAgICByZXN1bHQuc2V0KDIsIDAsIGMyMCk7XG4gICAgcmVzdWx0LnNldCgyLCAxLCBjMjEpO1xuICAgIHJlc3VsdC5zZXQoMiwgMiwgYzIyKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgbW11bFN0cmFzc2VuKHkpIHtcbiAgICB5ID0gTWF0cml4LmNoZWNrTWF0cml4KHkpO1xuICAgIGxldCB4ID0gdGhpcy5jbG9uZSgpO1xuICAgIGxldCByMSA9IHgucm93cztcbiAgICBsZXQgYzEgPSB4LmNvbHVtbnM7XG4gICAgbGV0IHIyID0geS5yb3dzO1xuICAgIGxldCBjMiA9IHkuY29sdW1ucztcbiAgICBpZiAoYzEgIT09IHIyKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgTXVsdGlwbHlpbmcgJHtyMX0geCAke2MxfSBhbmQgJHtyMn0geCAke2MyfSBtYXRyaXg6IGRpbWVuc2lvbnMgZG8gbm90IG1hdGNoLmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFB1dCBhIG1hdHJpeCBpbnRvIHRoZSB0b3AgbGVmdCBvZiBhIG1hdHJpeCBvZiB6ZXJvcy5cbiAgICAvLyBgcm93c2AgYW5kIGBjb2xzYCBhcmUgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIG91dHB1dCBtYXRyaXguXG4gICAgZnVuY3Rpb24gZW1iZWQobWF0LCByb3dzLCBjb2xzKSB7XG4gICAgICBsZXQgciA9IG1hdC5yb3dzO1xuICAgICAgbGV0IGMgPSBtYXQuY29sdW1ucztcbiAgICAgIGlmIChyID09PSByb3dzICYmIGMgPT09IGNvbHMpIHtcbiAgICAgICAgcmV0dXJuIG1hdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCByZXN1bHRhdCA9IEFic3RyYWN0TWF0cml4Lnplcm9zKHJvd3MsIGNvbHMpO1xuICAgICAgICByZXN1bHRhdCA9IHJlc3VsdGF0LnNldFN1Yk1hdHJpeChtYXQsIDAsIDApO1xuICAgICAgICByZXR1cm4gcmVzdWx0YXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWFrZSBzdXJlIGJvdGggbWF0cmljZXMgYXJlIHRoZSBzYW1lIHNpemUuXG4gICAgLy8gVGhpcyBpcyBleGNsdXNpdmVseSBmb3Igc2ltcGxpY2l0eTpcbiAgICAvLyB0aGlzIGFsZ29yaXRobSBjYW4gYmUgaW1wbGVtZW50ZWQgd2l0aCBtYXRyaWNlcyBvZiBkaWZmZXJlbnQgc2l6ZXMuXG5cbiAgICBsZXQgciA9IE1hdGgubWF4KHIxLCByMik7XG4gICAgbGV0IGMgPSBNYXRoLm1heChjMSwgYzIpO1xuICAgIHggPSBlbWJlZCh4LCByLCBjKTtcbiAgICB5ID0gZW1iZWQoeSwgciwgYyk7XG5cbiAgICAvLyBPdXIgcmVjdXJzaXZlIG11bHRpcGxpY2F0aW9uIGZ1bmN0aW9uLlxuICAgIGZ1bmN0aW9uIGJsb2NrTXVsdChhLCBiLCByb3dzLCBjb2xzKSB7XG4gICAgICAvLyBGb3Igc21hbGwgbWF0cmljZXMsIHJlc29ydCB0byBuYWl2ZSBtdWx0aXBsaWNhdGlvbi5cbiAgICAgIGlmIChyb3dzIDw9IDUxMiB8fCBjb2xzIDw9IDUxMikge1xuICAgICAgICByZXR1cm4gYS5tbXVsKGIpOyAvLyBhIGlzIGVxdWl2YWxlbnQgdG8gdGhpc1xuICAgICAgfVxuXG4gICAgICAvLyBBcHBseSBkeW5hbWljIHBhZGRpbmcuXG4gICAgICBpZiAocm93cyAlIDIgPT09IDEgJiYgY29scyAlIDIgPT09IDEpIHtcbiAgICAgICAgYSA9IGVtYmVkKGEsIHJvd3MgKyAxLCBjb2xzICsgMSk7XG4gICAgICAgIGIgPSBlbWJlZChiLCByb3dzICsgMSwgY29scyArIDEpO1xuICAgICAgfSBlbHNlIGlmIChyb3dzICUgMiA9PT0gMSkge1xuICAgICAgICBhID0gZW1iZWQoYSwgcm93cyArIDEsIGNvbHMpO1xuICAgICAgICBiID0gZW1iZWQoYiwgcm93cyArIDEsIGNvbHMpO1xuICAgICAgfSBlbHNlIGlmIChjb2xzICUgMiA9PT0gMSkge1xuICAgICAgICBhID0gZW1iZWQoYSwgcm93cywgY29scyArIDEpO1xuICAgICAgICBiID0gZW1iZWQoYiwgcm93cywgY29scyArIDEpO1xuICAgICAgfVxuXG4gICAgICBsZXQgaGFsZlJvd3MgPSBwYXJzZUludChhLnJvd3MgLyAyLCAxMCk7XG4gICAgICBsZXQgaGFsZkNvbHMgPSBwYXJzZUludChhLmNvbHVtbnMgLyAyLCAxMCk7XG4gICAgICAvLyBTdWJkaXZpZGUgaW5wdXQgbWF0cmljZXMuXG4gICAgICBsZXQgYTExID0gYS5zdWJNYXRyaXgoMCwgaGFsZlJvd3MgLSAxLCAwLCBoYWxmQ29scyAtIDEpO1xuICAgICAgbGV0IGIxMSA9IGIuc3ViTWF0cml4KDAsIGhhbGZSb3dzIC0gMSwgMCwgaGFsZkNvbHMgLSAxKTtcblxuICAgICAgbGV0IGExMiA9IGEuc3ViTWF0cml4KDAsIGhhbGZSb3dzIC0gMSwgaGFsZkNvbHMsIGEuY29sdW1ucyAtIDEpO1xuICAgICAgbGV0IGIxMiA9IGIuc3ViTWF0cml4KDAsIGhhbGZSb3dzIC0gMSwgaGFsZkNvbHMsIGIuY29sdW1ucyAtIDEpO1xuXG4gICAgICBsZXQgYTIxID0gYS5zdWJNYXRyaXgoaGFsZlJvd3MsIGEucm93cyAtIDEsIDAsIGhhbGZDb2xzIC0gMSk7XG4gICAgICBsZXQgYjIxID0gYi5zdWJNYXRyaXgoaGFsZlJvd3MsIGIucm93cyAtIDEsIDAsIGhhbGZDb2xzIC0gMSk7XG5cbiAgICAgIGxldCBhMjIgPSBhLnN1Yk1hdHJpeChoYWxmUm93cywgYS5yb3dzIC0gMSwgaGFsZkNvbHMsIGEuY29sdW1ucyAtIDEpO1xuICAgICAgbGV0IGIyMiA9IGIuc3ViTWF0cml4KGhhbGZSb3dzLCBiLnJvd3MgLSAxLCBoYWxmQ29scywgYi5jb2x1bW5zIC0gMSk7XG5cbiAgICAgIC8vIENvbXB1dGUgaW50ZXJtZWRpYXRlIHZhbHVlcy5cbiAgICAgIGxldCBtMSA9IGJsb2NrTXVsdChcbiAgICAgICAgQWJzdHJhY3RNYXRyaXguYWRkKGExMSwgYTIyKSxcbiAgICAgICAgQWJzdHJhY3RNYXRyaXguYWRkKGIxMSwgYjIyKSxcbiAgICAgICAgaGFsZlJvd3MsXG4gICAgICAgIGhhbGZDb2xzLFxuICAgICAgKTtcbiAgICAgIGxldCBtMiA9IGJsb2NrTXVsdChBYnN0cmFjdE1hdHJpeC5hZGQoYTIxLCBhMjIpLCBiMTEsIGhhbGZSb3dzLCBoYWxmQ29scyk7XG4gICAgICBsZXQgbTMgPSBibG9ja011bHQoYTExLCBBYnN0cmFjdE1hdHJpeC5zdWIoYjEyLCBiMjIpLCBoYWxmUm93cywgaGFsZkNvbHMpO1xuICAgICAgbGV0IG00ID0gYmxvY2tNdWx0KGEyMiwgQWJzdHJhY3RNYXRyaXguc3ViKGIyMSwgYjExKSwgaGFsZlJvd3MsIGhhbGZDb2xzKTtcbiAgICAgIGxldCBtNSA9IGJsb2NrTXVsdChBYnN0cmFjdE1hdHJpeC5hZGQoYTExLCBhMTIpLCBiMjIsIGhhbGZSb3dzLCBoYWxmQ29scyk7XG4gICAgICBsZXQgbTYgPSBibG9ja011bHQoXG4gICAgICAgIEFic3RyYWN0TWF0cml4LnN1YihhMjEsIGExMSksXG4gICAgICAgIEFic3RyYWN0TWF0cml4LmFkZChiMTEsIGIxMiksXG4gICAgICAgIGhhbGZSb3dzLFxuICAgICAgICBoYWxmQ29scyxcbiAgICAgICk7XG4gICAgICBsZXQgbTcgPSBibG9ja011bHQoXG4gICAgICAgIEFic3RyYWN0TWF0cml4LnN1YihhMTIsIGEyMiksXG4gICAgICAgIEFic3RyYWN0TWF0cml4LmFkZChiMjEsIGIyMiksXG4gICAgICAgIGhhbGZSb3dzLFxuICAgICAgICBoYWxmQ29scyxcbiAgICAgICk7XG5cbiAgICAgIC8vIENvbWJpbmUgaW50ZXJtZWRpYXRlIHZhbHVlcyBpbnRvIHRoZSBvdXRwdXQuXG4gICAgICBsZXQgYzExID0gQWJzdHJhY3RNYXRyaXguYWRkKG0xLCBtNCk7XG4gICAgICBjMTEuc3ViKG01KTtcbiAgICAgIGMxMS5hZGQobTcpO1xuICAgICAgbGV0IGMxMiA9IEFic3RyYWN0TWF0cml4LmFkZChtMywgbTUpO1xuICAgICAgbGV0IGMyMSA9IEFic3RyYWN0TWF0cml4LmFkZChtMiwgbTQpO1xuICAgICAgbGV0IGMyMiA9IEFic3RyYWN0TWF0cml4LnN1YihtMSwgbTIpO1xuICAgICAgYzIyLmFkZChtMyk7XG4gICAgICBjMjIuYWRkKG02KTtcblxuICAgICAgLy8gQ3JvcCBvdXRwdXQgdG8gdGhlIGRlc2lyZWQgc2l6ZSAodW5kbyBkeW5hbWljIHBhZGRpbmcpLlxuICAgICAgbGV0IHJlc3VsdGF0ID0gQWJzdHJhY3RNYXRyaXguemVyb3MoMiAqIGMxMS5yb3dzLCAyICogYzExLmNvbHVtbnMpO1xuICAgICAgcmVzdWx0YXQgPSByZXN1bHRhdC5zZXRTdWJNYXRyaXgoYzExLCAwLCAwKTtcbiAgICAgIHJlc3VsdGF0ID0gcmVzdWx0YXQuc2V0U3ViTWF0cml4KGMxMiwgYzExLnJvd3MsIDApO1xuICAgICAgcmVzdWx0YXQgPSByZXN1bHRhdC5zZXRTdWJNYXRyaXgoYzIxLCAwLCBjMTEuY29sdW1ucyk7XG4gICAgICByZXN1bHRhdCA9IHJlc3VsdGF0LnNldFN1Yk1hdHJpeChjMjIsIGMxMS5yb3dzLCBjMTEuY29sdW1ucyk7XG4gICAgICByZXR1cm4gcmVzdWx0YXQuc3ViTWF0cml4KDAsIHJvd3MgLSAxLCAwLCBjb2xzIC0gMSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJsb2NrTXVsdCh4LCB5LCByLCBjKTtcbiAgfVxuXG4gIHNjYWxlUm93cyhvcHRpb25zID0ge30pIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuICAgIGNvbnN0IHsgbWluID0gMCwgbWF4ID0gMSB9ID0gb3B0aW9ucztcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShtaW4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdtaW4gbXVzdCBiZSBhIG51bWJlcicpO1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG1heCkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ21heCBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgaWYgKG1pbiA+PSBtYXgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdtaW4gbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4Jyk7XG4gICAgbGV0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgodGhpcy5yb3dzLCB0aGlzLmNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGNvbnN0IHJvdyA9IHRoaXMuZ2V0Um93KGkpO1xuICAgICAgaWYgKHJvdy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJlc2NhbGUocm93LCB7IG1pbiwgbWF4LCBvdXRwdXQ6IHJvdyB9KTtcbiAgICAgIH1cbiAgICAgIG5ld01hdHJpeC5zZXRSb3coaSwgcm93KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld01hdHJpeDtcbiAgfVxuXG4gIHNjYWxlQ29sdW1ucyhvcHRpb25zID0ge30pIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuICAgIGNvbnN0IHsgbWluID0gMCwgbWF4ID0gMSB9ID0gb3B0aW9ucztcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShtaW4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdtaW4gbXVzdCBiZSBhIG51bWJlcicpO1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG1heCkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ21heCBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgaWYgKG1pbiA+PSBtYXgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdtaW4gbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4Jyk7XG4gICAgbGV0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgodGhpcy5yb3dzLCB0aGlzLmNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uKGkpO1xuICAgICAgaWYgKGNvbHVtbi5sZW5ndGgpIHtcbiAgICAgICAgcmVzY2FsZShjb2x1bW4sIHtcbiAgICAgICAgICBtaW46IG1pbixcbiAgICAgICAgICBtYXg6IG1heCxcbiAgICAgICAgICBvdXRwdXQ6IGNvbHVtbixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBuZXdNYXRyaXguc2V0Q29sdW1uKGksIGNvbHVtbik7XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXRyaXg7XG4gIH1cblxuICBmbGlwUm93cygpIHtcbiAgICBjb25zdCBtaWRkbGUgPSBNYXRoLmNlaWwodGhpcy5jb2x1bW5zIC8gMik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBtaWRkbGU7IGorKykge1xuICAgICAgICBsZXQgZmlyc3QgPSB0aGlzLmdldChpLCBqKTtcbiAgICAgICAgbGV0IGxhc3QgPSB0aGlzLmdldChpLCB0aGlzLmNvbHVtbnMgLSAxIC0gaik7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIGxhc3QpO1xuICAgICAgICB0aGlzLnNldChpLCB0aGlzLmNvbHVtbnMgLSAxIC0gaiwgZmlyc3QpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZsaXBDb2x1bW5zKCkge1xuICAgIGNvbnN0IG1pZGRsZSA9IE1hdGguY2VpbCh0aGlzLnJvd3MgLyAyKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1pZGRsZTsgaSsrKSB7XG4gICAgICAgIGxldCBmaXJzdCA9IHRoaXMuZ2V0KGksIGopO1xuICAgICAgICBsZXQgbGFzdCA9IHRoaXMuZ2V0KHRoaXMucm93cyAtIDEgLSBpLCBqKTtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgbGFzdCk7XG4gICAgICAgIHRoaXMuc2V0KHRoaXMucm93cyAtIDEgLSBpLCBqLCBmaXJzdCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAga3JvbmVja2VyUHJvZHVjdChvdGhlcikge1xuICAgIG90aGVyID0gTWF0cml4LmNoZWNrTWF0cml4KG90aGVyKTtcblxuICAgIGxldCBtID0gdGhpcy5yb3dzO1xuICAgIGxldCBuID0gdGhpcy5jb2x1bW5zO1xuICAgIGxldCBwID0gb3RoZXIucm93cztcbiAgICBsZXQgcSA9IG90aGVyLmNvbHVtbnM7XG5cbiAgICBsZXQgcmVzdWx0ID0gbmV3IE1hdHJpeChtICogcCwgbiAqIHEpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IHA7IGsrKykge1xuICAgICAgICAgIGZvciAobGV0IGwgPSAwOyBsIDwgcTsgbCsrKSB7XG4gICAgICAgICAgICByZXN1bHQuc2V0KHAgKiBpICsgaywgcSAqIGogKyBsLCB0aGlzLmdldChpLCBqKSAqIG90aGVyLmdldChrLCBsKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBrcm9uZWNrZXJTdW0ob3RoZXIpIHtcbiAgICBvdGhlciA9IE1hdHJpeC5jaGVja01hdHJpeChvdGhlcik7XG4gICAgaWYgKCF0aGlzLmlzU3F1YXJlKCkgfHwgIW90aGVyLmlzU3F1YXJlKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignS3JvbmVja2VyIFN1bSBuZWVkcyB0d28gU3F1YXJlIE1hdHJpY2VzJyk7XG4gICAgfVxuICAgIGxldCBtID0gdGhpcy5yb3dzO1xuICAgIGxldCBuID0gb3RoZXIucm93cztcbiAgICBsZXQgQXhJID0gdGhpcy5rcm9uZWNrZXJQcm9kdWN0KE1hdHJpeC5leWUobiwgbikpO1xuICAgIGxldCBJeEIgPSBNYXRyaXguZXllKG0sIG0pLmtyb25lY2tlclByb2R1Y3Qob3RoZXIpO1xuICAgIHJldHVybiBBeEkuYWRkKEl4Qik7XG4gIH1cblxuICB0cmFuc3Bvc2UoKSB7XG4gICAgbGV0IHJlc3VsdCA9IG5ldyBNYXRyaXgodGhpcy5jb2x1bW5zLCB0aGlzLnJvd3MpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgcmVzdWx0LnNldChqLCBpLCB0aGlzLmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzb3J0Um93cyhjb21wYXJlRnVuY3Rpb24gPSBjb21wYXJlTnVtYmVycykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIHRoaXMuc2V0Um93KGksIHRoaXMuZ2V0Um93KGkpLnNvcnQoY29tcGFyZUZ1bmN0aW9uKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc29ydENvbHVtbnMoY29tcGFyZUZ1bmN0aW9uID0gY29tcGFyZU51bWJlcnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICB0aGlzLnNldENvbHVtbihpLCB0aGlzLmdldENvbHVtbihpKS5zb3J0KGNvbXBhcmVGdW5jdGlvbikpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN1Yk1hdHJpeChzdGFydFJvdywgZW5kUm93LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKSB7XG4gICAgY2hlY2tSYW5nZSh0aGlzLCBzdGFydFJvdywgZW5kUm93LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKTtcbiAgICBsZXQgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChcbiAgICAgIGVuZFJvdyAtIHN0YXJ0Um93ICsgMSxcbiAgICAgIGVuZENvbHVtbiAtIHN0YXJ0Q29sdW1uICsgMSxcbiAgICApO1xuICAgIGZvciAobGV0IGkgPSBzdGFydFJvdzsgaSA8PSBlbmRSb3c7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IHN0YXJ0Q29sdW1uOyBqIDw9IGVuZENvbHVtbjsgaisrKSB7XG4gICAgICAgIG5ld01hdHJpeC5zZXQoaSAtIHN0YXJ0Um93LCBqIC0gc3RhcnRDb2x1bW4sIHRoaXMuZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld01hdHJpeDtcbiAgfVxuXG4gIHN1Yk1hdHJpeFJvdyhpbmRpY2VzLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKSB7XG4gICAgaWYgKHN0YXJ0Q29sdW1uID09PSB1bmRlZmluZWQpIHN0YXJ0Q29sdW1uID0gMDtcbiAgICBpZiAoZW5kQ29sdW1uID09PSB1bmRlZmluZWQpIGVuZENvbHVtbiA9IHRoaXMuY29sdW1ucyAtIDE7XG4gICAgaWYgKFxuICAgICAgc3RhcnRDb2x1bW4gPiBlbmRDb2x1bW4gfHxcbiAgICAgIHN0YXJ0Q29sdW1uIDwgMCB8fFxuICAgICAgc3RhcnRDb2x1bW4gPj0gdGhpcy5jb2x1bW5zIHx8XG4gICAgICBlbmRDb2x1bW4gPCAwIHx8XG4gICAgICBlbmRDb2x1bW4gPj0gdGhpcy5jb2x1bW5zXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXJndW1lbnQgb3V0IG9mIHJhbmdlJyk7XG4gICAgfVxuXG4gICAgbGV0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgoaW5kaWNlcy5sZW5ndGgsIGVuZENvbHVtbiAtIHN0YXJ0Q29sdW1uICsgMSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gc3RhcnRDb2x1bW47IGogPD0gZW5kQ29sdW1uOyBqKyspIHtcbiAgICAgICAgaWYgKGluZGljZXNbaV0gPCAwIHx8IGluZGljZXNbaV0gPj0gdGhpcy5yb3dzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFJvdyBpbmRleCBvdXQgb2YgcmFuZ2U6ICR7aW5kaWNlc1tpXX1gKTtcbiAgICAgICAgfVxuICAgICAgICBuZXdNYXRyaXguc2V0KGksIGogLSBzdGFydENvbHVtbiwgdGhpcy5nZXQoaW5kaWNlc1tpXSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3TWF0cml4O1xuICB9XG5cbiAgc3ViTWF0cml4Q29sdW1uKGluZGljZXMsIHN0YXJ0Um93LCBlbmRSb3cpIHtcbiAgICBpZiAoc3RhcnRSb3cgPT09IHVuZGVmaW5lZCkgc3RhcnRSb3cgPSAwO1xuICAgIGlmIChlbmRSb3cgPT09IHVuZGVmaW5lZCkgZW5kUm93ID0gdGhpcy5yb3dzIC0gMTtcbiAgICBpZiAoXG4gICAgICBzdGFydFJvdyA+IGVuZFJvdyB8fFxuICAgICAgc3RhcnRSb3cgPCAwIHx8XG4gICAgICBzdGFydFJvdyA+PSB0aGlzLnJvd3MgfHxcbiAgICAgIGVuZFJvdyA8IDAgfHxcbiAgICAgIGVuZFJvdyA+PSB0aGlzLnJvd3NcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBcmd1bWVudCBvdXQgb2YgcmFuZ2UnKTtcbiAgICB9XG5cbiAgICBsZXQgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChlbmRSb3cgLSBzdGFydFJvdyArIDEsIGluZGljZXMubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSBzdGFydFJvdzsgaiA8PSBlbmRSb3c7IGorKykge1xuICAgICAgICBpZiAoaW5kaWNlc1tpXSA8IDAgfHwgaW5kaWNlc1tpXSA+PSB0aGlzLmNvbHVtbnMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgQ29sdW1uIGluZGV4IG91dCBvZiByYW5nZTogJHtpbmRpY2VzW2ldfWApO1xuICAgICAgICB9XG4gICAgICAgIG5ld01hdHJpeC5zZXQoaiAtIHN0YXJ0Um93LCBpLCB0aGlzLmdldChqLCBpbmRpY2VzW2ldKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXRyaXg7XG4gIH1cblxuICBzZXRTdWJNYXRyaXgobWF0cml4LCBzdGFydFJvdywgc3RhcnRDb2x1bW4pIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAobWF0cml4LmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIGxldCBlbmRSb3cgPSBzdGFydFJvdyArIG1hdHJpeC5yb3dzIC0gMTtcbiAgICBsZXQgZW5kQ29sdW1uID0gc3RhcnRDb2x1bW4gKyBtYXRyaXguY29sdW1ucyAtIDE7XG4gICAgY2hlY2tSYW5nZSh0aGlzLCBzdGFydFJvdywgZW5kUm93LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChzdGFydFJvdyArIGksIHN0YXJ0Q29sdW1uICsgaiwgbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2VsZWN0aW9uKHJvd0luZGljZXMsIGNvbHVtbkluZGljZXMpIHtcbiAgICBjaGVja1Jvd0luZGljZXModGhpcywgcm93SW5kaWNlcyk7XG4gICAgY2hlY2tDb2x1bW5JbmRpY2VzKHRoaXMsIGNvbHVtbkluZGljZXMpO1xuICAgIGxldCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KHJvd0luZGljZXMubGVuZ3RoLCBjb2x1bW5JbmRpY2VzLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dJbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgcm93SW5kZXggPSByb3dJbmRpY2VzW2ldO1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2x1bW5JbmRpY2VzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGxldCBjb2x1bW5JbmRleCA9IGNvbHVtbkluZGljZXNbal07XG4gICAgICAgIG5ld01hdHJpeC5zZXQoaSwgaiwgdGhpcy5nZXQocm93SW5kZXgsIGNvbHVtbkluZGV4KSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXRyaXg7XG4gIH1cblxuICB0cmFjZSgpIHtcbiAgICBsZXQgbWluID0gTWF0aC5taW4odGhpcy5yb3dzLCB0aGlzLmNvbHVtbnMpO1xuICAgIGxldCB0cmFjZSA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtaW47IGkrKykge1xuICAgICAgdHJhY2UgKz0gdGhpcy5nZXQoaSwgaSk7XG4gICAgfVxuICAgIHJldHVybiB0cmFjZTtcbiAgfVxuXG4gIGNsb25lKCkge1xuICAgIGxldCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KHRoaXMucm93cywgdGhpcy5jb2x1bW5zKTtcbiAgICBmb3IgKGxldCByb3cgPSAwOyByb3cgPCB0aGlzLnJvd3M7IHJvdysrKSB7XG4gICAgICBmb3IgKGxldCBjb2x1bW4gPSAwOyBjb2x1bW4gPCB0aGlzLmNvbHVtbnM7IGNvbHVtbisrKSB7XG4gICAgICAgIG5ld01hdHJpeC5zZXQocm93LCBjb2x1bW4sIHRoaXMuZ2V0KHJvdywgY29sdW1uKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXRyaXg7XG4gIH1cblxuICBzdW0oYnkpIHtcbiAgICBzd2l0Y2ggKGJ5KSB7XG4gICAgICBjYXNlICdyb3cnOlxuICAgICAgICByZXR1cm4gc3VtQnlSb3codGhpcyk7XG4gICAgICBjYXNlICdjb2x1bW4nOlxuICAgICAgICByZXR1cm4gc3VtQnlDb2x1bW4odGhpcyk7XG4gICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgcmV0dXJuIHN1bUFsbCh0aGlzKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7Ynl9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJvZHVjdChieSkge1xuICAgIHN3aXRjaCAoYnkpIHtcbiAgICAgIGNhc2UgJ3Jvdyc6XG4gICAgICAgIHJldHVybiBwcm9kdWN0QnlSb3codGhpcyk7XG4gICAgICBjYXNlICdjb2x1bW4nOlxuICAgICAgICByZXR1cm4gcHJvZHVjdEJ5Q29sdW1uKHRoaXMpO1xuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgIHJldHVybiBwcm9kdWN0QWxsKHRoaXMpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHtieX1gKTtcbiAgICB9XG4gIH1cblxuICBtZWFuKGJ5KSB7XG4gICAgY29uc3Qgc3VtID0gdGhpcy5zdW0oYnkpO1xuICAgIHN3aXRjaCAoYnkpIHtcbiAgICAgIGNhc2UgJ3Jvdyc6IHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgICAgIHN1bVtpXSAvPSB0aGlzLmNvbHVtbnM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1bTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NvbHVtbic6IHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgICAgIHN1bVtpXSAvPSB0aGlzLnJvd3M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1bTtcbiAgICAgIH1cbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICByZXR1cm4gc3VtIC8gdGhpcy5zaXplO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHtieX1gKTtcbiAgICB9XG4gIH1cblxuICB2YXJpYW5jZShieSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHR5cGVvZiBieSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIG9wdGlvbnMgPSBieTtcbiAgICAgIGJ5ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuICAgIGNvbnN0IHsgdW5iaWFzZWQgPSB0cnVlLCBtZWFuID0gdGhpcy5tZWFuKGJ5KSB9ID0gb3B0aW9ucztcbiAgICBpZiAodHlwZW9mIHVuYmlhc2VkICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3VuYmlhc2VkIG11c3QgYmUgYSBib29sZWFuJyk7XG4gICAgfVxuICAgIHN3aXRjaCAoYnkpIHtcbiAgICAgIGNhc2UgJ3Jvdyc6IHtcbiAgICAgICAgaWYgKCFpc0FueUFycmF5KG1lYW4pKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbWVhbiBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhcmlhbmNlQnlSb3codGhpcywgdW5iaWFzZWQsIG1lYW4pO1xuICAgICAgfVxuICAgICAgY2FzZSAnY29sdW1uJzoge1xuICAgICAgICBpZiAoIWlzQW55QXJyYXkobWVhbikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtZWFuIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFyaWFuY2VCeUNvbHVtbih0aGlzLCB1bmJpYXNlZCwgbWVhbik7XG4gICAgICB9XG4gICAgICBjYXNlIHVuZGVmaW5lZDoge1xuICAgICAgICBpZiAodHlwZW9mIG1lYW4gIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbWVhbiBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhcmlhbmNlQWxsKHRoaXMsIHVuYmlhc2VkLCBtZWFuKTtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7Ynl9YCk7XG4gICAgfVxuICB9XG5cbiAgc3RhbmRhcmREZXZpYXRpb24oYnksIG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIGJ5ID09PSAnb2JqZWN0Jykge1xuICAgICAgb3B0aW9ucyA9IGJ5O1xuICAgICAgYnkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IHZhcmlhbmNlID0gdGhpcy52YXJpYW5jZShieSwgb3B0aW9ucyk7XG4gICAgaWYgKGJ5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBNYXRoLnNxcnQodmFyaWFuY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhcmlhbmNlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhcmlhbmNlW2ldID0gTWF0aC5zcXJ0KHZhcmlhbmNlW2ldKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YXJpYW5jZTtcbiAgICB9XG4gIH1cblxuICBjZW50ZXIoYnksIG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICh0eXBlb2YgYnkgPT09ICdvYmplY3QnKSB7XG4gICAgICBvcHRpb25zID0gYnk7XG4gICAgICBieSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cbiAgICBjb25zdCB7IGNlbnRlciA9IHRoaXMubWVhbihieSkgfSA9IG9wdGlvbnM7XG4gICAgc3dpdGNoIChieSkge1xuICAgICAgY2FzZSAncm93Jzoge1xuICAgICAgICBpZiAoIWlzQW55QXJyYXkoY2VudGVyKSkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NlbnRlciBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY2VudGVyQnlSb3codGhpcywgY2VudGVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgICBjYXNlICdjb2x1bW4nOiB7XG4gICAgICAgIGlmICghaXNBbnlBcnJheShjZW50ZXIpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY2VudGVyIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgICBjZW50ZXJCeUNvbHVtbih0aGlzLCBjZW50ZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICAgIGNhc2UgdW5kZWZpbmVkOiB7XG4gICAgICAgIGlmICh0eXBlb2YgY2VudGVyICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NlbnRlciBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgICAgIH1cbiAgICAgICAgY2VudGVyQWxsKHRoaXMsIGNlbnRlcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHtieX1gKTtcbiAgICB9XG4gIH1cblxuICBzY2FsZShieSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHR5cGVvZiBieSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIG9wdGlvbnMgPSBieTtcbiAgICAgIGJ5ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuICAgIGxldCBzY2FsZSA9IG9wdGlvbnMuc2NhbGU7XG4gICAgc3dpdGNoIChieSkge1xuICAgICAgY2FzZSAncm93Jzoge1xuICAgICAgICBpZiAoc2NhbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjYWxlID0gZ2V0U2NhbGVCeVJvdyh0aGlzKTtcbiAgICAgICAgfSBlbHNlIGlmICghaXNBbnlBcnJheShzY2FsZSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzY2FsZSBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgc2NhbGVCeVJvdyh0aGlzLCBzY2FsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgICAgY2FzZSAnY29sdW1uJzoge1xuICAgICAgICBpZiAoc2NhbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjYWxlID0gZ2V0U2NhbGVCeUNvbHVtbih0aGlzKTtcbiAgICAgICAgfSBlbHNlIGlmICghaXNBbnlBcnJheShzY2FsZSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzY2FsZSBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgc2NhbGVCeUNvbHVtbih0aGlzLCBzY2FsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgICAgY2FzZSB1bmRlZmluZWQ6IHtcbiAgICAgICAgaWYgKHNjYWxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzY2FsZSA9IGdldFNjYWxlQWxsKHRoaXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzY2FsZSAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzY2FsZSBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgICAgIH1cbiAgICAgICAgc2NhbGVBbGwodGhpcywgc2NhbGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7Ynl9YCk7XG4gICAgfVxuICB9XG5cbiAgdG9TdHJpbmcob3B0aW9ucykge1xuICAgIHJldHVybiBpbnNwZWN0TWF0cml4V2l0aE9wdGlvbnModGhpcywgb3B0aW9ucyk7XG4gIH1cbn1cblxuQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmtsYXNzID0gJ01hdHJpeCc7XG5pZiAodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlW1N5bWJvbC5mb3IoJ25vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tJyldID1cbiAgICBpbnNwZWN0TWF0cml4O1xufVxuXG5mdW5jdGlvbiBjb21wYXJlTnVtYmVycyhhLCBiKSB7XG4gIHJldHVybiBhIC0gYjtcbn1cblxuZnVuY3Rpb24gaXNBcnJheU9mTnVtYmVycyhhcnJheSkge1xuICByZXR1cm4gYXJyYXkuZXZlcnkoKGVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gdHlwZW9mIGVsZW1lbnQgPT09ICdudW1iZXInO1xuICB9KTtcbn1cblxuLy8gU3lub255bXNcbkFic3RyYWN0TWF0cml4LnJhbmRvbSA9IEFic3RyYWN0TWF0cml4LnJhbmQ7XG5BYnN0cmFjdE1hdHJpeC5yYW5kb21JbnQgPSBBYnN0cmFjdE1hdHJpeC5yYW5kSW50O1xuQWJzdHJhY3RNYXRyaXguZGlhZ29uYWwgPSBBYnN0cmFjdE1hdHJpeC5kaWFnO1xuQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpYWdvbmFsID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpYWc7XG5BYnN0cmFjdE1hdHJpeC5pZGVudGl0eSA9IEFic3RyYWN0TWF0cml4LmV5ZTtcbkFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5uZWdhdGUgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubmVnO1xuQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnRlbnNvclByb2R1Y3QgPVxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUua3JvbmVja2VyUHJvZHVjdDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWF0cml4IGV4dGVuZHMgQWJzdHJhY3RNYXRyaXgge1xuICBjb25zdHJ1Y3RvcihuUm93cywgbkNvbHVtbnMpIHtcbiAgICBzdXBlcigpO1xuICAgIGlmIChNYXRyaXguaXNNYXRyaXgoblJvd3MpKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc3RydWN0b3ItcmV0dXJuXG4gICAgICByZXR1cm4gblJvd3MuY2xvbmUoKTtcbiAgICB9IGVsc2UgaWYgKE51bWJlci5pc0ludGVnZXIoblJvd3MpICYmIG5Sb3dzID49IDApIHtcbiAgICAgIC8vIENyZWF0ZSBhbiBlbXB0eSBtYXRyaXhcbiAgICAgIHRoaXMuZGF0YSA9IFtdO1xuICAgICAgaWYgKE51bWJlci5pc0ludGVnZXIobkNvbHVtbnMpICYmIG5Db2x1bW5zID49IDApIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuUm93czsgaSsrKSB7XG4gICAgICAgICAgdGhpcy5kYXRhLnB1c2gobmV3IEZsb2F0NjRBcnJheShuQ29sdW1ucykpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCduQ29sdW1ucyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcicpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNBbnlBcnJheShuUm93cykpIHtcbiAgICAgIC8vIENvcHkgdGhlIHZhbHVlcyBmcm9tIHRoZSAyRCBhcnJheVxuICAgICAgY29uc3QgYXJyYXlEYXRhID0gblJvd3M7XG4gICAgICBuUm93cyA9IGFycmF5RGF0YS5sZW5ndGg7XG4gICAgICBuQ29sdW1ucyA9IG5Sb3dzID8gYXJyYXlEYXRhWzBdLmxlbmd0aCA6IDA7XG4gICAgICBpZiAodHlwZW9mIG5Db2x1bW5zICE9PSAnbnVtYmVyJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICdEYXRhIG11c3QgYmUgYSAyRCBhcnJheSB3aXRoIGF0IGxlYXN0IG9uZSBlbGVtZW50JyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGF0YSA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuUm93czsgaSsrKSB7XG4gICAgICAgIGlmIChhcnJheURhdGFbaV0ubGVuZ3RoICE9PSBuQ29sdW1ucykge1xuICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmNvbnNpc3RlbnQgYXJyYXkgZGltZW5zaW9ucycpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNBcnJheU9mTnVtYmVycyhhcnJheURhdGFbaV0pKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW5wdXQgZGF0YSBjb250YWlucyBub24tbnVtZXJpYyB2YWx1ZXMnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhdGEucHVzaChGbG9hdDY0QXJyYXkuZnJvbShhcnJheURhdGFbaV0pKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgJ0ZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIgb3IgYW4gYXJyYXknLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5yb3dzID0gblJvd3M7XG4gICAgdGhpcy5jb2x1bW5zID0gbkNvbHVtbnM7XG4gIH1cblxuICBzZXQocm93SW5kZXgsIGNvbHVtbkluZGV4LCB2YWx1ZSkge1xuICAgIHRoaXMuZGF0YVtyb3dJbmRleF1bY29sdW1uSW5kZXhdID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXQocm93SW5kZXgsIGNvbHVtbkluZGV4KSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVtyb3dJbmRleF1bY29sdW1uSW5kZXhdO1xuICB9XG5cbiAgcmVtb3ZlUm93KGluZGV4KSB7XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCBpbmRleCk7XG4gICAgdGhpcy5kYXRhLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5yb3dzIC09IDE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhZGRSb3coaW5kZXgsIGFycmF5KSB7XG4gICAgaWYgKGFycmF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGFycmF5ID0gaW5kZXg7XG4gICAgICBpbmRleCA9IHRoaXMucm93cztcbiAgICB9XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCBpbmRleCwgdHJ1ZSk7XG4gICAgYXJyYXkgPSBGbG9hdDY0QXJyYXkuZnJvbShjaGVja1Jvd1ZlY3Rvcih0aGlzLCBhcnJheSkpO1xuICAgIHRoaXMuZGF0YS5zcGxpY2UoaW5kZXgsIDAsIGFycmF5KTtcbiAgICB0aGlzLnJvd3MgKz0gMTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJlbW92ZUNvbHVtbihpbmRleCkge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGNvbnN0IG5ld1JvdyA9IG5ldyBGbG9hdDY0QXJyYXkodGhpcy5jb2x1bW5zIC0gMSk7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGluZGV4OyBqKyspIHtcbiAgICAgICAgbmV3Um93W2pdID0gdGhpcy5kYXRhW2ldW2pdO1xuICAgICAgfVxuICAgICAgZm9yIChsZXQgaiA9IGluZGV4ICsgMTsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIG5ld1Jvd1tqIC0gMV0gPSB0aGlzLmRhdGFbaV1bal07XG4gICAgICB9XG4gICAgICB0aGlzLmRhdGFbaV0gPSBuZXdSb3c7XG4gICAgfVxuICAgIHRoaXMuY29sdW1ucyAtPSAxO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkQ29sdW1uKGluZGV4LCBhcnJheSkge1xuICAgIGlmICh0eXBlb2YgYXJyYXkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBhcnJheSA9IGluZGV4O1xuICAgICAgaW5kZXggPSB0aGlzLmNvbHVtbnM7XG4gICAgfVxuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgaW5kZXgsIHRydWUpO1xuICAgIGFycmF5ID0gY2hlY2tDb2x1bW5WZWN0b3IodGhpcywgYXJyYXkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGNvbnN0IG5ld1JvdyA9IG5ldyBGbG9hdDY0QXJyYXkodGhpcy5jb2x1bW5zICsgMSk7XG4gICAgICBsZXQgaiA9IDA7XG4gICAgICBmb3IgKDsgaiA8IGluZGV4OyBqKyspIHtcbiAgICAgICAgbmV3Um93W2pdID0gdGhpcy5kYXRhW2ldW2pdO1xuICAgICAgfVxuICAgICAgbmV3Um93W2orK10gPSBhcnJheVtpXTtcbiAgICAgIGZvciAoOyBqIDwgdGhpcy5jb2x1bW5zICsgMTsgaisrKSB7XG4gICAgICAgIG5ld1Jvd1tqXSA9IHRoaXMuZGF0YVtpXVtqIC0gMV07XG4gICAgICB9XG4gICAgICB0aGlzLmRhdGFbaV0gPSBuZXdSb3c7XG4gICAgfVxuICAgIHRoaXMuY29sdW1ucyArPSAxO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmluc3RhbGxNYXRoT3BlcmF0aW9ucyhBYnN0cmFjdE1hdHJpeCwgTWF0cml4KTtcbiIsImltcG9ydCB7IG5ld0FycmF5IH0gZnJvbSAnLi91dGlsJztcblxuZXhwb3J0IGZ1bmN0aW9uIHN1bUJ5Um93KG1hdHJpeCkge1xuICBsZXQgc3VtID0gbmV3QXJyYXkobWF0cml4LnJvd3MpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyArK2kpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyArK2opIHtcbiAgICAgIHN1bVtpXSArPSBtYXRyaXguZ2V0KGksIGopO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3VtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VtQnlDb2x1bW4obWF0cml4KSB7XG4gIGxldCBzdW0gPSBuZXdBcnJheShtYXRyaXguY29sdW1ucyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7ICsraSkge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7ICsraikge1xuICAgICAgc3VtW2pdICs9IG1hdHJpeC5nZXQoaSwgaik7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdW1BbGwobWF0cml4KSB7XG4gIGxldCB2ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgICB2ICs9IG1hdHJpeC5nZXQoaSwgaik7XG4gICAgfVxuICB9XG4gIHJldHVybiB2O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvZHVjdEJ5Um93KG1hdHJpeCkge1xuICBsZXQgc3VtID0gbmV3QXJyYXkobWF0cml4LnJvd3MsIDEpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyArK2kpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyArK2opIHtcbiAgICAgIHN1bVtpXSAqPSBtYXRyaXguZ2V0KGksIGopO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3VtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvZHVjdEJ5Q29sdW1uKG1hdHJpeCkge1xuICBsZXQgc3VtID0gbmV3QXJyYXkobWF0cml4LmNvbHVtbnMsIDEpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyArK2kpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyArK2opIHtcbiAgICAgIHN1bVtqXSAqPSBtYXRyaXguZ2V0KGksIGopO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3VtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvZHVjdEFsbChtYXRyaXgpIHtcbiAgbGV0IHYgPSAxO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgIHYgKj0gbWF0cml4LmdldChpLCBqKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYW5jZUJ5Um93KG1hdHJpeCwgdW5iaWFzZWQsIG1lYW4pIHtcbiAgY29uc3Qgcm93cyA9IG1hdHJpeC5yb3dzO1xuICBjb25zdCBjb2xzID0gbWF0cml4LmNvbHVtbnM7XG4gIGNvbnN0IHZhcmlhbmNlID0gW107XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICBsZXQgc3VtMSA9IDA7XG4gICAgbGV0IHN1bTIgPSAwO1xuICAgIGxldCB4ID0gMDtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHM7IGorKykge1xuICAgICAgeCA9IG1hdHJpeC5nZXQoaSwgaikgLSBtZWFuW2ldO1xuICAgICAgc3VtMSArPSB4O1xuICAgICAgc3VtMiArPSB4ICogeDtcbiAgICB9XG4gICAgaWYgKHVuYmlhc2VkKSB7XG4gICAgICB2YXJpYW5jZS5wdXNoKChzdW0yIC0gKHN1bTEgKiBzdW0xKSAvIGNvbHMpIC8gKGNvbHMgLSAxKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhcmlhbmNlLnB1c2goKHN1bTIgLSAoc3VtMSAqIHN1bTEpIC8gY29scykgLyBjb2xzKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhcmlhbmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFuY2VCeUNvbHVtbihtYXRyaXgsIHVuYmlhc2VkLCBtZWFuKSB7XG4gIGNvbnN0IHJvd3MgPSBtYXRyaXgucm93cztcbiAgY29uc3QgY29scyA9IG1hdHJpeC5jb2x1bW5zO1xuICBjb25zdCB2YXJpYW5jZSA9IFtdO1xuXG4gIGZvciAobGV0IGogPSAwOyBqIDwgY29sczsgaisrKSB7XG4gICAgbGV0IHN1bTEgPSAwO1xuICAgIGxldCBzdW0yID0gMDtcbiAgICBsZXQgeCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIHggPSBtYXRyaXguZ2V0KGksIGopIC0gbWVhbltqXTtcbiAgICAgIHN1bTEgKz0geDtcbiAgICAgIHN1bTIgKz0geCAqIHg7XG4gICAgfVxuICAgIGlmICh1bmJpYXNlZCkge1xuICAgICAgdmFyaWFuY2UucHVzaCgoc3VtMiAtIChzdW0xICogc3VtMSkgLyByb3dzKSAvIChyb3dzIC0gMSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXJpYW5jZS5wdXNoKChzdW0yIC0gKHN1bTEgKiBzdW0xKSAvIHJvd3MpIC8gcm93cyk7XG4gICAgfVxuICB9XG4gIHJldHVybiB2YXJpYW5jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhbmNlQWxsKG1hdHJpeCwgdW5iaWFzZWQsIG1lYW4pIHtcbiAgY29uc3Qgcm93cyA9IG1hdHJpeC5yb3dzO1xuICBjb25zdCBjb2xzID0gbWF0cml4LmNvbHVtbnM7XG4gIGNvbnN0IHNpemUgPSByb3dzICogY29scztcblxuICBsZXQgc3VtMSA9IDA7XG4gIGxldCBzdW0yID0gMDtcbiAgbGV0IHggPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sczsgaisrKSB7XG4gICAgICB4ID0gbWF0cml4LmdldChpLCBqKSAtIG1lYW47XG4gICAgICBzdW0xICs9IHg7XG4gICAgICBzdW0yICs9IHggKiB4O1xuICAgIH1cbiAgfVxuICBpZiAodW5iaWFzZWQpIHtcbiAgICByZXR1cm4gKHN1bTIgLSAoc3VtMSAqIHN1bTEpIC8gc2l6ZSkgLyAoc2l6ZSAtIDEpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAoc3VtMiAtIChzdW0xICogc3VtMSkgLyBzaXplKSAvIHNpemU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNlbnRlckJ5Um93KG1hdHJpeCwgbWVhbikge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgIG1hdHJpeC5zZXQoaSwgaiwgbWF0cml4LmdldChpLCBqKSAtIG1lYW5baV0pO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2VudGVyQnlDb2x1bW4obWF0cml4LCBtZWFuKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgbWF0cml4LnNldChpLCBqLCBtYXRyaXguZ2V0KGksIGopIC0gbWVhbltqXSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjZW50ZXJBbGwobWF0cml4LCBtZWFuKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgbWF0cml4LnNldChpLCBqLCBtYXRyaXguZ2V0KGksIGopIC0gbWVhbik7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2FsZUJ5Um93KG1hdHJpeCkge1xuICBjb25zdCBzY2FsZSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICBsZXQgc3VtID0gMDtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgIHN1bSArPSBNYXRoLnBvdyhtYXRyaXguZ2V0KGksIGopLCAyKSAvIChtYXRyaXguY29sdW1ucyAtIDEpO1xuICAgIH1cbiAgICBzY2FsZS5wdXNoKE1hdGguc3FydChzdW0pKTtcbiAgfVxuICByZXR1cm4gc2NhbGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2FsZUJ5Um93KG1hdHJpeCwgc2NhbGUpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgICBtYXRyaXguc2V0KGksIGosIG1hdHJpeC5nZXQoaSwgaikgLyBzY2FsZVtpXSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2FsZUJ5Q29sdW1uKG1hdHJpeCkge1xuICBjb25zdCBzY2FsZSA9IFtdO1xuICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICBsZXQgc3VtID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICAgIHN1bSArPSBNYXRoLnBvdyhtYXRyaXguZ2V0KGksIGopLCAyKSAvIChtYXRyaXgucm93cyAtIDEpO1xuICAgIH1cbiAgICBzY2FsZS5wdXNoKE1hdGguc3FydChzdW0pKTtcbiAgfVxuICByZXR1cm4gc2NhbGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2FsZUJ5Q29sdW1uKG1hdHJpeCwgc2NhbGUpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgICBtYXRyaXguc2V0KGksIGosIG1hdHJpeC5nZXQoaSwgaikgLyBzY2FsZVtqXSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2FsZUFsbChtYXRyaXgpIHtcbiAgY29uc3QgZGl2aWRlciA9IG1hdHJpeC5zaXplIC0gMTtcbiAgbGV0IHN1bSA9IDA7XG4gIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgICAgc3VtICs9IE1hdGgucG93KG1hdHJpeC5nZXQoaSwgaiksIDIpIC8gZGl2aWRlcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIE1hdGguc3FydChzdW0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NhbGVBbGwobWF0cml4LCBzY2FsZSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgIG1hdHJpeC5zZXQoaSwgaiwgbWF0cml4LmdldChpLCBqKSAvIHNjYWxlKTtcbiAgICB9XG4gIH1cbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpbnN0YWxsTWF0aE9wZXJhdGlvbnMoQWJzdHJhY3RNYXRyaXgsIE1hdHJpeCkge1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLmFkZFModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLmFkZE0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hZGRTID0gZnVuY3Rpb24gYWRkUyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgKyB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hZGRNID0gZnVuY3Rpb24gYWRkTShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICsgbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmFkZCA9IGZ1bmN0aW9uIGFkZChtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguYWRkKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLnN1YlModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLnN1Yk0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zdWJTID0gZnVuY3Rpb24gc3ViUyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgLSB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zdWJNID0gZnVuY3Rpb24gc3ViTShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIC0gbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnN1YiA9IGZ1bmN0aW9uIHN1YihtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguc3ViKHZhbHVlKTtcbiAgfTtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnN1YnRyYWN0ID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnN1YjtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnN1YnRyYWN0UyA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zdWJTO1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3VidHJhY3RNID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnN1Yk07XG4gIEFic3RyYWN0TWF0cml4LnN1YnRyYWN0ID0gQWJzdHJhY3RNYXRyaXguc3ViO1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMubXVsUyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMubXVsTSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm11bFMgPSBmdW5jdGlvbiBtdWxTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAqIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm11bE0gPSBmdW5jdGlvbiBtdWxNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgKiBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgubXVsID0gZnVuY3Rpb24gbXVsKG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5tdWwodmFsdWUpO1xuICB9O1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubXVsdGlwbHkgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubXVsO1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubXVsdGlwbHlTID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm11bFM7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWx0aXBseU0gPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubXVsTTtcbiAgQWJzdHJhY3RNYXRyaXgubXVsdGlwbHkgPSBBYnN0cmFjdE1hdHJpeC5tdWw7XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uIGRpdih2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5kaXZTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5kaXZNKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGl2UyA9IGZ1bmN0aW9uIGRpdlModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIC8gdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGl2TSA9IGZ1bmN0aW9uIGRpdk0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAvIG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5kaXYgPSBmdW5jdGlvbiBkaXYobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmRpdih2YWx1ZSk7XG4gIH07XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXZpZGUgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGl2O1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGl2aWRlUyA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXZTO1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGl2aWRlTSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXZNO1xuICBBYnN0cmFjdE1hdHJpeC5kaXZpZGUgPSBBYnN0cmFjdE1hdHJpeC5kaXY7XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uIG1vZCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5tb2RTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5tb2RNKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kUyA9IGZ1bmN0aW9uIG1vZFModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICUgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kTSA9IGZ1bmN0aW9uIG1vZE0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAlIG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5tb2QgPSBmdW5jdGlvbiBtb2QobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4Lm1vZCh2YWx1ZSk7XG4gIH07XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tb2R1bHVzID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm1vZDtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm1vZHVsdXNTID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm1vZFM7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tb2R1bHVzTSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tb2RNO1xuICBBYnN0cmFjdE1hdHJpeC5tb2R1bHVzID0gQWJzdHJhY3RNYXRyaXgubW9kO1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiBhbmQodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMuYW5kUyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMuYW5kTSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFuZFMgPSBmdW5jdGlvbiBhbmRTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAmIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFuZE0gPSBmdW5jdGlvbiBhbmRNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgJiBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguYW5kID0gZnVuY3Rpb24gYW5kKG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hbmQodmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uIG9yKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLm9yUyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMub3JNKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUub3JTID0gZnVuY3Rpb24gb3JTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSB8IHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm9yTSA9IGZ1bmN0aW9uIG9yTShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIHwgbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4Lm9yID0gZnVuY3Rpb24gb3IobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4Lm9yKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24geG9yKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLnhvclModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLnhvck0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS54b3JTID0gZnVuY3Rpb24geG9yUyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgXiB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS54b3JNID0gZnVuY3Rpb24geG9yTShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIF4gbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnhvciA9IGZ1bmN0aW9uIHhvcihtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgueG9yKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubGVmdFNoaWZ0ID0gZnVuY3Rpb24gbGVmdFNoaWZ0KHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLmxlZnRTaGlmdFModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLmxlZnRTaGlmdE0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5sZWZ0U2hpZnRTID0gZnVuY3Rpb24gbGVmdFNoaWZ0Uyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgPDwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubGVmdFNoaWZ0TSA9IGZ1bmN0aW9uIGxlZnRTaGlmdE0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSA8PCBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgubGVmdFNoaWZ0ID0gZnVuY3Rpb24gbGVmdFNoaWZ0KG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5sZWZ0U2hpZnQodmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0ID0gZnVuY3Rpb24gc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0Uyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMuc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdE0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0UyA9IGZ1bmN0aW9uIHNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSA+PiB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0TSA9IGZ1bmN0aW9uIHNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgPj4gbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnQgPSBmdW5jdGlvbiBzaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0KG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0KHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUucmlnaHRTaGlmdCA9IGZ1bmN0aW9uIHJpZ2h0U2hpZnQodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMucmlnaHRTaGlmdFModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLnJpZ2h0U2hpZnRNKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUucmlnaHRTaGlmdFMgPSBmdW5jdGlvbiByaWdodFNoaWZ0Uyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgPj4+IHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnJpZ2h0U2hpZnRNID0gZnVuY3Rpb24gcmlnaHRTaGlmdE0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSA+Pj4gbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnJpZ2h0U2hpZnQgPSBmdW5jdGlvbiByaWdodFNoaWZ0KG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5yaWdodFNoaWZ0KHZhbHVlKTtcbiAgfTtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnplcm9GaWxsUmlnaHRTaGlmdCA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5yaWdodFNoaWZ0O1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuemVyb0ZpbGxSaWdodFNoaWZ0UyA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5yaWdodFNoaWZ0UztcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnplcm9GaWxsUmlnaHRTaGlmdE0gPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUucmlnaHRTaGlmdE07XG4gIEFic3RyYWN0TWF0cml4Lnplcm9GaWxsUmlnaHRTaGlmdCA9IEFic3RyYWN0TWF0cml4LnJpZ2h0U2hpZnQ7XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm5vdCA9IGZ1bmN0aW9uIG5vdCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIH4odGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgubm90ID0gZnVuY3Rpb24gbm90KG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4Lm5vdCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiBhYnMoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmFicyh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5hYnMgPSBmdW5jdGlvbiBhYnMobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguYWJzKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFjb3MgPSBmdW5jdGlvbiBhY29zKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5hY29zKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmFjb3MgPSBmdW5jdGlvbiBhY29zKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmFjb3MoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYWNvc2ggPSBmdW5jdGlvbiBhY29zaCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguYWNvc2godGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguYWNvc2ggPSBmdW5jdGlvbiBhY29zaChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hY29zaCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hc2luID0gZnVuY3Rpb24gYXNpbigpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguYXNpbih0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5hc2luID0gZnVuY3Rpb24gYXNpbihtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hc2luKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFzaW5oID0gZnVuY3Rpb24gYXNpbmgoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmFzaW5oKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmFzaW5oID0gZnVuY3Rpb24gYXNpbmgobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguYXNpbmgoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYXRhbiA9IGZ1bmN0aW9uIGF0YW4oKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmF0YW4odGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguYXRhbiA9IGZ1bmN0aW9uIGF0YW4obWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguYXRhbigpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hdGFuaCA9IGZ1bmN0aW9uIGF0YW5oKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5hdGFuaCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5hdGFuaCA9IGZ1bmN0aW9uIGF0YW5oKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmF0YW5oKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmNicnQgPSBmdW5jdGlvbiBjYnJ0KCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5jYnJ0KHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmNicnQgPSBmdW5jdGlvbiBjYnJ0KG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmNicnQoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuY2VpbCA9IGZ1bmN0aW9uIGNlaWwoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmNlaWwodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguY2VpbCA9IGZ1bmN0aW9uIGNlaWwobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguY2VpbCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5jbHozMiA9IGZ1bmN0aW9uIGNsejMyKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5jbHozMih0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5jbHozMiA9IGZ1bmN0aW9uIGNsejMyKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmNsejMyKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmNvcyA9IGZ1bmN0aW9uIGNvcygpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguY29zKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmNvcyA9IGZ1bmN0aW9uIGNvcyhtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5jb3MoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuY29zaCA9IGZ1bmN0aW9uIGNvc2goKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmNvc2godGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguY29zaCA9IGZ1bmN0aW9uIGNvc2gobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguY29zaCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5leHAgPSBmdW5jdGlvbiBleHAoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmV4cCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5leHAgPSBmdW5jdGlvbiBleHAobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguZXhwKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmV4cG0xID0gZnVuY3Rpb24gZXhwbTEoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmV4cG0xKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmV4cG0xID0gZnVuY3Rpb24gZXhwbTEobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguZXhwbTEoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZmxvb3IgPSBmdW5jdGlvbiBmbG9vcigpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguZmxvb3IodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguZmxvb3IgPSBmdW5jdGlvbiBmbG9vcihtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5mbG9vcigpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5mcm91bmQgPSBmdW5jdGlvbiBmcm91bmQoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmZyb3VuZCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5mcm91bmQgPSBmdW5jdGlvbiBmcm91bmQobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguZnJvdW5kKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmxvZyA9IGZ1bmN0aW9uIGxvZygpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGgubG9nKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmxvZyA9IGZ1bmN0aW9uIGxvZyhtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5sb2coKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubG9nMXAgPSBmdW5jdGlvbiBsb2cxcCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGgubG9nMXAodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgubG9nMXAgPSBmdW5jdGlvbiBsb2cxcChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5sb2cxcCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5sb2cxMCA9IGZ1bmN0aW9uIGxvZzEwKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5sb2cxMCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5sb2cxMCA9IGZ1bmN0aW9uIGxvZzEwKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmxvZzEwKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmxvZzIgPSBmdW5jdGlvbiBsb2cyKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5sb2cyKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmxvZzIgPSBmdW5jdGlvbiBsb2cyKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmxvZzIoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUucm91bmQgPSBmdW5jdGlvbiByb3VuZCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGgucm91bmQodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucm91bmQgPSBmdW5jdGlvbiByb3VuZChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5yb3VuZCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zaWduID0gZnVuY3Rpb24gc2lnbigpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguc2lnbih0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5zaWduID0gZnVuY3Rpb24gc2lnbihtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5zaWduKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNpbiA9IGZ1bmN0aW9uIHNpbigpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguc2luKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnNpbiA9IGZ1bmN0aW9uIHNpbihtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5zaW4oKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc2luaCA9IGZ1bmN0aW9uIHNpbmgoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLnNpbmgodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguc2luaCA9IGZ1bmN0aW9uIHNpbmgobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguc2luaCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zcXJ0ID0gZnVuY3Rpb24gc3FydCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguc3FydCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5zcXJ0ID0gZnVuY3Rpb24gc3FydChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5zcXJ0KCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnRhbiA9IGZ1bmN0aW9uIHRhbigpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGgudGFuKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnRhbiA9IGZ1bmN0aW9uIHRhbihtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC50YW4oKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUudGFuaCA9IGZ1bmN0aW9uIHRhbmgoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLnRhbmgodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgudGFuaCA9IGZ1bmN0aW9uIHRhbmgobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgudGFuaCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS50cnVuYyA9IGZ1bmN0aW9uIHRydW5jKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC50cnVuYyh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC50cnVuYyA9IGZ1bmN0aW9uIHRydW5jKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnRydW5jKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucG93ID0gZnVuY3Rpb24gcG93KG1hdHJpeCwgYXJnMCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnBvdyhhcmcwKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gcG93KHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLnBvd1ModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLnBvd00odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5wb3dTID0gZnVuY3Rpb24gcG93Uyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5wb3codGhpcy5nZXQoaSwgaiksIHZhbHVlKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5wb3dNID0gZnVuY3Rpb24gcG93TShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGgucG93KHRoaXMuZ2V0KGksIGopLCBtYXRyaXguZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgQWJzdHJhY3RNYXRyaXggfSBmcm9tICcuLi9tYXRyaXgnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXcmFwcGVyTWF0cml4MkQgZXh0ZW5kcyBBYnN0cmFjdE1hdHJpeCB7XG4gIGNvbnN0cnVjdG9yKGRhdGEpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gICAgdGhpcy5yb3dzID0gZGF0YS5sZW5ndGg7XG4gICAgdGhpcy5jb2x1bW5zID0gZGF0YVswXS5sZW5ndGg7XG4gIH1cblxuICBzZXQocm93SW5kZXgsIGNvbHVtbkluZGV4LCB2YWx1ZSkge1xuICAgIHRoaXMuZGF0YVtyb3dJbmRleF1bY29sdW1uSW5kZXhdID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXQocm93SW5kZXgsIGNvbHVtbkluZGV4KSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVtyb3dJbmRleF1bY29sdW1uSW5kZXhdO1xuICB9XG59XG4iLCJpbXBvcnQgTWF0cml4IGZyb20gJy4uL21hdHJpeCc7XG5pbXBvcnQgV3JhcHBlck1hdHJpeDJEIGZyb20gJy4uL3dyYXAvV3JhcHBlck1hdHJpeDJEJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTHVEZWNvbXBvc2l0aW9uIHtcbiAgY29uc3RydWN0b3IobWF0cml4KSB7XG4gICAgbWF0cml4ID0gV3JhcHBlck1hdHJpeDJELmNoZWNrTWF0cml4KG1hdHJpeCk7XG5cbiAgICBsZXQgbHUgPSBtYXRyaXguY2xvbmUoKTtcbiAgICBsZXQgcm93cyA9IGx1LnJvd3M7XG4gICAgbGV0IGNvbHVtbnMgPSBsdS5jb2x1bW5zO1xuICAgIGxldCBwaXZvdFZlY3RvciA9IG5ldyBGbG9hdDY0QXJyYXkocm93cyk7XG4gICAgbGV0IHBpdm90U2lnbiA9IDE7XG4gICAgbGV0IGksIGosIGssIHAsIHMsIHQsIHY7XG4gICAgbGV0IExVY29saiwga21heDtcblxuICAgIGZvciAoaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIHBpdm90VmVjdG9yW2ldID0gaTtcbiAgICB9XG5cbiAgICBMVWNvbGogPSBuZXcgRmxvYXQ2NEFycmF5KHJvd3MpO1xuXG4gICAgZm9yIChqID0gMDsgaiA8IGNvbHVtbnM7IGorKykge1xuICAgICAgZm9yIChpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgICBMVWNvbGpbaV0gPSBsdS5nZXQoaSwgaik7XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgICAga21heCA9IE1hdGgubWluKGksIGopO1xuICAgICAgICBzID0gMDtcbiAgICAgICAgZm9yIChrID0gMDsgayA8IGttYXg7IGsrKykge1xuICAgICAgICAgIHMgKz0gbHUuZ2V0KGksIGspICogTFVjb2xqW2tdO1xuICAgICAgICB9XG4gICAgICAgIExVY29saltpXSAtPSBzO1xuICAgICAgICBsdS5zZXQoaSwgaiwgTFVjb2xqW2ldKTtcbiAgICAgIH1cblxuICAgICAgcCA9IGo7XG4gICAgICBmb3IgKGkgPSBqICsgMTsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgICBpZiAoTWF0aC5hYnMoTFVjb2xqW2ldKSA+IE1hdGguYWJzKExVY29saltwXSkpIHtcbiAgICAgICAgICBwID0gaTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocCAhPT0gaikge1xuICAgICAgICBmb3IgKGsgPSAwOyBrIDwgY29sdW1uczsgaysrKSB7XG4gICAgICAgICAgdCA9IGx1LmdldChwLCBrKTtcbiAgICAgICAgICBsdS5zZXQocCwgaywgbHUuZ2V0KGosIGspKTtcbiAgICAgICAgICBsdS5zZXQoaiwgaywgdCk7XG4gICAgICAgIH1cblxuICAgICAgICB2ID0gcGl2b3RWZWN0b3JbcF07XG4gICAgICAgIHBpdm90VmVjdG9yW3BdID0gcGl2b3RWZWN0b3Jbal07XG4gICAgICAgIHBpdm90VmVjdG9yW2pdID0gdjtcblxuICAgICAgICBwaXZvdFNpZ24gPSAtcGl2b3RTaWduO1xuICAgICAgfVxuXG4gICAgICBpZiAoaiA8IHJvd3MgJiYgbHUuZ2V0KGosIGopICE9PSAwKSB7XG4gICAgICAgIGZvciAoaSA9IGogKyAxOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICAgICAgbHUuc2V0KGksIGosIGx1LmdldChpLCBqKSAvIGx1LmdldChqLCBqKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLkxVID0gbHU7XG4gICAgdGhpcy5waXZvdFZlY3RvciA9IHBpdm90VmVjdG9yO1xuICAgIHRoaXMucGl2b3RTaWduID0gcGl2b3RTaWduO1xuICB9XG5cbiAgaXNTaW5ndWxhcigpIHtcbiAgICBsZXQgZGF0YSA9IHRoaXMuTFU7XG4gICAgbGV0IGNvbCA9IGRhdGEuY29sdW1ucztcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbDsgaisrKSB7XG4gICAgICBpZiAoZGF0YS5nZXQoaiwgaikgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHNvbHZlKHZhbHVlKSB7XG4gICAgdmFsdWUgPSBNYXRyaXguY2hlY2tNYXRyaXgodmFsdWUpO1xuXG4gICAgbGV0IGx1ID0gdGhpcy5MVTtcbiAgICBsZXQgcm93cyA9IGx1LnJvd3M7XG5cbiAgICBpZiAocm93cyAhPT0gdmFsdWUucm93cykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1hdHJpeCBkaW1lbnNpb25zJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzU2luZ3VsYXIoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdMVSBtYXRyaXggaXMgc2luZ3VsYXInKTtcbiAgICB9XG5cbiAgICBsZXQgY291bnQgPSB2YWx1ZS5jb2x1bW5zO1xuICAgIGxldCBYID0gdmFsdWUuc3ViTWF0cml4Um93KHRoaXMucGl2b3RWZWN0b3IsIDAsIGNvdW50IC0gMSk7XG4gICAgbGV0IGNvbHVtbnMgPSBsdS5jb2x1bW5zO1xuICAgIGxldCBpLCBqLCBrO1xuXG4gICAgZm9yIChrID0gMDsgayA8IGNvbHVtbnM7IGsrKykge1xuICAgICAgZm9yIChpID0gayArIDE7IGkgPCBjb2x1bW5zOyBpKyspIHtcbiAgICAgICAgZm9yIChqID0gMDsgaiA8IGNvdW50OyBqKyspIHtcbiAgICAgICAgICBYLnNldChpLCBqLCBYLmdldChpLCBqKSAtIFguZ2V0KGssIGopICogbHUuZ2V0KGksIGspKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGsgPSBjb2x1bW5zIC0gMTsgayA+PSAwOyBrLS0pIHtcbiAgICAgIGZvciAoaiA9IDA7IGogPCBjb3VudDsgaisrKSB7XG4gICAgICAgIFguc2V0KGssIGosIFguZ2V0KGssIGopIC8gbHUuZ2V0KGssIGspKTtcbiAgICAgIH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBrOyBpKyspIHtcbiAgICAgICAgZm9yIChqID0gMDsgaiA8IGNvdW50OyBqKyspIHtcbiAgICAgICAgICBYLnNldChpLCBqLCBYLmdldChpLCBqKSAtIFguZ2V0KGssIGopICogbHUuZ2V0KGksIGspKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gWDtcbiAgfVxuXG4gIGdldCBkZXRlcm1pbmFudCgpIHtcbiAgICBsZXQgZGF0YSA9IHRoaXMuTFU7XG4gICAgaWYgKCFkYXRhLmlzU3F1YXJlKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWF0cml4IG11c3QgYmUgc3F1YXJlJyk7XG4gICAgfVxuICAgIGxldCBkZXRlcm1pbmFudCA9IHRoaXMucGl2b3RTaWduO1xuICAgIGxldCBjb2wgPSBkYXRhLmNvbHVtbnM7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2w7IGorKykge1xuICAgICAgZGV0ZXJtaW5hbnQgKj0gZGF0YS5nZXQoaiwgaik7XG4gICAgfVxuICAgIHJldHVybiBkZXRlcm1pbmFudDtcbiAgfVxuXG4gIGdldCBsb3dlclRyaWFuZ3VsYXJNYXRyaXgoKSB7XG4gICAgbGV0IGRhdGEgPSB0aGlzLkxVO1xuICAgIGxldCByb3dzID0gZGF0YS5yb3dzO1xuICAgIGxldCBjb2x1bW5zID0gZGF0YS5jb2x1bW5zO1xuICAgIGxldCBYID0gbmV3IE1hdHJpeChyb3dzLCBjb2x1bW5zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2x1bW5zOyBqKyspIHtcbiAgICAgICAgaWYgKGkgPiBqKSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgZGF0YS5nZXQoaSwgaikpO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IGopIHtcbiAgICAgICAgICBYLnNldChpLCBqLCAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBYLnNldChpLCBqLCAwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gWDtcbiAgfVxuXG4gIGdldCB1cHBlclRyaWFuZ3VsYXJNYXRyaXgoKSB7XG4gICAgbGV0IGRhdGEgPSB0aGlzLkxVO1xuICAgIGxldCByb3dzID0gZGF0YS5yb3dzO1xuICAgIGxldCBjb2x1bW5zID0gZGF0YS5jb2x1bW5zO1xuICAgIGxldCBYID0gbmV3IE1hdHJpeChyb3dzLCBjb2x1bW5zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2x1bW5zOyBqKyspIHtcbiAgICAgICAgaWYgKGkgPD0gaikge1xuICAgICAgICAgIFguc2V0KGksIGosIGRhdGEuZ2V0KGksIGopKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBYLnNldChpLCBqLCAwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gWDtcbiAgfVxuXG4gIGdldCBwaXZvdFBlcm11dGF0aW9uVmVjdG9yKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucGl2b3RWZWN0b3IpO1xuICB9XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gaHlwb3RlbnVzZShhLCBiKSB7XG4gIGxldCByID0gMDtcbiAgaWYgKE1hdGguYWJzKGEpID4gTWF0aC5hYnMoYikpIHtcbiAgICByID0gYiAvIGE7XG4gICAgcmV0dXJuIE1hdGguYWJzKGEpICogTWF0aC5zcXJ0KDEgKyByICogcik7XG4gIH1cbiAgaWYgKGIgIT09IDApIHtcbiAgICByID0gYSAvIGI7XG4gICAgcmV0dXJuIE1hdGguYWJzKGIpICogTWF0aC5zcXJ0KDEgKyByICogcik7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG4iLCJpbXBvcnQgTWF0cml4IGZyb20gJy4uL21hdHJpeCc7XG5pbXBvcnQgV3JhcHBlck1hdHJpeDJEIGZyb20gJy4uL3dyYXAvV3JhcHBlck1hdHJpeDJEJztcblxuaW1wb3J0IHsgaHlwb3RlbnVzZSB9IGZyb20gJy4vdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFFyRGVjb21wb3NpdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHZhbHVlKSB7XG4gICAgdmFsdWUgPSBXcmFwcGVyTWF0cml4MkQuY2hlY2tNYXRyaXgodmFsdWUpO1xuXG4gICAgbGV0IHFyID0gdmFsdWUuY2xvbmUoKTtcbiAgICBsZXQgbSA9IHZhbHVlLnJvd3M7XG4gICAgbGV0IG4gPSB2YWx1ZS5jb2x1bW5zO1xuICAgIGxldCByZGlhZyA9IG5ldyBGbG9hdDY0QXJyYXkobik7XG4gICAgbGV0IGksIGosIGssIHM7XG5cbiAgICBmb3IgKGsgPSAwOyBrIDwgbjsgaysrKSB7XG4gICAgICBsZXQgbnJtID0gMDtcbiAgICAgIGZvciAoaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgbnJtID0gaHlwb3RlbnVzZShucm0sIHFyLmdldChpLCBrKSk7XG4gICAgICB9XG4gICAgICBpZiAobnJtICE9PSAwKSB7XG4gICAgICAgIGlmIChxci5nZXQoaywgaykgPCAwKSB7XG4gICAgICAgICAgbnJtID0gLW5ybTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgcXIuc2V0KGksIGssIHFyLmdldChpLCBrKSAvIG5ybSk7XG4gICAgICAgIH1cbiAgICAgICAgcXIuc2V0KGssIGssIHFyLmdldChrLCBrKSArIDEpO1xuICAgICAgICBmb3IgKGogPSBrICsgMTsgaiA8IG47IGorKykge1xuICAgICAgICAgIHMgPSAwO1xuICAgICAgICAgIGZvciAoaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIHMgKz0gcXIuZ2V0KGksIGspICogcXIuZ2V0KGksIGopO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzID0gLXMgLyBxci5nZXQoaywgayk7XG4gICAgICAgICAgZm9yIChpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgcXIuc2V0KGksIGosIHFyLmdldChpLCBqKSArIHMgKiBxci5nZXQoaSwgaykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmRpYWdba10gPSAtbnJtO1xuICAgIH1cblxuICAgIHRoaXMuUVIgPSBxcjtcbiAgICB0aGlzLlJkaWFnID0gcmRpYWc7XG4gIH1cblxuICBzb2x2ZSh2YWx1ZSkge1xuICAgIHZhbHVlID0gTWF0cml4LmNoZWNrTWF0cml4KHZhbHVlKTtcblxuICAgIGxldCBxciA9IHRoaXMuUVI7XG4gICAgbGV0IG0gPSBxci5yb3dzO1xuXG4gICAgaWYgKHZhbHVlLnJvd3MgIT09IG0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWF0cml4IHJvdyBkaW1lbnNpb25zIG11c3QgYWdyZWUnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlzRnVsbFJhbmsoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYXRyaXggaXMgcmFuayBkZWZpY2llbnQnKTtcbiAgICB9XG5cbiAgICBsZXQgY291bnQgPSB2YWx1ZS5jb2x1bW5zO1xuICAgIGxldCBYID0gdmFsdWUuY2xvbmUoKTtcbiAgICBsZXQgbiA9IHFyLmNvbHVtbnM7XG4gICAgbGV0IGksIGosIGssIHM7XG5cbiAgICBmb3IgKGsgPSAwOyBrIDwgbjsgaysrKSB7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgY291bnQ7IGorKykge1xuICAgICAgICBzID0gMDtcbiAgICAgICAgZm9yIChpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgIHMgKz0gcXIuZ2V0KGksIGspICogWC5nZXQoaSwgaik7XG4gICAgICAgIH1cbiAgICAgICAgcyA9IC1zIC8gcXIuZ2V0KGssIGspO1xuICAgICAgICBmb3IgKGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgWC5nZXQoaSwgaikgKyBzICogcXIuZ2V0KGksIGspKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGsgPSBuIC0gMTsgayA+PSAwOyBrLS0pIHtcbiAgICAgIGZvciAoaiA9IDA7IGogPCBjb3VudDsgaisrKSB7XG4gICAgICAgIFguc2V0KGssIGosIFguZ2V0KGssIGopIC8gdGhpcy5SZGlhZ1trXSk7XG4gICAgICB9XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgazsgaSsrKSB7XG4gICAgICAgIGZvciAoaiA9IDA7IGogPCBjb3VudDsgaisrKSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgWC5nZXQoaSwgaikgLSBYLmdldChrLCBqKSAqIHFyLmdldChpLCBrKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gWC5zdWJNYXRyaXgoMCwgbiAtIDEsIDAsIGNvdW50IC0gMSk7XG4gIH1cblxuICBpc0Z1bGxSYW5rKCkge1xuICAgIGxldCBjb2x1bW5zID0gdGhpcy5RUi5jb2x1bW5zO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1uczsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5SZGlhZ1tpXSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0IHVwcGVyVHJpYW5ndWxhck1hdHJpeCgpIHtcbiAgICBsZXQgcXIgPSB0aGlzLlFSO1xuICAgIGxldCBuID0gcXIuY29sdW1ucztcbiAgICBsZXQgWCA9IG5ldyBNYXRyaXgobiwgbik7XG4gICAgbGV0IGksIGo7XG4gICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgZm9yIChqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICBpZiAoaSA8IGopIHtcbiAgICAgICAgICBYLnNldChpLCBqLCBxci5nZXQoaSwgaikpO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IGopIHtcbiAgICAgICAgICBYLnNldChpLCBqLCB0aGlzLlJkaWFnW2ldKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBYLnNldChpLCBqLCAwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gWDtcbiAgfVxuXG4gIGdldCBvcnRob2dvbmFsTWF0cml4KCkge1xuICAgIGxldCBxciA9IHRoaXMuUVI7XG4gICAgbGV0IHJvd3MgPSBxci5yb3dzO1xuICAgIGxldCBjb2x1bW5zID0gcXIuY29sdW1ucztcbiAgICBsZXQgWCA9IG5ldyBNYXRyaXgocm93cywgY29sdW1ucyk7XG4gICAgbGV0IGksIGosIGssIHM7XG5cbiAgICBmb3IgKGsgPSBjb2x1bW5zIC0gMTsgayA+PSAwOyBrLS0pIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgICAgWC5zZXQoaSwgaywgMCk7XG4gICAgICB9XG4gICAgICBYLnNldChrLCBrLCAxKTtcbiAgICAgIGZvciAoaiA9IGs7IGogPCBjb2x1bW5zOyBqKyspIHtcbiAgICAgICAgaWYgKHFyLmdldChrLCBrKSAhPT0gMCkge1xuICAgICAgICAgIHMgPSAwO1xuICAgICAgICAgIGZvciAoaSA9IGs7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgICAgICAgIHMgKz0gcXIuZ2V0KGksIGspICogWC5nZXQoaSwgaik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcyA9IC1zIC8gcXIuZ2V0KGssIGspO1xuXG4gICAgICAgICAgZm9yIChpID0gazsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgICAgICAgWC5zZXQoaSwgaiwgWC5nZXQoaSwgaikgKyBzICogcXIuZ2V0KGksIGspKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFg7XG4gIH1cbn1cbiIsImltcG9ydCBNYXRyaXggZnJvbSAnLi4vbWF0cml4JztcbmltcG9ydCBXcmFwcGVyTWF0cml4MkQgZnJvbSAnLi4vd3JhcC9XcmFwcGVyTWF0cml4MkQnO1xuXG5pbXBvcnQgeyBoeXBvdGVudXNlIH0gZnJvbSAnLi91dGlsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2luZ3VsYXJWYWx1ZURlY29tcG9zaXRpb24ge1xuICBjb25zdHJ1Y3Rvcih2YWx1ZSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgdmFsdWUgPSBXcmFwcGVyTWF0cml4MkQuY2hlY2tNYXRyaXgodmFsdWUpO1xuXG4gICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYXRyaXggbXVzdCBiZSBub24tZW1wdHknKTtcbiAgICB9XG5cbiAgICBsZXQgbSA9IHZhbHVlLnJvd3M7XG4gICAgbGV0IG4gPSB2YWx1ZS5jb2x1bW5zO1xuXG4gICAgY29uc3Qge1xuICAgICAgY29tcHV0ZUxlZnRTaW5ndWxhclZlY3RvcnMgPSB0cnVlLFxuICAgICAgY29tcHV0ZVJpZ2h0U2luZ3VsYXJWZWN0b3JzID0gdHJ1ZSxcbiAgICAgIGF1dG9UcmFuc3Bvc2UgPSBmYWxzZSxcbiAgICB9ID0gb3B0aW9ucztcblxuICAgIGxldCB3YW50dSA9IEJvb2xlYW4oY29tcHV0ZUxlZnRTaW5ndWxhclZlY3RvcnMpO1xuICAgIGxldCB3YW50diA9IEJvb2xlYW4oY29tcHV0ZVJpZ2h0U2luZ3VsYXJWZWN0b3JzKTtcblxuICAgIGxldCBzd2FwcGVkID0gZmFsc2U7XG4gICAgbGV0IGE7XG4gICAgaWYgKG0gPCBuKSB7XG4gICAgICBpZiAoIWF1dG9UcmFuc3Bvc2UpIHtcbiAgICAgICAgYSA9IHZhbHVlLmNsb25lKCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnQ29tcHV0aW5nIFNWRCBvbiBhIG1hdHJpeCB3aXRoIG1vcmUgY29sdW1ucyB0aGFuIHJvd3MuIENvbnNpZGVyIGVuYWJsaW5nIGF1dG9UcmFuc3Bvc2UnLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYSA9IHZhbHVlLnRyYW5zcG9zZSgpO1xuICAgICAgICBtID0gYS5yb3dzO1xuICAgICAgICBuID0gYS5jb2x1bW5zO1xuICAgICAgICBzd2FwcGVkID0gdHJ1ZTtcbiAgICAgICAgbGV0IGF1eCA9IHdhbnR1O1xuICAgICAgICB3YW50dSA9IHdhbnR2O1xuICAgICAgICB3YW50diA9IGF1eDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IHZhbHVlLmNsb25lKCk7XG4gICAgfVxuXG4gICAgbGV0IG51ID0gTWF0aC5taW4obSwgbik7XG4gICAgbGV0IG5pID0gTWF0aC5taW4obSArIDEsIG4pO1xuICAgIGxldCBzID0gbmV3IEZsb2F0NjRBcnJheShuaSk7XG4gICAgbGV0IFUgPSBuZXcgTWF0cml4KG0sIG51KTtcbiAgICBsZXQgViA9IG5ldyBNYXRyaXgobiwgbik7XG5cbiAgICBsZXQgZSA9IG5ldyBGbG9hdDY0QXJyYXkobik7XG4gICAgbGV0IHdvcmsgPSBuZXcgRmxvYXQ2NEFycmF5KG0pO1xuXG4gICAgbGV0IHNpID0gbmV3IEZsb2F0NjRBcnJheShuaSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuaTsgaSsrKSBzaVtpXSA9IGk7XG5cbiAgICBsZXQgbmN0ID0gTWF0aC5taW4obSAtIDEsIG4pO1xuICAgIGxldCBucnQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihuIC0gMiwgbSkpO1xuICAgIGxldCBtcmMgPSBNYXRoLm1heChuY3QsIG5ydCk7XG5cbiAgICBmb3IgKGxldCBrID0gMDsgayA8IG1yYzsgaysrKSB7XG4gICAgICBpZiAoayA8IG5jdCkge1xuICAgICAgICBzW2tdID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICBzW2tdID0gaHlwb3RlbnVzZShzW2tdLCBhLmdldChpLCBrKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNba10gIT09IDApIHtcbiAgICAgICAgICBpZiAoYS5nZXQoaywgaykgPCAwKSB7XG4gICAgICAgICAgICBzW2tdID0gLXNba107XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAobGV0IGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICBhLnNldChpLCBrLCBhLmdldChpLCBrKSAvIHNba10pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhLnNldChrLCBrLCBhLmdldChrLCBrKSArIDEpO1xuICAgICAgICB9XG4gICAgICAgIHNba10gPSAtc1trXTtcbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQgaiA9IGsgKyAxOyBqIDwgbjsgaisrKSB7XG4gICAgICAgIGlmIChrIDwgbmN0ICYmIHNba10gIT09IDApIHtcbiAgICAgICAgICBsZXQgdCA9IDA7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIHQgKz0gYS5nZXQoaSwgaykgKiBhLmdldChpLCBqKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdCA9IC10IC8gYS5nZXQoaywgayk7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIGEuc2V0KGksIGosIGEuZ2V0KGksIGopICsgdCAqIGEuZ2V0KGksIGspKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZVtqXSA9IGEuZ2V0KGssIGopO1xuICAgICAgfVxuXG4gICAgICBpZiAod2FudHUgJiYgayA8IG5jdCkge1xuICAgICAgICBmb3IgKGxldCBpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgIFUuc2V0KGksIGssIGEuZ2V0KGksIGspKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoayA8IG5ydCkge1xuICAgICAgICBlW2tdID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IGsgKyAxOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgZVtrXSA9IGh5cG90ZW51c2UoZVtrXSwgZVtpXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVba10gIT09IDApIHtcbiAgICAgICAgICBpZiAoZVtrICsgMV0gPCAwKSB7XG4gICAgICAgICAgICBlW2tdID0gMCAtIGVba107XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAobGV0IGkgPSBrICsgMTsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgZVtpXSAvPSBlW2tdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlW2sgKyAxXSArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGVba10gPSAtZVtrXTtcbiAgICAgICAgaWYgKGsgKyAxIDwgbSAmJiBlW2tdICE9PSAwKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IGsgKyAxOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICB3b3JrW2ldID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChsZXQgaSA9IGsgKyAxOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gayArIDE7IGogPCBuOyBqKyspIHtcbiAgICAgICAgICAgICAgd29ya1tpXSArPSBlW2pdICogYS5nZXQoaSwgaik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAobGV0IGogPSBrICsgMTsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgbGV0IHQgPSAtZVtqXSAvIGVbayArIDFdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGsgKyAxOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICAgIGEuc2V0KGksIGosIGEuZ2V0KGksIGopICsgdCAqIHdvcmtbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAod2FudHYpIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gayArIDE7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIFYuc2V0KGksIGssIGVbaV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBwID0gTWF0aC5taW4obiwgbSArIDEpO1xuICAgIGlmIChuY3QgPCBuKSB7XG4gICAgICBzW25jdF0gPSBhLmdldChuY3QsIG5jdCk7XG4gICAgfVxuICAgIGlmIChtIDwgcCkge1xuICAgICAgc1twIC0gMV0gPSAwO1xuICAgIH1cbiAgICBpZiAobnJ0ICsgMSA8IHApIHtcbiAgICAgIGVbbnJ0XSA9IGEuZ2V0KG5ydCwgcCAtIDEpO1xuICAgIH1cbiAgICBlW3AgLSAxXSA9IDA7XG5cbiAgICBpZiAod2FudHUpIHtcbiAgICAgIGZvciAobGV0IGogPSBuY3Q7IGogPCBudTsgaisrKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgVS5zZXQoaSwgaiwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgVS5zZXQoaiwgaiwgMSk7XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBrID0gbmN0IC0gMTsgayA+PSAwOyBrLS0pIHtcbiAgICAgICAgaWYgKHNba10gIT09IDApIHtcbiAgICAgICAgICBmb3IgKGxldCBqID0gayArIDE7IGogPCBudTsgaisrKSB7XG4gICAgICAgICAgICBsZXQgdCA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgICB0ICs9IFUuZ2V0KGksIGspICogVS5nZXQoaSwgaik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ID0gLXQgLyBVLmdldChrLCBrKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICAgIFUuc2V0KGksIGosIFUuZ2V0KGksIGopICsgdCAqIFUuZ2V0KGksIGspKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChsZXQgaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIFUuc2V0KGksIGssIC1VLmdldChpLCBrKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIFUuc2V0KGssIGssIDEgKyBVLmdldChrLCBrKSk7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICBVLnNldChpLCBrLCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIFUuc2V0KGksIGssIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBVLnNldChrLCBrLCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh3YW50dikge1xuICAgICAgZm9yIChsZXQgayA9IG4gLSAxOyBrID49IDA7IGstLSkge1xuICAgICAgICBpZiAoayA8IG5ydCAmJiBlW2tdICE9PSAwKSB7XG4gICAgICAgICAgZm9yIChsZXQgaiA9IGsgKyAxOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICBsZXQgdCA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gayArIDE7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgICAgdCArPSBWLmdldChpLCBrKSAqIFYuZ2V0KGksIGopO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdCA9IC10IC8gVi5nZXQoayArIDEsIGspO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGsgKyAxOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICAgIFYuc2V0KGksIGosIFYuZ2V0KGksIGopICsgdCAqIFYuZ2V0KGksIGspKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICBWLnNldChpLCBrLCAwKTtcbiAgICAgICAgfVxuICAgICAgICBWLnNldChrLCBrLCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcHAgPSBwIC0gMTtcbiAgICBsZXQgaXRlciA9IDA7XG4gICAgbGV0IGVwcyA9IE51bWJlci5FUFNJTE9OO1xuICAgIHdoaWxlIChwID4gMCkge1xuICAgICAgbGV0IGssIGthc2U7XG4gICAgICBmb3IgKGsgPSBwIC0gMjsgayA+PSAtMTsgay0tKSB7XG4gICAgICAgIGlmIChrID09PSAtMSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFscGhhID1cbiAgICAgICAgICBOdW1iZXIuTUlOX1ZBTFVFICsgZXBzICogTWF0aC5hYnMoc1trXSArIE1hdGguYWJzKHNbayArIDFdKSk7XG4gICAgICAgIGlmIChNYXRoLmFicyhlW2tdKSA8PSBhbHBoYSB8fCBOdW1iZXIuaXNOYU4oZVtrXSkpIHtcbiAgICAgICAgICBlW2tdID0gMDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGsgPT09IHAgLSAyKSB7XG4gICAgICAgIGthc2UgPSA0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGtzO1xuICAgICAgICBmb3IgKGtzID0gcCAtIDE7IGtzID49IGs7IGtzLS0pIHtcbiAgICAgICAgICBpZiAoa3MgPT09IGspIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgdCA9XG4gICAgICAgICAgICAoa3MgIT09IHAgPyBNYXRoLmFicyhlW2tzXSkgOiAwKSArXG4gICAgICAgICAgICAoa3MgIT09IGsgKyAxID8gTWF0aC5hYnMoZVtrcyAtIDFdKSA6IDApO1xuICAgICAgICAgIGlmIChNYXRoLmFicyhzW2tzXSkgPD0gZXBzICogdCkge1xuICAgICAgICAgICAgc1trc10gPSAwO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChrcyA9PT0gaykge1xuICAgICAgICAgIGthc2UgPSAzO1xuICAgICAgICB9IGVsc2UgaWYgKGtzID09PSBwIC0gMSkge1xuICAgICAgICAgIGthc2UgPSAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGthc2UgPSAyO1xuICAgICAgICAgIGsgPSBrcztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBrKys7XG5cbiAgICAgIHN3aXRjaCAoa2FzZSkge1xuICAgICAgICBjYXNlIDE6IHtcbiAgICAgICAgICBsZXQgZiA9IGVbcCAtIDJdO1xuICAgICAgICAgIGVbcCAtIDJdID0gMDtcbiAgICAgICAgICBmb3IgKGxldCBqID0gcCAtIDI7IGogPj0gazsgai0tKSB7XG4gICAgICAgICAgICBsZXQgdCA9IGh5cG90ZW51c2Uoc1tqXSwgZik7XG4gICAgICAgICAgICBsZXQgY3MgPSBzW2pdIC8gdDtcbiAgICAgICAgICAgIGxldCBzbiA9IGYgLyB0O1xuICAgICAgICAgICAgc1tqXSA9IHQ7XG4gICAgICAgICAgICBpZiAoaiAhPT0gaykge1xuICAgICAgICAgICAgICBmID0gLXNuICogZVtqIC0gMV07XG4gICAgICAgICAgICAgIGVbaiAtIDFdID0gY3MgKiBlW2ogLSAxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh3YW50dikge1xuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgICAgIHQgPSBjcyAqIFYuZ2V0KGksIGopICsgc24gKiBWLmdldChpLCBwIC0gMSk7XG4gICAgICAgICAgICAgICAgVi5zZXQoaSwgcCAtIDEsIC1zbiAqIFYuZ2V0KGksIGopICsgY3MgKiBWLmdldChpLCBwIC0gMSkpO1xuICAgICAgICAgICAgICAgIFYuc2V0KGksIGosIHQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMjoge1xuICAgICAgICAgIGxldCBmID0gZVtrIC0gMV07XG4gICAgICAgICAgZVtrIC0gMV0gPSAwO1xuICAgICAgICAgIGZvciAobGV0IGogPSBrOyBqIDwgcDsgaisrKSB7XG4gICAgICAgICAgICBsZXQgdCA9IGh5cG90ZW51c2Uoc1tqXSwgZik7XG4gICAgICAgICAgICBsZXQgY3MgPSBzW2pdIC8gdDtcbiAgICAgICAgICAgIGxldCBzbiA9IGYgLyB0O1xuICAgICAgICAgICAgc1tqXSA9IHQ7XG4gICAgICAgICAgICBmID0gLXNuICogZVtqXTtcbiAgICAgICAgICAgIGVbal0gPSBjcyAqIGVbal07XG4gICAgICAgICAgICBpZiAod2FudHUpIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0ID0gY3MgKiBVLmdldChpLCBqKSArIHNuICogVS5nZXQoaSwgayAtIDEpO1xuICAgICAgICAgICAgICAgIFUuc2V0KGksIGsgLSAxLCAtc24gKiBVLmdldChpLCBqKSArIGNzICogVS5nZXQoaSwgayAtIDEpKTtcbiAgICAgICAgICAgICAgICBVLnNldChpLCBqLCB0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDM6IHtcbiAgICAgICAgICBjb25zdCBzY2FsZSA9IE1hdGgubWF4KFxuICAgICAgICAgICAgTWF0aC5hYnMoc1twIC0gMV0pLFxuICAgICAgICAgICAgTWF0aC5hYnMoc1twIC0gMl0pLFxuICAgICAgICAgICAgTWF0aC5hYnMoZVtwIC0gMl0pLFxuICAgICAgICAgICAgTWF0aC5hYnMoc1trXSksXG4gICAgICAgICAgICBNYXRoLmFicyhlW2tdKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IHNwID0gc1twIC0gMV0gLyBzY2FsZTtcbiAgICAgICAgICBjb25zdCBzcG0xID0gc1twIC0gMl0gLyBzY2FsZTtcbiAgICAgICAgICBjb25zdCBlcG0xID0gZVtwIC0gMl0gLyBzY2FsZTtcbiAgICAgICAgICBjb25zdCBzayA9IHNba10gLyBzY2FsZTtcbiAgICAgICAgICBjb25zdCBlayA9IGVba10gLyBzY2FsZTtcbiAgICAgICAgICBjb25zdCBiID0gKChzcG0xICsgc3ApICogKHNwbTEgLSBzcCkgKyBlcG0xICogZXBtMSkgLyAyO1xuICAgICAgICAgIGNvbnN0IGMgPSBzcCAqIGVwbTEgKiAoc3AgKiBlcG0xKTtcbiAgICAgICAgICBsZXQgc2hpZnQgPSAwO1xuICAgICAgICAgIGlmIChiICE9PSAwIHx8IGMgIT09IDApIHtcbiAgICAgICAgICAgIGlmIChiIDwgMCkge1xuICAgICAgICAgICAgICBzaGlmdCA9IDAgLSBNYXRoLnNxcnQoYiAqIGIgKyBjKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNoaWZ0ID0gTWF0aC5zcXJ0KGIgKiBiICsgYyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzaGlmdCA9IGMgLyAoYiArIHNoaWZ0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IGYgPSAoc2sgKyBzcCkgKiAoc2sgLSBzcCkgKyBzaGlmdDtcbiAgICAgICAgICBsZXQgZyA9IHNrICogZWs7XG4gICAgICAgICAgZm9yIChsZXQgaiA9IGs7IGogPCBwIC0gMTsgaisrKSB7XG4gICAgICAgICAgICBsZXQgdCA9IGh5cG90ZW51c2UoZiwgZyk7XG4gICAgICAgICAgICBpZiAodCA9PT0gMCkgdCA9IE51bWJlci5NSU5fVkFMVUU7XG4gICAgICAgICAgICBsZXQgY3MgPSBmIC8gdDtcbiAgICAgICAgICAgIGxldCBzbiA9IGcgLyB0O1xuICAgICAgICAgICAgaWYgKGogIT09IGspIHtcbiAgICAgICAgICAgICAgZVtqIC0gMV0gPSB0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZiA9IGNzICogc1tqXSArIHNuICogZVtqXTtcbiAgICAgICAgICAgIGVbal0gPSBjcyAqIGVbal0gLSBzbiAqIHNbal07XG4gICAgICAgICAgICBnID0gc24gKiBzW2ogKyAxXTtcbiAgICAgICAgICAgIHNbaiArIDFdID0gY3MgKiBzW2ogKyAxXTtcbiAgICAgICAgICAgIGlmICh3YW50dikge1xuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgICAgIHQgPSBjcyAqIFYuZ2V0KGksIGopICsgc24gKiBWLmdldChpLCBqICsgMSk7XG4gICAgICAgICAgICAgICAgVi5zZXQoaSwgaiArIDEsIC1zbiAqIFYuZ2V0KGksIGopICsgY3MgKiBWLmdldChpLCBqICsgMSkpO1xuICAgICAgICAgICAgICAgIFYuc2V0KGksIGosIHQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ID0gaHlwb3RlbnVzZShmLCBnKTtcbiAgICAgICAgICAgIGlmICh0ID09PSAwKSB0ID0gTnVtYmVyLk1JTl9WQUxVRTtcbiAgICAgICAgICAgIGNzID0gZiAvIHQ7XG4gICAgICAgICAgICBzbiA9IGcgLyB0O1xuICAgICAgICAgICAgc1tqXSA9IHQ7XG4gICAgICAgICAgICBmID0gY3MgKiBlW2pdICsgc24gKiBzW2ogKyAxXTtcbiAgICAgICAgICAgIHNbaiArIDFdID0gLXNuICogZVtqXSArIGNzICogc1tqICsgMV07XG4gICAgICAgICAgICBnID0gc24gKiBlW2ogKyAxXTtcbiAgICAgICAgICAgIGVbaiArIDFdID0gY3MgKiBlW2ogKyAxXTtcbiAgICAgICAgICAgIGlmICh3YW50dSAmJiBqIDwgbSAtIDEpIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0ID0gY3MgKiBVLmdldChpLCBqKSArIHNuICogVS5nZXQoaSwgaiArIDEpO1xuICAgICAgICAgICAgICAgIFUuc2V0KGksIGogKyAxLCAtc24gKiBVLmdldChpLCBqKSArIGNzICogVS5nZXQoaSwgaiArIDEpKTtcbiAgICAgICAgICAgICAgICBVLnNldChpLCBqLCB0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBlW3AgLSAyXSA9IGY7XG4gICAgICAgICAgaXRlciA9IGl0ZXIgKyAxO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgNDoge1xuICAgICAgICAgIGlmIChzW2tdIDw9IDApIHtcbiAgICAgICAgICAgIHNba10gPSBzW2tdIDwgMCA/IC1zW2tdIDogMDtcbiAgICAgICAgICAgIGlmICh3YW50dikge1xuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBwcDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgVi5zZXQoaSwgaywgLVYuZ2V0KGksIGspKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB3aGlsZSAoayA8IHBwKSB7XG4gICAgICAgICAgICBpZiAoc1trXSA+PSBzW2sgKyAxXSkge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB0ID0gc1trXTtcbiAgICAgICAgICAgIHNba10gPSBzW2sgKyAxXTtcbiAgICAgICAgICAgIHNbayArIDFdID0gdDtcbiAgICAgICAgICAgIGlmICh3YW50diAmJiBrIDwgbiAtIDEpIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0ID0gVi5nZXQoaSwgayArIDEpO1xuICAgICAgICAgICAgICAgIFYuc2V0KGksIGsgKyAxLCBWLmdldChpLCBrKSk7XG4gICAgICAgICAgICAgICAgVi5zZXQoaSwgaywgdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh3YW50dSAmJiBrIDwgbSAtIDEpIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0ID0gVS5nZXQoaSwgayArIDEpO1xuICAgICAgICAgICAgICAgIFUuc2V0KGksIGsgKyAxLCBVLmdldChpLCBrKSk7XG4gICAgICAgICAgICAgICAgVS5zZXQoaSwgaywgdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGsrKztcbiAgICAgICAgICB9XG4gICAgICAgICAgaXRlciA9IDA7XG4gICAgICAgICAgcC0tO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIG5vIGRlZmF1bHRcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3dhcHBlZCkge1xuICAgICAgbGV0IHRtcCA9IFY7XG4gICAgICBWID0gVTtcbiAgICAgIFUgPSB0bXA7XG4gICAgfVxuXG4gICAgdGhpcy5tID0gbTtcbiAgICB0aGlzLm4gPSBuO1xuICAgIHRoaXMucyA9IHM7XG4gICAgdGhpcy5VID0gVTtcbiAgICB0aGlzLlYgPSBWO1xuICB9XG5cbiAgc29sdmUodmFsdWUpIHtcbiAgICBsZXQgWSA9IHZhbHVlO1xuICAgIGxldCBlID0gdGhpcy50aHJlc2hvbGQ7XG4gICAgbGV0IHNjb2xzID0gdGhpcy5zLmxlbmd0aDtcbiAgICBsZXQgTHMgPSBNYXRyaXguemVyb3Moc2NvbHMsIHNjb2xzKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2NvbHM7IGkrKykge1xuICAgICAgaWYgKE1hdGguYWJzKHRoaXMuc1tpXSkgPD0gZSkge1xuICAgICAgICBMcy5zZXQoaSwgaSwgMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBMcy5zZXQoaSwgaSwgMSAvIHRoaXMuc1tpXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IFUgPSB0aGlzLlU7XG4gICAgbGV0IFYgPSB0aGlzLnJpZ2h0U2luZ3VsYXJWZWN0b3JzO1xuXG4gICAgbGV0IFZMID0gVi5tbXVsKExzKTtcbiAgICBsZXQgdnJvd3MgPSBWLnJvd3M7XG4gICAgbGV0IHVyb3dzID0gVS5yb3dzO1xuICAgIGxldCBWTFUgPSBNYXRyaXguemVyb3ModnJvd3MsIHVyb3dzKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB1cm93czsgaisrKSB7XG4gICAgICAgIGxldCBzdW0gPSAwO1xuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IHNjb2xzOyBrKyspIHtcbiAgICAgICAgICBzdW0gKz0gVkwuZ2V0KGksIGspICogVS5nZXQoaiwgayk7XG4gICAgICAgIH1cbiAgICAgICAgVkxVLnNldChpLCBqLCBzdW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBWTFUubW11bChZKTtcbiAgfVxuXG4gIHNvbHZlRm9yRGlhZ29uYWwodmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy5zb2x2ZShNYXRyaXguZGlhZyh2YWx1ZSkpO1xuICB9XG5cbiAgaW52ZXJzZSgpIHtcbiAgICBsZXQgViA9IHRoaXMuVjtcbiAgICBsZXQgZSA9IHRoaXMudGhyZXNob2xkO1xuICAgIGxldCB2cm93cyA9IFYucm93cztcbiAgICBsZXQgdmNvbHMgPSBWLmNvbHVtbnM7XG4gICAgbGV0IFggPSBuZXcgTWF0cml4KHZyb3dzLCB0aGlzLnMubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB2Y29sczsgaisrKSB7XG4gICAgICAgIGlmIChNYXRoLmFicyh0aGlzLnNbal0pID4gZSkge1xuICAgICAgICAgIFguc2V0KGksIGosIFYuZ2V0KGksIGopIC8gdGhpcy5zW2pdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBVID0gdGhpcy5VO1xuXG4gICAgbGV0IHVyb3dzID0gVS5yb3dzO1xuICAgIGxldCB1Y29scyA9IFUuY29sdW1ucztcbiAgICBsZXQgWSA9IG5ldyBNYXRyaXgodnJvd3MsIHVyb3dzKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB1cm93czsgaisrKSB7XG4gICAgICAgIGxldCBzdW0gPSAwO1xuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IHVjb2xzOyBrKyspIHtcbiAgICAgICAgICBzdW0gKz0gWC5nZXQoaSwgaykgKiBVLmdldChqLCBrKTtcbiAgICAgICAgfVxuICAgICAgICBZLnNldChpLCBqLCBzdW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBZO1xuICB9XG5cbiAgZ2V0IGNvbmRpdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zWzBdIC8gdGhpcy5zW01hdGgubWluKHRoaXMubSwgdGhpcy5uKSAtIDFdO1xuICB9XG5cbiAgZ2V0IG5vcm0yKCkge1xuICAgIHJldHVybiB0aGlzLnNbMF07XG4gIH1cblxuICBnZXQgcmFuaygpIHtcbiAgICBsZXQgdG9sID0gTWF0aC5tYXgodGhpcy5tLCB0aGlzLm4pICogdGhpcy5zWzBdICogTnVtYmVyLkVQU0lMT047XG4gICAgbGV0IHIgPSAwO1xuICAgIGxldCBzID0gdGhpcy5zO1xuICAgIGZvciAobGV0IGkgPSAwLCBpaSA9IHMubGVuZ3RoOyBpIDwgaWk7IGkrKykge1xuICAgICAgaWYgKHNbaV0gPiB0b2wpIHtcbiAgICAgICAgcisrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIGdldCBkaWFnb25hbCgpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnMpO1xuICB9XG5cbiAgZ2V0IHRocmVzaG9sZCgpIHtcbiAgICByZXR1cm4gKE51bWJlci5FUFNJTE9OIC8gMikgKiBNYXRoLm1heCh0aGlzLm0sIHRoaXMubikgKiB0aGlzLnNbMF07XG4gIH1cblxuICBnZXQgbGVmdFNpbmd1bGFyVmVjdG9ycygpIHtcbiAgICByZXR1cm4gdGhpcy5VO1xuICB9XG5cbiAgZ2V0IHJpZ2h0U2luZ3VsYXJWZWN0b3JzKCkge1xuICAgIHJldHVybiB0aGlzLlY7XG4gIH1cblxuICBnZXQgZGlhZ29uYWxNYXRyaXgoKSB7XG4gICAgcmV0dXJuIE1hdHJpeC5kaWFnKHRoaXMucyk7XG4gIH1cbn1cbiIsImltcG9ydCB7IGludmVyc2UsIE1hdHJpeCB9IGZyb20gJ21sLW1hdHJpeCc7XG5cbi8qKlxuICogRGlmZmVyZW5jZSBvZiB0aGUgbWF0cml4IGZ1bmN0aW9uIG92ZXIgdGhlIHBhcmFtZXRlcnNcbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSB7e3g6QXJyYXk8bnVtYmVyPiwgeTpBcnJheTxudW1iZXI+fX0gZGF0YSAtIEFycmF5IG9mIHBvaW50cyB0byBmaXQgaW4gdGhlIGZvcm1hdCBbeDEsIHgyLCAuLi4gXSwgW3kxLCB5MiwgLi4uIF1cbiAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gZXZhbHVhdGVkRGF0YSAtIEFycmF5IG9mIHByZXZpb3VzIGV2YWx1YXRlZCBmdW5jdGlvbiB2YWx1ZXNcbiAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcGFyYW1zIC0gQXJyYXkgb2YgcHJldmlvdXMgcGFyYW1ldGVyIHZhbHVlc1xuICogQHBhcmFtIHtudW1iZXJ9IGdyYWRpZW50RGlmZmVyZW5jZSAtIEFkanVzdG1lbnQgZm9yIGRlY3JlYXNlIHRoZSBkYW1waW5nIHBhcmFtZXRlclxuICogQHBhcmFtIHtmdW5jdGlvbn0gcGFyYW1GdW5jdGlvbiAtIFRoZSBwYXJhbWV0ZXJzIGFuZCByZXR1cm5zIGEgZnVuY3Rpb24gd2l0aCB0aGUgaW5kZXBlbmRlbnQgdmFyaWFibGUgYXMgYSBwYXJhbWV0ZXJcbiAqIEByZXR1cm4ge01hdHJpeH1cbiAqL1xuZnVuY3Rpb24gZ3JhZGllbnRGdW5jdGlvbihcbiAgZGF0YSxcbiAgZXZhbHVhdGVkRGF0YSxcbiAgcGFyYW1zLFxuICBncmFkaWVudERpZmZlcmVuY2UsXG4gIHBhcmFtRnVuY3Rpb24sXG4pIHtcbiAgY29uc3QgbiA9IHBhcmFtcy5sZW5ndGg7XG4gIGNvbnN0IG0gPSBkYXRhLngubGVuZ3RoO1xuXG4gIGxldCBhbnMgPSBuZXcgQXJyYXkobik7XG5cbiAgZm9yIChsZXQgcGFyYW0gPSAwOyBwYXJhbSA8IG47IHBhcmFtKyspIHtcbiAgICBhbnNbcGFyYW1dID0gbmV3IEFycmF5KG0pO1xuICAgIGxldCBhdXhQYXJhbXMgPSBwYXJhbXMuc2xpY2UoKTtcbiAgICBhdXhQYXJhbXNbcGFyYW1dICs9IGdyYWRpZW50RGlmZmVyZW5jZTtcbiAgICBsZXQgZnVuY1BhcmFtID0gcGFyYW1GdW5jdGlvbihhdXhQYXJhbXMpO1xuXG4gICAgZm9yIChsZXQgcG9pbnQgPSAwOyBwb2ludCA8IG07IHBvaW50KyspIHtcbiAgICAgIGFuc1twYXJhbV1bcG9pbnRdID0gZXZhbHVhdGVkRGF0YVtwb2ludF0gLSBmdW5jUGFyYW0oZGF0YS54W3BvaW50XSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBuZXcgTWF0cml4KGFucyk7XG59XG5cbi8qKlxuICogTWF0cml4IGZ1bmN0aW9uIG92ZXIgdGhlIHNhbXBsZXNcbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSB7e3g6QXJyYXk8bnVtYmVyPiwgeTpBcnJheTxudW1iZXI+fX0gZGF0YSAtIEFycmF5IG9mIHBvaW50cyB0byBmaXQgaW4gdGhlIGZvcm1hdCBbeDEsIHgyLCAuLi4gXSwgW3kxLCB5MiwgLi4uIF1cbiAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gZXZhbHVhdGVkRGF0YSAtIEFycmF5IG9mIHByZXZpb3VzIGV2YWx1YXRlZCBmdW5jdGlvbiB2YWx1ZXNcbiAqIEByZXR1cm4ge01hdHJpeH1cbiAqL1xuZnVuY3Rpb24gbWF0cml4RnVuY3Rpb24oZGF0YSwgZXZhbHVhdGVkRGF0YSkge1xuICBjb25zdCBtID0gZGF0YS54Lmxlbmd0aDtcblxuICBsZXQgYW5zID0gbmV3IEFycmF5KG0pO1xuXG4gIGZvciAobGV0IHBvaW50ID0gMDsgcG9pbnQgPCBtOyBwb2ludCsrKSB7XG4gICAgYW5zW3BvaW50XSA9IFtkYXRhLnlbcG9pbnRdIC0gZXZhbHVhdGVkRGF0YVtwb2ludF1dO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBNYXRyaXgoYW5zKTtcbn1cblxuLyoqXG4gKiBJdGVyYXRpb24gZm9yIExldmVuYmVyZy1NYXJxdWFyZHRcbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSB7e3g6QXJyYXk8bnVtYmVyPiwgeTpBcnJheTxudW1iZXI+fX0gZGF0YSAtIEFycmF5IG9mIHBvaW50cyB0byBmaXQgaW4gdGhlIGZvcm1hdCBbeDEsIHgyLCAuLi4gXSwgW3kxLCB5MiwgLi4uIF1cbiAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcGFyYW1zIC0gQXJyYXkgb2YgcHJldmlvdXMgcGFyYW1ldGVyIHZhbHVlc1xuICogQHBhcmFtIHtudW1iZXJ9IGRhbXBpbmcgLSBMZXZlbmJlcmctTWFycXVhcmR0IHBhcmFtZXRlclxuICogQHBhcmFtIHtudW1iZXJ9IGdyYWRpZW50RGlmZmVyZW5jZSAtIEFkanVzdG1lbnQgZm9yIGRlY3JlYXNlIHRoZSBkYW1waW5nIHBhcmFtZXRlclxuICogQHBhcmFtIHtmdW5jdGlvbn0gcGFyYW1ldGVyaXplZEZ1bmN0aW9uIC0gVGhlIHBhcmFtZXRlcnMgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB3aXRoIHRoZSBpbmRlcGVuZGVudCB2YXJpYWJsZSBhcyBhIHBhcmFtZXRlclxuICogQHJldHVybiB7QXJyYXk8bnVtYmVyPn1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RlcChcbiAgZGF0YSxcbiAgcGFyYW1zLFxuICBkYW1waW5nLFxuICBncmFkaWVudERpZmZlcmVuY2UsXG4gIHBhcmFtZXRlcml6ZWRGdW5jdGlvbixcbikge1xuICBsZXQgdmFsdWUgPSBkYW1waW5nICogZ3JhZGllbnREaWZmZXJlbmNlICogZ3JhZGllbnREaWZmZXJlbmNlO1xuICBsZXQgaWRlbnRpdHkgPSBNYXRyaXguZXllKHBhcmFtcy5sZW5ndGgsIHBhcmFtcy5sZW5ndGgsIHZhbHVlKTtcblxuICBjb25zdCBmdW5jID0gcGFyYW1ldGVyaXplZEZ1bmN0aW9uKHBhcmFtcyk7XG5cbiAgbGV0IGV2YWx1YXRlZERhdGEgPSBuZXcgRmxvYXQ2NEFycmF5KGRhdGEueC5sZW5ndGgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEueC5sZW5ndGg7IGkrKykge1xuICAgIGV2YWx1YXRlZERhdGFbaV0gPSBmdW5jKGRhdGEueFtpXSk7XG4gIH1cblxuICBsZXQgZ3JhZGllbnRGdW5jID0gZ3JhZGllbnRGdW5jdGlvbihcbiAgICBkYXRhLFxuICAgIGV2YWx1YXRlZERhdGEsXG4gICAgcGFyYW1zLFxuICAgIGdyYWRpZW50RGlmZmVyZW5jZSxcbiAgICBwYXJhbWV0ZXJpemVkRnVuY3Rpb24sXG4gICk7XG4gIGxldCBtYXRyaXhGdW5jID0gbWF0cml4RnVuY3Rpb24oZGF0YSwgZXZhbHVhdGVkRGF0YSk7XG4gIGxldCBpbnZlcnNlTWF0cml4ID0gaW52ZXJzZShcbiAgICBpZGVudGl0eS5hZGQoZ3JhZGllbnRGdW5jLm1tdWwoZ3JhZGllbnRGdW5jLnRyYW5zcG9zZSgpKSksXG4gICk7XG5cbiAgcGFyYW1zID0gbmV3IE1hdHJpeChbcGFyYW1zXSk7XG4gIHBhcmFtcyA9IHBhcmFtcy5zdWIoXG4gICAgaW52ZXJzZU1hdHJpeFxuICAgICAgLm1tdWwoZ3JhZGllbnRGdW5jKVxuICAgICAgLm1tdWwobWF0cml4RnVuYylcbiAgICAgIC5tdWwoZ3JhZGllbnREaWZmZXJlbmNlKVxuICAgICAgLnRyYW5zcG9zZSgpLFxuICApO1xuXG4gIHJldHVybiBwYXJhbXMudG8xREFycmF5KCk7XG59XG4iLCJpbXBvcnQgTHVEZWNvbXBvc2l0aW9uIGZyb20gJy4vZGMvbHUnO1xuaW1wb3J0IFFyRGVjb21wb3NpdGlvbiBmcm9tICcuL2RjL3FyJztcbmltcG9ydCBTaW5ndWxhclZhbHVlRGVjb21wb3NpdGlvbiBmcm9tICcuL2RjL3N2ZCc7XG5pbXBvcnQgTWF0cml4IGZyb20gJy4vbWF0cml4JztcbmltcG9ydCBXcmFwcGVyTWF0cml4MkQgZnJvbSAnLi93cmFwL1dyYXBwZXJNYXRyaXgyRCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZlcnNlKG1hdHJpeCwgdXNlU1ZEID0gZmFsc2UpIHtcbiAgbWF0cml4ID0gV3JhcHBlck1hdHJpeDJELmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gIGlmICh1c2VTVkQpIHtcbiAgICByZXR1cm4gbmV3IFNpbmd1bGFyVmFsdWVEZWNvbXBvc2l0aW9uKG1hdHJpeCkuaW52ZXJzZSgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzb2x2ZShtYXRyaXgsIE1hdHJpeC5leWUobWF0cml4LnJvd3MpKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc29sdmUobGVmdEhhbmRTaWRlLCByaWdodEhhbmRTaWRlLCB1c2VTVkQgPSBmYWxzZSkge1xuICBsZWZ0SGFuZFNpZGUgPSBXcmFwcGVyTWF0cml4MkQuY2hlY2tNYXRyaXgobGVmdEhhbmRTaWRlKTtcbiAgcmlnaHRIYW5kU2lkZSA9IFdyYXBwZXJNYXRyaXgyRC5jaGVja01hdHJpeChyaWdodEhhbmRTaWRlKTtcbiAgaWYgKHVzZVNWRCkge1xuICAgIHJldHVybiBuZXcgU2luZ3VsYXJWYWx1ZURlY29tcG9zaXRpb24obGVmdEhhbmRTaWRlKS5zb2x2ZShyaWdodEhhbmRTaWRlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbGVmdEhhbmRTaWRlLmlzU3F1YXJlKClcbiAgICAgID8gbmV3IEx1RGVjb21wb3NpdGlvbihsZWZ0SGFuZFNpZGUpLnNvbHZlKHJpZ2h0SGFuZFNpZGUpXG4gICAgICA6IG5ldyBRckRlY29tcG9zaXRpb24obGVmdEhhbmRTaWRlKS5zb2x2ZShyaWdodEhhbmRTaWRlKTtcbiAgfVxufVxuIiwiLyoqXG4gKiBAbGljZW5zZVxuICpcbiAqIENvcHlyaWdodCAyMDE5IEdvb2dsZSBMTEMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKi9cbi8qKlxuICogVGhpcyBpcyBhIEphdmFTY3JpcHQgcmVpbXBsZW1lbnRhdGlvbiBvZiBVTUFQIChvcmlnaW5hbCBsaWNlbnNlIGJlbG93KSwgZnJvbVxuICogdGhlIHB5dGhvbiBpbXBsZW1lbnRhdGlvbiBmb3VuZCBhdCBodHRwczovL2dpdGh1Yi5jb20vbG1jaW5uZXMvdW1hcC5cbiAqXG4gKiBAYXV0aG9yIGFuZHljb2VuZW5AZ29vZ2xlLmNvbSAoQW5keSBDb2VuZW4pXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIEJTRCAzLUNsYXVzZSBMaWNlbnNlXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE3LCBMZWxhbmQgTWNJbm5lc1xuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuICpcbiAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzXG4gKiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICpcbiAqICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLFxuICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uXG4gKiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICpcbiAqICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbVxuICogICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBUyBJU1wiXG4gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFXG4gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEVcbiAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUlxuICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVJcbiAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksXG4gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRVxuICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqL1xuaW1wb3J0ICogYXMgaGVhcCBmcm9tICcuL2hlYXAnO1xuaW1wb3J0ICogYXMgbWF0cml4IGZyb20gJy4vbWF0cml4JztcbmltcG9ydCAqIGFzIG5uRGVzY2VudCBmcm9tICcuL25uX2Rlc2NlbnQnO1xuaW1wb3J0ICogYXMgdHJlZSBmcm9tICcuL3RyZWUnO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgTE0gZnJvbSAnbWwtbGV2ZW5iZXJnLW1hcnF1YXJkdCc7XG5jb25zdCBTTU9PVEhfS19UT0xFUkFOQ0UgPSAxZS01O1xuY29uc3QgTUlOX0tfRElTVF9TQ0FMRSA9IDFlLTM7XG4vKipcbiAqIFVNQVAgcHJvamVjdGlvbiBzeXN0ZW0sIGJhc2VkIG9uIHRoZSBweXRob24gaW1wbGVtZW50YXRpb24gZnJvbSBNY0lubmVzLCBMLFxuICogSGVhbHksIEosIFVNQVA6IFVuaWZvcm0gTWFuaWZvbGQgQXBwcm94aW1hdGlvbiBhbmQgUHJvamVjdGlvbiBmb3IgRGltZW5zaW9uXG4gKiBSZWR1Y3Rpb24gKGh0dHBzOi8vZ2l0aHViLmNvbS9sbWNpbm5lcy91bWFwKS5cbiAqXG4gKiBUaGlzIGltcGxlbWVudGF0aW9uIGRpZmZlcnMgaW4gYSBmZXcgcmVnYXJkczpcbiAqIGEpIFRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgZW1iZWRkaW5nIGZvciBvcHRpbWl6YXRpb24gaXMgbm90IGNvbXB1dGVkIHVzaW5nXG4gKiAgICBhIHNwZWN0cmFsIG1ldGhvZCwgcmF0aGVyIGl0IGlzIGluaXRpYWxpemVkIHJhbmRvbWx5LiBUaGlzIGF2b2lkcyBzb21lXG4gKiAgICBjb21wdXRhdGlvbmFsbHkgaW50ZW5zaXZlIG1hdHJpeCBlaWdlbiBjb21wdXRhdGlvbnMgdGhhdCBhcmVuJ3QgZWFzaWx5XG4gKiAgICBwb3J0ZWQgdG8gSmF2YVNjcmlwdC5cbiAqIGIpIEEgbG90IG9mIFwiZXh0cmFcIiBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIG9taXR0ZWQgZnJvbSB0aGlzIGltcGxlbWVudGF0aW9uLFxuICogICAgbW9zdCBub3RhYmx5IGEgZ3JlYXQgZGVhbCBvZiBhbHRlcm5hdGUgZGlzdGFuY2UgZnVuY3Rpb25zLlxuICpcbiAqIFRoaXMgaW1wbGVtZW50YXRpb24gcHJvdmlkZXMgdGhyZWUgbWV0aG9kcyBvZiByZWR1Y2luZyBkaW1lbnNpb25hbGl0eTpcbiAqIDEpIGZpdDogZml0IHRoZSBkYXRhIHN5bmNocm9ub3VzbHlcbiAqIDIpIGZpdEFzeW5jOiBmaXQgdGhlIGRhdGEgYXN5bmNocm9ub3VzbHksIHdpdGggYSBjYWxsYmFjayBmdW5jdGlvbiBwcm92aWRlZFxuICogICAgICB0aGF0IGlzIGludm9rZWQgb24gZWFjaCBvcHRpbWl6YXRpb24gc3RlcC5cbiAqIDMpIGluaXRpYWxpemVGaXQgLyBzdGVwOiBtYW51YWxseSBpbml0aWFsaXplIHRoZSBhbGdvcml0aG0gdGhlbiBleHBsaWN0bHlcbiAqICAgICAgc3RlcCB0aHJvdWdoIGVhY2ggZXBvY2ggb2YgdGhlIFNHRCBvcHRpbWl6YXRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIFVNQVAge1xuICAgIGdldCBuZWlnaGJvcnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5OZWlnaGJvcnM7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHBhcmFtcyA9IHt9KSB7XG4gICAgICAgIHRoaXMubGVhcm5pbmdSYXRlID0gMS4wO1xuICAgICAgICB0aGlzLmxvY2FsQ29ubmVjdGl2aXR5ID0gMS4wO1xuICAgICAgICB0aGlzLm1pbkRpc3QgPSAwLjE7XG4gICAgICAgIHRoaXMubkNvbXBvbmVudHMgPSAyO1xuICAgICAgICB0aGlzLm5FcG9jaHMgPSAwO1xuICAgICAgICB0aGlzLm5OZWlnaGJvcnMgPSAxNTtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZVNhbXBsZVJhdGUgPSA1O1xuICAgICAgICB0aGlzLnJhbmRvbSA9IE1hdGgucmFuZG9tO1xuICAgICAgICB0aGlzLnJlcHVsc2lvblN0cmVuZ3RoID0gMS4wO1xuICAgICAgICB0aGlzLnNldE9wTWl4UmF0aW8gPSAxLjA7XG4gICAgICAgIHRoaXMuc3ByZWFkID0gMS4wO1xuICAgICAgICB0aGlzLnRyYW5zZm9ybVF1ZXVlU2l6ZSA9IDQuMDtcbiAgICAgICAgLy8gU3VwZXJ2aXNlZCBwcm9qZWN0aW9uIHBhcmFtc1xuICAgICAgICB0aGlzLnRhcmdldE1ldHJpYyA9IFwiY2F0ZWdvcmljYWxcIiAvKiBUYXJnZXRNZXRyaWMuY2F0ZWdvcmljYWwgKi87XG4gICAgICAgIHRoaXMudGFyZ2V0V2VpZ2h0ID0gMC41O1xuICAgICAgICB0aGlzLnRhcmdldE5OZWlnaGJvcnMgPSB0aGlzLm5OZWlnaGJvcnM7XG4gICAgICAgIHRoaXMuZGlzdGFuY2VGbiA9IG51bWVyaWM7XG4gICAgICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJwRm9yZXN0ID0gW107XG4gICAgICAgIC8vIFByb2plY3RlZCBlbWJlZGRpbmdcbiAgICAgICAgdGhpcy5lbWJlZGRpbmcgPSBbXTtcbiAgICAgICAgdGhpcy5vcHRpbWl6YXRpb25TdGF0ZSA9IG5ldyBPcHRpbWl6YXRpb25TdGF0ZSgpO1xuICAgICAgICBjb25zdCBzZXRQYXJhbSA9IChrZXkpID0+IHtcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICAgICAgaWYgKHBhcmFtc1trZXldICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgdGhpc1trZXldID0gcGFyYW1zW2tleV07XG4gICAgICAgIH07XG4gICAgICAgIHNldFBhcmFtKCdkaXN0YW5jZUZuJyk7XG4gICAgICAgIHNldFBhcmFtKCdsZWFybmluZ1JhdGUnKTtcbiAgICAgICAgc2V0UGFyYW0oJ2xvY2FsQ29ubmVjdGl2aXR5Jyk7XG4gICAgICAgIHNldFBhcmFtKCdtaW5EaXN0Jyk7XG4gICAgICAgIHNldFBhcmFtKCduQ29tcG9uZW50cycpO1xuICAgICAgICBzZXRQYXJhbSgnbkVwb2NocycpO1xuICAgICAgICBzZXRQYXJhbSgnbk5laWdoYm9ycycpO1xuICAgICAgICBzZXRQYXJhbSgnbmVnYXRpdmVTYW1wbGVSYXRlJyk7XG4gICAgICAgIHNldFBhcmFtKCdyYW5kb20nKTtcbiAgICAgICAgc2V0UGFyYW0oJ3JlcHVsc2lvblN0cmVuZ3RoJyk7XG4gICAgICAgIHNldFBhcmFtKCdzZXRPcE1peFJhdGlvJyk7XG4gICAgICAgIHNldFBhcmFtKCdzcHJlYWQnKTtcbiAgICAgICAgc2V0UGFyYW0oJ3RyYW5zZm9ybVF1ZXVlU2l6ZScpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBGaXQgdGhlIGRhdGEgdG8gYSBwcm9qZWN0ZWQgZW1iZWRkaW5nIHNwYWNlIHN5bmNocm9ub3VzbHkuXG4gICAgICovXG4gICAgZml0KFgpIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplRml0KFgpO1xuICAgICAgICB0aGlzLm9wdGltaXplTGF5b3V0KCk7XG4gICAgICAgIHJldHVybiB0aGlzLmVtYmVkZGluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogRml0IHRoZSBkYXRhIHRvIGEgcHJvamVjdGVkIGVtYmVkZGluZyBzcGFjZSBhc3luY2hyb25vdXNseSwgd2l0aCBhIGNhbGxiYWNrXG4gICAgICogZnVuY3Rpb24gaW52b2tlZCBvbiBldmVyeSBlcG9jaCBvZiBvcHRpbWl6YXRpb24uXG4gICAgICovXG4gICAgYXN5bmMgZml0QXN5bmMoWCwgY2FsbGJhY2sgPSAoKSA9PiB0cnVlKSB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUZpdChYKTtcbiAgICAgICAgYXdhaXQgdGhpcy5vcHRpbWl6ZUxheW91dEFzeW5jKGNhbGxiYWNrKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1iZWRkaW5nO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplcyBwYXJhbWV0ZXJzIG5lZWRlZCBmb3Igc3VwZXJ2aXNlZCBwcm9qZWN0aW9uLlxuICAgICAqL1xuICAgIHNldFN1cGVydmlzZWRQcm9qZWN0aW9uKFksIHBhcmFtcyA9IHt9KSB7XG4gICAgICAgIHRoaXMuWSA9IFk7XG4gICAgICAgIHRoaXMudGFyZ2V0TWV0cmljID0gcGFyYW1zLnRhcmdldE1ldHJpYyB8fCB0aGlzLnRhcmdldE1ldHJpYztcbiAgICAgICAgdGhpcy50YXJnZXRXZWlnaHQgPSBwYXJhbXMudGFyZ2V0V2VpZ2h0IHx8IHRoaXMudGFyZ2V0V2VpZ2h0O1xuICAgICAgICB0aGlzLnRhcmdldE5OZWlnaGJvcnMgPSBwYXJhbXMudGFyZ2V0Tk5laWdoYm9ycyB8fCB0aGlzLnRhcmdldE5OZWlnaGJvcnM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIHVtYXAgd2l0aCBwcmVjb21wdXRlZCBLTk4gaW5kaWNlcyBhbmQgZGlzdGFuY2VzLlxuICAgICAqL1xuICAgIHNldFByZWNvbXB1dGVkS05OKGtubkluZGljZXMsIGtubkRpc3RhbmNlcykge1xuICAgICAgICB0aGlzLmtubkluZGljZXMgPSBrbm5JbmRpY2VzO1xuICAgICAgICB0aGlzLmtubkRpc3RhbmNlcyA9IGtubkRpc3RhbmNlcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgZml0IGJ5IGNvbXB1dGluZyBLTk4gYW5kIGEgZnV6enkgc2ltcGxpY2lhbCBzZXQsIGFzIHdlbGwgYXNcbiAgICAgKiBpbml0aWFsaXppbmcgdGhlIHByb2plY3RlZCBlbWJlZGRpbmdzLiBTZXRzIHRoZSBvcHRpbWl6YXRpb24gc3RhdGUgYWhlYWRcbiAgICAgKiBvZiBvcHRpbWl6YXRpb24gc3RlcHMuIFJldHVybnMgdGhlIG51bWJlciBvZiBlcG9jaHMgdG8gYmUgdXNlZCBmb3IgdGhlXG4gICAgICogU0dEIG9wdGltaXphdGlvbi5cbiAgICAgKi9cbiAgICBpbml0aWFsaXplRml0KFgpIHtcbiAgICAgICAgaWYgKFgubGVuZ3RoIDw9IHRoaXMubk5laWdoYm9ycykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb3QgZW5vdWdoIGRhdGEgcG9pbnRzICgke1gubGVuZ3RofSkgdG8gY3JlYXRlIG5OZWlnaGJvcnM6ICR7dGhpcy5uTmVpZ2hib3JzfS4gIEFkZCBtb3JlIGRhdGEgcG9pbnRzIG9yIGFkanVzdCB0aGUgY29uZmlndXJhdGlvbi5gKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHJlaW5pdGlhbGl6ZSBpZiB3ZSd2ZSBhbHJlYWR5IGluaXRpYWxpemVkIGZvciB0aGlzIGRhdGEuXG4gICAgICAgIGlmICh0aGlzLlggPT09IFggJiYgdGhpcy5pc0luaXRpYWxpemVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRORXBvY2hzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5YID0gWDtcbiAgICAgICAgaWYgKCF0aGlzLmtubkluZGljZXMgJiYgIXRoaXMua25uRGlzdGFuY2VzKSB7XG4gICAgICAgICAgICBjb25zdCBrbm5SZXN1bHRzID0gdGhpcy5uZWFyZXN0TmVpZ2hib3JzKFgpO1xuICAgICAgICAgICAgdGhpcy5rbm5JbmRpY2VzID0ga25uUmVzdWx0cy5rbm5JbmRpY2VzO1xuICAgICAgICAgICAgdGhpcy5rbm5EaXN0YW5jZXMgPSBrbm5SZXN1bHRzLmtubkRpc3RhbmNlcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdyYXBoID0gdGhpcy5mdXp6eVNpbXBsaWNpYWxTZXQoWCwgdGhpcy5uTmVpZ2hib3JzLCB0aGlzLnNldE9wTWl4UmF0aW8pO1xuICAgICAgICAvLyBTZXQgdXAgdGhlIHNlYXJjaCBncmFwaCBmb3Igc3Vic2VxdWVudCB0cmFuc2Zvcm1hdGlvbi5cbiAgICAgICAgdGhpcy5tYWtlU2VhcmNoRm5zKCk7XG4gICAgICAgIHRoaXMuc2VhcmNoR3JhcGggPSB0aGlzLm1ha2VTZWFyY2hHcmFwaChYKTtcbiAgICAgICAgLy8gQ2hlY2sgaWYgc3VwZXJ2aXNlZCBwcm9qZWN0aW9uLCB0aGVuIGFkanVzdCB0aGUgZ3JhcGguXG4gICAgICAgIHRoaXMucHJvY2Vzc0dyYXBoRm9yU3VwZXJ2aXNlZFByb2plY3Rpb24oKTtcbiAgICAgICAgY29uc3QgeyBoZWFkLCB0YWlsLCBlcG9jaHNQZXJTYW1wbGUsIH0gPSB0aGlzLmluaXRpYWxpemVTaW1wbGljaWFsU2V0RW1iZWRkaW5nKCk7XG4gICAgICAgIC8vIFNldCB0aGUgb3B0aW1pemF0aW9uIHJvdXRpbmUgc3RhdGVcbiAgICAgICAgdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5oZWFkID0gaGVhZDtcbiAgICAgICAgdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS50YWlsID0gdGFpbDtcbiAgICAgICAgdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5lcG9jaHNQZXJTYW1wbGUgPSBlcG9jaHNQZXJTYW1wbGU7XG4gICAgICAgIC8vIE5vdywgaW5pdGlhbGl6ZSB0aGUgb3B0aW1pemF0aW9uIHN0ZXBzXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZU9wdGltaXphdGlvbigpO1xuICAgICAgICB0aGlzLnByZXBhcmVGb3JPcHRpbWl6YXRpb25Mb29wKCk7XG4gICAgICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE5FcG9jaHMoKTtcbiAgICB9XG4gICAgbWFrZVNlYXJjaEZucygpIHtcbiAgICAgICAgY29uc3QgeyBpbml0RnJvbVRyZWUsIGluaXRGcm9tUmFuZG9tIH0gPSBubkRlc2NlbnQubWFrZUluaXRpYWxpemF0aW9ucyh0aGlzLmRpc3RhbmNlRm4pO1xuICAgICAgICB0aGlzLmluaXRGcm9tVHJlZSA9IGluaXRGcm9tVHJlZTtcbiAgICAgICAgdGhpcy5pbml0RnJvbVJhbmRvbSA9IGluaXRGcm9tUmFuZG9tO1xuICAgICAgICB0aGlzLnNlYXJjaCA9IG5uRGVzY2VudC5tYWtlSW5pdGlhbGl6ZWROTlNlYXJjaCh0aGlzLmRpc3RhbmNlRm4pO1xuICAgIH1cbiAgICBtYWtlU2VhcmNoR3JhcGgoWCkge1xuICAgICAgICBjb25zdCBrbm5JbmRpY2VzID0gdGhpcy5rbm5JbmRpY2VzO1xuICAgICAgICBjb25zdCBrbm5EaXN0YW5jZXMgPSB0aGlzLmtubkRpc3RhbmNlcztcbiAgICAgICAgY29uc3QgZGltcyA9IFtYLmxlbmd0aCwgWC5sZW5ndGhdO1xuICAgICAgICBjb25zdCBzZWFyY2hHcmFwaCA9IG5ldyBtYXRyaXguU3BhcnNlTWF0cml4KFtdLCBbXSwgW10sIGRpbXMpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtubkluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGtubiA9IGtubkluZGljZXNbaV07XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZXMgPSBrbm5EaXN0YW5jZXNbaV07XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGtubi5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5laWdoYm9yID0ga25uW2pdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2VzW2pdO1xuICAgICAgICAgICAgICAgIGlmIChkaXN0YW5jZSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoR3JhcGguc2V0KGksIG5laWdoYm9yLCBkaXN0YW5jZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRyYW5zcG9zZSA9IG1hdHJpeC50cmFuc3Bvc2Uoc2VhcmNoR3JhcGgpO1xuICAgICAgICByZXR1cm4gbWF0cml4Lm1heGltdW0oc2VhcmNoR3JhcGgsIHRyYW5zcG9zZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRyYW5zZm9ybXMgZGF0YSB0byB0aGUgZXhpc3RpbmcgZW1iZWRkaW5nIHNwYWNlLlxuICAgICAqL1xuICAgIHRyYW5zZm9ybSh0b1RyYW5zZm9ybSkge1xuICAgICAgICAvLyBVc2UgdGhlIHByZXZpb3VzIHJhd0RhdGFcbiAgICAgICAgY29uc3QgcmF3RGF0YSA9IHRoaXMuWDtcbiAgICAgICAgaWYgKHJhd0RhdGEgPT09IHVuZGVmaW5lZCB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBkYXRhIGhhcyBiZWVuIGZpdC4nKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbk5laWdoYm9ycyA9IE1hdGguZmxvb3IodGhpcy5uTmVpZ2hib3JzICogdGhpcy50cmFuc2Zvcm1RdWV1ZVNpemUpO1xuICAgICAgICBuTmVpZ2hib3JzID0gTWF0aC5taW4ocmF3RGF0YS5sZW5ndGgsIG5OZWlnaGJvcnMpO1xuICAgICAgICBjb25zdCBpbml0ID0gbm5EZXNjZW50LmluaXRpYWxpemVTZWFyY2godGhpcy5ycEZvcmVzdCwgcmF3RGF0YSwgdG9UcmFuc2Zvcm0sIG5OZWlnaGJvcnMsIHRoaXMuaW5pdEZyb21SYW5kb20sIHRoaXMuaW5pdEZyb21UcmVlLCB0aGlzLnJhbmRvbSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2VhcmNoKHJhd0RhdGEsIHRoaXMuc2VhcmNoR3JhcGgsIGluaXQsIHRvVHJhbnNmb3JtKTtcbiAgICAgICAgbGV0IHsgaW5kaWNlcywgd2VpZ2h0czogZGlzdGFuY2VzIH0gPSBoZWFwLmRlaGVhcFNvcnQocmVzdWx0KTtcbiAgICAgICAgaW5kaWNlcyA9IGluZGljZXMubWFwKHggPT4geC5zbGljZSgwLCB0aGlzLm5OZWlnaGJvcnMpKTtcbiAgICAgICAgZGlzdGFuY2VzID0gZGlzdGFuY2VzLm1hcCh4ID0+IHguc2xpY2UoMCwgdGhpcy5uTmVpZ2hib3JzKSk7XG4gICAgICAgIGNvbnN0IGFkanVzdGVkTG9jYWxDb25uZWN0aXZpdHkgPSBNYXRoLm1heCgwLCB0aGlzLmxvY2FsQ29ubmVjdGl2aXR5IC0gMSk7XG4gICAgICAgIGNvbnN0IHsgc2lnbWFzLCByaG9zIH0gPSB0aGlzLnNtb290aEtOTkRpc3RhbmNlKGRpc3RhbmNlcywgdGhpcy5uTmVpZ2hib3JzLCBhZGp1c3RlZExvY2FsQ29ubmVjdGl2aXR5KTtcbiAgICAgICAgY29uc3QgeyByb3dzLCBjb2xzLCB2YWxzIH0gPSB0aGlzLmNvbXB1dGVNZW1iZXJzaGlwU3RyZW5ndGhzKGluZGljZXMsIGRpc3RhbmNlcywgc2lnbWFzLCByaG9zKTtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IFt0b1RyYW5zZm9ybS5sZW5ndGgsIHJhd0RhdGEubGVuZ3RoXTtcbiAgICAgICAgbGV0IGdyYXBoID0gbmV3IG1hdHJpeC5TcGFyc2VNYXRyaXgocm93cywgY29scywgdmFscywgc2l6ZSk7XG4gICAgICAgIC8vIFRoaXMgd2FzIGEgdmVyeSBzcGVjaWFsbHkgY29uc3RydWN0ZWQgZ3JhcGggd2l0aCBjb25zdGFudCBkZWdyZWUuXG4gICAgICAgIC8vIFRoYXQgbGV0cyB1cyBkbyBmYW5jeSB1bnBhY2tpbmcgYnkgcmVzaGFwaW5nIHRoZSBjc3IgbWF0cml4IGluZGljZXNcbiAgICAgICAgLy8gYW5kIGRhdGEuIERvaW5nIHNvIHJlbGllcyBvbiB0aGUgY29uc3RhbnQgZGVncmVlIGFzc3VtcHRpb24hXG4gICAgICAgIGNvbnN0IG5vcm1lZCA9IG1hdHJpeC5ub3JtYWxpemUoZ3JhcGgsIFwibDFcIiAvKiBtYXRyaXguTm9ybVR5cGUubDEgKi8pO1xuICAgICAgICBjb25zdCBjc3JNYXRyaXggPSBtYXRyaXguZ2V0Q1NSKG5vcm1lZCk7XG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSB0b1RyYW5zZm9ybS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGVJbmRpY2VzID0gdXRpbHMucmVzaGFwZTJkKGNzck1hdHJpeC5pbmRpY2VzLCBuUG9pbnRzLCB0aGlzLm5OZWlnaGJvcnMpO1xuICAgICAgICBjb25zdCBlV2VpZ2h0cyA9IHV0aWxzLnJlc2hhcGUyZChjc3JNYXRyaXgudmFsdWVzLCBuUG9pbnRzLCB0aGlzLm5OZWlnaGJvcnMpO1xuICAgICAgICBjb25zdCBlbWJlZGRpbmcgPSBpbml0VHJhbnNmb3JtKGVJbmRpY2VzLCBlV2VpZ2h0cywgdGhpcy5lbWJlZGRpbmcpO1xuICAgICAgICBjb25zdCBuRXBvY2hzID0gdGhpcy5uRXBvY2hzXG4gICAgICAgICAgICA/IHRoaXMubkVwb2NocyAvIDNcbiAgICAgICAgICAgIDogZ3JhcGgublJvd3MgPD0gMTAwMDBcbiAgICAgICAgICAgICAgICA/IDEwMFxuICAgICAgICAgICAgICAgIDogMzA7XG4gICAgICAgIGNvbnN0IGdyYXBoTWF4ID0gZ3JhcGhcbiAgICAgICAgICAgIC5nZXRWYWx1ZXMoKVxuICAgICAgICAgICAgLnJlZHVjZSgobWF4LCB2YWwpID0+ICh2YWwgPiBtYXggPyB2YWwgOiBtYXgpLCAwKTtcbiAgICAgICAgZ3JhcGggPSBncmFwaC5tYXAodmFsdWUgPT4gKHZhbHVlIDwgZ3JhcGhNYXggLyBuRXBvY2hzID8gMCA6IHZhbHVlKSk7XG4gICAgICAgIGdyYXBoID0gbWF0cml4LmVsaW1pbmF0ZVplcm9zKGdyYXBoKTtcbiAgICAgICAgY29uc3QgZXBvY2hzUGVyU2FtcGxlID0gdGhpcy5tYWtlRXBvY2hzUGVyU2FtcGxlKGdyYXBoLmdldFZhbHVlcygpLCBuRXBvY2hzKTtcbiAgICAgICAgY29uc3QgaGVhZCA9IGdyYXBoLmdldFJvd3MoKTtcbiAgICAgICAgY29uc3QgdGFpbCA9IGdyYXBoLmdldENvbHMoKTtcbiAgICAgICAgLy8gSW5pdGlhbGl6ZSBvcHRpbWl6YXRpb24gc2xpZ2h0bHkgZGlmZmVyZW50bHkgdGhhbiB0aGUgZml0IG1ldGhvZC5cbiAgICAgICAgdGhpcy5hc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnMoe1xuICAgICAgICAgICAgaGVhZEVtYmVkZGluZzogZW1iZWRkaW5nLFxuICAgICAgICAgICAgdGFpbEVtYmVkZGluZzogdGhpcy5lbWJlZGRpbmcsXG4gICAgICAgICAgICBoZWFkLFxuICAgICAgICAgICAgdGFpbCxcbiAgICAgICAgICAgIGN1cnJlbnRFcG9jaDogMCxcbiAgICAgICAgICAgIG5FcG9jaHMsXG4gICAgICAgICAgICBuVmVydGljZXM6IGdyYXBoLmdldERpbXMoKVsxXSxcbiAgICAgICAgICAgIGVwb2Noc1BlclNhbXBsZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucHJlcGFyZUZvck9wdGltaXphdGlvbkxvb3AoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW1pemVMYXlvdXQoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHdlJ3JlIHVzaW5nIHN1cGVydmlzZWQgcHJvamVjdGlvbiwgdGhlbiBwcm9jZXNzIHRoZSBncmFwaFxuICAgICAqIGFjY29yZGluZ2x5LlxuICAgICAqL1xuICAgIHByb2Nlc3NHcmFwaEZvclN1cGVydmlzZWRQcm9qZWN0aW9uKCkge1xuICAgICAgICBjb25zdCB7IFksIFggfSA9IHRoaXM7XG4gICAgICAgIGlmIChZKSB7XG4gICAgICAgICAgICBpZiAoWS5sZW5ndGggIT09IFgubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdMZW5ndGggb2YgWCBhbmQgeSBtdXN0IGJlIGVxdWFsJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy50YXJnZXRNZXRyaWMgPT09IFwiY2F0ZWdvcmljYWxcIiAvKiBUYXJnZXRNZXRyaWMuY2F0ZWdvcmljYWwgKi8pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsdCA9IHRoaXMudGFyZ2V0V2VpZ2h0IDwgMS4wO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZhckRpc3QgPSBsdCA/IDIuNSAqICgxLjAgLyAoMS4wIC0gdGhpcy50YXJnZXRXZWlnaHQpKSA6IDEuMGUxMjtcbiAgICAgICAgICAgICAgICB0aGlzLmdyYXBoID0gdGhpcy5jYXRlZ29yaWNhbFNpbXBsaWNpYWxTZXRJbnRlcnNlY3Rpb24odGhpcy5ncmFwaCwgWSwgZmFyRGlzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUT0RPIChhbmR5Y29lbmVuQCk6IGFkZCBub24tY2F0ZWdvcmljYWwgc3VwZXJ2aXNlZCBlbWJlZGRpbmdzLlxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1hbnVhbGx5IHN0ZXAgdGhyb3VnaCB0aGUgb3B0aW1pemF0aW9uIHByb2Nlc3Mgb25lIGVwb2NoIGF0IGEgdGltZS5cbiAgICAgKi9cbiAgICBzdGVwKCkge1xuICAgICAgICBjb25zdCB7IGN1cnJlbnRFcG9jaCB9ID0gdGhpcy5vcHRpbWl6YXRpb25TdGF0ZTtcbiAgICAgICAgaWYgKGN1cnJlbnRFcG9jaCA8IHRoaXMuZ2V0TkVwb2NocygpKSB7XG4gICAgICAgICAgICB0aGlzLm9wdGltaXplTGF5b3V0U3RlcChjdXJyZW50RXBvY2gpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY29tcHV0ZWQgcHJvamVjdGVkIGVtYmVkZGluZy5cbiAgICAgKi9cbiAgICBnZXRFbWJlZGRpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVtYmVkZGluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29tcHV0ZSB0aGUgYGBuTmVpZ2hib3JzYGAgbmVhcmVzdCBwb2ludHMgZm9yIGVhY2ggZGF0YSBwb2ludCBpbiBgYFhgYFxuICAgICAqIFRoaXMgbWF5IGJlIGV4YWN0LCBidXQgbW9yZSBsaWtlbHkgaXMgYXBwcm94aW1hdGVkIHZpYSBuZWFyZXN0IG5laWdoYm9yXG4gICAgICogZGVzY2VudC5cbiAgICAgKi9cbiAgICBuZWFyZXN0TmVpZ2hib3JzKFgpIHtcbiAgICAgICAgY29uc3QgeyBkaXN0YW5jZUZuLCBuTmVpZ2hib3JzIH0gPSB0aGlzO1xuICAgICAgICBjb25zdCBsb2cyID0gKG4pID0+IE1hdGgubG9nKG4pIC8gTWF0aC5sb2coMik7XG4gICAgICAgIGNvbnN0IG1ldHJpY05ORGVzY2VudCA9IG5uRGVzY2VudC5tYWtlTk5EZXNjZW50KGRpc3RhbmNlRm4sIHRoaXMucmFuZG9tKTtcbiAgICAgICAgLy8gSGFuZGxlIHB5dGhvbjMgcm91bmRpbmcgZG93biBmcm9tIDAuNSBkaXNjcnBhbmN5XG4gICAgICAgIGNvbnN0IHJvdW5kID0gKG4pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBuID09PSAwLjUgPyAwIDogTWF0aC5yb3VuZChuKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgblRyZWVzID0gNSArIE1hdGguZmxvb3Iocm91bmQoWC5sZW5ndGggKiogMC41IC8gMjAuMCkpO1xuICAgICAgICBjb25zdCBuSXRlcnMgPSBNYXRoLm1heCg1LCBNYXRoLmZsb29yKE1hdGgucm91bmQobG9nMihYLmxlbmd0aCkpKSk7XG4gICAgICAgIHRoaXMucnBGb3Jlc3QgPSB0cmVlLm1ha2VGb3Jlc3QoWCwgbk5laWdoYm9ycywgblRyZWVzLCB0aGlzLnJhbmRvbSk7XG4gICAgICAgIGNvbnN0IGxlYWZBcnJheSA9IHRyZWUubWFrZUxlYWZBcnJheSh0aGlzLnJwRm9yZXN0KTtcbiAgICAgICAgY29uc3QgeyBpbmRpY2VzLCB3ZWlnaHRzIH0gPSBtZXRyaWNOTkRlc2NlbnQoWCwgbGVhZkFycmF5LCBuTmVpZ2hib3JzLCBuSXRlcnMpO1xuICAgICAgICByZXR1cm4geyBrbm5JbmRpY2VzOiBpbmRpY2VzLCBrbm5EaXN0YW5jZXM6IHdlaWdodHMgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2l2ZW4gYSBzZXQgb2YgZGF0YSBYLCBhIG5laWdoYm9yaG9vZCBzaXplLCBhbmQgYSBtZWFzdXJlIG9mIGRpc3RhbmNlXG4gICAgICogY29tcHV0ZSB0aGUgZnV6enkgc2ltcGxpY2lhbCBzZXQgKGhlcmUgcmVwcmVzZW50ZWQgYXMgYSBmdXp6eSBncmFwaCBpblxuICAgICAqIHRoZSBmb3JtIG9mIGEgc3BhcnNlIG1hdHJpeCkgYXNzb2NpYXRlZCB0byB0aGUgZGF0YS4gVGhpcyBpcyBkb25lIGJ5XG4gICAgICogbG9jYWxseSBhcHByb3hpbWF0aW5nIGdlb2Rlc2ljIGRpc3RhbmNlIGF0IGVhY2ggcG9pbnQsIGNyZWF0aW5nIGEgZnV6enlcbiAgICAgKiBzaW1wbGljaWFsIHNldCBmb3IgZWFjaCBzdWNoIHBvaW50LCBhbmQgdGhlbiBjb21iaW5pbmcgYWxsIHRoZSBsb2NhbFxuICAgICAqIGZ1enp5IHNpbXBsaWNpYWwgc2V0cyBpbnRvIGEgZ2xvYmFsIG9uZSB2aWEgYSBmdXp6eSB1bmlvbi5cbiAgICAgKi9cbiAgICBmdXp6eVNpbXBsaWNpYWxTZXQoWCwgbk5laWdoYm9ycywgc2V0T3BNaXhSYXRpbyA9IDEuMCkge1xuICAgICAgICBjb25zdCB7IGtubkluZGljZXMgPSBbXSwga25uRGlzdGFuY2VzID0gW10sIGxvY2FsQ29ubmVjdGl2aXR5IH0gPSB0aGlzO1xuICAgICAgICBjb25zdCB7IHNpZ21hcywgcmhvcyB9ID0gdGhpcy5zbW9vdGhLTk5EaXN0YW5jZShrbm5EaXN0YW5jZXMsIG5OZWlnaGJvcnMsIGxvY2FsQ29ubmVjdGl2aXR5KTtcbiAgICAgICAgY29uc3QgeyByb3dzLCBjb2xzLCB2YWxzIH0gPSB0aGlzLmNvbXB1dGVNZW1iZXJzaGlwU3RyZW5ndGhzKGtubkluZGljZXMsIGtubkRpc3RhbmNlcywgc2lnbWFzLCByaG9zKTtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IFtYLmxlbmd0aCwgWC5sZW5ndGhdO1xuICAgICAgICBjb25zdCBzcGFyc2VNYXRyaXggPSBuZXcgbWF0cml4LlNwYXJzZU1hdHJpeChyb3dzLCBjb2xzLCB2YWxzLCBzaXplKTtcbiAgICAgICAgY29uc3QgdHJhbnNwb3NlID0gbWF0cml4LnRyYW5zcG9zZShzcGFyc2VNYXRyaXgpO1xuICAgICAgICBjb25zdCBwcm9kTWF0cml4ID0gbWF0cml4LnBhaXJ3aXNlTXVsdGlwbHkoc3BhcnNlTWF0cml4LCB0cmFuc3Bvc2UpO1xuICAgICAgICBjb25zdCBhID0gbWF0cml4LnN1YnRyYWN0KG1hdHJpeC5hZGQoc3BhcnNlTWF0cml4LCB0cmFuc3Bvc2UpLCBwcm9kTWF0cml4KTtcbiAgICAgICAgY29uc3QgYiA9IG1hdHJpeC5tdWx0aXBseVNjYWxhcihhLCBzZXRPcE1peFJhdGlvKTtcbiAgICAgICAgY29uc3QgYyA9IG1hdHJpeC5tdWx0aXBseVNjYWxhcihwcm9kTWF0cml4LCAxLjAgLSBzZXRPcE1peFJhdGlvKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbWF0cml4LmFkZChiLCBjKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29tYmluZSBhIGZ1enp5IHNpbXBsaWNpYWwgc2V0IHdpdGggYW5vdGhlciBmdXp6eSBzaW1wbGljaWFsIHNldFxuICAgICAqIGdlbmVyYXRlZCBmcm9tIGNhdGVnb3JpY2FsIGRhdGEgdXNpbmcgY2F0ZWdvcmljYWwgZGlzdGFuY2VzLiBUaGUgdGFyZ2V0XG4gICAgICogZGF0YSBpcyBhc3N1bWVkIHRvIGJlIGNhdGVnb3JpY2FsIGxhYmVsIGRhdGEgKGEgdmVjdG9yIG9mIGxhYmVscyksXG4gICAgICogYW5kIHRoaXMgd2lsbCB1cGRhdGUgdGhlIGZ1enp5IHNpbXBsaWNpYWwgc2V0IHRvIHJlc3BlY3QgdGhhdCBsYWJlbCBkYXRhLlxuICAgICAqL1xuICAgIGNhdGVnb3JpY2FsU2ltcGxpY2lhbFNldEludGVyc2VjdGlvbihzaW1wbGljaWFsU2V0LCB0YXJnZXQsIGZhckRpc3QsIHVua25vd25EaXN0ID0gMS4wKSB7XG4gICAgICAgIGxldCBpbnRlcnNlY3Rpb24gPSBmYXN0SW50ZXJzZWN0aW9uKHNpbXBsaWNpYWxTZXQsIHRhcmdldCwgdW5rbm93bkRpc3QsIGZhckRpc3QpO1xuICAgICAgICBpbnRlcnNlY3Rpb24gPSBtYXRyaXguZWxpbWluYXRlWmVyb3MoaW50ZXJzZWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIHJlc2V0TG9jYWxDb25uZWN0aXZpdHkoaW50ZXJzZWN0aW9uKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29tcHV0ZSBhIGNvbnRpbnVvdXMgdmVyc2lvbiBvZiB0aGUgZGlzdGFuY2UgdG8gdGhlIGt0aCBuZWFyZXN0XG4gICAgICogbmVpZ2hib3IuIFRoYXQgaXMsIHRoaXMgaXMgc2ltaWxhciB0byBrbm4tZGlzdGFuY2UgYnV0IGFsbG93cyBjb250aW51b3VzXG4gICAgICogayB2YWx1ZXMgcmF0aGVyIHRoYW4gcmVxdWlyaW5nIGFuIGludGVncmFsIGsuIEluIGVzc2NlbmNlIHdlIGFyZSBzaW1wbHlcbiAgICAgKiBjb21wdXRpbmcgdGhlIGRpc3RhbmNlIHN1Y2ggdGhhdCB0aGUgY2FyZGluYWxpdHkgb2YgZnV6enkgc2V0IHdlIGdlbmVyYXRlXG4gICAgICogaXMgay5cbiAgICAgKi9cbiAgICBzbW9vdGhLTk5EaXN0YW5jZShkaXN0YW5jZXMsIGssIGxvY2FsQ29ubmVjdGl2aXR5ID0gMS4wLCBuSXRlciA9IDY0LCBiYW5kd2lkdGggPSAxLjApIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gKE1hdGgubG9nKGspIC8gTWF0aC5sb2coMikpICogYmFuZHdpZHRoO1xuICAgICAgICBjb25zdCByaG8gPSB1dGlscy56ZXJvcyhkaXN0YW5jZXMubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdXRpbHMuemVyb3MoZGlzdGFuY2VzLmxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlzdGFuY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbG8gPSAwLjA7XG4gICAgICAgICAgICBsZXQgaGkgPSBJbmZpbml0eTtcbiAgICAgICAgICAgIGxldCBtaWQgPSAxLjA7XG4gICAgICAgICAgICAvLyBUT0RPOiBUaGlzIGlzIHZlcnkgaW5lZmZpY2llbnQsIGJ1dCB3aWxsIGRvIGZvciBub3cuIEZJWE1FXG4gICAgICAgICAgICBjb25zdCBpdGhEaXN0YW5jZXMgPSBkaXN0YW5jZXNbaV07XG4gICAgICAgICAgICBjb25zdCBub25aZXJvRGlzdHMgPSBpdGhEaXN0YW5jZXMuZmlsdGVyKGQgPT4gZCA+IDAuMCk7XG4gICAgICAgICAgICBpZiAobm9uWmVyb0Rpc3RzLmxlbmd0aCA+PSBsb2NhbENvbm5lY3Rpdml0eSkge1xuICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IE1hdGguZmxvb3IobG9jYWxDb25uZWN0aXZpdHkpO1xuICAgICAgICAgICAgICAgIGxldCBpbnRlcnBvbGF0aW9uID0gbG9jYWxDb25uZWN0aXZpdHkgLSBpbmRleDtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJob1tpXSA9IG5vblplcm9EaXN0c1tpbmRleCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJwb2xhdGlvbiA+IFNNT09USF9LX1RPTEVSQU5DRSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmhvW2ldICs9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJwb2xhdGlvbiAqIChub25aZXJvRGlzdHNbaW5kZXhdIC0gbm9uWmVyb0Rpc3RzW2luZGV4IC0gMV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByaG9baV0gPSBpbnRlcnBvbGF0aW9uICogbm9uWmVyb0Rpc3RzWzBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG5vblplcm9EaXN0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmhvW2ldID0gdXRpbHMubWF4KG5vblplcm9EaXN0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IG5JdGVyOyBuKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgcHN1bSA9IDAuMDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMTsgaiA8IGRpc3RhbmNlc1tpXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkID0gZGlzdGFuY2VzW2ldW2pdIC0gcmhvW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBzdW0gKz0gTWF0aC5leHAoLShkIC8gbWlkKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwc3VtICs9IDEuMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMocHN1bSAtIHRhcmdldCkgPCBTTU9PVEhfS19UT0xFUkFOQ0UpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwc3VtID4gdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIGhpID0gbWlkO1xuICAgICAgICAgICAgICAgICAgICBtaWQgPSAobG8gKyBoaSkgLyAyLjA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsbyA9IG1pZDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhpID09PSBJbmZpbml0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWlkICo9IDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaWQgPSAobG8gKyBoaSkgLyAyLjA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRbaV0gPSBtaWQ7XG4gICAgICAgICAgICAvLyBUT0RPOiBUaGlzIGlzIHZlcnkgaW5lZmZpY2llbnQsIGJ1dCB3aWxsIGRvIGZvciBub3cuIEZJWE1FXG4gICAgICAgICAgICBpZiAocmhvW2ldID4gMC4wKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVhbkl0aERpc3RhbmNlcyA9IHV0aWxzLm1lYW4oaXRoRGlzdGFuY2VzKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0W2ldIDwgTUlOX0tfRElTVF9TQ0FMRSAqIG1lYW5JdGhEaXN0YW5jZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2ldID0gTUlOX0tfRElTVF9TQ0FMRSAqIG1lYW5JdGhEaXN0YW5jZXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVhbkRpc3RhbmNlcyA9IHV0aWxzLm1lYW4oZGlzdGFuY2VzLm1hcCh1dGlscy5tZWFuKSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdFtpXSA8IE1JTl9LX0RJU1RfU0NBTEUgKiBtZWFuRGlzdGFuY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtpXSA9IE1JTl9LX0RJU1RfU0NBTEUgKiBtZWFuRGlzdGFuY2VzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzaWdtYXM6IHJlc3VsdCwgcmhvczogcmhvIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdCB0aGUgbWVtYmVyc2hpcCBzdHJlbmd0aCBkYXRhIGZvciB0aGUgMS1za2VsZXRvbiBvZiBlYWNoIGxvY2FsXG4gICAgICogZnV6enkgc2ltcGxpY2lhbCBzZXQgLS0gdGhpcyBpcyBmb3JtZWQgYXMgYSBzcGFyc2UgbWF0cml4IHdoZXJlIGVhY2ggcm93IGlzXG4gICAgICogYSBsb2NhbCBmdXp6eSBzaW1wbGljaWFsIHNldCwgd2l0aCBhIG1lbWJlcnNoaXAgc3RyZW5ndGggZm9yIHRoZVxuICAgICAqIDEtc2ltcGxleCB0byBlYWNoIG90aGVyIGRhdGEgcG9pbnQuXG4gICAgICovXG4gICAgY29tcHV0ZU1lbWJlcnNoaXBTdHJlbmd0aHMoa25uSW5kaWNlcywga25uRGlzdGFuY2VzLCBzaWdtYXMsIHJob3MpIHtcbiAgICAgICAgY29uc3QgblNhbXBsZXMgPSBrbm5JbmRpY2VzLmxlbmd0aDtcbiAgICAgICAgY29uc3Qgbk5laWdoYm9ycyA9IGtubkluZGljZXNbMF0ubGVuZ3RoO1xuICAgICAgICBjb25zdCByb3dzID0gdXRpbHMuemVyb3MoblNhbXBsZXMgKiBuTmVpZ2hib3JzKTtcbiAgICAgICAgY29uc3QgY29scyA9IHV0aWxzLnplcm9zKG5TYW1wbGVzICogbk5laWdoYm9ycyk7XG4gICAgICAgIGNvbnN0IHZhbHMgPSB1dGlscy56ZXJvcyhuU2FtcGxlcyAqIG5OZWlnaGJvcnMpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5TYW1wbGVzOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbk5laWdoYm9yczsgaisrKSB7XG4gICAgICAgICAgICAgICAgbGV0IHZhbCA9IDA7XG4gICAgICAgICAgICAgICAgaWYgKGtubkluZGljZXNbaV1bal0gPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBXZSBkaWRuJ3QgZ2V0IHRoZSBmdWxsIGtubiBmb3IgaVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoa25uSW5kaWNlc1tpXVtqXSA9PT0gaSkge1xuICAgICAgICAgICAgICAgICAgICB2YWwgPSAwLjA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtubkRpc3RhbmNlc1tpXVtqXSAtIHJob3NbaV0gPD0gMC4wKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IDEuMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IE1hdGguZXhwKC0oKGtubkRpc3RhbmNlc1tpXVtqXSAtIHJob3NbaV0pIC8gc2lnbWFzW2ldKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJvd3NbaSAqIG5OZWlnaGJvcnMgKyBqXSA9IGk7XG4gICAgICAgICAgICAgICAgY29sc1tpICogbk5laWdoYm9ycyArIGpdID0ga25uSW5kaWNlc1tpXVtqXTtcbiAgICAgICAgICAgICAgICB2YWxzW2kgKiBuTmVpZ2hib3JzICsgal0gPSB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgcm93cywgY29scywgdmFscyB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIGEgZnV6enkgc2ltcGxpY2lhbCBzZXQgZW1iZWRkaW5nLCB1c2luZyBhIHNwZWNpZmllZFxuICAgICAqIGluaXRpYWxpc2F0aW9uIG1ldGhvZCBhbmQgdGhlbiBtaW5pbWl6aW5nIHRoZSBmdXp6eSBzZXQgY3Jvc3MgZW50cm9weVxuICAgICAqIGJldHdlZW4gdGhlIDEtc2tlbGV0b25zIG9mIHRoZSBoaWdoIGFuZCBsb3cgZGltZW5zaW9uYWwgZnV6enkgc2ltcGxpY2lhbFxuICAgICAqIHNldHMuXG4gICAgICovXG4gICAgaW5pdGlhbGl6ZVNpbXBsaWNpYWxTZXRFbWJlZGRpbmcoKSB7XG4gICAgICAgIGNvbnN0IG5FcG9jaHMgPSB0aGlzLmdldE5FcG9jaHMoKTtcbiAgICAgICAgY29uc3QgeyBuQ29tcG9uZW50cyB9ID0gdGhpcztcbiAgICAgICAgY29uc3QgZ3JhcGhWYWx1ZXMgPSB0aGlzLmdyYXBoLmdldFZhbHVlcygpO1xuICAgICAgICBsZXQgZ3JhcGhNYXggPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdyYXBoVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdyYXBoVmFsdWVzW2ldO1xuICAgICAgICAgICAgaWYgKGdyYXBoTWF4IDwgZ3JhcGhWYWx1ZXNbaV0pIHtcbiAgICAgICAgICAgICAgICBncmFwaE1heCA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGdyYXBoID0gdGhpcy5ncmFwaC5tYXAodmFsdWUgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlIDwgZ3JhcGhNYXggLyBuRXBvY2hzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBXZSdyZSBub3QgY29tcHV0aW5nIHRoZSBzcGVjdHJhbCBpbml0aWFsaXphdGlvbiBpbiB0aGlzIGltcGxlbWVudGF0aW9uXG4gICAgICAgIC8vIHVudGlsIHdlIGRldGVybWluZSBhIGJldHRlciBlaWdlbnZhbHVlL2VpZ2VudmVjdG9yIGNvbXB1dGF0aW9uXG4gICAgICAgIC8vIGFwcHJvYWNoXG4gICAgICAgIHRoaXMuZW1iZWRkaW5nID0gdXRpbHMuemVyb3MoZ3JhcGgublJvd3MpLm1hcCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdXRpbHMuemVyb3MobkNvbXBvbmVudHMpLm1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHV0aWxzLnRhdVJhbmQodGhpcy5yYW5kb20pICogMjAgKyAtMTA7IC8vIFJhbmRvbSBmcm9tIC0xMCB0byAxMFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBHZXQgZ3JhcGggZGF0YSBpbiBvcmRlcmVkIHdheS4uLlxuICAgICAgICBjb25zdCB3ZWlnaHRzID0gW107XG4gICAgICAgIGNvbnN0IGhlYWQgPSBbXTtcbiAgICAgICAgY29uc3QgdGFpbCA9IFtdO1xuICAgICAgICBjb25zdCByb3dDb2xWYWx1ZXMgPSBncmFwaC5nZXRBbGwoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dDb2xWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gcm93Q29sVmFsdWVzW2ldO1xuICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgd2VpZ2h0cy5wdXNoKGVudHJ5LnZhbHVlKTtcbiAgICAgICAgICAgICAgICB0YWlsLnB1c2goZW50cnkucm93KTtcbiAgICAgICAgICAgICAgICBoZWFkLnB1c2goZW50cnkuY29sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlcG9jaHNQZXJTYW1wbGUgPSB0aGlzLm1ha2VFcG9jaHNQZXJTYW1wbGUod2VpZ2h0cywgbkVwb2Nocyk7XG4gICAgICAgIHJldHVybiB7IGhlYWQsIHRhaWwsIGVwb2Noc1BlclNhbXBsZSB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHaXZlbiBhIHNldCBvZiB3ZWlnaHRzIGFuZCBudW1iZXIgb2YgZXBvY2hzIGdlbmVyYXRlIHRoZSBudW1iZXIgb2ZcbiAgICAgKiBlcG9jaHMgcGVyIHNhbXBsZSBmb3IgZWFjaCB3ZWlnaHQuXG4gICAgICovXG4gICAgbWFrZUVwb2Noc1BlclNhbXBsZSh3ZWlnaHRzLCBuRXBvY2hzKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHV0aWxzLmZpbGxlZCh3ZWlnaHRzLmxlbmd0aCwgLTEuMCk7XG4gICAgICAgIGNvbnN0IG1heCA9IHV0aWxzLm1heCh3ZWlnaHRzKTtcbiAgICAgICAgY29uc3QgblNhbXBsZXMgPSB3ZWlnaHRzLm1hcCh3ID0+ICh3IC8gbWF4KSAqIG5FcG9jaHMpO1xuICAgICAgICBuU2FtcGxlcy5mb3JFYWNoKChuLCBpKSA9PiB7XG4gICAgICAgICAgICBpZiAobiA+IDApXG4gICAgICAgICAgICAgICAgcmVzdWx0W2ldID0gbkVwb2NocyAvIG5TYW1wbGVzW2ldO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQXNzaWducyBvcHRpbWl6YXRpb24gc3RhdGUgcGFyYW1ldGVycyBmcm9tIGEgcGFydGlhbCBvcHRpbWl6YXRpb24gc3RhdGUuXG4gICAgICovXG4gICAgYXNzaWduT3B0aW1pemF0aW9uU3RhdGVQYXJhbWV0ZXJzKHN0YXRlKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5vcHRpbWl6YXRpb25TdGF0ZSwgc3RhdGUpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIGEgZmV3IG9wdGltaXphdGlvbiBzdGF0ZSBwYXJhbWV0ZXJzIHRoYXQgYXJlIG5lY2Vzc2FyeSBiZWZvcmUgZW50ZXJpbmdcbiAgICAgKiB0aGUgb3B0aW1pemF0aW9uIHN0ZXAgbG9vcC5cbiAgICAgKi9cbiAgICBwcmVwYXJlRm9yT3B0aW1pemF0aW9uTG9vcCgpIHtcbiAgICAgICAgLy8gSHlwZXJwYXJhbWV0ZXJzXG4gICAgICAgIGNvbnN0IHsgcmVwdWxzaW9uU3RyZW5ndGgsIGxlYXJuaW5nUmF0ZSwgbmVnYXRpdmVTYW1wbGVSYXRlIH0gPSB0aGlzO1xuICAgICAgICBjb25zdCB7IGVwb2Noc1BlclNhbXBsZSwgaGVhZEVtYmVkZGluZywgdGFpbEVtYmVkZGluZywgfSA9IHRoaXMub3B0aW1pemF0aW9uU3RhdGU7XG4gICAgICAgIGNvbnN0IGRpbSA9IGhlYWRFbWJlZGRpbmdbMF0ubGVuZ3RoO1xuICAgICAgICBjb25zdCBtb3ZlT3RoZXIgPSBoZWFkRW1iZWRkaW5nLmxlbmd0aCA9PT0gdGFpbEVtYmVkZGluZy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlID0gZXBvY2hzUGVyU2FtcGxlLm1hcChlID0+IGUgLyBuZWdhdGl2ZVNhbXBsZVJhdGUpO1xuICAgICAgICBjb25zdCBlcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlID0gWy4uLmVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlXTtcbiAgICAgICAgY29uc3QgZXBvY2hPZk5leHRTYW1wbGUgPSBbLi4uZXBvY2hzUGVyU2FtcGxlXTtcbiAgICAgICAgdGhpcy5hc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnMoe1xuICAgICAgICAgICAgZXBvY2hPZk5leHRTYW1wbGUsXG4gICAgICAgICAgICBlcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlLFxuICAgICAgICAgICAgZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGUsXG4gICAgICAgICAgICBtb3ZlT3RoZXIsXG4gICAgICAgICAgICBpbml0aWFsQWxwaGE6IGxlYXJuaW5nUmF0ZSxcbiAgICAgICAgICAgIGFscGhhOiBsZWFybmluZ1JhdGUsXG4gICAgICAgICAgICBnYW1tYTogcmVwdWxzaW9uU3RyZW5ndGgsXG4gICAgICAgICAgICBkaW0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplcyBvcHRpbWl6YXRpb24gc3RhdGUgZm9yIHN0ZXB3aXNlIG9wdGltaXphdGlvbi5cbiAgICAgKi9cbiAgICBpbml0aWFsaXplT3B0aW1pemF0aW9uKCkge1xuICAgICAgICAvLyBBbGdvcml0aG0gc3RhdGVcbiAgICAgICAgY29uc3QgaGVhZEVtYmVkZGluZyA9IHRoaXMuZW1iZWRkaW5nO1xuICAgICAgICBjb25zdCB0YWlsRW1iZWRkaW5nID0gdGhpcy5lbWJlZGRpbmc7XG4gICAgICAgIC8vIEluaXRpYWxpemVkIGluIGluaXRpYWxpemVTaW1wbGljaWFsU2V0RW1iZWRkaW5nKClcbiAgICAgICAgY29uc3QgeyBoZWFkLCB0YWlsLCBlcG9jaHNQZXJTYW1wbGUgfSA9IHRoaXMub3B0aW1pemF0aW9uU3RhdGU7XG4gICAgICAgIGNvbnN0IG5FcG9jaHMgPSB0aGlzLmdldE5FcG9jaHMoKTtcbiAgICAgICAgY29uc3QgblZlcnRpY2VzID0gdGhpcy5ncmFwaC5uQ29scztcbiAgICAgICAgY29uc3QgeyBhLCBiIH0gPSBmaW5kQUJQYXJhbXModGhpcy5zcHJlYWQsIHRoaXMubWluRGlzdCk7XG4gICAgICAgIHRoaXMuYXNzaWduT3B0aW1pemF0aW9uU3RhdGVQYXJhbWV0ZXJzKHtcbiAgICAgICAgICAgIGhlYWRFbWJlZGRpbmcsXG4gICAgICAgICAgICB0YWlsRW1iZWRkaW5nLFxuICAgICAgICAgICAgaGVhZCxcbiAgICAgICAgICAgIHRhaWwsXG4gICAgICAgICAgICBlcG9jaHNQZXJTYW1wbGUsXG4gICAgICAgICAgICBhLFxuICAgICAgICAgICAgYixcbiAgICAgICAgICAgIG5FcG9jaHMsXG4gICAgICAgICAgICBuVmVydGljZXMsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbXByb3ZlIGFuIGVtYmVkZGluZyB1c2luZyBzdG9jaGFzdGljIGdyYWRpZW50IGRlc2NlbnQgdG8gbWluaW1pemUgdGhlXG4gICAgICogZnV6enkgc2V0IGNyb3NzIGVudHJvcHkgYmV0d2VlbiB0aGUgMS1za2VsZXRvbnMgb2YgdGhlIGhpZ2ggZGltZW5zaW9uYWxcbiAgICAgKiBhbmQgbG93IGRpbWVuc2lvbmFsIGZ1enp5IHNpbXBsaWNpYWwgc2V0cy4gSW4gcHJhY3RpY2UgdGhpcyBpcyBkb25lIGJ5XG4gICAgICogc2FtcGxpbmcgZWRnZXMgYmFzZWQgb24gdGhlaXIgbWVtYmVyc2hpcCBzdHJlbmd0aCAod2l0aCB0aGUgKDEtcCkgdGVybXNcbiAgICAgKiBjb21pbmcgZnJvbSBuZWdhdGl2ZSBzYW1wbGluZyBzaW1pbGFyIHRvIHdvcmQydmVjKS5cbiAgICAgKi9cbiAgICBvcHRpbWl6ZUxheW91dFN0ZXAobikge1xuICAgICAgICBjb25zdCB7IG9wdGltaXphdGlvblN0YXRlIH0gPSB0aGlzO1xuICAgICAgICBjb25zdCB7IGhlYWQsIHRhaWwsIGhlYWRFbWJlZGRpbmcsIHRhaWxFbWJlZGRpbmcsIGVwb2Noc1BlclNhbXBsZSwgZXBvY2hPZk5leHRTYW1wbGUsIGVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGUsIGVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlLCBtb3ZlT3RoZXIsIGluaXRpYWxBbHBoYSwgYWxwaGEsIGdhbW1hLCBhLCBiLCBkaW0sIG5FcG9jaHMsIG5WZXJ0aWNlcywgfSA9IG9wdGltaXphdGlvblN0YXRlO1xuICAgICAgICBjb25zdCBjbGlwVmFsdWUgPSA0LjA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXBvY2hzUGVyU2FtcGxlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZXBvY2hPZk5leHRTYW1wbGVbaV0gPiBuKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBqID0gaGVhZFtpXTtcbiAgICAgICAgICAgIGNvbnN0IGsgPSB0YWlsW2ldO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IGhlYWRFbWJlZGRpbmdbal07XG4gICAgICAgICAgICBjb25zdCBvdGhlciA9IHRhaWxFbWJlZGRpbmdba107XG4gICAgICAgICAgICBjb25zdCBkaXN0U3F1YXJlZCA9IHJEaXN0KGN1cnJlbnQsIG90aGVyKTtcbiAgICAgICAgICAgIGxldCBncmFkQ29lZmYgPSAwO1xuICAgICAgICAgICAgaWYgKGRpc3RTcXVhcmVkID4gMCkge1xuICAgICAgICAgICAgICAgIGdyYWRDb2VmZiA9IC0yLjAgKiBhICogYiAqIE1hdGgucG93KGRpc3RTcXVhcmVkLCBiIC0gMS4wKTtcbiAgICAgICAgICAgICAgICBncmFkQ29lZmYgLz0gYSAqIE1hdGgucG93KGRpc3RTcXVhcmVkLCBiKSArIDEuMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBncmFkRCA9IGNsaXAoZ3JhZENvZWZmICogKGN1cnJlbnRbZF0gLSBvdGhlcltkXSksIGNsaXBWYWx1ZSk7XG4gICAgICAgICAgICAgICAgY3VycmVudFtkXSArPSBncmFkRCAqIGFscGhhO1xuICAgICAgICAgICAgICAgIGlmIChtb3ZlT3RoZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgb3RoZXJbZF0gKz0gLWdyYWREICogYWxwaGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXBvY2hPZk5leHRTYW1wbGVbaV0gKz0gZXBvY2hzUGVyU2FtcGxlW2ldO1xuICAgICAgICAgICAgY29uc3Qgbk5lZ1NhbXBsZXMgPSBNYXRoLmZsb29yKChuIC0gZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZVtpXSkgLyBlcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZVtpXSk7XG4gICAgICAgICAgICBmb3IgKGxldCBwID0gMDsgcCA8IG5OZWdTYW1wbGVzOyBwKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBrID0gdXRpbHMudGF1UmFuZEludChuVmVydGljZXMsIHRoaXMucmFuZG9tKTtcbiAgICAgICAgICAgICAgICBjb25zdCBvdGhlciA9IHRhaWxFbWJlZGRpbmdba107XG4gICAgICAgICAgICAgICAgY29uc3QgZGlzdFNxdWFyZWQgPSByRGlzdChjdXJyZW50LCBvdGhlcik7XG4gICAgICAgICAgICAgICAgbGV0IGdyYWRDb2VmZiA9IDAuMDtcbiAgICAgICAgICAgICAgICBpZiAoZGlzdFNxdWFyZWQgPiAwLjApIHtcbiAgICAgICAgICAgICAgICAgICAgZ3JhZENvZWZmID0gMi4wICogZ2FtbWEgKiBiO1xuICAgICAgICAgICAgICAgICAgICBncmFkQ29lZmYgLz1cbiAgICAgICAgICAgICAgICAgICAgICAgICgwLjAwMSArIGRpc3RTcXVhcmVkKSAqIChhICogTWF0aC5wb3coZGlzdFNxdWFyZWQsIGIpICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGogPT09IGspIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGdyYWREID0gNC4wO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZ3JhZENvZWZmID4gMC4wKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBncmFkRCA9IGNsaXAoZ3JhZENvZWZmICogKGN1cnJlbnRbZF0gLSBvdGhlcltkXSksIGNsaXBWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFtkXSArPSBncmFkRCAqIGFscGhhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGVbaV0gKz0gbk5lZ1NhbXBsZXMgKiBlcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZVtpXTtcbiAgICAgICAgfVxuICAgICAgICBvcHRpbWl6YXRpb25TdGF0ZS5hbHBoYSA9IGluaXRpYWxBbHBoYSAqICgxLjAgLSBuIC8gbkVwb2Nocyk7XG4gICAgICAgIG9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaCArPSAxO1xuICAgICAgICByZXR1cm4gaGVhZEVtYmVkZGluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW1wcm92ZSBhbiBlbWJlZGRpbmcgdXNpbmcgc3RvY2hhc3RpYyBncmFkaWVudCBkZXNjZW50IHRvIG1pbmltaXplIHRoZVxuICAgICAqIGZ1enp5IHNldCBjcm9zcyBlbnRyb3B5IGJldHdlZW4gdGhlIDEtc2tlbGV0b25zIG9mIHRoZSBoaWdoIGRpbWVuc2lvbmFsXG4gICAgICogYW5kIGxvdyBkaW1lbnNpb25hbCBmdXp6eSBzaW1wbGljaWFsIHNldHMuIEluIHByYWN0aWNlIHRoaXMgaXMgZG9uZSBieVxuICAgICAqIHNhbXBsaW5nIGVkZ2VzIGJhc2VkIG9uIHRoZWlyIG1lbWJlcnNoaXAgc3RyZW5ndGggKHdpdGggdGhlICgxLXApIHRlcm1zXG4gICAgICogY29taW5nIGZyb20gbmVnYXRpdmUgc2FtcGxpbmcgc2ltaWxhciB0byB3b3JkMnZlYykuXG4gICAgICovXG4gICAgb3B0aW1pemVMYXlvdXRBc3luYyhlcG9jaENhbGxiYWNrID0gKCkgPT4gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RlcCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IG5FcG9jaHMsIGN1cnJlbnRFcG9jaCB9ID0gdGhpcy5vcHRpbWl6YXRpb25TdGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWJlZGRpbmcgPSB0aGlzLm9wdGltaXplTGF5b3V0U3RlcChjdXJyZW50RXBvY2gpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcG9jaENvbXBsZXRlZCA9IHRoaXMub3B0aW1pemF0aW9uU3RhdGUuY3VycmVudEVwb2NoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRTdG9wID0gZXBvY2hDYWxsYmFjayhlcG9jaENvbXBsZXRlZCkgPT09IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0ZpbmlzaGVkID0gZXBvY2hDb21wbGV0ZWQgPT09IG5FcG9jaHM7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkU3RvcCAmJiAhaXNGaW5pc2hlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBzdGVwKCksIDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoaXNGaW5pc2hlZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBzdGVwKCksIDApO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW1wcm92ZSBhbiBlbWJlZGRpbmcgdXNpbmcgc3RvY2hhc3RpYyBncmFkaWVudCBkZXNjZW50IHRvIG1pbmltaXplIHRoZVxuICAgICAqIGZ1enp5IHNldCBjcm9zcyBlbnRyb3B5IGJldHdlZW4gdGhlIDEtc2tlbGV0b25zIG9mIHRoZSBoaWdoIGRpbWVuc2lvbmFsXG4gICAgICogYW5kIGxvdyBkaW1lbnNpb25hbCBmdXp6eSBzaW1wbGljaWFsIHNldHMuIEluIHByYWN0aWNlIHRoaXMgaXMgZG9uZSBieVxuICAgICAqIHNhbXBsaW5nIGVkZ2VzIGJhc2VkIG9uIHRoZWlyIG1lbWJlcnNoaXAgc3RyZW5ndGggKHdpdGggdGhlICgxLXApIHRlcm1zXG4gICAgICogY29taW5nIGZyb20gbmVnYXRpdmUgc2FtcGxpbmcgc2ltaWxhciB0byB3b3JkMnZlYykuXG4gICAgICovXG4gICAgb3B0aW1pemVMYXlvdXQoZXBvY2hDYWxsYmFjayA9ICgpID0+IHRydWUpIHtcbiAgICAgICAgbGV0IGlzRmluaXNoZWQgPSBmYWxzZTtcbiAgICAgICAgbGV0IGVtYmVkZGluZyA9IFtdO1xuICAgICAgICB3aGlsZSAoIWlzRmluaXNoZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgbkVwb2NocywgY3VycmVudEVwb2NoIH0gPSB0aGlzLm9wdGltaXphdGlvblN0YXRlO1xuICAgICAgICAgICAgZW1iZWRkaW5nID0gdGhpcy5vcHRpbWl6ZUxheW91dFN0ZXAoY3VycmVudEVwb2NoKTtcbiAgICAgICAgICAgIGNvbnN0IGVwb2NoQ29tcGxldGVkID0gdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5jdXJyZW50RXBvY2g7XG4gICAgICAgICAgICBjb25zdCBzaG91bGRTdG9wID0gZXBvY2hDYWxsYmFjayhlcG9jaENvbXBsZXRlZCkgPT09IGZhbHNlO1xuICAgICAgICAgICAgaXNGaW5pc2hlZCA9IGVwb2NoQ29tcGxldGVkID09PSBuRXBvY2hzIHx8IHNob3VsZFN0b3A7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVtYmVkZGluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbnVtYmVyIG9mIGVwb2NocyBmb3Igb3B0aW1pemluZyB0aGUgcHJvamVjdGlvbi5cbiAgICAgKiBOT1RFOiBUaGlzIGhldXJpc3RpYyBkaWZmZXJzIGZyb20gdGhlIHB5dGhvbiB2ZXJzaW9uXG4gICAgICovXG4gICAgZ2V0TkVwb2NocygpIHtcbiAgICAgICAgY29uc3QgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgICAgICBpZiAodGhpcy5uRXBvY2hzID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubkVwb2NocztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWdyYXBoKSB7XG4gICAgICAgICAgICByZXR1cm4gMjAwO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IGdyYXBoLm5Sb3dzO1xuICAgICAgICBpZiAobGVuZ3RoIDw9IDI1MDApIHtcbiAgICAgICAgICAgIHJldHVybiA1MDA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobGVuZ3RoIDw9IDUwMDApIHtcbiAgICAgICAgICAgIHJldHVybiA0MDA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobGVuZ3RoIDw9IDc1MDApIHtcbiAgICAgICAgICAgIHJldHVybiAzMDA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMjAwO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGV1Y2xpZGVhbih4LCB5KSB7XG4gICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc3VsdCArPSAoeFtpXSAtIHlbaV0pICoqIDI7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnNxcnQocmVzdWx0KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBudW1lcmljKHgsIHkpIHtcbiAgICBjb25zdCByZXN1bHQgPSBNYXRoLmFicyh4IC0geSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjb3NpbmUoeCwgeSkge1xuICAgIGxldCByZXN1bHQgPSAwLjA7XG4gICAgbGV0IG5vcm1YID0gMC4wO1xuICAgIGxldCBub3JtWSA9IDAuMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0ICs9IHhbaV0gKiB5W2ldO1xuICAgICAgICBub3JtWCArPSB4W2ldICoqIDI7XG4gICAgICAgIG5vcm1ZICs9IHlbaV0gKiogMjtcbiAgICB9XG4gICAgaWYgKG5vcm1YID09PSAwICYmIG5vcm1ZID09PSAwKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBlbHNlIGlmIChub3JtWCA9PT0gMCB8fCBub3JtWSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gMS4wO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDEuMCAtIHJlc3VsdCAvIE1hdGguc3FydChub3JtWCAqIG5vcm1ZKTtcbiAgICB9XG59XG4vKipcbiAqIEFuIGludGVyZmFjZSByZXByZXNlbnRpbmcgdGhlIG9wdGltaXphdGlvbiBzdGF0ZSB0cmFja2VkIGJldHdlZW4gc3RlcHMgb2ZcbiAqIHRoZSBTR0Qgb3B0aW1pemF0aW9uXG4gKi9cbmNsYXNzIE9wdGltaXphdGlvblN0YXRlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50RXBvY2ggPSAwO1xuICAgICAgICAvLyBEYXRhIHRyYWNrZWQgZHVyaW5nIG9wdGltaXphdGlvbiBzdGVwcy5cbiAgICAgICAgdGhpcy5oZWFkRW1iZWRkaW5nID0gW107XG4gICAgICAgIHRoaXMudGFpbEVtYmVkZGluZyA9IFtdO1xuICAgICAgICB0aGlzLmhlYWQgPSBbXTtcbiAgICAgICAgdGhpcy50YWlsID0gW107XG4gICAgICAgIHRoaXMuZXBvY2hzUGVyU2FtcGxlID0gW107XG4gICAgICAgIHRoaXMuZXBvY2hPZk5leHRTYW1wbGUgPSBbXTtcbiAgICAgICAgdGhpcy5lcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlID0gW107XG4gICAgICAgIHRoaXMuZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGUgPSBbXTtcbiAgICAgICAgdGhpcy5tb3ZlT3RoZXIgPSB0cnVlO1xuICAgICAgICB0aGlzLmluaXRpYWxBbHBoYSA9IDEuMDtcbiAgICAgICAgdGhpcy5hbHBoYSA9IDEuMDtcbiAgICAgICAgdGhpcy5nYW1tYSA9IDEuMDtcbiAgICAgICAgdGhpcy5hID0gMS41NzY5NDM0NjAzMTEzMDc3O1xuICAgICAgICB0aGlzLmIgPSAwLjg5NTA2MDg3NzkxMDk3MzM7XG4gICAgICAgIHRoaXMuZGltID0gMjtcbiAgICAgICAgdGhpcy5uRXBvY2hzID0gNTAwO1xuICAgICAgICB0aGlzLm5WZXJ0aWNlcyA9IDA7XG4gICAgfVxufVxuLyoqXG4gKiBTdGFuZGFyZCBjbGFtcGluZyBvZiBhIHZhbHVlIGludG8gYSBmaXhlZCByYW5nZVxuICovXG5mdW5jdGlvbiBjbGlwKHgsIGNsaXBWYWx1ZSkge1xuICAgIGlmICh4ID4gY2xpcFZhbHVlKVxuICAgICAgICByZXR1cm4gY2xpcFZhbHVlO1xuICAgIGVsc2UgaWYgKHggPCAtY2xpcFZhbHVlKVxuICAgICAgICByZXR1cm4gLWNsaXBWYWx1ZTtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB4O1xufVxuLyoqXG4gKiBSZWR1Y2VkIEV1Y2xpZGVhbiBkaXN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gckRpc3QoeCwgeSkge1xuICAgIGxldCByZXN1bHQgPSAwLjA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc3VsdCArPSBNYXRoLnBvdyh4W2ldIC0geVtpXSwgMik7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4vKipcbiAqIEZpdCBhLCBiIHBhcmFtcyBmb3IgdGhlIGRpZmZlcmVudGlhYmxlIGN1cnZlIHVzZWQgaW4gbG93ZXJcbiAqIGRpbWVuc2lvbmFsIGZ1enp5IHNpbXBsaWNpYWwgY29tcGxleCBjb25zdHJ1Y3Rpb24uIFdlIHdhbnQgdGhlXG4gKiBzbW9vdGggY3VydmUgKGZyb20gYSBwcmUtZGVmaW5lZCBmYW1pbHkgd2l0aCBzaW1wbGUgZ3JhZGllbnQpIHRoYXRcbiAqIGJlc3QgbWF0Y2hlcyBhbiBvZmZzZXQgZXhwb25lbnRpYWwgZGVjYXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQUJQYXJhbXMoc3ByZWFkLCBtaW5EaXN0KSB7XG4gICAgY29uc3QgY3VydmUgPSAoW2EsIGJdKSA9PiAoeCkgPT4ge1xuICAgICAgICByZXR1cm4gMS4wIC8gKDEuMCArIGEgKiB4ICoqICgyICogYikpO1xuICAgIH07XG4gICAgY29uc3QgeHYgPSB1dGlsc1xuICAgICAgICAubGluZWFyKDAsIHNwcmVhZCAqIDMsIDMwMClcbiAgICAgICAgLm1hcCh2YWwgPT4gKHZhbCA8IG1pbkRpc3QgPyAxLjAgOiB2YWwpKTtcbiAgICBjb25zdCB5diA9IHV0aWxzLnplcm9zKHh2Lmxlbmd0aCkubWFwKCh2YWwsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGd0ZSA9IHh2W2luZGV4XSA+PSBtaW5EaXN0O1xuICAgICAgICByZXR1cm4gZ3RlID8gTWF0aC5leHAoLSh4dltpbmRleF0gLSBtaW5EaXN0KSAvIHNwcmVhZCkgOiB2YWw7XG4gICAgfSk7XG4gICAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IFswLjUsIDAuNV07XG4gICAgY29uc3QgZGF0YSA9IHsgeDogeHYsIHk6IHl2IH07XG4gICAgLy8gRGVmYXVsdCBvcHRpb25zIGZvciB0aGUgYWxnb3JpdGhtIChmcm9tIGdpdGh1YiBleGFtcGxlKVxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIGRhbXBpbmc6IDEuNSxcbiAgICAgICAgaW5pdGlhbFZhbHVlcyxcbiAgICAgICAgZ3JhZGllbnREaWZmZXJlbmNlOiAxMGUtMixcbiAgICAgICAgbWF4SXRlcmF0aW9uczogMTAwLFxuICAgICAgICBlcnJvclRvbGVyYW5jZTogMTBlLTMsXG4gICAgfTtcbiAgICBjb25zdCB7IHBhcmFtZXRlclZhbHVlcyB9ID0gTE0oZGF0YSwgY3VydmUsIG9wdGlvbnMpO1xuICAgIGNvbnN0IFthLCBiXSA9IHBhcmFtZXRlclZhbHVlcztcbiAgICByZXR1cm4geyBhLCBiIH07XG59XG4vKipcbiAqIFVuZGVyIHRoZSBhc3N1bXB0aW9uIG9mIGNhdGVnb3JpY2FsIGRpc3RhbmNlIGZvciB0aGUgaW50ZXJzZWN0aW5nXG4gKiBzaW1wbGljaWFsIHNldCBwZXJmb3JtIGEgZmFzdCBpbnRlcnNlY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmYXN0SW50ZXJzZWN0aW9uKGdyYXBoLCB0YXJnZXQsIHVua25vd25EaXN0ID0gMS4wLCBmYXJEaXN0ID0gNS4wKSB7XG4gICAgcmV0dXJuIGdyYXBoLm1hcCgodmFsdWUsIHJvdywgY29sKSA9PiB7XG4gICAgICAgIGlmICh0YXJnZXRbcm93XSA9PT0gLTEgfHwgdGFyZ2V0W2NvbF0gPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgKiBNYXRoLmV4cCgtdW5rbm93bkRpc3QpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRhcmdldFtyb3ddICE9PSB0YXJnZXRbY29sXSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlICogTWF0aC5leHAoLWZhckRpc3QpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfSk7XG59XG4vKipcbiAqIFJlc2V0IHRoZSBsb2NhbCBjb25uZWN0aXZpdHkgcmVxdWlyZW1lbnQgLS0gZWFjaCBkYXRhIHNhbXBsZSBzaG91bGRcbiAqIGhhdmUgY29tcGxldGUgY29uZmlkZW5jZSBpbiBhdCBsZWFzdCBvbmUgMS1zaW1wbGV4IGluIHRoZSBzaW1wbGljaWFsIHNldC5cbiAqIFdlIGNhbiBlbmZvcmNlIHRoaXMgYnkgbG9jYWxseSByZXNjYWxpbmcgY29uZmlkZW5jZXMsIGFuZCB0aGVuIHJlbWVyZ2luZyB0aGVcbiAqIGRpZmZlcmVudCBsb2NhbCBzaW1wbGljaWFsIHNldHMgdG9nZXRoZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNldExvY2FsQ29ubmVjdGl2aXR5KHNpbXBsaWNpYWxTZXQpIHtcbiAgICBzaW1wbGljaWFsU2V0ID0gbWF0cml4Lm5vcm1hbGl6ZShzaW1wbGljaWFsU2V0LCBcIm1heFwiIC8qIG1hdHJpeC5Ob3JtVHlwZS5tYXggKi8pO1xuICAgIGNvbnN0IHRyYW5zcG9zZSA9IG1hdHJpeC50cmFuc3Bvc2Uoc2ltcGxpY2lhbFNldCk7XG4gICAgY29uc3QgcHJvZE1hdHJpeCA9IG1hdHJpeC5wYWlyd2lzZU11bHRpcGx5KHRyYW5zcG9zZSwgc2ltcGxpY2lhbFNldCk7XG4gICAgc2ltcGxpY2lhbFNldCA9IG1hdHJpeC5hZGQoc2ltcGxpY2lhbFNldCwgbWF0cml4LnN1YnRyYWN0KHRyYW5zcG9zZSwgcHJvZE1hdHJpeCkpO1xuICAgIHJldHVybiBtYXRyaXguZWxpbWluYXRlWmVyb3Moc2ltcGxpY2lhbFNldCk7XG59XG4vKipcbiAqIEdpdmVuIGluZGljZXMgYW5kIHdlaWdodHMgYW5kIGFuIG9yaWdpbmFsIGVtYmVkZGluZ3NcbiAqIGluaXRpYWxpemUgdGhlIHBvc2l0aW9ucyBvZiBuZXcgcG9pbnRzIHJlbGF0aXZlIHRvIHRoZVxuICogaW5kaWNlcyBhbmQgd2VpZ2h0cyAob2YgdGhlaXIgbmVpZ2hib3JzIGluIHRoZSBzb3VyY2UgZGF0YSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0VHJhbnNmb3JtKGluZGljZXMsIHdlaWdodHMsIGVtYmVkZGluZykge1xuICAgIGNvbnN0IHJlc3VsdCA9IHV0aWxzXG4gICAgICAgIC56ZXJvcyhpbmRpY2VzLmxlbmd0aClcbiAgICAgICAgLm1hcCh6ID0+IHV0aWxzLnplcm9zKGVtYmVkZGluZ1swXS5sZW5ndGgpKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBpbmRpY2VzWzBdLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IGVtYmVkZGluZ1swXS5sZW5ndGg7IGQrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBpbmRpY2VzW2ldW2pdO1xuICAgICAgICAgICAgICAgIHJlc3VsdFtpXVtkXSArPSB3ZWlnaHRzW2ldW2pdICogZW1iZWRkaW5nW2FdW2RdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkVzFoY0M1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJblZ0WVhBdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUU3T3pzN096czdPenM3T3pzN096czdPMGRCYVVKSE8wRkJSVWc3T3pzN08wZEJTMGM3UVVGRlNEczdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenRIUVN0Q1J6dEJRVVZJTEU5QlFVOHNTMEZCU3l4SlFVRkpMRTFCUVUwc1VVRkJVU3hEUVVGRE8wRkJReTlDTEU5QlFVOHNTMEZCU3l4TlFVRk5MRTFCUVUwc1ZVRkJWU3hEUVVGRE8wRkJRMjVETEU5QlFVOHNTMEZCU3l4VFFVRlRMRTFCUVUwc1kwRkJZeXhEUVVGRE8wRkJRekZETEU5QlFVOHNTMEZCU3l4SlFVRkpMRTFCUVUwc1VVRkJVU3hEUVVGRE8wRkJReTlDTEU5QlFVOHNTMEZCU3l4TFFVRkxMRTFCUVUwc1UwRkJVeXhEUVVGRE8wRkJRMnBETEU5QlFVOHNSVUZCUlN4TlFVRk5MSGRDUVVGM1FpeERRVUZETzBGQllYaERMRTFCUVUwc2EwSkJRV3RDTEVkQlFVY3NTVUZCU1N4RFFVRkRPMEZCUTJoRExFMUJRVTBzWjBKQlFXZENMRWRCUVVjc1NVRkJTU3hEUVVGRE8wRkJiVWc1UWpzN096czdPenM3T3pzN096czdPenM3T3p0SFFXMUNSenRCUVVOSUxFMUJRVTBzVDBGQlR5eEpRVUZKTzBsQk1rTm1MRWxCUVVrc1UwRkJVenRSUVVOWUxFOUJRVThzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXp0SlFVTjZRaXhEUVVGRE8wbEJRMFFzV1VGQldTeFRRVUY1UWl4RlFVRkZPMUZCTjBNdlFpeHBRa0ZCV1N4SFFVRkhMRWRCUVVjc1EwRkJRenRSUVVOdVFpeHpRa0ZCYVVJc1IwRkJSeXhIUVVGSExFTkJRVU03VVVGRGVFSXNXVUZCVHl4SFFVRkhMRWRCUVVjc1EwRkJRenRSUVVOa0xHZENRVUZYTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTJoQ0xGbEJRVThzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEV2l4bFFVRlZMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMmhDTEhWQ1FVRnJRaXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU4yUWl4WFFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dFJRVU55UWl4elFrRkJhVUlzUjBGQlJ5eEhRVUZITEVOQlFVTTdVVUZEZUVJc2EwSkJRV0VzUjBGQlJ5eEhRVUZITEVOQlFVTTdVVUZEY0VJc1YwRkJUU3hIUVVGSExFZEJRVWNzUTBGQlF6dFJRVU5pTEhWQ1FVRnJRaXhIUVVGSExFZEJRVWNzUTBGQlF6dFJRVVZxUXl3clFrRkJLMEk3VVVGRGRrSXNhVUpCUVZrc1owUkJRVFJDTzFGQlEzaERMR2xDUVVGWkxFZEJRVWNzUjBGQlJ5eERRVUZETzFGQlEyNUNMSEZDUVVGblFpeEhRVUZITEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNN1VVRkZia01zWlVGQlZTeEhRVUZsTEU5QlFVOHNRMEZCUXp0UlFWTnFReXhyUWtGQllTeEhRVUZITEV0QlFVc3NRMEZCUXp0UlFVTjBRaXhoUVVGUkxFZEJRVzlDTEVWQlFVVXNRMEZCUXp0UlFWTjJReXh6UWtGQmMwSTdVVUZEWkN4alFVRlRMRWRCUVdVc1JVRkJSU3hEUVVGRE8xRkJRek5DTEhOQ1FVRnBRaXhIUVVGSExFbEJRVWtzYVVKQlFXbENMRVZCUVVVc1EwRkJRenRSUVU5c1JDeE5RVUZOTEZGQlFWRXNSMEZCUnl4RFFVRkRMRWRCUVhsQ0xFVkJRVVVzUlVGQlJUdFpRVU0zUXl4WlFVRlpPMWxCUTFvc1NVRkJTU3hOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NVMEZCVXp0blFrRkJSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRM3BFTEVOQlFVTXNRMEZCUXp0UlFVVkdMRkZCUVZFc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dFJRVU4yUWl4UlFVRlJMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU03VVVGRGVrSXNVVUZCVVN4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVOQlFVTTdVVUZET1VJc1VVRkJVU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzFGQlEzQkNMRkZCUVZFc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF6dFJRVU40UWl4UlFVRlJMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03VVVGRGNFSXNVVUZCVVN4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8xRkJRM1pDTEZGQlFWRXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eERRVUZETzFGQlF5OUNMRkZCUVZFc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dFJRVU51UWl4UlFVRlJMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNRMEZCUXp0UlFVTTVRaXhSUVVGUkxFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTTdVVUZETVVJc1VVRkJVU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzFGQlEyNUNMRkZCUVZFc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4RFFVRkRPMGxCUTJwRExFTkJRVU03U1VGRlJEczdUMEZGUnp0SlFVTklMRWRCUVVjc1EwRkJReXhEUVVGVE8xRkJRMWdzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOMFFpeEpRVUZKTEVOQlFVTXNZMEZCWXl4RlFVRkZMRU5CUVVNN1VVRkZkRUlzVDBGQlR5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRPMGxCUTNoQ0xFTkJRVU03U1VGRlJEczdPMDlCUjBjN1NVRkRTQ3hMUVVGTExFTkJRVU1zVVVGQlVTeERRVU5hTEVOQlFWTXNSVUZEVkN4WFFVRnZSQ3hIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTzFGQlJUbEVMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGZEVJc1RVRkJUU3hKUVVGSkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03VVVGRGVrTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRE8wbEJRM2hDTEVOQlFVTTdTVUZGUkRzN1QwRkZSenRKUVVOSUxIVkNRVUYxUWl4RFFVRkRMRU5CUVZjc1JVRkJSU3hUUVVFclFpeEZRVUZGTzFGQlEzQkZMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlExZ3NTVUZCU1N4RFFVRkRMRmxCUVZrc1IwRkJSeXhOUVVGTkxFTkJRVU1zV1VGQldTeEpRVUZKTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNN1VVRkROMFFzU1VGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4TlFVRk5MRU5CUVVNc1dVRkJXU3hKUVVGSkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTTdVVUZETjBRc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4SFFVRkhMRTFCUVUwc1EwRkJReXhuUWtGQlowSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTTdTVUZETTBVc1EwRkJRenRKUVVWRU96dFBRVVZITzBsQlEwZ3NhVUpCUVdsQ0xFTkJRVU1zVlVGQmMwSXNSVUZCUlN4WlFVRjNRanRSUVVOb1JTeEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRlZCUVZVc1EwRkJRenRSUVVNM1FpeEpRVUZKTEVOQlFVTXNXVUZCV1N4SFFVRkhMRmxCUVZrc1EwRkJRenRKUVVOdVF5eERRVUZETzBsQlJVUTdPenM3TzA5QlMwYzdTVUZEU0N4aFFVRmhMRU5CUVVNc1EwRkJVenRSUVVOeVFpeEpRVUZKTEVOQlFVTXNRMEZCUXl4TlFVRk5MRWxCUVVrc1NVRkJTU3hEUVVGRExGVkJRVlVzUlVGQlJUdFpRVU12UWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExESkNRVUV5UWl4RFFVRkRMRU5CUVVNc1RVRkJUU3d5UWtGQk1rSXNTVUZCU1N4RFFVRkRMRlZCUVZVc2MwUkJRWE5FTEVOQlFVTXNRMEZCUXp0VFFVTjBTanRSUVVWRUxEUkZRVUUwUlR0UlFVTTFSU3hKUVVGSkxFbEJRVWtzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhoUVVGaExFVkJRVVU3V1VGRGRFTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU03VTBGRE1VSTdVVUZGUkN4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVVZZTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlR0WlFVTXhReXhOUVVGTkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZETlVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUjBGQlJ5eFZRVUZWTEVOQlFVTXNWVUZCVlN4RFFVRkRPMWxCUTNoRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NWVUZCVlN4RFFVRkRMRmxCUVZrc1EwRkJRenRUUVVNM1F6dFJRVVZFTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExHdENRVUZyUWl4RFFVTnNReXhEUVVGRExFVkJRMFFzU1VGQlNTeERRVUZETEZWQlFWVXNSVUZEWml4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVOdVFpeERRVUZETzFGQlJVWXNlVVJCUVhsRU8xRkJRM3BFTEVsQlFVa3NRMEZCUXl4aFFVRmhMRVZCUVVVc1EwRkJRenRSUVVOeVFpeEpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGTTBNc2VVUkJRWGxFTzFGQlEzcEVMRWxCUVVrc1EwRkJReXh0UTBGQmJVTXNSVUZCUlN4RFFVRkRPMUZCUlRORExFMUJRVTBzUlVGRFNpeEpRVUZKTEVWQlEwb3NTVUZCU1N4RlFVTktMR1ZCUVdVc1IwRkRhRUlzUjBGQlJ5eEpRVUZKTEVOQlFVTXNaME5CUVdkRExFVkJRVVVzUTBGQlF6dFJRVVUxUXl4eFEwRkJjVU03VVVGRGNrTXNTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkRia01zU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTTdVVUZEYmtNc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMR1ZCUVdVc1IwRkJSeXhsUVVGbExFTkJRVU03VVVGRmVrUXNlVU5CUVhsRE8xRkJRM3BETEVsQlFVa3NRMEZCUXl4elFrRkJjMElzUlVGQlJTeERRVUZETzFGQlF6bENMRWxCUVVrc1EwRkJReXd3UWtGQk1FSXNSVUZCUlN4RFFVRkRPMUZCUTJ4RExFbEJRVWtzUTBGQlF5eGhRVUZoTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUlRGQ0xFOUJRVThzU1VGQlNTeERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMGxCUXpOQ0xFTkJRVU03U1VGRlR5eGhRVUZoTzFGQlEyNUNMRTFCUVUwc1JVRkJSU3haUVVGWkxFVkJRVVVzWTBGQll5eEZRVUZGTEVkQlFVY3NVMEZCVXl4RFFVRkRMRzFDUVVGdFFpeERRVU53UlN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVOb1FpeERRVUZETzFGQlEwWXNTVUZCU1N4RFFVRkRMRmxCUVZrc1IwRkJSeXhaUVVGWkxFTkJRVU03VVVGRGFrTXNTVUZCU1N4RFFVRkRMR05CUVdNc1IwRkJSeXhqUVVGakxFTkJRVU03VVVGRGNrTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhUUVVGVExFTkJRVU1zZFVKQlFYVkNMRU5CUVVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzBsQlEyNUZMRU5CUVVNN1NVRkZUeXhsUVVGbExFTkJRVU1zUTBGQlV6dFJRVU12UWl4TlFVRk5MRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVlVGQlZ5eERRVUZETzFGQlEzQkRMRTFCUVUwc1dVRkJXU3hIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZoTEVOQlFVTTdVVUZEZUVNc1RVRkJUU3hKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU5zUXl4TlFVRk5MRmRCUVZjc1IwRkJSeXhKUVVGSkxFMUJRVTBzUTBGQlF5eFpRVUZaTEVOQlFVTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZET1VRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRlZCUVZVc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZETVVNc1RVRkJUU3hIUVVGSExFZEJRVWNzVlVGQlZTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUXpGQ0xFMUJRVTBzVTBGQlV5eEhRVUZITEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOc1F5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRuUWtGRGJrTXNUVUZCVFN4UlFVRlJMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTjRRaXhOUVVGTkxGRkJRVkVzUjBGQlJ5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRemxDTEVsQlFVa3NVVUZCVVN4SFFVRkhMRU5CUVVNc1JVRkJSVHR2UWtGRGFFSXNWMEZCVnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzVVVGQlVTeEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRPMmxDUVVONFF6dGhRVU5HTzFOQlEwWTdVVUZGUkN4TlFVRk5MRk5CUVZNc1IwRkJSeXhOUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRPMUZCUTJoRUxFOUJRVThzVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4WFFVRlhMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU03U1VGRGFFUXNRMEZCUXp0SlFVVkVPenRQUVVWSE8wbEJRMGdzVTBGQlV5eERRVUZETEZkQlFXMUNPMUZCUXpOQ0xESkNRVUV5UWp0UlFVTXpRaXhOUVVGTkxFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNaQ0xFbEJRVWtzVDBGQlR5eExRVUZMTEZOQlFWTXNTVUZCU1N4UFFVRlBMRU5CUVVNc1RVRkJUU3hMUVVGTExFTkJRVU1zUlVGQlJUdFpRVU5xUkN4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExIVkNRVUYxUWl4RFFVRkRMRU5CUVVNN1UwRkRNVU03VVVGRlJDeEpRVUZKTEZWQlFWVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVUZETEVOQlFVTTdVVUZEZGtVc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1JVRkJSU3hWUVVGVkxFTkJRVU1zUTBGQlF6dFJRVU5zUkN4TlFVRk5MRWxCUVVrc1IwRkJSeXhUUVVGVExFTkJRVU1zWjBKQlFXZENMRU5CUTNKRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlEySXNUMEZCVHl4RlFVTlFMRmRCUVZjc1JVRkRXQ3hWUVVGVkxFVkJRMVlzU1VGQlNTeERRVUZETEdOQlFXTXNSVUZEYmtJc1NVRkJTU3hEUVVGRExGbEJRVmtzUlVGRGFrSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkRXaXhEUVVGRE8xRkJSVVlzVFVGQlRTeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFVkJRVVVzU1VGQlNTeERRVUZETEZkQlFWY3NSVUZCUlN4SlFVRkpMRVZCUVVVc1YwRkJWeXhEUVVGRExFTkJRVU03VVVGRmVrVXNTVUZCU1N4RlFVRkZMRTlCUVU4c1JVRkJSU3hQUVVGUExFVkJRVVVzVTBGQlV5eEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVVU1UkN4UFFVRlBMRWRCUVVjc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM2hFTEZOQlFWTXNSMEZCUnl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZOVVFzVFVGQlRTeDVRa0ZCZVVJc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRNVVVzVFVGQlRTeEZRVUZGTEUxQlFVMHNSVUZCUlN4SlFVRkpMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUXpkRExGTkJRVk1zUlVGRFZDeEpRVUZKTEVOQlFVTXNWVUZCVlN4RlFVTm1MSGxDUVVGNVFpeERRVU14UWl4RFFVRkRPMUZCUlVZc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExEQkNRVUV3UWl4RFFVTXhSQ3hQUVVGUExFVkJRMUFzVTBGQlV5eEZRVU5VTEUxQlFVMHNSVUZEVGl4SlFVRkpMRU5CUTB3c1EwRkJRenRSUVVWR0xFMUJRVTBzU1VGQlNTeEhRVUZITEVOQlFVTXNWMEZCVnl4RFFVRkRMRTFCUVUwc1JVRkJSU3hQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEYkVRc1NVRkJTU3hMUVVGTExFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNXVUZCV1N4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUlRWRUxHOUZRVUZ2UlR0UlFVTndSU3h6UlVGQmMwVTdVVUZEZEVVc0swUkJRU3RFTzFGQlJTOUVMRTFCUVUwc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF5eFRRVUZUTEVOQlFVTXNTMEZCU3l4blEwRkJjVUlzUTBGQlF6dFJRVVV6UkN4TlFVRk5MRk5CUVZNc1IwRkJSeXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUTNoRExFMUJRVTBzVDBGQlR5eEhRVUZITEZkQlFWY3NRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkZia01zVFVGQlRTeFJRVUZSTEVkQlFVY3NTMEZCU3l4RFFVRkRMRk5CUVZNc1EwRkRPVUlzVTBGQlV5eERRVUZETEU5QlFVOHNSVUZEYWtJc1QwRkJUeXhGUVVOUUxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlEyaENMRU5CUVVNN1VVRkZSaXhOUVVGTkxGRkJRVkVzUjBGQlJ5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVTTVRaXhUUVVGVExFTkJRVU1zVFVGQlRTeEZRVU5vUWl4UFFVRlBMRVZCUTFBc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGRGFFSXNRMEZCUXp0UlFVVkdMRTFCUVUwc1UwRkJVeXhIUVVGSExHRkJRV0VzUTBGQlF5eFJRVUZSTEVWQlFVVXNVVUZCVVN4RlFVRkZMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dFJRVVZ3UlN4TlFVRk5MRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR6dFpRVU14UWl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eERRVUZETzFsQlEyeENMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eEpRVUZKTEV0QlFVczdaMEpCUTNSQ0xFTkJRVU1zUTBGQlF5eEhRVUZITzJkQ1FVTk1MRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03VVVGRlVDeE5RVUZOTEZGQlFWRXNSMEZCUnl4TFFVRkxPMkZCUTI1Q0xGTkJRVk1zUlVGQlJUdGhRVU5ZTEUxQlFVMHNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU53UkN4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1MwRkJTeXhIUVVGSExGRkJRVkVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTnlSU3hMUVVGTExFZEJRVWNzVFVGQlRTeERRVUZETEdOQlFXTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVWeVF5eE5RVUZOTEdWQlFXVXNSMEZCUnl4SlFVRkpMRU5CUVVNc2JVSkJRVzFDTEVOQlF6bERMRXRCUVVzc1EwRkJReXhUUVVGVExFVkJRVVVzUlVGRGFrSXNUMEZCVHl4RFFVTlNMRU5CUVVNN1VVRkRSaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1VVRkROMElzVFVGQlRTeEpRVUZKTEVkQlFVY3NTMEZCU3l4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8xRkJSVGRDTEc5RlFVRnZSVHRSUVVOd1JTeEpRVUZKTEVOQlFVTXNhVU5CUVdsRExFTkJRVU03V1VGRGNrTXNZVUZCWVN4RlFVRkZMRk5CUVZNN1dVRkRlRUlzWVVGQllTeEZRVUZGTEVsQlFVa3NRMEZCUXl4VFFVRlRPMWxCUXpkQ0xFbEJRVWs3V1VGRFNpeEpRVUZKTzFsQlEwb3NXVUZCV1N4RlFVRkZMRU5CUVVNN1dVRkRaaXhQUVVGUE8xbEJRMUFzVTBGQlV5eEZRVUZGTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRE4wSXNaVUZCWlR0VFFVTm9RaXhEUVVGRExFTkJRVU03VVVGRFNDeEpRVUZKTEVOQlFVTXNNRUpCUVRCQ0xFVkJRVVVzUTBGQlF6dFJRVVZzUXl4UFFVRlBMRWxCUVVrc1EwRkJReXhqUVVGakxFVkJRVVVzUTBGQlF6dEpRVU12UWl4RFFVRkRPMGxCUlVRN096dFBRVWRITzBsQlEwc3NiVU5CUVcxRE8xRkJRM3BETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEzUkNMRWxCUVVrc1EwRkJReXhGUVVGRk8xbEJRMHdzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4TFFVRkxMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVU3WjBKQlEzcENMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zYVVOQlFXbERMRU5CUVVNc1EwRkJRenRoUVVOd1JEdFpRVVZFTEVsQlFVa3NTVUZCU1N4RFFVRkRMRmxCUVZrc2FVUkJRVFpDTEVWQlFVVTdaMEpCUTJ4RUxFMUJRVTBzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRWRCUVVjc1IwRkJSeXhEUVVGRE8yZENRVU51UXl4TlFVRk5MRTlCUVU4c1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETzJkQ1FVTjBSU3hKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4dlEwRkJiME1zUTBGRGNFUXNTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkRWaXhEUVVGRExFVkJRMFFzVDBGQlR5eERRVU5TTEVOQlFVTTdZVUZEU0R0WlFVTkVMR2xGUVVGcFJUdFRRVU5zUlR0SlFVTklMRU5CUVVNN1NVRkZSRHM3VDBGRlJ6dEpRVU5JTEVsQlFVazdVVUZEUml4TlFVRk5MRVZCUVVVc1dVRkJXU3hGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhEUVVGRE8xRkJSV2hFTEVsQlFVa3NXVUZCV1N4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFVkJRVVVzUlVGQlJUdFpRVU53UXl4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNN1UwRkRka003VVVGRFJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eFpRVUZaTEVOQlFVTTdTVUZETjBNc1EwRkJRenRKUVVWRU96dFBRVVZITzBsQlEwZ3NXVUZCV1R0UlFVTldMRTlCUVU4c1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF6dEpRVU40UWl4RFFVRkRPMGxCUlVRN096czdUMEZKUnp0SlFVTkxMR2RDUVVGblFpeERRVUZETEVOQlFWTTdVVUZEYUVNc1RVRkJUU3hGUVVGRkxGVkJRVlVzUlVGQlJTeFZRVUZWTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkRlRU1zVFVGQlRTeEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRlRMRVZCUVVVc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjBSQ3hOUVVGTkxHVkJRV1VzUjBGQlJ5eFRRVUZUTEVOQlFVTXNZVUZCWVN4RFFVRkRMRlZCUVZVc1JVRkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdVVUZGZWtVc2JVUkJRVzFFTzFGQlEyNUVMRTFCUVUwc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlV5eEZRVUZGTEVWQlFVVTdXVUZETVVJc1QwRkJUeXhEUVVGRExFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRka01zUTBGQlF5eERRVUZETzFGQlJVWXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkROMFFzVFVGQlRTeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRmJrVXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTXNSVUZCUlN4VlFVRlZMRVZCUVVVc1RVRkJUU3hGUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVVndSU3hOUVVGTkxGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dFJRVU53UkN4TlFVRk5MRVZCUVVVc1QwRkJUeXhGUVVGRkxFOUJRVThzUlVGQlJTeEhRVUZITEdWQlFXVXNRMEZETVVNc1EwRkJReXhGUVVORUxGTkJRVk1zUlVGRFZDeFZRVUZWTEVWQlExWXNUVUZCVFN4RFFVTlFMRU5CUVVNN1VVRkRSaXhQUVVGUExFVkJRVVVzVlVGQlZTeEZRVUZGTEU5QlFVOHNSVUZCUlN4WlFVRlpMRVZCUVVVc1QwRkJUeXhGUVVGRkxFTkJRVU03U1VGRGVFUXNRMEZCUXp0SlFVVkVPenM3T3pzN08wOUJUMGM3U1VGRFN5eHJRa0ZCYTBJc1EwRkRlRUlzUTBGQlV5eEZRVU5VTEZWQlFXdENMRVZCUTJ4Q0xHRkJRV0VzUjBGQlJ5eEhRVUZITzFGQlJXNUNMRTFCUVUwc1JVRkJSU3hWUVVGVkxFZEJRVWNzUlVGQlJTeEZRVUZGTEZsQlFWa3NSMEZCUnl4RlFVRkZMRVZCUVVVc2FVSkJRV2xDTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkZka1VzVFVGQlRTeEZRVUZGTEUxQlFVMHNSVUZCUlN4SlFVRkpMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUXpkRExGbEJRVmtzUlVGRFdpeFZRVUZWTEVWQlExWXNhVUpCUVdsQ0xFTkJRMnhDTEVOQlFVTTdVVUZGUml4TlFVRk5MRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc01FSkJRVEJDTEVOQlF6RkVMRlZCUVZVc1JVRkRWaXhaUVVGWkxFVkJRMW9zVFVGQlRTeEZRVU5PTEVsQlFVa3NRMEZEVEN4RFFVRkRPMUZCUlVZc1RVRkJUU3hKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU5zUXl4TlFVRk5MRmxCUVZrc1IwRkJSeXhKUVVGSkxFMUJRVTBzUTBGQlF5eFpRVUZaTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1JVRkJSU3hKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZGY2tVc1RVRkJUU3hUUVVGVExFZEJRVWNzVFVGQlRTeERRVUZETEZOQlFWTXNRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenRSUVVOcVJDeE5RVUZOTEZWQlFWVXNSMEZCUnl4TlFVRk5MRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNXVUZCV1N4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJSWEJGTEUxQlFVMHNRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4WlFVRlpMRVZCUVVVc1UwRkJVeXhEUVVGRExFVkJRVVVzVlVGQlZTeERRVUZETEVOQlFVTTdVVUZETTBVc1RVRkJUU3hEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEdOQlFXTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1lVRkJZU3hEUVVGRExFTkJRVU03VVVGRGJFUXNUVUZCVFN4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExHTkJRV01zUTBGQlF5eFZRVUZWTEVWQlFVVXNSMEZCUnl4SFFVRkhMR0ZCUVdFc1EwRkJReXhEUVVGRE8xRkJRMnBGTEUxQlFVMHNUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUldoRExFOUJRVThzVFVGQlRTeERRVUZETzBsQlEyaENMRU5CUVVNN1NVRkZSRHM3T3pzN1QwRkxSenRKUVVOTExHOURRVUZ2UXl4RFFVTXhReXhoUVVGclF5eEZRVU5zUXl4TlFVRm5RaXhGUVVOb1FpeFBRVUZsTEVWQlEyWXNWMEZCVnl4SFFVRkhMRWRCUVVjN1VVRkZha0lzU1VGQlNTeFpRVUZaTEVkQlFVY3NaMEpCUVdkQ0xFTkJRMnBETEdGQlFXRXNSVUZEWWl4TlFVRk5MRVZCUTA0c1YwRkJWeXhGUVVOWUxFOUJRVThzUTBGRFVpeERRVUZETzFGQlEwWXNXVUZCV1N4SFFVRkhMRTFCUVUwc1EwRkJReXhqUVVGakxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTTdVVUZEYmtRc1QwRkJUeXh6UWtGQmMwSXNRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenRKUVVNNVF5eERRVUZETzBsQlJVUTdPenM3T3p0UFFVMUhPMGxCUTBzc2FVSkJRV2xDTEVOQlEzWkNMRk5CUVd0Q0xFVkJRMnhDTEVOQlFWTXNSVUZEVkN4cFFrRkJhVUlzUjBGQlJ5eEhRVUZITEVWQlEzWkNMRXRCUVVzc1IwRkJSeXhGUVVGRkxFVkJRMVlzVTBGQlV5eEhRVUZITEVkQlFVYzdVVUZGWml4TlFVRk5MRTFCUVUwc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJRenRSUVVOMlJDeE5RVUZOTEVkQlFVY3NSMEZCUnl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTXhReXhOUVVGTkxFMUJRVTBzUjBGQlJ5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRk5CUVZNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVVUzUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NVMEZCVXl4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU42UXl4SlFVRkpMRVZCUVVVc1IwRkJSeXhIUVVGSExFTkJRVU03V1VGRFlpeEpRVUZKTEVWQlFVVXNSMEZCUnl4UlFVRlJMRU5CUVVNN1dVRkRiRUlzU1VGQlNTeEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRPMWxCUldRc05rUkJRVFpFTzFsQlF6ZEVMRTFCUVUwc1dVRkJXU3hIUVVGSExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTnNReXhOUVVGTkxGbEJRVmtzUjBGQlJ5eFpRVUZaTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUlhaRUxFbEJRVWtzV1VGQldTeERRVUZETEUxQlFVMHNTVUZCU1N4cFFrRkJhVUlzUlVGQlJUdG5Ra0ZETlVNc1NVRkJTU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETzJkQ1FVTXhReXhKUVVGSkxHRkJRV0VzUjBGQlJ5eHBRa0ZCYVVJc1IwRkJSeXhMUVVGTExFTkJRVU03WjBKQlF6bERMRWxCUVVrc1MwRkJTeXhIUVVGSExFTkJRVU1zUlVGQlJUdHZRa0ZEWWl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzV1VGQldTeERRVUZETEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRGFrTXNTVUZCU1N4aFFVRmhMRWRCUVVjc2EwSkJRV3RDTEVWQlFVVTdkMEpCUTNSRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdORUpCUTBvc1lVRkJZU3hIUVVGSExFTkJRVU1zV1VGQldTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRmxCUVZrc1EwRkJReXhMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0eFFrRkRia1U3YVVKQlEwWTdjVUpCUVUwN2IwSkJRMHdzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMR0ZCUVdFc1IwRkJSeXhaUVVGWkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdhVUpCUXpGRE8yRkJRMFk3YVVKQlFVMHNTVUZCU1N4WlFVRlpMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUlVGQlJUdG5Ra0ZEYkVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03WVVGRGJFTTdXVUZGUkN4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTMEZCU3l4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8yZENRVU01UWl4SlFVRkpMRWxCUVVrc1IwRkJSeXhIUVVGSExFTkJRVU03WjBKQlEyWXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdiMEpCUXpWRExFMUJRVTBzUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRMjVETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSVHQzUWtGRFZDeEpRVUZKTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN2NVSkJRemxDTzNsQ1FVRk5PM2RDUVVOTUxFbEJRVWtzU1VGQlNTeEhRVUZITEVOQlFVTTdjVUpCUTJJN2FVSkJRMFk3WjBKQlJVUXNTVUZCU1N4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUjBGQlJ5eE5RVUZOTEVOQlFVTXNSMEZCUnl4clFrRkJhMElzUlVGQlJUdHZRa0ZEYUVRc1RVRkJUVHRwUWtGRFVEdG5Ra0ZGUkN4SlFVRkpMRWxCUVVrc1IwRkJSeXhOUVVGTkxFVkJRVVU3YjBKQlEycENMRVZCUVVVc1IwRkJSeXhIUVVGSExFTkJRVU03YjBKQlExUXNSMEZCUnl4SFFVRkhMRU5CUVVNc1JVRkJSU3hIUVVGSExFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXp0cFFrRkRka0k3Y1VKQlFVMDdiMEpCUTB3c1JVRkJSU3hIUVVGSExFZEJRVWNzUTBGQlF6dHZRa0ZEVkN4SlFVRkpMRVZCUVVVc1MwRkJTeXhSUVVGUkxFVkJRVVU3ZDBKQlEyNUNMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03Y1VKQlExWTdlVUpCUVUwN2QwSkJRMHdzUjBGQlJ5eEhRVUZITEVOQlFVTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF6dHhRa0ZEZGtJN2FVSkJRMFk3WVVGRFJqdFpRVVZFTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU03V1VGRmFFSXNOa1JCUVRaRU8xbEJRemRFTEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJUdG5Ra0ZEYUVJc1RVRkJUU3huUWtGQlowSXNSMEZCUnl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETzJkQ1FVTnNSQ3hKUVVGSkxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4blFrRkJaMElzUjBGQlJ5eG5Ra0ZCWjBJc1JVRkJSVHR2UWtGRGJrUXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExHZENRVUZuUWl4SFFVRkhMR2RDUVVGblFpeERRVUZETzJsQ1FVTnFSRHRoUVVOR08ybENRVUZOTzJkQ1FVTk1MRTFCUVUwc1lVRkJZU3hIUVVGSExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkROVVFzU1VGQlNTeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1owSkJRV2RDTEVkQlFVY3NZVUZCWVN4RlFVRkZPMjlDUVVOb1JDeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1owSkJRV2RDTEVkQlFVY3NZVUZCWVN4RFFVRkRPMmxDUVVNNVF6dGhRVU5HTzFOQlEwWTdVVUZGUkN4UFFVRlBMRVZCUVVVc1RVRkJUU3hGUVVGRkxFMUJRVTBzUlVGQlJTeEpRVUZKTEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRka01zUTBGQlF6dEpRVVZFT3pzN096dFBRVXRITzBsQlEwc3NNRUpCUVRCQ0xFTkJRMmhETEZWQlFXMUNMRVZCUTI1Q0xGbEJRWEZDTEVWQlEzSkNMRTFCUVdkQ0xFVkJRMmhDTEVsQlFXTTdVVUZGWkN4TlFVRk5MRkZCUVZFc1IwRkJSeXhWUVVGVkxFTkJRVU1zVFVGQlRTeERRVUZETzFGQlEyNURMRTFCUVUwc1ZVRkJWU3hIUVVGSExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkZlRU1zVFVGQlRTeEpRVUZKTEVkQlFVY3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFZEJRVWNzVlVGQlZTeERRVUZETEVOQlFVTTdVVUZEYUVRc1RVRkJUU3hKUVVGSkxFZEJRVWNzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4UlFVRlJMRWRCUVVjc1ZVRkJWU3hEUVVGRExFTkJRVU03VVVGRGFFUXNUVUZCVFN4SlFVRkpMRWRCUVVjc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eFJRVUZSTEVkQlFVY3NWVUZCVlN4RFFVRkRMRU5CUVVNN1VVRkZhRVFzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExGRkJRVkVzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTnFReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1ZVRkJWU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzJkQ1FVTnVReXhKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTTdaMEpCUTFvc1NVRkJTU3hWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVU3YjBKQlF6TkNMRk5CUVZNc1EwRkJReXh0UTBGQmJVTTdhVUpCUXpsRE8yZENRVU5FTEVsQlFVa3NWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlR0dlFrRkRNVUlzUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXp0cFFrRkRXRHR4UWtGQlRTeEpRVUZKTEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1IwRkJSeXhGUVVGRk8yOUNRVU01UXl4SFFVRkhMRWRCUVVjc1IwRkJSeXhEUVVGRE8ybENRVU5ZTzNGQ1FVRk5PMjlDUVVOTUxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJsQ1FVTXZSRHRuUWtGRlJDeEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRlZCUVZVc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdaMEpCUXpkQ0xFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NWVUZCVlN4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRE5VTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhWUVVGVkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRPMkZCUTJoRE8xTkJRMFk3VVVGRlJDeFBRVUZQTEVWQlFVVXNTVUZCU1N4RlFVRkZMRWxCUVVrc1JVRkJSU3hKUVVGSkxFVkJRVVVzUTBGQlF6dEpRVU01UWl4RFFVRkRPMGxCUlVRN096czdPMDlCUzBjN1NVRkRTeXhuUTBGQlowTTdVVUZEZEVNc1RVRkJUU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMUZCUld4RExFMUJRVTBzUlVGQlJTeFhRVUZYTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkROMElzVFVGQlRTeFhRVUZYTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dFJRVU16UXl4SlFVRkpMRkZCUVZFc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGFrSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEZkQlFWY3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRE0wTXNUVUZCVFN4TFFVRkxMRWRCUVVjc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6ZENMRWxCUVVrc1VVRkJVU3hIUVVGSExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlR0blFrRkROMElzVVVGQlVTeEhRVUZITEV0QlFVc3NRMEZCUXp0aFFVTnNRanRUUVVOR08xRkJSVVFzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVTdXVUZEYmtNc1NVRkJTU3hMUVVGTExFZEJRVWNzVVVGQlVTeEhRVUZITEU5QlFVOHNSVUZCUlR0blFrRkRPVUlzVDBGQlR5eERRVUZETEVOQlFVTTdZVUZEVmp0cFFrRkJUVHRuUWtGRFRDeFBRVUZQTEV0QlFVc3NRMEZCUXp0aFFVTmtPMUZCUTBnc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRlNDeDVSVUZCZVVVN1VVRkRla1VzYVVWQlFXbEZPMUZCUTJwRkxGZEJRVmM3VVVGRFdDeEpRVUZKTEVOQlFVTXNVMEZCVXl4SFFVRkhMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFVkJRVVU3V1VGRGFrUXNUMEZCVHl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRVZCUVVVN1owSkJRM1pETEU5QlFVOHNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zZDBKQlFYZENPMWxCUTNoRkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEwd3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZTQ3h0UTBGQmJVTTdVVUZEYmtNc1RVRkJUU3hQUVVGUExFZEJRV0VzUlVGQlJTeERRVUZETzFGQlF6ZENMRTFCUVUwc1NVRkJTU3hIUVVGaExFVkJRVVVzUTBGQlF6dFJRVU14UWl4TlFVRk5MRWxCUVVrc1IwRkJZU3hGUVVGRkxFTkJRVU03VVVGRE1VSXNUVUZCVFN4WlFVRlpMRWRCUVVjc1MwRkJTeXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzFGQlEzQkRMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4WlFVRlpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFsQlF6VkRMRTFCUVUwc1MwRkJTeXhIUVVGSExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTTVRaXhKUVVGSkxFdEJRVXNzUTBGQlF5eExRVUZMTEVWQlFVVTdaMEpCUTJZc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1owSkJRekZDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzJkQ1FVTnlRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRoUVVOMFFqdFRRVU5HTzFGQlEwUXNUVUZCVFN4bFFVRmxMRWRCUVVjc1NVRkJTU3hEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRTlCUVU4c1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6dFJRVVZ1UlN4UFFVRlBMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeGxRVUZsTEVWQlFVVXNRMEZCUXp0SlFVTjZReXhEUVVGRE8wbEJSVVE3T3p0UFFVZEhPMGxCUTBzc2JVSkJRVzFDTEVOQlFVTXNUMEZCYVVJc1JVRkJSU3hQUVVGbE8xRkJRelZFTEUxQlFVMHNUVUZCVFN4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMnhFTEUxQlFVMHNSMEZCUnl4SFFVRkhMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdVVUZETDBJc1RVRkJUU3hSUVVGUkxFZEJRVWNzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4SFFVRkhMRTlCUVU4c1EwRkJReXhEUVVGRE8xRkJRM1pFTEZGQlFWRXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZEZUVJc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF6dG5Ra0ZCUlN4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVDBGQlR5eEhRVUZITEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNdlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTklMRTlCUVU4c1RVRkJUU3hEUVVGRE8wbEJRMmhDTEVOQlFVTTdTVUZGUkRzN1QwRkZSenRKUVVOTExHbERRVUZwUXl4RFFVRkRMRXRCUVdsRE8xRkJRM3BGTEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8wbEJReTlETEVOQlFVTTdTVUZGUkRzN08wOUJSMGM3U1VGRFN5d3dRa0ZCTUVJN1VVRkRhRU1zYTBKQlFXdENPMUZCUTJ4Q0xFMUJRVTBzUlVGQlJTeHBRa0ZCYVVJc1JVRkJSU3haUVVGWkxFVkJRVVVzYTBKQlFXdENMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU03VVVGRmNrVXNUVUZCVFN4RlFVTktMR1ZCUVdVc1JVRkRaaXhoUVVGaExFVkJRMklzWVVGQllTeEhRVU5rTEVkQlFVY3NTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETzFGQlJUTkNMRTFCUVUwc1IwRkJSeXhIUVVGSExHRkJRV0VzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRjRU1zVFVGQlRTeFRRVUZUTEVkQlFVY3NZVUZCWVN4RFFVRkRMRTFCUVUwc1MwRkJTeXhoUVVGaExFTkJRVU1zVFVGQlRTeERRVUZETzFGQlJXaEZMRTFCUVUwc2RVSkJRWFZDTEVkQlFVY3NaVUZCWlN4RFFVRkRMRWRCUVVjc1EwRkRha1FzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc2EwSkJRV3RDTEVOQlF6VkNMRU5CUVVNN1VVRkRSaXhOUVVGTkxIbENRVUY1UWl4SFFVRkhMRU5CUVVNc1IwRkJSeXgxUWtGQmRVSXNRMEZCUXl4RFFVRkRPMUZCUXk5RUxFMUJRVTBzYVVKQlFXbENMRWRCUVVjc1EwRkJReXhIUVVGSExHVkJRV1VzUTBGQlF5eERRVUZETzFGQlJTOURMRWxCUVVrc1EwRkJReXhwUTBGQmFVTXNRMEZCUXp0WlFVTnlReXhwUWtGQmFVSTdXVUZEYWtJc2VVSkJRWGxDTzFsQlEzcENMSFZDUVVGMVFqdFpRVU4yUWl4VFFVRlRPMWxCUTFRc1dVRkJXU3hGUVVGRkxGbEJRVms3V1VGRE1VSXNTMEZCU3l4RlFVRkZMRmxCUVZrN1dVRkRia0lzUzBGQlN5eEZRVUZGTEdsQ1FVRnBRanRaUVVONFFpeEhRVUZITzFOQlEwb3NRMEZCUXl4RFFVRkRPMGxCUTB3c1EwRkJRenRKUVVWRU96dFBRVVZITzBsQlEwc3NjMEpCUVhOQ08xRkJRelZDTEd0Q1FVRnJRanRSUVVOc1FpeE5RVUZOTEdGQlFXRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRE8xRkJRM0pETEUxQlFVMHNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU03VVVGRmNrTXNiMFJCUVc5RU8xRkJRM0JFTEUxQlFVMHNSVUZCUlN4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRkxHVkJRV1VzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF6dFJRVVV2UkN4TlFVRk5MRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTTdVVUZEYkVNc1RVRkJUU3hUUVVGVExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNN1VVRkZia01zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJSeXhaUVVGWkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGRmVrUXNTVUZCU1N4RFFVRkRMR2xEUVVGcFF5eERRVUZETzFsQlEzSkRMR0ZCUVdFN1dVRkRZaXhoUVVGaE8xbEJRMklzU1VGQlNUdFpRVU5LTEVsQlFVazdXVUZEU2l4bFFVRmxPMWxCUTJZc1EwRkJRenRaUVVORUxFTkJRVU03V1VGRFJDeFBRVUZQTzFsQlExQXNVMEZCVXp0VFFVTldMRU5CUVVNc1EwRkJRenRKUVVOTUxFTkJRVU03U1VGRlJEczdPenM3TzA5QlRVYzdTVUZEU3l4clFrRkJhMElzUTBGQlF5eERRVUZUTzFGQlEyeERMRTFCUVUwc1JVRkJSU3hwUWtGQmFVSXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOdVF5eE5RVUZOTEVWQlEwb3NTVUZCU1N4RlFVTktMRWxCUVVrc1JVRkRTaXhoUVVGaExFVkJRMklzWVVGQllTeEZRVU5pTEdWQlFXVXNSVUZEWml4cFFrRkJhVUlzUlVGRGFrSXNlVUpCUVhsQ0xFVkJRM3BDTEhWQ1FVRjFRaXhGUVVOMlFpeFRRVUZUTEVWQlExUXNXVUZCV1N4RlFVTmFMRXRCUVVzc1JVRkRUQ3hMUVVGTExFVkJRMHdzUTBGQlF5eEZRVU5FTEVOQlFVTXNSVUZEUkN4SFFVRkhMRVZCUTBnc1QwRkJUeXhGUVVOUUxGTkJRVk1zUjBGRFZpeEhRVUZITEdsQ1FVRnBRaXhEUVVGRE8xRkJSWFJDTEUxQlFVMHNVMEZCVXl4SFFVRkhMRWRCUVVjc1EwRkJRenRSUVVWMFFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzWlVGQlpTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVNdlF5eEpRVUZKTEdsQ1FVRnBRaXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlR0blFrRkROVUlzVTBGQlV6dGhRVU5XTzFsQlJVUXNUVUZCVFN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEyeENMRTFCUVUwc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVVnNRaXhOUVVGTkxFOUJRVThzUjBGQlJ5eGhRVUZoTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRha01zVFVGQlRTeExRVUZMTEVkQlFVY3NZVUZCWVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJSUzlDTEUxQlFVMHNWMEZCVnl4SFFVRkhMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdXVUZGTVVNc1NVRkJTU3hUUVVGVExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEyeENMRWxCUVVrc1YwRkJWeXhIUVVGSExFTkJRVU1zUlVGQlJUdG5Ra0ZEYmtJc1UwRkJVeXhIUVVGSExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eFhRVUZYTEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8yZENRVU14UkN4VFFVRlRMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF6dGhRVU5xUkR0WlFVVkVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3WjBKQlF6VkNMRTFCUVUwc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU03WjBKQlEyNUZMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMmRDUVVNMVFpeEpRVUZKTEZOQlFWTXNSVUZCUlR0dlFrRkRZaXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRE8ybENRVU0xUWp0aFFVTkdPMWxCUlVRc2FVSkJRV2xDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1pVRkJaU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlJUTkRMRTFCUVUwc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlF6VkNMRU5CUVVNc1EwRkJReXhIUVVGSExIbENRVUY1UWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzZFVKQlFYVkNMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRMmhGTEVOQlFVTTdXVUZGUml4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NWMEZCVnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8yZENRVU53UXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zVlVGQlZTeERRVUZETEZOQlFWTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03WjBKQlEyNUVMRTFCUVUwc1MwRkJTeXhIUVVGSExHRkJRV0VzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkZMMElzVFVGQlRTeFhRVUZYTEVkQlFVY3NTMEZCU3l4RFFVRkRMRTlCUVU4c1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dG5Ra0ZGTVVNc1NVRkJTU3hUUVVGVExFZEJRVWNzUjBGQlJ5eERRVUZETzJkQ1FVTndRaXhKUVVGSkxGZEJRVmNzUjBGQlJ5eEhRVUZITEVWQlFVVTdiMEpCUTNKQ0xGTkJRVk1zUjBGQlJ5eEhRVUZITEVkQlFVY3NTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJRenR2UWtGRE5VSXNVMEZCVXp0M1FrRkRVQ3hEUVVGRExFdEJRVXNzUjBGQlJ5eFhRVUZYTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dHBRa0ZET1VRN2NVSkJRVTBzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZPMjlDUVVOc1FpeFRRVUZUTzJsQ1FVTldPMmRDUVVWRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdiMEpCUXpWQ0xFbEJRVWtzUzBGQlN5eEhRVUZITEVkQlFVY3NRMEZCUXp0dlFrRkRhRUlzU1VGQlNTeFRRVUZUTEVkQlFVY3NSMEZCUnl4RlFVRkZPM2RDUVVOdVFpeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeFRRVUZUTEVOQlFVTXNRMEZCUXp0eFFrRkRPVVE3YjBKQlEwUXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTTdhVUpCUXpkQ08yRkJRMFk3V1VGRFJDeDVRa0ZCZVVJc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeFhRVUZYTEVkQlFVY3NkVUpCUVhWQ0xFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVMEZETVVVN1VVRkRSQ3hwUWtGQmFVSXNRMEZCUXl4TFFVRkxMRWRCUVVjc1dVRkJXU3hIUVVGSExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNSMEZCUnl4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVVM1JDeHBRa0ZCYVVJc1EwRkJReXhaUVVGWkxFbEJRVWtzUTBGQlF5eERRVUZETzFGQlEzQkRMRTlCUVU4c1lVRkJZU3hEUVVGRE8wbEJRM1pDTEVOQlFVTTdTVUZGUkRzN096czdPMDlCVFVjN1NVRkRTeXh0UWtGQmJVSXNRMEZEZWtJc1owSkJRWGxFTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrN1VVRkZia1VzVDBGQlR5eEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRTlCUVU4c1JVRkJSU3hOUVVGTkxFVkJRVVVzUlVGQlJUdFpRVU55UXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhMUVVGTExFbEJRVWtzUlVGQlJUdG5Ra0ZEZEVJc1NVRkJTVHR2UWtGRFJpeE5RVUZOTEVWQlFVVXNUMEZCVHl4RlFVRkZMRmxCUVZrc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1EwRkJRenR2UWtGRGVrUXNTVUZCU1N4RFFVRkRMRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03YjBKQlEzWkVMRTFCUVUwc1kwRkJZeXhIUVVGSExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhaUVVGWkxFTkJRVU03YjBKQlF6TkVMRTFCUVUwc1ZVRkJWU3hIUVVGSExHRkJRV0VzUTBGQlF5eGpRVUZqTEVOQlFVTXNTMEZCU3l4TFFVRkxMRU5CUVVNN2IwSkJRek5FTEUxQlFVMHNWVUZCVlN4SFFVRkhMR05CUVdNc1MwRkJTeXhQUVVGUExFTkJRVU03YjBKQlF6bERMRWxCUVVrc1EwRkJReXhWUVVGVkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVWQlFVVTdkMEpCUXpsQ0xGVkJRVlVzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4SlFVRkpMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dHhRa0ZETjBJN2VVSkJRVTA3ZDBKQlEwd3NUMEZCVHl4UFFVRlBMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03Y1VKQlF6VkNPMmxDUVVOR08yZENRVUZETEU5QlFVOHNSMEZCUnl4RlFVRkZPMjlDUVVOYUxFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0cFFrRkRZanRaUVVOSUxFTkJRVU1zUTBGQlF6dFpRVU5HTEZWQlFWVXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhKUVVGSkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTTVRaXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5NTEVOQlFVTTdTVUZGUkRzN096czdPMDlCVFVjN1NVRkRTeXhqUVVGakxFTkJRM0JDTEdkQ1FVRjVSQ3hIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTzFGQlJXNUZMRWxCUVVrc1ZVRkJWU3hIUVVGSExFdEJRVXNzUTBGQlF6dFJRVU4yUWl4SlFVRkpMRk5CUVZNc1IwRkJXU3hGUVVGRkxFTkJRVU03VVVGRE5VSXNUMEZCVHl4RFFVRkRMRlZCUVZVc1JVRkJSVHRaUVVOc1FpeE5RVUZOTEVWQlFVVXNUMEZCVHl4RlFVRkZMRmxCUVZrc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1EwRkJRenRaUVVONlJDeFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRPMWxCUTJ4RUxFMUJRVTBzWTBGQll5eEhRVUZITEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eFpRVUZaTEVOQlFVTTdXVUZETTBRc1RVRkJUU3hWUVVGVkxFZEJRVWNzWVVGQllTeERRVUZETEdOQlFXTXNRMEZCUXl4TFFVRkxMRXRCUVVzc1EwRkJRenRaUVVNelJDeFZRVUZWTEVkQlFVY3NZMEZCWXl4TFFVRkxMRTlCUVU4c1NVRkJTU3hWUVVGVkxFTkJRVU03VTBGRGRrUTdVVUZEUkN4UFFVRlBMRk5CUVZNc1EwRkJRenRKUVVOdVFpeERRVUZETzBsQlJVUTdPenRQUVVkSE8wbEJRMGtzVlVGQlZUdFJRVU5tTEUxQlFVMHNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU03VVVGRmVrSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFTkJRVU1zUlVGQlJUdFpRVU53UWl4UFFVRlBMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU03VTBGRGNrSTdVVUZGUkN4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRk8xbEJRMVlzVDBGQlR5eEhRVUZITEVOQlFVTTdVMEZEV2p0UlFVVkVMRTFCUVUwc1RVRkJUU3hIUVVGSExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTTdVVUZETTBJc1NVRkJTU3hOUVVGTkxFbEJRVWtzU1VGQlNTeEZRVUZGTzFsQlEyeENMRTlCUVU4c1IwRkJSeXhEUVVGRE8xTkJRMW83WVVGQlRTeEpRVUZKTEUxQlFVMHNTVUZCU1N4SlFVRkpMRVZCUVVVN1dVRkRla0lzVDBGQlR5eEhRVUZITEVOQlFVTTdVMEZEV2p0aFFVRk5MRWxCUVVrc1RVRkJUU3hKUVVGSkxFbEJRVWtzUlVGQlJUdFpRVU42UWl4UFFVRlBMRWRCUVVjc1EwRkJRenRUUVVOYU8yRkJRVTA3V1VGRFRDeFBRVUZQTEVkQlFVY3NRMEZCUXp0VFFVTmFPMGxCUTBnc1EwRkJRenREUVVOR08wRkJSVVFzVFVGQlRTeFZRVUZWTEZOQlFWTXNRMEZCUXl4RFFVRlRMRVZCUVVVc1EwRkJVenRKUVVNMVF5eEpRVUZKTEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRaaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0UlFVTnFReXhOUVVGTkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMHRCUXpsQ08wbEJRMFFzVDBGQlR5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRek5DTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc1QwRkJUeXhEUVVGRExFTkJRVk1zUlVGQlJTeERRVUZUTzBsQlF6RkRMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJReTlDTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNUVUZCVFN4RFFVRkRMRU5CUVZNc1JVRkJSU3hEUVVGVE8wbEJRM3BETEVsQlFVa3NUVUZCVFN4SFFVRkhMRWRCUVVjc1EwRkJRenRKUVVOcVFpeEpRVUZKTEV0QlFVc3NSMEZCUnl4SFFVRkhMRU5CUVVNN1NVRkRhRUlzU1VGQlNTeExRVUZMTEVkQlFVY3NSMEZCUnl4RFFVRkRPMGxCUldoQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMUZCUTJwRExFMUJRVTBzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzUkNMRXRCUVVzc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTI1Q0xFdEJRVXNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRM0JDTzBsQlJVUXNTVUZCU1N4TFFVRkxMRXRCUVVzc1EwRkJReXhKUVVGSkxFdEJRVXNzUzBGQlN5eERRVUZETEVWQlFVVTdVVUZET1VJc1QwRkJUeXhEUVVGRExFTkJRVU03UzBGRFZqdFRRVUZOTEVsQlFVa3NTMEZCU3l4TFFVRkxMRU5CUVVNc1NVRkJTU3hMUVVGTExFdEJRVXNzUTBGQlF5eEZRVUZGTzFGQlEzSkRMRTlCUVU4c1IwRkJSeXhEUVVGRE8wdEJRMW83VTBGQlRUdFJRVU5NTEU5QlFVOHNSMEZCUnl4SFFVRkhMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJRenRMUVVOb1JEdEJRVU5JTEVOQlFVTTdRVUZGUkRzN08wZEJSMGM3UVVGRFNDeE5RVUZOTEdsQ1FVRnBRanRKUVVGMlFqdFJRVU5GTEdsQ1FVRlpMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJSV3BDTERCRFFVRXdRenRSUVVNeFF5eHJRa0ZCWVN4SFFVRmxMRVZCUVVVc1EwRkJRenRSUVVNdlFpeHJRa0ZCWVN4SFFVRmxMRVZCUVVVc1EwRkJRenRSUVVNdlFpeFRRVUZKTEVkQlFXRXNSVUZCUlN4RFFVRkRPMUZCUTNCQ0xGTkJRVWtzUjBGQllTeEZRVUZGTEVOQlFVTTdVVUZEY0VJc2IwSkJRV1VzUjBGQllTeEZRVUZGTEVOQlFVTTdVVUZETDBJc2MwSkJRV2xDTEVkQlFXRXNSVUZCUlN4RFFVRkRPMUZCUTJwRExEaENRVUY1UWl4SFFVRmhMRVZCUVVVc1EwRkJRenRSUVVONlF5dzBRa0ZCZFVJc1IwRkJZU3hGUVVGRkxFTkJRVU03VVVGRGRrTXNZMEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOcVFpeHBRa0ZCV1N4SFFVRkhMRWRCUVVjc1EwRkJRenRSUVVOdVFpeFZRVUZMTEVkQlFVY3NSMEZCUnl4RFFVRkRPMUZCUTFvc1ZVRkJTeXhIUVVGSExFZEJRVWNzUTBGQlF6dFJRVU5hTEUxQlFVTXNSMEZCUnl4clFrRkJhMElzUTBGQlF6dFJRVU4yUWl4TlFVRkRMRWRCUVVjc2EwSkJRV3RDTEVOQlFVTTdVVUZEZGtJc1VVRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5TTEZsQlFVOHNSMEZCUnl4SFFVRkhMRU5CUVVNN1VVRkRaQ3hqUVVGVExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEyaENMRU5CUVVNN1EwRkJRVHRCUVVWRU96dEhRVVZITzBGQlEwZ3NVMEZCVXl4SlFVRkpMRU5CUVVNc1EwRkJVeXhGUVVGRkxGTkJRV2xDTzBsQlEzaERMRWxCUVVrc1EwRkJReXhIUVVGSExGTkJRVk03VVVGQlJTeFBRVUZQTEZOQlFWTXNRMEZCUXp0VFFVTXZRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEZOQlFWTTdVVUZCUlN4UFFVRlBMRU5CUVVNc1UwRkJVeXhEUVVGRE96dFJRVU4wUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRCUVVOb1FpeERRVUZETzBGQlJVUTdPMGRCUlVjN1FVRkRTQ3hUUVVGVExFdEJRVXNzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTnlReXhKUVVGSkxFMUJRVTBzUjBGQlJ5eEhRVUZITEVOQlFVTTdTVUZEYWtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdVVUZEYWtNc1RVRkJUU3hKUVVGSkxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVOd1F6dEpRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU03UVVGRlJEczdPenM3UjBGTFJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4WlFVRlpMRU5CUVVNc1RVRkJZeXhGUVVGRkxFOUJRV1U3U1VGRE1VUXNUVUZCVFN4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFWY3NSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGVExFVkJRVVVzUlVGQlJUdFJRVU5vUkN4UFFVRlBMRWRCUVVjc1IwRkJSeXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZUVNc1EwRkJReXhEUVVGRE8wbEJSVVlzVFVGQlRTeEZRVUZGTEVkQlFVY3NTMEZCU3p0VFFVTmlMRTFCUVUwc1EwRkJReXhEUVVGRExFVkJRVVVzVFVGQlRTeEhRVUZITEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNN1UwRkRNVUlzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGTTBNc1RVRkJUU3hGUVVGRkxFZEJRVWNzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRXRCUVVzc1JVRkJSU3hGUVVGRk8xRkJRMjVFTEUxQlFVMHNSMEZCUnl4SFFVRkhMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeFBRVUZQTEVOQlFVTTdVVUZEYWtNc1QwRkJUeXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4UFFVRlBMRU5CUVVNc1IwRkJSeXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRPMGxCUXk5RUxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlJVZ3NUVUZCVFN4aFFVRmhMRWRCUVVjc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEYWtNc1RVRkJUU3hKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF6dEpRVVU1UWl3d1JFRkJNRVE3U1VGRE1VUXNUVUZCVFN4UFFVRlBMRWRCUVVjN1VVRkRaQ3hQUVVGUExFVkJRVVVzUjBGQlJ6dFJRVU5hTEdGQlFXRTdVVUZEWWl4clFrRkJhMElzUlVGQlJTeExRVUZMTzFGQlEzcENMR0ZCUVdFc1JVRkJSU3hIUVVGSE8xRkJRMnhDTEdOQlFXTXNSVUZCUlN4TFFVRkxPMHRCUTNSQ0xFTkJRVU03U1VGRlJpeE5RVUZOTEVWQlFVVXNaVUZCWlN4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExFbEJRVWtzUlVGQlJTeExRVUZMTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1NVRkRja1FzVFVGQlRTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhsUVVFeVFpeERRVUZETzBsQlF6TkRMRTlCUVU4c1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdRVUZEYkVJc1EwRkJRenRCUVVWRU96czdSMEZIUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3huUWtGQlowSXNRMEZET1VJc1MwRkJNRUlzUlVGRE1VSXNUVUZCWjBJc1JVRkRhRUlzVjBGQlZ5eEhRVUZITEVkQlFVY3NSVUZEYWtJc1QwRkJUeXhIUVVGSExFZEJRVWM3U1VGRllpeFBRVUZQTEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZPMUZCUTI1RExFbEJRVWtzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhKUVVGSkxFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1JVRkJSVHRaUVVNMVF5eFBRVUZQTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTTdVMEZEZGtNN1lVRkJUU3hKUVVGSkxFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVU3V1VGRGRFTXNUMEZCVHl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMU5CUTI1RE8yRkJRVTA3V1VGRFRDeFBRVUZQTEV0QlFVc3NRMEZCUXp0VFFVTmtPMGxCUTBnc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRFRDeERRVUZETzBGQlJVUTdPenM3TzBkQlMwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc2MwSkJRWE5DTEVOQlFVTXNZVUZCYTBNN1NVRkRka1VzWVVGQllTeEhRVUZITEUxQlFVMHNRMEZCUXl4VFFVRlRMRU5CUVVNc1lVRkJZU3hyUTBGQmMwSXNRMEZCUXp0SlFVTnlSU3hOUVVGTkxGTkJRVk1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRE8wbEJRMnhFTEUxQlFVMHNWVUZCVlN4SFFVRkhMRTFCUVUwc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4VFFVRlRMRVZCUVVVc1lVRkJZU3hEUVVGRExFTkJRVU03U1VGRGNrVXNZVUZCWVN4SFFVRkhMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRM2hDTEdGQlFXRXNSVUZEWWl4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExGTkJRVk1zUlVGQlJTeFZRVUZWTEVOQlFVTXNRMEZEZGtNc1EwRkJRenRKUVVOR0xFOUJRVThzVFVGQlRTeERRVUZETEdOQlFXTXNRMEZCUXl4aFFVRmhMRU5CUVVNc1EwRkJRenRCUVVNNVF5eERRVUZETzBGQlJVUTdPenM3UjBGSlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4aFFVRmhMRU5CUXpOQ0xFOUJRVzFDTEVWQlEyNUNMRTlCUVcxQ0xFVkJRMjVDTEZOQlFXdENPMGxCUld4Q0xFMUJRVTBzVFVGQlRTeEhRVUZITEV0QlFVczdVMEZEYWtJc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTTdVMEZEY2tJc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVVNVF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVDBGQlR5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRSUVVOMlF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU14UXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0blFrRkROVU1zVFVGQlRTeERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTjRRaXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0aFFVTnFSRHRUUVVOR08wdEJRMFk3U1VGRFJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkFiR2xqWlc1elpWeHVJQ3BjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREU1SUVkdmIyZHNaU0JNVEVNdUlFRnNiQ0JTYVdkb2RITWdVbVZ6WlhKMlpXUXVYRzRnS2x4dUlDb2dUR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRUZ3WVdOb1pTQk1hV05sYm5ObExDQldaWEp6YVc5dUlESXVNQ0FvZEdobElGd2lUR2xqWlc1elpWd2lLVHRjYmlBcUlIbHZkU0J0WVhrZ2JtOTBJSFZ6WlNCMGFHbHpJR1pwYkdVZ1pYaGpaWEIwSUdsdUlHTnZiWEJzYVdGdVkyVWdkMmwwYUNCMGFHVWdUR2xqWlc1elpTNWNiaUFxSUZsdmRTQnRZWGtnYjJKMFlXbHVJR0VnWTI5d2VTQnZaaUIwYUdVZ1RHbGpaVzV6WlNCaGRGeHVJQ3BjYmlBcUlDQWdJQ0JvZEhSd09pOHZkM2QzTG1Gd1lXTm9aUzV2Y21jdmJHbGpaVzV6WlhNdlRFbERSVTVUUlMweUxqQmNiaUFxWEc0Z0tpQlZibXhsYzNNZ2NtVnhkV2x5WldRZ1lua2dZWEJ3YkdsallXSnNaU0JzWVhjZ2IzSWdZV2R5WldWa0lIUnZJR2x1SUhkeWFYUnBibWNzSUhOdlpuUjNZWEpsWEc0Z0tpQmthWE4wY21saWRYUmxaQ0IxYm1SbGNpQjBhR1VnVEdsalpXNXpaU0JwY3lCa2FYTjBjbWxpZFhSbFpDQnZiaUJoYmlCY0lrRlRJRWxUWENJZ1FrRlRTVk1zWEc0Z0tpQlhTVlJJVDFWVUlGZEJVbEpCVGxSSlJWTWdUMUlnUTA5T1JFbFVTVTlPVXlCUFJpQkJUbGtnUzBsT1JDd2daV2wwYUdWeUlHVjRjSEpsYzNNZ2IzSWdhVzF3YkdsbFpDNWNiaUFxSUZObFpTQjBhR1VnVEdsalpXNXpaU0JtYjNJZ2RHaGxJSE53WldOcFptbGpJR3hoYm1kMVlXZGxJR2R2ZG1WeWJtbHVaeUJ3WlhKdGFYTnphVzl1Y3lCaGJtUmNiaUFxSUd4cGJXbDBZWFJwYjI1eklIVnVaR1Z5SUhSb1pTQk1hV05sYm5ObExseHVJQ29nUFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlYRzRnS2k5Y2JseHVMeW9xWEc0Z0tpQlVhR2x6SUdseklHRWdTbUYyWVZOamNtbHdkQ0J5WldsdGNHeGxiV1Z1ZEdGMGFXOXVJRzltSUZWTlFWQWdLRzl5YVdkcGJtRnNJR3hwWTJWdWMyVWdZbVZzYjNjcExDQm1jbTl0WEc0Z0tpQjBhR1VnY0hsMGFHOXVJR2x0Y0d4bGJXVnVkR0YwYVc5dUlHWnZkVzVrSUdGMElHaDBkSEJ6T2k4dloybDBhSFZpTG1OdmJTOXNiV05wYm01bGN5OTFiV0Z3TGx4dUlDcGNiaUFxSUVCaGRYUm9iM0lnWVc1a2VXTnZaVzVsYmtCbmIyOW5iR1V1WTI5dElDaEJibVI1SUVOdlpXNWxiaWxjYmlBcUwxeHVYRzR2S2lwY2JpQXFJRUJzYVdObGJuTmxYRzRnS2lCQ1UwUWdNeTFEYkdGMWMyVWdUR2xqWlc1elpWeHVJQ3BjYmlBcUlFTnZjSGx5YVdkb2RDQW9ZeWtnTWpBeE55d2dUR1ZzWVc1a0lFMWpTVzV1WlhOY2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVW1Wa2FYTjBjbWxpZFhScGIyNGdZVzVrSUhWelpTQnBiaUJ6YjNWeVkyVWdZVzVrSUdKcGJtRnllU0JtYjNKdGN5d2dkMmwwYUNCdmNpQjNhWFJvYjNWMFhHNGdLaUJ0YjJScFptbGpZWFJwYjI0c0lHRnlaU0J3WlhKdGFYUjBaV1FnY0hKdmRtbGtaV1FnZEdoaGRDQjBhR1VnWm05c2JHOTNhVzVuSUdOdmJtUnBkR2x2Ym5NZ1lYSmxJRzFsZERwY2JpQXFYRzRnS2lBcUlGSmxaR2x6ZEhKcFluVjBhVzl1Y3lCdlppQnpiM1Z5WTJVZ1kyOWtaU0J0ZFhOMElISmxkR0ZwYmlCMGFHVWdZV0p2ZG1VZ1kyOXdlWEpwWjJoMElHNXZkR2xqWlN3Z2RHaHBjMXh1SUNvZ0lDQnNhWE4wSUc5bUlHTnZibVJwZEdsdmJuTWdZVzVrSUhSb1pTQm1iMnhzYjNkcGJtY2daR2x6WTJ4aGFXMWxjaTVjYmlBcVhHNGdLaUFxSUZKbFpHbHpkSEpwWW5WMGFXOXVjeUJwYmlCaWFXNWhjbmtnWm05eWJTQnRkWE4wSUhKbGNISnZaSFZqWlNCMGFHVWdZV0p2ZG1VZ1kyOXdlWEpwWjJoMElHNXZkR2xqWlN4Y2JpQXFJQ0FnZEdocGN5QnNhWE4wSUc5bUlHTnZibVJwZEdsdmJuTWdZVzVrSUhSb1pTQm1iMnhzYjNkcGJtY2daR2x6WTJ4aGFXMWxjaUJwYmlCMGFHVWdaRzlqZFcxbGJuUmhkR2x2Ymx4dUlDb2dJQ0JoYm1RdmIzSWdiM1JvWlhJZ2JXRjBaWEpwWVd4eklIQnliM1pwWkdWa0lIZHBkR2dnZEdobElHUnBjM1J5YVdKMWRHbHZiaTVjYmlBcVhHNGdLaUFxSUU1bGFYUm9aWElnZEdobElHNWhiV1VnYjJZZ2RHaGxJR052Y0hseWFXZG9kQ0JvYjJ4a1pYSWdibTl5SUhSb1pTQnVZVzFsY3lCdlppQnBkSE5jYmlBcUlDQWdZMjl1ZEhKcFluVjBiM0p6SUcxaGVTQmlaU0IxYzJWa0lIUnZJR1Z1Wkc5eWMyVWdiM0lnY0hKdmJXOTBaU0J3Y205a2RXTjBjeUJrWlhKcGRtVmtJR1p5YjIxY2JpQXFJQ0FnZEdocGN5QnpiMlowZDJGeVpTQjNhWFJvYjNWMElITndaV05wWm1saklIQnlhVzl5SUhkeWFYUjBaVzRnY0dWeWJXbHpjMmx2Ymk1Y2JpQXFYRzRnS2lCVVNFbFRJRk5QUmxSWFFWSkZJRWxUSUZCU1QxWkpSRVZFSUVKWklGUklSU0JEVDFCWlVrbEhTRlFnU0U5TVJFVlNVeUJCVGtRZ1EwOU9WRkpKUWxWVVQxSlRJRndpUVZNZ1NWTmNJbHh1SUNvZ1FVNUVJRUZPV1NCRldGQlNSVk5USUU5U0lFbE5VRXhKUlVRZ1YwRlNVa0ZPVkVsRlV5d2dTVTVEVEZWRVNVNUhMQ0JDVlZRZ1RrOVVJRXhKVFVsVVJVUWdWRThzSUZSSVJWeHVJQ29nU1UxUVRFbEZSQ0JYUVZKU1FVNVVTVVZUSUU5R0lFMUZVa05JUVU1VVFVSkpURWxVV1NCQlRrUWdSa2xVVGtWVFV5QkdUMUlnUVNCUVFWSlVTVU5WVEVGU0lGQlZVbEJQVTBVZ1FWSkZYRzRnS2lCRVNWTkRURUZKVFVWRUxpQkpUaUJPVHlCRlZrVk9WQ0JUU0VGTVRDQlVTRVVnUTA5UVdWSkpSMGhVSUVoUFRFUkZVaUJQVWlCRFQwNVVVa2xDVlZSUFVsTWdRa1VnVEVsQlFreEZYRzRnS2lCR1QxSWdRVTVaSUVSSlVrVkRWQ3dnU1U1RVNWSkZRMVFzSUVsT1EwbEVSVTVVUVV3c0lGTlFSVU5KUVV3c0lFVllSVTFRVEVGU1dTd2dUMUlnUTA5T1UwVlJWVVZPVkVsQlRGeHVJQ29nUkVGTlFVZEZVeUFvU1U1RFRGVkVTVTVITENCQ1ZWUWdUazlVSUV4SlRVbFVSVVFnVkU4c0lGQlNUME5WVWtWTlJVNVVJRTlHSUZOVlFsTlVTVlJWVkVVZ1IwOVBSRk1nVDFKY2JpQXFJRk5GVWxaSlEwVlRPeUJNVDFOVElFOUdJRlZUUlN3Z1JFRlVRU3dnVDFJZ1VGSlBSa2xVVXpzZ1QxSWdRbFZUU1U1RlUxTWdTVTVVUlZKU1ZWQlVTVTlPS1NCSVQxZEZWa1ZTWEc0Z0tpQkRRVlZUUlVRZ1FVNUVJRTlPSUVGT1dTQlVTRVZQVWxrZ1QwWWdURWxCUWtsTVNWUlpMQ0JYU0VWVVNFVlNJRWxPSUVOUFRsUlNRVU5VTENCVFZGSkpRMVFnVEVsQlFrbE1TVlJaTEZ4dUlDb2dUMUlnVkU5U1ZDQW9TVTVEVEZWRVNVNUhJRTVGUjB4SlIwVk9RMFVnVDFJZ1QxUklSVkpYU1ZORktTQkJVa2xUU1U1SElFbE9JRUZPV1NCWFFWa2dUMVZVSUU5R0lGUklSU0JWVTBWY2JpQXFJRTlHSUZSSVNWTWdVMDlHVkZkQlVrVXNJRVZXUlU0Z1NVWWdRVVJXU1ZORlJDQlBSaUJVU0VVZ1VFOVRVMGxDU1V4SlZGa2dUMFlnVTFWRFNDQkVRVTFCUjBVdVhHNGdLaTljYmx4dWFXMXdiM0owSUNvZ1lYTWdhR1ZoY0NCbWNtOXRJQ2N1TDJobFlYQW5PMXh1YVcxd2IzSjBJQ29nWVhNZ2JXRjBjbWw0SUdaeWIyMGdKeTR2YldGMGNtbDRKenRjYm1sdGNHOXlkQ0FxSUdGeklHNXVSR1Z6WTJWdWRDQm1jbTl0SUNjdUwyNXVYMlJsYzJObGJuUW5PMXh1YVcxd2IzSjBJQ29nWVhNZ2RISmxaU0JtY205dElDY3VMM1J5WldVbk8xeHVhVzF3YjNKMElDb2dZWE1nZFhScGJITWdabkp2YlNBbkxpOTFkR2xzY3ljN1hHNXBiWEJ2Y25RZ1RFMGdabkp2YlNBbmJXd3RiR1YyWlc1aVpYSm5MVzFoY25GMVlYSmtkQ2M3WEc1Y2JtVjRjRzl5ZENCMGVYQmxJRVJwYzNSaGJtTmxSbTRnUFNBb2VEb2diblZ0WW1WeUxDQjVPaUJ1ZFcxaVpYSXBJRDArSUc1MWJXSmxjanRjYm1WNGNHOXlkQ0IwZVhCbElGSmhibVJ2YlVadUlEMGdLQ2tnUFQ0Z2JuVnRZbVZ5TzF4dVpYaHdiM0owSUhSNWNHVWdSWEJ2WTJoRFlXeHNZbUZqYXlBOUlDaGxjRzlqYURvZ2JuVnRZbVZ5S1NBOVBpQmliMjlzWldGdUlId2dkbTlwWkR0Y2JtVjRjRzl5ZENCMGVYQmxJRlpsWTNSdmNpQTlJRzUxYldKbGNsdGRPMXh1Wlhod2IzSjBJSFI1Y0dVZ1ZtVmpkRzl5Y3lBOUlGWmxZM1J2Y2x0ZE8xeHVaWGh3YjNKMElHTnZibk4wSUdWdWRXMGdWR0Z5WjJWMFRXVjBjbWxqSUh0Y2JpQWdZMkYwWldkdmNtbGpZV3dnUFNBblkyRjBaV2R2Y21sallXd25MRnh1SUNCc01TQTlJQ2RzTVNjc1hHNGdJR3d5SUQwZ0oyd3lKeXhjYm4xY2JseHVZMjl1YzNRZ1UwMVBUMVJJWDB0ZlZFOU1SVkpCVGtORklEMGdNV1V0TlR0Y2JtTnZibk4wSUUxSlRsOUxYMFJKVTFSZlUwTkJURVVnUFNBeFpTMHpPMXh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUZWTlFWQlFZWEpoYldWMFpYSnpJSHRjYmlBZ0x5b3FYRzRnSUNBcUlGUm9aU0JrYVhOMFlXNWpaU0JtZFc1amRHbHZiaUIzYVhSb0lIZG9hV05vSUhSdklHRnpjMlZ6Y3lCdVpXRnlaWE4wSUc1bGFXZG9ZbTl5Y3l3Z1pHVm1ZWFZzZEhOY2JpQWdJQ29nZEc4Z1pYVmpiR2xrWldGdUlHUnBjM1JoYm1ObExseHVJQ0FnS2k5Y2JpQWdaR2x6ZEdGdVkyVkdiajg2SUVScGMzUmhibU5sUm00N1hHNGdJQzhxS2x4dUlDQWdLaUJVYUdVZ2FXNXBkR2xoYkNCc1pXRnlibWx1WnlCeVlYUmxJR1p2Y2lCMGFHVWdaVzFpWldSa2FXNW5JRzl3ZEdsdGFYcGhkR2x2Ymk1Y2JpQWdJQ292WEc0Z0lHeGxZWEp1YVc1blVtRjBaVDg2SUc1MWJXSmxjanRjYmlBZ0x5b3FYRzRnSUNBcUlGUm9aU0JzYjJOaGJDQmpiMjV1WldOMGFYWnBkSGtnY21WeGRXbHlaV1FnTFMwZ2FTNWxMaUIwYUdVZ2JuVnRZbVZ5SUc5bUlHNWxZWEpsYzNSY2JpQWdJQ29nYm1WcFoyaGliM0p6SUhSb1lYUWdjMmh2ZFd4a0lHSmxJR0Z6YzNWdFpXUWdkRzhnWW1VZ1kyOXVibVZqZEdWa0lHRjBJR0VnYkc5allXd2diR1YyWld3dVhHNGdJQ0FxSUZSb1pTQm9hV2RvWlhJZ2RHaHBjeUIyWVd4MVpTQjBhR1VnYlc5eVpTQmpiMjV1WldOMFpXUWdkR2hsSUcxaGJtbG1iMnhrSUdKbFkyOXRaWE5jYmlBZ0lDb2diRzlqWVd4c2VTNGdTVzRnY0hKaFkzUnBZMlVnZEdocGN5QnphRzkxYkdRZ1ltVWdibTkwSUcxdmNtVWdkR2hoYmlCMGFHVWdiRzlqWVd3Z2FXNTBjbWx1YzJsalhHNGdJQ0FxSUdScGJXVnVjMmx2YmlCdlppQjBhR1VnYldGdWFXWnZiR1F1WEc0Z0lDQXFMMXh1SUNCc2IyTmhiRU52Ym01bFkzUnBkbWwwZVQ4NklHNTFiV0psY2p0Y2JpQWdMeW9xWEc0Z0lDQXFJRlJvWlNCbFptWmxZM1JwZG1VZ2JXbHVhVzExYlNCa2FYTjBZVzVqWlNCaVpYUjNaV1Z1SUdWdFltVmtaR1ZrSUhCdmFXNTBjeTRnVTIxaGJHeGxjaUIyWVd4MVpYTmNiaUFnSUNvZ2QybHNiQ0J5WlhOMWJIUWdhVzRnWVNCdGIzSmxJR05zZFhOMFpYSmxaQzlqYkhWdGNHVmtJR1Z0WW1Wa1pHbHVaeUIzYUdWeVpTQnVaV0Z5WW5rZ2NHOXBiblJ6WEc0Z0lDQXFJRzl1SUhSb1pTQnRZVzVwWm05c1pDQmhjbVVnWkhKaGQyNGdZMnh2YzJWeUlIUnZaMlYwYUdWeUxDQjNhR2xzWlNCc1lYSm5aWElnZG1Gc2RXVnpJSGRwYkd4Y2JpQWdJQ29nY21WemRXeDBJRzl1SUdFZ2JXOXlaU0JsZG1WdUlHUnBjM0JsY25OaGJDQnZaaUJ3YjJsdWRITXVJRlJvWlNCMllXeDFaU0J6YUc5MWJHUWdZbVVnYzJWMFhHNGdJQ0FxSUhKbGJHRjBhWFpsSUhSdklIUm9aU0JnWUhOd2NtVmhaR0JnSUhaaGJIVmxMQ0IzYUdsamFDQmtaWFJsY20xcGJtVnpJSFJvWlNCelkyRnNaU0JoZENCM2FHbGphRnh1SUNBZ0tpQmxiV0psWkdSbFpDQndiMmx1ZEhNZ2QybHNiQ0JpWlNCemNISmxZV1FnYjNWMExseHVJQ0FnS2k5Y2JpQWdiV2x1UkdsemREODZJRzUxYldKbGNqdGNiaUFnTHlvcVhHNGdJQ0FxSUZSb1pTQmthVzFsYm5OcGIyNGdiMllnZEdobElITndZV05sSUhSdklHVnRZbVZrSUdsdWRHOHVJRlJvYVhNZ1pHVm1ZWFZzZEhNZ2RHOGdNaUIwYjF4dUlDQWdLaUJ3Y205MmFXUmxJR1ZoYzNrZ2RtbHpkV0ZzYVhwaGRHbHZiaXdnWW5WMElHTmhiaUJ5WldGemIyNWhZbXg1SUdKbElITmxkQ0IwYnlCaGJubGNiaUFnSUNvZ2FXNTBaV2RsY2lCMllXeDFaU0JwYmlCMGFHVWdjbUZ1WjJVZ01pQjBieUF4TURBdVhHNGdJQ0FxTDF4dUlDQnVRMjl0Y0c5dVpXNTBjejg2SUc1MWJXSmxjanRjYmlBZ0x5b3FYRzRnSUNBcUlGUm9aU0J1ZFcxaVpYSWdiMllnZEhKaGFXNXBibWNnWlhCdlkyaHpJSFJ2SUdKbElIVnpaV1FnYVc0Z2IzQjBhVzFwZW1sdVp5QjBhR1ZjYmlBZ0lDb2diRzkzSUdScGJXVnVjMmx2Ym1Gc0lHVnRZbVZrWkdsdVp5NGdUR0Z5WjJWeUlIWmhiSFZsY3lCeVpYTjFiSFFnYVc0Z2JXOXlaU0JoWTJOMWNtRjBaVnh1SUNBZ0tpQmxiV0psWkdScGJtZHpMaUJKWmlCT2IyNWxJR2x6SUhOd1pXTnBabWxsWkNCaElIWmhiSFZsSUhkcGJHd2dZbVVnYzJWc1pXTjBaV1FnWW1GelpXUWdiMjVjYmlBZ0lDb2dkR2hsSUhOcGVtVWdiMllnZEdobElHbHVjSFYwSUdSaGRHRnpaWFFnS0RJd01DQm1iM0lnYkdGeVoyVWdaR0YwWVhObGRITXNJRFV3TUNCbWIzSWdjMjFoYkd3cExseHVJQ0FnS2k5Y2JpQWdia1Z3YjJOb2N6ODZJRzUxYldKbGNqdGNiaUFnTHlvcVhHNGdJQ0FxSUZSb1pTQnphWHBsSUc5bUlHeHZZMkZzSUc1bGFXZG9ZbTl5YUc5dlpDQW9hVzRnZEdWeWJYTWdiMllnYm5WdFltVnlJRzltSUc1bGFXZG9ZbTl5YVc1blhHNGdJQ0FxSUhOaGJYQnNaU0J3YjJsdWRITXBJSFZ6WldRZ1ptOXlJRzFoYm1sbWIyeGtJR0Z3Y0hKdmVHbHRZWFJwYjI0dUlFeGhjbWRsY2lCMllXeDFaWE5jYmlBZ0lDb2djbVZ6ZFd4MElHbHVJRzF2Y21VZ1oyeHZZbUZzSUhacFpYZHpJRzltSUhSb1pTQnRZVzVwWm05c1pDd2dkMmhwYkdVZ2MyMWhiR3hsY2x4dUlDQWdLaUIyWVd4MVpYTWdjbVZ6ZFd4MElHbHVJRzF2Y21VZ2JHOWpZV3dnWkdGMFlTQmlaV2x1WnlCd2NtVnpaWEoyWldRdUlFbHVJR2RsYm1WeVlXeGNiaUFnSUNvZ2RtRnNkV1Z6SUhOb2IzVnNaQ0JpWlNCcGJpQjBhR1VnY21GdVoyVWdNaUIwYnlBeE1EQXVYRzRnSUNBcUwxeHVJQ0J1VG1WcFoyaGliM0p6UHpvZ2JuVnRZbVZ5TzF4dUlDQXZLaXBjYmlBZ0lDb2dWR2hsSUc1MWJXSmxjaUJ2WmlCdVpXZGhkR2wyWlNCellXMXdiR1Z6SUhSdklITmxiR1ZqZENCd1pYSWdjRzl6YVhScGRtVWdjMkZ0Y0d4bFhHNGdJQ0FxSUdsdUlIUm9aU0J2Y0hScGJXbDZZWFJwYjI0Z2NISnZZMlZ6Y3k0Z1NXNWpjbVZoYzJsdVp5QjBhR2x6SUhaaGJIVmxJSGRwYkd3Z2NtVnpkV3gwWEc0Z0lDQXFJR2x1SUdkeVpXRjBaWElnY21Wd2RXeHphWFpsSUdadmNtTmxJR0psYVc1bklHRndjR3hwWldRc0lHZHlaV0YwWlhJZ2IzQjBhVzFwZW1GMGFXOXVYRzRnSUNBcUlHTnZjM1FzSUdKMWRDQnpiR2xuYUhSc2VTQnRiM0psSUdGalkzVnlZV041TGx4dUlDQWdLaTljYmlBZ2JtVm5ZWFJwZG1WVFlXMXdiR1ZTWVhSbFB6b2diblZ0WW1WeU8xeHVJQ0F2S2lwY2JpQWdJQ29nVjJWcFoyaDBhVzVuSUdGd2NHeHBaV1FnZEc4Z2JtVm5ZWFJwZG1VZ2MyRnRjR3hsY3lCcGJpQnNiM2NnWkdsdFpXNXphVzl1WVd3Z1pXMWlaV1JrYVc1blhHNGdJQ0FxSUc5d2RHbHRhWHBoZEdsdmJpNGdWbUZzZFdWeklHaHBaMmhsY2lCMGFHRnVJRzl1WlNCM2FXeHNJSEpsYzNWc2RDQnBiaUJuY21WaGRHVnlJSGRsYVdkb2RGeHVJQ0FnS2lCaVpXbHVaeUJuYVhabGJpQjBieUJ1WldkaGRHbDJaU0J6WVcxd2JHVnpMbHh1SUNBZ0tpOWNiaUFnY21Wd2RXeHphVzl1VTNSeVpXNW5kR2cvT2lCdWRXMWlaWEk3WEc0Z0lDOHFLbHh1SUNBZ0tpQlVhR1VnY0hObGRXUnZMWEpoYm1SdmJTQnVkVzFpWlhJZ1oyVnVaWEpoZEc5eUlIVnpaV1FnWW5rZ2RHaGxJSE4wYjJOb1lYTjBhV01nY0dGeWRITWdiMllnZEdobFhHNGdJQ0FxSUdGc1oyOXlhWFJvYlM1Y2JpQWdJQ292WEc0Z0lISmhibVJ2YlQ4NklGSmhibVJ2YlVadU8xeHVJQ0F2S2lwY2JpQWdJQ29nU1c1MFpYSndiMnhoZEdVZ1ltVjBkMlZsYmlBb1puVjZlbmtwSUhWdWFXOXVJR0Z1WkNCcGJuUmxjbk5sWTNScGIyNGdZWE1nZEdobElITmxkQ0J2Y0dWeVlYUnBiMjVjYmlBZ0lDb2dkWE5sWkNCMGJ5QmpiMjFpYVc1bElHeHZZMkZzSUdaMWVucDVJSE5wYlhCc2FXTnBZV3dnYzJWMGN5QjBieUJ2WW5SaGFXNGdZU0JuYkc5aVlXd2dablY2ZW5sY2JpQWdJQ29nYzJsdGNHeHBZMmxoYkNCelpYUnpMaUJDYjNSb0lHWjFlbnA1SUhObGRDQnZjR1Z5WVhScGIyNXpJSFZ6WlNCMGFHVWdjSEp2WkhWamRDQjBMVzV2Y20wdVhHNGdJQ0FxSUZSb1pTQjJZV3gxWlNCdlppQjBhR2x6SUhCaGNtRnRaWFJsY2lCemFHOTFiR1FnWW1VZ1ltVjBkMlZsYmlBd0xqQWdZVzVrSURFdU1Ec2dZU0IyWVd4MVpTQnZabHh1SUNBZ0tpQXhMakFnZDJsc2JDQjFjMlVnWVNCd2RYSmxJR1oxZW5wNUlIVnVhVzl1TENCM2FHbHNaU0F3TGpBZ2QybHNiQ0IxYzJVZ1lTQndkWEpsSUdaMWVucDVYRzRnSUNBcUlHbHVkR1Z5YzJWamRHbHZiaTVjYmlBZ0lDb3ZYRzRnSUhObGRFOXdUV2w0VW1GMGFXOC9PaUJ1ZFcxaVpYSTdYRzRnSUM4cUtseHVJQ0FnS2lCVWFHVWdaV1ptWldOMGFYWmxJSE5qWVd4bElHOW1JR1Z0WW1Wa1pHVmtJSEJ2YVc1MGN5NGdTVzRnWTI5dFltbHVZWFJwYjI0Z2QybDBhQ0JnWUcxcGJsOWthWE4wWUdCY2JpQWdJQ29nZEdocGN5QmtaWFJsY20xcGJtVnpJR2h2ZHlCamJIVnpkR1Z5WldRdlkyeDFiWEJsWkNCMGFHVWdaVzFpWldSa1pXUWdjRzlwYm5SeklHRnlaUzVjYmlBZ0lDb3ZYRzRnSUhOd2NtVmhaRDg2SUc1MWJXSmxjanRjYmlBZ0x5b3FYRzRnSUNBcUlFWnZjaUIwY21GdWMyWnZjbTBnYjNCbGNtRjBhVzl1Y3lBb1pXMWlaV1JrYVc1bklHNWxkeUJ3YjJsdWRITWdkWE5wYm1jZ1lTQjBjbUZwYm1Wa0lHMXZaR1ZzS1Z4dUlDQWdLaUIwYUdseklIZHBiR3dnWTI5dWRISnZiQ0JvYjNjZ1lXZG5jbVZ6YzJsMlpXeDVJSFJ2SUhObFlYSmphQ0JtYjNJZ2JtVmhjbVZ6ZENCdVpXbG5hR0p2Y25NdVhHNGdJQ0FxSUV4aGNtZGxjaUIyWVd4MVpYTWdkMmxzYkNCeVpYTjFiSFFnYVc0Z2MyeHZkMlZ5SUhCbGNtWnZjbTFoYm1ObElHSjFkQ0J0YjNKbElHRmpZM1Z5WVhSbFhHNGdJQ0FxSUc1bFlYSmxjM1FnYm1WcFoyaGliM0lnWlhaaGJIVmhkR2x2Ymk1Y2JpQWdJQ292WEc0Z0lIUnlZVzV6Wm05eWJWRjFaWFZsVTJsNlpUODZJRzUxYldKbGNqdGNibjFjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCVlRVRlFVM1Z3WlhKMmFYTmxaRkJoY21GdGN5QjdYRzRnSUM4cUtseHVJQ0FnS2lCVWFHVWdiV1YwY21saklIVnpaV1FnZEc4Z2JXVmhjM1Z5WlNCa2FYTjBZVzVqWlNCbWIzSWdZU0IwWVhKblpYUWdZWEp5WVhrZ2FYTWdkWE5wYm1jZ2MzVndaWEoyYVhObFpGeHVJQ0FnS2lCa2FXMWxibk5wYjI0Z2NtVmtkV04wYVc5dUxpQkNlU0JrWldaaGRXeDBJSFJvYVhNZ2FYTWdKMk5oZEdWbmIzSnBZMkZzSnlCM2FHbGphQ0IzYVd4c0lHMWxZWE4xY21WY2JpQWdJQ29nWkdsemRHRnVZMlVnYVc0Z2RHVnliWE1nYjJZZ2QyaGxkR2hsY2lCallYUmxaMjl5YVdWeklHMWhkR05vSUc5eUlHRnlaU0JrYVdabVpYSmxiblF1SUVaMWNuUm9aWEp0YjNKbExGeHVJQ0FnS2lCcFppQnpaVzFwTFhOMWNHVnlkbWx6WldRZ2FYTWdjbVZ4ZFdseVpXUWdkR0Z5WjJWMElIWmhiSFZsY3lCdlppQXRNU0IzYVd4c0lHSmxJSFJ5WldGMFpXUWdZWE5jYmlBZ0lDb2dkVzVzWVdKbGJHeGxaQ0IxYm1SbGNpQjBhR1VnSjJOaGRHVm5iM0pwWTJGc0p5QnRaWFJ5YVdNdUlFbG1JSFJvWlNCMFlYSm5aWFFnWVhKeVlYa2dkR0ZyWlhOY2JpQWdJQ29nWTI5dWRHbHVkVzkxY3lCMllXeDFaWE1nS0dVdVp5NGdabTl5SUdFZ2NtVm5jbVZ6YzJsdmJpQndjbTlpYkdWdEtTQjBhR1Z1SUcxbGRISnBZeUJ2WmlBbmJERW5YRzRnSUNBcUlHOXlJQ2RzTWljZ2FYTWdjSEp2WW1GaWJIa2diVzl5WlNCaGNIQnliM0J5YVdGMFpTNWNiaUFnSUNvdlhHNGdJSFJoY21kbGRFMWxkSEpwWXo4NklGUmhjbWRsZEUxbGRISnBZenRjYmlBZ0x5b3FYRzRnSUNBcUlGZGxhV2RvZEdsdVp5Qm1ZV04wYjNJZ1ltVjBkMlZsYmlCa1lYUmhJSFJ2Y0c5c2IyZDVJR0Z1WkNCMFlYSm5aWFFnZEc5d2IyeHZaM2t1SUVFZ2RtRnNkV1VnYjJaY2JpQWdJQ29nTUM0d0lIZGxhV2RvZEhNZ1pXNTBhWEpsYkhrZ2IyNGdaR0YwWVN3Z1lTQjJZV3gxWlNCdlppQXhMakFnZDJWcFoyaDBjeUJsYm5ScGNtVnNlU0J2YmlCMFlYSm5aWFF1WEc0Z0lDQXFJRlJvWlNCa1pXWmhkV3gwSUc5bUlEQXVOU0JpWVd4aGJtTmxjeUIwYUdVZ2QyVnBaMmgwYVc1bklHVnhkV0ZzYkhrZ1ltVjBkMlZsYmlCa1lYUmhJR0Z1WkNCMFlYSm5aWFF1WEc0Z0lDQXFMMXh1SUNCMFlYSm5aWFJYWldsbmFIUS9PaUJ1ZFcxaVpYSTdYRzRnSUM4cUtseHVJQ0FnS2lCVWFHVWdiblZ0WW1WeUlHOW1JRzVsWVhKbGMzUWdibVZwWjJoaWIzSnpJSFJ2SUhWelpTQjBieUJqYjI1emRISjFZM1FnZEdobElIUmhjbWRsZENCemFXMXdiR05wWVd4Y2JpQWdJQ29nYzJWMExpQkVaV1poZFd4MGN5QjBieUIwYUdVZ1lHNWxZWEpsYzNST1pXbG5hR0p2Y25OZ0lIQmhjbUZ0WlhSbGNpNWNiaUFnSUNvdlhHNGdJSFJoY21kbGRFNU9aV2xuYUdKdmNuTS9PaUJ1ZFcxaVpYSTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1ZVMUJVQ0J3Y205cVpXTjBhVzl1SUhONWMzUmxiU3dnWW1GelpXUWdiMjRnZEdobElIQjVkR2h2YmlCcGJYQnNaVzFsYm5SaGRHbHZiaUJtY205dElFMWpTVzV1WlhNc0lFd3NYRzRnS2lCSVpXRnNlU3dnU2l3Z1ZVMUJVRG9nVlc1cFptOXliU0JOWVc1cFptOXNaQ0JCY0hCeWIzaHBiV0YwYVc5dUlHRnVaQ0JRY205cVpXTjBhVzl1SUdadmNpQkVhVzFsYm5OcGIyNWNiaUFxSUZKbFpIVmpkR2x2YmlBb2FIUjBjSE02THk5bmFYUm9kV0l1WTI5dEwyeHRZMmx1Ym1WekwzVnRZWEFwTGx4dUlDcGNiaUFxSUZSb2FYTWdhVzF3YkdWdFpXNTBZWFJwYjI0Z1pHbG1abVZ5Y3lCcGJpQmhJR1psZHlCeVpXZGhjbVJ6T2x4dUlDb2dZU2tnVkdobElHbHVhWFJwWVd4cGVtRjBhVzl1SUc5bUlIUm9aU0JsYldKbFpHUnBibWNnWm05eUlHOXdkR2x0YVhwaGRHbHZiaUJwY3lCdWIzUWdZMjl0Y0hWMFpXUWdkWE5wYm1kY2JpQXFJQ0FnSUdFZ2MzQmxZM1J5WVd3Z2JXVjBhRzlrTENCeVlYUm9aWElnYVhRZ2FYTWdhVzVwZEdsaGJHbDZaV1FnY21GdVpHOXRiSGt1SUZSb2FYTWdZWFp2YVdSeklITnZiV1ZjYmlBcUlDQWdJR052YlhCMWRHRjBhVzl1WVd4c2VTQnBiblJsYm5OcGRtVWdiV0YwY21sNElHVnBaMlZ1SUdOdmJYQjFkR0YwYVc5dWN5QjBhR0YwSUdGeVpXNG5kQ0JsWVhOcGJIbGNiaUFxSUNBZ0lIQnZjblJsWkNCMGJ5QktZWFpoVTJOeWFYQjBMbHh1SUNvZ1lpa2dRU0JzYjNRZ2IyWWdYQ0psZUhSeVlWd2lJR1oxYm1OMGFXOXVZV3hwZEhrZ2FHRnpJR0psWlc0Z2IyMXBkSFJsWkNCbWNtOXRJSFJvYVhNZ2FXMXdiR1Z0Wlc1MFlYUnBiMjRzWEc0Z0tpQWdJQ0J0YjNOMElHNXZkR0ZpYkhrZ1lTQm5jbVZoZENCa1pXRnNJRzltSUdGc2RHVnlibUYwWlNCa2FYTjBZVzVqWlNCbWRXNWpkR2x2Ym5NdVhHNGdLbHh1SUNvZ1ZHaHBjeUJwYlhCc1pXMWxiblJoZEdsdmJpQndjbTkyYVdSbGN5QjBhSEpsWlNCdFpYUm9iMlJ6SUc5bUlISmxaSFZqYVc1bklHUnBiV1Z1YzJsdmJtRnNhWFI1T2x4dUlDb2dNU2tnWm1sME9pQm1hWFFnZEdobElHUmhkR0VnYzNsdVkyaHliMjV2ZFhOc2VWeHVJQ29nTWlrZ1ptbDBRWE41Ym1NNklHWnBkQ0IwYUdVZ1pHRjBZU0JoYzNsdVkyaHliMjV2ZFhOc2VTd2dkMmwwYUNCaElHTmhiR3hpWVdOcklHWjFibU4wYVc5dUlIQnliM1pwWkdWa1hHNGdLaUFnSUNBZ0lIUm9ZWFFnYVhNZ2FXNTJiMnRsWkNCdmJpQmxZV05vSUc5d2RHbHRhWHBoZEdsdmJpQnpkR1Z3TGx4dUlDb2dNeWtnYVc1cGRHbGhiR2w2WlVacGRDQXZJSE4wWlhBNklHMWhiblZoYkd4NUlHbHVhWFJwWVd4cGVtVWdkR2hsSUdGc1oyOXlhWFJvYlNCMGFHVnVJR1Y0Y0d4cFkzUnNlVnh1SUNvZ0lDQWdJQ0J6ZEdWd0lIUm9jbTkxWjJnZ1pXRmphQ0JsY0c5amFDQnZaaUIwYUdVZ1UwZEVJRzl3ZEdsdGFYcGhkR2x2Ymx4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZVMUJVQ0I3WEc0Z0lIQnlhWFpoZEdVZ2JHVmhjbTVwYm1kU1lYUmxJRDBnTVM0d08xeHVJQ0J3Y21sMllYUmxJR3h2WTJGc1EyOXVibVZqZEdsMmFYUjVJRDBnTVM0d08xeHVJQ0J3Y21sMllYUmxJRzFwYmtScGMzUWdQU0F3TGpFN1hHNGdJSEJ5YVhaaGRHVWdia052YlhCdmJtVnVkSE1nUFNBeU8xeHVJQ0J3Y21sMllYUmxJRzVGY0c5amFITWdQU0F3TzF4dUlDQndjbWwyWVhSbElHNU9aV2xuYUdKdmNuTWdQU0F4TlR0Y2JpQWdjSEpwZG1GMFpTQnVaV2RoZEdsMlpWTmhiWEJzWlZKaGRHVWdQU0ExTzF4dUlDQndjbWwyWVhSbElISmhibVJ2YlNBOUlFMWhkR2d1Y21GdVpHOXRPMXh1SUNCd2NtbDJZWFJsSUhKbGNIVnNjMmx2YmxOMGNtVnVaM1JvSUQwZ01TNHdPMXh1SUNCd2NtbDJZWFJsSUhObGRFOXdUV2w0VW1GMGFXOGdQU0F4TGpBN1hHNGdJSEJ5YVhaaGRHVWdjM0J5WldGa0lEMGdNUzR3TzF4dUlDQndjbWwyWVhSbElIUnlZVzV6Wm05eWJWRjFaWFZsVTJsNlpTQTlJRFF1TUR0Y2JseHVJQ0F2THlCVGRYQmxjblpwYzJWa0lIQnliMnBsWTNScGIyNGdjR0Z5WVcxelhHNGdJSEJ5YVhaaGRHVWdkR0Z5WjJWMFRXVjBjbWxqSUQwZ1ZHRnlaMlYwVFdWMGNtbGpMbU5oZEdWbmIzSnBZMkZzTzF4dUlDQndjbWwyWVhSbElIUmhjbWRsZEZkbGFXZG9kQ0E5SURBdU5UdGNiaUFnY0hKcGRtRjBaU0IwWVhKblpYUk9UbVZwWjJoaWIzSnpJRDBnZEdocGN5NXVUbVZwWjJoaWIzSnpPMXh1WEc0Z0lIQnlhWFpoZEdVZ1pHbHpkR0Z1WTJWR2Jqb2dSR2x6ZEdGdVkyVkdiaUE5SUc1MWJXVnlhV003WEc1Y2JpQWdMeThnUzA1T0lITjBZWFJsSUNoallXNGdZbVVnY0hKbFkyOXRjSFYwWldRZ1lXNWtJSE4xY0hCc2FXVmtJSFpwWVNCcGJtbDBhV0ZzYVhwbFJtbDBLVnh1SUNCd2NtbDJZWFJsSUd0dWJrbHVaR2xqWlhNL09pQnVkVzFpWlhKYlhWdGRPMXh1SUNCd2NtbDJZWFJsSUd0dWJrUnBjM1JoYm1ObGN6ODZJRzUxYldKbGNsdGRXMTA3WEc1Y2JpQWdMeThnU1c1MFpYSnVZV3dnWjNKaGNHZ2dZMjl1Ym1WamRHbDJhWFI1SUhKbGNISmxjMlZ1ZEdGMGFXOXVYRzRnSUhCeWFYWmhkR1VnWjNKaGNHZ2hPaUJ0WVhSeWFYZ3VVM0JoY25ObFRXRjBjbWw0TzF4dUlDQndjbWwyWVhSbElGZ2hPaUJXWldOMGIzSTdYRzRnSUhCeWFYWmhkR1VnYVhOSmJtbDBhV0ZzYVhwbFpDQTlJR1poYkhObE8xeHVJQ0J3Y21sMllYUmxJSEp3Um05eVpYTjBPaUIwY21WbExrWnNZWFJVY21WbFcxMGdQU0JiWFR0Y2JpQWdjSEpwZG1GMFpTQnBibWwwUm5KdmJWSmhibVJ2YlNFNklHNXVSR1Z6WTJWdWRDNUpibWwwUm5KdmJWSmhibVJ2YlVadU8xeHVJQ0J3Y21sMllYUmxJR2x1YVhSR2NtOXRWSEpsWlNFNklHNXVSR1Z6WTJWdWRDNUpibWwwUm5KdmJWUnlaV1ZHYmp0Y2JpQWdjSEpwZG1GMFpTQnpaV0Z5WTJnaE9pQnVia1JsYzJObGJuUXVVMlZoY21Ob1JtNDdYRzRnSUhCeWFYWmhkR1VnYzJWaGNtTm9SM0poY0dnaE9pQnRZWFJ5YVhndVUzQmhjbk5sVFdGMGNtbDRPMXh1WEc0Z0lDOHZJRk4xY0dWeWRtbHpaV1FnY0hKdmFtVmpkR2x2YmlCc1lXSmxiSE1nTHlCMFlYSm5aWFJ6WEc0Z0lIQnlhWFpoZEdVZ1dUODZJRzUxYldKbGNsdGRPMXh1WEc0Z0lDOHZJRkJ5YjJwbFkzUmxaQ0JsYldKbFpHUnBibWRjYmlBZ2NISnBkbUYwWlNCbGJXSmxaR1JwYm1jNklHNTFiV0psY2x0ZFcxMGdQU0JiWFR0Y2JpQWdjSEpwZG1GMFpTQnZjSFJwYldsNllYUnBiMjVUZEdGMFpTQTlJRzVsZHlCUGNIUnBiV2w2WVhScGIyNVRkR0YwWlNncE8xeHVYRzVjYmlBZ1oyVjBJRzVsYVdkb1ltOXljeWdwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1dVRtVnBaMmhpYjNKek8xeHVJQ0I5WEc0Z0lHTnZibk4wY25WamRHOXlLSEJoY21GdGN6b2dWVTFCVUZCaGNtRnRaWFJsY25NZ1BTQjdmU2tnZTF4dUlDQWdJR052Ym5OMElITmxkRkJoY21GdElEMGdLR3RsZVRvZ2EyVjViMllnVlUxQlVGQmhjbUZ0WlhSbGNuTXBJRDArSUh0Y2JpQWdJQ0FnSUM4dlFIUnpMV2xuYm05eVpWeHVJQ0FnSUNBZ2FXWWdLSEJoY21GdGMxdHJaWGxkSUNFOVBTQjFibVJsWm1sdVpXUXBJSFJvYVhOYmEyVjVYU0E5SUhCaGNtRnRjMXRyWlhsZE8xeHVJQ0FnSUgwN1hHNWNiaUFnSUNCelpYUlFZWEpoYlNnblpHbHpkR0Z1WTJWR2JpY3BPMXh1SUNBZ0lITmxkRkJoY21GdEtDZHNaV0Z5Ym1sdVoxSmhkR1VuS1R0Y2JpQWdJQ0J6WlhSUVlYSmhiU2duYkc5allXeERiMjV1WldOMGFYWnBkSGtuS1R0Y2JpQWdJQ0J6WlhSUVlYSmhiU2duYldsdVJHbHpkQ2NwTzF4dUlDQWdJSE5sZEZCaGNtRnRLQ2R1UTI5dGNHOXVaVzUwY3ljcE8xeHVJQ0FnSUhObGRGQmhjbUZ0S0NkdVJYQnZZMmh6SnlrN1hHNGdJQ0FnYzJWMFVHRnlZVzBvSjI1T1pXbG5hR0p2Y25NbktUdGNiaUFnSUNCelpYUlFZWEpoYlNnbmJtVm5ZWFJwZG1WVFlXMXdiR1ZTWVhSbEp5azdYRzRnSUNBZ2MyVjBVR0Z5WVcwb0ozSmhibVJ2YlNjcE8xeHVJQ0FnSUhObGRGQmhjbUZ0S0NkeVpYQjFiSE5wYjI1VGRISmxibWQwYUNjcE8xeHVJQ0FnSUhObGRGQmhjbUZ0S0NkelpYUlBjRTFwZUZKaGRHbHZKeWs3WEc0Z0lDQWdjMlYwVUdGeVlXMG9KM053Y21WaFpDY3BPMXh1SUNBZ0lITmxkRkJoY21GdEtDZDBjbUZ1YzJadmNtMVJkV1YxWlZOcGVtVW5LVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCR2FYUWdkR2hsSUdSaGRHRWdkRzhnWVNCd2NtOXFaV04wWldRZ1pXMWlaV1JrYVc1bklITndZV05sSUhONWJtTm9jbTl1YjNWemJIa3VYRzRnSUNBcUwxeHVJQ0JtYVhRb1dEb2dWbVZqZEc5eUtTQjdYRzRnSUNBZ2RHaHBjeTVwYm1sMGFXRnNhWHBsUm1sMEtGZ3BPMXh1SUNBZ0lIUm9hWE11YjNCMGFXMXBlbVZNWVhsdmRYUW9LVHRjYmx4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1WdFltVmtaR2x1Wnp0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkdhWFFnZEdobElHUmhkR0VnZEc4Z1lTQndjbTlxWldOMFpXUWdaVzFpWldSa2FXNW5JSE53WVdObElHRnplVzVqYUhKdmJtOTFjMng1TENCM2FYUm9JR0VnWTJGc2JHSmhZMnRjYmlBZ0lDb2dablZ1WTNScGIyNGdhVzUyYjJ0bFpDQnZiaUJsZG1WeWVTQmxjRzlqYUNCdlppQnZjSFJwYldsNllYUnBiMjR1WEc0Z0lDQXFMMXh1SUNCaGMzbHVZeUJtYVhSQmMzbHVZeWhjYmlBZ0lDQllPaUJXWldOMGIzSXNYRzRnSUNBZ1kyRnNiR0poWTJzNklDaGxjRzlqYUU1MWJXSmxjam9nYm5WdFltVnlLU0E5UGlCMmIybGtJSHdnWW05dmJHVmhiaUE5SUNncElEMCtJSFJ5ZFdWY2JpQWdLU0I3WEc0Z0lDQWdkR2hwY3k1cGJtbDBhV0ZzYVhwbFJtbDBLRmdwTzF4dVhHNGdJQ0FnWVhkaGFYUWdkR2hwY3k1dmNIUnBiV2w2WlV4aGVXOTFkRUZ6ZVc1aktHTmhiR3hpWVdOcktUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWxiV0psWkdScGJtYzdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nU1c1cGRHbGhiR2w2WlhNZ2NHRnlZVzFsZEdWeWN5QnVaV1ZrWldRZ1ptOXlJSE4xY0dWeWRtbHpaV1FnY0hKdmFtVmpkR2x2Ymk1Y2JpQWdJQ292WEc0Z0lITmxkRk4xY0dWeWRtbHpaV1JRY205cVpXTjBhVzl1S0ZrNklHNTFiV0psY2x0ZExDQndZWEpoYlhNNklGVk5RVkJUZFhCbGNuWnBjMlZrVUdGeVlXMXpJRDBnZTMwcElIdGNiaUFnSUNCMGFHbHpMbGtnUFNCWk8xeHVJQ0FnSUhSb2FYTXVkR0Z5WjJWMFRXVjBjbWxqSUQwZ2NHRnlZVzF6TG5SaGNtZGxkRTFsZEhKcFl5QjhmQ0IwYUdsekxuUmhjbWRsZEUxbGRISnBZenRjYmlBZ0lDQjBhR2x6TG5SaGNtZGxkRmRsYVdkb2RDQTlJSEJoY21GdGN5NTBZWEpuWlhSWFpXbG5hSFFnZkh3Z2RHaHBjeTUwWVhKblpYUlhaV2xuYUhRN1hHNGdJQ0FnZEdocGN5NTBZWEpuWlhST1RtVnBaMmhpYjNKeklEMGdjR0Z5WVcxekxuUmhjbWRsZEU1T1pXbG5hR0p2Y25NZ2ZId2dkR2hwY3k1MFlYSm5aWFJPVG1WcFoyaGliM0p6TzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFbHVhWFJwWVd4cGVtVnpJSFZ0WVhBZ2QybDBhQ0J3Y21WamIyMXdkWFJsWkNCTFRrNGdhVzVrYVdObGN5QmhibVFnWkdsemRHRnVZMlZ6TGx4dUlDQWdLaTljYmlBZ2MyVjBVSEpsWTI5dGNIVjBaV1JMVGs0b2EyNXVTVzVrYVdObGN6b2diblZ0WW1WeVcxMWJYU3dnYTI1dVJHbHpkR0Z1WTJWek9pQnVkVzFpWlhKYlhWdGRLU0I3WEc0Z0lDQWdkR2hwY3k1cmJtNUpibVJwWTJWeklEMGdhMjV1U1c1a2FXTmxjenRjYmlBZ0lDQjBhR2x6TG10dWJrUnBjM1JoYm1ObGN5QTlJR3R1YmtScGMzUmhibU5sY3p0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkpibWwwYVdGc2FYcGxjeUJtYVhRZ1lua2dZMjl0Y0hWMGFXNW5JRXRPVGlCaGJtUWdZU0JtZFhwNmVTQnphVzF3YkdsamFXRnNJSE5sZEN3Z1lYTWdkMlZzYkNCaGMxeHVJQ0FnS2lCcGJtbDBhV0ZzYVhwcGJtY2dkR2hsSUhCeWIycGxZM1JsWkNCbGJXSmxaR1JwYm1kekxpQlRaWFJ6SUhSb1pTQnZjSFJwYldsNllYUnBiMjRnYzNSaGRHVWdZV2hsWVdSY2JpQWdJQ29nYjJZZ2IzQjBhVzFwZW1GMGFXOXVJSE4wWlhCekxpQlNaWFIxY201eklIUm9aU0J1ZFcxaVpYSWdiMllnWlhCdlkyaHpJSFJ2SUdKbElIVnpaV1FnWm05eUlIUm9aVnh1SUNBZ0tpQlRSMFFnYjNCMGFXMXBlbUYwYVc5dUxseHVJQ0FnS2k5Y2JpQWdhVzVwZEdsaGJHbDZaVVpwZENoWU9pQldaV04wYjNJcE9pQnVkVzFpWlhJZ2UxeHVJQ0FnSUdsbUlDaFlMbXhsYm1kMGFDQThQU0IwYUdsekxtNU9aV2xuYUdKdmNuTXBJSHRjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdUbTkwSUdWdWIzVm5hQ0JrWVhSaElIQnZhVzUwY3lBb0pIdFlMbXhsYm1kMGFIMHBJSFJ2SUdOeVpXRjBaU0J1VG1WcFoyaGliM0p6T2lBa2UzUm9hWE11Yms1bGFXZG9ZbTl5YzMwdUlDQkJaR1FnYlc5eVpTQmtZWFJoSUhCdmFXNTBjeUJ2Y2lCaFpHcDFjM1FnZEdobElHTnZibVpwWjNWeVlYUnBiMjR1WUNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z1YyVWdaRzl1SjNRZ2JtVmxaQ0IwYnlCeVpXbHVhWFJwWVd4cGVtVWdhV1lnZDJVbmRtVWdZV3h5WldGa2VTQnBibWwwYVdGc2FYcGxaQ0JtYjNJZ2RHaHBjeUJrWVhSaExseHVJQ0FnSUdsbUlDaDBhR2x6TGxnZ1BUMDlJRmdnSmlZZ2RHaHBjeTVwYzBsdWFYUnBZV3hwZW1Wa0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTVuWlhST1JYQnZZMmh6S0NrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZEdocGN5NVlJRDBnV0R0Y2JseHVJQ0FnSUdsbUlDZ2hkR2hwY3k1cmJtNUpibVJwWTJWeklDWW1JQ0YwYUdsekxtdHVia1JwYzNSaGJtTmxjeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdhMjV1VW1WemRXeDBjeUE5SUhSb2FYTXVibVZoY21WemRFNWxhV2RvWW05eWN5aFlLVHRjYmlBZ0lDQWdJSFJvYVhNdWEyNXVTVzVrYVdObGN5QTlJR3R1YmxKbGMzVnNkSE11YTI1dVNXNWthV05sY3p0Y2JpQWdJQ0FnSUhSb2FYTXVhMjV1UkdsemRHRnVZMlZ6SUQwZ2EyNXVVbVZ6ZFd4MGN5NXJibTVFYVhOMFlXNWpaWE03WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkR2hwY3k1bmNtRndhQ0E5SUhSb2FYTXVablY2ZW5sVGFXMXdiR2xqYVdGc1UyVjBLRnh1SUNBZ0lDQWdXQ3hjYmlBZ0lDQWdJSFJvYVhNdWJrNWxhV2RvWW05eWN5eGNiaUFnSUNBZ0lIUm9hWE11YzJWMFQzQk5hWGhTWVhScGIxeHVJQ0FnSUNrN1hHNWNiaUFnSUNBdkx5QlRaWFFnZFhBZ2RHaGxJSE5sWVhKamFDQm5jbUZ3YUNCbWIzSWdjM1ZpYzJWeGRXVnVkQ0IwY21GdWMyWnZjbTFoZEdsdmJpNWNiaUFnSUNCMGFHbHpMbTFoYTJWVFpXRnlZMmhHYm5Nb0tUdGNiaUFnSUNCMGFHbHpMbk5sWVhKamFFZHlZWEJvSUQwZ2RHaHBjeTV0WVd0bFUyVmhjbU5vUjNKaGNHZ29XQ2s3WEc1Y2JpQWdJQ0F2THlCRGFHVmpheUJwWmlCemRYQmxjblpwYzJWa0lIQnliMnBsWTNScGIyNHNJSFJvWlc0Z1lXUnFkWE4wSUhSb1pTQm5jbUZ3YUM1Y2JpQWdJQ0IwYUdsekxuQnliMk5sYzNOSGNtRndhRVp2Y2xOMWNHVnlkbWx6WldSUWNtOXFaV04wYVc5dUtDazdYRzVjYmlBZ0lDQmpiMjV6ZENCN1hHNGdJQ0FnSUNCb1pXRmtMRnh1SUNBZ0lDQWdkR0ZwYkN4Y2JpQWdJQ0FnSUdWd2IyTm9jMUJsY2xOaGJYQnNaU3hjYmlBZ0lDQjlJRDBnZEdocGN5NXBibWwwYVdGc2FYcGxVMmx0Y0d4cFkybGhiRk5sZEVWdFltVmtaR2x1WnlncE8xeHVYRzRnSUNBZ0x5OGdVMlYwSUhSb1pTQnZjSFJwYldsNllYUnBiMjRnY205MWRHbHVaU0J6ZEdGMFpWeHVJQ0FnSUhSb2FYTXViM0IwYVcxcGVtRjBhVzl1VTNSaGRHVXVhR1ZoWkNBOUlHaGxZV1E3WEc0Z0lDQWdkR2hwY3k1dmNIUnBiV2w2WVhScGIyNVRkR0YwWlM1MFlXbHNJRDBnZEdGcGJEdGNiaUFnSUNCMGFHbHpMbTl3ZEdsdGFYcGhkR2x2YmxOMFlYUmxMbVZ3YjJOb2MxQmxjbE5oYlhCc1pTQTlJR1Z3YjJOb2MxQmxjbE5oYlhCc1pUdGNibHh1SUNBZ0lDOHZJRTV2ZHl3Z2FXNXBkR2xoYkdsNlpTQjBhR1VnYjNCMGFXMXBlbUYwYVc5dUlITjBaWEJ6WEc0Z0lDQWdkR2hwY3k1cGJtbDBhV0ZzYVhwbFQzQjBhVzFwZW1GMGFXOXVLQ2s3WEc0Z0lDQWdkR2hwY3k1d2NtVndZWEpsUm05eVQzQjBhVzFwZW1GMGFXOXVURzl2Y0NncE8xeHVJQ0FnSUhSb2FYTXVhWE5KYm1sMGFXRnNhWHBsWkNBOUlIUnlkV1U3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1blpYUk9SWEJ2WTJoektDazdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJRzFoYTJWVFpXRnlZMmhHYm5Nb0tTQjdYRzRnSUNBZ1kyOXVjM1FnZXlCcGJtbDBSbkp2YlZSeVpXVXNJR2x1YVhSR2NtOXRVbUZ1Wkc5dElIMGdQU0J1YmtSbGMyTmxiblF1YldGclpVbHVhWFJwWVd4cGVtRjBhVzl1Y3loY2JpQWdJQ0FnSUhSb2FYTXVaR2x6ZEdGdVkyVkdibHh1SUNBZ0lDazdYRzRnSUNBZ2RHaHBjeTVwYm1sMFJuSnZiVlJ5WldVZ1BTQnBibWwwUm5KdmJWUnlaV1U3WEc0Z0lDQWdkR2hwY3k1cGJtbDBSbkp2YlZKaGJtUnZiU0E5SUdsdWFYUkdjbTl0VW1GdVpHOXRPMXh1SUNBZ0lIUm9hWE11YzJWaGNtTm9JRDBnYm01RVpYTmpaVzUwTG0xaGEyVkpibWwwYVdGc2FYcGxaRTVPVTJWaGNtTm9LSFJvYVhNdVpHbHpkR0Z1WTJWR2JpazdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJRzFoYTJWVFpXRnlZMmhIY21Gd2FDaFlPaUJXWldOMGIzSXBJSHRjYmlBZ0lDQmpiMjV6ZENCcmJtNUpibVJwWTJWeklEMGdkR2hwY3k1cmJtNUpibVJwWTJWeklUdGNiaUFnSUNCamIyNXpkQ0JyYm01RWFYTjBZVzVqWlhNZ1BTQjBhR2x6TG10dWJrUnBjM1JoYm1ObGN5RTdYRzRnSUNBZ1kyOXVjM1FnWkdsdGN5QTlJRnRZTG14bGJtZDBhQ3dnV0M1c1pXNW5kR2hkTzF4dUlDQWdJR052Ym5OMElITmxZWEpqYUVkeVlYQm9JRDBnYm1WM0lHMWhkSEpwZUM1VGNHRnljMlZOWVhSeWFYZ29XMTBzSUZ0ZExDQmJYU3dnWkdsdGN5azdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnJibTVKYm1ScFkyVnpMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JyYm00Z1BTQnJibTVKYm1ScFkyVnpXMmxkTzF4dUlDQWdJQ0FnWTI5dWMzUWdaR2x6ZEdGdVkyVnpJRDBnYTI1dVJHbHpkR0Z1WTJWelcybGRPMXh1SUNBZ0lDQWdabTl5SUNoc1pYUWdhaUE5SURBN0lHb2dQQ0JyYm00dWJHVnVaM1JvT3lCcUt5c3BJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdibVZwWjJoaWIzSWdQU0JyYm01YmFsMDdYRzRnSUNBZ0lDQWdJR052Ym5OMElHUnBjM1JoYm1ObElEMGdaR2x6ZEdGdVkyVnpXMnBkTzF4dUlDQWdJQ0FnSUNCcFppQW9aR2x6ZEdGdVkyVWdQaUF3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdjMlZoY21Ob1IzSmhjR2d1YzJWMEtHa3NJRzVsYVdkb1ltOXlMQ0JrYVhOMFlXNWpaU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQjBjbUZ1YzNCdmMyVWdQU0J0WVhSeWFYZ3VkSEpoYm5Od2IzTmxLSE5sWVhKamFFZHlZWEJvS1R0Y2JpQWdJQ0J5WlhSMWNtNGdiV0YwY21sNExtMWhlR2x0ZFcwb2MyVmhjbU5vUjNKaGNHZ3NJSFJ5WVc1emNHOXpaU2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1ZISmhibk5tYjNKdGN5QmtZWFJoSUhSdklIUm9aU0JsZUdsemRHbHVaeUJsYldKbFpHUnBibWNnYzNCaFkyVXVYRzRnSUNBcUwxeHVJQ0IwY21GdWMyWnZjbTBvZEc5VWNtRnVjMlp2Y20wNklGWmxZM1J2Y2lrZ2UxeHVJQ0FnSUM4dklGVnpaU0IwYUdVZ2NISmxkbWx2ZFhNZ2NtRjNSR0YwWVZ4dUlDQWdJR052Ym5OMElISmhkMFJoZEdFZ1BTQjBhR2x6TGxnN1hHNGdJQ0FnYVdZZ0tISmhkMFJoZEdFZ1BUMDlJSFZ1WkdWbWFXNWxaQ0I4ZkNCeVlYZEVZWFJoTG14bGJtZDBhQ0E5UFQwZ01Da2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZE9ieUJrWVhSaElHaGhjeUJpWldWdUlHWnBkQzRuS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JzWlhRZ2JrNWxhV2RvWW05eWN5QTlJRTFoZEdndVpteHZiM0lvZEdocGN5NXVUbVZwWjJoaWIzSnpJQ29nZEdocGN5NTBjbUZ1YzJadmNtMVJkV1YxWlZOcGVtVXBPMXh1SUNBZ0lHNU9aV2xuYUdKdmNuTWdQU0JOWVhSb0xtMXBiaWh5WVhkRVlYUmhMbXhsYm1kMGFDd2diazVsYVdkb1ltOXljeWs3WEc0Z0lDQWdZMjl1YzNRZ2FXNXBkQ0E5SUc1dVJHVnpZMlZ1ZEM1cGJtbDBhV0ZzYVhwbFUyVmhjbU5vS0Z4dUlDQWdJQ0FnZEdocGN5NXljRVp2Y21WemRDeGNiaUFnSUNBZ0lISmhkMFJoZEdFc1hHNGdJQ0FnSUNCMGIxUnlZVzV6Wm05eWJTeGNiaUFnSUNBZ0lHNU9aV2xuYUdKdmNuTXNYRzRnSUNBZ0lDQjBhR2x6TG1sdWFYUkdjbTl0VW1GdVpHOXRMRnh1SUNBZ0lDQWdkR2hwY3k1cGJtbDBSbkp2YlZSeVpXVXNYRzRnSUNBZ0lDQjBhR2x6TG5KaGJtUnZiVnh1SUNBZ0lDazdYRzVjYmlBZ0lDQmpiMjV6ZENCeVpYTjFiSFFnUFNCMGFHbHpMbk5sWVhKamFDaHlZWGRFWVhSaExDQjBhR2x6TG5ObFlYSmphRWR5WVhCb0xDQnBibWwwTENCMGIxUnlZVzV6Wm05eWJTazdYRzVjYmlBZ0lDQnNaWFFnZXlCcGJtUnBZMlZ6TENCM1pXbG5hSFJ6T2lCa2FYTjBZVzVqWlhNZ2ZTQTlJR2hsWVhBdVpHVm9aV0Z3VTI5eWRDaHlaWE4xYkhRcE8xeHVYRzRnSUNBZ2FXNWthV05sY3lBOUlHbHVaR2xqWlhNdWJXRndLSGdnUFQ0Z2VDNXpiR2xqWlNnd0xDQjBhR2x6TG01T1pXbG5hR0p2Y25NcEtUdGNiaUFnSUNCa2FYTjBZVzVqWlhNZ1BTQmthWE4wWVc1alpYTXViV0Z3S0hnZ1BUNGdlQzV6YkdsalpTZ3dMQ0IwYUdsekxtNU9aV2xuYUdKdmNuTXBLVHRjYmx4dUlDQWdJR052Ym5OMElHRmthblZ6ZEdWa1RHOWpZV3hEYjI1dVpXTjBhWFpwZEhrZ1BTQk5ZWFJvTG0xaGVDZ3dMQ0IwYUdsekxteHZZMkZzUTI5dWJtVmpkR2wyYVhSNUlDMGdNU2s3WEc0Z0lDQWdZMjl1YzNRZ2V5QnphV2R0WVhNc0lISm9iM01nZlNBOUlIUm9hWE11YzIxdmIzUm9TMDVPUkdsemRHRnVZMlVvWEc0Z0lDQWdJQ0JrYVhOMFlXNWpaWE1zWEc0Z0lDQWdJQ0IwYUdsekxtNU9aV2xuYUdKdmNuTXNYRzRnSUNBZ0lDQmhaR3AxYzNSbFpFeHZZMkZzUTI5dWJtVmpkR2wyYVhSNVhHNGdJQ0FnS1R0Y2JseHVJQ0FnSUdOdmJuTjBJSHNnY205M2N5d2dZMjlzY3l3Z2RtRnNjeUI5SUQwZ2RHaHBjeTVqYjIxd2RYUmxUV1Z0WW1WeWMyaHBjRk4wY21WdVozUm9jeWhjYmlBZ0lDQWdJR2x1WkdsalpYTXNYRzRnSUNBZ0lDQmthWE4wWVc1alpYTXNYRzRnSUNBZ0lDQnphV2R0WVhNc1hHNGdJQ0FnSUNCeWFHOXpYRzRnSUNBZ0tUdGNibHh1SUNBZ0lHTnZibk4wSUhOcGVtVWdQU0JiZEc5VWNtRnVjMlp2Y20wdWJHVnVaM1JvTENCeVlYZEVZWFJoTG14bGJtZDBhRjA3WEc0Z0lDQWdiR1YwSUdkeVlYQm9JRDBnYm1WM0lHMWhkSEpwZUM1VGNHRnljMlZOWVhSeWFYZ29jbTkzY3l3Z1kyOXNjeXdnZG1Gc2N5d2djMmw2WlNrN1hHNWNiaUFnSUNBdkx5QlVhR2x6SUhkaGN5QmhJSFpsY25rZ2MzQmxZMmxoYkd4NUlHTnZibk4wY25WamRHVmtJR2R5WVhCb0lIZHBkR2dnWTI5dWMzUmhiblFnWkdWbmNtVmxMbHh1SUNBZ0lDOHZJRlJvWVhRZ2JHVjBjeUIxY3lCa2J5Qm1ZVzVqZVNCMWJuQmhZMnRwYm1jZ1lua2djbVZ6YUdGd2FXNW5JSFJvWlNCamMzSWdiV0YwY21sNElHbHVaR2xqWlhOY2JpQWdJQ0F2THlCaGJtUWdaR0YwWVM0Z1JHOXBibWNnYzI4Z2NtVnNhV1Z6SUc5dUlIUm9aU0JqYjI1emRHRnVkQ0JrWldkeVpXVWdZWE56ZFcxd2RHbHZiaUZjYmx4dUlDQWdJR052Ym5OMElHNXZjbTFsWkNBOUlHMWhkSEpwZUM1dWIzSnRZV3hwZW1Vb1ozSmhjR2dzSUcxaGRISnBlQzVPYjNKdFZIbHdaUzVzTVNrN1hHNWNiaUFnSUNCamIyNXpkQ0JqYzNKTllYUnlhWGdnUFNCdFlYUnlhWGd1WjJWMFExTlNLRzV2Y20xbFpDazdYRzRnSUNBZ1kyOXVjM1FnYmxCdmFXNTBjeUE5SUhSdlZISmhibk5tYjNKdExteGxibWQwYUR0Y2JseHVJQ0FnSUdOdmJuTjBJR1ZKYm1ScFkyVnpJRDBnZFhScGJITXVjbVZ6YUdGd1pUSmtLRnh1SUNBZ0lDQWdZM055VFdGMGNtbDRMbWx1WkdsalpYTXNYRzRnSUNBZ0lDQnVVRzlwYm5SekxGeHVJQ0FnSUNBZ2RHaHBjeTV1VG1WcFoyaGliM0p6WEc0Z0lDQWdLVHRjYmx4dUlDQWdJR052Ym5OMElHVlhaV2xuYUhSeklEMGdkWFJwYkhNdWNtVnphR0Z3WlRKa0tGeHVJQ0FnSUNBZ1kzTnlUV0YwY21sNExuWmhiSFZsY3l4Y2JpQWdJQ0FnSUc1UWIybHVkSE1zWEc0Z0lDQWdJQ0IwYUdsekxtNU9aV2xuYUdKdmNuTmNiaUFnSUNBcE8xeHVYRzRnSUNBZ1kyOXVjM1FnWlcxaVpXUmthVzVuSUQwZ2FXNXBkRlJ5WVc1elptOXliU2hsU1c1a2FXTmxjeXdnWlZkbGFXZG9kSE1zSUhSb2FYTXVaVzFpWldSa2FXNW5LVHRjYmx4dUlDQWdJR052Ym5OMElHNUZjRzlqYUhNZ1BTQjBhR2x6TG01RmNHOWphSE5jYmlBZ0lDQWdJRDhnZEdocGN5NXVSWEJ2WTJoeklDOGdNMXh1SUNBZ0lDQWdPaUJuY21Gd2FDNXVVbTkzY3lBOFBTQXhNREF3TUZ4dUlDQWdJQ0FnUHlBeE1EQmNiaUFnSUNBZ0lEb2dNekE3WEc1Y2JpQWdJQ0JqYjI1emRDQm5jbUZ3YUUxaGVDQTlJR2R5WVhCb1hHNGdJQ0FnSUNBdVoyVjBWbUZzZFdWektDbGNiaUFnSUNBZ0lDNXlaV1IxWTJVb0tHMWhlQ3dnZG1Gc0tTQTlQaUFvZG1Gc0lENGdiV0Y0SUQ4Z2RtRnNJRG9nYldGNEtTd2dNQ2s3WEc0Z0lDQWdaM0poY0dnZ1BTQm5jbUZ3YUM1dFlYQW9kbUZzZFdVZ1BUNGdLSFpoYkhWbElEd2daM0poY0doTllYZ2dMeUJ1UlhCdlkyaHpJRDhnTUNBNklIWmhiSFZsS1NrN1hHNGdJQ0FnWjNKaGNHZ2dQU0J0WVhSeWFYZ3VaV3hwYldsdVlYUmxXbVZ5YjNNb1ozSmhjR2dwTzF4dVhHNGdJQ0FnWTI5dWMzUWdaWEJ2WTJoelVHVnlVMkZ0Y0d4bElEMGdkR2hwY3k1dFlXdGxSWEJ2WTJoelVHVnlVMkZ0Y0d4bEtGeHVJQ0FnSUNBZ1ozSmhjR2d1WjJWMFZtRnNkV1Z6S0Nrc1hHNGdJQ0FnSUNCdVJYQnZZMmh6WEc0Z0lDQWdLVHRjYmlBZ0lDQmpiMjV6ZENCb1pXRmtJRDBnWjNKaGNHZ3VaMlYwVW05M2N5Z3BPMXh1SUNBZ0lHTnZibk4wSUhSaGFXd2dQU0JuY21Gd2FDNW5aWFJEYjJ4ektDazdYRzVjYmlBZ0lDQXZMeUJKYm1sMGFXRnNhWHBsSUc5d2RHbHRhWHBoZEdsdmJpQnpiR2xuYUhSc2VTQmthV1ptWlhKbGJuUnNlU0IwYUdGdUlIUm9aU0JtYVhRZ2JXVjBhRzlrTGx4dUlDQWdJSFJvYVhNdVlYTnphV2R1VDNCMGFXMXBlbUYwYVc5dVUzUmhkR1ZRWVhKaGJXVjBaWEp6S0h0Y2JpQWdJQ0FnSUdobFlXUkZiV0psWkdScGJtYzZJR1Z0WW1Wa1pHbHVaeXhjYmlBZ0lDQWdJSFJoYVd4RmJXSmxaR1JwYm1jNklIUm9hWE11WlcxaVpXUmthVzVuTEZ4dUlDQWdJQ0FnYUdWaFpDeGNiaUFnSUNBZ0lIUmhhV3dzWEc0Z0lDQWdJQ0JqZFhKeVpXNTBSWEJ2WTJnNklEQXNYRzRnSUNBZ0lDQnVSWEJ2WTJoekxGeHVJQ0FnSUNBZ2JsWmxjblJwWTJWek9pQm5jbUZ3YUM1blpYUkVhVzF6S0NsYk1WMHNYRzRnSUNBZ0lDQmxjRzlqYUhOUVpYSlRZVzF3YkdVc1hHNGdJQ0FnZlNrN1hHNGdJQ0FnZEdocGN5NXdjbVZ3WVhKbFJtOXlUM0IwYVcxcGVtRjBhVzl1VEc5dmNDZ3BPMXh1WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11YjNCMGFXMXBlbVZNWVhsdmRYUW9LVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGFHVmphM01nYVdZZ2QyVW5jbVVnZFhOcGJtY2djM1Z3WlhKMmFYTmxaQ0J3Y205cVpXTjBhVzl1TENCMGFHVnVJSEJ5YjJObGMzTWdkR2hsSUdkeVlYQm9YRzRnSUNBcUlHRmpZMjl5WkdsdVoyeDVMbHh1SUNBZ0tpOWNiaUFnY0hKcGRtRjBaU0J3Y205alpYTnpSM0poY0doR2IzSlRkWEJsY25acGMyVmtVSEp2YW1WamRHbHZiaWdwSUh0Y2JpQWdJQ0JqYjI1emRDQjdJRmtzSUZnZ2ZTQTlJSFJvYVhNN1hHNGdJQ0FnYVdZZ0tGa3BJSHRjYmlBZ0lDQWdJR2xtSUNoWkxteGxibWQwYUNBaFBUMGdXQzVzWlc1bmRHZ3BJSHRjYmlBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLQ2RNWlc1bmRHZ2diMllnV0NCaGJtUWdlU0J0ZFhOMElHSmxJR1Z4ZFdGc0p5azdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMblJoY21kbGRFMWxkSEpwWXlBOVBUMGdWR0Z5WjJWMFRXVjBjbWxqTG1OaGRHVm5iM0pwWTJGc0tTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHeDBJRDBnZEdocGN5NTBZWEpuWlhSWFpXbG5hSFFnUENBeExqQTdYRzRnSUNBZ0lDQWdJR052Ym5OMElHWmhja1JwYzNRZ1BTQnNkQ0EvSURJdU5TQXFJQ2d4TGpBZ0x5QW9NUzR3SUMwZ2RHaHBjeTUwWVhKblpYUlhaV2xuYUhRcEtTQTZJREV1TUdVeE1qdGNiaUFnSUNBZ0lDQWdkR2hwY3k1bmNtRndhQ0E5SUhSb2FYTXVZMkYwWldkdmNtbGpZV3hUYVcxd2JHbGphV0ZzVTJWMFNXNTBaWEp6WldOMGFXOXVLRnh1SUNBZ0lDQWdJQ0FnSUhSb2FYTXVaM0poY0dnc1hHNGdJQ0FnSUNBZ0lDQWdXU3hjYmlBZ0lDQWdJQ0FnSUNCbVlYSkVhWE4wWEc0Z0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNBdkx5QlVUMFJQSUNoaGJtUjVZMjlsYm1WdVFDazZJR0ZrWkNCdWIyNHRZMkYwWldkdmNtbGpZV3dnYzNWd1pYSjJhWE5sWkNCbGJXSmxaR1JwYm1kekxseHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQk5ZVzUxWVd4c2VTQnpkR1Z3SUhSb2NtOTFaMmdnZEdobElHOXdkR2x0YVhwaGRHbHZiaUJ3Y205alpYTnpJRzl1WlNCbGNHOWphQ0JoZENCaElIUnBiV1V1WEc0Z0lDQXFMMXh1SUNCemRHVndLQ2tnZTF4dUlDQWdJR052Ym5OMElIc2dZM1Z5Y21WdWRFVndiMk5vSUgwZ1BTQjBhR2x6TG05d2RHbHRhWHBoZEdsdmJsTjBZWFJsTzF4dVhHNGdJQ0FnYVdZZ0tHTjFjbkpsYm5SRmNHOWphQ0E4SUhSb2FYTXVaMlYwVGtWd2IyTm9jeWdwS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbTl3ZEdsdGFYcGxUR0Y1YjNWMFUzUmxjQ2hqZFhKeVpXNTBSWEJ2WTJncE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1dmNIUnBiV2w2WVhScGIyNVRkR0YwWlM1amRYSnlaVzUwUlhCdlkyZzdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVjeUIwYUdVZ1kyOXRjSFYwWldRZ2NISnZhbVZqZEdWa0lHVnRZbVZrWkdsdVp5NWNiaUFnSUNvdlhHNGdJR2RsZEVWdFltVmtaR2x1WnlncElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWxiV0psWkdScGJtYzdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUTI5dGNIVjBaU0IwYUdVZ1lHQnVUbVZwWjJoaWIzSnpZR0FnYm1WaGNtVnpkQ0J3YjJsdWRITWdabTl5SUdWaFkyZ2daR0YwWVNCd2IybHVkQ0JwYmlCZ1lGaGdZRnh1SUNBZ0tpQlVhR2x6SUcxaGVTQmlaU0JsZUdGamRDd2dZblYwSUcxdmNtVWdiR2xyWld4NUlHbHpJR0Z3Y0hKdmVHbHRZWFJsWkNCMmFXRWdibVZoY21WemRDQnVaV2xuYUdKdmNseHVJQ0FnS2lCa1pYTmpaVzUwTGx4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCdVpXRnlaWE4wVG1WcFoyaGliM0p6S0ZnNklGWmxZM1J2Y2lrZ2UxeHVJQ0FnSUdOdmJuTjBJSHNnWkdsemRHRnVZMlZHYml3Z2JrNWxhV2RvWW05eWN5QjlJRDBnZEdocGN6dGNiaUFnSUNCamIyNXpkQ0JzYjJjeUlEMGdLRzQ2SUc1MWJXSmxjaWtnUFQ0Z1RXRjBhQzVzYjJjb2Jpa2dMeUJOWVhSb0xteHZaeWd5S1R0Y2JpQWdJQ0JqYjI1emRDQnRaWFJ5YVdOT1RrUmxjMk5sYm5RZ1BTQnVia1JsYzJObGJuUXViV0ZyWlU1T1JHVnpZMlZ1ZENoa2FYTjBZVzVqWlVadUxDQjBhR2x6TG5KaGJtUnZiU2s3WEc1Y2JpQWdJQ0F2THlCSVlXNWtiR1VnY0hsMGFHOXVNeUJ5YjNWdVpHbHVaeUJrYjNkdUlHWnliMjBnTUM0MUlHUnBjMk55Y0dGdVkzbGNiaUFnSUNCamIyNXpkQ0J5YjNWdVpDQTlJQ2h1T2lCdWRXMWlaWElwSUQwK0lIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdUlEMDlQU0F3TGpVZ1B5QXdJRG9nVFdGMGFDNXliM1Z1WkNodUtUdGNiaUFnSUNCOU8xeHVYRzRnSUNBZ1kyOXVjM1FnYmxSeVpXVnpJRDBnTlNBcklFMWhkR2d1Wm14dmIzSW9jbTkxYm1Rb1dDNXNaVzVuZEdnZ0tpb2dNQzQxSUM4Z01qQXVNQ2twTzF4dUlDQWdJR052Ym5OMElHNUpkR1Z5Y3lBOUlFMWhkR2d1YldGNEtEVXNJRTFoZEdndVpteHZiM0lvVFdGMGFDNXliM1Z1WkNoc2IyY3lLRmd1YkdWdVozUm9LU2twS1R0Y2JseHVJQ0FnSUhSb2FYTXVjbkJHYjNKbGMzUWdQU0IwY21WbExtMWhhMlZHYjNKbGMzUW9XQ3dnYms1bGFXZG9ZbTl5Y3l3Z2JsUnlaV1Z6TENCMGFHbHpMbkpoYm1SdmJTazdYRzVjYmlBZ0lDQmpiMjV6ZENCc1pXRm1RWEp5WVhrZ1BTQjBjbVZsTG0xaGEyVk1aV0ZtUVhKeVlYa29kR2hwY3k1eWNFWnZjbVZ6ZENrN1hHNGdJQ0FnWTI5dWMzUWdleUJwYm1ScFkyVnpMQ0IzWldsbmFIUnpJSDBnUFNCdFpYUnlhV05PVGtSbGMyTmxiblFvWEc0Z0lDQWdJQ0JZTEZ4dUlDQWdJQ0FnYkdWaFprRnljbUY1TEZ4dUlDQWdJQ0FnYms1bGFXZG9ZbTl5Y3l4Y2JpQWdJQ0FnSUc1SmRHVnljMXh1SUNBZ0lDazdYRzRnSUNBZ2NtVjBkWEp1SUhzZ2EyNXVTVzVrYVdObGN6b2dhVzVrYVdObGN5d2dhMjV1UkdsemRHRnVZMlZ6T2lCM1pXbG5hSFJ6SUgwN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSMmwyWlc0Z1lTQnpaWFFnYjJZZ1pHRjBZU0JZTENCaElHNWxhV2RvWW05eWFHOXZaQ0J6YVhwbExDQmhibVFnWVNCdFpXRnpkWEpsSUc5bUlHUnBjM1JoYm1ObFhHNGdJQ0FxSUdOdmJYQjFkR1VnZEdobElHWjFlbnA1SUhOcGJYQnNhV05wWVd3Z2MyVjBJQ2hvWlhKbElISmxjSEpsYzJWdWRHVmtJR0Z6SUdFZ1puVjZlbmtnWjNKaGNHZ2dhVzVjYmlBZ0lDb2dkR2hsSUdadmNtMGdiMllnWVNCemNHRnljMlVnYldGMGNtbDRLU0JoYzNOdlkybGhkR1ZrSUhSdklIUm9aU0JrWVhSaExpQlVhR2x6SUdseklHUnZibVVnWW5sY2JpQWdJQ29nYkc5allXeHNlU0JoY0hCeWIzaHBiV0YwYVc1bklHZGxiMlJsYzJsaklHUnBjM1JoYm1ObElHRjBJR1ZoWTJnZ2NHOXBiblFzSUdOeVpXRjBhVzVuSUdFZ1puVjZlbmxjYmlBZ0lDb2djMmx0Y0d4cFkybGhiQ0J6WlhRZ1ptOXlJR1ZoWTJnZ2MzVmphQ0J3YjJsdWRDd2dZVzVrSUhSb1pXNGdZMjl0WW1sdWFXNW5JR0ZzYkNCMGFHVWdiRzlqWVd4Y2JpQWdJQ29nWm5WNmVua2djMmx0Y0d4cFkybGhiQ0J6WlhSeklHbHVkRzhnWVNCbmJHOWlZV3dnYjI1bElIWnBZU0JoSUdaMWVucDVJSFZ1YVc5dUxseHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQm1kWHA2ZVZOcGJYQnNhV05wWVd4VFpYUW9YRzRnSUNBZ1dEb2dWbVZqZEc5eUxGeHVJQ0FnSUc1T1pXbG5hR0p2Y25NNklHNTFiV0psY2l4Y2JpQWdJQ0J6WlhSUGNFMXBlRkpoZEdsdklEMGdNUzR3WEc0Z0lDa2dlMXh1SUNBZ0lHTnZibk4wSUhzZ2EyNXVTVzVrYVdObGN5QTlJRnRkTENCcmJtNUVhWE4wWVc1alpYTWdQU0JiWFN3Z2JHOWpZV3hEYjI1dVpXTjBhWFpwZEhrZ2ZTQTlJSFJvYVhNN1hHNWNiaUFnSUNCamIyNXpkQ0I3SUhOcFoyMWhjeXdnY21odmN5QjlJRDBnZEdocGN5NXpiVzl2ZEdoTFRrNUVhWE4wWVc1alpTaGNiaUFnSUNBZ0lHdHVia1JwYzNSaGJtTmxjeXhjYmlBZ0lDQWdJRzVPWldsbmFHSnZjbk1zWEc0Z0lDQWdJQ0JzYjJOaGJFTnZibTVsWTNScGRtbDBlVnh1SUNBZ0lDazdYRzVjYmlBZ0lDQmpiMjV6ZENCN0lISnZkM01zSUdOdmJITXNJSFpoYkhNZ2ZTQTlJSFJvYVhNdVkyOXRjSFYwWlUxbGJXSmxjbk5vYVhCVGRISmxibWQwYUhNb1hHNGdJQ0FnSUNCcmJtNUpibVJwWTJWekxGeHVJQ0FnSUNBZ2EyNXVSR2x6ZEdGdVkyVnpMRnh1SUNBZ0lDQWdjMmxuYldGekxGeHVJQ0FnSUNBZ2NtaHZjMXh1SUNBZ0lDazdYRzVjYmlBZ0lDQmpiMjV6ZENCemFYcGxJRDBnVzFndWJHVnVaM1JvTENCWUxteGxibWQwYUYwN1hHNGdJQ0FnWTI5dWMzUWdjM0JoY25ObFRXRjBjbWw0SUQwZ2JtVjNJRzFoZEhKcGVDNVRjR0Z5YzJWTllYUnlhWGdvY205M2N5d2dZMjlzY3l3Z2RtRnNjeXdnYzJsNlpTazdYRzVjYmlBZ0lDQmpiMjV6ZENCMGNtRnVjM0J2YzJVZ1BTQnRZWFJ5YVhndWRISmhibk53YjNObEtITndZWEp6WlUxaGRISnBlQ2s3WEc0Z0lDQWdZMjl1YzNRZ2NISnZaRTFoZEhKcGVDQTlJRzFoZEhKcGVDNXdZV2x5ZDJselpVMTFiSFJwY0d4NUtITndZWEp6WlUxaGRISnBlQ3dnZEhKaGJuTndiM05sS1R0Y2JseHVJQ0FnSUdOdmJuTjBJR0VnUFNCdFlYUnlhWGd1YzNWaWRISmhZM1FvYldGMGNtbDRMbUZrWkNoemNHRnljMlZOWVhSeWFYZ3NJSFJ5WVc1emNHOXpaU2tzSUhCeWIyUk5ZWFJ5YVhncE8xeHVJQ0FnSUdOdmJuTjBJR0lnUFNCdFlYUnlhWGd1YlhWc2RHbHdiSGxUWTJGc1lYSW9ZU3dnYzJWMFQzQk5hWGhTWVhScGJ5azdYRzRnSUNBZ1kyOXVjM1FnWXlBOUlHMWhkSEpwZUM1dGRXeDBhWEJzZVZOallXeGhjaWh3Y205a1RXRjBjbWw0TENBeExqQWdMU0J6WlhSUGNFMXBlRkpoZEdsdktUdGNiaUFnSUNCamIyNXpkQ0J5WlhOMWJIUWdQU0J0WVhSeWFYZ3VZV1JrS0dJc0lHTXBPMXh1WEc0Z0lDQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRiMjFpYVc1bElHRWdablY2ZW5rZ2MybHRjR3hwWTJsaGJDQnpaWFFnZDJsMGFDQmhibTkwYUdWeUlHWjFlbnA1SUhOcGJYQnNhV05wWVd3Z2MyVjBYRzRnSUNBcUlHZGxibVZ5WVhSbFpDQm1jbTl0SUdOaGRHVm5iM0pwWTJGc0lHUmhkR0VnZFhOcGJtY2dZMkYwWldkdmNtbGpZV3dnWkdsemRHRnVZMlZ6TGlCVWFHVWdkR0Z5WjJWMFhHNGdJQ0FxSUdSaGRHRWdhWE1nWVhOemRXMWxaQ0IwYnlCaVpTQmpZWFJsWjI5eWFXTmhiQ0JzWVdKbGJDQmtZWFJoSUNoaElIWmxZM1J2Y2lCdlppQnNZV0psYkhNcExGeHVJQ0FnS2lCaGJtUWdkR2hwY3lCM2FXeHNJSFZ3WkdGMFpTQjBhR1VnWm5WNmVua2djMmx0Y0d4cFkybGhiQ0J6WlhRZ2RHOGdjbVZ6Y0dWamRDQjBhR0YwSUd4aFltVnNJR1JoZEdFdVhHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElHTmhkR1ZuYjNKcFkyRnNVMmx0Y0d4cFkybGhiRk5sZEVsdWRHVnljMlZqZEdsdmJpaGNiaUFnSUNCemFXMXdiR2xqYVdGc1UyVjBPaUJ0WVhSeWFYZ3VVM0JoY25ObFRXRjBjbWw0TEZ4dUlDQWdJSFJoY21kbGREb2diblZ0WW1WeVcxMHNYRzRnSUNBZ1ptRnlSR2x6ZERvZ2JuVnRZbVZ5TEZ4dUlDQWdJSFZ1YTI1dmQyNUVhWE4wSUQwZ01TNHdYRzRnSUNrZ2UxeHVJQ0FnSUd4bGRDQnBiblJsY25ObFkzUnBiMjRnUFNCbVlYTjBTVzUwWlhKelpXTjBhVzl1S0Z4dUlDQWdJQ0FnYzJsdGNHeHBZMmxoYkZObGRDeGNiaUFnSUNBZ0lIUmhjbWRsZEN4Y2JpQWdJQ0FnSUhWdWEyNXZkMjVFYVhOMExGeHVJQ0FnSUNBZ1ptRnlSR2x6ZEZ4dUlDQWdJQ2s3WEc0Z0lDQWdhVzUwWlhKelpXTjBhVzl1SUQwZ2JXRjBjbWw0TG1Wc2FXMXBibUYwWlZwbGNtOXpLR2x1ZEdWeWMyVmpkR2x2YmlrN1hHNGdJQ0FnY21WMGRYSnVJSEpsYzJWMFRHOWpZV3hEYjI1dVpXTjBhWFpwZEhrb2FXNTBaWEp6WldOMGFXOXVLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGIyMXdkWFJsSUdFZ1kyOXVkR2x1ZFc5MWN5QjJaWEp6YVc5dUlHOW1JSFJvWlNCa2FYTjBZVzVqWlNCMGJ5QjBhR1VnYTNSb0lHNWxZWEpsYzNSY2JpQWdJQ29nYm1WcFoyaGliM0l1SUZSb1lYUWdhWE1zSUhSb2FYTWdhWE1nYzJsdGFXeGhjaUIwYnlCcmJtNHRaR2x6ZEdGdVkyVWdZblYwSUdGc2JHOTNjeUJqYjI1MGFXNTFiM1Z6WEc0Z0lDQXFJR3NnZG1Gc2RXVnpJSEpoZEdobGNpQjBhR0Z1SUhKbGNYVnBjbWx1WnlCaGJpQnBiblJsWjNKaGJDQnJMaUJKYmlCbGMzTmpaVzVqWlNCM1pTQmhjbVVnYzJsdGNHeDVYRzRnSUNBcUlHTnZiWEIxZEdsdVp5QjBhR1VnWkdsemRHRnVZMlVnYzNWamFDQjBhR0YwSUhSb1pTQmpZWEprYVc1aGJHbDBlU0J2WmlCbWRYcDZlU0J6WlhRZ2QyVWdaMlZ1WlhKaGRHVmNiaUFnSUNvZ2FYTWdheTVjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnYzIxdmIzUm9TMDVPUkdsemRHRnVZMlVvWEc0Z0lDQWdaR2x6ZEdGdVkyVnpPaUJXWldOMGIzSnpMRnh1SUNBZ0lHczZJRzUxYldKbGNpeGNiaUFnSUNCc2IyTmhiRU52Ym01bFkzUnBkbWwwZVNBOUlERXVNQ3hjYmlBZ0lDQnVTWFJsY2lBOUlEWTBMRnh1SUNBZ0lHSmhibVIzYVdSMGFDQTlJREV1TUZ4dUlDQXBJSHRjYmlBZ0lDQmpiMjV6ZENCMFlYSm5aWFFnUFNBb1RXRjBhQzVzYjJjb2F5a2dMeUJOWVhSb0xteHZaeWd5S1NrZ0tpQmlZVzVrZDJsa2RHZzdYRzRnSUNBZ1kyOXVjM1FnY21odklEMGdkWFJwYkhNdWVtVnliM01vWkdsemRHRnVZMlZ6TG14bGJtZDBhQ2s3WEc0Z0lDQWdZMjl1YzNRZ2NtVnpkV3gwSUQwZ2RYUnBiSE11ZW1WeWIzTW9aR2x6ZEdGdVkyVnpMbXhsYm1kMGFDazdYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR1JwYzNSaGJtTmxjeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2JHVjBJR3h2SUQwZ01DNHdPMXh1SUNBZ0lDQWdiR1YwSUdocElEMGdTVzVtYVc1cGRIazdYRzRnSUNBZ0lDQnNaWFFnYldsa0lEMGdNUzR3TzF4dVhHNGdJQ0FnSUNBdkx5QlVUMFJQT2lCVWFHbHpJR2x6SUhabGNua2dhVzVsWm1acFkybGxiblFzSUdKMWRDQjNhV3hzSUdSdklHWnZjaUJ1YjNjdUlFWkpXRTFGWEc0Z0lDQWdJQ0JqYjI1emRDQnBkR2hFYVhOMFlXNWpaWE1nUFNCa2FYTjBZVzVqWlhOYmFWMDdYRzRnSUNBZ0lDQmpiMjV6ZENCdWIyNWFaWEp2UkdsemRITWdQU0JwZEdoRWFYTjBZVzVqWlhNdVptbHNkR1Z5S0dRZ1BUNGdaQ0ErSURBdU1DazdYRzVjYmlBZ0lDQWdJR2xtSUNodWIyNWFaWEp2UkdsemRITXViR1Z1WjNSb0lENDlJR3h2WTJGc1EyOXVibVZqZEdsMmFYUjVLU0I3WEc0Z0lDQWdJQ0FnSUd4bGRDQnBibVJsZUNBOUlFMWhkR2d1Wm14dmIzSW9iRzlqWVd4RGIyNXVaV04wYVhacGRIa3BPMXh1SUNBZ0lDQWdJQ0JzWlhRZ2FXNTBaWEp3YjJ4aGRHbHZiaUE5SUd4dlkyRnNRMjl1Ym1WamRHbDJhWFI1SUMwZ2FXNWtaWGc3WEc0Z0lDQWdJQ0FnSUdsbUlDaHBibVJsZUNBK0lEQXBJSHRjYmlBZ0lDQWdJQ0FnSUNCeWFHOWJhVjBnUFNCdWIyNWFaWEp2UkdsemRITmJhVzVrWlhnZ0xTQXhYVHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9hVzUwWlhKd2IyeGhkR2x2YmlBK0lGTk5UMDlVU0Y5TFgxUlBURVZTUVU1RFJTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtaHZXMmxkSUNzOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdsdWRHVnljRzlzWVhScGIyNGdLaUFvYm05dVdtVnliMFJwYzNSelcybHVaR1Y0WFNBdElHNXZibHBsY205RWFYTjBjMXRwYm1SbGVDQXRJREZkS1R0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnY21odlcybGRJRDBnYVc1MFpYSndiMnhoZEdsdmJpQXFJRzV2YmxwbGNtOUVhWE4wYzFzd1hUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmU0JsYkhObElHbG1JQ2h1YjI1YVpYSnZSR2x6ZEhNdWJHVnVaM1JvSUQ0Z01Da2dlMXh1SUNBZ0lDQWdJQ0J5YUc5YmFWMGdQU0IxZEdsc2N5NXRZWGdvYm05dVdtVnliMFJwYzNSektUdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdabTl5SUNoc1pYUWdiaUE5SURBN0lHNGdQQ0J1U1hSbGNqc2diaXNyS1NCN1hHNGdJQ0FnSUNBZ0lHeGxkQ0J3YzNWdElEMGdNQzR3TzF4dUlDQWdJQ0FnSUNCbWIzSWdLR3hsZENCcUlEMGdNVHNnYWlBOElHUnBjM1JoYm1ObGMxdHBYUzVzWlc1bmRHZzdJR29yS3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElHUWdQU0JrYVhOMFlXNWpaWE5iYVYxYmFsMGdMU0J5YUc5YmFWMDdYRzRnSUNBZ0lDQWdJQ0FnYVdZZ0tHUWdQaUF3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J3YzNWdElDczlJRTFoZEdndVpYaHdLQzBvWkNBdklHMXBaQ2twTzF4dUlDQWdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J3YzNWdElDczlJREV1TUR0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNCcFppQW9UV0YwYUM1aFluTW9jSE4xYlNBdElIUmhjbWRsZENrZ1BDQlRUVTlQVkVoZlMxOVVUMHhGVWtGT1EwVXBJSHRjYmlBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2h3YzNWdElENGdkR0Z5WjJWMEtTQjdYRzRnSUNBZ0lDQWdJQ0FnYUdrZ1BTQnRhV1E3WEc0Z0lDQWdJQ0FnSUNBZ2JXbGtJRDBnS0d4dklDc2dhR2twSUM4Z01pNHdPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUd4dklEMGdiV2xrTzF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2hvYVNBOVBUMGdTVzVtYVc1cGRIa3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHMXBaQ0FxUFNBeU8xeHVJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCdGFXUWdQU0FvYkc4Z0t5Qm9hU2tnTHlBeUxqQTdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lISmxjM1ZzZEZ0cFhTQTlJRzFwWkR0Y2JseHVJQ0FnSUNBZ0x5OGdWRTlFVHpvZ1ZHaHBjeUJwY3lCMlpYSjVJR2x1WldabWFXTnBaVzUwTENCaWRYUWdkMmxzYkNCa2J5Qm1iM0lnYm05M0xpQkdTVmhOUlZ4dUlDQWdJQ0FnYVdZZ0tISm9iMXRwWFNBK0lEQXVNQ2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J0WldGdVNYUm9SR2x6ZEdGdVkyVnpJRDBnZFhScGJITXViV1ZoYmlocGRHaEVhWE4wWVc1alpYTXBPMXh1SUNBZ0lDQWdJQ0JwWmlBb2NtVnpkV3gwVzJsZElEd2dUVWxPWDB0ZlJFbFRWRjlUUTBGTVJTQXFJRzFsWVc1SmRHaEVhWE4wWVc1alpYTXBJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYTjFiSFJiYVYwZ1BTQk5TVTVmUzE5RVNWTlVYMU5EUVV4RklDb2diV1ZoYmtsMGFFUnBjM1JoYm1ObGN6dGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2JXVmhia1JwYzNSaGJtTmxjeUE5SUhWMGFXeHpMbTFsWVc0b1pHbHpkR0Z1WTJWekxtMWhjQ2gxZEdsc2N5NXRaV0Z1S1NrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2h5WlhOMWJIUmJhVjBnUENCTlNVNWZTMTlFU1ZOVVgxTkRRVXhGSUNvZ2JXVmhia1JwYzNSaGJtTmxjeWtnZTF4dUlDQWdJQ0FnSUNBZ0lISmxjM1ZzZEZ0cFhTQTlJRTFKVGw5TFgwUkpVMVJmVTBOQlRFVWdLaUJ0WldGdVJHbHpkR0Z1WTJWek8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUhzZ2MybG5iV0Z6T2lCeVpYTjFiSFFzSUhKb2IzTTZJSEpvYnlCOU8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU52Ym5OMGNuVmpkQ0IwYUdVZ2JXVnRZbVZ5YzJocGNDQnpkSEpsYm1kMGFDQmtZWFJoSUdadmNpQjBhR1VnTVMxemEyVnNaWFJ2YmlCdlppQmxZV05vSUd4dlkyRnNYRzRnSUNBcUlHWjFlbnA1SUhOcGJYQnNhV05wWVd3Z2MyVjBJQzB0SUhSb2FYTWdhWE1nWm05eWJXVmtJR0Z6SUdFZ2MzQmhjbk5sSUcxaGRISnBlQ0IzYUdWeVpTQmxZV05vSUhKdmR5QnBjMXh1SUNBZ0tpQmhJR3h2WTJGc0lHWjFlbnA1SUhOcGJYQnNhV05wWVd3Z2MyVjBMQ0IzYVhSb0lHRWdiV1Z0WW1WeWMyaHBjQ0J6ZEhKbGJtZDBhQ0JtYjNJZ2RHaGxYRzRnSUNBcUlERXRjMmx0Y0d4bGVDQjBieUJsWVdOb0lHOTBhR1Z5SUdSaGRHRWdjRzlwYm5RdVhHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElHTnZiWEIxZEdWTlpXMWlaWEp6YUdsd1UzUnlaVzVuZEdoektGeHVJQ0FnSUd0dWJrbHVaR2xqWlhNNklGWmxZM1J2Y25Nc1hHNGdJQ0FnYTI1dVJHbHpkR0Z1WTJWek9pQldaV04wYjNKekxGeHVJQ0FnSUhOcFoyMWhjem9nYm5WdFltVnlXMTBzWEc0Z0lDQWdjbWh2Y3pvZ2JuVnRZbVZ5VzExY2JpQWdLVG9nZXlCeWIzZHpPaUJ1ZFcxaVpYSmJYVHNnWTI5c2N6b2diblZ0WW1WeVcxMDdJSFpoYkhNNklHNTFiV0psY2x0ZElIMGdlMXh1SUNBZ0lHTnZibk4wSUc1VFlXMXdiR1Z6SUQwZ2EyNXVTVzVrYVdObGN5NXNaVzVuZEdnN1hHNGdJQ0FnWTI5dWMzUWdiazVsYVdkb1ltOXljeUE5SUd0dWJrbHVaR2xqWlhOYk1GMHViR1Z1WjNSb08xeHVYRzRnSUNBZ1kyOXVjM1FnY205M2N5QTlJSFYwYVd4ekxucGxjbTl6S0c1VFlXMXdiR1Z6SUNvZ2JrNWxhV2RvWW05eWN5azdYRzRnSUNBZ1kyOXVjM1FnWTI5c2N5QTlJSFYwYVd4ekxucGxjbTl6S0c1VFlXMXdiR1Z6SUNvZ2JrNWxhV2RvWW05eWN5azdYRzRnSUNBZ1kyOXVjM1FnZG1Gc2N5QTlJSFYwYVd4ekxucGxjbTl6S0c1VFlXMXdiR1Z6SUNvZ2JrNWxhV2RvWW05eWN5azdYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJRzVUWVcxd2JHVnpPeUJwS3lzcElIdGNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHb2dQU0F3T3lCcUlEd2diazVsYVdkb1ltOXljenNnYWlzcktTQjdYRzRnSUNBZ0lDQWdJR3hsZENCMllXd2dQU0F3TzF4dUlDQWdJQ0FnSUNCcFppQW9hMjV1U1c1a2FXTmxjMXRwWFZ0cVhTQTlQVDBnTFRFcElIdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1MGFXNTFaVHNnTHk4Z1YyVWdaR2xrYmlkMElHZGxkQ0IwYUdVZ1puVnNiQ0JyYm00Z1ptOXlJR2xjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCcFppQW9hMjV1U1c1a2FXTmxjMXRwWFZ0cVhTQTlQVDBnYVNrZ2UxeHVJQ0FnSUNBZ0lDQWdJSFpoYkNBOUlEQXVNRHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJR2xtSUNocmJtNUVhWE4wWVc1alpYTmJhVjFiYWwwZ0xTQnlhRzl6VzJsZElEdzlJREF1TUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJSFpoYkNBOUlERXVNRHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNCMllXd2dQU0JOWVhSb0xtVjRjQ2d0S0NocmJtNUVhWE4wWVc1alpYTmJhVjFiYWwwZ0xTQnlhRzl6VzJsZEtTQXZJSE5wWjIxaGMxdHBYU2twTzF4dUlDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdjbTkzYzF0cElDb2diazVsYVdkb1ltOXljeUFySUdwZElEMGdhVHRjYmlBZ0lDQWdJQ0FnWTI5c2MxdHBJQ29nYms1bGFXZG9ZbTl5Y3lBcklHcGRJRDBnYTI1dVNXNWthV05sYzF0cFhWdHFYVHRjYmlBZ0lDQWdJQ0FnZG1Gc2MxdHBJQ29nYms1bGFXZG9ZbTl5Y3lBcklHcGRJRDBnZG1Gc08xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUI3SUhKdmQzTXNJR052YkhNc0lIWmhiSE1nZlR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkpibWwwYVdGc2FYcGxJR0VnWm5WNmVua2djMmx0Y0d4cFkybGhiQ0J6WlhRZ1pXMWlaV1JrYVc1bkxDQjFjMmx1WnlCaElITndaV05wWm1sbFpGeHVJQ0FnS2lCcGJtbDBhV0ZzYVhOaGRHbHZiaUJ0WlhSb2IyUWdZVzVrSUhSb1pXNGdiV2x1YVcxcGVtbHVaeUIwYUdVZ1puVjZlbmtnYzJWMElHTnliM056SUdWdWRISnZjSGxjYmlBZ0lDb2dZbVYwZDJWbGJpQjBhR1VnTVMxemEyVnNaWFJ2Ym5NZ2IyWWdkR2hsSUdocFoyZ2dZVzVrSUd4dmR5QmthVzFsYm5OcGIyNWhiQ0JtZFhwNmVTQnphVzF3YkdsamFXRnNYRzRnSUNBcUlITmxkSE11WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUdsdWFYUnBZV3hwZW1WVGFXMXdiR2xqYVdGc1UyVjBSVzFpWldSa2FXNW5LQ2tnZTF4dUlDQWdJR052Ym5OMElHNUZjRzlqYUhNZ1BTQjBhR2x6TG1kbGRFNUZjRzlqYUhNb0tUdGNibHh1SUNBZ0lHTnZibk4wSUhzZ2JrTnZiWEJ2Ym1WdWRITWdmU0E5SUhSb2FYTTdYRzRnSUNBZ1kyOXVjM1FnWjNKaGNHaFdZV3gxWlhNZ1BTQjBhR2x6TG1keVlYQm9MbWRsZEZaaGJIVmxjeWdwTzF4dUlDQWdJR3hsZENCbmNtRndhRTFoZUNBOUlEQTdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQm5jbUZ3YUZaaGJIVmxjeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnZG1Gc2RXVWdQU0JuY21Gd2FGWmhiSFZsYzF0cFhUdGNiaUFnSUNBZ0lHbG1JQ2huY21Gd2FFMWhlQ0E4SUdkeVlYQm9WbUZzZFdWelcybGRLU0I3WEc0Z0lDQWdJQ0FnSUdkeVlYQm9UV0Y0SUQwZ2RtRnNkV1U3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ1ozSmhjR2dnUFNCMGFHbHpMbWR5WVhCb0xtMWhjQ2gyWVd4MVpTQTlQaUI3WEc0Z0lDQWdJQ0JwWmlBb2RtRnNkV1VnUENCbmNtRndhRTFoZUNBdklHNUZjRzlqYUhNcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlEQTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RtRnNkV1U3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2s3WEc1Y2JpQWdJQ0F2THlCWFpTZHlaU0J1YjNRZ1kyOXRjSFYwYVc1bklIUm9aU0J6Y0dWamRISmhiQ0JwYm1sMGFXRnNhWHBoZEdsdmJpQnBiaUIwYUdseklHbHRjR3hsYldWdWRHRjBhVzl1WEc0Z0lDQWdMeThnZFc1MGFXd2dkMlVnWkdWMFpYSnRhVzVsSUdFZ1ltVjBkR1Z5SUdWcFoyVnVkbUZzZFdVdlpXbG5aVzUyWldOMGIzSWdZMjl0Y0hWMFlYUnBiMjVjYmlBZ0lDQXZMeUJoY0hCeWIyRmphRnh1SUNBZ0lIUm9hWE11WlcxaVpXUmthVzVuSUQwZ2RYUnBiSE11ZW1WeWIzTW9aM0poY0dndWJsSnZkM01wTG0xaGNDZ29LU0E5UGlCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnZFhScGJITXVlbVZ5YjNNb2JrTnZiWEJ2Ym1WdWRITXBMbTFoY0Nnb0tTQTlQaUI3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIxZEdsc2N5NTBZWFZTWVc1a0tIUm9hWE11Y21GdVpHOXRLU0FxSURJd0lDc2dMVEV3T3lBdkx5QlNZVzVrYjIwZ1puSnZiU0F0TVRBZ2RHOGdNVEJjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJSDBwTzF4dVhHNGdJQ0FnTHk4Z1IyVjBJR2R5WVhCb0lHUmhkR0VnYVc0Z2IzSmtaWEpsWkNCM1lYa3VMaTVjYmlBZ0lDQmpiMjV6ZENCM1pXbG5hSFJ6T2lCdWRXMWlaWEpiWFNBOUlGdGRPMXh1SUNBZ0lHTnZibk4wSUdobFlXUTZJRzUxYldKbGNsdGRJRDBnVzEwN1hHNGdJQ0FnWTI5dWMzUWdkR0ZwYkRvZ2JuVnRZbVZ5VzEwZ1BTQmJYVHRjYmlBZ0lDQmpiMjV6ZENCeWIzZERiMnhXWVd4MVpYTWdQU0JuY21Gd2FDNW5aWFJCYkd3b0tUdGNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElISnZkME52YkZaaGJIVmxjeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWlc1MGNua2dQU0J5YjNkRGIyeFdZV3gxWlhOYmFWMDdYRzRnSUNBZ0lDQnBaaUFvWlc1MGNua3VkbUZzZFdVcElIdGNiaUFnSUNBZ0lDQWdkMlZwWjJoMGN5NXdkWE5vS0dWdWRISjVMblpoYkhWbEtUdGNiaUFnSUNBZ0lDQWdkR0ZwYkM1d2RYTm9LR1Z1ZEhKNUxuSnZkeWs3WEc0Z0lDQWdJQ0FnSUdobFlXUXVjSFZ6YUNobGJuUnllUzVqYjJ3cE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0JqYjI1emRDQmxjRzlqYUhOUVpYSlRZVzF3YkdVZ1BTQjBhR2x6TG0xaGEyVkZjRzlqYUhOUVpYSlRZVzF3YkdVb2QyVnBaMmgwY3l3Z2JrVndiMk5vY3lrN1hHNWNiaUFnSUNCeVpYUjFjbTRnZXlCb1pXRmtMQ0IwWVdsc0xDQmxjRzlqYUhOUVpYSlRZVzF3YkdVZ2ZUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJIYVhabGJpQmhJSE5sZENCdlppQjNaV2xuYUhSeklHRnVaQ0J1ZFcxaVpYSWdiMllnWlhCdlkyaHpJR2RsYm1WeVlYUmxJSFJvWlNCdWRXMWlaWElnYjJaY2JpQWdJQ29nWlhCdlkyaHpJSEJsY2lCellXMXdiR1VnWm05eUlHVmhZMmdnZDJWcFoyaDBMbHh1SUNBZ0tpOWNiaUFnY0hKcGRtRjBaU0J0WVd0bFJYQnZZMmh6VUdWeVUyRnRjR3hsS0hkbGFXZG9kSE02SUc1MWJXSmxjbHRkTENCdVJYQnZZMmh6T2lCdWRXMWlaWElwSUh0Y2JpQWdJQ0JqYjI1emRDQnlaWE4xYkhRZ1BTQjFkR2xzY3k1bWFXeHNaV1FvZDJWcFoyaDBjeTVzWlc1bmRHZ3NJQzB4TGpBcE8xeHVJQ0FnSUdOdmJuTjBJRzFoZUNBOUlIVjBhV3h6TG0xaGVDaDNaV2xuYUhSektUdGNiaUFnSUNCamIyNXpkQ0J1VTJGdGNHeGxjeUE5SUhkbGFXZG9kSE11YldGd0tIY2dQVDRnS0hjZ0x5QnRZWGdwSUNvZ2JrVndiMk5vY3lrN1hHNGdJQ0FnYmxOaGJYQnNaWE11Wm05eVJXRmphQ2dvYml3Z2FTa2dQVDRnZTF4dUlDQWdJQ0FnYVdZZ0tHNGdQaUF3S1NCeVpYTjFiSFJiYVYwZ1BTQnVSWEJ2WTJoeklDOGdibE5oYlhCc1pYTmJhVjA3WEc0Z0lDQWdmU2s3WEc0Z0lDQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkJjM05wWjI1eklHOXdkR2x0YVhwaGRHbHZiaUJ6ZEdGMFpTQndZWEpoYldWMFpYSnpJR1p5YjIwZ1lTQndZWEowYVdGc0lHOXdkR2x0YVhwaGRHbHZiaUJ6ZEdGMFpTNWNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdZWE56YVdkdVQzQjBhVzFwZW1GMGFXOXVVM1JoZEdWUVlYSmhiV1YwWlhKektITjBZWFJsT2lCUVlYSjBhV0ZzUEU5d2RHbHRhWHBoZEdsdmJsTjBZWFJsUGlrZ2UxeHVJQ0FnSUU5aWFtVmpkQzVoYzNOcFoyNG9kR2hwY3k1dmNIUnBiV2w2WVhScGIyNVRkR0YwWlN3Z2MzUmhkR1VwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGTmxkSE1nWVNCbVpYY2diM0IwYVcxcGVtRjBhVzl1SUhOMFlYUmxJSEJoY21GdFpYUmxjbk1nZEdoaGRDQmhjbVVnYm1WalpYTnpZWEo1SUdKbFptOXlaU0JsYm5SbGNtbHVaMXh1SUNBZ0tpQjBhR1VnYjNCMGFXMXBlbUYwYVc5dUlITjBaWEFnYkc5dmNDNWNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdjSEpsY0dGeVpVWnZjazl3ZEdsdGFYcGhkR2x2Ymt4dmIzQW9LU0I3WEc0Z0lDQWdMeThnU0hsd1pYSndZWEpoYldWMFpYSnpYRzRnSUNBZ1kyOXVjM1FnZXlCeVpYQjFiSE5wYjI1VGRISmxibWQwYUN3Z2JHVmhjbTVwYm1kU1lYUmxMQ0J1WldkaGRHbDJaVk5oYlhCc1pWSmhkR1VnZlNBOUlIUm9hWE03WEc1Y2JpQWdJQ0JqYjI1emRDQjdYRzRnSUNBZ0lDQmxjRzlqYUhOUVpYSlRZVzF3YkdVc1hHNGdJQ0FnSUNCb1pXRmtSVzFpWldSa2FXNW5MRnh1SUNBZ0lDQWdkR0ZwYkVWdFltVmtaR2x1Wnl4Y2JpQWdJQ0I5SUQwZ2RHaHBjeTV2Y0hScGJXbDZZWFJwYjI1VGRHRjBaVHRjYmx4dUlDQWdJR052Ym5OMElHUnBiU0E5SUdobFlXUkZiV0psWkdScGJtZGJNRjB1YkdWdVozUm9PMXh1SUNBZ0lHTnZibk4wSUcxdmRtVlBkR2hsY2lBOUlHaGxZV1JGYldKbFpHUnBibWN1YkdWdVozUm9JRDA5UFNCMFlXbHNSVzFpWldSa2FXNW5MbXhsYm1kMGFEdGNibHh1SUNBZ0lHTnZibk4wSUdWd2IyTm9jMUJsY2s1bFoyRjBhWFpsVTJGdGNHeGxJRDBnWlhCdlkyaHpVR1Z5VTJGdGNHeGxMbTFoY0NoY2JpQWdJQ0FnSUdVZ1BUNGdaU0F2SUc1bFoyRjBhWFpsVTJGdGNHeGxVbUYwWlZ4dUlDQWdJQ2s3WEc0Z0lDQWdZMjl1YzNRZ1pYQnZZMmhQWms1bGVIUk9aV2RoZEdsMlpWTmhiWEJzWlNBOUlGc3VMaTVsY0c5amFITlFaWEpPWldkaGRHbDJaVk5oYlhCc1pWMDdYRzRnSUNBZ1kyOXVjM1FnWlhCdlkyaFBaazVsZUhSVFlXMXdiR1VnUFNCYkxpNHVaWEJ2WTJoelVHVnlVMkZ0Y0d4bFhUdGNibHh1SUNBZ0lIUm9hWE11WVhOemFXZHVUM0IwYVcxcGVtRjBhVzl1VTNSaGRHVlFZWEpoYldWMFpYSnpLSHRjYmlBZ0lDQWdJR1Z3YjJOb1QyWk9aWGgwVTJGdGNHeGxMRnh1SUNBZ0lDQWdaWEJ2WTJoUFprNWxlSFJPWldkaGRHbDJaVk5oYlhCc1pTeGNiaUFnSUNBZ0lHVndiMk5vYzFCbGNrNWxaMkYwYVhabFUyRnRjR3hsTEZ4dUlDQWdJQ0FnYlc5MlpVOTBhR1Z5TEZ4dUlDQWdJQ0FnYVc1cGRHbGhiRUZzY0doaE9pQnNaV0Z5Ym1sdVoxSmhkR1VzWEc0Z0lDQWdJQ0JoYkhCb1lUb2diR1ZoY201cGJtZFNZWFJsTEZ4dUlDQWdJQ0FnWjJGdGJXRTZJSEpsY0hWc2MybHZibE4wY21WdVozUm9MRnh1SUNBZ0lDQWdaR2x0TEZ4dUlDQWdJSDBwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFbHVhWFJwWVd4cGVtVnpJRzl3ZEdsdGFYcGhkR2x2YmlCemRHRjBaU0JtYjNJZ2MzUmxjSGRwYzJVZ2IzQjBhVzFwZW1GMGFXOXVMbHh1SUNBZ0tpOWNiaUFnY0hKcGRtRjBaU0JwYm1sMGFXRnNhWHBsVDNCMGFXMXBlbUYwYVc5dUtDa2dlMXh1SUNBZ0lDOHZJRUZzWjI5eWFYUm9iU0J6ZEdGMFpWeHVJQ0FnSUdOdmJuTjBJR2hsWVdSRmJXSmxaR1JwYm1jZ1BTQjBhR2x6TG1WdFltVmtaR2x1Wnp0Y2JpQWdJQ0JqYjI1emRDQjBZV2xzUlcxaVpXUmthVzVuSUQwZ2RHaHBjeTVsYldKbFpHUnBibWM3WEc1Y2JpQWdJQ0F2THlCSmJtbDBhV0ZzYVhwbFpDQnBiaUJwYm1sMGFXRnNhWHBsVTJsdGNHeHBZMmxoYkZObGRFVnRZbVZrWkdsdVp5Z3BYRzRnSUNBZ1kyOXVjM1FnZXlCb1pXRmtMQ0IwWVdsc0xDQmxjRzlqYUhOUVpYSlRZVzF3YkdVZ2ZTQTlJSFJvYVhNdWIzQjBhVzFwZW1GMGFXOXVVM1JoZEdVN1hHNWNiaUFnSUNCamIyNXpkQ0J1UlhCdlkyaHpJRDBnZEdocGN5NW5aWFJPUlhCdlkyaHpLQ2s3WEc0Z0lDQWdZMjl1YzNRZ2JsWmxjblJwWTJWeklEMGdkR2hwY3k1bmNtRndhQzV1UTI5c2N6dGNibHh1SUNBZ0lHTnZibk4wSUhzZ1lTd2dZaUI5SUQwZ1ptbHVaRUZDVUdGeVlXMXpLSFJvYVhNdWMzQnlaV0ZrTENCMGFHbHpMbTFwYmtScGMzUXBPMXh1WEc0Z0lDQWdkR2hwY3k1aGMzTnBaMjVQY0hScGJXbDZZWFJwYjI1VGRHRjBaVkJoY21GdFpYUmxjbk1vZTF4dUlDQWdJQ0FnYUdWaFpFVnRZbVZrWkdsdVp5eGNiaUFnSUNBZ0lIUmhhV3hGYldKbFpHUnBibWNzWEc0Z0lDQWdJQ0JvWldGa0xGeHVJQ0FnSUNBZ2RHRnBiQ3hjYmlBZ0lDQWdJR1Z3YjJOb2MxQmxjbE5oYlhCc1pTeGNiaUFnSUNBZ0lHRXNYRzRnSUNBZ0lDQmlMRnh1SUNBZ0lDQWdia1Z3YjJOb2N5eGNiaUFnSUNBZ0lHNVdaWEowYVdObGN5eGNiaUFnSUNCOUtUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJKYlhCeWIzWmxJR0Z1SUdWdFltVmtaR2x1WnlCMWMybHVaeUJ6ZEc5amFHRnpkR2xqSUdkeVlXUnBaVzUwSUdSbGMyTmxiblFnZEc4Z2JXbHVhVzFwZW1VZ2RHaGxYRzRnSUNBcUlHWjFlbnA1SUhObGRDQmpjbTl6Y3lCbGJuUnliM0I1SUdKbGRIZGxaVzRnZEdobElERXRjMnRsYkdWMGIyNXpJRzltSUhSb1pTQm9hV2RvSUdScGJXVnVjMmx2Ym1Gc1hHNGdJQ0FxSUdGdVpDQnNiM2NnWkdsdFpXNXphVzl1WVd3Z1puVjZlbmtnYzJsdGNHeHBZMmxoYkNCelpYUnpMaUJKYmlCd2NtRmpkR2xqWlNCMGFHbHpJR2x6SUdSdmJtVWdZbmxjYmlBZ0lDb2djMkZ0Y0d4cGJtY2daV1JuWlhNZ1ltRnpaV1FnYjI0Z2RHaGxhWElnYldWdFltVnljMmhwY0NCemRISmxibWQwYUNBb2QybDBhQ0IwYUdVZ0tERXRjQ2tnZEdWeWJYTmNiaUFnSUNvZ1kyOXRhVzVuSUdaeWIyMGdibVZuWVhScGRtVWdjMkZ0Y0d4cGJtY2djMmx0YVd4aGNpQjBieUIzYjNKa01uWmxZeWt1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUc5d2RHbHRhWHBsVEdGNWIzVjBVM1JsY0NodU9pQnVkVzFpWlhJcElIdGNiaUFnSUNCamIyNXpkQ0I3SUc5d2RHbHRhWHBoZEdsdmJsTjBZWFJsSUgwZ1BTQjBhR2x6TzF4dUlDQWdJR052Ym5OMElIdGNiaUFnSUNBZ0lHaGxZV1FzWEc0Z0lDQWdJQ0IwWVdsc0xGeHVJQ0FnSUNBZ2FHVmhaRVZ0WW1Wa1pHbHVaeXhjYmlBZ0lDQWdJSFJoYVd4RmJXSmxaR1JwYm1jc1hHNGdJQ0FnSUNCbGNHOWphSE5RWlhKVFlXMXdiR1VzWEc0Z0lDQWdJQ0JsY0c5amFFOW1UbVY0ZEZOaGJYQnNaU3hjYmlBZ0lDQWdJR1Z3YjJOb1QyWk9aWGgwVG1WbllYUnBkbVZUWVcxd2JHVXNYRzRnSUNBZ0lDQmxjRzlqYUhOUVpYSk9aV2RoZEdsMlpWTmhiWEJzWlN4Y2JpQWdJQ0FnSUcxdmRtVlBkR2hsY2l4Y2JpQWdJQ0FnSUdsdWFYUnBZV3hCYkhCb1lTeGNiaUFnSUNBZ0lHRnNjR2hoTEZ4dUlDQWdJQ0FnWjJGdGJXRXNYRzRnSUNBZ0lDQmhMRnh1SUNBZ0lDQWdZaXhjYmlBZ0lDQWdJR1JwYlN4Y2JpQWdJQ0FnSUc1RmNHOWphSE1zWEc0Z0lDQWdJQ0J1Vm1WeWRHbGpaWE1zWEc0Z0lDQWdmU0E5SUc5d2RHbHRhWHBoZEdsdmJsTjBZWFJsTzF4dVhHNGdJQ0FnWTI5dWMzUWdZMnhwY0ZaaGJIVmxJRDBnTkM0d08xeHVYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQmxjRzlqYUhOUVpYSlRZVzF3YkdVdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJR2xtSUNobGNHOWphRTltVG1WNGRGTmhiWEJzWlZ0cFhTQStJRzRwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lHTnZibk4wSUdvZ1BTQm9aV0ZrVzJsZE8xeHVJQ0FnSUNBZ1kyOXVjM1FnYXlBOUlIUmhhV3hiYVYwN1hHNWNiaUFnSUNBZ0lHTnZibk4wSUdOMWNuSmxiblFnUFNCb1pXRmtSVzFpWldSa2FXNW5XMnBkTzF4dUlDQWdJQ0FnWTI5dWMzUWdiM1JvWlhJZ1BTQjBZV2xzUlcxaVpXUmthVzVuVzJ0ZE8xeHVYRzRnSUNBZ0lDQmpiMjV6ZENCa2FYTjBVM0YxWVhKbFpDQTlJSEpFYVhOMEtHTjFjbkpsYm5Rc0lHOTBhR1Z5S1R0Y2JseHVJQ0FnSUNBZ2JHVjBJR2R5WVdSRGIyVm1aaUE5SURBN1hHNGdJQ0FnSUNCcFppQW9aR2x6ZEZOeGRXRnlaV1FnUGlBd0tTQjdYRzRnSUNBZ0lDQWdJR2R5WVdSRGIyVm1aaUE5SUMweUxqQWdLaUJoSUNvZ1lpQXFJRTFoZEdndWNHOTNLR1JwYzNSVGNYVmhjbVZrTENCaUlDMGdNUzR3S1R0Y2JpQWdJQ0FnSUNBZ1ozSmhaRU52WldabUlDODlJR0VnS2lCTllYUm9MbkJ2ZHloa2FYTjBVM0YxWVhKbFpDd2dZaWtnS3lBeExqQTdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJR1FnUFNBd095QmtJRHdnWkdsdE95QmtLeXNwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWjNKaFpFUWdQU0JqYkdsd0tHZHlZV1JEYjJWbVppQXFJQ2hqZFhKeVpXNTBXMlJkSUMwZ2IzUm9aWEpiWkYwcExDQmpiR2x3Vm1Gc2RXVXBPMXh1SUNBZ0lDQWdJQ0JqZFhKeVpXNTBXMlJkSUNzOUlHZHlZV1JFSUNvZ1lXeHdhR0U3WEc0Z0lDQWdJQ0FnSUdsbUlDaHRiM1psVDNSb1pYSXBJSHRjYmlBZ0lDQWdJQ0FnSUNCdmRHaGxjbHRrWFNBclBTQXRaM0poWkVRZ0tpQmhiSEJvWVR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQmxjRzlqYUU5bVRtVjRkRk5oYlhCc1pWdHBYU0FyUFNCbGNHOWphSE5RWlhKVFlXMXdiR1ZiYVYwN1hHNWNiaUFnSUNBZ0lHTnZibk4wSUc1T1pXZFRZVzF3YkdWeklEMGdUV0YwYUM1bWJHOXZjaWhjYmlBZ0lDQWdJQ0FnS0c0Z0xTQmxjRzlqYUU5bVRtVjRkRTVsWjJGMGFYWmxVMkZ0Y0d4bFcybGRLU0F2SUdWd2IyTm9jMUJsY2s1bFoyRjBhWFpsVTJGdGNHeGxXMmxkWEc0Z0lDQWdJQ0FwTzF4dVhHNGdJQ0FnSUNCbWIzSWdLR3hsZENCd0lEMGdNRHNnY0NBOElHNU9aV2RUWVcxd2JHVnpPeUJ3S3lzcElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2F5QTlJSFYwYVd4ekxuUmhkVkpoYm1SSmJuUW9ibFpsY25ScFkyVnpMQ0IwYUdsekxuSmhibVJ2YlNrN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUc5MGFHVnlJRDBnZEdGcGJFVnRZbVZrWkdsdVoxdHJYVHRjYmx4dUlDQWdJQ0FnSUNCamIyNXpkQ0JrYVhOMFUzRjFZWEpsWkNBOUlISkVhWE4wS0dOMWNuSmxiblFzSUc5MGFHVnlLVHRjYmx4dUlDQWdJQ0FnSUNCc1pYUWdaM0poWkVOdlpXWm1JRDBnTUM0d08xeHVJQ0FnSUNBZ0lDQnBaaUFvWkdsemRGTnhkV0Z5WldRZ1BpQXdMakFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQm5jbUZrUTI5bFptWWdQU0F5TGpBZ0tpQm5ZVzF0WVNBcUlHSTdYRzRnSUNBZ0lDQWdJQ0FnWjNKaFpFTnZaV1ptSUM4OVhHNGdJQ0FnSUNBZ0lDQWdJQ0FvTUM0d01ERWdLeUJrYVhOMFUzRjFZWEpsWkNrZ0tpQW9ZU0FxSUUxaGRHZ3VjRzkzS0dScGMzUlRjWFZoY21Wa0xDQmlLU0FySURFcE8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLR29nUFQwOUlHc3BJSHRjYmlBZ0lDQWdJQ0FnSUNCamIyNTBhVzUxWlR0Y2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJR1p2Y2lBb2JHVjBJR1FnUFNBd095QmtJRHdnWkdsdE95QmtLeXNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnNaWFFnWjNKaFpFUWdQU0EwTGpBN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0dkeVlXUkRiMlZtWmlBK0lEQXVNQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdaM0poWkVRZ1BTQmpiR2x3S0dkeVlXUkRiMlZtWmlBcUlDaGpkWEp5Wlc1MFcyUmRJQzBnYjNSb1pYSmJaRjBwTENCamJHbHdWbUZzZFdVcE8xeHVJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNCamRYSnlaVzUwVzJSZElDczlJR2R5WVdSRUlDb2dZV3h3YUdFN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHVndiMk5vVDJaT1pYaDBUbVZuWVhScGRtVlRZVzF3YkdWYmFWMGdLejBnYms1bFoxTmhiWEJzWlhNZ0tpQmxjRzlqYUhOUVpYSk9aV2RoZEdsMlpWTmhiWEJzWlZ0cFhUdGNiaUFnSUNCOVhHNGdJQ0FnYjNCMGFXMXBlbUYwYVc5dVUzUmhkR1V1WVd4d2FHRWdQU0JwYm1sMGFXRnNRV3h3YUdFZ0tpQW9NUzR3SUMwZ2JpQXZJRzVGY0c5amFITXBPMXh1WEc0Z0lDQWdiM0IwYVcxcGVtRjBhVzl1VTNSaGRHVXVZM1Z5Y21WdWRFVndiMk5vSUNzOUlERTdYRzRnSUNBZ2NtVjBkWEp1SUdobFlXUkZiV0psWkdScGJtYzdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nU1cxd2NtOTJaU0JoYmlCbGJXSmxaR1JwYm1jZ2RYTnBibWNnYzNSdlkyaGhjM1JwWXlCbmNtRmthV1Z1ZENCa1pYTmpaVzUwSUhSdklHMXBibWx0YVhwbElIUm9aVnh1SUNBZ0tpQm1kWHA2ZVNCelpYUWdZM0p2YzNNZ1pXNTBjbTl3ZVNCaVpYUjNaV1Z1SUhSb1pTQXhMWE5yWld4bGRHOXVjeUJ2WmlCMGFHVWdhR2xuYUNCa2FXMWxibk5wYjI1aGJGeHVJQ0FnS2lCaGJtUWdiRzkzSUdScGJXVnVjMmx2Ym1Gc0lHWjFlbnA1SUhOcGJYQnNhV05wWVd3Z2MyVjBjeTRnU1c0Z2NISmhZM1JwWTJVZ2RHaHBjeUJwY3lCa2IyNWxJR0o1WEc0Z0lDQXFJSE5oYlhCc2FXNW5JR1ZrWjJWeklHSmhjMlZrSUc5dUlIUm9aV2x5SUcxbGJXSmxjbk5vYVhBZ2MzUnlaVzVuZEdnZ0tIZHBkR2dnZEdobElDZ3hMWEFwSUhSbGNtMXpYRzRnSUNBcUlHTnZiV2x1WnlCbWNtOXRJRzVsWjJGMGFYWmxJSE5oYlhCc2FXNW5JSE5wYldsc1lYSWdkRzhnZDI5eVpESjJaV01wTGx4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCdmNIUnBiV2w2WlV4aGVXOTFkRUZ6ZVc1aktGeHVJQ0FnSUdWd2IyTm9RMkZzYkdKaFkyczZJQ2hsY0c5amFFNTFiV0psY2pvZ2JuVnRZbVZ5S1NBOVBpQjJiMmxrSUh3Z1ltOXZiR1ZoYmlBOUlDZ3BJRDArSUhSeWRXVmNiaUFnS1RvZ1VISnZiV2x6WlR4aWIyOXNaV0Z1UGlCN1hHNGdJQ0FnY21WMGRYSnVJRzVsZHlCUWNtOXRhWE5sS0NoeVpYTnZiSFpsTENCeVpXcGxZM1FwSUQwK0lIdGNiaUFnSUNBZ0lHTnZibk4wSUhOMFpYQWdQU0JoYzNsdVl5QW9LU0E5UGlCN1hHNGdJQ0FnSUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnZXlCdVJYQnZZMmh6TENCamRYSnlaVzUwUlhCdlkyZ2dmU0E5SUhSb2FYTXViM0IwYVcxcGVtRjBhVzl1VTNSaGRHVTdYRzRnSUNBZ0lDQWdJQ0FnZEdocGN5NWxiV0psWkdScGJtY2dQU0IwYUdsekxtOXdkR2x0YVhwbFRHRjViM1YwVTNSbGNDaGpkWEp5Wlc1MFJYQnZZMmdwTzF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUdWd2IyTm9RMjl0Y0d4bGRHVmtJRDBnZEdocGN5NXZjSFJwYldsNllYUnBiMjVUZEdGMFpTNWpkWEp5Wlc1MFJYQnZZMmc3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYzJodmRXeGtVM1J2Y0NBOUlHVndiMk5vUTJGc2JHSmhZMnNvWlhCdlkyaERiMjF3YkdWMFpXUXBJRDA5UFNCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JwYzBacGJtbHphR1ZrSUQwZ1pYQnZZMmhEYjIxd2JHVjBaV1FnUFQwOUlHNUZjRzlqYUhNN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0NGemFHOTFiR1JUZEc5d0lDWW1JQ0ZwYzBacGJtbHphR1ZrS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6WlhSVWFXMWxiM1YwS0NncElEMCtJSE4wWlhBb0tTd2dNQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWE52YkhabEtHbHpSbWx1YVhOb1pXUXBPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZTQmpZWFJqYUNBb1pYSnlLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2NtVnFaV04wS0dWeWNpazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDA3WEc0Z0lDQWdJQ0J6WlhSVWFXMWxiM1YwS0NncElEMCtJSE4wWlhBb0tTd2dNQ2s3WEc0Z0lDQWdmU2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1NXMXdjbTkyWlNCaGJpQmxiV0psWkdScGJtY2dkWE5wYm1jZ2MzUnZZMmhoYzNScFl5Qm5jbUZrYVdWdWRDQmtaWE5qWlc1MElIUnZJRzFwYm1sdGFYcGxJSFJvWlZ4dUlDQWdLaUJtZFhwNmVTQnpaWFFnWTNKdmMzTWdaVzUwY205d2VTQmlaWFIzWldWdUlIUm9aU0F4TFhOclpXeGxkRzl1Y3lCdlppQjBhR1VnYUdsbmFDQmthVzFsYm5OcGIyNWhiRnh1SUNBZ0tpQmhibVFnYkc5M0lHUnBiV1Z1YzJsdmJtRnNJR1oxZW5wNUlITnBiWEJzYVdOcFlXd2djMlYwY3k0Z1NXNGdjSEpoWTNScFkyVWdkR2hwY3lCcGN5QmtiMjVsSUdKNVhHNGdJQ0FxSUhOaGJYQnNhVzVuSUdWa1oyVnpJR0poYzJWa0lHOXVJSFJvWldseUlHMWxiV0psY25Ob2FYQWdjM1J5Wlc1bmRHZ2dLSGRwZEdnZ2RHaGxJQ2d4TFhBcElIUmxjbTF6WEc0Z0lDQXFJR052YldsdVp5Qm1jbTl0SUc1bFoyRjBhWFpsSUhOaGJYQnNhVzVuSUhOcGJXbHNZWElnZEc4Z2QyOXlaREoyWldNcExseHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQnZjSFJwYldsNlpVeGhlVzkxZENoY2JpQWdJQ0JsY0c5amFFTmhiR3hpWVdOck9pQW9aWEJ2WTJoT2RXMWlaWEk2SUc1MWJXSmxjaWtnUFQ0Z2RtOXBaQ0I4SUdKdmIyeGxZVzRnUFNBb0tTQTlQaUIwY25WbFhHNGdJQ2s2SUZabFkzUnZjbk1nZTF4dUlDQWdJR3hsZENCcGMwWnBibWx6YUdWa0lEMGdabUZzYzJVN1hHNGdJQ0FnYkdWMElHVnRZbVZrWkdsdVp6b2dWbVZqZEc5eWN5QTlJRnRkTzF4dUlDQWdJSGRvYVd4bElDZ2hhWE5HYVc1cGMyaGxaQ2tnZTF4dUlDQWdJQ0FnWTI5dWMzUWdleUJ1UlhCdlkyaHpMQ0JqZFhKeVpXNTBSWEJ2WTJnZ2ZTQTlJSFJvYVhNdWIzQjBhVzFwZW1GMGFXOXVVM1JoZEdVN1hHNGdJQ0FnSUNCbGJXSmxaR1JwYm1jZ1BTQjBhR2x6TG05d2RHbHRhWHBsVEdGNWIzVjBVM1JsY0NoamRYSnlaVzUwUlhCdlkyZ3BPMXh1SUNBZ0lDQWdZMjl1YzNRZ1pYQnZZMmhEYjIxd2JHVjBaV1FnUFNCMGFHbHpMbTl3ZEdsdGFYcGhkR2x2YmxOMFlYUmxMbU4xY25KbGJuUkZjRzlqYUR0Y2JpQWdJQ0FnSUdOdmJuTjBJSE5vYjNWc1pGTjBiM0FnUFNCbGNHOWphRU5oYkd4aVlXTnJLR1Z3YjJOb1EyOXRjR3hsZEdWa0tTQTlQVDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQnBjMFpwYm1semFHVmtJRDBnWlhCdlkyaERiMjF3YkdWMFpXUWdQVDA5SUc1RmNHOWphSE1nZkh3Z2MyaHZkV3hrVTNSdmNEdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR1Z0WW1Wa1pHbHVaenRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCSFpYUnpJSFJvWlNCdWRXMWlaWElnYjJZZ1pYQnZZMmh6SUdadmNpQnZjSFJwYldsNmFXNW5JSFJvWlNCd2NtOXFaV04wYVc5dUxseHVJQ0FnS2lCT1QxUkZPaUJVYUdseklHaGxkWEpwYzNScFl5QmthV1ptWlhKeklHWnliMjBnZEdobElIQjVkR2h2YmlCMlpYSnphVzl1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWjJWMFRrVndiMk5vY3lncElIdGNiaUFnSUNCamIyNXpkQ0JuY21Gd2FDQTlJSFJvYVhNdVozSmhjR2c3WEc1Y2JpQWdJQ0JwWmlBb2RHaHBjeTV1UlhCdlkyaHpJRDRnTUNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVia1Z3YjJOb2N6dGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9JV2R5WVhCb0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z01qQXdPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUd4bGJtZDBhQ0E5SUdkeVlYQm9MbTVTYjNkek8xeHVJQ0FnSUdsbUlDaHNaVzVuZEdnZ1BEMGdNalV3TUNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SURVd01EdGNiaUFnSUNCOUlHVnNjMlVnYVdZZ0tHeGxibWQwYUNBOFBTQTFNREF3S1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnTkRBd08xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2JHVnVaM1JvSUR3OUlEYzFNREFwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUF6TURBN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQXlNREE3WEc0Z0lDQWdmVnh1SUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJsZFdOc2FXUmxZVzRvZURvZ1ZtVmpkRzl5TENCNU9pQldaV04wYjNJcElIdGNiaUFnYkdWMElISmxjM1ZzZENBOUlEQTdYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2VDNXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJSEpsYzNWc2RDQXJQU0FvZUZ0cFhTQXRJSGxiYVYwcElDb3FJREk3WEc0Z0lIMWNiaUFnY21WMGRYSnVJRTFoZEdndWMzRnlkQ2h5WlhOMWJIUXBPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2JuVnRaWEpwWXloNE9pQnVkVzFpWlhJc0lIazZJRzUxYldKbGNpa2dlMXh1SUNCamIyNXpkQ0J5WlhOMWJIUWdQU0JOWVhSb0xtRmljeWg0SUMwZ2VTazdYRzRnSUhKbGRIVnliaUJ5WlhOMWJIUTdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCamIzTnBibVVvZURvZ1ZtVmpkRzl5TENCNU9pQldaV04wYjNJcElIdGNiaUFnYkdWMElISmxjM1ZzZENBOUlEQXVNRHRjYmlBZ2JHVjBJRzV2Y20xWUlEMGdNQzR3TzF4dUlDQnNaWFFnYm05eWJWa2dQU0F3TGpBN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCNExteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdjbVZ6ZFd4MElDczlJSGhiYVYwZ0tpQjVXMmxkTzF4dUlDQWdJRzV2Y20xWUlDczlJSGhiYVYwZ0tpb2dNanRjYmlBZ0lDQnViM0p0V1NBclBTQjVXMmxkSUNvcUlESTdYRzRnSUgxY2JseHVJQ0JwWmlBb2JtOXliVmdnUFQwOUlEQWdKaVlnYm05eWJWa2dQVDA5SURBcElIdGNiaUFnSUNCeVpYUjFjbTRnTUR0Y2JpQWdmU0JsYkhObElHbG1JQ2h1YjNKdFdDQTlQVDBnTUNCOGZDQnViM0p0V1NBOVBUMGdNQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQXhMakE3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnY21WMGRYSnVJREV1TUNBdElISmxjM1ZzZENBdklFMWhkR2d1YzNGeWRDaHViM0p0V0NBcUlHNXZjbTFaS1R0Y2JpQWdmVnh1ZlZ4dVhHNHZLaXBjYmlBcUlFRnVJR2x1ZEdWeVptRmpaU0J5WlhCeVpYTmxiblJwYm1jZ2RHaGxJRzl3ZEdsdGFYcGhkR2x2YmlCemRHRjBaU0IwY21GamEyVmtJR0psZEhkbFpXNGdjM1JsY0hNZ2IyWmNiaUFxSUhSb1pTQlRSMFFnYjNCMGFXMXBlbUYwYVc5dVhHNGdLaTljYm1Oc1lYTnpJRTl3ZEdsdGFYcGhkR2x2YmxOMFlYUmxJSHRjYmlBZ1kzVnljbVZ1ZEVWd2IyTm9JRDBnTUR0Y2JseHVJQ0F2THlCRVlYUmhJSFJ5WVdOclpXUWdaSFZ5YVc1bklHOXdkR2x0YVhwaGRHbHZiaUJ6ZEdWd2N5NWNiaUFnYUdWaFpFVnRZbVZrWkdsdVp6b2diblZ0WW1WeVcxMWJYU0E5SUZ0ZE8xeHVJQ0IwWVdsc1JXMWlaV1JrYVc1bk9pQnVkVzFpWlhKYlhWdGRJRDBnVzEwN1hHNGdJR2hsWVdRNklHNTFiV0psY2x0ZElEMGdXMTA3WEc0Z0lIUmhhV3c2SUc1MWJXSmxjbHRkSUQwZ1cxMDdYRzRnSUdWd2IyTm9jMUJsY2xOaGJYQnNaVG9nYm5WdFltVnlXMTBnUFNCYlhUdGNiaUFnWlhCdlkyaFBaazVsZUhSVFlXMXdiR1U2SUc1MWJXSmxjbHRkSUQwZ1cxMDdYRzRnSUdWd2IyTm9UMlpPWlhoMFRtVm5ZWFJwZG1WVFlXMXdiR1U2SUc1MWJXSmxjbHRkSUQwZ1cxMDdYRzRnSUdWd2IyTm9jMUJsY2s1bFoyRjBhWFpsVTJGdGNHeGxPaUJ1ZFcxaVpYSmJYU0E5SUZ0ZE8xeHVJQ0J0YjNabFQzUm9aWElnUFNCMGNuVmxPMXh1SUNCcGJtbDBhV0ZzUVd4d2FHRWdQU0F4TGpBN1hHNGdJR0ZzY0doaElEMGdNUzR3TzF4dUlDQm5ZVzF0WVNBOUlERXVNRHRjYmlBZ1lTQTlJREV1TlRjMk9UUXpORFl3TXpFeE16QTNOenRjYmlBZ1lpQTlJREF1T0RrMU1EWXdPRGMzT1RFd09UY3pNenRjYmlBZ1pHbHRJRDBnTWp0Y2JpQWdia1Z3YjJOb2N5QTlJRFV3TUR0Y2JpQWdibFpsY25ScFkyVnpJRDBnTUR0Y2JuMWNibHh1THlvcVhHNGdLaUJUZEdGdVpHRnlaQ0JqYkdGdGNHbHVaeUJ2WmlCaElIWmhiSFZsSUdsdWRHOGdZU0JtYVhobFpDQnlZVzVuWlZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJqYkdsd0tIZzZJRzUxYldKbGNpd2dZMnhwY0ZaaGJIVmxPaUJ1ZFcxaVpYSXBJSHRjYmlBZ2FXWWdLSGdnUGlCamJHbHdWbUZzZFdVcElISmxkSFZ5YmlCamJHbHdWbUZzZFdVN1hHNGdJR1ZzYzJVZ2FXWWdLSGdnUENBdFkyeHBjRlpoYkhWbEtTQnlaWFIxY200Z0xXTnNhWEJXWVd4MVpUdGNiaUFnWld4elpTQnlaWFIxY200Z2VEdGNibjFjYmx4dUx5b3FYRzRnS2lCU1pXUjFZMlZrSUVWMVkyeHBaR1ZoYmlCa2FYTjBZVzVqWlM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnY2tScGMzUW9lRG9nYm5WdFltVnlXMTBzSUhrNklHNTFiV0psY2x0ZEtTQjdYRzRnSUd4bGRDQnlaWE4xYkhRZ1BTQXdMakE3WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dlQzVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUhKbGMzVnNkQ0FyUFNCTllYUm9MbkJ2ZHloNFcybGRJQzBnZVZ0cFhTd2dNaWs3WEc0Z0lIMWNiaUFnY21WMGRYSnVJSEpsYzNWc2REdGNibjFjYmx4dUx5b3FYRzRnS2lCR2FYUWdZU3dnWWlCd1lYSmhiWE1nWm05eUlIUm9aU0JrYVdabVpYSmxiblJwWVdKc1pTQmpkWEoyWlNCMWMyVmtJR2x1SUd4dmQyVnlYRzRnS2lCa2FXMWxibk5wYjI1aGJDQm1kWHA2ZVNCemFXMXdiR2xqYVdGc0lHTnZiWEJzWlhnZ1kyOXVjM1J5ZFdOMGFXOXVMaUJYWlNCM1lXNTBJSFJvWlZ4dUlDb2djMjF2YjNSb0lHTjFjblpsSUNobWNtOXRJR0VnY0hKbExXUmxabWx1WldRZ1ptRnRhV3g1SUhkcGRHZ2djMmx0Y0d4bElHZHlZV1JwWlc1MEtTQjBhR0YwWEc0Z0tpQmlaWE4wSUcxaGRHTm9aWE1nWVc0Z2IyWm1jMlYwSUdWNGNHOXVaVzUwYVdGc0lHUmxZMkY1TGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdabWx1WkVGQ1VHRnlZVzF6S0hOd2NtVmhaRG9nYm5WdFltVnlMQ0J0YVc1RWFYTjBPaUJ1ZFcxaVpYSXBJSHRjYmlBZ1kyOXVjM1FnWTNWeWRtVWdQU0FvVzJFc0lHSmRPaUJ1ZFcxaVpYSmJYU2tnUFQ0Z0tIZzZJRzUxYldKbGNpa2dQVDRnZTF4dUlDQWdJSEpsZEhWeWJpQXhMakFnTHlBb01TNHdJQ3NnWVNBcUlIZ2dLaW9nS0RJZ0tpQmlLU2s3WEc0Z0lIMDdYRzVjYmlBZ1kyOXVjM1FnZUhZZ1BTQjFkR2xzYzF4dUlDQWdJQzVzYVc1bFlYSW9NQ3dnYzNCeVpXRmtJQ29nTXl3Z016QXdLVnh1SUNBZ0lDNXRZWEFvZG1Gc0lEMCtJQ2gyWVd3Z1BDQnRhVzVFYVhOMElEOGdNUzR3SURvZ2RtRnNLU2s3WEc1Y2JpQWdZMjl1YzNRZ2VYWWdQU0IxZEdsc2N5NTZaWEp2Y3loNGRpNXNaVzVuZEdncExtMWhjQ2dvZG1Gc0xDQnBibVJsZUNrZ1BUNGdlMXh1SUNBZ0lHTnZibk4wSUdkMFpTQTlJSGgyVzJsdVpHVjRYU0ErUFNCdGFXNUVhWE4wTzF4dUlDQWdJSEpsZEhWeWJpQm5kR1VnUHlCTllYUm9MbVY0Y0NndEtIaDJXMmx1WkdWNFhTQXRJRzFwYmtScGMzUXBJQzhnYzNCeVpXRmtLU0E2SUhaaGJEdGNiaUFnZlNrN1hHNWNiaUFnWTI5dWMzUWdhVzVwZEdsaGJGWmhiSFZsY3lBOUlGc3dMalVzSURBdU5WMDdYRzRnSUdOdmJuTjBJR1JoZEdFZ1BTQjdJSGc2SUhoMkxDQjVPaUI1ZGlCOU8xeHVYRzRnSUM4dklFUmxabUYxYkhRZ2IzQjBhVzl1Y3lCbWIzSWdkR2hsSUdGc1oyOXlhWFJvYlNBb1puSnZiU0JuYVhSb2RXSWdaWGhoYlhCc1pTbGNiaUFnWTI5dWMzUWdiM0IwYVc5dWN5QTlJSHRjYmlBZ0lDQmtZVzF3YVc1bk9pQXhMalVzWEc0Z0lDQWdhVzVwZEdsaGJGWmhiSFZsY3l4Y2JpQWdJQ0JuY21Ga2FXVnVkRVJwWm1abGNtVnVZMlU2SURFd1pTMHlMRnh1SUNBZ0lHMWhlRWwwWlhKaGRHbHZibk02SURFd01DeGNiaUFnSUNCbGNuSnZjbFJ2YkdWeVlXNWpaVG9nTVRCbExUTXNYRzRnSUgwN1hHNWNiaUFnWTI5dWMzUWdleUJ3WVhKaGJXVjBaWEpXWVd4MVpYTWdmU0E5SUV4TktHUmhkR0VzSUdOMWNuWmxMQ0J2Y0hScGIyNXpLVHRjYmlBZ1kyOXVjM1FnVzJFc0lHSmRJRDBnY0dGeVlXMWxkR1Z5Vm1Gc2RXVnpJR0Z6SUc1MWJXSmxjbHRkTzF4dUlDQnlaWFIxY200Z2V5QmhMQ0JpSUgwN1hHNTlYRzVjYmk4cUtseHVJQ29nVlc1a1pYSWdkR2hsSUdGemMzVnRjSFJwYjI0Z2IyWWdZMkYwWldkdmNtbGpZV3dnWkdsemRHRnVZMlVnWm05eUlIUm9aU0JwYm5SbGNuTmxZM1JwYm1kY2JpQXFJSE5wYlhCc2FXTnBZV3dnYzJWMElIQmxjbVp2Y20wZ1lTQm1ZWE4wSUdsdWRHVnljMlZqZEdsdmJpNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdaaGMzUkpiblJsY25ObFkzUnBiMjRvWEc0Z0lHZHlZWEJvT2lCdFlYUnlhWGd1VTNCaGNuTmxUV0YwY21sNExGeHVJQ0IwWVhKblpYUTZJRzUxYldKbGNsdGRMRnh1SUNCMWJtdHViM2R1UkdsemRDQTlJREV1TUN4Y2JpQWdabUZ5UkdsemRDQTlJRFV1TUZ4dUtTQjdYRzRnSUhKbGRIVnliaUJuY21Gd2FDNXRZWEFvS0haaGJIVmxMQ0J5YjNjc0lHTnZiQ2tnUFQ0Z2UxeHVJQ0FnSUdsbUlDaDBZWEpuWlhSYmNtOTNYU0E5UFQwZ0xURWdmSHdnZEdGeVoyVjBXMk52YkYwZ1BUMDlJQzB4S1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnZG1Gc2RXVWdLaUJOWVhSb0xtVjRjQ2d0ZFc1cmJtOTNia1JwYzNRcE8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2RHRnlaMlYwVzNKdmQxMGdJVDA5SUhSaGNtZGxkRnRqYjJ4ZEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2RtRnNkV1VnS2lCTllYUm9MbVY0Y0NndFptRnlSR2x6ZENrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQjJZV3gxWlR0Y2JpQWdJQ0I5WEc0Z0lIMHBPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGSmxjMlYwSUhSb1pTQnNiMk5oYkNCamIyNXVaV04wYVhacGRIa2djbVZ4ZFdseVpXMWxiblFnTFMwZ1pXRmphQ0JrWVhSaElITmhiWEJzWlNCemFHOTFiR1JjYmlBcUlHaGhkbVVnWTI5dGNHeGxkR1VnWTI5dVptbGtaVzVqWlNCcGJpQmhkQ0JzWldGemRDQnZibVVnTVMxemFXMXdiR1Y0SUdsdUlIUm9aU0J6YVcxd2JHbGphV0ZzSUhObGRDNWNiaUFxSUZkbElHTmhiaUJsYm1admNtTmxJSFJvYVhNZ1lua2diRzlqWVd4c2VTQnlaWE5qWVd4cGJtY2dZMjl1Wm1sa1pXNWpaWE1zSUdGdVpDQjBhR1Z1SUhKbGJXVnlaMmx1WnlCMGFHVmNiaUFxSUdScFptWmxjbVZ1ZENCc2IyTmhiQ0J6YVcxd2JHbGphV0ZzSUhObGRITWdkRzluWlhSb1pYSXVYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCeVpYTmxkRXh2WTJGc1EyOXVibVZqZEdsMmFYUjVLSE5wYlhCc2FXTnBZV3hUWlhRNklHMWhkSEpwZUM1VGNHRnljMlZOWVhSeWFYZ3BJSHRjYmlBZ2MybHRjR3hwWTJsaGJGTmxkQ0E5SUcxaGRISnBlQzV1YjNKdFlXeHBlbVVvYzJsdGNHeHBZMmxoYkZObGRDd2diV0YwY21sNExrNXZjbTFVZVhCbExtMWhlQ2s3WEc0Z0lHTnZibk4wSUhSeVlXNXpjRzl6WlNBOUlHMWhkSEpwZUM1MGNtRnVjM0J2YzJVb2MybHRjR3hwWTJsaGJGTmxkQ2s3WEc0Z0lHTnZibk4wSUhCeWIyUk5ZWFJ5YVhnZ1BTQnRZWFJ5YVhndWNHRnBjbmRwYzJWTmRXeDBhWEJzZVNoMGNtRnVjM0J2YzJVc0lITnBiWEJzYVdOcFlXeFRaWFFwTzF4dUlDQnphVzF3YkdsamFXRnNVMlYwSUQwZ2JXRjBjbWw0TG1Ga1pDaGNiaUFnSUNCemFXMXdiR2xqYVdGc1UyVjBMRnh1SUNBZ0lHMWhkSEpwZUM1emRXSjBjbUZqZENoMGNtRnVjM0J2YzJVc0lIQnliMlJOWVhSeWFYZ3BYRzRnSUNrN1hHNGdJSEpsZEhWeWJpQnRZWFJ5YVhndVpXeHBiV2x1WVhSbFdtVnliM01vYzJsdGNHeHBZMmxoYkZObGRDazdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1IybDJaVzRnYVc1a2FXTmxjeUJoYm1RZ2QyVnBaMmgwY3lCaGJtUWdZVzRnYjNKcFoybHVZV3dnWlcxaVpXUmthVzVuYzF4dUlDb2dhVzVwZEdsaGJHbDZaU0IwYUdVZ2NHOXphWFJwYjI1eklHOW1JRzVsZHlCd2IybHVkSE1nY21Wc1lYUnBkbVVnZEc4Z2RHaGxYRzRnS2lCcGJtUnBZMlZ6SUdGdVpDQjNaV2xuYUhSeklDaHZaaUIwYUdWcGNpQnVaV2xuYUdKdmNuTWdhVzRnZEdobElITnZkWEpqWlNCa1lYUmhLUzVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHbHVhWFJVY21GdWMyWnZjbTBvWEc0Z0lHbHVaR2xqWlhNNklHNTFiV0psY2x0ZFcxMHNYRzRnSUhkbGFXZG9kSE02SUc1MWJXSmxjbHRkVzEwc1hHNGdJR1Z0WW1Wa1pHbHVaem9nVm1WamRHOXljMXh1S1NCN1hHNGdJR052Ym5OMElISmxjM1ZzZENBOUlIVjBhV3h6WEc0Z0lDQWdMbnBsY205ektHbHVaR2xqWlhNdWJHVnVaM1JvS1Z4dUlDQWdJQzV0WVhBb2VpQTlQaUIxZEdsc2N5NTZaWEp2Y3lobGJXSmxaR1JwYm1kYk1GMHViR1Z1WjNSb0tTazdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnBibVJwWTJWekxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdabTl5SUNoc1pYUWdhaUE5SURBN0lHb2dQQ0JwYm1ScFkyVnpXekJkTG14bGJtZDBhRHNnYWlzcktTQjdYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQmtJRDBnTURzZ1pDQThJR1Z0WW1Wa1pHbHVaMXN3WFM1c1pXNW5kR2c3SUdRckt5a2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQmhJRDBnYVc1a2FXTmxjMXRwWFZ0cVhUdGNiaUFnSUNBZ0lDQWdjbVZ6ZFd4MFcybGRXMlJkSUNzOUlIZGxhV2RvZEhOYmFWMWJhbDBnS2lCbGJXSmxaR1JwYm1kYllWMWJaRjA3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNGdJSEpsZEhWeWJpQnlaWE4xYkhRN1hHNTlYRzRpWFgwPSIsIi8qKlxuICogQGxpY2Vuc2VcbiAqXG4gKiBDb3B5cmlnaHQgMjAxOSBHb29nbGUgTExDLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICovXG4vKipcbiAqIFRoaXMgaXMgYSBKYXZhU2NyaXB0IHJlaW1wbGVtZW50YXRpb24gb2YgVU1BUCAob3JpZ2luYWwgbGljZW5zZSBiZWxvdyksIGZyb21cbiAqIHRoZSBweXRob24gaW1wbGVtZW50YXRpb24gZm91bmQgYXQgaHR0cHM6Ly9naXRodWIuY29tL2xtY2lubmVzL3VtYXAuXG4gKlxuICogQGF1dGhvciBhbmR5Y29lbmVuQGdvb2dsZS5jb20gKEFuZHkgQ29lbmVuKVxuICovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBCU0QgMy1DbGF1c2UgTGljZW5zZVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNywgTGVsYW5kIE1jSW5uZXNcbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcbiAqXG4gKiAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpc1xuICogICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvblxuICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiAqIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHNcbiAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb21cbiAqICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIlxuICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRVxuICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFXG4gKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTFxuICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1JcbiAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSXG4gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLFxuICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0VcbiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cbmltcG9ydCAqIGFzIGhlYXAgZnJvbSAnLi9oZWFwJztcbmltcG9ydCAqIGFzIG1hdHJpeCBmcm9tICcuL21hdHJpeCc7XG5pbXBvcnQgKiBhcyB0cmVlIGZyb20gJy4vdHJlZSc7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuL3V0aWxzJztcbi8qKlxuICogQ3JlYXRlIGEgdmVyc2lvbiBvZiBuZWFyZXN0IG5laWdoYm9yIGRlc2NlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlTk5EZXNjZW50KGRpc3RhbmNlRm4sIHJhbmRvbSkge1xuICAgIHJldHVybiBmdW5jdGlvbiBuTkRlc2NlbnQoZGF0YSwgbGVhZkFycmF5LCBuTmVpZ2hib3JzLCBuSXRlcnMgPSAxMCwgbWF4Q2FuZGlkYXRlcyA9IDUwLCBkZWx0YSA9IDAuMDAxLCByaG8gPSAwLjUsIHJwVHJlZUluaXQgPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IG5WZXJ0aWNlcyA9IGRhdGEubGVuZ3RoO1xuICAgICAgICBjb25zdCBjdXJyZW50R3JhcGggPSBoZWFwLm1ha2VIZWFwKGRhdGEubGVuZ3RoLCBuTmVpZ2hib3JzKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRpY2VzID0gaGVhcC5yZWplY3Rpb25TYW1wbGUobk5laWdoYm9ycywgZGF0YS5sZW5ndGgsIHJhbmRvbSk7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGluZGljZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkID0gZGlzdGFuY2VGbihkYXRhW2ldLCBkYXRhW2luZGljZXNbal1dKTtcbiAgICAgICAgICAgICAgICBoZWFwLmhlYXBQdXNoKGN1cnJlbnRHcmFwaCwgaSwgZCwgaW5kaWNlc1tqXSwgMSk7XG4gICAgICAgICAgICAgICAgaGVhcC5oZWFwUHVzaChjdXJyZW50R3JhcGgsIGluZGljZXNbal0sIGQsIGksIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChycFRyZWVJbml0KSB7XG4gICAgICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGxlYWZBcnJheS5sZW5ndGg7IG4rKykge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVhZkFycmF5W25dLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsZWFmQXJyYXlbbl1baV0gPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBsZWFmQXJyYXlbbl0ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZWFmQXJyYXlbbl1bal0gPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkID0gZGlzdGFuY2VGbihkYXRhW2xlYWZBcnJheVtuXVtpXV0sIGRhdGFbbGVhZkFycmF5W25dW2pdXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFwLmhlYXBQdXNoKGN1cnJlbnRHcmFwaCwgbGVhZkFycmF5W25dW2ldLCBkLCBsZWFmQXJyYXlbbl1bal0sIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhcC5oZWFwUHVzaChjdXJyZW50R3JhcGgsIGxlYWZBcnJheVtuXVtqXSwgZCwgbGVhZkFycmF5W25dW2ldLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IG5JdGVyczsgbisrKSB7XG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVOZWlnaGJvcnMgPSBoZWFwLmJ1aWxkQ2FuZGlkYXRlcyhjdXJyZW50R3JhcGgsIG5WZXJ0aWNlcywgbk5laWdoYm9ycywgbWF4Q2FuZGlkYXRlcywgcmFuZG9tKTtcbiAgICAgICAgICAgIGxldCBjID0gMDtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgblZlcnRpY2VzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1heENhbmRpZGF0ZXM7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcCA9IE1hdGguZmxvb3IoY2FuZGlkYXRlTmVpZ2hib3JzWzBdW2ldW2pdKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHAgPCAwIHx8IHV0aWxzLnRhdVJhbmQocmFuZG9tKSA8IHJobykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBtYXhDYW5kaWRhdGVzOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHEgPSBNYXRoLmZsb29yKGNhbmRpZGF0ZU5laWdoYm9yc1swXVtpXVtrXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaiA9IGNhbmRpZGF0ZU5laWdoYm9yc1syXVtpXVtqXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNrID0gY2FuZGlkYXRlTmVpZ2hib3JzWzJdW2ldW2tdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHEgPCAwIHx8ICghY2ogJiYgIWNrKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZCA9IGRpc3RhbmNlRm4oZGF0YVtwXSwgZGF0YVtxXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjICs9IGhlYXAuaGVhcFB1c2goY3VycmVudEdyYXBoLCBwLCBkLCBxLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMgKz0gaGVhcC5oZWFwUHVzaChjdXJyZW50R3JhcGgsIHEsIGQsIHAsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGMgPD0gZGVsdGEgKiBuTmVpZ2hib3JzICogZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzb3J0ZWQgPSBoZWFwLmRlaGVhcFNvcnQoY3VycmVudEdyYXBoKTtcbiAgICAgICAgcmV0dXJuIHNvcnRlZDtcbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VJbml0aWFsaXphdGlvbnMoZGlzdGFuY2VGbikge1xuICAgIGZ1bmN0aW9uIGluaXRGcm9tUmFuZG9tKG5OZWlnaGJvcnMsIGRhdGEsIHF1ZXJ5UG9pbnRzLCBfaGVhcCwgcmFuZG9tKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcXVlcnlQb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGljZXMgPSB1dGlscy5yZWplY3Rpb25TYW1wbGUobk5laWdoYm9ycywgZGF0YS5sZW5ndGgsIHJhbmRvbSk7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGluZGljZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5kaWNlc1tqXSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBkaXN0YW5jZUZuKGRhdGFbaW5kaWNlc1tqXV0sIHF1ZXJ5UG9pbnRzW2ldKTtcbiAgICAgICAgICAgICAgICBoZWFwLmhlYXBQdXNoKF9oZWFwLCBpLCBkLCBpbmRpY2VzW2pdLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBpbml0RnJvbVRyZWUoX3RyZWUsIGRhdGEsIHF1ZXJ5UG9pbnRzLCBfaGVhcCwgcmFuZG9tKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcXVlcnlQb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGljZXMgPSB0cmVlLnNlYXJjaEZsYXRUcmVlKHF1ZXJ5UG9pbnRzW2ldLCBfdHJlZSwgcmFuZG9tKTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgaW5kaWNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmIChpbmRpY2VzW2pdIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBkaXN0YW5jZUZuKGRhdGFbaW5kaWNlc1tqXV0sIHF1ZXJ5UG9pbnRzW2ldKTtcbiAgICAgICAgICAgICAgICBoZWFwLmhlYXBQdXNoKF9oZWFwLCBpLCBkLCBpbmRpY2VzW2pdLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiB7IGluaXRGcm9tUmFuZG9tLCBpbml0RnJvbVRyZWUgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtYWtlSW5pdGlhbGl6ZWROTlNlYXJjaChkaXN0YW5jZUZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIG5uU2VhcmNoRm4oZGF0YSwgZ3JhcGgsIGluaXRpYWxpemF0aW9uLCBxdWVyeVBvaW50cykge1xuICAgICAgICBjb25zdCB7IGluZGljZXMsIGluZHB0ciB9ID0gbWF0cml4LmdldENTUihncmFwaCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcXVlcnlQb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRyaWVkID0gbmV3IFNldChpbml0aWFsaXphdGlvblswXVtpXSk7XG4gICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIC8vIEZpbmQgc21hbGxlc3QgZmxhZ2dlZCB2ZXJ0ZXhcbiAgICAgICAgICAgICAgICBjb25zdCB2ZXJ0ZXggPSBoZWFwLnNtYWxsZXN0RmxhZ2dlZChpbml0aWFsaXphdGlvbiwgaSk7XG4gICAgICAgICAgICAgICAgaWYgKHZlcnRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBpbmRpY2VzLnNsaWNlKGluZHB0clt2ZXJ0ZXhdLCBpbmRwdHJbdmVydGV4ICsgMV0pO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PT0gdmVydGV4IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPT09IC0xIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmllZC5oYXMoY2FuZGlkYXRlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZCA9IGRpc3RhbmNlRm4oZGF0YVtjYW5kaWRhdGVdLCBxdWVyeVBvaW50c1tpXSk7XG4gICAgICAgICAgICAgICAgICAgIGhlYXAudW5jaGVja2VkSGVhcFB1c2goaW5pdGlhbGl6YXRpb24sIGksIGQsIGNhbmRpZGF0ZSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIHRyaWVkLmFkZChjYW5kaWRhdGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5pdGlhbGl6YXRpb247XG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplU2VhcmNoKGZvcmVzdCwgZGF0YSwgcXVlcnlQb2ludHMsIG5OZWlnaGJvcnMsIGluaXRGcm9tUmFuZG9tLCBpbml0RnJvbVRyZWUsIHJhbmRvbSkge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBoZWFwLm1ha2VIZWFwKHF1ZXJ5UG9pbnRzLmxlbmd0aCwgbk5laWdoYm9ycyk7XG4gICAgaW5pdEZyb21SYW5kb20obk5laWdoYm9ycywgZGF0YSwgcXVlcnlQb2ludHMsIHJlc3VsdHMsIHJhbmRvbSk7XG4gICAgaWYgKGZvcmVzdCkge1xuICAgICAgICBmb3IgKGxldCB0cmVlIG9mIGZvcmVzdCkge1xuICAgICAgICAgICAgaW5pdEZyb21UcmVlKHRyZWUsIGRhdGEsIHF1ZXJ5UG9pbnRzLCByZXN1bHRzLCByYW5kb20pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYm01ZlpHVnpZMlZ1ZEM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbTV1WDJSbGMyTmxiblF1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRTdPenM3T3pzN096czdPenM3T3pzN08wZEJhVUpITzBGQlJVZzdPenM3TzBkQlMwYzdRVUZGU0RzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096dEhRU3RDUnp0QlFVVklMRTlCUVU4c1MwRkJTeXhKUVVGSkxFMUJRVTBzVVVGQlVTeERRVUZETzBGQlF5OUNMRTlCUVU4c1MwRkJTeXhOUVVGTkxFMUJRVTBzVlVGQlZTeERRVUZETzBGQlEyNURMRTlCUVU4c1MwRkJTeXhKUVVGSkxFMUJRVTBzVVVGQlVTeERRVUZETzBGQlF5OUNMRTlCUVU4c1MwRkJTeXhMUVVGTExFMUJRVTBzVTBGQlV5eERRVUZETzBGQlIycERPenRIUVVWSE8wRkJRMGdzVFVGQlRTeFZRVUZWTEdGQlFXRXNRMEZCUXl4VlFVRnpRaXhGUVVGRkxFMUJRV2RDTzBsQlEzQkZMRTlCUVU4c1UwRkJVeXhUUVVGVExFTkJRM1pDTEVsQlFWa3NSVUZEV2l4VFFVRnJRaXhGUVVOc1FpeFZRVUZyUWl4RlFVTnNRaXhOUVVGTkxFZEJRVWNzUlVGQlJTeEZRVU5ZTEdGQlFXRXNSMEZCUnl4RlFVRkZMRVZCUTJ4Q0xFdEJRVXNzUjBGQlJ5eExRVUZMTEVWQlEySXNSMEZCUnl4SFFVRkhMRWRCUVVjc1JVRkRWQ3hWUVVGVkxFZEJRVWNzU1VGQlNUdFJRVVZxUWl4TlFVRk5MRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETzFGQlF6bENMRTFCUVUwc1dVRkJXU3hIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hWUVVGVkxFTkJRVU1zUTBGQlF6dFJRVVUxUkN4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU53UXl4TlFVRk5MRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zWlVGQlpTeERRVUZETEZWQlFWVXNSVUZCUlN4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzFsQlEzUkZMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4UFFVRlBMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzJkQ1FVTjJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVVZvUkN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExGbEJRVmtzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRha1FzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4WlFVRlpMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRGJFUTdVMEZEUmp0UlFVTkVMRWxCUVVrc1ZVRkJWU3hGUVVGRk8xbEJRMlFzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRM3BETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzI5Q1FVTTFReXhKUVVGSkxGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVU3ZDBKQlEzWkNMRTFCUVUwN2NVSkJRMUE3YjBKQlEwUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPM2RDUVVOb1JDeEpRVUZKTEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVTdORUpCUTNaQ0xFMUJRVTA3ZVVKQlExQTdkMEpCUTBRc1RVRkJUU3hEUVVGRExFZEJRVWNzVlVGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenQzUWtGRGJrVXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhaUVVGWkxFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdkMEpCUTNCRkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNXVUZCV1N4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8zRkNRVU55UlR0cFFrRkRSanRoUVVOR08xTkJRMFk3VVVGRlJDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMWxCUXk5Q0xFMUJRVTBzYTBKQlFXdENMRWRCUVVjc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGRE4wTXNXVUZCV1N4RlFVTmFMRk5CUVZNc1JVRkRWQ3hWUVVGVkxFVkJRMVlzWVVGQllTeEZRVU5pTEUxQlFVMHNRMEZEVUN4RFFVRkRPMWxCUlVZc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlExWXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEZOQlFWTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRuUWtGRGJFTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEdGQlFXRXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHR2UWtGRGRFTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU5vUkN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhIUVVGSExFVkJRVVU3ZDBKQlEzaERMRk5CUVZNN2NVSkJRMVk3YjBKQlEwUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEdGQlFXRXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHQzUWtGRGRFTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8zZENRVU5zUkN4TlFVRk5MRVZCUVVVc1IwRkJSeXhyUWtGQmEwSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0M1FrRkRka01zVFVGQlRTeEZRVUZGTEVkQlFVY3NhMEpCUVd0Q0xFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03ZDBKQlEzWkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVU3TkVKQlEzcENMRk5CUVZNN2VVSkJRMVk3ZDBKQlJVUXNUVUZCVFN4RFFVRkRMRWRCUVVjc1ZVRkJWU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dDNRa0ZEZGtNc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPM2RDUVVNM1F5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhaUVVGWkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03Y1VKQlF6bERPMmxDUVVOR08yRkJRMFk3V1VGRFJDeEpRVUZKTEVOQlFVTXNTVUZCU1N4TFFVRkxMRWRCUVVjc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVTdaMEpCUTNwRExFMUJRVTA3WVVGRFVEdFRRVU5HTzFGQlEwUXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXp0UlFVTTNReXhQUVVGUExFMUJRVTBzUTBGQlF6dEpRVU5vUWl4RFFVRkRMRU5CUVVNN1FVRkRTaXhEUVVGRE8wRkJhMEpFTEUxQlFVMHNWVUZCVlN4dFFrRkJiVUlzUTBGQlF5eFZRVUZ6UWp0SlFVTjRSQ3hUUVVGVExHTkJRV01zUTBGRGNrSXNWVUZCYTBJc1JVRkRiRUlzU1VGQldTeEZRVU5hTEZkQlFXMUNMRVZCUTI1Q0xFdEJRV2RDTEVWQlEyaENMRTFCUVdkQ08xRkJSV2hDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eFhRVUZYTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8xbEJRek5ETEUxQlFVMHNUMEZCVHl4SFFVRkhMRXRCUVVzc1EwRkJReXhsUVVGbExFTkJRVU1zVlVGQlZTeEZRVUZGTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03V1VGRGRrVXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEU5QlFVOHNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3WjBKQlEzWkRMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlR0dlFrRkRiRUlzVTBGQlV6dHBRa0ZEVmp0blFrRkRSQ3hOUVVGTkxFTkJRVU1zUjBGQlJ5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU4yUkN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0aFFVTXpRenRUUVVOR08wbEJRMGdzUTBGQlF6dEpRVVZFTEZOQlFWTXNXVUZCV1N4RFFVTnVRaXhMUVVGdlFpeEZRVU53UWl4SlFVRlpMRVZCUTFvc1YwRkJiVUlzUlVGRGJrSXNTMEZCWjBJc1JVRkRhRUlzVFVGQlowSTdVVUZGYUVJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRmRCUVZjc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZETTBNc1RVRkJUU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlN5eEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMWxCUlc1RkxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhQUVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMmRDUVVOMlF5eEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVU3YjBKQlEyeENMRTlCUVU4N2FVSkJRMUk3WjBKQlEwUXNUVUZCVFN4RFFVRkRMRWRCUVVjc1ZVRkJWU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRka1FzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRE0wTTdVMEZEUmp0UlFVTkVMRTlCUVU4N1NVRkRWQ3hEUVVGRE8wbEJSVVFzVDBGQlR5eEZRVUZGTEdOQlFXTXNSVUZCUlN4WlFVRlpMRVZCUVVVc1EwRkJRenRCUVVNeFF5eERRVUZETzBGQlUwUXNUVUZCVFN4VlFVRlZMSFZDUVVGMVFpeERRVUZETEZWQlFYTkNPMGxCUXpWRUxFOUJRVThzVTBGQlV5eFZRVUZWTEVOQlEzaENMRWxCUVZrc1JVRkRXaXhMUVVFd1FpeEZRVU14UWl4alFVRjVRaXhGUVVONlFpeFhRVUZ0UWp0UlFVVnVRaXhOUVVGTkxFVkJRVVVzVDBGQlR5eEZRVUZGTEUxQlFVMHNSVUZCUlN4SFFVRkhMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdVVUZGYWtRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRmRCUVZjc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZETTBNc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeEhRVUZITEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZETlVNc1QwRkJUeXhKUVVGSkxFVkJRVVU3WjBKQlExZ3NLMEpCUVN0Q08yZENRVU12UWl4TlFVRk5MRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zWlVGQlpTeERRVUZETEdOQlFXTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRmRrUXNTVUZCU1N4TlFVRk5MRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVU3YjBKQlEycENMRTFCUVUwN2FVSkJRMUE3WjBKQlEwUXNUVUZCVFN4VlFVRlZMRWRCUVVjc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1RVRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOeVJTeExRVUZMTEUxQlFVMHNVMEZCVXl4SlFVRkpMRlZCUVZVc1JVRkJSVHR2UWtGRGJFTXNTVUZEUlN4VFFVRlRMRXRCUVVzc1RVRkJUVHQzUWtGRGNFSXNVMEZCVXl4TFFVRkxMRU5CUVVNc1EwRkJRenQzUWtGRGFFSXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhUUVVGVExFTkJRVU1zUlVGRGNFSTdkMEpCUTBFc1UwRkJVenR4UWtGRFZqdHZRa0ZEUkN4TlFVRk5MRU5CUVVNc1IwRkJSeXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4RlFVRkZMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTjBSQ3hKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1kwRkJZeXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNVMEZCVXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU16UkN4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzJsQ1FVTjBRanRoUVVOR08xTkJRMFk3VVVGRFJDeFBRVUZQTEdOQlFXTXNRMEZCUXp0SlFVTjRRaXhEUVVGRExFTkJRVU03UVVGRFNpeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR2RDUVVGblFpeERRVU01UWl4TlFVRjFRaXhGUVVOMlFpeEpRVUZaTEVWQlExb3NWMEZCYlVJc1JVRkRia0lzVlVGQmEwSXNSVUZEYkVJc1kwRkJaME1zUlVGRGFFTXNXVUZCTkVJc1JVRkROVUlzVFVGQlowSTdTVUZGYUVJc1RVRkJUU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4WFFVRlhMRU5CUVVNc1RVRkJUU3hGUVVGRkxGVkJRVlVzUTBGQlF5eERRVUZETzBsQlF6bEVMR05CUVdNc1EwRkJReXhWUVVGVkxFVkJRVVVzU1VGQlNTeEZRVUZGTEZkQlFWY3NSVUZCUlN4UFFVRlBMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGREwwUXNTVUZCU1N4TlFVRk5MRVZCUVVVN1VVRkRWaXhMUVVGTExFbEJRVWtzU1VGQlNTeEpRVUZKTEUxQlFVMHNSVUZCUlR0WlFVTjJRaXhaUVVGWkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NSVUZCUlN4WFFVRlhMRVZCUVVVc1QwRkJUeXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzFOQlEzaEVPMHRCUTBZN1NVRkRSQ3hQUVVGUExFOUJRVThzUTBGQlF6dEJRVU5xUWl4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJBYkdsalpXNXpaVnh1SUNwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURFNUlFZHZiMmRzWlNCTVRFTXVJRUZzYkNCU2FXZG9kSE1nVW1WelpYSjJaV1F1WEc0Z0tseHVJQ29nVEdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVGd1lXTm9aU0JNYVdObGJuTmxMQ0JXWlhKemFXOXVJREl1TUNBb2RHaGxJRndpVEdsalpXNXpaVndpS1R0Y2JpQXFJSGx2ZFNCdFlYa2dibTkwSUhWelpTQjBhR2x6SUdacGJHVWdaWGhqWlhCMElHbHVJR052YlhCc2FXRnVZMlVnZDJsMGFDQjBhR1VnVEdsalpXNXpaUzVjYmlBcUlGbHZkU0J0WVhrZ2IySjBZV2x1SUdFZ1kyOXdlU0J2WmlCMGFHVWdUR2xqWlc1elpTQmhkRnh1SUNwY2JpQXFJQ0FnSUNCb2RIUndPaTh2ZDNkM0xtRndZV05vWlM1dmNtY3ZiR2xqWlc1elpYTXZURWxEUlU1VFJTMHlMakJjYmlBcVhHNGdLaUJWYm14bGMzTWdjbVZ4ZFdseVpXUWdZbmtnWVhCd2JHbGpZV0pzWlNCc1lYY2diM0lnWVdkeVpXVmtJSFJ2SUdsdUlIZHlhWFJwYm1jc0lITnZablIzWVhKbFhHNGdLaUJrYVhOMGNtbGlkWFJsWkNCMWJtUmxjaUIwYUdVZ1RHbGpaVzV6WlNCcGN5QmthWE4wY21saWRYUmxaQ0J2YmlCaGJpQmNJa0ZUSUVsVFhDSWdRa0ZUU1ZNc1hHNGdLaUJYU1ZSSVQxVlVJRmRCVWxKQlRsUkpSVk1nVDFJZ1EwOU9SRWxVU1U5T1V5QlBSaUJCVGxrZ1MwbE9SQ3dnWldsMGFHVnlJR1Y0Y0hKbGMzTWdiM0lnYVcxd2JHbGxaQzVjYmlBcUlGTmxaU0IwYUdVZ1RHbGpaVzV6WlNCbWIzSWdkR2hsSUhOd1pXTnBabWxqSUd4aGJtZDFZV2RsSUdkdmRtVnlibWx1WnlCd1pYSnRhWE56YVc5dWN5QmhibVJjYmlBcUlHeHBiV2wwWVhScGIyNXpJSFZ1WkdWeUlIUm9aU0JNYVdObGJuTmxMbHh1SUNvZ1BUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5WEc0Z0tpOWNibHh1THlvcVhHNGdLaUJVYUdseklHbHpJR0VnU21GMllWTmpjbWx3ZENCeVpXbHRjR3hsYldWdWRHRjBhVzl1SUc5bUlGVk5RVkFnS0c5eWFXZHBibUZzSUd4cFkyVnVjMlVnWW1Wc2IzY3BMQ0JtY205dFhHNGdLaUIwYUdVZ2NIbDBhRzl1SUdsdGNHeGxiV1Z1ZEdGMGFXOXVJR1p2ZFc1a0lHRjBJR2gwZEhCek9pOHZaMmwwYUhWaUxtTnZiUzlzYldOcGJtNWxjeTkxYldGd0xseHVJQ3BjYmlBcUlFQmhkWFJvYjNJZ1lXNWtlV052Wlc1bGJrQm5iMjluYkdVdVkyOXRJQ2hCYm1SNUlFTnZaVzVsYmlsY2JpQXFMMXh1WEc0dktpcGNiaUFxSUVCc2FXTmxibk5sWEc0Z0tpQkNVMFFnTXkxRGJHRjFjMlVnVEdsalpXNXpaVnh1SUNwY2JpQXFJRU52Y0hseWFXZG9kQ0FvWXlrZ01qQXhOeXdnVEdWc1lXNWtJRTFqU1c1dVpYTmNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1VtVmthWE4wY21saWRYUnBiMjRnWVc1a0lIVnpaU0JwYmlCemIzVnlZMlVnWVc1a0lHSnBibUZ5ZVNCbWIzSnRjeXdnZDJsMGFDQnZjaUIzYVhSb2IzVjBYRzRnS2lCdGIyUnBabWxqWVhScGIyNHNJR0Z5WlNCd1pYSnRhWFIwWldRZ2NISnZkbWxrWldRZ2RHaGhkQ0IwYUdVZ1ptOXNiRzkzYVc1bklHTnZibVJwZEdsdmJuTWdZWEpsSUcxbGREcGNiaUFxWEc0Z0tpQXFJRkpsWkdsemRISnBZblYwYVc5dWN5QnZaaUJ6YjNWeVkyVWdZMjlrWlNCdGRYTjBJSEpsZEdGcGJpQjBhR1VnWVdKdmRtVWdZMjl3ZVhKcFoyaDBJRzV2ZEdsalpTd2dkR2hwYzF4dUlDb2dJQ0JzYVhOMElHOW1JR052Ym1ScGRHbHZibk1nWVc1a0lIUm9aU0JtYjJ4c2IzZHBibWNnWkdselkyeGhhVzFsY2k1Y2JpQXFYRzRnS2lBcUlGSmxaR2x6ZEhKcFluVjBhVzl1Y3lCcGJpQmlhVzVoY25rZ1ptOXliU0J0ZFhOMElISmxjSEp2WkhWalpTQjBhR1VnWVdKdmRtVWdZMjl3ZVhKcFoyaDBJRzV2ZEdsalpTeGNiaUFxSUNBZ2RHaHBjeUJzYVhOMElHOW1JR052Ym1ScGRHbHZibk1nWVc1a0lIUm9aU0JtYjJ4c2IzZHBibWNnWkdselkyeGhhVzFsY2lCcGJpQjBhR1VnWkc5amRXMWxiblJoZEdsdmJseHVJQ29nSUNCaGJtUXZiM0lnYjNSb1pYSWdiV0YwWlhKcFlXeHpJSEJ5YjNacFpHVmtJSGRwZEdnZ2RHaGxJR1JwYzNSeWFXSjFkR2x2Ymk1Y2JpQXFYRzRnS2lBcUlFNWxhWFJvWlhJZ2RHaGxJRzVoYldVZ2IyWWdkR2hsSUdOdmNIbHlhV2RvZENCb2IyeGtaWElnYm05eUlIUm9aU0J1WVcxbGN5QnZaaUJwZEhOY2JpQXFJQ0FnWTI5dWRISnBZblYwYjNKeklHMWhlU0JpWlNCMWMyVmtJSFJ2SUdWdVpHOXljMlVnYjNJZ2NISnZiVzkwWlNCd2NtOWtkV04wY3lCa1pYSnBkbVZrSUdaeWIyMWNiaUFxSUNBZ2RHaHBjeUJ6YjJaMGQyRnlaU0IzYVhSb2IzVjBJSE53WldOcFptbGpJSEJ5YVc5eUlIZHlhWFIwWlc0Z2NHVnliV2x6YzJsdmJpNWNiaUFxWEc0Z0tpQlVTRWxUSUZOUFJsUlhRVkpGSUVsVElGQlNUMVpKUkVWRUlFSlpJRlJJUlNCRFQxQlpVa2xIU0ZRZ1NFOU1SRVZTVXlCQlRrUWdRMDlPVkZKSlFsVlVUMUpUSUZ3aVFWTWdTVk5jSWx4dUlDb2dRVTVFSUVGT1dTQkZXRkJTUlZOVElFOVNJRWxOVUV4SlJVUWdWMEZTVWtGT1ZFbEZVeXdnU1U1RFRGVkVTVTVITENCQ1ZWUWdUazlVSUV4SlRVbFVSVVFnVkU4c0lGUklSVnh1SUNvZ1NVMVFURWxGUkNCWFFWSlNRVTVVU1VWVElFOUdJRTFGVWtOSVFVNVVRVUpKVEVsVVdTQkJUa1FnUmtsVVRrVlRVeUJHVDFJZ1FTQlFRVkpVU1VOVlRFRlNJRkJWVWxCUFUwVWdRVkpGWEc0Z0tpQkVTVk5EVEVGSlRVVkVMaUJKVGlCT1R5QkZWa1ZPVkNCVFNFRk1UQ0JVU0VVZ1EwOVFXVkpKUjBoVUlFaFBURVJGVWlCUFVpQkRUMDVVVWtsQ1ZWUlBVbE1nUWtVZ1RFbEJRa3hGWEc0Z0tpQkdUMUlnUVU1WklFUkpVa1ZEVkN3Z1NVNUVTVkpGUTFRc0lFbE9RMGxFUlU1VVFVd3NJRk5RUlVOSlFVd3NJRVZZUlUxUVRFRlNXU3dnVDFJZ1EwOU9VMFZSVlVWT1ZFbEJURnh1SUNvZ1JFRk5RVWRGVXlBb1NVNURURlZFU1U1SExDQkNWVlFnVGs5VUlFeEpUVWxVUlVRZ1ZFOHNJRkJTVDBOVlVrVk5SVTVVSUU5R0lGTlZRbE5VU1ZSVlZFVWdSMDlQUkZNZ1QxSmNiaUFxSUZORlVsWkpRMFZUT3lCTVQxTlRJRTlHSUZWVFJTd2dSRUZVUVN3Z1QxSWdVRkpQUmtsVVV6c2dUMUlnUWxWVFNVNUZVMU1nU1U1VVJWSlNWVkJVU1U5T0tTQklUMWRGVmtWU1hHNGdLaUJEUVZWVFJVUWdRVTVFSUU5T0lFRk9XU0JVU0VWUFVsa2dUMFlnVEVsQlFrbE1TVlJaTENCWFNFVlVTRVZTSUVsT0lFTlBUbFJTUVVOVUxDQlRWRkpKUTFRZ1RFbEJRa2xNU1ZSWkxGeHVJQ29nVDFJZ1ZFOVNWQ0FvU1U1RFRGVkVTVTVISUU1RlIweEpSMFZPUTBVZ1QxSWdUMVJJUlZKWFNWTkZLU0JCVWtsVFNVNUhJRWxPSUVGT1dTQlhRVmtnVDFWVUlFOUdJRlJJUlNCVlUwVmNiaUFxSUU5R0lGUklTVk1nVTA5R1ZGZEJVa1VzSUVWV1JVNGdTVVlnUVVSV1NWTkZSQ0JQUmlCVVNFVWdVRTlUVTBsQ1NVeEpWRmtnVDBZZ1UxVkRTQ0JFUVUxQlIwVXVYRzRnS2k5Y2JseHVhVzF3YjNKMElDb2dZWE1nYUdWaGNDQm1jbTl0SUNjdUwyaGxZWEFuTzF4dWFXMXdiM0owSUNvZ1lYTWdiV0YwY21sNElHWnliMjBnSnk0dmJXRjBjbWw0Snp0Y2JtbHRjRzl5ZENBcUlHRnpJSFJ5WldVZ1puSnZiU0FuTGk5MGNtVmxKenRjYm1sdGNHOXlkQ0FxSUdGeklIVjBhV3h6SUdaeWIyMGdKeTR2ZFhScGJITW5PMXh1YVcxd2IzSjBJSHNnVW1GdVpHOXRSbTRzSUZabFkzUnZjbk1zSUVScGMzUmhibU5sUm00c0lGWmxZM1J2Y2lCOUlHWnliMjBnSnk0dmRXMWhjQ2M3WEc1Y2JpOHFLbHh1SUNvZ1EzSmxZWFJsSUdFZ2RtVnljMmx2YmlCdlppQnVaV0Z5WlhOMElHNWxhV2RvWW05eUlHUmxjMk5sYm5RdVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ0WVd0bFRrNUVaWE5qWlc1MEtHUnBjM1JoYm1ObFJtNDZJRVJwYzNSaGJtTmxSbTRzSUhKaGJtUnZiVG9nVW1GdVpHOXRSbTRwSUh0Y2JpQWdjbVYwZFhKdUlHWjFibU4wYVc5dUlHNU9SR1Z6WTJWdWRDaGNiaUFnSUNCa1lYUmhPaUJXWldOMGIzSXNYRzRnSUNBZ2JHVmhaa0Z5Y21GNU9pQldaV04wYjNKekxGeHVJQ0FnSUc1T1pXbG5hR0p2Y25NNklHNTFiV0psY2l4Y2JpQWdJQ0J1U1hSbGNuTWdQU0F4TUN4Y2JpQWdJQ0J0WVhoRFlXNWthV1JoZEdWeklEMGdOVEFzWEc0Z0lDQWdaR1ZzZEdFZ1BTQXdMakF3TVN4Y2JpQWdJQ0J5YUc4Z1BTQXdMalVzWEc0Z0lDQWdjbkJVY21WbFNXNXBkQ0E5SUhSeWRXVmNiaUFnS1NCN1hHNGdJQ0FnWTI5dWMzUWdibFpsY25ScFkyVnpJRDBnWkdGMFlTNXNaVzVuZEdnN1hHNGdJQ0FnWTI5dWMzUWdZM1Z5Y21WdWRFZHlZWEJvSUQwZ2FHVmhjQzV0WVd0bFNHVmhjQ2hrWVhSaExteGxibWQwYUN3Z2JrNWxhV2RvWW05eWN5azdYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR1JoZEdFdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJR052Ym5OMElHbHVaR2xqWlhNZ1BTQm9aV0Z3TG5KbGFtVmpkR2x2YmxOaGJYQnNaU2h1VG1WcFoyaGliM0p6TENCa1lYUmhMbXhsYm1kMGFDd2djbUZ1Wkc5dEtUdGNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHb2dQU0F3T3lCcUlEd2dhVzVrYVdObGN5NXNaVzVuZEdnN0lHb3JLeWtnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JrSUQwZ1pHbHpkR0Z1WTJWR2JpaGtZWFJoVzJsZExDQmtZWFJoVzJsdVpHbGpaWE5iYWwxZEtUdGNibHh1SUNBZ0lDQWdJQ0JvWldGd0xtaGxZWEJRZFhOb0tHTjFjbkpsYm5SSGNtRndhQ3dnYVN3Z1pDd2dhVzVrYVdObGMxdHFYU3dnTVNrN1hHNGdJQ0FnSUNBZ0lHaGxZWEF1YUdWaGNGQjFjMmdvWTNWeWNtVnVkRWR5WVhCb0xDQnBibVJwWTJWelcycGRMQ0JrTENCcExDQXhLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLSEp3VkhKbFpVbHVhWFFwSUh0Y2JpQWdJQ0FnSUdadmNpQW9iR1YwSUc0Z1BTQXdPeUJ1SUR3Z2JHVmhaa0Z5Y21GNUxteGxibWQwYURzZ2Jpc3JLU0I3WEc0Z0lDQWdJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2JHVmhaa0Z5Y21GNVcyNWRMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0d4bFlXWkJjbkpoZVZ0dVhWdHBYU0E4SURBcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQm1iM0lnS0d4bGRDQnFJRDBnYVNBcklERTdJR29nUENCc1pXRm1RWEp5WVhsYmJsMHViR1Z1WjNSb095QnFLeXNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoc1pXRm1RWEp5WVhsYmJsMWJhbDBnUENBd0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWkNBOUlHUnBjM1JoYm1ObFJtNG9aR0YwWVZ0c1pXRm1RWEp5WVhsYmJsMWJhVjFkTENCa1lYUmhXMnhsWVdaQmNuSmhlVnR1WFZ0cVhWMHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FHVmhjQzVvWldGd1VIVnphQ2hqZFhKeVpXNTBSM0poY0dnc0lHeGxZV1pCY25KaGVWdHVYVnRwWFN3Z1pDd2diR1ZoWmtGeWNtRjVXMjVkVzJwZExDQXhLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHaGxZWEF1YUdWaGNGQjFjMmdvWTNWeWNtVnVkRWR5WVhCb0xDQnNaV0ZtUVhKeVlYbGJibDFiYWwwc0lHUXNJR3hsWVdaQmNuSmhlVnR1WFZ0cFhTd2dNU2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2JpQTlJREE3SUc0Z1BDQnVTWFJsY25NN0lHNHJLeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdZMkZ1Wkdsa1lYUmxUbVZwWjJoaWIzSnpJRDBnYUdWaGNDNWlkV2xzWkVOaGJtUnBaR0YwWlhNb1hHNGdJQ0FnSUNBZ0lHTjFjbkpsYm5SSGNtRndhQ3hjYmlBZ0lDQWdJQ0FnYmxabGNuUnBZMlZ6TEZ4dUlDQWdJQ0FnSUNCdVRtVnBaMmhpYjNKekxGeHVJQ0FnSUNBZ0lDQnRZWGhEWVc1a2FXUmhkR1Z6TEZ4dUlDQWdJQ0FnSUNCeVlXNWtiMjFjYmlBZ0lDQWdJQ2s3WEc1Y2JpQWdJQ0FnSUd4bGRDQmpJRDBnTUR0Y2JpQWdJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2JsWmxjblJwWTJWek95QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2FpQTlJREE3SUdvZ1BDQnRZWGhEWVc1a2FXUmhkR1Z6T3lCcUt5c3BJSHRjYmlBZ0lDQWdJQ0FnSUNCc1pYUWdjQ0E5SUUxaGRHZ3VabXh2YjNJb1kyRnVaR2xrWVhSbFRtVnBaMmhpYjNKeld6QmRXMmxkVzJwZEtUdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2NDQThJREFnZkh3Z2RYUnBiSE11ZEdGMVVtRnVaQ2h5WVc1a2IyMHBJRHdnY21odktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNTBhVzUxWlR0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnWm05eUlDaHNaWFFnYXlBOUlEQTdJR3NnUENCdFlYaERZVzVrYVdSaGRHVnpPeUJyS3lzcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSEVnUFNCTllYUm9MbVpzYjI5eUtHTmhibVJwWkdGMFpVNWxhV2RvWW05eWMxc3dYVnRwWFZ0clhTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JqYWlBOUlHTmhibVJwWkdGMFpVNWxhV2RvWW05eWMxc3lYVnRwWFZ0cVhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR05ySUQwZ1kyRnVaR2xrWVhSbFRtVnBaMmhpYjNKeld6SmRXMmxkVzJ0ZE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIRWdQQ0F3SUh4OElDZ2hZMm9nSmlZZ0lXTnJLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1MGFXNTFaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWkNBOUlHUnBjM1JoYm1ObFJtNG9aR0YwWVZ0d1hTd2daR0YwWVZ0eFhTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCaklDczlJR2hsWVhBdWFHVmhjRkIxYzJnb1kzVnljbVZ1ZEVkeVlYQm9MQ0J3TENCa0xDQnhMQ0F4S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR01nS3owZ2FHVmhjQzVvWldGd1VIVnphQ2hqZFhKeVpXNTBSM0poY0dnc0lIRXNJR1FzSUhBc0lERXBPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2FXWWdLR01nUEQwZ1pHVnNkR0VnS2lCdVRtVnBaMmhpYjNKeklDb2daR0YwWVM1c1pXNW5kR2dwSUh0Y2JpQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lHTnZibk4wSUhOdmNuUmxaQ0E5SUdobFlYQXVaR1ZvWldGd1UyOXlkQ2hqZFhKeVpXNTBSM0poY0dncE8xeHVJQ0FnSUhKbGRIVnliaUJ6YjNKMFpXUTdYRzRnSUgwN1hHNTlYRzVjYm1WNGNHOXlkQ0IwZVhCbElFbHVhWFJHY205dFVtRnVaRzl0Um00Z1BTQW9YRzRnSUc1T1pXbG5hR0p2Y25NNklHNTFiV0psY2l4Y2JpQWdaR0YwWVRvZ1ZtVmpkRzl5TEZ4dUlDQnhkV1Z5ZVZCdmFXNTBjem9nVm1WamRHOXlMRnh1SUNCZmFHVmhjRG9nYUdWaGNDNUlaV0Z3TEZ4dUlDQnlZVzVrYjIwNklGSmhibVJ2YlVadVhHNHBJRDArSUhadmFXUTdYRzVjYm1WNGNHOXlkQ0IwZVhCbElFbHVhWFJHY205dFZISmxaVVp1SUQwZ0tGeHVJQ0JmZEhKbFpUb2dkSEpsWlM1R2JHRjBWSEpsWlN4Y2JpQWdaR0YwWVRvZ1ZtVmpkRzl5TEZ4dUlDQnhkV1Z5ZVZCdmFXNTBjem9nVm1WamRHOXlMRnh1SUNCZmFHVmhjRG9nYUdWaGNDNUlaV0Z3TEZ4dUlDQnlZVzVrYjIwNklGSmhibVJ2YlVadVhHNHBJRDArSUhadmFXUTdYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ0WVd0bFNXNXBkR2xoYkdsNllYUnBiMjV6S0dScGMzUmhibU5sUm00NklFUnBjM1JoYm1ObFJtNHBJSHRjYmlBZ1puVnVZM1JwYjI0Z2FXNXBkRVp5YjIxU1lXNWtiMjBvWEc0Z0lDQWdiazVsYVdkb1ltOXljem9nYm5WdFltVnlMRnh1SUNBZ0lHUmhkR0U2SUZabFkzUnZjaXhjYmlBZ0lDQnhkV1Z5ZVZCdmFXNTBjem9nVm1WamRHOXlMRnh1SUNBZ0lGOW9aV0Z3T2lCb1pXRndMa2hsWVhBc1hHNGdJQ0FnY21GdVpHOXRPaUJTWVc1a2IyMUdibHh1SUNBcElIdGNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElIRjFaWEo1VUc5cGJuUnpMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JwYm1ScFkyVnpJRDBnZFhScGJITXVjbVZxWldOMGFXOXVVMkZ0Y0d4bEtHNU9aV2xuYUdKdmNuTXNJR1JoZEdFdWJHVnVaM1JvTENCeVlXNWtiMjBwTzF4dUlDQWdJQ0FnWm05eUlDaHNaWFFnYWlBOUlEQTdJR29nUENCcGJtUnBZMlZ6TG14bGJtZDBhRHNnYWlzcktTQjdYRzRnSUNBZ0lDQWdJR2xtSUNocGJtUnBZMlZ6VzJwZElEd2dNQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZiblJwYm5WbE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR052Ym5OMElHUWdQU0JrYVhOMFlXNWpaVVp1S0dSaGRHRmJhVzVrYVdObGMxdHFYVjBzSUhGMVpYSjVVRzlwYm5SelcybGRLVHRjYmlBZ0lDQWdJQ0FnYUdWaGNDNW9aV0Z3VUhWemFDaGZhR1ZoY0N3Z2FTd2daQ3dnYVc1a2FXTmxjMXRxWFN3Z01TazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdablZ1WTNScGIyNGdhVzVwZEVaeWIyMVVjbVZsS0Z4dUlDQWdJRjkwY21WbE9pQjBjbVZsTGtac1lYUlVjbVZsTEZ4dUlDQWdJR1JoZEdFNklGWmxZM1J2Y2l4Y2JpQWdJQ0J4ZFdWeWVWQnZhVzUwY3pvZ1ZtVmpkRzl5TEZ4dUlDQWdJRjlvWldGd09pQm9aV0Z3TGtobFlYQXNYRzRnSUNBZ2NtRnVaRzl0T2lCU1lXNWtiMjFHYmx4dUlDQXBJSHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSEYxWlhKNVVHOXBiblJ6TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCcGJtUnBZMlZ6SUQwZ2RISmxaUzV6WldGeVkyaEdiR0YwVkhKbFpTaHhkV1Z5ZVZCdmFXNTBjMXRwWFN3Z1gzUnlaV1VzSUhKaGJtUnZiU2s3WEc1Y2JpQWdJQ0FnSUdadmNpQW9iR1YwSUdvZ1BTQXdPeUJxSUR3Z2FXNWthV05sY3k1c1pXNW5kR2c3SUdvckt5a2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2FXNWthV05sYzF0cVhTQThJREFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdZMjl1YzNRZ1pDQTlJR1JwYzNSaGJtTmxSbTRvWkdGMFlWdHBibVJwWTJWelcycGRYU3dnY1hWbGNubFFiMmx1ZEhOYmFWMHBPMXh1SUNBZ0lDQWdJQ0JvWldGd0xtaGxZWEJRZFhOb0tGOW9aV0Z3TENCcExDQmtMQ0JwYm1ScFkyVnpXMnBkTENBeEtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVPMXh1SUNCOVhHNWNiaUFnY21WMGRYSnVJSHNnYVc1cGRFWnliMjFTWVc1a2IyMHNJR2x1YVhSR2NtOXRWSEpsWlNCOU8xeHVmVnh1WEc1bGVIQnZjblFnZEhsd1pTQlRaV0Z5WTJoR2JpQTlJQ2hjYmlBZ1pHRjBZVG9nVm1WamRHOXlMRnh1SUNCbmNtRndhRG9nYldGMGNtbDRMbE53WVhKelpVMWhkSEpwZUN4Y2JpQWdhVzVwZEdsaGJHbDZZWFJwYjI0NklHaGxZWEF1U0dWaGNDeGNiaUFnY1hWbGNubFFiMmx1ZEhNNklGWmxZM1J2Y2x4dUtTQTlQaUJvWldGd0xraGxZWEE3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCdFlXdGxTVzVwZEdsaGJHbDZaV1JPVGxObFlYSmphQ2hrYVhOMFlXNWpaVVp1T2lCRWFYTjBZVzVqWlVadUtTQjdYRzRnSUhKbGRIVnliaUJtZFc1amRHbHZiaUJ1YmxObFlYSmphRVp1S0Z4dUlDQWdJR1JoZEdFNklGWmxZM1J2Y2l4Y2JpQWdJQ0JuY21Gd2FEb2diV0YwY21sNExsTndZWEp6WlUxaGRISnBlQ3hjYmlBZ0lDQnBibWwwYVdGc2FYcGhkR2x2YmpvZ2FHVmhjQzVJWldGd0xGeHVJQ0FnSUhGMVpYSjVVRzlwYm5Sek9pQldaV04wYjNKY2JpQWdLU0I3WEc0Z0lDQWdZMjl1YzNRZ2V5QnBibVJwWTJWekxDQnBibVJ3ZEhJZ2ZTQTlJRzFoZEhKcGVDNW5aWFJEVTFJb1ozSmhjR2dwTzF4dVhHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCeGRXVnllVkJ2YVc1MGN5NXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdkSEpwWldRZ1BTQnVaWGNnVTJWMEtHbHVhWFJwWVd4cGVtRjBhVzl1V3pCZFcybGRLVHRjYmlBZ0lDQWdJSGRvYVd4bElDaDBjblZsS1NCN1hHNGdJQ0FnSUNBZ0lDOHZJRVpwYm1RZ2MyMWhiR3hsYzNRZ1pteGhaMmRsWkNCMlpYSjBaWGhjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdkbVZ5ZEdWNElEMGdhR1ZoY0M1emJXRnNiR1Z6ZEVac1lXZG5aV1FvYVc1cGRHbGhiR2w2WVhScGIyNHNJR2twTzF4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2gyWlhKMFpYZ2dQVDA5SUMweEtTQjdYRzRnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdZMkZ1Wkdsa1lYUmxjeUE5SUdsdVpHbGpaWE11YzJ4cFkyVW9hVzVrY0hSeVczWmxjblJsZUYwc0lHbHVaSEIwY2x0MlpYSjBaWGdnS3lBeFhTazdYRzRnSUNBZ0lDQWdJR1p2Y2lBb1kyOXVjM1FnWTJGdVpHbGtZWFJsSUc5bUlHTmhibVJwWkdGMFpYTXBJSHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9YRzRnSUNBZ0lDQWdJQ0FnSUNCallXNWthV1JoZEdVZ1BUMDlJSFpsY25SbGVDQjhmRnh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnVaR2xrWVhSbElEMDlQU0F0TVNCOGZGeHVJQ0FnSUNBZ0lDQWdJQ0FnZEhKcFpXUXVhR0Z6S0dOaGJtUnBaR0YwWlNsY2JpQWdJQ0FnSUNBZ0lDQXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZiblJwYm5WbE8xeHVJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JrSUQwZ1pHbHpkR0Z1WTJWR2JpaGtZWFJoVzJOaGJtUnBaR0YwWlYwc0lIRjFaWEo1VUc5cGJuUnpXMmxkS1R0Y2JpQWdJQ0FnSUNBZ0lDQm9aV0Z3TG5WdVkyaGxZMnRsWkVobFlYQlFkWE5vS0dsdWFYUnBZV3hwZW1GMGFXOXVMQ0JwTENCa0xDQmpZVzVrYVdSaGRHVXNJREVwTzF4dUlDQWdJQ0FnSUNBZ0lIUnlhV1ZrTG1Ga1pDaGpZVzVrYVdSaGRHVXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCcGJtbDBhV0ZzYVhwaGRHbHZianRjYmlBZ2ZUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdsdWFYUnBZV3hwZW1WVFpXRnlZMmdvWEc0Z0lHWnZjbVZ6ZERvZ2RISmxaUzVHYkdGMFZISmxaVnRkTEZ4dUlDQmtZWFJoT2lCV1pXTjBiM0lzWEc0Z0lIRjFaWEo1VUc5cGJuUnpPaUJXWldOMGIzSXNYRzRnSUc1T1pXbG5hR0p2Y25NNklHNTFiV0psY2l4Y2JpQWdhVzVwZEVaeWIyMVNZVzVrYjIwNklFbHVhWFJHY205dFVtRnVaRzl0Um00c1hHNGdJR2x1YVhSR2NtOXRWSEpsWlRvZ1NXNXBkRVp5YjIxVWNtVmxSbTRzWEc0Z0lISmhibVJ2YlRvZ1VtRnVaRzl0Um01Y2Jpa2dlMXh1SUNCamIyNXpkQ0J5WlhOMWJIUnpJRDBnYUdWaGNDNXRZV3RsU0dWaGNDaHhkV1Z5ZVZCdmFXNTBjeTVzWlc1bmRHZ3NJRzVPWldsbmFHSnZjbk1wTzF4dUlDQnBibWwwUm5KdmJWSmhibVJ2YlNodVRtVnBaMmhpYjNKekxDQmtZWFJoTENCeGRXVnllVkJ2YVc1MGN5d2djbVZ6ZFd4MGN5d2djbUZ1Wkc5dEtUdGNiaUFnYVdZZ0tHWnZjbVZ6ZENrZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUhSeVpXVWdiMllnWm05eVpYTjBLU0I3WEc0Z0lDQWdJQ0JwYm1sMFJuSnZiVlJ5WldVb2RISmxaU3dnWkdGMFlTd2djWFZsY25sUWIybHVkSE1zSUhKbGMzVnNkSE1zSUhKaGJtUnZiU2s3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJSEpsZEhWeWJpQnlaWE4xYkhSek8xeHVmVnh1SWwxOSIsImltcG9ydCBpc0FycmF5IGZyb20gJ2lzLWFueS1hcnJheSc7XG5cbmltcG9ydCBlcnJvckNhbGN1bGF0aW9uIGZyb20gJy4vZXJyb3JDYWxjdWxhdGlvbic7XG5pbXBvcnQgc3RlcCBmcm9tICcuL3N0ZXAnO1xuXG4vKipcbiAqIEN1cnZlIGZpdHRpbmcgYWxnb3JpdGhtXG4gKiBAcGFyYW0ge3t4OkFycmF5PG51bWJlcj4sIHk6QXJyYXk8bnVtYmVyPn19IGRhdGEgLSBBcnJheSBvZiBwb2ludHMgdG8gZml0IGluIHRoZSBmb3JtYXQgW3gxLCB4MiwgLi4uIF0sIFt5MSwgeTIsIC4uLiBdXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwYXJhbWV0ZXJpemVkRnVuY3Rpb24gLSBUaGUgcGFyYW1ldGVycyBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIHdpdGggdGhlIGluZGVwZW5kZW50IHZhcmlhYmxlIGFzIGEgcGFyYW1ldGVyXG4gKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdIC0gT3B0aW9ucyBvYmplY3RcbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5kYW1waW5nXSAtIExldmVuYmVyZy1NYXJxdWFyZHQgcGFyYW1ldGVyXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMuZ3JhZGllbnREaWZmZXJlbmNlID0gMTBlLTJdIC0gQWRqdXN0bWVudCBmb3IgZGVjcmVhc2UgdGhlIGRhbXBpbmcgcGFyYW1ldGVyXG4gKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IFtvcHRpb25zLm1pblZhbHVlc10gLSBNaW5pbXVtIGFsbG93ZWQgdmFsdWVzIGZvciBwYXJhbWV0ZXJzXG4gKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IFtvcHRpb25zLm1heFZhbHVlc10gLSBNYXhpbXVtIGFsbG93ZWQgdmFsdWVzIGZvciBwYXJhbWV0ZXJzXG4gKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IFtvcHRpb25zLmluaXRpYWxWYWx1ZXNdIC0gQXJyYXkgb2YgaW5pdGlhbCBwYXJhbWV0ZXIgdmFsdWVzXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubWF4SXRlcmF0aW9ucyA9IDEwMF0gLSBNYXhpbXVtIG9mIGFsbG93ZWQgaXRlcmF0aW9uc1xuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmVycm9yVG9sZXJhbmNlID0gMTBlLTNdIC0gTWluaW11bSB1bmNlcnRhaW50eSBhbGxvd2VkIGZvciBlYWNoIHBvaW50XG4gKiBAcmV0dXJuIHt7cGFyYW1ldGVyVmFsdWVzOiBBcnJheTxudW1iZXI+LCBwYXJhbWV0ZXJFcnJvcjogbnVtYmVyLCBpdGVyYXRpb25zOiBudW1iZXJ9fVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsZXZlbmJlcmdNYXJxdWFyZHQoXG4gIGRhdGEsXG4gIHBhcmFtZXRlcml6ZWRGdW5jdGlvbixcbiAgb3B0aW9ucyA9IHt9LFxuKSB7XG4gIGxldCB7XG4gICAgbWF4SXRlcmF0aW9ucyA9IDEwMCxcbiAgICBncmFkaWVudERpZmZlcmVuY2UgPSAxMGUtMixcbiAgICBkYW1waW5nID0gMCxcbiAgICBlcnJvclRvbGVyYW5jZSA9IDEwZS0zLFxuICAgIG1pblZhbHVlcyxcbiAgICBtYXhWYWx1ZXMsXG4gICAgaW5pdGlhbFZhbHVlcyxcbiAgfSA9IG9wdGlvbnM7XG5cbiAgaWYgKGRhbXBpbmcgPD0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGRhbXBpbmcgb3B0aW9uIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTtcbiAgfSBlbHNlIGlmICghZGF0YS54IHx8ICFkYXRhLnkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBkYXRhIHBhcmFtZXRlciBtdXN0IGhhdmUgeCBhbmQgeSBlbGVtZW50cycpO1xuICB9IGVsc2UgaWYgKFxuICAgICFpc0FycmF5KGRhdGEueCkgfHxcbiAgICBkYXRhLngubGVuZ3RoIDwgMiB8fFxuICAgICFpc0FycmF5KGRhdGEueSkgfHxcbiAgICBkYXRhLnkubGVuZ3RoIDwgMlxuICApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnVGhlIGRhdGEgcGFyYW1ldGVyIGVsZW1lbnRzIG11c3QgYmUgYW4gYXJyYXkgd2l0aCBtb3JlIHRoYW4gMiBwb2ludHMnLFxuICAgICk7XG4gIH0gZWxzZSBpZiAoZGF0YS54Lmxlbmd0aCAhPT0gZGF0YS55Lmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGRhdGEgcGFyYW1ldGVyIGVsZW1lbnRzIG11c3QgaGF2ZSB0aGUgc2FtZSBzaXplJyk7XG4gIH1cblxuICBsZXQgcGFyYW1ldGVycyA9XG4gICAgaW5pdGlhbFZhbHVlcyB8fCBuZXcgQXJyYXkocGFyYW1ldGVyaXplZEZ1bmN0aW9uLmxlbmd0aCkuZmlsbCgxKTtcbiAgbGV0IHBhckxlbiA9IHBhcmFtZXRlcnMubGVuZ3RoO1xuICBtYXhWYWx1ZXMgPSBtYXhWYWx1ZXMgfHwgbmV3IEFycmF5KHBhckxlbikuZmlsbChOdW1iZXIuTUFYX1NBRkVfSU5URUdFUik7XG4gIG1pblZhbHVlcyA9IG1pblZhbHVlcyB8fCBuZXcgQXJyYXkocGFyTGVuKS5maWxsKE51bWJlci5NSU5fU0FGRV9JTlRFR0VSKTtcblxuICBpZiAobWF4VmFsdWVzLmxlbmd0aCAhPT0gbWluVmFsdWVzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbWluVmFsdWVzIGFuZCBtYXhWYWx1ZXMgbXVzdCBiZSB0aGUgc2FtZSBzaXplJyk7XG4gIH1cblxuICBpZiAoIWlzQXJyYXkocGFyYW1ldGVycykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2luaXRpYWxWYWx1ZXMgbXVzdCBiZSBhbiBhcnJheScpO1xuICB9XG5cbiAgbGV0IGVycm9yID0gZXJyb3JDYWxjdWxhdGlvbihkYXRhLCBwYXJhbWV0ZXJzLCBwYXJhbWV0ZXJpemVkRnVuY3Rpb24pO1xuXG4gIGxldCBjb252ZXJnZWQgPSBlcnJvciA8PSBlcnJvclRvbGVyYW5jZTtcblxuICBsZXQgaXRlcmF0aW9uO1xuICBmb3IgKGl0ZXJhdGlvbiA9IDA7IGl0ZXJhdGlvbiA8IG1heEl0ZXJhdGlvbnMgJiYgIWNvbnZlcmdlZDsgaXRlcmF0aW9uKyspIHtcbiAgICBwYXJhbWV0ZXJzID0gc3RlcChcbiAgICAgIGRhdGEsXG4gICAgICBwYXJhbWV0ZXJzLFxuICAgICAgZGFtcGluZyxcbiAgICAgIGdyYWRpZW50RGlmZmVyZW5jZSxcbiAgICAgIHBhcmFtZXRlcml6ZWRGdW5jdGlvbixcbiAgICApO1xuXG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBwYXJMZW47IGsrKykge1xuICAgICAgcGFyYW1ldGVyc1trXSA9IE1hdGgubWluKFxuICAgICAgICBNYXRoLm1heChtaW5WYWx1ZXNba10sIHBhcmFtZXRlcnNba10pLFxuICAgICAgICBtYXhWYWx1ZXNba10sXG4gICAgICApO1xuICAgIH1cblxuICAgIGVycm9yID0gZXJyb3JDYWxjdWxhdGlvbihkYXRhLCBwYXJhbWV0ZXJzLCBwYXJhbWV0ZXJpemVkRnVuY3Rpb24pO1xuICAgIGlmIChpc05hTihlcnJvcikpIGJyZWFrO1xuICAgIGNvbnZlcmdlZCA9IGVycm9yIDw9IGVycm9yVG9sZXJhbmNlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwYXJhbWV0ZXJWYWx1ZXM6IHBhcmFtZXRlcnMsXG4gICAgcGFyYW1ldGVyRXJyb3I6IGVycm9yLFxuICAgIGl0ZXJhdGlvbnM6IGl0ZXJhdGlvbixcbiAgfTtcbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbmltcG9ydCB7IFRTTkUgfSBmcm9tICdAa2Vja2VsdC90c25lJztcbmltcG9ydCB7IFZlY3RvciwgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy90eXBlLWRlY2xhcmF0aW9ucyc7XG5pbXBvcnQgeyB0cmFuc3Bvc2VNYXRyaXgsIGFzc2VydCwgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5pbXBvcnQgeyBTUEVCYXNlLCBQU1BFQmFzZSwgT3JpZ2luYWxTUEUgfSBmcm9tICcuL3NwZSc7XG5pbXBvcnQgeyBNZWFzdXJlLCBBdmFpbGFibGVNZXRyaWNzLCBpc0JpdEFycmF5TWV0cmljIH0gZnJvbSAnLi90eXBlZC1tZXRyaWNzL3R5cGVkLW1ldHJpY3MnO1xuaW1wb3J0IEJpdEFycmF5IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL2JpdC1hcnJheSc7XG5pbXBvcnQgeyBVTUFQIH0gZnJvbSAnLi91bWFwJztcbmltcG9ydCB7IERpc3RhbmNlTWF0cml4LCBEaXN0YW5jZU1hdHJpeFNlcnZpY2UsIGRpc3RhbmNlTWF0cml4UHJveHksIGRtTGluZWFySW5kZXggfSBmcm9tICcuL2Rpc3RhbmNlLW1hdHJpeCc7XG5pbXBvcnQgeyBTcGFyc2VNYXRyaXhTZXJ2aWNlIH0gZnJvbSAnLi9kaXN0YW5jZS1tYXRyaXgvc3BhcnNlLW1hdHJpeC1zZXJ2aWNlJztcbmltcG9ydCB7IGdldEtubkdyYXBoIH0gZnJvbSAnLi91bWFwL2tubkdyYXBoJztcbmV4cG9ydCB2YXIgRGltUmVkdWN0aW9uTWV0aG9kcztcbihmdW5jdGlvbiAoRGltUmVkdWN0aW9uTWV0aG9kcykge1xuICAgIERpbVJlZHVjdGlvbk1ldGhvZHNbXCJVTUFQXCJdID0gXCJVTUFQXCI7XG4gICAgRGltUmVkdWN0aW9uTWV0aG9kc1tcIlRfU05FXCJdID0gXCJ0LVNORVwiO1xufSkoRGltUmVkdWN0aW9uTWV0aG9kcyB8fCAoRGltUmVkdWN0aW9uTWV0aG9kcyA9IHt9KSk7XG4vKiogVW1hcCB1c2VzIHByZWNhbGN1bGF0ZWQgZGlzdGFuY2UgbWF0cml4IHRvIHNhdmUgdGltZS4gdGhvdWdoIGZvciB0b28gbXVjaCBkYXRhLCBtZW1vcnkgYmVjb21lcyBjb25zdHJhaW50LlxuICogaWYgd2UgaGF2ZSAxMDAgMDAwIHJvd3MsIGRpc3RhbmNlIG1hdHJpeCB3aWxsIHRha2UgfjEwZ2Igb2YgbWVtb3J5IGFuZCBwcm9iYWJseSBvdmVyZmxvdy5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BWF9ESVNUQU5DRV9NQVRSSVhfUk9XUyA9IDIwMDAwO1xuZXhwb3J0IGNsYXNzIFVNQVBPcHRpb25zIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5sZWFybmluZ1JhdGUgPSB7IHVpTmFtZTogJ0xlYXJpbmlnIHJhdGUnLCB2YWx1ZTogMSwgdG9vbHRpcDogJ1RoZSBpbml0aWFsIGxlYXJuaW5nIHJhdGUgZm9yIHRoZSBlbWJlZGRpbmcgb3B0aW1pemF0aW9uJyB9O1xuICAgICAgICB0aGlzLm5Db21wb25lbnRzID0geyB1aU5hbWU6ICdDb21wb25lbnRzJywgdmFsdWU6IDIsIHRvb2x0aXA6ICdUaGUgbnVtYmVyIG9mIGNvbXBvbmVudHMgKGRpbWVuc2lvbnMpIHRvIHByb2plY3QgdGhlIGRhdGEgdG8nIH07XG4gICAgICAgIHRoaXMubkVwb2NocyA9IHsgdWlOYW1lOiAnRXBvY2hzJywgdmFsdWU6IDAsIHRvb2x0aXA6ICdUaGUgbnVtYmVyIG9mIGVwb2NocyB0byBvcHRpbWl6ZSBlbWJlZGRpbmdzIHZpYSBTR0QuIENvbXB1dGVkIGF1dG9tYXRpY2FsbHkgaWYgc2V0IHRvIDAnIH07XG4gICAgICAgIHRoaXMubk5laWdoYm9ycyA9IHsgdWlOYW1lOiAnTmVpZ2hib3JzJywgdmFsdWU6IDE1LCB0b29sdGlwOiAnVGhlIG51bWJlciBvZiBuZWFyZXN0IG5laWdoYm9ycyB0byBjb25zdHJ1Y3QgdGhlIGZ1enp5IG1hbmlmb2xkJyB9O1xuICAgICAgICB0aGlzLnNwcmVhZCA9IHsgdWlOYW1lOiAnU3ByZWFkJywgdmFsdWU6IDEsIHRvb2x0aXA6ICdUaGUgZWZmZWN0aXZlIHNjYWxlIG9mIGVtYmVkZGVkIHBvaW50cywgdXNlZCB3aXRoIG1pbiBkaXN0YW5jZSB0byBjb250cm9sIHRoZSBjbHVtcGVkL2Rpc3BlcnNlZCBuYXR1cmUgb2YgdGhlIGVtYmVkZGluZycgfTtcbiAgICAgICAgdGhpcy5taW5EaXN0ID0geyB1aU5hbWU6ICdNaW4gZGlzdGFuY2UnLCB2YWx1ZTogMC4xLCB0b29sdGlwOiAnVGhlIGVmZmVjdGl2ZSBtaW5pbXVtIGRpc3RhbmNlIGJldHdlZW4gZW1iZWRkZWQgcG9pbnRzLCB1c2VkIHdpdGggc3ByZWFkIHRvIGNvbnRyb2wgdGhlIGNsdW1wZWQvZGlzcGVyc2VkIG5hdHVyZSBvZiB0aGUgZW1iZWRkaW5nJyB9O1xuICAgIH1cbiAgICA7XG59XG5leHBvcnQgY2xhc3MgVFNORU9wdGlvbnMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmVwc2lsb24gPSB7IHVpTmFtZTogJ0Vwc2lsb24nLCB2YWx1ZTogMTAsIHRvb2x0aXA6ICdFcHNpbG9uIGlzIGxlYXJuaW5nIHJhdGUnIH07XG4gICAgICAgIHRoaXMucGVycGxleGl0eSA9IHsgdWlOYW1lOiAnUGVycGxleGl0eScsIHZhbHVlOiAzMCwgdG9vbHRpcDogJ1JvdWdobHkgaG93IG1hbnkgbmVpZ2hib3JzIGVhY2ggcG9pbnQgaW5mbHVlbmNlcycgfTtcbiAgICAgICAgdGhpcy5kaW0gPSB7IHVpTmFtZTogJ0RpbWVuc2lvbmFsaXR5JywgdmFsdWU6IDIsIHRvb2x0aXA6ICdEaW1lbnNpb25hbGl0eSBvZiB0aGUgZW1iZWRkaW5nJyB9O1xuICAgIH1cbiAgICA7XG59XG4vKiogQWJzdHJhY3QgZGltZW5zaW9uYWxpdHkgcmVkdWNlciAqL1xuY2xhc3MgUmVkdWNlciB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLmRhdGEgPSBvcHRpb25zLmRhdGE7XG4gICAgfVxufVxuLyoqIHQtU05FIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbi4gKi9cbmNsYXNzIFRTTkVSZWR1Y2VyIGV4dGVuZHMgUmVkdWNlciB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBUU05FUmVkdWNlci5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IG9wdGlvbnMgT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBAbWVtYmVyb2YgVFNORVJlZHVjZXJcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLnJlZHVjZXIgPSBuZXcgVFNORShvcHRpb25zKTtcbiAgICAgICAgdGhpcy5pdGVyYXRpb25zID0gb3B0aW9ucz8uaXRlcmF0aW9ucyA/PyAxMDA7XG4gICAgICAgIHRoaXMuZGlzdGFuY2VGbmFtZSA9IG9wdGlvbnMuZGlzdGFuY2VGbmFtZTtcbiAgICAgICAgdGhpcy5kaXN0YW5jZUZuID0gb3B0aW9ucy5kaXN0YW5jZUZuO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbWJlZHMgdGhlIGRhdGEgZ2l2ZW4gaW50byB0aGUgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIHQtU05FIG1ldGhvZC5cXFxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3BhcmFsbGVsRGlzdGFuY2VXb3JrZXJzXSBXaGV0aGVyIHRvIHVzZSBwYXJhbGxlbCBkaXN0YW5jZSB3b3JrZXJzLlxuICAgICAqIEByZXR1cm4ge2FueX0gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcgYW5kIGRpc3RhbmNlIG1hdHJpeCB3aGVyZSBhcHBsaWNhYmxlLlxuICAgICAqL1xuICAgIGFzeW5jIHRyYW5zZm9ybShwYXJhbGxlbERpc3RhbmNlV29ya2Vycykge1xuICAgICAgICBjb25zdCBkaXN0YW5jZSA9IHBhcmFsbGVsRGlzdGFuY2VXb3JrZXJzID8gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1hdHJpeFNlcnZpY2UgPSBuZXcgRGlzdGFuY2VNYXRyaXhTZXJ2aWNlKHRydWUsIGZhbHNlKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlzdCA9IGF3YWl0IG1hdHJpeFNlcnZpY2UuY2FsYyh0aGlzLmRhdGEsIHRoaXMuZGlzdGFuY2VGbmFtZSk7XG4gICAgICAgICAgICAgICAgbWF0cml4U2VydmljZS50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgbWF0cml4U2VydmljZS50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSgpIDpcbiAgICAgICAgICAgICgoKSA9PiB7IGNvbnN0IHJldCA9IERpc3RhbmNlTWF0cml4LmNhbGModGhpcy5kYXRhLCAoYSwgYikgPT4gdGhpcy5kaXN0YW5jZUZuKGEsIGIpKTsgcmV0Lm5vcm1hbGl6ZSgpOyByZXR1cm4gcmV0LmRhdGE7IH0pKCk7XG4gICAgICAgIGNvbnN0IG1hdHJpeFByb3h5ID0gZGlzdGFuY2VNYXRyaXhQcm94eShkaXN0YW5jZSwgdGhpcy5kYXRhLmxlbmd0aCk7XG4gICAgICAgIHRoaXMucmVkdWNlci5pbml0RGF0YURpc3QobWF0cml4UHJveHkpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaXRlcmF0aW9uczsgKytpKVxuICAgICAgICAgICAgdGhpcy5yZWR1Y2VyLnN0ZXAoKTsgLy8gZXZlcnkgdGltZSB5b3UgY2FsbCB0aGlzLCBzb2x1dGlvbiBnZXRzIGJldHRlclxuICAgICAgICByZXR1cm4geyBkaXN0YW5jZTogZGlzdGFuY2UsIGVtYmVkZGluZzogdGhpcy5yZWR1Y2VyLmdldFNvbHV0aW9uKCkgfTtcbiAgICB9XG59XG4vKipcbiAqIEltcGxlbWVudHMgVU1BUCBkaW1lbnNpb25hbGl0eSByZWR1Y3Rpb24uXG4gKlxuICogQGNsYXNzIFVNQVBSZWR1Y2VyXG4gKiBAZXh0ZW5kcyB7UmVkdWNlcn1cbiAqL1xuY2xhc3MgVU1BUFJlZHVjZXIgZXh0ZW5kcyBSZWR1Y2VyIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFVNQVBSZWR1Y2VyLlxuICAgICAqIEBwYXJhbSB7T3B0aW9uc30gb3B0aW9ucyBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIEBtZW1iZXJvZiBVTUFQUmVkdWNlclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIGFzc2VydCgnZGlzdGFuY2VGbmFtZScgaW4gb3B0aW9ucyk7XG4gICAgICAgIGFzc2VydCgnZGlzdGFuY2VGbicgaW4gb3B0aW9ucyk7XG4gICAgICAgIHRoaXMuZGlzdGFuY2VGbkFyZ3MgPSBvcHRpb25zPy5kaXN0YW5jZUZuQXJncztcbiAgICAgICAgdGhpcy5kaXN0YW5jZUZuID0gb3B0aW9ucy5kaXN0YW5jZUZuO1xuICAgICAgICB0aGlzLnVzaW5nU3BhcnNlTWF0cml4ID0gISFvcHRpb25zLnVzaW5nU3BhcnNlTWF0cml4IHx8ICEhb3B0aW9ucy5zcGFyc2VNYXRyaXg7XG4gICAgICAgIHRoaXMuc3BhcnNlTWF0cml4VGhyZXNob2xkID0gb3B0aW9ucy5zcGFyc2VNYXRyaXhUaHJlc2hvbGQgPz8gMC44O1xuICAgICAgICB0aGlzLnRyYW5zZmVyZWRTcGFyc2VNYXRyaXggPSBvcHRpb25zLnNwYXJzZU1hdHJpeDtcbiAgICAgICAgdGhpcy5wcm9ncmVzc0Z1bmMgPSBvcHRpb25zLnByb2dyZXNzRnVuYztcbiAgICAgICAgdGhpcy5kaXN0YW5jZUZuYW1lID0gb3B0aW9ucy5kaXN0YW5jZUZuYW1lO1xuICAgICAgICB0aGlzLmRtSW5kZXhGdW5jID0gZG1MaW5lYXJJbmRleCh0aGlzLmRhdGEubGVuZ3RoKTtcbiAgICAgICAgLy9VbWFwIHVzZXMgdmVjdG9yIGluZGV4aW5nLCBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSBhbiBhcnJheSBvZiB2ZWN0b3JzIGFzIGluZGVjZXMuXG4gICAgICAgIHRoaXMudmVjdG9ycyA9IG5ldyBBcnJheSh0aGlzLmRhdGEubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaSkgPT4gaSk7XG4gICAgICAgIHRoaXMudXNpbmdEaXN0YW5jZU1hdHJpeCA9ICEoKCFvcHRpb25zLnByZUNhbGN1bGF0ZURpc3RhbmNlTWF0cml4ICYmIHRoaXMuZGF0YS5sZW5ndGggPiBNQVhfRElTVEFOQ0VfTUFUUklYX1JPV1MpXG4gICAgICAgICAgICB8fCB0aGlzLnVzaW5nU3BhcnNlTWF0cml4KTtcbiAgICAgICAgaWYgKHRoaXMudXNpbmdEaXN0YW5jZU1hdHJpeClcbiAgICAgICAgICAgIG9wdGlvbnMuZGlzdGFuY2VGbiA9IHRoaXMuX2VuY29kZWREaXN0YW5jZU1hdHJpeC5iaW5kKHRoaXMpO1xuICAgICAgICBlbHNlIGlmICh0aGlzLnVzaW5nU3BhcnNlTWF0cml4KVxuICAgICAgICAgICAgb3B0aW9ucy5kaXN0YW5jZUZuID0gdGhpcy5fZW5jb2RlZFNwYXJzZU1hdHJpeC5iaW5kKHRoaXMpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBvcHRpb25zLmRpc3RhbmNlRm4gPSB0aGlzLl9lbmNvZGVkRGlzdGFuY2UuYmluZCh0aGlzKTtcbiAgICAgICAgaWYgKHRoaXMuZGF0YS5sZW5ndGggPCAxNSlcbiAgICAgICAgICAgIG9wdGlvbnMubk5laWdoYm9ycyA9IHRoaXMuZGF0YS5sZW5ndGggLSAxO1xuICAgICAgICB0aGlzLnJlZHVjZXIgPSBuZXcgVU1BUChvcHRpb25zKTtcbiAgICAgICAgLy8gdGhpcy5yZWR1Y2VyLmRpc3RhbmNlRm4gPSB0aGlzLl9lbmNvZGVkRGlzdGFuY2UuYmluZCh0aGlzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGRpc3RhbmNlIHdyYXBwZXIgdG8gaGF2ZSBudW1lcmljIGlucHV0cyBpbnN0ZWFkIG9mIHN0cmluZyBvbmVzLlxuICAgICAqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIEBwYXJhbSB7bnVtYmVyW119IGEgVGhlIGZpcnN0IGl0ZW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJbXX0gYiBUaGUgZmlyc3QgaXRlbS5cbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IERpc3RhbmNlIG1ldHJpYy5cbiAgICAgKiBAbWVtYmVyb2YgVU1BUFJlZHVjZXJcbiAgICAgKi9cbiAgICBfZW5jb2RlZERpc3RhbmNlTWF0cml4KGEsIGIpIHtcbiAgICAgICAgaWYgKGEgPT09IGIpXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgaWYgKGEgPiBiKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGlzdGFuY2VNYXRyaXhbdGhpcy5kbUluZGV4RnVuYyhiLCBhKV07XG4gICAgICAgIHJldHVybiB0aGlzLmRpc3RhbmNlTWF0cml4W3RoaXMuZG1JbmRleEZ1bmMoYSwgYildO1xuICAgIH1cbiAgICBfZW5jb2RlZFNwYXJzZU1hdHJpeChhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNwYXJzZU1hdHJpeC5nZXQoYSk/LmdldChiKSA/PyB0aGlzLnNwYXJzZU1hdHJpeC5nZXQoYik/LmdldChhKSA/PyAxO1xuICAgIH1cbiAgICBfZW5jb2RlZERpc3RhbmNlKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzdGFuY2VGbih0aGlzLmRhdGFbYV0sIHRoaXMuZGF0YVtiXSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEVtYmVkcyB0aGUgZGF0YSBnaXZlbiBpbnRvIHRoZSB0d28tZGltZW5zaW9uYWwgc3BhY2UgdXNpbmcgVU1BUCBtZXRob2QuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbcGFyYWxsZWxEaXN0YW5jZVdvcmtlcnNdIFdoZXRoZXIgdG8gdXNlIHBhcmFsbGVsIGRpc3RhbmNlIG1hdHJpeCB3b3JrZXJzLlxuICAgICAqIEByZXR1cm4ge2FueX0gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcuXG4gICAgICovXG4gICAgYXN5bmMgdHJhbnNmb3JtKHBhcmFsbGVsRGlzdGFuY2VXb3JrZXJzKSB7XG4gICAgICAgIGlmICh0aGlzLnVzaW5nRGlzdGFuY2VNYXRyaXgpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzdGFuY2VNYXRyaXggPSBwYXJhbGxlbERpc3RhbmNlV29ya2VycyA/IGF3YWl0IChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF0cml4U2VydmljZSA9IG5ldyBEaXN0YW5jZU1hdHJpeFNlcnZpY2UodHJ1ZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc3QgPSBhd2FpdCBtYXRyaXhTZXJ2aWNlLmNhbGModGhpcy5kYXRhLCB0aGlzLmRpc3RhbmNlRm5hbWUsIHRydWUsIHRoaXMuZGlzdGFuY2VGbkFyZ3MpO1xuICAgICAgICAgICAgICAgICAgICBtYXRyaXhTZXJ2aWNlLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGlzdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgbWF0cml4U2VydmljZS50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSgpIDpcbiAgICAgICAgICAgICAgICAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXQgPSBEaXN0YW5jZU1hdHJpeC5jYWxjKHRoaXMuZGF0YSwgKGEsIGIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLmRpc3RhbmNlRm4oYSwgYik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQuZGF0YTtcbiAgICAgICAgICAgICAgICB9KSgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMudXNpbmdTcGFyc2VNYXRyaXgpIHtcbiAgICAgICAgICAgIGNvbnNvbGUudGltZSgnc3BhcnNlIG1hdHJpeCcpO1xuICAgICAgICAgICAgbGV0IHJlcyA9IHRoaXMudHJhbnNmZXJlZFNwYXJzZU1hdHJpeCA/P1xuICAgICAgICAgICAgICAgIGF3YWl0IG5ldyBTcGFyc2VNYXRyaXhTZXJ2aWNlKCkuY2FsYyh0aGlzLmRhdGEsIHRoaXMuZGlzdGFuY2VGbmFtZSwgdGhpcy5zcGFyc2VNYXRyaXhUaHJlc2hvbGQsIHRoaXMuZGlzdGFuY2VGbkFyZ3MpO1xuICAgICAgICAgICAgY29uc29sZS50aW1lRW5kKCdzcGFyc2UgbWF0cml4Jyk7XG4gICAgICAgICAgICBjb25zdCBrbm5SZXMgPSBnZXRLbm5HcmFwaChyZXMuaSwgcmVzLmosIHJlcy5kaXN0YW5jZSwgdGhpcy5yZWR1Y2VyLm5laWdoYm9ycywgdGhpcy5kYXRhLmxlbmd0aCk7XG4gICAgICAgICAgICB0aGlzLnJlZHVjZXIuc2V0UHJlY29tcHV0ZWRLTk4oa25uUmVzLmtubkluZGV4ZXMsIGtublJlcy5rbm5EaXN0YW5jZXMpO1xuICAgICAgICAgICAgY29uc29sZS50aW1lKCdzcGFyc2UgbWF0cml4IHRvIG1hcCcpO1xuICAgICAgICAgICAgdGhpcy5zcGFyc2VNYXRyaXggPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlcy5pLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3QgPSByZXMuaVtpXTtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWNvbmQgPSByZXMualtpXTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IHJlcy5kaXN0YW5jZVtpXTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3BhcnNlTWF0cml4LmhhcyhmaXJzdCkpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3BhcnNlTWF0cml4LnNldChmaXJzdCwgbmV3IE1hcCgpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNwYXJzZU1hdHJpeC5nZXQoZmlyc3QpLnNldChzZWNvbmQsIGRpc3RhbmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnNvbGUudGltZUVuZCgnc3BhcnNlIG1hdHJpeCB0byBtYXAnKTtcbiAgICAgICAgICAgIHJlcy5kaXN0YW5jZSA9IG51bGw7XG4gICAgICAgICAgICByZXMuaSA9IG51bGw7XG4gICAgICAgICAgICByZXMuaiA9IG51bGw7XG4gICAgICAgICAgICByZXMgPSBudWxsO1xuICAgICAgICAgICAgLy8gbmVlZGVkIHNvIHRoYXQgZ2FyYmFnZSBjb2xsZWN0b3IgY2FuIGZyZWUgbWVtb3J5IGZyb20gZGlzdGFuY2UgbWF0cml4XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVtYmVkZGluZyA9IGF3YWl0IHRoaXMucmVkdWNlci5maXRBc3luYyh0aGlzLnZlY3RvcnMsIChlcG9jKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9ncmVzc0Z1bmMpXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzc0Z1bmMoZXBvYywgdGhpcy5yZWR1Y2VyLmdldE5FcG9jaHMoKSwgdGhpcy5yZWR1Y2VyLmdldEVtYmVkZGluZygpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGFycmF5Q2FzdDJDb29yZGluYXRlcyhkYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEFycmF5KGRhdGEubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaSkgPT4gKFZlY3Rvci5mcm9tKGRhdGFbaV0pKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgZW1iZWRkaW5nOiBhcnJheUNhc3QyQ29vcmRpbmF0ZXMoZW1iZWRkaW5nKSwgLi4uKHRoaXMuZGlzdGFuY2VNYXRyaXggPyB7IGRpc3RhbmNlOiB0aGlzLmRpc3RhbmNlTWF0cml4IH0gOiB7fSkgfTtcbiAgICB9XG59XG4vKipcbiAqIEltcGxlbWVudHMgb3JpZ2luYWwgU1BFIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbi5cbiAqXG4gKiBAY2xhc3MgU1BFUmVkdWNlclxuICogQGV4dGVuZHMge1JlZHVjZXJ9XG4gKi9cbmNsYXNzIFNQRVJlZHVjZXIgZXh0ZW5kcyBSZWR1Y2VyIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFNQRVJlZHVjZXIuXG4gICAgICogQHBhcmFtIHtPcHRpb25zfSBvcHRpb25zIE9wdGlvbnMgdG8gcGFzcyB0byB0aGUgY29uc3RydWN0b3IuXG4gICAgICogQG1lbWJlcm9mIFNQRVJlZHVjZXJcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLnJlZHVjZXIgPSBuZXcgU1BFQmFzZShvcHRpb25zKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSBkYXRhIGdpdmVuIGludG8gdGhlIHR3by1kaW1lbnNpb25hbCBzcGFjZSB1c2luZyB0aGUgb3JpZ2luYWwgU1BFIG1ldGhvZC5cbiAgICAgKiBAcmV0dXJuIHthbnl9IENhcnRlc2lhbiBjb29yZGluYXRlIG9mIHRoaXMgZW1iZWRkaW5nIGFuZCBkaXN0YW5jZSBtYXRyaXggd2hlcmUgYXBwbGljYWJsZS5cbiAgICAgKi9cbiAgICBhc3luYyB0cmFuc2Zvcm0oKSB7XG4gICAgICAgIGNvbnN0IGVtYiA9IGF3YWl0IHRoaXMucmVkdWNlci5lbWJlZCh0aGlzLmRhdGEpO1xuICAgICAgICByZXR1cm4geyBkaXN0YW5jZTogdGhpcy5yZWR1Y2VyLmRpc3RhbmNlLCBlbWJlZGRpbmc6IGVtYiB9O1xuICAgIH1cbn1cbi8qKlxuICogSW1wbGVtZW50cyBtb2RpZmllZCBTUEUgZGltZW5zaW9uYWxpdHkgcmVkdWN0aW9uLlxuICpcbiAqIEBjbGFzcyBQU1BFUmVkdWNlclxuICogQGV4dGVuZHMge1JlZHVjZXJ9XG4gKi9cbmNsYXNzIFBTUEVSZWR1Y2VyIGV4dGVuZHMgUmVkdWNlciB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBQU1BFUmVkdWNlci5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IG9wdGlvbnMgT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBAbWVtYmVyb2YgUFNQRVJlZHVjZXJcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLnJlZHVjZXIgPSBuZXcgUFNQRUJhc2Uob3B0aW9ucyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEVtYmVkcyB0aGUgZGF0YSBnaXZlbiBpbnRvIHRoZSB0d28tZGltZW5zaW9uYWwgc3BhY2UgdXNpbmcgdGhlIG1vZGlmaWVkIFNQRSBtZXRob2QuXG4gICAgICogQHJldHVybiB7YW55fSBDYXJ0ZXNpYW4gY29vcmRpbmF0ZSBvZiB0aGlzIGVtYmVkZGluZyBhbmQgZGlzdGFuY2UgbWF0cml4IHdoZXJlIGFwcGxpY2FibGUuXG4gICAgICovXG4gICAgYXN5bmMgdHJhbnNmb3JtKCkge1xuICAgICAgICBjb25zdCBlbWIgPSBhd2FpdCB0aGlzLnJlZHVjZXIuZW1iZWQodGhpcy5kYXRhKTtcbiAgICAgICAgcmV0dXJuIHsgZGlzdGFuY2U6IHRoaXMucmVkdWNlci5kaXN0YW5jZSwgZW1iZWRkaW5nOiBlbWIgfTtcbiAgICB9XG59XG4vKipcbiAqIEltcGxlbWVudHMgb3JpZ2luYWwgU1BFIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbi5cbiAqXG4gKiBAY2xhc3MgT3JpZ2luYWxTUEVSZWR1Y2VyXG4gKiBAZXh0ZW5kcyB7UmVkdWNlcn1cbiAqL1xuY2xhc3MgT3JpZ2luYWxTUEVSZWR1Y2VyIGV4dGVuZHMgUmVkdWNlciB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBPcmlnaW5hbFNQRVJlZHVjZXIuXG4gICAgICogQHBhcmFtIHtPcHRpb25zfSBvcHRpb25zIE9wdGlvbnMgdG8gcGFzcyB0byB0aGUgY29uc3RydWN0b3IuXG4gICAgICogQG1lbWJlcm9mIE9yaWdpbmFsU1BFUmVkdWNlclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMucmVkdWNlciA9IG5ldyBPcmlnaW5hbFNQRShvcHRpb25zKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSBkYXRhIGdpdmVuIGludG8gdGhlIHR3by1kaW1lbnNpb25hbCBzcGFjZSB1c2luZyB0aGUgb3JpZ2luYWwgU1BFIG1ldGhvZC5cbiAgICAgKiBAcmV0dXJuIHthbnl9IENhcnRlc2lhbiBjb29yZGluYXRlIG9mIHRoaXMgZW1iZWRkaW5nIGFuZCBkaXN0YW5jZSBtYXRyaXggd2hlcmUgYXBwbGljYWJsZS5cbiAgICAgKi9cbiAgICBhc3luYyB0cmFuc2Zvcm0oKSB7XG4gICAgICAgIGNvbnN0IGVtYiA9IGF3YWl0IHRoaXMucmVkdWNlci5lbWJlZCh0aGlzLmRhdGEpO1xuICAgICAgICByZXR1cm4geyBkaXN0YW5jZTogdGhpcy5yZWR1Y2VyLmRpc3RhbmNlLCBlbWJlZGRpbmc6IGVtYiB9O1xuICAgIH1cbn1cbmNvbnN0IEF2YWlsYWJsZVJlZHVjZXJzID0ge1xuICAgICdVTUFQJzogVU1BUFJlZHVjZXIsXG4gICAgJ3QtU05FJzogVFNORVJlZHVjZXIsXG4gICAgJ1NQRSc6IFNQRVJlZHVjZXIsXG4gICAgJ3BTUEUnOiBQU1BFUmVkdWNlcixcbiAgICAnT3JpZ2luYWxTUEUnOiBPcmlnaW5hbFNQRVJlZHVjZXIsXG59O1xuLyoqXG4gKiBVbmlmaWVkIGNsYXNzIGltcGxlbWVudGluZyBkaWZmZXJlbnQgZGltZW5zaW9uYWxpdHkgcmVkdWN0aW9uIG1ldGhvZHMuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIERpbWVuc2lvbmFsaXR5UmVkdWNlclxuICovXG5leHBvcnQgY2xhc3MgRGltZW5zaW9uYWxpdHlSZWR1Y2VyIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIERpbWVuc2lvbmFsaXR5UmVkdWNlci5cbiAgICAgKiBAcGFyYW0ge2FueVtdfSBkYXRhIFZlY3RvcnMgdG8gZW1iZWQuXG4gICAgICogQHBhcmFtIHtLbm93bk1ldGhvZHN9IG1ldGhvZCBFbWJlZGRpbmcgbWV0aG9kIHRvIGJlIGFwcGxpZWRcbiAgICAgKiBAcGFyYW0ge0tub3duTWV0cmljc30gbWV0cmljIERpc3RhbmNlIG1ldHJpYyB0byBiZSBjb21wdXRlZCBiZXR3ZWVuIGVhY2ggb2YgdGhlIHZlY3RvcnMuXG4gICAgICogQHBhcmFtIHtPcHRpb25zfSBbb3B0aW9uc10gT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBpbXBsZW1lbnRpbmcgZW1iZWRkZXJzLlxuICAgICAqIEBtZW1iZXJvZiBEaW1lbnNpb25hbGl0eVJlZHVjZXJcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihkYXRhLCBtZXRob2QsIG1ldHJpYywgb3B0aW9ucykge1xuICAgICAgICBjb25zdCBtZWFzdXJlID0gbmV3IE1lYXN1cmUobWV0cmljKS5nZXRNZWFzdXJlKG9wdGlvbnM/LmRpc3RhbmNlRm5BcmdzKTtcbiAgICAgICAgbGV0IHNwZWNPcHRpb25zID0ge307XG4gICAgICAgIGlmIChpc0JpdEFycmF5TWV0cmljKG1ldHJpYykpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSlcbiAgICAgICAgICAgICAgICBkYXRhW2ldID0gbmV3IEJpdEFycmF5KGRhdGFbaV0uX2RhdGEsIGRhdGFbaV0uX2xlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1ldGhvZCA9PSAnVU1BUCcpIHtcbiAgICAgICAgICAgIHNwZWNPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIC4uLnsgZGF0YTogZGF0YSB9LFxuICAgICAgICAgICAgICAgIC4uLnsgZGlzdGFuY2VGbjogbWVhc3VyZSB9LFxuICAgICAgICAgICAgICAgIC4uLnsgZGlzdGFuY2VGbmFtZTogbWV0cmljIH0sXG4gICAgICAgICAgICAgICAgLi4ueyBuRXBvY2hzOiBvcHRpb25zPy5jeWNsZXMgfSxcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtZXRob2QgPT0gJ3QtU05FJykge1xuICAgICAgICAgICAgc3BlY09wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgLi4ueyBkYXRhOiBkYXRhIH0sXG4gICAgICAgICAgICAgICAgLi4ueyBkaXN0YW5jZUZuOiBtZWFzdXJlIH0sXG4gICAgICAgICAgICAgICAgLi4ueyBkaXN0YW5jZUZuYW1lOiBtZXRyaWMgfSxcbiAgICAgICAgICAgICAgICAuLi57IGl0ZXJhdGlvbnM6IG9wdGlvbnM/LmN5Y2xlcyA/PyB1bmRlZmluZWQgfSxcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtZXRob2QgPT0gJ1NQRScpIHtcbiAgICAgICAgICAgIHNwZWNPcHRpb25zID0geyAuLi57IGRhdGE6IGRhdGEgfSwgLi4ueyBkaXN0YW5jZTogbWVhc3VyZSB9LCBkaXN0YW5jZUZ1bmN0aW9uTmFtZTogbWV0cmljLCAuLi5vcHRpb25zIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzcGVjT3B0aW9ucyA9IHsgLi4ueyBkYXRhOiBkYXRhIH0sIC4uLnsgZGlzdGFuY2U6IG1lYXN1cmUgfSwgZGlzdGFuY2VGdW5jdGlvbk5hbWU6IG1ldHJpYywgLi4ub3B0aW9ucyB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVkdWNlciA9IG5ldyBBdmFpbGFibGVSZWR1Y2Vyc1ttZXRob2RdKHNwZWNPcHRpb25zKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSBkYXRhIGdpdmVuIGludG8gdGhlIHR3by1kaW1lbnNpb25hbCBzcGFjZSB1c2luZyB0aGUgY2hvc2VuIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gdHJhbnNwb3NlIFdoZXRoZXIgdG8gdHJhbnNmb3JtIGNvb3JkaW5hdGVzIHRvIGhhdmUgY29sdW1ucy1maXJzdCBvcmllbnRhdGlvbi5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHBhcmFsbGVsRGlzdGFuY2VXb3JrZXJzIFdoZXRoZXIgdG8gdXNlIHBhcmFsbGVsIGRpc3RhbmNlIGNvbXB1dGF0aW9uLlxuICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZW1iZWRkaW5nIG1ldGhvZCB3YXMgbm90IGZvdW5kLlxuICAgICAqIEByZXR1cm4ge2FueX0gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcgYW5kIGRpc3RhbmNlIG1hdHJpeCB3aGVyZSBhcHBsaWNhYmxlLlxuICAgICAqIEBtZW1iZXJvZiBEaW1lbnNpb25hbGl0eVJlZHVjZXJcbiAgICAgKi9cbiAgICBhc3luYyB0cmFuc2Zvcm0odHJhbnNwb3NlID0gZmFsc2UsIHBhcmFsbGVsRGlzdGFuY2VXb3JrZXJzKSB7XG4gICAgICAgIGlmICh0aGlzLnJlZHVjZXIgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVkdWNlciB3YXMgbm90IGRlZmluZWQuJyk7XG4gICAgICAgIGxldCB7IGVtYmVkZGluZywgZGlzdGFuY2UgfSA9IGF3YWl0IHRoaXMucmVkdWNlci50cmFuc2Zvcm0ocGFyYWxsZWxEaXN0YW5jZVdvcmtlcnMpO1xuICAgICAgICBpZiAodHJhbnNwb3NlKVxuICAgICAgICAgICAgZW1iZWRkaW5nID0gdHJhbnNwb3NlTWF0cml4KGVtYmVkZGluZyk7XG4gICAgICAgIHJldHVybiB7IGRpc3RhbmNlOiBkaXN0YW5jZSwgZW1iZWRkaW5nOiBlbWJlZGRpbmcgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBtZXRyaWNzIGF2YWlsYWJsZSBieSB0eXBlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBdmFpbGFibGVEYXRhVHlwZXN9IHR5cGVOYW1lIHR5cGUgbmFtZVxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSBNZXRyaWMgbmFtZXMgd2hpY2ggZXhwZWN0cyB0aGUgZ2l2ZW4gZGF0YSB0eXBlXG4gICAgICogQG1lbWJlcm9mIERpbWVuc2lvbmFsaXR5UmVkdWNlclxuICAgICAqL1xuICAgIHN0YXRpYyBhdmFpbGFibGVNZXRyaWNzQnlUeXBlKHR5cGVOYW1lKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzW3R5cGVOYW1lXSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZGltZW5zaW9uYWxpdHkgcmVkdWN0aW9uIG1ldGhvZHMgYXZhaWxhYmxlLlxuICAgICAqXG4gICAgICogQHJlYWRvbmx5XG4gICAgICogQG1lbWJlcm9mIERpbWVuc2lvbmFsaXR5UmVkdWNlclxuICAgICAqL1xuICAgIHN0YXRpYyBnZXQgYXZhaWxhYmxlTWV0aG9kcygpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKEF2YWlsYWJsZVJlZHVjZXJzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBtZXRyaWNzIGF2YWlsYWJsZS5cbiAgICAgKlxuICAgICAqIEByZWFkb25seVxuICAgICAqIEBtZW1iZXJvZiBEaW1lbnNpb25hbGl0eVJlZHVjZXJcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0IGF2YWlsYWJsZU1ldHJpY3MoKSB7XG4gICAgICAgIGxldCBhbnMgPSBbXTtcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhBdmFpbGFibGVNZXRyaWNzKS5mb3JFYWNoKChvYmopID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFycmF5ID0gT2JqZWN0LnZhbHVlcyhvYmopO1xuICAgICAgICAgICAgYW5zID0gWy4uLmFucywgLi4uYXJyYXldO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGFucztcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbVZrZFdObExXUnBiV1Z1YzJsdmJtRnNhWFI1TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2ljbVZrZFdObExXUnBiV1Z1YzJsdmJtRnNhWFI1TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJMRFJDUVVFMFFqdEJRVU0xUWl4UFFVRlBMRVZCUVVNc1NVRkJTU3hGUVVGRExFMUJRVTBzWlVGQlpTeERRVUZETzBGQlEyNURMRTlCUVU4c1JVRkhUQ3hOUVVGTkxFZEJSMUFzVFVGQlRTeHBSRUZCYVVRc1EwRkJRenRCUVVONlJDeFBRVUZQTEVWQlEwd3NaVUZCWlN4RlFVTm1MRTFCUVUwc1IwRkRVQ3hOUVVGTkxHbEVRVUZwUkN4RFFVRkRPMEZCUTNwRUxFOUJRVThzUlVGQlF5eFBRVUZQTEVWQlFVVXNVVUZCVVN4RlFVRkZMRmRCUVZjc1JVRkJReXhOUVVGTkxFOUJRVThzUTBGQlF6dEJRVU55UkN4UFFVRlBMRVZCUVVNc1QwRkJUeXhGUVVGblFpeG5Ra0ZCWjBJc1JVRkROME1zWjBKQlFXZENMRVZCUVhGQ0xFMUJRVTBzSzBKQlFTdENMRU5CUVVNN1FVRkROMFVzVDBGQlR5eFJRVUZSTEUxQlFVMHNlVU5CUVhsRExFTkJRVU03UVVGREwwUXNUMEZCVHl4RlFVRnBRaXhKUVVGSkxFVkJRVU1zVFVGQlRTeFJRVUZSTEVOQlFVTTdRVUZETlVNc1QwRkJUeXhGUVVGRExHTkJRV01zUlVGQlJTeHhRa0ZCY1VJc1JVRkJSU3h0UWtGQmJVSXNSVUZCUlN4aFFVRmhMRVZCUVVNc1RVRkJUU3h0UWtGQmJVSXNRMEZCUXp0QlFVTTFSeXhQUVVGUExFVkJRVU1zYlVKQlFXMUNMRVZCUVVNc1RVRkJUU3g1UTBGQmVVTXNRMEZCUXp0QlFVTTFSU3hQUVVGUExFVkJRVU1zVjBGQlZ5eEZRVUZETEUxQlFVMHNhVUpCUVdsQ0xFTkJRVU03UVVGak5VTXNUVUZCVFN4RFFVRk9MRWxCUVZrc2JVSkJSMWc3UVVGSVJDeFhRVUZaTEcxQ1FVRnRRanRKUVVNM1FpeHZRMEZCWVN4RFFVRkJPMGxCUTJJc2MwTkJRV1VzUTBGQlFUdEJRVU5xUWl4RFFVRkRMRVZCU0Zjc2JVSkJRVzFDTEV0QlFXNUNMRzFDUVVGdFFpeFJRVWM1UWp0QlFUWkNSRHM3UjBGRlJ6dEJRVU5JTEUxQlFVMHNRMEZCUXl4TlFVRk5MSGRDUVVGM1FpeEhRVUZITEV0QlFVc3NRMEZCUXp0QlFVVTVReXhOUVVGTkxFOUJRVThzVjBGQlZ6dEpRVkYwUWp0UlFWQkJMR2xDUVVGWkxFZEJRWFZDTEVWQlFVTXNUVUZCVFN4RlFVRkZMR1ZCUVdVc1JVRkJSU3hMUVVGTExFVkJRVVVzUTBGQlF5eEZRVUZGTEU5QlFVOHNSVUZCUlN3d1JFRkJNRVFzUlVGQlF5eERRVUZETzFGQlF6VkpMR2RDUVVGWExFZEJRWFZDTEVWQlFVTXNUVUZCVFN4RlFVRkZMRmxCUVZrc1JVRkJSU3hMUVVGTExFVkJRVVVzUTBGQlF5eEZRVUZGTEU5QlFVOHNSVUZCUlN3NFJFRkJPRVFzUlVGQlF5eERRVUZETzFGQlF6VkpMRmxCUVU4c1IwRkJkVUlzUlVGQlF5eE5RVUZOTEVWQlFVVXNVVUZCVVN4RlFVRkZMRXRCUVVzc1JVRkJSU3hEUVVGRExFVkJRVVVzVDBGQlR5eEZRVUZGTEhsR1FVRjVSaXhGUVVGRExFTkJRVU03VVVGREwwb3NaVUZCVlN4SFFVRjFRaXhGUVVGRExFMUJRVTBzUlVGQlJTeFhRVUZYTEVWQlFVVXNTMEZCU3l4RlFVRkZMRVZCUVVVc1JVRkJSU3hQUVVGUExFVkJRVVVzYVVWQlFXbEZMRVZCUVVNc1EwRkJRenRSUVVNNVNTeFhRVUZOTEVkQlFYVkNMRVZCUVVNc1RVRkJUU3hGUVVGRkxGRkJRVkVzUlVGQlJTeExRVUZMTEVWQlFVVXNRMEZCUXl4RlFVRkZMRTlCUVU4c1JVRkJSU3g1U0VGQmVVZ3NSVUZCUXl4RFFVRkRPMUZCUXpsTUxGbEJRVThzUjBGQmRVSXNSVUZCUXl4TlFVRk5MRVZCUVVVc1kwRkJZeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEhRVUZITEVWQlFVVXNUMEZCVHl4RlFVRkZMRzFKUVVGdFNTeEZRVUZETEVOQlFVTTdTVUZGYkUwc1EwRkJRenRKUVVGQkxFTkJRVU03UTBGRGJFSTdRVUZGUkN4TlFVRk5MRTlCUVU4c1YwRkJWenRKUVV0MFFqdFJRVXBCTEZsQlFVOHNSMEZCZFVJc1JVRkJReXhOUVVGTkxFVkJRVVVzVTBGQlV5eEZRVUZGTEV0QlFVc3NSVUZCUlN4RlFVRkZMRVZCUVVVc1QwRkJUeXhGUVVGRkxEQkNRVUV3UWl4RlFVRkRMRU5CUVVNN1VVRkRiRWNzWlVGQlZTeEhRVUYxUWl4RlFVRkRMRTFCUVUwc1JVRkJSU3haUVVGWkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVWQlFVVXNSVUZCUlN4UFFVRlBMRVZCUVVVc2EwUkJRV3RFTEVWQlFVTXNRMEZCUXp0UlFVTm9TU3hSUVVGSExFZEJRWFZDTEVWQlFVTXNUVUZCVFN4RlFVRkZMR2RDUVVGblFpeEZRVUZGTEV0QlFVc3NSVUZCUlN4RFFVRkRMRVZCUVVVc1QwRkJUeXhGUVVGRkxHbERRVUZwUXl4RlFVRkRMRU5CUVVNN1NVRkZOVVlzUTBGQlF6dEpRVUZCTEVOQlFVTTdRMEZEYkVJN1FVRkZSQ3h6UTBGQmMwTTdRVUZEZEVNc1RVRkJaU3hQUVVGUE8wbEJSM0JDTEZsQlFWa3NUMEZCWjBJN1VVRkRNVUlzU1VGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRE8wbEJRek5DTEVOQlFVTTdRMEZMUmp0QlFVVkVMSE5EUVVGelF6dEJRVU4wUXl4TlFVRk5MRmRCUVZrc1UwRkJVU3hQUVVGUE8wbEJUUzlDT3pzN08wOUJTVWM3U1VGRFNDeFpRVUZaTEU5QlFXZENPMUZCUXpGQ0xFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0UlFVTm1MRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkRha01zU1VGQlNTeERRVUZETEZWQlFWVXNSMEZCUnl4UFFVRlBMRVZCUVVVc1ZVRkJWU3hKUVVGSkxFZEJRVWNzUTBGQlF6dFJRVU0zUXl4SlFVRkpMRU5CUVVNc1lVRkJZU3hIUVVGSExFOUJRVThzUTBGQlF5eGhRVUZoTEVOQlFVTTdVVUZETTBNc1NVRkJTU3hEUVVGRExGVkJRVlVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNWVUZCVlN4RFFVRkRPMGxCUTNaRExFTkJRVU03U1VGRlJEczdPenRQUVVsSE8wbEJRMGtzUzBGQlN5eERRVUZETEZOQlFWTXNRMEZCUXl4MVFrRkJhVU03VVVGRGRFUXNUVUZCVFN4UlFVRlJMRWRCUVVjc2RVSkJRWFZDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFbEJRVWtzUlVGQlJUdFpRVU16UkN4TlFVRk5MR0ZCUVdFc1IwRkJSeXhKUVVGSkxIRkNRVUZ4UWl4RFFVRkRMRWxCUVVrc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dFpRVU0zUkN4SlFVRkpPMmRDUVVOR0xFMUJRVTBzU1VGQlNTeEhRVUZITEUxQlFVMHNZVUZCWVN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1EwRkJRenRuUWtGRGNrVXNZVUZCWVN4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRE8yZENRVU14UWl4UFFVRlBMRWxCUVVrc1EwRkJRenRoUVVOaU8xbEJRVU1zVDBGQlR5eERRVUZETEVWQlFVVTdaMEpCUTFZc1lVRkJZU3hEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETzJkQ1FVTXhRaXhOUVVGTkxFTkJRVU1zUTBGQlF6dGhRVU5VTzFGQlEwZ3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8xbEJRMG9zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4TlFVRk5MRWRCUVVjc1IwRkJSeXhqUVVGakxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETEVOQlFVTXNUMEZCVHl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXp0UlFVVXZTQ3hOUVVGTkxGZEJRVmNzUjBGQlJ5eHRRa0ZCYlVJc1EwRkJReXhSUVVGUkxFVkJRVVVzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVOd1JTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmxCUVZrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dFJRVVYyUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZVc1JVRkJSU3hGUVVGRkxFTkJRVU03V1VGRGRFTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEdsRVFVRnBSRHRSUVVWNFJTeFBRVUZQTEVWQlFVTXNVVUZCVVN4RlFVRkZMRkZCUVZFc1JVRkJSU3hUUVVGVExFVkJRVVVzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4WFFVRlhMRVZCUVVVc1JVRkJReXhEUVVGRE8wbEJRM0pGTEVOQlFVTTdRMEZEUmp0QlFWVkVPenM3T3p0SFFVdEhPMEZCUTBnc1RVRkJUU3hYUVVGWkxGTkJRVkVzVDBGQlR6dEpRV012UWpzN096dFBRVWxITzBsQlEwZ3NXVUZCV1N4UFFVRnZRanRSUVVNNVFpeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkRaaXhOUVVGTkxFTkJRVU1zWlVGQlpTeEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTI1RExFMUJRVTBzUTBGQlF5eFpRVUZaTEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkRhRU1zU1VGQlNTeERRVUZETEdOQlFXTXNSMEZCUnl4UFFVRlBMRVZCUVVVc1kwRkJZeXhEUVVGRE8xRkJRemxETEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1QwRkJUeXhEUVVGRExGVkJRVmNzUTBGQlF6dFJRVU4wUXl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVkQlFVY3NRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhwUWtGQmFVSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExGbEJRVmtzUTBGQlF6dFJRVU12UlN4SlFVRkpMRU5CUVVNc2NVSkJRWEZDTEVkQlFVY3NUMEZCVHl4RFFVRkRMSEZDUVVGeFFpeEpRVUZKTEVkQlFVY3NRMEZCUXp0UlFVTnNSU3hKUVVGSkxFTkJRVU1zYzBKQlFYTkNMRWRCUVVjc1QwRkJUeXhEUVVGRExGbEJRVmtzUTBGQlF6dFJRVU51UkN4SlFVRkpMRU5CUVVNc1dVRkJXU3hIUVVGSExFOUJRVThzUTBGQlF5eFpRVUZaTEVOQlFVTTdVVUZGZWtNc1NVRkJTU3hEUVVGRExHRkJRV0VzUjBGQlJ5eFBRVUZQTEVOQlFVTXNZVUZCWXl4RFFVRkRPMUZCUXpWRExFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NZVUZCWVN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEYmtRc2FVWkJRV2xHTzFGQlEycEdMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGNFVXNTVUZCU1N4RFFVRkRMRzFDUVVGdFFpeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExEQkNRVUV3UWl4SlFVRkpMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEhkQ1FVRjNRaXhEUVVGRE8yVkJRelZITEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETzFGQlF6ZENMRWxCUVVrc1NVRkJTU3hEUVVGRExHMUNRVUZ0UWp0WlFVTXhRaXhQUVVGUExFTkJRVU1zVlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXl4elFrRkJjMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1lVRkRla1FzU1VGQlNTeEpRVUZKTEVOQlFVTXNhVUpCUVdsQ08xbEJRemRDTEU5QlFVOHNRMEZCUXl4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6czdXVUZGTVVRc1QwRkJUeXhEUVVGRExGVkJRVlVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUlhoRUxFbEJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1JVRkJSVHRaUVVOMlFpeFBRVUZQTEVOQlFVTXNWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTTFReXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8xRkJRMnBETERoRVFVRTRSRHRKUVVOb1JTeERRVUZETzBsQlJVUTdPenM3T3pzN08wOUJVVWM3U1VGRFR5eHpRa0ZCYzBJc1EwRkJReXhEUVVGVExFVkJRVVVzUTBGQlV6dFJRVU51UkN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8xbEJRMVFzVDBGQlR5eERRVUZETEVOQlFVTTdVVUZEV0N4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRE8xbEJRMUFzVDBGQlR5eEpRVUZKTEVOQlFVTXNZMEZCWlN4RFFVRkRMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRkRVFzVDBGQlR5eEpRVUZKTEVOQlFVTXNZMEZCWlN4RFFVRkRMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRkRVFzUTBGQlF6dEpRVVZUTEc5Q1FVRnZRaXhEUVVGRExFTkJRVk1zUlVGQlJTeERRVUZUTzFGQlEycEVMRTlCUVU4c1NVRkJTU3hEUVVGRExGbEJRV0VzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4WlFVRmhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRGNrWXNRMEZCUXp0SlFVVlRMR2RDUVVGblFpeERRVUZETEVOQlFWTXNSVUZCUlN4RFFVRlRPMUZCUXpkRExFOUJRVThzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU55UkN4RFFVRkRPMGxCUlVRN096czdUMEZKUnp0SlFVTkpMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zZFVKQlFXbERPMUZCUTNSRUxFbEJRVWtzU1VGQlNTeERRVUZETEcxQ1FVRnRRaXhGUVVGRk8xbEJRelZDTEVsQlFVa3NRMEZCUXl4alFVRmpMRWRCUVVjc2RVSkJRWFZDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFbEJRVWtzUlVGQlJUdG5Ra0ZEYUVVc1RVRkJUU3hoUVVGaExFZEJRVWNzU1VGQlNTeHhRa0ZCY1VJc1EwRkJReXhKUVVGSkxFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdaMEpCUXpkRUxFbEJRVWs3YjBKQlEwWXNUVUZCVFN4SlFVRkpMRWRCUVVjc1RVRkJUU3hoUVVGaExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExHRkJRV0VzUlVGQlJTeEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhEUVVGRE8yOUNRVU5vUnl4aFFVRmhMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03YjBKQlF6RkNMRTlCUVU4c1NVRkJTU3hEUVVGRE8ybENRVU5pTzJkQ1FVRkRMRTlCUVU4c1EwRkJReXhGUVVGRk8yOUNRVU5XTEdGQlFXRXNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenR2UWtGRE1VSXNUVUZCVFN4RFFVRkRMRU5CUVVNN2FVSkJRMVE3V1VGRFNDeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1owSkJRMG9zUTBGQlF5eEhRVUZITEVWQlFVVTdiMEpCUTBvc1RVRkJUU3hIUVVGSExFZEJRVWNzWTBGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPM2RDUVVOc1JDeE5RVUZOTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0M1FrRkRhRU1zVDBGQlR5eERRVUZETEVOQlFVTTdiMEpCUVVFc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEyUXNUMEZCVHl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRE8yZENRVU5zUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8xTkJRMUk3WVVGQlRTeEpRVUZKTEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUlVGQlJUdFpRVU0zUWl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZETzFsQlF6bENMRWxCUVVrc1IwRkJSeXhIUVVOSUxFbEJRVWtzUTBGQlF5eHpRa0ZCYzBJN1owSkJRek5DTEUxQlFVMHNTVUZCU1N4dFFrRkJiVUlzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eGhRVUZoTEVWQlFVVXNTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeEZRVUZGTEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJRenRaUVVONlNDeFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRE8xbEJSV3BETEUxQlFVMHNUVUZCVFN4SFFVRkhMRmRCUVZjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlJTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkZMRVZCUVVVc1IwRkJSeXhEUVVGRExGRkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRk5CUVZNc1JVRkJSU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMWxCUlhCSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zVFVGQlRTeERRVUZETEZWQlFWVXNSVUZCUlN4TlFVRk5MRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03V1VGRmRrVXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXh6UWtGQmMwSXNRMEZCUXl4RFFVRkJPMWxCUTNCRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NTVUZCU1N4SFFVRkhMRVZCUVN0Q0xFTkJRVU03V1VGRE0wUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkZMRU5CUVVNc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzJkQ1FVTjBReXhOUVVGTkxFdEJRVXNzUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU40UWl4TlFVRk5MRTFCUVUwc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVONlFpeE5RVUZOTEZGQlFWRXNSMEZCUnl4SFFVRkhMRU5CUVVNc1VVRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTnNReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRE8yOUNRVU12UWl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVWQlFVVXNTVUZCU1N4SFFVRkhMRVZCUVd0Q0xFTkJRVU1zUTBGQlF6dG5Ra0ZETVVRc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFMUJRVTBzUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXp0aFFVTnlSRHRaUVVORUxFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNjMEpCUVhOQ0xFTkJRVU1zUTBGQlF6dFpRVU40UXl4SFFVRkhMRU5CUVVNc1VVRkJVU3hIUVVGSExFbEJRVWtzUTBGQlF6dFpRVU53UWl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF6dFpRVU5pTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRE8xbEJRMklzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXp0WlFVTllMSGRGUVVGM1JUdFpRVU40UlN4TlFVRk5MRWxCUVVrc1QwRkJUeXhEUVVGUExFTkJRVU1zVDBGQlR5eEZRVUZGTEVWQlFVVTdaMEpCUTJ4RExGVkJRVlVzUTBGQlF5eEhRVUZITEVWQlFVVTdiMEpCUTJRc1QwRkJUeXhGUVVGRkxFTkJRVU03WjBKQlExb3NRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRMVlzUTBGQlF5eERRVUZETEVOQlFVRTdVMEZEU0R0UlFVZE1MRTFCUVUwc1UwRkJVeXhIUVVGSExFMUJRVTBzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETEVsQlFVa3NSVUZCUlN4RlFVRkZPMWxCUTI1RkxFbEJRVWtzU1VGQlNTeERRVUZETEZsQlFWazdaMEpCUTI1Q0xFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlZTeEZRVUZGTEVWQlFVVXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhaUVVGWkxFVkJRVVVzUTBGQlF5eERRVUZETzFGQlEzQkdMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVWdzVTBGQlV5eHhRa0ZCY1VJc1EwRkJReXhKUVVGblFqdFpRVU0zUXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTTVSU3hEUVVGRE8xRkJSVVFzVDBGQlR5eEZRVUZETEZOQlFWTXNSVUZCUlN4eFFrRkJjVUlzUTBGQlF5eFRRVUZUTEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4UlFVRlJMRVZCUVVVc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhEUVVGRE8wbEJRM2hJTEVOQlFVTTdRMEZEUmp0QlFVVkVPenM3T3p0SFFVdEhPMEZCUTBnc1RVRkJUU3hWUVVGWExGTkJRVkVzVDBGQlR6dEpRVWM1UWpzN096dFBRVWxITzBsQlEwZ3NXVUZCV1N4UFFVRm5RanRSUVVNeFFpeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkRaaXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRM1JETEVOQlFVTTdTVUZGUkRzN08wOUJSMGM3U1VGRFNTeExRVUZMTEVOQlFVTXNVMEZCVXp0UlFVTndRaXhOUVVGTkxFZEJRVWNzUjBGQlJ5eE5RVUZOTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTm9SQ3hQUVVGUExFVkJRVU1zVVVGQlVTeEZRVUZGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1VVRkJVU3hGUVVGRkxGTkJRVk1zUlVGQlJTeEhRVUZITEVWQlFVTXNRMEZCUXp0SlFVTXpSQ3hEUVVGRE8wTkJRMFk3UVVGRlJEczdPenM3UjBGTFJ6dEJRVU5JTEUxQlFVMHNWMEZCV1N4VFFVRlJMRTlCUVU4N1NVRkhMMEk3T3pzN1QwRkpSenRKUVVOSUxGbEJRVmtzVDBGQlowSTdVVUZETVVJc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFGQlEyWXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhKUVVGSkxGRkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0SlFVTjJReXhEUVVGRE8wbEJSVVE3T3p0UFFVZEhPMGxCUTBrc1MwRkJTeXhEUVVGRExGTkJRVk03VVVGRGNFSXNUVUZCVFN4SFFVRkhMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRGFFUXNUMEZCVHl4RlFVRkRMRkZCUVZFc1JVRkJSU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZGQlFWRXNSVUZCUlN4VFFVRlRMRVZCUVVVc1IwRkJSeXhGUVVGRExFTkJRVU03U1VGRE0wUXNRMEZCUXp0RFFVTkdPMEZCUlVRN096czdPMGRCUzBjN1FVRkRTQ3hOUVVGTkxHdENRVUZ0UWl4VFFVRlJMRTlCUVU4N1NVRkhkRU03T3pzN1QwRkpSenRKUVVOSUxGbEJRVmtzVDBGQlowSTdVVUZETVVJc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFGQlEyWXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhKUVVGSkxGZEJRVmNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0SlFVTXhReXhEUVVGRE8wbEJSVVE3T3p0UFFVZEhPMGxCUTBrc1MwRkJTeXhEUVVGRExGTkJRVk03VVVGRGNFSXNUVUZCVFN4SFFVRkhMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRGFFUXNUMEZCVHl4RlFVRkRMRkZCUVZFc1JVRkJSU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZGQlFWRXNSVUZCUlN4VFFVRlRMRVZCUVVVc1IwRkJSeXhGUVVGRExFTkJRVU03U1VGRE0wUXNRMEZCUXp0RFFVTkdPMEZCUlVRc1RVRkJUU3hwUWtGQmFVSXNSMEZCUnp0SlFVTjRRaXhOUVVGTkxFVkJRVVVzVjBGQlZ6dEpRVU51UWl4UFFVRlBMRVZCUVVVc1YwRkJWenRKUVVOd1FpeExRVUZMTEVWQlFVVXNWVUZCVlR0SlFVTnFRaXhOUVVGTkxFVkJRVVVzVjBGQlZ6dEpRVU51UWl4aFFVRmhMRVZCUVVVc2EwSkJRV3RDTzBOQlEyeERMRU5CUVVNN1FVRkpSanM3T3pzN1IwRkxSenRCUVVOSUxFMUJRVTBzVDBGQlR5eHhRa0ZCY1VJN1NVRkhhRU03T3pzN096czdUMEZQUnp0SlFVTklMRmxCUVZrc1NVRkJWeXhGUVVGRkxFMUJRVzlDTEVWQlFVVXNUVUZCYjBJc1JVRkJSU3hQUVVGcFFqdFJRVU53Uml4TlFVRk5MRTlCUVU4c1IwRkJSeXhKUVVGSkxFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4VlFVRlZMRU5CUVVNc1QwRkJUeXhGUVVGRkxHTkJRV01zUTBGQlF5eERRVUZETzFGQlEzaEZMRWxCUVVrc1YwRkJWeXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVVZ5UWl4SlFVRkpMR2RDUVVGblFpeERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZPMWxCUXpWQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXp0blFrRkRiRU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMU5CUXpGRU8xRkJSVVFzU1VGQlNTeE5RVUZOTEVsQlFVa3NUVUZCVFN4RlFVRkZPMWxCUTNCQ0xGZEJRVmNzUjBGQlJ6dG5Ra0ZEV2l4SFFVRkhMRVZCUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlF6dG5Ra0ZEWml4SFFVRkhMRVZCUVVNc1ZVRkJWU3hGUVVGRkxFOUJRVThzUlVGQlF6dG5Ra0ZEZUVJc1IwRkJSeXhGUVVGRExHRkJRV0VzUlVGQlJTeE5RVUZOTEVWQlFVTTdaMEpCUXpGQ0xFZEJRVWNzUlVGQlF5eFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkZMRTFCUVUwc1JVRkJRenRuUWtGRE4wSXNSMEZCUnl4UFFVRlBPMkZCUTFnc1EwRkJRenRUUVVOSU8yRkJRVTBzU1VGQlNTeE5RVUZOTEVsQlFVa3NUMEZCVHl4RlFVRkZPMWxCUXpWQ0xGZEJRVmNzUjBGQlJ6dG5Ra0ZEV2l4SFFVRkhMRVZCUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlF6dG5Ra0ZEWml4SFFVRkhMRVZCUVVNc1ZVRkJWU3hGUVVGRkxFOUJRVThzUlVGQlF6dG5Ra0ZEZUVJc1IwRkJSeXhGUVVGRExHRkJRV0VzUlVGQlJTeE5RVUZOTEVWQlFVTTdaMEpCUXpGQ0xFZEJRVWNzUlVGQlF5eFZRVUZWTEVWQlFVVXNUMEZCVHl4RlFVRkZMRTFCUVUwc1NVRkJTU3hUUVVGVExFVkJRVU03WjBKQlF6ZERMRWRCUVVjc1QwRkJUenRoUVVOWUxFTkJRVU03VTBGRFNEdGhRVUZOTEVsQlFVa3NUVUZCVFN4SlFVRkpMRXRCUVVzc1JVRkJSVHRaUVVNeFFpeFhRVUZYTEVkQlFVY3NSVUZCUXl4SFFVRkhMRVZCUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUXl4UlFVRlJMRVZCUVVVc1QwRkJUeXhGUVVGRExFVkJRVVVzYjBKQlFXOUNMRVZCUVVVc1RVRkJUU3hGUVVGRkxFZEJRVWNzVDBGQlR5eEZRVUZETEVOQlFVTTdVMEZEYmtjN1lVRkJUVHRaUVVOTUxGZEJRVmNzUjBGQlJ5eEZRVUZETEVkQlFVY3NSVUZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRExFVkJRVVVzUjBGQlJ5eEZRVUZETEZGQlFWRXNSVUZCUlN4UFFVRlBMRVZCUVVNc1JVRkJSU3h2UWtGQmIwSXNSVUZCUlN4TlFVRk5MRVZCUVVVc1IwRkJSeXhQUVVGUExFVkJRVU1zUTBGQlF6dFRRVU51Unp0UlFVTkVMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeHBRa0ZCYVVJc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0SlFVTTFSQ3hEUVVGRE8wbEJSVVE3T3pzN096czdPMDlCVVVjN1NVRkRTU3hMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEZsQlFYRkNMRXRCUVVzc1JVRkJSU3gxUWtGQmFVTTdVVUZEYkVZc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eExRVUZMTEZOQlFWTTdXVUZETlVJc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5d3dRa0ZCTUVJc1EwRkJReXhEUVVGRE8xRkJSVGxETEVsQlFVa3NSVUZCUXl4VFFVRlRMRVZCUVVVc1VVRkJVU3hGUVVGRExFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRk5CUVZNc1EwRkJReXgxUWtGQmRVSXNRMEZCUXl4RFFVRkRPMUZCUld4R0xFbEJRVWtzVTBGQlV6dFpRVU5ZTEZOQlFWTXNSMEZCUnl4bFFVRmxMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03VVVGRmVrTXNUMEZCVHl4RlFVRkRMRkZCUVZFc1JVRkJSU3hSUVVGUkxFVkJRVVVzVTBGQlV5eEZRVUZGTEZOQlFWTXNSVUZCUXl4RFFVRkRPMGxCUTNCRUxFTkJRVU03U1VGRlJEczdPenM3TzA5QlRVYzdTVUZEU0N4TlFVRk5MRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNVVUZCTkVJN1VVRkRlRVFzVDBGQlR5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRha1FzUTBGQlF6dEpRVVZFT3pzN096dFBRVXRITzBsQlEwZ3NUVUZCVFN4TFFVRkxMR2RDUVVGblFqdFJRVU42UWl4UFFVRlBMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1EwRkJRenRKUVVONFF5eERRVUZETzBsQlJVUTdPenM3TzA5QlMwYzdTVUZEU0N4TlFVRk5MRXRCUVVzc1owSkJRV2RDTzFGQlEzcENMRWxCUVVrc1IwRkJSeXhIUVVGaExFVkJRVVVzUTBGQlF6dFJRVU4yUWl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVTdXVUZET1VNc1RVRkJUU3hMUVVGTExFZEJRVWNzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOcVF5eEhRVUZITEVkQlFVY3NRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETzFGQlF6TkNMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMGdzVDBGQlR5eEhRVUZITEVOQlFVTTdTVUZEWWl4RFFVRkRPME5CUTBZaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaUJsYzJ4cGJuUXRaR2x6WVdKc1pTQnRZWGd0YkdWdUlDb3ZYRzVwYlhCdmNuUWdlMVJUVGtWOUlHWnliMjBnSjBCclpXTnJaV3gwTDNSemJtVW5PMXh1YVcxd2IzSjBJSHRjYmlBZ1QzQjBhVzl1Y3l4Y2JpQWdRMjl2Y21ScGJtRjBaWE1zWEc0Z0lGWmxZM1J2Y2l4Y2JpQWdWbVZqZEc5eWN5eGNiaUFnVFdGMGNtbDRMRnh1ZlNCbWNtOXRJQ2RBWkdGMFlXZHliMnN0YkdsaWNtRnlhV1Z6TDNWMGFXeHpMM055WXk5MGVYQmxMV1JsWTJ4aGNtRjBhVzl1Y3ljN1hHNXBiWEJ2Y25RZ2UxeHVJQ0IwY21GdWMzQnZjMlZOWVhSeWFYZ3NYRzRnSUdGemMyVnlkQ3hjYm4wZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdmRtVmpkRzl5TFc5d1pYSmhkR2x2Ym5Nbk8xeHVhVzF3YjNKMElIdFRVRVZDWVhObExDQlFVMUJGUW1GelpTd2dUM0pwWjJsdVlXeFRVRVY5SUdaeWIyMGdKeTR2YzNCbEp6dGNibWx0Y0c5eWRDQjdUV1ZoYzNWeVpTd2dTMjV2ZDI1TlpYUnlhV056TENCQmRtRnBiR0ZpYkdWTlpYUnlhV056TEZ4dUlDQnBjMEpwZEVGeWNtRjVUV1YwY21sakxDQkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTjlJR1p5YjIwZ0p5NHZkSGx3WldRdGJXVjBjbWxqY3k5MGVYQmxaQzF0WlhSeWFXTnpKenRjYm1sdGNHOXlkQ0JDYVhSQmNuSmhlU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTlpYVhRdFlYSnlZWGtuTzF4dWFXMXdiM0owSUh0VlRVRlFVR0Z5WVcxbGRHVnljeXdnVlUxQlVIMGdabkp2YlNBbkxpOTFiV0Z3Snp0Y2JtbHRjRzl5ZENCN1JHbHpkR0Z1WTJWTllYUnlhWGdzSUVScGMzUmhibU5sVFdGMGNtbDRVMlZ5ZG1salpTd2daR2x6ZEdGdVkyVk5ZWFJ5YVhoUWNtOTRlU3dnWkcxTWFXNWxZWEpKYm1SbGVIMGdabkp2YlNBbkxpOWthWE4wWVc1alpTMXRZWFJ5YVhnbk8xeHVhVzF3YjNKMElIdFRjR0Z5YzJWTllYUnlhWGhUWlhKMmFXTmxmU0JtY205dElDY3VMMlJwYzNSaGJtTmxMVzFoZEhKcGVDOXpjR0Z5YzJVdGJXRjBjbWw0TFhObGNuWnBZMlVuTzF4dWFXMXdiM0owSUh0blpYUkxibTVIY21Gd2FIMGdabkp2YlNBbkxpOTFiV0Z3TDJ0dWJrZHlZWEJvSnp0Y2JseHVaWGh3YjNKMElIUjVjR1VnVTNCaGNuTmxUV0YwY21sNFZISmhibk5tWlhKVWVYQmxJRDBnZTF4dUlDQnBPaUJKYm5Rek1rRnljbUY1TEZ4dUlDQnFPaUJKYm5Rek1rRnljbUY1TEZ4dUlDQmthWE4wWVc1alpUb2dSbXh2WVhRek1rRnljbUY1TEZ4dWZWeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRWxTWldSMVkyVkVhVzFsYm5OcGIyNWhiR2wwZVZKbGMzVnNkQ0I3WEc0Z0lHUnBjM1JoYm1ObFB6b2dSbXh2WVhRek1rRnljbUY1TzF4dUlDQnpjR0Z5YzJWTllYUnlhWGcvT2lCTllYQThiblZ0WW1WeUxDQk5ZWEE4Ym5WdFltVnlMQ0J1ZFcxaVpYSStQanRjYmlBZ1pXMWlaV1JrYVc1bk9pQk5ZWFJ5YVhnN1hHNTlYRzVjYm1WNGNHOXlkQ0JsYm5WdElFUnBiVkpsWkhWamRHbHZiazFsZEdodlpITjdYRzRnSUZWTlFWQWdQU0FuVlUxQlVDY3NYRzRnSUZSZlUwNUZJRDBnSjNRdFUwNUZKMXh1ZlZ4dVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElFbFZUVUZRVDNCMGFXOXVjeUI3WEc0Z0lHeGxZWEp1YVc1blVtRjBaVDg2SUc1MWJXSmxjanRjYmlBZ2JrTnZiWEJ2Ym1WdWRITS9PaUJ1ZFcxaVpYSTdYRzRnSUc1RmNHOWphSE0vT2lCdWRXMWlaWEk3WEc0Z0lHNU9aV2xuYUdKdmNuTS9PaUJ1ZFcxaVpYSTdYRzRnSUhOd2NtVmhaRDg2SUc1MWJXSmxjanRjYmlBZ2JXbHVSR2x6ZEQ4NklHNTFiV0psY2p0Y2JpQWdjM0JoY25ObFRXRjBjbWw0VkdoeVpYTm9iMnhrUHpvZ2JuVnRZbVZ5TzF4dUlDQndjbVZEWVd4amRXeGhkR1ZFYVhOMFlXNWpaVTFoZEhKcGVEODZJR0p2YjJ4bFlXNDdYRzRnSUhWemFXNW5VM0JoY25ObFRXRjBjbWw0UHpvZ1ltOXZiR1ZoYmp0Y2JpQWdjM0JoY25ObFRXRjBjbWw0UHpvZ1UzQmhjbk5sVFdGMGNtbDRWSEpoYm5ObVpYSlVlWEJsTzF4dUlDQndjbTluY21WemMwWjFibU0vT2lBb1pYQnZZem9nYm5WdFltVnlMQ0JsY0c5amFITk1aVzVuZEdnNklHNTFiV0psY2l3Z1pXMWlaV1JrYVc1bmN6b2diblZ0WW1WeVcxMWJYU2tnUFQ0Z2RtOXBaRHRjYm4xY2JseHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQkpWRk5PUlU5d2RHbHZibk1nZTF4dUlDQmxjSE5wYkc5dVB6b2diblZ0WW1WeU8xeHVJQ0J3WlhKd2JHVjRhWFI1UHpvZ2JuVnRZbVZ5TzF4dUlDQmthVzAvT2lCdWRXMWlaWEk3WEc1OVhHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdTVVJwYlZKbFpIVmpkR2x2YmxCaGNtRnRJSHRjYmlBZ2RXbE9ZVzFsT2lCemRISnBibWM3WEc0Z0lIWmhiSFZsT2lCdWRXMWlaWElnZkNCdWRXeHNPMXh1SUNCMGIyOXNkR2x3T2lCemRISnBibWM3WEc0Z0lIQnNZV05sYUc5c1pHVnlQem9nYzNSeWFXNW5PMXh1ZlZ4dVhHNHZLaW9nVlcxaGNDQjFjMlZ6SUhCeVpXTmhiR04xYkdGMFpXUWdaR2x6ZEdGdVkyVWdiV0YwY21sNElIUnZJSE5oZG1VZ2RHbHRaUzRnZEdodmRXZG9JR1p2Y2lCMGIyOGdiWFZqYUNCa1lYUmhMQ0J0WlcxdmNua2dZbVZqYjIxbGN5QmpiMjV6ZEhKaGFXNTBMbHh1SUNvZ2FXWWdkMlVnYUdGMlpTQXhNREFnTURBd0lISnZkM01zSUdScGMzUmhibU5sSUcxaGRISnBlQ0IzYVd4c0lIUmhhMlVnZmpFd1oySWdiMllnYldWdGIzSjVJR0Z1WkNCd2NtOWlZV0pzZVNCdmRtVnlabXh2ZHk1Y2JpQXFMMXh1Wlhod2IzSjBJR052Ym5OMElFMUJXRjlFU1ZOVVFVNURSVjlOUVZSU1NWaGZVazlYVXlBOUlESXdNREF3TzF4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nVlUxQlVFOXdkR2x2Ym5NZ2UxeHVJQ0JzWldGeWJtbHVaMUpoZEdVNklFbEVhVzFTWldSMVkzUnBiMjVRWVhKaGJTQTlJSHQxYVU1aGJXVTZJQ2RNWldGeWFXNXBaeUJ5WVhSbEp5d2dkbUZzZFdVNklERXNJSFJ2YjJ4MGFYQTZJQ2RVYUdVZ2FXNXBkR2xoYkNCc1pXRnlibWx1WnlCeVlYUmxJR1p2Y2lCMGFHVWdaVzFpWldSa2FXNW5JRzl3ZEdsdGFYcGhkR2x2YmlkOU8xeHVJQ0J1UTI5dGNHOXVaVzUwY3pvZ1NVUnBiVkpsWkhWamRHbHZibEJoY21GdElEMGdlM1ZwVG1GdFpUb2dKME52YlhCdmJtVnVkSE1uTENCMllXeDFaVG9nTWl3Z2RHOXZiSFJwY0RvZ0oxUm9aU0J1ZFcxaVpYSWdiMllnWTI5dGNHOXVaVzUwY3lBb1pHbHRaVzV6YVc5dWN5a2dkRzhnY0hKdmFtVmpkQ0IwYUdVZ1pHRjBZU0IwYnlkOU8xeHVJQ0J1UlhCdlkyaHpPaUJKUkdsdFVtVmtkV04wYVc5dVVHRnlZVzBnUFNCN2RXbE9ZVzFsT2lBblJYQnZZMmh6Snl3Z2RtRnNkV1U2SURBc0lIUnZiMngwYVhBNklDZFVhR1VnYm5WdFltVnlJRzltSUdWd2IyTm9jeUIwYnlCdmNIUnBiV2w2WlNCbGJXSmxaR1JwYm1keklIWnBZU0JUUjBRdUlFTnZiWEIxZEdWa0lHRjFkRzl0WVhScFkyRnNiSGtnYVdZZ2MyVjBJSFJ2SURBbmZUdGNiaUFnYms1bGFXZG9ZbTl5Y3pvZ1NVUnBiVkpsWkhWamRHbHZibEJoY21GdElEMGdlM1ZwVG1GdFpUb2dKMDVsYVdkb1ltOXljeWNzSUhaaGJIVmxPaUF4TlN3Z2RHOXZiSFJwY0RvZ0oxUm9aU0J1ZFcxaVpYSWdiMllnYm1WaGNtVnpkQ0J1WldsbmFHSnZjbk1nZEc4Z1kyOXVjM1J5ZFdOMElIUm9aU0JtZFhwNmVTQnRZVzVwWm05c1pDZDlPMXh1SUNCemNISmxZV1E2SUVsRWFXMVNaV1IxWTNScGIyNVFZWEpoYlNBOUlIdDFhVTVoYldVNklDZFRjSEpsWVdRbkxDQjJZV3gxWlRvZ01Td2dkRzl2YkhScGNEb2dKMVJvWlNCbFptWmxZM1JwZG1VZ2MyTmhiR1VnYjJZZ1pXMWlaV1JrWldRZ2NHOXBiblJ6TENCMWMyVmtJSGRwZEdnZ2JXbHVJR1JwYzNSaGJtTmxJSFJ2SUdOdmJuUnliMndnZEdobElHTnNkVzF3WldRdlpHbHpjR1Z5YzJWa0lHNWhkSFZ5WlNCdlppQjBhR1VnWlcxaVpXUmthVzVuSjMwN1hHNGdJRzFwYmtScGMzUTZJRWxFYVcxU1pXUjFZM1JwYjI1UVlYSmhiU0E5SUh0MWFVNWhiV1U2SUNkTmFXNGdaR2x6ZEdGdVkyVW5MQ0IyWVd4MVpUb2dNQzR4TENCMGIyOXNkR2x3T2lBblZHaGxJR1ZtWm1WamRHbDJaU0J0YVc1cGJYVnRJR1JwYzNSaGJtTmxJR0psZEhkbFpXNGdaVzFpWldSa1pXUWdjRzlwYm5SekxDQjFjMlZrSUhkcGRHZ2djM0J5WldGa0lIUnZJR052Ym5SeWIyd2dkR2hsSUdOc2RXMXdaV1F2WkdsemNHVnljMlZrSUc1aGRIVnlaU0J2WmlCMGFHVWdaVzFpWldSa2FXNW5KMzA3WEc1Y2JpQWdZMjl1YzNSeWRXTjBiM0lvS1NCN2ZUdGNibjFjYmx4dVpYaHdiM0owSUdOc1lYTnpJRlJUVGtWUGNIUnBiMjV6SUh0Y2JpQWdaWEJ6YVd4dmJqb2dTVVJwYlZKbFpIVmpkR2x2YmxCaGNtRnRJRDBnZTNWcFRtRnRaVG9nSjBWd2MybHNiMjRuTENCMllXeDFaVG9nTVRBc0lIUnZiMngwYVhBNklDZEZjSE5wYkc5dUlHbHpJR3hsWVhKdWFXNW5JSEpoZEdVbmZUdGNiaUFnY0dWeWNHeGxlR2wwZVRvZ1NVUnBiVkpsWkhWamRHbHZibEJoY21GdElEMGdlM1ZwVG1GdFpUb2dKMUJsY25Cc1pYaHBkSGtuTENCMllXeDFaVG9nTXpBc0lIUnZiMngwYVhBNklDZFNiM1ZuYUd4NUlHaHZkeUJ0WVc1NUlHNWxhV2RvWW05eWN5QmxZV05vSUhCdmFXNTBJR2x1Wm14MVpXNWpaWE1uZlR0Y2JpQWdaR2x0T2lCSlJHbHRVbVZrZFdOMGFXOXVVR0Z5WVcwZ1BTQjdkV2xPWVcxbE9pQW5SR2x0Wlc1emFXOXVZV3hwZEhrbkxDQjJZV3gxWlRvZ01pd2dkRzl2YkhScGNEb2dKMFJwYldWdWMybHZibUZzYVhSNUlHOW1JSFJvWlNCbGJXSmxaR1JwYm1jbmZUdGNibHh1SUNCamIyNXpkSEoxWTNSdmNpZ3BJSHQ5TzF4dWZWeHVYRzR2S2lvZ1FXSnpkSEpoWTNRZ1pHbHRaVzV6YVc5dVlXeHBkSGtnY21Wa2RXTmxjaUFxTDF4dVlXSnpkSEpoWTNRZ1kyeGhjM01nVW1Wa2RXTmxjaUI3WEc0Z0lIQnliM1JsWTNSbFpDQmtZWFJoT2lCV1pXTjBiM0p6TzF4dVhHNGdJR052Ym5OMGNuVmpkRzl5S0c5d2RHbHZibk02SUU5d2RHbHZibk1wSUh0Y2JpQWdJQ0IwYUdsekxtUmhkR0VnUFNCdmNIUnBiMjV6TG1SaGRHRTdYRzRnSUgxY2JseHVJQ0F2S2lvZ1JXMWlaV1J6SUhSb1pTQmtZWFJoSUdkcGRtVnVJR2x1ZEc4Z2RHaGxJSFIzYnkxa2FXMWxibk5wYjI1aGJDQnpjR0ZqWlM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3WVc1NWZTQkRZWEowWlhOcFlXNGdZMjl2Y21ScGJtRjBaU0J2WmlCMGFHbHpJR1Z0WW1Wa1pHbHVaeUJoYm1RZ1pHbHpkR0Z1WTJVZ2JXRjBjbWw0SUhkb1pYSmxJR0Z3Y0d4cFkyRmliR1V1SUNvdlhHNGdJR0ZpYzNSeVlXTjBJSFJ5WVc1elptOXliU2h3WVhKaGJHeGxiRVJwYzNSaGJtTmxWMjl5YTJWeWN6ODZJR0p2YjJ4bFlXNHBPaUJRY205dGFYTmxQRWxTWldSMVkyVkVhVzFsYm5OcGIyNWhiR2wwZVZKbGMzVnNkRDQ3WEc1OVhHNWNiaThxS2lCMExWTk9SU0JrYVcxbGJuTnBiMjVoYkdsMGVTQnlaV1IxWTNScGIyNHVJQ292WEc1amJHRnpjeUJVVTA1RlVtVmtkV05sY2lCbGVIUmxibVJ6SUZKbFpIVmpaWElnZTF4dUlDQndjbTkwWldOMFpXUWdjbVZrZFdObGNqb2dWRk5PUlR0Y2JpQWdjSEp2ZEdWamRHVmtJR2wwWlhKaGRHbHZibk02SUc1MWJXSmxjanRjYmlBZ2NISnZkR1ZqZEdWa0lHUnBjM1JoYm1ObFJtNWhiV1U2SUV0dWIzZHVUV1YwY21samN6dGNiaUFnY0hKdmRHVmpkR1ZrSUdScGMzUmhibU5sUm00NklDaGhPaUJoYm5rc0lHSTZJR0Z1ZVNrZ1BUNGdiblZ0WW1WeU8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGNtVmhkR1Z6SUdGdUlHbHVjM1JoYm1ObElHOW1JRlJUVGtWU1pXUjFZMlZ5TGx4dUlDQWdLaUJBY0dGeVlXMGdlMDl3ZEdsdmJuTjlJRzl3ZEdsdmJuTWdUM0IwYVc5dWN5QjBieUJ3WVhOeklIUnZJSFJvWlNCamIyNXpkSEoxWTNSdmNpNWNiaUFnSUNvZ1FHMWxiV0psY205bUlGUlRUa1ZTWldSMVkyVnlYRzRnSUNBcUwxeHVJQ0JqYjI1emRISjFZM1J2Y2lodmNIUnBiMjV6T2lCUGNIUnBiMjV6S1NCN1hHNGdJQ0FnYzNWd1pYSW9iM0IwYVc5dWN5azdYRzRnSUNBZ2RHaHBjeTV5WldSMVkyVnlJRDBnYm1WM0lGUlRUa1VvYjNCMGFXOXVjeWs3WEc0Z0lDQWdkR2hwY3k1cGRHVnlZWFJwYjI1eklEMGdiM0IwYVc5dWN6OHVhWFJsY21GMGFXOXVjeUEvUHlBeE1EQTdYRzRnSUNBZ2RHaHBjeTVrYVhOMFlXNWpaVVp1WVcxbElEMGdiM0IwYVc5dWN5NWthWE4wWVc1alpVWnVZVzFsTzF4dUlDQWdJSFJvYVhNdVpHbHpkR0Z1WTJWR2JpQTlJRzl3ZEdsdmJuTXVaR2x6ZEdGdVkyVkdianRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCRmJXSmxaSE1nZEdobElHUmhkR0VnWjJsMlpXNGdhVzUwYnlCMGFHVWdkSGR2TFdScGJXVnVjMmx2Ym1Gc0lITndZV05sSUhWemFXNW5JSFF0VTA1RklHMWxkR2h2WkM1Y1hGeHVJQ0FnS2lCQWNHRnlZVzBnZTJKdmIyeGxZVzU5SUZ0d1lYSmhiR3hsYkVScGMzUmhibU5sVjI5eWEyVnljMTBnVjJobGRHaGxjaUIwYnlCMWMyVWdjR0Z5WVd4c1pXd2daR2x6ZEdGdVkyVWdkMjl5YTJWeWN5NWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1lXNTVmU0JEWVhKMFpYTnBZVzRnWTI5dmNtUnBibUYwWlNCdlppQjBhR2x6SUdWdFltVmtaR2x1WnlCaGJtUWdaR2x6ZEdGdVkyVWdiV0YwY21sNElIZG9aWEpsSUdGd2NHeHBZMkZpYkdVdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1lYTjVibU1nZEhKaGJuTm1iM0p0S0hCaGNtRnNiR1ZzUkdsemRHRnVZMlZYYjNKclpYSnpQem9nWW05dmJHVmhiaWs2SUZCeWIyMXBjMlU4U1ZKbFpIVmpaVVJwYldWdWMybHZibUZzYVhSNVVtVnpkV3gwUGlCN1hHNGdJQ0FnWTI5dWMzUWdaR2x6ZEdGdVkyVWdQU0J3WVhKaGJHeGxiRVJwYzNSaGJtTmxWMjl5YTJWeWN5QS9JR0YzWVdsMElDaGhjM2x1WXlBb0tTQTlQaUI3WEc0Z0lDQWdJQ0JqYjI1emRDQnRZWFJ5YVhoVFpYSjJhV05sSUQwZ2JtVjNJRVJwYzNSaGJtTmxUV0YwY21sNFUyVnlkbWxqWlNoMGNuVmxMQ0JtWVd4elpTazdYRzRnSUNBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JrYVhOMElEMGdZWGRoYVhRZ2JXRjBjbWw0VTJWeWRtbGpaUzVqWVd4aktIUm9hWE11WkdGMFlTd2dkR2hwY3k1a2FYTjBZVzVqWlVadVlXMWxLVHRjYmlBZ0lDQWdJQ0FnYldGMGNtbDRVMlZ5ZG1salpTNTBaWEp0YVc1aGRHVW9LVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR1JwYzNRN1hHNGdJQ0FnSUNCOUlHTmhkR05vSUNobEtTQjdYRzRnSUNBZ0lDQWdJRzFoZEhKcGVGTmxjblpwWTJVdWRHVnliV2x1WVhSbEtDazdYRzRnSUNBZ0lDQWdJSFJvY205M0lHVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTa29LU0E2WEc0Z0lDQWdJQ0FvS0NrZ1BUNGdleUJqYjI1emRDQnlaWFFnUFNCRWFYTjBZVzVqWlUxaGRISnBlQzVqWVd4aktIUm9hWE11WkdGMFlTd2dLR0VzSUdJcElEMCtJSFJvYVhNdVpHbHpkR0Z1WTJWR2JpaGhMQ0JpS1NrN0lISmxkQzV1YjNKdFlXeHBlbVVvS1RzZ2NtVjBkWEp1SUhKbGRDNWtZWFJoT3lCOUtTZ3BPMXh1WEc0Z0lDQWdZMjl1YzNRZ2JXRjBjbWw0VUhKdmVIa2dQU0JrYVhOMFlXNWpaVTFoZEhKcGVGQnliM2g1S0dScGMzUmhibU5sTENCMGFHbHpMbVJoZEdFdWJHVnVaM1JvS1R0Y2JpQWdJQ0IwYUdsekxuSmxaSFZqWlhJdWFXNXBkRVJoZEdGRWFYTjBLRzFoZEhKcGVGQnliM2g1S1R0Y2JseHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2RHaHBjeTVwZEdWeVlYUnBiMjV6T3lBcksya3BYRzRnSUNBZ0lDQjBhR2x6TG5KbFpIVmpaWEl1YzNSbGNDZ3BPeUF2THlCbGRtVnllU0IwYVcxbElIbHZkU0JqWVd4c0lIUm9hWE1zSUhOdmJIVjBhVzl1SUdkbGRITWdZbVYwZEdWeVhHNWNiaUFnSUNCeVpYUjFjbTRnZTJScGMzUmhibU5sT2lCa2FYTjBZVzVqWlN3Z1pXMWlaV1JrYVc1bk9pQjBhR2x6TG5KbFpIVmpaWEl1WjJWMFUyOXNkWFJwYjI0b0tYMDdYRzRnSUgxY2JuMWNibHh1Wlhod2IzSjBJSFI1Y0dVZ1ZXMWhjRTl3ZEdsdmJuTWdQU0JQY0hScGIyNXpJQ1lnVlUxQlVGQmhjbUZ0WlhSbGNuTWdKaUI3WEc0Z0lIQnlaVU5oYkdOMWJHRjBaVVJwYzNSaGJtTmxUV0YwY21sNFB6b2dZbTl2YkdWaGJpeGNiaUFnZFhOcGJtZFRjR0Z5YzJWTllYUnlhWGcvT2lCaWIyOXNaV0Z1TEZ4dUlDQnpjR0Z5YzJWTllYUnlhWGhVYUhKbGMyaHZiR1EvT2lCdWRXMWlaWElzWEc0Z0lITndZWEp6WlUxaGRISnBlRDg2SUZOd1lYSnpaVTFoZEhKcGVGUnlZVzV6Wm1WeVZIbHdaU3hjYmlBZ2NISnZaM0psYzNOR2RXNWpQem9nS0dWd2IyTTZJRzUxYldKbGNpd2daWEJ2WTJoelRHVnVaM1JvT2lCdWRXMWlaWElzSUdWdFltVmtaR2x1WjNNNklHNTFiV0psY2x0ZFcxMHBJRDArSUhadmFXUXNYRzU5TzF4dVhHNHZLaXBjYmlBcUlFbHRjR3hsYldWdWRITWdWVTFCVUNCa2FXMWxibk5wYjI1aGJHbDBlU0J5WldSMVkzUnBiMjR1WEc0Z0tseHVJQ29nUUdOc1lYTnpJRlZOUVZCU1pXUjFZMlZ5WEc0Z0tpQkFaWGgwWlc1a2N5QjdVbVZrZFdObGNuMWNiaUFxTDF4dVkyeGhjM01nVlUxQlVGSmxaSFZqWlhJZ1pYaDBaVzVrY3lCU1pXUjFZMlZ5SUh0Y2JpQWdjSEp2ZEdWamRHVmtJSEpsWkhWalpYSTZJRlZOUVZBN1hHNGdJSEJ5YjNSbFkzUmxaQ0JrYVhOMFlXNWpaVVp1WVcxbE9pQkxibTkzYmsxbGRISnBZM003WEc0Z0lIQnliM1JsWTNSbFpDQmthWE4wWVc1alpVWnVPaUJHZFc1amRHbHZianRjYmlBZ2NISnZkR1ZqZEdWa0lIWmxZM1J2Y25NNklHNTFiV0psY2x0ZE8xeHVJQ0J3Y205MFpXTjBaV1FnWkdsemRHRnVZMlZOWVhSeWFYZy9PaUJHYkc5aGRETXlRWEp5WVhrN1hHNGdJSEJ5YjNSbFkzUmxaQ0IxYzJsdVowUnBjM1JoYm1ObFRXRjBjbWw0T2lCaWIyOXNaV0Z1TzF4dUlDQndjbTkwWldOMFpXUWdjM0JoY25ObFRXRjBjbWw0UHpvZ1RXRndQRzUxYldKbGNpd2dUV0Z3UEc1MWJXSmxjaXdnYm5WdFltVnlQajQ3WEc0Z0lIQnliM1JsWTNSbFpDQmtiVWx1WkdWNFJuVnVZem9nS0drNklHNTFiV0psY2l3Z2Fqb2diblZ0WW1WeUtTQTlQaUJ1ZFcxaVpYSTdYRzRnSUhCeWIzUmxZM1JsWkNCMWMybHVaMU53WVhKelpVMWhkSEpwZURvZ1ltOXZiR1ZoYmp0Y2JpQWdjSEp2ZEdWamRHVmtJSE53WVhKelpVMWhkSEpwZUZSb2NtVnphRzlzWkRvZ2JuVnRZbVZ5TzF4dUlDQndjbTkwWldOMFpXUWdkSEpoYm5ObVpYSmxaRk53WVhKelpVMWhkSEpwZUQ4NklGTndZWEp6WlUxaGRISnBlRlJ5WVc1elptVnlWSGx3WlR0Y2JpQWdjSEp2ZEdWamRHVmtJSEJ5YjJkeVpYTnpSblZ1WXo4NklDaGxjRzlqT2lCdWRXMWlaWElzSUdWd2IyTm9jMHhsYm1kMGFEb2diblZ0WW1WeUxDQmxiV0psWkdScGJtZHpPaUJ1ZFcxaVpYSmJYVnRkS1NBOVBpQjJiMmxrTzF4dUlDQndjbTkwWldOMFpXUWdaR2x6ZEdGdVkyVkdia0Z5WjNNL09pQjdXMTg2SUhOMGNtbHVaMTA2SUdGdWVYMDdYRzRnSUM4cUtseHVJQ0FnS2lCRGNtVmhkR1Z6SUdGdUlHbHVjM1JoYm1ObElHOW1JRlZOUVZCU1pXUjFZMlZ5TGx4dUlDQWdLaUJBY0dGeVlXMGdlMDl3ZEdsdmJuTjlJRzl3ZEdsdmJuTWdUM0IwYVc5dWN5QjBieUJ3WVhOeklIUnZJSFJvWlNCamIyNXpkSEoxWTNSdmNpNWNiaUFnSUNvZ1FHMWxiV0psY205bUlGVk5RVkJTWldSMVkyVnlYRzRnSUNBcUwxeHVJQ0JqYjI1emRISjFZM1J2Y2lodmNIUnBiMjV6T2lCVmJXRndUM0IwYVc5dWN5a2dlMXh1SUNBZ0lITjFjR1Z5S0c5d2RHbHZibk1wTzF4dUlDQWdJR0Z6YzJWeWRDZ25aR2x6ZEdGdVkyVkdibUZ0WlNjZ2FXNGdiM0IwYVc5dWN5azdYRzRnSUNBZ1lYTnpaWEowS0Nka2FYTjBZVzVqWlVadUp5QnBiaUJ2Y0hScGIyNXpLVHRjYmlBZ0lDQjBhR2x6TG1ScGMzUmhibU5sUm01QmNtZHpJRDBnYjNCMGFXOXVjejh1WkdsemRHRnVZMlZHYmtGeVozTTdYRzRnSUNBZ2RHaHBjeTVrYVhOMFlXNWpaVVp1SUQwZ2IzQjBhVzl1Y3k1a2FYTjBZVzVqWlVadUlUdGNiaUFnSUNCMGFHbHpMblZ6YVc1blUzQmhjbk5sVFdGMGNtbDRJRDBnSVNGdmNIUnBiMjV6TG5WemFXNW5VM0JoY25ObFRXRjBjbWw0SUh4OElDRWhiM0IwYVc5dWN5NXpjR0Z5YzJWTllYUnlhWGc3WEc0Z0lDQWdkR2hwY3k1emNHRnljMlZOWVhSeWFYaFVhSEpsYzJodmJHUWdQU0J2Y0hScGIyNXpMbk53WVhKelpVMWhkSEpwZUZSb2NtVnphRzlzWkNBL1B5QXdMamc3WEc0Z0lDQWdkR2hwY3k1MGNtRnVjMlpsY21Wa1UzQmhjbk5sVFdGMGNtbDRJRDBnYjNCMGFXOXVjeTV6Y0dGeWMyVk5ZWFJ5YVhnN1hHNGdJQ0FnZEdocGN5NXdjbTluY21WemMwWjFibU1nUFNCdmNIUnBiMjV6TG5CeWIyZHlaWE56Um5WdVl6dGNibHh1SUNBZ0lIUm9hWE11WkdsemRHRnVZMlZHYm1GdFpTQTlJRzl3ZEdsdmJuTXVaR2x6ZEdGdVkyVkdibUZ0WlNFN1hHNGdJQ0FnZEdocGN5NWtiVWx1WkdWNFJuVnVZeUE5SUdSdFRHbHVaV0Z5U1c1a1pYZ29kR2hwY3k1a1lYUmhMbXhsYm1kMGFDazdYRzRnSUNBZ0x5OVZiV0Z3SUhWelpYTWdkbVZqZEc5eUlHbHVaR1Y0YVc1bkxDQnpieUIzWlNCdVpXVmtJSFJ2SUdOeVpXRjBaU0JoYmlCaGNuSmhlU0J2WmlCMlpXTjBiM0p6SUdGeklHbHVaR1ZqWlhNdVhHNGdJQ0FnZEdocGN5NTJaV04wYjNKeklEMGdibVYzSUVGeWNtRjVLSFJvYVhNdVpHRjBZUzVzWlc1bmRHZ3BMbVpwYkd3b01Da3ViV0Z3S0NoZkxDQnBLU0E5UGlCcEtUdGNiaUFnSUNCMGFHbHpMblZ6YVc1blJHbHpkR0Z1WTJWTllYUnlhWGdnUFNBaEtDZ2hiM0IwYVc5dWN5NXdjbVZEWVd4amRXeGhkR1ZFYVhOMFlXNWpaVTFoZEhKcGVDQW1KaUIwYUdsekxtUmhkR0V1YkdWdVozUm9JRDRnVFVGWVgwUkpVMVJCVGtORlgwMUJWRkpKV0Y5U1QxZFRLVnh1SUNBZ0lDQWdmSHdnZEdocGN5NTFjMmx1WjFOd1lYSnpaVTFoZEhKcGVDazdYRzRnSUNBZ2FXWWdLSFJvYVhNdWRYTnBibWRFYVhOMFlXNWpaVTFoZEhKcGVDbGNiaUFnSUNBZ0lHOXdkR2x2Ym5NdVpHbHpkR0Z1WTJWR2JpQTlJSFJvYVhNdVgyVnVZMjlrWldSRWFYTjBZVzVqWlUxaGRISnBlQzVpYVc1a0tIUm9hWE1wTzF4dUlDQWdJR1ZzYzJVZ2FXWWdLSFJvYVhNdWRYTnBibWRUY0dGeWMyVk5ZWFJ5YVhncFhHNGdJQ0FnSUNCdmNIUnBiMjV6TG1ScGMzUmhibU5sUm00Z1BTQjBhR2x6TGw5bGJtTnZaR1ZrVTNCaGNuTmxUV0YwY21sNExtSnBibVFvZEdocGN5azdYRzRnSUNBZ1pXeHpaVnh1SUNBZ0lDQWdiM0IwYVc5dWN5NWthWE4wWVc1alpVWnVJRDBnZEdocGN5NWZaVzVqYjJSbFpFUnBjM1JoYm1ObExtSnBibVFvZEdocGN5azdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NWtZWFJoTG14bGJtZDBhQ0E4SURFMUtWeHVJQ0FnSUNBZ2IzQjBhVzl1Y3k1dVRtVnBaMmhpYjNKeklEMGdkR2hwY3k1a1lYUmhMbXhsYm1kMGFDQXRJREU3WEc0Z0lDQWdkR2hwY3k1eVpXUjFZMlZ5SUQwZ2JtVjNJRlZOUVZBb2IzQjBhVzl1Y3lrN1hHNGdJQ0FnTHk4Z2RHaHBjeTV5WldSMVkyVnlMbVJwYzNSaGJtTmxSbTRnUFNCMGFHbHpMbDlsYm1OdlpHVmtSR2x6ZEdGdVkyVXVZbWx1WkNoMGFHbHpLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGRYTjBiMjBnWkdsemRHRnVZMlVnZDNKaGNIQmxjaUIwYnlCb1lYWmxJRzUxYldWeWFXTWdhVzV3ZFhSeklHbHVjM1JsWVdRZ2IyWWdjM1J5YVc1bklHOXVaWE11WEc0Z0lDQXFYRzRnSUNBcUlFQndjbTkwWldOMFpXUmNiaUFnSUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEpiWFgwZ1lTQlVhR1VnWm1seWMzUWdhWFJsYlM1Y2JpQWdJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSmJYWDBnWWlCVWFHVWdabWx5YzNRZ2FYUmxiUzVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQkVhWE4wWVc1alpTQnRaWFJ5YVdNdVhHNGdJQ0FxSUVCdFpXMWlaWEp2WmlCVlRVRlFVbVZrZFdObGNseHVJQ0FnS2k5Y2JpQWdjSEp2ZEdWamRHVmtJRjlsYm1OdlpHVmtSR2x6ZEdGdVkyVk5ZWFJ5YVhnb1lUb2diblZ0WW1WeUxDQmlPaUJ1ZFcxaVpYSXBPaUJ1ZFcxaVpYSWdlMXh1SUNBZ0lHbG1JQ2hoSUQwOVBTQmlLVnh1SUNBZ0lDQWdjbVYwZFhKdUlEQTdYRzRnSUNBZ2FXWWdLR0VnUGlCaUtWeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVaR2x6ZEdGdVkyVk5ZWFJ5YVhnaFczUm9hWE11WkcxSmJtUmxlRVoxYm1Nb1lpd2dZU2xkTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1ScGMzUmhibU5sVFdGMGNtbDRJVnQwYUdsekxtUnRTVzVrWlhoR2RXNWpLR0VzSUdJcFhUdGNiaUFnZlZ4dVhHNGdJSEJ5YjNSbFkzUmxaQ0JmWlc1amIyUmxaRk53WVhKelpVMWhkSEpwZUNoaE9pQnVkVzFpWlhJc0lHSTZJRzUxYldKbGNpazZJRzUxYldKbGNpQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjM0JoY25ObFRXRjBjbWw0SVM1blpYUW9ZU2svTG1kbGRDaGlLU0EvUHlCMGFHbHpMbk53WVhKelpVMWhkSEpwZUNFdVoyVjBLR0lwUHk1blpYUW9ZU2tnUHo4Z01UdGNiaUFnZlZ4dVhHNGdJSEJ5YjNSbFkzUmxaQ0JmWlc1amIyUmxaRVJwYzNSaGJtTmxLR0U2SUc1MWJXSmxjaXdnWWpvZ2JuVnRZbVZ5S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1a2FYTjBZVzVqWlVadUtIUm9hWE11WkdGMFlWdGhYU3dnZEdocGN5NWtZWFJoVzJKZEtUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJGYldKbFpITWdkR2hsSUdSaGRHRWdaMmwyWlc0Z2FXNTBieUIwYUdVZ2RIZHZMV1JwYldWdWMybHZibUZzSUhOd1lXTmxJSFZ6YVc1bklGVk5RVkFnYldWMGFHOWtMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UySnZiMnhsWVc1OUlGdHdZWEpoYkd4bGJFUnBjM1JoYm1ObFYyOXlhMlZ5YzEwZ1YyaGxkR2hsY2lCMGJ5QjFjMlVnY0dGeVlXeHNaV3dnWkdsemRHRnVZMlVnYldGMGNtbDRJSGR2Y210bGNuTXVYRzRnSUNBcUlFQnlaWFIxY200Z2UyRnVlWDBnUTJGeWRHVnphV0Z1SUdOdmIzSmthVzVoZEdVZ2IyWWdkR2hwY3lCbGJXSmxaR1JwYm1jdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1lYTjVibU1nZEhKaGJuTm1iM0p0S0hCaGNtRnNiR1ZzUkdsemRHRnVZMlZYYjNKclpYSnpQem9nWW05dmJHVmhiaWs2SUZCeWIyMXBjMlU4U1ZKbFpIVmpaVVJwYldWdWMybHZibUZzYVhSNVVtVnpkV3gwUGlCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11ZFhOcGJtZEVhWE4wWVc1alpVMWhkSEpwZUNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVrYVhOMFlXNWpaVTFoZEhKcGVDQTlJSEJoY21Gc2JHVnNSR2x6ZEdGdVkyVlhiM0pyWlhKeklEOGdZWGRoYVhRZ0tHRnplVzVqSUNncElEMCtJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdiV0YwY21sNFUyVnlkbWxqWlNBOUlHNWxkeUJFYVhOMFlXNWpaVTFoZEhKcGVGTmxjblpwWTJVb2RISjFaU3dnWm1Gc2MyVXBPMXh1SUNBZ0lDQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElHUnBjM1FnUFNCaGQyRnBkQ0J0WVhSeWFYaFRaWEoyYVdObExtTmhiR01vZEdocGN5NWtZWFJoTENCMGFHbHpMbVJwYzNSaGJtTmxSbTVoYldVc0lIUnlkV1VzSUhSb2FYTXVaR2x6ZEdGdVkyVkdia0Z5WjNNcE8xeHVJQ0FnSUNBZ0lDQWdJRzFoZEhKcGVGTmxjblpwWTJVdWRHVnliV2x1WVhSbEtDazdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR1JwYzNRN1hHNGdJQ0FnSUNBZ0lIMGdZMkYwWTJnZ0tHVXBJSHRjYmlBZ0lDQWdJQ0FnSUNCdFlYUnlhWGhUWlhKMmFXTmxMblJsY20xcGJtRjBaU2dwTzF4dUlDQWdJQ0FnSUNBZ0lIUm9jbTkzSUdVN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMHBLQ2tnT2x4dUlDQWdJQ0FnSUNBb0tDa2dQVDRnZXlCY2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCeVpYUWdQU0JFYVhOMFlXNWpaVTFoZEhKcGVDNWpZV3hqS0hSb2FYTXVaR0YwWVN3Z0tHRXNJR0lwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR1FnUFNCMGFHbHpMbVJwYzNSaGJtTmxSbTRvWVN3Z1lpazdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWkR0OUtUc2dYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSEpsZEM1a1lYUmhPeUJjYmlBZ0lDQWdJQ0FnZlNrb0tUdGNiaUFnSUNCOUlHVnNjMlVnYVdZZ0tIUm9hWE11ZFhOcGJtZFRjR0Z5YzJWTllYUnlhWGdwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6YjJ4bExuUnBiV1VvSjNOd1lYSnpaU0J0WVhSeWFYZ25LVHRjYmlBZ0lDQWdJQ0FnSUNCc1pYUWdjbVZ6T2lCN1cwc2dhVzRnYTJWNWIyWWdVM0JoY25ObFRXRjBjbWw0VkhKaGJuTm1aWEpVZVhCbFhUb2dVM0JoY25ObFRXRjBjbWw0VkhKaGJuTm1aWEpVZVhCbFcwdGRJSHdnYm5Wc2JIMGdmQ0J1ZFd4c1hHNGdJQ0FnSUNBZ0lDQWdJQ0E5SUhSb2FYTXVkSEpoYm5ObVpYSmxaRk53WVhKelpVMWhkSEpwZUNBL1AxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCaGQyRnBkQ0J1WlhjZ1UzQmhjbk5sVFdGMGNtbDRVMlZ5ZG1salpTZ3BMbU5oYkdNb2RHaHBjeTVrWVhSaExDQjBhR2x6TG1ScGMzUmhibU5sUm01aGJXVXNJSFJvYVhNdWMzQmhjbk5sVFdGMGNtbDRWR2h5WlhOb2IyeGtMQ0IwYUdsekxtUnBjM1JoYm1ObFJtNUJjbWR6S1R0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6YjJ4bExuUnBiV1ZGYm1Rb0ozTndZWEp6WlNCdFlYUnlhWGduS1R0Y2JseHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElHdHVibEpsY3lBOUlHZGxkRXR1YmtkeVlYQm9LSEpsY3k1cElTd2djbVZ6TG1vaExDQnlaWE11WkdsemRHRnVZMlVoTENCMGFHbHpMbkpsWkhWalpYSXVibVZwWjJoaWIzSnpMQ0IwYUdsekxtUmhkR0V1YkdWdVozUm9LVHRjYmx4dUlDQWdJQ0FnSUNBZ0lIUm9hWE11Y21Wa2RXTmxjaTV6WlhSUWNtVmpiMjF3ZFhSbFpFdE9UaWhyYm01U1pYTXVhMjV1U1c1a1pYaGxjeXdnYTI1dVVtVnpMbXR1YmtScGMzUmhibU5sY3lrN1hHNWNiaUFnSUNBZ0lDQWdJQ0JqYjI1emIyeGxMblJwYldVb0ozTndZWEp6WlNCdFlYUnlhWGdnZEc4Z2JXRndKeWxjYmlBZ0lDQWdJQ0FnSUNCMGFHbHpMbk53WVhKelpVMWhkSEpwZUNBOUlHNWxkeUJOWVhBOGJuVnRZbVZ5TENCTllYQThiblZ0WW1WeUxDQnVkVzFpWlhJK1BpZ3BPMXh1SUNBZ0lDQWdJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2NtVnpMbWtoTG14bGJtZDBhRHNnS3l0cEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JtYVhKemRDQTlJSEpsY3k1cElWdHBYVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUhObFkyOXVaQ0E5SUhKbGN5NXFJVnRwWFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHUnBjM1JoYm1ObElEMGdjbVZ6TG1ScGMzUmhibU5sSVZ0cFhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hkR2hwY3k1emNHRnljMlZOWVhSeWFYZ3VhR0Z6S0dacGNuTjBLU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1emNHRnljMlZOWVhSeWFYZ3VjMlYwS0dacGNuTjBMQ0J1WlhjZ1RXRndQRzUxYldKbGNpd2diblZ0WW1WeVBpZ3BLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11YzNCaGNuTmxUV0YwY21sNExtZGxkQ2htYVhKemRDa2hMbk5sZENoelpXTnZibVFzSUdScGMzUmhibU5sS1R0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMyOXNaUzUwYVcxbFJXNWtLQ2R6Y0dGeWMyVWdiV0YwY21sNElIUnZJRzFoY0NjcE8xeHVJQ0FnSUNBZ0lDQWdJSEpsY3k1a2FYTjBZVzVqWlNBOUlHNTFiR3c3WEc0Z0lDQWdJQ0FnSUNBZ2NtVnpMbWtnUFNCdWRXeHNPMXh1SUNBZ0lDQWdJQ0FnSUhKbGN5NXFJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lDQWdJQ0J5WlhNZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnSUNBZ0lDOHZJRzVsWldSbFpDQnpieUIwYUdGMElHZGhjbUpoWjJVZ1kyOXNiR1ZqZEc5eUlHTmhiaUJtY21WbElHMWxiVzl5ZVNCbWNtOXRJR1JwYzNSaGJtTmxJRzFoZEhKcGVGeHVJQ0FnSUNBZ0lDQWdJR0YzWVdsMElHNWxkeUJRY205dGFYTmxQSFp2YVdRK0tDaHlaWE52YkhabEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnpaWFJVYVcxbGIzVjBLQ2dwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NtVnpiMngyWlNncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlN3Z05UQXdLVHRjYmlBZ0lDQWdJQ0FnSUNCOUtWeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQmNiaUFnSUNCamIyNXpkQ0JsYldKbFpHUnBibWNnUFNCaGQyRnBkQ0IwYUdsekxuSmxaSFZqWlhJdVptbDBRWE41Ym1Nb2RHaHBjeTUyWldOMGIzSnpMQ0FvWlhCdll5a2dQVDRnZTF4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11Y0hKdlozSmxjM05HZFc1aktWeHVJQ0FnSUNBZ0lDQjBhR2x6TG5CeWIyZHlaWE56Um5WdVl5aGxjRzlqTENCMGFHbHpMbkpsWkhWalpYSXVaMlYwVGtWd2IyTm9jeWdwTENCMGFHbHpMbkpsWkhWalpYSXVaMlYwUlcxaVpXUmthVzVuS0NrcE8xeHVJQ0FnSUgwcE8xeHVYRzRnSUNBZ1puVnVZM1JwYjI0Z1lYSnlZWGxEWVhOME1rTnZiM0prYVc1aGRHVnpLR1JoZEdFNklHNTFiV0psY2x0ZFcxMHBPaUJEYjI5eVpHbHVZWFJsY3lCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm1WM0lFRnljbUY1S0dSaGRHRXViR1Z1WjNSb0tTNW1hV3hzS0RBcExtMWhjQ2dvWHl3Z2FTa2dQVDRnS0ZabFkzUnZjaTVtY205dEtHUmhkR0ZiYVYwcEtTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUh0bGJXSmxaR1JwYm1jNklHRnljbUY1UTJGemRESkRiMjl5WkdsdVlYUmxjeWhsYldKbFpHUnBibWNwTENBdUxpNG9kR2hwY3k1a2FYTjBZVzVqWlUxaGRISnBlQ0EvSUh0a2FYTjBZVzVqWlRvZ2RHaHBjeTVrYVhOMFlXNWpaVTFoZEhKcGVIMGdPaUI3ZlNsOU8xeHVJQ0I5WEc1OVhHNWNiaThxS2x4dUlDb2dTVzF3YkdWdFpXNTBjeUJ2Y21sbmFXNWhiQ0JUVUVVZ1pHbHRaVzV6YVc5dVlXeHBkSGtnY21Wa2RXTjBhVzl1TGx4dUlDcGNiaUFxSUVCamJHRnpjeUJUVUVWU1pXUjFZMlZ5WEc0Z0tpQkFaWGgwWlc1a2N5QjdVbVZrZFdObGNuMWNiaUFxTDF4dVkyeGhjM01nVTFCRlVtVmtkV05sY2lCbGVIUmxibVJ6SUZKbFpIVmpaWElnZTF4dUlDQndjbTkwWldOMFpXUWdjbVZrZFdObGNqb2dVMUJGUW1GelpUdGNibHh1SUNBdktpcGNiaUFnSUNvZ1EzSmxZWFJsY3lCaGJpQnBibk4wWVc1alpTQnZaaUJUVUVWU1pXUjFZMlZ5TGx4dUlDQWdLaUJBY0dGeVlXMGdlMDl3ZEdsdmJuTjlJRzl3ZEdsdmJuTWdUM0IwYVc5dWN5QjBieUJ3WVhOeklIUnZJSFJvWlNCamIyNXpkSEoxWTNSdmNpNWNiaUFnSUNvZ1FHMWxiV0psY205bUlGTlFSVkpsWkhWalpYSmNiaUFnSUNvdlhHNGdJR052Ym5OMGNuVmpkRzl5S0c5d2RHbHZibk02SUU5d2RHbHZibk1wSUh0Y2JpQWdJQ0J6ZFhCbGNpaHZjSFJwYjI1ektUdGNiaUFnSUNCMGFHbHpMbkpsWkhWalpYSWdQU0J1WlhjZ1UxQkZRbUZ6WlNodmNIUnBiMjV6S1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkZiV0psWkhNZ2RHaGxJR1JoZEdFZ1oybDJaVzRnYVc1MGJ5QjBhR1VnZEhkdkxXUnBiV1Z1YzJsdmJtRnNJSE53WVdObElIVnphVzVuSUhSb1pTQnZjbWxuYVc1aGJDQlRVRVVnYldWMGFHOWtMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdGhibmw5SUVOaGNuUmxjMmxoYmlCamIyOXlaR2x1WVhSbElHOW1JSFJvYVhNZ1pXMWlaV1JrYVc1bklHRnVaQ0JrYVhOMFlXNWpaU0J0WVhSeWFYZ2dkMmhsY21VZ1lYQndiR2xqWVdKc1pTNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QmhjM2x1WXlCMGNtRnVjMlp2Y20wb0tUb2dVSEp2YldselpUeEpVbVZrZFdObFJHbHRaVzV6YVc5dVlXeHBkSGxTWlhOMWJIUStJSHRjYmlBZ0lDQmpiMjV6ZENCbGJXSWdQU0JoZDJGcGRDQjBhR2x6TG5KbFpIVmpaWEl1WlcxaVpXUW9kR2hwY3k1a1lYUmhLVHRjYmlBZ0lDQnlaWFIxY200Z2UyUnBjM1JoYm1ObE9pQjBhR2x6TG5KbFpIVmpaWEl1WkdsemRHRnVZMlVzSUdWdFltVmtaR2x1WnpvZ1pXMWlmVHRjYmlBZ2ZWeHVmVnh1WEc0dktpcGNiaUFxSUVsdGNHeGxiV1Z1ZEhNZ2JXOWthV1pwWldRZ1UxQkZJR1JwYldWdWMybHZibUZzYVhSNUlISmxaSFZqZEdsdmJpNWNiaUFxWEc0Z0tpQkFZMnhoYzNNZ1VGTlFSVkpsWkhWalpYSmNiaUFxSUVCbGVIUmxibVJ6SUh0U1pXUjFZMlZ5ZlZ4dUlDb3ZYRzVqYkdGemN5QlFVMUJGVW1Wa2RXTmxjaUJsZUhSbGJtUnpJRkpsWkhWalpYSWdlMXh1SUNCd2NtOTBaV04wWldRZ2NtVmtkV05sY2pvZ1VGTlFSVUpoYzJVN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOeVpXRjBaWE1nWVc0Z2FXNXpkR0Z1WTJVZ2IyWWdVRk5RUlZKbFpIVmpaWEl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdUM0IwYVc5dWMzMGdiM0IwYVc5dWN5QlBjSFJwYjI1eklIUnZJSEJoYzNNZ2RHOGdkR2hsSUdOdmJuTjBjblZqZEc5eUxseHVJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1VGTlFSVkpsWkhWalpYSmNiaUFnSUNvdlhHNGdJR052Ym5OMGNuVmpkRzl5S0c5d2RHbHZibk02SUU5d2RHbHZibk1wSUh0Y2JpQWdJQ0J6ZFhCbGNpaHZjSFJwYjI1ektUdGNiaUFnSUNCMGFHbHpMbkpsWkhWalpYSWdQU0J1WlhjZ1VGTlFSVUpoYzJVb2IzQjBhVzl1Y3lrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSVzFpWldSeklIUm9aU0JrWVhSaElHZHBkbVZ1SUdsdWRHOGdkR2hsSUhSM2J5MWthVzFsYm5OcGIyNWhiQ0J6Y0dGalpTQjFjMmx1WnlCMGFHVWdiVzlrYVdacFpXUWdVMUJGSUcxbGRHaHZaQzVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdZVzU1ZlNCRFlYSjBaWE5wWVc0Z1kyOXZjbVJwYm1GMFpTQnZaaUIwYUdseklHVnRZbVZrWkdsdVp5QmhibVFnWkdsemRHRnVZMlVnYldGMGNtbDRJSGRvWlhKbElHRndjR3hwWTJGaWJHVXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdZWE41Ym1NZ2RISmhibk5tYjNKdEtDazZJRkJ5YjIxcGMyVThTVkpsWkhWalpVUnBiV1Z1YzJsdmJtRnNhWFI1VW1WemRXeDBQaUI3WEc0Z0lDQWdZMjl1YzNRZ1pXMWlJRDBnWVhkaGFYUWdkR2hwY3k1eVpXUjFZMlZ5TG1WdFltVmtLSFJvYVhNdVpHRjBZU2s3WEc0Z0lDQWdjbVYwZFhKdUlIdGthWE4wWVc1alpUb2dkR2hwY3k1eVpXUjFZMlZ5TG1ScGMzUmhibU5sTENCbGJXSmxaR1JwYm1jNklHVnRZbjA3WEc0Z0lIMWNibjFjYmx4dUx5b3FYRzRnS2lCSmJYQnNaVzFsYm5SeklHOXlhV2RwYm1Gc0lGTlFSU0JrYVcxbGJuTnBiMjVoYkdsMGVTQnlaV1IxWTNScGIyNHVYRzRnS2x4dUlDb2dRR05zWVhOeklFOXlhV2RwYm1Gc1UxQkZVbVZrZFdObGNseHVJQ29nUUdWNGRHVnVaSE1nZTFKbFpIVmpaWEo5WEc0Z0tpOWNibU5zWVhOeklFOXlhV2RwYm1Gc1UxQkZVbVZrZFdObGNpQmxlSFJsYm1SeklGSmxaSFZqWlhJZ2UxeHVJQ0J3Y205MFpXTjBaV1FnY21Wa2RXTmxjam9nVDNKcFoybHVZV3hUVUVVN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOeVpXRjBaWE1nWVc0Z2FXNXpkR0Z1WTJVZ2IyWWdUM0pwWjJsdVlXeFRVRVZTWldSMVkyVnlMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwOXdkR2x2Ym5OOUlHOXdkR2x2Ym5NZ1QzQjBhVzl1Y3lCMGJ5QndZWE56SUhSdklIUm9aU0JqYjI1emRISjFZM1J2Y2k1Y2JpQWdJQ29nUUcxbGJXSmxjbTltSUU5eWFXZHBibUZzVTFCRlVtVmtkV05sY2x4dUlDQWdLaTljYmlBZ1kyOXVjM1J5ZFdOMGIzSW9iM0IwYVc5dWN6b2dUM0IwYVc5dWN5a2dlMXh1SUNBZ0lITjFjR1Z5S0c5d2RHbHZibk1wTzF4dUlDQWdJSFJvYVhNdWNtVmtkV05sY2lBOUlHNWxkeUJQY21sbmFXNWhiRk5RUlNodmNIUnBiMjV6S1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkZiV0psWkhNZ2RHaGxJR1JoZEdFZ1oybDJaVzRnYVc1MGJ5QjBhR1VnZEhkdkxXUnBiV1Z1YzJsdmJtRnNJSE53WVdObElIVnphVzVuSUhSb1pTQnZjbWxuYVc1aGJDQlRVRVVnYldWMGFHOWtMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdGhibmw5SUVOaGNuUmxjMmxoYmlCamIyOXlaR2x1WVhSbElHOW1JSFJvYVhNZ1pXMWlaV1JrYVc1bklHRnVaQ0JrYVhOMFlXNWpaU0J0WVhSeWFYZ2dkMmhsY21VZ1lYQndiR2xqWVdKc1pTNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QmhjM2x1WXlCMGNtRnVjMlp2Y20wb0tUb2dVSEp2YldselpUeEpVbVZrZFdObFJHbHRaVzV6YVc5dVlXeHBkSGxTWlhOMWJIUStJSHRjYmlBZ0lDQmpiMjV6ZENCbGJXSWdQU0JoZDJGcGRDQjBhR2x6TG5KbFpIVmpaWEl1WlcxaVpXUW9kR2hwY3k1a1lYUmhLVHRjYmlBZ0lDQnlaWFIxY200Z2UyUnBjM1JoYm1ObE9pQjBhR2x6TG5KbFpIVmpaWEl1WkdsemRHRnVZMlVzSUdWdFltVmtaR2x1WnpvZ1pXMWlmVHRjYmlBZ2ZWeHVmVnh1WEc1amIyNXpkQ0JCZG1GcGJHRmliR1ZTWldSMVkyVnljeUE5SUh0Y2JpQWdKMVZOUVZBbk9pQlZUVUZRVW1Wa2RXTmxjaXhjYmlBZ0ozUXRVMDVGSnpvZ1ZGTk9SVkpsWkhWalpYSXNYRzRnSUNkVFVFVW5PaUJUVUVWU1pXUjFZMlZ5TEZ4dUlDQW5jRk5RUlNjNklGQlRVRVZTWldSMVkyVnlMRnh1SUNBblQzSnBaMmx1WVd4VFVFVW5PaUJQY21sbmFXNWhiRk5RUlZKbFpIVmpaWElzWEc1OU8xeHVYRzVsZUhCdmNuUWdkSGx3WlNCTGJtOTNiazFsZEdodlpITWdQU0JyWlhsdlppQjBlWEJsYjJZZ1FYWmhhV3hoWW14bFVtVmtkV05sY25NN1hHNWNiaThxS2x4dUlDb2dWVzVwWm1sbFpDQmpiR0Z6Y3lCcGJYQnNaVzFsYm5ScGJtY2daR2xtWm1WeVpXNTBJR1JwYldWdWMybHZibUZzYVhSNUlISmxaSFZqZEdsdmJpQnRaWFJvYjJSekxseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJqYkdGemN5QkVhVzFsYm5OcGIyNWhiR2wwZVZKbFpIVmpaWEpjYmlBcUwxeHVaWGh3YjNKMElHTnNZWE56SUVScGJXVnVjMmx2Ym1Gc2FYUjVVbVZrZFdObGNpQjdYRzRnSUhCeWFYWmhkR1VnY21Wa2RXTmxjam9nVW1Wa2RXTmxjaUI4SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxjeUJoYmlCcGJuTjBZVzVqWlNCdlppQkVhVzFsYm5OcGIyNWhiR2wwZVZKbFpIVmpaWEl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdZVzU1VzExOUlHUmhkR0VnVm1WamRHOXljeUIwYnlCbGJXSmxaQzVjYmlBZ0lDb2dRSEJoY21GdElIdExibTkzYmsxbGRHaHZaSE45SUcxbGRHaHZaQ0JGYldKbFpHUnBibWNnYldWMGFHOWtJSFJ2SUdKbElHRndjR3hwWldSY2JpQWdJQ29nUUhCaGNtRnRJSHRMYm05M2JrMWxkSEpwWTNOOUlHMWxkSEpwWXlCRWFYTjBZVzVqWlNCdFpYUnlhV01nZEc4Z1ltVWdZMjl0Y0hWMFpXUWdZbVYwZDJWbGJpQmxZV05vSUc5bUlIUm9aU0IyWldOMGIzSnpMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwOXdkR2x2Ym5OOUlGdHZjSFJwYjI1elhTQlBjSFJwYjI1eklIUnZJSEJoYzNNZ2RHOGdkR2hsSUdsdGNHeGxiV1Z1ZEdsdVp5QmxiV0psWkdSbGNuTXVYRzRnSUNBcUlFQnRaVzFpWlhKdlppQkVhVzFsYm5OcGIyNWhiR2wwZVZKbFpIVmpaWEpjYmlBZ0lDb3ZYRzRnSUdOdmJuTjBjblZqZEc5eUtHUmhkR0U2SUdGdWVWdGRMQ0J0WlhSb2IyUTZJRXR1YjNkdVRXVjBhRzlrY3l3Z2JXVjBjbWxqT2lCTGJtOTNiazFsZEhKcFkzTXNJRzl3ZEdsdmJuTS9PaUJQY0hScGIyNXpLU0I3WEc0Z0lDQWdZMjl1YzNRZ2JXVmhjM1Z5WlNBOUlHNWxkeUJOWldGemRYSmxLRzFsZEhKcFl5a3VaMlYwVFdWaGMzVnlaU2h2Y0hScGIyNXpQeTVrYVhOMFlXNWpaVVp1UVhKbmN5azdYRzRnSUNBZ2JHVjBJSE53WldOUGNIUnBiMjV6SUQwZ2UzMDdYRzVjYmlBZ0lDQnBaaUFvYVhOQ2FYUkJjbkpoZVUxbGRISnBZeWh0WlhSeWFXTXBLU0I3WEc0Z0lDQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdSaGRHRXViR1Z1WjNSb095QXJLMmtwWEc0Z0lDQWdJQ0FnSUdSaGRHRmJhVjBnUFNCdVpYY2dRbWwwUVhKeVlYa29aR0YwWVZ0cFhTNWZaR0YwWVN3Z1pHRjBZVnRwWFM1ZmJHVnVaM1JvS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2JXVjBhRzlrSUQwOUlDZFZUVUZRSnlrZ2UxeHVJQ0FnSUNBZ2MzQmxZMDl3ZEdsdmJuTWdQU0I3WEc0Z0lDQWdJQ0FnSUM0dUxudGtZWFJoT2lCa1lYUmhmU3hjYmlBZ0lDQWdJQ0FnTGk0dWUyUnBjM1JoYm1ObFJtNDZJRzFsWVhOMWNtVjlMRnh1SUNBZ0lDQWdJQ0F1TGk1N1pHbHpkR0Z1WTJWR2JtRnRaVG9nYldWMGNtbGpmU3hjYmlBZ0lDQWdJQ0FnTGk0dWUyNUZjRzlqYUhNNklHOXdkR2x2Ym5NL0xtTjVZMnhsYzMwc1hHNGdJQ0FnSUNBZ0lDNHVMbTl3ZEdsdmJuTXNYRzRnSUNBZ0lDQjlPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9iV1YwYUc5a0lEMDlJQ2QwTFZOT1JTY3BJSHRjYmlBZ0lDQWdJSE53WldOUGNIUnBiMjV6SUQwZ2UxeHVJQ0FnSUNBZ0lDQXVMaTU3WkdGMFlUb2daR0YwWVgwc1hHNGdJQ0FnSUNBZ0lDNHVMbnRrYVhOMFlXNWpaVVp1T2lCdFpXRnpkWEpsZlN4Y2JpQWdJQ0FnSUNBZ0xpNHVlMlJwYzNSaGJtTmxSbTVoYldVNklHMWxkSEpwWTMwc1hHNGdJQ0FnSUNBZ0lDNHVMbnRwZEdWeVlYUnBiMjV6T2lCdmNIUnBiMjV6UHk1amVXTnNaWE1nUHo4Z2RXNWtaV1pwYm1Wa2ZTeGNiaUFnSUNBZ0lDQWdMaTR1YjNCMGFXOXVjeXhjYmlBZ0lDQWdJSDA3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2h0WlhSb2IyUWdQVDBnSjFOUVJTY3BJSHRjYmlBZ0lDQWdJSE53WldOUGNIUnBiMjV6SUQwZ2V5NHVMbnRrWVhSaE9pQmtZWFJoZlN3Z0xpNHVlMlJwYzNSaGJtTmxPaUJ0WldGemRYSmxmU3dnWkdsemRHRnVZMlZHZFc1amRHbHZiazVoYldVNklHMWxkSEpwWXl3Z0xpNHViM0IwYVc5dWMzMDdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhOd1pXTlBjSFJwYjI1eklEMGdleTR1TG50a1lYUmhPaUJrWVhSaGZTd2dMaTR1ZTJScGMzUmhibU5sT2lCdFpXRnpkWEpsZlN3Z1pHbHpkR0Z1WTJWR2RXNWpkR2x2Yms1aGJXVTZJRzFsZEhKcFl5d2dMaTR1YjNCMGFXOXVjMzA3WEc0Z0lDQWdmVnh1SUNBZ0lIUm9hWE11Y21Wa2RXTmxjaUE5SUc1bGR5QkJkbUZwYkdGaWJHVlNaV1IxWTJWeWMxdHRaWFJvYjJSZEtITndaV05QY0hScGIyNXpLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCRmJXSmxaSE1nZEdobElHUmhkR0VnWjJsMlpXNGdhVzUwYnlCMGFHVWdkSGR2TFdScGJXVnVjMmx2Ym1Gc0lITndZV05sSUhWemFXNW5JSFJvWlNCamFHOXpaVzRnYldWMGFHOWtMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTJKdmIyeGxZVzU5SUhSeVlXNXpjRzl6WlNCWGFHVjBhR1Z5SUhSdklIUnlZVzV6Wm05eWJTQmpiMjl5WkdsdVlYUmxjeUIwYnlCb1lYWmxJR052YkhWdGJuTXRabWx5YzNRZ2IzSnBaVzUwWVhScGIyNHVYRzRnSUNBcUlFQndZWEpoYlNCN1ltOXZiR1ZoYm4wZ2NHRnlZV3hzWld4RWFYTjBZVzVqWlZkdmNtdGxjbk1nVjJobGRHaGxjaUIwYnlCMWMyVWdjR0Z5WVd4c1pXd2daR2x6ZEdGdVkyVWdZMjl0Y0hWMFlYUnBiMjR1WEc0Z0lDQXFJRUIwYUhKdmQzTWdlMFZ5Y205eWZTQkpaaUIwYUdVZ1pXMWlaV1JrYVc1bklHMWxkR2h2WkNCM1lYTWdibTkwSUdadmRXNWtMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdGhibmw5SUVOaGNuUmxjMmxoYmlCamIyOXlaR2x1WVhSbElHOW1JSFJvYVhNZ1pXMWlaV1JrYVc1bklHRnVaQ0JrYVhOMFlXNWpaU0J0WVhSeWFYZ2dkMmhsY21VZ1lYQndiR2xqWVdKc1pTNWNiaUFnSUNvZ1FHMWxiV0psY205bUlFUnBiV1Z1YzJsdmJtRnNhWFI1VW1Wa2RXTmxjbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR0Z6ZVc1aklIUnlZVzV6Wm05eWJTaDBjbUZ1YzNCdmMyVTZJR0p2YjJ4bFlXNGdQU0JtWVd4elpTd2djR0Z5WVd4c1pXeEVhWE4wWVc1alpWZHZjbXRsY25NL09pQmliMjlzWldGdUtUb2dVSEp2YldselpUeEpVbVZrZFdObFJHbHRaVzV6YVc5dVlXeHBkSGxTWlhOMWJIUStJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NXlaV1IxWTJWeUlEMDlQU0IxYm1SbFptbHVaV1FwWEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMUpsWkhWalpYSWdkMkZ6SUc1dmRDQmtaV1pwYm1Wa0xpY3BPMXh1WEc0Z0lDQWdiR1YwSUh0bGJXSmxaR1JwYm1jc0lHUnBjM1JoYm1ObGZTQTlJR0YzWVdsMElIUm9hWE11Y21Wa2RXTmxjaTUwY21GdWMyWnZjbTBvY0dGeVlXeHNaV3hFYVhOMFlXNWpaVmR2Y210bGNuTXBPMXh1WEc0Z0lDQWdhV1lnS0hSeVlXNXpjRzl6WlNsY2JpQWdJQ0FnSUdWdFltVmtaR2x1WnlBOUlIUnlZVzV6Y0c5elpVMWhkSEpwZUNobGJXSmxaR1JwYm1jcE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUh0a2FYTjBZVzVqWlRvZ1pHbHpkR0Z1WTJVc0lHVnRZbVZrWkdsdVp6b2daVzFpWldSa2FXNW5mVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTV6SUcxbGRISnBZM01nWVhaaGFXeGhZbXhsSUdKNUlIUjVjR1V1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1FYWmhhV3hoWW14bFJHRjBZVlI1Y0dWemZTQjBlWEJsVG1GdFpTQjBlWEJsSUc1aGJXVmNiaUFnSUNvZ1FISmxkSFZ5YmlCN2MzUnlhVzVuVzExOUlFMWxkSEpwWXlCdVlXMWxjeUIzYUdsamFDQmxlSEJsWTNSeklIUm9aU0JuYVhabGJpQmtZWFJoSUhSNWNHVmNiaUFnSUNvZ1FHMWxiV0psY205bUlFUnBiV1Z1YzJsdmJtRnNhWFI1VW1Wa2RXTmxjbHh1SUNBZ0tpOWNiaUFnYzNSaGRHbGpJR0YyWVdsc1lXSnNaVTFsZEhKcFkzTkNlVlI1Y0dVb2RIbHdaVTVoYldVNklFRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGN5a2dlMXh1SUNBZ0lISmxkSFZ5YmlCUFltcGxZM1F1YTJWNWN5aEJkbUZwYkdGaWJHVk5aWFJ5YVdOelczUjVjR1ZPWVcxbFhTazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVjeUJrYVcxbGJuTnBiMjVoYkdsMGVTQnlaV1IxWTNScGIyNGdiV1YwYUc5a2N5QmhkbUZwYkdGaWJHVXVYRzRnSUNBcVhHNGdJQ0FxSUVCeVpXRmtiMjVzZVZ4dUlDQWdLaUJBYldWdFltVnliMllnUkdsdFpXNXphVzl1WVd4cGRIbFNaV1IxWTJWeVhHNGdJQ0FxTDF4dUlDQnpkR0YwYVdNZ1oyVjBJR0YyWVdsc1lXSnNaVTFsZEdodlpITW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlFOWlhbVZqZEM1clpYbHpLRUYyWVdsc1lXSnNaVkpsWkhWalpYSnpLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTV6SUcxbGRISnBZM01nWVhaaGFXeGhZbXhsTGx4dUlDQWdLbHh1SUNBZ0tpQkFjbVZoWkc5dWJIbGNiaUFnSUNvZ1FHMWxiV0psY205bUlFUnBiV1Z1YzJsdmJtRnNhWFI1VW1Wa2RXTmxjbHh1SUNBZ0tpOWNiaUFnYzNSaGRHbGpJR2RsZENCaGRtRnBiR0ZpYkdWTlpYUnlhV056S0NrZ2UxeHVJQ0FnSUd4bGRDQmhibk02SUhOMGNtbHVaMXRkSUQwZ1cxMDdYRzRnSUNBZ1QySnFaV04wTG5aaGJIVmxjeWhCZG1GcGJHRmliR1ZOWlhSeWFXTnpLUzVtYjNKRllXTm9LQ2h2WW1vcElEMCtJSHRjYmlBZ0lDQWdJR052Ym5OMElHRnljbUY1SUQwZ1QySnFaV04wTG5aaGJIVmxjeWh2WW1vcE8xeHVJQ0FnSUNBZ1lXNXpJRDBnV3k0dUxtRnVjeXdnTGk0dVlYSnlZWGxkTzF4dUlDQWdJSDBwTzF4dUlDQWdJSEpsZEhWeWJpQmhibk03WEc0Z0lIMWNibjFjYmlKZGZRPT0iLCJpbXBvcnQgeyBpc05pbCB9IGZyb20gJy4vdXRpbHMnO1xuLyoqIERpc3RhbmNlIG1hdHJpeCBjbGFzcyBjb21wYXRpYmxlIHdpdGggZGF0YSBzdHJ1Y3R1cmUgb2Ygc2NpcHkuc3BhdGlhbC5kaXN0YW5jZS5wZGlzdCAqL1xuZXhwb3J0IGNsYXNzIERpc3RhbmNlTWF0cml4IHtcbiAgICBnZXQgZGF0YSgpIHsgcmV0dXJuIHRoaXMuX2RhdGE7IH1cbiAgICBnZXQgc2l6ZSgpIHsgcmV0dXJuIHRoaXMuX3NpemU7IH1cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge0Zsb2F0MzJBcnJheX0gZGF0YSBEaXN0YW5jZSBkYXRhXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHNpemUgTnVtYmVyIG9mIG9yaWdpbmFsIG9ic2VydmF0aW9uc1xuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGRhdGEsIHNpemUpIHtcbiAgICAgICAgaWYgKHNpemUgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoZGF0YSA9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcmd1bWVudHMgZXJyb3I6IGRhdGEgb3Igc2l6ZSBpcyByZXF1aXJlZC4nKTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xuICAgICAgICAgICAgdGhpcy5fc2l6ZSA9ICgxICsgTWF0aC5zcXJ0KDEgKyA0ICogMiAqIHRoaXMuX2RhdGEubGVuZ3RoKSkgLyAyO1xuICAgICAgICAgICAgaWYgKHRoaXMuX3NpemUgIT0gTWF0aC5mbG9vcih0aGlzLl9zaXplKSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGF0YSBsZW5ndGggJHt0aGlzLl9kYXRhLmxlbmd0aH0gbGVhZHMgdG8gbm9uIGludGVnZXIgc2l6ZSAke3RoaXMuX3NpemV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zaXplID0gc2l6ZTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFMZW5ndGggPSBzaXplICogKHNpemUgLSAxKSAvIDI7XG4gICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aCAhPSBkYXRhTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGF0YSBsZW5ndGguIE9ic2VydmF0aW9ucyBzaXplICR7c2l6ZX0gcmVxdWlyZXMgZGF0YSBsZW5ndGggJHtkYXRhTGVuZ3RofS5gKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRhID0gZGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGEgPSBuZXcgRmxvYXQzMkFycmF5KGRhdGFMZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIF9saW5lYXJpemVJSihpLCBqKSB7XG4gICAgICAgIGlmICghKGkgPCBqKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignaSBtdXN0IGJlIGxlc3MgdGhhbiBqJyk7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaXplICogaSArIGogLSBNYXRoLmZsb29yKCgoaSArIDIpICogKGkgKyAxKSkgLyAyKTtcbiAgICB9XG4gICAgZ2V0KGksIGopIHtcbiAgICAgICAgaWYgKGkgPT0gailcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICBlbHNlIGlmIChpIDwgailcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhW3RoaXMuX2xpbmVhcml6ZUlKKGksIGopXTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFbdGhpcy5fbGluZWFyaXplSUooaiwgaSldO1xuICAgIH1cbiAgICBzZXQoaSwgaiwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5fZGF0YVt0aGlzLl9saW5lYXJpemVJSihpLCBqKV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgc3RhdGljIGNhbGMobGlzdCwgbWV0aG9kKSB7XG4gICAgICAgIGNvbnN0IHNpemUgPSBsaXN0Lmxlbmd0aDtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IERpc3RhbmNlTWF0cml4KHVuZGVmaW5lZCwgc2l6ZSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBzaXplOyBqKyspIHtcbiAgICAgICAgICAgICAgICAvLyBpZiBhbnkgb2YgdGhlIHZhbHVlcyBpcyBudWxsLCBzZXQgZGlzdGFuY2UgdG8gMVxuICAgICAgICAgICAgICAgIHJlcy5zZXQoaSwgaiwgIWlzTmlsKGxpc3RbaV0pICYmICFpc05pbChsaXN0W2pdKSA/IG1ldGhvZChsaXN0W2ldLCBsaXN0W2pdKSA6IDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICAgIC8vIHNxdWFyZXMgZWFjaCB2YWx1ZSBpbiBtYXRyaXggaW4gcGxhY2VcbiAgICBzcXVhcmUoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fZGF0YS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbaV0gPSB0aGlzLl9kYXRhW2ldICoqIDI7XG4gICAgfVxuICAgIC8vIGFkZHMgYW5vdGhlciBtYXRyaXggdG8gdGhpcyBvbmUgaW4gcGxhY2VcbiAgICBhZGQob3RoZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuX3NpemUgIT09IG90aGVyLl9zaXplKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNYXRyaWNlcyBtdXN0IGhhdmUgdGhlIHNhbWUgc2l6ZS4gVGhpcyBzaXplOiAke3RoaXMuX3NpemV9LCBvdGhlciBzaXplOiAke290aGVyLl9zaXplfWApO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2RhdGEubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB0aGlzLl9kYXRhW2ldICs9IG90aGVyLl9kYXRhW2ldO1xuICAgIH1cbiAgICAvLyBzcXVhcmUgcm9vdCBlYWNoIHZhbHVlIGluIG1hdHJpeCBpbiBwbGFjZVxuICAgIHNxcnQoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fZGF0YS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbaV0gPSBNYXRoLnNxcnQodGhpcy5fZGF0YVtpXSk7XG4gICAgfVxuICAgIC8vbm9ybWlsemUgZGlzdGFuY2UgbWF0cml4IGluIHBsYWNlXG4gICAgbm9ybWFsaXplKCkge1xuICAgICAgICBsZXQgbWluID0gMDtcbiAgICAgICAgbGV0IG1heCA9IHRoaXMuX2RhdGFbMF07XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2RhdGFbaV0gPCBtaW4pXG4gICAgICAgICAgICAgICAgbWluID0gdGhpcy5fZGF0YVtpXTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9kYXRhW2ldID4gbWF4KVxuICAgICAgICAgICAgICAgIG1heCA9IHRoaXMuX2RhdGFbaV07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmFuZ2UgPSBtYXggLSBtaW47XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fZGF0YS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbaV0gPSByYW5nZSA9PT0gMCA/IHRoaXMuX2RhdGFbaV0gLSBtaW4gOiAodGhpcy5fZGF0YVtpXSAtIG1pbikgLyAobWF4IC0gbWluKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laR2x6ZEdGdVkyVXRiV0YwY21sNExtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpWkdsemRHRnVZMlV0YldGMGNtbDRMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVkQkxFOUJRVThzUlVGQlF5eExRVUZMTEVWQlFVTXNUVUZCVFN4VFFVRlRMRU5CUVVNN1FVRkZPVUlzTWtaQlFUSkdPMEZCUXpOR0xFMUJRVTBzVDBGQlR5eGpRVUZqTzBsQlNYcENMRWxCUVVrc1NVRkJTU3hMUVVGdFFpeFBRVUZQTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSUzlETEVsQlFVa3NTVUZCU1N4TFFVRmhMRTlCUVU4c1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGZWtNN096dFBRVWRITzBsQlEwZ3NXVUZCV1N4SlFVRnRRaXhGUVVGRkxFbEJRV0U3VVVGRE5VTXNTVUZCU1N4SlFVRkpMRWxCUVVrc1UwRkJVeXhGUVVGRk8xbEJRM0pDTEVsQlFVa3NTVUZCU1N4SlFVRkpMRk5CUVZNN1owSkJRVVVzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl3MFEwRkJORU1zUTBGQlF5eERRVUZETzFsQlJYSkdMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlN5eERRVUZETzFsQlEyNUNMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTJoRkxFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NTVUZCU1N4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTTdaMEpCUTNSRExFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNkVUpCUVhWQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN3NFFrRkJPRUlzU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRMRU5CUVVNN1UwRkRka2M3WVVGQlRUdFpRVU5NTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRE8xbEJRMnhDTEUxQlFVMHNWVUZCVlN4SFFVRlhMRWxCUVVrc1IwRkJSeXhEUVVGRExFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRha1FzU1VGQlNTeEpRVUZKTEVWQlFVVTdaMEpCUTFJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEZWQlFWVTdiMEpCUXpOQ0xFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNNRU5CUVRCRExFbEJRVWtzZVVKQlFYbENMRlZCUVZVc1IwRkJSeXhEUVVGRExFTkJRVU03WjBKQlEzaEhMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETzJGQlEyNUNPMmxDUVVGTk8yZENRVU5NTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3haUVVGWkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdZVUZETTBNN1UwRkRSanRKUVVOSUxFTkJRVU03U1VGRlR5eFpRVUZaTEVOQlFVTXNRMEZCVXl4RlFVRkZMRU5CUVZNN1VVRkRka01zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVGRkxFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlF6dFJRVU4yUkN4UFFVRlBMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOc1JTeERRVUZETzBsQlJVUXNSMEZCUnl4RFFVRkRMRU5CUVZNc1JVRkJSU3hEUVVGVE8xRkJRM1JDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNN1dVRkRVaXhQUVVGUExFTkJRVU1zUTBGQlF6dGhRVU5PTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNN1dVRkRXaXhQUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXpzN1dVRkZNME1zVDBGQlR5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRMME1zUTBGQlF6dEpRVVZFTEVkQlFVY3NRMEZCUXl4RFFVRlRMRVZCUVVVc1EwRkJVeXhGUVVGRkxFdEJRV0U3VVVGRGNrTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF6dEpRVU01UXl4RFFVRkRPMGxCUlVRc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlR5eEpRVUZ4UWl4RlFVRkZMRTFCUVc5RE8xRkJRek5GTEUxQlFVMHNTVUZCU1N4SFFVRlhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRGFrTXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hqUVVGakxFTkJRVU1zVTBGQlV5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTJoRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZETjBJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdaMEpCUTJwRExHdEVRVUZyUkR0blFrRkRiRVFzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU5zUmp0VFFVTkdPMUZCUTBRc1QwRkJUeXhIUVVGSExFTkJRVU03U1VGRFlpeERRVUZETzBsQlJVUXNkME5CUVhkRE8wbEJRMnBETEUxQlFVMDdVVUZEV0N4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEzaERMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdTVUZEZGtNc1EwRkJRenRKUVVWRUxESkRRVUV5UXp0SlFVTndReXhIUVVGSExFTkJRVU1zUzBGQmNVSTdVVUZET1VJc1NVRkJTU3hKUVVGSkxFTkJRVU1zUzBGQlN5eExRVUZMTEV0QlFVc3NRMEZCUXl4TFFVRkxPMWxCUXpWQ0xFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNaMFJCUVdkRUxFbEJRVWtzUTBGQlF5eExRVUZMTEdsQ1FVRnBRaXhMUVVGTExFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTXNRMEZCUXp0UlFVTTFSeXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTNoRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTndReXhEUVVGRE8wbEJSVVFzTkVOQlFUUkRPMGxCUTNKRExFbEJRVWs3VVVGRFZDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRM2hETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZETjBNc1EwRkJRenRKUVVWRUxHMURRVUZ0UXp0SlFVTTFRaXhUUVVGVE8xRkJRMlFzU1VGQlNTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTFvc1NVRkJTU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONFFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRE1VTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVYzdaMEpCUTNKQ0xFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM1JDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITzJkQ1FVTnlRaXhIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVOMlFqdFJRVU5FTEUxQlFVMHNTMEZCU3l4SFFVRkhMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU03VVVGRGVFSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU40UXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEV0QlFVc3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRE5VWXNRMEZCUXp0RFFVTkdJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJQ29nWVhNZ1ozSnZheUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2WjNKdmF5YzdYRzVwYlhCdmNuUWdLaUJoY3lCMWFTQm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZkV2tuTzF4dWFXMXdiM0owSUNvZ1lYTWdSRWNnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDJSbkp6dGNibWx0Y0c5eWRDQjdhWE5PYVd4OUlHWnliMjBnSnk0dmRYUnBiSE1uTzF4dVhHNHZLaW9nUkdsemRHRnVZMlVnYldGMGNtbDRJR05zWVhOeklHTnZiWEJoZEdsaWJHVWdkMmwwYUNCa1lYUmhJSE4wY25WamRIVnlaU0J2WmlCelkybHdlUzV6Y0dGMGFXRnNMbVJwYzNSaGJtTmxMbkJrYVhOMElDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1JHbHpkR0Z1WTJWTllYUnlhWGdnZTF4dUlDQmZaR0YwWVRvZ1JteHZZWFF6TWtGeWNtRjVPMXh1SUNCZmMybDZaVG9nYm5WdFltVnlPMXh1WEc0Z0lHZGxkQ0JrWVhSaEtDazZJRVpzYjJGME16SkJjbkpoZVNCN0lISmxkSFZ5YmlCMGFHbHpMbDlrWVhSaE95QjlYRzVjYmlBZ1oyVjBJSE5wZW1Vb0tUb2diblZ0WW1WeUlIc2djbVYwZFhKdUlIUm9hWE11WDNOcGVtVTdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRSEJoY21GdElIdEdiRzloZERNeVFYSnlZWGw5SUdSaGRHRWdSR2x6ZEdGdVkyVWdaR0YwWVZ4dUlDQWdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdjMmw2WlNCT2RXMWlaWElnYjJZZ2IzSnBaMmx1WVd3Z2IySnpaWEoyWVhScGIyNXpYRzRnSUNBcUwxeHVJQ0JqYjI1emRISjFZM1J2Y2loa1lYUmhQem9nUm14dllYUXpNa0Z5Y21GNUxDQnphWHBsUHpvZ2JuVnRZbVZ5S1NCN1hHNGdJQ0FnYVdZZ0tITnBlbVVnUFQwZ2RXNWtaV1pwYm1Wa0tTQjdYRzRnSUNBZ0lDQnBaaUFvWkdGMFlTQTlQU0IxYm1SbFptbHVaV1FwSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduUVhKbmRXMWxiblJ6SUdWeWNtOXlPaUJrWVhSaElHOXlJSE5wZW1VZ2FYTWdjbVZ4ZFdseVpXUXVKeWs3WEc1Y2JpQWdJQ0FnSUhSb2FYTXVYMlJoZEdFZ1BTQmtZWFJoSVR0Y2JpQWdJQ0FnSUhSb2FYTXVYM05wZW1VZ1BTQW9NU0FySUUxaGRHZ3VjM0Z5ZENneElDc2dOQ0FxSURJZ0tpQjBhR2x6TGw5a1lYUmhMbXhsYm1kMGFDa3BJQzhnTWp0Y2JpQWdJQ0FnSUdsbUlDaDBhR2x6TGw5emFYcGxJQ0U5SUUxaGRHZ3VabXh2YjNJb2RHaHBjeTVmYzJsNlpTa3BYRzRnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdTVzUyWVd4cFpDQmtZWFJoSUd4bGJtZDBhQ0FrZTNSb2FYTXVYMlJoZEdFdWJHVnVaM1JvZlNCc1pXRmtjeUIwYnlCdWIyNGdhVzUwWldkbGNpQnphWHBsSUNSN2RHaHBjeTVmYzJsNlpYMWdLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVmYzJsNlpTQTlJSE5wZW1VN1hHNGdJQ0FnSUNCamIyNXpkQ0JrWVhSaFRHVnVaM1JvT2lCdWRXMWlaWElnUFNCemFYcGxJQ29nS0hOcGVtVWdMU0F4S1NBdklESTdYRzRnSUNBZ0lDQnBaaUFvWkdGMFlTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1pHRjBZUzVzWlc1bmRHZ2dJVDBnWkdGMFlVeGxibWQwYUNsY2JpQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1lFbHVkbUZzYVdRZ1pHRjBZU0JzWlc1bmRHZ3VJRTlpYzJWeWRtRjBhVzl1Y3lCemFYcGxJQ1I3YzJsNlpYMGdjbVZ4ZFdseVpYTWdaR0YwWVNCc1pXNW5kR2dnSkh0a1lYUmhUR1Z1WjNSb2ZTNWdLVHRjYmlBZ0lDQWdJQ0FnZEdocGN5NWZaR0YwWVNBOUlHUmhkR0U3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0IwYUdsekxsOWtZWFJoSUQwZ2JtVjNJRVpzYjJGME16SkJjbkpoZVNoa1lYUmhUR1Z1WjNSb0tUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElGOXNhVzVsWVhKcGVtVkpTaWhwT2lCdWRXMWlaWElzSUdvNklHNTFiV0psY2lrNklHNTFiV0psY2lCN1hHNGdJQ0FnYVdZZ0tDRW9hU0E4SUdvcEtTQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0oya2diWFZ6ZENCaVpTQnNaWE56SUhSb1lXNGdhaWNwTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TGw5emFYcGxJQ29nYVNBcklHb2dMU0JOWVhSb0xtWnNiMjl5S0Nnb2FTQXJJRElwSUNvZ0tHa2dLeUF4S1NrZ0x5QXlLVHRjYmlBZ2ZWeHVYRzRnSUdkbGRDaHBPaUJ1ZFcxaVpYSXNJR282SUc1MWJXSmxjaWtnZTF4dUlDQWdJR2xtSUNocElEMDlJR29wWEc0Z0lDQWdJQ0J5WlhSMWNtNGdNRHRjYmlBZ0lDQmxiSE5sSUdsbUlDaHBJRHdnYWlsY2JpQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxsOWtZWFJoVzNSb2FYTXVYMnhwYm1WaGNtbDZaVWxLS0drc0lHb3BYVHRjYmlBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZlpHRjBZVnQwYUdsekxsOXNhVzVsWVhKcGVtVkpTaWhxTENCcEtWMDdYRzRnSUgxY2JseHVJQ0J6WlhRb2FUb2diblZ0WW1WeUxDQnFPaUJ1ZFcxaVpYSXNJSFpoYkhWbE9pQnVkVzFpWlhJcElIdGNiaUFnSUNCMGFHbHpMbDlrWVhSaFczUm9hWE11WDJ4cGJtVmhjbWw2WlVsS0tHa3NJR29wWFNBOUlIWmhiSFZsTzF4dUlDQjlYRzVjYmlBZ2MzUmhkR2xqSUdOaGJHTThWRTlpYWo0b2JHbHpkRG9nU1c1a1pYaGhZbXhsUEZSUFltbytMQ0J0WlhSb2IyUTZJQ2hoT2lCVVQySnFMQ0JpT2lCVVQySnFLU0E5UGlCdWRXMWlaWElwT2lCRWFYTjBZVzVqWlUxaGRISnBlQ0I3WEc0Z0lDQWdZMjl1YzNRZ2MybDZaVG9nYm5WdFltVnlJRDBnYkdsemRDNXNaVzVuZEdnN1hHNGdJQ0FnWTI5dWMzUWdjbVZ6SUQwZ2JtVjNJRVJwYzNSaGJtTmxUV0YwY21sNEtIVnVaR1ZtYVc1bFpDd2djMmw2WlNrN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCemFYcGxPeUJwS3lzcElIdGNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHb2dQU0JwSUNzZ01Uc2dhaUE4SUhOcGVtVTdJR29yS3lrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJwWmlCaGJua2diMllnZEdobElIWmhiSFZsY3lCcGN5QnVkV3hzTENCelpYUWdaR2x6ZEdGdVkyVWdkRzhnTVZ4dUlDQWdJQ0FnSUNCeVpYTXVjMlYwS0drc0lHb3NJQ0ZwYzA1cGJDaHNhWE4wVzJsZEtTQW1KaUFoYVhOT2FXd29iR2x6ZEZ0cVhTa2dQeUJ0WlhSb2IyUW9iR2x6ZEZ0cFhTd2diR2x6ZEZ0cVhTa2dPaUF4S1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlISmxjenRjYmlBZ2ZWeHVYRzRnSUM4dklITnhkV0Z5WlhNZ1pXRmphQ0IyWVd4MVpTQnBiaUJ0WVhSeWFYZ2dhVzRnY0d4aFkyVmNiaUFnY0hWaWJHbGpJSE54ZFdGeVpTZ3BJSHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFJvYVhNdVgyUmhkR0V1YkdWdVozUm9PeUJwS3lzcFhHNGdJQ0FnSUNCMGFHbHpMbDlrWVhSaFcybGRJRDBnZEdocGN5NWZaR0YwWVZ0cFhTQXFLaUF5TzF4dUlDQjlYRzVjYmlBZ0x5OGdZV1JrY3lCaGJtOTBhR1Z5SUcxaGRISnBlQ0IwYnlCMGFHbHpJRzl1WlNCcGJpQndiR0ZqWlZ4dUlDQndkV0pzYVdNZ1lXUmtLRzkwYUdWeU9pQkVhWE4wWVc1alpVMWhkSEpwZUNrZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TGw5emFYcGxJQ0U5UFNCdmRHaGxjaTVmYzJsNlpTbGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loZ1RXRjBjbWxqWlhNZ2JYVnpkQ0JvWVhabElIUm9aU0J6WVcxbElITnBlbVV1SUZSb2FYTWdjMmw2WlRvZ0pIdDBhR2x6TGw5emFYcGxmU3dnYjNSb1pYSWdjMmw2WlRvZ0pIdHZkR2hsY2k1ZmMybDZaWDFnS1R0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUhSb2FYTXVYMlJoZEdFdWJHVnVaM1JvT3lCcEt5c3BYRzRnSUNBZ0lDQjBhR2x6TGw5a1lYUmhXMmxkSUNzOUlHOTBhR1Z5TGw5a1lYUmhXMmxkTzF4dUlDQjlYRzVjYmlBZ0x5OGdjM0YxWVhKbElISnZiM1FnWldGamFDQjJZV3gxWlNCcGJpQnRZWFJ5YVhnZ2FXNGdjR3hoWTJWY2JpQWdjSFZpYkdsaklITnhjblFvS1NCN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCMGFHbHpMbDlrWVhSaExteGxibWQwYURzZ2FTc3JLVnh1SUNBZ0lDQWdkR2hwY3k1ZlpHRjBZVnRwWFNBOUlFMWhkR2d1YzNGeWRDaDBhR2x6TGw5a1lYUmhXMmxkS1R0Y2JpQWdmVnh1WEc0Z0lDOHZibTl5Yldsc2VtVWdaR2x6ZEdGdVkyVWdiV0YwY21sNElHbHVJSEJzWVdObFhHNGdJSEIxWW14cFl5QnViM0p0WVd4cGVtVW9LU0I3WEc0Z0lDQWdiR1YwSUcxcGJpQTlJREE3WEc0Z0lDQWdiR1YwSUcxaGVDQTlJSFJvYVhNdVgyUmhkR0ZiTUYwN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCMGFHbHpMbDlrWVhSaExteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0JwWmlBb2RHaHBjeTVmWkdGMFlWdHBYU0E4SUcxcGJpbGNiaUFnSUNBZ0lDQWdiV2x1SUQwZ2RHaHBjeTVmWkdGMFlWdHBYVHRjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMbDlrWVhSaFcybGRJRDRnYldGNEtWeHVJQ0FnSUNBZ0lDQnRZWGdnUFNCMGFHbHpMbDlrWVhSaFcybGRPMXh1SUNBZ0lIMWNiaUFnSUNCamIyNXpkQ0J5WVc1blpTQTlJRzFoZUNBdElHMXBianRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFJvYVhNdVgyUmhkR0V1YkdWdVozUm9PeUJwS3lzcFhHNGdJQ0FnSUNCMGFHbHpMbDlrWVhSaFcybGRJRDBnY21GdVoyVWdQVDA5SURBZ1B5QjBhR2x6TGw5a1lYUmhXMmxkSUMwZ2JXbHVJRG9nS0hSb2FYTXVYMlJoZEdGYmFWMGdMU0J0YVc0cElDOGdLRzFoZUNBdElHMXBiaWs3WEc0Z0lIMWNibjFjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCSmJtUmxlR0ZpYkdVOFZFOWlhajRnZTF4dUlDQmJhVzVrWlhnNklHNTFiV0psY2wwNklGUlBZbW83WEc0Z0lHZGxkQ0JzWlc1bmRHZ29LVG9nYm5WdFltVnlPMXh1ZlZ4dUlsMTkiLCJpbXBvcnQgeyBnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlIH0gZnJvbSBcIi4uL2Rpc3RhbmNlLW1ldHJpY3MtbWV0aG9kc1wiO1xuaW1wb3J0IHsgQml0QXJyYXlNZXRyaWNzTmFtZXMgfSBmcm9tIFwiLi4vdHlwZWQtbWV0cmljc1wiO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tIFwiLi91dGlsc1wiO1xuZXhwb3J0IGNsYXNzIFNwYXJzZU1hdHJpeFNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLl93b3JrZXJDb3VudCA9IE1hdGgubWF4KG5hdmlnYXRvci5oYXJkd2FyZUNvbmN1cnJlbmN5IC0gMiwgMSk7XG4gICAgICAgIHRoaXMuX3dvcmtlcnMgPSBuZXcgQXJyYXkodGhpcy5fd29ya2VyQ291bnQpLmZpbGwobnVsbClcbiAgICAgICAgICAgIC5tYXAoKCkgPT4gbmV3IFdvcmtlcihuZXcgVVJMKCcuL3NwYXJzZS1tYXRyaXgtd29ya2VyJywgaW1wb3J0Lm1ldGEudXJsKSkpO1xuICAgIH1cbiAgICBhc3luYyBjYWxjKHZhbHVlcywgZm5OYW1lLCB0aHJlc2hvbGQsIG9wdHMpIHtcbiAgICAgICAgY29uc3QgbWF0U2l6ZSA9IHZhbHVlcy5sZW5ndGggKiAodmFsdWVzLmxlbmd0aCAtIDEpIC8gMjtcbiAgICAgICAgY29uc3QgY2h1bmtTaXplID0gTWF0aC5mbG9vcihtYXRTaXplIC8gdGhpcy5fd29ya2VyQ291bnQpO1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IG5ldyBBcnJheSh0aGlzLl93b3JrZXJDb3VudCk7XG4gICAgICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IHRoaXMuX3dvcmtlckNvdW50OyBpZHgrKykge1xuICAgICAgICAgICAgcHJvbWlzZXNbaWR4XSA9IG5ldyBQcm9taXNlKChyZXNvbHZlV29ya2VyLCByZWplY3RXb3JrZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydElkeCA9IGlkeCAqIGNodW5rU2l6ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmRJZHggPSBpZHggPT09IHRoaXMuX3dvcmtlckNvdW50IC0gMSA/IG1hdFNpemUgOiAoaWR4ICsgMSkgKiBjaHVua1NpemU7XG4gICAgICAgICAgICAgICAgdGhpcy5fd29ya2Vyc1tpZHhdLnBvc3RNZXNzYWdlKHsgdmFsdWVzLCBzdGFydElkeCwgZW5kSWR4LCB0aHJlc2hvbGQsIGZuTmFtZSwgb3B0cyB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLl93b3JrZXJzW2lkeF0ub25tZXNzYWdlID0gKHsgZGF0YTogeyBlcnJvciwgaSwgaiwgZGlzdGFuY2UgfSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0V29ya2VyKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3dvcmtlcnNbaWR4XS50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVXb3JrZXIoeyBpLCBqLCBkaXN0YW5jZSwgaWR4IH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgICAgIGNvbnN0IGZ1bGxTaXplID0gcmVzdWx0cy5yZWR1Y2UoKGFjYywgdmFsKSA9PiBhY2MgKyB2YWwuaS5sZW5ndGgsIDApO1xuICAgICAgICBjb25zdCBpID0gbmV3IEludDMyQXJyYXkoZnVsbFNpemUpO1xuICAgICAgICBjb25zdCBqID0gbmV3IEludDMyQXJyYXkoZnVsbFNpemUpO1xuICAgICAgICBjb25zdCBkaXN0YW5jZSA9IG5ldyBGbG9hdDMyQXJyYXkoZnVsbFNpemUpO1xuICAgICAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICAgICAgZm9yIChjb25zdCByZXMgb2YgcmVzdWx0cykge1xuICAgICAgICAgICAgaS5zZXQocmVzLmksIG9mZnNldCk7XG4gICAgICAgICAgICBqLnNldChyZXMuaiwgb2Zmc2V0KTtcbiAgICAgICAgICAgIGRpc3RhbmNlLnNldChyZXMuZGlzdGFuY2UsIG9mZnNldCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gcmVzLmkubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGksIGosIGRpc3RhbmNlIH07XG4gICAgfVxuICAgIHN0YXRpYyBjYWxjU3luYyh2YWx1ZXMsIGZuTmFtZSwgZGlzdGFuY2VGbiwgdGhyZXNob2xkKSB7XG4gICAgICAgIGNvbnN0IGkgPSBbXTtcbiAgICAgICAgY29uc3QgaiA9IFtdO1xuICAgICAgICBjb25zdCBkaXN0YW5jZXMgPSBbXTtcbiAgICAgICAgbGV0IGNudCA9IDA7XG4gICAgICAgIGxldCBtaSA9IDA7XG4gICAgICAgIGxldCBtaiA9IDA7XG4gICAgICAgIGNvbnN0IGZ1bGxTaXplID0gdmFsdWVzLmxlbmd0aCAqICh2YWx1ZXMubGVuZ3RoIC0gMSkgLyAyO1xuICAgICAgICB3aGlsZSAoY250IDwgZnVsbFNpemUpIHtcbiAgICAgICAgICAgIC8vY29uc3QgdmFsdWUgPSBzZXExTGlzdFttaV0gJiYgc2VxMUxpc3RbbWpdID8gaGFtbWluZyhzZXExTGlzdFttaV0sIHNlcTFMaXN0W21qXSkgOiAwO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAhaXNOaWwodmFsdWVzW21pXSkgJiYgIWlzTmlsKHZhbHVlc1ttal0pID9cbiAgICAgICAgICAgICAgICBkaXN0YW5jZUZuKHZhbHVlc1ttaV0sIHZhbHVlc1ttal0pIDogMTtcbiAgICAgICAgICAgIGNvbnN0IHNpbWlsYXJpdHkgPSBPYmplY3QudmFsdWVzKEJpdEFycmF5TWV0cmljc05hbWVzKS5zb21lKChhKSA9PiBhID09PSBmbk5hbWUpID8gZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZSh2YWx1ZSkgOiAxIC0gdmFsdWU7XG4gICAgICAgICAgICBpZiAoc2ltaWxhcml0eSA+PSB0aHJlc2hvbGQpIHtcbiAgICAgICAgICAgICAgICBpLnB1c2gobWkpO1xuICAgICAgICAgICAgICAgIGoucHVzaChtaik7XG4gICAgICAgICAgICAgICAgZGlzdGFuY2VzLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY250Kys7XG4gICAgICAgICAgICBtaisrO1xuICAgICAgICAgICAgaWYgKG1qID09PSB2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgbWkrKztcbiAgICAgICAgICAgICAgICBtaiA9IG1pICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpQXJyYXkgPSBuZXcgSW50MzJBcnJheShpKTtcbiAgICAgICAgY29uc3QgakFycmF5ID0gbmV3IEludDMyQXJyYXkoaik7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGRpc3RhbmNlcyk7XG4gICAgICAgIHJldHVybiB7IGk6IGlBcnJheSwgajogakFycmF5LCBkaXN0YW5jZTogZGlzdGFuY2VBcnJheSB9O1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMzQmhjbk5sTFcxaGRISnBlQzF6WlhKMmFXTmxMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaWMzQmhjbk5sTFcxaGRISnBlQzF6WlhKMmFXTmxMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxFOUJRVThzUlVGQlJTeDVRa0ZCZVVJc1JVRkJSU3hOUVVGTkxEWkNRVUUyUWl4RFFVRkRPMEZCUTNoRkxFOUJRVThzUlVGQlJTeHZRa0ZCYjBJc1JVRkJlVUlzVFVGQlRTeHJRa0ZCYTBJc1EwRkJRenRCUVVNdlJTeFBRVUZQTEVWQlFVVXNTMEZCU3l4RlFVRkZMRTFCUVUwc1UwRkJVeXhEUVVGRE8wRkJSV2hETEUxQlFVMHNUMEZCVHl4dFFrRkJiVUk3U1VGSE5VSTdVVUZEUlN4SlFVRkpMRU5CUVVNc1dVRkJXU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRMRzFDUVVGdFFpeEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOdVJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRE8yRkJRM0JFTEVkQlFVY3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhKUVVGSkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4M1FrRkJkMElzUlVGQlJTeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU12UlN4RFFVRkRPMGxCUlUwc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlNTeE5RVUVyUWl4RlFVRkZMRTFCUVc5Q0xFVkJRVVVzVTBGQmFVSXNSVUZCUlN4SlFVRjVRanRSUVVOMFNDeE5RVUZOTEU5QlFVOHNSMEZCUnl4TlFVRk5MRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGVFUXNUVUZCVFN4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8xRkJRekZFTEUxQlFVMHNVVUZCVVN4SFFVTmFMRWxCUVVrc1MwRkJTeXhEUVVFclJTeEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNN1VVRkROMGNzUzBGQlN5eEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRMRVZCUVVVc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVXNSMEZCUnl4RlFVRkZMRVZCUVVVN1dVRkRhRVFzVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zWVVGQllTeEZRVUZGTEZsQlFWa3NSVUZCUlN4RlFVRkZPMmRDUVVNeFJDeE5RVUZOTEZGQlFWRXNSMEZCUnl4SFFVRkhMRWRCUVVjc1UwRkJVeXhEUVVGRE8yZENRVU5xUXl4TlFVRk5MRTFCUVUwc1IwRkJSeXhIUVVGSExFdEJRVXNzU1VGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzVTBGQlV5eERRVUZETzJkQ1FVTXZSU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRmRCUVZjc1EwRkJReXhGUVVGRExFMUJRVTBzUlVGQlJTeFJRVUZSTEVWQlFVVXNUVUZCVFN4RlFVRkZMRk5CUVZNc1JVRkJSU3hOUVVGTkxFVkJRVVVzU1VGQlNTeEZRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRjRVlzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFZEJRVWNzUTBGQlF5eEZRVUZETEVsQlFVa3NSVUZCUlN4RlFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEZGQlFWRXNSVUZCUXl4RlFVRkRMRVZCUVZFc1JVRkJSVHR2UWtGRGRrVXNTVUZCU1N4TFFVRkxMRVZCUVVVN2QwSkJRVVVzV1VGQldTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPM0ZDUVVGRk8zbENRVUZOTzNkQ1FVTjJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRE8zZENRVU12UWl4aFFVRmhMRU5CUVVNc1JVRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEZGQlFWRXNSVUZCUlN4SFFVRkhMRVZCUVVNc1EwRkJReXhEUVVGRE8zRkNRVU4wUXp0blFrRkRTQ3hEUVVGRExFTkJRVU03V1VGRFNpeERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTktPMUZCUlVRc1RVRkJUU3hQUVVGUExFZEJRVWNzVFVGQlRTeFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8xRkJRelZETEUxQlFVMHNVVUZCVVN4SFFVRkhMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRVZCUVVVc1EwRkJReXhIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGNrVXNUVUZCVFN4RFFVRkRMRWRCUVVjc1NVRkJTU3hWUVVGVkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdVVUZEYmtNc1RVRkJUU3hEUVVGRExFZEJRVWNzU1VGQlNTeFZRVUZWTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1VVRkRia01zVFVGQlRTeFJRVUZSTEVkQlFVY3NTVUZCU1N4WlFVRlpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03VVVGRE5VTXNTVUZCU1N4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMllzUzBGQlN5eE5RVUZOTEVkQlFVY3NTVUZCU1N4UFFVRlBMRVZCUVVVN1dVRkRla0lzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzFsQlEzSkNMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenRaUVVOeVFpeFJRVUZSTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhSUVVGUkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdXVUZEYmtNc1RVRkJUU3hKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRPMU5CUTNoQ08xRkJRMFFzVDBGQlR5eEZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1VVRkJVU3hGUVVGRExFTkJRVU03U1VGRE1VSXNRMEZCUXp0SlFVVk5MRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVXNzVFVGQkswSXNSVUZCUlN4TlFVRnZRaXhGUVVGRkxGVkJRVzlDTEVWQlFVVXNVMEZCYVVJN1VVRkRka2dzVFVGQlRTeERRVUZETEVkQlFXRXNSVUZCUlN4RFFVRkRPMUZCUTNaQ0xFMUJRVTBzUTBGQlF5eEhRVUZoTEVWQlFVVXNRMEZCUXp0UlFVTjJRaXhOUVVGTkxGTkJRVk1zUjBGQllTeEZRVUZGTEVOQlFVTTdVVUZETDBJc1NVRkJTU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlExb3NTVUZCU1N4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMWdzU1VGQlNTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTFnc1RVRkJUU3hSUVVGUkxFZEJRVWNzVFVGQlRTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTNwRUxFOUJRVThzUjBGQlJ5eEhRVUZITEZGQlFWRXNSVUZCUlR0WlFVTnlRaXgxUmtGQmRVWTdXVUZEZGtZc1RVRkJUU3hMUVVGTExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEZEVRc1ZVRkJWU3hEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNwRExFMUJRVTBzVlVGQlZTeEhRVUZITEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNTMEZCU3l4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zZVVKQlFYbENMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN1dVRkRhRWtzU1VGQlNTeFZRVUZWTEVsQlFVa3NVMEZCVXl4RlFVRkZPMmRDUVVNelFpeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8yZENRVU5ZTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03WjBKQlExZ3NVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dGhRVU4yUWp0WlFVTkVMRWRCUVVjc1JVRkJSU3hEUVVGRE8xbEJRMDRzUlVGQlJTeEZRVUZGTEVOQlFVTTdXVUZEVEN4SlFVRkpMRVZCUVVVc1MwRkJTeXhOUVVGTkxFTkJRVU1zVFVGQlRTeEZRVUZGTzJkQ1FVTjRRaXhGUVVGRkxFVkJRVVVzUTBGQlF6dG5Ra0ZEVEN4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dGhRVU5pTzFOQlEwWTdVVUZGUkN4TlFVRk5MRTFCUVUwc1IwRkJSeXhKUVVGSkxGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTnFReXhOUVVGTkxFMUJRVTBzUjBGQlJ5eEpRVUZKTEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOcVF5eE5RVUZOTEdGQlFXRXNSMEZCUnl4SlFVRkpMRmxCUVZrc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dFJRVVZzUkN4UFFVRlBMRVZCUVVNc1EwRkJReXhGUVVGRkxFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNUVUZCVFN4RlFVRkZMRkZCUVZFc1JVRkJSU3hoUVVGaExFVkJRVU1zUTBGQlF6dEpRVU42UkN4RFFVRkRPME5CUTBvaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2V5Qm5aWFJUYVcxcGJHRnlhWFI1Um5KdmJVUnBjM1JoYm1ObElIMGdabkp2YlNCY0lpNHVMMlJwYzNSaGJtTmxMVzFsZEhKcFkzTXRiV1YwYUc5a2Mxd2lPMXh1YVcxd2IzSjBJSHNnUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNc0lFdHViM2R1VFdWMGNtbGpjeXdnVFdWaGMzVnlaU0I5SUdaeWIyMGdYQ0l1TGk5MGVYQmxaQzF0WlhSeWFXTnpYQ0k3WEc1cGJYQnZjblFnZXlCcGMwNXBiQ0I5SUdaeWIyMGdYQ0l1TDNWMGFXeHpYQ0k3WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJUY0dGeWMyVk5ZWFJ5YVhoVFpYSjJhV05sSUh0Y2JpQWdJQ0J3Y21sMllYUmxJRjkzYjNKclpYSkRiM1Z1ZERvZ2JuVnRZbVZ5TzF4dUlDQWdJSEJ5YVhaaGRHVWdYM2R2Y210bGNuTTZJRmR2Y210bGNsdGRPMXh1SUNBZ0lHTnZibk4wY25WamRHOXlLQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NWZkMjl5YTJWeVEyOTFiblFnUFNCTllYUm9MbTFoZUNodVlYWnBaMkYwYjNJdWFHRnlaSGRoY21WRGIyNWpkWEp5Wlc1amVTQXRJRElzSURFcE8xeHVJQ0FnSUNBZ2RHaHBjeTVmZDI5eWEyVnljeUE5SUc1bGR5QkJjbkpoZVNoMGFHbHpMbDkzYjNKclpYSkRiM1Z1ZENrdVptbHNiQ2h1ZFd4c0tWeHVJQ0FnSUNBZ0lDQXViV0Z3S0NncElEMCtJRzVsZHlCWGIzSnJaWElvYm1WM0lGVlNUQ2duTGk5emNHRnljMlV0YldGMGNtbDRMWGR2Y210bGNpY3NJR2x0Y0c5eWRDNXRaWFJoTG5WeWJDa3BLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQndkV0pzYVdNZ1lYTjVibU1nWTJGc1l6eFVQaWgyWVd4MVpYTTZJRUZ5Y21GNVBGUStJSHdnUVhKeVlYbE1hV3RsUEZRK0xDQm1iazVoYldVNklFdHViM2R1VFdWMGNtbGpjeXdnZEdoeVpYTm9iMnhrT2lCdWRXMWlaWElzSUc5d2RITS9PaUI3VzE4NklITjBjbWx1WjEwNklHRnVlWDBwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJRzFoZEZOcGVtVWdQU0IyWVd4MVpYTXViR1Z1WjNSb0lDb2dLSFpoYkhWbGN5NXNaVzVuZEdnZ0xTQXhLU0F2SURJN1hHNGdJQ0FnSUNCamIyNXpkQ0JqYUhWdWExTnBlbVVnUFNCTllYUm9MbVpzYjI5eUtHMWhkRk5wZW1VZ0x5QjBhR2x6TGw5M2IzSnJaWEpEYjNWdWRDazdYRzRnSUNBZ0lDQmpiMjV6ZENCd2NtOXRhWE5sY3lBOVhHNGdJQ0FnSUNBZ0lHNWxkeUJCY25KaGVUeFFjbTl0YVhObFBIdHBPaUJKYm5Rek1rRnljbUY1TENCcU9pQkpiblF6TWtGeWNtRjVMQ0JrYVhOMFlXNWpaVG9nUm14dllYUXpNa0Z5Y21GNUxDQnBaSGc2SUc1MWJXSmxjbjArUGloMGFHbHpMbDkzYjNKclpYSkRiM1Z1ZENrN1hHNGdJQ0FnSUNCbWIzSWdLR3hsZENCcFpIZ2dQU0F3T3lCcFpIZ2dQQ0IwYUdsekxsOTNiM0pyWlhKRGIzVnVkRHNnYVdSNEt5c3BJSHRjYmlBZ0lDQWdJQ0FnY0hKdmJXbHpaWE5iYVdSNFhTQTlJRzVsZHlCUWNtOXRhWE5sS0NoeVpYTnZiSFpsVjI5eWEyVnlMQ0J5WldwbFkzUlhiM0pyWlhJcElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J6ZEdGeWRFbGtlQ0E5SUdsa2VDQXFJR05vZFc1clUybDZaVHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JsYm1SSlpIZ2dQU0JwWkhnZ1BUMDlJSFJvYVhNdVgzZHZjbXRsY2tOdmRXNTBJQzBnTVNBL0lHMWhkRk5wZW1VZ09pQW9hV1I0SUNzZ01Ta2dLaUJqYUhWdWExTnBlbVU3WEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTVmZDI5eWEyVnljMXRwWkhoZExuQnZjM1JOWlhOellXZGxLSHQyWVd4MVpYTXNJSE4wWVhKMFNXUjRMQ0JsYm1SSlpIZ3NJSFJvY21WemFHOXNaQ3dnWm01T1lXMWxMQ0J2Y0hSemZTazdYRzRnSUNBZ0lDQWdJQ0FnZEdocGN5NWZkMjl5YTJWeWMxdHBaSGhkTG05dWJXVnpjMkZuWlNBOUlDaDdaR0YwWVRvZ2UyVnljbTl5TENCcExDQnFMQ0JrYVhOMFlXNWpaWDE5S1RvZ2RtOXBaQ0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1pYSnliM0lwSUhzZ2NtVnFaV04wVjI5eWEyVnlLR1Z5Y205eUtUc2dmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVmZDI5eWEyVnljMXRwWkhoZExuUmxjbTFwYm1GMFpTZ3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWE52YkhabFYyOXlhMlZ5S0h0cExDQnFMQ0JrYVhOMFlXNWpaU3dnYVdSNGZTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdmVHRjYmlBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lHTnZibk4wSUhKbGMzVnNkSE1nUFNCaGQyRnBkQ0JRY205dGFYTmxMbUZzYkNod2NtOXRhWE5sY3lrN1hHNGdJQ0FnSUNCamIyNXpkQ0JtZFd4c1UybDZaU0E5SUhKbGMzVnNkSE11Y21Wa2RXTmxLQ2hoWTJNc0lIWmhiQ2tnUFQ0Z1lXTmpJQ3NnZG1Gc0xta3ViR1Z1WjNSb0xDQXdLVHRjYmlBZ0lDQWdJR052Ym5OMElHa2dQU0J1WlhjZ1NXNTBNekpCY25KaGVTaG1kV3hzVTJsNlpTazdYRzRnSUNBZ0lDQmpiMjV6ZENCcUlEMGdibVYzSUVsdWRETXlRWEp5WVhrb1puVnNiRk5wZW1VcE8xeHVJQ0FnSUNBZ1kyOXVjM1FnWkdsemRHRnVZMlVnUFNCdVpYY2dSbXh2WVhRek1rRnljbUY1S0daMWJHeFRhWHBsS1R0Y2JpQWdJQ0FnSUd4bGRDQnZabVp6WlhRZ1BTQXdPMXh1SUNBZ0lDQWdabTl5SUNoamIyNXpkQ0J5WlhNZ2IyWWdjbVZ6ZFd4MGN5a2dlMXh1SUNBZ0lDQWdJQ0JwTG5ObGRDaHlaWE11YVN3Z2IyWm1jMlYwS1R0Y2JpQWdJQ0FnSUNBZ2FpNXpaWFFvY21Wekxtb3NJRzltWm5ObGRDazdYRzRnSUNBZ0lDQWdJR1JwYzNSaGJtTmxMbk5sZENoeVpYTXVaR2x6ZEdGdVkyVXNJRzltWm5ObGRDazdYRzRnSUNBZ0lDQWdJRzltWm5ObGRDQXJQU0J5WlhNdWFTNXNaVzVuZEdnN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYUjFjbTRnZTJrc0lHb3NJR1JwYzNSaGJtTmxmVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQndkV0pzYVdNZ2MzUmhkR2xqSUdOaGJHTlRlVzVqUEZRK0lDaDJZV3gxWlhNNklFRnljbUY1UEZRK0lId2dRWEp5WVhsTWFXdGxQRlErTENCbWJrNWhiV1U2SUV0dWIzZHVUV1YwY21samN5d2daR2x6ZEdGdVkyVkdiam9nUm5WdVkzUnBiMjRzSUhSb2NtVnphRzlzWkRvZ2JuVnRZbVZ5S1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JwT2lCdWRXMWlaWEpiWFNBOUlGdGRPMXh1SUNBZ0lDQWdZMjl1YzNRZ2Fqb2diblZ0WW1WeVcxMGdQU0JiWFR0Y2JpQWdJQ0FnSUdOdmJuTjBJR1JwYzNSaGJtTmxjem9nYm5WdFltVnlXMTBnUFNCYlhUdGNiaUFnSUNBZ0lHeGxkQ0JqYm5RZ1BTQXdPMXh1SUNBZ0lDQWdiR1YwSUcxcElEMGdNRHRjYmlBZ0lDQWdJR3hsZENCdGFpQTlJREE3WEc0Z0lDQWdJQ0JqYjI1emRDQm1kV3hzVTJsNlpTQTlJSFpoYkhWbGN5NXNaVzVuZEdnZ0tpQW9kbUZzZFdWekxteGxibWQwYUNBdElERXBJQzhnTWp0Y2JpQWdJQ0FnSUhkb2FXeGxJQ2hqYm5RZ1BDQm1kV3hzVTJsNlpTa2dlMXh1SUNBZ0lDQWdJQ0F2TDJOdmJuTjBJSFpoYkhWbElEMGdjMlZ4TVV4cGMzUmJiV2xkSUNZbUlITmxjVEZNYVhOMFcyMXFYU0EvSUdoaGJXMXBibWNvYzJWeE1VeHBjM1JiYldsZExDQnpaWEV4VEdsemRGdHRhbDBwSURvZ01EdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2RtRnNkV1VnUFNBaGFYTk9hV3dvZG1Gc2RXVnpXMjFwWFNrZ0ppWWdJV2x6VG1sc0tIWmhiSFZsYzF0dGFsMHBJRDljYmlBZ0lDQWdJQ0FnSUNCa2FYTjBZVzVqWlVadUtIWmhiSFZsYzF0dGFWMHNJSFpoYkhWbGMxdHRhbDBwSURvZ01UdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2MybHRhV3hoY21sMGVTQTlJRTlpYW1WamRDNTJZV3gxWlhNb1FtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXBMbk52YldVb0tHRXBJRDArSUdFZ1BUMDlJR1p1VG1GdFpTa2dQeUJuWlhSVGFXMXBiR0Z5YVhSNVJuSnZiVVJwYzNSaGJtTmxLSFpoYkhWbEtTQTZJREVnTFNCMllXeDFaVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tITnBiV2xzWVhKcGRIa2dQajBnZEdoeVpYTm9iMnhrS1NCN1hHNGdJQ0FnSUNBZ0lDQWdhUzV3ZFhOb0tHMXBLVHRjYmlBZ0lDQWdJQ0FnSUNCcUxuQjFjMmdvYldvcE8xeHVJQ0FnSUNBZ0lDQWdJR1JwYzNSaGJtTmxjeTV3ZFhOb0tIWmhiSFZsS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQmpiblFyS3p0Y2JpQWdJQ0FnSUNBZ2JXb3JLenRjYmlBZ0lDQWdJQ0FnYVdZZ0tHMXFJRDA5UFNCMllXeDFaWE11YkdWdVozUm9LU0I3WEc0Z0lDQWdJQ0FnSUNBZ2JXa3JLenRjYmlBZ0lDQWdJQ0FnSUNCdGFpQTlJRzFwSUNzZ01UdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lGeHVJQ0FnSUNBZ1kyOXVjM1FnYVVGeWNtRjVJRDBnYm1WM0lFbHVkRE15UVhKeVlYa29hU2s3WEc0Z0lDQWdJQ0JqYjI1emRDQnFRWEp5WVhrZ1BTQnVaWGNnU1c1ME16SkJjbkpoZVNocUtUdGNiaUFnSUNBZ0lHTnZibk4wSUdScGMzUmhibU5sUVhKeVlYa2dQU0J1WlhjZ1JteHZZWFF6TWtGeWNtRjVLR1JwYzNSaGJtTmxjeWs3WEc1Y2JpQWdJQ0FnSUhKbGRIVnliaUI3YVRvZ2FVRnljbUY1TENCcU9pQnFRWEp5WVhrc0lHUnBjM1JoYm1ObE9pQmthWE4wWVc1alpVRnljbUY1ZlR0Y2JpQWdJQ0I5WEc1OUlsMTkiLCJleHBvcnQgZnVuY3Rpb24gZ2V0S25uR3JhcGgoaSwgaiwgZGlzdGFuY2VzLCBuZWlnaGJvdXJzLCBkYXRhTGVuZ3RoKSB7XG4gICAgZnVuY3Rpb24gaW5zZXJ0KGRpc3RhbmNlc0FyLCBpbmRleGVzLCBudW0sIGluZGV4KSB7XG4gICAgICAgIGlmIChudW0gPiBkaXN0YW5jZXNBcltkaXN0YW5jZXNBci5sZW5ndGggLSAxXSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBrID0gZGlzdGFuY2VzQXIubGVuZ3RoIC0gMjtcbiAgICAgICAgZm9yIChrID0gZGlzdGFuY2VzQXIubGVuZ3RoIC0gMjsgayA+PSAwOyBrLS0pIHtcbiAgICAgICAgICAgIGlmIChudW0gPiBkaXN0YW5jZXNBcltrXSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGRpc3RhbmNlc0FyLnNwbGljZShkaXN0YW5jZXNBci5sZW5ndGggLSAxLCAxKTtcbiAgICAgICAgZGlzdGFuY2VzQXIuc3BsaWNlKGsgKyAxLCAwLCBudW0pO1xuICAgICAgICBpbmRleGVzLnNwbGljZShpbmRleGVzLmxlbmd0aCAtIDEsIDEpO1xuICAgICAgICBpbmRleGVzLnNwbGljZShrICsgMSwgMCwgaW5kZXgpO1xuICAgIH1cbiAgICBjb25zb2xlLnRpbWUoJ2tubkdyYXBoJyk7XG4gICAgY29uc3Qga25uSW5kZXhlcyA9IG5ldyBBcnJheShkYXRhTGVuZ3RoKS5maWxsKG51bGwpLm1hcCgoKSA9PiBuZXcgQXJyYXkobmVpZ2hib3VycykuZmlsbCgxKSk7XG4gICAgY29uc3Qga25uRGlzdGFuY2VzID0gbmV3IEFycmF5KGRhdGFMZW5ndGgpLmZpbGwobnVsbCkubWFwKCgpID0+IG5ldyBBcnJheShuZWlnaGJvdXJzKS5maWxsKDEpKTtcbiAgICBmb3IgKGxldCBrID0gMDsgayA8IGkubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgaW5zZXJ0KGtubkRpc3RhbmNlc1tpW2tdXSwga25uSW5kZXhlc1tpW2tdXSwgZGlzdGFuY2VzW2tdLCBqW2tdKTtcbiAgICAgICAgaW5zZXJ0KGtubkRpc3RhbmNlc1tqW2tdXSwga25uSW5kZXhlc1tqW2tdXSwgZGlzdGFuY2VzW2tdLCBpW2tdKTtcbiAgICB9XG4gICAgY29uc29sZS50aW1lRW5kKCdrbm5HcmFwaCcpO1xuICAgIHJldHVybiB7IGtubkluZGV4ZXMsIGtubkRpc3RhbmNlcyB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYTI1dVIzSmhjR2d1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SnJibTVIY21Gd2FDNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZGUVN4TlFVRk5MRlZCUVZVc1YwRkJWeXhEUVVGRExFTkJRV0VzUlVGQlJTeERRVUZoTEVWQlFVVXNVMEZCZFVJc1JVRkROMFVzVlVGQmEwSXNSVUZCUlN4VlFVRnJRanRKUVVOc1F5eFRRVUZUTEUxQlFVMHNRMEZCUXl4WFFVRnhRaXhGUVVGRkxFOUJRV2xDTEVWQlFVVXNSMEZCVnl4RlFVRkZMRXRCUVdFN1VVRkRhRVlzU1VGQlNTeEhRVUZITEVkQlFVY3NWMEZCVnl4RFFVRkRMRmRCUVZjc1EwRkJReXhOUVVGTkxFZEJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdXVUZEZWtNc1QwRkJUenRUUVVOV08xRkJRMFFzU1VGQlNTeERRVUZETEVkQlFVY3NWMEZCVnl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGREwwSXNTMEZCU1N4RFFVRkRMRWRCUVVjc1YwRkJWeXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU42UXl4SlFVRkpMRWRCUVVjc1IwRkJSeXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdaMEpCUTNSQ0xFMUJRVTA3WVVGRFZEdFRRVU5LTzFGQlEwUXNWMEZCVnl4RFFVRkRMRTFCUVUwc1EwRkJReXhYUVVGWExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNNVF5eFhRVUZYTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1IwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTJoRExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZEVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dEpRVU5zUXl4RFFVRkRPMGxCUjBRc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUVR0SlFVTjRRaXhOUVVGTkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZUTEZWQlFWVXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzSkhMRTFCUVUwc1dVRkJXU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1NVRkJTU3hMUVVGTExFTkJRVk1zVlVGQlZTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmRrY3NTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3VVVGREwwSXNUVUZCVFN4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTJwRkxFMUJRVTBzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzVlVGQlZTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dExRVU53UlR0SlFVVkVMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdTVUZETlVJc1QwRkJUeXhGUVVGRExGVkJRVlVzUlVGQlJTeFpRVUZaTEVWQlFVTXNRMEZCUXp0QlFVTXhReXhEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJuWlhSTGJtNUhjbUZ3YUNocE9pQkpiblF6TWtGeWNtRjVMQ0JxT2lCSmJuUXpNa0Z5Y21GNUxDQmthWE4wWVc1alpYTTZJRVpzYjJGME16SkJjbkpoZVN4Y2JpQWdJQ0J1WldsbmFHSnZkWEp6T2lCdWRXMWlaWElzSUdSaGRHRk1aVzVuZEdnNklHNTFiV0psY2lrZ2UxeHVJQ0FnSUNBZ0lDQm1kVzVqZEdsdmJpQnBibk5sY25Rb1pHbHpkR0Z1WTJWelFYSTZJRzUxYldKbGNsdGRMQ0JwYm1SbGVHVnpPaUJ1ZFcxaVpYSmJYU3dnYm5WdE9pQnVkVzFpWlhJc0lHbHVaR1Y0T2lCdWRXMWlaWElwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNodWRXMGdQaUJrYVhOMFlXNWpaWE5CY2x0a2FYTjBZVzVqWlhOQmNpNXNaVzVuZEdndE1WMHBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0JzWlhRZ2F5QTlJR1JwYzNSaGJtTmxjMEZ5TG14bGJtZDBhQ0F0SURJN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JtYjNJb2F5QTlJR1JwYzNSaGJtTmxjMEZ5TG14bGJtZDBhQ0F0SURJN0lHc2dQajBnTURzZ2F5MHRLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHNTFiU0ErSUdScGMzUmhibU5sYzBGeVcydGRLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lHUnBjM1JoYm1ObGMwRnlMbk53YkdsalpTaGthWE4wWVc1alpYTkJjaTVzWlc1bmRHZ2dMU0F4TENBeEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdScGMzUmhibU5sYzBGeUxuTndiR2xqWlNockt6RXNJREFzSUc1MWJTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCcGJtUmxlR1Z6TG5Od2JHbGpaU2hwYm1SbGVHVnpMbXhsYm1kMGFDQXRJREVzSURFcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVc1a1pYaGxjeTV6Y0d4cFkyVW9heXN4TENBd0xDQnBibVJsZUNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUZ4dVhHNGdJQ0FnSUNBZ0lHTnZibk52YkdVdWRHbHRaU2duYTI1dVIzSmhjR2duS1Z4dUlDQWdJQ0FnSUNCamIyNXpkQ0JyYm01SmJtUmxlR1Z6SUQwZ2JtVjNJRUZ5Y21GNUtHUmhkR0ZNWlc1bmRHZ3BMbVpwYkd3b2JuVnNiQ2t1YldGd0tDZ3BJRDArSUc1bGR5QkJjbkpoZVR4dWRXMWlaWEkrS0c1bGFXZG9ZbTkxY25NcExtWnBiR3dvTVNrcE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCcmJtNUVhWE4wWVc1alpYTWdQU0J1WlhjZ1FYSnlZWGtvWkdGMFlVeGxibWQwYUNrdVptbHNiQ2h1ZFd4c0tTNXRZWEFvS0NrZ1BUNGdibVYzSUVGeWNtRjVQRzUxYldKbGNqNG9ibVZwWjJoaWIzVnljeWt1Wm1sc2JDZ3hLU2s3WEc1Y2JpQWdJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2F5QTlJREE3SUdzZ1BDQnBMbXhsYm1kMGFEc2dheXNyS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwYm5ObGNuUW9hMjV1UkdsemRHRnVZMlZ6VzJsYmExMWRMQ0JyYm01SmJtUmxlR1Z6VzJsYmExMWRMQ0JrYVhOMFlXNWpaWE5iYTEwc0lHcGJhMTBwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdhVzV6WlhKMEtHdHVia1JwYzNSaGJtTmxjMXRxVzJ0ZFhTd2dhMjV1U1c1a1pYaGxjMXRxVzJ0ZFhTd2daR2x6ZEdGdVkyVnpXMnRkTENCcFcydGRLVHRjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lHTnZibk52YkdVdWRHbHRaVVZ1WkNnbmEyNXVSM0poY0dnbktUdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIdHJibTVKYm1SbGVHVnpMQ0JyYm01RWFYTjBZVzVqWlhOOU8xeHVmU0pkZlE9PSIsImltcG9ydCB7IERpbWVuc2lvbmFsaXR5UmVkdWNlciB9IGZyb20gJy4uL3JlZHVjZS1kaW1lbnNpb25hbGl0eSc7XG4vKipcbiAqIFdvcmtlciB0aHJlYWQgcmVjZWl2aW5nIGRhdGEgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHthbnlbXX0gY29sdW1uRGF0YSBTYW1wbGVzIHRvIHByb2Nlc3MuXG4gKiBAcGFyYW0ge0tub3duTWV0aG9kc30gbWV0aG9kIEVtYmVkZGluZyBtZXRob2QuXG4gKiBAcGFyYW0ge0tub3duTWV0cmljc30gbWVhc3VyZSBEaXN0YW5jZSBtZXRyaWMuXG4gKiBAcGFyYW0ge2FueX0gb3B0aW9ucyBPcHRpb25zIHRvIHBhc3MgdG8gYWxnb3JpdGhtLlxuICogQHBhcmFtIHtib29sZWFufSBwYXJhbGxlbERpc3RhbmNlV29ya2VycyBXaGV0aGVyIHRvIHVzZSBwYXJhbGxlbCBkaXN0YW5jZSB3b3JrZXJzLlxuICogQHJldHVybiB7YW55fSBFbWJlZGRpbmcgKGFuZCBkaXN0YW5jZSBtYXRyaXggd2hlcmUgYXBwbGljYWJsZSkuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIG9uTWVzc2FnZShjb2x1bW5EYXRhLCBtZXRob2QsIG1lYXN1cmUsIG9wdGlvbnMsIHBhcmFsbGVsRGlzdGFuY2VXb3JrZXJzKSB7XG4gICAgY29uc3QgcmVkdWNlciA9IG5ldyBEaW1lbnNpb25hbGl0eVJlZHVjZXIoY29sdW1uRGF0YSwgbWV0aG9kLCBtZWFzdXJlLCB7IC4uLm9wdGlvbnMsIHByb2dyZXNzRnVuYyB9KTtcbiAgICByZXR1cm4gYXdhaXQgcmVkdWNlci50cmFuc2Zvcm0odHJ1ZSwgcGFyYWxsZWxEaXN0YW5jZVdvcmtlcnMpO1xufVxuYXN5bmMgZnVuY3Rpb24gcHJvZ3Jlc3NGdW5jKGVwb2NoTnVtLCBlcG9jaHNMZW5ndGgsIGVtYmVkZGluZykge1xuICAgIGlmIChlcG9jaE51bSAlIDUgPT09IDApXG4gICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoeyBlcG9jaE51bSwgZXBvY2hzTGVuZ3RoLCBlbWJlZGRpbmcgfSk7XG59XG5zZWxmLm9ubWVzc2FnZSA9IGFzeW5jICh7IGRhdGE6IHsgY29sdW1uRGF0YSwgbWV0aG9kLCBtZWFzdXJlLCBvcHRpb25zLCBwYXJhbGxlbERpc3RhbmNlV29ya2VycyB9IH0pID0+IHtcbiAgICBsZXQgZGF0YTtcbiAgICB0cnkge1xuICAgICAgICBkYXRhID0gYXdhaXQgb25NZXNzYWdlKGNvbHVtbkRhdGEsIG1ldGhvZCwgbWVhc3VyZSwgb3B0aW9ucywgcGFyYWxsZWxEaXN0YW5jZVdvcmtlcnMpO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICBkYXRhID0geyBlcnJvcjogZSB9O1xuICAgIH1cbiAgICBzZWxmLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgZXJyb3I6IGRhdGEuZXJyb3IsXG4gICAgICAgIGRpc3RhbmNlOiBkYXRhLmRpc3RhbmNlLFxuICAgICAgICBlbWJlZGRpbmc6IGRhdGEuZW1iZWRkaW5nLFxuICAgIH0pO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpHbHRaVzV6YVc5dVlXeHBkSGt0Y21Wa2RXTmxjaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkltUnBiV1Z1YzJsdmJtRnNhWFI1TFhKbFpIVmpaWEl1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRXNUMEZCVHl4RlFVRkRMSEZDUVVGeFFpeEZRVUZsTEUxQlFVMHNNRUpCUVRCQ0xFTkJRVU03UVVGSE4wVTdPenM3T3pzN096dEhRVk5ITzBGQlEwZ3NTMEZCU3l4VlFVRlZMRk5CUVZNc1EwRkJReXhWUVVGcFFpeEZRVUZGTEUxQlFXOUNMRVZCUVVVc1QwRkJjVUlzUlVGRGNrWXNUMEZCWVN4RlFVRkZMSFZDUVVGcFF6dEpRVU5vUkN4TlFVRk5MRTlCUVU4c1IwRkJSeXhKUVVGSkxIRkNRVUZ4UWl4RFFVTjJReXhWUVVGVkxFVkJRMVlzVFVGQlRTeEZRVU5PTEU5QlFVOHNSVUZEVUN4RlFVRkRMRWRCUVVjc1QwRkJUeXhGUVVGRkxGbEJRVmtzUlVGQlF5eERRVU16UWl4RFFVRkRPMGxCUTBZc1QwRkJUeXhOUVVGTkxFOUJRVThzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RlFVRkZMSFZDUVVGMVFpeERRVUZETEVOQlFVTTdRVUZEYUVVc1EwRkJRenRCUVVWRUxFdEJRVXNzVlVGQlZTeFpRVUZaTEVOQlFVVXNVVUZCWjBJc1JVRkJSU3haUVVGdlFpeEZRVUZGTEZOQlFYRkNPMGxCUTNoR0xFbEJRVWtzVVVGQlVTeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRPMUZCUTNCQ0xFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNSVUZCUXl4UlFVRlJMRVZCUVVVc1dVRkJXU3hGUVVGRkxGTkJRVk1zUlVGQlF5eERRVUZETEVOQlFVTTdRVUZETVVRc1EwRkJRenRCUVVWRUxFbEJRVWtzUTBGQlF5eFRRVUZUTEVkQlFVY3NTMEZCU3l4RlFVRkZMRVZCUVVNc1NVRkJTU3hGUVVGRkxFVkJRVU1zVlVGQlZTeEZRVUZGTEUxQlFVMHNSVUZCUlN4UFFVRlBMRVZCUVVVc1QwRkJUeXhGUVVGRkxIVkNRVUYxUWl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRk8wbEJRMnBITEVsQlFVa3NTVUZCYjBRc1EwRkJRenRKUVVONlJDeEpRVUZKTzFGQlEwWXNTVUZCU1N4SFFVRkhMRTFCUVUwc1UwRkJVeXhEUVVGRExGVkJRVlVzUlVGQlJTeE5RVUZOTEVWQlFVVXNUMEZCVHl4RlFVRkZMRTlCUVU4c1JVRkJSU3gxUWtGQmRVSXNRMEZCUXl4RFFVRkRPMHRCUTNaR08wbEJRVU1zVDBGQlR5eERRVUZOTEVWQlFVVTdVVUZEWml4SlFVRkpMRWRCUVVjc1JVRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eEZRVUZETEVOQlFVTTdTMEZEYmtJN1NVRkRSQ3hKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETzFGQlEyWXNTMEZCU3l4RlFVRkZMRWxCUVVrc1EwRkJReXhMUVVGTE8xRkJRMnBDTEZGQlFWRXNSVUZCUlN4SlFVRkpMRU5CUVVNc1VVRkJVVHRSUVVOMlFpeFRRVUZUTEVWQlFVVXNTVUZCU1N4RFFVRkRMRk5CUVZNN1MwRkRNVUlzUTBGQlF5eERRVUZETzBGQlEwd3NRMEZCUXl4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHRFYVcxbGJuTnBiMjVoYkdsMGVWSmxaSFZqWlhJc0lFdHViM2R1VFdWMGFHOWtjMzBnWm5KdmJTQW5MaTR2Y21Wa2RXTmxMV1JwYldWdWMybHZibUZzYVhSNUp6dGNibWx0Y0c5eWRDQjdTMjV2ZDI1TlpYUnlhV056ZlNCbWNtOXRJQ2N1TGk5MGVYQmxaQzF0WlhSeWFXTnpMM1I1Y0dWa0xXMWxkSEpwWTNNbk8xeHVYRzR2S2lwY2JpQXFJRmR2Y210bGNpQjBhSEpsWVdRZ2NtVmpaV2wyYVc1bklHUmhkR0VnWm5WdVkzUnBiMjR1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRoYm5sYlhYMGdZMjlzZFcxdVJHRjBZU0JUWVcxd2JHVnpJSFJ2SUhCeWIyTmxjM011WEc0Z0tpQkFjR0Z5WVcwZ2UwdHViM2R1VFdWMGFHOWtjMzBnYldWMGFHOWtJRVZ0WW1Wa1pHbHVaeUJ0WlhSb2IyUXVYRzRnS2lCQWNHRnlZVzBnZTB0dWIzZHVUV1YwY21samMzMGdiV1ZoYzNWeVpTQkVhWE4wWVc1alpTQnRaWFJ5YVdNdVhHNGdLaUJBY0dGeVlXMGdlMkZ1ZVgwZ2IzQjBhVzl1Y3lCUGNIUnBiMjV6SUhSdklIQmhjM01nZEc4Z1lXeG5iM0pwZEdodExseHVJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0J3WVhKaGJHeGxiRVJwYzNSaGJtTmxWMjl5YTJWeWN5QlhhR1YwYUdWeUlIUnZJSFZ6WlNCd1lYSmhiR3hsYkNCa2FYTjBZVzVqWlNCM2IzSnJaWEp6TGx4dUlDb2dRSEpsZEhWeWJpQjdZVzU1ZlNCRmJXSmxaR1JwYm1jZ0tHRnVaQ0JrYVhOMFlXNWpaU0J0WVhSeWFYZ2dkMmhsY21VZ1lYQndiR2xqWVdKc1pTa3VYRzRnS2k5Y2JtRnplVzVqSUdaMWJtTjBhVzl1SUc5dVRXVnpjMkZuWlNoamIyeDFiVzVFWVhSaE9pQmhibmxiWFN3Z2JXVjBhRzlrT2lCTGJtOTNiazFsZEdodlpITXNJRzFsWVhOMWNtVTZJRXR1YjNkdVRXVjBjbWxqY3l4Y2JpQWdiM0IwYVc5dWN6ODZJR0Z1ZVN3Z2NHRnlZV3hzWld4RWFYTjBZVzVqWlZkdmNtdGxjbk0vT2lCaWIyOXNaV0Z1S1RvZ1VISnZiV2x6WlR4N1pHbHpkR0Z1WTJVL09pQmhibmtzSUdWdFltVmtaR2x1Wno4NklHRnVlWDArSUh0Y2JpQWdZMjl1YzNRZ2NtVmtkV05sY2lBOUlHNWxkeUJFYVcxbGJuTnBiMjVoYkdsMGVWSmxaSFZqWlhJb1hHNGdJQ0FnWTI5c2RXMXVSR0YwWVN4Y2JpQWdJQ0J0WlhSb2IyUXNYRzRnSUNBZ2JXVmhjM1Z5WlN4Y2JpQWdJQ0I3TGk0dWIzQjBhVzl1Y3l3Z2NISnZaM0psYzNOR2RXNWpmU3hjYmlBZ0tUdGNiaUFnY21WMGRYSnVJR0YzWVdsMElISmxaSFZqWlhJdWRISmhibk5tYjNKdEtIUnlkV1VzSUhCaGNtRnNiR1ZzUkdsemRHRnVZMlZYYjNKclpYSnpLVHRjYm4xY2JseHVZWE41Ym1NZ1puVnVZM1JwYjI0Z2NISnZaM0psYzNOR2RXNWpJQ2hsY0c5amFFNTFiVG9nYm5WdFltVnlMQ0JsY0c5amFITk1aVzVuZEdnNklHNTFiV0psY2l3Z1pXMWlaV1JrYVc1bk9pQnVkVzFpWlhKYlhWdGRLU0I3WEc0Z0lHbG1JQ2hsY0c5amFFNTFiU0FsSURVZ1BUMDlJREFwWEc0Z0lDQWdjMlZzWmk1d2IzTjBUV1Z6YzJGblpTaDdaWEJ2WTJoT2RXMHNJR1Z3YjJOb2MweGxibWQwYUN3Z1pXMWlaV1JrYVc1bmZTazdYRzU5WEc1Y2JuTmxiR1l1YjI1dFpYTnpZV2RsSUQwZ1lYTjVibU1nS0h0a1lYUmhPaUI3WTI5c2RXMXVSR0YwWVN3Z2JXVjBhRzlrTENCdFpXRnpkWEpsTENCdmNIUnBiMjV6TENCd1lYSmhiR3hsYkVScGMzUmhibU5sVjI5eWEyVnljMzE5S1NBOVBpQjdYRzRnSUd4bGRDQmtZWFJoT2lCN1pYSnliM0kvT2lCaGJua3NJR1JwYzNSaGJtTmxQem9nWVc1NUxDQmxiV0psWkdScGJtYy9PaUJoYm5sOU8xeHVJQ0IwY25rZ2UxeHVJQ0FnSUdSaGRHRWdQU0JoZDJGcGRDQnZiazFsYzNOaFoyVW9ZMjlzZFcxdVJHRjBZU3dnYldWMGFHOWtMQ0J0WldGemRYSmxMQ0J2Y0hScGIyNXpMQ0J3WVhKaGJHeGxiRVJwYzNSaGJtTmxWMjl5YTJWeWN5azdYRzRnSUgwZ1kyRjBZMmdnS0dVNklHRnVlU2tnZTF4dUlDQWdJR1JoZEdFZ1BTQjdaWEp5YjNJNklHVjlPMXh1SUNCOVhHNGdJSE5sYkdZdWNHOXpkRTFsYzNOaFoyVW9lMXh1SUNBZ0lHVnljbTl5T2lCa1lYUmhMbVZ5Y205eUxGeHVJQ0FnSUdScGMzUmhibU5sT2lCa1lYUmhMbVJwYzNSaGJtTmxMRnh1SUNBZ0lHVnRZbVZrWkdsdVp6b2daR0YwWVM1bGJXSmxaR1JwYm1jc1hHNGdJSDBwTzF4dWZUdGNiaUpkZlE9PSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UU05FID0gdm9pZCAwO1xudmFyIHRzbmVfMSA9IHJlcXVpcmUoXCIuL3RzbmVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUU05FXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0c25lXzEuVFNORTsgfSB9KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UU05FID0gdm9pZCAwO1xuY2xhc3MgVFNORSB7XG4gICAgY29uc3RydWN0b3Iob3B0KSB7XG4gICAgICAgIC8vIHJldHVybiAwIG1lYW4gdW5pdCBzdGFuZGFyZCBkZXZpYXRpb24gcmFuZG9tIG51bWJlclxuICAgICAgICB0aGlzLnJldHVyblYgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52VmFsdWUgPSAwLjA7XG4gICAgICAgIHRoaXMuaXRlciA9IDA7XG4gICAgICAgIG9wdCA9IG9wdCB8fCB7fTtcbiAgICAgICAgdGhpcy5wZXJwbGV4aXR5ID0gdGhpcy5nZXRvcHQob3B0LCAncGVycGxleGl0eScsIDMwKTsgLy8gZWZmZWN0aXZlIG51bWJlciBvZiBuZWFyZXN0IG5laWdoYm9yc1xuICAgICAgICB0aGlzLmRpbSA9IHRoaXMuZ2V0b3B0KG9wdCwgJ2RpbScsIDIpOyAvLyBieSBkZWZhdWx0IDItRCB0U05FXG4gICAgICAgIHRoaXMuZXBzaWxvbiA9IHRoaXMuZ2V0b3B0KG9wdCwgJ2Vwc2lsb24nLCAxMCk7IC8vIGxlYXJuaW5nIHJhdGVcbiAgICB9XG4gICAgYXNzZXJ0KGNvbmRpdGlvbiwgbWVzc2FnZSkge1xuICAgICAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbWVzc2FnZSB8fCAnQXNzZXJ0aW9uIGZhaWxlZCc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gc3ludGF4IHN1Z2FyXG4gICAgZ2V0b3B0KG9wdCwgZmllbGQsIGRlZmF1bHR2YWwpIHtcbiAgICAgICAgaWYgKG9wdC5oYXNPd25Qcm9wZXJ0eShmaWVsZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRbZmllbGRdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHR2YWw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2F1c3NSYW5kb20oKSB7XG4gICAgICAgIGlmICh0aGlzLnJldHVyblYpIHtcbiAgICAgICAgICAgIHRoaXMucmV0dXJuViA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudlZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHUgPSAyICogTWF0aC5yYW5kb20oKSAtIDE7XG4gICAgICAgIGNvbnN0IHYgPSAyICogTWF0aC5yYW5kb20oKSAtIDE7XG4gICAgICAgIGNvbnN0IHIgPSB1ICogdSArIHYgKiB2O1xuICAgICAgICBpZiAociA9PT0gMCB8fCByID4gMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2F1c3NSYW5kb20oKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjID0gTWF0aC5zcXJ0KC0yICogTWF0aC5sb2cocikgLyByKTtcbiAgICAgICAgdGhpcy52VmFsdWUgPSB2ICogYzsgLy8gY2FjaGUgdGhpcyBmb3IgbmV4dCBmdW5jdGlvbiBjYWxsIGZvciBlZmZpY2llbmN5XG4gICAgICAgIHRoaXMucmV0dXJuViA9IHRydWU7XG4gICAgICAgIHJldHVybiB1ICogYztcbiAgICB9XG4gICAgLy8gcmV0dXJuIHJhbmRvbSBub3JtYWwgbnVtYmVyXG4gICAgcmFuZG4obXUsIHN0ZCkgeyByZXR1cm4gbXUgKyB0aGlzLmdhdXNzUmFuZG9tKCkgKiBzdGQ7IH1cbiAgICAvLyB1dGlsaXRpdHkgdGhhdCBjcmVhdGVzIGNvbnRpZ3VvdXMgdmVjdG9yIG9mIHplcm9zIG9mIHNpemUgblxuICAgIHplcm9zKG4pIHtcbiAgICAgICAgaWYgKHR5cGVvZiAobikgPT09ICd1bmRlZmluZWQnIHx8IGlzTmFOKG4pKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIC8vIGxhY2tpbmcgYnJvd3NlciBzdXBwb3J0XG4gICAgICAgICAgICBjb25zdCBhcnIgPSBuZXcgQXJyYXkobik7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgICAgIGFycltpXSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYXJyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBGbG9hdDY0QXJyYXkobik7IC8vIHR5cGVkIGFycmF5cyBhcmUgZmFzdGVyXG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gdXRpbGl0eSB0aGF0IHJldHVybnMgMmQgYXJyYXkgZmlsbGVkIHdpdGggcmFuZG9tIG51bWJlcnNcbiAgICAvLyBvciB3aXRoIHZhbHVlIHMsIGlmIHByb3ZpZGVkXG4gICAgcmFuZG4yZChuLCBkLCBzKSB7XG4gICAgICAgIGNvbnN0IHVzZXMgPSB0eXBlb2YgcyAhPT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgIGNvbnN0IHggPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHhoZXJlID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGQ7IGorKykge1xuICAgICAgICAgICAgICAgIGlmICh1c2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIHhoZXJlLnB1c2gocyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB4aGVyZS5wdXNoKHRoaXMucmFuZG4oMC4wLCAxZS00KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeC5wdXNoKHhoZXJlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geDtcbiAgICB9XG4gICAgLy8gY29tcHV0ZSBMMiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWN0b3JzXG4gICAgTDIoeDEsIHgyKSB7XG4gICAgICAgIGNvbnN0IEQgPSB4MS5sZW5ndGg7XG4gICAgICAgIGxldCBkID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBEOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHgxaSA9IHgxW2ldO1xuICAgICAgICAgICAgY29uc3QgeDJpID0geDJbaV07XG4gICAgICAgICAgICBkICs9ICh4MWkgLSB4MmkpICogKHgxaSAtIHgyaSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGQ7XG4gICAgfVxuICAgIC8vIGNvbXB1dGUgcGFpcndpc2UgZGlzdGFuY2UgaW4gYWxsIHZlY3RvcnMgaW4gWFxuICAgIHh0b2QoWCkge1xuICAgICAgICBjb25zdCBOID0gWC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGRpc3QgPSB0aGlzLnplcm9zKE4gKiBOKTsgLy8gYWxsb2NhdGUgY29udGlndW91cyBhcnJheVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgTjsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IHRoaXMuTDIoWFtpXSwgWFtqXSk7XG4gICAgICAgICAgICAgICAgZGlzdFtpICogTiArIGpdID0gZDtcbiAgICAgICAgICAgICAgICBkaXN0W2ogKiBOICsgaV0gPSBkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkaXN0O1xuICAgIH1cbiAgICAvLyBjb21wdXRlIChwX3tpfGp9ICsgcF97anxpfSkvKDJuKVxuICAgIGQycChELCBwZXJwbGV4aXR5LCB0b2wpIHtcbiAgICAgICAgY29uc3QgbmYgPSBNYXRoLnNxcnQoRC5sZW5ndGgpOyAvLyB0aGlzIGJldHRlciBiZSBhbiBpbnRlZ2VyXG4gICAgICAgIGNvbnN0IG4gPSBNYXRoLmZsb29yKG5mKTtcbiAgICAgICAgdGhpcy5hc3NlcnQobiA9PT0gbmYsICdEIHNob3VsZCBoYXZlIHNxdWFyZSBudW1iZXIgb2YgZWxlbWVudHMuJyk7XG4gICAgICAgIGNvbnN0IGhUYXJnZXQgPSBNYXRoLmxvZyhwZXJwbGV4aXR5KTsgLy8gdGFyZ2V0IGVudHJvcHkgb2YgZGlzdHJpYnV0aW9uXG4gICAgICAgIGNvbnN0IFAgPSB0aGlzLnplcm9zKG4gKiBuKTsgLy8gdGVtcG9yYXJ5IHByb2JhYmlsaXR5IG1hdHJpeFxuICAgICAgICBjb25zdCBwcm93ID0gdGhpcy56ZXJvcyhuKTsgLy8gYSB0ZW1wb3Jhcnkgc3RvcmFnZSBjb21wYXJ0bWVudFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgbGV0IGJldGFtaW4gPSAtSW5maW5pdHk7XG4gICAgICAgICAgICBsZXQgYmV0YW1heCA9IEluZmluaXR5O1xuICAgICAgICAgICAgbGV0IGJldGEgPSAxOyAvLyBpbml0aWFsIHZhbHVlIG9mIHByZWNpc2lvblxuICAgICAgICAgICAgbGV0IGRvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IG1heHRyaWVzID0gNTA7XG4gICAgICAgICAgICAvLyBwZXJmb3JtIGJpbmFyeSBzZWFyY2ggdG8gZmluZCBhIHN1aXRhYmxlIHByZWNpc2lvbiBiZXRhXG4gICAgICAgICAgICAvLyBzbyB0aGF0IHRoZSBlbnRyb3B5IG9mIHRoZSBkaXN0cmlidXRpb24gaXMgYXBwcm9wcmlhdGVcbiAgICAgICAgICAgIGxldCBudW0gPSAwO1xuICAgICAgICAgICAgd2hpbGUgKCFkb25lKSB7XG4gICAgICAgICAgICAgICAgLy9kZWJ1Z2dlcjtcbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIGVudHJvcHkgYW5kIGtlcm5lbCByb3cgd2l0aCBiZXRhIHByZWNpc2lvblxuICAgICAgICAgICAgICAgIGxldCBwc3VtID0gMC4wO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwaiA9IE1hdGguZXhwKC1EW2kgKiBuICsgal0gKiBiZXRhKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IGopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBqID0gMDtcbiAgICAgICAgICAgICAgICAgICAgfSAvLyB3ZSBkb250IGNhcmUgYWJvdXQgZGlhZ29uYWxzXG4gICAgICAgICAgICAgICAgICAgIHByb3dbal0gPSBwajtcbiAgICAgICAgICAgICAgICAgICAgcHN1bSArPSBwajtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gbm9ybWFsaXplIHAgYW5kIGNvbXB1dGUgZW50cm9weVxuICAgICAgICAgICAgICAgIGxldCBuSGVyZSA9IDAuMDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGo7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwc3VtID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwaiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwaiA9IHByb3dbal0gLyBwc3VtO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHByb3dbal0gPSBwajtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBqID4gMWUtNykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbkhlcmUgLT0gcGogKiBNYXRoLmxvZyhwaik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gYWRqdXN0IGJldGEgYmFzZWQgb24gcmVzdWx0XG4gICAgICAgICAgICAgICAgaWYgKG5IZXJlID4gaFRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBlbnRyb3B5IHdhcyB0b28gaGlnaCAoZGlzdHJpYnV0aW9uIHRvbyBkaWZmdXNlKVxuICAgICAgICAgICAgICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIGluY3JlYXNlIHRoZSBwcmVjaXNpb24gZm9yIG1vcmUgcGVha3kgZGlzdHJpYnV0aW9uXG4gICAgICAgICAgICAgICAgICAgIGJldGFtaW4gPSBiZXRhOyAvLyBtb3ZlIHVwIHRoZSBib3VuZHNcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJldGFtYXggPT09IEluZmluaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZXRhID0gYmV0YSAqIDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZXRhID0gKGJldGEgKyBiZXRhbWF4KSAvIDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnZlcnNlIGNhc2UuIG1ha2UgZGlzdHJ1YnRpb24gbGVzcyBwZWFreVxuICAgICAgICAgICAgICAgICAgICBiZXRhbWF4ID0gYmV0YTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJldGFtaW4gPT09IC1JbmZpbml0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmV0YSA9IGJldGEgLyAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmV0YSA9IChiZXRhICsgYmV0YW1pbikgLyAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIHN0b3BwaW5nIGNvbmRpdGlvbnM6IHRvbyBtYW55IHRyaWVzIG9yIGdvdCBhIGdvb2QgcHJlY2lzaW9uXG4gICAgICAgICAgICAgICAgbnVtKys7XG4gICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKG5IZXJlIC0gaFRhcmdldCkgPCB0b2wpIHtcbiAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChudW0gPj0gbWF4dHJpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ2RhdGEgcG9pbnQgJyArIGkgKyAnIGdldHMgcHJlY2lzaW9uICcgKyBiZXRhICsgJyBhZnRlciAnICsgbnVtICsgJyBiaW5hcnkgc2VhcmNoIHN0ZXBzLicpO1xuICAgICAgICAgICAgLy8gY29weSBvdmVyIHRoZSBmaW5hbCBwcm93IHRvIFAgYXQgcm93IGlcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgUFtpICogbiArIGpdID0gcHJvd1tqXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSAvLyBlbmQgbG9vcCBvdmVyIGV4YW1wbGVzIGlcbiAgICAgICAgLy8gc3ltbWV0cml6ZSBQIGFuZCBub3JtYWxpemUgaXQgdG8gc3VtIHRvIDEgb3ZlciBhbGwgaWpcbiAgICAgICAgY29uc3QgcE91dCA9IHRoaXMuemVyb3MobiAqIG4pO1xuICAgICAgICBjb25zdCBOMiA9IG4gKiAyO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICAgICAgICAgICAgICBwT3V0W2kgKiBuICsgal0gPSBNYXRoLm1heCgoUFtpICogbiArIGpdICsgUFtqICogbiArIGldKSAvIE4yLCAxZS0xMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwT3V0O1xuICAgIH1cbiAgICAvLyBoZWxwZXIgZnVuY3Rpb25cbiAgICBzaWduKHgpIHsgcmV0dXJuIHggPiAwID8gMSA6IHggPCAwID8gLTEgOiAwOyB9XG4gICAgLy8gdGhpcyBmdW5jdGlvbiB0YWtlcyBhIHNldCBvZiBoaWdoLWRpbWVuc2lvbmFsIHBvaW50c1xuICAgIC8vIGFuZCBjcmVhdGVzIG1hdHJpeCBQIGZyb20gdGhlbSB1c2luZyBnYXVzc2lhbiBrZXJuZWxcbiAgICBpbml0RGF0YVJhdyhYKSB7XG4gICAgICAgIGNvbnN0IE4gPSBYLmxlbmd0aDtcbiAgICAgICAgY29uc3QgRCA9IFhbMF0ubGVuZ3RoO1xuICAgICAgICB0aGlzLmFzc2VydChOID4gMCwgJyBYIGlzIGVtcHR5PyBZb3UgbXVzdCBoYXZlIHNvbWUgZGF0YSEnKTtcbiAgICAgICAgdGhpcy5hc3NlcnQoRCA+IDAsICcgWFswXSBpcyBlbXB0eT8gV2hlcmUgaXMgdGhlIGRhdGE/Jyk7XG4gICAgICAgIGNvbnN0IGRpc3RzID0gdGhpcy54dG9kKFgpOyAvLyBjb252ZXJ0IFggdG8gZGlzdGFuY2VzIHVzaW5nIGdhdXNzaWFuIGtlcm5lbFxuICAgICAgICB0aGlzLlAgPSB0aGlzLmQycChkaXN0cywgdGhpcy5wZXJwbGV4aXR5LCAxZS00KTsgLy8gYXR0YWNoIHRvIG9iamVjdFxuICAgICAgICB0aGlzLk4gPSBOOyAvLyBiYWNrIHVwIHRoZSBzaXplIG9mIHRoZSBkYXRhc2V0XG4gICAgICAgIHRoaXMuaW5pdFNvbHV0aW9uKCk7IC8vIHJlZnJlc2ggdGhpc1xuICAgIH1cbiAgICAvLyB0aGlzIGZ1bmN0aW9uIHRha2VzIGEgZ2l2ZW4gZGlzdGFuY2UgbWF0cml4IGFuZCBjcmVhdGVzXG4gICAgLy8gbWF0cml4IFAgZnJvbSB0aGVtLlxuICAgIC8vIEQgaXMgYXNzdW1lZCB0byBiZSBwcm92aWRlZCBhcyBhIGxpc3Qgb2YgbGlzdHMsIGFuZCBzaG91bGQgYmUgc3ltbWV0cmljXG4gICAgaW5pdERhdGFEaXN0KEQpIHtcbiAgICAgICAgY29uc3QgTiA9IEQubGVuZ3RoO1xuICAgICAgICB0aGlzLmFzc2VydChOID4gMCwgJyBYIGlzIGVtcHR5PyBZb3UgbXVzdCBoYXZlIHNvbWUgZGF0YSEnKTtcbiAgICAgICAgLy8gY29udmVydCBEIHRvIGEgKGZhc3QpIHR5cGVkIGFycmF5IHZlcnNpb25cbiAgICAgICAgY29uc3QgZGlzdHMgPSB0aGlzLnplcm9zKE4gKiBOKTsgLy8gYWxsb2NhdGUgY29udGlndW91cyBhcnJheVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgTjsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IERbaV1bal07XG4gICAgICAgICAgICAgICAgZGlzdHNbaSAqIE4gKyBqXSA9IGQ7XG4gICAgICAgICAgICAgICAgZGlzdHNbaiAqIE4gKyBpXSA9IGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5QID0gdGhpcy5kMnAoZGlzdHMsIHRoaXMucGVycGxleGl0eSwgMWUtNCk7XG4gICAgICAgIHRoaXMuTiA9IE47XG4gICAgICAgIHRoaXMuaW5pdFNvbHV0aW9uKCk7IC8vIHJlZnJlc2ggdGhpc1xuICAgIH1cbiAgICAvLyAocmUpaW5pdGlhbGl6ZXMgdGhlIHNvbHV0aW9uIHRvIHJhbmRvbVxuICAgIGluaXRTb2x1dGlvbigpIHtcbiAgICAgICAgLy8gZ2VuZXJhdGUgcmFuZG9tIHNvbHV0aW9uIHRvIHQtU05FXG4gICAgICAgIHRoaXMuWSA9IHRoaXMucmFuZG4yZCh0aGlzLk4sIHRoaXMuZGltKTsgLy8gdGhlIHNvbHV0aW9uXG4gICAgICAgIHRoaXMuZ2FpbnMgPSB0aGlzLnJhbmRuMmQodGhpcy5OLCB0aGlzLmRpbSwgMS4wKTsgLy8gc3RlcCBnYWlucyB0byBhY2NlbGVyYXRlIHByb2dyZXNzIGluIHVuY2hhbmdpbmcgZGlyZWN0aW9uc1xuICAgICAgICB0aGlzLnlzdGVwID0gdGhpcy5yYW5kbjJkKHRoaXMuTiwgdGhpcy5kaW0sIDAuMCk7IC8vIG1vbWVudHVtIGFjY3VtdWxhdG9yXG4gICAgICAgIHRoaXMuaXRlciA9IDA7XG4gICAgfVxuICAgIC8vIHJldHVybiBwb2ludGVyIHRvIGN1cnJlbnQgc29sdXRpb25cbiAgICBnZXRTb2x1dGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuWTtcbiAgICB9XG4gICAgLy8gcGVyZm9ybSBhIHNpbmdsZSBzdGVwIG9mIG9wdGltaXphdGlvbiB0byBpbXByb3ZlIHRoZSBlbWJlZGRpbmdcbiAgICBzdGVwKCkge1xuICAgICAgICB0aGlzLml0ZXIgKz0gMTtcbiAgICAgICAgY29uc3QgTiA9IHRoaXMuTjtcbiAgICAgICAgY29uc3QgY2cgPSB0aGlzLmNvc3RHcmFkKHRoaXMuWSk7IC8vIGV2YWx1YXRlIGdyYWRpZW50XG4gICAgICAgIGNvbnN0IGNvc3QgPSBjZy5jb3N0O1xuICAgICAgICBjb25zdCBncmFkID0gY2cuZ3JhZDtcbiAgICAgICAgLy8gcGVyZm9ybSBncmFkaWVudCBzdGVwXG4gICAgICAgIGNvbnN0IHltZWFuID0gdGhpcy56ZXJvcyh0aGlzLmRpbSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IHRoaXMuZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBnaWQgPSBncmFkW2ldW2RdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpZCA9IHRoaXMueXN0ZXBbaV1bZF07XG4gICAgICAgICAgICAgICAgY29uc3QgZ2FpbmlkID0gdGhpcy5nYWluc1tpXVtkXTtcbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIGdhaW4gdXBkYXRlXG4gICAgICAgICAgICAgICAgbGV0IG5ld2dhaW4gPSB0aGlzLnNpZ24oZ2lkKSA9PT0gdGhpcy5zaWduKHNpZCkgPyBnYWluaWQgKiAwLjggOiBnYWluaWQgKyAwLjI7XG4gICAgICAgICAgICAgICAgaWYgKG5ld2dhaW4gPCAwLjAxKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld2dhaW4gPSAwLjAxO1xuICAgICAgICAgICAgICAgIH0gLy8gY2xhbXBcbiAgICAgICAgICAgICAgICB0aGlzLmdhaW5zW2ldW2RdID0gbmV3Z2FpbjsgLy8gc3RvcmUgZm9yIG5leHQgdHVyblxuICAgICAgICAgICAgICAgIC8vIGNvbXB1dGUgbW9tZW50dW0gc3RlcCBkaXJlY3Rpb25cbiAgICAgICAgICAgICAgICBjb25zdCBtb212YWwgPSB0aGlzLml0ZXIgPCAyNTAgPyAwLjUgOiAwLjg7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3c2lkID0gbW9tdmFsICogc2lkIC0gdGhpcy5lcHNpbG9uICogbmV3Z2FpbiAqIGdyYWRbaV1bZF07XG4gICAgICAgICAgICAgICAgdGhpcy55c3RlcFtpXVtkXSA9IG5ld3NpZDsgLy8gcmVtZW1iZXIgdGhlIHN0ZXAgd2UgdG9va1xuICAgICAgICAgICAgICAgIC8vIHN0ZXAhXG4gICAgICAgICAgICAgICAgdGhpcy5ZW2ldW2RdICs9IG5ld3NpZDtcbiAgICAgICAgICAgICAgICB5bWVhbltkXSArPSB0aGlzLllbaV1bZF07IC8vIGFjY3VtdWxhdGUgbWVhbiBzbyB0aGF0IHdlIGNhbiBjZW50ZXIgbGF0ZXJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyByZXByb2plY3QgWSB0byBiZSB6ZXJvIG1lYW5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgdGhpcy5kaW07IGQrKykge1xuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSAtPSB5bWVhbltkXSAvIE47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy9pZih0aGlzLml0ZXIlMTAwPT09MCkgY29uc29sZS5sb2coJ2l0ZXIgJyArIHRoaXMuaXRlciArICcsIGNvc3Q6ICcgKyBjb3N0KTtcbiAgICAgICAgcmV0dXJuIGNvc3Q7IC8vIHJldHVybiBjdXJyZW50IGNvc3RcbiAgICB9XG4gICAgLy8gZm9yIGRlYnVnZ2luZzogZ3JhZGllbnQgY2hlY2tcbiAgICBkZWJ1Z0dyYWQoKSB7XG4gICAgICAgIGNvbnN0IE4gPSB0aGlzLk47XG4gICAgICAgIGNvbnN0IGNnID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpOyAvLyBldmFsdWF0ZSBncmFkaWVudFxuICAgICAgICBjb25zdCBjb3N0ID0gY2cuY29zdDtcbiAgICAgICAgY29uc3QgZ3JhZCA9IGNnLmdyYWQ7XG4gICAgICAgIGNvbnN0IGUgPSAxZS01O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCB0aGlzLmRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeW9sZCA9IHRoaXMuWVtpXVtkXTtcbiAgICAgICAgICAgICAgICB0aGlzLllbaV1bZF0gPSB5b2xkICsgZTtcbiAgICAgICAgICAgICAgICBjb25zdCBjZzAgPSB0aGlzLmNvc3RHcmFkKHRoaXMuWSk7XG4gICAgICAgICAgICAgICAgdGhpcy5ZW2ldW2RdID0geW9sZCAtIGU7XG4gICAgICAgICAgICAgICAgY29uc3QgY2cxID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFuYWx5dGljID0gZ3JhZFtpXVtkXTtcbiAgICAgICAgICAgICAgICBjb25zdCBudW1lcmljYWwgPSAoY2cwLmNvc3QgLSBjZzEuY29zdCkgLyAoMiAqIGUpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGkgKyAnLCcgKyBkICsgJzogZ3JhZGNoZWNrIGFuYWx5dGljOiAnICsgYW5hbHl0aWMgKyAnIHZzLiBudW1lcmljYWw6ICcgKyBudW1lcmljYWwpO1xuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSA9IHlvbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gcmV0dXJuIGNvc3QgYW5kIGdyYWRpZW50LCBnaXZlbiBhbiBhcnJhbmdlbWVudFxuICAgIGNvc3RHcmFkKFkpIHtcbiAgICAgICAgY29uc3QgTiA9IHRoaXMuTjtcbiAgICAgICAgY29uc3QgZGltID0gdGhpcy5kaW07IC8vIGRpbSBvZiBvdXRwdXQgc3BhY2VcbiAgICAgICAgY29uc3QgUCA9IHRoaXMuUDtcbiAgICAgICAgY29uc3QgcG11bCA9IHRoaXMuaXRlciA8IDEwMCA/IDQgOiAxOyAvLyB0cmljayB0aGF0IGhlbHBzIHdpdGggbG9jYWwgb3B0aW1hXG4gICAgICAgIC8vIGNvbXB1dGUgY3VycmVudCBRIGRpc3RyaWJ1dGlvbiwgdW5ub3JtYWxpemVkIGZpcnN0XG4gICAgICAgIGNvbnN0IHF1QXJyID0gdGhpcy56ZXJvcyhOICogTik7XG4gICAgICAgIGxldCBxc3VtID0gMC4wO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgTjsgaisrKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRzdW0gPSAwLjA7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCBkaW07IGQrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaGVyZSA9IFlbaV1bZF0gLSBZW2pdW2RdO1xuICAgICAgICAgICAgICAgICAgICBkc3VtICs9IGRoZXJlICogZGhlcmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHF1ID0gMS4wIC8gKDEuMCArIGRzdW0pOyAvLyBTdHVkZW50IHQtZGlzdHJpYnV0aW9uXG4gICAgICAgICAgICAgICAgcXVBcnJbaSAqIE4gKyBqXSA9IHF1O1xuICAgICAgICAgICAgICAgIHF1QXJyW2ogKiBOICsgaV0gPSBxdTtcbiAgICAgICAgICAgICAgICBxc3VtICs9IDIgKiBxdTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBub3JtYWxpemUgUSBkaXN0cmlidXRpb24gdG8gc3VtIHRvIDFcbiAgICAgICAgY29uc3QgTk4gPSBOICogTjtcbiAgICAgICAgY29uc3QgUSA9IHRoaXMuemVyb3MoTk4pO1xuICAgICAgICBmb3IgKGxldCBxID0gMDsgcSA8IE5OOyBxKyspIHtcbiAgICAgICAgICAgIFFbcV0gPSBNYXRoLm1heChxdUFycltxXSAvIHFzdW0sIDFlLTEwMCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNvc3QgPSAwLjA7XG4gICAgICAgIGNvbnN0IGdyYWQgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGdzdW0gPSBuZXcgQXJyYXkoZGltKTsgLy8gaW5pdCBncmFkIGZvciBwb2ludCBpXG4gICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IGRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgZ3N1bVtkXSA9IDAuMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgTjsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29zdCArPSAtUFtpICogTiArIGpdICogTWF0aC5sb2coUVtpICogTiArIGpdKTsgLy8gYWNjdW11bGF0ZSBjb3N0ICh0aGUgbm9uLWNvbnN0YW50IHBvcnRpb24gYXQgbGVhc3QuLi4pXG4gICAgICAgICAgICAgICAgY29uc3QgcHJlbXVsdCA9IDQgKiAocG11bCAqIFBbaSAqIE4gKyBqXSAtIFFbaSAqIE4gKyBqXSkgKiBxdUFycltpICogTiArIGpdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICAgICAgZ3N1bVtkXSArPSBwcmVtdWx0ICogKFlbaV1bZF0gLSBZW2pdW2RdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBncmFkLnB1c2goZ3N1bSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgY29zdCwgZ3JhZCB9O1xuICAgIH1cbn1cbmV4cG9ydHMuVFNORSA9IFRTTkU7XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbl9fd2VicGFja19yZXF1aXJlX18ubSA9IF9fd2VicGFja19tb2R1bGVzX187XG5cbi8vIHRoZSBzdGFydHVwIGZ1bmN0aW9uXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuXHQvLyBUaGlzIGVudHJ5IG1vZHVsZSBkZXBlbmRzIG9uIG90aGVyIGxvYWRlZCBjaHVua3MgYW5kIGV4ZWN1dGlvbiBuZWVkIHRvIGJlIGRlbGF5ZWRcblx0dmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLk8odW5kZWZpbmVkLCBbNjk0XSwgKCkgPT4gKF9fd2VicGFja19yZXF1aXJlX18oMzE5NikpKVxuXHRfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy5PKF9fd2VicGFja19leHBvcnRzX18pO1xuXHRyZXR1cm4gX193ZWJwYWNrX2V4cG9ydHNfXztcbn07XG5cbiIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZiA9IHt9O1xuLy8gVGhpcyBmaWxlIGNvbnRhaW5zIG9ubHkgdGhlIGVudHJ5IGNodW5rLlxuLy8gVGhlIGNodW5rIGxvYWRpbmcgZnVuY3Rpb24gZm9yIGFkZGl0aW9uYWwgY2h1bmtzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmUgPSAoY2h1bmtJZCkgPT4ge1xuXHRyZXR1cm4gUHJvbWlzZS5hbGwoT2JqZWN0LmtleXMoX193ZWJwYWNrX3JlcXVpcmVfXy5mKS5yZWR1Y2UoKHByb21pc2VzLCBrZXkpID0+IHtcblx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmZba2V5XShjaHVua0lkLCBwcm9taXNlcyk7XG5cdFx0cmV0dXJuIHByb21pc2VzO1xuXHR9LCBbXSkpO1xufTsiLCIvLyBUaGlzIGZ1bmN0aW9uIGFsbG93IHRvIHJlZmVyZW5jZSBhc3luYyBjaHVua3MgYW5kIHNpYmxpbmcgY2h1bmtzIGZvciB0aGUgZW50cnlwb2ludFxuX193ZWJwYWNrX3JlcXVpcmVfXy51ID0gKGNodW5rSWQpID0+IHtcblx0Ly8gcmV0dXJuIHVybCBmb3IgZmlsZW5hbWVzIGJhc2VkIG9uIHRlbXBsYXRlXG5cdHJldHVybiBcIlwiICsgY2h1bmtJZCArIFwiLmpzXCI7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsInZhciBzY3JpcHRVcmw7XG5pZiAoX193ZWJwYWNrX3JlcXVpcmVfXy5nLmltcG9ydFNjcmlwdHMpIHNjcmlwdFVybCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5sb2NhdGlvbiArIFwiXCI7XG52YXIgZG9jdW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcuZG9jdW1lbnQ7XG5pZiAoIXNjcmlwdFVybCAmJiBkb2N1bWVudCkge1xuXHRpZiAoZG9jdW1lbnQuY3VycmVudFNjcmlwdClcblx0XHRzY3JpcHRVcmwgPSBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYztcblx0aWYgKCFzY3JpcHRVcmwpIHtcblx0XHR2YXIgc2NyaXB0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpO1xuXHRcdGlmKHNjcmlwdHMubGVuZ3RoKSB7XG5cdFx0XHR2YXIgaSA9IHNjcmlwdHMubGVuZ3RoIC0gMTtcblx0XHRcdHdoaWxlIChpID4gLTEgJiYgIXNjcmlwdFVybCkgc2NyaXB0VXJsID0gc2NyaXB0c1tpLS1dLnNyYztcblx0XHR9XG5cdH1cbn1cbi8vIFdoZW4gc3VwcG9ydGluZyBicm93c2VycyB3aGVyZSBhbiBhdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIHlvdSBtdXN0IHNwZWNpZnkgYW4gb3V0cHV0LnB1YmxpY1BhdGggbWFudWFsbHkgdmlhIGNvbmZpZ3VyYXRpb25cbi8vIG9yIHBhc3MgYW4gZW1wdHkgc3RyaW5nIChcIlwiKSBhbmQgc2V0IHRoZSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyB2YXJpYWJsZSBmcm9tIHlvdXIgY29kZSB0byB1c2UgeW91ciBvd24gbG9naWMuXG5pZiAoIXNjcmlwdFVybCkgdGhyb3cgbmV3IEVycm9yKFwiQXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJyb3dzZXJcIik7XG5zY3JpcHRVcmwgPSBzY3JpcHRVcmwucmVwbGFjZSgvIy4qJC8sIFwiXCIpLnJlcGxhY2UoL1xcPy4qJC8sIFwiXCIpLnJlcGxhY2UoL1xcL1teXFwvXSskLywgXCIvXCIpO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gc2NyaXB0VXJsOyIsIl9fd2VicGFja19yZXF1aXJlX18uYiA9IHNlbGYubG9jYXRpb24gKyBcIlwiO1xuXG4vLyBvYmplY3QgdG8gc3RvcmUgbG9hZGVkIGNodW5rc1xuLy8gXCIxXCIgbWVhbnMgXCJhbHJlYWR5IGxvYWRlZFwiXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHQxOTY6IDFcbn07XG5cbi8vIGltcG9ydFNjcmlwdHMgY2h1bmsgbG9hZGluZ1xudmFyIGluc3RhbGxDaHVuayA9IChkYXRhKSA9PiB7XG5cdHZhciBbY2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBydW50aW1lXSA9IGRhdGE7XG5cdGZvcih2YXIgbW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8obW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuXHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcblx0XHR9XG5cdH1cblx0aWYocnVudGltZSkgcnVudGltZShfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblx0d2hpbGUoY2h1bmtJZHMubGVuZ3RoKVxuXHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkcy5wb3AoKV0gPSAxO1xuXHRwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbihkYXRhKTtcbn07XG5fX3dlYnBhY2tfcmVxdWlyZV9fLmYuaSA9IChjaHVua0lkLCBwcm9taXNlcykgPT4ge1xuXHQvLyBcIjFcIiBpcyB0aGUgc2lnbmFsIGZvciBcImFscmVhZHkgbG9hZGVkXCJcblx0aWYoIWluc3RhbGxlZENodW5rc1tjaHVua0lkXSkge1xuXHRcdGlmKHRydWUpIHsgLy8gYWxsIGNodW5rcyBoYXZlIEpTXG5cdFx0XHRpbXBvcnRTY3JpcHRzKF9fd2VicGFja19yZXF1aXJlX18ucCArIF9fd2VicGFja19yZXF1aXJlX18udShjaHVua0lkKSk7XG5cdFx0fVxuXHR9XG59O1xuXG52YXIgY2h1bmtMb2FkaW5nR2xvYmFsID0gc2VsZltcIndlYnBhY2tDaHVua3BlcHRpZGVzXCJdID0gc2VsZltcIndlYnBhY2tDaHVua3BlcHRpZGVzXCJdIHx8IFtdO1xudmFyIHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uID0gY2h1bmtMb2FkaW5nR2xvYmFsLnB1c2guYmluZChjaHVua0xvYWRpbmdHbG9iYWwpO1xuY2h1bmtMb2FkaW5nR2xvYmFsLnB1c2ggPSBpbnN0YWxsQ2h1bms7XG5cbi8vIG5vIEhNUlxuXG4vLyBubyBITVIgbWFuaWZlc3QiLCIvLyBydW4gc3RhcnR1cFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLngoKTtcbiJdLCJuYW1lcyI6WyJkZWZlcnJlZCIsIm5leHQiLCJyYW5kb21GbG9hdCIsInJhbmdlIiwiTWF0aCIsInJhbmRvbSIsImZsb29yIiwiYXNzZXJ0IiwiY29uZGl0aW9uIiwibWVzc2FnZSIsIkVycm9yIiwidmVjdG9yQWRkIiwicCIsInEiLCJtdWx0aXBsaWVyIiwibkl0ZW1zIiwibGVuZ3RoIiwidG90YWwiLCJpIiwiZmlsbFJhbmRvbU1hdHJpeCIsImRpbWVuc2lvbjEiLCJkaW1lbnNpb24yIiwic2NhbGUiLCJtYXRyaXgiLCJmaWxsIiwiQXJyYXkiLCJtYXAiLCJpbml0Q29vcmRpbmF0ZXMiLCJqIiwiY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UiLCJzcWRpZmZTdW1tIiwidiIsIml0ZW1zU3VtIiwidmVjdG9yU3F1YXJlIiwic3FydCIsImRtTGluZWFySW5kZXgiLCJzaXplIiwiRGlzdGFuY2VNYXRyaXhTZXJ2aWNlIiwiY29uc3RydWN0b3IiLCJ1c2VDb25jdXJyZW50V29ya2VycyIsInRlcm1pbmF0ZU9uQ29tcGxldGUiLCJ0aHJlYWRDb3VudCIsIm5hdmlnYXRvciIsImhhcmR3YXJlQ29uY3VycmVuY3kiLCJ0aGlzIiwiX3dvcmtlckNvdW50IiwibWF4IiwiX3dvcmtlcnMiLCJXb3JrZXIiLCJVUkwiLCJfdGVybWluYXRlT25Db21wbGV0ZSIsImNhbGMiLCJ2YWx1ZXMiLCJmbk5hbWUiLCJub3JtYWxpemUiLCJvcHRzIiwiUHJvbWlzZSIsImFzeW5jIiwicmVzb2x2ZSIsInJlamVjdCIsImxlbiIsInByb21pc2VzIiwidG90YWxMZW5ndGgiLCJtaW4iLCJjaHVua1NpemUiLCJkaXN0YW5jZU1hdHJpeCIsIkZsb2F0MzJBcnJheSIsImVuZFJvdyIsImVuZENvbCIsImxtaW4iLCJsbWF4IiwiTnVtYmVyIiwiTUlOX1ZBTFVFIiwic3RhcnQiLCJlbmQiLCJzdGFydFJvdyIsInN0YXJ0Q29sIiwicG9zdE1lc3NhZ2UiLCJjaHVuY2tTaXplIiwicmVzb2x2ZVdvcmtlciIsInJlamVjdFdvcmtlciIsIm9ubWVzc2FnZSIsImRhdGEiLCJlcnJvciIsImRpc3RhbmNlTWF0cml4RGF0YSIsInRlcm1pbmF0ZSIsInNldCIsImFsbCIsImZvckVhY2giLCJ2YWx1ZSIsImluZGV4IiwiZSIsIndvcmtlciIsIlNQRUJhc2UiLCJvcHRpb25zIiwic3RlcHMiLCJjeWNsZXMiLCJjdXRvZmYiLCJsYW1iZGEiLCJkbGFtYmRhIiwibGFtYmRhMiIsImRsYW1iZGEyIiwiZXBzaWxvbiIsImRpc3RhbmNlRnVuY3Rpb24iLCJkaXN0YW5jZSIsImRpc3RhbmNlRnVuY3Rpb25OYW1lIiwiaW5pdERpc3RhbmNlIiwidmVjdG9ycyIsImRtSW5kZXhGdW5jdCIsIm1hdHJpeFNlcnZpY2UiLCJjYWxjRGlzdGFuY2UiLCJpbmRleDEiLCJpbmRleDIiLCJlbWJlZCIsImNvb3JkaW5hdGVzIiwiZGltZW5zaW9uIiwiY3ljbGUiLCJzdGVwIiwicm93aSIsInJvd2oiLCJyIiwiZCIsImRpZmZJSiIsIlBTUEVCYXNlIiwiT3JpZ2luYWxTUEUiLCJzdXBlciIsInJhZGl1c1BlcmNlbnQiLCJtYXhEaXN0YW5jZSIsIm1heERpc3RhbmNlU3RlcHMiLCJuIiwicmFkaXVzIiwiU3RyaW5nTWV0cmljc05hbWVzIiwiVmVjdG9yTWV0cmljc05hbWVzIiwiQml0QXJyYXlNZXRyaWNzTmFtZXMiLCJJbnRBcnJheU1ldHJpY3NOYW1lcyIsIkRpc3RhbmNlTWV0cmljc1N1YmplY3RzIiwiTnVtYmVyTWV0cmljc05hbWVzIiwidGFuaW1vdG9TaW1pbGFyaXR5IiwieCIsInkiLCJ0cnVlQ291bnQiLCJjb21tb24iLCJhbmRXaXRoQ291bnRCaXRzIiwiZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eSIsInNpbWlsYXJpdHkiLCJUYW5pbW90byIsIkRpY2UiLCJBc3ltbWV0cmljIiwiQnJhdW5CbGFucXVldCIsIkNvc2luZSIsIkt1bGN6eW5za2kiLCJNY0Nvbm5hdWdoZXkiLCJSb2dvdEdvbGRiZXJnIiwiUnVzc2VsIiwiU29rYWwiLCJIYW1taW5nIiwiRXVjbGlkZWFuIiwiSEFNTUlORyIsIkxFVkVOU0hURUlOIiwiTU9OT01FUl9DSEVNSUNBTF9ESVNUQU5DRSIsInZlY3RvckRpc3RhbmNlTWV0cmljc01ldGhvZHMiLCJzdHJpbmdEaXN0YW5jZU1ldHJpY3NNZXRob2RzIiwiTGV2ZW5zaHRlaW4iLCJKYXJvV2lua2xlciIsIk1hbmhhdHRhbiIsInMxIiwiczIiLCJkaXN0IiwiYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzIiwiZGljZVNpbWlsYXJpdHkiLCJhc3ltbWV0cmljU2ltaWxhcml0eSIsImJyYXVuQmxhbnF1ZXRTaW1pbGFyaXR5IiwiY29zaW5lU2ltaWxhcml0eSIsInRvdGFsUHJvZCIsImt1bGN6eW5za2lTaW1pbGFyaXR5IiwibWNDb25uYXVnaGV5U2ltaWxhcml0eSIsImNvdW50Qml0cyIsImRpZmYiLCJyb2dvdEdvbGRiZXJnU2ltaWxhcml0eSIsInJ1c3NlbFNpbWlsYXJpdHkiLCJzb2thbFNpbWlsYXJpdHkiLCJpbnRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHMiLCJUYW5pbW90b0ludEFycmF5IiwibnVtYmVyRGlzdGFuY2VNZXRyaWNzTWV0aG9kcyIsIk51bWVyaWNEaXN0YW5jZSIsImFicyIsIkF2YWlsYWJsZU1ldHJpY3MiLCJWZWN0b3IiLCJTdHJpbmciLCJCaXRBcnJheSIsIk1hY3JvTW9sZWN1bGUiLCJORUVETEVNQU5OX1dVTlNDSCIsIkludEFycmF5IiwiTWV0cmljVG9EYXRhVHlwZSIsIk9iamVjdCIsImtleXMiLCJyZWR1Y2UiLCJyZXQiLCJrZXkiLCJ2YWwiLCJNZWFzdXJlIiwibWV0aG9kIiwiZGF0YVR5cGUiLCJnZXRNZWFzdXJlIiwiZGljdCIsImhhc093blByb3BlcnR5IiwibmFtZSIsInRvU3RyaW5nIiwiZ2V0TWV0cmljQnlEYXRhVHlwZSIsImF2YWlsYWJsZU1lYXN1cmVzIiwidGF1UmFuZEludCIsInRhdVJhbmQiLCJlbXB0eSIsIm91dHB1dCIsInB1c2giLCJ1bmRlZmluZWQiLCJfIiwiZmlsbGVkIiwiemVyb3MiLCJtZWFuIiwiaW5wdXQiLCJzdW0iLCJyZWplY3Rpb25TYW1wbGUiLCJuU2FtcGxlcyIsInBvb2xTaXplIiwicmVzdWx0IiwicmVqZWN0U2FtcGxlIiwiYnJva2VuIiwiayIsInJlc2hhcGUyZCIsImEiLCJiIiwicm93cyIsImNvdW50IiwiY29sIiwibWFrZUhlYXAiLCJuUG9pbnRzIiwibWFrZUFycmF5cyIsImZpbGxWYWx1ZSIsImhlYXAiLCJJbmZpbml0eSIsImhlYXBQdXNoIiwicm93Iiwid2VpZ2h0IiwiZmxhZyIsImluZGljZXMiLCJ3ZWlnaHRzIiwidW5jaGVja2VkSGVhcFB1c2giLCJpc05ldyIsImlTd2FwIiwiaWMxIiwiaWMyIiwiaGVhcFNoYXBlMiIsImJ1aWxkQ2FuZGlkYXRlcyIsImN1cnJlbnRHcmFwaCIsIm5WZXJ0aWNlcyIsIm5OZWlnaGJvcnMiLCJtYXhDYW5kaWRhdGVzIiwiY2FuZGlkYXRlTmVpZ2hib3JzIiwiaWR4IiwiaXNuIiwiZGVoZWFwU29ydCIsImluZEhlYXAiLCJkaXN0SGVhcCIsImluZEhlYXBJbmRleCIsImRpc3RIZWFwSW5kZXgiLCJ0ZW1wMSIsInRlbXAyIiwic2lmdERvd24iLCJoZWFwMSIsImhlYXAyIiwiY2VpbGluZyIsImVsdCIsImxlZnRDaGlsZCIsInJpZ2h0Q2hpbGQiLCJzd2FwIiwic21hbGxlc3RGbGFnZ2VkIiwiaW5kIiwibWluRGlzdCIsInJlc3VsdEluZGV4IiwiU3BhcnNlTWF0cml4IiwiY29scyIsImRpbXMiLCJlbnRyaWVzIiwiTWFwIiwiblJvd3MiLCJuQ29scyIsImNoZWNrRGltcyIsIm1ha2VLZXkiLCJoYXMiLCJnZXQiLCJkZWZhdWx0VmFsdWUiLCJnZXRBbGwiLCJvcmRlcmVkIiwicm93Q29sVmFsdWVzIiwic29ydCIsImdldERpbXMiLCJnZXRSb3dzIiwiZnJvbSIsImdldENvbHMiLCJnZXRWYWx1ZXMiLCJmbiIsInZhbHMiLCJ0b0FycmF5Iiwib2xkUm93cyIsIm9sZENvbHMiLCJvbGRWYWxzIiwibWF0bGVuIiwiSW50MzJBcnJheSIsInBhaXJ3aXNlTXVsdGlwbHkiLCJlbGVtZW50V2lzZSIsImFkZCIsInN1YnRyYWN0IiwibXVsdGlwbHlTY2FsYXIiLCJzY2FsYXIiLCJlbGltaW5hdGVaZXJvcyIsIm0iLCJ6ZXJvSW5kaWNlcyIsIlNldCIsInJlbW92ZUJ5WmVyb0luZGV4IiwibmV4dFZhbHVlcyIsImZpbHRlciIsIm5leHRSb3dzIiwibmV4dENvbHMiLCJub3JtVHlwZSIsIm5vcm1GbiIsIm5vcm1GbnMiLCJjb2xzQnlSb3ciLCJuZXh0TWF0cml4Iiwibm9ybSIsInhzIiwib3AiLCJ2aXNpdGVkIiwib3BlcmF0ZSIsIm5leHRWYWx1ZSIsInZhbHVlc0EiLCJyb3dzQSIsImNvbHNBIiwidmFsdWVzQiIsInJvd3NCIiwiY29sc0IiLCJnZXRDU1IiLCJpbmRwdHIiLCJjdXJyZW50Um93IiwiRmxhdFRyZWUiLCJoeXBlcnBsYW5lcyIsIm9mZnNldHMiLCJjaGlsZHJlbiIsIm1ha2VGb3Jlc3QiLCJuVHJlZXMiLCJsZWFmU2l6ZSIsInRyZWVzIiwibWFrZUV1Y2xpZGVhblRyZWUiLCJtYWtlVHJlZSIsImZvcmVzdCIsInRyZWUiLCJuTm9kZXMiLCJudW1Ob2RlcyIsIm5MZWF2ZXMiLCJudW1MZWF2ZXMiLCJoeXBlcnBsYW5lIiwicmVjdXJzaXZlRmxhdHRlbiIsImZsYXR0ZW5UcmVlIiwic3BsaXRSZXN1bHRzIiwibGVmdEluZGV4IiwicmlnaHRJbmRleCIsImxlZnQiLCJyaWdodCIsImh5cGVycGxhbmVPZmZzZXQiLCJoeXBlcnBsYW5lVmVjdG9yIiwibkxlZnQiLCJuUmlnaHQiLCJzaWRlIiwibWFyZ2luIiwiaW5kaWNlc0xlZnQiLCJpbmRpY2VzUmlnaHQiLCJvZmZzZXQiLCJldWNsaWRlYW5SYW5kb21Qcm9qZWN0aW9uU3BsaXQiLCJpc0xlYWYiLCJub2RlTnVtIiwibGVhZk51bSIsInNwbGljZSIsIm9sZE5vZGVOdW0iLCJyZXMiLCJzZWxlY3RTaWRlIiwicG9pbnQiLCJzZWFyY2hGbGF0VHJlZSIsIm5vZGUiLCJwcm90b3R5cGUiLCJpc0FueUFycmF5Iiwib2JqZWN0IiwiY2FsbCIsImVuZHNXaXRoIiwiZXJyb3JDYWxjdWxhdGlvbiIsInBhcmFtZXRlcnMiLCJwYXJhbWV0ZXJpemVkRnVuY3Rpb24iLCJmdW5jIiwidGFnIiwiaW5jbHVkZXMiLCJyZXNjYWxlIiwiYXJndW1lbnRzIiwiVHlwZUVycm9yIiwiY3VycmVudE1pbiIsIl9vcHRpb25zJGZyb21JbmRleCIsImZyb21JbmRleCIsIl9vcHRpb25zJHRvSW5kZXgiLCJ0b0luZGV4IiwiaXNJbnRlZ2VyIiwibWluVmFsdWUiLCJjdXJyZW50TWF4IiwibWF4VmFsdWUiLCJSYW5nZUVycm9yIiwiX29wdGlvbnMkbWluIiwiYXV0b01pbk1heCIsIl9vcHRpb25zJG1heCIsImZhY3RvciIsImluZGVudCIsInJlcGVhdCIsImluZGVudERhdGEiLCJpbnNwZWN0TWF0cml4V2l0aE9wdGlvbnMiLCJtYXhSb3dzIiwibWF4Q29sdW1ucyIsIm1heE51bVNpemUiLCJwYWRNaW51cyIsImNvbHVtbnMiLCJtYXhJIiwibWF4SiIsImxvb3AiLCJsaW5lIiwiZm9ybWF0TnVtYmVyIiwiam9pbiIsImluc3BlY3REYXRhIiwibnVtIiwiZm9ybWF0TnVtYmVyMiIsInBhZEVuZCIsInN0ciIsImZpeCIsInRvRml4ZWQiLCJzdGFydHNXaXRoIiwiZXhwIiwidG9FeHBvbmVudGlhbCIsInNsaWNlIiwiY2hlY2tSb3dJbmRleCIsIm91dGVyIiwiY2hlY2tDb2x1bW5JbmRleCIsImNoZWNrUm93VmVjdG9yIiwidmVjdG9yIiwidG8xREFycmF5IiwiY2hlY2tDb2x1bW5WZWN0b3IiLCJjaGVja1JhbmdlIiwic3RhcnRDb2x1bW4iLCJlbmRDb2x1bW4iLCJjaGVja051bWJlciIsIm5ld0FycmF5IiwiYXJyYXkiLCJjaGVja05vbkVtcHR5IiwiaXNFbXB0eSIsIkFic3RyYWN0TWF0cml4IiwiZnJvbTFEQXJyYXkiLCJuZXdSb3dzIiwibmV3Q29sdW1ucyIsIm5ld0RhdGEiLCJuZXdNYXRyaXgiLCJNYXRyaXgiLCJjb2x1bW4iLCJyb3dWZWN0b3IiLCJjb2x1bW5WZWN0b3IiLCJvbmVzIiwicmFuZCIsInJhbmRJbnQiLCJpbnRlcnZhbCIsInJvdW5kIiwiZXllIiwiZGlhZyIsImwiLCJtYXRyaXgxIiwibWF0cml4MiIsImNoZWNrTWF0cml4IiwiaXNNYXRyaXgiLCJrbGFzcyIsImFwcGx5IiwiY2FsbGJhY2siLCJ0bzJEQXJyYXkiLCJjb3B5IiwidG9KU09OIiwiaXNSb3dWZWN0b3IiLCJpc0NvbHVtblZlY3RvciIsImlzVmVjdG9yIiwiaXNTcXVhcmUiLCJpc1N5bW1ldHJpYyIsImlzRWNoZWxvbkZvcm0iLCJwcmV2aW91c0NvbHVtbiIsImNoZWNrZWQiLCJpc1JlZHVjZWRFY2hlbG9uRm9ybSIsImVjaGVsb25Gb3JtIiwiY2xvbmUiLCJoIiwiaU1heCIsInN3YXBSb3dzIiwidG1wIiwicmVkdWNlZEVjaGVsb25Gb3JtIiwibWF4Um93IiwicGl2b3QiLCJzZXRTdWJNYXRyaXgiLCJuZWciLCJtdWxTIiwiZ2V0Um93IiwiZ2V0Um93VmVjdG9yIiwic2V0Um93Iiwicm93MSIsInJvdzIiLCJ0ZW1wIiwiZ2V0Q29sdW1uIiwiZ2V0Q29sdW1uVmVjdG9yIiwic2V0Q29sdW1uIiwic3dhcENvbHVtbnMiLCJjb2x1bW4xIiwiY29sdW1uMiIsImFkZFJvd1ZlY3RvciIsInN1YlJvd1ZlY3RvciIsIm11bFJvd1ZlY3RvciIsImRpdlJvd1ZlY3RvciIsImFkZENvbHVtblZlY3RvciIsInN1YkNvbHVtblZlY3RvciIsIm11bENvbHVtblZlY3RvciIsImRpdkNvbHVtblZlY3RvciIsIm11bFJvdyIsIm11bENvbHVtbiIsImJ5IiwiTmFOIiwiTkVHQVRJVkVfSU5GSU5JVFkiLCJtYXhJbmRleCIsIlBPU0lUSVZFX0lORklOSVRZIiwibWluSW5kZXgiLCJtYXhSb3dJbmRleCIsIm1pblJvdyIsIm1pblJvd0luZGV4IiwibWF4Q29sdW1uIiwibWF4Q29sdW1uSW5kZXgiLCJtaW5Db2x1bW4iLCJtaW5Db2x1bW5JbmRleCIsInR5cGUiLCJjdW11bGF0aXZlU3VtIiwiZG90IiwidmVjdG9yMiIsInZlY3RvcjEiLCJtbXVsIiwib3RoZXIiLCJCY29saiIsIkZsb2F0NjRBcnJheSIsInMiLCJzdHJhc3NlbjJ4MiIsImExMSIsImIxMSIsImExMiIsImIxMiIsImEyMSIsImIyMSIsImEyMiIsImIyMiIsIm0xIiwibTIiLCJtMyIsIm00IiwibTUiLCJjMDAiLCJjMDEiLCJjMTAiLCJjMTEiLCJzdHJhc3NlbjN4MyIsImEwMCIsImEwMSIsImEwMiIsImExMCIsImEyMCIsImIwMCIsImIwMSIsImIwMiIsImIxMCIsImIyMCIsIm02IiwibTciLCJtOCIsIm05IiwibTEyIiwibTEzIiwibTE0IiwibTE1IiwibTE2IiwibTE3IiwibTE4IiwiYzAyIiwiYzEyIiwiYzIwIiwiYzIxIiwiYzIyIiwibW11bFN0cmFzc2VuIiwicjEiLCJjMSIsInIyIiwiYzIiLCJtYXQiLCJjIiwicmVzdWx0YXQiLCJjb25zb2xlIiwid2FybiIsImJsb2NrTXVsdCIsImhhbGZSb3dzIiwicGFyc2VJbnQiLCJoYWxmQ29scyIsInN1Yk1hdHJpeCIsInN1YiIsInNjYWxlUm93cyIsImlzRmluaXRlIiwic2NhbGVDb2x1bW5zIiwiZmxpcFJvd3MiLCJtaWRkbGUiLCJjZWlsIiwiZmlyc3QiLCJsYXN0IiwiZmxpcENvbHVtbnMiLCJrcm9uZWNrZXJQcm9kdWN0Iiwia3JvbmVja2VyU3VtIiwiQXhJIiwiSXhCIiwidHJhbnNwb3NlIiwic29ydFJvd3MiLCJjb21wYXJlRnVuY3Rpb24iLCJjb21wYXJlTnVtYmVycyIsInNvcnRDb2x1bW5zIiwic3ViTWF0cml4Um93Iiwic3ViTWF0cml4Q29sdW1uIiwic2VsZWN0aW9uIiwicm93SW5kaWNlcyIsImNvbHVtbkluZGljZXMiLCJjaGVja1Jvd0luZGljZXMiLCJjaGVja0NvbHVtbkluZGljZXMiLCJyb3dJbmRleCIsImNvbHVtbkluZGV4IiwidHJhY2UiLCJzdW1CeVJvdyIsInN1bUJ5Q29sdW1uIiwic3VtQWxsIiwicHJvZHVjdCIsInByb2R1Y3RCeVJvdyIsInByb2R1Y3RCeUNvbHVtbiIsInByb2R1Y3RBbGwiLCJ2YXJpYW5jZSIsInVuYmlhc2VkIiwic3VtMSIsInN1bTIiLCJ2YXJpYW5jZUJ5Um93IiwidmFyaWFuY2VCeUNvbHVtbiIsInZhcmlhbmNlQWxsIiwic3RhbmRhcmREZXZpYXRpb24iLCJjZW50ZXIiLCJjZW50ZXJCeVJvdyIsImNlbnRlckJ5Q29sdW1uIiwiY2VudGVyQWxsIiwicG93IiwiZ2V0U2NhbGVCeVJvdyIsInNjYWxlQnlSb3ciLCJnZXRTY2FsZUJ5Q29sdW1uIiwic2NhbGVCeUNvbHVtbiIsImRpdmlkZXIiLCJnZXRTY2FsZUFsbCIsInNjYWxlQWxsIiwiU3ltYm9sIiwiZm9yIiwicmFuZG9tSW50IiwiZGlhZ29uYWwiLCJpZGVudGl0eSIsIm5lZ2F0ZSIsInRlbnNvclByb2R1Y3QiLCJuQ29sdW1ucyIsImFycmF5RGF0YSIsImV2ZXJ5IiwiZWxlbWVudCIsInJlbW92ZVJvdyIsImFkZFJvdyIsInJlbW92ZUNvbHVtbiIsIm5ld1JvdyIsImFkZENvbHVtbiIsImFkZFMiLCJhZGRNIiwic3ViUyIsInN1Yk0iLCJzdWJ0cmFjdFMiLCJzdWJ0cmFjdE0iLCJtdWwiLCJtdWxNIiwibXVsdGlwbHkiLCJtdWx0aXBseVMiLCJtdWx0aXBseU0iLCJkaXYiLCJkaXZTIiwiZGl2TSIsImRpdmlkZSIsImRpdmlkZVMiLCJkaXZpZGVNIiwibW9kIiwibW9kUyIsIm1vZE0iLCJtb2R1bHVzIiwibW9kdWx1c1MiLCJtb2R1bHVzTSIsImFuZCIsImFuZFMiLCJhbmRNIiwib3IiLCJvclMiLCJvck0iLCJ4b3IiLCJ4b3JTIiwieG9yTSIsImxlZnRTaGlmdCIsImxlZnRTaGlmdFMiLCJsZWZ0U2hpZnRNIiwic2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdCIsInNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRTIiwic2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdE0iLCJyaWdodFNoaWZ0IiwicmlnaHRTaGlmdFMiLCJyaWdodFNoaWZ0TSIsInplcm9GaWxsUmlnaHRTaGlmdCIsInplcm9GaWxsUmlnaHRTaGlmdFMiLCJ6ZXJvRmlsbFJpZ2h0U2hpZnRNIiwibm90IiwiYWNvcyIsImFjb3NoIiwiYXNpbiIsImFzaW5oIiwiYXRhbiIsImF0YW5oIiwiY2JydCIsImNsejMyIiwiY29zIiwiY29zaCIsImV4cG0xIiwiZnJvdW5kIiwibG9nIiwibG9nMXAiLCJsb2cxMCIsImxvZzIiLCJzaWduIiwic2luIiwic2luaCIsInRhbiIsInRhbmgiLCJ0cnVuYyIsImFyZzAiLCJwb3dTIiwicG93TSIsImluc3RhbGxNYXRoT3BlcmF0aW9ucyIsIldyYXBwZXJNYXRyaXgyRCIsIkx1RGVjb21wb3NpdGlvbiIsInQiLCJMVWNvbGoiLCJrbWF4IiwibHUiLCJwaXZvdFZlY3RvciIsInBpdm90U2lnbiIsIkxVIiwiaXNTaW5ndWxhciIsInNvbHZlIiwiWCIsImRldGVybWluYW50IiwibG93ZXJUcmlhbmd1bGFyTWF0cml4IiwidXBwZXJUcmlhbmd1bGFyTWF0cml4IiwicGl2b3RQZXJtdXRhdGlvblZlY3RvciIsImh5cG90ZW51c2UiLCJRckRlY29tcG9zaXRpb24iLCJxciIsInJkaWFnIiwibnJtIiwiUVIiLCJSZGlhZyIsImlzRnVsbFJhbmsiLCJvcnRob2dvbmFsTWF0cml4IiwiU2luZ3VsYXJWYWx1ZURlY29tcG9zaXRpb24iLCJjb21wdXRlTGVmdFNpbmd1bGFyVmVjdG9ycyIsImNvbXB1dGVSaWdodFNpbmd1bGFyVmVjdG9ycyIsImF1dG9UcmFuc3Bvc2UiLCJ3YW50dSIsIkJvb2xlYW4iLCJ3YW50diIsInN3YXBwZWQiLCJhdXgiLCJudSIsIm5pIiwiVSIsIlYiLCJ3b3JrIiwic2kiLCJuY3QiLCJucnQiLCJtcmMiLCJwcCIsIml0ZXIiLCJlcHMiLCJFUFNJTE9OIiwia2FzZSIsImFscGhhIiwiaXNOYU4iLCJrcyIsImYiLCJjcyIsInNuIiwic3AiLCJzcG0xIiwiZXBtMSIsInNrIiwiZWsiLCJzaGlmdCIsImciLCJZIiwidGhyZXNob2xkIiwic2NvbHMiLCJMcyIsInJpZ2h0U2luZ3VsYXJWZWN0b3JzIiwiVkwiLCJ2cm93cyIsInVyb3dzIiwiVkxVIiwic29sdmVGb3JEaWFnb25hbCIsImludmVyc2UiLCJ2Y29scyIsInVjb2xzIiwibm9ybTIiLCJyYW5rIiwidG9sIiwiaWkiLCJsZWZ0U2luZ3VsYXJWZWN0b3JzIiwiZGlhZ29uYWxNYXRyaXgiLCJwYXJhbXMiLCJkYW1waW5nIiwiZ3JhZGllbnREaWZmZXJlbmNlIiwiZXZhbHVhdGVkRGF0YSIsImdyYWRpZW50RnVuYyIsInBhcmFtRnVuY3Rpb24iLCJhbnMiLCJwYXJhbSIsImF1eFBhcmFtcyIsImZ1bmNQYXJhbSIsImdyYWRpZW50RnVuY3Rpb24iLCJtYXRyaXhGdW5jIiwibWF0cml4RnVuY3Rpb24iLCJpbnZlcnNlTWF0cml4IiwidXNlU1ZEIiwibGVmdEhhbmRTaWRlIiwicmlnaHRIYW5kU2lkZSIsIlNNT09USF9LX1RPTEVSQU5DRSIsIk1JTl9LX0RJU1RfU0NBTEUiLCJVTUFQIiwibmVpZ2hib3JzIiwibGVhcm5pbmdSYXRlIiwibG9jYWxDb25uZWN0aXZpdHkiLCJuQ29tcG9uZW50cyIsIm5FcG9jaHMiLCJuZWdhdGl2ZVNhbXBsZVJhdGUiLCJyZXB1bHNpb25TdHJlbmd0aCIsInNldE9wTWl4UmF0aW8iLCJzcHJlYWQiLCJ0cmFuc2Zvcm1RdWV1ZVNpemUiLCJ0YXJnZXRNZXRyaWMiLCJ0YXJnZXRXZWlnaHQiLCJ0YXJnZXROTmVpZ2hib3JzIiwiZGlzdGFuY2VGbiIsIm51bWVyaWMiLCJpc0luaXRpYWxpemVkIiwicnBGb3Jlc3QiLCJlbWJlZGRpbmciLCJvcHRpbWl6YXRpb25TdGF0ZSIsIk9wdGltaXphdGlvblN0YXRlIiwic2V0UGFyYW0iLCJmaXQiLCJpbml0aWFsaXplRml0Iiwib3B0aW1pemVMYXlvdXQiLCJmaXRBc3luYyIsIm9wdGltaXplTGF5b3V0QXN5bmMiLCJzZXRTdXBlcnZpc2VkUHJvamVjdGlvbiIsInNldFByZWNvbXB1dGVkS05OIiwia25uSW5kaWNlcyIsImtubkRpc3RhbmNlcyIsImdldE5FcG9jaHMiLCJrbm5SZXN1bHRzIiwibmVhcmVzdE5laWdoYm9ycyIsImdyYXBoIiwiZnV6enlTaW1wbGljaWFsU2V0IiwibWFrZVNlYXJjaEZucyIsInNlYXJjaEdyYXBoIiwibWFrZVNlYXJjaEdyYXBoIiwicHJvY2Vzc0dyYXBoRm9yU3VwZXJ2aXNlZFByb2plY3Rpb24iLCJoZWFkIiwidGFpbCIsImVwb2Noc1BlclNhbXBsZSIsImluaXRpYWxpemVTaW1wbGljaWFsU2V0RW1iZWRkaW5nIiwiaW5pdGlhbGl6ZU9wdGltaXphdGlvbiIsInByZXBhcmVGb3JPcHRpbWl6YXRpb25Mb29wIiwiaW5pdEZyb21UcmVlIiwiaW5pdEZyb21SYW5kb20iLCJxdWVyeVBvaW50cyIsIl9oZWFwIiwiX3RyZWUiLCJzZWFyY2giLCJpbml0aWFsaXphdGlvbiIsInRyaWVkIiwidmVydGV4IiwiY2FuZGlkYXRlcyIsImNhbmRpZGF0ZSIsImtubiIsImRpc3RhbmNlcyIsIm5laWdoYm9yIiwidHJhbnNmb3JtIiwidG9UcmFuc2Zvcm0iLCJyYXdEYXRhIiwiaW5pdCIsInJlc3VsdHMiLCJhZGp1c3RlZExvY2FsQ29ubmVjdGl2aXR5Iiwic2lnbWFzIiwicmhvcyIsInNtb290aEtOTkRpc3RhbmNlIiwiY29tcHV0ZU1lbWJlcnNoaXBTdHJlbmd0aHMiLCJjc3JNYXRyaXgiLCJ6IiwiaW5pdFRyYW5zZm9ybSIsImdyYXBoTWF4IiwibWFrZUVwb2Noc1BlclNhbXBsZSIsImFzc2lnbk9wdGltaXphdGlvblN0YXRlUGFyYW1ldGVycyIsImhlYWRFbWJlZGRpbmciLCJ0YWlsRW1iZWRkaW5nIiwiY3VycmVudEVwb2NoIiwiZmFyRGlzdCIsImNhdGVnb3JpY2FsU2ltcGxpY2lhbFNldEludGVyc2VjdGlvbiIsIm9wdGltaXplTGF5b3V0U3RlcCIsImdldEVtYmVkZGluZyIsIm1ldHJpY05ORGVzY2VudCIsImxlYWZBcnJheSIsIm5JdGVycyIsImRlbHRhIiwicmhvIiwicnBUcmVlSW5pdCIsImNqIiwiY2siLCJzcGFyc2VNYXRyaXgiLCJwcm9kTWF0cml4Iiwic2ltcGxpY2lhbFNldCIsInRhcmdldCIsInVua25vd25EaXN0IiwiaW50ZXJzZWN0aW9uIiwiZmFzdEludGVyc2VjdGlvbiIsInJlc2V0TG9jYWxDb25uZWN0aXZpdHkiLCJuSXRlciIsImJhbmR3aWR0aCIsImxvIiwiaGkiLCJtaWQiLCJpdGhEaXN0YW5jZXMiLCJub25aZXJvRGlzdHMiLCJpbnRlcnBvbGF0aW9uIiwicHN1bSIsIm1lYW5JdGhEaXN0YW5jZXMiLCJtZWFuRGlzdGFuY2VzIiwiZ3JhcGhWYWx1ZXMiLCJlbnRyeSIsInciLCJzdGF0ZSIsImFzc2lnbiIsImRpbSIsIm1vdmVPdGhlciIsImVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlIiwiZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZSIsImVwb2NoT2ZOZXh0U2FtcGxlIiwiaW5pdGlhbEFscGhhIiwiZ2FtbWEiLCJ4diIsInl2IiwicGFyYW1ldGVyVmFsdWVzIiwibWF4SXRlcmF0aW9ucyIsImVycm9yVG9sZXJhbmNlIiwibWluVmFsdWVzIiwibWF4VmFsdWVzIiwiaW5pdGlhbFZhbHVlcyIsInBhckxlbiIsIk1BWF9TQUZFX0lOVEVHRVIiLCJNSU5fU0FGRV9JTlRFR0VSIiwiaXRlcmF0aW9uIiwiY29udmVyZ2VkIiwicGFyYW1ldGVyRXJyb3IiLCJpdGVyYXRpb25zIiwiZmluZEFCUGFyYW1zIiwiY3VycmVudCIsImRpc3RTcXVhcmVkIiwickRpc3QiLCJncmFkQ29lZmYiLCJncmFkRCIsImNsaXAiLCJuTmVnU2FtcGxlcyIsImVwb2NoQ2FsbGJhY2siLCJlcG9jaENvbXBsZXRlZCIsInNob3VsZFN0b3AiLCJpc0ZpbmlzaGVkIiwic2V0VGltZW91dCIsImVyciIsImNsaXBWYWx1ZSIsIkRpbVJlZHVjdGlvbk1ldGhvZHMiLCJEaXN0YW5jZU1hdHJpeCIsIl9kYXRhIiwiX3NpemUiLCJkYXRhTGVuZ3RoIiwiX2xpbmVhcml6ZUlKIiwibGlzdCIsInNxdWFyZSIsIlNwYXJzZU1hdHJpeFNlcnZpY2UiLCJtYXRTaXplIiwic3RhcnRJZHgiLCJlbmRJZHgiLCJmdWxsU2l6ZSIsImFjYyIsImNhbGNTeW5jIiwiY250IiwibWkiLCJtaiIsInNvbWUiLCJSZWR1Y2VyIiwiQXZhaWxhYmxlUmVkdWNlcnMiLCJkaXN0YW5jZUZuQXJncyIsInVzaW5nU3BhcnNlTWF0cml4Iiwic3BhcnNlTWF0cml4VGhyZXNob2xkIiwidHJhbnNmZXJlZFNwYXJzZU1hdHJpeCIsInByb2dyZXNzRnVuYyIsImRpc3RhbmNlRm5hbWUiLCJkbUluZGV4RnVuYyIsInVzaW5nRGlzdGFuY2VNYXRyaXgiLCJwcmVDYWxjdWxhdGVEaXN0YW5jZU1hdHJpeCIsIl9lbmNvZGVkRGlzdGFuY2VNYXRyaXgiLCJiaW5kIiwiX2VuY29kZWRTcGFyc2VNYXRyaXgiLCJfZW5jb2RlZERpc3RhbmNlIiwicmVkdWNlciIsInBhcmFsbGVsRGlzdGFuY2VXb3JrZXJzIiwidGltZSIsInRpbWVFbmQiLCJrbm5SZXMiLCJuZWlnaGJvdXJzIiwiaW5zZXJ0IiwiZGlzdGFuY2VzQXIiLCJpbmRleGVzIiwia25uSW5kZXhlcyIsImdldEtubkdyYXBoIiwic2Vjb25kIiwiZXBvYyIsIm1hdHJpeFByb3h5IiwiY29uZGVuc2VkQXJyYXkiLCJsaW5lYXJGdW5jIiwibGluZWFySW5kZXgiLCJpTnVtIiwiak51bSIsImlkeDFIYW5kbGVyIiwiaWR4MSIsIl9yZWNlaXZlciIsIlByb3h5IiwiaWR4MiIsImlkeDJIYW5kbGVyIiwiZGlzdGFuY2VNYXRyaXhQcm94eSIsImluaXREYXRhRGlzdCIsImdldFNvbHV0aW9uIiwiZW1iIiwiRGltZW5zaW9uYWxpdHlSZWR1Y2VyIiwibWV0cmljIiwibWVhc3VyZSIsInNwZWNPcHRpb25zIiwiX2xlbmd0aCIsImF2YWlsYWJsZU1ldHJpY3NCeVR5cGUiLCJ0eXBlTmFtZSIsImF2YWlsYWJsZU1ldGhvZHMiLCJhdmFpbGFibGVNZXRyaWNzIiwib2JqIiwiZXBvY2hOdW0iLCJlcG9jaHNMZW5ndGgiLCJzZWxmIiwiY29sdW1uRGF0YSIsIm9uTWVzc2FnZSIsImV4cG9ydHMiLCJ0c25lXzEiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJUU05FIiwib3B0IiwicmV0dXJuViIsInZWYWx1ZSIsInBlcnBsZXhpdHkiLCJnZXRvcHQiLCJmaWVsZCIsImRlZmF1bHR2YWwiLCJnYXVzc1JhbmRvbSIsInUiLCJyYW5kbiIsIm11Iiwic3RkIiwiQXJyYXlCdWZmZXIiLCJhcnIiLCJyYW5kbjJkIiwidXNlcyIsInhoZXJlIiwiTDIiLCJ4MSIsIngyIiwiRCIsIngxaSIsIngyaSIsInh0b2QiLCJOIiwiZDJwIiwibmYiLCJoVGFyZ2V0IiwiUCIsInByb3ciLCJiZXRhbWluIiwiYmV0YW1heCIsImJldGEiLCJkb25lIiwibWF4dHJpZXMiLCJwaiIsIm5IZXJlIiwicE91dCIsIk4yIiwiaW5pdERhdGFSYXciLCJkaXN0cyIsImluaXRTb2x1dGlvbiIsImdhaW5zIiwieXN0ZXAiLCJjZyIsImNvc3RHcmFkIiwiY29zdCIsImdyYWQiLCJ5bWVhbiIsImdpZCIsInNpZCIsImdhaW5pZCIsIm5ld2dhaW4iLCJuZXdzaWQiLCJkZWJ1Z0dyYWQiLCJ5b2xkIiwiY2cwIiwiY2cxIiwiYW5hbHl0aWMiLCJudW1lcmljYWwiLCJwbXVsIiwicXVBcnIiLCJxc3VtIiwiZHN1bSIsImRoZXJlIiwicXUiLCJOTiIsIlEiLCJnc3VtIiwicHJlbXVsdCIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsIm1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiTyIsImNodW5rSWRzIiwicHJpb3JpdHkiLCJub3RGdWxmaWxsZWQiLCJmdWxmaWxsZWQiLCJkZWZpbml0aW9uIiwibyIsImNodW5rSWQiLCJnbG9iYWxUaGlzIiwiRnVuY3Rpb24iLCJ3aW5kb3ciLCJwcm9wIiwic2NyaXB0VXJsIiwiaW1wb3J0U2NyaXB0cyIsImxvY2F0aW9uIiwiZG9jdW1lbnQiLCJjdXJyZW50U2NyaXB0Iiwic3JjIiwic2NyaXB0cyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwicmVwbGFjZSIsImluc3RhbGxlZENodW5rcyIsImNodW5rTG9hZGluZ0dsb2JhbCIsInBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uIiwibW9yZU1vZHVsZXMiLCJydW50aW1lIiwicG9wIiwidGhlbiJdLCJzb3VyY2VSb290IjoiIn0=