UNPKG

@broxus/tvm-connect

Version:

TypeScript SDK for connecting to Nekoton-compatible wallets using a unified interface.

1 lines 70.7 kB
import {isBrowser,timeoutPromise,debug,groupCollapsed,error,groupEnd,debounce,throwException,sliceString,paramsSerializer,storage,getUserAgent,isMobile,isAndroid,isChrome,isFirefox,isIos}from'@broxus/js-utils';import {ProviderRpcClient as ProviderRpcClient$1,AddressLiteral,StaticProviderAdapter}from'everscale-inpage-provider';import {makeObservable,observable,action,computed,runInAction,reaction,comparer}from'mobx';import {AbstractStore,errorLabelStyle,inheritTextStyle,resolveTvmAddress,warningLabelStyle,areAddressesEqual,TvmChains,DEFAULT_NATIVE_CURRENCY_DECIMALS,getFullContractState,successLabelStyle,successTextStyle,ZeroAddress}from'@broxus/js-core';var Me=Object.defineProperty;var c=(i,t)=>Me(i,"name",{value:t,configurable:true});function u(i,t,e,n){var o=arguments.length,I=o<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,e):n,M;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")I=Reflect.decorate(i,t,e,n);else for(var N=i.length-1;N>=0;N--)(M=i[N])&&(I=(o<3?M(I):o>3?M(t,e,I):M(t,e))||I);return o>3&&I&&Object.defineProperty(t,e,I),I}c(u,"_ts_decorate");function s(i,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(i,t)}c(s,"_ts_metadata");var A=class extends AbstractStore{static{c(this,"NekotonConnector");}params;provider;constructor(t){super(),this.params=t,makeObservable(this);}async connect(t,e){if(!this.provider)throw new Error("Provider is not defined");try{this.setState("isConnecting",!0),await this.provider.hasProvider(),isBrowser()&&await this.provider.ensureInitialized();let n=await timeoutPromise(this.provider.getProviderState(),2e3).catch(()=>{});if(n?.permissions.accountInteraction){this.setData({account:n.permissions.accountInteraction,chainId:n.networkId,version:n.version}),this.setState({isConnecting:!1,isInitialized:!0});return}await this.stopSubscriptions({silent:!0}),await this.runSubscriptions();let o=await this.provider.requestPermissions({permissions:["basic","accountInteraction"]});this.setData("account",o.accountInteraction),n=await timeoutPromise(this.provider.getProviderState(),2e3);let I=n.networkId,M=typeof t=="number"?t:t?.networkId,N=this.params?.info?.name??this.constructor.name??this.constructor.prototype.name;if(!M||I===M){this.setData({chainId:n.networkId,version:n.version}),this.setState({isConnecting:!1,isInitialized:!0}),debug(`${N} connection has skipped network switching.`),await e?.onConnect?.(this);return}if(!t){debug(`${N} connection has skipped network switching. Chain params or chainId is not provided.`);return}debug(`${N} connection trying to switch network.`),await this.switchNetwork(t).then(async()=>{await this.connect(t,e);}).catch(async()=>{await this.connect(void 0,e);});}catch(n){throw this.setState("isConnecting",false),await this.stopSubscriptions(),n}}async disconnect(t){if(!((this.isConnecting||this.isDisconnecting)&&!t?.force))try{this.setState("isDisconnecting",!0),await this.provider?.disconnect(),await this.stopSubscriptions(),this.setData("account",void 0);}catch(e){groupCollapsed(`%c${this.constructor.prototype.name||"Wallet"}%c disconnect failed with an error`,errorLabelStyle,inheritTextStyle),error(e),groupEnd();}finally{this.setState("isDisconnecting",false),await t?.onDisconnect?.(this),await this.runSubscriptions({silent:true});}}async addAsset(t,e="tip3_token"){if(!this.provider)throw new Error("Provider is not defined");if(!this.account?.address)throw new Error("No connected account");return (await this.provider.addAsset({account:this.account.address,params:{rootContract:resolveTvmAddress(t)},type:e})).newAsset}async addNetwork(t,e){if(!this.provider)throw new Error("Provider is not defined");return (await this.provider.addNetwork({network:t,switchNetwork:e})).network}async switchNetwork(t){if(!this.provider)throw new Error("Provider is not defined");let e=typeof t=="number"?t:t.networkId,n=await this.provider.changeNetwork({networkId:e});return n.network==null&&typeof t!="number"&&(n.network=await this.addNetwork(t,true)),n.network}get account(){return this._data.account}get chainId(){return this._data.chainId}get version(){return this._data.version}get isConnecting(){return this._state.isConnecting}get isDisconnecting(){return this._state.isDisconnecting}get isInitialized(){return this._state.isInitialized}get isInitializing(){return this._state.isInitializing}get info(){return this.params?.info}async runSubscriptions(t){if(!this.provider)return;await this.provider.hasProvider(),isBrowser()&&await this.provider.ensureInitialized();let e=await timeoutPromise(this.provider.getProviderState(),2e3).catch(()=>{});e&&this.setData("chainId",e.networkId);let{silent:n=true}={...t},[o,I,M]=await Promise.all([this.provider.subscribe("disconnected"),this.provider.subscribe("networkChanged"),this.provider.subscribe("permissionsChanged")]);this._disconnectSubscription=o,this._networkChangeSubscription=I,this._permissionsSubscription=M,this._disconnectSubscription?.on("data",debounce(this.handleDisconnected,30)),this._networkChangeSubscription?.on("data",debounce(this.handleNetworkChanged,30)),this._permissionsSubscription?.on("data",debounce(this.handlePermissionsChanged,30)),n||debug("Run subscriptions: network and permissions changes",this.constructor.prototype.name||this.constructor.name);}async stopSubscriptions(t){let{silent:e=true}={...t};await Promise.allSettled([this._disconnectSubscription?.unsubscribe(),this._networkChangeSubscription?.unsubscribe(),this._permissionsSubscription?.unsubscribe()]),this._disconnectSubscription=void 0,this._networkChangeSubscription=void 0,this._permissionsSubscription=void 0,e||debug("Subscriptions stopped: network and permissions changes",this.constructor.prototype.name||this.constructor.name);}async preConnect(){try{if(!this.provider)return;this.setState("isConnecting",!0),await this.provider.hasProvider(),isBrowser()&&await this.provider.ensureInitialized();let t=await timeoutPromise(this.provider.getProviderState(),2e3);t.permissions.accountInteraction||throwException("No permissions returned"),this.setData({account:t.permissions.accountInteraction,chainId:t.networkId,version:t.version}),await this.params?.onPreconnect?.(this);}catch(t){let e=this.params?.info?.name??this.constructor.name??this.constructor.prototype.name;debug(`${e} could not be pre-connected`,t);}finally{this.setState("isConnecting",false);}}async handlePermissionsChanged(t){let e=t.permissions.accountInteraction;if(!e){debug(`%c${this.constructor.prototype.name||this.constructor.name}%c Permissions have been revoked. Disconnect dApp!`,warningLabelStyle,inheritTextStyle),await this.disconnect({force:true});return}areAddressesEqual(this.account?.address,e.address)||(this.setData("account",e),debug(`%c${this.constructor.prototype.name||this.constructor.name}%c Permissions have been changed`,warningLabelStyle,inheritTextStyle));}async handleNetworkChanged(t){let e=t.networkId;this.chainId!==e&&(debug(`%c${this.constructor.prototype.name||this.constructor.name}%c Network has been changed from ${this.chainId} to ${e}`,warningLabelStyle,inheritTextStyle),this.setData("chainId",e));}async handleDisconnected(t){this.setData(()=>({account:void 0})),this.params?.onDisconnect?.(t),await this.stopSubscriptions({silent:true}),await this.runSubscriptions({silent:true});}_networkChangeSubscription;_permissionsSubscription;_disconnectSubscription};u([observable,s("design:type",typeof ProviderRpcClient>"u"?Object:ProviderRpcClient)],A.prototype,"provider",void 0);u([action.bound,s("design:type",Function),s("design:paramtypes",[Object,typeof ConnectOptions>"u"?Object:ConnectOptions]),s("design:returntype",Promise)],A.prototype,"connect",null);u([action.bound,s("design:type",Function),s("design:paramtypes",[typeof DisconnectOptions>"u"?Object:DisconnectOptions]),s("design:returntype",Promise)],A.prototype,"disconnect",null);u([action.bound,s("design:type",Function),s("design:paramtypes",[Object,typeof AssetType>"u"?Object:AssetType]),s("design:returntype",Promise)],A.prototype,"addAsset",null);u([action.bound,s("design:type",Function),s("design:paramtypes",[typeof AddNetwork>"u"?Object:AddNetwork,Boolean]),s("design:returntype",Promise)],A.prototype,"addNetwork",null);u([action.bound,s("design:type",Function),s("design:paramtypes",[Object]),s("design:returntype",Promise)],A.prototype,"switchNetwork",null);u([computed,s("design:type",Object),s("design:paramtypes",[])],A.prototype,"account",null);u([computed,s("design:type",Object),s("design:paramtypes",[])],A.prototype,"chainId",null);u([computed,s("design:type",Object),s("design:paramtypes",[])],A.prototype,"version",null);u([computed,s("design:type",Object),s("design:paramtypes",[])],A.prototype,"isConnecting",null);u([computed,s("design:type",Object),s("design:paramtypes",[])],A.prototype,"isDisconnecting",null);u([computed,s("design:type",Object),s("design:paramtypes",[])],A.prototype,"isInitialized",null);u([computed,s("design:type",Object),s("design:paramtypes",[])],A.prototype,"isInitializing",null);u([computed,s("design:type",Object),s("design:paramtypes",[])],A.prototype,"info",null);u([action.bound,s("design:type",Function),s("design:paramtypes",[typeof Silentable>"u"?Object:Silentable]),s("design:returntype",Promise)],A.prototype,"runSubscriptions",null);u([action.bound,s("design:type",Function),s("design:paramtypes",[typeof Silentable>"u"?Object:Silentable]),s("design:returntype",Promise)],A.prototype,"stopSubscriptions",null);u([action.bound,s("design:type",Function),s("design:paramtypes",[]),s("design:returntype",Promise)],A.prototype,"preConnect",null);u([action.bound,s("design:type",Function),s("design:paramtypes",[Object]),s("design:returntype",Promise)],A.prototype,"handlePermissionsChanged",null);u([action.bound,s("design:type",Function),s("design:paramtypes",[Object]),s("design:returntype",Promise)],A.prototype,"handleNetworkChanged",null);u([action.bound,s("design:type",Function),s("design:paramtypes",[Object]),s("design:returntype",Promise)],A.prototype,"handleDisconnected",null);var z=(function(i){return i.NEKOTON_WALLET="NEKOTON_WALLET",i.NEKOTON_ADAPTER="NEKOTON_ADAPTER",i.EXTERNAL_APP="EXTERNAL_APP",i})({}),T=(function(i){return i.SPARX_WALLET="com.sparxwallet",i.SPARX_WALLET_MOBILE="com.broxus.sparx.app",i.EVER_WALLET="net.everwallet",i.EVER_WALLET_MOBILE="com.broxus.crystal.app",i.VENOM_WALLET="com.venomwallet",i.VENOM_WALLET_MOBILE="com.venom.wallet",i})({}),j=(function(i){return i.REQUEST_PROVIDER="tvm:requestProvider",i.ANNOUNCE_PROVIDER="tvm:announceProvider",i})({});function pe(i,t,e,n){var o=arguments.length,I=o<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,e):n,M;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")I=Reflect.decorate(i,t,e,n);else for(var N=i.length-1;N>=0;N--)(M=i[N])&&(I=(o<3?M(I):o>3?M(t,e,I):M(t,e))||I);return o>3&&I&&Object.defineProperty(t,e,I),I}c(pe,"_ts_decorate");function et(i,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(i,t)}c(et,"_ts_metadata");function he(i){return t=>new Promise((e,n)=>{if(t){e(t);return}let o=i?.fallbackAttempts??5,I=0,M=debounce(()=>{if(I>=o){n(new Error(`Max attempts (${o}) is reached.`));return}if(isBrowser()&&window.__ever){debug("EVER Wallet provider was found with fallback",window.__ever),e(window.__ever);return}I+=1,M();},1e3);M();})}c(he,"everProviderFallback");var Se=[T.EVER_WALLET.toString(),T.EVER_WALLET_MOBILE.toString()],C=class extends A{static{c(this,"EverWallet");}params;type=z.NEKOTON_WALLET;constructor(t){super(t),this.params=t,makeObservable(this),this.init().catch(error);}async init(){let t,e=c(async n=>{let{name:o,rdns:I}=n.detail.info;(o==="EVER Wallet"||I&&Se.includes(I))&&(window.removeEventListener(j.ANNOUNCE_PROVIDER,e),t=new ProviderRpcClient$1({provider:new StaticProviderAdapter(n.detail.provider)}),debug("EVER Wallet provider event was captured",n));},"onAnnouncement");try{if(this.setState("isInitializing",!0),isBrowser()&&(window.addEventListener(j.ANNOUNCE_PROVIDER,e),window.dispatchEvent(new Event(j.REQUEST_PROVIDER))),!t)if(this.params?.fallbackProviderFactory)t=await this.params.fallbackProviderFactory();else try{let o=await he({fallbackAttempts:this.params?.fallbackAttempts})();o||throwException("No provider found"),t=new ProviderRpcClient$1({provider:o});}catch{}await t?.hasProvider()||throwException("No provider found"),isBrowser()&&await t?.ensureInitialized(),runInAction(()=>{this.provider=t,isBrowser()&&window.removeEventListener(j.ANNOUNCE_PROVIDER,e);}),(this.params?.autoInit??!0)&&await Promise.allSettled([this.preConnect(),this.runSubscriptions()]),this.setState({isInitialized:!0,isInitializing:!1});}catch(n){debug("Ever Wallet could not be initialized",n),this.setState({isInitialized:false,isInitializing:false}),await this.stopSubscriptions();}return this.provider}};pe([action.bound,et("design:type",Function),et("design:paramtypes",[]),et("design:returntype",Promise)],C.prototype,"init",null);function Oe(i,t,e,n){var o=arguments.length,I=o<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,e):n,M;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")I=Reflect.decorate(i,t,e,n);else for(var N=i.length-1;N>=0;N--)(M=i[N])&&(I=(o<3?M(I):o>3?M(t,e,I):M(t,e))||I);return o>3&&I&&Object.defineProperty(t,e,I),I}c(Oe,"_ts_decorate");function nt(i,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(i,t)}c(nt,"_ts_metadata");function ke(i){return t=>new Promise((e,n)=>{if(t){e(t);return}let o=i?.fallbackAttempts??5,I=0,M=debounce(()=>{if(I>=o){n(new Error(`Max attempts (${o}) is reached.`));return}if(isBrowser()&&window.__oxy){debug("OxyChat Wallet provider was found with fallback",window.__oxy),e(window.__oxy);return}I+=1,M();},1e3);M();})}c(ke,"oxyChatProviderFallback");var Pe=[],S=class extends A{static{c(this,"OxyChatWallet");}params;type=z.EXTERNAL_APP;constructor(t){super(),this.params=t,makeObservable(this),this.init().catch(error);}async init(){let t,e=c(async n=>{let{name:o,rdns:I}=n.detail.info;(o==="OxyChat Wallet"||I&&Pe.includes(I))&&(window.removeEventListener(j.ANNOUNCE_PROVIDER,e),t=new ProviderRpcClient$1({provider:new StaticProviderAdapter(n.detail.provider)}),debug("OxyChat Wallet provider event was captured",n));},"onAnnouncement");try{if(this.setState("isInitializing",!0),isBrowser()&&(window.addEventListener(j.ANNOUNCE_PROVIDER,e),window.dispatchEvent(new Event(j.REQUEST_PROVIDER))),!t)if(this.params?.fallbackProviderFactory)t=await this.params.fallbackProviderFactory();else try{let o=await ke({fallbackAttempts:this.params?.fallbackAttempts})();o||throwException("No provider found"),t=new ProviderRpcClient$1({provider:o});}catch{}await t?.hasProvider()||throwException("No provider found"),runInAction(()=>{this.provider=t,isBrowser()&&window.removeEventListener(j.ANNOUNCE_PROVIDER,e);}),(this.params?.autoInit??!0)&&await Promise.allSettled([this.preConnect(),this.runSubscriptions()]),this.setState({isInitialized:!0,isInitializing:!1});}catch(n){debug("OxyChat Wallet could not be initialized",n),this.setState({isInitialized:false,isInitializing:false}),await this.stopSubscriptions();}return this.provider}};Oe([action.bound,nt("design:type",Function),nt("design:paramtypes",[]),nt("design:returntype",Promise)],S.prototype,"init",null);function Ye(i,t,e,n){var o=arguments.length,I=o<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,e):n,M;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")I=Reflect.decorate(i,t,e,n);else for(var N=i.length-1;N>=0;N--)(M=i[N])&&(I=(o<3?M(I):o>3?M(t,e,I):M(t,e))||I);return o>3&&I&&Object.defineProperty(t,e,I),I}c(Ye,"_ts_decorate");function ot(i,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(i,t)}c(ot,"_ts_metadata");function Ve(i){return t=>new Promise((e,n)=>{if(t){e(t);return}let o=i?.fallbackAttempts??5,I=0,M=debounce(()=>{if(I>=o){n(new Error(`Max attempts (${o}) is reached.`));return}if(isBrowser()&&window.__sparx){debug("SparX Wallet provider was found with fallback",window.__sparx),e(window.__sparx);return}I+=1,M();},1e3);M();})}c(Ve,"sparxProviderFallback");var Be=[T.SPARX_WALLET.toString(),T.SPARX_WALLET_MOBILE.toString()],d=class extends A{static{c(this,"SparXWallet");}params;type=z.NEKOTON_WALLET;constructor(t){super(t),this.params=t,makeObservable(this),this.init().catch(error);}async init(){let t,e=c(async n=>{let{name:o,rdns:I}=n.detail.info;(o==="SparX Wallet"||I&&Be.includes(I))&&(window.removeEventListener(j.ANNOUNCE_PROVIDER,e),t=new ProviderRpcClient$1({provider:new StaticProviderAdapter(n.detail.provider)}),debug("SparX Wallet provider event was captured",n));},"onAnnouncement");try{if(this.setState("isInitializing",!0),isBrowser()&&(window.addEventListener(j.ANNOUNCE_PROVIDER,e),window.dispatchEvent(new Event(j.REQUEST_PROVIDER))),!t)if(this.params?.fallbackProviderFactory)t=await this.params.fallbackProviderFactory();else try{let o=await Ve({fallbackAttempts:this.params?.fallbackAttempts})();o||throwException("No provider found"),t=new ProviderRpcClient$1({provider:o});}catch{}await t?.hasProvider()||throwException("No provider found"),isBrowser()&&await t?.ensureInitialized(),runInAction(()=>{this.provider=t,isBrowser()&&window.removeEventListener(j.ANNOUNCE_PROVIDER,e);}),(this.params?.autoInit??!0)&&await Promise.allSettled([this.preConnect(),this.runSubscriptions()]),this.setState({isInitialized:!0,isInitializing:!1});}catch(n){debug("SparX Wallet could not be initialized",n),this.setState({isInitialized:false,isInitializing:false}),await this.stopSubscriptions();}return this.provider}};Ye([action.bound,ot("design:type",Function),ot("design:paramtypes",[]),ot("design:returntype",Promise)],d.prototype,"init",null);function Fe(i,t,e,n){var o=arguments.length,I=o<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,e):n,M;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")I=Reflect.decorate(i,t,e,n);else for(var N=i.length-1;N>=0;N--)(M=i[N])&&(I=(o<3?M(I):o>3?M(t,e,I):M(t,e))||I);return o>3&&I&&Object.defineProperty(t,e,I),I}c(Fe,"_ts_decorate");function Mt(i,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(i,t)}c(Mt,"_ts_metadata");function qe(i){return t=>new Promise((e,n)=>{if(t){e(t);return}let o=i?.fallbackAttempts??5,I=0,M=debounce(()=>{if(I>=o){n(new Error(`Max attempts (${o}) is reached.`));return}if(isBrowser()&&window.__venom){debug("Venom Wallet provider was found with fallback",window.__venom),e(window.__venom);return}I+=1,M();},1e3);M();})}c(qe,"venomProviderFallback");var ti=[T.VENOM_WALLET.toString(),T.VENOM_WALLET_MOBILE.toString()],w=class extends A{static{c(this,"VenomWallet");}params;type=z.NEKOTON_WALLET;constructor(t){super(t),this.params=t,makeObservable(this),this.init().catch(error);}async init(){let t,e=c(async n=>{let{name:o,rdns:I}=n.detail.info;(o==="Venom Wallet"||I&&ti.includes(I))&&(window.removeEventListener(j.ANNOUNCE_PROVIDER,e),t=new ProviderRpcClient$1({provider:new StaticProviderAdapter(n.detail.provider)}),debug("Venom Wallet provider event was captured",n));},"onAnnouncement");try{if(this.setState("isInitializing",!0),isBrowser()&&(window.addEventListener(j.ANNOUNCE_PROVIDER,e),window.dispatchEvent(new Event(j.REQUEST_PROVIDER))),!t)if(this.params?.fallbackProviderFactory)t=await this.params.fallbackProviderFactory();else try{let o=await qe({fallbackAttempts:this.params?.fallbackAttempts})();o||throwException("No provider found"),t=new ProviderRpcClient$1({provider:o});}catch{}await t?.hasProvider()||throwException("No provider found"),isBrowser()&&await t?.ensureInitialized(),runInAction(()=>{this.provider=t,isBrowser()&&window.removeEventListener(j.ANNOUNCE_PROVIDER,e);}),(this.params?.autoInit??!0)&&await Promise.allSettled([this.preConnect(),this.runSubscriptions()]),this.setState({isInitialized:!0,isInitializing:!1});}catch(n){debug("Venom Wallet could not be initialized",n),this.setState({isInitialized:false,isInitializing:false}),await this.stopSubscriptions();}return this.provider}};Fe([action.bound,Mt("design:type",Function),Mt("design:paramtypes",[]),Mt("design:returntype",Promise)],w.prototype,"init",null);var at="TVM_RECENT_CONNECTION",$i="tvm-connect-root";function O(i,t){return {connector:new i(t),id:i.name,info:t?.info}}c(O,"createProviderConfig");var Yt="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwMCIgaGVpZ2h0PSIxMjAwIiB2aWV3Qm94PSIwIDAgMTIwMCAxMjAwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQ2NV8yKSI+CiAgICAgICAgPGcgZmlsdGVyPSJ1cmwoI2ZpbHRlcjBfZF80NjVfMikiPgogICAgICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSIxMTYwIiBoZWlnaHQ9IjExNjAiIHJ4PSI1ODAiIGZpbGw9IiMwRjEyMjQiLz4KICAgICAgICAgICAgPHBhdGggZD0iTTMwOS44NiA4NDIuNTA0TDI2Ny4wNTggNzk5LjcwMkwzNzcuMjUyIDY4OS41MDhDNDI2LjU4OSA2NDAuMTcyIDQyNi41ODkgNTU5Ljg4NCAzNzcuMjUyIDUxMC41NDhMMjY3IDQwMC4yOTZMMzA5LjgwMiAzNTcuNDk0TDQyMC4wNTQgNDY3Ljc0NkM0OTIuOTk1IDU0MC42ODcgNDkyLjk5NSA2NTkuMzY5IDQyMC4wNTQgNzMyLjMxTDMwOS44NiA4NDIuNTA0WiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzQ2NV8yKSIvPgogICAgICAgICAgICA8cGF0aCBkPSJNNzk5LjcwMiA5MzNMNjg5LjUwOCA4MjIuODA2QzY0MC4xNzIgNzczLjQ3IDU1OS44ODUgNzczLjQ3IDUxMC41NDkgODIyLjgwNkw0MDAuMzU0IDkzM0wzNTcuNTUyIDg5MC4xOThMNDY3Ljc0NyA3ODAuMDA0QzU0MC42ODggNzA3LjA2MyA2NTkuMzY5IDcwNy4wNjMgNzMyLjMxIDc4MC4wMDRMODQyLjUwNCA4OTAuMTk4TDc5OS43MDIgOTMzWiIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzQ2NV8yKSIvPgogICAgICAgICAgICA8cGF0aCBkPSJNODkwLjE5OCA4NDIuNTA0TDc4MC4wMDQgNzMyLjMxQzcwNy4wNjMgNjU5LjM2OSA3MDcuMDYzIDU0MC42ODggNzgwLjAwNCA0NjcuNzQ3TDg5MC4xOTggMzU3LjU1Mkw5MzMgNDAwLjM1NEw4MjIuODA2IDUxMC41NDlDNzczLjQ3IDU1OS44ODUgNzczLjQ3IDY0MC4xNzIgODIyLjgwNiA2ODkuNTA4TDkzMyA3OTkuNzAyTDg5MC4xOTggODQyLjUwNFoiIGZpbGw9InVybCgjcGFpbnQyX2xpbmVhcl80NjVfMikiLz4KICAgICAgICAgICAgPHBhdGggZD0iTTYwMC4wMTkgNDc0Ljc2NUM1NTIuMTE0IDQ3NC43NjUgNTA0LjIwOCA0NTYuNTM1IDQ2Ny43NDcgNDIwLjA1NUwzNTcuNDk1IDMwOS44MDJMNDAwLjI5NyAyNjdMNTEwLjU0OSAzNzcuMjUzQzU1OS44ODUgNDI2LjU4OSA2NDAuMTczIDQyNi41ODkgNjg5LjUwOSAzNzcuMjUzTDc5OS43MDMgMjY3LjA1OEw4NDIuNTA1IDMwOS44Nkw3MzIuMzExIDQyMC4wNTVDNjk1LjgzIDQ1Ni41MTUgNjQ3Ljk0NCA0NzQuNzY1IDYwMC4wMzkgNDc0Ljc2NUg2MDAuMDE5WiIgZmlsbD0idXJsKCNwYWludDNfbGluZWFyXzQ2NV8yKSIvPgogICAgICAgIDwvZz4KICAgIDwvZz4KICAgIDxkZWZzPgogICAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcjBfZF80NjVfMiIgeD0iLTI1IiB5PSItMjUiIHdpZHRoPSIxMjUwIiBoZWlnaHQ9IjEyNTAiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49IlNvdXJjZUFscGhhIiB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDAiIHJlc3VsdD0iaGFyZEFscGhhIi8+CiAgICAgICAgICAgIDxmZU9mZnNldC8+CiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjIyLjUiLz4KICAgICAgICAgICAgPGZlQ29tcG9zaXRlIGluMj0iaGFyZEFscGhhIiBvcGVyYXRvcj0ib3V0Ii8+CiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwIDAgMCAwIDAuMTY0NzA2IDAgMCAwIDAgMC43NDExNzYgMCAwIDAgMCAwLjg5NDExOCAwIDAgMCAwLjEgMCIvPgogICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9ImVmZmVjdDFfZHJvcFNoYWRvd180NjVfMiIvPgogICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9ImVmZmVjdDFfZHJvcFNoYWRvd180NjVfMiIgcmVzdWx0PSJzaGFwZSIvPgogICAgICAgIDwvZmlsdGVyPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl80NjVfMiIgeDE9IjM3MC44NzMiIHkxPSI4MzkuODc1IiB4Mj0iMzcwLjg3MyIgeTI9IjM2MC45NTUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzAwQjJFMyIgc3RvcC1vcGFjaXR5PSIwIi8+CiAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMC4wNyIgc3RvcC1jb2xvcj0iIzA1QjNFMyIgc3RvcC1vcGFjaXR5PSIwLjAzIi8+CiAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMC4xOSIgc3RvcC1jb2xvcj0iIzEzQjdFMyIgc3RvcC1vcGFjaXR5PSIwLjEzIi8+CiAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMC4zMyIgc3RvcC1jb2xvcj0iIzJBQkRFNCIgc3RvcC1vcGFjaXR5PSIwLjI4Ii8+CiAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMC40OSIgc3RvcC1jb2xvcj0iIzRBQzVFNSIgc3RvcC1vcGFjaXR5PSIwLjQ5Ii8+CiAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMC42NiIgc3RvcC1jb2xvcj0iIzczRDBFNiIgc3RvcC1vcGFjaXR5PSIwLjc1Ii8+CiAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMC44MSIgc3RvcC1jb2xvcj0iIzlBREJFOCIvPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDFfbGluZWFyXzQ2NV8yIiB4MT0iODQwLjY4NyIgeTE9IjgyOS4xNDciIHgyPSIzNTguNDYxIiB5Mj0iODI5LjE0NyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDBCMkUzIiBzdG9wLW9wYWNpdHk9IjAiLz4KICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIwLjA3IiBzdG9wLWNvbG9yPSIjMDVCM0UzIiBzdG9wLW9wYWNpdHk9IjAuMDMiLz4KICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIwLjE5IiBzdG9wLWNvbG9yPSIjMTNCN0UzIiBzdG9wLW9wYWNpdHk9IjAuMTMiLz4KICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIwLjMzIiBzdG9wLWNvbG9yPSIjMkFCREU0IiBzdG9wLW9wYWNpdHk9IjAuMjgiLz4KICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIwLjQ5IiBzdG9wLWNvbG9yPSIjNEFDNUU1IiBzdG9wLW9wYWNpdHk9IjAuNDkiLz4KICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIwLjY2IiBzdG9wLWNvbG9yPSIjNzNEMEU2IiBzdG9wLW9wYWNpdHk9IjAuNzUiLz4KICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIwLjgxIiBzdG9wLWNvbG9yPSIjOUFEQkU4Ii8+CiAgICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50Ml9saW5lYXJfNDY1XzIiIHgxPSI4MjkuMTQ3IiB5MT0iMzU4LjMyNiIgeDI9IjgyOS4xNDciIHkyPSI4MzcuMDMzIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwMEIyRTMiIHN0b3Atb3BhY2l0eT0iMCIvPgogICAgICAgICAgICA8c3RvcCBvZmZzZXQ9IjAuMDciIHN0b3AtY29sb3I9IiMwNUIzRTMiIHN0b3Atb3BhY2l0eT0iMC4wMyIvPgogICAgICAgICAgICA8c3RvcCBvZmZzZXQ9IjAuMTkiIHN0b3AtY29sb3I9IiMxM0I3RTMiIHN0b3Atb3BhY2l0eT0iMC4xMyIvPgogICAgICAgICAgICA8c3RvcCBvZmZzZXQ9IjAuMzMiIHN0b3AtY29sb3I9IiMyQUJERTQiIHN0b3Atb3BhY2l0eT0iMC4yOCIvPgogICAgICAgICAgICA8c3RvcCBvZmZzZXQ9IjAuNDkiIHN0b3AtY29sb3I9IiM0QUM1RTUiIHN0b3Atb3BhY2l0eT0iMC40OSIvPgogICAgICAgICAgICA8c3RvcCBvZmZzZXQ9IjAuNjYiIHN0b3AtY29sb3I9IiM3M0QwRTYiIHN0b3Atb3BhY2l0eT0iMC43NSIvPgogICAgICAgICAgICA8c3RvcCBvZmZzZXQ9IjAuODEiIHN0b3AtY29sb3I9IiM5QURCRTgiLz4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQzX2xpbmVhcl80NjVfMiIgeDE9IjM1Ni4yOTYiIHkxPSIzNzAuODczIiB4Mj0iODQyLjc3NiIgeTI9IjM3MC44NzMiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzAwQjJFMyIgc3RvcC1vcGFjaXR5PSIwIi8+CiAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMC4wNyIgc3RvcC1jb2xvcj0iIzA1QjNFMyIgc3RvcC1vcGFjaXR5PSIwLjAzIi8+CiAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMC4xOSIgc3RvcC1jb2xvcj0iIzEzQjdFMyIgc3RvcC1vcGFjaXR5PSIwLjEzIi8+CiAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMC4zMyIgc3RvcC1jb2xvcj0iIzJBQkRFNCIgc3RvcC1vcGFjaXR5PSIwLjI4Ii8+CiAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMC40OSIgc3RvcC1jb2xvcj0iIzRBQzVFNSIgc3RvcC1vcGFjaXR5PSIwLjQ5Ii8+CiAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMC42NiIgc3RvcC1jb2xvcj0iIzczRDBFNiIgc3RvcC1vcGFjaXR5PSIwLjc1Ii8+CiAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMC44MSIgc3RvcC1jb2xvcj0iIzlBREJFOCIvPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJjbGlwMF80NjVfMiI+CiAgICAgICAgICAgIDxyZWN0IHdpZHRoPSIxMjAwIiBoZWlnaHQ9IjEyMDAiIGZpbGw9IndoaXRlIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgIDwvZGVmcz4KPC9zdmc+Cg==",Qt="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwMCIgaGVpZ2h0PSIxMjAwIiB2aWV3Qm94PSIwIDAgMTIwMCAxMjAwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgPHBhdGggZD0iTTEyMDAgNjAwQzEyMDAgMjY4LjYyOSA5MzEuMzcxIDAgNjAwIDBDMjY4LjYyOSAwIDAgMjY4LjYyOSAwIDYwMEMwIDkzMS4zNzEgMjY4LjYyOSAxMjAwIDYwMCAxMjAwQzkzMS4zNzEgMTIwMCAxMjAwIDkzMS4zNzEgMTIwMCA2MDBaIiBmaWxsPSIjMDUwQjJFIi8+CiAgICA8cGF0aCBkPSJNNDU5LjI5OCAzMDBMMTg3LjUgNTc0Ljc5M0g2MjkuMzIzVjEwMTIuNUw5MDAgNzQxLjYzMlYzMDBINDU5LjI5OFoiIGZpbGw9IiNDNUU0RjMiLz4KPC9zdmc+Cg==",Ut="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwMCIgaGVpZ2h0PSIxMjAwIiB2aWV3Qm94PSIwIDAgMTIwMCAxMjAwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgPHBhdGggZD0iTTYwMCAxMjAwQzkzMS4zNzEgMTIwMCAxMjAwIDkzMS4zNzEgMTIwMCA2MDBDMTIwMCAyNjguNjI5IDkzMS4zNzEgMCA2MDAgMEMyNjguNjI5IDAgMCAyNjguNjI5IDAgNjAwQzAgOTMxLjM3MSAyNjguNjI5IDEyMDAgNjAwIDEyMDBaIiBmaWxsPSIjNEM1QUY1Ii8+CiAgICA8cGF0aCBkPSJNODc4LjEyMiAyMzguMDQzQzg1NS43ODcgMjM0LjQzOSA4MzIuOTAxIDIzNi40OTEgODExLjU3NSAyNDQuMDA3Qzc5MC4yNDUgMjUxLjUyNSA3NzEuMTU3IDI2NC4yNjYgNzU2LjA3MSAyODEuMDU4QzcyNy4yNzUgMzEzLjIgNzE4LjMxNiAzNTUuMDQ1IDcyNS4yMzEgMzk2Ljk3OUM3MzEuNDk0IDQzNC43OTQgNzM5LjgwNCA0NzMuMTc1IDc0MS42NzUgNTA5LjYwNkM3NDQuMjg5IDU2NC40NzYgNzM1LjkwNCA2MTkuMzEzIDcxNy4wMTEgNjcwLjkyNEM2OTkuOTE1IDcxNy42MTkgNjc1LjU1OSA3NTMuODMzIDYyMy4zNjIgNzYxLjg0NkM2MTkuNDkyIDc2Mi40NTQgNjA1LjQgNzYyLjg4NSA2MDEuMzk1IDc2My4xMDNDNTk3LjM5NCA3NjMuMzIgNTg0LjczNyA3NjIuNDk1IDU4MC44MjIgNzYxLjg5MUM1MjguNjI2IDc1My44NzggNTA0LjA1MiA3MTcuNjY0IDQ4Ny4wMDEgNjcwLjY2MUM0NjguMTA1IDYxOS4wNTQgNDU5LjcyNCA1NjQuMjE0IDQ2Mi4zMzcgNTA5LjM0NEM0NjQuMjA5IDQ3My4wNDQgNDcyLjUxNSA0MzQuNjIxIDQ3OC43NzcgMzk2LjcxNkM0ODUuNjk2IDM1NC43ODUgNDc2LjczNCAzMTIuOTQgNDQ3Ljk0MSAyODAuNzk4QzQzMi44MDYgMjY0LjAxOCA0MTMuNjcgMjUxLjMwNiAzOTIuMzAyIDI0My44MzNDMzcwLjkzMiAyMzYuMzYxIDM0OC4wMTcgMjM0LjM2OSAzMjUuNjcxIDIzOC4wNDNDMjU4LjcyOSAyNDguOTE2IDIxNC4xNDUgMzA4LjA4OCAyMTMuNzU0IDM3MC4xNjNDMjEzLjU2NyAzOTQuMDggMjIwLjA5IDQxNy41NzQgMjMyLjU4OCA0MzhDMjUzLjQyMyA0NzIuMjIzIDI4Ny42MTEgNDk3LjE3MSAzMTcuNDUgNTIzLjA3NkMzMzcuMTk3IDU0MC40MDUgMzcxLjM0MyA1ODkuNTcxIDM4OC4wODcgNjQyLjg1MUMzOTguMjI0IDY3NS4xMjQgNDA2LjQ4OSA3MDcuODI4IDQxNC42NjQgNzQwLjgzOUM0MjYuMTUgNzg2Ljg0IDQ0MS45MzcgODg4LjQ2NSA0NTIuMzMyIDkzNC42MDFDNDczLjA4MSAxMDI2Ljk2IDUzNi41ODcgMTA0Ny44OCA2MDAuMjIxIDEwNTBINjAyLjQ4MkM2NjYuMTIgMTA0Ny44OCA3MzAuNjY5IDEwMjYuOTEgNzUxLjQxNyA5MzQuNTU2Qzc2MS43NjcgODg4LjQyNCA3NzcuNTE0IDc4Ni43NTQgNzg5LjA4NiA3NDAuNzk0Qzc5Ny4zMDYgNzA3Ljk1OSA4MDUuNTI2IDY3NS4wNzkgODE1LjY2MiA2NDIuODFDODMyLjQwNiA1ODkuNTI2IDg2Ni41NTQgNTQwLjE4OCA4ODYuMzAxIDUyMy4wMzVDOTE2LjE0IDQ5Ny4wNDQgOTUwLjI4NCA0NzIuMTc4IDk3MS4xNjQgNDM3Ljk1NUM5ODMuNjU5IDQxNy41MzMgOTkwLjE4NCAzOTQuMDM5IDk4OS45OTYgMzcwLjEyQzk4OS42NDcgMzA3LjkxNSA5NDUuMjM2IDI0OC42OTkgODc4LjEyMiAyMzguMDQzWiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==",gt="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwMCIgaGVpZ2h0PSIxMjAwIiB2aWV3Qm94PSIwIDAgMTIwMCAxMjAwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgPHBhdGggZD0iTTAgNjAwQzAgMjY4LjYyOSAyNjguNjMgMCA2MDAgMEM5MzEuMzczIDAgMTIwMCAyNjguNjI5IDEyMDAgNjAwQzEyMDAgOTMxLjM3MyA5MzEuMzczIDEyMDAgNjAwIDEyMDBDMjY4LjYzIDEyMDAgMCA5MzEuMzczIDAgNjAwWiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzQyNF8zKSIvPgogICAgPHBhdGggZD0iTTQ1OS4zIDMwMEwxODcuNSA1NzQuNzkySDYyOS4zMjFWMTAxMi41TDkwMCA3NDEuNjM0VjMwMEg0NTkuM1oiIGZpbGw9IndoaXRlIi8+CiAgICA8ZGVmcz4KICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfNDI0XzMiIHgxPSIxMjAwIiB5MT0iLTAuMDAwMTI5NTI5IiB4Mj0iMTA5LjEyMyIgeTI9IjEwODIuMjYiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iI0ZGNjkyMiIvPgogICAgICAgICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM2MzQ3RjUiLz4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgo8L3N2Zz4K",Wt=gt,Nt="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwMCIgaGVpZ2h0PSIxMjAwIiB2aWV3Qm94PSIwIDAgMTIwMCAxMjAwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQyNF8zMSkiPgogICAgICAgIDxwYXRoIGQ9Ik02MDAgMTIwMEM5MzEuMzcxIDEyMDAgMTIwMCA5MzEuMzcxIDEyMDAgNjAwQzEyMDAgMjY4LjYyOSA5MzEuMzcxIDAgNjAwIDBDMjY4LjYyOSAwIDAgMjY4LjYyOSAwIDYwMEMwIDkzMS4zNzEgMjY4LjYyOSAxMjAwIDYwMCAxMjAwWiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzQyNF8zMSkiLz4KICAgICAgICA8bWFzayBpZD0ibWFzazBfNDI0XzMxIiBzdHlsZT0ibWFzay10eXBlOmFscGhhIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTIwMCIgaGVpZ2h0PSIxMjAwIj4KICAgICAgICAgICAgPHBhdGggZD0iTTYwMCAxMjAwQzkzMS4zNzEgMTIwMCAxMjAwIDkzMS4zNzEgMTIwMCA2MDBDMTIwMCAyNjguNjI5IDkzMS4zNzEgMCA2MDAgMEMyNjguNjI5IDAgMCAyNjguNjI5IDAgNjAwQzAgOTMxLjM3MSAyNjguNjI5IDEyMDAgNjAwIDEyMDBaIiBmaWxsPSJ1cmwoI3BhaW50MV9saW5lYXJfNDI0XzMxKSIvPgogICAgICAgIDwvbWFzaz4KICAgICAgICA8ZyBtYXNrPSJ1cmwoI21hc2swXzQyNF8zMSkiPgogICAgICAgICAgICA8ZyBmaWx0ZXI9InVybCgjZmlsdGVyMF9mXzQyNF8zMSkiPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTI5NCAyMTYuMDc1QzU5Ny43NSAxNjQuMTc1IDkyNC43ODcgMzU3LjQ1IDEwMjQuNTQgNjQ3LjdDMTEyNC4yOSA5MzcuOTg3IDk1OC45MTIgMTIxNS4zNyA2NTUuMiAxMjY3LjI3QzM1MS40ODcgMTMxOS4xNCAyNC40NDk4IDExMjUuOSAtNzUuMzAwMiA4MzUuNjEzQy0xNzUuMDUgNTQ1LjMyNSAtOS42NzUxNiAyNjcuOTM4IDI5NCAyMTYuMDc1WiIgZmlsbD0idXJsKCNwYWludDJfbGluZWFyXzQyNF8zMSkiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyBmaWx0ZXI9InVybCgjZmlsdGVyMV9mXzQyNF8zMSkiPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTEwMTkuMTcgODI2Ljg3NUM3ODIuMSAxMDIzLjY3IDQwMi4yMjUgMTAxOS44MSAxNzAuNzM3IDgxOC4yODdDLTYwLjc4NzYgNjE2LjggLTU2LjI4NzYgMjkzLjg4OCAxODAuODI1IDk3LjA4NzVDNDE3LjkgLTk5LjY3NSA3OTcuNzc1IC05NS44NSAxMDI5LjI2IDEwNS42NzVDMTI2MC43OSAzMDcuMiAxMjU2LjI5IDYzMC4wNzUgMTAxOS4yMSA4MjYuODc1SDEwMTkuMTdaIiBmaWxsPSJ1cmwoI3BhaW50M19saW5lYXJfNDI0XzMxKSIvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik04NjYuODg3IDIyNi42NUM4NDUuMzI5IDIyMy4zMzYgODIzLjI5MSAyMjUuMjI2IDgwMi42MTIgMjMyLjE2MkM3ODIuMjA1IDIzOC45NTggNzYzLjc4NiAyNTAuNjc5IDc0OC45ODcgMjY2LjI4N0M3MjEuMTYyIDI5NS45MTIgNzEyLjUgMzM0LjUgNzE5LjE3NSAzNzMuMTYzQzcyNS4yNSA0MDggNzMzLjI3NSA0NDMuMzYzIDczNS4wNzUgNDc2LjkyNUM3MzcuNTc5IDUyNy42MDggNzI5LjQ1NSA1NzguMjU1IDcxMS4yMjUgNjI1LjYxM0M2OTQuNzI1IDY2OC42NjMgNjcxLjE3NSA3MDIuMDM3IDYyMC43NzUgNzA5LjQyNUM2MTcuMDI1IDcwOS45ODcgNjAzLjQxMiA3MTAuMzYyIDU5OS41NSA3MTAuNTVDNTkyLjkwOSA3MTAuNTY4IDU4Ni4yNzQgNzEwLjIwNSA1NzkuNjc1IDcwOS40NjNDNTI5LjIzNyA3MDIuMDc1IDUwNS41IDY2OC43IDQ4OSA2MjUuMzg3QzQ3MC43ODUgNTc4LjAyNyA0NjIuNjczIDUyNy4zODEgNDY1LjE4NyA0NzYuN0M0NjYuOTg3IDQ0My4yNSA0NzUuMDEyIDQwNy44NSA0ODEuMDg3IDM3Mi45QzQ4Ny43NjIgMzM0LjI3NSA0NzkuMSAyOTUuNjUgNDUxLjI3NSAyNjYuMDI1QzQzNi40MjMgMjUwLjQyNSA0MTcuOTUyIDIzOC43MyAzOTcuNSAyMzEuOTc1QzM3Ni43ODIgMjI1LjA4OSAzNTQuNzE3IDIyMy4yNjMgMzMzLjE1IDIyNi42NUMyNjguNDYyIDIzNi42NjMgMjI1LjM3NSAyOTEuMjI1IDIyNSAzNDguNDEzQzIyNC44NDcgMzcwLjU4OCAyMzEuMTY4IDM5Mi4zMjYgMjQzLjE4NyA0MTAuOTYyQzI2My4zMjUgNDQyLjQ2MiAyOTYuMzYyIDQ2NS40ODcgMzI1LjIgNDg5LjMzN0MzNDQuMjg3IDUwNS4zMTIgMzc3LjI1IDU1MC42NSAzOTMuNDUgNTk5LjczN0M0MDMuMiA2MjkuNDc1IDQxMS4yMjUgNjU5LjYyNSA0MTkuMTM3IDY5MC4wMzdDNDMwLjIgNzMyLjQ1IDQ0NS40NjIgODI2LjEyNSA0NTUuNTEyIDg2OC42NUM0NzUuNTc1IDk1My43NzUgNTM2Ljg4NyA5NzMuMDUgNTk4LjM4NyA5NzVINjAwLjZDNjYyLjEgOTczLjA1IDcyNC40MjUgOTUzLjczNyA3NDQuNDg3IDg2OC42MTJDNzU0LjUgODI2LjA4NyA3NjkuNjg3IDczMi4zNzUgNzgwLjg2MiA2OTAuMDM3Qzc4OC44MTIgNjU5LjczNyA3OTYuNzYyIDYyOS40MzcgODA2LjU1IDU5OS43QzgyMi43NSA1NTAuNTc1IDg1NS43MTIgNTA1LjEyNSA4NzQuOCA0ODkuM0M5MDMuNjM3IDQ2NS4zNzUgOTM2LjYzNyA0NDIuNDI1IDk1Ni44MTIgNDEwLjkyNUM5NjguODI5IDM5Mi4yODggOTc1LjE1IDM3MC41NSA5NzUgMzQ4LjM3NUM5NzQuNjI1IDI5MS4wMzcgOTMxLjc2MiAyMzYuNDc1IDg2Ni44ODcgMjI2LjY1WiIgZmlsbD0id2hpdGUiLz4KICAgIDwvZz4KICAgIDxkZWZzPgogICAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcjBfZl80MjRfMzEiIHg9Ii0xNDQuMzU0IiB5PSIxNjcuNjUiIHdpZHRoPSIxMjM3Ljk1IiBoZWlnaHQ9IjExNDguMDQiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4KICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMjAiIHJlc3VsdD0iZWZmZWN0MV9mb3JlZ3JvdW5kQmx1cl80MjRfMzEiLz4KICAgICAgICA8L2ZpbHRlcj4KICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXIxX2ZfNDI0XzMxIiB4PSItNDAuMDAwNSIgeT0iLTg4LjAxMjgiIHdpZHRoPSIxMjgwLjAxIiBoZWlnaHQ9IjExMDAiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4KICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMjAiIHJlc3VsdD0iZWZmZWN0MV9mb3JlZ3JvdW5kQmx1cl80MjRfMzEiLz4KICAgICAgICA8L2ZpbHRlcj4KICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfNDI0XzMxIiB4MT0iOTcuODM3NSIgeTE9IjE2My4wNSIgeDI9Ijk5MS4zMTMiIHkyPSIxMDgyLjYzIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiM2NDlBNjYiLz4KICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMkI0Q0NGIi8+CiAgICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MV9saW5lYXJfNDI0XzMxIiB4MT0iOTcuODM3NSIgeTE9IjE2My4wNSIgeDI9Ijk5MS4zMTMiIHkyPSIxMDgyLjYzIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiM2NDlBNjYiLz4KICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMkI0Q0NGIi8+CiAgICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50Ml9saW5lYXJfNDI0XzMxIiB4MT0iMzI0IiB5MT0iMTIxOCIgeDI9IjQ3OC4yNzUiIHkyPSI3NjcuNCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjOEZFQkZGIi8+CiAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzJCNENDRiIgc3RvcC1vcGFjaXR5PSIwIi8+CiAgICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50M19saW5lYXJfNDI0XzMxIiB4MT0iNTQxLjE2MiIgeTE9IjUyLjU3NSIgeDI9IjUzMS43MTIiIHkyPSI5ODYuNTg3IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiM0OUYxNTAiLz4KICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMkI0Q0NGIiBzdG9wLW9wYWNpdHk9IjAiLz4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICAgIDxjbGlwUGF0aCBpZD0iY2xpcDBfNDI0XzMxIj4KICAgICAgICAgICAgPHJlY3Qgd2lkdGg9IjEyMDAiIGhlaWdodD0iMTIwMCIgZmlsbD0id2hpdGUiLz4KICAgICAgICA8L2NsaXBQYXRoPgogICAgPC9kZWZzPgo8L3N2Zz4K",Zt=Nt,At="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwMCIgaGVpZ2h0PSIxMjAwIiB2aWV3Qm94PSIwIDAgMTIwMCAxMjAwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgPHBhdGggZD0iTTAgNjAwQzAgMjY4LjYyOSAyNjguNjI5IDAgNjAwIDBWMEM5MzEuMzcxIDAgMTIwMCAyNjguNjI5IDEyMDAgNjAwVjYwMEMxMjAwIDkzMS4zNzEgOTMxLjM3MSAxMjAwIDYwMCAxMjAwVjEyMDBDMjY4LjYyOSAxMjAwIDAgOTMxLjM3MSAwIDYwMFY2MDBaIiBmaWxsPSIjOEFFMDZCIi8+CiAgICA8cGF0aCBkPSJNNzY0LjY2OSA0MzQuNjcyTDU1Ni4xMDYgNTM2LjE2OUw1NTQuOTA5IDQyMi40ODFMNTU0Ljg5OSA0MjEuNTEyTDU1NC4xMTUgNDIyLjA4MUw0NDUuOTk5IDUwMC42OEw0NDIuNTM0IDUwMi42NjVDNDQyLjUzNCA1MDIuNjY1IDQ0Mi41MzQgNTAyLjY2NSA0NDIuNTM0IDUwMi42NjVDNDI4LjUwNCA1MTAuNjk2IDQxNS4yMzEgNTIwLjc0MSA0MDMuMTE3IDUzMi44NjJDMzMwLjE4MyA2MDUuODQxIDMzMC4xODMgNzI0LjE2MyA0MDMuMTE3IDc5Ny4xNDFDNDc2LjA1MiA4NzAuMTIxIDU5NC4zMDEgODcwLjEyMSA2NjcuMjM1IDc5Ny4xNDFDNjc4LjA3NSA3ODYuMjk1IDY4Ny4yNDggNzc0LjUyNSA2OTQuODA1IDc2Mi4xMThMNjk2LjYzOSA3NTkuMTA2TDc4MS4zODcgNjQ2LjAxNEw3ODEuOTYxIDY0NS4yNDhMNzgxLjAwNSA2NDUuMjE0TDY2NS4zMjQgNjQxLjEwNEw3NjUuMzM3IDQzNS4zNEw3NjUuOTcgNDM0LjAzOUw3NjQuNjY5IDQzNC42NzJaTTQwNi4zNjkgNDM5LjMwNkw2MjYuMzIzIDI3OS40TDYyNy43OTcgNDE5LjM1NEw2MjcuODA1IDQyMC4xNDRMNjI4LjUxNiA0MTkuNzk4TDkyMy44MjkgMjc2LjA4M0w3ODAuMjUyIDU3MS40NzdMNzc5LjkxNiA1NzIuMTY4TDc4MC42ODQgNTcyLjE5NUw5MjQuMDI2IDU3Ny4yODhMNzU3LjA5MyA4MDAuMDU1TDc1Ny4wNzkgODAwLjA3NEw3NTcuMDY2IDgwMC4wOTVDNzQ2LjUxOSA4MTcuNDEgNzMzLjc2MiA4MzMuNzU4IDcxOC43OTUgODQ4LjczNEM2MTcuMzg1IDk1MC4yMDYgNDUyLjk2NyA5NTAuMjA2IDM1MS41NTggODQ4LjczNEMyNTAuMTQ3IDc0Ny4yNjEgMjUwLjE0NyA1ODIuNzQxIDM1MS41NTggNDgxLjI2OUMzNjguMjg3IDQ2NC41MyAzODYuNzMxIDQ1MC41NTIgNDA2LjMyNCA0MzkuMzM1TDQwNi4zNDcgNDM5LjMyMkw0MDYuMzY5IDQzOS4zMDZaIiBmaWxsPSJibGFjayIgc3Ryb2tlPSJibGFjayIvPgo8L3N2Zz4K",Rt=At,Dt="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwMCIgaGVpZ2h0PSIxMjAwIiB2aWV3Qm94PSIwIDAgMzYgMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8cmVjdCB3aWR0aD0iMzYiIGhlaWdodD0iMzYiIHJ4PSIxOCIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzg2MzVfMTU4MDAzKSIvPgogICAgPHBhdGgKICAgICAgICBkPSJNMjIuNjA1MyAxNy44OTY1SDE0LjU1MjZDMTQuNTUyNiAyMS4yNTg2IDE1IDIzLjI3NTggMTYuMzQyMSAyNi44NjJDMTIuNzYzMiAyNS4yOTMxIDEwLjk3MzcgMjEuNzA2OSAxMC45NzM3IDE2LjU1MTdDMTAuOTczNyAxMi41MTcyIDExLjY0NDcgOC45MzEwMSAxNS40NDc0IDguMDM0NDZDMTQuNzc2MyAxMC41IDE0LjU1MjYgMTEuODQ0OCAxNC41NTI2IDE0Ljc1ODZIMjIuNjA1M1YxMC4yNzU4QzIyLjYwNTMgOS42MDM0MiAyMi42MDUzIDkuMTU1MTUgMjEuNzEwNSA4LjcwNjg3QzIyLjYwNTMgNy41ODYxOCAyMy41IDcuNTg2MTggMjQuMzk0NyA3LjU4NjE4QzI1Ljg3NzIgNy41ODYxOCAyNy4wNzg5IDguNzkwMzggMjcuMDc4OSAxMC4yNzU4VjI1LjA2ODlDMjcuMDc4OSAyNS44MTE3IDI2LjQ3ODEgMjYuNDEzOCAyNS43MzY4IDI2LjQxMzhIMjMuOTQ3NEMyMy4yMDYxIDI2LjQxMzggMjIuNjA1MyAyNS44MTE3IDIyLjYwNTMgMjUuMDY4OVYxNy44OTY1WiIKICAgICAgICBmaWxsPSJ3aGl0ZSIvPgogICAgPHBhdGgKICAgICAgICBkPSJNNy44NDIxMSAxN0M3Ljg0MjExIDE0Ljc1ODYgOC4yODk0NyAxMi45NjU1IDEwLjUyNjMgMTEuNjIwN0M5Ljg1NTI2IDEzLjQxMzggOS42MzE1OCAxNC43NTg2IDkuNjMxNTggMTYuNTUxN0M5LjYzMTU4IDE5LjY4OTYgMTAuOTczNyAyNS41MTcyIDE2LjExODQgMjcuOTgyN0MxNS42NzEgMjguNDMxIDE0LjU1MjYgMjguNjU1MSAxMy42NTc5IDI4LjY1NTFDOS44NTUyMSAyOC42NTUxIDYuNDk5OTUgMjUuMDY4OSA2LjUgMjIuMTU1MUM2LjUgMjEuMDM0NSA2LjcyMzYzIDIwLjM2MiA3LjM5NDc0IDE5LjY4OTZDOC4yODk0MiAyMy41IDkuNDA3ODQgMjUuNTE3MiAxMi4zMTU4IDI3LjMxMDNDOS44NTUyMSAyNC42MjA3IDcuODQyMTEgMjAuMzYyIDcuODQyMTEgMTdaIgogICAgICAgIGZpbGw9IndoaXRlIi8+CiAgICA8ZGVmcz4KICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfODYzNV8xNTgwMDMiIHgxPSIxOCIgeTE9IjAiIHgyPSIxOCIgeTI9IjM2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiNGN0U4NkMiLz4KICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjQzE5NTAwIi8+CiAgICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDwvZGVmcz4KPC9zdmc+Cg==",Gt=Dt,F="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwMCIgaGVpZ2h0PSIxMjAwIiB2aWV3Qm94PSIwIDAgMTIwMCAxMjAwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgPHBhdGggZD0iTTYwMCAxMjAwQzkzMS4zNzEgMTIwMCAxMjAwIDkzMS4zNzEgMTIwMCA2MDBDMTIwMCAyNjguNjI5IDkzMS4zNzEgMCA2MDAgMEMyNjguNjI5IDAgMCAyNjguNjI5IDAgNjAwQzAgOTMxLjM3MSAyNjguNjI5IDEyMDAgNjAwIDEyMDBaIiBmaWxsPSIjMDA5OEVBIi8+CiAgICA8cGF0aCBkPSJNODA0Ljg2MyAzMzQuODc5SDM5NS4xMTJDMzE5Ljc3MyAzMzQuODc5IDI3Mi4wMjIgNDE2LjE0NyAzMDkuOTI1IDQ4MS44NDVMNTYyLjgwOCA5MjAuMTYyQzU3OS4zMSA5NDguNzgyIDYyMC42NjUgOTQ4Ljc4MiA2MzcuMTY3IDkyMC4xNjJMODkwLjEwMSA0ODEuODQ1QzkyNy45NTMgNDE2LjI1MiA4ODAuMjAxIDMzNC44NzkgODA0LjkxNCAzMzQuODc5SDgwNC44NjNaTTU2Mi42MDIgNzg4LjcxN0w1MDcuNTI4IDY4Mi4xMjlMMzc0LjY0MSA0NDQuNDU5QzM2NS44NzUgNDI5LjI0NyAzNzYuNzAzIDQwOS43NTMgMzk1LjA2IDQwOS43NTNINTYyLjU1Vjc4OC43NjlMNTYyLjYwMiA3ODguNzE3Wk04MjUuMjMgNDQ0LjQwN0w2OTIuMzk1IDY4Mi4xODFMNjM3LjMyMSA3ODguNzE3VjQwOS43MDJIODA0LjgxMUM4MjMuMTY5IDQwOS43MDIgODMzLjk5NyA0MjkuMTk1IDgyNS4yMyA0NDQuNDA3WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==",ut=F,jt="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwMCIgaGVpZ2h0PSIxMjAwIiB2aWV3Qm94PSIwIDAgMTIwMCAxMjAwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgPG1hc2sgaWQ9Im1hc2swXzYwM18yIiBzdHlsZT0ibWFzay10eXBlOmx1bWluYW5jZSIgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeD0iMCIgeT0iMCIgd2lkdGg9IjEyMDAiIGhlaWdodD0iMTIwMCI+CiAgICAgICAgPHBhdGggZD0iTTEyMDAgNjAwQzEyMDAgMjY4LjYyOSA5MzEuMzcxIDAgNjAwIDBDMjY4LjYyOSAwIDAgMjY4LjYyOSAwIDYwMEMwIDkzMS4zNzEgMjY4LjYyOSAxMjAwIDYwMCAxMjAwQzkzMS4zNzEgMTIwMCAxMjAwIDkzMS4zNzEgMTIwMCA2MDBaIiBmaWxsPSJ3aGl0ZSIvPgogICAgPC9tYXNrPgogICAgPGcgbWFzaz0idXJsKCNtYXNrMF82MDNfMikiPgogICAgICAgIDxwYXRoIGQ9Ik0xMjAwIDYwMEMxMjAwIDI2OC42MjkgOTMxLjM3MSAwIDYwMCAwQzI2OC42MjkgMCAwIDI2OC42MjkgMCA2MDBDMCA5MzEuMzcxIDI2OC42MjkgMTIwMCA2MDAgMTIwMEM5MzEuMzcxIDEyMDAgMTIwMCA5MzEuMzcxIDEyMDAgNjAwWiIgZmlsbD0iI0RGRjlFMyIvPgogICAgICAgIDxwYXRoIGQ9Ik02MDAgMTQ3NC4yOUMxMDgyLjg1IDE0NzQuMjkgMTQ3NC4yOSAxMDgyLjg1IDE0NzQuMjkgNjAwQzE0NzQuMjkgMTE3LjE0NSAxMDgyLjg1IC0yNzQuMjg2IDYwMCAtMjc0LjI4NkMxMTcuMTQ1IC0yNzQuMjg2IC0yNzQuMjg2IDExNy4xNDUgLTI3NC4yODYgNjAwQy0yNzQuMjg2IDEwODIuODUgMTE3LjE0NSAxNDc0LjI5IDYwMCAxNDc0LjI5WiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzYwM18yKSIvPgogICAgICAgIDxwYXRoIGQ9Ik0zMzAuOTcgNzYxLjE5NEMzNjYuMDU1IDc3MC41OTcgNDAzLjQ3OCA3NjAuNTU4IDQyOS4xNiA3MzQuODc4TDQ3My45OTIgNjkwLjA0OEM0ODYuODI1IDY3Ny4yMTMgNTA1LjU0MyA2NzIuMTk0IDUyMy4wOTIgNjc2Ljg5NkM1MjcuNzkzIDY5NC40MzEgNTIyLjc3MyA3MTMuMTQ4IDUwOS45NCA3MjUuOTk1TDQ2NS4xMDggNzcwLjgyN0M0MzkuNDI4IDc5Ni41MDcgNDI5LjQwMSA4MzMuOTQyIDQzOC43OTIgODY5LjAxNEw0NTMuOTg5IDkyNS43MTNMNTUwLjY5MiA4MjkuMDExQzU3Ni4zNzQgODAzLjMzMSA1ODYuMzk5IDc2NS44OTYgNTc3LjAwOCA3MzAuODEyTDU2MS44MjMgNjc0LjEyNkw1NTQuMjI1IDY0NS43NzZMNTI1Ljg3NCA2MzguMTc3TDQ2OS4xODggNjIyLjk5MkM0MzQuMTA0IDYxMy41ODkgMzk2LjY4MSA2MjMuNjI4IDM3MC45OTkgNjQ5LjMwOEwyNzQuMjg0IDc0Ni4wMDlMMzMwLjk3IDc2MS4yMDZWNzYxLjE5NFoiIGZpbGw9IiNERkY5RTMiLz4KICAgICAgICA8cGF0aCBkPSJNNDM4LjgwNCAzMzAuOTdDNDI5LjQwMSAzNjYuMDU1IDQzOS40NCA0MDMuNDc4IDQ2NS4xMjIgNDI5LjE1OEw1MDkuOTUyIDQ3My45ODhDNTIyLjc4NyA0ODYuODIzIDUyNy44MDYgNTA1LjU0MSA1MjMuMTA0IDUyMy4wODlDNTA1LjU2OSA1MjcuNzkxIDQ4Ni44NSA1MjIuNzcyIDQ3NC4wMDQgNTA5LjkzN0w0MjkuMTczIDQ2NS4xMDZDNDAzLjQ5MiA0MzkuNDI1IDM2Ni4wNTUgNDI5LjQgMzMwLjk4NCA0MzguNzlMMjc0LjI4NCA0NTMuOTg4TDM3MC45ODcgNTUwLjY4OUMzOTYuNjY3IDU3Ni4zNyA0MzQuMTA0IDU4Ni4zOTYgNDY5LjE4OCA1NzcuMDA1TDUyNS44NzQgNTYxLjgyTDU1NC4yMjQgNTU0LjIyMkw1NjEuODIzIDUyNS44NzFMNTc3LjAwOCA0NjkuMTg1QzU4Ni40MTEgNDM0LjEwMiA1NzYuMzc0IDM5Ni42NzkgNTUwLjY5MiAzNzAuOTk3TDQ1My45ODkgMjc0LjI4NEw0MzguNzkyIDMzMC45N0g0MzguODA0WiIgZmlsbD0id2hpdGUiLz4KICAgICAgICA8cGF0aCBkPSJNODY5LjAwOSA0MzguODAyQzgzMy45MjUgNDI5LjQgNzk2LjUwMiA0MzkuNDM4IDc3MC44MiA0NjUuMTE4TDcyNS45OSA1MDkuOTVDNzEzLjE1NSA1MjIuNzg0IDY5NC40MzggNTI3LjgwMyA2NzYuODg5IDUyMy4xMDJDNjcyLjE4NyA1MDUuNTY1IDY3Ny4yMDYgNDg2Ljg0OSA2OTAuMDQxIDQ3NC4wMDJMNzM0Ljg3MSA0MjkuMTcyQzc2MC41NTMgNDAzLjQ5IDc3MC41OCAzNjYuMDU1IDc2MS4xODkgMzMwLjk4Mkw3NDYuMDA0IDI3NC4yODRMNjQ5LjMwMSAzNzAuOTg1QzYyMy42MTkgMzk2LjY2NyA2MTMuNTk0IDQzNC4xMDIgNjIyLjk4NSA0NjkuMTg1TDYzOC4xNyA1MjUuODcxTDY0NS43NyA1NTQuMjIyTDY3NC4xMTkgNTYxLjgyTDczMC44MDUgNTc3LjAwNUM3NjUuODkgNTg2LjQwOSA4MDMuMzEzIDU3Ni4zNyA4MjguOTk0IDU1MC42ODlMOTI1LjY5NyA0NTMuOTg4TDg2OS4wMDkgNDM4Ljc5VjQzOC44MDJaIiBmaWxsPSIjREZGOUUzIi8+CiAgICAgICAgPHBhdGggZD0iTTc2MS4xOTQgODY5LjAyMUM3NzAuNTk3IDgzMy45MzYgNzYwLjU1OCA3OTYuNTE1IDczNC44NzcgNzcwLjgzNEw2OTAuMDQ2IDcyNi4wMDNDNjc3LjIxMiA3MTMuMTY5IDY3Mi4xOTIgNjk0LjQ1MiA2NzYuODk0IDY3Ni45MDNDNjk0LjQzIDY3Mi4yMDEgNzEzLjE0OCA2NzcuMjIgNzI1Ljk5NSA2OTAuMDU1TDc3MC44MjcgNzM0Ljg4NUM3OTYuNTA3IDc2MC41NjcgODMzLjk0NCA3NzAuNTkyIDg2OS4wMTQgNzYxLjIwMUw5MjUuNzE0IDc0Ni4wMDRMODI5LjAxMyA2NDkuMzAzQzgwMy4zMzIgNjIzLjYyMyA3NjUuODk1IDYxMy41OTYgNzMwLjgxIDYyMi45ODdMNjc0LjEyNCA2MzguMTcyTDY0NS43NzUgNjQ1Ljc3TDYzOC4xNzYgNjc0LjEyMUw2MjIuOTkgNzMwLjgwN0M2MTMuNTg4IDc2NS44OTEgNjIzLjYyNiA4MDMuMzEyIDY0OS4zMDYgODI4Ljk5NEw3NDYuMDA5IDkyNS42OTVMNzYxLjIwNiA4NjkuMDA5TDc2MS4xOTQgODY5LjAyMVoiIGZpbGw9IndoaXRlIi8+CiAgICA8L2c+CiAgICA8ZGVmcz4KICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfNjAzXzIiIHgxPSItMTQuNDI4NSIgeTE9Ii0xNC40Mjg1IiB4Mj0iMTIwNC43MSIgeTI9IjEyMDQuNzEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzU4RDA3NCIvPgogICAgICAgICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMyOEE3NDUiLz4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgo8L3N2Zz4K",Vt=jt,dt="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwMCIgaGVpZ2h0PSIxMjAwIiB2aWV3Qm94PSIwIDAgMTIwMCAxMjAwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8bWFzayBpZD0ibWFzazBfNjA5XzIiIHN0eWxlPSJtYXNrLXR5cGU6bHVtaW5hbmNlIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTIwMCIgaGVpZ2h0PSIxMjAwIj4KPHBhdGggZD0iTTEyMDAgNjAwQzEyMDAgMjY4LjYyOSA5MzEuMzcxIDAgNjAwIDBDMjY4LjYyOSAwIDAgMjY4LjYyOSAwIDYwMEMwIDkzMS4zNzEgMjY4LjYyOSAxMjAwIDYwMCAxMjAwQzkzMS4zNzEgMTIwMCAxMjAwIDkzMS4zNzEgMTIwMCA2MDBaIiBmaWxsPSJ3aGl0ZSIvPgo8L21hc2s+CjxnIG1hc2s9InVybCgjbWFzazBfNjA5XzIpIj4KPHBhdGggZD0iTTEyMDAgNjAwQzEyMDAgMjY4LjYyOSA5MzEuMzcxIDAgNjAwIDBDMjY4LjYyOSAwIDAgMjY4LjYyOSAwIDYwMEMwIDkzMS4zNzEgMjY4LjYyOSAxMjAwIDYwMCAxMjAwQzkzMS4zNzEgMTIwMCAxMjAwIDkzMS4zNzEgMTIwMCA2MDBaIiBmaWxsPSIjQkQxNDEzIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOTcuNDY2NSAyMTUuMDc2Qzk0LjQ0ODQgMzAyLjA1MSA5Ny4zNjY5IDM5My43MTUgOTcuMjQwNSA0ODEuMjM4Qzk3LjExODkgNTY2LjIxMyA5MS44OTMgNjUyLjIxNiAxMTIuNTQ3IDczMi4wNDJDMTcxLjgzNCA5NjEuMTg0IDM4My40NDUgMTEwNC45OCA1ODAuMDQ4IDExOTMuNDdDNjA4LjQxOSAxMjA2LjI0IDYwMi4yODggMTIwNC43MiA2MzAuNDMxIDExOTIuMTRDNjQ2LjAxNSAxMTg1LjE4IDY2MS40MDQgMTE3Ny43OSA2NzYuMTU1IDExNzAuNzRDODUyLjY0NyAxMDg2LjQgMTAxMy40NSA5NDguMTAzIDEwNzYuMjYgNzcwLjY2NUMxMTA1LjAxIDY4OS40MjEgMTEwMi4zOCA2MjMuNTY2IDExMDIuMTkgNTMyLjI3NUMxMTAyIDQ0My43MTIgMTEwMS45MSAzNTQuOSAxMTAyLjcyIDI2Ni4zNDZDMTEwMi45NiAyNDAuMDU2IDExMDcuNTMgMjE2LjUwNSAxMDk2Ljk3IDIwOC43MDhDMTA4Ni4xOSAyMDAuNzQxIDEwNjQuNjYgMTkyLjUzNSAxMDUyLjE5IDE4Ni4wNzVDODIwLjY5IDY2LjIwODQgNTM1Ljc1MyA0Mi4zMzQyIDI4MC43MzkgMTMwLjAyMkMyNDUuOTY1IDE0MS45NzkgMjE3LjQ1MSAxNTQuMjI4IDE4NS4zMyAxNjguNzdDMTUzLjczMSAxODMuMDc2IDEyNi40MDMgMTk5LjcxOCA5Ny40NjY1IDIxNS4wNzZaIiBmaWxsPSIjQkQxNDEzIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNjU4LjU5NCA4MjkuNjg4TDc5MC4xMjMgODI4Ljk2NkM3ODcuNSA4MjIuMjU1IDc4MC4yMDkgODE2Ljk2MyA3NzUuMDY0IDgwOC4yMzdDNzY5LjkyMiA3OTkuNTA3IDc2Ni43OTggNzg5LjA0NyA3NjYuNDY1IDc3Ni42NDFDNzY1Ljc2MiA3NTAuMzA3IDc2Ni4zNjIgNzIyLjUwMyA3NjYuNTE5IDY5Ni4wNDlDODM1LjAwOCA2OTguOTQ2IDg4Mi4zMTYgNjk3LjYxNSA5MjMuNjkxIDY2MC4yMjdDOTg4Ljc3NCA2MDEuNDE2IDk3OS42OTUgNDQ1LjE0MSA4NTAuNjUyIDQyNS4yNTJDODA1LjkwNSA0MTguMzU3IDY4My4wOTUgNDI3LjEzIDY2MC40OTUgNDIxLjg3NUM2NjQuNDg4IDQzOC41NiA2ODguMjQ3IDQzMy4zNjkgNjg3LjIzNyA1MDguNzUxQzY4Ni43IDU0OC44ODUgNjkwLjIxMyA3NzUuOTM4IDY4NS4wMDEgNzk2LjY3NkM2ODIuNzYgODA1LjU4NCA2ODAuMzI1IDgwOS4zODEgNjc0LjI5NSA4MTUuNDYxQzY2OC42NzcgODIxLjEyNiA2NjMuMjI3IDgyMy4zODMgNjU4LjU5NCA4MjkuNjg4WiIgZmlsbD0iI0ZDRjlGNCIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTQzMy4xMTYgNzE0Ljg0NEw0OTEuNjI1IDcxNC43NTdDNTIyLjk1OSA2MjUuODMgNTgwLjQzNCA0ODUuMDM5IDYxOC42NDcgMzg5Ljg4M0M2MzIuOTQxIDM1NC4yOTEgNjQ1LjQwNSAzMTIuODc5IDY2MC45MzggMjc4Ljk0OEw1MzYuOTk4IDI3OC45MDZDNTU4LjU0OCAzMDMuMTQ1IDU3NS40MjYgMjkyLjc4OCA1NTUuMDg3IDM0NC42NDhDNTQ0Ljg4MiAzNzAuNjcxIDUzNS40NjUgMzkzLjE1NSA1MjUuNTk1IDQxOS45NzdDNTE4LjAzOSA0NDAuNTAxIDQ3NS43NjcgNTU4LjYwNyA0NjcuOTM0IDU2OC44MjhMMzgwLjY5MSAzNTAuMDc3QzM2MS44ODkgMzAyLjMwNiAzODUuNzIzIDI5Ny4zIDQwMC44MDcgMjc4Ljk5M0wyNDYuMDk0IDI3OS4xNjJDMjc4LjU0NSAzMDMuNjk2IDI4Ni40OTggMzMyLjczOCAzMDMuODAyIDM3Ni41NDJDMzE4Ljc5NyA0MTQuNTA2IDMzMS44MTIgNDUwLjEwMyAzNDYuNjI5IDQ4OS43MjRDMzU3LjY1MiA1MTkuMTk3IDQyNC45NDUgNzAzLjkxNSA0MzMuMTE2IDcxNC44NDRaIiBmaWxsPSIjRkNGOUY0Ii8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNTIxLjU4OCA4NTUuMDE5QzUyMS41NTcgOTA0LjkzMSA1MjYuODY2IDkyMi4xNzIgNTAwLjg1IDk1NS4zODVDNDk3Ljk0NiA5NTkuMDkzIDQ5OS42NzMgOTU2LjMzMiA0OTYuODc1IDk2MC45MzhMNzQ4LjQzOSA5NjAuOTI2Qzc1NC4yNTIgOTI5LjcxNiA3NzAuNjYyIDkwOC43NCA3NzEuMDk0IDg2Ny45NDdDNzM2LjcwOSA4OTMuNjg0IDcyNi4xNzEgODkzLjcgNjcxLjg4NyA4OTMuNTk3TDU5Ni4yNjQgODkzLjU0M0M1OTMuNTAzIDc5Mi44MjMgNTk1LjQ1OCA2NzIuMTQ1IDU5NS43NDEgNTcxLjg3NUM1ODAuMDU1IDYwMy41MzIgNTIxLjUwNSA3MjguMjc2IDUyMS40OTQgNzYzLjcwMkM1MjEuNDg0IDc5NC4xMzggNTIxLjYwNiA4MjQuNTgxIDUyMS41ODggODU1LjAxOVoiIGZpbGw9IiNGQ0Y5RjQiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03NjYuNDA2IDUwOC40Mkw3NjYuNDEzIDYyMy4yNDhDODI0LjYwMiA2MjMuNjUzIDg3Ni43MjkgNjI3LjcyMiA4ODAuOTQxIDU2NC4yMDJDODg2LjEzNCA0ODUuODI5IDgyNS4yMDkgNDkyLjQ0NSA3NjYuNDEzIDQ5Mi4yNThMNzY2Lj