@datagrok/eda 1.1.25 → 1.1.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vscode/settings.json +5 -0
- package/CHANGELOG.md +12 -0
- package/README.md +1 -0
- package/dist/05e5e0770f54f07e9474.wasm +0 -0
- package/dist/111.js +2 -0
- package/dist/111.js.map +1 -0
- package/dist/153.js +2 -0
- package/dist/153.js.map +1 -0
- package/dist/23.js +2 -2
- package/dist/23.js.map +1 -0
- package/dist/234.js +2 -0
- package/dist/234.js.map +1 -0
- package/dist/242.js +2 -0
- package/dist/242.js.map +1 -0
- package/dist/260.js +2 -0
- package/dist/260.js.map +1 -0
- package/dist/317.js +2 -0
- package/dist/317.js.map +1 -0
- package/dist/33.js +2 -0
- package/dist/33.js.map +1 -0
- package/dist/348.js +2 -0
- package/dist/348.js.map +1 -0
- package/dist/377.js +2 -0
- package/dist/377.js.map +1 -0
- package/dist/412.js +2 -0
- package/dist/412.js.map +1 -0
- package/dist/415.js +2 -0
- package/dist/415.js.map +1 -0
- package/dist/531.js +2 -0
- package/dist/531.js.map +1 -0
- package/dist/583.js +2 -0
- package/dist/583.js.map +1 -0
- package/dist/589.js +2 -0
- package/dist/589.js.map +1 -0
- package/dist/603.js +2 -0
- package/dist/603.js.map +1 -0
- package/dist/656.js +2 -0
- package/dist/656.js.map +1 -0
- package/dist/682.js +2 -0
- package/dist/682.js.map +1 -0
- package/dist/705.js +2 -0
- package/dist/705.js.map +1 -0
- package/dist/731.js +2 -0
- package/dist/731.js.map +1 -0
- package/dist/738.js +3 -0
- package/dist/738.js.map +1 -0
- package/dist/763.js +2 -0
- package/dist/763.js.map +1 -0
- package/dist/778.js +2 -0
- package/dist/778.js.map +1 -0
- package/dist/783.js +2 -0
- package/dist/783.js.map +1 -0
- package/dist/793.js +2 -0
- package/dist/793.js.map +1 -0
- package/dist/907.js +2 -0
- package/dist/907.js.map +1 -0
- package/dist/91.js +2 -0
- package/dist/91.js.map +1 -0
- package/dist/950.js +2 -0
- package/dist/950.js.map +1 -0
- package/dist/package-test.js +2 -2
- package/dist/package-test.js.map +1 -0
- package/dist/package.js +2 -2
- package/dist/package.js.map +1 -0
- package/package.json +92 -92
- package/scripts/command.txt +1 -1
- package/scripts/func.json +1 -1
- package/scripts/module.json +1 -1
- package/src/missing-values-imputation/ui.ts +80 -66
- package/src/package.ts +288 -38
- package/src/pls/pls-tools.ts +16 -15
- package/src/regression.ts +232 -0
- package/src/svm.ts +78 -38
- package/tsconfig.json +4 -4
- package/wasm/EDA.js +65 -1
- package/wasm/EDA.wasm +0 -0
- package/wasm/EDAAPI.js +30 -0
- package/wasm/EDAForWebWorker.js +1 -1
- package/wasm/callWasm.js +384 -393
- package/wasm/regression-api.cpp +66 -0
- package/wasm/regression.h +128 -0
- package/wasm/workers/fitLinearRegressionParamsWithDataNormalizingWorker.js +13 -0
- package/wasm/workers/fitLinearRegressionParamsWorker.js +13 -0
- package/webpack.config.js +1 -1
- package/dist/208.js +0 -2
- package/dist/221.js +0 -2
- package/dist/231.js +0 -2
- package/dist/261.js +0 -2
- package/dist/282.js +0 -2
- package/dist/334.js +0 -2
- package/dist/356.js +0 -2
- package/dist/36.js +0 -2
- package/dist/367.js +0 -2
- package/dist/374.js +0 -2
- package/dist/40.js +0 -2
- package/dist/413.js +0 -2
- package/dist/42.js +0 -2
- package/dist/427.js +0 -2
- package/dist/467.js +0 -2
- package/dist/523.js +0 -3
- package/dist/533.js +0 -2
- package/dist/590.js +0 -2
- package/dist/65.js +0 -2
- package/dist/694.js +0 -2
- package/dist/729.js +0 -2
- package/dist/796.js +0 -2
- package/dist/902.js +0 -2
- package/dist/910.js +0 -2
- package/dist/972.js +0 -2
- package/dist/f5343e2c2e15952ce916.wasm +0 -0
- /package/dist/{523.js.LICENSE.txt → 738.js.LICENSE.txt} +0 -0
package/dist/533.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var eda;(()=>{"use strict";var e,r,t={5533:(e,r,t)=>{var o=t(6845),a=t(2086);onmessage=async function(e){(0,o.P)().then((r=>{let t=e.data,o=(0,a.Gz)(r,t,"trainLSSVM","number");postMessage({callResult:o,args:t})}))}}},o={};function a(e){var r=o[e];if(void 0!==r)return r.exports;var n=o[e]={id:e,loaded:!1,exports:{}};return t[e](n,n.exports,a),n.loaded=!0,n.exports}a.m=t,a.x=()=>{var e=a.O(void 0,[902],(()=>a(5533)));return a.O(e)},a.amdO={},e=[],a.O=(r,t,o,n)=>{if(!t){var i=1/0;for(l=0;l<e.length;l++){for(var[t,o,n]=e[l],s=!0,c=0;c<t.length;c++)(!1&n||i>=n)&&Object.keys(a.O).every((e=>a.O[e](t[c])))?t.splice(c--,1):(s=!1,n<i&&(i=n));if(s){e.splice(l--,1);var p=o();void 0!==p&&(r=p)}}return r}n=n||0;for(var l=e.length;l>0&&e[l-1][2]>n;l--)e[l]=e[l-1];e[l]=[t,o,n]},a.d=(e,r)=>{for(var t in r)a.o(r,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((r,t)=>(a.f[t](e,r),r)),[])),a.u=e=>e+".js",a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),a.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var r=a.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var o=t.length-1;o>-1&&!e;)e=t[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})(),(()=>{a.b=self.location+"";var e={533:1};a.f.i=(r,t)=>{e[r]||importScripts(a.p+a.u(r))};var r=self.webpackChunkeda=self.webpackChunkeda||[],t=r.push.bind(r);r.push=r=>{var[o,n,i]=r;for(var s in n)a.o(n,s)&&(a.m[s]=n[s]);for(i&&i(a);o.length;)e[o.pop()]=1;t(r)}})(),r=a.x,a.x=()=>a.e(902).then(r);var n=a.x();eda=n})();
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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bUJFLEtBQUtDLEtBQUtILEdBQzlEQSxFQUFtQkUsS0F2QkM1RSxJQUNuQixJQUFLaUIsRUFBVTZELEVBQWFDLEdBQVcvRSxFQUN2QyxJQUFJLElBQUlLLEtBQVl5RSxFQUNoQjFFLEVBQW9COEIsRUFBRTRDLEVBQWF6RSxLQUNyQ0QsRUFBb0JRLEVBQUVQLEdBQVl5RSxFQUFZekUsSUFJaEQsSUFERzBFLEdBQVNBLEVBQVEzRSxHQUNkYSxFQUFTTSxRQUNka0QsRUFBZ0J4RCxFQUFTK0QsT0FBUyxFQUNuQ0wsRUFBMkIzRSxFQUFLLEMsS1huQjdCUCxFQUFPVyxFQUFvQlMsRUFDL0JULEVBQW9CUyxFQUFJLElBQ2hCVCxFQUFvQm1DLEVBQUUsS0FBSzFDLEtBQUtKLEdZRHhDLElBQUlxQixFQUFzQlYsRUFBb0JTLEkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2NodW5rIGxvYWRlZCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL3N0YXJ0dXAgY2h1bmsgZGVwZW5kZW5jaWVzIiwid2VicGFjazovL2VkYS8uL3dhc20vd29ya2Vycy90cmFpbkxTU1ZNV29ya2VyLmpzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2FtZCBvcHRpb25zIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9lbnN1cmUgY2h1bmsiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9nZXQgamF2YXNjcmlwdCBjaHVuayBmaWxlbmFtZSIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2hhcm1vbnkgbW9kdWxlIGRlY29yYXRvciIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL3B1YmxpY1BhdGgiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9pbXBvcnRTY3JpcHRzIGNodW5rIGxvYWRpbmciLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svc3RhcnR1cCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZGVmZXJyZWQgPSBbXTtcbl9fd2VicGFja19yZXF1aXJlX18uTyA9IChyZXN1bHQsIGNodW5rSWRzLCBmbiwgcHJpb3JpdHkpID0+IHtcblx0aWYoY2h1bmtJZHMpIHtcblx0XHRwcmlvcml0eSA9IHByaW9yaXR5IHx8IDA7XG5cdFx0Zm9yKHZhciBpID0gZGVmZXJyZWQubGVuZ3RoOyBpID4gMCAmJiBkZWZlcnJlZFtpIC0gMV1bMl0gPiBwcmlvcml0eTsgaS0tKSBkZWZlcnJlZFtpXSA9IGRlZmVycmVkW2kgLSAxXTtcblx0XHRkZWZlcnJlZFtpXSA9IFtjaHVua0lkcywgZm4sIHByaW9yaXR5XTtcblx0XHRyZXR1cm47XG5cdH1cblx0dmFyIG5vdEZ1bGZpbGxlZCA9IEluZmluaXR5O1xuXHRmb3IgKHZhciBpID0gMDsgaSA8IGRlZmVycmVkLmxlbmd0aDsgaSsrKSB7XG5cdFx0dmFyIFtjaHVua0lkcywgZm4sIHByaW9yaXR5XSA9IGRlZmVycmVkW2ldO1xuXHRcdHZhciBmdWxmaWxsZWQgPSB0cnVlO1xuXHRcdGZvciAodmFyIGogPSAwOyBqIDwgY2h1bmtJZHMubGVuZ3RoOyBqKyspIHtcblx0XHRcdGlmICgocHJpb3JpdHkgJiAxID09PSAwIHx8IG5vdEZ1bGZpbGxlZCA+PSBwcmlvcml0eSkgJiYgT2JqZWN0LmtleXMoX193ZWJwYWNrX3JlcXVpcmVfXy5PKS5ldmVyeSgoa2V5KSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXy5PW2tleV0oY2h1bmtJZHNbal0pKSkpIHtcblx0XHRcdFx0Y2h1bmtJZHMuc3BsaWNlKGotLSwgMSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmdWxmaWxsZWQgPSBmYWxzZTtcblx0XHRcdFx0aWYocHJpb3JpdHkgPCBub3RGdWxmaWxsZWQpIG5vdEZ1bGZpbGxlZCA9IHByaW9yaXR5O1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZihmdWxmaWxsZWQpIHtcblx0XHRcdGRlZmVycmVkLnNwbGljZShpLS0sIDEpXG5cdFx0XHR2YXIgciA9IGZuKCk7XG5cdFx0XHRpZiAociAhPT0gdW5kZWZpbmVkKSByZXN1bHQgPSByO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufTsiLCJ2YXIgbmV4dCA9IF9fd2VicGFja19yZXF1aXJlX18ueDtcbl9fd2VicGFja19yZXF1aXJlX18ueCA9ICgpID0+IHtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18uZSg5MDIpLnRoZW4obmV4dCk7XG59OyIsIi8vIFRoZSBmb2xsb3dpbmcgY29kZSBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS5cblxuaW1wb3J0IHtleHBvcnRFREF9IGZyb20gJy4uLy4uL3dhc20vRURBRm9yV2ViV29ya2VyJztcbmltcG9ydCB7Y3BwV3JhcHBlcn0gZnJvbSAnLi4vLi4vd2FzbS9jYWxsV2FzbUZvcldlYldvcmtlci5qcyc7XG5cbm9ubWVzc2FnZSA9IGFzeW5jIGZ1bmN0aW9uIChldnQpIHtcbiAgZXhwb3J0RURBKCkudGhlbihtb2R1bGUgPT4gXG4gICAge1xuICAgICAgbGV0IGFyZ3MgPSBldnQuZGF0YTtcbiAgICAgIGxldCByZXN1bHQgPSBjcHBXcmFwcGVyKG1vZHVsZSwgYXJncywgJ3RyYWluTFNTVk0nLCAnbnVtYmVyJyk7XG4gICAgICBwb3N0TWVzc2FnZSh7J2NhbGxSZXN1bHQnOiByZXN1bHQsICdhcmdzJzogYXJnc30pO1xuICAgIH0gKVxufSIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdGxvYWRlZDogZmFsc2UsXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuXHRtb2R1bGUubG9hZGVkID0gdHJ1ZTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4vLyB0aGUgc3RhcnR1cCBmdW5jdGlvblxuX193ZWJwYWNrX3JlcXVpcmVfXy54ID0gKCkgPT4ge1xuXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcblx0Ly8gVGhpcyBlbnRyeSBtb2R1bGUgZGVwZW5kcyBvbiBvdGhlciBsb2FkZWQgY2h1bmtzIGFuZCBleGVjdXRpb24gbmVlZCB0byBiZSBkZWxheWVkXG5cdHZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy5PKHVuZGVmaW5lZCwgWzkwMl0sICgpID0+IChfX3dlYnBhY2tfcmVxdWlyZV9fKDU1MzMpKSlcblx0X193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18uTyhfX3dlYnBhY2tfZXhwb3J0c19fKTtcblx0cmV0dXJuIF9fd2VicGFja19leHBvcnRzX187XG59O1xuXG4iLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmFtZE8gPSB7fTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmYgPSB7fTtcbi8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbi8vIFRoZSBjaHVuayBsb2FkaW5nIGZ1bmN0aW9uIGZvciBhZGRpdGlvbmFsIGNodW5rc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5lID0gKGNodW5rSWQpID0+IHtcblx0cmV0dXJuIFByb21pc2UuYWxsKE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uZikucmVkdWNlKChwcm9taXNlcywga2V5KSA9PiB7XG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mW2tleV0oY2h1bmtJZCwgcHJvbWlzZXMpO1xuXHRcdHJldHVybiBwcm9taXNlcztcblx0fSwgW10pKTtcbn07IiwiLy8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzIGFuZCBzaWJsaW5nIGNodW5rcyBmb3IgdGhlIGVudHJ5cG9pbnRcbl9fd2VicGFja19yZXF1aXJlX18udSA9IChjaHVua0lkKSA9PiB7XG5cdC8vIHJldHVybiB1cmwgZm9yIGZpbGVuYW1lcyBiYXNlZCBvbiB0ZW1wbGF0ZVxuXHRyZXR1cm4gXCJcIiArIGNodW5rSWQgKyBcIi5qc1wiO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18uaG1kID0gKG1vZHVsZSkgPT4ge1xuXHRtb2R1bGUgPSBPYmplY3QuY3JlYXRlKG1vZHVsZSk7XG5cdGlmICghbW9kdWxlLmNoaWxkcmVuKSBtb2R1bGUuY2hpbGRyZW4gPSBbXTtcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgJ2V4cG9ydHMnLCB7XG5cdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRzZXQ6ICgpID0+IHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignRVMgTW9kdWxlcyBtYXkgbm90IGFzc2lnbiBtb2R1bGUuZXhwb3J0cyBvciBleHBvcnRzLiosIFVzZSBFU00gZXhwb3J0IHN5bnRheCwgaW5zdGVhZDogJyArIG1vZHVsZS5pZCk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIG1vZHVsZTtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsInZhciBzY3JpcHRVcmw7XG5pZiAoX193ZWJwYWNrX3JlcXVpcmVfXy5nLmltcG9ydFNjcmlwdHMpIHNjcmlwdFVybCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5sb2NhdGlvbiArIFwiXCI7XG52YXIgZG9jdW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcuZG9jdW1lbnQ7XG5pZiAoIXNjcmlwdFVybCAmJiBkb2N1bWVudCkge1xuXHRpZiAoZG9jdW1lbnQuY3VycmVudFNjcmlwdClcblx0XHRzY3JpcHRVcmwgPSBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYztcblx0aWYgKCFzY3JpcHRVcmwpIHtcblx0XHR2YXIgc2NyaXB0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpO1xuXHRcdGlmKHNjcmlwdHMubGVuZ3RoKSB7XG5cdFx0XHR2YXIgaSA9IHNjcmlwdHMubGVuZ3RoIC0gMTtcblx0XHRcdHdoaWxlIChpID4gLTEgJiYgIXNjcmlwdFVybCkgc2NyaXB0VXJsID0gc2NyaXB0c1tpLS1dLnNyYztcblx0XHR9XG5cdH1cbn1cbi8vIFdoZW4gc3VwcG9ydGluZyBicm93c2VycyB3aGVyZSBhbiBhdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIHlvdSBtdXN0IHNwZWNpZnkgYW4gb3V0cHV0LnB1YmxpY1BhdGggbWFudWFsbHkgdmlhIGNvbmZpZ3VyYXRpb25cbi8vIG9yIHBhc3MgYW4gZW1wdHkgc3RyaW5nIChcIlwiKSBhbmQgc2V0IHRoZSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyB2YXJpYWJsZSBmcm9tIHlvdXIgY29kZSB0byB1c2UgeW91ciBvd24gbG9naWMuXG5pZiAoIXNjcmlwdFVybCkgdGhyb3cgbmV3IEVycm9yKFwiQXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJyb3dzZXJcIik7XG5zY3JpcHRVcmwgPSBzY3JpcHRVcmwucmVwbGFjZSgvIy4qJC8sIFwiXCIpLnJlcGxhY2UoL1xcPy4qJC8sIFwiXCIpLnJlcGxhY2UoL1xcL1teXFwvXSskLywgXCIvXCIpO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gc2NyaXB0VXJsOyIsIl9fd2VicGFja19yZXF1aXJlX18uYiA9IHNlbGYubG9jYXRpb24gKyBcIlwiO1xuXG4vLyBvYmplY3QgdG8gc3RvcmUgbG9hZGVkIGNodW5rc1xuLy8gXCIxXCIgbWVhbnMgXCJhbHJlYWR5IGxvYWRlZFwiXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHQ1MzM6IDFcbn07XG5cbi8vIGltcG9ydFNjcmlwdHMgY2h1bmsgbG9hZGluZ1xudmFyIGluc3RhbGxDaHVuayA9IChkYXRhKSA9PiB7XG5cdHZhciBbY2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBydW50aW1lXSA9IGRhdGE7XG5cdGZvcih2YXIgbW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8obW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuXHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcblx0XHR9XG5cdH1cblx0aWYocnVudGltZSkgcnVudGltZShfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblx0d2hpbGUoY2h1bmtJZHMubGVuZ3RoKVxuXHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkcy5wb3AoKV0gPSAxO1xuXHRwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbihkYXRhKTtcbn07XG5fX3dlYnBhY2tfcmVxdWlyZV9fLmYuaSA9IChjaHVua0lkLCBwcm9taXNlcykgPT4ge1xuXHQvLyBcIjFcIiBpcyB0aGUgc2lnbmFsIGZvciBcImFscmVhZHkgbG9hZGVkXCJcblx0aWYoIWluc3RhbGxlZENodW5rc1tjaHVua0lkXSkge1xuXHRcdGlmKHRydWUpIHsgLy8gYWxsIGNodW5rcyBoYXZlIEpTXG5cdFx0XHRpbXBvcnRTY3JpcHRzKF9fd2VicGFja19yZXF1aXJlX18ucCArIF9fd2VicGFja19yZXF1aXJlX18udShjaHVua0lkKSk7XG5cdFx0fVxuXHR9XG59O1xuXG52YXIgY2h1bmtMb2FkaW5nR2xvYmFsID0gc2VsZltcIndlYnBhY2tDaHVua2VkYVwiXSA9IHNlbGZbXCJ3ZWJwYWNrQ2h1bmtlZGFcIl0gfHwgW107XG52YXIgcGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24gPSBjaHVua0xvYWRpbmdHbG9iYWwucHVzaC5iaW5kKGNodW5rTG9hZGluZ0dsb2JhbCk7XG5jaHVua0xvYWRpbmdHbG9iYWwucHVzaCA9IGluc3RhbGxDaHVuaztcblxuLy8gbm8gSE1SXG5cbi8vIG5vIEhNUiBtYW5pZmVzdCIsIi8vIHJ1biBzdGFydHVwXG52YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18ueCgpO1xuIl0sIm5hbWVzIjpbImRlZmVycmVkIiwibmV4dCIsIm9ubWVzc2FnZSIsImFzeW5jIiwiZXZ0IiwidGhlbiIsIm1vZHVsZSIsImFyZ3MiLCJkYXRhIiwicmVzdWx0IiwicG9zdE1lc3NhZ2UiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJ1bmRlZmluZWQiLCJleHBvcnRzIiwiaWQiLCJsb2FkZWQiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwibSIsIngiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiTyIsImFtZE8iLCJjaHVua0lkcyIsImZuIiwicHJpb3JpdHkiLCJub3RGdWxmaWxsZWQiLCJJbmZpbml0eSIsImkiLCJsZW5ndGgiLCJmdWxmaWxsZWQiLCJqIiwiT2JqZWN0Iiwia2V5cyIsImV2ZXJ5Iiwia2V5Iiwic3BsaWNlIiwiciIsImQiLCJkZWZpbml0aW9uIiwibyIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsImYiLCJlIiwiY2h1bmtJZCIsIlByb21pc2UiLCJhbGwiLCJyZWR1Y2UiLCJwcm9taXNlcyIsInUiLCJnIiwiZ2xvYmFsVGhpcyIsInRoaXMiLCJGdW5jdGlvbiIsIndpbmRvdyIsImhtZCIsImNyZWF0ZSIsImNoaWxkcmVuIiwic2V0IiwiRXJyb3IiLCJvYmoiLCJwcm9wIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwic2NyaXB0VXJsIiwiaW1wb3J0U2NyaXB0cyIsImxvY2F0aW9uIiwiZG9jdW1lbnQiLCJjdXJyZW50U2NyaXB0Iiwic3JjIiwic2NyaXB0cyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwicmVwbGFjZSIsInAiLCJiIiwic2VsZiIsImluc3RhbGxlZENodW5rcyIsImNodW5rTG9hZGluZ0dsb2JhbCIsInBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uIiwicHVzaCIsImJpbmQiLCJtb3JlTW9kdWxlcyIsInJ1bnRpbWUiLCJwb3AiXSwic291cmNlUm9vdCI6IiJ9
|
package/dist/590.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunkeda=self.webpackChunkeda||[]).push([[590],{2590:(e,n,t)=>{t.d(n,{_:()=>a});var r=t(7862),s=t(6814);class a{constructor(){this._workerCount=Math.max(navigator.hardwareConcurrency-2,1)}async calcMultiColumn(e,n,s,a=[{}],o=[1],l=r.y.EUCLIDEAN){const h=e[0].length*(e[0].length-1)/2,i=Math.floor(h/this._workerCount),c=e[0].length>2e4?await this.getMinimalThreshold(e,n,a,o,l):0;s<c&&(console.log(`using threshold ${c}`),s=c),a.forEach(((e,n)=>a[n].threshold=s));const w=new Array(this._workerCount),g=new Array(this._workerCount).fill(null).map((()=>new Worker(new URL(t.p+t.u(23),t.b))));for(let t=0;t<this._workerCount;t++)w[t]=new Promise(((r,c)=>{const w=t*i,u=t===this._workerCount-1?h:(t+1)*i;u<=w&&r({i:new Int32Array(0),j:new Int32Array(0),distance:new Float32Array(0),idx:t}),g[t].postMessage({values:e,startIdx:w,endIdx:u,threshold:s,fnNames:n,opts:a,weights:o,aggregationMethod:l}),g[t].onmessage=({data:{error:e,i:n,j:s,distance:a}})=>{e?(g[t].terminate(),c(e)):(g[t].terminate(),r({i:n,j:s,distance:a,idx:t}))}}));const u=await Promise.all(w),d=u.reduce(((e,n)=>e+n.i.length),0),k=new Int32Array(d),m=new Int32Array(d),y=new Float32Array(d);let f=0;for(const e of u)k.set(e.i,f),m.set(e.j,f),y.set(e.distance,f),f+=e.i.length;return{i:k,j:m,distance:y}}async calc(e,n,t,r={}){return await this.calcMultiColumn([e],[n],t,[r],[1])}async getKNN(e,n,t=15,r={}){return await this.multiColumnKNN([e],[n],t,[r],[1])}async getThresholdKNN(e,n,t=.8,r={}){return await this.multiColumnThresholdKnn([e],[n],t,[r],[1])}async multiColumnThresholdKnn(e,n,s=.8,a,o,l=r.y.EUCLIDEAN){if(e.length!==n.length||e.length!==a.length||e.length!==o.length)throw new Error("values, distance functions, options and weights arrays should have the same length");if(e.some((n=>n.length!==e[0].length)))throw new Error("all values arrays should have the same length");const h=e[0].length*(e[0].length-1)/2,i=Math.floor(h/this._workerCount),c=new Array(this._workerCount),w=new Array(this._workerCount).fill(null).map((()=>new Worker(new URL(t.p+t.u(427),t.b))));for(let t=0;t<this._workerCount;t++)c[t]=new Promise(((r,c)=>{const g=t*i,u=t===this._workerCount-1?h:(t+1)*i;u<=g&&r({knnDistances:new Array(0),knnIndexes:new Array(0)}),w[t].postMessage({values:e,startIdx:g,endIdx:u,fnNames:n,opts:a,threshold:s,weights:o,aggregationMethod:l}),w[t].onmessage=({data:{error:e,knnDistances:n,knnIndexes:s}})=>{e?(w[t].terminate(),c(e)):(w[t].terminate(),r({knnDistances:n,knnIndexes:s}))}}));const g=await Promise.all(c),u=new Int32Array(e[0].length);for(const n of g)for(let t=0;t<e[0].length;++t)u[t]+=n.knnIndexes[t]?.length??0;const d={knnDistances:new Array(e[0].length).fill(null).map(((e,n)=>new Array(u[n]))),knnIndexes:new Array(e[0].length).fill(null).map(((e,n)=>new Array(u[n])))};for(const n of g)for(let t=0;t<e[0].length;++t)for(let e=0;e<n.knnDistances[t]?.length;++e)d.knnDistances[t][u[t]-1]=n.knnDistances[t][e],d.knnIndexes[t][u[t]-1]=n.knnIndexes[t][e],u[t]-=1;return d}async multiColumnKNN(e,n,a=15,o,l,h=r.y.EUCLIDEAN){if(e.length!==n.length||e.length!==o.length||e.length!==l.length)throw new Error("values, distance functions, options and weights arrays should have the same length");if(e.some((n=>n.length!==e[0].length)))throw new Error("all values arrays should have the same length");const i=e[0].length*(e[0].length-1)/2,c=Math.floor(i/this._workerCount),w=new Array(this._workerCount),g=new Array(this._workerCount).fill(null).map((()=>new Worker(new URL(t.p+t.u(282),t.b))));for(let t=0;t<this._workerCount;t++)w[t]=new Promise(((r,s)=>{const w=t*c,u=t===this._workerCount-1?i:(t+1)*c;u<=w&&r({knnDistances:new Array(0),knnIndexes:new Array(0)}),g[t].postMessage({values:e,startIdx:w,endIdx:u,fnNames:n,opts:o,nNeighbours:a,weights:l,aggregationMethod:h}),g[t].onmessage=({data:{error:e,knnDistances:n,knnIndexes:a}})=>{e?(g[t].terminate(),s(e)):(g[t].terminate(),r({knnDistances:n,knnIndexes:a}))}}));const u=await Promise.all(w),d={knnDistances:new Array(e[0].length).fill(null).map((()=>new Array(a).fill(99999))),knnIndexes:new Array(e[0].length).fill(null).map((()=>new Array(a).fill(-1)))};for(const n of u)for(let t=0;t<e[0].length;++t)for(let e=0;e<n.knnDistances[t]?.length;++e)(0,s.cZ)(d.knnDistances[t],d.knnIndexes[t],n.knnDistances[t][e],n.knnIndexes[t][e]);return d}async getSampleDistances(e,n,s=[],a,o=r.y.EUCLIDEAN){const l=new Array(this._workerCount).fill(null).map((()=>new Worker(new URL(t.p+t.u(40),t.b))));try{const t=e[0].length*(e[0].length-1)/2,r=Math.floor(t/this._workerCount),h=1e6,i=Math.max(Math.min(t/1e3,h),Math.min(t,h)),c=Math.floor(i/this._workerCount),w=new Array(this._workerCount);for(let h=0;h<this._workerCount;h++)w[h]=new Promise(((i,w)=>{const g=h*r,u=h===this._workerCount-1?t:(h+1)*r;l[h].postMessage({values:e,startIdx:g,endIdx:u,sampleLength:c,fnNames:n,opts:s,weights:a,aggregationMethod:o}),l[h].onmessage=({data:{error:e,distance:n}})=>{l[h].terminate(),e?w(e):i({distance:n})}}));const g=await Promise.all(w),u=g.reduce(((e,n)=>e+n.distance.length),0),d=new Float32Array(u);let k=0;for(const e of g)d.set(e.distance,k),k+=e.distance.length;return d.sort(),d}catch(e){return l?.forEach((e=>e?.terminate())),console.error(e),new Float32Array(1).fill(.5)}}async getMinimalThreshold(e,n,t=[],s,a=r.y.EUCLIDEAN){try{const r=e.length*(e.length-1)/2,o=await this.getSampleDistances(e,n,t,s,a);return 1-o[Math.floor(7e7/r*o.length)]}catch(e){return console.error(e),.5}}static calcSync(e,n,t,r){const a=[],o=[],l=[];let h=0,i=0,c=0;const w=e.length*(e.length-1)/2;for(;h<w;){const n=(0,s.kK)(e[i])||(0,s.kK)(e[c])?1:t(e[i],e[c]);1-n>=r&&(a.push(i),o.push(c),l.push(n)),h++,c++,c===e.length&&(i++,c=i+1)}return{i:new Int32Array(a),j:new Int32Array(o),distance:new Float32Array(l)}}}},7862:(e,n,t)=>{var r;t.d(n,{y:()=>r}),function(e){e.EUCLIDEAN="EUCLIDEAN",e.MANHATTAN="MANHATTAN"}(r||(r={}))}}]);
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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R0FDeEMsTUFBTWMsRUFBSSxHQUNKZSxFQUFJLEdBQ0owQyxFQUFZLEdBQ2xCLElBQUlDLEVBQU0sRUFDTkMsRUFBSyxFQUNMQyxFQUFLLEVBQ1QsTUFBTW5DLEVBQVd6QyxFQUFPTyxRQUFVUCxFQUFPTyxPQUFTLEdBQUssRUFDdkQsS0FBT21FLEVBQU1qQyxHQUFVLENBRW5CLE1BQU1vQyxHQUFTLFFBQU03RSxFQUFPMkUsTUFBUyxRQUFNM0UsRUFBTzRFLElBQ1QsRUFBckNKLEVBQVd4RSxFQUFPMkUsR0FBSzNFLEVBQU80RSxJQUNmLEVBQUlDLEdBQ0wzRSxJQUNkYyxFQUFFOEQsS0FBS0gsR0FDUDVDLEVBQUUrQyxLQUFLRixHQUNQSCxFQUFVSyxLQUFLRCxJQUVuQkgsSUFDQUUsSUFDSUEsSUFBTzVFLEVBQU9PLFNBQ2RvRSxJQUNBQyxFQUFLRCxFQUFLLEVBRWxCLENBSUEsTUFBTyxDQUFFM0QsRUFITSxJQUFJYyxXQUFXZCxHQUdWZSxFQUZMLElBQUlELFdBQVdDLEdBRUNDLFNBRFQsSUFBSUMsYUFBYXdDLEdBRTNDLEUsaUJDdFBHLElBQUlNLEUsaUJBQ1gsU0FBV0EsR0FDUEEsRUFBc0MsVUFBSSxZQUMxQ0EsRUFBc0MsVUFBSSxXQUM3QyxDQUhELENBR0dBLElBQStCQSxFQUE2QixDQUFDLEciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvZGlzdGFuY2UtbWF0cml4L3NwYXJzZS1tYXRyaXgtc2VydmljZS5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvZGlzdGFuY2UtbWF0cml4L3R5cGVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBpbnNlcnRTbWFsbGVyLCBpc05pbCB9IGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0IGNsYXNzIFNwYXJzZU1hdHJpeFNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLl93b3JrZXJDb3VudCA9IE1hdGgubWF4KG5hdmlnYXRvci5oYXJkd2FyZUNvbmN1cnJlbmN5IC0gMiwgMSk7XG4gICAgfVxuICAgIGFzeW5jIGNhbGNNdWx0aUNvbHVtbih2YWx1ZXMsIGZuTmFtZXMsIHRocmVzaG9sZCwgb3B0cyA9IFt7fV0sIHdlaWdodHMgPSBbMV0sIGFnZ3JlZ2F0aW9uTWV0aG9kID0gRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHMuRVVDTElERUFOKSB7XG4gICAgICAgIGNvbnN0IG1hdFNpemUgPSB2YWx1ZXNbMF0ubGVuZ3RoICogKHZhbHVlc1swXS5sZW5ndGggLSAxKSAvIDI7XG4gICAgICAgIGNvbnN0IGNodW5rU2l6ZSA9IE1hdGguZmxvb3IobWF0U2l6ZSAvIHRoaXMuX3dvcmtlckNvdW50KTtcbiAgICAgICAgY29uc3QgbWluVGhyZXNob2xkID0gdmFsdWVzWzBdLmxlbmd0aCA+IDIwMDAwID9cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0TWluaW1hbFRocmVzaG9sZCh2YWx1ZXMsIGZuTmFtZXMsIG9wdHMsIHdlaWdodHMsIGFnZ3JlZ2F0aW9uTWV0aG9kKSA6IDA7XG4gICAgICAgIGlmICh0aHJlc2hvbGQgPCBtaW5UaHJlc2hvbGQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGB1c2luZyB0aHJlc2hvbGQgJHttaW5UaHJlc2hvbGR9YCk7XG4gICAgICAgICAgICB0aHJlc2hvbGQgPSBtaW5UaHJlc2hvbGQ7XG4gICAgICAgIH1cbiAgICAgICAgb3B0cy5mb3JFYWNoKChfLCBpKSA9PiBvcHRzW2ldWyd0aHJlc2hvbGQnXSA9IHRocmVzaG9sZCk7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gbmV3IEFycmF5KHRoaXMuX3dvcmtlckNvdW50KTtcbiAgICAgICAgY29uc3Qgd29ya2VycyA9IG5ldyBBcnJheSh0aGlzLl93b3JrZXJDb3VudClcbiAgICAgICAgICAgIC5maWxsKG51bGwpLm1hcCgoKSA9PiBuZXcgV29ya2VyKG5ldyBVUkwoJy4vc3BhcnNlLW1hdHJpeC13b3JrZXInLCBpbXBvcnQubWV0YS51cmwpKSk7XG4gICAgICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IHRoaXMuX3dvcmtlckNvdW50OyBpZHgrKykge1xuICAgICAgICAgICAgcHJvbWlzZXNbaWR4XSA9IG5ldyBQcm9taXNlKChyZXNvbHZlV29ya2VyLCByZWplY3RXb3JrZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydElkeCA9IGlkeCAqIGNodW5rU2l6ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmRJZHggPSBpZHggPT09IHRoaXMuX3dvcmtlckNvdW50IC0gMSA/IG1hdFNpemUgOiAoaWR4ICsgMSkgKiBjaHVua1NpemU7XG4gICAgICAgICAgICAgICAgaWYgKGVuZElkeCA8PSBzdGFydElkeClcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVdvcmtlcih7IGk6IG5ldyBJbnQzMkFycmF5KDApLCBqOiBuZXcgSW50MzJBcnJheSgwKSwgZGlzdGFuY2U6IG5ldyBGbG9hdDMyQXJyYXkoMCksIGlkeCB9KTtcbiAgICAgICAgICAgICAgICB3b3JrZXJzW2lkeF0ucG9zdE1lc3NhZ2UoeyB2YWx1ZXMsIHN0YXJ0SWR4LCBlbmRJZHgsIHRocmVzaG9sZCwgZm5OYW1lcywgb3B0cywgd2VpZ2h0cywgYWdncmVnYXRpb25NZXRob2QgfSk7XG4gICAgICAgICAgICAgICAgd29ya2Vyc1tpZHhdLm9ubWVzc2FnZSA9ICh7IGRhdGE6IHsgZXJyb3IsIGksIGosIGRpc3RhbmNlIH0gfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtlcnNbaWR4XS50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdFdvcmtlcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3b3JrZXJzW2lkeF0udGVybWluYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlV29ya2VyKHsgaSwgaiwgZGlzdGFuY2UsIGlkeCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgICAgICBjb25zdCBmdWxsU2l6ZSA9IHJlc3VsdHMucmVkdWNlKChhY2MsIHZhbCkgPT4gYWNjICsgdmFsLmkubGVuZ3RoLCAwKTtcbiAgICAgICAgY29uc3QgaSA9IG5ldyBJbnQzMkFycmF5KGZ1bGxTaXplKTtcbiAgICAgICAgY29uc3QgaiA9IG5ldyBJbnQzMkFycmF5KGZ1bGxTaXplKTtcbiAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBuZXcgRmxvYXQzMkFycmF5KGZ1bGxTaXplKTtcbiAgICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICAgIC8vIHNldHRpbmcgdGhlIHJlc3VsdHNcbiAgICAgICAgZm9yIChjb25zdCByZXMgb2YgcmVzdWx0cykge1xuICAgICAgICAgICAgaS5zZXQocmVzLmksIG9mZnNldCk7XG4gICAgICAgICAgICBqLnNldChyZXMuaiwgb2Zmc2V0KTtcbiAgICAgICAgICAgIGRpc3RhbmNlLnNldChyZXMuZGlzdGFuY2UsIG9mZnNldCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gcmVzLmkubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGksIGosIGRpc3RhbmNlIH07XG4gICAgfVxuICAgIGFzeW5jIGNhbGModmFsdWVzLCBmbk5hbWUsIHRocmVzaG9sZCwgb3B0cyA9IHt9KSB7XG4gICAgICAgIC8vc2l6ZSBvZiBmdWxsIG1hdHJpeFxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jYWxjTXVsdGlDb2x1bW4oW3ZhbHVlc10sIFtmbk5hbWVdLCB0aHJlc2hvbGQsIFtvcHRzXSwgWzFdKTtcbiAgICB9XG4gICAgYXN5bmMgZ2V0S05OKHZhbHVlcywgZm5OYW1lLCBuTmVpZ2hib3VycyA9IDE1LCBvcHRzID0ge30pIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubXVsdGlDb2x1bW5LTk4oW3ZhbHVlc10sIFtmbk5hbWVdLCBuTmVpZ2hib3VycywgW29wdHNdLCBbMV0pO1xuICAgIH1cbiAgICBhc3luYyBnZXRUaHJlc2hvbGRLTk4odmFsdWVzLCBmbk5hbWUsIHRocmVzaG9sZCA9IDAuOCwgb3B0cyA9IHt9KSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLm11bHRpQ29sdW1uVGhyZXNob2xkS25uKFt2YWx1ZXNdLCBbZm5OYW1lXSwgdGhyZXNob2xkLCBbb3B0c10sIFsxXSk7XG4gICAgfVxuICAgIGFzeW5jIG11bHRpQ29sdW1uVGhyZXNob2xkS25uKHZhbHVlcywgZm5OYW1lcywgdGhyZXNob2xkID0gMC44LCBvcHRzLCB3ZWlnaHRzLCBhZ2dyZWdhdGlvbk1ldGhvZCA9IERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzLkVVQ0xJREVBTikge1xuICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCAhPT0gZm5OYW1lcy5sZW5ndGggfHwgdmFsdWVzLmxlbmd0aCAhPT0gb3B0cy5sZW5ndGggfHwgdmFsdWVzLmxlbmd0aCAhPT0gd2VpZ2h0cy5sZW5ndGgpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3ZhbHVlcywgZGlzdGFuY2UgZnVuY3Rpb25zLCBvcHRpb25zIGFuZCB3ZWlnaHRzIGFycmF5cyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBsZW5ndGgnKTtcbiAgICAgICAgaWYgKHZhbHVlcy5zb21lKCh2KSA9PiB2Lmxlbmd0aCAhPT0gdmFsdWVzWzBdLmxlbmd0aCkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FsbCB2YWx1ZXMgYXJyYXlzIHNob3VsZCBoYXZlIHRoZSBzYW1lIGxlbmd0aCcpO1xuICAgICAgICBjb25zdCBtYXRTaXplID0gdmFsdWVzWzBdLmxlbmd0aCAqICh2YWx1ZXNbMF0ubGVuZ3RoIC0gMSkgLyAyO1xuICAgICAgICBjb25zdCBjaHVua1NpemUgPSBNYXRoLmZsb29yKG1hdFNpemUgLyB0aGlzLl93b3JrZXJDb3VudCk7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gbmV3IEFycmF5KHRoaXMuX3dvcmtlckNvdW50KTtcbiAgICAgICAgY29uc3Qgd29ya2VycyA9IG5ldyBBcnJheSh0aGlzLl93b3JrZXJDb3VudClcbiAgICAgICAgICAgIC5maWxsKG51bGwpLm1hcCgoKSA9PiBuZXcgV29ya2VyKG5ldyBVUkwoJy4va25uLXRocmVzaG9sZC13b3JrZXInLCBpbXBvcnQubWV0YS51cmwpKSk7XG4gICAgICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IHRoaXMuX3dvcmtlckNvdW50OyBpZHgrKykge1xuICAgICAgICAgICAgcHJvbWlzZXNbaWR4XSA9IG5ldyBQcm9taXNlKChyZXNvbHZlV29ya2VyLCByZWplY3RXb3JrZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydElkeCA9IGlkeCAqIGNodW5rU2l6ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmRJZHggPSBpZHggPT09IHRoaXMuX3dvcmtlckNvdW50IC0gMSA/IG1hdFNpemUgOiAoaWR4ICsgMSkgKiBjaHVua1NpemU7XG4gICAgICAgICAgICAgICAgaWYgKGVuZElkeCA8PSBzdGFydElkeClcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVdvcmtlcih7IGtubkRpc3RhbmNlczogbmV3IEFycmF5KDApLCBrbm5JbmRleGVzOiBuZXcgQXJyYXkoMCkgfSk7XG4gICAgICAgICAgICAgICAgd29ya2Vyc1tpZHhdLnBvc3RNZXNzYWdlKHsgdmFsdWVzLCBzdGFydElkeCwgZW5kSWR4LCBmbk5hbWVzLCBvcHRzLCB0aHJlc2hvbGQsIHdlaWdodHMsIGFnZ3JlZ2F0aW9uTWV0aG9kIH0pO1xuICAgICAgICAgICAgICAgIHdvcmtlcnNbaWR4XS5vbm1lc3NhZ2UgPSAoeyBkYXRhOiB7IGVycm9yLCBrbm5EaXN0YW5jZXMsIGtubkluZGV4ZXMgfSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgd29ya2Vyc1tpZHhdLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0V29ya2VyKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtlcnNbaWR4XS50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVXb3JrZXIoeyBrbm5EaXN0YW5jZXMsIGtubkluZGV4ZXMgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICAgICAgY29uc3Qga25uU2l6ZXMgPSBuZXcgSW50MzJBcnJheSh2YWx1ZXNbMF0ubGVuZ3RoKTtcbiAgICAgICAgZm9yIChjb25zdCByZXMgb2YgcmVzdWx0cykge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZXNbMF0ubGVuZ3RoOyArK2kpXG4gICAgICAgICAgICAgICAga25uU2l6ZXNbaV0gKz0gcmVzLmtubkluZGV4ZXNbaV0/Lmxlbmd0aCA/PyAwO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGtublJlcyA9IHtcbiAgICAgICAgICAgIGtubkRpc3RhbmNlczogbmV3IEFycmF5KHZhbHVlc1swXS5sZW5ndGgpLmZpbGwobnVsbCkubWFwKChfLCBpKSA9PiBuZXcgQXJyYXkoa25uU2l6ZXNbaV0pKSxcbiAgICAgICAgICAgIGtubkluZGV4ZXM6IG5ldyBBcnJheSh2YWx1ZXNbMF0ubGVuZ3RoKS5maWxsKG51bGwpLm1hcCgoXywgaSkgPT4gbmV3IEFycmF5KGtublNpemVzW2ldKSlcbiAgICAgICAgfTtcbiAgICAgICAgZm9yIChjb25zdCByZXMgb2YgcmVzdWx0cykge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZXNbMF0ubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJlcy5rbm5EaXN0YW5jZXNbaV0/Lmxlbmd0aCA/PyAwOyArK2opIHtcbiAgICAgICAgICAgICAgICAgICAga25uUmVzLmtubkRpc3RhbmNlc1tpXVtrbm5TaXplc1tpXSAtIDFdID0gcmVzLmtubkRpc3RhbmNlc1tpXVtqXTtcbiAgICAgICAgICAgICAgICAgICAga25uUmVzLmtubkluZGV4ZXNbaV1ba25uU2l6ZXNbaV0gLSAxXSA9IHJlcy5rbm5JbmRleGVzW2ldW2pdO1xuICAgICAgICAgICAgICAgICAgICBrbm5TaXplc1tpXSAtPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ga25uUmVzO1xuICAgIH1cbiAgICBhc3luYyBtdWx0aUNvbHVtbktOTih2YWx1ZXMsIGZuTmFtZXMsIG5OZWlnaGJvdXJzID0gMTUsIG9wdHMsIHdlaWdodHMsIGFnZ3JlZ2F0aW9uTWV0aG9kID0gRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHMuRVVDTElERUFOKSB7XG4gICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoICE9PSBmbk5hbWVzLmxlbmd0aCB8fCB2YWx1ZXMubGVuZ3RoICE9PSBvcHRzLmxlbmd0aCB8fCB2YWx1ZXMubGVuZ3RoICE9PSB3ZWlnaHRzLmxlbmd0aClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndmFsdWVzLCBkaXN0YW5jZSBmdW5jdGlvbnMsIG9wdGlvbnMgYW5kIHdlaWdodHMgYXJyYXlzIHNob3VsZCBoYXZlIHRoZSBzYW1lIGxlbmd0aCcpO1xuICAgICAgICBpZiAodmFsdWVzLnNvbWUoKHYpID0+IHYubGVuZ3RoICE9PSB2YWx1ZXNbMF0ubGVuZ3RoKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignYWxsIHZhbHVlcyBhcnJheXMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgbGVuZ3RoJyk7XG4gICAgICAgIGNvbnN0IG1hdFNpemUgPSB2YWx1ZXNbMF0ubGVuZ3RoICogKHZhbHVlc1swXS5sZW5ndGggLSAxKSAvIDI7XG4gICAgICAgIGNvbnN0IGNodW5rU2l6ZSA9IE1hdGguZmxvb3IobWF0U2l6ZSAvIHRoaXMuX3dvcmtlckNvdW50KTtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBuZXcgQXJyYXkodGhpcy5fd29ya2VyQ291bnQpO1xuICAgICAgICBjb25zdCB3b3JrZXJzID0gbmV3IEFycmF5KHRoaXMuX3dvcmtlckNvdW50KVxuICAgICAgICAgICAgLmZpbGwobnVsbCkubWFwKCgpID0+IG5ldyBXb3JrZXIobmV3IFVSTCgnLi9rbm4td29ya2VyJywgaW1wb3J0Lm1ldGEudXJsKSkpO1xuICAgICAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCB0aGlzLl93b3JrZXJDb3VudDsgaWR4KyspIHtcbiAgICAgICAgICAgIHByb21pc2VzW2lkeF0gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZVdvcmtlciwgcmVqZWN0V29ya2VyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRJZHggPSBpZHggKiBjaHVua1NpemU7XG4gICAgICAgICAgICAgICAgY29uc3QgZW5kSWR4ID0gaWR4ID09PSB0aGlzLl93b3JrZXJDb3VudCAtIDEgPyBtYXRTaXplIDogKGlkeCArIDEpICogY2h1bmtTaXplO1xuICAgICAgICAgICAgICAgIGlmIChlbmRJZHggPD0gc3RhcnRJZHgpXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVXb3JrZXIoeyBrbm5EaXN0YW5jZXM6IG5ldyBBcnJheSgwKSwga25uSW5kZXhlczogbmV3IEFycmF5KDApIH0pO1xuICAgICAgICAgICAgICAgIHdvcmtlcnNbaWR4XS5wb3N0TWVzc2FnZSh7IHZhbHVlcywgc3RhcnRJZHgsIGVuZElkeCwgZm5OYW1lcywgb3B0cywgbk5laWdoYm91cnMsIHdlaWdodHMsIGFnZ3JlZ2F0aW9uTWV0aG9kIH0pO1xuICAgICAgICAgICAgICAgIHdvcmtlcnNbaWR4XS5vbm1lc3NhZ2UgPSAoeyBkYXRhOiB7IGVycm9yLCBrbm5EaXN0YW5jZXMsIGtubkluZGV4ZXMgfSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgd29ya2Vyc1tpZHhdLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0V29ya2VyKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtlcnNbaWR4XS50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVXb3JrZXIoeyBrbm5EaXN0YW5jZXMsIGtubkluZGV4ZXMgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICAgICAgY29uc3Qga25uUmVzID0ge1xuICAgICAgICAgICAga25uRGlzdGFuY2VzOiBuZXcgQXJyYXkodmFsdWVzWzBdLmxlbmd0aCkuZmlsbChudWxsKS5tYXAoKCkgPT4gbmV3IEFycmF5KG5OZWlnaGJvdXJzKS5maWxsKDk5OTk5KSksXG4gICAgICAgICAgICBrbm5JbmRleGVzOiBuZXcgQXJyYXkodmFsdWVzWzBdLmxlbmd0aCkuZmlsbChudWxsKS5tYXAoKCkgPT4gbmV3IEFycmF5KG5OZWlnaGJvdXJzKS5maWxsKC0xKSlcbiAgICAgICAgfTtcbiAgICAgICAgZm9yIChjb25zdCByZXMgb2YgcmVzdWx0cykge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZXNbMF0ubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJlcy5rbm5EaXN0YW5jZXNbaV0/Lmxlbmd0aCA/PyAwOyArK2opXG4gICAgICAgICAgICAgICAgICAgIGluc2VydFNtYWxsZXIoa25uUmVzLmtubkRpc3RhbmNlc1tpXSwga25uUmVzLmtubkluZGV4ZXNbaV0sIHJlcy5rbm5EaXN0YW5jZXNbaV1bal0sIHJlcy5rbm5JbmRleGVzW2ldW2pdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ga25uUmVzO1xuICAgIH1cbiAgICBhc3luYyBnZXRTYW1wbGVEaXN0YW5jZXModmFsdWVzLCBmbk5hbWVzLCBvcHRzID0gW10sIHdlaWdodHMsIGFnZ3JlZ2F0aW9uTWV0aG9kID0gRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHMuRVVDTElERUFOKSB7XG4gICAgICAgIGNvbnN0IHRocmVzaG9sZFdvcmtlcnMgPSBuZXcgQXJyYXkodGhpcy5fd29ya2VyQ291bnQpLmZpbGwobnVsbClcbiAgICAgICAgICAgIC5tYXAoKCkgPT4gbmV3IFdvcmtlcihuZXcgVVJMKCcuL3NwYXJzZS1tYXRyaXgtdGhyZXNob2xkLXdvcmtlcicsIGltcG9ydC5tZXRhLnVybCkpKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IG1hdFNpemUgPSB2YWx1ZXNbMF0ubGVuZ3RoICogKHZhbHVlc1swXS5sZW5ndGggLSAxKSAvIDI7XG4gICAgICAgICAgICBjb25zdCBjaHVua1NpemUgPSBNYXRoLmZsb29yKG1hdFNpemUgLyB0aGlzLl93b3JrZXJDb3VudCk7XG4gICAgICAgICAgICBjb25zdCBtYXhTYW1wbGVTaXplID0gMTAwMDAwMDtcbiAgICAgICAgICAgIGNvbnN0IHNhbXBsZVNpc2UgPSBNYXRoLm1heChNYXRoLm1pbihtYXRTaXplIC8gMTAwMCwgbWF4U2FtcGxlU2l6ZSksIE1hdGgubWluKG1hdFNpemUsIG1heFNhbXBsZVNpemUpKTtcbiAgICAgICAgICAgIGNvbnN0IHRlc3RTZXRTaXplUGVyV29ya2VyID0gTWF0aC5mbG9vcihzYW1wbGVTaXNlIC8gdGhpcy5fd29ya2VyQ291bnQpO1xuICAgICAgICAgICAgY29uc3QgdFByb21pc2VzID0gbmV3IEFycmF5KHRoaXMuX3dvcmtlckNvdW50KTtcbiAgICAgICAgICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IHRoaXMuX3dvcmtlckNvdW50OyBpZHgrKykge1xuICAgICAgICAgICAgICAgIHRQcm9taXNlc1tpZHhdID0gbmV3IFByb21pc2UoKHJlc29sdmVXb3JrZXIsIHJlamVjdFdvcmtlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGFydElkeCA9IGlkeCAqIGNodW5rU2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kSWR4ID0gaWR4ID09PSB0aGlzLl93b3JrZXJDb3VudCAtIDEgPyBtYXRTaXplIDogKGlkeCArIDEpICogY2h1bmtTaXplO1xuICAgICAgICAgICAgICAgICAgICB0aHJlc2hvbGRXb3JrZXJzW2lkeF0ucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiB2YWx1ZXMsIHN0YXJ0SWR4LCBlbmRJZHgsIHNhbXBsZUxlbmd0aDogdGVzdFNldFNpemVQZXJXb3JrZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBmbk5hbWVzLCBvcHRzLCB3ZWlnaHRzLCBhZ2dyZWdhdGlvbk1ldGhvZFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhyZXNob2xkV29ya2Vyc1tpZHhdLm9ubWVzc2FnZSA9ICh7IGRhdGE6IHsgZXJyb3IsIGRpc3RhbmNlIH0gfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyZXNob2xkV29ya2Vyc1tpZHhdLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdFdvcmtlcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVdvcmtlcih7IGRpc3RhbmNlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKHRQcm9taXNlcyk7XG4gICAgICAgICAgICBjb25zdCBmdWxsU2l6ZSA9IHJlc3VsdHMucmVkdWNlKChhY2MsIHZhbCkgPT4gYWNjICsgdmFsLmRpc3RhbmNlLmxlbmd0aCwgMCk7XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IG5ldyBGbG9hdDMyQXJyYXkoZnVsbFNpemUpO1xuICAgICAgICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlcyBvZiByZXN1bHRzKSB7XG4gICAgICAgICAgICAgICAgZGlzdGFuY2Uuc2V0KHJlcy5kaXN0YW5jZSwgb2Zmc2V0KTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gcmVzLmRpc3RhbmNlLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRpc3RhbmNlLnNvcnQoKTtcbiAgICAgICAgICAgIHJldHVybiBkaXN0YW5jZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhyZXNob2xkV29ya2Vycz8uZm9yRWFjaCgodykgPT4gdz8udGVybWluYXRlKCkpO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRmxvYXQzMkFycmF5KDEpLmZpbGwoMC41KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBnZXRNaW5pbWFsVGhyZXNob2xkKHZhbHVlcywgZm5OYW1lcywgb3B0cyA9IFtdLCB3ZWlnaHRzLCBhZ2dyZWdhdGlvbk1ldGhvZCA9IERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzLkVVQ0xJREVBTikge1xuICAgICAgICAvL1dlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBtaW5pbWFsIHRocmVzaG9sZCBmaXJzdCxcbiAgICAgICAgLy9pbiBvcmRlciB0byBnZXQgbWF0cml4IHN1Y2ggdGhhdCBpdCBkb2VzIG5vdCBleGNlZWQgdGhlIG1heGltdW0gc2l6ZSBvZiAxR0JcbiAgICAgICAgLy93ZSBoYXZlIDMgcmV0dXJuIGFycmF5cywgZWFjaCA0IGJpdGVzIHBlciBlbGVtZW50LCBzbyBpZiB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSBtYXRyaXggaXMgMUdCLFxuICAgICAgICBjb25zdCBtYXhTcGFyc2VNYXRyaXhTaXplID0gNzAwMDAwMDA7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBtYXRTaXplID0gdmFsdWVzLmxlbmd0aCAqICh2YWx1ZXMubGVuZ3RoIC0gMSkgLyAyO1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBhd2FpdCB0aGlzLmdldFNhbXBsZURpc3RhbmNlcyh2YWx1ZXMsIGZuTmFtZXMsIG9wdHMsIHdlaWdodHMsIGFnZ3JlZ2F0aW9uTWV0aG9kKTtcbiAgICAgICAgICAgIGNvbnN0IGZyYWN0aW9uSW5kZXggPSBNYXRoLmZsb29yKG1heFNwYXJzZU1hdHJpeFNpemUgLyBtYXRTaXplICogZGlzdGFuY2UubGVuZ3RoKTtcbiAgICAgICAgICAgIGNvbnN0IHRocmVzaG9sZCA9IDEgLSBkaXN0YW5jZVtmcmFjdGlvbkluZGV4XTtcbiAgICAgICAgICAgIC8vIHRocmVzaG9sZCA9IE1hdGgubWF4KHRocmVzaG9sZCwgMC4zKTtcbiAgICAgICAgICAgIHJldHVybiB0aHJlc2hvbGQ7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICByZXR1cm4gMC41O1xuICAgICAgICB9XG4gICAgfVxuICAgIHN0YXRpYyBjYWxjU3luYyh2YWx1ZXMsIGZuTmFtZSwgZGlzdGFuY2VGbiwgdGhyZXNob2xkKSB7XG4gICAgICAgIGNvbnN0IGkgPSBbXTtcbiAgICAgICAgY29uc3QgaiA9IFtdO1xuICAgICAgICBjb25zdCBkaXN0YW5jZXMgPSBbXTtcbiAgICAgICAgbGV0IGNudCA9IDA7XG4gICAgICAgIGxldCBtaSA9IDA7XG4gICAgICAgIGxldCBtaiA9IDA7XG4gICAgICAgIGNvbnN0IGZ1bGxTaXplID0gdmFsdWVzLmxlbmd0aCAqICh2YWx1ZXMubGVuZ3RoIC0gMSkgLyAyO1xuICAgICAgICB3aGlsZSAoY250IDwgZnVsbFNpemUpIHtcbiAgICAgICAgICAgIC8vY29uc3QgdmFsdWUgPSBzZXExTGlzdFttaV0gJiYgc2VxMUxpc3RbbWpdID8gaGFtbWluZyhzZXExTGlzdFttaV0sIHNlcTFMaXN0W21qXSkgOiAwO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAhaXNOaWwodmFsdWVzW21pXSkgJiYgIWlzTmlsKHZhbHVlc1ttal0pID9cbiAgICAgICAgICAgICAgICBkaXN0YW5jZUZuKHZhbHVlc1ttaV0sIHZhbHVlc1ttal0pIDogMTtcbiAgICAgICAgICAgIGNvbnN0IHNpbWlsYXJpdHkgPSAxIC0gdmFsdWU7XG4gICAgICAgICAgICBpZiAoc2ltaWxhcml0eSA+PSB0aHJlc2hvbGQpIHtcbiAgICAgICAgICAgICAgICBpLnB1c2gobWkpO1xuICAgICAgICAgICAgICAgIGoucHVzaChtaik7XG4gICAgICAgICAgICAgICAgZGlzdGFuY2VzLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY250Kys7XG4gICAgICAgICAgICBtaisrO1xuICAgICAgICAgICAgaWYgKG1qID09PSB2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgbWkrKztcbiAgICAgICAgICAgICAgICBtaiA9IG1pICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpQXJyYXkgPSBuZXcgSW50MzJBcnJheShpKTtcbiAgICAgICAgY29uc3QgakFycmF5ID0gbmV3IEludDMyQXJyYXkoaik7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGRpc3RhbmNlcyk7XG4gICAgICAgIHJldHVybiB7IGk6IGlBcnJheSwgajogakFycmF5LCBkaXN0YW5jZTogZGlzdGFuY2VBcnJheSB9O1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMzQmhjbk5sTFcxaGRISnBlQzF6WlhKMmFXTmxMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaWMzQmhjbk5sTFcxaGRISnBlQzF6WlhKMmFXTmxMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVOQkxFOUJRVThzUlVGQk5FSXNNRUpCUVRCQ0xFVkJRVU1zVFVGQlRTeFRRVUZUTEVOQlFVTTdRVUZET1VVc1QwRkJUeXhGUVVGRExHRkJRV0VzUlVGQlJTeExRVUZMTEVWQlFVTXNUVUZCVFN4VFFVRlRMRU5CUVVNN1FVRmhOME1zVFVGQlRTeFBRVUZQTEcxQ1FVRnRRanRKUVVVMVFqdFJRVU5GTEVsQlFVa3NRMEZCUXl4WlFVRlpMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eFRRVUZUTEVOQlFVTXNiVUpCUVcxQ0xFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNKRkxFTkJRVU03U1VGRlRTeExRVUZMTEVOQlFVTXNaVUZCWlN4RFFVRkRMRTFCUVc5Q0xFVkJRVVVzVDBGQmRVSXNSVUZEZUVVc1UwRkJhVUlzUlVGQlJTeFBRVUUyUWl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxGVkJRVzlDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUXpkRkxHOUNRVUVyUXl3d1FrRkJNRUlzUTBGQlF5eFRRVUZUTzFGQlJXNUdMRTFCUVUwc1QwRkJUeXhIUVVGSExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU01UkN4TlFVRk5MRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03VVVGRk1VUXNUVUZCVFN4WlFVRlpMRWRCUVVjc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNSMEZCUnl4TFFVRk5MRU5CUVVNc1EwRkJRenRaUVVNNVF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eE5RVUZOTEVWQlFVVXNUMEZCVHl4RlFVRkZMRWxCUVVrc1JVRkJSU3hQUVVGUExFVkJRVVVzYVVKQlFXbENMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzaEdMRWxCUVVrc1UwRkJVeXhIUVVGSExGbEJRVmtzUlVGQlJUdFpRVU0xUWl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExHMUNRVUZ0UWl4WlFVRlpMRVZCUVVVc1EwRkJReXhEUVVGRE8xbEJReTlETEZOQlFWTXNSMEZCUnl4WlFVRlpMRU5CUVVNN1UwRkRNVUk3VVVGRFJDeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGZEJRVmNzUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUTNwRUxFMUJRVTBzVVVGQlVTeEhRVU5hTEVsQlFVa3NTMEZCU3l4RFFVRTRRaXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTTdVVUZGTlVRc1RVRkJUU3hQUVVGUExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJRenRoUVVONlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVsQlFVa3NUVUZCVFN4RFFVRkRMRWxCUVVrc1IwRkJSeXhEUVVGRExIZENRVUYzUWl4RlFVRkZMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNoR0xFdEJRVXNzU1VGQlNTeEhRVUZITEVkQlFVY3NRMEZCUXl4RlFVRkZMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZPMWxCUTJoRUxGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4SlFVRkpMRTlCUVU4c1EwRkJReXhEUVVGRExHRkJRV0VzUlVGQlJTeFpRVUZaTEVWQlFVVXNSVUZCUlR0blFrRkRNVVFzVFVGQlRTeFJRVUZSTEVkQlFVY3NSMEZCUnl4SFFVRkhMRk5CUVZNc1EwRkJRenRuUWtGRGFrTXNUVUZCVFN4TlFVRk5MRWRCUVVjc1IwRkJSeXhMUVVGTExFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF6dG5Ra0ZETDBVc1NVRkJTU3hOUVVGTkxFbEJRVWtzVVVGQlVUdHZRa0ZEY0VJc1lVRkJZU3hEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEpRVUZKTEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hSUVVGUkxFVkJRVVVzU1VGQlNTeFpRVUZaTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhGUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEYkVjc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEZkQlFWY3NRMEZCUXl4RlFVRkRMRTFCUVUwc1JVRkJSU3hSUVVGUkxFVkJRVVVzVFVGQlRTeEZRVUZGTEZOQlFWTXNSVUZCUlN4UFFVRlBMRVZCUVVVc1NVRkJTU3hGUVVGRkxFOUJRVThzUlVGQlJTeHBRa0ZCYVVJc1JVRkJReXhEUVVGRExFTkJRVU03WjBKQlF6TkhMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVkQlFVY3NRMEZCUXl4RlFVRkRMRWxCUVVrc1JVRkJSU3hGUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRkZCUVZFc1JVRkJReXhGUVVGRExFVkJRVkVzUlVGQlJUdHZRa0ZEYWtVc1NVRkJTU3hMUVVGTExFVkJRVVU3ZDBKQlExUXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETzNkQ1FVTjZRaXhaUVVGWkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdjVUpCUTNKQ08zbENRVUZOTzNkQ1FVTk1MRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZCUXp0M1FrRkRla0lzWVVGQllTeERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hSUVVGUkxFVkJRVVVzUjBGQlJ5eEZRVUZETEVOQlFVTXNRMEZCUXp0eFFrRkRkRU03WjBKQlEwZ3NRMEZCUXl4RFFVRkRPMWxCUTBvc1EwRkJReXhEUVVGRExFTkJRVU03VTBGRFNqdFJRVVZFTEUxQlFVMHNUMEZCVHl4SFFVRkhMRTFCUVUwc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0UlFVTTFReXhOUVVGTkxGRkJRVkVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEZRVUZGTEVOQlFVTXNSMEZCUnl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNKRkxFMUJRVTBzUTBGQlF5eEhRVUZITEVsQlFVa3NWVUZCVlN4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8xRkJRMjVETEUxQlFVMHNRMEZCUXl4SFFVRkhMRWxCUVVrc1ZVRkJWU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzFGQlEyNURMRTFCUVUwc1VVRkJVU3hIUVVGSExFbEJRVWtzV1VGQldTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMUZCUXpWRExFbEJRVWtzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTm1MSE5DUVVGelFqdFJRVU4wUWl4TFFVRkxMRTFCUVUwc1IwRkJSeXhKUVVGSkxFOUJRVThzUlVGQlJUdFpRVU42UWl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1dVRkRja0lzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzFsQlEzSkNMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEZGQlFWRXNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenRaUVVOdVF5eE5RVUZOTEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU03VTBGRGVFSTdVVUZEUkN4UFFVRlBMRVZCUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeFJRVUZSTEVWQlFVTXNRMEZCUXp0SlFVTXhRaXhEUVVGRE8wbEJSVTBzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCU1N4TlFVRm5RaXhGUVVGRkxFMUJRVzlDTEVWQlFVVXNVMEZCYVVJc1JVRkJSU3hQUVVFeVFpeEZRVUZGTzFGQlF6TkhMSEZDUVVGeFFqdFJRVU55UWl4UFFVRlBMRTFCUVUwc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzVTBGQlV5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEyaEdMRU5CUVVNN1NVRkZUU3hMUVVGTExFTkJRVU1zVFVGQlRTeERRVU5xUWl4TlFVRnJRaXhGUVVGRkxFMUJRVzlDTEVWQlFVVXNZMEZCYzBJc1JVRkJSU3hGUVVGRkxFOUJRVEpDTEVWQlFVVTdVVUZGYWtjc1QwRkJUeXhOUVVGTkxFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTEZkQlFWY3NSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTnFSaXhEUVVGRE8wbEJSVTBzUzBGQlN5eERRVUZETEdWQlFXVXNRMEZETVVJc1RVRkJhMElzUlVGQlJTeE5RVUZ2UWl4RlFVRkZMRmxCUVc5Q0xFZEJRVWNzUlVGQlJTeFBRVUV5UWl4RlFVRkZPMUZCUldoSExFOUJRVThzVFVGQlRTeEpRVUZKTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxGTkJRVk1zUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU40Uml4RFFVRkRPMGxCUlUwc1MwRkJTeXhEUVVGRExIVkNRVUYxUWl4RFFVRkRMRTFCUVhsQ0xFVkJRVVVzVDBGQmRVSXNSVUZCUlN4WlFVRnZRaXhIUVVGSExFVkJRemxITEVsQlFUQkNMRVZCUVVVc1QwRkJhVUlzUlVGRE4wTXNiMEpCUVN0RExEQkNRVUV3UWl4RFFVRkRMRk5CUVZNN1VVRkZia1lzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4TFFVRkxMRTlCUVU4c1EwRkJReXhOUVVGTkxFbEJRVWtzVFVGQlRTeERRVUZETEUxQlFVMHNTMEZCU3l4SlFVRkpMRU5CUVVNc1RVRkJUU3hKUVVGSkxFMUJRVTBzUTBGQlF5eE5RVUZOTEV0QlFVc3NUMEZCVHl4RFFVRkRMRTFCUVUwN1dVRkRka2NzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4dlJrRkJiMFlzUTBGQlF5eERRVUZETzFGQlJYaEhMRWxCUVVrc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUzBGQlN5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRE8xbEJRMjVFTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc0swTkJRU3RETEVOQlFVTXNRMEZCUXp0UlFVVnVSU3hOUVVGTkxFOUJRVThzUjBGQlJ5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZET1VRc1RVRkJUU3hUUVVGVExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETzFGQlF6RkVMRTFCUVUwc1VVRkJVU3hIUVVOYUxFbEJRVWtzUzBGQlN5eERRVUZ4UWl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03VVVGRGJrUXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXp0aFFVTjZReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFbEJRVWtzVFVGQlRTeERRVUZETEVsQlFVa3NSMEZCUnl4RFFVRkRMSGRDUVVGM1FpeEZRVUZGTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzaEdMRXRCUVVzc1NVRkJTU3hIUVVGSExFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFZEJRVWNzUlVGQlJTeEZRVUZGTzFsQlEyaEVMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMR0ZCUVdFc1JVRkJSU3haUVVGWkxFVkJRVVVzUlVGQlJUdG5Ra0ZETVVRc1RVRkJUU3hSUVVGUkxFZEJRVWNzUjBGQlJ5eEhRVUZITEZOQlFWTXNRMEZCUXp0blFrRkRha01zVFVGQlRTeE5RVUZOTEVkQlFVY3NSMEZCUnl4TFFVRkxMRWxCUVVrc1EwRkJReXhaUVVGWkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJRenRuUWtGREwwVXNTVUZCU1N4TlFVRk5MRWxCUVVrc1VVRkJVVHR2UWtGRGNFSXNZVUZCWVN4RFFVRkRMRVZCUVVNc1dVRkJXU3hGUVVGRkxFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRlZCUVZVc1JVRkJSU3hKUVVGSkxFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNN1owSkJRM2hGTEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhYUVVGWExFTkJRVU1zUlVGQlF5eE5RVUZOTEVWQlFVVXNVVUZCVVN4RlFVRkZMRTFCUVUwc1JVRkJSU3hQUVVGUExFVkJRVVVzU1VGQlNTeEZRVUZGTEZOQlFWTXNSVUZCUlN4UFFVRlBMRVZCUVVVc2FVSkJRV2xDTEVWQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVNelJ5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhIUVVGSExFTkJRVU1zUlVGQlF5eEpRVUZKTEVWQlFVVXNSVUZCUXl4TFFVRkxMRVZCUVVVc1dVRkJXU3hGUVVGRkxGVkJRVlVzUlVGQlF5eEZRVUZETEVWQlFWRXNSVUZCUlR0dlFrRkRNMFVzU1VGQlNTeExRVUZMTEVWQlFVVTdkMEpCUTFRc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPM2RDUVVONlFpeFpRVUZaTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN2NVSkJRM0pDTzNsQ1FVRk5PM2RDUVVOTUxFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenQzUWtGRGVrSXNZVUZCWVN4RFFVRkRMRVZCUVVNc1dVRkJXU3hGUVVGRkxGVkJRVlVzUlVGQlF5eERRVUZETEVOQlFVTTdjVUpCUXpORE8yZENRVU5JTEVOQlFVTXNRMEZCUXp0WlFVTktMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRMG83VVVGRlJDeE5RVUZOTEU5QlFVOHNSMEZCUnl4TlFVRk5MRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdVVUZETlVNc1RVRkJUU3hSUVVGUkxFZEJRVWNzU1VGQlNTeFZRVUZWTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzFGQlEyeEVMRXRCUVVzc1RVRkJUU3hIUVVGSExFbEJRVWtzVDBGQlR5eEZRVUZGTzFsQlEzcENMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXp0blFrRkRka01zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNUVUZCVFN4SlFVRkpMRU5CUVVNc1EwRkJRenRUUVVOcVJEdFJRVU5FTEUxQlFVMHNUVUZCVFN4SFFVRmpPMWxCUTNoQ0xGbEJRVmtzUlVGQlJTeEpRVUZKTEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZUTEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMnhITEZWQlFWVXNSVUZCUlN4SlFVRkpMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVsQlFVa3NTMEZCU3l4RFFVRlRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlFVTXNRMEZCUXp0UlFVTndSeXhMUVVGTExFMUJRVTBzUjBGQlJ5eEpRVUZKTEU5QlFVOHNSVUZCUlR0WlFVTjZRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRuUWtGRGVrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzVFVGQlRTeEpRVUZKTEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHR2UWtGRGVrUXNUVUZCVFN4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZEYWtVc1RVRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkROMFFzVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRwUWtGRGJFSTdZVUZEUmp0VFFVTkdPMUZCUTBRc1QwRkJUeXhOUVVGTkxFTkJRVU03U1VGRGFFSXNRMEZCUXp0SlFVVk5MRXRCUVVzc1EwRkJReXhqUVVGakxFTkJRVU1zVFVGQmVVSXNSVUZCUlN4UFFVRjFRaXhGUVVGRkxHTkJRWE5DTEVWQlFVVXNSVUZEZEVjc1NVRkJNRUlzUlVGQlJTeFBRVUZwUWl4RlFVTTNReXh2UWtGQkswTXNNRUpCUVRCQ0xFTkJRVU1zVTBGQlV6dFJRVVZ1Uml4SlFVRkpMRTFCUVUwc1EwRkJReXhOUVVGTkxFdEJRVXNzVDBGQlR5eERRVUZETEUxQlFVMHNTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hMUVVGTExFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NUVUZCVFN4RFFVRkRMRTFCUVUwc1MwRkJTeXhQUVVGUExFTkJRVU1zVFVGQlRUdFpRVU4yUnl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExHOUdRVUZ2Uml4RFFVRkRMRU5CUVVNN1VVRkZlRWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4TFFVRkxMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdXVUZEYmtRc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5d3JRMEZCSzBNc1EwRkJReXhEUVVGRE8xRkJSVzVGTEUxQlFVMHNUMEZCVHl4SFFVRkhMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVNNVJDeE5RVUZOTEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNN1VVRkRNVVFzVFVGQlRTeFJRVUZSTEVkQlExb3NTVUZCU1N4TFFVRkxMRU5CUVhGQ0xFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXp0UlFVTnVSQ3hOUVVGTkxFOUJRVThzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRE8yRkJRM3BETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNTVUZCU1N4TlFVRk5MRU5CUVVNc1NVRkJTU3hIUVVGSExFTkJRVU1zWTBGQll5eEZRVUZGTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6bEZMRXRCUVVzc1NVRkJTU3hIUVVGSExFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFZEJRVWNzUlVGQlJTeEZRVUZGTzFsQlEyaEVMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMR0ZCUVdFc1JVRkJSU3haUVVGWkxFVkJRVVVzUlVGQlJUdG5Ra0ZETVVRc1RVRkJUU3hSUVVGUkxFZEJRVWNzUjBGQlJ5eEhRVUZITEZOQlFWTXNRMEZCUXp0blFrRkRha01zVFVGQlRTeE5RVUZOTEVkQlFVY3NSMEZCUnl4TFFVRkxMRWxCUVVrc1EwRkJReXhaUVVGWkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJRenRuUWtGREwwVXNTVUZCU1N4TlFVRk5MRWxCUVVrc1VVRkJVVHR2UWtGRGNFSXNZVUZCWVN4RFFVRkRMRVZCUVVNc1dVRkJXU3hGUVVGRkxFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRlZCUVZVc1JVRkJSU3hKUVVGSkxFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNN1owSkJRM2hGTEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhYUVVGWExFTkJRVU1zUlVGQlF5eE5RVUZOTEVWQlFVVXNVVUZCVVN4RlFVRkZMRTFCUVUwc1JVRkJSU3hQUVVGUExFVkJRVVVzU1VGQlNTeEZRVUZGTEZkQlFWY3NSVUZCUlN4UFFVRlBMRVZCUVVVc2FVSkJRV2xDTEVWQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVNM1J5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhIUVVGSExFTkJRVU1zUlVGQlF5eEpRVUZKTEVWQlFVVXNSVUZCUXl4TFFVRkxMRVZCUVVVc1dVRkJXU3hGUVVGRkxGVkJRVlVzUlVGQlF5eEZRVUZETEVWQlFWRXNSVUZCUlR0dlFrRkRNMFVzU1VGQlNTeExRVUZMTEVWQlFVVTdkMEpCUTFRc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPM2RDUVVONlFpeFpRVUZaTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN2NVSkJRM0pDTzNsQ1FVRk5PM2RDUVVOTUxFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenQzUWtGRGVrSXNZVUZCWVN4RFFVRkRMRVZCUVVNc1dVRkJXU3hGUVVGRkxGVkJRVlVzUlVGQlF5eERRVUZETEVOQlFVTTdjVUpCUXpORE8yZENRVU5JTEVOQlFVTXNRMEZCUXp0WlFVTktMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRMG83VVVGRlJDeE5RVUZOTEU5QlFVOHNSMEZCUnl4TlFVRk5MRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdVVUZETlVNc1RVRkJUU3hOUVVGTkxFZEJRV003V1VGRGVFSXNXVUZCV1N4RlFVRkZMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZUTEZkQlFWY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFpRVU14Unl4VlFVRlZMRVZCUVVVc1NVRkJTU3hMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zU1VGQlNTeExRVUZMTEVOQlFWTXNWMEZCVnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVMEZCUXl4RFFVRkRPMUZCUTNwSExFdEJRVXNzVFVGQlRTeEhRVUZITEVsQlFVa3NUMEZCVHl4RlFVRkZPMWxCUTNwQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8yZENRVU42UXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeE5RVUZOTEVsQlFVa3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJRenR2UWtGRGRrUXNZVUZCWVN4RFFVRkRMRTFCUVUwc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNUVUZCVFN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVkQlFVY3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0aFFVTTNSenRUUVVOR08xRkJRMFFzVDBGQlR5eE5RVUZOTEVOQlFVTTdTVUZEYUVJc1EwRkJRenRKUVVWTkxFdEJRVXNzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhOUVVGdlFpeEZRVU5zUkN4UFFVRjFRaXhGUVVGRkxFOUJRVFpDTEVWQlFVVXNSVUZCUlN4UFFVRnBRaXhGUVVNelJTeHZRa0ZCSzBNc01FSkJRVEJDTEVOQlFVTXNVMEZCVXp0UlFVTnVSaXhOUVVGTkxHZENRVUZuUWl4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRE8yRkJRemRFTEVkQlFVY3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhKUVVGSkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4clEwRkJhME1zUlVGQlJTeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVVYyUml4SlFVRkpPMWxCUTBZc1RVRkJUU3hQUVVGUExFZEJRVWNzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlF6bEVMRTFCUVUwc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dFpRVU14UkN4TlFVRk5MR0ZCUVdFc1IwRkJSeXhQUVVGVExFTkJRVU03V1VGRGFFTXNUVUZCVFN4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRTlCUVU4c1IwRkJSeXhKUVVGSkxFVkJRVVVzWVVGQllTeERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhQUVVGUExFVkJRVVVzWVVGQllTeERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjJSeXhOUVVGTkxHOUNRVUZ2UWl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenRaUVVONFJTeE5RVUZOTEZOQlFWTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJiME1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRPMWxCUld4R0xFdEJRVXNzU1VGQlNTeEhRVUZITEVkQlFVY3NRMEZCUXl4RlFVRkZMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZPMmRDUVVOb1JDeFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eGhRVUZoTEVWQlFVVXNXVUZCV1N4RlFVRkZMRVZCUVVVN2IwSkJRek5FTEUxQlFVMHNVVUZCVVN4SFFVRkhMRWRCUVVjc1IwRkJSeXhUUVVGVExFTkJRVU03YjBKQlEycERMRTFCUVUwc1RVRkJUU3hIUVVGSExFZEJRVWNzUzBGQlN5eEpRVUZKTEVOQlFVTXNXVUZCV1N4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTTdiMEpCUXk5RkxHZENRVUZuUWl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExGZEJRVmNzUTBGQlF6dDNRa0ZEYUVNc1RVRkJUU3hGUVVGRkxFMUJRVTBzUlVGQlJTeFJRVUZSTEVWQlFVVXNUVUZCVFN4RlFVRkZMRmxCUVZrc1JVRkJSU3h2UWtGQmIwSTdkMEpCUTNCRkxFOUJRVThzUlVGQlJTeEpRVUZKTEVWQlFVVXNUMEZCVHl4RlFVRkZMR2xDUVVGcFFqdHhRa0ZETVVNc1EwRkJReXhEUVVGRE8yOUNRVU5JTEdkQ1FVRm5RaXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSMEZCUnl4RFFVRkRMRVZCUVVNc1NVRkJTU3hGUVVGRkxFVkJRVU1zUzBGQlN5eEZRVUZGTEZGQlFWRXNSVUZCUXl4RlFVRkRMRVZCUVZFc1JVRkJSVHQzUWtGRGNFVXNaMEpCUVdkQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNN2QwSkJRMnhETEVsQlFVa3NTMEZCU3pzMFFrRkJSU3haUVVGWkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdPelJDUVVNM1FpeGhRVUZoTEVOQlFVTXNSVUZCUXl4UlFVRlJMRVZCUVVNc1EwRkJReXhEUVVGRE8yOUNRVU01UWl4RFFVRkRMRU5CUVVNN1owSkJRMG9zUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEU2p0WlFVVkVMRTFCUVUwc1QwRkJUeXhIUVVGSExFMUJRVTBzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRaUVVNM1F5eE5RVUZOTEZGQlFWRXNSMEZCUnl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNc1IwRkJSeXhIUVVGSExFZEJRVWNzUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRelZGTEUxQlFVMHNVVUZCVVN4SFFVRkhMRWxCUVVrc1dVRkJXU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzFsQlF6VkRMRWxCUVVrc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU5tTEV0QlFVc3NUVUZCVFN4SFFVRkhMRWxCUVVrc1QwRkJUeXhGUVVGRk8yZENRVU42UWl4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eFJRVUZSTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1owSkJRMjVETEUxQlFVMHNTVUZCU1N4SFFVRkhMRU5CUVVNc1VVRkJVU3hEUVVGRExFMUJRVTBzUTBGQlF6dGhRVU12UWp0WlFVTkVMRkZCUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF6dFpRVVZvUWl4UFFVRlBMRkZCUVZFc1EwRkJRenRUUVVOcVFqdFJRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZPMWxCUTFZc1owSkJRV2RDTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNVMEZCVXl4RlFVRkZMRU5CUVVNc1EwRkJRenRaUVVOcVJDeFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMnBDTEU5QlFVOHNTVUZCU1N4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMU5CUTNSRE8wbEJRMGdzUTBGQlF6dEpRVVZQTEV0QlFVc3NRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eE5RVUZ2UWl4RlFVTndSQ3hQUVVGMVFpeEZRVUZGTEU5QlFUWkNMRVZCUVVVc1JVRkJSU3hQUVVGcFFpeEZRVU16UlN4dlFrRkJLME1zTUVKQlFUQkNMRU5CUVVNc1UwRkJVenRSUVVOdVJpeHRSRUZCYlVRN1VVRkRia1FzTmtWQlFUWkZPMUZCUXpkRkxHbEhRVUZwUnp0UlFVTnFSeXhOUVVGTkxHMUNRVUZ0UWl4SFFVRkhMRkZCUVZVc1EwRkJRenRSUVVOMlF5eEpRVUZKTzFsQlEwWXNUVUZCVFN4UFFVRlBMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEzaEVMRTFCUVUwc1VVRkJVU3hIUVVGSExFMUJRVTBzU1VGQlNTeERRVUZETEd0Q1FVRnJRaXhEUVVGRExFMUJRVTBzUlVGQlJTeFBRVUZQTEVWQlFVVXNTVUZCU1N4RlFVRkZMRTlCUVU4c1JVRkJSU3hwUWtGQmFVSXNRMEZCUXl4RFFVRkRPMWxCUTJ4SExFMUJRVTBzWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc2JVSkJRVzFDTEVkQlFVY3NUMEZCVHl4SFFVRkhMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFpRVU5zUml4TlFVRk5MRk5CUVZNc1IwRkJSeXhEUVVGRExFZEJRVWNzVVVGQlVTeERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRPMWxCUXpsRExIZERRVUYzUXp0WlFVTjRReXhQUVVGUExGTkJRVk1zUTBGQlF6dFRRVU5zUWp0UlFVRkRMRTlCUVU4c1EwRkJReXhGUVVGRk8xbEJRMVlzVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOcVFpeFBRVUZQTEVkQlFVY3NRMEZCUXp0VFFVTmFPMGxCUTBnc1EwRkJRenRKUVVWTkxFMUJRVTBzUTBGQlF5eFJRVUZSTEVOQlEzQkNMRTFCUVN0Q0xFVkJRVVVzVFVGQmIwSXNSVUZCUlN4VlFVRnZRaXhGUVVGRkxGTkJRV2xDTzFGQlJUbEdMRTFCUVUwc1EwRkJReXhIUVVGaExFVkJRVVVzUTBGQlF6dFJRVU4yUWl4TlFVRk5MRU5CUVVNc1IwRkJZU3hGUVVGRkxFTkJRVU03VVVGRGRrSXNUVUZCVFN4VFFVRlRMRWRCUVdFc1JVRkJSU3hEUVVGRE8xRkJReTlDTEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOYUxFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTllMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5ZTEUxQlFVMHNVVUZCVVN4SFFVRkhMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU42UkN4UFFVRlBMRWRCUVVjc1IwRkJSeXhSUVVGUkxFVkJRVVU3V1VGRGNrSXNkVVpCUVhWR08xbEJRM1pHTEUxQlFVMHNTMEZCU3l4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRM1JFTEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzVFVGQlRTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU42UXl4TlFVRk5MRlZCUVZVc1IwRkJSeXhEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETzFsQlF6ZENMRWxCUVVrc1ZVRkJWU3hKUVVGSkxGTkJRVk1zUlVGQlJUdG5Ra0ZETTBJc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0blFrRkRXQ3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMmRDUVVOWUxGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1lVRkRka0k3V1VGRFJDeEhRVUZITEVWQlFVVXNRMEZCUXp0WlFVTk9MRVZCUVVVc1JVRkJSU3hEUVVGRE8xbEJRMHdzU1VGQlNTeEZRVUZGTEV0QlFVc3NUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkJSVHRuUWtGRGVFSXNSVUZCUlN4RlFVRkZMRU5CUVVNN1owSkJRMHdzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1lVRkRZanRUUVVOR08xRkJSVVFzVFVGQlRTeE5RVUZOTEVkQlFVY3NTVUZCU1N4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGFrTXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYWtNc1RVRkJUU3hoUVVGaExFZEJRVWNzU1VGQlNTeFpRVUZaTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1VVRkZiRVFzVDBGQlR5eEZRVUZETEVOQlFVTXNSVUZCUlN4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFMUJRVTBzUlVGQlJTeFJRVUZSTEVWQlFVVXNZVUZCWVN4RlFVRkRMRU5CUVVNN1NVRkRla1FzUTBGQlF6dERRVU5LSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUh0TGJtOTNiazFsZEhKcFkzTjlJR1p5YjIwZ0p5NHVMM1I1Y0dWa0xXMWxkSEpwWTNNbk8xeHVhVzF3YjNKMElIdEVhWE4wWVc1alpVRm5aM0psWjJGMGFXOXVUV1YwYUc5a0xDQkVhWE4wWVc1alpVRm5aM0psWjJGMGFXOXVUV1YwYUc5a2MzMGdabkp2YlNBbkxpOTBlWEJsY3ljN1hHNXBiWEJ2Y25RZ2UybHVjMlZ5ZEZOdFlXeHNaWElzSUdselRtbHNmU0JtY205dElDY3VMM1YwYVd4ekp6dGNibHh1Wlhod2IzSjBJSFI1Y0dVZ1UzQmhjbk5sVFdGMGNtbDRVbVZ6ZFd4MElEMGdlMXh1SUNCcE9pQkpiblF6TWtGeWNtRjVJSHdnVldsdWRETXlRWEp5WVhrc1hHNGdJR282SUVsdWRETXlRWEp5WVhrZ2ZDQlZhVzUwTXpKQmNuSmhlU3hjYmlBZ1pHbHpkR0Z1WTJVNklFWnNiMkYwTXpKQmNuSmhlU3hjYmlBZ2FXUjRQem9nYm5WdFltVnlYRzU5TzF4dVhHNWxlSEJ2Y25RZ2RIbHdaU0JMYm01U1pYTjFiSFFnUFNCN1hHNGdJR3R1YmtScGMzUmhibU5sY3pvZ2JuVnRZbVZ5VzExYlhTeGNiaUFnYTI1dVNXNWtaWGhsY3pvZ2JuVnRZbVZ5VzExYlhWeHVmVnh1Wlhod2IzSjBJR05zWVhOeklGTndZWEp6WlUxaGRISnBlRk5sY25acFkyVWdlMXh1SUNBZ0lIQnlhWFpoZEdVZ1gzZHZjbXRsY2tOdmRXNTBPaUJ1ZFcxaVpYSTdYRzRnSUNBZ1kyOXVjM1J5ZFdOMGIzSW9LU0I3WEc0Z0lDQWdJQ0IwYUdsekxsOTNiM0pyWlhKRGIzVnVkQ0E5SUUxaGRHZ3ViV0Y0S0c1aGRtbG5ZWFJ2Y2k1b1lYSmtkMkZ5WlVOdmJtTjFjbkpsYm1ONUlDMGdNaXdnTVNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY0hWaWJHbGpJR0Z6ZVc1aklHTmhiR05OZFd4MGFVTnZiSFZ0YmloMllXeDFaWE02SUVGeWNtRjVQR0Z1ZVZ0ZFBpd2dabTVPWVcxbGN6b2dTMjV2ZDI1TlpYUnlhV056VzEwc1hHNGdJQ0FnSUNCMGFISmxjMmh2YkdRNklHNTFiV0psY2l3Z2IzQjBjem9nZTF0Zk9pQnpkSEpwYm1kZE9pQmhibmw5VzEwZ1BTQmJlMzFkTENCM1pXbG5hSFJ6T2lCdWRXMWlaWEpiWFNBOUlGc3hYU3hjYmlBZ0lDQWdJR0ZuWjNKbFoyRjBhVzl1VFdWMGFHOWtPaUJFYVhOMFlXNWpaVUZuWjNKbFoyRjBhVzl1VFdWMGFHOWtJRDBnUkdsemRHRnVZMlZCWjJkeVpXZGhkR2x2YmsxbGRHaHZaSE11UlZWRFRFbEVSVUZPWEc0Z0lDQWdLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQnRZWFJUYVhwbElEMGdkbUZzZFdWeld6QmRMbXhsYm1kMGFDQXFJQ2gyWVd4MVpYTmJNRjB1YkdWdVozUm9JQzBnTVNrZ0x5QXlPMXh1SUNBZ0lDQWdZMjl1YzNRZ1kyaDFibXRUYVhwbElEMGdUV0YwYUM1bWJHOXZjaWh0WVhSVGFYcGxJQzhnZEdocGN5NWZkMjl5YTJWeVEyOTFiblFwTzF4dVhHNGdJQ0FnSUNCamIyNXpkQ0J0YVc1VWFISmxjMmh2YkdRZ1BTQjJZV3gxWlhOYk1GMHViR1Z1WjNSb0lENGdNakJmTURBd0lEOWNiaUFnSUNBZ0lDQWdZWGRoYVhRZ2RHaHBjeTVuWlhSTmFXNXBiV0ZzVkdoeVpYTm9iMnhrS0haaGJIVmxjeXdnWm01T1lXMWxjeXdnYjNCMGN5d2dkMlZwWjJoMGN5d2dZV2RuY21WbllYUnBiMjVOWlhSb2IyUXBJRG9nTUR0Y2JpQWdJQ0FnSUdsbUlDaDBhSEpsYzJodmJHUWdQQ0J0YVc1VWFISmxjMmh2YkdRcElIdGNiaUFnSUNBZ0lDQWdZMjl1YzI5c1pTNXNiMmNvWUhWemFXNW5JSFJvY21WemFHOXNaQ0FrZTIxcGJsUm9jbVZ6YUc5c1pIMWdLVHRjYmlBZ0lDQWdJQ0FnZEdoeVpYTm9iMnhrSUQwZ2JXbHVWR2h5WlhOb2IyeGtPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdiM0IwY3k1bWIzSkZZV05vS0NoZkxDQnBLU0E5UGlCdmNIUnpXMmxkV3lkMGFISmxjMmh2YkdRblhTQTlJSFJvY21WemFHOXNaQ2s3WEc0Z0lDQWdJQ0JqYjI1emRDQndjbTl0YVhObGN5QTlYRzRnSUNBZ0lDQWdJRzVsZHlCQmNuSmhlVHhRY205dGFYTmxQRk53WVhKelpVMWhkSEpwZUZKbGMzVnNkRDQrS0hSb2FYTXVYM2R2Y210bGNrTnZkVzUwS1R0Y2JseHVJQ0FnSUNBZ1kyOXVjM1FnZDI5eWEyVnljeUE5SUc1bGR5QkJjbkpoZVNoMGFHbHpMbDkzYjNKclpYSkRiM1Z1ZENsY2JpQWdJQ0FnSUNBZ0xtWnBiR3dvYm5Wc2JDa3ViV0Z3S0NncElEMCtJRzVsZHlCWGIzSnJaWElvYm1WM0lGVlNUQ2duTGk5emNHRnljMlV0YldGMGNtbDRMWGR2Y210bGNpY3NJR2x0Y0c5eWRDNXRaWFJoTG5WeWJDa3BLVHRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJR2xrZUNBOUlEQTdJR2xrZUNBOElIUm9hWE11WDNkdmNtdGxja052ZFc1ME95QnBaSGdyS3lrZ2UxeHVJQ0FnSUNBZ0lDQndjbTl0YVhObGMxdHBaSGhkSUQwZ2JtVjNJRkJ5YjIxcGMyVW9LSEpsYzI5c2RtVlhiM0pyWlhJc0lISmxhbVZqZEZkdmNtdGxjaWtnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElITjBZWEowU1dSNElEMGdhV1I0SUNvZ1kyaDFibXRUYVhwbE8xeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElHVnVaRWxrZUNBOUlHbGtlQ0E5UFQwZ2RHaHBjeTVmZDI5eWEyVnlRMjkxYm5RZ0xTQXhJRDhnYldGMFUybDZaU0E2SUNocFpIZ2dLeUF4S1NBcUlHTm9kVzVyVTJsNlpUdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb1pXNWtTV1I0SUR3OUlITjBZWEowU1dSNEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WemIyeDJaVmR2Y210bGNpaDdhVG9nYm1WM0lFbHVkRE15UVhKeVlYa29NQ2tzSUdvNklHNWxkeUJKYm5Rek1rRnljbUY1S0RBcExDQmthWE4wWVc1alpUb2dibVYzSUVac2IyRjBNekpCY25KaGVTZ3dLU3dnYVdSNGZTazdYRzRnSUNBZ0lDQWdJQ0FnZDI5eWEyVnljMXRwWkhoZExuQnZjM1JOWlhOellXZGxLSHQyWVd4MVpYTXNJSE4wWVhKMFNXUjRMQ0JsYm1SSlpIZ3NJSFJvY21WemFHOXNaQ3dnWm01T1lXMWxjeXdnYjNCMGN5d2dkMlZwWjJoMGN5d2dZV2RuY21WbllYUnBiMjVOWlhSb2IyUjlLVHRjYmlBZ0lDQWdJQ0FnSUNCM2IzSnJaWEp6VzJsa2VGMHViMjV0WlhOellXZGxJRDBnS0h0a1lYUmhPaUI3WlhKeWIzSXNJR2tzSUdvc0lHUnBjM1JoYm1ObGZYMHBPaUIyYjJsa0lEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hsY25KdmNpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQjNiM0pyWlhKelcybGtlRjB1ZEdWeWJXbHVZWFJsS0NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGFtVmpkRmR2Y210bGNpaGxjbkp2Y2lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQjNiM0pyWlhKelcybGtlRjB1ZEdWeWJXbHVZWFJsS0NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGMyOXNkbVZYYjNKclpYSW9lMmtzSUdvc0lHUnBjM1JoYm1ObExDQnBaSGg5S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNCOU8xeHVJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnWTI5dWMzUWdjbVZ6ZFd4MGN5QTlJR0YzWVdsMElGQnliMjFwYzJVdVlXeHNLSEJ5YjIxcGMyVnpLVHRjYmlBZ0lDQWdJR052Ym5OMElHWjFiR3hUYVhwbElEMGdjbVZ6ZFd4MGN5NXlaV1IxWTJVb0tHRmpZeXdnZG1Gc0tTQTlQaUJoWTJNZ0t5QjJZV3d1YVM1c1pXNW5kR2dzSURBcE8xeHVJQ0FnSUNBZ1kyOXVjM1FnYVNBOUlHNWxkeUJKYm5Rek1rRnljbUY1S0daMWJHeFRhWHBsS1R0Y2JpQWdJQ0FnSUdOdmJuTjBJR29nUFNCdVpYY2dTVzUwTXpKQmNuSmhlU2htZFd4c1UybDZaU2s3WEc0Z0lDQWdJQ0JqYjI1emRDQmthWE4wWVc1alpTQTlJRzVsZHlCR2JHOWhkRE15UVhKeVlYa29ablZzYkZOcGVtVXBPMXh1SUNBZ0lDQWdiR1YwSUc5bVpuTmxkQ0E5SURBN1hHNGdJQ0FnSUNBdkx5QnpaWFIwYVc1bklIUm9aU0J5WlhOMWJIUnpYRzRnSUNBZ0lDQm1iM0lnS0dOdmJuTjBJSEpsY3lCdlppQnlaWE4xYkhSektTQjdYRzRnSUNBZ0lDQWdJR2t1YzJWMEtISmxjeTVwTENCdlptWnpaWFFwTzF4dUlDQWdJQ0FnSUNCcUxuTmxkQ2h5WlhNdWFpd2diMlptYzJWMEtUdGNiaUFnSUNBZ0lDQWdaR2x6ZEdGdVkyVXVjMlYwS0hKbGN5NWthWE4wWVc1alpTd2diMlptYzJWMEtUdGNiaUFnSUNBZ0lDQWdiMlptYzJWMElDczlJSEpsY3k1cExteGxibWQwYUR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhKbGRIVnliaUI3YVN3Z2Fpd2daR2x6ZEdGdVkyVjlPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIQjFZbXhwWXlCaGMzbHVZeUJqWVd4alBGUStLSFpoYkhWbGN6b2dRWEp5WVhrOFZENHNJR1p1VG1GdFpUb2dTMjV2ZDI1TlpYUnlhV056TENCMGFISmxjMmh2YkdRNklHNTFiV0psY2l3Z2IzQjBjem9nZTF0Zk9pQnpkSEpwYm1kZE9pQmhibmw5SUQwZ2UzMHBJSHRjYmlBZ0lDQWdJQzh2YzJsNlpTQnZaaUJtZFd4c0lHMWhkSEpwZUZ4dUlDQWdJQ0FnY21WMGRYSnVJR0YzWVdsMElIUm9hWE11WTJGc1kwMTFiSFJwUTI5c2RXMXVLRnQyWVd4MVpYTmRMQ0JiWm01T1lXMWxYU3dnZEdoeVpYTm9iMnhrTENCYmIzQjBjMTBzSUZzeFhTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NIVmliR2xqSUdGemVXNWpJR2RsZEV0T1RpaGNiaUFnSUNBZ0lIWmhiSFZsY3pvZ1FYSnlZWGs4WVc1NVBpd2dabTVPWVcxbE9pQkxibTkzYmsxbGRISnBZM01zSUc1T1pXbG5hR0p2ZFhKek9pQnVkVzFpWlhJZ1BTQXhOU3dnYjNCMGN6b2dlMXRmT2lCemRISnBibWRkT2lCaGJubDlJRDBnZTMxY2JpQWdJQ0FwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJoZDJGcGRDQjBhR2x6TG0xMWJIUnBRMjlzZFcxdVMwNU9LRnQyWVd4MVpYTmRMQ0JiWm01T1lXMWxYU3dnYms1bGFXZG9ZbTkxY25Nc0lGdHZjSFJ6WFN3Z1d6RmRLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQndkV0pzYVdNZ1lYTjVibU1nWjJWMFZHaHlaWE5vYjJ4a1MwNU9LRnh1SUNBZ0lDQWdkbUZzZFdWek9pQkJjbkpoZVR4aGJuaytMQ0JtYms1aGJXVTZJRXR1YjNkdVRXVjBjbWxqY3l3Z2RHaHlaWE5vYjJ4a09pQnVkVzFpWlhJZ1BTQXdMamdzSUc5d2RITTZJSHRiWHpvZ2MzUnlhVzVuWFRvZ1lXNTVmU0E5SUh0OVhHNGdJQ0FnS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnWVhkaGFYUWdkR2hwY3k1dGRXeDBhVU52YkhWdGJsUm9jbVZ6YUc5c1pFdHViaWhiZG1Gc2RXVnpYU3dnVzJadVRtRnRaVjBzSUhSb2NtVnphRzlzWkN3Z1cyOXdkSE5kTENCYk1WMHBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIQjFZbXhwWXlCaGMzbHVZeUJ0ZFd4MGFVTnZiSFZ0YmxSb2NtVnphRzlzWkV0dWJpaDJZV3gxWlhNNklFRnljbUY1UEVGeWNtRjVQR0Z1ZVQ0K0xDQm1iazVoYldWek9pQkxibTkzYmsxbGRISnBZM05iWFN3Z2RHaHlaWE5vYjJ4a09pQnVkVzFpWlhJZ1BTQXdMamdzWEc0Z0lDQWdJQ0J2Y0hSek9pQjdXMTg2SUhOMGNtbHVaMTA2SUdGdWVYMWJYU3dnZDJWcFoyaDBjem9nYm5WdFltVnlXMTBzWEc0Z0lDQWdJQ0JoWjJkeVpXZGhkR2x2YmsxbGRHaHZaRG9nUkdsemRHRnVZMlZCWjJkeVpXZGhkR2x2YmsxbGRHaHZaQ0E5SUVScGMzUmhibU5sUVdkbmNtVm5ZWFJwYjI1TlpYUm9iMlJ6TGtWVlEweEpSRVZCVGx4dUlDQWdJQ2tnZTF4dUlDQWdJQ0FnYVdZZ0tIWmhiSFZsY3k1c1pXNW5kR2dnSVQwOUlHWnVUbUZ0WlhNdWJHVnVaM1JvSUh4OElIWmhiSFZsY3k1c1pXNW5kR2dnSVQwOUlHOXdkSE11YkdWdVozUm9JSHg4SUhaaGJIVmxjeTVzWlc1bmRHZ2dJVDA5SUhkbGFXZG9kSE11YkdWdVozUm9LVnh1SUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KM1poYkhWbGN5d2daR2x6ZEdGdVkyVWdablZ1WTNScGIyNXpMQ0J2Y0hScGIyNXpJR0Z1WkNCM1pXbG5hSFJ6SUdGeWNtRjVjeUJ6YUc5MWJHUWdhR0YyWlNCMGFHVWdjMkZ0WlNCc1pXNW5kR2duS1R0Y2JseHVJQ0FnSUNBZ2FXWWdLSFpoYkhWbGN5NXpiMjFsS0NoMktTQTlQaUIyTG14bGJtZDBhQ0FoUFQwZ2RtRnNkV1Z6V3pCZExteGxibWQwYUNrcFhHNGdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnbllXeHNJSFpoYkhWbGN5QmhjbkpoZVhNZ2MyaHZkV3hrSUdoaGRtVWdkR2hsSUhOaGJXVWdiR1Z1WjNSb0p5azdYRzVjYmlBZ0lDQWdJR052Ym5OMElHMWhkRk5wZW1VZ1BTQjJZV3gxWlhOYk1GMHViR1Z1WjNSb0lDb2dLSFpoYkhWbGMxc3dYUzVzWlc1bmRHZ2dMU0F4S1NBdklESTdYRzRnSUNBZ0lDQmpiMjV6ZENCamFIVnVhMU5wZW1VZ1BTQk5ZWFJvTG1ac2IyOXlLRzFoZEZOcGVtVWdMeUIwYUdsekxsOTNiM0pyWlhKRGIzVnVkQ2s3WEc0Z0lDQWdJQ0JqYjI1emRDQndjbTl0YVhObGN5QTlYRzRnSUNBZ0lDQWdJRzVsZHlCQmNuSmhlVHhRY205dGFYTmxQRXR1YmxKbGMzVnNkRDQrS0hSb2FYTXVYM2R2Y210bGNrTnZkVzUwS1R0Y2JpQWdJQ0FnSUdOdmJuTjBJSGR2Y210bGNuTWdQU0J1WlhjZ1FYSnlZWGtvZEdocGN5NWZkMjl5YTJWeVEyOTFiblFwWEc0Z0lDQWdJQ0FnSUM1bWFXeHNLRzUxYkd3cExtMWhjQ2dvS1NBOVBpQnVaWGNnVjI5eWEyVnlLRzVsZHlCVlVrd29KeTR2YTI1dUxYUm9jbVZ6YUc5c1pDMTNiM0pyWlhJbkxDQnBiWEJ2Y25RdWJXVjBZUzUxY213cEtTazdYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQnBaSGdnUFNBd095QnBaSGdnUENCMGFHbHpMbDkzYjNKclpYSkRiM1Z1ZERzZ2FXUjRLeXNwSUh0Y2JpQWdJQ0FnSUNBZ2NISnZiV2x6WlhOYmFXUjRYU0E5SUc1bGR5QlFjbTl0YVhObEtDaHlaWE52YkhabFYyOXlhMlZ5TENCeVpXcGxZM1JYYjNKclpYSXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCemRHRnlkRWxrZUNBOUlHbGtlQ0FxSUdOb2RXNXJVMmw2WlR0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCbGJtUkpaSGdnUFNCcFpIZ2dQVDA5SUhSb2FYTXVYM2R2Y210bGNrTnZkVzUwSUMwZ01TQS9JRzFoZEZOcGVtVWdPaUFvYVdSNElDc2dNU2tnS2lCamFIVnVhMU5wZW1VN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0dWdVpFbGtlQ0E4UFNCemRHRnlkRWxrZUNsY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsYzI5c2RtVlhiM0pyWlhJb2UydHVia1JwYzNSaGJtTmxjem9nYm1WM0lFRnljbUY1S0RBcExDQnJibTVKYm1SbGVHVnpPaUJ1WlhjZ1FYSnlZWGtvTUNsOUtUdGNiaUFnSUNBZ0lDQWdJQ0IzYjNKclpYSnpXMmxrZUYwdWNHOXpkRTFsYzNOaFoyVW9lM1poYkhWbGN5d2djM1JoY25SSlpIZ3NJR1Z1WkVsa2VDd2dabTVPWVcxbGN5d2diM0IwY3l3Z2RHaHlaWE5vYjJ4a0xDQjNaV2xuYUhSekxDQmhaMmR5WldkaGRHbHZiazFsZEdodlpIMHBPMXh1SUNBZ0lDQWdJQ0FnSUhkdmNtdGxjbk5iYVdSNFhTNXZibTFsYzNOaFoyVWdQU0FvZTJSaGRHRTZJSHRsY25KdmNpd2dhMjV1UkdsemRHRnVZMlZ6TENCcmJtNUpibVJsZUdWemZYMHBPaUIyYjJsa0lEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hsY25KdmNpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQjNiM0pyWlhKelcybGtlRjB1ZEdWeWJXbHVZWFJsS0NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGFtVmpkRmR2Y210bGNpaGxjbkp2Y2lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQjNiM0pyWlhKelcybGtlRjB1ZEdWeWJXbHVZWFJsS0NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGMyOXNkbVZYYjNKclpYSW9lMnR1YmtScGMzUmhibU5sY3l3Z2EyNXVTVzVrWlhobGMzMHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJSDA3WEc0Z0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQmpiMjV6ZENCeVpYTjFiSFJ6SUQwZ1lYZGhhWFFnVUhKdmJXbHpaUzVoYkd3b2NISnZiV2x6WlhNcE8xeHVJQ0FnSUNBZ1kyOXVjM1FnYTI1dVUybDZaWE1nUFNCdVpYY2dTVzUwTXpKQmNuSmhlU2gyWVd4MVpYTmJNRjB1YkdWdVozUm9LVHRjYmlBZ0lDQWdJR1p2Y2lBb1kyOXVjM1FnY21WeklHOW1JSEpsYzNWc2RITXBJSHRjYmlBZ0lDQWdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCMllXeDFaWE5iTUYwdWJHVnVaM1JvT3lBcksya3BYRzRnSUNBZ0lDQWdJQ0FnYTI1dVUybDZaWE5iYVYwZ0t6MGdjbVZ6TG10dWJrbHVaR1Y0WlhOYmFWMC9MbXhsYm1kMGFDQS9QeUF3TzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnWTI5dWMzUWdhMjV1VW1Wek9pQkxibTVTWlhOMWJIUWdQU0I3WEc0Z0lDQWdJQ0FnSUd0dWJrUnBjM1JoYm1ObGN6b2dibVYzSUVGeWNtRjVLSFpoYkhWbGMxc3dYUzVzWlc1bmRHZ3BMbVpwYkd3b2JuVnNiQ2t1YldGd0tDaGZMQ0JwS1NBOVBpQnVaWGNnUVhKeVlYazhiblZ0WW1WeVBpaHJibTVUYVhwbGMxdHBYU2twTEZ4dUlDQWdJQ0FnSUNCcmJtNUpibVJsZUdWek9pQnVaWGNnUVhKeVlYa29kbUZzZFdWeld6QmRMbXhsYm1kMGFDa3VabWxzYkNodWRXeHNLUzV0WVhBb0tGOHNJR2twSUQwK0lHNWxkeUJCY25KaGVUeHVkVzFpWlhJK0tHdHVibE5wZW1WelcybGRLU2w5TzF4dUlDQWdJQ0FnWm05eUlDaGpiMjV6ZENCeVpYTWdiMllnY21WemRXeDBjeWtnZTF4dUlDQWdJQ0FnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElIWmhiSFZsYzFzd1hTNXNaVzVuZEdnN0lDc3JhU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHWnZjaUFvYkdWMElHb2dQU0F3T3lCcUlEd2djbVZ6TG10dWJrUnBjM1JoYm1ObGMxdHBYVDh1YkdWdVozUm9JRDgvSURBN0lDc3JhaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhMjV1VW1WekxtdHVia1JwYzNSaGJtTmxjMXRwWFZ0cmJtNVRhWHBsYzF0cFhTQXRJREZkSUQwZ2NtVnpMbXR1YmtScGMzUmhibU5sYzF0cFhWdHFYVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHdHVibEpsY3k1cmJtNUpibVJsZUdWelcybGRXMnR1YmxOcGVtVnpXMmxkSUMwZ01WMGdQU0J5WlhNdWEyNXVTVzVrWlhobGMxdHBYVnRxWFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3R1YmxOcGVtVnpXMmxkSUMwOUlERTdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYUjFjbTRnYTI1dVVtVnpPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIQjFZbXhwWXlCaGMzbHVZeUJ0ZFd4MGFVTnZiSFZ0Ymt0T1RpaDJZV3gxWlhNNklFRnljbUY1UEVGeWNtRjVQR0Z1ZVQ0K0xDQm1iazVoYldWek9pQkxibTkzYmsxbGRISnBZM05iWFN3Z2JrNWxhV2RvWW05MWNuTTZJRzUxYldKbGNpQTlJREUxTEZ4dUlDQWdJQ0FnYjNCMGN6b2dlMXRmT2lCemRISnBibWRkT2lCaGJubDlXMTBzSUhkbGFXZG9kSE02SUc1MWJXSmxjbHRkTEZ4dUlDQWdJQ0FnWVdkbmNtVm5ZWFJwYjI1TlpYUm9iMlE2SUVScGMzUmhibU5sUVdkbmNtVm5ZWFJwYjI1TlpYUm9iMlFnUFNCRWFYTjBZVzVqWlVGblozSmxaMkYwYVc5dVRXVjBhRzlrY3k1RlZVTk1TVVJGUVU1Y2JpQWdJQ0FwSUh0Y2JpQWdJQ0FnSUdsbUlDaDJZV3gxWlhNdWJHVnVaM1JvSUNFOVBTQm1iazVoYldWekxteGxibWQwYUNCOGZDQjJZV3gxWlhNdWJHVnVaM1JvSUNFOVBTQnZjSFJ6TG14bGJtZDBhQ0I4ZkNCMllXeDFaWE11YkdWdVozUm9JQ0U5UFNCM1pXbG5hSFJ6TG14bGJtZDBhQ2xjYmlBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLQ2QyWVd4MVpYTXNJR1JwYzNSaGJtTmxJR1oxYm1OMGFXOXVjeXdnYjNCMGFXOXVjeUJoYm1RZ2QyVnBaMmgwY3lCaGNuSmhlWE1nYzJodmRXeGtJR2hoZG1VZ2RHaGxJSE5oYldVZ2JHVnVaM1JvSnlrN1hHNWNiaUFnSUNBZ0lHbG1JQ2gyWVd4MVpYTXVjMjl0WlNnb2Rpa2dQVDRnZGk1c1pXNW5kR2dnSVQwOUlIWmhiSFZsYzFzd1hTNXNaVzVuZEdncEtWeHVJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0oyRnNiQ0IyWVd4MVpYTWdZWEp5WVhseklITm9iM1ZzWkNCb1lYWmxJSFJvWlNCellXMWxJR3hsYm1kMGFDY3BPMXh1WEc0Z0lDQWdJQ0JqYjI1emRDQnRZWFJUYVhwbElEMGdkbUZzZFdWeld6QmRMbXhsYm1kMGFDQXFJQ2gyWVd4MVpYTmJNRjB1YkdWdVozUm9JQzBnTVNrZ0x5QXlPMXh1SUNBZ0lDQWdZMjl1YzNRZ1kyaDFibXRUYVhwbElEMGdUV0YwYUM1bWJHOXZjaWh0WVhSVGFYcGxJQzhnZEdocGN5NWZkMjl5YTJWeVEyOTFiblFwTzF4dUlDQWdJQ0FnWTI5dWMzUWdjSEp2YldselpYTWdQVnh1SUNBZ0lDQWdJQ0J1WlhjZ1FYSnlZWGs4VUhKdmJXbHpaVHhMYm01U1pYTjFiSFErUGloMGFHbHpMbDkzYjNKclpYSkRiM1Z1ZENrN1hHNGdJQ0FnSUNCamIyNXpkQ0IzYjNKclpYSnpJRDBnYm1WM0lFRnljbUY1S0hSb2FYTXVYM2R2Y210bGNrTnZkVzUwS1Z4dUlDQWdJQ0FnSUNBdVptbHNiQ2h1ZFd4c0tTNXRZWEFvS0NrZ1BUNGdibVYzSUZkdmNtdGxjaWh1WlhjZ1ZWSk1LQ2N1TDJ0dWJpMTNiM0pyWlhJbkxDQnBiWEJ2Y25RdWJXVjBZUzUxY213cEtTazdYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQnBaSGdnUFNBd095QnBaSGdnUENCMGFHbHpMbDkzYjNKclpYSkRiM1Z1ZERzZ2FXUjRLeXNwSUh0Y2JpQWdJQ0FnSUNBZ2NISnZiV2x6WlhOYmFXUjRYU0E5SUc1bGR5QlFjbTl0YVhObEtDaHlaWE52YkhabFYyOXlhMlZ5TENCeVpXcGxZM1JYYjNKclpYSXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCemRHRnlkRWxrZUNBOUlHbGtlQ0FxSUdOb2RXNXJVMmw2WlR0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCbGJtUkpaSGdnUFNCcFpIZ2dQVDA5SUhSb2FYTXVYM2R2Y210bGNrTnZkVzUwSUMwZ01TQS9JRzFoZEZOcGVtVWdPaUFvYVdSNElDc2dNU2tnS2lCamFIVnVhMU5wZW1VN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0dWdVpFbGtlQ0E4UFNCemRHRnlkRWxrZUNsY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsYzI5c2RtVlhiM0pyWlhJb2UydHVia1JwYzNSaGJtTmxjem9nYm1WM0lFRnljbUY1S0RBcExDQnJibTVKYm1SbGVHVnpPaUJ1WlhjZ1FYSnlZWGtvTUNsOUtUdGNiaUFnSUNBZ0lDQWdJQ0IzYjNKclpYSnpXMmxrZUYwdWNHOXpkRTFsYzNOaFoyVW9lM1poYkhWbGN5d2djM1JoY25SSlpIZ3NJR1Z1WkVsa2VDd2dabTVPWVcxbGN5d2diM0IwY3l3Z2JrNWxhV2RvWW05MWNuTXNJSGRsYVdkb2RITXNJR0ZuWjNKbFoyRjBhVzl1VFdWMGFHOWtmU2s3WEc0Z0lDQWdJQ0FnSUNBZ2QyOXlhMlZ5YzF0cFpIaGRMbTl1YldWemMyRm5aU0E5SUNoN1pHRjBZVG9nZTJWeWNtOXlMQ0JyYm01RWFYTjBZVzVqWlhNc0lHdHVia2x1WkdWNFpYTjlmU2s2SUhadmFXUWdQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dWeWNtOXlLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSGR2Y210bGNuTmJhV1I0WFM1MFpYSnRhVzVoZEdVb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NtVnFaV04wVjI5eWEyVnlLR1Z5Y205eUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSGR2Y210bGNuTmJhV1I0WFM1MFpYSnRhVzVoZEdVb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NtVnpiMngyWlZkdmNtdGxjaWg3YTI1dVJHbHpkR0Z1WTJWekxDQnJibTVKYm1SbGVHVnpmU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnZlR0Y2JpQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR052Ym5OMElISmxjM1ZzZEhNZ1BTQmhkMkZwZENCUWNtOXRhWE5sTG1Gc2JDaHdjbTl0YVhObGN5azdYRzRnSUNBZ0lDQmpiMjV6ZENCcmJtNVNaWE02SUV0dWJsSmxjM1ZzZENBOUlIdGNiaUFnSUNBZ0lDQWdhMjV1UkdsemRHRnVZMlZ6T2lCdVpYY2dRWEp5WVhrb2RtRnNkV1Z6V3pCZExteGxibWQwYUNrdVptbHNiQ2h1ZFd4c0tTNXRZWEFvS0NrZ1BUNGdibVYzSUVGeWNtRjVQRzUxYldKbGNqNG9iazVsYVdkb1ltOTFjbk1wTG1acGJHd29PVGs1T1RrcEtTeGNiaUFnSUNBZ0lDQWdhMjV1U1c1a1pYaGxjem9nYm1WM0lFRnljbUY1S0haaGJIVmxjMXN3WFM1c1pXNW5kR2dwTG1acGJHd29iblZzYkNrdWJXRndLQ2dwSUQwK0lHNWxkeUJCY25KaGVUeHVkVzFpWlhJK0tHNU9aV2xuYUdKdmRYSnpLUzVtYVd4c0tDMHhLU2w5TzF4dUlDQWdJQ0FnWm05eUlDaGpiMjV6ZENCeVpYTWdiMllnY21WemRXeDBjeWtnZTF4dUlDQWdJQ0FnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElIWmhiSFZsYzFzd1hTNXNaVzVuZEdnN0lDc3JhU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHWnZjaUFvYkdWMElHb2dQU0F3T3lCcUlEd2djbVZ6TG10dWJrUnBjM1JoYm1ObGMxdHBYVDh1YkdWdVozUm9JRDgvSURBN0lDc3JhaWxjYmlBZ0lDQWdJQ0FnSUNBZ0lHbHVjMlZ5ZEZOdFlXeHNaWElvYTI1dVVtVnpMbXR1YmtScGMzUmhibU5sYzF0cFhTd2dhMjV1VW1WekxtdHVia2x1WkdWNFpYTmJhVjBzSUhKbGN5NXJibTVFYVhOMFlXNWpaWE5iYVYxYmFsMHNJSEpsY3k1cmJtNUpibVJsZUdWelcybGRXMnBkS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NtVjBkWEp1SUd0dWJsSmxjenRjYmlBZ0lDQjlYRzVjYmlBZ0lDQndkV0pzYVdNZ1lYTjVibU1nWjJWMFUyRnRjR3hsUkdsemRHRnVZMlZ6S0haaGJIVmxjem9nUVhKeVlYazhZVzU1VzEwK0xGeHVJQ0FnSUNBZ1ptNU9ZVzFsY3pvZ1MyNXZkMjVOWlhSeWFXTnpXMTBzSUc5d2RITTZJSHRiWHpvZ2MzUnlhVzVuWFRvZ1lXNTVmVnRkSUQwZ1cxMHNJSGRsYVdkb2RITTZJRzUxYldKbGNsdGRMRnh1SUNBZ0lDQWdZV2RuY21WbllYUnBiMjVOWlhSb2IyUTZJRVJwYzNSaGJtTmxRV2RuY21WbllYUnBiMjVOWlhSb2IyUWdQU0JFYVhOMFlXNWpaVUZuWjNKbFoyRjBhVzl1VFdWMGFHOWtjeTVGVlVOTVNVUkZRVTRwT2lCUWNtOXRhWE5sUEVac2IyRjBNekpCY25KaGVUNGdlMXh1SUNBZ0lDQWdZMjl1YzNRZ2RHaHlaWE5vYjJ4a1YyOXlhMlZ5Y3lBOUlHNWxkeUJCY25KaGVTaDBhR2x6TGw5M2IzSnJaWEpEYjNWdWRDa3VabWxzYkNodWRXeHNLVnh1SUNBZ0lDQWdJQ0F1YldGd0tDZ3BJRDArSUc1bGR5QlhiM0pyWlhJb2JtVjNJRlZTVENnbkxpOXpjR0Z5YzJVdGJXRjBjbWw0TFhSb2NtVnphRzlzWkMxM2IzSnJaWEluTENCcGJYQnZjblF1YldWMFlTNTFjbXdwS1NrN1hHNWNiaUFnSUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJRzFoZEZOcGVtVWdQU0IyWVd4MVpYTmJNRjB1YkdWdVozUm9JQ29nS0haaGJIVmxjMXN3WFM1c1pXNW5kR2dnTFNBeEtTQXZJREk3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR05vZFc1clUybDZaU0E5SUUxaGRHZ3VabXh2YjNJb2JXRjBVMmw2WlNBdklIUm9hWE11WDNkdmNtdGxja052ZFc1MEtUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2JXRjRVMkZ0Y0d4bFUybDZaU0E5SURGZk1EQXdYekF3TUR0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYzJGdGNHeGxVMmx6WlNBOUlFMWhkR2d1YldGNEtFMWhkR2d1YldsdUtHMWhkRk5wZW1VZ0x5QXhNREF3TENCdFlYaFRZVzF3YkdWVGFYcGxLU3dnVFdGMGFDNXRhVzRvYldGMFUybDZaU3dnYldGNFUyRnRjR3hsVTJsNlpTa3BPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQjBaWE4wVTJWMFUybDZaVkJsY2xkdmNtdGxjaUE5SUUxaGRHZ3VabXh2YjNJb2MyRnRjR3hsVTJselpTQXZJSFJvYVhNdVgzZHZjbXRsY2tOdmRXNTBLVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdkRkJ5YjIxcGMyVnpJRDBnYm1WM0lFRnljbUY1UEZCeWIyMXBjMlU4ZTJScGMzUmhibU5sT2lCR2JHOWhkRE15UVhKeVlYbDlQajRvZEdocGN5NWZkMjl5YTJWeVEyOTFiblFwTzF4dVhHNGdJQ0FnSUNBZ0lHWnZjaUFvYkdWMElHbGtlQ0E5SURBN0lHbGtlQ0E4SUhSb2FYTXVYM2R2Y210bGNrTnZkVzUwT3lCcFpIZ3JLeWtnZTF4dUlDQWdJQ0FnSUNBZ0lIUlFjbTl0YVhObGMxdHBaSGhkSUQwZ2JtVjNJRkJ5YjIxcGMyVW9LSEpsYzI5c2RtVlhiM0pyWlhJc0lISmxhbVZqZEZkdmNtdGxjaWtnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdjM1JoY25SSlpIZ2dQU0JwWkhnZ0tpQmphSFZ1YTFOcGVtVTdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JsYm1SSlpIZ2dQU0JwWkhnZ1BUMDlJSFJvYVhNdVgzZHZjbXRsY2tOdmRXNTBJQzBnTVNBL0lHMWhkRk5wZW1VZ09pQW9hV1I0SUNzZ01Ta2dLaUJqYUhWdWExTnBlbVU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhSEpsYzJodmJHUlhiM0pyWlhKelcybGtlRjB1Y0c5emRFMWxjM05oWjJVb2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCMllXeDFaWE02SUhaaGJIVmxjeXdnYzNSaGNuUkpaSGdzSUdWdVpFbGtlQ3dnYzJGdGNHeGxUR1Z1WjNSb09pQjBaWE4wVTJWMFUybDZaVkJsY2xkdmNtdGxjaXhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdabTVPWVcxbGN5d2diM0IwY3l3Z2QyVnBaMmgwY3l3Z1lXZG5jbVZuWVhScGIyNU5aWFJvYjJSY2JpQWdJQ0FnSUNBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2h5WlhOb2IyeGtWMjl5YTJWeWMxdHBaSGhkTG05dWJXVnpjMkZuWlNBOUlDaDdaR0YwWVRvZ2UyVnljbTl5TENCa2FYTjBZVzVqWlgxOUtUb2dkbTlwWkNBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9jbVZ6YUc5c1pGZHZjbXRsY25OYmFXUjRYUzUwWlhKdGFXNWhkR1VvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHVnljbTl5S1NCeVpXcGxZM1JYYjNKclpYSW9aWEp5YjNJcE95QmxiSE5sWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WemIyeDJaVmR2Y210bGNpaDdaR2x6ZEdGdVkyVjlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMDdYRzRnSUNBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0JqYjI1emRDQnlaWE4xYkhSeklEMGdZWGRoYVhRZ1VISnZiV2x6WlM1aGJHd29kRkJ5YjIxcGMyVnpLVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdablZzYkZOcGVtVWdQU0J5WlhOMWJIUnpMbkpsWkhWalpTZ29ZV05qTENCMllXd3BJRDArSUdGall5QXJJSFpoYkM1a2FYTjBZVzVqWlM1c1pXNW5kR2dzSURBcE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCa2FYTjBZVzVqWlNBOUlHNWxkeUJHYkc5aGRETXlRWEp5WVhrb1puVnNiRk5wZW1VcE8xeHVJQ0FnSUNBZ0lDQnNaWFFnYjJabWMyVjBJRDBnTUR0Y2JpQWdJQ0FnSUNBZ1ptOXlJQ2hqYjI1emRDQnlaWE1nYjJZZ2NtVnpkV3gwY3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJR1JwYzNSaGJtTmxMbk5sZENoeVpYTXVaR2x6ZEdGdVkyVXNJRzltWm5ObGRDazdYRzRnSUNBZ0lDQWdJQ0FnYjJabWMyVjBJQ3M5SUhKbGN5NWthWE4wWVc1alpTNXNaVzVuZEdnN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdaR2x6ZEdGdVkyVXVjMjl5ZENncE8xeHVYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmthWE4wWVc1alpUdGNiaUFnSUNBZ0lIMGdZMkYwWTJnZ0tHVXBJSHRjYmlBZ0lDQWdJQ0FnZEdoeVpYTm9iMnhrVjI5eWEyVnljejh1Wm05eVJXRmphQ2dvZHlrZ1BUNGdkejh1ZEdWeWJXbHVZWFJsS0NrcE8xeHVJQ0FnSUNBZ0lDQmpiMjV6YjJ4bExtVnljbTl5S0dVcE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2JtVjNJRVpzYjJGME16SkJjbkpoZVNneEtTNW1hV3hzS0RBdU5TazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NISnBkbUYwWlNCaGMzbHVZeUJuWlhSTmFXNXBiV0ZzVkdoeVpYTm9iMnhrS0haaGJIVmxjem9nUVhKeVlYazhZVzU1VzEwK0xGeHVJQ0FnSUNBZ1ptNU9ZVzFsY3pvZ1MyNXZkMjVOWlhSeWFXTnpXMTBzSUc5d2RITTZJSHRiWHpvZ2MzUnlhVzVuWFRvZ1lXNTVmVnRkSUQwZ1cxMHNJSGRsYVdkb2RITTZJRzUxYldKbGNsdGRMRnh1SUNBZ0lDQWdZV2RuY21WbllYUnBiMjVOWlhSb2IyUTZJRVJwYzNSaGJtTmxRV2RuY21WbllYUnBiMjVOWlhSb2IyUWdQU0JFYVhOMFlXNWpaVUZuWjNKbFoyRjBhVzl1VFdWMGFHOWtjeTVGVlVOTVNVUkZRVTRwSUh0Y2JpQWdJQ0FnSUM4dlYyVWdibVZsWkNCMGJ5QmpZV3hqZFd4aGRHVWdkR2hsSUcxcGJtbHRZV3dnZEdoeVpYTm9iMnhrSUdacGNuTjBMRnh1SUNBZ0lDQWdMeTlwYmlCdmNtUmxjaUIwYnlCblpYUWdiV0YwY21sNElITjFZMmdnZEdoaGRDQnBkQ0JrYjJWeklHNXZkQ0JsZUdObFpXUWdkR2hsSUcxaGVHbHRkVzBnYzJsNlpTQnZaaUF4UjBKY2JpQWdJQ0FnSUM4dmQyVWdhR0YyWlNBeklISmxkSFZ5YmlCaGNuSmhlWE1zSUdWaFkyZ2dOQ0JpYVhSbGN5QndaWElnWld4bGJXVnVkQ3dnYzI4Z2FXWWdkR2hsSUcxaGVHbHRkVzBnYzJsNlpTQnZaaUIwYUdVZ2JXRjBjbWw0SUdseklERkhRaXhjYmlBZ0lDQWdJR052Ym5OMElHMWhlRk53WVhKelpVMWhkSEpwZUZOcGVtVWdQU0EzTUY4d01EQmZNREF3TzF4dUlDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2JXRjBVMmw2WlNBOUlIWmhiSFZsY3k1c1pXNW5kR2dnS2lBb2RtRnNkV1Z6TG14bGJtZDBhQ0F0SURFcElDOGdNanRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdaR2x6ZEdGdVkyVWdQU0JoZDJGcGRDQjBhR2x6TG1kbGRGTmhiWEJzWlVScGMzUmhibU5sY3loMllXeDFaWE1zSUdadVRtRnRaWE1zSUc5d2RITXNJSGRsYVdkb2RITXNJR0ZuWjNKbFoyRjBhVzl1VFdWMGFHOWtLVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdabkpoWTNScGIyNUpibVJsZUNBOUlFMWhkR2d1Wm14dmIzSW9iV0Y0VTNCaGNuTmxUV0YwY21sNFUybDZaU0F2SUcxaGRGTnBlbVVnS2lCa2FYTjBZVzVqWlM1c1pXNW5kR2dwTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0IwYUhKbGMyaHZiR1FnUFNBeElDMGdaR2x6ZEdGdVkyVmJabkpoWTNScGIyNUpibVJsZUYwN1hHNGdJQ0FnSUNBZ0lDOHZJSFJvY21WemFHOXNaQ0E5SUUxaGRHZ3ViV0Y0S0hSb2NtVnphRzlzWkN3Z01DNHpLVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvY21WemFHOXNaRHRjYmlBZ0lDQWdJSDBnWTJGMFkyZ2dLR1VwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjMjlzWlM1bGNuSnZjaWhsS1R0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SURBdU5UdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCd2RXSnNhV01nYzNSaGRHbGpJR05oYkdOVGVXNWpQRlErS0Z4dUlDQWdJQ0FnZG1Gc2RXVnpPaUJCY25KaGVUeFVQaUI4SUVGeWNtRjVUR2xyWlR4VVBpd2dabTVPWVcxbE9pQkxibTkzYmsxbGRISnBZM01zSUdScGMzUmhibU5sUm00NklFWjFibU4wYVc5dUxDQjBhSEpsYzJodmJHUTZJRzUxYldKbGNseHVJQ0FnSUNrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYVRvZ2JuVnRZbVZ5VzEwZ1BTQmJYVHRjYmlBZ0lDQWdJR052Ym5OMElHbzZJRzUxYldKbGNsdGRJRDBnVzEwN1hHNGdJQ0FnSUNCamIyNXpkQ0JrYVhOMFlXNWpaWE02SUc1MWJXSmxjbHRkSUQwZ1cxMDdYRzRnSUNBZ0lDQnNaWFFnWTI1MElEMGdNRHRjYmlBZ0lDQWdJR3hsZENCdGFTQTlJREE3WEc0Z0lDQWdJQ0JzWlhRZ2JXb2dQU0F3TzF4dUlDQWdJQ0FnWTI5dWMzUWdablZzYkZOcGVtVWdQU0IyWVd4MVpYTXViR1Z1WjNSb0lDb2dLSFpoYkhWbGN5NXNaVzVuZEdnZ0xTQXhLU0F2SURJN1hHNGdJQ0FnSUNCM2FHbHNaU0FvWTI1MElEd2dablZzYkZOcGVtVXBJSHRjYmlBZ0lDQWdJQ0FnTHk5amIyNXpkQ0IyWVd4MVpTQTlJSE5sY1RGTWFYTjBXMjFwWFNBbUppQnpaWEV4VEdsemRGdHRhbDBnUHlCb1lXMXRhVzVuS0hObGNURk1hWE4wVzIxcFhTd2djMlZ4TVV4cGMzUmJiV3BkS1NBNklEQTdYRzRnSUNBZ0lDQWdJR052Ym5OMElIWmhiSFZsSUQwZ0lXbHpUbWxzS0haaGJIVmxjMXR0YVYwcElDWW1JQ0ZwYzA1cGJDaDJZV3gxWlhOYmJXcGRLU0EvWEc0Z0lDQWdJQ0FnSUNBZ1pHbHpkR0Z1WTJWR2JpaDJZV3gxWlhOYmJXbGRMQ0IyWVd4MVpYTmJiV3BkS1NBNklERTdYRzRnSUNBZ0lDQWdJR052Ym5OMElITnBiV2xzWVhKcGRIa2dQU0F4SUMwZ2RtRnNkV1U3WEc0Z0lDQWdJQ0FnSUdsbUlDaHphVzFwYkdGeWFYUjVJRDQ5SUhSb2NtVnphRzlzWkNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2t1Y0hWemFDaHRhU2s3WEc0Z0lDQWdJQ0FnSUNBZ2FpNXdkWE5vS0cxcUtUdGNiaUFnSUNBZ0lDQWdJQ0JrYVhOMFlXNWpaWE11Y0hWemFDaDJZV3gxWlNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdZMjUwS3lzN1hHNGdJQ0FnSUNBZ0lHMXFLeXM3WEc0Z0lDQWdJQ0FnSUdsbUlDaHRhaUE5UFQwZ2RtRnNkV1Z6TG14bGJtZDBhQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHMXBLeXM3WEc0Z0lDQWdJQ0FnSUNBZ2JXb2dQU0J0YVNBcklERTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnWTI5dWMzUWdhVUZ5Y21GNUlEMGdibVYzSUVsdWRETXlRWEp5WVhrb2FTazdYRzRnSUNBZ0lDQmpiMjV6ZENCcVFYSnlZWGtnUFNCdVpYY2dTVzUwTXpKQmNuSmhlU2hxS1R0Y2JpQWdJQ0FnSUdOdmJuTjBJR1JwYzNSaGJtTmxRWEp5WVhrZ1BTQnVaWGNnUm14dllYUXpNa0Z5Y21GNUtHUnBjM1JoYm1ObGN5azdYRzVjYmlBZ0lDQWdJSEpsZEhWeWJpQjdhVG9nYVVGeWNtRjVMQ0JxT2lCcVFYSnlZWGtzSUdScGMzUmhibU5sT2lCa2FYTjBZVzVqWlVGeWNtRjVmVHRjYmlBZ0lDQjlYRzU5WEc0aVhYMD0iLCJleHBvcnQgdmFyIERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzO1xuKGZ1bmN0aW9uIChEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kcykge1xuICAgIERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzW1wiRVVDTElERUFOXCJdID0gXCJFVUNMSURFQU5cIjtcbiAgICBEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kc1tcIk1BTkhBVFRBTlwiXSA9IFwiTUFOSEFUVEFOXCI7XG59KShEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kcyB8fCAoRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHMgPSB7fSkpO1xuO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEhsd1pYTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKMGVYQmxjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFTeE5RVUZOTEVOQlFVNHNTVUZCV1N3d1FrRkhWRHRCUVVoSUxGZEJRVmtzTUVKQlFUQkNPMGxCUTJ4RExIRkVRVUYxUWl4RFFVRkJPMGxCUTNaQ0xIRkVRVUYxUWl4RFFVRkJPMEZCUTNwQ0xFTkJRVU1zUlVGSVV5d3dRa0ZCTUVJc1MwRkJNVUlzTUVKQlFUQkNMRkZCUjI1RE8wRkJRVUVzUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbVY0Y0c5eWRDQmxiblZ0SUVScGMzUmhibU5sUVdkbmNtVm5ZWFJwYjI1TlpYUm9iMlJ6SUh0Y2JpQWdJQ0JGVlVOTVNVUkZRVTRnUFNBblJWVkRURWxFUlVGT0p5eGNiaUFnSUNCTlFVNUlRVlJVUVU0Z1BTQW5UVUZPU0VGVVZFRk9KeXhjYmlBZ2ZUdGNibHh1Wlhod2IzSjBJSFI1Y0dVZ1JHbHpkR0Z1WTJWQloyZHlaV2RoZEdsdmJrMWxkR2h2WkNBOUlHdGxlVzltSUhSNWNHVnZaaUJFYVhOMFlXNWpaVUZuWjNKbFoyRjBhVzl1VFdWMGFHOWtjenRjYmlKZGZRPT0iXSwibmFtZXMiOlsiU3BhcnNlTWF0cml4U2VydmljZSIsImNvbnN0cnVjdG9yIiwidGhpcyIsIl93b3JrZXJDb3VudCIsIk1hdGgiLCJtYXgiLCJuYXZpZ2F0b3IiLCJoYXJkd2FyZUNvbmN1cnJlbmN5IiwiYXN5bmMiLCJ2YWx1ZXMiLCJmbk5hbWVzIiwidGhyZXNob2xkIiwib3B0cyIsIndlaWdodHMiLCJhZ2dyZWdhdGlvbk1ldGhvZCIsIm1hdFNpemUiLCJsZW5ndGgiLCJjaHVua1NpemUiLCJmbG9vciIsIm1pblRocmVzaG9sZCIsImdldE1pbmltYWxUaHJlc2hvbGQiLCJjb25zb2xlIiwibG9nIiwiZm9yRWFjaCIsIl8iLCJpIiwicHJvbWlzZXMiLCJBcnJheSIsIndvcmtlcnMiLCJmaWxsIiwibWFwIiwiV29ya2VyIiwiVVJMIiwiaWR4IiwiUHJvbWlzZSIsInJlc29sdmVXb3JrZXIiLCJyZWplY3RXb3JrZXIiLCJzdGFydElkeCIsImVuZElkeCIsIkludDMyQXJyYXkiLCJqIiwiZGlzdGFuY2UiLCJGbG9hdDMyQXJyYXkiLCJwb3N0TWVzc2FnZSIsIm9ubWVzc2FnZSIsImRhdGEiLCJlcnJvciIsInRlcm1pbmF0ZSIsInJlc3VsdHMiLCJhbGwiLCJmdWxsU2l6ZSIsInJlZHVjZSIsImFjYyIsInZhbCIsIm9mZnNldCIsInJlcyIsInNldCIsImZuTmFtZSIsImNhbGNNdWx0aUNvbHVtbiIsIm5OZWlnaGJvdXJzIiwibXVsdGlDb2x1bW5LTk4iLCJtdWx0aUNvbHVtblRocmVzaG9sZEtubiIsIkVycm9yIiwic29tZSIsInYiLCJrbm5EaXN0YW5jZXMiLCJrbm5JbmRleGVzIiwia25uU2l6ZXMiLCJrbm5SZXMiLCJ0aHJlc2hvbGRXb3JrZXJzIiwibWF4U2FtcGxlU2l6ZSIsInNhbXBsZVNpc2UiLCJtaW4iLCJ0ZXN0U2V0U2l6ZVBlcldvcmtlciIsInRQcm9taXNlcyIsInNhbXBsZUxlbmd0aCIsInNvcnQiLCJlIiwidyIsImdldFNhbXBsZURpc3RhbmNlcyIsInN0YXRpYyIsImRpc3RhbmNlRm4iLCJkaXN0YW5jZXMiLCJjbnQiLCJtaSIsIm1qIiwidmFsdWUiLCJwdXNoIiwiRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHMiXSwic291cmNlUm9vdCI6IiJ9
|
package/dist/65.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var eda;(()=>{"use strict";var e,r,t={3065:(e,r,t)=>{var a=t(7862);const n=e=>null==e;var o=t(6361),s=t(9657);onmessage=e=>{const{values:r,fnNames:t,startRow:i,startCol:c,chunckSize:l,opts:p,weights:u,aggregationMethod:f}=e.data,h={};try{let e=i,g=c,v=0,d=0,m=Number.MIN_VALUE;const w=function(e,r){return e===a.y.MANHATTAN?e=>e.reduce(((e,t,a)=>e+t*r[a]),0):e=>{const t=e.reduce(((e,t,a)=>e+(t*r[a])**2),0);return Math.sqrt(t)}}(f,u);r.forEach(((e,a)=>{if((0,o.sQ)(t[a]))for(let t=0;t<e.length;++t)n(e[t])||(r[a][t]=new s.Z(r[a][t]._data,r[a][t]._length))}));const b=new Array(t.length).fill(null).map(((e,r)=>new o.UH(t[r]).getMeasure(p[r]))),y=new Float32Array(l);for(;v<l;){const t=b.map(((t,a)=>n(r[a][e])||n(r[a][g])?1:t(r[a][e],r[a][g]))),a=1===t.length?t[0]:w(t);y[v]=a,a<d&&(d=a),a>m&&(m=a),v++,g++,g===r[0].length&&(e++,g=e+1)}h.distanceMatrixData=y,h.min=d,h.max=m}catch(e){h.error=e}postMessage(h)}}},a={};function n(e){var r=a[e];if(void 0!==r)return r.exports;var o=a[e]={exports:{}};return t[e](o,o.exports,n),o.exports}n.m=t,n.x=()=>{var e=n.O(void 0,[36,413],(()=>n(3065)));return n.O(e)},e=[],n.O=(r,t,a,o)=>{if(!t){var s=1/0;for(p=0;p<e.length;p++){for(var[t,a,o]=e[p],i=!0,c=0;c<t.length;c++)(!1&o||s>=o)&&Object.keys(n.O).every((e=>n.O[e](t[c])))?t.splice(c--,1):(i=!1,o<s&&(s=o));if(i){e.splice(p--,1);var l=a();void 0!==l&&(r=l)}}return r}o=o||0;for(var p=e.length;p>0&&e[p-1][2]>o;p--)e[p]=e[p-1];e[p]=[t,a,o]},n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>e+".js",n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),(()=>{var e;n.g.importScripts&&(e=n.g.location+"");var r=n.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var a=t.length-1;a>-1&&!e;)e=t[a--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e})(),(()=>{var e={65:1};n.f.i=(r,t)=>{e[r]||importScripts(n.p+n.u(r))};var r=self.webpackChunkeda=self.webpackChunkeda||[],t=r.push.bind(r);r.push=r=>{var[a,o,s]=r;for(var i in o)n.o(o,i)&&(n.m[i]=o[i]);for(s&&s(n);a.length;)e[a.pop()]=1;t(r)}})(),r=n.x,n.x=()=>Promise.all([n.e(36),n.e(413)]).then(r);var o=n.x();eda=o})();
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QyxLQUFzQixnQkFBSUEsS0FBc0IsaUJBQUssR0FDMUVDLEVBQTZCRixFQUFtQkcsS0FBS0MsS0FBS0osR0FDOURBLEVBQW1CRyxLQXZCQ3ZHLElBQ25CLElBQUt1RCxFQUFVa0QsRUFBYUMsR0FBVzFHLEVBQ3ZDLElBQUksSUFBSTZDLEtBQVk0RCxFQUNoQjdELEVBQW9Cd0IsRUFBRXFDLEVBQWE1RCxLQUNyQ0QsRUFBb0JPLEVBQUVOLEdBQVk0RCxFQUFZNUQsSUFJaEQsSUFERzZELEdBQVNBLEVBQVE5RCxHQUNkVyxFQUFTakMsUUFDZDZFLEVBQWdCNUMsRUFBU29ELE9BQVMsRUFDbkNMLEVBQTJCdEcsRUFBSyxDLEtWbkI3QmIsRUFBT3lELEVBQW9CdkQsRUFDL0J1RCxFQUFvQnZELEVBQUksSUFDaEJxRixRQUFRQyxJQUFJLENBQ2xCL0IsRUFBb0JKLEVBQUUsSUFDdEJJLEVBQW9CSixFQUFFLE9BQ3BCb0UsS0FBS3pILEdXSlQsSUFBSWlFLEVBQXNCUixFQUFvQnZELEkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2NodW5rIGxvYWRlZCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL3N0YXJ0dXAgY2h1bmsgZGVwZW5kZW5jaWVzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9kaXN0YW5jZS1tYXRyaXgvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL2Rpc3RhbmNlLW1hdHJpeC9kaXN0YW5jZS1tYXRyaXgtd29ya2VyLmpzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZW5zdXJlIGNodW5rIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgY2h1bmsgZmlsZW5hbWUiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9wdWJsaWNQYXRoIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZmVycmVkID0gW107XG5fX3dlYnBhY2tfcmVxdWlyZV9fLk8gPSAocmVzdWx0LCBjaHVua0lkcywgZm4sIHByaW9yaXR5KSA9PiB7XG5cdGlmKGNodW5rSWRzKSB7XG5cdFx0cHJpb3JpdHkgPSBwcmlvcml0eSB8fCAwO1xuXHRcdGZvcih2YXIgaSA9IGRlZmVycmVkLmxlbmd0aDsgaSA+IDAgJiYgZGVmZXJyZWRbaSAtIDFdWzJdID4gcHJpb3JpdHk7IGktLSkgZGVmZXJyZWRbaV0gPSBkZWZlcnJlZFtpIC0gMV07XG5cdFx0ZGVmZXJyZWRbaV0gPSBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV07XG5cdFx0cmV0dXJuO1xuXHR9XG5cdHZhciBub3RGdWxmaWxsZWQgPSBJbmZpbml0eTtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkZWZlcnJlZC5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV0gPSBkZWZlcnJlZFtpXTtcblx0XHR2YXIgZnVsZmlsbGVkID0gdHJ1ZTtcblx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGNodW5rSWRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRpZiAoKHByaW9yaXR5ICYgMSA9PT0gMCB8fCBub3RGdWxmaWxsZWQgPj0gcHJpb3JpdHkpICYmIE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uTykuZXZlcnkoKGtleSkgPT4gKF9fd2VicGFja19yZXF1aXJlX18uT1trZXldKGNodW5rSWRzW2pdKSkpKSB7XG5cdFx0XHRcdGNodW5rSWRzLnNwbGljZShqLS0sIDEpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZnVsZmlsbGVkID0gZmFsc2U7XG5cdFx0XHRcdGlmKHByaW9yaXR5IDwgbm90RnVsZmlsbGVkKSBub3RGdWxmaWxsZWQgPSBwcmlvcml0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYoZnVsZmlsbGVkKSB7XG5cdFx0XHRkZWZlcnJlZC5zcGxpY2UoaS0tLCAxKVxuXHRcdFx0dmFyIHIgPSBmbigpO1xuXHRcdFx0aWYgKHIgIT09IHVuZGVmaW5lZCkgcmVzdWx0ID0gcjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07IiwidmFyIG5leHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLng7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdHJldHVybiBQcm9taXNlLmFsbChbXG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5lKDM2KSxcblx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmUoNDEzKVxuXHRdKS50aGVuKG5leHQpO1xufTsiLCJpbXBvcnQgeyBEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kcyB9IGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0IGNvbnN0IGlzTmlsID0gKHgpID0+IHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkO1xuZXhwb3J0IGZ1bmN0aW9uIGluc2VydFNtYWxsZXIoZGlzdGFuY2VzQXIsIGluZGV4ZXMsIG51bSwgaW5kZXgpIHtcbiAgICBpZiAobnVtID4gZGlzdGFuY2VzQXJbZGlzdGFuY2VzQXIubGVuZ3RoIC0gMV0pXG4gICAgICAgIHJldHVybjtcbiAgICBjb25zdCBuZXdQb3NpdGlvbiA9IGRpc3RhbmNlc0FyLmZpbmRJbmRleCgodikgPT4gbnVtIDwgdik7XG4gICAgZGlzdGFuY2VzQXIucG9wKCk7XG4gICAgZGlzdGFuY2VzQXIuc3BsaWNlKG5ld1Bvc2l0aW9uLCAwLCBudW0pO1xuICAgIGluZGV4ZXMucG9wKCk7XG4gICAgaW5kZXhlcy5zcGxpY2UobmV3UG9zaXRpb24sIDAsIGluZGV4KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRMYXJnZXIoZGlzdGFuY2VzQXIsIGluZGV4ZXMsIG51bSwgaW5kZXgpIHtcbiAgICBpZiAobnVtIDwgZGlzdGFuY2VzQXJbZGlzdGFuY2VzQXIubGVuZ3RoIC0gMV0pXG4gICAgICAgIHJldHVybjtcbiAgICBjb25zdCBuZXdQb3NpdGlvbiA9IGRpc3RhbmNlc0FyLmZpbmRJbmRleCgodikgPT4gbnVtID4gdik7XG4gICAgZGlzdGFuY2VzQXIucG9wKCk7XG4gICAgZGlzdGFuY2VzQXIuc3BsaWNlKG5ld1Bvc2l0aW9uLCAwLCBudW0pO1xuICAgIGluZGV4ZXMucG9wKCk7XG4gICAgaW5kZXhlcy5zcGxpY2UobmV3UG9zaXRpb24sIDAsIGluZGV4KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZ2dyZWdhdGlvbkZ1bmN0aW9uKGFnZ3JlZ2F0aW9uTWV0aG9kLCB3ZWlnaHRzKSB7XG4gICAgc3dpdGNoIChhZ2dyZWdhdGlvbk1ldGhvZCkge1xuICAgICAgICBjYXNlIERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzLk1BTkhBVFRBTjpcbiAgICAgICAgICAgIHJldHVybiAodnMpID0+IHZzLnJlZHVjZSgoYWNjLCB2YWwsIGlkeCkgPT4gYWNjICsgdmFsICogd2VpZ2h0c1tpZHhdLCAwKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiAodnMpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBldWNsaWRlYW5cbiAgICAgICAgICAgICAgICBjb25zdCBzdW0gPSB2cy5yZWR1Y2UoKGFjYywgdmFsLCBpZHgpID0+IGFjYyArICh2YWwgKiB3ZWlnaHRzW2lkeF0pICoqIDIsIDApO1xuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnNxcnQoc3VtKTtcbiAgICAgICAgICAgIH07XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZFhScGJITXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKMWRHbHNjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFTeFBRVUZQTEVWQlFUUkNMREJDUVVFd1FpeEZRVUZETEUxQlFVMHNVMEZCVXl4RFFVRkRPMEZCUlRsRkxFMUJRVTBzUTBGQlF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVsQlFVa3NTVUZCU1N4RFFVRkRMRXRCUVVzc1UwRkJVeXhEUVVGRE8wRkJSUzlFTEUxQlFVMHNWVUZCVlN4aFFVRmhMRU5CUVVNc1YwRkJjVUlzUlVGQlJTeFBRVUZwUWl4RlFVRkZMRWRCUVZjc1JVRkJSU3hMUVVGaE8wbEJRMmhITEVsQlFVa3NSMEZCUnl4SFFVRkhMRmRCUVZjc1EwRkJReXhYUVVGWExFTkJRVU1zVFVGQlRTeEhRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjZReXhQUVVGUE8wbEJSVlFzVFVGQlRTeFhRVUZYTEVkQlFVY3NWMEZCVnl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRekZFTEZkQlFWY3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRKUVVOc1FpeFhRVUZYTEVOQlFVTXNUVUZCVFN4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEZUVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETzBsQlEyUXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUTNoRExFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNXVUZCV1N4RFFVRkRMRmRCUVhGQ0xFVkJRVVVzVDBGQmFVSXNSVUZCUlN4SFFVRlhMRVZCUVVVc1MwRkJZVHRKUVVNdlJpeEpRVUZKTEVkQlFVY3NSMEZCUnl4WFFVRlhMRU5CUVVNc1YwRkJWeXhEUVVGRExFMUJRVTBzUjBGQlF5eERRVUZETEVOQlFVTTdVVUZEZWtNc1QwRkJUenRKUVVWVUxFMUJRVTBzVjBGQlZ5eEhRVUZITEZkQlFWY3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVNeFJDeFhRVUZYTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRiRUlzVjBGQlZ5eERRVUZETEUxQlFVMHNRMEZCUXl4WFFVRlhMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEzaERMRTlCUVU4c1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dEpRVU5rTEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1YwRkJWeXhGUVVGRkxFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTjRReXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEhOQ1FVRnpRaXhEUVVOd1F5eHBRa0ZCTkVNc1JVRkJSU3hQUVVGcFFqdEpRVVV2UkN4UlFVRlJMR2xDUVVGcFFpeEZRVUZGTzFGQlEzcENMRXRCUVVzc01FSkJRVEJDTEVOQlFVTXNVMEZCVXp0WlFVTjJReXhQUVVGUExFTkJRVU1zUlVGQldTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1JVRkJSU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVkQlFVY3NUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzSkdPMWxCUTBVc1QwRkJUeXhEUVVGRExFVkJRVmtzUlVGQlJTeEZRVUZGTzJkQ1FVTjBRaXhaUVVGWk8yZENRVU5hTEUxQlFVMHNSMEZCUnl4SFFVRkhMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNSMEZCUnl4SFFVRkhMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRE4wVXNUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEzaENMRU5CUVVNc1EwRkJRenRMUVVOTU8wRkJRMGdzUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdSR2x6ZEdGdVkyVkJaMmR5WldkaGRHbHZiazFsZEdodlpDd2dSR2x6ZEdGdVkyVkJaMmR5WldkaGRHbHZiazFsZEdodlpITjlJR1p5YjIwZ0p5NHZkSGx3WlhNbk8xeHVYRzVsZUhCdmNuUWdZMjl1YzNRZ2FYTk9hV3dnUFNBb2VEb2dZVzU1S1NBOVBpQjRJRDA5UFNCdWRXeHNJSHg4SUhnZ1BUMDlJSFZ1WkdWbWFXNWxaRHRjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdsdWMyVnlkRk50WVd4c1pYSW9aR2x6ZEdGdVkyVnpRWEk2SUc1MWJXSmxjbHRkTENCcGJtUmxlR1Z6T2lCdWRXMWlaWEpiWFN3Z2JuVnRPaUJ1ZFcxaVpYSXNJR2x1WkdWNE9pQnVkVzFpWlhJcElIdGNiaUFnYVdZZ0tHNTFiU0ErSUdScGMzUmhibU5sYzBGeVcyUnBjM1JoYm1ObGMwRnlMbXhsYm1kMGFDMHhYU2xjYmlBZ0lDQnlaWFIxY200N1hHNWNiaUFnWTI5dWMzUWdibVYzVUc5emFYUnBiMjRnUFNCa2FYTjBZVzVqWlhOQmNpNW1hVzVrU1c1a1pYZ29LSFlwSUQwK0lHNTFiU0E4SUhZcE8xeHVJQ0JrYVhOMFlXNWpaWE5CY2k1d2IzQW9LVHRjYmlBZ1pHbHpkR0Z1WTJWelFYSXVjM0JzYVdObEtHNWxkMUJ2YzJsMGFXOXVMQ0F3TENCdWRXMHBPMXh1SUNCcGJtUmxlR1Z6TG5CdmNDZ3BPMXh1SUNCcGJtUmxlR1Z6TG5Od2JHbGpaU2h1WlhkUWIzTnBkR2x2Yml3Z01Dd2dhVzVrWlhncE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYVc1elpYSjBUR0Z5WjJWeUtHUnBjM1JoYm1ObGMwRnlPaUJ1ZFcxaVpYSmJYU3dnYVc1a1pYaGxjem9nYm5WdFltVnlXMTBzSUc1MWJUb2diblZ0WW1WeUxDQnBibVJsZURvZ2JuVnRZbVZ5S1NCN1hHNGdJR2xtSUNodWRXMGdQQ0JrYVhOMFlXNWpaWE5CY2x0a2FYTjBZVzVqWlhOQmNpNXNaVzVuZEdndE1WMHBYRzRnSUNBZ2NtVjBkWEp1TzF4dVhHNGdJR052Ym5OMElHNWxkMUJ2YzJsMGFXOXVJRDBnWkdsemRHRnVZMlZ6UVhJdVptbHVaRWx1WkdWNEtDaDJLU0E5UGlCdWRXMGdQaUIyS1R0Y2JpQWdaR2x6ZEdGdVkyVnpRWEl1Y0c5d0tDazdYRzRnSUdScGMzUmhibU5sYzBGeUxuTndiR2xqWlNodVpYZFFiM05wZEdsdmJpd2dNQ3dnYm5WdEtUdGNiaUFnYVc1a1pYaGxjeTV3YjNBb0tUdGNiaUFnYVc1a1pYaGxjeTV6Y0d4cFkyVW9ibVYzVUc5emFYUnBiMjRzSURBc0lHbHVaR1Y0S1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2RsZEVGblozSmxaMkYwYVc5dVJuVnVZM1JwYjI0b1hHNGdJR0ZuWjNKbFoyRjBhVzl1VFdWMGFHOWtPaUJFYVhOMFlXNWpaVUZuWjNKbFoyRjBhVzl1VFdWMGFHOWtMQ0IzWldsbmFIUnpPaUJ1ZFcxaVpYSmJYVnh1S1RvZ0tIWmhiSFZsY3pvZ2JuVnRZbVZ5VzEwcElEMCtJRzUxYldKbGNpQjdYRzRnSUhOM2FYUmphQ0FvWVdkbmNtVm5ZWFJwYjI1TlpYUm9iMlFwSUh0Y2JpQWdJQ0JqWVhObElFUnBjM1JoYm1ObFFXZG5jbVZuWVhScGIyNU5aWFJvYjJSekxrMUJUa2hCVkZSQlRqcGNiaUFnSUNBZ0lISmxkSFZ5YmlBb2RuTTZJRzUxYldKbGNsdGRLU0E5UGlCMmN5NXlaV1IxWTJVb0tHRmpZeXdnZG1Gc0xDQnBaSGdwSUQwK0lHRmpZeUFySUhaaGJDQXFJSGRsYVdkb2RITmJhV1I0WFN3Z01DazdYRzRnSUNBZ1pHVm1ZWFZzZERwY2JpQWdJQ0FnSUhKbGRIVnliaUFvZG5NNklHNTFiV0psY2x0ZEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUM4dklHVjFZMnhwWkdWaGJseHVJQ0FnSUNBZ0lDQmpiMjV6ZENCemRXMGdQU0IyY3k1eVpXUjFZMlVvS0dGall5d2dkbUZzTENCcFpIZ3BJRDArSUdGall5QXJJQ2gyWVd3Z0tpQjNaV2xuYUhSelcybGtlRjBwSUNvcUlESXNJREFwTzF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnVFdGMGFDNXpjWEowS0hOMWJTazdYRzRnSUNBZ0lDQjlPMXh1SUNCOVhHNTlYRzRpWFgwPSIsImltcG9ydCB7IGdldEFnZ3JlZ2F0aW9uRnVuY3Rpb24sIGlzTmlsIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBNZWFzdXJlLCBpc0JpdEFycmF5TWV0cmljIH0gZnJvbSAnLi4vdHlwZWQtbWV0cmljcyc7XG5pbXBvcnQgQml0QXJyYXkgZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvYml0LWFycmF5Jztcbm9ubWVzc2FnZSA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWVzLCBmbk5hbWVzLCBzdGFydFJvdywgc3RhcnRDb2wsIGNodW5ja1NpemUsIG9wdHMsIHdlaWdodHMsIGFnZ3JlZ2F0aW9uTWV0aG9kIH0gPSBldmVudC5kYXRhO1xuICAgIGNvbnN0IGRhdGEgPSB7fTtcbiAgICB0cnkge1xuICAgICAgICAvLyBpZiAoc3RhcnRSb3cgIT0gLTEpXG4gICAgICAgIC8vICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciBpbiBkaXN0YW5jZSBtYXRyaXggd29ya2VyJyk7IC8vIFRPRE86IHJlbW92ZSB0aGlzIGxpbmVcbiAgICAgICAgbGV0IGkgPSBzdGFydFJvdztcbiAgICAgICAgbGV0IGogPSBzdGFydENvbDtcbiAgICAgICAgbGV0IGNudCA9IDA7XG4gICAgICAgIGxldCBsbWluID0gMDtcbiAgICAgICAgbGV0IGxtYXggPSBOdW1iZXIuTUlOX1ZBTFVFO1xuICAgICAgICBjb25zdCBhZ2dyZWdhdGUgPSBnZXRBZ2dyZWdhdGlvbkZ1bmN0aW9uKGFnZ3JlZ2F0aW9uTWV0aG9kLCB3ZWlnaHRzKTtcbiAgICAgICAgdmFsdWVzLmZvckVhY2goKHYsIGNvbElkeCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzQml0QXJyYXlNZXRyaWMoZm5OYW1lc1tjb2xJZHhdKSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IG1pID0gMDsgbWkgPCB2Lmxlbmd0aDsgKyttaSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNOaWwodlttaV0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlc1tjb2xJZHhdW21pXSA9IG5ldyBCaXRBcnJheSh2YWx1ZXNbY29sSWR4XVttaV0uX2RhdGEsIHZhbHVlc1tjb2xJZHhdW21pXS5fbGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBkaXN0YW5jZUZucyA9IG5ldyBBcnJheShmbk5hbWVzLmxlbmd0aClcbiAgICAgICAgICAgIC5maWxsKG51bGwpXG4gICAgICAgICAgICAubWFwKChfLCBkaSkgPT4gbmV3IE1lYXN1cmUoZm5OYW1lc1tkaV0pLmdldE1lYXN1cmUob3B0c1tkaV0pKTtcbiAgICAgICAgY29uc3QgcmV0VmFsID0gbmV3IEZsb2F0MzJBcnJheShjaHVuY2tTaXplKTtcbiAgICAgICAgd2hpbGUgKGNudCA8IGNodW5ja1NpemUpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlVmFsdWVzID0gZGlzdGFuY2VGbnMubWFwKChmbiwgaWR4KSA9PiAhaXNOaWwodmFsdWVzW2lkeF1baV0pICYmICFpc05pbCh2YWx1ZXNbaWR4XVtqXSkgP1xuICAgICAgICAgICAgICAgIGZuKHZhbHVlc1tpZHhdW2ldLCB2YWx1ZXNbaWR4XVtqXSkgOiAxKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZGlzdGFuY2VWYWx1ZXMubGVuZ3RoID09PSAxID8gZGlzdGFuY2VWYWx1ZXNbMF0gOiBhZ2dyZWdhdGUoZGlzdGFuY2VWYWx1ZXMpO1xuICAgICAgICAgICAgcmV0VmFsW2NudF0gPSB2YWx1ZTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA8IGxtaW4pXG4gICAgICAgICAgICAgICAgbG1pbiA9IHZhbHVlO1xuICAgICAgICAgICAgaWYgKHZhbHVlID4gbG1heClcbiAgICAgICAgICAgICAgICBsbWF4ID0gdmFsdWU7XG4gICAgICAgICAgICBjbnQrKztcbiAgICAgICAgICAgIGorKztcbiAgICAgICAgICAgIGlmIChqID09PSB2YWx1ZXNbMF0ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIGogPSBpICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkYXRhLmRpc3RhbmNlTWF0cml4RGF0YSA9IHJldFZhbDtcbiAgICAgICAgZGF0YS5taW4gPSBsbWluO1xuICAgICAgICBkYXRhLm1heCA9IGxtYXg7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGRhdGEuZXJyb3IgPSBlO1xuICAgIH1cbiAgICBwb3N0TWVzc2FnZShkYXRhKTtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laR2x6ZEdGdVkyVXRiV0YwY21sNExYZHZjbXRsY2k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbVJwYzNSaGJtTmxMVzFoZEhKcGVDMTNiM0pyWlhJdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUVzVDBGQlR5eEZRVUZETEhOQ1FVRnpRaXhGUVVGRkxFdEJRVXNzUlVGQlF5eE5RVUZOTEZOQlFWTXNRMEZCUXp0QlFVTjBSQ3hQUVVGUExFVkJRV1VzVDBGQlR5eEZRVUZGTEdkQ1FVRm5RaXhGUVVGRExFMUJRVTBzYTBKQlFXdENMRU5CUVVNN1FVRkRla1VzVDBGQlR5eFJRVUZSTEUxQlFVMHNlVU5CUVhsRExFTkJRVU03UVVGSEwwUXNVMEZCVXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhGUVVGRkxFVkJRVVU3U1VGRGNFSXNUVUZCVFN4RlFVRkRMRTFCUVUwc1JVRkJSU3hQUVVGUExFVkJRVVVzVVVGQlVTeEZRVUZGTEZGQlFWRXNSVUZCUlN4VlFVRlZMRVZCUVVVc1NVRkJTU3hGUVVGRkxFOUJRVThzUlVGQlJTeHBRa0ZCYVVJc1JVRkJReXhIUVVkeVJpeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRPMGxCUTJZc1RVRkJUU3hKUVVGSkxFZEJRV3RHTEVWQlFVVXNRMEZCUXp0SlFVTXZSaXhKUVVGSk8xRkJRMFlzYzBKQlFYTkNPMUZCUTNSQ0xHdEdRVUZyUmp0UlFVTnNSaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eFJRVUZSTEVOQlFVTTdVVUZEYWtJc1NVRkJTU3hEUVVGRExFZEJRVWNzVVVGQlVTeERRVUZETzFGQlEycENMRWxCUVVrc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5hTEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOaUxFbEJRVWtzU1VGQlNTeEhRVUZITEUxQlFVMHNRMEZCUXl4VFFVRlRMRU5CUVVNN1VVRkROVUlzVFVGQlRTeFRRVUZUTEVkQlFVY3NjMEpCUVhOQ0xFTkJRVU1zYVVKQlFXbENMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGRGNrVXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeE5RVUZOTEVWQlFVVXNSVUZCUlR0WlFVTXpRaXhKUVVGSkxHZENRVUZuUWl4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eEZRVUZGTzJkQ1FVTnlReXhMUVVGTExFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEVWQlFVVXNSVUZCUlR0dlFrRkRjRU1zU1VGQlNTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8zZENRVUZGTEZOQlFWTTdiMEpCUXpOQ0xFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0cFFrRkRla1k3WVVGRFJqdFJRVU5JTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTBnc1RVRkJUU3hYUVVGWExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJRenRoUVVNeFF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRPMkZCUTFZc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1NVRkJTU3hQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRha1VzVFVGQlRTeE5RVUZOTEVkQlFVY3NTVUZCU1N4WlFVRlpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03VVVGRE5VTXNUMEZCVHl4SFFVRkhMRWRCUVVjc1ZVRkJWU3hGUVVGRk8xbEJRM1pDTEUxQlFVMHNZMEZCWXl4SFFVRkhMRmRCUVZjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNSMEZCUnl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOd1J5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVNeFF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4alFVRmpMRU5CUVVNc1RVRkJUU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFRRVUZUTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNN1dVRkRNVVlzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJRenRaUVVOd1FpeEpRVUZKTEV0QlFVc3NSMEZCUnl4SlFVRkpPMmRDUVVOa0xFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTTdXVUZEWml4SlFVRkpMRXRCUVVzc1IwRkJSeXhKUVVGSk8yZENRVU5rTEVsQlFVa3NSMEZCUnl4TFFVRkxMRU5CUVVNN1dVRkRaaXhIUVVGSExFVkJRVVVzUTBGQlF6dFpRVU5PTEVOQlFVTXNSVUZCUlN4RFFVRkRPMWxCUTBvc1NVRkJTU3hEUVVGRExFdEJRVXNzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJSVHRuUWtGRE1VSXNRMEZCUXl4RlFVRkZMRU5CUVVNN1owSkJRMG9zUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1lVRkRXRHRUUVVOR08xRkJRMFFzU1VGQlNTeERRVUZETEd0Q1FVRnJRaXhIUVVGSExFMUJRVTBzUTBGQlF6dFJRVU5xUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU5vUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF6dExRVU5xUWp0SlFVRkRMRTlCUVU4c1EwRkJReXhGUVVGRk8xRkJRMVlzU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNN1MwRkRhRUk3U1VGRFJDeFhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1FVRkRjRUlzUTBGQlF5eERRVUZESWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUh0blpYUkJaMmR5WldkaGRHbHZia1oxYm1OMGFXOXVMQ0JwYzA1cGJIMGdabkp2YlNBbkxpOTFkR2xzY3ljN1hHNXBiWEJ2Y25RZ2UwdHViM2R1VFdWMGNtbGpjeXdnVFdWaGMzVnlaU3dnYVhOQ2FYUkJjbkpoZVUxbGRISnBZMzBnWm5KdmJTQW5MaTR2ZEhsd1pXUXRiV1YwY21samN5YzdYRzVwYlhCdmNuUWdRbWwwUVhKeVlYa2dabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZZbWwwTFdGeWNtRjVKenRjYm1sdGNHOXlkQ0I3UkdsemRHRnVZMlZCWjJkeVpXZGhkR2x2YmsxbGRHaHZaSDBnWm5KdmJTQW5MaTkwZVhCbGN5YzdYRzVjYm05dWJXVnpjMkZuWlNBOUlDaGxkbVZ1ZENrZ1BUNGdlMXh1SUNCamIyNXpkQ0I3ZG1Gc2RXVnpMQ0JtYms1aGJXVnpMQ0J6ZEdGeWRGSnZkeXdnYzNSaGNuUkRiMndzSUdOb2RXNWphMU5wZW1Vc0lHOXdkSE1zSUhkbGFXZG9kSE1zSUdGblozSmxaMkYwYVc5dVRXVjBhRzlrZlRvZ2UxeHVJQ0FnSUhaaGJIVmxjem9nWVc1NVcxMWJYU3dnWm01T1lXMWxjem9nUzI1dmQyNU5aWFJ5YVdOelcxMHNJSE4wWVhKMFVtOTNPaUJ1ZFcxaVpYSXNJSE4wWVhKMFEyOXNPaUJ1ZFcxaVpYSXNJR05vZFc1amExTnBlbVU2SUc1MWJXSmxjaXhjYmlBZ0lDQnZjSFJ6T2lCN1cxODZJSE4wY21sdVoxMDZJR0Z1ZVgxYlhTd2dkMlZwWjJoMGN6b2diblZ0WW1WeVcxMHNJR0ZuWjNKbFoyRjBhVzl1VFdWMGFHOWtPaUJFYVhOMFlXNWpaVUZuWjNKbFoyRjBhVzl1VFdWMGFHOWtMRnh1SUNCOUlEMGdaWFpsYm5RdVpHRjBZVHRjYmlBZ1kyOXVjM1FnWkdGMFlUb2dleUJsY25KdmNqODZJR0Z1ZVN3Z1pHbHpkR0Z1WTJWTllYUnlhWGhFWVhSaFB6b2dSbXh2WVhRek1rRnljbUY1TENCdGFXNC9PaUJ1ZFcxaVpYSXNJRzFoZUQ4NklHNTFiV0psY24wZ1BTQjdmVHRjYmlBZ2RISjVJSHRjYmlBZ0lDQXZMeUJwWmlBb2MzUmhjblJTYjNjZ0lUMGdMVEVwWEc0Z0lDQWdMeThnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjBWeWNtOXlJR2x1SUdScGMzUmhibU5sSUcxaGRISnBlQ0IzYjNKclpYSW5LVHNnTHk4Z1ZFOUVUem9nY21WdGIzWmxJSFJvYVhNZ2JHbHVaVnh1SUNBZ0lHeGxkQ0JwSUQwZ2MzUmhjblJTYjNjN1hHNGdJQ0FnYkdWMElHb2dQU0J6ZEdGeWRFTnZiRHRjYmlBZ0lDQnNaWFFnWTI1MElEMGdNRHRjYmlBZ0lDQnNaWFFnYkcxcGJpQTlJREE3WEc0Z0lDQWdiR1YwSUd4dFlYZ2dQU0JPZFcxaVpYSXVUVWxPWDFaQlRGVkZPMXh1SUNBZ0lHTnZibk4wSUdGblozSmxaMkYwWlNBOUlHZGxkRUZuWjNKbFoyRjBhVzl1Um5WdVkzUnBiMjRvWVdkbmNtVm5ZWFJwYjI1TlpYUm9iMlFzSUhkbGFXZG9kSE1wTzF4dUlDQWdJSFpoYkhWbGN5NW1iM0pGWVdOb0tDaDJMQ0JqYjJ4SlpIZ3BJRDArSUh0Y2JpQWdJQ0FnSUdsbUlDaHBjMEpwZEVGeWNtRjVUV1YwY21saktHWnVUbUZ0WlhOYlkyOXNTV1I0WFNrcElIdGNiaUFnSUNBZ0lDQWdabTl5SUNoc1pYUWdiV2tnUFNBd095QnRhU0E4SUhZdWJHVnVaM1JvT3lBcksyMXBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLR2x6VG1sc0tIWmJiV2xkS1NrZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnSUNBZ0lDQWdkbUZzZFdWelcyTnZiRWxrZUYxYmJXbGRJRDBnYm1WM0lFSnBkRUZ5Y21GNUtIWmhiSFZsYzF0amIyeEpaSGhkVzIxcFhTNWZaR0YwWVN3Z2RtRnNkV1Z6VzJOdmJFbGtlRjFiYldsZExsOXNaVzVuZEdncE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTazdYRzRnSUNBZ1kyOXVjM1FnWkdsemRHRnVZMlZHYm5NZ1BTQnVaWGNnUVhKeVlYa29abTVPWVcxbGN5NXNaVzVuZEdncFhHNGdJQ0FnSUNBdVptbHNiQ2h1ZFd4c0tWeHVJQ0FnSUNBZ0xtMWhjQ2dvWHl3Z1pHa3BJRDArSUc1bGR5Qk5aV0Z6ZFhKbEtHWnVUbUZ0WlhOYlpHbGRLUzVuWlhSTlpXRnpkWEpsS0c5d2RITmJaR2xkS1NrN1hHNGdJQ0FnWTI5dWMzUWdjbVYwVm1Gc0lEMGdibVYzSUVac2IyRjBNekpCY25KaGVTaGphSFZ1WTJ0VGFYcGxLVHRjYmlBZ0lDQjNhR2xzWlNBb1kyNTBJRHdnWTJoMWJtTnJVMmw2WlNrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWkdsemRHRnVZMlZXWVd4MVpYTWdQU0JrYVhOMFlXNWpaVVp1Y3k1dFlYQW9LR1p1TENCcFpIZ3BJRDArSUNGcGMwNXBiQ2gyWVd4MVpYTmJhV1I0WFZ0cFhTa2dKaVlnSVdselRtbHNLSFpoYkhWbGMxdHBaSGhkVzJwZEtTQS9YRzRnSUNBZ0lDQWdJR1p1S0haaGJIVmxjMXRwWkhoZFcybGRMQ0IyWVd4MVpYTmJhV1I0WFZ0cVhTa2dPaUF4S1R0Y2JpQWdJQ0FnSUdOdmJuTjBJSFpoYkhWbElEMGdaR2x6ZEdGdVkyVldZV3gxWlhNdWJHVnVaM1JvSUQwOVBTQXhJRDhnWkdsemRHRnVZMlZXWVd4MVpYTmJNRjBnT2lCaFoyZHlaV2RoZEdVb1pHbHpkR0Z1WTJWV1lXeDFaWE1wTzF4dUlDQWdJQ0FnY21WMFZtRnNXMk51ZEYwZ1BTQjJZV3gxWlR0Y2JpQWdJQ0FnSUdsbUlDaDJZV3gxWlNBOElHeHRhVzRwWEc0Z0lDQWdJQ0FnSUd4dGFXNGdQU0IyWVd4MVpUdGNiaUFnSUNBZ0lHbG1JQ2gyWVd4MVpTQStJR3h0WVhncFhHNGdJQ0FnSUNBZ0lHeHRZWGdnUFNCMllXeDFaVHRjYmlBZ0lDQWdJR051ZENzck8xeHVJQ0FnSUNBZ2Fpc3JPMXh1SUNBZ0lDQWdhV1lnS0dvZ1BUMDlJSFpoYkhWbGMxc3dYUzVzWlc1bmRHZ3BJSHRjYmlBZ0lDQWdJQ0FnYVNzck8xeHVJQ0FnSUNBZ0lDQnFJRDBnYVNBcklERTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUdSaGRHRXVaR2x6ZEdGdVkyVk5ZWFJ5YVhoRVlYUmhJRDBnY21WMFZtRnNPMXh1SUNBZ0lHUmhkR0V1YldsdUlEMGdiRzFwYmp0Y2JpQWdJQ0JrWVhSaExtMWhlQ0E5SUd4dFlYZzdYRzRnSUgwZ1kyRjBZMmdnS0dVcElIdGNiaUFnSUNCa1lYUmhMbVZ5Y205eUlEMGdaVHRjYmlBZ2ZWeHVJQ0J3YjNOMFRXVnpjMkZuWlNoa1lYUmhLVHRjYm4wN1hHNGlYWDA9IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4vLyB0aGUgc3RhcnR1cCBmdW5jdGlvblxuX193ZWJwYWNrX3JlcXVpcmVfXy54ID0gKCkgPT4ge1xuXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcblx0Ly8gVGhpcyBlbnRyeSBtb2R1bGUgZGVwZW5kcyBvbiBvdGhlciBsb2FkZWQgY2h1bmtzIGFuZCBleGVjdXRpb24gbmVlZCB0byBiZSBkZWxheWVkXG5cdHZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy5PKHVuZGVmaW5lZCwgWzM2LDQxM10sICgpID0+IChfX3dlYnBhY2tfcmVxdWlyZV9fKDMwNjUpKSlcblx0X193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18uTyhfX3dlYnBhY2tfZXhwb3J0c19fKTtcblx0cmV0dXJuIF9fd2VicGFja19leHBvcnRzX187XG59O1xuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmYgPSB7fTtcbi8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbi8vIFRoZSBjaHVuayBsb2FkaW5nIGZ1bmN0aW9uIGZvciBhZGRpdGlvbmFsIGNodW5rc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5lID0gKGNodW5rSWQpID0+IHtcblx0cmV0dXJuIFByb21pc2UuYWxsKE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uZikucmVkdWNlKChwcm9taXNlcywga2V5KSA9PiB7XG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mW2tleV0oY2h1bmtJZCwgcHJvbWlzZXMpO1xuXHRcdHJldHVybiBwcm9taXNlcztcblx0fSwgW10pKTtcbn07IiwiLy8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzIGFuZCBzaWJsaW5nIGNodW5rcyBmb3IgdGhlIGVudHJ5cG9pbnRcbl9fd2VicGFja19yZXF1aXJlX18udSA9IChjaHVua0lkKSA9PiB7XG5cdC8vIHJldHVybiB1cmwgZm9yIGZpbGVuYW1lcyBiYXNlZCBvbiB0ZW1wbGF0ZVxuXHRyZXR1cm4gXCJcIiArIGNodW5rSWQgKyBcIi5qc1wiO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCJ2YXIgc2NyaXB0VXJsO1xuaWYgKF9fd2VicGFja19yZXF1aXJlX18uZy5pbXBvcnRTY3JpcHRzKSBzY3JpcHRVcmwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcubG9jYXRpb24gKyBcIlwiO1xudmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmRvY3VtZW50O1xuaWYgKCFzY3JpcHRVcmwgJiYgZG9jdW1lbnQpIHtcblx0aWYgKGRvY3VtZW50LmN1cnJlbnRTY3JpcHQpXG5cdFx0c2NyaXB0VXJsID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM7XG5cdGlmICghc2NyaXB0VXJsKSB7XG5cdFx0dmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKTtcblx0XHRpZihzY3JpcHRzLmxlbmd0aCkge1xuXHRcdFx0dmFyIGkgPSBzY3JpcHRzLmxlbmd0aCAtIDE7XG5cdFx0XHR3aGlsZSAoaSA+IC0xICYmICFzY3JpcHRVcmwpIHNjcmlwdFVybCA9IHNjcmlwdHNbaS0tXS5zcmM7XG5cdFx0fVxuXHR9XG59XG4vLyBXaGVuIHN1cHBvcnRpbmcgYnJvd3NlcnMgd2hlcmUgYW4gYXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCB5b3UgbXVzdCBzcGVjaWZ5IGFuIG91dHB1dC5wdWJsaWNQYXRoIG1hbnVhbGx5IHZpYSBjb25maWd1cmF0aW9uXG4vLyBvciBwYXNzIGFuIGVtcHR5IHN0cmluZyAoXCJcIikgYW5kIHNldCB0aGUgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gdmFyaWFibGUgZnJvbSB5b3VyIGNvZGUgdG8gdXNlIHlvdXIgb3duIGxvZ2ljLlxuaWYgKCFzY3JpcHRVcmwpIHRocm93IG5ldyBFcnJvcihcIkF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCIpO1xuc2NyaXB0VXJsID0gc2NyaXB0VXJsLnJlcGxhY2UoLyMuKiQvLCBcIlwiKS5yZXBsYWNlKC9cXD8uKiQvLCBcIlwiKS5yZXBsYWNlKC9cXC9bXlxcL10rJC8sIFwiL1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18ucCA9IHNjcmlwdFVybDsiLCIvLyBubyBiYXNlVVJJXG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgY2h1bmtzXG4vLyBcIjFcIiBtZWFucyBcImFscmVhZHkgbG9hZGVkXCJcbnZhciBpbnN0YWxsZWRDaHVua3MgPSB7XG5cdDY1OiAxXG59O1xuXG4vLyBpbXBvcnRTY3JpcHRzIGNodW5rIGxvYWRpbmdcbnZhciBpbnN0YWxsQ2h1bmsgPSAoZGF0YSkgPT4ge1xuXHR2YXIgW2NodW5rSWRzLCBtb3JlTW9kdWxlcywgcnVudGltZV0gPSBkYXRhO1xuXHRmb3IodmFyIG1vZHVsZUlkIGluIG1vcmVNb2R1bGVzKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1vcmVNb2R1bGVzLCBtb2R1bGVJZCkpIHtcblx0XHRcdF9fd2VicGFja19yZXF1aXJlX18ubVttb2R1bGVJZF0gPSBtb3JlTW9kdWxlc1ttb2R1bGVJZF07XG5cdFx0fVxuXHR9XG5cdGlmKHJ1bnRpbWUpIHJ1bnRpbWUoX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cdHdoaWxlKGNodW5rSWRzLmxlbmd0aClcblx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZHMucG9wKCldID0gMTtcblx0cGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24oZGF0YSk7XG59O1xuX193ZWJwYWNrX3JlcXVpcmVfXy5mLmkgPSAoY2h1bmtJZCwgcHJvbWlzZXMpID0+IHtcblx0Ly8gXCIxXCIgaXMgdGhlIHNpZ25hbCBmb3IgXCJhbHJlYWR5IGxvYWRlZFwiXG5cdGlmKCFpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0pIHtcblx0XHRpZih0cnVlKSB7IC8vIGFsbCBjaHVua3MgaGF2ZSBKU1xuXHRcdFx0aW1wb3J0U2NyaXB0cyhfX3dlYnBhY2tfcmVxdWlyZV9fLnAgKyBfX3dlYnBhY2tfcmVxdWlyZV9fLnUoY2h1bmtJZCkpO1xuXHRcdH1cblx0fVxufTtcblxudmFyIGNodW5rTG9hZGluZ0dsb2JhbCA9IHNlbGZbXCJ3ZWJwYWNrQ2h1bmtlZGFcIl0gPSBzZWxmW1wid2VicGFja0NodW5rZWRhXCJdIHx8IFtdO1xudmFyIHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uID0gY2h1bmtMb2FkaW5nR2xvYmFsLnB1c2guYmluZChjaHVua0xvYWRpbmdHbG9iYWwpO1xuY2h1bmtMb2FkaW5nR2xvYmFsLnB1c2ggPSBpbnN0YWxsQ2h1bms7XG5cbi8vIG5vIEhNUlxuXG4vLyBubyBITVIgbWFuaWZlc3QiLCIvLyBydW4gc3RhcnR1cFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLngoKTtcbiJdLCJuYW1lcyI6WyJkZWZlcnJlZCIsIm5leHQiLCJpc05pbCIsIngiLCJvbm1lc3NhZ2UiLCJldmVudCIsInZhbHVlcyIsImZuTmFtZXMiLCJzdGFydFJvdyIsInN0YXJ0Q29sIiwiY2h1bmNrU2l6ZSIsIm9wdHMiLCJ3ZWlnaHRzIiwiYWdncmVnYXRpb25NZXRob2QiLCJkYXRhIiwiaSIsImoiLCJjbnQiLCJsbWluIiwibG1heCIsIk51bWJlciIsIk1JTl9WQUxVRSIsImFnZ3JlZ2F0ZSIsInZzIiwicmVkdWNlIiwiYWNjIiwidmFsIiwiaWR4Iiwic3VtIiwiTWF0aCIsInNxcnQiLCJnZXRBZ2dyZWdhdGlvbkZ1bmN0aW9uIiwiZm9yRWFjaCIsInYiLCJjb2xJZHgiLCJtaSIsImxlbmd0aCIsIl9kYXRhIiwiX2xlbmd0aCIsImRpc3RhbmNlRm5zIiwiQXJyYXkiLCJmaWxsIiwibWFwIiwiXyIsImRpIiwiZ2V0TWVhc3VyZSIsInJldFZhbCIsIkZsb2F0MzJBcnJheSIsImRpc3RhbmNlVmFsdWVzIiwiZm4iLCJ2YWx1ZSIsImRpc3RhbmNlTWF0cml4RGF0YSIsIm1pbiIsIm1heCIsImUiLCJlcnJvciIsInBvc3RNZXNzYWdlIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwidW5kZWZpbmVkIiwiZXhwb3J0cyIsIm1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJtIiwiX193ZWJwYWNrX2V4cG9ydHNfXyIsIk8iLCJyZXN1bHQiLCJjaHVua0lkcyIsInByaW9yaXR5Iiwibm90RnVsZmlsbGVkIiwiSW5maW5pdHkiLCJmdWxmaWxsZWQiLCJPYmplY3QiLCJrZXlzIiwiZXZlcnkiLCJrZXkiLCJzcGxpY2UiLCJyIiwiZCIsImRlZmluaXRpb24iLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiZiIsImNodW5rSWQiLCJQcm9taXNlIiwiYWxsIiwicHJvbWlzZXMiLCJ1IiwiZyIsImdsb2JhbFRoaXMiLCJ0aGlzIiwiRnVuY3Rpb24iLCJ3aW5kb3ciLCJvYmoiLCJwcm9wIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwic2NyaXB0VXJsIiwiaW1wb3J0U2NyaXB0cyIsImxvY2F0aW9uIiwiZG9jdW1lbnQiLCJjdXJyZW50U2NyaXB0Iiwic3JjIiwic2NyaXB0cyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiRXJyb3IiLCJyZXBsYWNlIiwicCIsImluc3RhbGxlZENodW5rcyIsImNodW5rTG9hZGluZ0dsb2JhbCIsInNlbGYiLCJwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbiIsInB1c2giLCJiaW5kIiwibW9yZU1vZHVsZXMiLCJydW50aW1lIiwicG9wIiwidGhlbiJdLCJzb3VyY2VSb290IjoiIn0=
|
package/dist/694.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var eda;(()=>{"use strict";var e,r,t={7694:(e,r,t)=>{var o=t(4221);onmessage=function(e){return r=this,t=void 0,a=function*(){const r=new o.u(e.data.options).fit(e.data.data);postMessage({embeddings:r})},new((n=void 0)||(n=Promise))((function(e,o){function i(e){try{s(a.next(e))}catch(e){o(e)}}function c(e){try{s(a.throw(e))}catch(e){o(e)}}function s(r){var t;r.done?e(r.value):(t=r.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,c)}s((a=a.apply(r,t||[])).next())}));var r,t,n,a}}},o={};function n(e){var r=o[e];if(void 0!==r)return r.exports;var a=o[e]={exports:{}};return t[e].call(a.exports,a,a.exports,n),a.exports}n.m=t,n.x=()=>{var e=n.O(void 0,[972,221],(()=>n(7694)));return n.O(e)},e=[],n.O=(r,t,o,a)=>{if(!t){var i=1/0;for(p=0;p<e.length;p++){for(var[t,o,a]=e[p],c=!0,s=0;s<t.length;s++)(!1&a||i>=a)&&Object.keys(n.O).every((e=>n.O[e](t[s])))?t.splice(s--,1):(c=!1,a<i&&(i=a));if(c){e.splice(p--,1);var u=o();void 0!==u&&(r=u)}}return r}a=a||0;for(var p=e.length;p>0&&e[p-1][2]>a;p--)e[p]=e[p-1];e[p]=[t,o,a]},n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>e+".js",n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;n.g.importScripts&&(e=n.g.location+"");var r=n.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var o=t.length-1;o>-1&&!e;)e=t[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e})(),(()=>{var e={694:1};n.f.i=(r,t)=>{e[r]||importScripts(n.p+n.u(r))};var r=self.webpackChunkeda=self.webpackChunkeda||[],t=r.push.bind(r);r.push=r=>{var[o,a,i]=r;for(var c in a)n.o(a,c)&&(n.m[c]=a[c]);for(i&&i(n);o.length;)e[o.pop()]=1;t(r)}})(),r=n.x,n.x=()=>Promise.all([n.e(972),n.e(221)]).then(r);var a=n.x();eda=a})();
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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VixJQURBLElBQUlELEVBQUlxQyxFQUFRcEMsT0FBUyxFQUNsQkQsR0FBSyxJQUFNK0IsR0FBV0EsRUFBWU0sRUFBUXJDLEtBQUtvQyxHQUV4RCxDQUlELElBQUtMLEVBQVcsTUFBTSxJQUFJUSxNQUFNLHlEQUNoQ1IsRUFBWUEsRUFBVVMsUUFBUSxPQUFRLElBQUlBLFFBQVEsUUFBUyxJQUFJQSxRQUFRLFlBQWEsS0FDcEZ6RCxFQUFvQjBELEVBQUlWLEMsV0NkeEIsSUFBSVcsRUFBa0IsQ0FDckIsSUFBSyxHQWdCTjNELEVBQW9CZ0MsRUFBRWYsRUFBSSxDQUFDZ0IsRUFBU0csS0FFL0J1QixFQUFnQjFCLElBRWxCZ0IsY0FBY2pELEVBQW9CMEQsRUFBSTFELEVBQW9CcUMsRUFBRUosR0FFOUQsRUFHRCxJQUFJMkIsRUFBcUJDLEtBQXNCLGdCQUFJQSxLQUFzQixpQkFBSyxHQUMxRUMsRUFBNkJGLEVBQW1CRyxLQUFLQyxLQUFLSixHQUM5REEsRUFBbUJHLEtBdkJDakYsSUFDbkIsSUFBSzhCLEVBQVVxRCxFQUFhQyxHQUFXcEYsRUFDdkMsSUFBSSxJQUFJbUIsS0FBWWdFLEVBQ2hCakUsRUFBb0I0QixFQUFFcUMsRUFBYWhFLEtBQ3JDRCxFQUFvQlEsRUFBRVAsR0FBWWdFLEVBQVloRSxJQUloRCxJQURHaUUsR0FBU0EsRUFBUWxFLEdBQ2RZLEVBQVNNLFFBQ2R5QyxFQUFnQi9DLEVBQVN1RCxPQUFTLEVBQ25DTCxFQUEyQmhGLEVBQUssQyxLVm5CN0JSLEVBQU8wQixFQUFvQlMsRUFDL0JULEVBQW9CUyxFQUFJLElBQ2hCdEIsUUFBUStDLElBQUksQ0FDbEJsQyxFQUFvQlAsRUFBRSxLQUN0Qk8sRUFBb0JQLEVBQUUsT0FDcEJJLEtBQUt2QixHV0pULElBQUlvQyxFQUFzQlYsRUFBb0JTLEkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2NodW5rIGxvYWRlZCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL3N0YXJ0dXAgY2h1bmsgZGVwZW5kZW5jaWVzIiwid2VicGFjazovL2VkYS8uL3NyYy93b3JrZXJzL3VtYXAtd29ya2VyLnRzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZW5zdXJlIGNodW5rIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgY2h1bmsgZmlsZW5hbWUiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9wdWJsaWNQYXRoIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZmVycmVkID0gW107XG5fX3dlYnBhY2tfcmVxdWlyZV9fLk8gPSAocmVzdWx0LCBjaHVua0lkcywgZm4sIHByaW9yaXR5KSA9PiB7XG5cdGlmKGNodW5rSWRzKSB7XG5cdFx0cHJpb3JpdHkgPSBwcmlvcml0eSB8fCAwO1xuXHRcdGZvcih2YXIgaSA9IGRlZmVycmVkLmxlbmd0aDsgaSA+IDAgJiYgZGVmZXJyZWRbaSAtIDFdWzJdID4gcHJpb3JpdHk7IGktLSkgZGVmZXJyZWRbaV0gPSBkZWZlcnJlZFtpIC0gMV07XG5cdFx0ZGVmZXJyZWRbaV0gPSBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV07XG5cdFx0cmV0dXJuO1xuXHR9XG5cdHZhciBub3RGdWxmaWxsZWQgPSBJbmZpbml0eTtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkZWZlcnJlZC5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV0gPSBkZWZlcnJlZFtpXTtcblx0XHR2YXIgZnVsZmlsbGVkID0gdHJ1ZTtcblx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGNodW5rSWRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRpZiAoKHByaW9yaXR5ICYgMSA9PT0gMCB8fCBub3RGdWxmaWxsZWQgPj0gcHJpb3JpdHkpICYmIE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uTykuZXZlcnkoKGtleSkgPT4gKF9fd2VicGFja19yZXF1aXJlX18uT1trZXldKGNodW5rSWRzW2pdKSkpKSB7XG5cdFx0XHRcdGNodW5rSWRzLnNwbGljZShqLS0sIDEpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZnVsZmlsbGVkID0gZmFsc2U7XG5cdFx0XHRcdGlmKHByaW9yaXR5IDwgbm90RnVsZmlsbGVkKSBub3RGdWxmaWxsZWQgPSBwcmlvcml0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYoZnVsZmlsbGVkKSB7XG5cdFx0XHRkZWZlcnJlZC5zcGxpY2UoaS0tLCAxKVxuXHRcdFx0dmFyIHIgPSBmbigpO1xuXHRcdFx0aWYgKHIgIT09IHVuZGVmaW5lZCkgcmVzdWx0ID0gcjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07IiwidmFyIG5leHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLng7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdHJldHVybiBQcm9taXNlLmFsbChbXG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5lKDk3MiksXG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5lKDIyMSlcblx0XSkudGhlbihuZXh0KTtcbn07IiwiLy8gV29ya2VyIGZvciB0aGUgbWV0aG9kIFVNQVBcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsgVU1BUCB9IGZyb20gJ3VtYXAtanMnO1xub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2dCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHVtYXAgPSBuZXcgVU1BUChldnQuZGF0YS5vcHRpb25zKTtcbiAgICAgICAgY29uc3QgZW1iZWRkaW5ncyA9IHVtYXAuZml0KGV2dC5kYXRhLmRhdGEpO1xuICAgICAgICBwb3N0TWVzc2FnZSh7ICdlbWJlZGRpbmdzJzogZW1iZWRkaW5ncyB9KTtcbiAgICB9KTtcbn07XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbl9fd2VicGFja19yZXF1aXJlX18ubSA9IF9fd2VicGFja19tb2R1bGVzX187XG5cbi8vIHRoZSBzdGFydHVwIGZ1bmN0aW9uXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuXHQvLyBUaGlzIGVudHJ5IG1vZHVsZSBkZXBlbmRzIG9uIG90aGVyIGxvYWRlZCBjaHVua3MgYW5kIGV4ZWN1dGlvbiBuZWVkIHRvIGJlIGRlbGF5ZWRcblx0dmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLk8odW5kZWZpbmVkLCBbOTcyLDIyMV0sICgpID0+IChfX3dlYnBhY2tfcmVxdWlyZV9fKDc2OTQpKSlcblx0X193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18uTyhfX3dlYnBhY2tfZXhwb3J0c19fKTtcblx0cmV0dXJuIF9fd2VicGFja19leHBvcnRzX187XG59O1xuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmYgPSB7fTtcbi8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbi8vIFRoZSBjaHVuayBsb2FkaW5nIGZ1bmN0aW9uIGZvciBhZGRpdGlvbmFsIGNodW5rc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5lID0gKGNodW5rSWQpID0+IHtcblx0cmV0dXJuIFByb21pc2UuYWxsKE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uZikucmVkdWNlKChwcm9taXNlcywga2V5KSA9PiB7XG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mW2tleV0oY2h1bmtJZCwgcHJvbWlzZXMpO1xuXHRcdHJldHVybiBwcm9taXNlcztcblx0fSwgW10pKTtcbn07IiwiLy8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzIGFuZCBzaWJsaW5nIGNodW5rcyBmb3IgdGhlIGVudHJ5cG9pbnRcbl9fd2VicGFja19yZXF1aXJlX18udSA9IChjaHVua0lkKSA9PiB7XG5cdC8vIHJldHVybiB1cmwgZm9yIGZpbGVuYW1lcyBiYXNlZCBvbiB0ZW1wbGF0ZVxuXHRyZXR1cm4gXCJcIiArIGNodW5rSWQgKyBcIi5qc1wiO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJ2YXIgc2NyaXB0VXJsO1xuaWYgKF9fd2VicGFja19yZXF1aXJlX18uZy5pbXBvcnRTY3JpcHRzKSBzY3JpcHRVcmwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcubG9jYXRpb24gKyBcIlwiO1xudmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmRvY3VtZW50O1xuaWYgKCFzY3JpcHRVcmwgJiYgZG9jdW1lbnQpIHtcblx0aWYgKGRvY3VtZW50LmN1cnJlbnRTY3JpcHQpXG5cdFx0c2NyaXB0VXJsID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM7XG5cdGlmICghc2NyaXB0VXJsKSB7XG5cdFx0dmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKTtcblx0XHRpZihzY3JpcHRzLmxlbmd0aCkge1xuXHRcdFx0dmFyIGkgPSBzY3JpcHRzLmxlbmd0aCAtIDE7XG5cdFx0XHR3aGlsZSAoaSA+IC0xICYmICFzY3JpcHRVcmwpIHNjcmlwdFVybCA9IHNjcmlwdHNbaS0tXS5zcmM7XG5cdFx0fVxuXHR9XG59XG4vLyBXaGVuIHN1cHBvcnRpbmcgYnJvd3NlcnMgd2hlcmUgYW4gYXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCB5b3UgbXVzdCBzcGVjaWZ5IGFuIG91dHB1dC5wdWJsaWNQYXRoIG1hbnVhbGx5IHZpYSBjb25maWd1cmF0aW9uXG4vLyBvciBwYXNzIGFuIGVtcHR5IHN0cmluZyAoXCJcIikgYW5kIHNldCB0aGUgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gdmFyaWFibGUgZnJvbSB5b3VyIGNvZGUgdG8gdXNlIHlvdXIgb3duIGxvZ2ljLlxuaWYgKCFzY3JpcHRVcmwpIHRocm93IG5ldyBFcnJvcihcIkF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCIpO1xuc2NyaXB0VXJsID0gc2NyaXB0VXJsLnJlcGxhY2UoLyMuKiQvLCBcIlwiKS5yZXBsYWNlKC9cXD8uKiQvLCBcIlwiKS5yZXBsYWNlKC9cXC9bXlxcL10rJC8sIFwiL1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18ucCA9IHNjcmlwdFVybDsiLCIvLyBubyBiYXNlVVJJXG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgY2h1bmtzXG4vLyBcIjFcIiBtZWFucyBcImFscmVhZHkgbG9hZGVkXCJcbnZhciBpbnN0YWxsZWRDaHVua3MgPSB7XG5cdDY5NDogMVxufTtcblxuLy8gaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nXG52YXIgaW5zdGFsbENodW5rID0gKGRhdGEpID0+IHtcblx0dmFyIFtjaHVua0lkcywgbW9yZU1vZHVsZXMsIHJ1bnRpbWVdID0gZGF0YTtcblx0Zm9yKHZhciBtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhtb3JlTW9kdWxlcywgbW9kdWxlSWQpKSB7XG5cdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm1bbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuXHRcdH1cblx0fVxuXHRpZihydW50aW1lKSBydW50aW1lKF9fd2VicGFja19yZXF1aXJlX18pO1xuXHR3aGlsZShjaHVua0lkcy5sZW5ndGgpXG5cdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRzLnBvcCgpXSA9IDE7XG5cdHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uKGRhdGEpO1xufTtcbl9fd2VicGFja19yZXF1aXJlX18uZi5pID0gKGNodW5rSWQsIHByb21pc2VzKSA9PiB7XG5cdC8vIFwiMVwiIGlzIHRoZSBzaWduYWwgZm9yIFwiYWxyZWFkeSBsb2FkZWRcIlxuXHRpZighaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG5cdFx0aWYodHJ1ZSkgeyAvLyBhbGwgY2h1bmtzIGhhdmUgSlNcblx0XHRcdGltcG9ydFNjcmlwdHMoX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgX193ZWJwYWNrX3JlcXVpcmVfXy51KGNodW5rSWQpKTtcblx0XHR9XG5cdH1cbn07XG5cbnZhciBjaHVua0xvYWRpbmdHbG9iYWwgPSBzZWxmW1wid2VicGFja0NodW5rZWRhXCJdID0gc2VsZltcIndlYnBhY2tDaHVua2VkYVwiXSB8fCBbXTtcbnZhciBwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbiA9IGNodW5rTG9hZGluZ0dsb2JhbC5wdXNoLmJpbmQoY2h1bmtMb2FkaW5nR2xvYmFsKTtcbmNodW5rTG9hZGluZ0dsb2JhbC5wdXNoID0gaW5zdGFsbENodW5rO1xuXG4vLyBubyBITVJcblxuLy8gbm8gSE1SIG1hbmlmZXN0IiwiLy8gcnVuIHN0YXJ0dXBcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy54KCk7XG4iXSwibmFtZXMiOlsiZGVmZXJyZWQiLCJuZXh0Iiwib25tZXNzYWdlIiwiZXZ0IiwidGhpc0FyZyIsInRoaXMiLCJfYXJndW1lbnRzIiwiZ2VuZXJhdG9yIiwiZW1iZWRkaW5ncyIsImRhdGEiLCJvcHRpb25zIiwiZml0IiwicG9zdE1lc3NhZ2UiLCJQIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJ2YWx1ZSIsInN0ZXAiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwidW5kZWZpbmVkIiwiZXhwb3J0cyIsIm1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJjYWxsIiwibSIsIngiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiTyIsImNodW5rSWRzIiwiZm4iLCJwcmlvcml0eSIsIm5vdEZ1bGZpbGxlZCIsIkluZmluaXR5IiwiaSIsImxlbmd0aCIsImoiLCJPYmplY3QiLCJrZXlzIiwiZXZlcnkiLCJrZXkiLCJzcGxpY2UiLCJyIiwiZCIsImRlZmluaXRpb24iLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiZiIsImNodW5rSWQiLCJhbGwiLCJyZWR1Y2UiLCJwcm9taXNlcyIsInUiLCJnIiwiZ2xvYmFsVGhpcyIsIkZ1bmN0aW9uIiwid2luZG93Iiwib2JqIiwicHJvcCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJzY3JpcHRVcmwiLCJpbXBvcnRTY3JpcHRzIiwibG9jYXRpb24iLCJkb2N1bWVudCIsImN1cnJlbnRTY3JpcHQiLCJzcmMiLCJzY3JpcHRzIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJFcnJvciIsInJlcGxhY2UiLCJwIiwiaW5zdGFsbGVkQ2h1bmtzIiwiY2h1bmtMb2FkaW5nR2xvYmFsIiwic2VsZiIsInBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uIiwicHVzaCIsImJpbmQiLCJtb3JlTW9kdWxlcyIsInJ1bnRpbWUiLCJwb3AiXSwic291cmNlUm9vdCI6IiJ9
|
package/dist/729.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var eda;(()=>{"use strict";var t,s,e={7659:(t,s,e)=>{s.Z=void 0;var i=e(6215);Object.defineProperty(s,"Z",{enumerable:!0,get:function(){return i.TSNE}})},6215:(t,s)=>{Object.defineProperty(s,"__esModule",{value:!0}),s.TSNE=void 0,s.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,s){if(!t)throw s||"Assertion failed"}getopt(t,s,e){return t.hasOwnProperty(s)?t[s]:e}gaussRandom(){if(this.returnV)return this.returnV=!1,this.vValue;const t=2*Math.random()-1,s=2*Math.random()-1,e=t*t+s*s;if(0===e||e>1)return this.gaussRandom();const i=Math.sqrt(-2*Math.log(e)/e);return this.vValue=s*i,this.returnV=!0,t*i}randn(t,s){return t+this.gaussRandom()*s}zeros(t){if(void 0===t||isNaN(t))return[];if("undefined"==typeof ArrayBuffer){const s=new Array(t);for(let e=0;e<t;e++)s[e]=0;return s}return new Float64Array(t)}randn2d(t,s,e){const i=void 0!==e,o=[];for(let r=0;r<t;r++){const t=[];for(let o=0;o<s;o++)i?t.push(e):t.push(this.randn(0,1e-4));o.push(t)}return o}L2(t,s){const e=t.length;let i=0;for(let o=0;o<e;o++){const e=t[o],r=s[o];i+=(e-r)*(e-r)}return i}xtod(t){const s=t.length,e=this.zeros(s*s);for(let i=0;i<s;i++)for(let o=i+1;o<s;o++){const r=this.L2(t[i],t[o]);e[i*s+o]=r,e[o*s+i]=r}return e}d2p(t,s,e){const i=Math.sqrt(t.length),o=Math.floor(i);this.assert(o===i,"D should have square number of elements.");const r=Math.log(s),n=this.zeros(o*o),h=this.zeros(o);for(let s=0;s<o;s++){let i=-1/0,a=1/0,l=1,c=!1;const d=50;let u=0;for(;!c;){let n=0;for(let e=0;e<o;e++){let i=Math.exp(-t[s*o+e]*l);s===e&&(i=0),h[e]=i,n+=i}let f=0;for(let t=0;t<o;t++){let s;s=0===n?0:h[t]/n,h[t]=s,s>1e-7&&(f-=s*Math.log(s))}f>r?(i=l,a===1/0?l*=2:l=(l+a)/2):(a=l,i===-1/0?l/=2:l=(l+i)/2),u++,Math.abs(f-r)<e&&(c=!0),u>=d&&(c=!0)}for(let t=0;t<o;t++)n[s*o+t]=h[t]}const a=this.zeros(o*o),l=2*o;for(let t=0;t<o;t++)for(let s=0;s<o;s++)a[t*o+s]=Math.max((n[t*o+s]+n[s*o+t])/l,1e-100);return a}sign(t){return t>0?1:t<0?-1:0}initDataRaw(t){const s=t.length,e=t[0].length;this.assert(s>0," X is empty? You must have some data!"),this.assert(e>0," X[0] is empty? Where is the data?");const i=this.xtod(t);this.P=this.d2p(i,this.perplexity,1e-4),this.N=s,this.initSolution()}initDataDist(t){const s=t.length;this.assert(s>0," X is empty? You must have some data!");const e=this.zeros(s*s);for(let i=0;i<s;i++)for(let o=i+1;o<s;o++){const r=t[i][o];e[i*s+o]=r,e[o*s+i]=r}this.P=this.d2p(e,this.perplexity,1e-4),this.N=s,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,s=this.costGrad(this.Y),e=s.cost,i=s.grad,o=this.zeros(this.dim);for(let s=0;s<t;s++)for(let t=0;t<this.dim;t++){const e=i[s][t],r=this.ystep[s][t],n=this.gains[s][t];let h=this.sign(e)===this.sign(r)?.8*n:n+.2;h<.01&&(h=.01),this.gains[s][t]=h;const a=(this.iter<250?.5:.8)*r-this.epsilon*h*i[s][t];this.ystep[s][t]=a,this.Y[s][t]+=a,o[t]+=this.Y[s][t]}for(let s=0;s<t;s++)for(let e=0;e<this.dim;e++)this.Y[s][e]-=o[e]/t;return e}debugGrad(){const t=this.N,s=this.costGrad(this.Y),e=(s.cost,s.grad),i=1e-5;for(let s=0;s<t;s++)for(let t=0;t<this.dim;t++){const o=this.Y[s][t];this.Y[s][t]=o+i;const r=this.costGrad(this.Y);this.Y[s][t]=o-i;const n=this.costGrad(this.Y),h=e[s][t],a=(r.cost-n.cost)/(2*i);console.log(s+","+t+": gradcheck analytic: "+h+" vs. numerical: "+a),this.Y[s][t]=o}}costGrad(t){const s=this.N,e=this.dim,i=this.P,o=this.iter<100?4:1,r=this.zeros(s*s);let n=0;for(let i=0;i<s;i++)for(let o=i+1;o<s;o++){let h=0;for(let s=0;s<e;s++){const e=t[i][s]-t[o][s];h+=e*e}const a=1/(1+h);r[i*s+o]=a,r[o*s+i]=a,n+=2*a}const h=s*s,a=this.zeros(h);for(let t=0;t<h;t++)a[t]=Math.max(r[t]/n,1e-100);let l=0;const c=[];for(let n=0;n<s;n++){const h=new Array(e);for(let t=0;t<e;t++)h[t]=0;for(let c=0;c<s;c++){l+=-i[n*s+c]*Math.log(a[n*s+c]);const d=4*(o*i[n*s+c]-a[n*s+c])*r[n*s+c];for(let s=0;s<e;s++)h[s]+=d*(t[n][s]-t[c][s])}c.push(h)}return{cost:l,grad:c}}}}},i={};t=function t(s){var o=i[s];if(void 0!==o)return o.exports;var r=i[s]={exports:{}};return e[s](r,r.exports,t),r.exports}(7659),s=function(t,s,e,i){return new(e||(e=Promise))((function(o,r){function n(t){try{a(i.next(t))}catch(t){r(t)}}function h(t){try{a(i.throw(t))}catch(t){r(t)}}function a(t){var s;t.done?o(t.value):(s=t.value,s instanceof e?s:new e((function(t){t(s)}))).then(n,h)}a((i=i.apply(t,s||[])).next())}))},onmessage=function(e){return s(this,void 0,void 0,(function*(){const s=new t.Z({epsilon:e.data.options.learningRate,perplexity:e.data.options.perplexity,dim:e.data.options.components});s.initDataRaw(e.data.data);const i=e.data.options.iterations;for(let t=0;t<i;++t)s.step();postMessage({embeddings:s.getSolution()})}))},eda={}})();
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzI5LmpzIiwibWFwcGluZ3MiOiJpQ0FDSUEsRSxrQkNDSkMsRUFBUSxPQUFPLEVBQ2YsSUFBSUMsRUFBUyxFQUFRLE1BQ3JCQyxPQUFPQyxlQUFlSCxFQUFTLElBQS9CLENBQXlDSSxZQUFZLEVBQU1DLElBQUssV0FBYyxPQUFPSixFQUFPSyxJQUFNLEcsZUNIbEdKLE9BQU9DLGVBQWVILEVBQVMsYUFBYyxDQUFFTyxPQUFPLElBQ3REUCxFQUFRTSxVQUFPLEVBMFZmTixFQUFRTSxLQXpWUixNQUNJRSxZQUFZQyxHQUVSQyxLQUFLQyxTQUFVLEVBQ2ZELEtBQUtFLE9BQVMsRUFDZEYsS0FBS0csS0FBTyxFQUNaSixFQUFNQSxHQUFPLENBQUMsRUFDZEMsS0FBS0ksV0FBYUosS0FBS0ssT0FBT04sRUFBSyxhQUFjLElBQ2pEQyxLQUFLTSxJQUFNTixLQUFLSyxPQUFPTixFQUFLLE1BQU8sR0FDbkNDLEtBQUtPLFFBQVVQLEtBQUtLLE9BQU9OLEVBQUssVUFBVyxHQUMvQyxDQUNBUyxPQUFPQyxFQUFXQyxHQUNkLElBQUtELEVBQ0QsTUFBTUMsR0FBVyxrQkFFekIsQ0FFQUwsT0FBT04sRUFBS1ksRUFBT0MsR0FDZixPQUFJYixFQUFJYyxlQUFlRixHQUNaWixFQUFJWSxHQUdKQyxDQUVmLENBQ0FFLGNBQ0ksR0FBSWQsS0FBS0MsUUFFTCxPQURBRCxLQUFLQyxTQUFVLEVBQ1JELEtBQUtFLE9BRWhCLE1BQU1hLEVBQUksRUFBSUMsS0FBS0MsU0FBVyxFQUN4QkMsRUFBSSxFQUFJRixLQUFLQyxTQUFXLEVBQ3hCRSxFQUFJSixFQUFJQSxFQUFJRyxFQUFJQSxFQUN0QixHQUFVLElBQU5DLEdBQVdBLEVBQUksRUFDZixPQUFPbkIsS0FBS2MsY0FFaEIsTUFBTU0sRUFBSUosS0FBS0ssTUFBTSxFQUFJTCxLQUFLTSxJQUFJSCxHQUFLQSxHQUd2QyxPQUZBbkIsS0FBS0UsT0FBU2dCLEVBQUlFLEVBQ2xCcEIsS0FBS0MsU0FBVSxFQUNSYyxFQUFJSyxDQUNmLENBRUFHLE1BQU1DLEVBQUlDLEdBQU8sT0FBT0QsRUFBS3hCLEtBQUtjLGNBQWdCVyxDQUFLLENBRXZEQyxNQUFNQyxHQUNGLFFBQW1CLElBQVIsR0FBdUJDLE1BQU1ELEdBQ3BDLE1BQU8sR0FFWCxHQUEyQixvQkFBaEJFLFlBQTZCLENBRXBDLE1BQU1DLEVBQU0sSUFBSUMsTUFBTUosR0FDdEIsSUFBSyxJQUFJSyxFQUFJLEVBQUdBLEVBQUlMLEVBQUdLLElBQ25CRixFQUFJRSxHQUFLLEVBRWIsT0FBT0YsQ0FDWCxDQUVJLE9BQU8sSUFBSUcsYUFBYU4sRUFFaEMsQ0FHQU8sUUFBUVAsRUFBR1EsRUFBR0MsR0FDVixNQUFNQyxPQUFvQixJQUFORCxFQUNkRSxFQUFJLEdBQ1YsSUFBSyxJQUFJTixFQUFJLEVBQUdBLEVBQUlMLEVBQUdLLElBQUssQ0FDeEIsTUFBTU8sRUFBUSxHQUNkLElBQUssSUFBSUMsRUFBSSxFQUFHQSxFQUFJTCxFQUFHSyxJQUNmSCxFQUNBRSxFQUFNRSxLQUFLTCxHQUdYRyxFQUFNRSxLQUFLekMsS0FBS3VCLE1BQU0sRUFBSyxPQUduQ2UsRUFBRUcsS0FBS0YsRUFDWCxDQUNBLE9BQU9ELENBQ1gsQ0FFQUksR0FBR0MsRUFBSUMsR0FDSCxNQUFNQyxFQUFJRixFQUFHRyxPQUNiLElBQUlYLEVBQUksRUFDUixJQUFLLElBQUlILEVBQUksRUFBR0EsRUFBSWEsRUFBR2IsSUFBSyxDQUN4QixNQUFNZSxFQUFNSixFQUFHWCxHQUNUZ0IsRUFBTUosRUFBR1osR0FDZkcsSUFBTVksRUFBTUMsSUFBUUQsRUFBTUMsRUFDOUIsQ0FDQSxPQUFPYixDQUNYLENBRUFjLEtBQUtDLEdBQ0QsTUFBTUMsRUFBSUQsRUFBRUosT0FDTk0sRUFBT3BELEtBQUswQixNQUFNeUIsRUFBSUEsR0FDNUIsSUFBSyxJQUFJbkIsRUFBSSxFQUFHQSxFQUFJbUIsRUFBR25CLElBQ25CLElBQUssSUFBSVEsRUFBSVIsRUFBSSxFQUFHUSxFQUFJVyxFQUFHWCxJQUFLLENBQzVCLE1BQU1MLEVBQUluQyxLQUFLMEMsR0FBR1EsRUFBRWxCLEdBQUlrQixFQUFFVixJQUMxQlksRUFBS3BCLEVBQUltQixFQUFJWCxHQUFLTCxFQUNsQmlCLEVBQUtaLEVBQUlXLEVBQUluQixHQUFLRyxDQUN0QixDQUVKLE9BQU9pQixDQUNYLENBRUFDLElBQUlSLEVBQUd6QyxFQUFZa0QsR0FDZixNQUFNQyxFQUFLdkMsS0FBS0ssS0FBS3dCLEVBQUVDLFFBQ2pCbkIsRUFBSVgsS0FBS3dDLE1BQU1ELEdBQ3JCdkQsS0FBS1EsT0FBT21CLElBQU00QixFQUFJLDRDQUN0QixNQUFNRSxFQUFVekMsS0FBS00sSUFBSWxCLEdBQ25Cc0QsRUFBSTFELEtBQUswQixNQUFNQyxFQUFJQSxHQUNuQmdDLEVBQU8zRCxLQUFLMEIsTUFBTUMsR0FDeEIsSUFBSyxJQUFJSyxFQUFJLEVBQUdBLEVBQUlMLEVBQUdLLElBQUssQ0FDeEIsSUFBSTRCLEdBQVUsSUFDVkMsRUFBVUMsSUFDVkMsRUFBTyxFQUNQQyxHQUFPLEVBQ1gsTUFBTUMsRUFBVyxHQUdqQixJQUFJQyxFQUFNLEVBQ1YsTUFBUUYsR0FBTSxDQUdWLElBQUlHLEVBQU8sRUFDWCxJQUFLLElBQUkzQixFQUFJLEVBQUdBLEVBQUliLEVBQUdhLElBQUssQ0FDeEIsSUFBSTRCLEVBQUtwRCxLQUFLcUQsS0FBS3hCLEVBQUViLEVBQUlMLEVBQUlhLEdBQUt1QixHQUM5Qi9CLElBQU1RLElBQ040QixFQUFLLEdBRVRULEVBQUtuQixHQUFLNEIsRUFDVkQsR0FBUUMsQ0FDWixDQUVBLElBQUlFLEVBQVEsRUFDWixJQUFLLElBQUk5QixFQUFJLEVBQUdBLEVBQUliLEVBQUdhLElBQUssQ0FDeEIsSUFBSTRCLEVBRUFBLEVBRFMsSUFBVEQsRUFDSyxFQUdBUixFQUFLbkIsR0FBSzJCLEVBRW5CUixFQUFLbkIsR0FBSzRCLEVBQ05BLEVBQUssT0FDTEUsR0FBU0YsRUFBS3BELEtBQUtNLElBQUk4QyxHQUUvQixDQUVJRSxFQUFRYixHQUdSRyxFQUFVRyxFQUNORixJQUFZQyxJQUNaQyxHQUFjLEVBR2RBLEdBQVFBLEVBQU9GLEdBQVcsSUFLOUJBLEVBQVVFLEVBQ05ILEtBQVksSUFDWkcsR0FBYyxFQUdkQSxHQUFRQSxFQUFPSCxHQUFXLEdBSWxDTSxJQUNJbEQsS0FBS3VELElBQUlELEVBQVFiLEdBQVdILElBQzVCVSxHQUFPLEdBRVBFLEdBQU9ELElBQ1BELEdBQU8sRUFFZixDQUdBLElBQUssSUFBSXhCLEVBQUksRUFBR0EsRUFBSWIsRUFBR2EsSUFDbkJrQixFQUFFMUIsRUFBSUwsRUFBSWEsR0FBS21CLEVBQUtuQixFQUU1QixDQUVBLE1BQU1nQyxFQUFPeEUsS0FBSzBCLE1BQU1DLEVBQUlBLEdBQ3RCOEMsRUFBUyxFQUFKOUMsRUFDWCxJQUFLLElBQUlLLEVBQUksRUFBR0EsRUFBSUwsRUFBR0ssSUFDbkIsSUFBSyxJQUFJUSxFQUFJLEVBQUdBLEVBQUliLEVBQUdhLElBQ25CZ0MsRUFBS3hDLEVBQUlMLEVBQUlhLEdBQUt4QixLQUFLMEQsS0FBS2hCLEVBQUUxQixFQUFJTCxFQUFJYSxHQUFLa0IsRUFBRWxCLEVBQUliLEVBQUlLLElBQU15QyxFQUFJLFFBR3ZFLE9BQU9ELENBQ1gsQ0FFQUcsS0FBS3JDLEdBQUssT0FBT0EsRUFBSSxFQUFJLEVBQUlBLEVBQUksR0FBSyxFQUFJLENBQUcsQ0FHN0NzQyxZQUFZMUIsR0FDUixNQUFNQyxFQUFJRCxFQUFFSixPQUNORCxFQUFJSyxFQUFFLEdBQUdKLE9BQ2Y5QyxLQUFLUSxPQUFPMkMsRUFBSSxFQUFHLHlDQUNuQm5ELEtBQUtRLE9BQU9xQyxFQUFJLEVBQUcsc0NBQ25CLE1BQU1nQyxFQUFRN0UsS0FBS2lELEtBQUtDLEdBQ3hCbEQsS0FBSzBELEVBQUkxRCxLQUFLcUQsSUFBSXdCLEVBQU83RSxLQUFLSSxXQUFZLE1BQzFDSixLQUFLbUQsRUFBSUEsRUFDVG5ELEtBQUs4RSxjQUNULENBSUFDLGFBQWFsQyxHQUNULE1BQU1NLEVBQUlOLEVBQUVDLE9BQ1o5QyxLQUFLUSxPQUFPMkMsRUFBSSxFQUFHLHlDQUVuQixNQUFNMEIsRUFBUTdFLEtBQUswQixNQUFNeUIsRUFBSUEsR0FDN0IsSUFBSyxJQUFJbkIsRUFBSSxFQUFHQSxFQUFJbUIsRUFBR25CLElBQ25CLElBQUssSUFBSVEsRUFBSVIsRUFBSSxFQUFHUSxFQUFJVyxFQUFHWCxJQUFLLENBQzVCLE1BQU1MLEVBQUlVLEVBQUViLEdBQUdRLEdBQ2ZxQyxFQUFNN0MsRUFBSW1CLEVBQUlYLEdBQUtMLEVBQ25CMEMsRUFBTXJDLEVBQUlXLEVBQUluQixHQUFLRyxDQUN2QixDQUVKbkMsS0FBSzBELEVBQUkxRCxLQUFLcUQsSUFBSXdCLEVBQU83RSxLQUFLSSxXQUFZLE1BQzFDSixLQUFLbUQsRUFBSUEsRUFDVG5ELEtBQUs4RSxjQUNULENBRUFBLGVBRUk5RSxLQUFLZ0YsRUFBSWhGLEtBQUtrQyxRQUFRbEMsS0FBS21ELEVBQUduRCxLQUFLTSxLQUNuQ04sS0FBS2lGLE1BQVFqRixLQUFLa0MsUUFBUWxDLEtBQUttRCxFQUFHbkQsS0FBS00sSUFBSyxHQUM1Q04sS0FBS2tGLE1BQVFsRixLQUFLa0MsUUFBUWxDLEtBQUttRCxFQUFHbkQsS0FBS00sSUFBSyxHQUM1Q04sS0FBS0csS0FBTyxDQUNoQixDQUVBZ0YsY0FDSSxPQUFPbkYsS0FBS2dGLENBQ2hCLENBRUFJLE9BQ0lwRixLQUFLRyxNQUFRLEVBQ2IsTUFBTWdELEVBQUluRCxLQUFLbUQsRUFDVGtDLEVBQUtyRixLQUFLc0YsU0FBU3RGLEtBQUtnRixHQUN4Qk8sRUFBT0YsRUFBR0UsS0FDVkMsRUFBT0gsRUFBR0csS0FFVkMsRUFBUXpGLEtBQUswQixNQUFNMUIsS0FBS00sS0FDOUIsSUFBSyxJQUFJMEIsRUFBSSxFQUFHQSxFQUFJbUIsRUFBR25CLElBQ25CLElBQUssSUFBSUcsRUFBSSxFQUFHQSxFQUFJbkMsS0FBS00sSUFBSzZCLElBQUssQ0FDL0IsTUFBTXVELEVBQU1GLEVBQUt4RCxHQUFHRyxHQUNkd0QsRUFBTTNGLEtBQUtrRixNQUFNbEQsR0FBR0csR0FDcEJ5RCxFQUFTNUYsS0FBS2lGLE1BQU1qRCxHQUFHRyxHQUU3QixJQUFJMEQsRUFBVTdGLEtBQUsyRSxLQUFLZSxLQUFTMUYsS0FBSzJFLEtBQUtnQixHQUFnQixHQUFUQyxFQUFlQSxFQUFTLEdBQ3RFQyxFQUFVLE1BQ1ZBLEVBQVUsS0FFZDdGLEtBQUtpRixNQUFNakQsR0FBR0csR0FBSzBELEVBRW5CLE1BQ01DLEdBRFM5RixLQUFLRyxLQUFPLElBQU0sR0FBTSxJQUNmd0YsRUFBTTNGLEtBQUtPLFFBQVVzRixFQUFVTCxFQUFLeEQsR0FBR0csR0FDL0RuQyxLQUFLa0YsTUFBTWxELEdBQUdHLEdBQUsyRCxFQUVuQjlGLEtBQUtnRixFQUFFaEQsR0FBR0csSUFBTTJELEVBQ2hCTCxFQUFNdEQsSUFBTW5DLEtBQUtnRixFQUFFaEQsR0FBR0csRUFDMUIsQ0FHSixJQUFLLElBQUlILEVBQUksRUFBR0EsRUFBSW1CLEVBQUduQixJQUNuQixJQUFLLElBQUlHLEVBQUksRUFBR0EsRUFBSW5DLEtBQUtNLElBQUs2QixJQUMxQm5DLEtBQUtnRixFQUFFaEQsR0FBR0csSUFBTXNELEVBQU10RCxHQUFLZ0IsRUFJbkMsT0FBT29DLENBQ1gsQ0FFQVEsWUFDSSxNQUFNNUMsRUFBSW5ELEtBQUttRCxFQUNUa0MsRUFBS3JGLEtBQUtzRixTQUFTdEYsS0FBS2dGLEdBRXhCUSxHQURPSCxFQUFHRSxLQUNIRixFQUFHRyxNQUNWUSxFQUFJLEtBQ1YsSUFBSyxJQUFJaEUsRUFBSSxFQUFHQSxFQUFJbUIsRUFBR25CLElBQ25CLElBQUssSUFBSUcsRUFBSSxFQUFHQSxFQUFJbkMsS0FBS00sSUFBSzZCLElBQUssQ0FDL0IsTUFBTThELEVBQU9qRyxLQUFLZ0YsRUFBRWhELEdBQUdHLEdBQ3ZCbkMsS0FBS2dGLEVBQUVoRCxHQUFHRyxHQUFLOEQsRUFBT0QsRUFDdEIsTUFBTUUsRUFBTWxHLEtBQUtzRixTQUFTdEYsS0FBS2dGLEdBQy9CaEYsS0FBS2dGLEVBQUVoRCxHQUFHRyxHQUFLOEQsRUFBT0QsRUFDdEIsTUFBTUcsRUFBTW5HLEtBQUtzRixTQUFTdEYsS0FBS2dGLEdBQ3pCb0IsRUFBV1osRUFBS3hELEdBQUdHLEdBQ25Ca0UsR0FBYUgsRUFBSVgsS0FBT1ksRUFBSVosT0FBUyxFQUFJUyxHQUMvQ00sUUFBUWhGLElBQUlVLEVBQUksSUFBTUcsRUFBSSx5QkFBMkJpRSxFQUFXLG1CQUFxQkMsR0FDckZyRyxLQUFLZ0YsRUFBRWhELEdBQUdHLEdBQUs4RCxDQUNuQixDQUVSLENBRUFYLFNBQVNOLEdBQ0wsTUFBTTdCLEVBQUluRCxLQUFLbUQsRUFDVDdDLEVBQU1OLEtBQUtNLElBQ1hvRCxFQUFJMUQsS0FBSzBELEVBQ1Q2QyxFQUFPdkcsS0FBS0csS0FBTyxJQUFNLEVBQUksRUFFN0JxRyxFQUFReEcsS0FBSzBCLE1BQU15QixFQUFJQSxHQUM3QixJQUFJc0QsRUFBTyxFQUNYLElBQUssSUFBSXpFLEVBQUksRUFBR0EsRUFBSW1CLEVBQUduQixJQUNuQixJQUFLLElBQUlRLEVBQUlSLEVBQUksRUFBR1EsRUFBSVcsRUFBR1gsSUFBSyxDQUM1QixJQUFJa0UsRUFBTyxFQUNYLElBQUssSUFBSXZFLEVBQUksRUFBR0EsRUFBSTdCLEVBQUs2QixJQUFLLENBQzFCLE1BQU13RSxFQUFRM0IsRUFBRWhELEdBQUdHLEdBQUs2QyxFQUFFeEMsR0FBR0wsR0FDN0J1RSxHQUFRQyxFQUFRQSxDQUNwQixDQUNBLE1BQU1DLEVBQUssR0FBTyxFQUFNRixHQUN4QkYsRUFBTXhFLEVBQUltQixFQUFJWCxHQUFLb0UsRUFDbkJKLEVBQU1oRSxFQUFJVyxFQUFJbkIsR0FBSzRFLEVBQ25CSCxHQUFRLEVBQUlHLENBQ2hCLENBR0osTUFBTUMsRUFBSzFELEVBQUlBLEVBQ1QyRCxFQUFJOUcsS0FBSzBCLE1BQU1tRixHQUNyQixJQUFLLElBQUlFLEVBQUksRUFBR0EsRUFBSUYsRUFBSUUsSUFDcEJELEVBQUVDLEdBQUsvRixLQUFLMEQsSUFBSThCLEVBQU1PLEdBQUtOLEVBQU0sUUFFckMsSUFBSWxCLEVBQU8sRUFDWCxNQUFNQyxFQUFPLEdBQ2IsSUFBSyxJQUFJeEQsRUFBSSxFQUFHQSxFQUFJbUIsRUFBR25CLElBQUssQ0FDeEIsTUFBTWdGLEVBQU8sSUFBSWpGLE1BQU16QixHQUN2QixJQUFLLElBQUk2QixFQUFJLEVBQUdBLEVBQUk3QixFQUFLNkIsSUFDckI2RSxFQUFLN0UsR0FBSyxFQUVkLElBQUssSUFBSUssRUFBSSxFQUFHQSxFQUFJVyxFQUFHWCxJQUFLLENBQ3hCK0MsSUFBUzdCLEVBQUUxQixFQUFJbUIsRUFBSVgsR0FBS3hCLEtBQUtNLElBQUl3RixFQUFFOUUsRUFBSW1CLEVBQUlYLElBQzNDLE1BQU15RSxFQUFVLEdBQUtWLEVBQU83QyxFQUFFMUIsRUFBSW1CLEVBQUlYLEdBQUtzRSxFQUFFOUUsRUFBSW1CLEVBQUlYLElBQU1nRSxFQUFNeEUsRUFBSW1CLEVBQUlYLEdBQ3pFLElBQUssSUFBSUwsRUFBSSxFQUFHQSxFQUFJN0IsRUFBSzZCLElBQ3JCNkUsRUFBSzdFLElBQU04RSxHQUFXakMsRUFBRWhELEdBQUdHLEdBQUs2QyxFQUFFeEMsR0FBR0wsR0FFN0MsQ0FDQXFELEVBQUsvQyxLQUFLdUUsRUFDZCxDQUNBLE1BQU8sQ0FBRXpCLE9BQU1DLE9BQ25CLEUsR0N6VkEwQixFQUEyQixDQUFDLEUsRUFHaEMsU0FBU0MsRUFBb0JDLEdBRTVCLElBQUlDLEVBQWVILEVBQXlCRSxHQUM1QyxRQUFxQkUsSUFBakJELEVBQ0gsT0FBT0EsRUFBYS9ILFFBR3JCLElBQUlpSSxFQUFTTCxFQUF5QkUsR0FBWSxDQUdqRDlILFFBQVMsQ0FBQyxHQU9YLE9BSEFrSSxFQUFvQkosR0FBVUcsRUFBUUEsRUFBT2pJLFFBQVM2SCxHQUcvQ0ksRUFBT2pJLE9BQ2YsQyxPSHJCSUQsRUFBd0MsU0FBVW9JLEVBQVNDLEVBQVloRSxFQUFHaUUsR0FFMUUsT0FBTyxJQUFLakUsSUFBTUEsRUFBSWtFLFdBQVUsU0FBVUMsRUFBU0MsR0FDL0MsU0FBU0MsRUFBVWxJLEdBQVMsSUFBTXVGLEVBQUt1QyxFQUFVSyxLQUFLbkksR0FBUyxDQUFFLE1BQU9tRyxHQUFLOEIsRUFBTzlCLEVBQUksQ0FBRSxDQUMxRixTQUFTaUMsRUFBU3BJLEdBQVMsSUFBTXVGLEVBQUt1QyxFQUFpQixNQUFFOUgsR0FBUyxDQUFFLE1BQU9tRyxHQUFLOEIsRUFBTzlCLEVBQUksQ0FBRSxDQUM3RixTQUFTWixFQUFLOEMsR0FKbEIsSUFBZXJJLEVBSWFxSSxFQUFPbEUsS0FBTzZELEVBQVFLLEVBQU9ySSxRQUoxQ0EsRUFJeURxSSxFQUFPckksTUFKaERBLGFBQWlCNkQsRUFBSTdELEVBQVEsSUFBSTZELEdBQUUsU0FBVW1FLEdBQVdBLEVBQVFoSSxFQUFRLEtBSWpCc0ksS0FBS0osRUFBV0UsRUFBVyxDQUM3RzdDLEdBQU11QyxFQUFZQSxFQUFVUyxNQUFNWCxFQUFTQyxHQUFjLEtBQUtNLE9BQ2xFLEdBQ0osRUFFQUssVUFBWSxTQUFVQyxHQUNsQixPQUFPakosRUFBVVcsVUFBTSxPQUFRLEdBQVEsWUFDbkMsTUFBTXVJLEVBQU8sSUFBSSxJQUFLLENBQ2xCaEksUUFBUytILEVBQUlFLEtBQUtDLFFBQVFDLGFBQzFCdEksV0FBWWtJLEVBQUlFLEtBQUtDLFFBQVFySSxXQUM3QkUsSUFBS2dJLEVBQUlFLEtBQUtDLFFBQVFFLGFBRTFCSixFQUFLM0QsWUFBWTBELEVBQUlFLEtBQUtBLE1BQzFCLE1BQU1JLEVBQVlOLEVBQUlFLEtBQUtDLFFBQVFJLFdBQ25DLElBQUssSUFBSTdHLEVBQUksRUFBR0EsRUFBSTRHLElBQWE1RyxFQUM3QnVHLEVBQUtuRCxPQUNUMEQsWUFBWSxDQUFFLFdBQWNQLEVBQUtwRCxlQUNyQyxHQUNKLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9lZGEvLi9zcmMvd29ya2Vycy90c25lLXdvcmtlci50cyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGtlY2tlbHQvdHNuZS9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BrZWNrZWx0L3RzbmUvbGliL3RzbmUuanMiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svYm9vdHN0cmFwIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFdvcmtlciBmb3IgdGhlIG1ldGhvZCB0LVNORVxudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyBUU05FIH0gZnJvbSAnQGtlY2tlbHQvdHNuZSc7XG5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgdHNuZSA9IG5ldyBUU05FKHtcbiAgICAgICAgICAgIGVwc2lsb246IGV2dC5kYXRhLm9wdGlvbnMubGVhcm5pbmdSYXRlLFxuICAgICAgICAgICAgcGVycGxleGl0eTogZXZ0LmRhdGEub3B0aW9ucy5wZXJwbGV4aXR5LFxuICAgICAgICAgICAgZGltOiBldnQuZGF0YS5vcHRpb25zLmNvbXBvbmVudHMsXG4gICAgICAgIH0pO1xuICAgICAgICB0c25lLmluaXREYXRhUmF3KGV2dC5kYXRhLmRhdGEpO1xuICAgICAgICBjb25zdCBpdGVyQ291bnQgPSBldnQuZGF0YS5vcHRpb25zLml0ZXJhdGlvbnM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlckNvdW50OyArK2kpXG4gICAgICAgICAgICB0c25lLnN0ZXAoKTtcbiAgICAgICAgcG9zdE1lc3NhZ2UoeyAnZW1iZWRkaW5ncyc6IHRzbmUuZ2V0U29sdXRpb24oKSB9KTtcbiAgICB9KTtcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVFNORSA9IHZvaWQgMDtcbnZhciB0c25lXzEgPSByZXF1aXJlKFwiLi90c25lXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVFNORVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHNuZV8xLlRTTkU7IH0gfSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVFNORSA9IHZvaWQgMDtcbmNsYXNzIFRTTkUge1xuICAgIGNvbnN0cnVjdG9yKG9wdCkge1xuICAgICAgICAvLyByZXR1cm4gMCBtZWFuIHVuaXQgc3RhbmRhcmQgZGV2aWF0aW9uIHJhbmRvbSBudW1iZXJcbiAgICAgICAgdGhpcy5yZXR1cm5WID0gZmFsc2U7XG4gICAgICAgIHRoaXMudlZhbHVlID0gMC4wO1xuICAgICAgICB0aGlzLml0ZXIgPSAwO1xuICAgICAgICBvcHQgPSBvcHQgfHwge307XG4gICAgICAgIHRoaXMucGVycGxleGl0eSA9IHRoaXMuZ2V0b3B0KG9wdCwgJ3BlcnBsZXhpdHknLCAzMCk7IC8vIGVmZmVjdGl2ZSBudW1iZXIgb2YgbmVhcmVzdCBuZWlnaGJvcnNcbiAgICAgICAgdGhpcy5kaW0gPSB0aGlzLmdldG9wdChvcHQsICdkaW0nLCAyKTsgLy8gYnkgZGVmYXVsdCAyLUQgdFNORVxuICAgICAgICB0aGlzLmVwc2lsb24gPSB0aGlzLmdldG9wdChvcHQsICdlcHNpbG9uJywgMTApOyAvLyBsZWFybmluZyByYXRlXG4gICAgfVxuICAgIGFzc2VydChjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgICAgICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG1lc3NhZ2UgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHN5bnRheCBzdWdhclxuICAgIGdldG9wdChvcHQsIGZpZWxkLCBkZWZhdWx0dmFsKSB7XG4gICAgICAgIGlmIChvcHQuaGFzT3duUHJvcGVydHkoZmllbGQpKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0W2ZpZWxkXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0dmFsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdhdXNzUmFuZG9tKCkge1xuICAgICAgICBpZiAodGhpcy5yZXR1cm5WKSB7XG4gICAgICAgICAgICB0aGlzLnJldHVyblYgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1ID0gMiAqIE1hdGgucmFuZG9tKCkgLSAxO1xuICAgICAgICBjb25zdCB2ID0gMiAqIE1hdGgucmFuZG9tKCkgLSAxO1xuICAgICAgICBjb25zdCByID0gdSAqIHUgKyB2ICogdjtcbiAgICAgICAgaWYgKHIgPT09IDAgfHwgciA+IDEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdhdXNzUmFuZG9tKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYyA9IE1hdGguc3FydCgtMiAqIE1hdGgubG9nKHIpIC8gcik7XG4gICAgICAgIHRoaXMudlZhbHVlID0gdiAqIGM7IC8vIGNhY2hlIHRoaXMgZm9yIG5leHQgZnVuY3Rpb24gY2FsbCBmb3IgZWZmaWNpZW5jeVxuICAgICAgICB0aGlzLnJldHVyblYgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdSAqIGM7XG4gICAgfVxuICAgIC8vIHJldHVybiByYW5kb20gbm9ybWFsIG51bWJlclxuICAgIHJhbmRuKG11LCBzdGQpIHsgcmV0dXJuIG11ICsgdGhpcy5nYXVzc1JhbmRvbSgpICogc3RkOyB9XG4gICAgLy8gdXRpbGl0aXR5IHRoYXQgY3JlYXRlcyBjb250aWd1b3VzIHZlY3RvciBvZiB6ZXJvcyBvZiBzaXplIG5cbiAgICB6ZXJvcyhuKSB7XG4gICAgICAgIGlmICh0eXBlb2YgKG4pID09PSAndW5kZWZpbmVkJyB8fCBpc05hTihuKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAvLyBsYWNraW5nIGJyb3dzZXIgc3VwcG9ydFxuICAgICAgICAgICAgY29uc3QgYXJyID0gbmV3IEFycmF5KG4pO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBhcnJbaV0gPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFycjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRmxvYXQ2NEFycmF5KG4pOyAvLyB0eXBlZCBhcnJheXMgYXJlIGZhc3RlclxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHV0aWxpdHkgdGhhdCByZXR1cm5zIDJkIGFycmF5IGZpbGxlZCB3aXRoIHJhbmRvbSBudW1iZXJzXG4gICAgLy8gb3Igd2l0aCB2YWx1ZSBzLCBpZiBwcm92aWRlZFxuICAgIHJhbmRuMmQobiwgZCwgcykge1xuICAgICAgICBjb25zdCB1c2VzID0gdHlwZW9mIHMgIT09ICd1bmRlZmluZWQnO1xuICAgICAgICBjb25zdCB4ID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB4aGVyZSA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodXNlcykge1xuICAgICAgICAgICAgICAgICAgICB4aGVyZS5wdXNoKHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgeGhlcmUucHVzaCh0aGlzLnJhbmRuKDAuMCwgMWUtNCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHgucHVzaCh4aGVyZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHg7XG4gICAgfVxuICAgIC8vIGNvbXB1dGUgTDIgZGlzdGFuY2UgYmV0d2VlbiB0d28gdmVjdG9yc1xuICAgIEwyKHgxLCB4Mikge1xuICAgICAgICBjb25zdCBEID0geDEubGVuZ3RoO1xuICAgICAgICBsZXQgZCA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgRDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB4MWkgPSB4MVtpXTtcbiAgICAgICAgICAgIGNvbnN0IHgyaSA9IHgyW2ldO1xuICAgICAgICAgICAgZCArPSAoeDFpIC0geDJpKSAqICh4MWkgLSB4MmkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkO1xuICAgIH1cbiAgICAvLyBjb21wdXRlIHBhaXJ3aXNlIGRpc3RhbmNlIGluIGFsbCB2ZWN0b3JzIGluIFhcbiAgICB4dG9kKFgpIHtcbiAgICAgICAgY29uc3QgTiA9IFgubGVuZ3RoO1xuICAgICAgICBjb25zdCBkaXN0ID0gdGhpcy56ZXJvcyhOICogTik7IC8vIGFsbG9jYXRlIGNvbnRpZ3VvdXMgYXJyYXlcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLkwyKFhbaV0sIFhbal0pO1xuICAgICAgICAgICAgICAgIGRpc3RbaSAqIE4gKyBqXSA9IGQ7XG4gICAgICAgICAgICAgICAgZGlzdFtqICogTiArIGldID0gZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGlzdDtcbiAgICB9XG4gICAgLy8gY29tcHV0ZSAocF97aXxqfSArIHBfe2p8aX0pLygybilcbiAgICBkMnAoRCwgcGVycGxleGl0eSwgdG9sKSB7XG4gICAgICAgIGNvbnN0IG5mID0gTWF0aC5zcXJ0KEQubGVuZ3RoKTsgLy8gdGhpcyBiZXR0ZXIgYmUgYW4gaW50ZWdlclxuICAgICAgICBjb25zdCBuID0gTWF0aC5mbG9vcihuZik7XG4gICAgICAgIHRoaXMuYXNzZXJ0KG4gPT09IG5mLCAnRCBzaG91bGQgaGF2ZSBzcXVhcmUgbnVtYmVyIG9mIGVsZW1lbnRzLicpO1xuICAgICAgICBjb25zdCBoVGFyZ2V0ID0gTWF0aC5sb2cocGVycGxleGl0eSk7IC8vIHRhcmdldCBlbnRyb3B5IG9mIGRpc3RyaWJ1dGlvblxuICAgICAgICBjb25zdCBQID0gdGhpcy56ZXJvcyhuICogbik7IC8vIHRlbXBvcmFyeSBwcm9iYWJpbGl0eSBtYXRyaXhcbiAgICAgICAgY29uc3QgcHJvdyA9IHRoaXMuemVyb3Mobik7IC8vIGEgdGVtcG9yYXJ5IHN0b3JhZ2UgY29tcGFydG1lbnRcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBiZXRhbWluID0gLUluZmluaXR5O1xuICAgICAgICAgICAgbGV0IGJldGFtYXggPSBJbmZpbml0eTtcbiAgICAgICAgICAgIGxldCBiZXRhID0gMTsgLy8gaW5pdGlhbCB2YWx1ZSBvZiBwcmVjaXNpb25cbiAgICAgICAgICAgIGxldCBkb25lID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBtYXh0cmllcyA9IDUwO1xuICAgICAgICAgICAgLy8gcGVyZm9ybSBiaW5hcnkgc2VhcmNoIHRvIGZpbmQgYSBzdWl0YWJsZSBwcmVjaXNpb24gYmV0YVxuICAgICAgICAgICAgLy8gc28gdGhhdCB0aGUgZW50cm9weSBvZiB0aGUgZGlzdHJpYnV0aW9uIGlzIGFwcHJvcHJpYXRlXG4gICAgICAgICAgICBsZXQgbnVtID0gMDtcbiAgICAgICAgICAgIHdoaWxlICghZG9uZSkge1xuICAgICAgICAgICAgICAgIC8vZGVidWdnZXI7XG4gICAgICAgICAgICAgICAgLy8gY29tcHV0ZSBlbnRyb3B5IGFuZCBrZXJuZWwgcm93IHdpdGggYmV0YSBwcmVjaXNpb25cbiAgICAgICAgICAgICAgICBsZXQgcHN1bSA9IDAuMDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGogPSBNYXRoLmV4cCgtRFtpICogbiArIGpdICogYmV0YSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwaiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIH0gLy8gd2UgZG9udCBjYXJlIGFib3V0IGRpYWdvbmFsc1xuICAgICAgICAgICAgICAgICAgICBwcm93W2pdID0gcGo7XG4gICAgICAgICAgICAgICAgICAgIHBzdW0gKz0gcGo7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6ZSBwIGFuZCBjb21wdXRlIGVudHJvcHlcbiAgICAgICAgICAgICAgICBsZXQgbkhlcmUgPSAwLjA7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBqO1xuICAgICAgICAgICAgICAgICAgICBpZiAocHN1bSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGogPSAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGogPSBwcm93W2pdIC8gcHN1bTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwcm93W2pdID0gcGo7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwaiA+IDFlLTcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5IZXJlIC09IHBqICogTWF0aC5sb2cocGopO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGFkanVzdCBiZXRhIGJhc2VkIG9uIHJlc3VsdFxuICAgICAgICAgICAgICAgIGlmIChuSGVyZSA+IGhUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZW50cm9weSB3YXMgdG9vIGhpZ2ggKGRpc3RyaWJ1dGlvbiB0b28gZGlmZnVzZSlcbiAgICAgICAgICAgICAgICAgICAgLy8gc28gd2UgbmVlZCB0byBpbmNyZWFzZSB0aGUgcHJlY2lzaW9uIGZvciBtb3JlIHBlYWt5IGRpc3RyaWJ1dGlvblxuICAgICAgICAgICAgICAgICAgICBiZXRhbWluID0gYmV0YTsgLy8gbW92ZSB1cCB0aGUgYm91bmRzXG4gICAgICAgICAgICAgICAgICAgIGlmIChiZXRhbWF4ID09PSBJbmZpbml0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmV0YSA9IGJldGEgKiAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmV0YSA9IChiZXRhICsgYmV0YW1heCkgLyAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBjb252ZXJzZSBjYXNlLiBtYWtlIGRpc3RydWJ0aW9uIGxlc3MgcGVha3lcbiAgICAgICAgICAgICAgICAgICAgYmV0YW1heCA9IGJldGE7XG4gICAgICAgICAgICAgICAgICAgIGlmIChiZXRhbWluID09PSAtSW5maW5pdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJldGEgPSBiZXRhIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJldGEgPSAoYmV0YSArIGJldGFtaW4pIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBzdG9wcGluZyBjb25kaXRpb25zOiB0b28gbWFueSB0cmllcyBvciBnb3QgYSBnb29kIHByZWNpc2lvblxuICAgICAgICAgICAgICAgIG51bSsrO1xuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhuSGVyZSAtIGhUYXJnZXQpIDwgdG9sKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobnVtID49IG1heHRyaWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdkYXRhIHBvaW50ICcgKyBpICsgJyBnZXRzIHByZWNpc2lvbiAnICsgYmV0YSArICcgYWZ0ZXIgJyArIG51bSArICcgYmluYXJ5IHNlYXJjaCBzdGVwcy4nKTtcbiAgICAgICAgICAgIC8vIGNvcHkgb3ZlciB0aGUgZmluYWwgcHJvdyB0byBQIGF0IHJvdyBpXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgICAgIFBbaSAqIG4gKyBqXSA9IHByb3dbal07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gLy8gZW5kIGxvb3Agb3ZlciBleGFtcGxlcyBpXG4gICAgICAgIC8vIHN5bW1ldHJpemUgUCBhbmQgbm9ybWFsaXplIGl0IHRvIHN1bSB0byAxIG92ZXIgYWxsIGlqXG4gICAgICAgIGNvbnN0IHBPdXQgPSB0aGlzLnplcm9zKG4gKiBuKTtcbiAgICAgICAgY29uc3QgTjIgPSBuICogMjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgcE91dFtpICogbiArIGpdID0gTWF0aC5tYXgoKFBbaSAqIG4gKyBqXSArIFBbaiAqIG4gKyBpXSkgLyBOMiwgMWUtMTAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcE91dDtcbiAgICB9XG4gICAgLy8gaGVscGVyIGZ1bmN0aW9uXG4gICAgc2lnbih4KSB7IHJldHVybiB4ID4gMCA/IDEgOiB4IDwgMCA/IC0xIDogMDsgfVxuICAgIC8vIHRoaXMgZnVuY3Rpb24gdGFrZXMgYSBzZXQgb2YgaGlnaC1kaW1lbnNpb25hbCBwb2ludHNcbiAgICAvLyBhbmQgY3JlYXRlcyBtYXRyaXggUCBmcm9tIHRoZW0gdXNpbmcgZ2F1c3NpYW4ga2VybmVsXG4gICAgaW5pdERhdGFSYXcoWCkge1xuICAgICAgICBjb25zdCBOID0gWC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IEQgPSBYWzBdLmxlbmd0aDtcbiAgICAgICAgdGhpcy5hc3NlcnQoTiA+IDAsICcgWCBpcyBlbXB0eT8gWW91IG11c3QgaGF2ZSBzb21lIGRhdGEhJyk7XG4gICAgICAgIHRoaXMuYXNzZXJ0KEQgPiAwLCAnIFhbMF0gaXMgZW1wdHk/IFdoZXJlIGlzIHRoZSBkYXRhPycpO1xuICAgICAgICBjb25zdCBkaXN0cyA9IHRoaXMueHRvZChYKTsgLy8gY29udmVydCBYIHRvIGRpc3RhbmNlcyB1c2luZyBnYXVzc2lhbiBrZXJuZWxcbiAgICAgICAgdGhpcy5QID0gdGhpcy5kMnAoZGlzdHMsIHRoaXMucGVycGxleGl0eSwgMWUtNCk7IC8vIGF0dGFjaCB0byBvYmplY3RcbiAgICAgICAgdGhpcy5OID0gTjsgLy8gYmFjayB1cCB0aGUgc2l6ZSBvZiB0aGUgZGF0YXNldFxuICAgICAgICB0aGlzLmluaXRTb2x1dGlvbigpOyAvLyByZWZyZXNoIHRoaXNcbiAgICB9XG4gICAgLy8gdGhpcyBmdW5jdGlvbiB0YWtlcyBhIGdpdmVuIGRpc3RhbmNlIG1hdHJpeCBhbmQgY3JlYXRlc1xuICAgIC8vIG1hdHJpeCBQIGZyb20gdGhlbS5cbiAgICAvLyBEIGlzIGFzc3VtZWQgdG8gYmUgcHJvdmlkZWQgYXMgYSBsaXN0IG9mIGxpc3RzLCBhbmQgc2hvdWxkIGJlIHN5bW1ldHJpY1xuICAgIGluaXREYXRhRGlzdChEKSB7XG4gICAgICAgIGNvbnN0IE4gPSBELmxlbmd0aDtcbiAgICAgICAgdGhpcy5hc3NlcnQoTiA+IDAsICcgWCBpcyBlbXB0eT8gWW91IG11c3QgaGF2ZSBzb21lIGRhdGEhJyk7XG4gICAgICAgIC8vIGNvbnZlcnQgRCB0byBhIChmYXN0KSB0eXBlZCBhcnJheSB2ZXJzaW9uXG4gICAgICAgIGNvbnN0IGRpc3RzID0gdGhpcy56ZXJvcyhOICogTik7IC8vIGFsbG9jYXRlIGNvbnRpZ3VvdXMgYXJyYXlcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBEW2ldW2pdO1xuICAgICAgICAgICAgICAgIGRpc3RzW2kgKiBOICsgal0gPSBkO1xuICAgICAgICAgICAgICAgIGRpc3RzW2ogKiBOICsgaV0gPSBkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuUCA9IHRoaXMuZDJwKGRpc3RzLCB0aGlzLnBlcnBsZXhpdHksIDFlLTQpO1xuICAgICAgICB0aGlzLk4gPSBOO1xuICAgICAgICB0aGlzLmluaXRTb2x1dGlvbigpOyAvLyByZWZyZXNoIHRoaXNcbiAgICB9XG4gICAgLy8gKHJlKWluaXRpYWxpemVzIHRoZSBzb2x1dGlvbiB0byByYW5kb21cbiAgICBpbml0U29sdXRpb24oKSB7XG4gICAgICAgIC8vIGdlbmVyYXRlIHJhbmRvbSBzb2x1dGlvbiB0byB0LVNORVxuICAgICAgICB0aGlzLlkgPSB0aGlzLnJhbmRuMmQodGhpcy5OLCB0aGlzLmRpbSk7IC8vIHRoZSBzb2x1dGlvblxuICAgICAgICB0aGlzLmdhaW5zID0gdGhpcy5yYW5kbjJkKHRoaXMuTiwgdGhpcy5kaW0sIDEuMCk7IC8vIHN0ZXAgZ2FpbnMgdG8gYWNjZWxlcmF0ZSBwcm9ncmVzcyBpbiB1bmNoYW5naW5nIGRpcmVjdGlvbnNcbiAgICAgICAgdGhpcy55c3RlcCA9IHRoaXMucmFuZG4yZCh0aGlzLk4sIHRoaXMuZGltLCAwLjApOyAvLyBtb21lbnR1bSBhY2N1bXVsYXRvclxuICAgICAgICB0aGlzLml0ZXIgPSAwO1xuICAgIH1cbiAgICAvLyByZXR1cm4gcG9pbnRlciB0byBjdXJyZW50IHNvbHV0aW9uXG4gICAgZ2V0U29sdXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLlk7XG4gICAgfVxuICAgIC8vIHBlcmZvcm0gYSBzaW5nbGUgc3RlcCBvZiBvcHRpbWl6YXRpb24gdG8gaW1wcm92ZSB0aGUgZW1iZWRkaW5nXG4gICAgc3RlcCgpIHtcbiAgICAgICAgdGhpcy5pdGVyICs9IDE7XG4gICAgICAgIGNvbnN0IE4gPSB0aGlzLk47XG4gICAgICAgIGNvbnN0IGNnID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpOyAvLyBldmFsdWF0ZSBncmFkaWVudFxuICAgICAgICBjb25zdCBjb3N0ID0gY2cuY29zdDtcbiAgICAgICAgY29uc3QgZ3JhZCA9IGNnLmdyYWQ7XG4gICAgICAgIC8vIHBlcmZvcm0gZ3JhZGllbnQgc3RlcFxuICAgICAgICBjb25zdCB5bWVhbiA9IHRoaXMuemVyb3ModGhpcy5kaW0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCB0aGlzLmRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ2lkID0gZ3JhZFtpXVtkXTtcbiAgICAgICAgICAgICAgICBjb25zdCBzaWQgPSB0aGlzLnlzdGVwW2ldW2RdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdhaW5pZCA9IHRoaXMuZ2FpbnNbaV1bZF07XG4gICAgICAgICAgICAgICAgLy8gY29tcHV0ZSBnYWluIHVwZGF0ZVxuICAgICAgICAgICAgICAgIGxldCBuZXdnYWluID0gdGhpcy5zaWduKGdpZCkgPT09IHRoaXMuc2lnbihzaWQpID8gZ2FpbmlkICogMC44IDogZ2FpbmlkICsgMC4yO1xuICAgICAgICAgICAgICAgIGlmIChuZXdnYWluIDwgMC4wMSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdnYWluID0gMC4wMTtcbiAgICAgICAgICAgICAgICB9IC8vIGNsYW1wXG4gICAgICAgICAgICAgICAgdGhpcy5nYWluc1tpXVtkXSA9IG5ld2dhaW47IC8vIHN0b3JlIGZvciBuZXh0IHR1cm5cbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIG1vbWVudHVtIHN0ZXAgZGlyZWN0aW9uXG4gICAgICAgICAgICAgICAgY29uc3QgbW9tdmFsID0gdGhpcy5pdGVyIDwgMjUwID8gMC41IDogMC44O1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld3NpZCA9IG1vbXZhbCAqIHNpZCAtIHRoaXMuZXBzaWxvbiAqIG5ld2dhaW4gKiBncmFkW2ldW2RdO1xuICAgICAgICAgICAgICAgIHRoaXMueXN0ZXBbaV1bZF0gPSBuZXdzaWQ7IC8vIHJlbWVtYmVyIHRoZSBzdGVwIHdlIHRvb2tcbiAgICAgICAgICAgICAgICAvLyBzdGVwIVxuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSArPSBuZXdzaWQ7XG4gICAgICAgICAgICAgICAgeW1lYW5bZF0gKz0gdGhpcy5ZW2ldW2RdOyAvLyBhY2N1bXVsYXRlIG1lYW4gc28gdGhhdCB3ZSBjYW4gY2VudGVyIGxhdGVyXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVwcm9qZWN0IFkgdG8gYmUgemVybyBtZWFuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IHRoaXMuZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLllbaV1bZF0gLT0geW1lYW5bZF0gLyBOO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vaWYodGhpcy5pdGVyJTEwMD09PTApIGNvbnNvbGUubG9nKCdpdGVyICcgKyB0aGlzLml0ZXIgKyAnLCBjb3N0OiAnICsgY29zdCk7XG4gICAgICAgIHJldHVybiBjb3N0OyAvLyByZXR1cm4gY3VycmVudCBjb3N0XG4gICAgfVxuICAgIC8vIGZvciBkZWJ1Z2dpbmc6IGdyYWRpZW50IGNoZWNrXG4gICAgZGVidWdHcmFkKCkge1xuICAgICAgICBjb25zdCBOID0gdGhpcy5OO1xuICAgICAgICBjb25zdCBjZyA9IHRoaXMuY29zdEdyYWQodGhpcy5ZKTsgLy8gZXZhbHVhdGUgZ3JhZGllbnRcbiAgICAgICAgY29uc3QgY29zdCA9IGNnLmNvc3Q7XG4gICAgICAgIGNvbnN0IGdyYWQgPSBjZy5ncmFkO1xuICAgICAgICBjb25zdCBlID0gMWUtNTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgdGhpcy5kaW07IGQrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHlvbGQgPSB0aGlzLllbaV1bZF07XG4gICAgICAgICAgICAgICAgdGhpcy5ZW2ldW2RdID0geW9sZCArIGU7XG4gICAgICAgICAgICAgICAgY29uc3QgY2cwID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpO1xuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSA9IHlvbGQgLSBlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNnMSA9IHRoaXMuY29zdEdyYWQodGhpcy5ZKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhbmFseXRpYyA9IGdyYWRbaV1bZF07XG4gICAgICAgICAgICAgICAgY29uc3QgbnVtZXJpY2FsID0gKGNnMC5jb3N0IC0gY2cxLmNvc3QpIC8gKDIgKiBlKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhpICsgJywnICsgZCArICc6IGdyYWRjaGVjayBhbmFseXRpYzogJyArIGFuYWx5dGljICsgJyB2cy4gbnVtZXJpY2FsOiAnICsgbnVtZXJpY2FsKTtcbiAgICAgICAgICAgICAgICB0aGlzLllbaV1bZF0gPSB5b2xkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHJldHVybiBjb3N0IGFuZCBncmFkaWVudCwgZ2l2ZW4gYW4gYXJyYW5nZW1lbnRcbiAgICBjb3N0R3JhZChZKSB7XG4gICAgICAgIGNvbnN0IE4gPSB0aGlzLk47XG4gICAgICAgIGNvbnN0IGRpbSA9IHRoaXMuZGltOyAvLyBkaW0gb2Ygb3V0cHV0IHNwYWNlXG4gICAgICAgIGNvbnN0IFAgPSB0aGlzLlA7XG4gICAgICAgIGNvbnN0IHBtdWwgPSB0aGlzLml0ZXIgPCAxMDAgPyA0IDogMTsgLy8gdHJpY2sgdGhhdCBoZWxwcyB3aXRoIGxvY2FsIG9wdGltYVxuICAgICAgICAvLyBjb21wdXRlIGN1cnJlbnQgUSBkaXN0cmlidXRpb24sIHVubm9ybWFsaXplZCBmaXJzdFxuICAgICAgICBjb25zdCBxdUFyciA9IHRoaXMuemVyb3MoTiAqIE4pO1xuICAgICAgICBsZXQgcXN1bSA9IDAuMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGxldCBkc3VtID0gMC4wO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGhlcmUgPSBZW2ldW2RdIC0gWVtqXVtkXTtcbiAgICAgICAgICAgICAgICAgICAgZHN1bSArPSBkaGVyZSAqIGRoZXJlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBxdSA9IDEuMCAvICgxLjAgKyBkc3VtKTsgLy8gU3R1ZGVudCB0LWRpc3RyaWJ1dGlvblxuICAgICAgICAgICAgICAgIHF1QXJyW2kgKiBOICsgal0gPSBxdTtcbiAgICAgICAgICAgICAgICBxdUFycltqICogTiArIGldID0gcXU7XG4gICAgICAgICAgICAgICAgcXN1bSArPSAyICogcXU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gbm9ybWFsaXplIFEgZGlzdHJpYnV0aW9uIHRvIHN1bSB0byAxXG4gICAgICAgIGNvbnN0IE5OID0gTiAqIE47XG4gICAgICAgIGNvbnN0IFEgPSB0aGlzLnplcm9zKE5OKTtcbiAgICAgICAgZm9yIChsZXQgcSA9IDA7IHEgPCBOTjsgcSsrKSB7XG4gICAgICAgICAgICBRW3FdID0gTWF0aC5tYXgocXVBcnJbcV0gLyBxc3VtLCAxZS0xMDApO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjb3N0ID0gMC4wO1xuICAgICAgICBjb25zdCBncmFkID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBnc3VtID0gbmV3IEFycmF5KGRpbSk7IC8vIGluaXQgZ3JhZCBmb3IgcG9pbnQgaVxuICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCBkaW07IGQrKykge1xuICAgICAgICAgICAgICAgIGdzdW1bZF0gPSAwLjA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGNvc3QgKz0gLVBbaSAqIE4gKyBqXSAqIE1hdGgubG9nKFFbaSAqIE4gKyBqXSk7IC8vIGFjY3VtdWxhdGUgY29zdCAodGhlIG5vbi1jb25zdGFudCBwb3J0aW9uIGF0IGxlYXN0Li4uKVxuICAgICAgICAgICAgICAgIGNvbnN0IHByZW11bHQgPSA0ICogKHBtdWwgKiBQW2kgKiBOICsgal0gLSBRW2kgKiBOICsgal0pICogcXVBcnJbaSAqIE4gKyBqXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IGRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGdzdW1bZF0gKz0gcHJlbXVsdCAqIChZW2ldW2RdIC0gWVtqXVtkXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JhZC5wdXNoKGdzdW0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGNvc3QsIGdyYWQgfTtcbiAgICB9XG59XG5leHBvcnRzLlRTTkUgPSBUU05FO1xuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJleHBvcnRzIiwidHNuZV8xIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiVFNORSIsInZhbHVlIiwiY29uc3RydWN0b3IiLCJvcHQiLCJ0aGlzIiwicmV0dXJuViIsInZWYWx1ZSIsIml0ZXIiLCJwZXJwbGV4aXR5IiwiZ2V0b3B0IiwiZGltIiwiZXBzaWxvbiIsImFzc2VydCIsImNvbmRpdGlvbiIsIm1lc3NhZ2UiLCJmaWVsZCIsImRlZmF1bHR2YWwiLCJoYXNPd25Qcm9wZXJ0eSIsImdhdXNzUmFuZG9tIiwidSIsIk1hdGgiLCJyYW5kb20iLCJ2IiwiciIsImMiLCJzcXJ0IiwibG9nIiwicmFuZG4iLCJtdSIsInN0ZCIsInplcm9zIiwibiIsImlzTmFOIiwiQXJyYXlCdWZmZXIiLCJhcnIiLCJBcnJheSIsImkiLCJGbG9hdDY0QXJyYXkiLCJyYW5kbjJkIiwiZCIsInMiLCJ1c2VzIiwieCIsInhoZXJlIiwiaiIsInB1c2giLCJMMiIsIngxIiwieDIiLCJEIiwibGVuZ3RoIiwieDFpIiwieDJpIiwieHRvZCIsIlgiLCJOIiwiZGlzdCIsImQycCIsInRvbCIsIm5mIiwiZmxvb3IiLCJoVGFyZ2V0IiwiUCIsInByb3ciLCJiZXRhbWluIiwiYmV0YW1heCIsIkluZmluaXR5IiwiYmV0YSIsImRvbmUiLCJtYXh0cmllcyIsIm51bSIsInBzdW0iLCJwaiIsImV4cCIsIm5IZXJlIiwiYWJzIiwicE91dCIsIk4yIiwibWF4Iiwic2lnbiIsImluaXREYXRhUmF3IiwiZGlzdHMiLCJpbml0U29sdXRpb24iLCJpbml0RGF0YURpc3QiLCJZIiwiZ2FpbnMiLCJ5c3RlcCIsImdldFNvbHV0aW9uIiwic3RlcCIsImNnIiwiY29zdEdyYWQiLCJjb3N0IiwiZ3JhZCIsInltZWFuIiwiZ2lkIiwic2lkIiwiZ2FpbmlkIiwibmV3Z2FpbiIsIm5ld3NpZCIsImRlYnVnR3JhZCIsImUiLCJ5b2xkIiwiY2cwIiwiY2cxIiwiYW5hbHl0aWMiLCJudW1lcmljYWwiLCJjb25zb2xlIiwicG11bCIsInF1QXJyIiwicXN1bSIsImRzdW0iLCJkaGVyZSIsInF1IiwiTk4iLCJRIiwicSIsImdzdW0iLCJwcmVtdWx0IiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwidW5kZWZpbmVkIiwibW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiZ2VuZXJhdG9yIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJuZXh0IiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJ0aGVuIiwiYXBwbHkiLCJvbm1lc3NhZ2UiLCJldnQiLCJ0c25lIiwiZGF0YSIsIm9wdGlvbnMiLCJsZWFybmluZ1JhdGUiLCJjb21wb25lbnRzIiwiaXRlckNvdW50IiwiaXRlcmF0aW9ucyIsInBvc3RNZXNzYWdlIl0sInNvdXJjZVJvb3QiOiIifQ==
|