onesec-bridge
Version:
A library for interacting with the onesec.to bridge
1 lines • 238 kB
JavaScript
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Ti=require("fflate"),nr=require("@dfinity/agent");var Bn=typeof document<"u"?document.currentScript:null;const Ze="abcdefghijklmnopqrstuvwxyz234567",ce=Object.create(null);for(let e=0;e<Ze.length;e++)ce[Ze[e]]=e;ce[0]=ce.o;ce[1]=ce.i;function Ni(e){let t=0,n=0,r="";function s(i){return t<0?n|=i>>-t:n=i<<t&248,t>3?(t-=8,1):(t<4&&(r+=Ze[n>>3],t+=5),0)}for(let i=0;i<e.length;)i+=s(e[i]);return r+(t<0?Ze[n>>3]:"")}function ki(e){let t=0,n=0;const r=new Uint8Array(e.length*4/3|0);let s=0;function i(a){let o=ce[a.toLowerCase()];if(o===void 0)throw new Error(`Invalid character: ${JSON.stringify(a)}`);o<<=3,n|=o>>>t,t+=5,t>=8&&(r[s++]=n,t-=8,t>0?n=o<<5-t&255:n=0)}for(const a of e)i(a);return r.slice(0,s)}const Ci=new Uint32Array([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]);function Oi(e){let t=-1;for(let n=0;n<e.length;n++){const s=(e[n]^t)&255;t=Ci[s]^t>>>8}return(t^-1)>>>0}/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function Fi(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function rn(e,...t){if(!Fi(e))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(e.length))throw new Error("Uint8Array expected of length "+t+", got length="+e.length)}function yr(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function Si(e,t){rn(e);const n=t.outputLen;if(e.length<n)throw new Error("digestInto() expects output buffer of length at least "+n)}function Wn(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}function Pn(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function ot(e,t){return e<<32-t|e>>>t}const rs=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Ri=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function Ui(e){if(rn(e),rs)return e.toHex();let t="";for(let n=0;n<e.length;n++)t+=Ri[e[n]];return t}const dt={_0:48,_9:57,A:65,F:70,a:97,f:102};function br(e){if(e>=dt._0&&e<=dt._9)return e-dt._0;if(e>=dt.A&&e<=dt.F)return e-(dt.A-10);if(e>=dt.a&&e<=dt.f)return e-(dt.a-10)}function Bi(e){if(typeof e!="string")throw new Error("hex string expected, got "+typeof e);if(rs)return Uint8Array.fromHex(e);const t=e.length,n=t/2;if(t%2)throw new Error("hex string expected, got unpadded hex of length "+t);const r=new Uint8Array(n);for(let s=0,i=0;s<n;s++,i+=2){const a=br(e.charCodeAt(i)),o=br(e.charCodeAt(i+1));if(a===void 0||o===void 0){const c=e[i]+e[i+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+i)}r[s]=a*16+o}return r}function Pi(e){if(typeof e!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(e))}function ss(e){return typeof e=="string"&&(e=Pi(e)),rn(e),e}let Vi=class{};function _i(e){const t=r=>e().update(ss(r)).digest(),n=e();return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=()=>e(),t}function Mi(e,t,n,r){if(typeof e.setBigUint64=="function")return e.setBigUint64(t,n,r);const s=BigInt(32),i=BigInt(4294967295),a=Number(n>>s&i),o=Number(n&i),c=r?4:0,u=r?0:4;e.setUint32(t+c,a,r),e.setUint32(t+u,o,r)}function zi(e,t,n){return e&t^~e&n}function Gi(e,t,n){return e&t^e&n^t&n}class Hi extends Vi{constructor(t,n,r,s){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=t,this.outputLen=n,this.padOffset=r,this.isLE=s,this.buffer=new Uint8Array(t),this.view=Pn(this.buffer)}update(t){yr(this),t=ss(t),rn(t);const{view:n,buffer:r,blockLen:s}=this,i=t.length;for(let a=0;a<i;){const o=Math.min(s-this.pos,i-a);if(o===s){const c=Pn(t);for(;s<=i-a;a+=s)this.process(c,a);continue}r.set(t.subarray(a,a+o),this.pos),this.pos+=o,a+=o,this.pos===s&&(this.process(n,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){yr(this),Si(t,this),this.finished=!0;const{buffer:n,view:r,blockLen:s,isLE:i}=this;let{pos:a}=this;n[a++]=128,Wn(this.buffer.subarray(a)),this.padOffset>s-a&&(this.process(r,0),a=0);for(let f=a;f<s;f++)n[f]=0;Mi(r,s-8,BigInt(this.length*8),i),this.process(r,0);const o=Pn(t),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const u=c/4,l=this.get();if(u>l.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<u;f++)o.setUint32(4*f,l[f],i)}digest(){const{buffer:t,outputLen:n}=this;this.digestInto(t);const r=t.slice(0,n);return this.destroy(),r}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());const{blockLen:n,buffer:r,length:s,finished:i,destroyed:a,pos:o}=this;return t.destroyed=a,t.finished=i,t.length=s,t.pos=o,s%n&&t.buffer.set(r),t}clone(){return this._cloneInto()}}const kt=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Ct=Uint32Array.from([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]),Wi=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ot=new Uint32Array(64);class Xi extends Hi{constructor(t=32){super(64,t,8,!1),this.A=kt[0]|0,this.B=kt[1]|0,this.C=kt[2]|0,this.D=kt[3]|0,this.E=kt[4]|0,this.F=kt[5]|0,this.G=kt[6]|0,this.H=kt[7]|0}get(){const{A:t,B:n,C:r,D:s,E:i,F:a,G:o,H:c}=this;return[t,n,r,s,i,a,o,c]}set(t,n,r,s,i,a,o,c){this.A=t|0,this.B=n|0,this.C=r|0,this.D=s|0,this.E=i|0,this.F=a|0,this.G=o|0,this.H=c|0}process(t,n){for(let f=0;f<16;f++,n+=4)Ot[f]=t.getUint32(n,!1);for(let f=16;f<64;f++){const d=Ot[f-15],p=Ot[f-2],v=ot(d,7)^ot(d,18)^d>>>3,A=ot(p,17)^ot(p,19)^p>>>10;Ot[f]=A+Ot[f-7]+v+Ot[f-16]|0}let{A:r,B:s,C:i,D:a,E:o,F:c,G:u,H:l}=this;for(let f=0;f<64;f++){const d=ot(o,6)^ot(o,11)^ot(o,25),p=l+d+zi(o,c,u)+Wi[f]+Ot[f]|0,A=(ot(r,2)^ot(r,13)^ot(r,22))+Gi(r,s,i)|0;l=u,u=c,c=o,o=a+p|0,a=i,i=s,s=r,r=p+A|0}r=r+this.A|0,s=s+this.B|0,i=i+this.C|0,a=a+this.D|0,o=o+this.E|0,c=c+this.F|0,u=u+this.G|0,l=l+this.H|0,this.set(r,s,i,a,o,c,u,l)}roundClean(){Wn(Ot)}destroy(){this.set(0,0,0,0,0,0,0,0),Wn(this.buffer)}}class Ji extends Xi{constructor(){super(28),this.A=Ct[0]|0,this.B=Ct[1]|0,this.C=Ct[2]|0,this.D=Ct[3]|0,this.E=Ct[4]|0,this.F=Ct[5]|0,this.G=Ct[6]|0,this.H=Ct[7]|0}}const qi=_i(()=>new Ji),ze="__principal__",Yi=2,wr=4,Ii="aaaaa-aa";let ue=class se{static anonymous(){return new this(new Uint8Array([wr]))}static managementCanister(){return this.fromText(Ii)}static selfAuthenticating(t){const n=qi(t);return new this(new Uint8Array([...n,Yi]))}static from(t){if(typeof t=="string")return se.fromText(t);if(Object.getPrototypeOf(t)===Uint8Array.prototype)return new se(t);if(se.isPrincipal(t))return new se(t._arr);throw new Error(`Impossible to convert ${JSON.stringify(t)} to Principal.`)}static fromHex(t){return new this(Bi(t))}static fromText(t){let n=t;if(t.includes(ze)){const a=JSON.parse(t);ze in a&&(n=a[ze])}const r=n.toLowerCase().replace(/-/g,"");let s=ki(r);s=s.slice(4,s.length);const i=new this(s);if(i.toText()!==n)throw new Error(`Principal "${i.toText()}" does not have a valid checksum (original value "${n}" may not be a valid Principal ID).`);return i}static fromUint8Array(t){return new this(t)}static isPrincipal(t){return t instanceof se||typeof t=="object"&&t!==null&&"_isPrincipal"in t&&t._isPrincipal===!0&&"_arr"in t&&t._arr instanceof Uint8Array}constructor(t){this._arr=t,this._isPrincipal=!0}isAnonymous(){return this._arr.byteLength===1&&this._arr[0]===wr}toUint8Array(){return this._arr}toHex(){return Ui(this._arr).toUpperCase()}toText(){const t=new ArrayBuffer(4);new DataView(t).setUint32(0,Oi(this._arr));const r=new Uint8Array(t),s=new Uint8Array([...r,...this._arr]),a=Ni(s).match(/.{1,5}/g);if(!a)throw new Error;return a.join("-")}toString(){return this.toText()}toJSON(){return{[ze]:this.toText()}}compareTo(t){for(let n=0;n<Math.min(this._arr.length,t._arr.length);n++){if(this._arr[n]<t._arr[n])return"lt";if(this._arr[n]>t._arr[n])return"gt"}return this._arr.length<t._arr.length?"lt":this._arr.length>t._arr.length?"gt":"eq"}ltEq(t){const n=this.compareTo(t);return n=="lt"||n=="eq"}gtEq(t){const n=this.compareTo(t);return n=="gt"||n=="eq"}};const ji=new Map([["ICP",{evmMode:"minter",erc20Mainnet:"0x00f3C42833C3170159af4E92dbb451Fb3F708917",erc20Local:"0x00f3C42833C3170159af4E92dbb451Fb3F708917",erc20Testnet:"0xa96496d9Ef442a3CF8F3e24B614b87a70ddf74f3",ledger:"ryjl3-tyaaa-aaaaa-aaaba-cai",ledgerFee:10000n,decimals:8}],["USDC",{evmMode:"locker",erc20MainnetBase:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",erc20MainnetArbitrum:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831",erc20MainnetEthereum:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",lockerMainnet:"0xAe2351B15cFf68b5863c6690dCA58Dce383bf45A",lockerLocal:"0xAe2351B15cFf68b5863c6690dCA58Dce383bf45A",lockerTestnet:"0x38200DD4c3adbE86Be49717ccA8a3fD08466Cba6",ledgerMainnet:"53nhb-haaaa-aaaar-qbn5q-cai",ledgerLocal:"53nhb-haaaa-aaaar-qbn5q-cai",ledgerTestnet:"7csws-aiaaa-aaaar-qaqpa-cai",ledgerFee:10000n,decimals:6}],["USDT",{evmMode:"locker",erc20MainnetEthereum:"0xdAC17F958D2ee523a2206206994597C13D831ec7",lockerMainnetEthereum:"0xc5AC945a0af0768929301A27D6f2a7770995fAeb",erc20LocalEthereum:"0xdAC17F958D2ee523a2206206994597C13D831ec7",lockerLocalEthereum:"0xc5AC945a0af0768929301A27D6f2a7770995fAeb",erc20TestnetEthereum:"0xdAC17F958D2ee523a2206206994597C13D831ec7",lockerTestnetEthereum:"0x205E3f1001bbE91971D25349ac3aA949D9Be5079",ledgerMainnet:"ij33n-oiaaa-aaaar-qbooa-cai",ledgerLocal:"ij33n-oiaaa-aaaar-qbooa-cai",ledgerTestnet:"n4dku-tiaaa-aaaar-qboqa-cai",ledgerFee:10000n,decimals:6}],["cbBTC",{evmMode:"locker",erc20:"0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf",lockerMainnet:"0x7744c6a83E4b43921f27d3c94a742bf9cd24c062",lockerLocal:"0x7744c6a83E4b43921f27d3c94a742bf9cd24c062",lockerTestnet:"0xd543007D8415169756e8a61b2cc079369d4aB6a8",ledgerMainnet:"io25z-dqaaa-aaaar-qbooq-cai",ledgerLocal:"io25z-dqaaa-aaaar-qbooq-cai",ledgerTestnet:"n3cma-6qaaa-aaaar-qboqq-cai",ledgerFee:20n,decimals:8}],["ckBTC",{evmMode:"minter",erc20Mainnet:"0x919A41Ea07c26f0001859Bc5dcb8754068718Fb7",erc20Local:"0x919A41Ea07c26f0001859Bc5dcb8754068718Fb7",erc20Testnet:"0x9D8dE8E7Cd748F760C81199AD3b902798DA7E7bC",ledger:"mxzaz-hqaaa-aaaar-qaada-cai",ledgerFee:10n,decimals:8}],["GLDT",{evmMode:"minter",erc20Mainnet:"0x86856814e74456893Cfc8946BedcBb472b5fA856",erc20Local:"0x86856814e74456893Cfc8946BedcBb472b5fA856",erc20Testnet:"0xB5A497b709703eC987B6879f064B02017998De1d",ledger:"6c7su-kiaaa-aaaar-qaira-cai",ledgerFee:10000000n,decimals:8}],["BOB",{evmMode:"minter",erc20Mainnet:"0xecc5f868AdD75F4ff9FD00bbBDE12C35BA2C9C89",erc20Local:"0xecc5f868AdD75F4ff9FD00bbBDE12C35BA2C9C89",erc20Testnet:"0xc6d02fa25bC437E38099476a6856225aE5ac2C75",ledger:"7pail-xaaaa-aaaas-aabmq-cai",ledgerFee:1000000n,decimals:8}]]),ft={tokens:ji,icp:{hosts:new Map([["Mainnet","https://ic0.app"],["Testnet","https://ic0.app"],["Local","http://127.0.1:8080"]]),onesec:new Map([["Mainnet","5okwm-giaaa-aaaar-qbn6a-cai"],["Testnet","zvjow-lyaaa-aaaar-qap7q-cai"],["Local","5okwm-giaaa-aaaar-qbn6a-cai"]]),pollDelayMs:new Map([["Mainnet",1e3],["Testnet",1e3],["Local",10]])},evm:new Map([["Arbitrum",{confirmBlocks:96,blockTimeMs:new Map([["Mainnet",240],["Testnet",240],["Local",10]])}],["Base",{confirmBlocks:12,blockTimeMs:new Map([["Mainnet",1900],["Testnet",1900],["Local",10]])}],["Ethereum",{confirmBlocks:4,blockTimeMs:new Map([["Mainnet",12e3],["Testnet",12e3],["Local",10]])}]]),abi:{erc20_and_minter:["function balanceOf(address account) view returns (uint256)","function burn1(uint256 amount, bytes32 data1)","function burn2(uint256 amount, bytes32 data1, bytes32 data2)","function approve(address spender, uint256 amount) returns (bool)"],erc20:["function balanceOf(address account) view returns (uint256)","function approve(address spender, uint256 amount) returns (bool)"],locker:["function lock1(uint256 amount, bytes32 data1)","function lock2(uint256 amount, bytes32 data1, bytes32 data2)"]}};function Ki(e,t,n){const r=[];return n!==void 0&&r.push(`${e}${t}${n}`),r.push(`${e}${t}`),r.push(e),r}function rr(e,t,n,r){const s=Ki(t,n,r);for(const i of s){const a=e[i];if(a!==void 0)return a}}function Zi(e,t,n,r){const s=e.tokens.get(t);if(s)return rr(s,"erc20",n,r)}function Qi(e,t,n,r){const s=e.tokens.get(t);if(!(!s||s.evmMode!=="locker"))return rr(s,"locker",n,r)}function is(e,t,n){const r=e.tokens.get(t);if(!r)throw new Error(`Token ${t} not found in config`);return rr(r,"ledger",n)}function Xn(e,t){const n=e.tokens.get(t);if(!n)throw new Error(`Token ${t} not found in config`);return n.decimals}function Di(e,t){const n=e.tokens.get(t);if(!n)throw new Error(`Token ${t} not found in config`);return n.evmMode}function as(e,t){return e.tokens.get(t)}function pt(e,t){const n=e.icp.pollDelayMs.get(t);if(n===void 0)throw new Error(`Poll delay not found for deployment: ${t}`);return n}const Li=({IDL:e})=>{const t=e.Variant({Mainnet:e.Null,Local:e.Null,Test:e.Null,Testnet:e.Null}),n=e.Record({deployment:t}),r=e.Variant({Base:e.Null,Ethereum:e.Null,Arbitrum:e.Null}),s=e.Variant({BOB:e.Null,ICP:e.Null,GLDT:e.Null,USDC:e.Null,USDT:e.Null,cbBTC:e.Null,ckBTC:e.Null}),i=e.Record({token:s,initial_balance:e.Opt(e.Nat64),logger_address:e.Opt(e.Text),erc20_address:e.Opt(e.Text)}),a=e.Record({initial_nonce:e.Opt(e.Nat64),chain:r,initial_block:e.Opt(e.Nat64),ledger:e.Vec(i)}),o=e.Record({token:s,initial_balance:e.Opt(e.Nat64)}),c=e.Record({ledger:e.Vec(o)}),u=e.Record({evm:e.Vec(a),icp:e.Opt(c),deployment:t});e.Variant({Upgrade:n,Init:u});const l=e.Variant({ICRC:e.Record({owner:e.Principal,subaccount:e.Opt(e.Vec(e.Nat8))}),AccountId:e.Text}),f=e.Record({token:s,chain:r,address:e.Text,receiver:l}),d=e.Record({log_index:e.Opt(e.Nat64),hash:e.Text}),p=e.Variant({LowBalance:e.Record({balance:e.Nat,min_amount:e.Nat}),CheckingBalance:e.Null,Forwarding:e.Null,Forwarded:d}),v=e.Record({id:e.Nat64}),A=e.Record({status:e.Opt(p),done:e.Opt(v)}),O=e.Record({count:e.Nat64,label:e.Text}),T=e.Record({method:e.Text,duration_in_ms:e.Vec(e.Nat64),results:e.Vec(O),response_in_bytes:e.Vec(e.Nat64),canister:e.Principal,cost_in_cycles:e.Vec(e.Nat64)}),B=e.Record({fetch_time_safe_ms:e.Opt(e.Nat64),chain:e.Opt(r),fetch_time_latest_ms:e.Opt(e.Nat64),block_number_safe:e.Opt(e.Nat64),block_time_ms:e.Nat64,block_number_latest:e.Opt(e.Nat64)}),X=e.Record({token:s,chain:r,address:e.Text,receiver:l}),$=e.Record({bytes:e.Vec(e.Nat8)}),Dt=e.Record({total_tx_cost_in_wei:e.Nat64,token:s,approve_tx:e.Opt($),address:e.Text,nonce:e.Nat64,lock_or_burn_tx:$,receiver:l}),Lt=e.Record({token:e.Opt(s),ledger:e.Principal,index:e.Opt(e.Principal)}),pn=e.Record({chain_code_hex:e.Text,public_key_pem:e.Text}),tt=e.Variant({ICP:e.Null,Base:e.Null,Ethereum:e.Null,Arbitrum:e.Null}),mn=e.Record({wei_per_token:e.Float64,decimals:e.Nat8,token:e.Opt(s),balance:e.Nat,contract:e.Text,queue_size:e.Nat64,chain:e.Opt(tt),locker:e.Opt(e.Text),topics:e.Vec(e.Vec(e.Nat8))}),Be=e.Record({max_fee_per_gas_average:e.Nat64,max_priority_fee_per_gas:e.Nat64,fetch_time_safe_ms:e.Opt(e.Nat64),chain:e.Opt(r),fetch_time_latest_ms:e.Opt(e.Nat64),max_fee_per_gas:e.Nat64,chain_id:e.Nat64,block_number_safe:e.Opt(e.Nat64),nonce:e.Nat64,max_priority_fee_per_gas_average:e.Nat64,block_time_ms:e.Nat64,block_number_latest:e.Opt(e.Nat64)}),gn=e.Record({stable_memory_bytes:e.Nat64,wasm_memory_bytes:e.Nat64,event_count:e.Nat64,ecdsa:e.Opt(pn),tokens:e.Vec(mn),cycle_balance:e.Nat,evm_chains:e.Vec(Be),last_upgrade_time:e.Nat64,event_bytes:e.Nat64}),me=e.Variant({HttpRequest:e.Null,GetTransfers:e.Null,ValidateForwardingAddress:e.Null,GetCanisterCalls:e.Null,GetForwardingTransactions:e.Null,SubmitForwardingUpdate:e.Null,GetMetadata:e.Null,GetRelayTasks:e.Null,UpdateEstimates:e.Null,ForwardEvmToIcp:e.Null,GetForwardingAccounts:e.Null,GetEvmAddress:e.Null,ScheduleAllTasks:e.Null,RunTask:e.Null,GetWeiPerIcpRate:e.Null,SubmitRelayProof:e.Null,Transfer:e.Null,GetEvents:e.Null,GetForwardingAddress:e.Null,GetTransfer:e.Null,TransferEvmToIcp:e.Null,TransferIcpToEvm:e.Null}),yn=e.Variant({FetchTxLogs:e.Null}),Pe=e.Variant({NewTx:e.Null,PollTx:e.Null,SendTx:e.Null,FetchFeeEstimate:e.Null}),bn=e.Variant({SignTx:e.Null}),wn=e.Variant({FetchLatestBlock:e.Null,FetchSafeBlock:e.Null}),xn=e.Variant({Reader:yn,Writer:Pe,Forwarder:bn,Prover:wn}),vn=e.Variant({TransferFee:e.Null,Transfer:e.Null}),An=e.Variant({InitializeEcdsaPublicKey:e.Null,RefreshExchangeRate:e.Null,Ledger:e.Record({token:s,task:vn})}),$t=e.Variant({Evm:e.Record({chain:r,task:xn}),Icp:An}),ge=e.Variant({SendEvmTransaction:e.Record({id:e.Nat64,tx:$}),FetchEvmBlock:e.Record({block_number:e.Nat64})}),Ve=e.Record({error:e.Text}),En=e.Record({block_index:e.Nat64,ledger:e.Principal}),te=e.Variant({Evm:d,Icp:En}),Tn=e.Variant({Failed:Ve,Refunded:te,PendingRefundTx:e.Null,PendingDestinationTx:e.Null,Succeeded:e.Null,PendingSourceTx:e.Null}),ye=e.Record({address:e.Text}),ee=e.Variant({Evm:ye,Icp:l}),_e=e.Record({tx:e.Opt(te),token:e.Opt(s),chain:e.Opt(tt),account:e.Opt(ee),amount:e.Nat}),ne=e.Variant({Ok:e.Null,Err:e.Text}),Nn=e.Variant({PendingConfirmTx:e.Null,ConfirmTx:e.Null,SendTx:e.Null,FetchTx:e.Null,SignTx:e.Null}),kn=e.Record({tx:e.Opt(te),end:e.Opt(e.Nat64),result:e.Opt(ne),chain:e.Opt(tt),block_number:e.Opt(e.Nat64),event:e.Opt(Nn),start:e.Nat64}),Cn=e.Record({entries:e.Vec(kn)}),Me=e.Record({end:e.Opt(e.Nat64),status:e.Opt(Tn),destination:_e,trace:Cn,source:_e,start:e.Opt(e.Nat64),queue_position:e.Opt(e.Nat64)}),On=e.Record({source_chain:e.Opt(tt),destination_chain:e.Opt(tt),latest_transfer_fee_in_tokens:e.Nat,min_amount:e.Nat,average_transfer_fee_in_tokens:e.Nat,available:e.Opt(e.Nat),source_token:e.Opt(s),max_amount:e.Nat,protocol_fee_in_percent:e.Float64,destination_token:e.Opt(s)}),Fn=e.Record({source_chain:e.Opt(tt),destination_chain:e.Opt(tt),count:e.Nat64,source_token:e.Opt(s),duration_ms_avg:e.Nat64,duration_ms_max:e.Nat64,destination_token:e.Opt(s)}),Sn=e.Record({count:e.Nat64,skip:e.Nat64,accounts:e.Vec(ee)}),Rn=e.Record({total_tx_cost_in_wei:e.Nat64,token:s,address:e.Text,nonce:e.Nat64,lock_or_burn_tx:d,receiver:l}),hi=e.Variant({Burn:e.Null,Lock:e.Null,ApproveAndLock:e.Null}),pi=e.Record({token:s,max_priority_fee_per_gas:e.Nat64,max_fee_per_gas:e.Nat64,requested_tx:hi,address:e.Text,nonce:e.Nat64,amount:e.Nat,receiver:l}),mi=e.Record({token:s,balance:e.Nat,address:e.Text}),gi=e.Record({forwarded:e.Vec(Rn),to_sign:e.Vec(pi),chain:r,balances:e.Vec(mi)}),gr=e.Record({root_hash:e.Vec(e.Nat8),value:$,nodes:e.Vec($),index:e.Nat64}),yi=e.Variant({EvmBlockHeader:e.Record({block_hash:e.Vec(e.Nat8),hint_priority_fee_per_gas:e.Opt(e.Nat64),hint_fee_per_gas:e.Opt(e.Nat64),block_header:e.Vec(e.Nat8)}),EvmTransactionReceipt:e.Record({id:e.Nat64,tx:gr,receipt:gr,block_hash:e.Vec(e.Nat8)}),EvmBlockWithTxLogs:e.Record({block_number:e.Nat64})}),bi=e.Record({token:s,chain:tt,account:ee,amount:e.Opt(e.Nat)}),wi=e.Record({tx:e.Opt(te),token:s,chain:tt,account:ee,amount:e.Nat}),xi=e.Record({destination:bi,source:wi}),vi=e.Record({block_height:e.Nat64}),Un=e.Variant({Failed:Ve,Accepted:v,Fetching:vi}),Ai=e.Record({token:s,evm_account:ye,icp_account:l,evm_chain:r,evm_tx:d,evm_amount:e.Nat,icp_amount:e.Opt(e.Nat)}),Ei=e.Record({token:s,evm_account:ye,icp_account:l,evm_chain:r,evm_amount:e.Opt(e.Nat),icp_amount:e.Nat});return e.Service({forward_evm_to_icp:e.Func([f],[e.Variant({Ok:A,Err:e.Text})],[]),get_canister_calls:e.Func([],[e.Vec(T)],["query"]),get_events:e.Func([e.Nat64,e.Nat64],[e.Variant({Ok:e.Vec(e.Text),Err:e.Text})],["query"]),get_events_bin:e.Func([e.Nat64,e.Nat64],[e.Variant({Ok:e.Vec(e.Vec(e.Nat8)),Err:e.Text})],["query"]),get_evm_address:e.Func([],[e.Opt(e.Text)],["query"]),get_evm_block_stats:e.Func([r],[B],["query"]),get_evm_encoding:e.Func([e.Opt(l)],[e.Text],["query"]),get_forwarding_accounts:e.Func([r,e.Nat64,e.Nat64],[e.Vec(X)],["query"]),get_forwarding_address:e.Func([l],[e.Variant({Ok:e.Text,Err:e.Text})],["query"]),get_forwarding_status:e.Func([f],[e.Variant({Ok:A,Err:e.Text})],["query"]),get_forwarding_transactions:e.Func([r],[e.Vec(Dt)],["query"]),get_icp_token_metadata:e.Func([],[e.Vec(Lt)],["query"]),get_metadata:e.Func([],[e.Variant({Ok:gn,Err:e.Text})],["query"]),get_paused_endpoints:e.Func([],[e.Vec(me)],["query"]),get_paused_tasks:e.Func([],[e.Vec($t)],["query"]),get_relay_tasks:e.Func([r],[e.Vec(ge)],["query"]),get_transfer:e.Func([v],[e.Variant({Ok:Me,Err:e.Text})],["query"]),get_transfer_fees:e.Func([],[e.Vec(On)],["query"]),get_transfer_stats:e.Func([e.Nat64],[e.Vec(Fn)],["query"]),get_transfers:e.Func([Sn],[e.Variant({Ok:e.Vec(Me),Err:e.Text})],["query"]),get_wei_per_icp_rate:e.Func([],[e.Float64],["query"]),pause_all_tasks:e.Func([],[e.Text],[]),pause_endpoint:e.Func([me],[e.Text],[]),pause_task:e.Func([$t],[e.Text],[]),resume_all_paused_endpoints:e.Func([],[e.Text],[]),resume_all_paused_tasks:e.Func([],[e.Text],[]),resume_endpoint:e.Func([me],[e.Text],[]),resume_task:e.Func([$t],[e.Text],[]),run_task:e.Func([$t],[e.Text],[]),schedule_all_tasks:e.Func([],[e.Text],[]),submit_forwarding_update:e.Func([gi],[ne],[]),submit_relay_proof:e.Func([r,e.Vec(yi)],[ne],[]),transfer:e.Func([xi],[Un],[]),transfer_evm_to_icp:e.Func([Ai],[Un],[]),transfer_icp_to_evm:e.Func([Ei],[Un],[]),validate_forwarding_address:e.Func([l,e.Text],[ne],["query"])})},sr=5e3,st=5e3,xr=new Map;async function Jn(e,t=ft){let n=xr.get(e);return n===void 0&&(console.log(vr(e,t)),n=await nr.HttpAgent.create({host:vr(e,t)}),e==="Local"&&await n.fetchRootKey(),xr.set(e,n)),n}function vr(e,t=ft){const n=t.icp.hosts.get(e);if(!n)throw new Error(`No host configured for deployment: ${e}`);return n}async function Qe(e,t){return await nr.Actor.createActor(Li,{agent:t,canisterId:e.toText()})}async function Ge(e,t){const n=await Jn(e,t),r=ue.fromText($i(e,t));return await Qe(r,n)}function $i(e,t=ft){const n=t.icp.onesec.get(e);if(!n)throw new Error(`No OneSec canister configured for deployment: ${e}`);return n}function ta(e){if(e!==void 0)switch(!0){case"CheckingBalance"in e:case"Forwarding"in e:return e;case"LowBalance"in e:return{LowBalance:{balance:e.LowBalance.balance,minAmount:e.LowBalance.min_amount}};case"Forwarded"in e:return{Forwarded:{hash:e.Forwarded.hash,logIndex:e.Forwarded.log_index[0]}};default:throw Error("unexpected candid forward status")}}function Ar(e){return{done:e.done[0],status:ta(e.status[0])}}function qn(e){if(e!==void 0)switch(!0){case"ICP"in e:return"ICP";case"Base"in e:return"Base";case"Arbitrum"in e:return"Arbitrum";case"Ethereum"in e:return"Ethereum";default:throw Error("unexpected candid chain")}}function os(e){if(e!==void 0)switch(!0){case"ICP"in e:return"ICP";case"USDC"in e:return"USDC";case"USDT"in e:return"USDT";case"ckBTC"in e:return"ckBTC";case"cbBTC"in e:return"cbBTC";case"BOB"in e:return"BOB";case"GLDT"in e:return"GLDT";default:throw Error("unexpected candid token")}}function ea(e){switch(!0){case"ICRC"in e:return{ICRC:{owner:e.ICRC.owner,subaccount:e.ICRC.subaccount[0]!==void 0?Uint8Array.from(e.ICRC.subaccount[0]):void 0}};case"AccountId"in e:return{AccountId:{accountId:e.AccountId}};default:throw Error("unexpected candid account")}}function cs(e){if(e!==void 0)switch(!0){case"Icp"in e:return{Icp:{blockIndex:e.Icp.block_index,ledger:e.Icp.ledger}};case"Evm"in e:return{Evm:{hash:e.Evm.hash,logIndex:e.Evm.log_index[0]}};default:throw Error("unexpected candid tx")}}function na(e){if(e!==void 0)switch(!0){case"Icp"in e:return{Icp:ea(e.Icp)};case"Evm"in e:return{Evm:e.Evm};default:throw Error("unexpected candid account")}}function ra(e){if(e!==void 0)switch(!0){case"PendingSourceTx"in e:case"PendingDestinationTx"in e:case"PendingRefundTx"in e:case"Succeeded"in e:return e;case"Refunded"in e:return{Refunded:{tx:cs(e.Refunded)}};case"Failed"in e:return{Failed:e.Failed};default:throw Error("unexpected candid status")}}function Er(e){return{chain:qn(e.chain[0]),token:os(e.token[0]),account:na(e.account[0]),tx:cs(e.tx[0]),amount:e.amount}}function sn(e){return{source:Er(e.source),destination:Er(e.destination),status:ra(e.status[0])}}function us(e){switch(!0){case"Failed"in e:return{Failed:e.Failed};case"Accepted"in e:return{Accepted:e.Accepted};case"Fetching"in e:return{Fetching:{blockHeight:e.Fetching.block_height}};default:throw Error("unexpected candid transfer response")}}function sa(e){const t=os(e.source_token[0]),n=qn(e.source_chain[0]),r=qn(e.destination_chain[0]);if(!(!t||!n||!r))return{token:t,sourceChain:n,destinationChain:r,minAmount:e.min_amount,maxAmount:e.max_amount,available:e.available[0],latestTransferFee:e.latest_transfer_fee_in_tokens,averageTransferFee:e.average_transfer_fee_in_tokens,protocolFeeInPercent:e.protocol_fee_in_percent}}function ia(e){return e.map(sa).filter(t=>t!==void 0)}let nt,xe=null;function ls(){return(xe===null||xe.byteLength===0)&&(xe=new Uint8Array(nt.memory.buffer)),xe}let Yn=0;function Tr(e,t){const n=t(e.length*1,1)>>>0;return ls().set(e,n/1),Yn=e.length,n}const fs=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&fs.decode();function aa(e,t){return e=e>>>0,fs.decode(ls().subarray(e,e+t))}function oa(e,t,n){let r,s;try{const i=Tr(t,nt.__wbindgen_malloc),a=Yn,o=Tr(n,nt.__wbindgen_malloc),c=Yn,u=nt.forwarding_address_from_icrc(e,i,a,o,c);return r=u[0],s=u[1],aa(u[0],u[1])}finally{nt.__wbindgen_free(r,s,1)}}async function ca(e,t){if(typeof Response=="function"&&e instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(e,t)}catch(r){if(e.headers.get("Content-Type")!="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",r);else throw r}const n=await e.arrayBuffer();return await WebAssembly.instantiate(n,t)}else{const n=await WebAssembly.instantiate(e,t);return n instanceof WebAssembly.Instance?{instance:n,module:e}:n}}function ua(){const e={};return e.wbg={},e.wbg.__wbindgen_init_externref_table=function(){const t=nt.__wbindgen_export_0,n=t.grow(4);t.set(0,void 0),t.set(n+0,void 0),t.set(n+1,null),t.set(n+2,!0),t.set(n+3,!1)},e}function la(e,t){return nt=e.exports,ds.__wbindgen_wasm_module=t,xe=null,nt.__wbindgen_start(),nt}async function ds(e){if(nt!==void 0)return nt;typeof e<"u"&&(Object.getPrototypeOf(e)===Object.prototype?{module_or_path:e}=e:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),typeof e>"u"&&(e=new URL("forwarding_address_bg.wasm",typeof document>"u"?require("url").pathToFileURL(__filename).href:Bn&&Bn.tagName.toUpperCase()==="SCRIPT"&&Bn.src||new URL("index.cjs.js",document.baseURI).href));const t=ua();(typeof e=="string"||typeof Request=="function"&&e instanceof Request||typeof URL=="function"&&e instanceof URL)&&(e=fetch(e));const{instance:n,module:r}=await ca(await e,t);return la(n,r)}const fa="UEsDBBQAAAAIAKqK6Foruko2sqkAABlyAQAaABwAZm9yd2FyZGluZ19hZGRyZXNzX2JnLndhc21VVAkAA283bWhvN21odXgLAAEE6AMAAAToAwAA7f0JfFZXnT+O33O3Z09uQoBAAtznKW1DSyBsSaCtcp+WJVIKdnGfgQCh5QkQskBbB0soi7SlFrWOjK2KTrWoXVCrYhebaqvYVsWZqqhoqYPKaFUc68iMtf1/3p/Pufe5CaF2dPz+vv/f61f65N6z3LOfz/nsx2jvXacMw1AfVDXLrS1btqgty03+i4CBd2O54h/F2Vs40tkSf1J8YsuW8NXWT4O+XG4YyzNbyv9JqTcYy5NbbpD/jOXp8BUBd8ugklGEJU/zXGVdu+LqCcuWXbtizfpVV3esX7Zm/Zq+ZR3X9XX0rO/pWL2sr33F2g4ja31H/asynYRhmqZl2aabNixLKcuwKSJpUk+tlEUpFKeSlpVS/KJMZVqmmVCKcpkOf+vmLEeplFIVFEYuymopyuK6la6FMjzLNV2HXpWFv1QAVcL5DDwMs4qKdaV4W6EMFJtQ1WjQCGUnrETasZDk0B/LMY2EsulL20JjqTAq1lBcs2WnzA0qCLqMfkWfGFVuimYk6O8fMDKJj6iEu65jXVfP9aZRv7qr59r2nlVr1l+9rH3Vqp6O3t5lq3u61i1bs7JnpbFPFc6U3r5yZdfG9X3L1qwyPqZGxMa547oNXT19y5qUqorFrmtfu7ZrpfEuVRmLXN3T0WEcVF4sqrevvafPMFIlZQQqM/c+1XTZBQ+pL6lvqlvUbepRNe6qqjd/SW1Vr3uferd6x8fVATXlsPpn9Vn1hh1qp+quvuHKxf+kPqrOmbnlX9W/qAH1RTX12+pz6o1fVm+9X71TTf4GBeZMr9+uvqXeq/aq9KIHVPpTf7T/Ve19QJnnbUndcJYRHNtldhbsiUZwcueAkXeC+1XeDT68i94z5lz881XwsuoOVGeFaSgzE+zZxvk+jXyPbUe+rMoEW3dw7AEUksn4dnDEKPmO73p5eu/faZby1b7dYL4p7+DxtrxLVR9OdBasiYZvBUfsUkEhe/D0DweMIOPNlrq5fqvBPGIXnHk5w0ceCh61g+8hn+PN1qkJpNLrcTvPOY7ZeZfK3aVKfkK+8Drw3KUkq5Lo3So4ioJSUUEpXdBRO5+lAo5RAVwcNY+LLySCn+ILE03kJFVI2/x2XOUraSikO6gh+Dly2lL2UVuqRGPr8pUUoBx1+XSYP+Vnh3YqVe6U0p2iIoJ+hdyxTvWrHFe7O1HCX7s0yTRaTIzr7Rxzeyymn/67rtncbvuWb02iZ4u5PcGt9lWzuRfRiWbzdjwrm809eKabzd14Os3mLjxd+Twwms1+W09eynd9xxulW+npEawtz16wExXPp5Hy6JdC96PsSmd3dGa3nFnRr9b3aNqV9ynFX6b9yujLrP5yhP5SyZcLck5g5NPSxhNUfBHd9lposhB3gXoR/cg2m6d0P17AU80xTuJJ/X1ep5/Q6cd1+BieI5oxmZzvCJ7P26X86IAmn+pM0E9Zsm4rAtU9D33IO+Zcay71IbuIgk5eZc0MhUaU8oozZn2ns5AKEovtufS5S1ldP4Xec51Ud5Y+cTO0YNxSo2EE6fk5k7aKKuXdrJExMPWnDApEO0YFVinY3F1I+mo+LSF6dNJ7il5SbXWFHC0rqidJTa6iupSfDEu1/ZxP0aVCckGOis35qSDZWahalDOxQhDIV9GXuUxw8+37D1MR1tyg/8btVL6fKxVGNZiGJPQWxnT6Y3okbVRgl2Ipozr9UT3dQf/WG7dfpx8LcvR9kCwVcn7VYqqYAA81Noem06Mzn+LyuWqqkXpRJQ1eQEMkzfVTVAaNaoYSKSd3DVDJyFdlaDCTzaZNj6pmk/fTdbTCFCql9815F2ufQA8tYpTl8IjTblxCGTDigfJpdmn1zaMq7EymPCsFmlnMQ3eOwKLKV8ga+hNt9ALNdcFdQPHmDTwnW2LwLB28o83WsCM/Wm//NKbM3BRYa701elErWdQBzaEqL2UNjtBMJZuWFnU6uH4JrYl0kCgF1iaCUe5aWVuobh6vJCWfAy4HBvZTcOjIgOF9SAVJgErA5Co83pTPChAD6FPePMqoOiXHcVXgLXpCFbKlfIqmIhUYcwzDd6kGV7JhDPMpKoEhip8tFVxd8TFdsRtWjKJWSaXL89lBA5ToLrgVLh03lq2cDFpII19U+SnUm1wFQABNS2fBRcCltUATetGCnJ2tyARpykvTkaEHLYAsTS+2JH3idhIUQgPSi2kPBD7Nb2Bkk7Q+gv5/GTB4Sb1My4IgDLqikETZOvOjgrHYwbyHlT9qUY7We7B8fs6lhw/Ql16UA1w+jBMvGNuJje5XBfd8l3p5E3p+iHtO3VxaqMDjysKI4OHvyhgo6kohKV3gZkyj18biy+r1uQwv7iFJU5EEoBKoHmpjFpnMoZmaokxmlMkammlalMmKMtlDM02PMtlRJmdophlRJifK5A7NNDPK5EaZEkMzzYoyJXQmGq6F+HOpP7U4c6ffWJyzc7vfVJxCf6cVG+jv9GKB/s4o1tPfmcVR9HdW0du53VtCAz+3M3D9Cn9E8LQe7WSQHFqljLVJSakzj3UqanL6zGOdjjJlzjzWmShT9sxjnY0y5c481rkoU8WZx7oiylR55rGuLI81g6VL/pKxbi0FWR7ro9FYe8ON9eUMtKvOPNZVaA0v/uozj3V1lGnEmcd6RJSp5sxjXRNlGnnmsR4ZZRp15rEeFWUafeaxHq0z0TC34s+Ff8lYN5WCah7r56Oxrj3zuh5z5rEeEzV57JnHemyUqe7MY10XZao/81jXR5nGnXmsx0WZxp95rMdHmSaceawnlMe6CX9m/s/H2qGBpUM+EdidhHunqDycbCrwUHQab7V4S+Et2cOHRnDkO4TFnxW8SA/vHwygbXxkB7sxWY8oIxPceQvlmBEcvkVyBMsDI7gTqV+lVKC4EnocIZwoGZw/QJHaCCXKAQ2r4LOoAjhKGlXTMbQExzy90fHj4IEzaPf35Ax6hVPGfhWnjPNqThnn1Zwyzqs5ZZxXc8o4r+aUcV7NKePwCkniT/Z/vkISQBYSNOQuFkq4QjCHL4ZzGIDapHyL65A3V8Z0Tv9H05pjfI2AJ2YNS+F7EbbkFZjuqynlRxWN/FQQC/QboemONFBzjUJVRxjnFo2Bhlho+BtcacofRQRH8COibjaBbCHYklrSk7Oomin+VApZfcGuH9D4TbJo4ncWjctzdrE130ifTvGb3pIDBl0FrJZwnxJ90LjrQsILG4vJd+Qb/SnF5GYqxgFq6PDwOMCP0K9OWuEJxFcI5pjk1qcwYSlC6WxBB41LQfkNXbnKb6SGEco+IpizNnhN9707/anb81NpDtyslRGaQWXH4S1Bb9wVpE1BlWb3PFAdNDHpunwOKF8JtHiSiI2KfIIbyYmB8bo6X6GgWiDFAxYI6hMKFA1zLOjXVsd0BcjpY6owpcU6aPlT7hZKe36OSdUBC9j8JEqhNowmAraHStlOxDnRtt4met9LyDZ9qYvZlWix9vCMb08UJoQlzULEnSrv47lX5c/Cc48q5PG8nXDzoH+A4EpaCGUhK3xC4Xcz1TBV/cy+QPUTotpo/JQZCQ3GczaI5EbjmKa9j2qKmijpkYG5gEvZwawZK/glUXGG0WwYQoKcsJvVjaB+b+GNCgKh0fiNLej8SabIG40XhBVg/N7O1yL8XzbonQb133Z+FMIv2fkxSH/Zzo9DeJuTH8+9dkBMNRq7nHwltdy4yZEe9CeoB0TJBV5fT56wcGpQnndEv01zSB9sJ6opW4OJIrpkpxDv3MzY15z2jy4YHXOMd7vM4DBuxdOZY+x2hbzb5XI3jR12s/F+eadKmtV7XD2wVrDLLXmrQgZHYDK9HvQjqdE4anvjhYriCHwRzPRqxmbQDmae7GQgyB1JSCH9YHzoYmI1SHGYJ80bQRZzi58eCIyFNnZHv8LWdfJZWuGNgAnZEZnAlSAlb1eLhK+QHZmh4MtGd97RlLQzj5Gxl+k/Y1GO9gCdM1uCrcAn+hHXjbJzxtjgRo4yO4P+l6w2RGzjiH6bYvpfTCCKw/1JRPSfMtqoju0qk8+hYqqHTqncgh7aDEkwE6k3lPsl1ICdOqS/sX4CZnRibWIMgL1j3oW4DHbxN88Lbws7J9jDMS/EYvZyzIvlGFntc4wDjuy043aLhTUxlfYC5fy38qwkEfkjRD5bjnTKszEJq3QKJR83S0QyVxGZmUE69yURpLzWWE8ID6PCXTTm59QYw2jBPgp+yTG/4fLncMxBjjkV68IAx/Q7gDgazkxVR2krH+FlOcl41m4xfijvtPFarAP8HvxYl/oDV9pamFJs2HU3dWtK0adnJYEo2Sn/D43jkPGrKEPX22MVH+KYO2MxhznmrnhTJpm7bYa69HaPzYXeYuOgKLbu9K0Zxk02n+HWNGOXXfTpLXFvkZZ3Yhui3mkXa3du384TKGyOPW6BObW3uwUFvpxB50BqSV0hC95BTyFBx1yQzTt8rFBO1UbTLVuoJ5cRnkcKsalYbOre/JQAHHOLTkBevjSZA6ZwWx82ecZo+TebB7FS+hMCcw+aJa+ShypBWxkwIkFQnjcGHX6Yx3CdUYLiBOABAk8eNoVnPWAK44NOKuqE4zfeXXClC1mf+3vQJMSnQOeoi1a7UauBNjol+oJiHT6EFKEEhBISpmGFXCLqxjOmMIUPSzeo0c3m02bE1beCp00aJ89DR2jvNEYs4UEdcbzWOLc/hIS0Oihwrnf2WG54cO4ibleCZQvLQoY6HVY89Ii8CGvziD2P91xyjrEroXnVCaYFgp3ME/9xedOFG2o7Mr6TU2mpBo0Er4XrTV9mM2EhwU5wmJht/4Qj/fuv2JYe4BEbvHu4xkbjh7be4055wxUaJcv7KUujlPBhenUIzZLQXRRSYenYSt/XLZVdh+95D9LHt+nYowQQ3om+PMxbhdCMoIH6Epiy8ERKcNyWWP7U5AKlp6mMzOYglrcSljeyMEu8lk5KR0QDR2wZjB8ziNiZGDSs2+nIPar3vgyuHtaoBMUloFI0SZqnGxbloQaGtVPeZMavxqtHj3wzoezV/oRmQt+ri1tpifotpkEH3VlG4HcWjImGbwQK3F8jOPXtAQagRlG10FdGcc+Rgf6TqsWq9ZGrtoRCjGAvmJMfUUy3jSgxJ7Bo5qdkz8W40HI6DpI6uYnOtyxLGA44BL74eE1mypKnkIF7+mhTa3i0ExhtPda78BIc5OnqT7DE6RnT28bb96CVyTMIP2oRbov1bjHyZj5jCVJw2BLk7WlLOMaHrDzTMo9bwIkY92Qc6WFLM1lv8EMkIi5ie8YU5uRhc4lInZ42C24D+OZEGy3OhVK6SoQN74oQ7VkgmY/ZkFVVSsdpBXjjy6ffAtqJlRoMVMTBAGExgw77Sr+CN7kXRHCgIkKsZFgIrrje9QJ6tvPQHqWhbZKhrdBDWh5J7y6lh4LB6MNAv3lMuV1csOzGZ6zYicsxR2MxhzjmuDXozHnakq3XaDxlEdo7BT2aqg4BBD5phScdJD2WQLiCe4Hag235Hmo3obCbZJdUNpu7sR6msCCOsSFpUhyCSJNetIc2abszqEnP22GTfqkx8eM2Y9CKd+0vogM4U6iINaYibExwJw8p1Q/4Y4bwh+uPYu7hmEPlGL9qjvHeRKwrIUBxMR/cMmpVi3m7LFszXyHdHD3H2MPTddLUGz+UUsqR12KeMAlomZkIXEtfjnLfToPUDGYrZVCrNIx0wxVx3Az3VoXeV8fNjGzUF0wQGzR4phxNJ0yqJloe+3gp7bZi6Be1jaZ+r55W2WT9elO+aMqmPGXmcdLSzqukY7YCO3KSuceS5UDjtI/K8adyKRUsXq/FMs9CgEL5c/RdkgpW9F2jDMAJOleqpD2xltD3LdYxR/ZtoVLvY3cxn30j5xjH7Bgwr4QIRDEmULm4DpA8qM1X0HGe5fmg5ph3WgKZqFlpMDWoM0qQteMEhhoFER22FSJKjUHs7Y4U9YIWIZ/UEJxFq0k5R/ycblpKnzNZfc64DOm547c5WKC1eoGi+qqo6jMVr3TxSV18ThdPTT3mSFOjJlYQML/AuBWsG1eD46O6KZDu+hXcpXCSGA6WabpWXnmNxgP2EGpPEC9aakFtJl9TRkwbzP12fizC+xgETjL32gLWb2eaHKhsvkkk8/lpmrRND2LXENT2a6Q5skSf5LX9hUEIjfE5QhMOhUhYpaBlBeVVxsEy+EsMjAvTGQUzBQWLgK+AZTrnkgHo7Ol3Q+bmhORikr5W3mpNEeWGFkzImHe9HpJKDYd3aT7Dds1n6A/PB8qVhww4sYiWZ8536npyCSqDMG7mXuijhtriEvmXzmhVDMVNUSKQs/oIQc+15ZL6EA4ZGiDYv2oCJeeRisZI4diVNcOgIgdohHn3c50ajgGcmxeox02NTjsyqwW1OGdp0asr++yoq1EZZiNA3C77zME+O+4y5l+brwkMoXMetIbQfZixX9GMHbRCaqmR6LqQfmo0nheGDa1qAS/HeQDLA3/MZi7mKxfMcmOiu2/oBqJwOlGWOnNNoCyxTCfR3tGUiCPLGEQcYz667vcPrvt9um5sJ+E93a4r2KMr2K0r2Ksr2KcrCPcJ9g1XwFTQdN4iifwMquoztO5TUWUEA05g9GcQQMRzeovFs0EwYgDPJqIQ8ZwWUshTaWIvUAdMf6omjKdqwnjq3XRCVWV84PmJVzGqtH9ywAhfYaYw9BkBpK80kFiG2NnC6WB03M4Eo5nlASk2k6iZKFcqzAUdDsQQYY32vpdPxgetUnxweEVnhyz6hF70NBgHrQuMdwMCWbsSDIGs/oRAoD2JPCOqCT3CTXqEp+kRHqtHuFGP8FQe4WHYDWEp/DU1YdCuIfznuN4kGQY4lVB5yfpp7sE04N2OJtuLyZ3bMXiNxgGnkA1y0I9IchuDvdz1vTYjJ8LM4Jg9sZhdHLOrHMOdBQMjIePsgntW5kdQ/uhb4UfsicUIP2JvYnBpCeZHJO4tNuz0s/cy06Fxu5ygJ5ihM1A+QTXT52lrKNPnmcGn7EFLDzytlsctvYwbeRJOH+wMnew0mBmM0ldcZqsaj7rCZv2Sy2xX9aArbNgvusyWNT7nCpv2AVc0uA64wsb9pcvIpPFzV2DEz1ymNNRPXOG6PucKO/lHrrCTj7palcvN18XUOgYdWp/nQ+sz5iBy8QBtyAdMgpYjhf8iQG4vVGwI9hMmgiWU1TyaQpvWkCLCmp4FPxtC3cLiuoJqJgAKQd0mamsW21Nr3/G2VD+xmSgiGJjPBSOlYCv4FDfq87FGJWlT4BR9L6UkI5ydmvqAeYHxCTA8auYY+03ZBXeaglfcjidhontMIUp24zl+jnELnuOajXfiOWaOsRPPUc3qRjwJG96KZ22z8Scw7L05xot4jmg2TylBsv+gGFUyfseKP3OM/1CM26hfK9nKv1K81Y1/x9OZY7C6UJ1WFHJZUYj32T706AVVCl4YIFr3w2oes49HshjpETqb08E3aayDdz6z93Eb+5HpWwUcAApVWuLk0a+WfqPpN4p+YyB9YjqYYBBPdSERjBbOJ3AQB0DzEyaBLD/RA25PTNCQA+dmLK1a7yLQhMy+4cnVXJMbBUYx76Nfw6vj4cliBT/TkPlB/uDnWnPqhB2daLx6f6WFEr8VoYT6Dy2U+E8RShh/0EKJP4pQwnzRFiFEv5PXaBJzFm8VZs6DliyFKS3GthgEvSURmLR6pxSTu+4WYDIySBLkB4btUkIdIdsMo29mIPSzuFBFuFCaYmK2rpQc8apu5AP0F9I/kHipv1LoUqGFLpXlA6jRoFMWQjr0I+jvPyqzX8P4bYO6OSF78qaEbPkdCTnm6Kyo8bXMyOF9zgqMAo8IPhGZhCVGZ2qNT+X7WaYsEkztVFF/RlBfPOpHLfVhNLV/FLV9DLW7gtpcmR8DUqCCgE0la3Vh14nuKVb5dqEAjB227IKbBHtXN9uyS94lBIZxm61JVa3DyTqutMtY55V23T/Zsgs/aMuu/JAtu/SjTAU0G/9sy66+2xasNrjzMd49hSTwXQI8yTrqaYW85Pwx8jLGHyUvo/zR8jLar5WXWt+TF88fIS8j/Cp5qYJmHV5SvpIXADF+yfoJeYFwMo2XtO9IjEP7bsd3t0/Ee03gBg5eRmaGOR0IwTGh3QbhTTfD4/fbdA6bvF5HM/Q2vk+kLOVi0F03z3fn9RDxw8p2icBZFFzkJ1hSjFha9H3BUQImOK/8ugURtygRPGaAdZvwXb9OqHRBpn4wGJk6EiJTtN1FyPKsYO40zgVw2Y7ReM8WLo87x3jUYgTCeMjSh3SaE0G4NBpg7nhPAqj5rtdL643+aqETc4ag0uDwcfQSLVNesenAAQyCFN/wvqA8tyyVciAa7pZIpkcPEAXqeCMinsL3rRKHDIZbTqGmU9juzzjdhGRp0eFhogko2K+DT0vwRUeChyR4Sgcfl+ALOjggwZM6+LAEn9fBgxI8oYMPSPC4Dh6QoHAIjpvC8Dhhyln4vCmo6UlTGIYvmEJMnDKFYfiiKYC038ozZ3A7c9Gko7utQlWnEES7LKrhHiF8Kul1v7xW0OtdjOD5GIl9Epui1zvlNUeve+U1Sa+3y2uWXvfIa4Jed8ur2y0i2fAkgayE1kXaw/sBeh8JSaF3OcwDgmMORBkup/WziMbRoSOUs45W69OP0859LVZlyGren8Ai4oDjE5imVMdr86sw834N/kKMSZ8eNqJVeA+KpDW835FlJxqnCnm1HDDY/dUBI3hGf+LgkyFcgkaKKiS80T6WLH0ZbOmV5Ua9R5AtLwi/BRXgEEiu4R0qO5PK+KywxaBbAEYB48SayCY4KEL5W4UiUe/S58V7hCIhOCjw//2aUiECjCmYO4WmJDiI6W40PiLni/qoPl8+rs+Xu/X58ik5X0Co8flygM+XqcanbTA+gv0Ks2MFD8eYlwcU5sEKHo/FHaQ4zMTTgyV7D9jQqBgQzMXap/zqoKUEsG741X7NBcYsehCQnkmPUc1mEz0IhE+lB0H08+lBAP48eoxoVufQg8D/2fSobDby9CCS36dHstmspwcRGnX0IEg/mh7ZOcYoeqSaVTU96FipoofbbOQgfJhjQOpAmJ5NzYHa71jNC62Grq9fF4XmdvojwwBQ+H2qxWwNDCgoY5mFJ2XBrcPZSKgtvdSIcAvgPAe1ZQB4wCYXID9FcS4OgSropuNYGEFxLg4Kj+JcHB21FOfiMBlNcS6Ol1EU5+LAGUNxLo6gcRTn4lAaT3EujqkKinNxcFVSHL0wnUnoL3QvoOQRQ3/pENzlCGrLLDTaC9scRkUJqZBD8yV9iP63PlT/Sx+yv9eH7gv6ED6pD+Xf6EP6l/rQ/oU+xH+mD/Wf6kP+OX3oMzuvRrPqRmpDDKUNU/ofHdC2KRD1wHYlsDQWzGrt2o6Ft6BgxVqWQBvTKzCoS2BP0V5K6L2U0HsJaE81ULV3JS4488pQLI+CvNAOVAYE3AQ/7z1GmMtZvk/PrJ8RcUR2RAZqScFFBDuqsKEbQq2v/WUd+ckCrhuwfQNf9PsIkFWwht/BI1rLvMGcKFSXj21cpB1EY5KAFDQ1rN5fJfSu5ucsJKt48hStXEWH+uKcjWTzNNXAHEChBRV4SrZOUwrMQd3NXpxLItk+TR0wl6JkZ34ujWTnNEXAHPSz3MW5LJLd01QAczlKTszPVSA5MVT57/JQf4YSgPFE2nxTWZuviTUBprE233TW5pvB2nwzI93a2lJgBK6fpEE+Uh7bWvypp/PCDU4g9pPgVkKZj5UvabFUaM02FUDXDGw+FbDaWI6IAPp35BnRdgsoOjgRBkz6d0oHoEdZYl3SgNZrsOs7UbSF6EQmsOnf3nK0XWLlxcChf/vL0Q6irUyAth4sR7slVk0MaOyCQzoaa0+EliISUV6Pr8Ct8N17aSyZ0eJPYb6FVloD0GOB+nZtR6YFxg5z4p2CYrgB0yigc8FJoyRIVwEWXyNwZrt+opMQtFu5xg2FhFjC9DG2l9OfnTBKbCIWZlsrigrXFFJAsZGSYss510+XeFfQpja3WHMJN6E1VaDFocayYmYhNZnXPmtKucFru4m8pHVN8bwnBgrJYO5lnDShG4RFMsxiDZOlMsrC+sCcIUh0B25fTyb6g/67QaqTPhu9mOZd+cm+4MP9/XZ3Xc4wUUy/ghYvrc5NhSTrNyaDJrFk8pmRFYxaQLuS8jXOz9lMNwb9xwzaqTjyXT4xnv6Wtlcxu8U0a0i06s5hLRKF0JmhsZ4nkyvyoROqAFyHxlbwGCixpNlEx8knQnMy4CahauJxxoIVv4s94YmYPaHIt4/FYlQk9SOozEJNRnpujBaMXWbUPW8Pkqsdp/zMj1SaX+lofqUr/EopW5DzrVF55p8vz9Pl1Q7mf+ry1J8vIKsLGKELUPECMn6oM3V7oozQ7ArVGeLozPaE6EkFWqNCn1VH9FkFaVVgDz6rRHKFs0mfVXtUKbB7ZJZwXKEs0RbtjywgF7KNK4ta6LwRPrtw3fkYYmRkjxIERjUzrpJlPqbSYl306XCiNNFg+s+msneagcI6tYFG09/tO82Sxm1tRoIyAUGVPPIuZZ6B47PJ75W091OB2tRZSBN19XpE0acEMgcXek8CSsA2Ds09/aZvI3nXTpPGnUMQ1+AloL+0fL1mpFNGOhvphfLkcxYRcn49SqtnwVACwqsbWNnRBS/ZAXx1Tag95mAHxhrzDkwHeQlAc5mgRTB3Yc6FBaIrGdwog6szPLrlUspBlRB8r+fPiOJT2Hfnzy9QHGC86as6rlmJ6SeUjTMAKEmiiDuDZd1BGhhVUyf9mb2ojqIrF1NlGZSZCbUeCcT3+WxVoNikmvAiDNjvfkRExfnarDrY/UUK3fkgDf3boEvt5zR2zFrVBEL1uURDOwkjiD1aAXsBBU68QaUcN0BS8awSpAwndADWf3or2H4Fr+GDhHJSEmHq3pt8m6hdN1oRJhB6O/ity5pQFso9THEWPf89FneI4mhRBM+V46hdxvddQvExucdABBR15iMUGBcGDlNgvA7gcYjWT/C8gsWdNNlsMO1CFo9kkF1byk+g9G/SoYcWExWY99EpOhthj37CwbFBNdBayhfo5QBezkIDXqZRq0Un8TICef6TXs7GxzBiP4de9uEFS/UEPdP0POWy4roFS94J8wk3ylIjaGnQw86fq4c2Ie0tgEKs1eu44AR5sEd4LL3PKNq9BZh02ExGJLzP8ya5FEqGrAyL0EICxTxDPzfR+bwEdlm0/7xrLb09Cxn/XL9eZ6KmmyUPU7GX0KLR9DxJOXIaLNkAXYVR6A7FVkaxBL4KYzAiFFsVxe6n2AY2o4uiDlDUJLb2iqIOUtR5bJQURmH1HXEZ9tl+kmP32bTchT2kdzUNLUG0S4IJeQd7Jtgi+owSGDDKwMcJd1wBiGYSfKaTqrsTyx5Yl070EwOBvamE2JjpAfWXwReVg9prxgZ7fjZgwEDZlAoQbDYP7MB6vJ3fj+xgeBTs2gHVRg2dgiMc2q1DBzhUBlF5rYKWmGiEFYQWuWJyETfW7i7UwL+CpRwA3kzOzHC3/Jqe/EjJGxx97ssoA4qRABSONzfvMdSChbbne5KG8wK9NRbmCF9Evf7IsPoCGyvMZ2OFBPgWHkELD5QKLa9gczdU6SgDBgGVew8r4HPUOL9mvhhX0zwkGg1vnh1vkJIGKWoQ4BTwYXDA1GkNSkKjLozulGi2wlbe23lmdK2Z8nhRpdZcxkmkL5jc4bqDZsOuHkbrGXzp0NLik5wmYeAPEMdPpOqQghFjoEb5Dv1BcU4K06towyuEPNQErUEVnPo30RpURUIFoGfw9KGyfqBTZetJUdIf+H1AhdiU/EIHKORW5S7xG2H9lFtmQubfQW08HqYYXCsYeOHUUNDBU9J0pZs+L4emEZjH3GV4CjF2dysaMsbgEkQnTjQIUeJ3+ihJA+HJMFAXvok+YbYJjy1J4kkjVJd85jZJNZi0EaVIiavhuGwJA0R9ANvECI5zEjw98E5ESzGOBkjut0Gfcg/S3+QbRavFXMWqll7pXnbIcNjY3mIt5KhkPGou1pERNGEwI6hiMG1cBjzUFH7zKcWWqp6OqrKHrWrp6VVJ7b6O2qdQe0brg0rcMWRr5ahW6vlyesKE/p5v6WUQPIy3r9FbRkOVvZhhvQgI5r5Eh9TZAPGHXa8F8IVOluAYGIOnGPwMnGA3AvmMgDm4vaDtZQvYm8enQf9WEyB9hIdD6zACNX4tBwCECkqXWphIWXCUn0KW82ljPYWkfTdSyPNrvLfQjHsSB3CFY4XCr8VxI1kS3sowSzntJNJG6rSRzGWlc2ArR9KS5Dx7t1FwMgXlk4FtXFyG6nRiBUrVJ7bpup5SQytTXAt1ZjtnUdRifVDW+Of7I7mwkf5k7uPB7dwC+fAsSkTzMjwAKK6WMyekyl26txI6tp3HjNMKFLnSn+jXyGRozIs3kRPWrcqnToIxNOi3hjNJ379fFNIzEk1EfSdDmYEEcDi9AJBLHz9RmZwgpXhI2OugQ3KWKw/whdBmb3M45ehVSnqlo3manSjaCSyO5vlm8MTRGR19aGi0ydEnZeoxHjxXQYajeUYzPLySexRH65mlCJ17MkfznNZEuWtoi3A8T+RExHD8RJ2d5y6eXVp4TE+7bqEXjJZCXOllRvfS4Vhe+Zmo82EveWGH3Ylm3uPOYpZSHG3Qsy3itRP6QOQzTi3Cr+7pN+kofGaHJkH204kOEcrhMOIuHfF0GLFPRxwKI+7UEY+HEXt1xEAYcbuOeDiM2KMjDoYRu3XEA2HELh0BvCRDmwAj5/h5fgrKhwE6z/dp8M5DD+cY+wnlBH/yHqCeA+KSyBsNSLTH0bIFyL4INYP2C2FJaeAcY7TpQRoWqKOiQG3JH60DTIj83AQZDqqCELkWJiT27uSFPVorwtDE7eTBHxVF7NrJkzNGRzAd4vgNmkNeQTXSjE6KgrXAVs/TQVu30yKqxz9HesSofx58ei/Svknotzo6H6wI+cRXmsbY76IrIaq6j0KZKLQX2zzCWYXq2eNqSmNURBwdcEohXbK//LovesVjL6g//ASu+4Jc7oX0sKSRUKc0iwfukArfM/du3lxofI3GJaBCzCLbjAYdtNSi2vbG3veU3/GgtaLrro/XzTg2Vy6tQIX1wYSN92ymPE9/ZcBAzDukeqm3XjeDq8/ci9yb7n2HNClCzMPSLS480xw1XoxopV2V8qiKtfKIO7QIAbJRWZr6jBVmM2MqF62nw9AtjUKHKFSlQ55UlJCHKpYXAqiQAVuaAGp6SBtAU0sjsGO4EeHo0Gv34AaxheVf1ENdDaagsTw1FBxm/vON3PmxUcfHRZ0eH3U46tshaApkYVJnO3xalYsHwaSIJAJFBGSyslvTRp2MBoNooZoM/sdW08H2Jwi3+Qoju0E+eOHx0CmBbGV6HHdLEZOASLyjrgzqYBbFrhspdOxGzaJQmrNDx5f2hyBUJv3dTbnjFON2bFoaxag4Rq+4tF26tBD2CXHteNdiTyZKBN1f1t63WKgPintuJx2rIKl5au0G4Wtd4m3A45BdgBcjenvc1u2mY+GQEvL0KNW7S7/XEqh/JwDJ0+80gZHu1ogeQdwju0xm+oszJAfgl7UbaaW+E7wC5v/uUot5LTSBjXUHmtNQEtK+CX9mBgcepr7t52FqwJ/J3IeBh1nsQBNE2PrcUsGdaEjnQYBkAUMgjCgA89il1hcq6e/aUr5K2/dn/CqsQJdR2n5IIX0Xe3UyNwiCUwrCXV6BImdSpA0blcnwIpHzVsDmZyJ8vDWYfiHRWYCSS8qvWFKXr0BcLRjmfWCpsMFQAo+aQnIt+E/JIDk/P4JaUEHVjwDhkvJTk7A1JxnGDsx0CgIU8PSTyF+BkavgBZ8FA4VmQAx+XZo/ImmIPNSrAc0L7gT36+GvRIuhFUPJfS/A3xMdXLtU0F8e0Fb8uRCyUzBP9siY0oeQ3NHs+SFzk9ftMfN/Au6RMYXJpwP2QKrg6p2/S1hktP2C/cmS+MsaxI6gmAMpZqztx3FYCph9Z6OY+1NBv+qZQ0+qJJy52y1hh+4BRwdztxsR4JRbZUYKIGjYl31EGq7QuEzB0TgMTFtd8cdF05iJ8BaeSCfCODT6UkisBSctgckUjmbGZvrUhDQS0+mG0wnfI6Bn4HMBa4qmMzy+uDmEMCW9ZOCXz0YeHknNiBatsFFwSmVC8BUkxa/JElYjyqASYX5E47hPen7AKUUnwl6J2h+L2qMZTbGoYyENRQNQ5mGd2GEKX5QGaxCMI+SNgBLwsgZzwBaIAR47s64ZgQu9DQoPiboRNAjo2MNQPyxMYOggLIWKFQSHuXFFQXzArgtfTxEgkq8Rc8zlkbsdwCrD+tSMm+0lhI+NIT2WXuil47DkjjNsR+TtkuFFfLQrIQxRdtQZ+jqjMwECKeZLlASONVD2ArMlbNb5A4apmJuDYnzmxZ9yC3CaR1+ccrGI90KWzst8LzTXgP4mwB3PCPzdkxCPnML5T8BTCs16gYGk4qVDST7LA6kibxdX7c8Dj8wGVpoitFcia9EuthDmuamnah0ceQ4ddMEzD4psDCxxTWsxCLA3RUnCPmxo40ODEhO8D1mNmTfEUVevZMoUPP6Qlqzqs0K9irNCzipnyIlBL15JHxFyHhCYYMDv4U9N/DxI4k82XFThmYAjRIqCzCCEWvusMq5Yft1jDcIUrf9TUOtOV6DWXldDrdtdgVqMXmuoFXFm//8YajEn/tVDLSC0PFeDkFqeskGILc9cHFTssoDHsphNs/whfjt7rKCb8xnFwI5iYAJxJb8ceYhVY/AOJhlBIOxCppoJNA4Yejl7T7NSeIi9NkCNOyQbROEsxGXF94sd6txwwVC64drK0juaoueMTpZSj20LnL4AEvDEojrWzNRHl26kLDNhuPczU32nZr9bEYd9uPbCcWhwkOIC8GZA+Af7ETrZr7EDsP4ohUB0CM8NwHMqC7AVgiOaHBYjSb+xWJwGjYvD6PkxpVcGxWTDrWAihxHYQdZbi8Nkl1maaFRGqLdQEYJ5C77NqhuCgzPKXd5XzOiOcF3uwfOPxfEbl/b8AxrwDMl45MuxjIEKjKB/GwWeAIfyZrgFGhXmPElAI9g3oIvMEgCFT87dkCA+SLl/VjCTW9QNg0wOIaYwgt+rJczYffrlf1iUc+gFYDq4Du5k7tHCgCQheMEEeKPync68RXleePnlBAssArjLTG66umB0Qm8Ydvl9ncFrSrDbYf3hPT/+siFulWTpsZYcPejTMYD9mzrhiSOYsKCuL29bLDmhuaL6C67vsEoF3Oi6vgX7dZU3fbdgsaNbi0IGtA4U0FLXR04s4HGbAru7RMCXK11Qh4S6PPM3qAYf0gSgm/t13whMc5+DUxZan2mrI1BubSoYm1hKYossh3lKPkSqsEikgX6WelUw6YP9z4b9o5VWsNgMxjfBaTd9q9lMhnVR/Tf4zrUgNUEsGYHVww4MfELOaaWhzwoxMIpzggPSusU5S4RJGLtwNox5OertNYMG15Qxk+kxxVcx1rBXMHK8CWr4hdpYC8dEKBKBbMGYL+4SaRR4HI06KQ9eVHmufO4X9VSEB6Z0CZ8IH9836jBvPtRSTRoZijY4GqWZlEZBlG6GBfOCN3gYEizxQA31UW/QFUOkVV5Q4ydwXqr5dSVftva8nIM5N3UwZ/GwhGNDQ4zCeJSRzYiGpQAjHPq1oU0Whp1aRADPyJvMFjbnBlRmXwEiHLOzBzPU130NnUqx6Vbx6TZj061E7HLadLt6ugH9ZLpNn7WYsY8Klkw4BrWEb41w1guK5+S6bqk3bwQHJSFvm1uihUvwBSfkpr4CU8RSK+FGPTwwLGuhJmbQR9+GvEfhQViGTCUf28kMFw1FHKmd2+GbBFIrIS8hOrcWI+oVTMAIzL4nY1+r950JJI8TasIEMTUOvCWaTJeea6czYactMEwGddoWocgwvTZjvSYSnDKh13a517bvDu21rdcqpenNaMjDDhcwN6Fw5n2o9Ng4g8YmA5MyKrpHoJlJqyaBFUKf0qpJdmN3WkN2Zx6nFPUOCIaBlmgAZ2vI1gbX8UlEewwlee/kFdYN2u+00a7MszceMELrsONozWFD46BirZdoFI3FvsXLa0m3bPxwv5u+Ge13U3ZkbL+r8n7nha3C/a70cJnY2OaQ/a6G7ndV3u8qLHjwfrekIbH9rk7f72Z8v9vi9U/vd3Pofjej/W5lolOtPB6KfbMHD4TDs4SnjaY+uB9GKNT0TXNxiG+ZT6AJZ5nXB0rIDQZQDVCA/v7N3QQraLsOSCH0FZbE41gS8mB4gKldBOEvWhA8HEZTfXtoPecNi+eV1jnPP8gUBfwLy5WnEufi02EzA5aELq7DKnuaNzYGMDiMRr08AdXf/qxekVw8pwf30BvvHgQeQGC/DuyPpzyMwAEdOBDP9jgCB3XgYDzb0wgM6MBAPNszCBzSgUPxbEcROKwDh+PZjiNwRAeOxLPdiQC/PY+3Yzr6WPyDE/GUFxA4oQMn44EXETipA6fige3HviwxCPTHA7sRQAwCu+KB2xHYpQN74oE7EdijA3vjgbsQ2KsD++KBexDYpwMPILBfB/bHUx5G4IAOHIhnexyBgzpwMJ7taQQGdGAgnu0ZBA7pwKF4tqMIHNaBw/FsxxE4ogNH4tmeR+CYDhyLZ3sBgRM6cCKe7UUETurAyXi27VjZp3TgVDzbbqT0P6cnK57tdgR26ZRd8Wx3IrBHB/bEs92FwF4d2BvP9nC4zYJ98TwPMOQPGjoLojACDDc6MYIG2AIc4qqJHgYUSgBs223ALxbDiI72c5bAnuzt8gZHQb5q03ouVilvazChuTS2AAt3gRwHABFyE4KUB3UaDVUYtgtkwYlryqfQlG/L6eMwj4MxE+vh/7BTPu6l8DtxNic7C3zeE8gnTNkO6pAXTZlkGsxr8krBXgmKeC/VYiaHBVbIxVyRQdueYupLAiwD1mQkGgwHM3WGESkb1gnMniMEq1tQKvpRq3QPbH1SBP2mDIfhNfKZHZxSIWqhYggFHfdAxgmhMMoIBTWDEQpRfWKEgjFGVpsJEQoV4RVJ6KFKt3zBIXwQtXYM/XGDypIeP0twIZs9YIYHBUw2rBDjwZUdFg4JkyiQQMmdISZQBsObhNMdlDQNaKmAXHn2PmTq4WC+nh4JEPYi2pLBoBgajDQIjPJgGLHBMANuMQ2GVR4MwjyGYldOiFM6Q3BKB4ORysgCYyxXhXsrOhLR/oIpy0pF6y4cKJDzeQsGECH6ZzC1AhSetWk5Xo6IA+EbazDFEDnRryojcoy+mQwqdcNo/IX1a8ZWPmcpt0V4C4wIE+6FCR3SEZnTAuvGmeG+CnENTA8X21liDaqhHbaHgx6m3qX2aaU5gnZgqHW/9BBJXh6KA2fKy9XxxoDnEcJ/ygiR7yzOGX/lfNEQWWV6gclOxfSCYqU7TS8wvqmEXlCgF1RIL4TUwhA6SUXUAiCkkCaWXsoU42kfWsMvZexra+hStvS+ji1lSyO5ZTLOGETNYfkPJhTMwYRCJiSXoMWW+X3GzGwxcQPXyVRnwYF+ItiAwTHWiHXAAGQGt9aTdsD/Y6gZRYiMJxlFQJMaQm2LeY79VFa/8mqYleWKk2BGeAdYz3vgS1BSE50n5gQn5NkP/jhsad+jwruI8O08Vj9mNeYENN1/YfTyxS9yCRG79EaNwxR8yJLngBUVjLazv5S8BzZsfyJfBUQcruu5dYnw++AYu8o7rEN7EiCJtQ0uvFVQ3EnF3cSQ6TFyg2PUbf5DZKTXYsG0xa9qsY6xKHiOcdJkM+G8N4v9d5t4ovH8V2o6meSu6KmgNkXvku+kDd12TvF4suxyd/bY3B34nXHgHSbsDJpyJCFNOcxGKGHBNUxmDKBpjv6SBosLPpjS7HpKL78eil7xOJASnVaaeDdvWayIuaB8lVRgsxq1n+gkUgoM/adTLITqh91ebR/m9yU6PJJ9PWyUxCF6q93U0yP7yCYwq80JspZeWpCPWHId1aB1IKoDTnCk3Nhj5dcTg9p9OKUd2FvcTF8WWXA4VRLp7AF+mcVtYC0VN6al4kFJwmNVFIvF1XoZUtZNcTtqHtpI/uGU5R+8f2Kt6bekNVQClMGGNEp3OWwU4EYiaiuFen0atEQvBizWGAcKRYW0tEAz7x3WZ8tIU6I42LNnpU1hHG8Nixrm6qUPk8Q9qVLgexv0bkv5Se9NEHJR4/mmLwe+hAo5ev4TzvwIVBxge1EneDe2aBS7Hwr/9LyJYhMRFHEmGVup2n0wtKNqaIVfgovDpFoI79CQBnNvQvYJxX9KEULnQJRH7XlMEZRJMVCnDuxzoTHGr/1ui+mzYq0oshiin+tXRIGk1uYxtLZvVqt+sSpwJgq0lvy0BAB1E9IR/Z0rnQ3d58qA6JDDBjSWjCwatlWz9/T82p6FaTmZAgM/4wyCd82ng7u9vMHLniFRLHuG3JMInnuUgGBW5i04Bob7yUeF4d6fVpktIUudEXfB2u0eBs82XGqw7RZEA5InW0jLNXLsZFAJU4XAT2Z+zoS7HAgarMl8Y4JxGTyxWwE8owXL2yRgIbBBB+xShpANq1NQw3TsujdoQWSwiGwqC/DKZFeDbCxFQ7RYjt35fGuWyXqkYi51GZjs3LJMwRL2E52JdWBLucziAuaZAyEgJ7eKrqcjJILgbJpQV/YsxOiuWEJuLl+FZ7EwtmCL5dXrcOSpUixgxgNWFNBQoeByz2TQLN+OJaOcvK0HILx1TizD0tS6cpUwu5ftlUABSgpApBlFmjoSHvbNTXnmv1EQ0rN8GuMAiypanXSoKLgSR5+TfpYgMmvSAe23xRwtE5xMdEMa7zAIYvweSAoBtMQmarS7qSfYeuP2ZHdJMP8zpSTPmJIdNiUP00MPx1pKVoPrZ3GhW9rPsDgOR8PLW19MdNMrP0vB1n57beBt4p76SQjg4MMgeBFuVfpKBecMDaexTwbM0nLO0AGQuchk6kzD9oUzMR+SdgdYf6CB8jao3MBu4/Uj/FsIOoJsdyHJqFCC94osGCu+lKz4UrLiSykRHoIOzH4d2SuQIuPqRDlxy4VybqUXWGfBFoadIKA8hPXdOGJOH0Gsv4Sfg/pBjg7r8DpH32g0agtQWablvQDcxfAmVpz2bNvIBsBqEy95QofojY2wuRHgFeeZ0PdBjEEtAjQzSilY6AOQfxpir0oZmMFAVbLOhQaMtFqqDAPO1yoz+qSmWhihqCzXMbgILpzo8ErGnOu5INQvZWUOpVTdDcCOZ5mAYmoWpvcGBNmmZxatz8QNmxFO4gJL5EpJmAAhwkYhI2GPjkwK+4XcDT6nTCxUSEoNnWsUri94Eq4tVCFcW6iWcH1hBMI1hRoJ+7AkQIGjJDyxMNpHI9I+FZ30UWrWR1mVPkqo8vHdCB+5E/5I+mv7o+lvEtktzp7m7FnOXsnZq3T2EZwdH6X4IwsfOfxRkj9K80dZ/qhSf1TFH43gj/BpBp8WxhXH7tpcGMt/6/ivCw+JE7YV6ovpnZtpHVXeQAWhaI+LqOYiariIUVy7O+iz2uKe/za4TakbMKncJox2nc5Qx+XWR9kyaDqmZ6zOMJYzjOUMgGY36PZRCfyNbmc9/x1zNwx1J3S