diff options
151 files changed, 858 insertions, 20371 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml index 451a630bb..cf5afc3a8 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -20,11 +20,11 @@ workflows: # - test-deps: # requires: # - prep-deps-npm - - test-e2e-beta-chrome: + - test-e2e-chrome: requires: - prep-deps-npm - prep-build - - test-e2e-beta-firefox: + - test-e2e-firefox: requires: - prep-deps-npm - prep-build @@ -52,8 +52,8 @@ workflows: - test-lint - test-unit - test-mozilla-lint - - test-e2e-beta-chrome - - test-e2e-beta-firefox + - test-e2e-chrome + - test-e2e-firefox # - test-e2e-beta-drizzle - test-integration-flat-chrome - test-integration-flat-firefox @@ -189,7 +189,7 @@ jobs: # - store_artifacts: # path: test-artifacts # destination: test-artifacts - test-e2e-beta-chrome: + test-e2e-chrome: docker: - image: circleci/node:8.11.3-browsers steps: @@ -197,13 +197,13 @@ jobs: - attach_workspace: at: . - run: - name: test:e2e:chrome:beta - command: npm run test:e2e:chrome:beta + name: test:e2e:chrome + command: npm run test:e2e:chrome - store_artifacts: path: test-artifacts destination: test-artifacts - test-e2e-beta-firefox: + test-e2e-firefox: docker: - image: circleci/node:8.11.3-browsers steps: @@ -214,8 +214,8 @@ jobs: - attach_workspace: at: . - run: - name: test:e2e:firefox:beta - command: npm run test:e2e:firefox:beta + name: test:e2e:firefox + command: npm run test:e2e:firefox - store_artifacts: path: test-artifacts destination: test-artifacts @@ -65,11 +65,9 @@ To write tests that will be run in the browser using QUnit, add your test files - [How to add custom build to Chrome](./docs/add-to-chrome.md) - [How to add custom build to Firefox](./docs/add-to-firefox.md) -- [How to develop a live-reloading UI](./docs/ui-dev-mode.md) - [How to add a new translation to MetaMask](./docs/translating-guide.md) - [Publishing Guide](./docs/publishing.md) - [The MetaMask Team](./docs/team.md) -- [How to develop an in-browser mocked UI](./docs/ui-mock-mode.md) - [How to live reload on local dependency changes](./docs/developing-on-deps.md) - [How to add new networks to the Provider Menu](./docs/adding-new-networks.md) - [How to manage notices that appear when the app starts up](./docs/notices.md) diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index ee6437116..2bfe0ef07 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -794,6 +794,12 @@ "minutesShorthand": { "message": "Min" }, + "mobileSyncTitle": { + "message": "Sync accounts with mobile" + }, + "mobileSyncText": { + "message": "Please enter your password to confirm it's you!" + }, "myAccounts": { "message": "My Accounts" }, @@ -1333,6 +1339,27 @@ "symbolBetweenZeroTwelve": { "message": "Symbol must be between 0 and 12 characters." }, + "syncWithMobile": { + "message": "Sync with mobile" + }, + "syncWithMobileTitle": { + "message": "Sync with mobile" + }, + "syncWithMobileDesc": { + "message": "You can sync your accounts and information with your mobile device. Open the MetaMask mobile app, go to \"Settings\" and tap on \"Sync from Browser Extension\"" + }, + "syncWithMobileDescNewUsers": { + "message": "If you just open the MetaMask Mobile app for the first time, just follow the steps in your phone." + }, + "syncWithMobileScanThisCode": { + "message": "Scan this code with your MetaMask mobile app" + }, + "syncWithMobileBeCareful": { + "message": "Make sure nobody else is looking at your screen when you scan this code" + }, + "syncWithMobileComplete": { + "message": "Your data has been synced succesfully. Enjoy the MetaMask mobile app!" + }, "takesTooLong": { "message": "Taking too long?" }, diff --git a/app/scripts/controllers/network/contract-addresses.js b/app/scripts/controllers/network/contract-addresses.js new file mode 100644 index 000000000..5cd7da1d0 --- /dev/null +++ b/app/scripts/controllers/network/contract-addresses.js @@ -0,0 +1,11 @@ +const SINGLE_CALL_BALANCES_ADDRESS = '0xb1f8e55c7f64d203c1400b9d8555d050f94adf39' +const SINGLE_CALL_BALANCES_ADDRESS_RINKEBY = '0x9f510b19f1ad66f0dcf6e45559fab0d6752c1db7' +const SINGLE_CALL_BALANCES_ADDRESS_ROPSTEN = '0xb8e671734ce5c8d7dfbbea5574fa4cf39f7a54a4' +const SINGLE_CALL_BALANCES_ADDRESS_KOVAN = '0xb1d3fbb2f83aecd196f474c16ca5d9cffa0d0ffc' + +module.exports = { + SINGLE_CALL_BALANCES_ADDRESS, + SINGLE_CALL_BALANCES_ADDRESS_RINKEBY, + SINGLE_CALL_BALANCES_ADDRESS_ROPSTEN, + SINGLE_CALL_BALANCES_ADDRESS_KOVAN, +} diff --git a/app/scripts/controllers/preferences.js b/app/scripts/controllers/preferences.js index 565f4f292..584b6bc51 100644 --- a/app/scripts/controllers/preferences.js +++ b/app/scripts/controllers/preferences.js @@ -18,7 +18,9 @@ class PreferencesController { * @property {object} store.assetImages Contains assets objects related to assets added * @property {boolean} store.useBlockie The users preference for blockie identicons within the UI * @property {object} store.featureFlags A key-boolean map, where keys refer to features and booleans to whether the - * user wishes to see that feature + * user wishes to see that feature. + * + * Feature flags can be set by the global function `setPreference(feature, enabled)`, and so should not expose any sensitive behavior. * @property {object} store.knownMethodData Contains all data methods known by the user * @property {string} store.currentLocale The preferred language locale key * @property {string} store.selectedAddress A hex string that matches the currently selected address in the app @@ -33,6 +35,11 @@ class PreferencesController { tokens: [], suggestedTokens: {}, useBlockie: false, + + // WARNING: Do not use feature flags for security-sensitive things. + // Feature flag toggling is available in the global namespace + // for convenient testing of pre-release features, and should never + // perform sensitive operations. featureFlags: {}, knownMethodData: {}, currentLocale: opts.initLangCode, @@ -52,6 +59,10 @@ class PreferencesController { this.store = new ObservableStore(initState) this.openPopup = opts.openPopup this._subscribeProviderType() + + global.setPreference = (key, value) => { + return this.setFeatureFlag(key, value) + } } // PUBLIC METHODS diff --git a/app/scripts/lib/account-tracker.js b/app/scripts/lib/account-tracker.js index 2e9340018..24c5ef7ee 100644 --- a/app/scripts/lib/account-tracker.js +++ b/app/scripts/lib/account-tracker.js @@ -11,6 +11,12 @@ const EthQuery = require('eth-query') const ObservableStore = require('obs-store') const log = require('loglevel') const pify = require('pify') +const Web3 = require('web3') +const SINGLE_CALL_BALANCES_ABI = require('single-call-balance-checker-abi') + +const { bnToHex } = require('./util') +const { MAINNET_CODE, RINKEYBY_CODE, ROPSTEN_CODE, KOVAN_CODE } = require('../controllers/network/enums') +const { SINGLE_CALL_BALANCES_ADDRESS, SINGLE_CALL_BALANCES_ADDRESS_RINKEBY, SINGLE_CALL_BALANCES_ADDRESS_ROPSTEN, SINGLE_CALL_BALANCES_ADDRESS_KOVAN } = require('../controllers/network/contract-addresses') class AccountTracker { @@ -50,6 +56,9 @@ class AccountTracker { }) // bind function for easier listener syntax this._updateForBlock = this._updateForBlock.bind(this) + this.network = opts.network + + this.web3 = new Web3(this._provider) } start () { @@ -116,7 +125,7 @@ class AccountTracker { this.store.updateState({ accounts }) // fetch balances for the accounts if there is block number ready if (!this._currentBlockNumber) return - addresses.forEach(address => this._updateAccount(address)) + this._updateAccounts() } /** @@ -161,7 +170,8 @@ class AccountTracker { } /** - * Calls this._updateAccount for each account in this.store + * balanceChecker is deployed on main eth (test)nets and requires a single call + * for all other networks, calls this._updateAccount for each account in this.store * * @returns {Promise} after all account balances updated * @@ -169,7 +179,28 @@ class AccountTracker { async _updateAccounts () { const accounts = this.store.getState().accounts const addresses = Object.keys(accounts) - await Promise.all(addresses.map(this._updateAccount.bind(this))) + const currentNetwork = parseInt(this.network.getNetworkState()) + + switch (currentNetwork) { + case MAINNET_CODE: + await this._updateAccountsViaBalanceChecker(addresses, SINGLE_CALL_BALANCES_ADDRESS) + break + + case RINKEYBY_CODE: + await this._updateAccountsViaBalanceChecker(addresses, SINGLE_CALL_BALANCES_ADDRESS_RINKEBY) + break + + case ROPSTEN_CODE: + await this._updateAccountsViaBalanceChecker(addresses, SINGLE_CALL_BALANCES_ADDRESS_ROPSTEN) + break + + case KOVAN_CODE: + await this._updateAccountsViaBalanceChecker(addresses, SINGLE_CALL_BALANCES_ADDRESS_KOVAN) + break + + default: + await Promise.all(addresses.map(this._updateAccount.bind(this))) + } } /** @@ -192,6 +223,30 @@ class AccountTracker { this.store.updateState({ accounts }) } + /** + * Updates current address balances from balanceChecker deployed contract instance + * @param {*} addresses + * @param {*} deployedContractAddress + */ + async _updateAccountsViaBalanceChecker (addresses, deployedContractAddress) { + const accounts = this.store.getState().accounts + this.web3.setProvider(this._provider) + const ethContract = this.web3.eth.contract(SINGLE_CALL_BALANCES_ABI).at(deployedContractAddress) + const ethBalance = ['0x0'] + + ethContract.balances(addresses, ethBalance, (error, result) => { + if (error) { + log.warn(`MetaMask - Account Tracker single call balance fetch failed`, error) + return Promise.all(addresses.map(this._updateAccount.bind(this))) + } + addresses.forEach((address, index) => { + const balance = bnToHex(result[index]) + accounts[address] = { address, balance } + }) + this.store.updateState({ accounts }) + }) + } + } module.exports = AccountTracker diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index b75f95d01..41c3e3642 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -56,6 +56,7 @@ const EthQuery = require('eth-query') const ethUtil = require('ethereumjs-util') const sigUtil = require('eth-sig-util') + module.exports = class MetamaskController extends EventEmitter { /** @@ -133,6 +134,7 @@ module.exports = class MetamaskController extends EventEmitter { this.accountTracker = new AccountTracker({ provider: this.provider, blockTracker: this.blockTracker, + network: this.networkController, }) // start and stop polling for balances based on activeControllerConnections @@ -409,6 +411,9 @@ module.exports = class MetamaskController extends EventEmitter { checkHardwareStatus: nodeify(this.checkHardwareStatus, this), unlockHardwareWalletAccount: nodeify(this.unlockHardwareWalletAccount, this), + // mobile + fetchInfoToSync: nodeify(this.fetchInfoToSync, this), + // vault management submitPassword: nodeify(this.submitPassword, this), @@ -585,6 +590,60 @@ module.exports = class MetamaskController extends EventEmitter { }) } + /** + * Collects all the information that we want to share + * with the mobile client for syncing purposes + * @returns Promise<Object> Parts of the state that we want to syncx + */ + async fetchInfoToSync () { + // Preferences + const { + accountTokens, + currentLocale, + frequentRpcList, + identities, + selectedAddress, + tokens, + } = this.preferencesController.store.getState() + + const preferences = { + accountTokens, + currentLocale, + frequentRpcList, + identities, + selectedAddress, + tokens, + } + + // Accounts + const hdKeyring = this.keyringController.getKeyringsByType('HD Key Tree')[0] + const hdAccounts = await hdKeyring.getAccounts() + const accounts = { + hd: hdAccounts.filter((item, pos) => (hdAccounts.indexOf(item) === pos)).map(address => ethUtil.toChecksumAddress(address)), + simpleKeyPair: [], + ledger: [], + trezor: [], + } + + // transactions + + let transactions = this.txController.store.getState().transactions + // delete tx for other accounts that we're not importing + transactions = transactions.filter(tx => { + const checksummedTxFrom = ethUtil.toChecksumAddress(tx.txParams.from) + return ( + accounts.hd.includes(checksummedTxFrom) + ) + }) + + return { + accounts, + preferences, + transactions, + network: this.networkController.store.getState(), + } + } + /* * Submits the user's password and attempts to unlock the vault. * Also synchronizes the preferencesController, to ensure its schema diff --git a/docs/README.md b/docs/README.md index fd26b0c20..3c9bc0b4a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -12,11 +12,10 @@ To learn how to develop MetaMask-compatible applications, visit our [Developer D - [How to add custom build to Chrome](./add-to-chrome.md) - [How to add custom build to Firefox](./add-to-firefox.md) -- [How to develop a live-reloading UI](./ui-dev-mode.md) - [Publishing Guide](./publishing.md) -- [How to develop an in-browser mocked UI](./ui-mock-mode.md) - [How to live reload on local dependency changes](./developing-on-deps.md) - [How to add new networks to the Provider Menu](./adding-new-networks.md) - [How to manage notices that appear when the app starts up](./notices.md) - [How to port MetaMask to a new platform](./porting_to_new_environment.md) - [How to generate a visualization of this repository's development](./development-visualization.md) +- [How to add a feature behind a secret feature flag](./secret-preferences.md) diff --git a/docs/secret-preferences.md b/docs/secret-preferences.md new file mode 100644 index 000000000..f9d01a503 --- /dev/null +++ b/docs/secret-preferences.md @@ -0,0 +1,10 @@ +# Secret Preferences + +Sometimes we want to test a feature in the wild that may not be ready for public consumption. + +One example is our "sync with mobile" feature, which didn't make sense to roll out before the mobile version was live. + +To enable features like this, first open the background console, and then you can use the global method `global.setPreference(key, value)`. + +For example, if the feature flag was a booelan was called `mobileSync`, you might type `setPreference('mobileSync', true)`. + diff --git a/docs/ui-dev-mode.md b/docs/ui-dev-mode.md deleted file mode 100644 index df49d8b04..000000000 --- a/docs/ui-dev-mode.md +++ /dev/null @@ -1,6 +0,0 @@ -# Running UI Dev Mode - -You can run `npm run ui`, and your browser should open a live-reloading demo version of the plugin UI. - -Some actions will crash the app, so this is only for tuning aesthetics, but it allows live-reloading styles, which is a much faster feedback loop than reloading the full extension. - diff --git a/docs/ui-mock-mode.md b/docs/ui-mock-mode.md deleted file mode 100644 index bb54dc471..000000000 --- a/docs/ui-mock-mode.md +++ /dev/null @@ -1,8 +0,0 @@ -### Developing on UI with Mocked Background Process - -You can run `npm run mock` and your browser should open a live-reloading demo version of the plugin UI, just like the `npm run ui`, except that it tries to actually perform all normal operations. - -It does not yet connect to a real blockchain (this could be a good test feature later, connecting to a test blockchain), so only local operations work. - -You can reset the mock ui at any time with the `Reset` button at the top of the screen. - diff --git a/gulpfile.js b/gulpfile.js index 31888faac..c672a9eff 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -304,6 +304,7 @@ createTasksForBuildJsMascara({ taskPrefix: 'dev:mascara:js', devMode: true }) function createTasksForBuildJsUIDeps ({ dependenciesToBundle, filename }) { const destinations = browserPlatforms.map(platform => `./dist/${platform}`) + const bundleTaskOpts = Object.assign({ buildSourceMaps: true, sourceMapDir: '../sourcemaps', @@ -512,6 +513,8 @@ function generateBundler (opts, performBundle) { bundler.transform(envify({ METAMASK_DEBUG: opts.devMode, NODE_ENV: opts.devMode ? 'development' : 'production', + PUBNUB_SUB_KEY: process.env.PUBNUB_SUB_KEY || '', + PUBNUB_PUB_KEY: process.env.PUBNUB_PUB_KEY || '', }), { global: true, }) diff --git a/mascara/src/app/buy-ether-widget/index.js b/mascara/src/app/buy-ether-widget/index.js index c60221a0a..c8530ba4c 100644 --- a/mascara/src/app/buy-ether-widget/index.js +++ b/mascara/src/app/buy-ether-widget/index.js @@ -2,7 +2,7 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' import classnames from 'classnames' import {connect} from 'react-redux' -import {qrcode} from 'qrcode-npm' +import {qrcode} from 'qrcode-generator' import copyToClipboard from 'copy-to-clipboard' import ShapeShiftForm from '../shapeshift-form' import {buyEth, showAccountDetail} from '../../../../ui/app/actions' diff --git a/mascara/src/app/shapeshift-form/index.js b/mascara/src/app/shapeshift-form/index.js index 6f3307487..fe7f7ffcb 100644 --- a/mascara/src/app/shapeshift-form/index.js +++ b/mascara/src/app/shapeshift-form/index.js @@ -1,7 +1,7 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' import classnames from 'classnames' -import {qrcode} from 'qrcode-npm' +import qrcode from 'qrcode-generator' import {connect} from 'react-redux' import {shapeShiftSubview, pairUpdate, buyWithShapeShift} from '../../../../ui/app/actions' import {isValidAddress} from '../../../../ui/app/util' diff --git a/old-ui/.gitignore b/old-ui/.gitignore deleted file mode 100644 index c6b1254b5..000000000 --- a/old-ui/.gitignore +++ /dev/null @@ -1,66 +0,0 @@ - -# Created by https://www.gitignore.io/api/osx,node - -### OSX ### -.DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon
- -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk - - -### Node ### -# Logs -logs -*.log -npm-debug.log* - -# Runtime data -pids -*.pid -*.seed - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directory -# https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git -node_modules - -# Optional npm cache directory -.npm - -# Optional REPL history -.node_repl_history - diff --git a/old-ui/app/account-detail.js b/old-ui/app/account-detail.js deleted file mode 100644 index d240fc38e..000000000 --- a/old-ui/app/account-detail.js +++ /dev/null @@ -1,297 +0,0 @@ -const inherits = require('util').inherits -const extend = require('xtend') -const Component = require('react').Component -const h = require('react-hyperscript') -const connect = require('react-redux').connect -const actions = require('../../ui/app/actions') -const valuesFor = require('./util').valuesFor -const Identicon = require('./components/identicon') -const EthBalance = require('./components/eth-balance') -const TransactionList = require('./components/transaction-list') -const ExportAccountView = require('./components/account-export') -const ethUtil = require('ethereumjs-util') -const EditableLabel = require('./components/editable-label') -const TabBar = require('./components/tab-bar') -const TokenList = require('./components/token-list') -const AccountDropdowns = require('./components/account-dropdowns').AccountDropdowns - -module.exports = connect(mapStateToProps)(AccountDetailScreen) - -function mapStateToProps (state) { - return { - metamask: state.metamask, - identities: state.metamask.identities, - accounts: state.metamask.accounts, - address: state.metamask.selectedAddress, - accountDetail: state.appState.accountDetail, - network: state.metamask.network, - unapprovedMsgs: valuesFor(state.metamask.unapprovedMsgs), - shapeShiftTxList: state.metamask.shapeShiftTxList, - transactions: state.metamask.selectedAddressTxList || [], - conversionRate: state.metamask.conversionRate, - currentCurrency: state.metamask.currentCurrency, - currentAccountTab: state.metamask.currentAccountTab, - tokens: state.metamask.tokens, - suggestedTokens: state.metamask.suggestedTokens, - computedBalances: state.metamask.computedBalances, - } -} - -inherits(AccountDetailScreen, Component) -function AccountDetailScreen () { - Component.call(this) -} - -AccountDetailScreen.prototype.render = function () { - var props = this.props - var selected = props.address || Object.keys(props.accounts)[0] - var checksumAddress = selected && ethUtil.toChecksumAddress(selected) - var identity = props.identities[selected] - var account = props.accounts[selected] - const { network, conversionRate, currentCurrency } = props - - if (Object.keys(props.suggestedTokens).length > 0) { - this.props.dispatch(actions.showAddSuggestedTokenPage()) - } - - return ( - - h('.account-detail-section.full-flex-height', [ - - // identicon, label, balance, etc - h('.account-data-subsection', { - style: { - margin: '0 20px', - flex: '1 0 auto', - }, - }, [ - - // header - identicon + nav - h('div', { - style: { - paddingTop: '20px', - display: 'flex', - justifyContent: 'flex-start', - alignItems: 'flex-start', - }, - }, [ - - // large identicon and addresses - h('.identicon-wrapper.select-none', [ - h(Identicon, { - diameter: 62, - address: selected, - }), - ]), - h('flex-column', { - style: { - lineHeight: '10px', - marginLeft: '15px', - width: '100%', - }, - }, [ - h(EditableLabel, { - textValue: identity ? identity.name : '', - state: { - isEditingLabel: false, - }, - saveText: (text) => { - props.dispatch(actions.setAccountLabel(selected, text)) - }, - }, [ - - // What is shown when not editing + edit text: - h('label.editing-label', [h('.edit-text', 'edit')]), - h( - 'div', - { - style: { - display: 'flex', - justifyContent: 'flex-start', - alignItems: 'center', - }, - }, - [ - h( - 'div.font-medium.color-forest', - { - name: 'edit', - style: { - }, - }, - [ - h('h2', { - style: { - maxWidth: '180px', - overflow: 'hidden', - textOverflow: 'ellipsis', - padding: '5px 0px', - lineHeight: '25px', - }, - }, [ - identity && identity.name, - ]), - ] - ), - h( - AccountDropdowns, - { - style: { - marginRight: '8px', - marginLeft: 'auto', - cursor: 'pointer', - }, - selected, - network, - identities: props.identities, - enableAccountOptions: true, - }, - ), - ] - ), - ]), - h('.flex-row', { - style: { - width: '15em', - justifyContent: 'space-between', - alignItems: 'baseline', - }, - }, [ - - // address - - h('div', { - style: { - overflow: 'hidden', - textOverflow: 'ellipsis', - paddingTop: '3px', - width: '5em', - height: '15px', - fontSize: '13px', - fontFamily: 'Montserrat Light', - textRendering: 'geometricPrecision', - marginBottom: '15px', - color: '#AEAEAE', - }, - }, checksumAddress), - ]), - - // account ballence - - ]), - ]), - h('.flex-row', { - style: { - justifyContent: 'space-between', - alignItems: 'flex-start', - }, - }, [ - - h(EthBalance, { - value: account && account.balance, - conversionRate, - currentCurrency, - style: { - lineHeight: '7px', - marginTop: '10px', - }, - }), - - h('.flex-grow'), - - h('button', { - onClick: () => props.dispatch(actions.buyEthView(selected)), - style: { marginRight: '10px' }, - }, 'BUY'), - - h('button', { - onClick: () => props.dispatch(actions.showSendPage()), - style: { - marginBottom: '20px', - marginRight: '8px', - }, - }, 'SEND'), - - ]), - ]), - - // subview (tx history, pk export confirm, buy eth warning) - this.subview(), - - ]) - ) -} - -AccountDetailScreen.prototype.subview = function () { - var subview - try { - subview = this.props.accountDetail.subview - } catch (e) { - subview = null - } - - switch (subview) { - case 'transactions': - return this.tabSections() - case 'export': - var state = extend({key: 'export'}, this.props) - return h(ExportAccountView, state) - default: - return this.tabSections() - } -} - -AccountDetailScreen.prototype.tabSections = function () { - const { currentAccountTab } = this.props - - return h('section.tabSection.full-flex-height.grow-tenx', [ - - h(TabBar, { - tabs: [ - { content: 'Sent', key: 'history' }, - { content: 'Tokens', key: 'tokens' }, - ], - defaultTab: currentAccountTab || 'history', - tabSelected: (key) => { - this.props.dispatch(actions.setCurrentAccountTab(key)) - }, - }), - - this.tabSwitchView(), - ]) -} - -AccountDetailScreen.prototype.tabSwitchView = function () { - const props = this.props - const { address, network } = props - const { currentAccountTab, tokens } = this.props - - switch (currentAccountTab) { - case 'tokens': - return h(TokenList, { - userAddress: address, - network, - tokens, - addToken: () => this.props.dispatch(actions.showAddTokenPage()), - }) - default: - return this.transactionList() - } -} - -AccountDetailScreen.prototype.transactionList = function () { - const {transactions, unapprovedMsgs, address, - network, shapeShiftTxList, conversionRate } = this.props - - return h(TransactionList, { - transactions: transactions.sort((a, b) => b.time - a.time), - network, - unapprovedMsgs, - conversionRate, - address, - shapeShiftTxList, - viewPendingTx: (txId) => { - this.props.dispatch(actions.viewPendingTx(txId)) - }, - }) -} diff --git a/old-ui/app/account-qr.js b/old-ui/app/account-qr.js deleted file mode 100644 index b41cc5112..000000000 --- a/old-ui/app/account-qr.js +++ /dev/null @@ -1,86 +0,0 @@ -const PropTypes = require('prop-types') -const {PureComponent} = require('react') -const h = require('react-hyperscript') -const {qrcode: qrCode} = require('qrcode-npm') -const {connect} = require('react-redux') -const {isHexPrefixed} = require('ethereumjs-util') -const actions = require('../../ui/app/actions') -const CopyButton = require('./components/copyButton') - -class AccountQrScreen extends PureComponent { - static defaultProps = { - warning: null, - } - - static propTypes = { - dispatch: PropTypes.func.isRequired, - buyView: PropTypes.any.isRequired, - Qr: PropTypes.object.isRequired, - selectedAddress: PropTypes.string.isRequired, - warning: PropTypes.node, - } - - render () { - const {dispatch, Qr, selectedAddress, warning} = this.props - const address = `${isHexPrefixed(Qr.data) ? 'ethereum:' : ''}${Qr.data}` - const qrImage = qrCode(4, 'M') - - qrImage.addData(address) - qrImage.make() - - return h('div.flex-column.full-width', { - style: { - alignItems: 'center', - boxSizing: 'border-box', - padding: '50px', - }, - }, [ - h('div.flex-row.full-width', { - style: { - alignItems: 'flex-start', - }, - }, [ - h('i.fa.fa-arrow-left.fa-lg.cursor-pointer.color-orange', { - onClick () { - dispatch(actions.backToAccountDetail(selectedAddress)) - }, - }), - ]), - h('div.qr-header', Qr.message), - warning && h('span.error.flex-center', { - style: { - textAlign: 'center', - width: '229px', - height: '82px', - }, - }, [ - this.props.warning, - ]), - h('div#qr-container.flex-column', { - style: { - marginTop: '25px', - marginBottom: '15px', - }, - dangerouslySetInnerHTML: { - __html: qrImage.createTableTag(4), - }, - }), - h('div.flex-row.full-width', [ - h('h3.ellip-address.grow-tenx', Qr.data), - h(CopyButton, { - value: Qr.data, - }), - ]), - ]) - } -} - -function mapStateToProps (state) { - return { - Qr: state.appState.Qr, - buyView: state.appState.buyView, - warning: state.appState.warning, - } -} - -module.exports = connect(mapStateToProps)(AccountQrScreen) diff --git a/old-ui/app/accounts/import/index.js b/old-ui/app/accounts/import/index.js deleted file mode 100644 index b2c3a4a18..000000000 --- a/old-ui/app/accounts/import/index.js +++ /dev/null @@ -1,119 +0,0 @@ -const inherits = require('util').inherits -const Component = require('react').Component -const h = require('react-hyperscript') -const connect = require('react-redux').connect -const actions = require('../../../../ui/app/actions') -import Select from 'react-select' - -// Subviews -const JsonImportView = require('./json.js') -const PrivateKeyImportView = require('./private-key.js') - -const menuItems = [ - 'Private Key', - 'JSON File', -] - -module.exports = connect(mapStateToProps)(AccountImportSubview) - -function mapStateToProps (state) { - return { - menuItems, - } -} - -inherits(AccountImportSubview, Component) -function AccountImportSubview () { - Component.call(this) -} - -AccountImportSubview.prototype.render = function () { - const props = this.props - const state = this.state || {} - const { menuItems } = props - const { type } = state - - return ( - h('div', [ - h('.section-title.flex-row.flex-center', [ - h('i.fa.fa-arrow-left.fa-lg.cursor-pointer', { - onClick: (event) => { - props.dispatch(actions.goHome()) - }, - }), - h('h2.page-subtitle', 'Import Accounts'), - ]), - h('.error', { - style: { - display: 'inline-block', - alignItems: 'center', - padding: '5px 15px 0px 15px', - }, - }, [ - h('span', 'Imported accounts will not be associated with your originally created MetaMask account seedphrase. Learn more about imported accounts '), - h('span', { - style: { - color: 'rgba(247, 134, 28, 1)', - cursor: 'pointer', - textDecoration: 'underline', - }, - onClick: () => { - global.platform.openWindow({ - url: 'https://metamask.zendesk.com/hc/en-us/articles/360015289592-What-Are-Loose-Accounts-', - }) - }, - }, 'here.'), - ]), - h('div', { - style: { - padding: '10px', - color: 'rgb(174, 174, 174)', - }, - }, [ - - h('h3', { style: { padding: '3px' } }, 'SELECT TYPE'), - - h('style', ` - .has-value.Select--single > .Select-control .Select-value .Select-value-label, .Select-value-label { - color: rgb(174,174,174); - } - `), - - h(Select, { - name: 'import-type-select', - clearable: false, - value: type || menuItems[0], - options: menuItems.map((type) => { - return { - value: type, - label: type, - } - }), - onChange: (opt) => { - props.dispatch(actions.showImportPage()) - this.setState({ type: opt.value }) - }, - }), - ]), - - this.renderImportView(), - ]) - ) -} - -AccountImportSubview.prototype.renderImportView = function () { - const props = this.props - const state = this.state || {} - const { type } = state - const { menuItems } = props - const current = type || menuItems[0] - - switch (current) { - case 'Private Key': - return h(PrivateKeyImportView) - case 'JSON File': - return h(JsonImportView) - default: - return h(JsonImportView) - } -} diff --git a/old-ui/app/accounts/import/json.js b/old-ui/app/accounts/import/json.js deleted file mode 100644 index 8388f17a7..000000000 --- a/old-ui/app/accounts/import/json.js +++ /dev/null @@ -1,124 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const connect = require('react-redux').connect -const actions = require('../../../../ui/app/actions') -const FileInput = require('react-simple-file-input').default -const PropTypes = require('prop-types') - -const HELP_LINK = 'https://github.com/MetaMask/faq/blob/master/README.md#q-i-cant-use-the-import-feature-for-uploading-a-json-file-the-window-keeps-closing-when-i-try-to-select-a-file' - -class JsonImportSubview extends Component { - constructor (props) { - super(props) - - this.state = { - file: null, - fileContents: '', - } - } - - render () { - const { error } = this.props - - return ( - h('div', { - style: { - display: 'flex', - flexDirection: 'column', - alignItems: 'center', - padding: '5px 15px 0px 15px', - }, - }, [ - - h('p', 'Used by a variety of different clients'), - h('a.warning', { - href: HELP_LINK, - target: '_blank', - }, 'File import not working? Click here!'), - - h(FileInput, { - readAs: 'text', - onLoad: this.onLoad.bind(this), - style: { - margin: '20px 0px 12px 20px', - fontSize: '15px', - }, - }), - - h('input.large-input.letter-spacey', { - type: 'password', - placeholder: 'Enter password', - id: 'json-password-box', - onKeyPress: this.createKeyringOnEnter.bind(this), - style: { - width: 260, - marginTop: 12, - }, - }), - - h('button.primary', { - onClick: this.createNewKeychain.bind(this), - style: { - margin: 12, - }, - }, 'Import'), - - error ? h('span.error', error) : null, - ]) - ) - } - - onLoad (event, file) { - this.setState({file: file, fileContents: event.target.result}) - } - - createKeyringOnEnter (event) { - if (event.key === 'Enter') { - event.preventDefault() - this.createNewKeychain() - } - } - - createNewKeychain () { - const { fileContents } = this.state - - if (!fileContents) { - const message = 'You must select a file to import.' - return this.props.displayWarning(message) - } - - const passwordInput = document.getElementById('json-password-box') - const password = passwordInput.value - - if (!password) { - const message = 'You must enter a password for the selected file.' - return this.props.displayWarning(message) - } - - this.props.importNewAccount([ fileContents, password ]) - // JS runtime requires caught rejections but failures are handled by Redux - .catch() - } -} - -JsonImportSubview.propTypes = { - error: PropTypes.string, - displayWarning: PropTypes.func, - importNewAccount: PropTypes.func, -} - -const mapStateToProps = state => { - return { - error: state.appState.warning, - } -} - -const mapDispatchToProps = dispatch => { - return { - goHome: () => dispatch(actions.goHome()), - displayWarning: warning => dispatch(actions.displayWarning(warning)), - importNewAccount: options => dispatch(actions.importNewAccount('JSON File', options)), - } -} - -module.exports = connect(mapStateToProps, mapDispatchToProps)(JsonImportSubview) diff --git a/old-ui/app/accounts/import/private-key.js b/old-ui/app/accounts/import/private-key.js deleted file mode 100644 index 92e42549d..000000000 --- a/old-ui/app/accounts/import/private-key.js +++ /dev/null @@ -1,69 +0,0 @@ -const inherits = require('util').inherits -const Component = require('react').Component -const h = require('react-hyperscript') -const connect = require('react-redux').connect -const actions = require('../../../../ui/app/actions') - -module.exports = connect(mapStateToProps)(PrivateKeyImportView) - -function mapStateToProps (state) { - return { - error: state.appState.warning, - } -} - -inherits(PrivateKeyImportView, Component) -function PrivateKeyImportView () { - Component.call(this) -} - -PrivateKeyImportView.prototype.render = function () { - const { error } = this.props - - return ( - h('div', { - style: { - display: 'flex', - flexDirection: 'column', - alignItems: 'center', - padding: '5px 15px 0px 15px', - }, - }, [ - h('span', 'Paste your private key string here'), - - h('input.large-input.letter-spacey', { - type: 'password', - id: 'private-key-box', - onKeyPress: this.createKeyringOnEnter.bind(this), - style: { - width: 260, - marginTop: 12, - }, - }), - - h('button.primary', { - onClick: this.createNewKeychain.bind(this), - style: { - margin: 12, - }, - }, 'Import'), - - error ? h('span.error', error) : null, - ]) - ) -} - -PrivateKeyImportView.prototype.createKeyringOnEnter = function (event) { - if (event.key === 'Enter') { - event.preventDefault() - this.createNewKeychain() - } -} - -PrivateKeyImportView.prototype.createNewKeychain = function () { - const input = document.getElementById('private-key-box') - const privateKey = input.value - this.props.dispatch(actions.importNewAccount('Private Key', [ privateKey ])) - // JS runtime requires caught rejections but failures are handled by Redux - .catch() -} diff --git a/old-ui/app/accounts/import/seed.js b/old-ui/app/accounts/import/seed.js deleted file mode 100644 index b4a7c0afa..000000000 --- a/old-ui/app/accounts/import/seed.js +++ /dev/null @@ -1,30 +0,0 @@ -const inherits = require('util').inherits -const Component = require('react').Component -const h = require('react-hyperscript') -const connect = require('react-redux').connect - -module.exports = connect(mapStateToProps)(SeedImportSubview) - -function mapStateToProps (state) { - return {} -} - -inherits(SeedImportSubview, Component) -function SeedImportSubview () { - Component.call(this) -} - -SeedImportSubview.prototype.render = function () { - return ( - h('div', { - style: { - }, - }, [ - `Paste your seed phrase here!`, - h('textarea'), - h('br'), - h('button', 'Submit'), - ]) - ) -} - diff --git a/old-ui/app/add-suggested-token.js b/old-ui/app/add-suggested-token.js deleted file mode 100644 index ea534b7da..000000000 --- a/old-ui/app/add-suggested-token.js +++ /dev/null @@ -1,202 +0,0 @@ -const inherits = require('util').inherits -const Component = require('react').Component -const h = require('react-hyperscript') -const connect = require('react-redux').connect -const actions = require('../../ui/app/actions') -const Tooltip = require('./components/tooltip.js') -const ethUtil = require('ethereumjs-util') -const Copyable = require('./components/copyable') -const addressSummary = require('./util').addressSummary - - -module.exports = connect(mapStateToProps)(AddSuggestedTokenScreen) - -function mapStateToProps (state) { - return { - identities: state.metamask.identities, - suggestedTokens: state.metamask.suggestedTokens, - } -} - -inherits(AddSuggestedTokenScreen, Component) -function AddSuggestedTokenScreen () { - this.state = { - warning: null, - } - Component.call(this) -} - -AddSuggestedTokenScreen.prototype.render = function () { - const state = this.state - const props = this.props - const { warning } = state - const key = Object.keys(props.suggestedTokens)[0] - const { address, symbol, decimals } = props.suggestedTokens[key] - - return ( - h('.flex-column.flex-grow', [ - - // subtitle and nav - h('.section-title.flex-row.flex-center', [ - h('h2.page-subtitle', 'Add Suggested Token'), - ]), - - h('.error', { - style: { - display: warning ? 'block' : 'none', - padding: '0 20px', - textAlign: 'center', - }, - }, warning), - - // conf view - h('.flex-column.flex-justify-center.flex-grow.select-none', [ - h('.flex-space-around', { - style: { - padding: '20px', - }, - }, [ - - h('div', [ - h(Tooltip, { - position: 'top', - title: 'The contract of the actual token contract. Click for more info.', - }, [ - h('a', { - style: { fontWeight: 'bold', paddingRight: '10px'}, - href: 'https://support.metamask.io/kb/article/24-what-is-a-token-contract-address', - target: '_blank', - }, [ - h('span', 'Token Contract Address '), - h('i.fa.fa-question-circle'), - ]), - ]), - ]), - - h('div', { - style: { display: 'flex' }, - }, [ - h(Copyable, { - value: ethUtil.toChecksumAddress(address), - }, [ - h('span#token-address', { - style: { - width: 'inherit', - flex: '1 0 auto', - height: '30px', - margin: '8px', - display: 'flex', - }, - }, addressSummary(address, 24, 4, false)), - ]), - ]), - - h('div', [ - h('span', { - style: { fontWeight: 'bold', paddingRight: '10px'}, - }, 'Token Symbol'), - ]), - - h('div', { style: {display: 'flex'} }, [ - h('p#token_symbol', { - style: { - width: 'inherit', - flex: '1 0 auto', - height: '30px', - margin: '8px', - }, - }, symbol), - ]), - - h('div', [ - h('span', { - style: { fontWeight: 'bold', paddingRight: '10px'}, - }, 'Decimals of Precision'), - ]), - - h('div', { style: {display: 'flex'} }, [ - h('p#token_decimals', { - type: 'number', - style: { - width: 'inherit', - flex: '1 0 auto', - height: '30px', - margin: '8px', - }, - }, decimals), - ]), - - h('button', { - style: { - alignSelf: 'center', - margin: '8px', - }, - onClick: (event) => { - this.props.dispatch(actions.removeSuggestedTokens()) - }, - }, 'Cancel'), - - h('button', { - style: { - alignSelf: 'center', - margin: '8px', - }, - onClick: (event) => { - const valid = this.validateInputs({ address, symbol, decimals }) - if (!valid) return - - this.props.dispatch(actions.addToken(address.trim(), symbol.trim(), decimals)) - .then(() => { - this.props.dispatch(actions.removeSuggestedTokens()) - }) - }, - }, 'Add'), - ]), - ]), - ]) - ) -} - -AddSuggestedTokenScreen.prototype.componentWillMount = function () { - if (typeof global.ethereumProvider === 'undefined') return -} - -AddSuggestedTokenScreen.prototype.validateInputs = function (opts) { - let msg = '' - const identitiesList = Object.keys(this.props.identities) - const { address, symbol, decimals } = opts - const standardAddress = ethUtil.addHexPrefix(address).toLowerCase() - - const validAddress = ethUtil.isValidAddress(address) - if (!validAddress) { - msg += 'Address is invalid.' - } - - const validDecimals = decimals >= 0 && decimals <= 36 - if (!validDecimals) { - msg += 'Decimals must be at least 0, and not over 36. ' - } - - const symbolLen = symbol.trim().length - const validSymbol = symbolLen > 0 && symbolLen < 10 - if (!validSymbol) { - msg += 'Symbol must be between 0 and 10 characters.' - } - - const ownAddress = identitiesList.includes(standardAddress) - if (ownAddress) { - msg = 'Personal address detected. Input the token contract address.' - } - - const isValid = validAddress && validDecimals && !ownAddress - - if (!isValid) { - this.setState({ - warning: msg, - }) - } else { - this.setState({ warning: null }) - } - - return isValid -} diff --git a/old-ui/app/add-token.js b/old-ui/app/add-token.js deleted file mode 100644 index 6cf211636..000000000 --- a/old-ui/app/add-token.js +++ /dev/null @@ -1,241 +0,0 @@ -const inherits = require('util').inherits -const Component = require('react').Component -const h = require('react-hyperscript') -const connect = require('react-redux').connect -const actions = require('../../ui/app/actions') -const Tooltip = require('./components/tooltip.js') - - -const ethUtil = require('ethereumjs-util') -const abi = require('human-standard-token-abi') -const Eth = require('ethjs-query') -const EthContract = require('ethjs-contract') - -const emptyAddr = '0x0000000000000000000000000000000000000000' - -module.exports = connect(mapStateToProps)(AddTokenScreen) - -function mapStateToProps (state) { - return { - identities: state.metamask.identities, - } -} - -inherits(AddTokenScreen, Component) -function AddTokenScreen () { - this.state = { - warning: null, - address: '', - symbol: 'TOKEN', - decimals: 18, - } - Component.call(this) -} - -AddTokenScreen.prototype.render = function () { - const state = this.state - const props = this.props - const { warning, symbol, decimals } = state - - return ( - h('.flex-column.flex-grow', [ - - // subtitle and nav - h('.section-title.flex-row.flex-center', [ - h('i.fa.fa-arrow-left.fa-lg.cursor-pointer', { - onClick: (event) => { - props.dispatch(actions.goHome()) - }, - }), - h('h2.page-subtitle', 'Add Token'), - ]), - - h('.error', { - style: { - display: warning ? 'block' : 'none', - padding: '0 20px', - textAlign: 'center', - }, - }, warning), - - // conf view - h('.flex-column.flex-justify-center.flex-grow.select-none', [ - h('.flex-space-around', { - style: { - padding: '20px', - }, - }, [ - - h('div', [ - h(Tooltip, { - position: 'top', - title: 'The contract of the actual token contract. Click for more info.', - }, [ - h('a', { - style: { fontWeight: 'bold', paddingRight: '10px'}, - href: 'https://support.metamask.io/kb/article/24-what-is-a-token-contract-address', - target: '_blank', - }, [ - h('span', 'Token Contract Address '), - h('i.fa.fa-question-circle'), - ]), - ]), - ]), - - h('section.flex-row.flex-center', [ - h('input#token-address', { - name: 'address', - placeholder: 'Token Contract Address', - onChange: this.tokenAddressDidChange.bind(this), - style: { - width: 'inherit', - flex: '1 0 auto', - height: '30px', - margin: '8px', - }, - }), - ]), - - h('div', [ - h('span', { - style: { fontWeight: 'bold', paddingRight: '10px'}, - }, 'Token Symbol'), - ]), - - h('div', { style: {display: 'flex'} }, [ - h('input#token_symbol', { - placeholder: `Like "ETH"`, - value: symbol, - style: { - width: 'inherit', - flex: '1 0 auto', - height: '30px', - margin: '8px', - }, - onChange: (event) => { - var element = event.target - var symbol = element.value - this.setState({ symbol }) - }, - }), - ]), - - h('div', [ - h('span', { - style: { fontWeight: 'bold', paddingRight: '10px'}, - }, 'Decimals of Precision'), - ]), - - h('div', { style: {display: 'flex'} }, [ - h('input#token_decimals', { - value: decimals, - type: 'number', - min: 0, - max: 36, - style: { - width: 'inherit', - flex: '1 0 auto', - height: '30px', - margin: '8px', - }, - onChange: (event) => { - var element = event.target - var decimals = element.value.trim() - this.setState({ decimals }) - }, - }), - ]), - - h('button', { - style: { - alignSelf: 'center', - }, - onClick: (event) => { - const valid = this.validateInputs() - if (!valid) return - - const { address, symbol, decimals } = this.state - this.props.dispatch(actions.addToken(address.trim(), symbol.trim(), decimals)) - .then(() => { - this.props.dispatch(actions.goHome()) - }) - }, - }, 'Add'), - ]), - ]), - ]) - ) -} - -AddTokenScreen.prototype.componentWillMount = function () { - if (typeof global.ethereumProvider === 'undefined') return - - this.eth = new Eth(global.ethereumProvider) - this.contract = new EthContract(this.eth) - this.TokenContract = this.contract(abi) -} - -AddTokenScreen.prototype.tokenAddressDidChange = function (event) { - const el = event.target - const address = el.value.trim() - if (ethUtil.isValidAddress(address) && address !== emptyAddr) { - this.setState({ address }) - this.attemptToAutoFillTokenParams(address) - } -} - -AddTokenScreen.prototype.validateInputs = function () { - let msg = '' - const state = this.state - const identitiesList = Object.keys(this.props.identities) - const { address, symbol, decimals } = state - const standardAddress = ethUtil.addHexPrefix(address).toLowerCase() - - const validAddress = ethUtil.isValidAddress(address) - if (!validAddress) { - msg += 'Address is invalid.' - } - - const validDecimals = decimals >= 0 && decimals <= 36 - if (!validDecimals) { - msg += 'Decimals must be at least 0, and not over 36. ' - } - - const symbolLen = symbol.trim().length - const validSymbol = symbolLen > 0 && symbolLen < 10 - if (!validSymbol) { - msg += 'Symbol must be between 0 and 10 characters.' - } - - const ownAddress = identitiesList.includes(standardAddress) - if (ownAddress) { - msg = 'Personal address detected. Input the token contract address.' - } - - const isValid = validAddress && validDecimals && !ownAddress - - if (!isValid) { - this.setState({ - warning: msg, - }) - } else { - this.setState({ warning: null }) - } - - return isValid -} - -AddTokenScreen.prototype.attemptToAutoFillTokenParams = async function (address) { - const contract = this.TokenContract.at(address) - - const results = await Promise.all([ - contract.symbol(), - contract.decimals(), - ]) - - const [ symbol, decimals ] = results - if (symbol && decimals) { - console.log('SETTING SYMBOL AND DECIMALS', { symbol, decimals }) - this.setState({ symbol: symbol[0], decimals: decimals[0].toString() }) - } -} diff --git a/old-ui/app/app.js b/old-ui/app/app.js deleted file mode 100644 index e81899538..000000000 --- a/old-ui/app/app.js +++ /dev/null @@ -1,315 +0,0 @@ -const inherits = require('util').inherits -const Component = require('react').Component -const connect = require('react-redux').connect -const h = require('react-hyperscript') -const actions = require('../../ui/app/actions') -const log = require('loglevel') -// mascara -const FirstTime = require('../../ui/app/components/pages/first-time-flow').default -// init -const InitializeMenuScreen = require('./first-time/init-menu') -const NewKeyChainScreen = require('./new-keychain') -// unlock -const UnlockScreen = require('./unlock') -// accounts -const AccountDetailScreen = require('./account-detail') -const AccountQrScreen = require('./account-qr') -const SendTransactionScreen = require('./send') -const ConfirmTxScreen = require('./conf-tx') -// notice -const NoticeScreen = require('./components/notice') -const generateLostAccountsNotice = require('../lib/lost-accounts-notice') -// other views -const ConfigScreen = require('./config') -const AddTokenScreen = require('./add-token') -const AddSuggestedTokenScreen = require('./add-suggested-token') -const Import = require('./accounts/import') -const InfoScreen = require('./info') -const NewUiAnnouncement = require('./new-ui-annoucement') -const AppBar = require('./components/app-bar') -const Loading = require('./components/loading') -const BuyView = require('./components/buy-button-subview') -const HDCreateVaultComplete = require('./keychains/hd/create-vault-complete') -const HDRestoreVaultScreen = require('./keychains/hd/restore-vault') -const RevealSeedConfirmation = require('./keychains/hd/recover-seed/confirmation') -const ProviderApproval = require('./provider-approval') - -module.exports = connect(mapStateToProps)(App) - -inherits(App, Component) -function App () { Component.call(this) } - -function mapStateToProps (state) { - const { - identities, - accounts, - address, - keyrings, - isInitialized, - noActiveNotices, - seedWords, - featureFlags, - providerRequests, - } = state.metamask - const selected = address || Object.keys(accounts)[0] - - return { - // state from plugin - isLoading: state.appState.isLoading, - loadingMessage: state.appState.loadingMessage, - noActiveNotices: state.metamask.noActiveNotices, - isInitialized: state.metamask.isInitialized, - isUnlocked: state.metamask.isUnlocked, - currentView: state.appState.currentView, - selectedAddress: state.metamask.selectedAddress, - transForward: state.appState.transForward, - isMascara: state.metamask.isMascara, - isOnboarding: Boolean(!noActiveNotices || seedWords || !isInitialized), - seedWords: state.metamask.seedWords, - unapprovedTxs: state.metamask.unapprovedTxs, - unapprovedMsgs: state.metamask.unapprovedMsgs, - menuOpen: state.appState.menuOpen, - network: state.metamask.network, - provider: state.metamask.provider, - forgottenPassword: state.appState.forgottenPassword, - nextUnreadNotice: state.metamask.nextUnreadNotice, - lostAccounts: state.metamask.lostAccounts, - frequentRpcListDetail: state.metamask.frequentRpcListDetail || [], - featureFlags, - providerRequests, - suggestedTokens: state.metamask.suggestedTokens, - - // state needed to get account dropdown temporarily rendering from app bar - identities, - selected, - keyrings, - } -} - -App.prototype.render = function () { - const { - currentView, - dispatch, - isLoading, - loadingMessage, - transForward, - network, - featureFlags, - } = this.props - const isLoadingNetwork = network === 'loading' && currentView.name !== 'config' - const loadMessage = loadingMessage || isLoadingNetwork - ? `Connecting to ${this.getNetworkName()}` - : null - log.debug('Main ui render function') - - if (!featureFlags.skipAnnounceBetaUI) { - return ( - h(NewUiAnnouncement, { - dispatch, - }) - ) - } - - return ( - h('.flex-column.full-height', { - style: { - // Windows was showing a vertical scroll bar: - overflow: 'hidden', - position: 'relative', - alignItems: 'center', - }, - }, [ - h(AppBar, { - ...this.props, - }), - this.renderLoadingIndicator({ isLoading, isLoadingNetwork, loadMessage }), - - // panel content - h('.app-primary' + (transForward ? '.from-right' : '.from-left'), { - style: { - width: '100%', - }, - }, [ - this.renderPrimary(), - ]), - ]) - ) -} -App.prototype.renderLoadingIndicator = function ({ isLoading, isLoadingNetwork, loadMessage }) { - const { isMascara } = this.props - - return isMascara - ? null - : h(Loading, { - isLoading: isLoading || isLoadingNetwork, - loadingMessage: loadMessage, - }) -} - -App.prototype.renderPrimary = function () { - log.debug('rendering primary') - var props = this.props - const {isMascara, isOnboarding, providerRequests} = props - - if (isMascara && isOnboarding) { - return h(FirstTime) - } - - // notices - if (!props.noActiveNotices) { - log.debug('rendering notice screen for unread notices.') - return h('div', { - style: { width: '100%' }, - }, [ - - h(NoticeScreen, { - notice: props.nextUnreadNotice, - key: 'NoticeScreen', - onConfirm: () => props.dispatch(actions.markNoticeRead(props.nextUnreadNotice)), - }), - ]) - } else if (props.lostAccounts && props.lostAccounts.length > 0) { - log.debug('rendering notice screen for lost accounts view.') - return h(NoticeScreen, { - notice: generateLostAccountsNotice(props.lostAccounts), - key: 'LostAccountsNotice', - onConfirm: () => props.dispatch(actions.markAccountsFound()), - }) - } - - // show initialize screen - if (!props.isInitialized || props.forgottenPassword) { - // show current view - log.debug('rendering an initialize screen') - switch (props.currentView.name) { - - case 'restoreVault': - log.debug('rendering restore vault screen') - return h(HDRestoreVaultScreen, {key: 'HDRestoreVaultScreen'}) - - default: - log.debug('rendering menu screen') - return h(InitializeMenuScreen, {key: 'menuScreenInit'}) - } - } - - // show unlock screen - if (!props.isUnlocked) { - switch (props.currentView.name) { - - case 'restoreVault': - log.debug('rendering restore vault screen') - return h(HDRestoreVaultScreen, {key: 'HDRestoreVaultScreen'}) - - case 'config': - log.debug('rendering config screen from unlock screen.') - return h(ConfigScreen, {key: 'config'}) - - default: - log.debug('rendering locked screen') - return h(UnlockScreen, {key: 'locked'}) - } - } - - // show seed words screen - if (props.seedWords) { - log.debug('rendering seed words') - return h(HDCreateVaultComplete, {key: 'HDCreateVaultComplete'}) - } - - if (providerRequests && providerRequests.length > 0) { - log.debug('rendering provider API approval screen') - return h(ProviderApproval, { origin: providerRequests[0].origin, tabID: providerRequests[0].tabID }) - } - - // show current view - switch (props.currentView.name) { - - case 'accountDetail': - log.debug('rendering account detail screen') - return h(AccountDetailScreen, {key: 'account-detail'}) - - case 'sendTransaction': - log.debug('rendering send tx screen') - return h(SendTransactionScreen, {key: 'send-transaction'}) - - case 'newKeychain': - log.debug('rendering new keychain screen') - return h(NewKeyChainScreen, {key: 'new-keychain'}) - - case 'confTx': - log.debug('rendering confirm tx screen') - return h(ConfirmTxScreen, {key: 'confirm-tx'}) - - case 'add-token': - log.debug('rendering add-token screen from unlock screen.') - return h(AddTokenScreen, {key: 'add-token'}) - - case 'add-suggested-token': - log.debug('rendering add-suggested-token screen from unlock screen.') - return h(AddSuggestedTokenScreen, {key: 'add-suggested-token'}) - - case 'config': - log.debug('rendering config screen') - return h(ConfigScreen, {key: 'config'}) - - case 'import-menu': - log.debug('rendering import screen') - return h(Import, {key: 'import-menu'}) - - case 'reveal-seed-conf': - log.debug('rendering reveal seed confirmation screen') - return h(RevealSeedConfirmation, {key: 'reveal-seed-conf'}) - - case 'info': - log.debug('rendering info screen') - return h(InfoScreen, {key: 'info'}) - - case 'buyEth': - log.debug('rendering buy ether screen') - return h(BuyView, {key: 'buyEthView'}) - - case 'qr': - log.debug('rendering show qr screen') - return h(AccountQrScreen, { - key: 'account-qr', - selectedAddress: props.selectedAddress, - }) - - default: - log.debug('rendering default, account detail screen') - return h(AccountDetailScreen, {key: 'account-detail'}) - } -} - -App.prototype.toggleMetamaskActive = function () { - if (!this.props.isUnlocked) { - // currently inactive: redirect to password box - var passwordBox = document.querySelector('input[type=password]') - if (!passwordBox) return - passwordBox.focus() - } else { - // currently active: deactivate - this.props.dispatch(actions.lockMetamask(false)) - } -} -App.prototype.getNetworkName = function () { - const { provider } = this.props - const providerName = provider.type - - let name - - if (providerName === 'mainnet') { - name = 'Main Ethereum Network' - } else if (providerName === 'ropsten') { - name = 'Ropsten Test Network' - } else if (providerName === 'kovan') { - name = 'Kovan Test Network' - } else if (providerName === 'rinkeby') { - name = 'Rinkeby Test Network' - } else { - name = 'Unknown Private Network' - } - - return name -} diff --git a/old-ui/app/components/account-dropdowns.js b/old-ui/app/components/account-dropdowns.js deleted file mode 100644 index 262de6601..000000000 --- a/old-ui/app/components/account-dropdowns.js +++ /dev/null @@ -1,321 +0,0 @@ -const Component = require('react').Component -const PropTypes = require('prop-types') -const h = require('react-hyperscript') -const actions = require('../../../ui/app/actions') -const genAccountLink = require('etherscan-link').createAccountLink -const connect = require('react-redux').connect -const Dropdown = require('./dropdown').Dropdown -const DropdownMenuItem = require('./dropdown').DropdownMenuItem -const Identicon = require('./identicon') -const ethUtil = require('ethereumjs-util') -const copyToClipboard = require('copy-to-clipboard') - -class AccountDropdowns extends Component { - constructor (props) { - super(props) - this.state = { - accountSelectorActive: false, - optionsMenuActive: false, - } - this.accountSelectorToggleClassName = 'accounts-selector' - this.optionsMenuToggleClassName = 'fa-ellipsis-h' - } - - renderAccounts () { - const { identities, selected, keyrings } = this.props - const accountOrder = keyrings.reduce((list, keyring) => list.concat(keyring.accounts), []) - - return accountOrder.map((address, index) => { - const identity = identities[address] - const isSelected = identity.address === selected - - const simpleAddress = identity.address.substring(2).toLowerCase() - - const keyring = keyrings.find((kr) => { - return kr.accounts.includes(simpleAddress) || - kr.accounts.includes(identity.address) - }) - - return h( - DropdownMenuItem, - { - closeMenu: () => {}, - onClick: () => { - this.props.actions.showAccountDetail(identity.address) - }, - style: { - marginTop: index === 0 ? '5px' : '', - fontSize: '24px', - }, - }, - [ - h( - Identicon, - { - address: identity.address, - diameter: 32, - style: { - marginLeft: '10px', - }, - }, - ), - this.indicateIfLoose(keyring), - h('span', { - style: { - marginLeft: '20px', - fontSize: '24px', - maxWidth: '145px', - whiteSpace: 'nowrap', - overflow: 'hidden', - textOverflow: 'ellipsis', - }, - }, identity.name || ''), - h('span', { style: { marginLeft: '20px', fontSize: '24px' } }, isSelected ? h('.check', '✓') : null), - ] - ) - }) - } - - indicateIfLoose (keyring) { - try { // Sometimes keyrings aren't loaded yet: - const type = keyring.type - const isLoose = type !== 'HD Key Tree' - return isLoose ? h('.keyring-label', 'IMPORTED') : null - } catch (e) { return } - } - - renderAccountSelector () { - const { actions } = this.props - const { accountSelectorActive } = this.state - - return h( - Dropdown, - { - useCssTransition: true, // Hardcoded because account selector is temporarily in app-header - style: { - marginLeft: '-238px', - marginTop: '38px', - minWidth: '180px', - overflowY: 'auto', - maxHeight: '300px', - width: '300px', - }, - innerStyle: { - padding: '8px 25px', - }, - isOpen: accountSelectorActive, - onClickOutside: (event) => { - const { classList } = event.target - const isNotToggleElement = !classList.contains(this.accountSelectorToggleClassName) - if (accountSelectorActive && isNotToggleElement) { - this.setState({ accountSelectorActive: false }) - } - }, - }, - [ - ...this.renderAccounts(), - h( - DropdownMenuItem, - { - closeMenu: () => {}, - onClick: () => actions.addNewAccount(), - }, - [ - h( - Identicon, - { - style: { - marginLeft: '10px', - }, - diameter: 32, - }, - ), - h('span', { style: { marginLeft: '20px', fontSize: '24px' } }, 'Create Account'), - ], - ), - h( - DropdownMenuItem, - { - closeMenu: () => {}, - onClick: () => actions.showImportPage(), - }, - [ - h( - Identicon, - { - style: { - marginLeft: '10px', - }, - diameter: 32, - }, - ), - h('span', { - style: { - marginLeft: '20px', - fontSize: '24px', - marginBottom: '5px', - }, - }, 'Import Account'), - ] - ), - ] - ) - } - - renderAccountOptions () { - const { actions } = this.props - const { optionsMenuActive } = this.state - - return h( - Dropdown, - { - style: { - marginLeft: '-215px', - minWidth: '180px', - }, - isOpen: optionsMenuActive, - onClickOutside: (event) => { - const { classList } = event.target - const isNotToggleElement = !classList.contains(this.optionsMenuToggleClassName) - if (optionsMenuActive && isNotToggleElement) { - this.setState({ optionsMenuActive: false }) - } - }, - }, - [ - h( - DropdownMenuItem, - { - closeMenu: () => {}, - onClick: () => { - const { selected, network } = this.props - const url = genAccountLink(selected, network) - global.platform.openWindow({ url }) - }, - }, - 'View account on Etherscan', - ), - h( - DropdownMenuItem, - { - closeMenu: () => {}, - onClick: () => { - const { selected, identities } = this.props - var identity = identities[selected] - actions.showQrView(selected, identity ? identity.name : '') - }, - }, - 'Show QR Code', - ), - h( - DropdownMenuItem, - { - closeMenu: () => {}, - onClick: () => { - const { selected } = this.props - const checkSumAddress = selected && ethUtil.toChecksumAddress(selected) - copyToClipboard(checkSumAddress) - }, - }, - 'Copy Address to clipboard', - ), - h( - DropdownMenuItem, - { - closeMenu: () => {}, - onClick: () => { - actions.requestAccountExport() - }, - }, - 'Export Private Key', - ), - ] - ) - } - - render () { - const { style, enableAccountsSelector, enableAccountOptions } = this.props - const { optionsMenuActive, accountSelectorActive } = this.state - - return h( - 'span', - { - style: style, - }, - [ - enableAccountsSelector && h( - // 'i.fa.fa-angle-down', - 'div.cursor-pointer.color-orange.accounts-selector', - { - style: { - // fontSize: '1.8em', - background: 'url(images/switch_acc.svg) white center center no-repeat', - height: '25px', - width: '25px', - transform: 'scale(0.75)', - marginRight: '3px', - }, - onClick: (event) => { - event.stopPropagation() - this.setState({ - accountSelectorActive: !accountSelectorActive, - optionsMenuActive: false, - }) - }, - }, - this.renderAccountSelector(), - ), - enableAccountOptions && h( - 'i.fa.fa-ellipsis-h', - { - style: { - margin: '0.5em', - fontSize: '1.8em', - }, - onClick: (event) => { - event.stopPropagation() - this.setState({ - accountSelectorActive: false, - optionsMenuActive: !optionsMenuActive, - }) - }, - }, - this.renderAccountOptions() - ), - ] - ) - } -} - -AccountDropdowns.defaultProps = { - enableAccountsSelector: false, - enableAccountOptions: false, -} - -AccountDropdowns.propTypes = { - identities: PropTypes.objectOf(PropTypes.object), - selected: PropTypes.string, - keyrings: PropTypes.array, - actions: PropTypes.objectOf(PropTypes.func), - network: PropTypes.string, - style: PropTypes.object, - enableAccountOptions: PropTypes.bool, - enableAccountsSelector: PropTypes.bool, -} - -const mapDispatchToProps = (dispatch) => { - return { - actions: { - showConfigPage: () => dispatch(actions.showConfigPage()), - requestAccountExport: () => dispatch(actions.requestExportAccount()), - showAccountDetail: (address) => dispatch(actions.showAccountDetail(address)), - addNewAccount: () => dispatch(actions.addNewAccount()), - showImportPage: () => dispatch(actions.showImportPage()), - showQrView: (selected, identity) => dispatch(actions.showQrView(selected, identity)), - }, - } -} - -module.exports = { - AccountDropdowns: connect(null, mapDispatchToProps)(AccountDropdowns), -} diff --git a/old-ui/app/components/account-export.js b/old-ui/app/components/account-export.js deleted file mode 100644 index 51b85b786..000000000 --- a/old-ui/app/components/account-export.js +++ /dev/null @@ -1,132 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits -const exportAsFile = require('../util').exportAsFile -const copyToClipboard = require('copy-to-clipboard') -const actions = require('../../../ui/app/actions') -const ethUtil = require('ethereumjs-util') -const connect = require('react-redux').connect - -module.exports = connect(mapStateToProps)(ExportAccountView) - -inherits(ExportAccountView, Component) -function ExportAccountView () { - Component.call(this) -} - -function mapStateToProps (state) { - return { - warning: state.appState.warning, - } -} - -ExportAccountView.prototype.render = function () { - const state = this.props - const accountDetail = state.accountDetail - const nickname = state.identities[state.address].name - - if (!accountDetail) return h('div') - const accountExport = accountDetail.accountExport - - const notExporting = accountExport === 'none' - const exportRequested = accountExport === 'requested' - const accountExported = accountExport === 'completed' - - if (notExporting) return h('div') - - if (exportRequested) { - const warning = `Export private keys at your own risk.` - return ( - h('div', { - style: { - display: 'inline-block', - textAlign: 'center', - }, - }, - [ - h('div', { - key: 'exporting', - style: { - margin: '0 20px', - }, - }, [ - h('p.error', warning), - h('input#exportAccount.sizing-input', { - type: 'password', - placeholder: 'confirm password', - onKeyPress: this.onExportKeyPress.bind(this), - style: { - position: 'relative', - top: '1.5px', - marginBottom: '7px', - }, - }), - ]), - h('div', { - key: 'buttons', - style: { - margin: '0 20px', - }, - }, - [ - h('button', { - onClick: () => this.onExportKeyPress({ key: 'Enter', preventDefault: () => {} }), - style: { - marginRight: '10px', - }, - }, 'Submit'), - h('button', { - onClick: () => this.props.dispatch(actions.backToAccountDetail(this.props.address)), - }, 'Cancel'), - ]), - (this.props.warning) && ( - h('span.error', { - style: { - margin: '20px', - }, - }, this.props.warning.split('-')) - ), - ]) - ) - } - - if (accountExported) { - const plainKey = ethUtil.stripHexPrefix(accountDetail.privateKey) - - return h('div.privateKey', { - style: { - margin: '0 20px', - }, - }, [ - h('label', 'Your private key (click to copy):'), - h('p.error.cursor-pointer', { - style: { - textOverflow: 'ellipsis', - overflow: 'hidden', - webkitUserSelect: 'text', - maxWidth: '275px', - }, - onClick: function (event) { - copyToClipboard(ethUtil.stripHexPrefix(accountDetail.privateKey)) - }, - }, plainKey), - h('button', { - onClick: () => this.props.dispatch(actions.backToAccountDetail(this.props.address)), - }, 'Done'), - h('button', { - style: { - marginLeft: '10px', - }, - onClick: () => exportAsFile(`MetaMask ${nickname} Private Key`, plainKey), - }, 'Save as File'), - ]) - } -} - -ExportAccountView.prototype.onExportKeyPress = function (event) { - if (event.key !== 'Enter') return - event.preventDefault() - - const input = document.getElementById('exportAccount').value - this.props.dispatch(actions.exportAccount(input, this.props.address)) -} diff --git a/old-ui/app/components/account-panel.js b/old-ui/app/components/account-panel.js deleted file mode 100644 index abaaf8163..000000000 --- a/old-ui/app/components/account-panel.js +++ /dev/null @@ -1,86 +0,0 @@ -const inherits = require('util').inherits -const Component = require('react').Component -const h = require('react-hyperscript') -const Identicon = require('./identicon') -const formatBalance = require('../util').formatBalance -const addressSummary = require('../util').addressSummary - -module.exports = AccountPanel - - -inherits(AccountPanel, Component) -function AccountPanel () { - Component.call(this) -} - -AccountPanel.prototype.render = function () { - var state = this.props - var identity = state.identity || {} - var account = state.account || {} - var isFauceting = state.isFauceting - - var panelState = { - key: `accountPanel${identity.address}`, - identiconKey: identity.address, - identiconLabel: identity.name || '', - attributes: [ - { - key: 'ADDRESS', - value: addressSummary(identity.address), - }, - balanceOrFaucetingIndication(account, isFauceting), - ], - } - - return ( - - h('.identity-panel.flex-row.flex-space-between', { - style: { - flex: '1 0 auto', - cursor: panelState.onClick ? 'pointer' : undefined, - }, - onClick: panelState.onClick, - }, [ - - // account identicon - h('.identicon-wrapper.flex-column.select-none', [ - h(Identicon, { - address: panelState.identiconKey, - imageify: state.imageifyIdenticons, - }), - h('span.font-small', panelState.identiconLabel.substring(0, 7) + '...'), - ]), - - // account address, balance - h('.identity-data.flex-column.flex-justify-center.flex-grow.select-none', [ - - panelState.attributes.map((attr) => { - return h('.flex-row.flex-space-between', { - key: '' + Math.round(Math.random() * 1000000), - }, [ - h('label.font-small.no-select', attr.key), - h('span.font-small', attr.value), - ]) - }), - ]), - - ]) - - ) -} - -function balanceOrFaucetingIndication (account, isFauceting) { - // Temporarily deactivating isFauceting indication - // because it shows fauceting for empty restored accounts. - if (/* isFauceting*/ false) { - return { - key: 'Account is auto-funding.', - value: 'Please wait.', - } - } else { - return { - key: 'BALANCE', - value: formatBalance(account.balance), - } - } -} diff --git a/old-ui/app/components/app-bar.js b/old-ui/app/components/app-bar.js deleted file mode 100644 index c0da36615..000000000 --- a/old-ui/app/components/app-bar.js +++ /dev/null @@ -1,436 +0,0 @@ -const PropTypes = require('prop-types') -const {Component} = require('react') -const h = require('react-hyperscript') -const actions = require('../../../ui/app/actions') -const SandwichExpando = require('sandwich-expando') -const {Dropdown} = require('./dropdown') -const {DropdownMenuItem} = require('./dropdown') -const NetworkIndicator = require('./network') -const {AccountDropdowns} = require('./account-dropdowns') - -const LOCALHOST_RPC_URL = 'http://localhost:8545' - -module.exports = class AppBar extends Component { - static defaultProps = { - selectedAddress: undefined, - } - - static propTypes = { - dispatch: PropTypes.func.isRequired, - frequentRpcListDetail: PropTypes.array.isRequired, - isMascara: PropTypes.bool.isRequired, - isOnboarding: PropTypes.bool.isRequired, - identities: PropTypes.any.isRequired, - selectedAddress: PropTypes.string, - isUnlocked: PropTypes.bool.isRequired, - network: PropTypes.any.isRequired, - keyrings: PropTypes.any.isRequired, - provider: PropTypes.any.isRequired, - } - - static renderSpace () { - return ( - h('span', { - dangerouslySetInnerHTML: { - __html: ' ', - }, - }) - ) - } - - state = { - isNetworkMenuOpen: false, - } - - renderAppBar () { - if (window.METAMASK_UI_TYPE === 'notification') { - return null - } - - const props = this.props - const {isMascara, isOnboarding} = props - - // Do not render header if user is in mascara onboarding - if (isMascara && isOnboarding) { - return null - } - - // Do not render header if user is in mascara buy ether - if (isMascara && props.currentView.name === 'buyEth') { - return null - } - - return ( - h('div.app-bar', [ - this.renderAppBarNewUiNotice(), - this.renderAppBarAppHeader(), - ]) - ) - } - - renderAppBarNewUiNotice () { - const {dispatch} = this.props - - return ( - h('div.app-bar__new-ui-banner', { - style: { - height: '28px', - zIndex: 12, - }, - }, [ - 'Try the New MetaMask', - AppBar.renderSpace(), - h('span.banner__link', { - async onClick () { - await dispatch(actions.setFeatureFlag('betaUI', true)) - global.platform.openExtensionInBrowser() - }, - }, [ - 'Now', - ]), - AppBar.renderSpace(), - 'or', - AppBar.renderSpace(), - h('span.banner__link', { - onClick () { - global.platform.openWindow({ - url: 'https://medium.com/metamask/74dba32cc7f7', - }) - }, - }, [ - 'Learn More', - ]), - ]) - ) - } - - renderAppBarAppHeader () { - const { - identities, - selectedAddress, - isUnlocked, - network, - keyrings, - provider, - } = this.props - const { - isNetworkMenuOpen, - isMainMenuOpen, - } = this.state - - return ( - h('.full-width', { - style: { - display: 'flex', - flexDirection: 'column', - height: '38px', - }, - }, [ - h('.app-header.flex-row.flex-space-between', { - style: { - alignItems: 'center', - visibility: isUnlocked ? 'visible' : 'none', - background: isUnlocked ? 'white' : 'none', - height: '38px', - position: 'relative', - zIndex: 12, - }, - }, [ - h('div.left-menu-section', { - style: { - display: 'flex', - flexDirection: 'row', - alignItems: 'center', - }, - }, [ - // mini logo - h('img', { - height: 24, - width: 24, - src: './images/icon-128.png', - }), - h(NetworkIndicator, { - network: network, - provider: provider, - onClick: (event) => { - event.preventDefault() - event.stopPropagation() - this.setState({ isNetworkMenuOpen: !isNetworkMenuOpen }) - }, - }), - ]), - isUnlocked && h('div', { - style: { - display: 'flex', - flexDirection: 'row', - alignItems: 'center', - }, - }, [ - h(AccountDropdowns, { - style: {}, - enableAccountsSelector: true, - identities: identities, - selected: selectedAddress, - network, - keyrings, - }, []), - h(SandwichExpando, { - className: 'sandwich-expando', - width: 16, - barHeight: 2, - padding: 0, - isOpen: isMainMenuOpen, - color: 'rgb(247,146,30)', - onClick: () => { - this.setState({ - isMainMenuOpen: !isMainMenuOpen, - }) - }, - }), - ]), - ]), - ]) - ) - } - - renderNetworkDropdown () { - const { - dispatch, - frequentRpcListDetail: rpcList, - provider, - } = this.props - const { - type: providerType, - rpcTarget: activeNetwork, - } = provider - const isOpen = this.state.isNetworkMenuOpen - - return h(Dropdown, { - useCssTransition: true, - isOpen, - onClickOutside: (event) => { - const { classList } = event.target - const isNotToggleElement = [ - classList.contains('menu-icon'), - classList.contains('network-name'), - classList.contains('network-indicator'), - ].filter(bool => bool).length === 0 - // classes from three constituent nodes of the toggle element - - if (isNotToggleElement) { - this.setState({ isNetworkMenuOpen: false }) - } - }, - zIndex: 11, - style: { - position: 'absolute', - left: '2px', - top: '64px', - }, - innerStyle: { - padding: '2px 16px 2px 0px', - }, - }, [ - h(DropdownMenuItem, { - key: 'main', - closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }), - onClick: () => dispatch(actions.setProviderType('mainnet')), - style: { - fontSize: '18px', - }, - }, [ - h('.menu-icon.diamond'), - 'Main Ethereum Network', - providerType === 'mainnet' - ? h('.check', '✓') - : null, - ]), - h(DropdownMenuItem, { - key: 'ropsten', - closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }), - onClick: () => dispatch(actions.setProviderType('ropsten')), - style: { - fontSize: '18px', - }, - }, [ - h('.menu-icon.red-dot'), - 'Ropsten Test Network', - providerType === 'ropsten' - ? h('.check', '✓') - : null, - ]), - h(DropdownMenuItem, { - key: 'kovan', - closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }), - onClick: () => dispatch(actions.setProviderType('kovan')), - style: { - fontSize: '18px', - }, - }, [ - h('.menu-icon.hollow-diamond'), - 'Kovan Test Network', - providerType === 'kovan' - ? h('.check', '✓') - : null, - ]), - h(DropdownMenuItem, { - key: 'rinkeby', - closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }), - onClick: () => dispatch(actions.setProviderType('rinkeby')), - style: { - fontSize: '18px', - }, - }, [ - h('.menu-icon.golden-square'), - 'Rinkeby Test Network', - providerType === 'rinkeby' - ? h('.check', '✓') - : null, - ]), - h(DropdownMenuItem, { - key: 'default', - closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }), - onClick: () => dispatch(actions.setProviderType('localhost')), - style: { - fontSize: '18px', - }, - }, [ - h('i.fa.fa-question-circle.fa-lg.menu-icon'), - 'Localhost 8545', - activeNetwork === LOCALHOST_RPC_URL - ? h('.check', '✓') - : null, - ]), - - this.renderCustomOption(provider), - this.renderCommonRpc(rpcList, provider), - - h(DropdownMenuItem, { - closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }), - onClick: () => dispatch(actions.showConfigPage()), - style: { - fontSize: '18px', - }, - }, [ - h('i.fa.fa-question-circle.fa-lg.menu-icon'), - 'Custom RPC', - activeNetwork === 'custom' - ? h('.check', '✓') - : null, - ]), - ]) - } - - renderCustomOption ({ rpcTarget, type, ticker }) { - const {dispatch, network} = this.props - - if (type !== 'rpc') { - return null - } - - // Concatenate long URLs - let label = rpcTarget - if (rpcTarget.length > 31) { - label = label.substr(0, 34) + '...' - } - - switch (rpcTarget) { - case LOCALHOST_RPC_URL: - return null - default: - return h(DropdownMenuItem, { - key: rpcTarget, - onClick: () => dispatch(actions.setRpcTarget(rpcTarget, network, ticker)), - closeMenu: () => this.setState({ isNetworkMenuOpen: false }), - }, [ - h('i.fa.fa-question-circle.fa-lg.menu-icon'), - label, - h('.check', '✓'), - ]) - } - } - - renderCommonRpc (rpcList, provider) { - const {dispatch} = this.props - const reversedRpcList = rpcList.slice().reverse() - - return reversedRpcList.map((entry) => { - const rpc = entry.rpcUrl - const currentRpcTarget = provider.type === 'rpc' && rpc === provider.rpcTarget - - if ((rpc === LOCALHOST_RPC_URL) || currentRpcTarget) { - return null - } else { - return h(DropdownMenuItem, { - key: `common${rpc}`, - closeMenu: () => this.setState({ isNetworkMenuOpen: false }), - onClick: () => dispatch(actions.setRpcTarget(rpc, entry.chainId, entry.ticker)), - }, [ - h('i.fa.fa-question-circle.fa-lg.menu-icon'), - rpc, - currentRpcTarget - ? h('.check', '✓') - : null, - ]) - } - }) - } - - renderDropdown () { - const {dispatch} = this.props - const isOpen = this.state.isMainMenuOpen - - return h(Dropdown, { - useCssTransition: true, - isOpen: isOpen, - zIndex: 11, - onClickOutside: (event) => { - const classList = event.target.classList - const parentClassList = event.target.parentElement.classList - - const isToggleElement = classList.contains('sandwich-expando') || - parentClassList.contains('sandwich-expando') - - if (isOpen && !isToggleElement) { - this.setState({ isMainMenuOpen: false }) - } - }, - style: { - position: 'absolute', - right: '2px', - top: '66px', - }, - innerStyle: {}, - }, [ - h(DropdownMenuItem, { - closeMenu: () => this.setState({ isMainMenuOpen: !isOpen }), - onClick: () => { dispatch(actions.showConfigPage()) }, - }, 'Settings'), - - h(DropdownMenuItem, { - closeMenu: () => this.setState({ isMainMenuOpen: !isOpen }), - onClick: () => { dispatch(actions.lockMetamask()) }, - }, 'Log Out'), - - h(DropdownMenuItem, { - closeMenu: () => this.setState({ isMainMenuOpen: !isOpen }), - onClick: () => { dispatch(actions.showInfoPage()) }, - }, 'Info/Help'), - - h(DropdownMenuItem, { - closeMenu: () => this.setState({ isMainMenuOpen: !isOpen }), - onClick: () => { - dispatch(actions.setFeatureFlag('betaUI', true, 'BETA_UI_NOTIFICATION_MODAL')) - }, - }, 'Try New UI!'), - ]) - } - - render () { - return h('div.full-width', [ - this.renderAppBar(), - this.renderNetworkDropdown(), - this.renderDropdown(), - ]) - } -} diff --git a/old-ui/app/components/balance.js b/old-ui/app/components/balance.js deleted file mode 100644 index 8995f961f..000000000 --- a/old-ui/app/components/balance.js +++ /dev/null @@ -1,96 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const connect = require('react-redux').connect -const inherits = require('util').inherits -const formatBalance = require('../util').formatBalance -const generateBalanceObject = require('../util').generateBalanceObject -const Tooltip = require('./tooltip.js') -const FiatValue = require('./fiat-value.js') - -module.exports = connect(mapStateToProps)(EthBalanceComponent) -function mapStateToProps (state) { - return { - ticker: state.metamask.ticker, - } -} - -inherits(EthBalanceComponent, Component) -function EthBalanceComponent () { - Component.call(this) -} - -EthBalanceComponent.prototype.render = function () { - var props = this.props - let { value } = props - const { ticker } = props - var style = props.style - var needsParse = this.props.needsParse !== undefined ? this.props.needsParse : true - value = value ? formatBalance(value, 6, needsParse, ticker) : '...' - var width = props.width - - return ( - - h('.ether-balance.ether-balance-amount', { - style: style, - }, [ - h('div', { - style: { - display: 'inline', - width: width, - }, - }, this.renderBalance(value)), - ]) - - ) -} -EthBalanceComponent.prototype.renderBalance = function (value) { - var props = this.props - if (value === 'None') return value - if (value === '...') return value - var balanceObj = generateBalanceObject(value, props.shorten ? 1 : 3) - var balance - var splitBalance = value.split(' ') - var ethNumber = splitBalance[0] - var ethSuffix = splitBalance[1] - const showFiat = 'showFiat' in props ? props.showFiat : true - - if (props.shorten) { - balance = balanceObj.shortBalance - } else { - balance = balanceObj.balance - } - - var label = balanceObj.label - - return ( - h(Tooltip, { - position: 'bottom', - title: `${ethNumber} ${ethSuffix}`, - }, h('div.flex-column', [ - h('.flex-row', { - style: { - alignItems: 'flex-end', - lineHeight: '13px', - fontFamily: 'Montserrat Light', - textRendering: 'geometricPrecision', - }, - }, [ - h('div', { - style: { - width: '100%', - textAlign: 'right', - }, - }, this.props.incoming ? `+${balance}` : balance), - h('div', { - style: { - color: ' #AEAEAE', - fontSize: '12px', - marginLeft: '5px', - }, - }, label), - ]), - - showFiat ? h(FiatValue, { value: props.value }) : null, - ])) - ) -} diff --git a/old-ui/app/components/binary-renderer.js b/old-ui/app/components/binary-renderer.js deleted file mode 100644 index 0b6a1f5c2..000000000 --- a/old-ui/app/components/binary-renderer.js +++ /dev/null @@ -1,46 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits -const ethUtil = require('ethereumjs-util') -const extend = require('xtend') - -module.exports = BinaryRenderer - -inherits(BinaryRenderer, Component) -function BinaryRenderer () { - Component.call(this) -} - -BinaryRenderer.prototype.render = function () { - const props = this.props - const { value, style } = props - const text = this.hexToText(value) - - const defaultStyle = extend({ - width: '315px', - maxHeight: '210px', - resize: 'none', - border: 'none', - background: 'white', - padding: '3px', - }, style) - - return ( - h('textarea.font-small', { - readOnly: true, - style: defaultStyle, - defaultValue: text, - }) - ) -} - -BinaryRenderer.prototype.hexToText = function (hex) { - try { - const stripped = ethUtil.stripHexPrefix(hex) - const buff = Buffer.from(stripped, 'hex') - return buff.toString('utf8') - } catch (e) { - return hex - } -} - diff --git a/old-ui/app/components/bn-as-decimal-input.js b/old-ui/app/components/bn-as-decimal-input.js deleted file mode 100644 index 22e37602e..000000000 --- a/old-ui/app/components/bn-as-decimal-input.js +++ /dev/null @@ -1,181 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits -const ethUtil = require('ethereumjs-util') -const BN = ethUtil.BN -const extend = require('xtend') - -module.exports = BnAsDecimalInput - -inherits(BnAsDecimalInput, Component) -function BnAsDecimalInput () { - this.state = { invalid: null } - Component.call(this) -} - -/* Bn as Decimal Input - * - * A component for allowing easy, decimal editing - * of a passed in bn string value. - * - * On change, calls back its `onChange` function parameter - * and passes it an updated bn string. - */ - -BnAsDecimalInput.prototype.render = function () { - const props = this.props - const state = this.state - - const { value, scale, precision, onChange, min, max } = props - - const suffix = props.suffix - const style = props.style - const valueString = value.toString(10) - const newMin = min && this.downsize(min.toString(10), scale) - const newMax = max && this.downsize(max.toString(10), scale) - const newValue = this.downsize(valueString, scale) - - return ( - h('.flex-column', [ - h('.flex-row', { - style: { - alignItems: 'flex-end', - lineHeight: '13px', - fontFamily: 'Montserrat Light', - textRendering: 'geometricPrecision', - }, - }, [ - h('input.hex-input', { - type: 'number', - step: 'any', - required: true, - min: newMin, - max: newMax, - style: extend({ - display: 'block', - textAlign: 'right', - backgroundColor: 'transparent', - border: '1px solid #bdbdbd', - - }, style), - value: newValue, - onBlur: (event) => { - this.updateValidity(event) - }, - onChange: (event) => { - this.updateValidity(event) - const value = (event.target.value === '') ? '' : event.target.value - - - const scaledNumber = this.upsize(value, scale, precision) - const precisionBN = new BN(scaledNumber, 10) - onChange(precisionBN, event.target.checkValidity()) - }, - onInvalid: (event) => { - const msg = this.constructWarning() - if (msg === state.invalid) { - return - } - this.setState({ invalid: msg }) - event.preventDefault() - return false - }, - }), - h('div', { - style: { - color: ' #AEAEAE', - fontSize: '12px', - marginLeft: '5px', - marginRight: '6px', - width: '20px', - }, - }, suffix), - ]), - - state.invalid ? h('span.error', { - style: { - position: 'absolute', - right: '0px', - textAlign: 'right', - transform: 'translateY(26px)', - padding: '3px', - background: 'rgba(255,255,255,0.85)', - zIndex: '1', - textTransform: 'capitalize', - border: '2px solid #E20202', - }, - }, state.invalid) : null, - ]) - ) -} - -BnAsDecimalInput.prototype.setValid = function (message) { - this.setState({ invalid: null }) -} - -BnAsDecimalInput.prototype.updateValidity = function (event) { - const target = event.target - const value = this.props.value - const newValue = target.value - - if (value === newValue) { - return - } - - const valid = target.checkValidity() - - if (valid) { - this.setState({ invalid: null }) - } -} - -BnAsDecimalInput.prototype.constructWarning = function () { - const { name, min, max, scale, suffix } = this.props - const newMin = min && this.downsize(min.toString(10), scale) - const newMax = max && this.downsize(max.toString(10), scale) - let message = name ? name + ' ' : '' - - if (min && max) { - message += `must be greater than or equal to ${newMin} ${suffix} and less than or equal to ${newMax} ${suffix}.` - } else if (min) { - message += `must be greater than or equal to ${newMin} ${suffix}.` - } else if (max) { - message += `must be less than or equal to ${newMax} ${suffix}.` - } else { - message += 'Invalid input.' - } - - return message -} - - -BnAsDecimalInput.prototype.downsize = function (number, scale) { - // if there is no scaling, simply return the number - if (scale === 0) { - return Number(number) - } else { - // if the scale is the same as the precision, account for this edge case. - var adjustedNumber = number - while (adjustedNumber.length < scale) { - adjustedNumber = '0' + adjustedNumber - } - return Number(adjustedNumber.slice(0, -scale) + '.' + adjustedNumber.slice(-scale)) - } -} - -BnAsDecimalInput.prototype.upsize = function (number, scale, precision) { - var stringArray = number.toString().split('.') - var decimalLength = stringArray[1] ? stringArray[1].length : 0 - var newString = stringArray[0] - - // If there is scaling and decimal parts exist, integrate them in. - if ((scale !== 0) && (decimalLength !== 0)) { - newString += stringArray[1].slice(0, precision) - } - - // Add 0s to account for the upscaling. - for (var i = decimalLength; i < scale; i++) { - newString += '0' - } - return newString -} diff --git a/old-ui/app/components/buy-button-subview.js b/old-ui/app/components/buy-button-subview.js deleted file mode 100644 index 8bb73ae3e..000000000 --- a/old-ui/app/components/buy-button-subview.js +++ /dev/null @@ -1,261 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits -const connect = require('react-redux').connect -const actions = require('../../../ui/app/actions') -const CoinbaseForm = require('./coinbase-form') -const ShapeshiftForm = require('./shapeshift-form') -const Loading = require('./loading') -const AccountPanel = require('./account-panel') -const RadioList = require('./custom-radio-list') -const { getNetworkDisplayName } = require('../../../app/scripts/controllers/network/util') - -module.exports = connect(mapStateToProps)(BuyButtonSubview) - -function mapStateToProps (state) { - return { - identity: state.appState.identity, - account: state.metamask.accounts[state.appState.buyView.buyAddress], - warning: state.appState.warning, - buyView: state.appState.buyView, - network: state.metamask.network, - provider: state.metamask.provider, - context: state.appState.currentView.context, - isSubLoading: state.appState.isSubLoading, - } -} - -inherits(BuyButtonSubview, Component) -function BuyButtonSubview () { - Component.call(this) -} - -BuyButtonSubview.prototype.render = function () { - return ( - h('div', { - style: { - width: '100%', - }, - }, [ - this.headerSubview(), - this.primarySubview(), - ]) - ) -} - -BuyButtonSubview.prototype.headerSubview = function () { - const props = this.props - const isLoading = props.isSubLoading - return ( - - h('.flex-column', { - style: { - alignItems: 'center', - }, - }, [ - - // header bar (back button, label) - h('.flex-row', { - style: { - alignItems: 'center', - justifyContent: 'center', - }, - }, [ - h('i.fa.fa-arrow-left.fa-lg.cursor-pointer.color-orange', { - onClick: this.backButtonContext.bind(this), - style: { - position: 'absolute', - left: '10px', - }, - }), - h('h2.text-transform-uppercase.flex-center', { - style: { - width: '100vw', - background: 'rgb(235, 235, 235)', - color: 'rgb(174, 174, 174)', - paddingTop: '4px', - paddingBottom: '4px', - }, - }, 'Buy Eth'), - ]), - - // loading indication - h('div', { - style: { - position: 'absolute', - top: '57vh', - left: '49vw', - }, - }, [ - h(Loading, { isLoading }), - ]), - - // account panel - h('div', { - style: { - width: '80%', - }, - }, [ - h(AccountPanel, { - showFullAddress: true, - identity: props.identity, - account: props.account, - }), - ]), - - h('.flex-row', { - style: { - alignItems: 'center', - justifyContent: 'center', - }, - }, [ - h('h3.text-transform-uppercase.flex-center', { - style: { - paddingLeft: '15px', - width: '100vw', - background: 'rgb(235, 235, 235)', - color: 'rgb(174, 174, 174)', - paddingTop: '4px', - paddingBottom: '4px', - }, - }, 'Select Service'), - ]), - - ]) - - ) -} - - -BuyButtonSubview.prototype.primarySubview = function () { - const props = this.props - const network = props.network - - switch (network) { - case 'loading': - return - - case '1': - return this.mainnetSubview() - - // Ropsten, Rinkeby, Kovan - case '3': - case '4': - case '42': - const networkName = getNetworkDisplayName(network) - const label = `${networkName} Test Faucet` - return ( - h('div.flex-column', { - style: { - alignItems: 'center', - margin: '20px 50px', - }, - }, [ - h('button.text-transform-uppercase', { - onClick: () => this.props.dispatch(actions.buyEth({ network })), - style: { - marginTop: '15px', - }, - }, label), - // Kovan only: Dharma loans beta - network === '42' ? ( - h('button.text-transform-uppercase', { - onClick: () => this.navigateTo('https://borrow.dharma.io/'), - style: { - marginTop: '15px', - }, - }, 'Borrow With Dharma (Beta)') - ) : null, - ]) - ) - - default: - return ( - h('h2.error', 'Unknown network ID') - ) - - } -} - -BuyButtonSubview.prototype.mainnetSubview = function () { - const props = this.props - - return ( - - h('.flex-column', { - style: { - alignItems: 'center', - }, - }, [ - - h('.flex-row.selected-exchange', { - style: { - position: 'relative', - right: '35px', - marginTop: '20px', - marginBottom: '20px', - }, - }, [ - h(RadioList, { - defaultFocus: props.buyView.subview, - labels: [ - 'Coinbase', - 'ShapeShift', - ], - subtext: { - 'Coinbase': 'Crypto/FIAT (USA only)', - 'ShapeShift': 'Crypto', - }, - onClick: this.radioHandler.bind(this), - }), - ]), - - h('h3.text-transform-uppercase', { - style: { - paddingLeft: '15px', - fontFamily: 'Montserrat Light', - width: '100vw', - background: 'rgb(235, 235, 235)', - color: 'rgb(174, 174, 174)', - paddingTop: '4px', - paddingBottom: '4px', - }, - }, props.buyView.subview), - - this.formVersionSubview(), - ]) - - ) -} - -BuyButtonSubview.prototype.formVersionSubview = function () { - const network = this.props.network - if (network === '1') { - if (this.props.buyView.formView.coinbase) { - return h(CoinbaseForm, this.props) - } else if (this.props.buyView.formView.shapeshift) { - return h(ShapeshiftForm, this.props) - } - } -} - -BuyButtonSubview.prototype.navigateTo = function (url) { - global.platform.openWindow({ url }) -} - -BuyButtonSubview.prototype.backButtonContext = function () { - if (this.props.context === 'confTx') { - this.props.dispatch(actions.showConfTxPage(false)) - } else { - this.props.dispatch(actions.goHome()) - } -} - -BuyButtonSubview.prototype.radioHandler = function (event) { - switch (event.target.title) { - case 'Coinbase': - return this.props.dispatch(actions.coinBaseSubview()) - case 'ShapeShift': - return this.props.dispatch(actions.shapeShiftSubview(this.props.provider.type)) - } -} diff --git a/old-ui/app/components/coinbase-form.js b/old-ui/app/components/coinbase-form.js deleted file mode 100644 index 1a1b77b50..000000000 --- a/old-ui/app/components/coinbase-form.js +++ /dev/null @@ -1,63 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits -const connect = require('react-redux').connect -const actions = require('../../../ui/app/actions') - -module.exports = connect(mapStateToProps)(CoinbaseForm) - -function mapStateToProps (state) { - return { - warning: state.appState.warning, - } -} - -inherits(CoinbaseForm, Component) - -function CoinbaseForm () { - Component.call(this) -} - -CoinbaseForm.prototype.render = function () { - var props = this.props - - return h('.flex-column', { - style: { - marginTop: '35px', - padding: '25px', - width: '100%', - }, - }, [ - h('.flex-row', { - style: { - justifyContent: 'space-around', - margin: '33px', - marginTop: '0px', - }, - }, [ - h('button.btn-green', { - onClick: this.toCoinbase.bind(this), - }, 'Continue to Coinbase'), - - h('button.btn-red', { - onClick: () => props.dispatch(actions.goHome()), - }, 'Cancel'), - ]), - ]) -} - -CoinbaseForm.prototype.toCoinbase = function () { - const props = this.props - const address = props.buyView.buyAddress - props.dispatch(actions.buyEth({ network: '1', address, amount: 0 })) -} - -CoinbaseForm.prototype.renderLoading = function () { - return h('img', { - style: { - width: '27px', - marginRight: '-27px', - }, - src: 'images/loading.svg', - }) -} diff --git a/old-ui/app/components/copyButton.js b/old-ui/app/components/copyButton.js deleted file mode 100644 index a25d0719c..000000000 --- a/old-ui/app/components/copyButton.js +++ /dev/null @@ -1,59 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits -const copyToClipboard = require('copy-to-clipboard') - -const Tooltip = require('./tooltip') - -module.exports = CopyButton - -inherits(CopyButton, Component) -function CopyButton () { - Component.call(this) -} - -// As parameters, accepts: -// "value", which is the value to copy (mandatory) -// "title", which is the text to show on hover (optional, defaults to 'Copy') -CopyButton.prototype.render = function () { - const props = this.props - const state = this.state || {} - - const value = props.value - const copied = state.copied - - const message = copied ? 'Copied' : props.title || ' Copy ' - - return h('.copy-button', { - style: { - display: 'flex', - alignItems: 'center', - }, - }, [ - - h(Tooltip, { - title: message, - }, [ - h('i.fa.fa-clipboard.cursor-pointer.color-orange', { - style: { - margin: '5px', - }, - onClick: (event) => { - event.preventDefault() - event.stopPropagation() - copyToClipboard(value) - this.debounceRestore() - }, - }), - ]), - - ]) -} - -CopyButton.prototype.debounceRestore = function () { - this.setState({ copied: true }) - clearTimeout(this.timeout) - this.timeout = setTimeout(() => { - this.setState({ copied: false }) - }, 850) -} diff --git a/old-ui/app/components/copyable.js b/old-ui/app/components/copyable.js deleted file mode 100644 index a4f6f4bc6..000000000 --- a/old-ui/app/components/copyable.js +++ /dev/null @@ -1,46 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits - -const Tooltip = require('./tooltip') -const copyToClipboard = require('copy-to-clipboard') - -module.exports = Copyable - -inherits(Copyable, Component) -function Copyable () { - Component.call(this) - this.state = { - copied: false, - } -} - -Copyable.prototype.render = function () { - const props = this.props - const state = this.state - const { value, children } = props - const { copied } = state - - return h(Tooltip, { - title: copied ? 'Copied!' : 'Copy', - position: 'bottom', - }, h('span', { - style: { - cursor: 'pointer', - }, - onClick: (event) => { - event.preventDefault() - event.stopPropagation() - copyToClipboard(value) - this.debounceRestore() - }, - }, children)) -} - -Copyable.prototype.debounceRestore = function () { - this.setState({ copied: true }) - clearTimeout(this.timeout) - this.timeout = setTimeout(() => { - this.setState({ copied: false }) - }, 850) -} diff --git a/old-ui/app/components/custom-radio-list.js b/old-ui/app/components/custom-radio-list.js deleted file mode 100644 index a4c525396..000000000 --- a/old-ui/app/components/custom-radio-list.js +++ /dev/null @@ -1,60 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits - -module.exports = RadioList - -inherits(RadioList, Component) -function RadioList () { - Component.call(this) -} - -RadioList.prototype.render = function () { - const props = this.props - const activeClass = '.custom-radio-selected' - const inactiveClass = '.custom-radio-inactive' - const { - labels, - defaultFocus, - } = props - - - return ( - h('.flex-row', { - style: { - fontSize: '12px', - }, - }, [ - h('.flex-column.custom-radios', { - style: { - marginRight: '5px', - }, - }, - labels.map((lable, i) => { - let isSelcted = (this.state !== null) - isSelcted = isSelcted ? (this.state.selected === lable) : (defaultFocus === lable) - return h(isSelcted ? activeClass : inactiveClass, { - title: lable, - onClick: (event) => { - this.setState({selected: event.target.title}) - props.onClick(event) - }, - }) - }) - ), - h('.text', {}, - labels.map((lable) => { - if (props.subtext) { - return h('.flex-row', {}, [ - h('.radio-titles', lable), - h('.radio-titles-subtext', `- ${props.subtext[lable]}`), - ]) - } else { - return h('.radio-titles', lable) - } - }) - ), - ]) - ) -} - diff --git a/old-ui/app/components/dropdown.js b/old-ui/app/components/dropdown.js deleted file mode 100644 index fb606d2c5..000000000 --- a/old-ui/app/components/dropdown.js +++ /dev/null @@ -1,98 +0,0 @@ -const Component = require('react').Component -const PropTypes = require('prop-types') -const h = require('react-hyperscript') -const MenuDroppo = require('./menu-droppo') -const extend = require('xtend') - -const noop = () => {} - -class Dropdown extends Component { - render () { - const { isOpen, onClickOutside, style, innerStyle, children, useCssTransition } = this.props - - const innerStyleDefaults = extend({ - borderRadius: '4px', - padding: '8px 16px', - background: 'rgba(0, 0, 0, 0.8)', - boxShadow: 'rgba(0, 0, 0, 0.15) 0px 2px 2px 2px', - }, innerStyle) - - return h( - MenuDroppo, - { - useCssTransition, - isOpen, - zIndex: 11, - onClickOutside, - style, - innerStyle: innerStyleDefaults, - }, - [ - h( - 'style', - ` - li.dropdown-menu-item:hover { color:rgb(225, 225, 225); } - li.dropdown-menu-item { color: rgb(185, 185, 185); position: relative } - ` - ), - ...children, - ] - ) - } -} - -Dropdown.defaultProps = { - isOpen: false, - onClick: noop, - useCssTransition: false, -} - -Dropdown.propTypes = { - isOpen: PropTypes.bool.isRequired, - onClick: PropTypes.func.isRequired, - children: PropTypes.node, - style: PropTypes.object.isRequired, - onClickOutside: PropTypes.func, - innerStyle: PropTypes.object, - useCssTransition: PropTypes.bool, -} - -class DropdownMenuItem extends Component { - render () { - const { onClick, closeMenu, children, style } = this.props - - return h( - 'li.dropdown-menu-item', - { - onClick: () => { - onClick() - closeMenu() - }, - style: Object.assign({ - listStyle: 'none', - padding: '8px 0px 8px 0px', - fontSize: '18px', - fontStyle: 'normal', - fontFamily: 'Montserrat Regular', - cursor: 'pointer', - display: 'flex', - justifyContent: 'flex-start', - alignItems: 'center', - }, style), - }, - children - ) - } -} - -DropdownMenuItem.propTypes = { - closeMenu: PropTypes.func.isRequired, - onClick: PropTypes.func.isRequired, - children: PropTypes.node, - style: PropTypes.object, -} - -module.exports = { - Dropdown, - DropdownMenuItem, -} diff --git a/old-ui/app/components/editable-label.js b/old-ui/app/components/editable-label.js deleted file mode 100644 index 8a5c8954f..000000000 --- a/old-ui/app/components/editable-label.js +++ /dev/null @@ -1,57 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits -const findDOMNode = require('react-dom').findDOMNode - -module.exports = EditableLabel - -inherits(EditableLabel, Component) -function EditableLabel () { - Component.call(this) -} - -EditableLabel.prototype.render = function () { - const props = this.props - const state = this.state - - if (state && state.isEditingLabel) { - return h('div.editable-label', [ - h('input.sizing-input', { - defaultValue: props.textValue, - maxLength: '20', - onKeyPress: (event) => { - this.saveIfEnter(event) - }, - }), - h('button.editable-button', { - onClick: () => this.saveText(), - }, 'Save'), - ]) - } else { - return h('div.name-label', { - onClick: (event) => { - const nameAttribute = event.target.getAttribute('name') - // checks for class to handle smaller CTA above the account name - const classAttribute = event.target.getAttribute('class') - if (nameAttribute === 'edit' || classAttribute === 'edit-text') { - this.setState({ isEditingLabel: true }) - } - }, - }, this.props.children) - } -} - -EditableLabel.prototype.saveIfEnter = function (event) { - if (event.key === 'Enter') { - this.saveText() - } -} - -EditableLabel.prototype.saveText = function () { - // eslint-disable-next-line react/no-find-dom-node - var container = findDOMNode(this) - var text = container.querySelector('.editable-label input').value - var truncatedText = text.substring(0, 20) - this.props.saveText(truncatedText) - this.setState({ isEditingLabel: false, textLabel: truncatedText }) -} diff --git a/old-ui/app/components/ens-input.js b/old-ui/app/components/ens-input.js deleted file mode 100644 index 9c46f77d7..000000000 --- a/old-ui/app/components/ens-input.js +++ /dev/null @@ -1,176 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits -const debounce = require('debounce') -const copyToClipboard = require('copy-to-clipboard') -const ENS = require('ethjs-ens') -const networkMap = require('ethjs-ens/lib/network-map.json') -const ensRE = /.+\..+$/ -const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' -const log = require('loglevel') - - -module.exports = EnsInput - -inherits(EnsInput, Component) -function EnsInput () { - Component.call(this) -} - -EnsInput.prototype.render = function () { - const props = this.props - - function onInputChange () { - const network = this.props.network - const networkHasEnsSupport = getNetworkEnsSupport(network) - if (!networkHasEnsSupport) return - - const recipient = document.querySelector('input[name="address"]').value - if (recipient.match(ensRE) === null) { - return this.setState({ - loadingEns: false, - ensResolution: null, - ensFailure: null, - }) - } - - this.setState({ - loadingEns: true, - }) - this.checkName() - } - - return ( - h('div', { - style: { width: '100%' }, - }, [ - h('input.large-input', { - name: props.name, - placeholder: props.placeholder, - list: 'addresses', - onChange: onInputChange.bind(this), - }), - // The address book functionality. - h('datalist#addresses', - [ - // Corresponds to the addresses owned. - Object.keys(props.identities).map((key) => { - const identity = props.identities[key] - return h('option', { - value: identity.address, - label: identity.name, - key: identity.address, - }) - }), - // Corresponds to previously sent-to addresses. - props.addressBook.map((identity) => { - return h('option', { - value: identity.address, - label: identity.name, - key: identity.address, - }) - }), - ]), - this.ensIcon(), - ]) - ) -} - -EnsInput.prototype.componentDidMount = function () { - const network = this.props.network - const networkHasEnsSupport = getNetworkEnsSupport(network) - this.setState({ ensResolution: ZERO_ADDRESS }) - - if (networkHasEnsSupport) { - const provider = global.ethereumProvider - this.ens = new ENS({ provider, network }) - this.checkName = debounce(this.lookupEnsName.bind(this), 200) - } -} - -EnsInput.prototype.lookupEnsName = function () { - const recipient = document.querySelector('input[name="address"]').value - const { ensResolution } = this.state - - log.info(`ENS attempting to resolve name: ${recipient}`) - this.ens.lookup(recipient.trim()) - .then((address) => { - if (address === ZERO_ADDRESS) throw new Error('No address has been set for this name.') - if (address !== ensResolution) { - this.setState({ - loadingEns: false, - ensResolution: address, - nickname: recipient.trim(), - hoverText: address + '\nClick to Copy', - ensFailure: false, - }) - } - }) - .catch((reason) => { - log.error(reason) - return this.setState({ - loadingEns: false, - ensResolution: ZERO_ADDRESS, - ensFailure: true, - hoverText: reason.message, - }) - }) -} - -EnsInput.prototype.componentDidUpdate = function (prevProps, prevState) { - const state = this.state || {} - const ensResolution = state.ensResolution - // If an address is sent without a nickname, meaning not from ENS or from - // the user's own accounts, a default of a one-space string is used. - const nickname = state.nickname || ' ' - if (prevState && ensResolution && this.props.onChange && - ensResolution !== prevState.ensResolution) { - this.props.onChange(ensResolution, nickname) - } -} - -EnsInput.prototype.ensIcon = function (recipient) { - const { hoverText } = this.state || {} - return h('span', { - title: hoverText, - style: { - position: 'absolute', - padding: '9px', - transform: 'translatex(-40px)', - }, - }, this.ensIconContents(recipient)) -} - -EnsInput.prototype.ensIconContents = function (recipient) { - const { loadingEns, ensFailure, ensResolution } = this.state || { ensResolution: ZERO_ADDRESS} - - if (loadingEns) { - return h('img', { - src: 'images/loading.svg', - style: { - width: '30px', - height: '30px', - transform: 'translateY(-6px)', - }, - }) - } - - if (ensFailure) { - return h('i.fa.fa-warning.fa-lg.warning') - } - - if (ensResolution && (ensResolution !== ZERO_ADDRESS)) { - return h('i.fa.fa-check-circle.fa-lg.cursor-pointer', { - style: { color: 'green' }, - onClick: (event) => { - event.preventDefault() - event.stopPropagation() - copyToClipboard(ensResolution) - }, - }) - } -} - -function getNetworkEnsSupport (network) { - return Boolean(networkMap[network]) -} diff --git a/old-ui/app/components/eth-balance.js b/old-ui/app/components/eth-balance.js deleted file mode 100644 index 4458e6a9a..000000000 --- a/old-ui/app/components/eth-balance.js +++ /dev/null @@ -1,95 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const connect = require('react-redux').connect -const inherits = require('util').inherits -const formatBalance = require('../util').formatBalance -const generateBalanceObject = require('../util').generateBalanceObject -const Tooltip = require('./tooltip.js') -const FiatValue = require('./fiat-value.js') - -module.exports = connect(mapStateToProps)(EthBalanceComponent) -function mapStateToProps (state) { - return { - ticker: state.metamask.ticker, - } -} - -inherits(EthBalanceComponent, Component) -function EthBalanceComponent () { - Component.call(this) -} - -EthBalanceComponent.prototype.render = function () { - var props = this.props - let { value } = props - const { ticker, style, width } = props - var needsParse = this.props.needsParse !== undefined ? this.props.needsParse : true - value = value ? formatBalance(value, 6, needsParse, ticker) : '...' - - return ( - - h('.ether-balance.ether-balance-amount', { - style, - }, [ - h('div', { - style: { - display: 'inline', - width, - }, - }, this.renderBalance(value)), - ]) - - ) -} -EthBalanceComponent.prototype.renderBalance = function (value) { - var props = this.props - const { conversionRate, shorten, incoming, currentCurrency } = props - if (value === 'None') return value - if (value === '...') return value - var balanceObj = generateBalanceObject(value, shorten ? 1 : 3) - var balance - var splitBalance = value.split(' ') - var ethNumber = splitBalance[0] - var ethSuffix = splitBalance[1] - const showFiat = 'showFiat' in props ? props.showFiat : true - - if (shorten) { - balance = balanceObj.shortBalance - } else { - balance = balanceObj.balance - } - - var label = balanceObj.label - - return ( - h(Tooltip, { - position: 'bottom', - title: `${ethNumber} ${ethSuffix}`, - }, h('div.flex-column', [ - h('.flex-row', { - style: { - alignItems: 'flex-end', - lineHeight: '13px', - fontFamily: 'Montserrat Light', - textRendering: 'geometricPrecision', - }, - }, [ - h('div', { - style: { - width: '100%', - textAlign: 'right', - }, - }, incoming ? `+${balance}` : balance), - h('div', { - style: { - color: ' #AEAEAE', - fontSize: '12px', - marginLeft: '5px', - }, - }, label), - ]), - - showFiat ? h(FiatValue, { value: props.value, conversionRate, currentCurrency }) : null, - ])) - ) -} diff --git a/old-ui/app/components/fiat-value.js b/old-ui/app/components/fiat-value.js deleted file mode 100644 index d69f41d11..000000000 --- a/old-ui/app/components/fiat-value.js +++ /dev/null @@ -1,64 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits -const formatBalance = require('../util').formatBalance - -module.exports = FiatValue - -inherits(FiatValue, Component) -function FiatValue () { - Component.call(this) -} - -FiatValue.prototype.render = function () { - const props = this.props - const { conversionRate, currentCurrency } = props - const renderedCurrency = currentCurrency || '' - - const value = formatBalance(props.value, 6) - - if (value === 'None') return value - var fiatDisplayNumber, fiatTooltipNumber - var splitBalance = value.split(' ') - - if (conversionRate !== 0) { - fiatTooltipNumber = Number(splitBalance[0]) * conversionRate - fiatDisplayNumber = fiatTooltipNumber.toFixed(2) - } else { - fiatDisplayNumber = 'N/A' - fiatTooltipNumber = 'Unknown' - } - - return fiatDisplay(fiatDisplayNumber, renderedCurrency.toUpperCase()) -} - -function fiatDisplay (fiatDisplayNumber, fiatSuffix) { - if (fiatDisplayNumber !== 'N/A') { - return h('.flex-row', { - style: { - alignItems: 'flex-end', - lineHeight: '13px', - fontFamily: 'Montserrat Light', - textRendering: 'geometricPrecision', - }, - }, [ - h('div', { - style: { - width: '100%', - textAlign: 'right', - fontSize: '12px', - color: '#333333', - }, - }, fiatDisplayNumber), - h('div', { - style: { - color: '#AEAEAE', - marginLeft: '5px', - fontSize: '12px', - }, - }, fiatSuffix), - ]) - } else { - return h('div') - } -} diff --git a/old-ui/app/components/hex-as-decimal-input.js b/old-ui/app/components/hex-as-decimal-input.js deleted file mode 100644 index 4a71e9585..000000000 --- a/old-ui/app/components/hex-as-decimal-input.js +++ /dev/null @@ -1,154 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits -const ethUtil = require('ethereumjs-util') -const BN = ethUtil.BN -const extend = require('xtend') - -module.exports = HexAsDecimalInput - -inherits(HexAsDecimalInput, Component) -function HexAsDecimalInput () { - this.state = { invalid: null } - Component.call(this) -} - -/* Hex as Decimal Input - * - * A component for allowing easy, decimal editing - * of a passed in hex string value. - * - * On change, calls back its `onChange` function parameter - * and passes it an updated hex string. - */ - -HexAsDecimalInput.prototype.render = function () { - const props = this.props - const state = this.state - - const { value, onChange, min, max } = props - - const toEth = props.toEth - const suffix = props.suffix - const decimalValue = decimalize(value, toEth) - const style = props.style - - return ( - h('.flex-column', [ - h('.flex-row', { - style: { - alignItems: 'flex-end', - lineHeight: '13px', - fontFamily: 'Montserrat Light', - textRendering: 'geometricPrecision', - }, - }, [ - h('input.hex-input', { - type: 'number', - required: true, - min: min, - max: max, - style: extend({ - display: 'block', - textAlign: 'right', - backgroundColor: 'transparent', - border: '1px solid #bdbdbd', - - }, style), - value: parseInt(decimalValue), - onBlur: (event) => { - this.updateValidity(event) - }, - onChange: (event) => { - this.updateValidity(event) - const hexString = (event.target.value === '') ? '' : hexify(event.target.value) - onChange(hexString) - }, - onInvalid: (event) => { - const msg = this.constructWarning() - if (msg === state.invalid) { - return - } - this.setState({ invalid: msg }) - event.preventDefault() - return false - }, - }), - h('div', { - style: { - color: ' #AEAEAE', - fontSize: '12px', - marginLeft: '5px', - marginRight: '6px', - width: '20px', - }, - }, suffix), - ]), - - state.invalid ? h('span.error', { - style: { - position: 'absolute', - right: '0px', - textAlign: 'right', - transform: 'translateY(26px)', - padding: '3px', - background: 'rgba(255,255,255,0.85)', - zIndex: '1', - textTransform: 'capitalize', - border: '2px solid #E20202', - }, - }, state.invalid) : null, - ]) - ) -} - -HexAsDecimalInput.prototype.setValid = function (message) { - this.setState({ invalid: null }) -} - -HexAsDecimalInput.prototype.updateValidity = function (event) { - const target = event.target - const value = this.props.value - const newValue = target.value - - if (value === newValue) { - return - } - - const valid = target.checkValidity() - if (valid) { - this.setState({ invalid: null }) - } -} - -HexAsDecimalInput.prototype.constructWarning = function () { - const { name, min, max } = this.props - let message = name ? name + ' ' : '' - - if (min && max) { - message += `must be greater than or equal to ${min} and less than or equal to ${max}.` - } else if (min) { - message += `must be greater than or equal to ${min}.` - } else if (max) { - message += `must be less than or equal to ${max}.` - } else { - message += 'Invalid input.' - } - - return message -} - -function hexify (decimalString) { - const hexBN = new BN(parseInt(decimalString), 10) - return '0x' + hexBN.toString('hex') -} - -function decimalize (input, toEth) { - if (input === '') { - return '' - } else { - const strippedInput = ethUtil.stripHexPrefix(input) - const inputBN = new BN(strippedInput, 'hex') - return inputBN.toString(10) - } -} diff --git a/old-ui/app/components/identicon.js b/old-ui/app/components/identicon.js deleted file mode 100644 index bb476ca7b..000000000 --- a/old-ui/app/components/identicon.js +++ /dev/null @@ -1,74 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits -const isNode = require('detect-node') -const findDOMNode = require('react-dom').findDOMNode -const jazzicon = require('jazzicon') -const iconFactoryGen = require('../../lib/icon-factory') -const iconFactory = iconFactoryGen(jazzicon) - -module.exports = IdenticonComponent - -inherits(IdenticonComponent, Component) -function IdenticonComponent () { - Component.call(this) - - this.defaultDiameter = 46 -} - -IdenticonComponent.prototype.render = function () { - var props = this.props - var diameter = props.diameter || this.defaultDiameter - return ( - h('div', { - key: 'identicon-' + this.props.address, - style: { - display: 'flex', - alignItems: 'center', - justifyContent: 'center', - height: diameter, - width: diameter, - borderRadius: diameter / 2, - overflow: 'hidden', - }, - }) - ) -} - -IdenticonComponent.prototype.componentDidMount = function () { - var props = this.props - const { address } = props - - if (!address) return - - // eslint-disable-next-line react/no-find-dom-node - var container = findDOMNode(this) - - var diameter = props.diameter || this.defaultDiameter - if (!isNode) { - var img = iconFactory.iconForAddress(address, diameter) - container.appendChild(img) - } -} - -IdenticonComponent.prototype.componentDidUpdate = function () { - var props = this.props - const { address } = props - - if (!address) return - - // eslint-disable-next-line react/no-find-dom-node - var container = findDOMNode(this) - - var children = container.children - for (var i = 0; i < children.length; i++) { - container.removeChild(children[i]) - } - - var diameter = props.diameter || this.defaultDiameter - if (!isNode) { - var img = iconFactory.iconForAddress(address, diameter) - container.appendChild(img) - } -} - diff --git a/old-ui/app/components/loading.js b/old-ui/app/components/loading.js deleted file mode 100644 index 2a29361f9..000000000 --- a/old-ui/app/components/loading.js +++ /dev/null @@ -1,55 +0,0 @@ -const inherits = require('util').inherits -const Component = require('react').Component -const h = require('react-hyperscript') - - -inherits(LoadingIndicator, Component) -module.exports = LoadingIndicator - -function LoadingIndicator () { - Component.call(this) -} - -LoadingIndicator.prototype.render = function () { - const { isLoading, loadingMessage, canBypass, bypass } = this.props - - return ( - isLoading ? h('.full-flex-height', { - style: { - left: '0px', - zIndex: 10, - position: 'absolute', - flexDirection: 'column', - display: 'flex', - justifyContent: 'center', - alignItems: 'center', - height: '100%', - width: '100%', - background: 'rgba(255, 255, 255, 0.8)', - }, - }, [ - canBypass ? h('i.fa.fa-close.cursor-pointer.close-loading', { - style: { - position: 'absolute', - top: '1px', - right: '15px', - color: '#AEAEAE', - }, - onClick: bypass, - }) : null, - - h('img', { - src: 'images/loading.svg', - }), - - h('br'), - - showMessageIfAny(loadingMessage), - ]) : null - ) -} - -function showMessageIfAny (loadingMessage) { - if (!loadingMessage) return null - return h('span', loadingMessage) -} diff --git a/old-ui/app/components/mascot.js b/old-ui/app/components/mascot.js deleted file mode 100644 index 973ec2cad..000000000 --- a/old-ui/app/components/mascot.js +++ /dev/null @@ -1,59 +0,0 @@ -const inherits = require('util').inherits -const Component = require('react').Component -const h = require('react-hyperscript') -const metamaskLogo = require('metamask-logo') -const debounce = require('debounce') - -module.exports = Mascot - -inherits(Mascot, Component) -function Mascot () { - Component.call(this) - this.logo = metamaskLogo({ - followMouse: true, - pxNotRatio: true, - width: 200, - height: 200, - }) - - this.refollowMouse = debounce(this.logo.setFollowMouse.bind(this.logo, true), 1000) - this.unfollowMouse = this.logo.setFollowMouse.bind(this.logo, false) -} - -Mascot.prototype.render = function () { - // this is a bit hacky - // the event emitter is on `this.props` - // and we dont get that until render - this.handleAnimationEvents() - - return h('#metamask-mascot-container', { - style: { zIndex: 0 }, - }) -} - -Mascot.prototype.componentDidMount = function () { - var targetDivId = 'metamask-mascot-container' - var container = document.getElementById(targetDivId) - container.appendChild(this.logo.container) -} - -Mascot.prototype.componentWillUnmount = function () { - this.animations = this.props.animationEventEmitter - this.animations.removeAllListeners() - this.logo.container.remove() - this.logo.stopAnimation() -} - -Mascot.prototype.handleAnimationEvents = function () { - // only setup listeners once - if (this.animations) return - this.animations = this.props.animationEventEmitter - this.animations.on('point', this.lookAt.bind(this)) - this.animations.on('setFollowMouse', this.logo.setFollowMouse.bind(this.logo)) -} - -Mascot.prototype.lookAt = function (target) { - this.unfollowMouse() - this.logo.lookAt(target) - this.refollowMouse() -} diff --git a/old-ui/app/components/menu-droppo.js b/old-ui/app/components/menu-droppo.js deleted file mode 100644 index e6276f3b1..000000000 --- a/old-ui/app/components/menu-droppo.js +++ /dev/null @@ -1,132 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits -const findDOMNode = require('react-dom').findDOMNode -const ReactCSSTransitionGroup = require('react-addons-css-transition-group') - -module.exports = MenuDroppoComponent - - -inherits(MenuDroppoComponent, Component) -function MenuDroppoComponent () { - Component.call(this) -} - -MenuDroppoComponent.prototype.render = function () { - const speed = this.props.speed || '300ms' - const useCssTransition = this.props.useCssTransition - const zIndex = ('zIndex' in this.props) ? this.props.zIndex : 0 - - this.manageListeners() - - const style = this.props.style || {} - if (!('position' in style)) { - style.position = 'fixed' - } - style.zIndex = zIndex - - return ( - h('.menu-droppo-container', { - style, - }, [ - h('style', ` - .menu-droppo-enter { - transition: transform ${speed} ease-in-out; - transform: translateY(-200%); - } - - .menu-droppo-enter.menu-droppo-enter-active { - transition: transform ${speed} ease-in-out; - transform: translateY(0%); - } - - .menu-droppo-leave { - transition: transform ${speed} ease-in-out; - transform: translateY(0%); - } - - .menu-droppo-leave.menu-droppo-leave-active { - transition: transform ${speed} ease-in-out; - transform: translateY(-200%); - } - `), - - useCssTransition - ? h(ReactCSSTransitionGroup, { - className: 'css-transition-group', - transitionName: 'menu-droppo', - transitionEnterTimeout: parseInt(speed), - transitionLeaveTimeout: parseInt(speed), - }, this.renderPrimary()) - : this.renderPrimary(), - ]) - ) -} - -MenuDroppoComponent.prototype.renderPrimary = function () { - const isOpen = this.props.isOpen - if (!isOpen) { - return null - } - - const innerStyle = this.props.innerStyle || {} - - return ( - h('.menu-droppo', { - key: 'menu-droppo-drawer', - style: innerStyle, - }, - [ this.props.children ]) - ) -} - -MenuDroppoComponent.prototype.manageListeners = function () { - const isOpen = this.props.isOpen - const onClickOutside = this.props.onClickOutside - - if (isOpen) { - this.outsideClickHandler = onClickOutside - } else if (isOpen) { - this.outsideClickHandler = null - } -} - -MenuDroppoComponent.prototype.componentDidMount = function () { - if (this && document.body) { - this.globalClickHandler = this.globalClickOccurred.bind(this) - document.body.addEventListener('click', this.globalClickHandler) - // eslint-disable-next-line react/no-find-dom-node - var container = findDOMNode(this) - this.container = container - } -} - -MenuDroppoComponent.prototype.componentWillUnmount = function () { - if (this && document.body) { - document.body.removeEventListener('click', this.globalClickHandler) - } -} - -MenuDroppoComponent.prototype.globalClickOccurred = function (event) { - const target = event.target - // eslint-disable-next-line react/no-find-dom-node - const container = findDOMNode(this) - - if (target !== container && - !isDescendant(this.container, event.target) && - this.outsideClickHandler) { - this.outsideClickHandler(event) - } -} - -function isDescendant (parent, child) { - var node = child.parentNode - while (node !== null) { - if (node === parent) { - return true - } - node = node.parentNode - } - - return false -} diff --git a/old-ui/app/components/mini-account-panel.js b/old-ui/app/components/mini-account-panel.js deleted file mode 100644 index c09cf5b7a..000000000 --- a/old-ui/app/components/mini-account-panel.js +++ /dev/null @@ -1,74 +0,0 @@ -const inherits = require('util').inherits -const Component = require('react').Component -const h = require('react-hyperscript') -const Identicon = require('./identicon') - -module.exports = AccountPanel - - -inherits(AccountPanel, Component) -function AccountPanel () { - Component.call(this) -} - -AccountPanel.prototype.render = function () { - var props = this.props - var picOrder = props.picOrder || 'left' - const { imageSeed } = props - - return ( - - h('.identity-panel.flex-row.flex-left', { - style: { - cursor: props.onClick ? 'pointer' : undefined, - }, - onClick: props.onClick, - }, [ - - this.genIcon(imageSeed, picOrder), - - h('div.flex-column.flex-justify-center', { - style: { - lineHeight: '15px', - order: 2, - display: 'flex', - alignItems: picOrder === 'left' ? 'flex-begin' : 'flex-end', - }, - }, this.props.children), - ]) - ) -} - -AccountPanel.prototype.genIcon = function (seed, picOrder) { - const props = this.props - - // When there is no seed value, this is a contract creation. - // We then show the contract icon. - if (!seed) { - return h('.identicon-wrapper.flex-column.select-none', { - style: { - order: picOrder === 'left' ? 1 : 3, - }, - }, [ - h('i.fa.fa-file-text-o.fa-lg', { - style: { - fontSize: '42px', - transform: 'translate(0px, -16px)', - }, - }), - ]) - } - - // If there was a seed, we return an identicon for that address. - return h('.identicon-wrapper.flex-column.select-none', { - style: { - order: picOrder === 'left' ? 1 : 3, - }, - }, [ - h(Identicon, { - address: seed, - imageify: props.imageifyIdenticons, - }), - ]) -} - diff --git a/old-ui/app/components/network.js b/old-ui/app/components/network.js deleted file mode 100644 index 59596dabd..000000000 --- a/old-ui/app/components/network.js +++ /dev/null @@ -1,131 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits - -module.exports = Network - -inherits(Network, Component) - -function Network () { - Component.call(this) -} - -Network.prototype.render = function () { - const props = this.props - const networkNumber = props.network - let providerName - try { - providerName = props.provider.type - } catch (e) { - providerName = null - } - let iconName, hoverText - - if (networkNumber === 'loading') { - return h('span.pointer', { - className: props.onClick && 'pointer', - style: { - display: 'flex', - alignItems: 'center', - flexDirection: 'row', - }, - onClick: (event) => props.onClick && props.onClick(event), - }, [ - props.onClick && h('img', { - title: 'Attempting to connect to blockchain.', - style: { - width: '27px', - }, - src: 'images/loading.svg', - }), - h('i.fa.fa-caret-down'), - ]) - } else if (providerName === 'mainnet') { - hoverText = 'Main Ethereum Network' - iconName = 'ethereum-network' - } else if (providerName === 'ropsten') { - hoverText = 'Ropsten Test Network' - iconName = 'ropsten-test-network' - } else if (parseInt(networkNumber) === 3) { - hoverText = 'Ropsten Test Network' - iconName = 'ropsten-test-network' - } else if (providerName === 'kovan') { - hoverText = 'Kovan Test Network' - iconName = 'kovan-test-network' - } else if (providerName === 'rinkeby') { - hoverText = 'Rinkeby Test Network' - iconName = 'rinkeby-test-network' - } else { - hoverText = 'Unknown Private Network' - iconName = 'unknown-private-network' - } - - return ( - h('#network_component', { - className: props.onClick && 'pointer', - title: hoverText, - onClick: (event) => props.onClick && props.onClick(event), - }, [ - (function () { - switch (iconName) { - case 'ethereum-network': - return h('.network-indicator', [ - h('.menu-icon.diamond'), - h('.network-name', { - style: { - color: '#039396', - }}, - 'Main Network'), - props.onClick && h('i.fa.fa-caret-down.fa-lg'), - ]) - case 'ropsten-test-network': - return h('.network-indicator', [ - h('.menu-icon.red-dot'), - h('.network-name', { - style: { - color: '#ff6666', - }}, - 'Ropsten Test Net'), - props.onClick && h('i.fa.fa-caret-down.fa-lg'), - ]) - case 'kovan-test-network': - return h('.network-indicator', [ - h('.menu-icon.hollow-diamond'), - h('.network-name', { - style: { - color: '#690496', - }}, - 'Kovan Test Net'), - props.onClick && h('i.fa.fa-caret-down.fa-lg'), - ]) - case 'rinkeby-test-network': - return h('.network-indicator', [ - h('.menu-icon.golden-square'), - h('.network-name', { - style: { - color: '#e7a218', - }}, - 'Rinkeby Test Net'), - props.onClick && h('i.fa.fa-caret-down.fa-lg'), - ]) - default: - return h('.network-indicator', [ - h('i.fa.fa-question-circle.fa-lg', { - style: { - margin: '10px', - color: 'rgb(125, 128, 130)', - }, - }), - - h('.network-name', { - style: { - color: '#AEAEAE', - }}, - 'Private Network'), - props.onClick && h('i.fa.fa-caret-down.fa-lg'), - ]) - } - })(), - ]) - ) -} diff --git a/old-ui/app/components/notice.js b/old-ui/app/components/notice.js deleted file mode 100644 index 1ec254555..000000000 --- a/old-ui/app/components/notice.js +++ /dev/null @@ -1,145 +0,0 @@ -const inherits = require('util').inherits -const Component = require('react').Component -const h = require('react-hyperscript') -const ReactMarkdown = require('react-markdown') -const linker = require('extension-link-enabler') -const findDOMNode = require('react-dom').findDOMNode - -module.exports = Notice - -inherits(Notice, Component) -function Notice () { - Component.call(this) -} - -Notice.prototype.render = function () { - const { notice, onConfirm } = this.props - const { title, date, body } = notice - const state = this.state || { disclaimerDisabled: true } - const disabled = state.disclaimerDisabled - - return ( - h('.flex-column.flex-center.flex-grow', { - style: { - width: '100%', - }, - }, [ - h('h3.flex-center.text-transform-uppercase.terms-header', { - style: { - background: '#EBEBEB', - color: '#AEAEAE', - width: '100%', - fontSize: '20px', - textAlign: 'center', - padding: 6, - }, - }, [ - title, - ]), - - h('h5.flex-center.text-transform-uppercase.terms-header', { - style: { - background: '#EBEBEB', - color: '#AEAEAE', - marginBottom: 24, - width: '100%', - fontSize: '20px', - textAlign: 'center', - padding: 6, - }, - }, [ - date, - ]), - - h('style', ` - - .markdown { - overflow-x: hidden; - } - - .markdown h1, .markdown h2, .markdown h3 { - margin: 10px 0; - font-weight: bold; - } - - .markdown strong { - font-weight: bold; - } - .markdown em { - font-style: italic; - } - - .markdown p { - margin: 10px 0; - } - - .markdown a { - color: #df6b0e; - } - - `), - - h('div.markdown', { - onScroll: (e) => { - var object = e.currentTarget - if (object.offsetHeight + object.scrollTop + 100 >= object.scrollHeight) { - this.setState({disclaimerDisabled: false}) - } - }, - style: { - background: 'rgb(235, 235, 235)', - height: '310px', - padding: '6px', - width: '90%', - overflowY: 'scroll', - scroll: 'auto', - }, - }, [ - h(ReactMarkdown, { - className: 'notice-box', - source: body, - skipHtml: true, - }), - ]), - - h('button', { - disabled, - onClick: () => { - this.setState({disclaimerDisabled: true}) - onConfirm() - }, - style: { - marginTop: '18px', - }, - }, 'Accept'), - ]) - ) -} - -Notice.prototype.setInitialDisclaimerState = function () { - if (document.getElementsByClassName('notice-box')[0].clientHeight < 310) { - this.setState({disclaimerDisabled: false}) - } -} - -Notice.prototype.componentDidMount = function () { - // eslint-disable-next-line react/no-find-dom-node - var node = findDOMNode(this) - linker.setupListener(node) - this.setInitialDisclaimerState() -} - -Notice.prototype.componentDidUpdate = function (prevProps) { - const { notice: { id } = {} } = this.props - const { notice: { id: prevNoticeId } = {} } = prevProps - - if (id !== prevNoticeId) { - this.setInitialDisclaimerState() - } -} - -Notice.prototype.componentWillUnmount = function () { - // eslint-disable-next-line react/no-find-dom-node - var node = findDOMNode(this) - linker.teardownListener(node) -} diff --git a/old-ui/app/components/pending-msg-details.js b/old-ui/app/components/pending-msg-details.js deleted file mode 100644 index 718a22de0..000000000 --- a/old-ui/app/components/pending-msg-details.js +++ /dev/null @@ -1,50 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits - -const AccountPanel = require('./account-panel') - -module.exports = PendingMsgDetails - -inherits(PendingMsgDetails, Component) -function PendingMsgDetails () { - Component.call(this) -} - -PendingMsgDetails.prototype.render = function () { - var state = this.props - var msgData = state.txData - - var msgParams = msgData.msgParams || {} - var address = msgParams.from || state.selectedAddress - var identity = state.identities[address] || { address: address } - var account = state.accounts[address] || { address: address } - - return ( - h('div', { - key: msgData.id, - style: { - margin: '10px 20px', - }, - }, [ - - // account that will sign - h(AccountPanel, { - showFullAddress: true, - identity: identity, - account: account, - imageifyIdenticons: state.imageifyIdenticons, - }), - - // message data - h('.tx-data.flex-column.flex-justify-center.flex-grow.select-none', [ - h('.flex-column.flex-space-between', [ - h('label.font-small', 'MESSAGE'), - h('span.font-small', msgParams.data), - ]), - ]), - - ]) - ) -} - diff --git a/old-ui/app/components/pending-msg.js b/old-ui/app/components/pending-msg.js deleted file mode 100644 index 834719c53..000000000 --- a/old-ui/app/components/pending-msg.js +++ /dev/null @@ -1,70 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits -const PendingTxDetails = require('./pending-msg-details') - -module.exports = PendingMsg - -inherits(PendingMsg, Component) -function PendingMsg () { - Component.call(this) -} - -PendingMsg.prototype.render = function () { - var state = this.props - var msgData = state.txData - - return ( - - h('div', { - key: msgData.id, - style: { - maxWidth: '350px', - }, - }, [ - - // header - h('h3', { - style: { - fontWeight: 'bold', - textAlign: 'center', - }, - }, 'Sign Message'), - - h('.error', { - style: { - margin: '10px', - }, - }, [ - `Signing this message can have - dangerous side effects. Only sign messages from - sites you fully trust with your entire account. - This dangerous method will be removed in a future version. `, - h('a', { - href: 'https://medium.com/metamask/the-new-secure-way-to-sign-data-in-your-browser-6af9dd2a1527', - style: { color: 'rgb(247, 134, 28)' }, - onClick: (event) => { - event.preventDefault() - const url = 'https://medium.com/metamask/the-new-secure-way-to-sign-data-in-your-browser-6af9dd2a1527' - global.platform.openWindow({ url }) - }, - }, 'Read more here.'), - ]), - - // message details - h(PendingTxDetails, state), - - // sign + cancel - h('.flex-row.flex-space-around', [ - h('button', { - onClick: state.cancelMessage, - }, 'Cancel'), - h('button', { - onClick: state.signMessage, - }, 'Sign'), - ]), - ]) - - ) -} - diff --git a/old-ui/app/components/pending-personal-msg-details.js b/old-ui/app/components/pending-personal-msg-details.js deleted file mode 100644 index 1050513f2..000000000 --- a/old-ui/app/components/pending-personal-msg-details.js +++ /dev/null @@ -1,60 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits - -const AccountPanel = require('./account-panel') -const BinaryRenderer = require('./binary-renderer') - -module.exports = PendingMsgDetails - -inherits(PendingMsgDetails, Component) -function PendingMsgDetails () { - Component.call(this) -} - -PendingMsgDetails.prototype.render = function () { - var state = this.props - var msgData = state.txData - - var msgParams = msgData.msgParams || {} - var address = msgParams.from || state.selectedAddress - var identity = state.identities[address] || { address: address } - var account = state.accounts[address] || { address: address } - - var { data } = msgParams - - return ( - h('div', { - key: msgData.id, - style: { - margin: '10px 20px', - }, - }, [ - - // account that will sign - h(AccountPanel, { - showFullAddress: true, - identity: identity, - account: account, - imageifyIdenticons: state.imageifyIdenticons, - }), - - // message data - h('div', { - style: { - height: '260px', - }, - }, [ - h('label.font-small', { style: { display: 'block' } }, 'MESSAGE'), - h(BinaryRenderer, { - value: data, - style: { - height: '215px', - }, - }), - ]), - - ]) - ) -} - diff --git a/old-ui/app/components/pending-personal-msg.js b/old-ui/app/components/pending-personal-msg.js deleted file mode 100644 index 4542adb28..000000000 --- a/old-ui/app/components/pending-personal-msg.js +++ /dev/null @@ -1,47 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits -const PendingTxDetails = require('./pending-personal-msg-details') - -module.exports = PendingMsg - -inherits(PendingMsg, Component) -function PendingMsg () { - Component.call(this) -} - -PendingMsg.prototype.render = function () { - var state = this.props - var msgData = state.txData - - return ( - - h('div', { - key: msgData.id, - }, [ - - // header - h('h3', { - style: { - fontWeight: 'bold', - textAlign: 'center', - }, - }, 'Sign Message'), - - // message details - h(PendingTxDetails, state), - - // sign + cancel - h('.flex-row.flex-space-around', [ - h('button', { - onClick: state.cancelPersonalMessage, - }, 'Cancel'), - h('button', { - onClick: state.signPersonalMessage, - }, 'Sign'), - ]), - ]) - - ) -} - diff --git a/old-ui/app/components/pending-tx.js b/old-ui/app/components/pending-tx.js deleted file mode 100644 index 35e81210e..000000000 --- a/old-ui/app/components/pending-tx.js +++ /dev/null @@ -1,519 +0,0 @@ -const Component = require('react').Component -const connect = require('react-redux').connect -const h = require('react-hyperscript') -const inherits = require('util').inherits -const actions = require('../../../ui/app/actions') -const clone = require('clone') -const log = require('loglevel') - -const ethUtil = require('ethereumjs-util') -const BN = ethUtil.BN -const hexToBn = require('../../../app/scripts/lib/hex-to-bn') -const util = require('../util') -const MiniAccountPanel = require('./mini-account-panel') -const Copyable = require('./copyable') -const EthBalance = require('./eth-balance') -const addressSummary = util.addressSummary -const nameForAddress = require('../../lib/contract-namer') -const BNInput = require('./bn-as-decimal-input') - -const MIN_GAS_PRICE_BN = new BN('0') -const MIN_GAS_LIMIT_BN = new BN('21000') - -module.exports = connect()(PendingTx) - - -inherits(PendingTx, Component) -function PendingTx () { - Component.call(this) - this.state = { - valid: true, - txData: null, - submitting: false, - } -} - -PendingTx.prototype.render = function () { - const props = this.props - const { currentCurrency, blockGasLimit } = props - - const conversionRate = props.conversionRate - const txMeta = this.gatherTxMeta() - const txParams = txMeta.txParams || {} - - // Allow retry txs - const { lastGasPrice } = txMeta - let forceGasMin - if (lastGasPrice) { - const stripped = ethUtil.stripHexPrefix(lastGasPrice) - const lastGas = new BN(stripped, 16) - const priceBump = lastGas.divn('10') - forceGasMin = lastGas.add(priceBump) - } - - // Account Details - const address = txParams.from || props.selectedAddress - const identity = props.identities[address] || { address: address } - const account = props.accounts[address] - const balance = account ? account.balance : '0x0' - - // recipient check - const isValidAddress = !txParams.to || util.isValidAddress(txParams.to) - - // Gas - const gas = txParams.gas - const gasBn = hexToBn(gas) - // default to 8MM gas limit - const gasLimit = new BN(parseInt(blockGasLimit) || '8000000') - const safeGasLimitBN = this.bnMultiplyByFraction(gasLimit, 99, 100) - const saferGasLimitBN = this.bnMultiplyByFraction(gasLimit, 98, 100) - const safeGasLimit = safeGasLimitBN.toString(10) - - // Gas Price - const gasPrice = txParams.gasPrice || MIN_GAS_PRICE_BN.toString(16) - const gasPriceBn = hexToBn(gasPrice) - - const txFeeBn = gasBn.mul(gasPriceBn) - const valueBn = hexToBn(txParams.value) - const maxCost = txFeeBn.add(valueBn) - - const dataLength = txParams.data ? (txParams.data.length - 2) / 2 : 0 - - const balanceBn = hexToBn(balance) - const insufficientBalance = balanceBn.lt(maxCost) - const dangerousGasLimit = gasBn.gte(saferGasLimitBN) - const gasLimitSpecified = txMeta.gasLimitSpecified - const buyDisabled = insufficientBalance || !this.state.valid || !isValidAddress || this.state.submitting - const showRejectAll = props.unconfTxListLength > 1 - - this.inputs = [] - - return ( - - h('div', { - key: txMeta.id, - }, [ - - h('form#pending-tx-form', { - onSubmit: this.onSubmit.bind(this), - - }, [ - - // tx info - h('div', [ - - h('.flex-row.flex-center', { - style: { - maxWidth: '100%', - }, - }, [ - - h(MiniAccountPanel, { - imageSeed: address, - picOrder: 'right', - }, [ - h('span.font-small', { - style: { - fontFamily: 'Montserrat Bold, Montserrat, sans-serif', - }, - }, identity.name), - - h(Copyable, { - value: ethUtil.toChecksumAddress(address), - }, [ - h('span.font-small', { - style: { - fontFamily: 'Montserrat Light, Montserrat, sans-serif', - }, - }, addressSummary(address, 6, 4, false)), - ]), - - h('span.font-small', { - style: { - fontFamily: 'Montserrat Light, Montserrat, sans-serif', - }, - }, [ - h(EthBalance, { - value: balance, - conversionRate, - currentCurrency, - inline: true, - labelColor: '#F7861C', - }), - ]), - ]), - - forwardCarrat(), - - this.miniAccountPanelForRecipient(), - ]), - - h('style', ` - .table-box { - margin: 7px 0px 0px 0px; - width: 100%; - } - .table-box .row { - margin: 0px; - background: rgb(236,236,236); - display: flex; - justify-content: space-between; - font-family: Montserrat Light, sans-serif; - font-size: 13px; - padding: 5px 25px; - } - .table-box .row .value { - font-family: Montserrat Regular; - } - `), - - h('.table-box', [ - - // Ether Value - // Currently not customizable, but easily modified - // in the way that gas and gasLimit currently are. - h('.row', [ - h('.cell.label', 'Amount'), - h(EthBalance, { value: txParams.value, currentCurrency, conversionRate }), - ]), - - // Gas Limit (customizable) - h('.cell.row', [ - h('.cell.label', 'Gas Limit'), - h('.cell.value', { - }, [ - h(BNInput, { - name: 'Gas Limit', - value: gasBn, - precision: 0, - scale: 0, - // The hard lower limit for gas. - min: MIN_GAS_LIMIT_BN, - max: safeGasLimit, - suffix: 'UNITS', - style: { - position: 'relative', - top: '5px', - }, - onChange: this.gasLimitChanged.bind(this), - - ref: (hexInput) => { this.inputs.push(hexInput) }, - }), - ]), - ]), - - // Gas Price (customizable) - h('.cell.row', [ - h('.cell.label', 'Gas Price'), - h('.cell.value', { - }, [ - h(BNInput, { - name: 'Gas Price', - value: gasPriceBn, - precision: 9, - scale: 9, - suffix: 'GWEI', - min: forceGasMin || MIN_GAS_PRICE_BN, - style: { - position: 'relative', - top: '5px', - }, - onChange: this.gasPriceChanged.bind(this), - ref: (hexInput) => { this.inputs.push(hexInput) }, - }), - ]), - ]), - - // Max Transaction Fee (calculated) - h('.cell.row', [ - h('.cell.label', 'Max Transaction Fee'), - h(EthBalance, { value: txFeeBn.toString(16), currentCurrency, conversionRate }), - ]), - - h('.cell.row', { - style: { - fontFamily: 'Montserrat Regular', - background: 'white', - padding: '10px 25px', - }, - }, [ - h('.cell.label', 'Max Total'), - h('.cell.value', { - style: { - display: 'flex', - alignItems: 'center', - }, - }, [ - h(EthBalance, { - value: maxCost.toString(16), - currentCurrency, - conversionRate, - inline: true, - labelColor: 'black', - fontSize: '16px', - }), - ]), - ]), - - // Data size row: - h('.cell.row', { - style: { - background: '#f7f7f7', - paddingBottom: '0px', - }, - }, [ - h('.cell.label'), - h('.cell.value', { - style: { - fontFamily: 'Montserrat Light', - fontSize: '11px', - }, - }, `Data included: ${dataLength} bytes`), - ]), - ]), // End of Table - - ]), - - h('style', ` - .conf-buttons button { - margin-left: 10px; - text-transform: uppercase; - } - `), - h('.cell.row', { - style: { - textAlign: 'center', - }, - }, [ - txMeta.simulationFails ? - h('.error', { - style: { - fontSize: '0.9em', - }, - }, 'Transaction Error. Exception thrown in contract code.') - : null, - - !isValidAddress ? - h('.error', { - style: { - fontSize: '0.9em', - }, - }, 'Recipient address is invalid. Sending this transaction will result in a loss of ETH.') - : null, - - insufficientBalance ? - h('span.error', { - style: { - fontSize: '0.9em', - }, - }, 'Insufficient balance for transaction') - : null, - - (dangerousGasLimit && !gasLimitSpecified) ? - h('span.error', { - style: { - fontSize: '0.9em', - }, - }, 'Gas limit set dangerously high. Approving this transaction is liable to fail.') - : null, - ]), - - - // send + cancel - h('.flex-row.flex-space-around.conf-buttons', { - style: { - display: 'flex', - justifyContent: 'flex-end', - margin: '14px 25px', - }, - }, [ - h('button', { - onClick: (event) => { - this.resetGasFields() - event.preventDefault() - }, - }, 'Reset'), - - // Accept Button or Buy Button - insufficientBalance ? h('button.btn-green', { onClick: props.buyEth }, 'Buy Ether') : - h('input.confirm.btn-green', { - type: 'submit', - value: 'SUBMIT', - style: { marginLeft: '10px' }, - disabled: buyDisabled, - }), - - h('button.cancel.btn-red', { - onClick: props.cancelTransaction, - }, 'Reject'), - ]), - showRejectAll ? h('.flex-row.flex-space-around.conf-buttons', { - style: { - display: 'flex', - justifyContent: 'flex-end', - margin: '14px 25px', - }, - }, [ - h('button.cancel.btn-red', { - onClick: props.cancelAllTransactions, - }, 'Reject All'), - ]) : null, - ]), - ]) - ) -} - -PendingTx.prototype.miniAccountPanelForRecipient = function () { - const props = this.props - const txData = props.txData - const txParams = txData.txParams || {} - const isContractDeploy = !('to' in txParams) - - // If it's not a contract deploy, send to the account - if (!isContractDeploy) { - return h(MiniAccountPanel, { - imageSeed: txParams.to, - picOrder: 'left', - }, [ - - h('span.font-small', { - style: { - fontFamily: 'Montserrat Bold, Montserrat, sans-serif', - }, - }, nameForAddress(txParams.to, props.identities)), - - h(Copyable, { - value: ethUtil.toChecksumAddress(txParams.to), - }, [ - h('span.font-small', { - style: { - fontFamily: 'Montserrat Light, Montserrat, sans-serif', - }, - }, addressSummary(txParams.to, 6, 4, false)), - ]), - - ]) - } else { - return h(MiniAccountPanel, { - picOrder: 'left', - }, [ - - h('span.font-small', { - style: { - fontFamily: 'Montserrat Bold, Montserrat, sans-serif', - }, - }, 'New Contract'), - - ]) - } -} - -PendingTx.prototype.gasPriceChanged = function (newBN, valid) { - log.info(`Gas price changed to: ${newBN.toString(10)}`) - const txMeta = this.gatherTxMeta() - txMeta.txParams.gasPrice = '0x' + newBN.toString('hex') - this.setState({ - txData: clone(txMeta), - valid, - }) -} - -PendingTx.prototype.gasLimitChanged = function (newBN, valid) { - log.info(`Gas limit changed to ${newBN.toString(10)}`) - const txMeta = this.gatherTxMeta() - txMeta.txParams.gas = '0x' + newBN.toString('hex') - this.setState({ - txData: clone(txMeta), - valid, - }) -} - -PendingTx.prototype.resetGasFields = function () { - log.debug(`pending-tx resetGasFields`) - - this.inputs.forEach((hexInput) => { - if (hexInput) { - hexInput.setValid() - } - }) - - this.setState({ - txData: null, - valid: true, - }) -} - -PendingTx.prototype.onSubmit = function (event) { - event.preventDefault() - const txMeta = this.gatherTxMeta() - const valid = this.checkValidity() - this.setState({ valid, submitting: true }) - const validGasParams = this.verifyGasParams() - if (valid && validGasParams) { - this.props.sendTransaction(txMeta, event) - } else { - this.props.dispatch(actions.displayWarning('Invalid Gas Parameters')) - this.setState({ submitting: false }) - } -} - -PendingTx.prototype.checkValidity = function () { - const form = this.getFormEl() - const valid = form.checkValidity() - return valid -} - -PendingTx.prototype.getFormEl = function () { - const form = document.querySelector('form#pending-tx-form') - // Stub out form for unit tests: - if (!form) { - return { checkValidity () { return true } } - } - return form -} - -// After a customizable state value has been updated, -PendingTx.prototype.gatherTxMeta = function () { - log.debug(`pending-tx gatherTxMeta`) - const props = this.props - const state = this.state - const txData = clone(state.txData) || clone(props.txData) - - log.debug(`UI has defaulted to tx meta ${JSON.stringify(txData)}`) - return txData -} - -PendingTx.prototype.verifyGasParams = function () { - // We call this in case the gas has not been modified at all - if (!this.state) { return true } - return ( - this._notZeroOrEmptyString(this.state.gas) && - this._notZeroOrEmptyString(this.state.gasPrice) - ) -} - -PendingTx.prototype._notZeroOrEmptyString = function (value) { - // allow undefined values - if (value === undefined) return true - // Geth will return '0x', and ganache-core v2.2.1 will return '0x0' - const valueIsEmpty = !value || value === '0x' || value === '0x0' - return !valueIsEmpty -} - -PendingTx.prototype.bnMultiplyByFraction = function (targetBN, numerator, denominator) { - const numBN = new BN(numerator) - const denomBN = new BN(denominator) - return targetBN.mul(numBN).div(denomBN) -} - -function forwardCarrat () { - return ( - h('img', { - src: 'images/forward-carrat.svg', - style: { - padding: '5px 6px 0px 10px', - height: '37px', - }, - }) - ) -} diff --git a/old-ui/app/components/pending-typed-msg-details.js b/old-ui/app/components/pending-typed-msg-details.js deleted file mode 100644 index f95bf43a7..000000000 --- a/old-ui/app/components/pending-typed-msg-details.js +++ /dev/null @@ -1,60 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits - -const AccountPanel = require('./account-panel') -const TypedMessageRenderer = require('./typed-message-renderer') - -module.exports = PendingMsgDetails - -inherits(PendingMsgDetails, Component) -function PendingMsgDetails () { - Component.call(this) -} - -PendingMsgDetails.prototype.render = function () { - var state = this.props - var msgData = state.txData - - var msgParams = msgData.msgParams || {} - var address = msgParams.from || state.selectedAddress - var identity = state.identities[address] || { address: address } - var account = state.accounts[address] || { address: address } - - var { data, version } = msgParams - - return ( - h('div', { - key: msgData.id, - style: { - margin: '10px 20px', - }, - }, [ - - // account that will sign - h(AccountPanel, { - showFullAddress: true, - identity: identity, - account: account, - imageifyIdenticons: state.imageifyIdenticons, - }), - - // message data - h('div', { - style: { - height: '260px', - }, - }, [ - h('label.font-small', { style: { display: 'block' } }, 'YOU ARE SIGNING'), - h(TypedMessageRenderer, { - value: data, - version, - style: { - height: '215px', - }, - }), - ]), - - ]) - ) -} diff --git a/old-ui/app/components/pending-typed-msg.js b/old-ui/app/components/pending-typed-msg.js deleted file mode 100644 index f8926d0a3..000000000 --- a/old-ui/app/components/pending-typed-msg.js +++ /dev/null @@ -1,46 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits -const PendingTxDetails = require('./pending-typed-msg-details') - -module.exports = PendingMsg - -inherits(PendingMsg, Component) -function PendingMsg () { - Component.call(this) -} - -PendingMsg.prototype.render = function () { - var state = this.props - var msgData = state.txData - - return ( - - h('div', { - key: msgData.id, - }, [ - - // header - h('h3', { - style: { - fontWeight: 'bold', - textAlign: 'center', - }, - }, 'Sign Message'), - - // message details - h(PendingTxDetails, state), - - // sign + cancel - h('.flex-row.flex-space-around', [ - h('button', { - onClick: state.cancelTypedMessage, - }, 'Cancel'), - h('button', { - onClick: state.signTypedMessage, - }, 'Sign'), - ]), - ]) - - ) -} diff --git a/old-ui/app/components/range-slider.js b/old-ui/app/components/range-slider.js deleted file mode 100644 index bae740a74..000000000 --- a/old-ui/app/components/range-slider.js +++ /dev/null @@ -1,58 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits - -module.exports = RangeSlider - -inherits(RangeSlider, Component) -function RangeSlider () { - Component.call(this) -} - -RangeSlider.prototype.render = function () { - const state = this.state || {} - const props = this.props - const onInput = props.onInput || function () {} - const name = props.name - const { - min = 0, - max = 100, - increment = 1, - defaultValue = 50, - mirrorInput = false, - } = this.props.options - const {container, input, range} = props.style - - return ( - h('.flex-row', { - style: container, - }, [ - h('input', { - type: 'range', - name: name, - min: min, - max: max, - step: increment, - style: range, - value: state.value || defaultValue, - onChange: mirrorInput ? this.mirrorInputs.bind(this) : onInput, - }), - - // Mirrored input for range - mirrorInput ? h('input.large-input', { - type: 'number', - name: `${name}Mirror`, - min: min, - max: max, - value: state.value || defaultValue, - step: increment, - style: input, - onChange: this.mirrorInputs.bind(this), - }) : null, - ]) - ) -} - -RangeSlider.prototype.mirrorInputs = function (event) { - this.setState({value: event.target.value}) -} diff --git a/old-ui/app/components/shapeshift-form.js b/old-ui/app/components/shapeshift-form.js deleted file mode 100644 index 14de309ab..000000000 --- a/old-ui/app/components/shapeshift-form.js +++ /dev/null @@ -1,306 +0,0 @@ -const PersistentForm = require('../../lib/persistent-form') -const h = require('react-hyperscript') -const inherits = require('util').inherits -const connect = require('react-redux').connect -const actions = require('../../../ui/app/actions') -const isValidAddress = require('../util').isValidAddress -module.exports = connect(mapStateToProps)(ShapeshiftForm) - -function mapStateToProps (state) { - return { - warning: state.appState.warning, - isSubLoading: state.appState.isSubLoading, - } -} - -inherits(ShapeshiftForm, PersistentForm) - -function ShapeshiftForm () { - PersistentForm.call(this) - this.persistentFormParentId = 'shapeshift-buy-form' -} - -ShapeshiftForm.prototype.render = function () { - return this.renderMain() -} - -ShapeshiftForm.prototype.renderMain = function () { - const marketinfo = this.props.buyView.formView.marketinfo - const coinOptions = this.props.buyView.formView.coinOptions - var coin = marketinfo.pair.split('_')[0].toUpperCase() - - return h('.flex-column', { - style: { - position: 'relative', - padding: '25px', - paddingTop: '5px', - width: '90%', - minHeight: '215px', - alignItems: 'center', - overflowY: 'auto', - }, - }, [ - h('.flex-row', { - style: { - justifyContent: 'center', - alignItems: 'baseline', - height: '42px', - }, - }, [ - h('img', { - src: coinOptions[coin].image, - width: '25px', - height: '25px', - style: { - marginRight: '5px', - }, - }), - - h('.input-container', { - position: 'relative', - }, [ - h('input#fromCoin.buy-inputs.ex-coins', { - type: 'text', - list: 'coinList', - autoFocus: true, - dataset: { - persistentFormId: 'input-coin', - }, - style: { - boxSizing: 'border-box', - }, - onChange: this.handleLiveInput.bind(this), - defaultValue: 'BTC', - }), - - this.renderCoinList(), - - h('i.fa.fa-pencil-square-o.edit-text', { - style: { - fontSize: '12px', - color: '#F7861C', - position: 'absolute', - }, - }), - ]), - - h('.icon-control', { - style: { - position: 'relative', - }, - }, [ - // Not visible on the screen, can't see it on master. - - // h('i.fa.fa-refresh.fa-4.orange', { - // style: { - // bottom: '5px', - // left: '5px', - // color: '#F7861C', - // }, - // onClick: this.updateCoin.bind(this), - // }), - h('i.fa.fa-chevron-right.fa-4.orange', { - style: { - position: 'absolute', - bottom: '35%', - left: '0%', - color: '#F7861C', - }, - onClick: this.updateCoin.bind(this), - }), - ]), - - h('#toCoin.ex-coins', marketinfo.pair.split('_')[1].toUpperCase()), - - h('img', { - src: coinOptions[marketinfo.pair.split('_')[1].toUpperCase()].image, - width: '25px', - height: '25px', - style: { - marginLeft: '5px', - }, - }), - ]), - - h('.flex-column', { - style: { - marginTop: '1%', - alignItems: 'flex-start', - }, - }, [ - this.props.warning ? - this.props.warning && - h('span.error.flex-center', { - style: { - textAlign: 'center', - width: '229px', - height: '82px', - }, - }, this.props.warning + '') - : this.renderInfo(), - - this.renderRefundAddressForCoin(coin), - ]), - - ]) -} - -ShapeshiftForm.prototype.renderRefundAddressForCoin = function (coin) { - return h(this.activeToggle('.input-container'), { - style: { - marginTop: '1%', - }, - }, [ - - h('div', `${coin} Address:`), - - h('input#fromCoinAddress.buy-inputs', { - type: 'text', - placeholder: `Your ${coin} Refund Address`, - dataset: { - persistentFormId: 'refund-address', - - }, - style: { - boxSizing: 'border-box', - width: '227px', - height: '30px', - padding: ' 5px ', - }, - }), - - h('i.fa.fa-pencil-square-o.edit-text', { - style: { - fontSize: '12px', - color: '#F7861C', - position: 'absolute', - }, - }), - h('div.flex-row', { - style: { - justifyContent: 'flex-start', - }, - }, [ - h('button', { - onClick: this.shift.bind(this), - style: { - marginTop: '1%', - }, - }, - 'Submit'), - ]), - ]) -} - -ShapeshiftForm.prototype.shift = function () { - var props = this.props - var withdrawal = this.props.buyView.buyAddress - var returnAddress = document.getElementById('fromCoinAddress').value - var pair = this.props.buyView.formView.marketinfo.pair - var data = { - 'withdrawal': withdrawal, - 'pair': pair, - 'returnAddress': returnAddress, - // Public api key - 'apiKey': '803d1f5df2ed1b1476e4b9e6bcd089e34d8874595dda6a23b67d93c56ea9cc2445e98a6748b219b2b6ad654d9f075f1f1db139abfa93158c04e825db122c14b6', - } - var message = [ - `Deposit Limit: ${props.buyView.formView.marketinfo.limit}`, - `Deposit Minimum:${props.buyView.formView.marketinfo.minimum}`, - ] - if (isValidAddress(withdrawal)) { - this.props.dispatch(actions.coinShiftRquest(data, message)) - } -} - -ShapeshiftForm.prototype.renderCoinList = function () { - var list = Object.keys(this.props.buyView.formView.coinOptions).map((item) => { - return h('option', { - value: item, - }, item) - }) - - return h('datalist#coinList', { - onClick: (event) => { - event.preventDefault() - }, - }, list) -} - -ShapeshiftForm.prototype.updateCoin = function (event) { - event.preventDefault() - const props = this.props - var coinOptions = this.props.buyView.formView.coinOptions - var coin = document.getElementById('fromCoin').value - - if (!coinOptions[coin.toUpperCase()] || coin.toUpperCase() === 'ETH') { - var message = 'Not a valid coin' - return props.dispatch(actions.displayWarning(message)) - } else { - return props.dispatch(actions.pairUpdate(coin)) - } -} - -ShapeshiftForm.prototype.handleLiveInput = function () { - const props = this.props - var coinOptions = this.props.buyView.formView.coinOptions - var coin = document.getElementById('fromCoin').value - - if (!coinOptions[coin.toUpperCase()] || coin.toUpperCase() === 'ETH') { - return null - } else { - return props.dispatch(actions.pairUpdate(coin)) - } -} - -ShapeshiftForm.prototype.renderInfo = function () { - const marketinfo = this.props.buyView.formView.marketinfo - const coinOptions = this.props.buyView.formView.coinOptions - var coin = marketinfo.pair.split('_')[0].toUpperCase() - - return h('span', { - style: { - }, - }, [ - h('h3.flex-row.text-transform-uppercase', { - style: { - color: '#868686', - paddingTop: '4px', - justifyContent: 'space-around', - textAlign: 'center', - fontSize: '17px', - }, - }, `Market Info for ${marketinfo.pair.replace('_', ' to ').toUpperCase()}:`), - h('.marketinfo', ['Status : ', `${coinOptions[coin].status}`]), - h('.marketinfo', ['Exchange Rate: ', `${marketinfo.rate}`]), - h('.marketinfo', ['Limit: ', `${marketinfo.limit}`]), - h('.marketinfo', ['Minimum : ', `${marketinfo.minimum}`]), - ]) -} - -ShapeshiftForm.prototype.activeToggle = function (elementType) { - if (!this.props.buyView.formView.response || this.props.warning) return elementType - return `${elementType}.inactive` -} - -ShapeshiftForm.prototype.renderLoading = function () { - return h('span', { - style: { - position: 'absolute', - left: '70px', - bottom: '194px', - background: 'transparent', - width: '229px', - height: '82px', - display: 'flex', - justifyContent: 'center', - }, - }, [ - h('img', { - style: { - width: '60px', - }, - src: 'images/loading.svg', - }), - ]) -} diff --git a/old-ui/app/components/shift-list-item.js b/old-ui/app/components/shift-list-item.js deleted file mode 100644 index 01b8d548f..000000000 --- a/old-ui/app/components/shift-list-item.js +++ /dev/null @@ -1,204 +0,0 @@ -const inherits = require('util').inherits -const Component = require('react').Component -const h = require('react-hyperscript') -const connect = require('react-redux').connect -const { DateTime } = require('luxon') -const explorerLink = require('etherscan-link').createExplorerLink -const actions = require('../../../ui/app/actions') -const addressSummary = require('../util').addressSummary - -const CopyButton = require('./copyButton') -const EthBalance = require('./eth-balance') -const Tooltip = require('./tooltip') - - -module.exports = connect(mapStateToProps)(ShiftListItem) - -function mapStateToProps (state) { - return { - conversionRate: state.metamask.conversionRate, - currentCurrency: state.metamask.currentCurrency, - } -} - -inherits(ShiftListItem, Component) - -function ShiftListItem () { - Component.call(this) -} - -ShiftListItem.prototype.render = function () { - return ( - h('.transaction-list-item.flex-row', { - style: { - paddingTop: '20px', - paddingBottom: '20px', - justifyContent: 'space-around', - alignItems: 'center', - }, - }, [ - h('div', { - style: { - width: '0px', - position: 'relative', - bottom: '19px', - }, - }, [ - h('img', { - src: 'https://info.shapeshift.io/sites/default/files/logo.png', - style: { - height: '35px', - width: '132px', - position: 'absolute', - clip: 'rect(0px,23px,34px,0px)', - }, - }), - ]), - - this.renderInfo(), - this.renderUtilComponents(), - ]) - ) -} - -function formatDate (date) { - return DateTime.fromMillis(date).toFormat('MMMM d y T') -} - -ShiftListItem.prototype.renderUtilComponents = function () { - var props = this.props - const { conversionRate, currentCurrency } = props - - switch (props.response.status) { - case 'no_deposits': - return h('.flex-row', [ - h(CopyButton, { - value: this.props.depositAddress, - }), - h(Tooltip, { - title: 'QR Code', - }, [ - h('i.fa.fa-qrcode.pointer.pop-hover', { - onClick: () => props.dispatch(actions.reshowQrCode(props.depositAddress, props.depositType)), - style: { - margin: '5px', - marginLeft: '23px', - marginRight: '12px', - fontSize: '20px', - color: '#F7861C', - }, - }), - ]), - ]) - case 'received': - return h('.flex-row') - - case 'complete': - return h('.flex-row', [ - h(CopyButton, { - value: this.props.response.transaction, - }), - h(EthBalance, { - value: `${props.response.outgoingCoin}`, - conversionRate, - currentCurrency, - width: '55px', - shorten: true, - needsParse: false, - incoming: true, - style: { - fontSize: '15px', - color: '#01888C', - }, - }), - ]) - - case 'failed': - return '' - default: - return '' - } -} - -ShiftListItem.prototype.renderInfo = function () { - var props = this.props - switch (props.response.status) { - case 'no_deposits': - return h('.flex-column', { - style: { - width: '200px', - overflow: 'hidden', - }, - }, [ - h('div', { - style: { - fontSize: 'x-small', - color: '#ABA9AA', - width: '100%', - }, - }, `${props.depositType} to ETH via ShapeShift`), - h('div', 'No deposits received'), - h('div', { - style: { - fontSize: 'x-small', - color: '#ABA9AA', - width: '100%', - }, - }, formatDate(props.time)), - ]) - case 'received': - return h('.flex-column', { - style: { - width: '200px', - overflow: 'hidden', - }, - }, [ - h('div', { - style: { - fontSize: 'x-small', - color: '#ABA9AA', - width: '100%', - }, - }, `${props.depositType} to ETH via ShapeShift`), - h('div', 'Conversion in progress'), - h('div', { - style: { - fontSize: 'x-small', - color: '#ABA9AA', - width: '100%', - }, - }, formatDate(props.time)), - ]) - case 'complete': - var url = explorerLink(props.response.transaction, parseInt('1')) - - return h('.flex-column.pointer', { - style: { - width: '200px', - overflow: 'hidden', - }, - onClick: () => global.platform.openWindow({ url }), - }, [ - h('div', { - style: { - fontSize: 'x-small', - color: '#ABA9AA', - width: '100%', - }, - }, 'From ShapeShift'), - h('div', formatDate(props.time)), - h('div', { - style: { - fontSize: 'x-small', - color: '#ABA9AA', - width: '100%', - }, - }, addressSummary(props.response.transaction)), - ]) - - case 'failed': - return h('span.error', '(Failed)') - default: - return '' - } -} diff --git a/old-ui/app/components/tab-bar.js b/old-ui/app/components/tab-bar.js deleted file mode 100644 index bef444a48..000000000 --- a/old-ui/app/components/tab-bar.js +++ /dev/null @@ -1,37 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits - -module.exports = TabBar - -inherits(TabBar, Component) -function TabBar () { - Component.call(this) -} - -TabBar.prototype.render = function () { - const props = this.props - const state = this.state || {} - const { tabs = [], defaultTab, tabSelected } = props - const { subview = defaultTab } = state - - return ( - h('.flex-row.space-around.text-transform-uppercase', { - style: { - background: '#EBEBEB', - color: '#AEAEAE', - paddingTop: '4px', - minHeight: '30px', - }, - }, tabs.map((tab) => { - const { key, content } = tab - return h(subview === key ? '.activeForm' : '.inactiveForm.pointer', { - onClick: () => { - this.setState({ subview: key }) - tabSelected(key) - }, - }, content) - })) - ) -} - diff --git a/old-ui/app/components/template.js b/old-ui/app/components/template.js deleted file mode 100644 index b6ed8eaa0..000000000 --- a/old-ui/app/components/template.js +++ /dev/null @@ -1,18 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits - -module.exports = NewComponent - -inherits(NewComponent, Component) -function NewComponent () { - Component.call(this) -} - -NewComponent.prototype.render = function () { - const props = this.props - - return ( - h('span', props.message) - ) -} diff --git a/old-ui/app/components/token-cell.js b/old-ui/app/components/token-cell.js deleted file mode 100644 index 19d7139bb..000000000 --- a/old-ui/app/components/token-cell.js +++ /dev/null @@ -1,72 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits -const Identicon = require('./identicon') -const prefixForNetwork = require('../../lib/etherscan-prefix-for-network') - -module.exports = TokenCell - -inherits(TokenCell, Component) -function TokenCell () { - Component.call(this) -} - -TokenCell.prototype.render = function () { - const props = this.props - const { address, symbol, string, network, userAddress } = props - - return ( - h('li.token-cell', { - style: { cursor: network === '1' ? 'pointer' : 'default' }, - onClick: this.view.bind(this, address, userAddress, network), - }, [ - - h(Identicon, { - diameter: 50, - address, - network, - }), - - h('h3', `${string || 0} ${symbol}`), - - h('span', { style: { flex: '1 0 auto' } }), - - /* - h('button', { - onClick: this.send.bind(this, address), - }, 'SEND'), - */ - - ]) - ) -} - -TokenCell.prototype.send = function (address, event) { - event.preventDefault() - event.stopPropagation() - const url = tokenFactoryFor(address) - if (url) { - navigateTo(url) - } -} - -TokenCell.prototype.view = function (address, userAddress, network, event) { - const url = etherscanLinkFor(address, userAddress, network) - if (url) { - navigateTo(url) - } -} - -function navigateTo (url) { - global.platform.openWindow({ url }) -} - -function etherscanLinkFor (tokenAddress, address, network) { - const prefix = prefixForNetwork(network) - return `https://${prefix}etherscan.io/token/${tokenAddress}?a=${address}` -} - -function tokenFactoryFor (tokenAddress) { - return `https://tokenfactory.surge.sh/#/token/${tokenAddress}` -} - diff --git a/old-ui/app/components/token-list.js b/old-ui/app/components/token-list.js deleted file mode 100644 index e20594b61..000000000 --- a/old-ui/app/components/token-list.js +++ /dev/null @@ -1,205 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits -const TokenTracker = require('eth-token-tracker') -const TokenCell = require('./token-cell.js') -const log = require('loglevel') - -module.exports = TokenList - -inherits(TokenList, Component) -function TokenList () { - this.state = { - tokens: [], - isLoading: true, - network: null, - } - Component.call(this) -} - -TokenList.prototype.render = function () { - const state = this.state - const { tokens, isLoading, error } = state - const { userAddress, network } = this.props - - if (isLoading) { - return this.message('Loading') - } - - if (error) { - log.error(error) - return h('.hotFix', { - style: { - padding: '80px', - }, - }, [ - 'We had trouble loading your token balances. You can view them ', - h('span.hotFix', { - style: { - color: 'rgba(247, 134, 28, 1)', - cursor: 'pointer', - }, - onClick: () => { - global.platform.openWindow({ - url: `https://ethplorer.io/address/${userAddress}`, - }) - }, - }, 'here'), - ]) - } - - const tokenViews = tokens.map((tokenData) => { - tokenData.network = network - tokenData.userAddress = userAddress - return h(TokenCell, tokenData) - }) - - return h('.full-flex-height', [ - this.renderTokenStatusBar(), - - h('ol.full-flex-height.flex-column', { - style: { - overflowY: 'auto', - display: 'flex', - flexDirection: 'column', - }, - }, [ - h('style', ` - - li.token-cell { - display: flex; - flex-direction: row; - align-items: center; - padding: 10px; - min-height: 50px; - } - - li.token-cell > h3 { - margin-left: 12px; - } - - li.token-cell:hover { - background: white; - cursor: pointer; - } - - `), - ...tokenViews, - h('.flex-grow'), - ]), - ]) -} - -TokenList.prototype.renderTokenStatusBar = function () { - const { tokens } = this.state - - let msg - if (tokens.length === 1) { - msg = `You own 1 token` - } else if (tokens.length > 1) { - msg = `You own ${tokens.length} tokens` - } else { - msg = `No tokens found` - } - - return h('div', { - style: { - display: 'flex', - justifyContent: 'space-between', - alignItems: 'center', - minHeight: '70px', - padding: '10px', - }, - }, [ - h('span', msg), - h('button', { - key: 'reveal-account-bar', - onClick: (event) => { - event.preventDefault() - this.props.addToken() - }, - style: { - display: 'flex', - height: '40px', - padding: '10px', - justifyContent: 'center', - alignItems: 'center', - }, - }, [ - 'ADD TOKEN', - ]), - ]) -} - -TokenList.prototype.message = function (body) { - return h('div', { - style: { - display: 'flex', - height: '250px', - alignItems: 'center', - justifyContent: 'center', - padding: '30px', - }, - }, body) -} - -TokenList.prototype.componentDidMount = function () { - this.createFreshTokenTracker() -} - -TokenList.prototype.createFreshTokenTracker = function () { - if (this.tracker) { - // Clean up old trackers when refreshing: - this.tracker.stop() - this.tracker.removeListener('update', this.balanceUpdater) - this.tracker.removeListener('error', this.showError) - } - - if (!global.ethereumProvider) return - const { userAddress } = this.props - this.tracker = new TokenTracker({ - userAddress, - provider: global.ethereumProvider, - tokens: this.props.tokens, - pollingInterval: 8000, - }) - - - // Set up listener instances for cleaning up - this.balanceUpdater = this.updateBalances.bind(this) - this.showError = (error) => { - this.setState({ error, isLoading: false }) - } - this.tracker.on('update', this.balanceUpdater) - this.tracker.on('error', this.showError) - - this.tracker.updateBalances() - .then(() => { - this.updateBalances(this.tracker.serialize()) - }) - .catch((reason) => { - log.error(`Problem updating balances`, reason) - this.setState({ isLoading: false }) - }) -} - -TokenList.prototype.componentWillUpdate = function (nextProps) { - if (nextProps.network === 'loading') return - const oldNet = this.props.network - const newNet = nextProps.network - - if (oldNet && newNet && newNet !== oldNet) { - this.setState({ isLoading: true }) - this.createFreshTokenTracker() - } -} - -TokenList.prototype.updateBalances = function (tokens) { - this.setState({ tokens, isLoading: false }) -} - -TokenList.prototype.componentWillUnmount = function () { - if (!this.tracker) return - this.tracker.stop() -} - diff --git a/old-ui/app/components/tooltip.js b/old-ui/app/components/tooltip.js deleted file mode 100644 index efab2c497..000000000 --- a/old-ui/app/components/tooltip.js +++ /dev/null @@ -1,22 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits -const ReactTooltip = require('react-tooltip-component') - -module.exports = Tooltip - -inherits(Tooltip, Component) -function Tooltip () { - Component.call(this) -} - -Tooltip.prototype.render = function () { - const props = this.props - const { position, title, children } = props - - return h(ReactTooltip, { - position: position || 'left', - title, - fixed: true, - }, children) -} diff --git a/old-ui/app/components/transaction-list-item-icon.js b/old-ui/app/components/transaction-list-item-icon.js deleted file mode 100644 index f442b05af..000000000 --- a/old-ui/app/components/transaction-list-item-icon.js +++ /dev/null @@ -1,68 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits -const Tooltip = require('./tooltip') - -const Identicon = require('./identicon') - -module.exports = TransactionIcon - -inherits(TransactionIcon, Component) -function TransactionIcon () { - Component.call(this) -} - -TransactionIcon.prototype.render = function () { - const { transaction, txParams, isMsg } = this.props - switch (transaction.status) { - case 'unapproved': - return h(!isMsg ? '.unapproved-tx-icon' : 'i.fa.fa-certificate.fa-lg') - - case 'rejected': - return h('i.fa.fa-exclamation-triangle.fa-lg.warning', { - style: { - width: '24px', - }, - }) - - case 'failed': - return h('i.fa.fa-exclamation-triangle.fa-lg.error', { - style: { - width: '24px', - }, - }) - - case 'submitted': - return h(Tooltip, { - title: 'Pending', - position: 'right', - }, [ - h('i.fa.fa-ellipsis-h', { - style: { - fontSize: '27px', - }, - }), - ]) - } - - if (isMsg) { - return h('i.fa.fa-certificate.fa-lg', { - style: { - width: '24px', - }, - }) - } - - if (txParams.to) { - return h(Identicon, { - diameter: 24, - address: txParams.to || transaction.hash, - }) - } else { - return h('i.fa.fa-file-text-o.fa-lg', { - style: { - width: '24px', - }, - }) - } -} diff --git a/old-ui/app/components/transaction-list-item.js b/old-ui/app/components/transaction-list-item.js deleted file mode 100644 index 8d0e77f53..000000000 --- a/old-ui/app/components/transaction-list-item.js +++ /dev/null @@ -1,258 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits -const connect = require('react-redux').connect - -const EthBalance = require('./eth-balance') -const addressSummary = require('../util').addressSummary -const explorerLink = require('etherscan-link').createExplorerLink -const CopyButton = require('./copyButton') -const { DateTime } = require('luxon') -const Tooltip = require('./tooltip') -const numberToBN = require('number-to-bn') -const actions = require('../../../ui/app/actions') - -const TransactionIcon = require('./transaction-list-item-icon') -const ShiftListItem = require('./shift-list-item') - -const mapDispatchToProps = dispatch => { - return { - retryTransaction: transactionId => dispatch(actions.retryTransaction(transactionId)), - } -} - -module.exports = connect(null, mapDispatchToProps)(TransactionListItem) - -inherits(TransactionListItem, Component) -function TransactionListItem () { - Component.call(this) -} - -TransactionListItem.prototype.showRetryButton = function () { - const { transaction = {}, transactions } = this.props - const { submittedTime, txParams } = transaction - - if (!txParams) { - return false - } - - let currentTxSharesEarliestNonce = false - const currentNonce = txParams.nonce - const currentNonceTxs = transactions.filter(tx => tx.txParams.nonce === currentNonce) - const currentNonceSubmittedTxs = currentNonceTxs.filter(tx => tx.status === 'submitted') - const currentSubmittedTxs = transactions.filter(tx => tx.status === 'submitted') - const lastSubmittedTxWithCurrentNonce = currentNonceSubmittedTxs[0] - const currentTxIsLatestWithNonce = lastSubmittedTxWithCurrentNonce && - lastSubmittedTxWithCurrentNonce.id === transaction.id - if (currentSubmittedTxs.length > 0) { - const earliestSubmitted = currentSubmittedTxs.reduce((tx1, tx2) => { - if (tx1.submittedTime < tx2.submittedTime) return tx1 - return tx2 - }) - currentTxSharesEarliestNonce = currentNonce === earliestSubmitted.txParams.nonce - } - - return currentTxSharesEarliestNonce && currentTxIsLatestWithNonce && Date.now() - submittedTime > 30000 -} - -TransactionListItem.prototype.render = function () { - const { transaction, network, conversionRate, currentCurrency } = this.props - const { status } = transaction - if (transaction.key === 'shapeshift') { - if (network === '1') return h(ShiftListItem, transaction) - } - var date = formatDate(transaction.time) - - let isLinkable = false - const numericNet = parseInt(network) - isLinkable = numericNet === 1 || numericNet === 3 || numericNet === 4 || numericNet === 42 - - var isMsg = ('msgParams' in transaction) - var isTx = ('txParams' in transaction) - var isPending = status === 'unapproved' - let txParams - if (isTx) { - txParams = transaction.txParams - } else if (isMsg) { - txParams = transaction.msgParams - } - - const nonce = txParams.nonce ? numberToBN(txParams.nonce).toString(10) : '' - - const isClickable = ('hash' in transaction && isLinkable) || isPending - return ( - h('.transaction-list-item.flex-column', { - onClick: (event) => { - if (isPending) { - this.props.showTx(transaction.id) - } - event.stopPropagation() - if (!transaction.hash || !isLinkable) return - var url = explorerLink(transaction.hash, parseInt(network)) - global.platform.openWindow({ url }) - }, - style: { - padding: '20px 0', - alignItems: 'center', - }, - }, [ - h(`.flex-row.flex-space-between${isClickable ? '.pointer' : ''}`, { - style: { - width: '100%', - }, - }, [ - h('.identicon-wrapper.flex-column.flex-center.select-none', [ - h(TransactionIcon, { txParams, transaction, isTx, isMsg }), - ]), - - h(Tooltip, { - title: 'Transaction Number', - position: 'right', - }, [ - h('span', { - style: { - display: 'flex', - cursor: 'normal', - flexDirection: 'column', - alignItems: 'center', - justifyContent: 'center', - padding: '10px', - }, - }, nonce), - ]), - - h('.flex-column', {style: {width: '200px', overflow: 'hidden'}}, [ - domainField(txParams), - h('div', date), - recipientField(txParams, transaction, isTx, isMsg), - ]), - - // Places a copy button if tx is successful, else places a placeholder empty div. - transaction.hash ? h(CopyButton, { value: transaction.hash }) : h('div', {style: { display: 'flex', alignItems: 'center', width: '26px' }}), - - isTx ? h(EthBalance, { - value: txParams.value, - conversionRate, - currentCurrency, - width: '55px', - shorten: true, - showFiat: false, - style: {fontSize: '15px'}, - }) : h('.flex-column'), - ]), - - this.showRetryButton() && h('.transition-list-item__retry.grow-on-hover', { - onClick: event => { - event.stopPropagation() - this.resubmit() - }, - style: { - height: '22px', - borderRadius: '22px', - color: '#F9881B', - padding: '0 20px', - backgroundColor: '#FFE3C9', - display: 'flex', - justifyContent: 'center', - alignItems: 'center', - fontSize: '8px', - cursor: 'pointer', - }, - }, [ - h('div', { - style: { - paddingRight: '2px', - }, - }, 'Taking too long?'), - h('div', { - style: { - textDecoration: 'underline', - }, - }, 'Retry with a higher gas price here'), - ]), - ]) - ) -} - -TransactionListItem.prototype.resubmit = function () { - const { transaction } = this.props - this.props.retryTransaction(transaction.id) -} - -function domainField (txParams) { - return h('div', { - style: { - fontSize: 'x-small', - color: '#ABA9AA', - overflow: 'hidden', - textOverflow: 'ellipsis', - width: '100%', - }, - }, [ - txParams.origin, - ]) -} - -function recipientField (txParams, transaction, isTx, isMsg) { - let message - - if (isMsg) { - message = 'Signature Requested' - } else if (txParams.to) { - message = addressSummary(txParams.to) - } else { - message = 'Contract Deployment' - } - - return h('div', { - style: { - fontSize: 'x-small', - color: '#ABA9AA', - }, - }, [ - message, - renderErrorOrWarning(transaction), - ]) -} - -function formatDate (date) { - return DateTime.fromMillis(date).toFormat('MMMM d y T') -} - -function renderErrorOrWarning (transaction) { - const { status, err, warning } = transaction - - // show dropped - if (status === 'dropped') { - return h('span.dropped', ' (Dropped)') - } - - // show rejected - if (status === 'rejected') { - return h('span.error', ' (Rejected)') - } - - // show error - if (err) { - const message = err.message || '' - return ( - h(Tooltip, { - title: message, - position: 'bottom', - }, [ - h(`span.error`, ` (Failed)`), - ]) - ) - } - - // show warning - if (warning) { - const message = warning.message - return h(Tooltip, { - title: message, - position: 'bottom', - }, [ - h(`span.warning`, ` (Warning)`), - ]) - } -} diff --git a/old-ui/app/components/transaction-list.js b/old-ui/app/components/transaction-list.js deleted file mode 100644 index c77852921..000000000 --- a/old-ui/app/components/transaction-list.js +++ /dev/null @@ -1,87 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits - -const TransactionListItem = require('./transaction-list-item') - -module.exports = TransactionList - - -inherits(TransactionList, Component) -function TransactionList () { - Component.call(this) -} - -TransactionList.prototype.render = function () { - const { transactions, network, unapprovedMsgs, conversionRate } = this.props - - var shapeShiftTxList - if (network === '1') { - shapeShiftTxList = this.props.shapeShiftTxList - } - const txsToRender = !shapeShiftTxList ? transactions.concat(unapprovedMsgs) : transactions.concat(unapprovedMsgs, shapeShiftTxList) - .sort((a, b) => b.time - a.time) - - return ( - - h('section.transaction-list.full-flex-height', { - style: { - justifyContent: 'center', - }, - }, [ - - h('style', ` - .transaction-list .transaction-list-item:not(:last-of-type) { - border-bottom: 1px solid #D4D4D4; - } - .transaction-list .transaction-list-item .ether-balance-label { - display: block !important; - font-size: small; - } - `), - - h('.tx-list', { - style: { - overflowY: 'auto', - height: '100%', - padding: '0 25px 0 15px', - textAlign: 'center', - }, - }, [ - - txsToRender.length - ? txsToRender.map((transaction, i) => { - let key - switch (transaction.key) { - case 'shapeshift': - const { depositAddress, time } = transaction - key = `shift-tx-${depositAddress}-${time}-${i}` - break - default: - key = `tx-${transaction.id}-${i}` - } - return h(TransactionListItem, { - transaction, i, network, key, - conversionRate, transactions, - showTx: (txId) => { - this.props.viewPendingTx(txId) - }, - }) - }) - : h('.flex-center.full-flex-height', { - style: { - flexDirection: 'column', - justifyContent: 'center', - }, - }, [ - h('p', { - style: { - marginTop: '50px', - }, - }, 'No transaction history.'), - ]), - ]), - ]) - ) -} - diff --git a/old-ui/app/components/typed-message-renderer.js b/old-ui/app/components/typed-message-renderer.js deleted file mode 100644 index 0dc673b8a..000000000 --- a/old-ui/app/components/typed-message-renderer.js +++ /dev/null @@ -1,69 +0,0 @@ -const Component = require('react').Component -const h = require('react-hyperscript') -const inherits = require('util').inherits -const extend = require('xtend') -const { ObjectInspector } = require('react-inspector') - -module.exports = TypedMessageRenderer - -inherits(TypedMessageRenderer, Component) -function TypedMessageRenderer () { - Component.call(this) -} - -TypedMessageRenderer.prototype.render = function () { - const props = this.props - const { value, version, style } = props - let text - switch (version) { - case 'V1': - text = renderTypedData(value) - break - case 'V3': - text = renderTypedDataV3(value) - break - } - - const defaultStyle = extend({ - width: '315px', - maxHeight: '210px', - resize: 'none', - border: 'none', - background: 'white', - padding: '3px', - overflow: 'scroll', - }, style) - - return ( - h('div.font-small', { - style: defaultStyle, - }, text) - ) -} - -function renderTypedData (values) { - return values.map(function (value) { - let v = value.value - if (typeof v === 'boolean') { - v = v.toString() - } - return h('div', {}, [ - h('strong', {style: {display: 'block', fontWeight: 'bold'}}, String(value.name) + ':'), - h('div', {}, v), - ]) - }) -} - -function renderTypedDataV3 (values) { - const { domain, message } = JSON.parse(values) - return [ - domain ? h('div', [ - h('h1', 'Domain'), - h(ObjectInspector, { data: domain, expandLevel: 1, name: 'domain' }), - ]) : '', - message ? h('div', [ - h('h1', 'Message'), - h(ObjectInspector, { data: message, expandLevel: 1, name: 'message' }), - ]) : '', - ] -} diff --git a/old-ui/app/conf-tx.js b/old-ui/app/conf-tx.js deleted file mode 100644 index dc1dc0538..000000000 --- a/old-ui/app/conf-tx.js +++ /dev/null @@ -1,247 +0,0 @@ -const inherits = require('util').inherits -const Component = require('react').Component -const h = require('react-hyperscript') -const connect = require('react-redux').connect -const actions = require('../../ui/app/actions') -const NetworkIndicator = require('./components/network') -const LoadingIndicator = require('./components/loading') -const txHelper = require('../lib/tx-helper') -const log = require('loglevel') -const { ENVIRONMENT_TYPE_NOTIFICATION } = require('../../app/scripts/lib/enums') -const { getEnvironmentType } = require('../../app/scripts/lib/util') - -const PendingTx = require('./components/pending-tx') -const PendingMsg = require('./components/pending-msg') -const PendingPersonalMsg = require('./components/pending-personal-msg') -const PendingTypedMsg = require('./components/pending-typed-msg') -const Loading = require('./components/loading') - -module.exports = connect(mapStateToProps)(ConfirmTxScreen) - -function mapStateToProps (state) { - return { - identities: state.metamask.identities, - accounts: state.metamask.accounts, - selectedAddress: state.metamask.selectedAddress, - unapprovedTxs: state.metamask.unapprovedTxs, - unapprovedMsgs: state.metamask.unapprovedMsgs, - unapprovedPersonalMsgs: state.metamask.unapprovedPersonalMsgs, - unapprovedTypedMessages: state.metamask.unapprovedTypedMessages, - index: state.appState.currentView.context, - warning: state.appState.warning, - network: state.metamask.network, - provider: state.metamask.provider, - conversionRate: state.metamask.conversionRate, - currentCurrency: state.metamask.currentCurrency, - blockGasLimit: state.metamask.currentBlockGasLimit, - computedBalances: state.metamask.computedBalances, - } -} - -inherits(ConfirmTxScreen, Component) -function ConfirmTxScreen () { - Component.call(this) -} - -ConfirmTxScreen.prototype.render = function () { - const props = this.props - const { network, provider, unapprovedTxs, currentCurrency, computedBalances, - unapprovedMsgs, unapprovedPersonalMsgs, unapprovedTypedMessages, conversionRate, blockGasLimit } = props - - var unconfTxList = txHelper(unapprovedTxs, unapprovedMsgs, unapprovedPersonalMsgs, unapprovedTypedMessages, network) - - var txData = unconfTxList[props.index] || {} - var txParams = txData.params || {} - var isNotification = getEnvironmentType(window.location.href) === ENVIRONMENT_TYPE_NOTIFICATION - - log.info(`rendering a combined ${unconfTxList.length} unconf msg & txs`) - if (unconfTxList.length === 0) return h(Loading, { isLoading: true }) - - const unconfTxListLength = unconfTxList.length - - return ( - - h('.flex-column.flex-grow', [ - - h(LoadingIndicator, { - isLoading: this.state ? !this.state.bypassLoadingScreen : txData.loadingDefaults, - loadingMessage: 'Estimating transaction cost…', - canBypass: true, - bypass: () => { - this.setState({bypassLoadingScreen: true}) - }, - }), - - // subtitle and nav - h('.section-title.flex-row.flex-center', [ - !isNotification ? h('i.fa.fa-arrow-left.fa-lg.cursor-pointer', { - onClick: this.goHome.bind(this), - }) : null, - h('h2.page-subtitle', 'Confirm Transaction'), - isNotification ? h(NetworkIndicator, { - network: network, - provider: provider, - }) : null, - ]), - - h('h3', { - style: { - alignSelf: 'center', - display: unconfTxList.length > 1 ? 'block' : 'none', - }, - }, [ - h('i.fa.fa-arrow-left.fa-lg.cursor-pointer', { - style: { - display: props.index === 0 ? 'none' : 'inline-block', - }, - onClick: () => props.dispatch(actions.previousTx()), - }), - ` ${props.index + 1} of ${unconfTxList.length} `, - h('i.fa.fa-arrow-right.fa-lg.cursor-pointer', { - style: { - display: props.index + 1 === unconfTxList.length ? 'none' : 'inline-block', - }, - onClick: () => props.dispatch(actions.nextTx()), - }), - ]), - - warningIfExists(props.warning), - - currentTxView({ - // Properties - txData: txData, - key: txData.id, - selectedAddress: props.selectedAddress, - accounts: props.accounts, - identities: props.identities, - conversionRate, - currentCurrency, - blockGasLimit, - unconfTxListLength, - computedBalances, - // Actions - buyEth: this.buyEth.bind(this, txParams.from || props.selectedAddress), - sendTransaction: this.sendTransaction.bind(this), - cancelTransaction: this.cancelTransaction.bind(this, txData), - cancelAllTransactions: this.cancelAllTransactions.bind(this, unconfTxList), - signMessage: this.signMessage.bind(this, txData), - signPersonalMessage: this.signPersonalMessage.bind(this, txData), - signTypedMessage: this.signTypedMessage.bind(this, txData), - cancelMessage: this.cancelMessage.bind(this, txData), - cancelPersonalMessage: this.cancelPersonalMessage.bind(this, txData), - cancelTypedMessage: this.cancelTypedMessage.bind(this, txData), - }), - ]) - ) -} - -function currentTxView (opts) { - log.info('rendering current tx view') - const { txData } = opts - const { txParams, msgParams, type } = txData - - if (txParams) { - log.debug('txParams detected, rendering pending tx') - return h(PendingTx, opts) - } else if (msgParams) { - log.debug('msgParams detected, rendering pending msg') - - if (type === 'eth_sign') { - log.debug('rendering eth_sign message') - return h(PendingMsg, opts) - } else if (type === 'personal_sign') { - log.debug('rendering personal_sign message') - return h(PendingPersonalMsg, opts) - } else if (type === 'eth_signTypedData') { - log.debug('rendering eth_signTypedData message') - return h(PendingTypedMsg, opts) - } - } -} - -ConfirmTxScreen.prototype.buyEth = function (address, event) { - event.preventDefault() - this.props.dispatch(actions.buyEthView(address)) -} - -ConfirmTxScreen.prototype.sendTransaction = function (txData, event) { - this.stopPropagation(event) - this.props.dispatch(actions.updateAndApproveTx(txData)) -} - -ConfirmTxScreen.prototype.cancelTransaction = function (txData, event) { - this.stopPropagation(event) - event.preventDefault() - this.props.dispatch(actions.cancelTx(txData)) -} - -ConfirmTxScreen.prototype.cancelAllTransactions = function (unconfTxList, event) { - this.stopPropagation(event) - event.preventDefault() - this.props.dispatch(actions.cancelAllTx(unconfTxList)) -} - -ConfirmTxScreen.prototype.signMessage = function (msgData, event) { - log.info('conf-tx.js: signing message') - var params = msgData.msgParams - params.metamaskId = msgData.id - this.stopPropagation(event) - this.props.dispatch(actions.signMsg(params)) -} - -ConfirmTxScreen.prototype.stopPropagation = function (event) { - if (event.stopPropagation) { - event.stopPropagation() - } -} - -ConfirmTxScreen.prototype.signPersonalMessage = function (msgData, event) { - log.info('conf-tx.js: signing personal message') - var params = msgData.msgParams - params.metamaskId = msgData.id - this.stopPropagation(event) - this.props.dispatch(actions.signPersonalMsg(params)) -} - -ConfirmTxScreen.prototype.signTypedMessage = function (msgData, event) { - log.info('conf-tx.js: signing typed message') - var params = msgData.msgParams - params.metamaskId = msgData.id - this.stopPropagation(event) - this.props.dispatch(actions.signTypedMsg(params)) -} - -ConfirmTxScreen.prototype.cancelMessage = function (msgData, event) { - log.info('canceling message') - this.stopPropagation(event) - this.props.dispatch(actions.cancelMsg(msgData)) -} - -ConfirmTxScreen.prototype.cancelPersonalMessage = function (msgData, event) { - log.info('canceling personal message') - this.stopPropagation(event) - this.props.dispatch(actions.cancelPersonalMsg(msgData)) -} - -ConfirmTxScreen.prototype.cancelTypedMessage = function (msgData, event) { - log.info('canceling typed message') - this.stopPropagation(event) - this.props.dispatch(actions.cancelTypedMsg(msgData)) -} - -ConfirmTxScreen.prototype.goHome = function (event) { - this.stopPropagation(event) - this.props.dispatch(actions.goHome()) -} - -function warningIfExists (warning) { - if (warning && - // Do not display user rejections on this screen: - warning.indexOf('User denied transaction signature') === -1) { - return h('.error', { - style: { - margin: 'auto', - }, - }, warning) - } -} diff --git a/old-ui/app/config.js b/old-ui/app/config.js deleted file mode 100644 index da71809c4..000000000 --- a/old-ui/app/config.js +++ /dev/null @@ -1,383 +0,0 @@ -const inherits = require('util').inherits -const Component = require('react').Component -const h = require('react-hyperscript') -const connect = require('react-redux').connect -const actions = require('../../ui/app/actions') -const infuraCurrencies = require('./infura-conversion.json').objects.sort((a, b) => { - return a.quote.name.toLocaleLowerCase().localeCompare(b.quote.name.toLocaleLowerCase()) - }) -const validUrl = require('valid-url') -const exportAsFile = require('./util').exportAsFile -const Modal = require('../../ui/app/components/modals/index').Modal - -module.exports = connect(mapStateToProps)(ConfigScreen) - -function mapStateToProps (state) { - return { - metamask: state.metamask, - warning: state.appState.warning, - } -} - -inherits(ConfigScreen, Component) -function ConfigScreen () { - Component.call(this) -} - -ConfigScreen.prototype.render = function () { - var state = this.props - var metamaskState = state.metamask - var warning = state.warning - - return ( - h('.flex-column.flex-grow', { - style: { - maxHeight: '585px', - overflowY: 'auto', - }, - }, [ - - h(Modal, {}, []), - - // subtitle and nav - h('.section-title.flex-row.flex-center', [ - h('i.fa.fa-arrow-left.fa-lg.cursor-pointer', { - onClick: () => { - state.dispatch(actions.goHome()) - }, - }), - h('h2.page-subtitle', 'Settings'), - ]), - - h('.error', { - style: { - display: warning ? 'block' : 'none', - padding: '0 20px', - textAlign: 'center', - }, - }, warning), - - // conf view - h('.flex-column.flex-justify-center.flex-grow.select-none', [ - h('.flex-space-around', { - style: { - padding: '20px', - overflow: 'auto', - }, - }, [ - - currentProviderDisplay(metamaskState), - - h('div', { style: {display: 'block'} }, [ - h('input#new_rpc', { - placeholder: 'New RPC URL', - style: { - width: 'inherit', - flex: '1 0 auto', - height: '30px', - margin: '8px', - }, - onKeyPress (event) { - if (event.key === 'Enter') { - var element = event.target - var newRpc = element.value - var chainid = document.querySelector('input#chainid') - var ticker = document.querySelector('input#ticker') - var nickname = document.querySelector('input#nickname') - rpcValidation(newRpc, chainid.value, ticker.value, nickname.value, state) - } - }, - }), - h('br'), - h('input#chainid', { - placeholder: 'ChainId (optional)', - style: { - width: 'inherit', - flex: '1 0 auto', - height: '30px', - margin: '8px', - }, - onKeyPress (event) { - if (event.key === 'Enter') { - var element = document.querySelector('input#new_rpc') - var newRpc = element.value - var chainid = document.querySelector('input#chainid') - var ticker = document.querySelector('input#ticker') - var nickname = document.querySelector('input#nickname') - rpcValidation(newRpc, chainid.value, ticker.value, nickname.value, state) - } - }, - }), - h('br'), - h('input#ticker', { - placeholder: 'Symbol (optional)', - style: { - width: 'inherit', - flex: '1 0 auto', - height: '30px', - margin: '8px', - }, - onKeyPress (event) { - if (event.key === 'Enter') { - var element = document.querySelector('input#new_rpc') - var newRpc = element.value - var chainid = document.querySelector('input#chainid') - var ticker = document.querySelector('input#ticker') - var nickname = document.querySelector('input#nickname') - rpcValidation(newRpc, chainid.value, ticker.value, nickname.value, state) - } - }, - }), - h('br'), - h('input#nickname', { - placeholder: 'Nickname (optional)', - style: { - width: 'inherit', - flex: '1 0 auto', - height: '30px', - margin: '8px', - }, - onKeyPress (event) { - if (event.key === 'Enter') { - var element = document.querySelector('input#new_rpc') - var newRpc = element.value - var chainid = document.querySelector('input#chainid') - var ticker = document.querySelector('input#ticker') - var nickname = document.querySelector('input#nickname') - rpcValidation(newRpc, chainid.value, ticker.value, nickname.value, state) - } - }, - }), - h('button', { - style: { - alignSelf: 'center', - }, - onClick (event) { - event.preventDefault() - var element = document.querySelector('input#new_rpc') - var newRpc = element.value - var chainid = document.querySelector('input#chainid') - var ticker = document.querySelector('input#ticker') - var nickname = document.querySelector('input#nickname') - rpcValidation(newRpc, chainid.value, ticker.value, nickname.value, state) - }, - }, 'Save'), - ]), - - h('hr.horizontal-line'), - - currentConversionInformation(metamaskState, state), - - h('hr.horizontal-line'), - - h('div', { - style: { - marginTop: '20px', - }, - }, [ - h('p', { - style: { - fontFamily: 'Montserrat Light', - fontSize: '13px', - }, - }, `State logs contain your public account addresses and sent transactions.`), - h('br'), - h('button', { - style: { - alignSelf: 'center', - }, - onClick (event) { - window.logStateString((err, result) => { - if (err) { - state.dispatch(actions.displayWarning('Error in retrieving state logs.')) - } else { - exportAsFile('MetaMask State Logs.json', result) - } - }) - }, - }, 'Download State Logs'), - ]), - - h('hr.horizontal-line'), - - h('div', { - style: { - marginTop: '20px', - }, - }, [ - h('p', { - style: { - fontFamily: 'Montserrat Light', - fontSize: '13px', - }, - }, 'Clear privacy data so all websites must request access to view account information again.'), - h('br'), - h('button', { - style: { - alignSelf: 'center', - }, - onClick (event) { - event.preventDefault() - state.dispatch(actions.clearApprovedOrigins()) - }, - }, 'Clear privacy data'), - ]), - - h('hr.horizontal-line'), - - h('div', { - style: { - marginTop: '20px', - }, - }, [ - h('p', { - style: { - fontFamily: 'Montserrat Light', - fontSize: '13px', - }, - }, metamaskState.featureFlags.privacyMode ? - 'Websites will be able to view your account information.' : - 'Websites must request access to view your account information.' - ), - h('br'), - h('button', { - style: { - alignSelf: 'center', - }, - onClick (event) { - event.preventDefault() - state.dispatch(actions.setFeatureFlag('privacyMode', !metamaskState.featureFlags.privacyMode)) - }, - }, metamaskState.featureFlags.privacyMode ? - 'Disable privacy mode' : - 'Enable privacy mode' - ), - ]), - - h('hr.horizontal-line'), - - h('div', { - style: { - marginTop: '20px', - }, - }, [ - h('button', { - style: { - alignSelf: 'center', - }, - onClick (event) { - event.preventDefault() - state.dispatch(actions.revealSeedConfirmation()) - }, - }, 'Reveal Seed Words'), - ]), - - h('hr.horizontal-line'), - - h('div', { - style: { - marginTop: '20px', - }, - }, [ - - h('p', { - style: { - fontFamily: 'Montserrat Light', - fontSize: '13px', - }, - }, [ - 'Resetting is for developer use only. ', - h('a', { - href: 'https://metamask.zendesk.com/hc/en-us/articles/360015489231-Resetting-an-Account-Old-UI-', - target: '_blank', - }, 'Read more.'), - ]), - h('br'), - - h('button', { - style: { - alignSelf: 'center', - }, - onClick (event) { - event.preventDefault() - state.dispatch(actions.resetAccount()) - }, - }, 'Reset Account'), - ]), - - ]), - ]), - ]) - ) -} - -function rpcValidation (newRpc, chainid, ticker = 'ETH', nickname = '', state) { - if (validUrl.isWebUri(newRpc)) { - state.dispatch(actions.setRpcTarget(newRpc, chainid, ticker, nickname)) - } else { - var appendedRpc = `http://${newRpc}` - if (validUrl.isWebUri(appendedRpc)) { - state.dispatch(actions.displayWarning('URIs require the appropriate HTTP/HTTPS prefix.')) - } else { - state.dispatch(actions.displayWarning('Invalid RPC URI')) - } - } -} - -function currentConversionInformation (metamaskState, state) { - var currentCurrency = metamaskState.currentCurrency - var conversionDate = metamaskState.conversionDate - return h('div', [ - h('span', {style: { fontWeight: 'bold', paddingRight: '10px'}}, 'Current Conversion'), - h('span', {style: { fontWeight: 'bold', paddingRight: '10px', fontSize: '13px'}}, `Updated ${Date(conversionDate)}`), - h('select#currentCurrency', { - onChange (event) { - event.preventDefault() - var element = document.getElementById('currentCurrency') - var newCurrency = element.value - state.dispatch(actions.setCurrentCurrency(newCurrency)) - }, - defaultValue: currentCurrency, - }, infuraCurrencies.map((currency) => { - return h('option', {key: currency.quote.code, value: currency.quote.code}, `${currency.quote.code.toUpperCase()} - ${currency.quote.name}`) - }) - ), - ]) -} - -function currentProviderDisplay (metamaskState) { - var provider = metamaskState.provider - var title, value - - switch (provider.type) { - - case 'mainnet': - title = 'Current Network' - value = 'Main Ethereum Network' - break - - case 'ropsten': - title = 'Current Network' - value = 'Ropsten Test Network' - break - - case 'kovan': - title = 'Current Network' - value = 'Kovan Test Network' - break - - case 'rinkeby': - title = 'Current Network' - value = 'Rinkeby Test Network' - break - - default: - title = 'Current RPC' - value = metamaskState.provider.rpcTarget - } - - return h('div', [ - h('span', {style: { fontWeight: 'bold', paddingRight: '10px'}}, title), - h('span', value), - ]) -} diff --git a/old-ui/app/css/debug.css b/old-ui/app/css/debug.css deleted file mode 100644 index 3e125bcd4..000000000 --- a/old-ui/app/css/debug.css +++ /dev/null @@ -1,21 +0,0 @@ -/* -debug / dev -*/ - -#app-content { - border: 2px solid green; -} - -#design-container { - position: absolute; - left: 360px; - top: -42px; - width: calc(100vw - 360px); - height: 100vh; - overflow: scroll; -} - -#design-container img { - width: 2000px; - margin-right: 600px; -}
\ No newline at end of file diff --git a/old-ui/app/css/fonts.css b/old-ui/app/css/fonts.css deleted file mode 100644 index b1d701ee5..000000000 --- a/old-ui/app/css/fonts.css +++ /dev/null @@ -1,372 +0,0 @@ -/* cyrillic-ext */ -@import url('/fonts/Font_Awesome/font-awesome.min.css'); - -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 100; - src: local('Roboto Thin'), local('Roboto-Thin'), url('fonts/Roboto/Roboto-Thin.ttf') format('truetype'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} -/* cyrillic */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 100; - src: local('Roboto Thin'), local('Roboto-Thin'), url('fonts/Roboto/Roboto-Thin.ttf') format('truetype'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -/* greek-ext */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 100; - src: local('Roboto Thin'), local('Roboto-Thin'), url('fonts/Roboto/Roboto-Thin.ttf') format('truetype'); - unicode-range: U+1F00-1FFF; -} -/* greek */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 100; - src: local('Roboto Thin'), local('Roboto-Thin'), url('fonts/Roboto/Roboto-Thin.ttf') format('truetype'); - unicode-range: U+0370-03FF; -} -/* vietnamese */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 100; - src: local('Roboto Thin'), local('Roboto-Thin'), url('fonts/Roboto/Roboto-Thin.ttf') format('truetype'); - unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; -} -/* latin-ext */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 100; - src: local('Roboto Thin'), local('Roboto-Thin'), url('fonts/Roboto/Roboto-Thin.ttf') format('truetype'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 100; - src: local('Roboto Thin'), local('Roboto-Thin'), url('fonts/Roboto/Roboto-Thin.ttf') format('truetype'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* cyrillic-ext */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url('fonts/Roboto/Roboto-Light.ttf') format('truetype'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} -/* cyrillic */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url('fonts/Roboto/Roboto-Light.ttf') format('truetype'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -/* greek-ext */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url('fonts/Roboto/Roboto-Light.ttf') format('truetype'); - unicode-range: U+1F00-1FFF; -} -/* greek */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url('fonts/Roboto/Roboto-Light.ttf') format('truetype'); - unicode-range: U+0370-03FF; -} -/* vietnamese */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url('fonts/Roboto/Roboto-Light.ttf') format('truetype'); - unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; -} -/* latin-ext */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url('fonts/Roboto/Roboto-Light.ttf') format('truetype'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url('fonts/Roboto/Roboto-Light.ttf') format('truetype'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* cyrillic-ext */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 400; - src: local('Roboto'), local('Roboto-Regular'), url('fonts/Roboto/Roboto-Regular.ttf') format('truetype'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} -/* cyrillic */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 400; - src: local('Roboto'), local('Roboto-Regular'), url('fonts/Roboto/Roboto-Regular.ttf') format('truetype'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -/* greek-ext */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 400; - src: local('Roboto'), local('Roboto-Regular'), url('fonts/Roboto/Roboto-Regular.ttf') format('truetype'); - unicode-range: U+1F00-1FFF; -} -/* greek */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 400; - src: local('Roboto'), local('Roboto-Regular'), url('fonts/Roboto/Roboto-Regular.ttf') format('truetype'); - unicode-range: U+0370-03FF; -} -/* vietnamese */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 400; - src: local('Roboto'), local('Roboto-Regular'), url('fonts/Roboto/Roboto-Regular.ttf') format('truetype'); - unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; -} -/* latin-ext */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 400; - src: local('Roboto'), local('Roboto-Regular'), url('fonts/Roboto/Roboto-Regular.ttf') format('truetype'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 400; - src: local('Roboto'), local('Roboto-Regular'), url('fonts/Roboto/Roboto-Regular.ttf') format('truetype'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* cyrillic-ext */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 500; - src: local('Roboto Medium'), local('Roboto-Medium'), url('fonts/Roboto/Roboto-Medium.ttf') format('truetype'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} -/* cyrillic */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 500; - src: local('Roboto Medium'), local('Roboto-Medium'), url('fonts/Roboto/Roboto-Medium.ttf') format('truetype'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -/* greek-ext */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 500; - src: local('Roboto Medium'), local('Roboto-Medium'), url('fonts/Roboto/Roboto-Medium.ttf') format('truetype'); - unicode-range: U+1F00-1FFF; -} -/* greek */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 500; - src: local('Roboto Medium'), local('Roboto-Medium'), url('fonts/Roboto/Roboto-Medium.ttf') format('truetype'); - unicode-range: U+0370-03FF; -} -/* vietnamese */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 500; - src: local('Roboto Medium'), local('Roboto-Medium'), url('fonts/Roboto/Roboto-Medium.ttf') format('truetype'); - unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; -} -/* latin-ext */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 500; - src: local('Roboto Medium'), local('Roboto-Medium'), url('fonts/Roboto/Roboto-Medium.ttf') format('truetype'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 500; - src: local('Roboto Medium'), local('Roboto-Medium'), url('fonts/Roboto/Roboto-Medium.ttf') format('truetype'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* cyrillic-ext */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 700; - src: local('Roboto Bold'), local('Roboto-Bold'), url('fonts/Roboto/Roboto-Bold.ttf') format('truetype'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} -/* cyrillic */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 700; - src: local('Roboto Bold'), local('Roboto-Bold'), url('fonts/Roboto/Roboto-Bold.ttf') format('truetype'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -/* greek-ext */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 700; - src: local('Roboto Bold'), local('Roboto-Bold'), url('fonts/Roboto/Roboto-Bold.ttf') format('truetype'); - unicode-range: U+1F00-1FFF; -} -/* greek */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 700; - src: local('Roboto Bold'), local('Roboto-Bold'), url('fonts/Roboto/Roboto-Bold.ttf') format('truetype'); - unicode-range: U+0370-03FF; -} -/* vietnamese */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 700; - src: local('Roboto Bold'), local('Roboto-Bold'), url('fonts/Roboto/Roboto-Bold.ttf') format('truetype'); - unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; -} -/* latin-ext */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 700; - src: local('Roboto Bold'), local('Roboto-Bold'), url('fonts/Roboto/Roboto-Bold.ttf') format('truetype'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 700; - src: local('Roboto Bold'), local('Roboto-Bold'), url('fonts/Roboto/Roboto-Bold.ttf') format('truetype'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* cyrillic-ext */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 900; - src: local('Roboto Black'), local('Roboto-Black'), url('fonts/Roboto/Roboto-Black.ttf') format('truetype'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} -/* cyrillic */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 900; - src: local('Roboto Black'), local('Roboto-Black'), url('fonts/Roboto/Roboto-Black.ttf') format('truetype'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -/* greek-ext */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 900; - src: local('Roboto Black'), local('Roboto-Black'), url('fonts/Roboto/Roboto-Black.ttf') format('truetype'); - unicode-range: U+1F00-1FFF; -} -/* greek */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 900; - src: local('Roboto Black'), local('Roboto-Black'), url('fonts/Roboto/Roboto-Black.ttf') format('truetype'); - unicode-range: U+0370-03FF; -} -/* vietnamese */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 900; - src: local('Roboto Black'), local('Roboto-Black'), url('fonts/Roboto/Roboto-Black.ttf') format('truetype'); - unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; -} -/* latin-ext */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 900; - src: local('Roboto Black'), local('Roboto-Black'), url('fonts/Roboto/Roboto-Black.ttf') format('truetype'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 900; - src: local('Roboto Black'), local('Roboto-Black'), url('fonts/Roboto/Roboto-Black.ttf') format('truetype'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} - -@font-face { - font-family: 'Montserrat Regular'; - src: url('/fonts/Montserrat/Montserrat-Regular.woff') format('woff'); - src: url('/fonts/Montserrat/Montserrat-Regular.ttf') format('truetype'); - font-weight: normal; - font-style: normal; - font-size: 'small'; - -} - -@font-face { - font-family: 'Montserrat Bold'; - src: url('/fonts/Montserrat/Montserrat-Bold.woff') format('woff'); - src: url('/fonts/Montserrat/Montserrat-Bold.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: 'Montserrat Light'; - src: url('/fonts/Montserrat/Montserrat-Light.woff') format('woff'); - src: url('/fonts/Montserrat/Montserrat-Light.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: 'Montserrat UltraLight'; - src: url('/fonts/Montserrat/Montserrat-UltraLight.woff') format('woff'); - src: url('/fonts/Montserrat/Montserrat-UltraLight.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} diff --git a/old-ui/app/css/index.css b/old-ui/app/css/index.css deleted file mode 100644 index d209b4754..000000000 --- a/old-ui/app/css/index.css +++ /dev/null @@ -1,939 +0,0 @@ -/* -faint orange (textfield shades) #FAF6F0 -light orange (button shades): #F5C26D -dark orange (text): #F5A623 -borders/font/any gray: #4A4A4A -*/ - -/* -application specific styles -*/ - -* { - box-sizing: border-box; -} - -html, body { - font-family: 'Montserrat Regular', Arial; - color: #4D4D4D; - font-weight: 300; - line-height: 1.4em; - background: #F7F7F7; - margin: 0; - padding: 0; - height: 100%; -} - -html { - min-height: 500px; -} - -.app-root { - overflow: hidden; - position: relative -} - -.app-primary { - display: flex; -} - -input:focus, textarea:focus { - outline: none; -} - -.full-size { - height: 100%; - width: 100%; -} - -.full-width { - width: 100%; -} - -.full-height { - height: 100%; -} - -.full-flex-height { - display: flex; - flex: 1 1 auto; - flex-direction: column; -} - -#app-content { - overflow-x: hidden; - height: 100%; - display: flex; - flex-direction: column; -} - -button, input[type="submit"] { - font-family: 'Montserrat Bold'; - outline: none; - cursor: pointer; - padding: 8px 12px; - border: none; - color: white; - transform-origin: center center; - transition: transform 50ms ease-in; - /* default orange */ - background: rgba(247, 134, 28, 1); - box-shadow: 0px 3px 6px rgba(247, 134, 28, 0.36); -} - -.btn-green, input[type="submit"].btn-green { - background: rgba(106, 195, 96, 1); - box-shadow: 0px 3px 6px rgba(106, 195, 96, 0.36); -} - -.btn-red { - background: rgba(254, 35, 17, 1); - box-shadow: 0px 3px 6px rgba(254, 35, 17, 0.36); -} - -button[disabled], input[type="submit"][disabled] { - cursor: not-allowed; - background: rgba(197, 197, 197, 1); - box-shadow: 0px 3px 6px rgba(197, 197, 197, 0.36); -} - -button.spaced { - margin: 2px; -} - -button:not([disabled]):hover, input[type="submit"]:not([disabled]):hover { - transform: scale(1.1); -} -button:not([disabled]):active, input[type="submit"]:not([disabled]):active { - transform: scale(0.95); -} - -.grow-on-hover:hover { - transform: scale(1.05); -} - -a { - text-decoration: none; - color: inherit; -} - -a:hover{ - color: #df6b0e; -} - -/* -app -*/ - -.active { - color: #909090; -} - -button.primary { - padding: 8px 12px; - background: #F7861C; - box-shadow: 0px 3px 6px rgba(247, 134, 28, 0.36); - color: white; - font-size: 1.1em; - font-family: 'Montserrat Regular'; - text-transform: uppercase; -} - -button.btn-thin { - border: 1px solid; - border-color: #4D4D4D; - color: #4D4D4D; - background: rgb(255, 174, 41); - border-radius: 4px; - min-width: 200px; - margin: 12px 0; - padding: 6px; - font-size: 13px; -} - -.app-header { - padding: 6px 8px; -} - -.app-header h1 { - font-family: 'Montserrat Regular'; - text-transform: uppercase; - color: #AEAEAE; -} - -h2.page-subtitle { - font-family: 'Montserrat Regular'; - text-transform: uppercase; - color: #AEAEAE; - font-size: 1em; - margin: 12px; -} - -.app-footer { - padding-bottom: 10px; - align-items: center; -} - -.identicon { - height: 46px; - width: 46px; - background-size: cover; - border-radius: 100%; - border: 3px solid gray; -} - -textarea.twelve-word-phrase { - padding: 12px; - width: 300px; - height: 140px; - font-size: 16px; - background: white; - resize: none; -} - -.network-indicator { - display: flex; - align-items: center; - font-size: 0.6em; - -} - -.network-name { - width: 5.2em; - line-height: 9px; - text-rendering: geometricPrecision; -} - -.check { - margin-left: 12px; - color: #F7861C; - flex: 1 0 auto; - display: flex; - justify-content: flex-end; -} -/* -app sections -*/ - -/* initialize */ - -.initialize-screen hr { - width: 60px; - margin: 12px; - border-color: #F7861C; - border-style: solid; -} - -.initialize-screen label { - margin-top: 20px; -} - -.initialize-screen button.create-vault { - margin-top: 40px; -} - -.initialize-screen .warning { - font-size: 14px; - margin: 0 16px; -} - -/* unlock */ -.error { - color: #f7861c; - margin-bottom: 9px; -} - -.warning { - color: #FFAE00; -} - -.dropped { - color: #6195ED; -} - -.lock { - width: 50px; - height: 50px; -} - -.lock.locked { - transform: scale(1.5); - opacity: 0.0; - transition: opacity 400ms ease-in, transform 400ms ease-in; -} -.lock.unlocked { - transform: scale(1); - opacity: 1; - transition: opacity 500ms ease-out, transform 500ms ease-out, background 200ms ease-in; -} - -.lock.locked .lock-top { - transform: scaleX(1) translateX(0); - transition: transform 250ms ease-in; -} -.lock.unlocked .lock-top { - transform: scaleX(-1) translateX(-12px); - transition: transform 250ms ease-in; -} -.lock.unlocked:hover { - border-radius: 4px; - background: #e5e5e5; - border: 1px solid #b1b1b1; -} -.lock.unlocked:active { - background: #c3c3c3; -} - -.section-title .fa-arrow-left { - margin: -2px 8px 0px -8px; -} - -.unlock-screen #metamask-mascot-container { - margin-top: 80px; -} - -.unlock-screen h1 { - margin-top: -28px; - margin-bottom: 42px; -} - -.unlock-screen input[type=password] { - width: 260px; - /*height: 36px; - margin-bottom: 24px; - padding: 8px;*/ -} - -.sizing-input{ - font-size: 14px; - height: 30px; - padding-left: 5px; -} -.editable-label{ - display: flex; -} -/* Webkit */ -.unlock-screen input::-webkit-input-placeholder { - text-align: center; - font-size: 1.2em; -} -/* Firefox 18- */ -.unlock-screen input:-moz-placeholder { - text-align: center; - font-size: 1.2em; -} -/* Firefox 19+ */ -.unlock-screen input::-moz-placeholder { - text-align: center; - font-size: 1.2em; -} -/* IE */ -.unlock-screen input:-ms-input-placeholder { - text-align: center; - font-size: 1.2em; -} - -input.large-input, textarea.large-input { - /*margin-bottom: 24px;*/ - padding: 8px; -} - -input.large-input { - height: 36px; -} - -.letter-spacey { - letter-spacing: 0.1em; -} - - - -/* accounts */ - -.accounts-section { - margin: 0 0px; -} - -.accounts-section .horizontal-line { - margin: 0px 18px; -} - -.accounts-list-option { - height: 120px; -} - -.accounts-list-option .identicon-wrapper { - width: 100px; -} - -.unconftx-link { - margin-top: 24px; - cursor: pointer; -} - -.unconftx-link .fa-arrow-right { - margin: 0px -8px 0px 8px; -} - -/* identity panel */ - -.identity-panel { - font-weight: 500; -} - -.identity-panel .identicon-wrapper { - margin: 4px; - margin-top: 8px; - display: flex; - align-items: center; -} - -.identity-panel .identicon-wrapper span { - margin: 0 auto; -} - -.identity-panel .identity-data { - margin: 8px 8px 8px 18px; -} - -.identity-panel i { - margin-top: 32px; - margin-right: 6px; - color: #B9B9B9; -} - -.identity-panel .arrow-right { - padding-left: 18px; - width: 42px; - min-width: 18px; - height: 100%; -} - -.identity-copy.flex-column { - flex: 0.25 0 auto; - justify-content: center; -} - -/* accounts screen */ - -.identity-section { - -} - -.identity-section .identity-panel { - background: #E9E9E9; - border-bottom: 1px solid #B1B1B1; - cursor: pointer; -} - -.identity-section .identity-panel.selected { - background: white; - color: #F3C83E; -} - -.identity-section .identity-panel.selected .identicon { - border-color: orange; -} - -.identity-section .accounts-list-option:hover, -.identity-section .accounts-list-option.selected { - background:white; -} - -/* account detail screen */ - -.account-detail-section { - display: flex; - flex-wrap: wrap; - overflow-x: hidden; - overflow-y: auto; - max-height: 585px; - flex-direction: inherit; -} - -.account-detail-section .name-label { - margin-left: 15px; -} - -.grow-tenx { - flex-grow: 10; -} - -.name-label{ - -} - -.unapproved-tx-icon { - height: 16px; - width: 16px; - background: rgb(47, 174, 244); - border-color: #AEAEAE; - border-radius: 13px; -} - -.edit-text { - height: 100%; - visibility: hidden; -} -.editing-label { - display: flex; - justify-content: flex-start; - margin-left: 50px; - margin-bottom: 2px; - font-size: 11px; - text-rendering: geometricPrecision; - color: #F7861C; -} -.name-label:hover .edit-text { - visibility: visible; -} -/* tx confirm */ - -.unconftx-section input[type=password] { - height: 22px; - padding: 2px; - margin: 12px; - margin-bottom: 24px; - border-radius: 4px; - border: 2px solid #F3C83E; - background: #FAF6F0; -} - -/* Send Screen */ - -.send-screen { - -} - -.send-screen section { - margin: 8px 16px; -} - -.send-screen input { - width: 100%; - font-size: 12px; -} - -/* Ether Balance Widget */ - -.ether-balance-amount { - color: #F7861C; -} - -.ether-balance-label { - color: #ABA9AA; -} - -/* Info screen */ -.info-gray{ - font-family: 'Montserrat Regular'; - text-transform: uppercase; - color: #AEAEAE; -} - -.icon-size{ - width: 20px; -} - -.info{ - font-family: 'Montserrat Regular', Arial; - padding-bottom: 10px; - display: inline-block; - padding-left: 5px; -} - -/* buy eth warning screen */ -.custom-radios { - justify-content: space-around; - align-items: center; -} - - -.custom-radio-selected { - width: 17px; - height: 17px; - border: solid; - border-style: double; - border-radius: 15px; - border-width: 5px; - background: rgba(247, 134, 28, 1); - border-color: #F7F7F7; -} - -.custom-radio-inactive { - width: 14px; - height: 14px; - border: solid; - border-width: 1px; - border-radius: 24px; - border-color: #AEAEAE; -} - -.radio-titles { - color: rgba(247, 134, 28, 1); -} - -.radio-titles-subtext { - -} - -.selected-exchange { - -} - -.buy-radio { - -} - -.eth-warning{ - transition: opacity 400ms ease-in, transform 400ms ease-in; -} - -.buy-subview{ - transition: opacity 400ms ease-in, transform 400ms ease-in; -} - -.input-container:hover .edit-text{ - visibility: visible; -} - -.buy-inputs{ - font-family: 'Montserrat Light'; - font-size: 13px; - height: 20px; - background: transparent; - box-sizing: border-box; - border: solid; - border-color: transparent; - border-width: 0.5px; - border-radius: 2px; - -} -.input-container:hover .buy-inputs{ - box-sizing: inherit; - border: solid; - border-color: #F7861C; - border-width: 0.5px; - border-radius: 2px; -} - -.buy-inputs:focus{ - border: solid; - border-color: #F7861C; - border-width: 0.5px; - border-radius: 2px; -} - -.activeForm { - background: #F7F7F7; - border: none; - border-radius: 8px 8px 0px 0px; - width: 50%; - text-align: center; - padding-bottom: 4px; - -} - -.inactiveForm { - border: none; - border-radius: 8px 8px 0px 0px; - width: 50%; - text-align: center; - padding-bottom: 4px; -} - -.ex-coins { - font-family: 'Montserrat Regular'; - text-transform: uppercase; - text-align: center; - font-size: 33px; - width: 118px; - height: 42px; - padding: 1px; - color: #4D4D4D; -} - -.marketinfo{ - font-family: 'Montserrat light'; - color: #AEAEAE; - font-size: 15px; - line-height: 17px; -} - -#fromCoin::-webkit-calendar-picker-indicator { - display: none; -} - -#coinList { - width: 400px; - height: 500px; - overflow: scroll; -} - -.icon-control .fa-refresh{ - visibility: hidden; -} - -.icon-control:hover .fa-refresh{ - visibility: visible; -} - -.icon-control:hover .fa-chevron-right{ - visibility: hidden; -} - -.inactive { - color: #AEAEAE; -} - -.inactive button{ - background: #AEAEAE; - color: white; -} - -.ellip-address { - overflow: hidden; - text-overflow: ellipsis; - width: 5em; - font-size: 14px; - font-family: "Montserrat Light"; - margin-left: 5px; -} - -.qr-header { - font-size: 25px; - margin-top: 40px; -} - -.qr-message { - font-size: 12px; - color: #F7861C; -} - -div.message-container > div:first-child { - margin-top: 18px; - font-size: 15px; - color: #4D4D4D; -} - -.pop-hover:hover { - transform: scale(1.1); -} - -.new-ui-announcement { - display: flex; - flex-direction: column; - height: 100%; - background: white; - color: #4D4D4D; - font-family: Roboto, Arial, sans-serif; - padding: 1.5rem; -} - -.new-ui-announcement__announcement-header { - display: flex; - flex-direction: row; - justify-content: space-between; - padding-bottom: 1rem; -} - -.new-ui-announcement__announcement-header a.close { - cursor: pointer; - font-size: 32px; - line-height: 17px; -} - -.new-ui-announcement__announcement-header a.close:hover { - color: inherit; -} - -.new-ui-announcement__announcement-header h1 { - color: #33A4E7; - text-transform: uppercase; - font-size: 18px; - font-weight: 400; -} - -.new-ui-announcement__body { - display: flex; - flex: 1; - flex-direction: column; - font-size: 10.5pt; - font-weight: 300; -} - -.new-ui-announcement__body h1 { - font-size: 22px; - font-weight: 600; - padding-bottom: 1rem; -} - -.new-ui-announcement__body a { - color: #33A4E7; -} - -.new-ui-announcement__body .updates-list { - padding: .5rem 1rem; -} - -.new-ui-announcement__body .updates-list h2 { - font-weight: 600; -} - -.new-ui-announcement__body .updates-list ul { - list-style: disc inside; -} - -.new-ui-announcement__footer { - display: flex; - flex-direction: column; - align-items: center; -} - -.new-ui-announcement__footer h1 { - font-family: inherit; - font-weight: 600; -} - -.new-ui-announcement__footer button:hover { - transform: none; -} - -.new-ui-announcement__footer button.positive { - padding: 1rem; - margin: 1rem; - background: #33A4E7; - color: white; - text-transform: uppercase; - box-shadow: none; - border-radius: 5px; - font-family: inherit; - font-size: 13px; - font-weight: 400; - width: 90%; -} - -.new-ui-announcement__footer button.negative { - margin: 0; - padding: 0; - background: white; - color: #33A4E7; - font-family: inherit; - font-size: 13px; - font-weight: 400; - box-shadow: none; -} - -.app-bar { - width: 100%; - display: flex; - flex-direction: column; -} - -.app-bar__new-ui-banner { - background: #33A4E7; - color: white; - font-size: 12px; - line-height: 12px; - padding: 8px; - font-family: Roboto, Arial, sans-serif; - font-weight: 400; - width: 100%; -} - -.banner__link { - cursor: pointer; - text-decoration: underline; -} - -.notification-modal-wrapper { - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: center; - position: relative; - border: 1px solid #dedede; - box-shadow: 0 0 2px 2px #dedede; - font-family: Roboto; -} - -.notification-modal-header { - background: #f6f6f6; - width: 100%; - display: flex; - justify-content: center; - padding: 30px; - font-size: 22px; - color: #1b344d; - height: 79px; -} - -.notification-modal-message { - padding: 20px; -} - -.notification-modal-message { - width: 100%; - display: flex; - justify-content: center; - font-size: 17px; - color: #1b344d; -} - -.modal-close-x::after { - content: '\00D7'; - font-size: 2em; - color: #9b9b9b; - position: absolute; - top: 25px; - right: 17.5px; - font-family: sans-serif; - cursor: pointer; -} - -.notification-modal__wrapper { - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: center; - position: relative; - border: 1px solid #dedede; - box-shadow: 0 0 2px 2px #dedede; - font-family: Roboto; -} - -.notification-modal__header { - background: #f6f6f6; - width: 100%; - display: flex; - justify-content: center; - padding: 30px; - font-size: 22px; - color: #1b344d; - height: 79px; -} - -.notification-modal__message { - padding: 20px; - width: 100%; - display: flex; - justify-content: center; - font-size: 17px; - color: #1b344d; -} - -.notification-modal__buttons { - display: flex; - justify-content: space-evenly; - width: 100%; - margin-bottom: 24px; - padding: 0px 42px; -} - -.notification-modal__buttons__btn { - cursor: pointer; -} - -.notification-modal__link { - color: #2f9ae0; -} diff --git a/old-ui/app/css/lib.css b/old-ui/app/css/lib.css deleted file mode 100644 index fd63b2b2e..000000000 --- a/old-ui/app/css/lib.css +++ /dev/null @@ -1,306 +0,0 @@ -/* color */ - -.color-orange { - color: #F7861C; -} - -.color-forest { - color: #0A5448; -} - -/* lib */ - -.full-width { - width: 100%; -} - -.full-height { - height: 100%; -} - -.flex-column { - display: flex; - flex-direction: column; -} - -.space-between { - justify-content: space-between; -} - -.space-around { - justify-content: space-around; -} - -.flex-column-bottom { - display: flex; - flex-direction: column-reverse; -} - -.flex-row { - display: flex; - flex-direction: row; -} - -.flex-space-between { - justify-content: space-between; -} - -.flex-space-around { - justify-content: space-around; -} - -.flex-right { - display: flex; - flex-direction: row; - justify-content: flex-end; -} - -.flex-left { - display: flex; - flex-direction: row; - justify-content: flex-start; -} - -.flex-fixed { - flex: none; -} - -.flex-basis-auto { - flex-basis: auto; -} - -.flex-grow { - flex: 1 1 auto; -} - -.flex-wrap { - flex-wrap: wrap; -} - -.flex-center { - display: flex; - justify-content: center; - align-items: center; -} - -.flex-justify-center { - justify-content: center; -} - -.flex-align-center { - align-items: center; -} - -.flex-self-end { - align-self: flex-end; -} - -.flex-self-stretch { - align-self: stretch; -} - -.flex-vertical { - flex-direction: column; -} - -.z-bump { - z-index: 1; -} - -.select-none { - cursor: inherit; - -moz-user-select: none; - -webkit-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.pointer { - cursor: pointer; -} -.cursor-pointer { - cursor: pointer; - transform-origin: center center; - transition: transform 50ms ease-in-out; -} -.cursor-pointer:hover { - transform: scale(1.1); -} -.cursor-pointer:active { - transform: scale(0.95); -} - -.cursor-disabled { - cursor: not-allowed; -} - -.margin-bottom-sml { - margin-bottom: 20px; -} - -.margin-bottom-med { - margin-bottom: 40px; -} - -.margin-right-left { - margin: 0 20px; -} - -.bold { - font-weight: bold; -} - -.text-transform-uppercase { - text-transform: uppercase; -} - -.font-small { - font-size: 12px; -} - -.font-medium { - font-size: 1.2em; -} - -hr.horizontal-line { - display: block; - height: 1px; - border: 0; - border-top: 1px solid #ccc; - margin: 1em 0; - padding: 0; -} - -.hover-white:hover { - background: white; -} - -.red-dot { - background: #E91550; - color: white; - border-radius: 10px; -} - -.diamond { - transform: rotate(45deg); - background: #038789; -} - -.hollow-diamond { - transform: rotate(45deg); - border: 3px solid #690496; -} - -.golden-square { - background: #EBB33F; -} - -.pending-dot { - background: red; - left: 14px; - top: 14px; - color: white; - border-radius: 10px; - height: 20px; - min-width: 20px; - position: relative; - display: flex; - align-items: center; - justify-content: center; - padding: 4px; - z-index: 1; -} - -.keyring-label { - z-index: 1; - font-size: 11px; - background: rgba(255,0,0,0.8); - color: white; - bottom: 0px; - left: -18px; - border-radius: 10px; - height: 20px; - min-width: 20px; - position: absolute; - display: flex; - align-items: center; - justify-content: center; - padding: 4px; -} - -.ether-balance { - display: flex; - align-items: center; -} - -.tabSection { - min-width: 350px; -} - -.menu-icon { - display: inline-block; - height: 12px; - min-width: 12px; - margin: 13px; -} - -i.fa.fa-question-circle.fa-lg.menu-icon { - font-size: 18px; -} - -.ether-icon { - background: rgb(0, 163, 68); - border-radius: 20px; -} -.testnet-icon { - background: #2465E1; -} - -.drop-menu-item { - display: flex; - align-items: center; -} - -.invisible { - visibility: hidden; -} - -.one-line-concat { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.critical-error { - text-align: center; - margin-top: 20px; - color: red; -} - -/* - Hacky breakpoint fix for account + tab sections - Resolves issue from @frankiebee in - https://github.com/MetaMask/metamask-extension/pull/1835 - Please remove this when integrating new designs - */ - -@media screen and (min-width: 575px) and (max-width: 800px) { - .account-data-subsection { - flex: 0 0 auto !important; // reset flex - margin-left: 10px !important; // create additional horizontal space - margin-right: 10px !important; - width: 40%; - } - - .tabSection { - flex: 0 0 auto !important; - margin-left: 10px !important; - margin-right: 10px !important; - min-width: 285px; - width: 49%; - } - - .name-label { - width: 80%; - } -} diff --git a/old-ui/app/css/output/index.css b/old-ui/app/css/output/index.css deleted file mode 100644 index bed689ecb..000000000 --- a/old-ui/app/css/output/index.css +++ /dev/null @@ -1,5722 +0,0 @@ -@charset "UTF-8"; -/* - ITCSS - - http://www.creativebloq.com/web-design/manage-large-css-projects-itcss-101517528 - https://www.xfive.co/blog/itcss-scalable-maintainable-css-architecture/ - */ -/* - Variables - */ -/* - Colors - http://chir.ag/projects/name-that-color - */ -/* - Z-Indicies - */ -/* - Z Indicies - Current - app - 11 - hex/bn as decimal input - 1 - remove? - dropdown - 11 - loading - 10 - higher? - mascot - 0 - remove? - */ -/* - Responsive Breakpoints - */ - - @import url('/fonts/Font_Awesome/font-awesome.min.css'); - - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 100; - src: local('Roboto Thin'), local('Roboto-Thin'), url('fonts/Roboto/Roboto-Thin.ttf') format('truetype'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; - } - /* cyrillic */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 100; - src: local('Roboto Thin'), local('Roboto-Thin'), url('fonts/Roboto/Roboto-Thin.ttf') format('truetype'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; - } - /* greek-ext */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 100; - src: local('Roboto Thin'), local('Roboto-Thin'), url('fonts/Roboto/Roboto-Thin.ttf') format('truetype'); - unicode-range: U+1F00-1FFF; - } - /* greek */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 100; - src: local('Roboto Thin'), local('Roboto-Thin'), url('fonts/Roboto/Roboto-Thin.ttf') format('truetype'); - unicode-range: U+0370-03FF; - } - /* vietnamese */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 100; - src: local('Roboto Thin'), local('Roboto-Thin'), url('fonts/Roboto/Roboto-Thin.ttf') format('truetype'); - unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; - } - /* latin-ext */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 100; - src: local('Roboto Thin'), local('Roboto-Thin'), url('fonts/Roboto/Roboto-Thin.ttf') format('truetype'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; - } - /* latin */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 100; - src: local('Roboto Thin'), local('Roboto-Thin'), url('fonts/Roboto/Roboto-Thin.ttf') format('truetype'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; - } - /* cyrillic-ext */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url('fonts/Roboto/Roboto-Light.ttf') format('truetype'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; - } - /* cyrillic */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url('fonts/Roboto/Roboto-Light.ttf') format('truetype'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; - } - /* greek-ext */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url('fonts/Roboto/Roboto-Light.ttf') format('truetype'); - unicode-range: U+1F00-1FFF; - } - /* greek */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url('fonts/Roboto/Roboto-Light.ttf') format('truetype'); - unicode-range: U+0370-03FF; - } - /* vietnamese */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url('fonts/Roboto/Roboto-Light.ttf') format('truetype'); - unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; - } - /* latin-ext */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url('fonts/Roboto/Roboto-Light.ttf') format('truetype'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; - } - /* latin */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url('fonts/Roboto/Roboto-Light.ttf') format('truetype'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; - } - /* cyrillic-ext */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 400; - src: local('Roboto'), local('Roboto-Regular'), url('fonts/Roboto/Roboto-Regular.ttf') format('truetype'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; - } - /* cyrillic */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 400; - src: local('Roboto'), local('Roboto-Regular'), url('fonts/Roboto/Roboto-Regular.ttf') format('truetype'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; - } - /* greek-ext */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 400; - src: local('Roboto'), local('Roboto-Regular'), url('fonts/Roboto/Roboto-Regular.ttf') format('truetype'); - unicode-range: U+1F00-1FFF; - } - /* greek */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 400; - src: local('Roboto'), local('Roboto-Regular'), url('fonts/Roboto/Roboto-Regular.ttf') format('truetype'); - unicode-range: U+0370-03FF; - } - /* vietnamese */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 400; - src: local('Roboto'), local('Roboto-Regular'), url('fonts/Roboto/Roboto-Regular.ttf') format('truetype'); - unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; - } - /* latin-ext */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 400; - src: local('Roboto'), local('Roboto-Regular'), url('fonts/Roboto/Roboto-Regular.ttf') format('truetype'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; - } - /* latin */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 400; - src: local('Roboto'), local('Roboto-Regular'), url('fonts/Roboto/Roboto-Regular.ttf') format('truetype'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; - } - /* cyrillic-ext */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 500; - src: local('Roboto Medium'), local('Roboto-Medium'), url('fonts/Roboto/Roboto-Medium.ttf') format('truetype'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; - } - /* cyrillic */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 500; - src: local('Roboto Medium'), local('Roboto-Medium'), url('fonts/Roboto/Roboto-Medium.ttf') format('truetype'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; - } - /* greek-ext */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 500; - src: local('Roboto Medium'), local('Roboto-Medium'), url('fonts/Roboto/Roboto-Medium.ttf') format('truetype'); - unicode-range: U+1F00-1FFF; - } - /* greek */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 500; - src: local('Roboto Medium'), local('Roboto-Medium'), url('fonts/Roboto/Roboto-Medium.ttf') format('truetype'); - unicode-range: U+0370-03FF; - } - /* vietnamese */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 500; - src: local('Roboto Medium'), local('Roboto-Medium'), url('fonts/Roboto/Roboto-Medium.ttf') format('truetype'); - unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; - } - /* latin-ext */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 500; - src: local('Roboto Medium'), local('Roboto-Medium'), url('fonts/Roboto/Roboto-Medium.ttf') format('truetype'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; - } - /* latin */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 500; - src: local('Roboto Medium'), local('Roboto-Medium'), url('fonts/Roboto/Roboto-Medium.ttf') format('truetype'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; - } - /* cyrillic-ext */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 700; - src: local('Roboto Bold'), local('Roboto-Bold'), url('fonts/Roboto/Roboto-Bold.ttf') format('truetype'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; - } - /* cyrillic */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 700; - src: local('Roboto Bold'), local('Roboto-Bold'), url('fonts/Roboto/Roboto-Bold.ttf') format('truetype'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; - } - /* greek-ext */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 700; - src: local('Roboto Bold'), local('Roboto-Bold'), url('fonts/Roboto/Roboto-Bold.ttf') format('truetype'); - unicode-range: U+1F00-1FFF; - } - /* greek */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 700; - src: local('Roboto Bold'), local('Roboto-Bold'), url('fonts/Roboto/Roboto-Bold.ttf') format('truetype'); - unicode-range: U+0370-03FF; - } - /* vietnamese */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 700; - src: local('Roboto Bold'), local('Roboto-Bold'), url('fonts/Roboto/Roboto-Bold.ttf') format('truetype'); - unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; - } - /* latin-ext */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 700; - src: local('Roboto Bold'), local('Roboto-Bold'), url('fonts/Roboto/Roboto-Bold.ttf') format('truetype'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; - } - /* latin */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 700; - src: local('Roboto Bold'), local('Roboto-Bold'), url('fonts/Roboto/Roboto-Bold.ttf') format('truetype'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; - } - /* cyrillic-ext */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 900; - src: local('Roboto Black'), local('Roboto-Black'), url('fonts/Roboto/Roboto-Black.ttf') format('truetype'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; - } - /* cyrillic */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 900; - src: local('Roboto Black'), local('Roboto-Black'), url('fonts/Roboto/Roboto-Black.ttf') format('truetype'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; - } - /* greek-ext */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 900; - src: local('Roboto Black'), local('Roboto-Black'), url('fonts/Roboto/Roboto-Black.ttf') format('truetype'); - unicode-range: U+1F00-1FFF; - } - /* greek */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 900; - src: local('Roboto Black'), local('Roboto-Black'), url('fonts/Roboto/Roboto-Black.ttf') format('truetype'); - unicode-range: U+0370-03FF; - } - /* vietnamese */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 900; - src: local('Roboto Black'), local('Roboto-Black'), url('fonts/Roboto/Roboto-Black.ttf') format('truetype'); - unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; - } - /* latin-ext */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 900; - src: local('Roboto Black'), local('Roboto-Black'), url('fonts/Roboto/Roboto-Black.ttf') format('truetype'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; - } - /* latin */ - @font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 900; - src: local('Roboto Black'), local('Roboto-Black'), url('fonts/Roboto/Roboto-Black.ttf') format('truetype'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; - } - -@font-face { - font-family: 'Montserrat Regular'; - src: url("/fonts/Montserrat/Montserrat-Regular.woff") format("woff"); - src: url("/fonts/Montserrat/Montserrat-Regular.ttf") format("truetype"); - font-weight: 400; - font-style: normal; - font-size: 'small'; } - -@font-face { - font-family: 'Montserrat Bold'; - src: url("/fonts/Montserrat/Montserrat-Bold.woff") format("woff"); - src: url("/fonts/Montserrat/Montserrat-Bold.ttf") format("truetype"); - font-weight: 400; - font-style: normal; } - -@font-face { - font-family: 'Montserrat Light'; - src: url("/fonts/Montserrat/Montserrat-Light.woff") format("woff"); - src: url("/fonts/Montserrat/Montserrat-Light.ttf") format("truetype"); - font-weight: 400; - font-style: normal; } - -@font-face { - font-family: 'Montserrat UltraLight'; - src: url("/fonts/Montserrat/Montserrat-UltraLight.woff") format("woff"); - src: url("/fonts/Montserrat/Montserrat-UltraLight.ttf") format("truetype"); - font-weight: 400; - font-style: normal; } - -@font-face { - font-family: 'DIN OT'; - src: url("/fonts/DIN_OT/DINOT-2.otf") format("opentype"); - font-weight: 400; - font-style: normal; } - -@font-face { - font-family: 'DIN OT Light'; - src: url("/fonts/DIN_OT/DINOT-2.otf") format("opentype"); - font-weight: 200; - font-style: normal; } - -@font-face { - font-family: 'DIN NEXT'; - src: url("/fonts/DIN NEXT/DIN NEXT W01 Regular.otf") format("opentype"); - font-weight: 400; - font-style: normal; } - -@font-face { - font-family: 'DIN NEXT Light'; - src: url("/fonts/DIN NEXT/DIN NEXT W10 Light.otf") format("opentype"); - font-weight: 400; - font-style: normal; } - -@font-face { - font-family: 'Lato'; - src: url("/fonts/Lato/Lato-Regular.ttf") format("truetype"); - font-weight: 400; - font-style: normal; } - -/* - Utility Classes - */ -/* color */ -.color-orange { - color: #f7861c; } - -.color-forest { - color: #0a5448; } - -/* lib */ -.full-size { - height: 100%; - width: 100%; } - -.full-width { - width: 100%; } - -.full-flex-height { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; } - -.full-height { - height: 100%; } - -.flex-column { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; } - -.space-between { - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; } - -.space-around { - -ms-flex-pack: distribute; - justify-content: space-around; } - -.flex-column-bottom { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: reverse; - -ms-flex-direction: column-reverse; - flex-direction: column-reverse; } - -.flex-row { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; } - -.flex-space-between { - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; } - -.flex-space-around { - -ms-flex-pack: distribute; - justify-content: space-around; } - -.flex-right { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; } - -.flex-left { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; } - -.flex-fixed { - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; } - -.flex-basis-auto { - -ms-flex-preferred-size: auto; - flex-basis: auto; } - -.flex-grow { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; } - -.flex-wrap { - -ms-flex-wrap: wrap; - flex-wrap: wrap; } - -.flex-center { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; } - -.flex-justify-center { - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; } - -.flex-align-center { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; } - -.flex-self-end { - -ms-flex-item-align: end; - align-self: flex-end; } - -.flex-self-stretch { - -ms-flex-item-align: stretch; - align-self: stretch; } - -.flex-vertical { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; } - -.z-bump { - z-index: 1; } - -.select-none { - cursor: inherit; - -moz-user-select: none; - -webkit-user-select: none; - -ms-user-select: none; - user-select: none; } - -.pointer { - cursor: pointer; } - -.cursor-pointer { - cursor: pointer; - -webkit-transform-origin: center center; - transform-origin: center center; - -webkit-transition: -webkit-transform 50ms ease-in-out; - transition: -webkit-transform 50ms ease-in-out; - transition: transform 50ms ease-in-out; - transition: transform 50ms ease-in-out, -webkit-transform 50ms ease-in-out; } - -.cursor-pointer:hover { - -webkit-transform: scale(1.1); - transform: scale(1.1); } - -.cursor-pointer:active { - -webkit-transform: scale(0.95); - transform: scale(0.95); } - -.cursor-disabled { - cursor: not-allowed; } - -.margin-bottom-sml { - margin-bottom: 20px; } - -.margin-bottom-med { - margin-bottom: 40px; } - -.margin-right-left { - margin: 0 20px; } - -.bold { - font-weight: 700; } - -.text-transform-uppercase { - text-transform: uppercase; } - -.font-small { - font-size: 12px; } - -.font-medium { - font-size: 1.2em; } - -hr.horizontal-line { - display: block; - height: 1px; - border: 0; - border-top: 1px solid #ccc; - margin: 1em 0; - padding: 0; } - -.hover-white:hover { - background: #fff; } - -.red-dot { - background: #e91550; - color: #fff; - border-radius: 10px; } - -.diamond { - -webkit-transform: rotate(45deg); - transform: rotate(45deg); - background: #038789; } - -.hollow-diamond { - -webkit-transform: rotate(45deg); - transform: rotate(45deg); - border: 3px solid #690496; } - -.golden-square { - background: #ebb33f; } - -.pending-dot { - background: #f00; - left: 14px; - top: 14px; - color: #fff; - border-radius: 10px; - height: 20px; - min-width: 20px; - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - padding: 4px; - z-index: 1; } - -.keyring-label { - z-index: 1; - font-size: 8px; - line-height: 8px; - background: rgba(255, 255, 255, 0.4); - color: #fff; - border-radius: 10px; - padding: 4px; - text-align: center; - height: 15px; } - -.ether-balance { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; } - -.tabSection { - min-width: 350px; } - -.menu-icon { - display: inline-block; - height: 12px; - min-width: 12px; - margin: 13px; } - -.ether-icon { - background: #00a344; - border-radius: 20px; } - -.testnet-icon { - background: #2465e1; } - -.drop-menu-item { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; } - -.invisible { - visibility: hidden; } - -.one-line-concat { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; } - -.critical-error { - text-align: center; - margin-top: 20px; - color: #f00; } - -/* - Misc - */ -.letter-spacey { - letter-spacing: .1em; } - -.active { - color: #909090; } - -.check { - margin-left: 7px; - color: #f7861c; - -webkit-box-flex: 1; - -ms-flex: 1 0 auto; - flex: 1 0 auto; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; } - -/* - Generic - */ -/* http://meyerweb.com/eric/tools/css/reset/ - v2.0 | 20110126 - License: none (public domain) -*/ -html, -body, -div, -span, -applet, -object, -iframe, -h1, -h2, -h3, -h4, -h5, -h6, -p, -blockquote, -pre, -a, -abbr, -acronym, -address, -big, -cite, -code, -del, -dfn, -em, -img, -ins, -kbd, -q, -s, -samp, -small, -strike, -strong, -sub, -sup, -tt, -var, -b, -u, -i, -center, -dl, -dt, -dd, -ol, -ul, -li, -fieldset, -form, -label, -legend, -table, -caption, -tbody, -tfoot, -thead, -tr, -th, -td, -article, -aside, -canvas, -details, -embed, -figure, -figcaption, -footer, -header, -hgroup, -menu, -nav, -output, -ruby, -section, -summary, -time, -mark, -audio, -video { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - /* stylelint-disable */ - font: inherit; - /* stylelint-enable */ - vertical-align: baseline; } - -/* HTML5 display-role reset for older browsers */ -/* stylelint-disable */ -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -menu, -nav, -section { - display: block; } - -body { - line-height: 1; } - -ol, -ul { - list-style: none; } - -blockquote, -q { - quotes: none; } - -blockquote:before, -blockquote:after, -q:before, -q:after { - content: ''; - content: none; } - -table { - border-collapse: collapse; - border-spacing: 0; } - -button { - border-style: none; - cursor: pointer; } - -/* stylelint-enable */ -* { - -webkit-box-sizing: border-box; - box-sizing: border-box; } - -html, -body { - font-family: Roboto, Arial; - color: #4d4d4d; - font-weight: 300; - line-height: 1.4em; - background: #f7f7f7; - width: 100%; - height: 100%; - margin: 0; - padding: 0; } - -html { - min-height: 500px; } - -.app-root { - overflow: hidden; - position: relative; } - -.app-primary { - display: -webkit-box; - display: -ms-flexbox; - display: flex; } - -input:focus, -textarea:focus { - outline: none; } - -/* stylelint-disable */ -#app-content { - overflow-x: hidden; - height: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; } - @media screen and (max-width: 575px) { - #app-content { - background-color: #fff; } } - -/* stylelint-enable */ -a { - text-decoration: none; - color: inherit; } - -a:hover { - color: #df6b0e; } - -input.large-input, -textarea.large-input { - padding: 8px; } - -input.large-input { - height: 36px; } - -/* - Buttons - */ -.btn-green { - background-color: #02c9b1; } - -button.btn-clear { - background: #fff; - border: 1px solid; } - -button[disabled], -input[type="submit"][disabled] { - cursor: not-allowed; - opacity: .5; } - -button.primary { - padding: 8px 12px; - background: #f7861c; - -webkit-box-shadow: 0 3px 6px rgba(247, 134, 28, 0.36); - box-shadow: 0 3px 6px rgba(247, 134, 28, 0.36); - color: #fff; - font-size: 1.1em; - font-family: Roboto; - text-transform: uppercase; } - -.btn-light { - padding: 8px 12px; - -webkit-box-shadow: 0 3px 6px rgba(247, 134, 28, 0.36); - box-shadow: 0 3px 6px rgba(247, 134, 28, 0.36); - color: #585d67; - font-size: 1.1em; - font-family: Roboto; - text-transform: uppercase; - text-align: center; - line-height: 20px; - border-radius: 2px; - border: 1px solid #979797; - opacity: .5; } - -button.btn-thin { - border: 1px solid; - border-color: #4d4d4d; - color: #4d4d4d; - background: #ffae29; - border-radius: 4px; - min-width: 200px; - margin: 12px 0; - padding: 6px; - font-size: 13px; } - -.btn-secondary { - border: 1px solid #979797; - border-radius: 2px; - background-color: #fff; - font-size: 16px; - line-height: 24px; - padding: 16px 42px; } - .btn-secondary[disabled] { - background-color: #fff !important; - opacity: .5; } - -.btn-tertiary { - border: 1px solid transparent; - border-radius: 2px; - background-color: transparent; - font-size: 16px; - line-height: 24px; - padding: 16px 42px; } - -.app-header { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - visibility: visible; - background: #efefef; - position: relative; - z-index: 12; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; } - @media screen and (max-width: 575px) { - .app-header { - padding: 12px; - width: 100%; - -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.08); - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.08); - z-index: 26; } } - @media screen and (min-width: 576px) { - .app-header { - height: 75px; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; } - .app-header::after { - content: ''; - position: absolute; - width: 100%; - height: 32px; - background: #efefef; - bottom: -32px; } } - .app-header .metafox-icon { - cursor: pointer; } - -.app-header-contents { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - width: 100%; - height: 6.9vh; } - @media screen and (max-width: 575px) { - .app-header-contents { - height: 100%; } } - @media screen and (min-width: 576px) { - .app-header-contents { - width: 85vw; } } - @media screen and (min-width: 769px) { - .app-header-contents { - width: 80vw; } } - @media screen and (min-width: 1281px) { - .app-header-contents { - width: 65vw; } } - -.app-header h1 { - font-family: Roboto; - text-transform: uppercase; - font-weight: 400; - color: #22232c; - line-height: 29px; } - @media screen and (max-width: 575px) { - .app-header h1 { - display: none; } } - -h2.page-subtitle { - text-transform: uppercase; - color: #aeaeae; - font-size: 1em; - margin: 12px; } - -.network-component-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; } - -.left-menu-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - cursor: pointer; } - -.header__right-actions { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; } - .header__right-actions .identicon { - cursor: pointer; } - -.app-footer { - padding-bottom: 10px; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; } - -.network-component--disabled { - cursor: default; } - .network-component--disabled .fa-caret-down { - opacity: 0; } - -.network-component.pointer { - border: 1px solid #22232c; - border-radius: 82px; - padding: 6px; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } - .network-component.pointer.ethereum-network { - border-color: #038789; } - .network-component.pointer.ethereum-network .menu-icon-circle div { - background-color: rgba(3, 135, 137, 0.7) !important; } - .network-component.pointer.ropsten-test-network { - border-color: #e91550; } - .network-component.pointer.ropsten-test-network .menu-icon-circle div { - background-color: rgba(233, 21, 80, 0.7) !important; } - .network-component.pointer.kovan-test-network { - border-color: #690496; } - .network-component.pointer.kovan-test-network .menu-icon-circle div { - background-color: rgba(105, 4, 150, 0.7) !important; } - .network-component.pointer.rinkeby-test-network { - border-color: #ebb33f; } - .network-component.pointer.rinkeby-test-network .menu-icon-circle div { - background-color: rgba(235, 179, 63, 0.7) !important; } - -.dropdown-menu-item .menu-icon-circle, -.dropdown-menu-item .menu-icon-circle--active { - margin: 0 14px; } - -.network-indicator { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - font-size: .6em; } - .network-indicator .fa-caret-down { - line-height: 15px; - font-size: 12px; - padding: 0 4px; } - -.network-name { - line-height: 15px; - padding: 0 4px; - font-family: Roboto; - font-size: 12px; - -webkit-box-flex: 1; - -ms-flex: 1 0 auto; - flex: 1 0 auto; } - -.network-droppo { - right: 2px; } - @media screen and (min-width: 576px) { - .network-droppo { - right: calc(((100% - 85vw) / 2) + 2px); } } - @media screen and (min-width: 769px) { - .network-droppo { - right: calc(((100% - 80vw) / 2) + 2px); } } - @media screen and (min-width: 1281px) { - .network-droppo { - right: calc(((100% - 65vw) / 2) + 2px); } } - -.network-name-item { - font-weight: 100; - -webkit-box-flex: 1; - -ms-flex: 1 0 auto; - flex: 1 0 auto; - color: #9b9b9b; } - -.network-check, -.network-check__transparent { - color: #fff; - margin-left: 7px; } - -.network-check__transparent { - opacity: 0; - width: 16px; - margin: 0; } - -.menu-icon-circle, -.menu-icon-circle--active { - background: none; - border-radius: 22px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - border: 1px solid transparent; - margin: 0 4px; } - -.menu-icon-circle--active { - border: 1px solid #fff; - background: rgba(100, 100, 100, 0.4); } - -.menu-icon-circle div, -.menu-icon-circle--active div { - height: 12px; - width: 12px; - border-radius: 17px; } - -.menu-icon-circle--active div { - opacity: 1; } - -.network-dropdown-header { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - width: 100%; } - -.network-dropdown-divider { - width: 100%; - height: 1px; - margin: 10px 0; - background-color: #5d5d5d; } - -.network-dropdown-title { - height: 25px; - width: 75px; - color: #fff; - font-family: Roboto; - font-size: 18px; - line-height: 25px; - text-align: center; } - -.network-dropdown-content { - height: 36px; - width: 265px; - color: #9b9b9b; - font-family: Roboto; - font-size: 14px; - line-height: 18px; } - -.modal > div:focus { - outline: none !important; } - -.buy-modal-content { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - text-align: center; - font-family: Roboto; - padding: 0 16px; } - -.buy-modal-content-option { - cursor: pointer; - color: #5B5D67; } - -.qr-ellip-address, .ellip-address { - width: 247px; - border: none; - font-family: Roboto; - font-size: 14px; } - -@media screen and (max-width: 575px) { - .buy-modal-content-title-wrapper { - -ms-flex-pack: distribute; - justify-content: space-around; - width: 100%; - height: 100px; } - .buy-modal-content-title { - font-size: 26px; - margin-top: 15px; } - .buy-modal-content-options { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - padding: 5% 33%; } - .buy-modal-content-footer { - text-transform: uppercase; - width: 100%; - height: 50px; } - div.buy-modal-content-option { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - width: 80vw; - height: 15vh; - margin: 10px; - text-align: center; - border-radius: 6px; - border: 1px solid #000; - padding: 0% 7%; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; } - div.buy-modal-content-option div.buy-modal-content-option-title { - font-size: 20px; } - div.buy-modal-content-option div.buy-modal-content-option-subtitle { - font-size: 16px; } } - -@media screen and (min-width: 576px) { - .buy-modal-content-title-wrapper { - -ms-flex-pack: distribute; - justify-content: space-around; - width: 100%; - height: 110px; } - .buy-modal-content-title { - font-size: 26px; - margin-top: 15px; } - .buy-modal-content-footer { - text-transform: uppercase; - width: 100%; - height: 50px; } - .buy-modal-content-options { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - margin: 20px 0 60px; } - div.buy-modal-content-option { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - width: 20vw; - height: 120px; - text-align: center; - border-radius: 6px; - border: 1px solid #000; - margin: 0 8px; - padding: 18px 0; } - div.buy-modal-content-option div.buy-modal-content-option-title { - font-size: 20px; - margin-bottom: 12px; } } - @media screen and (min-width: 576px) and (max-width: 679px) { - div.buy-modal-content-option div.buy-modal-content-option-title { - font-size: 14px; } } - @media screen and (min-width: 576px) and (min-width: 1281px) { - div.buy-modal-content-option div.buy-modal-content-option-title { - font-size: 20px; } } - -@media screen and (min-width: 576px) { - div.buy-modal-content-option div.buy-modal-content-option-subtitle { - font-size: 16px; - padding: 0 10px; - height: 25%; } } - @media screen and (min-width: 576px) and (max-width: 679px) { - div.buy-modal-content-option div.buy-modal-content-option-subtitle { - font-size: 10px; - padding: 0 10px; - margin-bottom: 5px; - line-height: 15px; } } - @media screen and (min-width: 576px) and (min-width: 680px) { - div.buy-modal-content-option div.buy-modal-content-option-subtitle { - font-size: 14px; - padding: 0 4px; - margin-bottom: 2px; } } - @media screen and (min-width: 576px) and (min-width: 1281px) { - div.buy-modal-content-option div.buy-modal-content-option-subtitle { - font-size: 16px; - padding: 0; } } - -@media screen and (min-width: 576px) { - div.buy-modal-content-option div.buy-modal-content-footer { - margin-top: 8vh; } } - -.edit-account-name-modal-content { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - position: relative; } - -.edit-account-name-modal-cancel { - position: absolute; - top: 12px; - right: 20px; - font-size: 25px; } - -.edit-account-name-modal-title { - margin: 15px; } - -.edit-account-name-modal-save-button { - width: 33%; - height: 45px; - margin: 15px; - font-weight: 700; - margin-top: 25px; } - -.edit-account-name-modal-input { - width: 90%; - height: 50px; - text-align: left; - margin: 10px; - padding: 10px; - font-size: 18px; } - -.account-modal-container { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - position: relative; - padding: 5px 0 31px 0; - border: 1px solid #cdcdcd; - border-radius: 4px; - font-family: Roboto; } - .account-modal-container button { - cursor: pointer; } - -.account-modal-back { - color: #9b9b9b; - position: absolute; - top: 13px; - left: 17px; - cursor: pointer; } - .account-modal-back__text { - margin-top: 2px; - font-family: Roboto; - font-size: 14px; - line-height: 18px; } - -.account-modal-close::after { - content: '\00D7'; - font-size: 40px; - color: #9b9b9b; - position: absolute; - top: 10px; - right: 12px; - cursor: pointer; } - -.account-modal-container .identicon { - position: relative; - left: 0; - right: 0; - margin: 0 auto; - top: -32px; - margin-bottom: -32px; } - -.account-modal-container .qr-header { - margin-top: 9px; - font-size: 20px; } - -.account-modal-container .qr-wrapper { - margin-top: 5px; } - -.account-modal-container .ellip-address-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - border: 1px solid #dedede; - padding: 5px 10px; - font-family: Roboto; - margin-top: 7px; - width: 286px; } - -.account-modal-container .btn-clear { - min-height: 28px; - font-size: 14px; - border-color: #2f9ae0; - color: #2f9ae0; - border-radius: 2px; - -ms-flex-preferred-size: 100%; - flex-basis: 100%; - width: 75%; - margin-top: 17px; - padding: 10px 22px; - height: 44px; - width: 235px; - font-family: Roboto; } - -.account-modal-divider { - width: 100%; - height: 1px; - margin: 19px 0 8px 0; - background-color: #dedede; } - -.account-modal-container .account-name { - margin-top: 9px; - font-size: 20px; } - -.account-modal-container .modal-body-title { - margin-top: 16px; - margin-bottom: 16px; - font-size: 18px; } - -.account-modal__name { - margin-top: 9px; - font-size: 20px; } - -.private-key-password { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; } - -.private-key-password-label, .private-key-password-error { - color: #5d5d5d; - font-size: 14px; - line-height: 18px; - margin-bottom: 10px; } - -.private-key-password-error { - color: #e91550; - margin-bottom: 0; } - -.private-key-password-input { - padding: 10px 0 13px 17px; - font-size: 16px; - line-height: 21px; - width: 291px; - height: 44px; } - -.private-key-password::-webkit-input-placeholder { - color: #9b9b9b; - font-family: Roboto; } - -.private-key-password-warning { - border-radius: 8px; - background-color: #FFF6F6; - font-size: 12px; - font-weight: 500; - line-height: 15px; - color: #e91550; - width: 292px; - padding: 9px 15px; - margin-top: 18px; - font-family: Roboto; } - -.export-private-key-buttons { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; } - .export-private-key-buttons .btn-clear { - width: 141px; - height: 54px; } - .export-private-key-buttons .btn-cancel { - margin-right: 15px; - border-color: #9b9b9b; - color: #5d5d5d; } - -.private-key-password-display-wrapper { - height: 80px; - width: 291px; - border: 1px solid #cdcdcd; - border-radius: 2px; } - -.private-key-password-display-textarea { - color: #e91550; - font-family: Roboto; - font-size: 16px; - line-height: 21px; - border: none; - height: 75px; - width: 100%; - overflow: hidden; - resize: none; - padding: 9px 13px 8px; - text-transform: uppercase; - font-weight: 300; } - -.new-account-modal-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - position: relative; - border: 1px solid #dedede; - -webkit-box-shadow: 0 0 2px 2px #dedede; - box-shadow: 0 0 2px 2px #dedede; - font-family: Roboto; } - -.new-account-modal-header { - background: #f6f6f6; - width: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - padding: 30px; - font-size: 22px; - color: #1b344d; - height: 79px; } - -.modal-close-x::after { - content: '\00D7'; - font-size: 2em; - color: #9b9b9b; - position: absolute; - top: 25px; - right: 17.5px; - font-family: sans-serif; - cursor: pointer; } - -.new-account-modal-content { - width: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - margin-top: 15px; - font-size: 17px; - color: #1b344d; } - -.new-account-modal-content.after-input { - margin-top: 15px; - line-height: 25px; } - -.new-account-input-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - width: 100%; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - padding-bottom: 2px; - margin-top: 13px; } - -.new-account-input { - padding: 15px; - padding-bottom: 20px; - border-radius: 8px; - border: 1px solid #dedede; - width: 100%; - font-size: 1em; - color: #9b9b9b; - font-family: Roboto; - font-size: 17px; - margin: 0 60px; } - -.new-account-input::-webkit-input-placeholder { - color: #9b9b9b; } - -.new-account-input:-moz-placeholder { - color: #9b9b9b; - opacity: 1; } - -.new-account-input::-moz-placeholder { - color: #9b9b9b; - opacity: 1; } - -.new-account-input:-ms-input-placeholder { - color: #9b9b9b; } - -.new-account-input::-ms-input-placeholder { - color: #9b9b9b; } - -.new-account-modal-content.button { - margin-top: 22px; - margin-bottom: 30px; - width: 113px; - height: 44px; } - -.new-account-modal-wrapper .btn-clear { - font-size: 14px; - font-weight: 700; - background: #fff; - border: 1px solid; - border-radius: 2px; - color: #4d4d4d; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; } - -.hide-token-confirmation { - min-height: 250.72px; - width: 374.49px; - border-radius: 4px; - background-color: #FFFFFF; - -webkit-box-shadow: 0 1px 7px 0 rgba(0, 0, 0, 0.5); - box-shadow: 0 1px 7px 0 rgba(0, 0, 0, 0.5); } - .hide-token-confirmation__container { - padding: 24px 27px 21px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; } - .hide-token-confirmation__identicon { - margin-bottom: 10px; } - .hide-token-confirmation__symbol { - color: #4d4d4d; - font-family: Roboto; - font-size: 16px; - line-height: 24px; - text-align: center; - margin-bottom: 7.5px; } - .hide-token-confirmation__title { - height: 30px; - width: 271.28px; - color: #4d4d4d; - font-family: Roboto; - font-size: 22px; - line-height: 30px; - text-align: center; - margin-bottom: 10.5px; } - .hide-token-confirmation__copy { - height: 41px; - width: 318px; - color: #5d5d5d; - font-family: Roboto; - font-size: 14px; - line-height: 18px; - text-align: center; } - .hide-token-confirmation__buttons { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - margin-top: 15px; - width: 100%; } - .hide-token-confirmation__buttons button { - height: 44px; - width: 113px; - border: 1px solid #5d5d5d; - border-radius: 2px; - color: #4d4d4d; - font-family: Roboto; - font-size: 14px; - line-height: 20px; - text-align: center; - margin-left: 4px; - margin-right: 4px; } - -/* - NewUI Container Elements - */ -.main-container { - z-index: 18; - font-family: Roboto; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-align: stretch; - -ms-flex-align: stretch; - align-items: stretch; } - -.main-container::-webkit-scrollbar { - display: none; } - -.tx-view { - -webkit-box-flex: 63.5; - -ms-flex: 63.5 0 66.5%; - flex: 63.5 0 66.5%; - background: #fff; } - @media screen and (max-width: 575px) { - .tx-view .identicon-wrapper { - display: none; } - .tx-view .account-name { - display: none; } } - -.wallet-view { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-flex: 33.5; - -ms-flex: 33.5 1 33.5%; - flex: 33.5 1 33.5%; - width: 0; - background: #f6f6f6; - z-index: 200; - position: relative; } - @media screen and (min-width: 576px) { - .wallet-view { - overflow-y: scroll; - overflow-x: hidden; } } - .wallet-view .wallet-view-account-details { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } - .wallet-view__name-container { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - cursor: pointer; - width: 100%; } - .wallet-view__keyring-label { - height: 40px; - color: #9b9b9b; - font-family: Roboto; - font-size: 10px; - line-height: 40px; - text-align: right; - padding: 0 20px; } - .wallet-view__details-button { - color: #2f9ae0; - font-size: 10px; - line-height: 13px; - text-align: center; - border: 1px solid #2f9ae0; - border-radius: 10.5px; - background-color: transparent; - margin: 0 auto; - padding: 4px 12px; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } - .wallet-view__address { - border-radius: 3px; - background-color: #dedede; - color: #5d5d5d; - font-size: 14px; - line-height: 12px; - padding: 4px 12px; - margin: 24px auto; - font-weight: 300; - cursor: pointer; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } - @media screen and (max-width: 575px) { - .wallet-view__sidebar-close::after { - content: '\00D7'; - font-size: 40px; - color: #4d4d4d; - position: absolute; - top: 12px; - left: 12px; - cursor: pointer; } } - .wallet-view__add-token-button { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - color: #9b9b9b; - font-size: 14px; - line-height: 19px; - text-align: center; - margin: 36px auto; - border: 1px solid #9b9b9b; - border-radius: 2px; - font-weight: 300; - background: none; - padding: 9px 30px; } - -@media screen and (min-width: 576px) { - .wallet-view::-webkit-scrollbar { - display: none; } } - -.wallet-view-title-wrapper { - -webkit-box-flex: 0; - -ms-flex: 0 0 25px; - flex: 0 0 25px; } - -.wallet-view-title { - margin-left: 15px; - font-size: 16px; } - @media screen and (max-width: 575px) { - .wallet-view-title { - display: none; } } - -.wallet-view.sidebar { - -webkit-box-flex: 1; - -ms-flex: 1 0 230px; - flex: 1 0 230px; - background: #fafafa; - z-index: 26; - position: fixed; - top: 56px; - left: 0; - right: 0; - bottom: 0; - opacity: 1; - visibility: visible; - will-change: transform; - overflow-y: auto; - -webkit-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 4px; - box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 4px; - width: 85%; - height: calc(100% - 56px); } - -.sidebar-overlay { - z-index: 25; - position: fixed; - height: 100%; - width: 100%; - left: 0; - right: 0; - bottom: 0; - opacity: 1; - visibility: visible; - background-color: rgba(0, 0, 0, 0.3); } - -@media screen and (min-width: 576px) { - .lap-visible { - display: -webkit-box; - display: -ms-flexbox; - display: flex; } - .phone-visible { - display: none; } - .main-container { - width: 85%; - height: 90vh; - -webkit-box-shadow: 0 0 7px 0 rgba(0, 0, 0, 0.08); - box-shadow: 0 0 7px 0 rgba(0, 0, 0, 0.08); } } - -@media screen and (min-width: 769px) { - .main-container { - width: 80%; - height: 82vh; - -webkit-box-shadow: 0 0 7px 0 rgba(0, 0, 0, 0.08); - box-shadow: 0 0 7px 0 rgba(0, 0, 0, 0.08); } } - -@media screen and (min-width: 1281px) { - .main-container { - width: 65%; - height: 82vh; - -webkit-box-shadow: 0 0 7px 0 rgba(0, 0, 0, 0.08); - box-shadow: 0 0 7px 0 rgba(0, 0, 0, 0.08); } } - -@media screen and (max-width: 575px) { - .lap-visible { - display: none; } - .phone-visible { - display: -webkit-box; - display: -ms-flexbox; - display: flex; } - .main-container { - height: 100%; - width: 100%; - overflow-y: auto; - background-color: #fff; } - button.btn-clear { - width: 93px; - height: 50px; - font-size: .7em; - background: #fff; - border: 1px solid; } } - -.account-name { - font-size: 24px; - font-weight: 200; - line-height: 20px; - color: #5d5d5d; - margin-top: 8px; - margin-bottom: 24px; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - width: 100%; - padding: 0 8px; - text-align: center; } - -.account-options-menu { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - margin: 5% 7% 0%; } - -.fiat-amount { - text-transform: uppercase; } - -.token-balance__amount { - padding-right: 6px; } - -.account-dropdown-name { - font-family: Roboto; } - -.account-dropdown-balance { - color: #9b9b9b; - line-height: 19px; } - -.account-dropdown-edit-button { - color: #9b9b9b; - font-family: Roboto; } - .account-dropdown-edit-button:hover { - color: #fff; } - -.account-list-item__top-row { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin-top: 10px; - margin-left: 8px; - position: relative; } - -.account-list-item__account-balances { - height: auto; - border: none; - background-color: transparent; - color: #9b9b9b; - margin-left: 34px; - margin-top: 4px; - position: relative; } - -.account-list-item__account-name { - font-size: 16px; - margin-left: 8px; } - -.account-list-item__icon { - position: absolute; - right: 12px; - top: 1px; } - -.account-list-item__account-primary-balance, .account-list-item__account-secondary-balance { - font-family: Roboto; - line-height: 16px; - font-size: 12px; - font-weight: 300; } - -.account-list-item__account-primary-balance { - color: #5d5d5d; - border: none; - outline: 0 !important; } - -.account-list-item__account-secondary-balance { - color: #9b9b9b; } - -.account-list-item__account-address { - margin-left: 35px; - width: 80%; - overflow: hidden; - text-overflow: ellipsis; } - -.account-list-item__dropdown:hover { - background: rgba(222, 222, 222, 0.2); - cursor: pointer; } - .account-list-item__dropdown:hover input { - background: rgba(222, 222, 222, 0.1); } - -.send-screen-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - z-index: 25; - font-family: Roboto; } - @media screen and (max-width: 575px) { - .send-screen-wrapper { - width: 100%; - overflow-y: auto; } } - .send-screen-wrapper section { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } - -.send-screen-card { - background-color: #fff; - -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); - box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); - padding: 46px 40.5px 26px; - position: relative; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - width: 498px; - -webkit-box-flex: 1; - -ms-flex: 1 0 auto; - flex: 1 0 auto; } - @media screen and (max-width: 575px) { - .send-screen-card { - top: 0; - width: 100%; - -webkit-box-shadow: none; - box-shadow: none; - padding: 12px; } } - -/* Send Screen */ -.send-screen section { - margin: 4px 16px; } - -.send-screen input { - width: 100%; - font-size: 12px; } - -.send-eth-icon { - border-radius: 50%; - width: 70px; - height: 70px; - border: 1px solid #dedede; - -webkit-box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.2); - box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.2); - position: absolute; - top: -35px; - z-index: 25; - padding: 4px; - background-color: #fff; } - @media screen and (max-width: 575px) { - .send-eth-icon { - position: relative; - top: 0; } } - -.send-screen-input-wrapper { - width: 95%; - position: relative; } - .send-screen-input-wrapper .fa-bolt { - padding-right: 4px; } - .send-screen-input-wrapper .large-input { - border: 1px solid #9b9b9b; - border-radius: 4px; - margin: 4px 0 20px; - font-size: 16px; - line-height: 22.4px; - font-family: Roboto; } - .send-screen-input-wrapper .send-screen-gas-input { - border: 1px solid transparent; } - .send-screen-input-wrapper__error-message { - display: none; } - .send-screen-input-wrapper--error input, - .send-screen-input-wrapper--error .send-screen-gas-input { - border-color: #f00 !important; } - .send-screen-input-wrapper--error .send-screen-input-wrapper__error-message { - display: block; - position: absolute; - bottom: 4px; - font-size: 12px; - line-height: 12px; - left: 8px; - color: #f00; } - .send-screen-input-wrapper .send-screen-input-wrapper__error-message { - display: block; - position: absolute; - bottom: 4px; - font-size: 12px; - line-height: 12px; - left: 8px; - color: #f00; } - -.send-screen-input { - width: 100%; } - -.send-screen-gas-input { - width: 100%; - height: 41px; - border-radius: 3px; - background-color: #f3f3f3; - border-width: 0; - border-style: none; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding-left: 10px; - padding-right: 12px; - font-size: 16px; - color: #5d5d5d; } - -.send-screen-amount-labels { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; } - -.send-screen-gas-labels { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; } - -.currency-toggle__item { - color: #2f9ae0; - cursor: pointer; } - .currency-toggle__item--selected { - color: #000; - cursor: default; } - -.send-screen-gas-input-customize { - color: #2f9ae0; - font-size: 12px; - cursor: pointer; } - -.gas-tooltip-close-area { - position: fixed; - top: 0; - left: 0; - z-index: 1000; - width: 100%; - height: 100%; } - -.customize-gas-tooltip-container { - position: absolute; - bottom: 50px; - width: 237px; - height: 307px; - background-color: #fff; - opacity: 1; - -webkit-box-shadow: #dedede 0 0 5px; - box-shadow: #dedede 0 0 5px; - z-index: 1050; - padding: 13px 19px; - font-size: 16px; - border-radius: 4px; - font-family: "Lato"; - font-weight: 500; } - -.gas-tooltip-arrow { - height: 25px; - width: 25px; - z-index: 1200; - background: #fff; - position: absolute; - -webkit-transform: rotate(45deg); - transform: rotate(45deg); - left: 107px; - top: 294px; - -webkit-box-shadow: 2px 2px 2px #dedede; - box-shadow: 2px 2px 2px #dedede; } - -.customize-gas-tooltip-container input[type="number"]::-webkit-inner-spin-button { - -webkit-appearance: none; - display: none; } - -.customize-gas-tooltip-container input[type="number"]:hover::-webkit-inner-spin-button { - -webkit-appearance: none; - display: none; } - -.customize-gas-tooltip { - position: relative; } - -.gas-tooltip { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; } - -.gas-tooltip-label { - font-size: 16px; - color: #4d4d4d; } - -.gas-tooltip-header { - padding-bottom: 12px; } - -.gas-tooltip-input-label { - margin-bottom: 5px; } - -.gas-tooltip-input-label i { - color: #aeaeae; - margin-left: 6px; } - -.customize-gas-input { - width: 178px; - height: 28px; - border: 1px solid #dedede; - font-size: 16px; - color: #1b344d; - padding-left: 8px; } - -.customize-gas-input-wrapper { - position: relative; } - -.gas-tooltip-input-detail { - position: absolute; - top: 4px; - right: 26px; - font-size: 12px; - color: #aeaeae; } - -.gas-tooltip-input-arrows { - position: absolute; - top: 0; - right: 4px; - width: 17px; - height: 28px; - border: 1px solid #dadada; - border-left: 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - color: #9b9b9b; - font-size: .8em; - padding: 1px 4px; - cursor: pointer; } - -.token-gas__amount { - display: inline-block; - margin-right: 4px; } - -.token-gas__symbol { - display: inline-block; } - -.send-screen__title { - color: #5d5d5d; - font-size: 18px; - line-height: 29px; } - -.send-screen__subtitle { - margin: 10px 0 20px; - font-size: 14px; - line-height: 24px; } - -.send-screen__send-button, .send-screen__cancel-button { - width: 163px; - text-align: center; } - -.send-screen__send-button__disabled { - opacity: .5; - cursor: auto; } - -.send-token { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - z-index: 25; - font-family: Roboto; } - .send-token__content { - width: 498px; - height: 605px; - background-color: #fff; - -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); - box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); - padding: 46px 40.5px 26px; - position: relative; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - -webkit-box-flex: 1; - -ms-flex: 1 0 auto; - flex: 1 0 auto; } - @media screen and (max-width: 575px) { - .send-token__content { - top: 0; - width: 100%; - -webkit-box-shadow: none; - box-shadow: none; - padding: 12px; } } - .send-token .identicon { - position: absolute; - top: -35px; - z-index: 25; } - @media screen and (max-width: 575px) { - .send-token .identicon { - position: relative; - top: 0; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } } - .send-token__title { - color: #5d5d5d; - font-size: 18px; - line-height: 29px; } - .send-token__description, .send-token__balance-text, .send-token__token-symbol { - margin-top: 10px; - font-size: 14px; - line-height: 24px; - text-align: center; } - .send-token__token-balance { - font-size: 40px; - line-height: 40px; - margin-top: 13px; } - .send-token__token-balance .token-balance__amount { - padding-right: 12px; } - .send-token__button-group { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } - @media screen and (max-width: 575px) { - .send-token__button-group { - margin-top: 24px; } } - .send-token__button-group button { - width: 163px; } - -.confirm-send-token__hero-amount-wrapper { - width: 100%; } - -.send-v2__container { - width: 380px; - border-radius: 8px; - background-color: #fff; - -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); - box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - z-index: 25; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - font-family: Roboto; - position: relative; } - @media screen and (max-width: 575px) { - .send-v2__container { - width: 100%; - top: 0; - -webkit-box-shadow: none; - box-shadow: none; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; } } - -.send-v2__send-header-icon-container { - z-index: 25; } - @media screen and (max-width: 575px) { - .send-v2__send-header-icon-container { - position: relative; - top: 0; } } - -.send-v2__send-header-icon { - border-radius: 50%; - width: 48px; - height: 48px; - border: 1px solid #dedede; - z-index: 25; - padding: 4px; - background-color: #fff; } - -.send-v2__send-arrow-icon { - color: #f28930; - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); - position: absolute; - top: -2px; - left: 0; - font-size: 1.12em; } - -.send-v2__arrow-background { - background-color: #fff; - height: 14px; - width: 14px; - position: absolute; - top: 52px; - left: 199px; - border-radius: 50%; - z-index: 100; } - @media screen and (max-width: 575px) { - .send-v2__arrow-background { - top: 36px; } } - -.send-v2__header { - height: 88px; - width: 380px; - background-color: #e9edf0; - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; } - @media screen and (max-width: 575px) { - .send-v2__header { - height: 59px; - width: 100vw; } } - -.send-v2__header-tip { - height: 25px; - width: 25px; - background: #e9edf0; - position: absolute; - -webkit-transform: rotate(45deg); - transform: rotate(45deg); - left: 178px; - top: 75px; } - @media screen and (max-width: 575px) { - .send-v2__header-tip { - top: 46px; - left: 0; - right: 0; - margin: 0 auto; } } - -.send-v2__title { - color: #5d5d5d; - font-size: 22px; - line-height: 29px; - text-align: center; - margin-top: 25px; } - -.send-v2__copy { - color: #808080; - font-size: 14px; - font-weight: 300; - line-height: 19px; - text-align: center; - margin-top: 10px; - width: 287px; } - -.send-v2__error { - font-size: 12px; - line-height: 12px; - left: 8px; - color: #f00; } - -.send-v2__error-border { - color: #f00; } - -.send-v2__form { - margin: 13px 0; - width: 100%; } - @media screen and (max-width: 575px) { - .send-v2__form { - padding: 13px 0; - margin: 0; - height: 0; - overflow-y: auto; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; } } - -.send-v2__form-header, .send-v2__form-header-copy { - width: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column; - flex-flow: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; } - -.send-v2__form-row { - margin: 14.5px 18px 0px; - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row; - flex-flow: row; - -webkit-box-flex: 1; - -ms-flex: 1 0 auto; - flex: 1 0 auto; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; } - -.send-v2__form-field { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; } - -.send-v2__form-label { - color: #5d5d5d; - font-family: Roboto; - font-size: 16px; - line-height: 22px; - width: 88px; } - -.send-v2__from-dropdown { - height: 73px; - width: 100%; - border: 1px solid #dedede; - border-radius: 4px; - background-color: #fff; - font-family: Roboto; - line-height: 16px; - font-size: 12px; - color: #4d4d4d; - position: relative; } - .send-v2__from-dropdown__close-area { - position: fixed; - top: 0; - left: 0; - z-index: 1000; - width: 100%; - height: 100%; } - .send-v2__from-dropdown__list { - z-index: 1050; - position: absolute; - height: 220px; - width: 100%; - border: 1px solid #d2d8dd; - border-radius: 4px; - background-color: #fff; - -webkit-box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.11); - box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.11); - margin-top: 11px; - margin-left: -1px; - overflow-y: scroll; } - -.send-v2__to-autocomplete { - position: relative; } - .send-v2__to-autocomplete__down-caret { - position: absolute; - top: 18px; - right: 12px; } - -.send-v2__to-autocomplete__input, .send-v2__memo-text-area__input { - height: 54px; - width: 100%; - border: 1px solid #dedede; - border-radius: 4px; - background-color: #fff; - color: #9b9b9b; - padding: 10px; - font-family: Roboto; - font-size: 16px; - line-height: 21px; - font-weight: 300; } - -.send-v2__amount-max { - color: #2f9ae0; - font-family: Roboto; - font-size: 12px; - left: 8px; - border: none; - cursor: pointer; } - -.send-v2__gas-fee-display { - width: 100%; } - -.send-v2__sliders-icon-container { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - height: 24px; - width: 24px; - border: 1px solid #2f9ae0; - border-radius: 4px; - background-color: #fff; - padding: 5px; - position: absolute; - right: 15px; - top: 14px; - cursor: pointer; } - -.send-v2__sliders-icon { - color: #2f9ae0; } - -.send-v2__memo-text-area__input { - padding: 6px 10px; } - -.send-v2__footer { - height: 92px; - width: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: space-evenly; - -ms-flex-pack: space-evenly; - justify-content: space-evenly; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - border-top: 1px solid #dedede; - background: #fff; - padding: 0 12px; } - -.send-v2__next-btn, .send-v2__cancel-btn, .send-v2__next-btn__disabled { - width: 163px; - text-align: center; - height: 55px; - border-radius: 2px; - background-color: #fff; - font-family: Roboto; - font-size: 16px; - font-weight: 300; - line-height: 21px; - border: 1px solid; - margin: 0 4px; } - -.send-v2__next-btn, .send-v2__next-btn__disabled { - color: #2f9ae0; - border-color: #2f9ae0; } - -.send-v2__next-btn__disabled { - opacity: .5; - cursor: auto; } - -.send-v2__cancel-btn { - color: #9b9b9b; - border-color: #9b9b9b; } - -.send-v2__customize-gas { - border: 1px solid #D8D8D8; - border-radius: 4px; - background-color: #FFFFFF; - -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.14); - box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.14); - font-family: Roboto; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column; - flex-flow: column; } - @media screen and (max-width: 575px) { - .send-v2__customize-gas { - width: 100vw; - height: 100vh; } } - .send-v2__customize-gas__header { - height: 52px; - border-bottom: 1px solid #dedede; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - font-size: 22px; } - @media screen and (max-width: 575px) { - .send-v2__customize-gas__header { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } } - .send-v2__customize-gas__title { - margin-left: 19.25px; } - .send-v2__customize-gas__close::after { - content: '\00D7'; - font-size: 1.8em; - color: #9b9b9b; - font-family: sans-serif; - cursor: pointer; - margin-right: 19.25px; } - .send-v2__customize-gas__content { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - height: 100%; } - .send-v2__customize-gas__body { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin-bottom: 24px; } - @media screen and (max-width: 575px) { - .send-v2__customize-gas__body { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column; - flex-flow: column; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; } } - .send-v2__customize-gas__footer { - height: 75px; - border-top: 1px solid #dedede; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - font-size: 22px; - position: relative; } - @media screen and (max-width: 575px) { - .send-v2__customize-gas__footer { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } } - .send-v2__customize-gas__buttons { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - width: 181.75px; - margin-right: 21.25px; } - .send-v2__customize-gas__revert, .send-v2__customize-gas__cancel, .send-v2__customize-gas__save, .send-v2__customize-gas__save__error { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - cursor: pointer; } - .send-v2__customize-gas__revert { - color: #aeaeae; - font-size: 16px; - margin-left: 21.25px; } - .send-v2__customize-gas__cancel, .send-v2__customize-gas__save, .send-v2__customize-gas__save__error { - height: 34.64px; - width: 85.74px; - border: 1px solid #9b9b9b; - border-radius: 2px; - font-family: 'DIN OT'; - font-size: 12px; - color: #9b9b9b; } - .send-v2__customize-gas__save__error { - opacity: 0.5; - cursor: auto; } - .send-v2__customize-gas__error-message { - display: block; - position: absolute; - top: 4px; - right: 4px; - font-size: 12px; - line-height: 12px; - color: #f00; } - -.send-v2__gas-modal-card { - width: 360px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column; - flex-flow: column; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; - padding-left: 20px; } - .send-v2__gas-modal-card__title { - height: 26px; - color: #4d4d4d; - font-family: Roboto; - font-size: 20px; - font-weight: 300; - line-height: 26px; - margin-top: 17px; } - .send-v2__gas-modal-card__copy { - height: 38px; - width: 314px; - color: #4d4d4d; - font-family: Roboto; - font-size: 14px; - line-height: 19px; - margin-top: 17px; } - .send-v2__gas-modal-card .customize-gas-input-wrapper { - margin-top: 17px; } - .send-v2__gas-modal-card .customize-gas-input { - height: 54px; - width: 315px; - border: 1px solid #d2d8dd; - background-color: #fff; - padding-left: 15px; } - .send-v2__gas-modal-card .gas-tooltip-input-arrows { - width: 32px; - height: 54px; - border-left: 1px solid #dadada; - font-size: 18px; - color: #4d4d4d; - right: 0px; - padding: 1px 4px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-pack: distribute; - justify-content: space-around; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; } - .send-v2__gas-modal-card input[type="number"]::-webkit-inner-spin-button { - -webkit-appearance: none; - display: none; } - .send-v2__gas-modal-card input[type="number"]:hover::-webkit-inner-spin-button { - -webkit-appearance: none; - display: none; } - -.confirm-screen-container { - position: relative; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - font-family: Roboto; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); - box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); - border-radius: 8px; } - @media screen and (max-width: 575px) { - .confirm-screen-container { - width: 100%; } } - -@media screen and (max-width: 575px) { - .notification .confirm-screen-wrapper { - height: calc(100vh - 85px); } } - -.confirm-screen-wrapper { - height: 100%; - width: 380px; - background-color: #fff; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - z-index: 25; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - font-family: Roboto; - position: relative; - overflow-y: auto; - overflow-x: hidden; - border-top-left-radius: 8px; - border-top-right-radius: 8px; } - @media screen and (max-width: 575px) { - .confirm-screen-wrapper { - width: 100%; - overflow-x: hidden; - overflow-y: auto; - top: 0; - -webkit-box-shadow: none; - box-shadow: none; - height: calc(100vh - 58px - 85px); - border-top-left-radius: 0; - border-top-right-radius: 0; } } - -.confirm-screen-wrapper > .confirm-screen-total-box { - margin-left: 10px; - margin-right: 10px; } - -.confirm-screen-wrapper > .confirm-memo-wrapper { - margin: 0; } - -.confirm-screen-header { - height: 88px; - background-color: #e9edf0; - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - font-size: 22px; - line-height: 29px; - width: 100%; - padding: 25px 0; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } - @media screen and (max-width: 575px) { - .confirm-screen-header { - font-size: 20px; } } - -.confirm-screen-header-tip { - height: 25px; - width: 25px; - background: #e9edf0; - position: absolute; - -webkit-transform: rotate(45deg); - transform: rotate(45deg); - top: 71px; - left: 0; - right: 0; - margin: 0 auto; } - -.confirm-screen-title { - line-height: 27px; } - @media screen and (max-width: 575px) { - .confirm-screen-title { - margin-left: 22px; - margin-right: 8px; } } - -.confirm-screen-back-button { - background: transparent; - border: 1px solid #2f9ae0; - left: 24px; - position: absolute; - text-align: center; - color: #2f9ae0; - padding: 6px 13px 7px 12px; - border-radius: 2px; - height: 30px; - width: 54px; } - @media screen and (max-width: 575px) { - .confirm-screen-back-button { - margin-right: 12px; } } - -.confirm-screen-account-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; } - -.confirm-screen-account-name { - margin-top: 12px; - font-size: 14px; - line-height: 19px; - color: #5d5d5d; - text-align: center; } - -.confirm-screen-row-info { - font-size: 16px; - line-height: 21px; } - -.confirm-screen-account-number { - font-size: 10px; - line-height: 16px; - color: #9b9b9b; - text-align: center; - height: 16px; } - -.confirm-send-ether i.fa-arrow-right, -.confirm-send-token i.fa-arrow-right { - -ms-flex-item-align: start; - align-self: start; - margin: 24px 14px 0 !important; } - -.confirm-screen-identicons { - margin-top: 24px; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } - .confirm-screen-identicons i.fa-arrow-right { - -ms-flex-item-align: start; - align-self: start; - margin: 42px 14px 0; } - .confirm-screen-identicons i.fa-file-text-o { - font-size: 60px; - margin: 16px 8px 0 8px; - text-align: center; } - -.confirm-screen-sending-to-message { - text-align: center; - font-size: 16px; - margin-top: 30px; - font-family: 'DIN NEXT Light'; } - -.confirm-screen-send-amount { - color: #5d5d5d; - margin-top: 12px; - text-align: center; - font-size: 40px; - font-weight: 300; - line-height: 53px; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } - -.confirm-screen-send-amount-currency { - font-size: 20px; - line-height: 20px; - text-align: center; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } - -.confirm-memo-wrapper { - min-height: 24px; - width: 100%; - border-bottom: 1px solid #dedede; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } - -.confirm-screen-send-memo { - color: #5d5d5d; - font-size: 16px; - line-height: 19px; - font-weight: 400; } - -.confirm-screen-label { - font-size: 18px; - line-height: 40px; - color: #5d5d5d; - text-align: left; } - -section .confirm-screen-account-name, -section .confirm-screen-account-number, -.confirm-screen-row-info, -.confirm-screen-row-detail { - text-align: left; } - -.confirm-screen-rows { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - width: 100%; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } - -.confirm-screen-section-column { - -webkit-box-flex: .5; - -ms-flex: .5; - flex: .5; } - -.confirm-screen-row { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - border-bottom: 1px solid #dedede; - width: 100%; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding: 12px; - padding-left: 35px; - font-size: 16px; - line-height: 22px; - font-weight: 300; } - -.confirm-screen-row-detail { - font-size: 12px; - line-height: 16px; - color: #9b9b9b; } - -.confirm-screen-total-box { - background-color: #f6f6f6; - padding: 20px; - padding-left: 35px; - border-bottom: 1px solid #dedede; } - .confirm-screen-total-box .confirm-screen-label { - line-height: 18px; } - .confirm-screen-total-box .confirm-screen-row-detail { - color: #5d5d5d; } - .confirm-screen-total-box__subtitle { - font-size: 12px; - line-height: 22px; } - .confirm-screen-total-box .confirm-screen-row-info { - font-size: 16px; - font-weight: 500; - line-height: 21px; } - -.confirm-screen-confirm-button { - height: 62px; - border-radius: 2px; - background-color: #02c9b1; - font-size: 16px; - color: #fff; - text-align: center; - font-family: Roboto; - padding-top: 15px; - padding-bottom: 15px; - border-width: 0; - -webkit-box-shadow: none; - box-shadow: none; - -webkit-box-flex: 1; - -ms-flex: 1 0 auto; - flex: 1 0 auto; - font-weight: 300; - margin: 0 8px; } - -.btn-light.confirm-screen-cancel-button { - height: 62px; - background: none; - border: none; - opacity: 1; - font-family: Roboto; - border-width: 0; - padding-top: 15px; - padding-bottom: 15px; - font-size: 16px; - line-height: 32px; - -webkit-box-shadow: none; - box-shadow: none; - cursor: pointer; - -webkit-box-flex: 1; - -ms-flex: 1 0 auto; - flex: 1 0 auto; - font-weight: 300; - margin: 0 8px; } - -#pending-tx-form { - -webkit-box-flex: 1; - -ms-flex: 1 0 auto; - flex: 1 0 auto; - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - background-color: #fff; - padding: 12px 18px; - border-bottom-left-radius: 8px; - border-bottom-right-radius: 8px; - width: 100%; } - @media screen and (max-width: 575px) { - #pending-tx-form { - border-top: 1px solid #dedede; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; } } - -.loading-overlay { - left: 0px; - z-index: 50; - position: absolute; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - width: 100%; - background: rgba(255, 255, 255, 0.8); } - @media screen and (max-width: 575px) { - .loading-overlay { - margin-top: 56px; - height: calc(100% - 56px); } } - @media screen and (min-width: 576px) { - .loading-overlay { - margin-top: 75px; - height: calc(100% - 75px); } } - -@media screen and (max-width: 575px) { - .hero-balance { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin: .3em .9em 0; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } } - -@media screen and (min-width: 576px) { - .hero-balance { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin: 2.8em 2.37em .8em; } } - -.hero-balance .balance-container { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin: 0; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; } - @media screen and (max-width: 575px) { - .hero-balance .balance-container { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } } - @media screen and (min-width: 576px) { - .hero-balance .balance-container { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-flex: 3; - -ms-flex-positive: 3; - flex-grow: 3; } } - -@media screen and (max-width: 575px) { - .hero-balance .balance-display { - text-align: center; } - .hero-balance .balance-display .token-amount { - font-size: 175%; - margin-top: 12.5%; } - .hero-balance .balance-display .fiat-amount { - font-size: 115%; - margin-top: 8.5%; - color: #a0a0a0; } } - -@media screen and (min-width: 576px) { - .hero-balance .balance-display { - margin-left: 3%; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; } - .hero-balance .balance-display .token-amount { - font-size: 135%; } - .hero-balance .balance-display .fiat-amount { - margin-top: .25%; - font-size: 105%; } } - -.hero-balance .balance-icon { - border-radius: 25px; - width: 45px; - height: 45px; - border: 1px solid #dedede; } - -@media screen and (max-width: 575px) { - .hero-balance .hero-balance-buttons { - width: 100%; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - padding: 16px 0; } } - -@media screen and (min-width: 576px) { - .hero-balance .hero-balance-buttons { - -webkit-box-flex: 2; - -ms-flex-positive: 2; - flex-grow: 2; - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; } } - -.hero-balance .hero-balance-buttons button.btn-clear { - background: #fff; - border: 1px solid; - border-radius: 2px; - font-size: 12px; } - @media screen and (max-width: 575px) { - .hero-balance .hero-balance-buttons button.btn-clear { - border-color: #2f9ae0; - color: #2f9ae0; - height: 36px; } } - @media screen and (min-width: 576px) { - .hero-balance .hero-balance-buttons button.btn-clear { - border-color: #2f9ae0; - color: #2f9ae0; - padding: 0; - width: 85px; - height: 34px; } } - -.wallet-balance-wrapper { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - -webkit-transition: linear 200ms; - transition: linear 200ms; - background: rgba(231, 231, 231, 0); } - .wallet-balance-wrapper--active { - background: #e7e7e7; } - -.wallet-balance { - background: inherit; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - cursor: pointer; - border-top: 1px solid #e7e7e7; } - .wallet-balance .balance-container { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin: 20px 24px; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-flex: 3; - -ms-flex-positive: 3; - flex-grow: 3; } - @media screen and (min-width: 576px) and (max-width: 890px) { - .wallet-balance .balance-container { - margin: 10% 4%; } } - .wallet-balance .balance-display { - margin-left: 15px; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; } - .wallet-balance .balance-display .token-amount { - font-size: 135%; } - .wallet-balance .balance-display .fiat-amount { - margin-top: .25%; - font-size: 105%; } - @media screen and (min-width: 576px) and (max-width: 890px) { - .wallet-balance .balance-display { - margin-left: 4%; } - .wallet-balance .balance-display .token-amount { - font-size: 105%; } - .wallet-balance .balance-display .fiat-amount { - font-size: 95%; } } - .wallet-balance .balance-icon { - border-radius: 25px; - width: 45px; - height: 45px; - border: 1px solid #dedede; } - -.tx-list-container { - height: 87.5%; } - @media screen and (min-width: 576px) { - .tx-list-container { - overflow-y: scroll; } } - -.tx-list-header { - text-transform: capitalize; } - -@media screen and (max-width: 575px) { - .tx-list-header-wrapper { - margin-top: .2em; - margin-bottom: .6em; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } - .tx-list-header { - -ms-flex-item-align: center; - align-self: center; - font-size: 12px; - color: #9b9b9b; - font-family: Roboto; - text-transform: uppercase; } } - -@media screen and (min-width: 576px) { - .tx-list-header-wrapper { - -webkit-box-flex: 0; - -ms-flex: 0 0 55px; - flex: 0 0 55px; } - .tx-list-header { - font-size: 16px; - margin: 1.5em 2.37em; } - .tx-list-container::-webkit-scrollbar { - display: none; } } - -.tx-list-content-divider { - height: 1px; - background: #e7e7e7; - -webkit-box-flex: 0; - -ms-flex: 0 0 1px; - flex: 0 0 1px; } - @media screen and (max-width: 575px) { - .tx-list-content-divider { - margin: .1em 0; } } - @media screen and (min-width: 576px) { - .tx-list-content-divider { - margin: .1em 2.37em; } } - -.tx-list-item-wrapper { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - width: 0; - -webkit-box-align: stretch; - -ms-flex-align: stretch; - align-items: stretch; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; } - @media screen and (max-width: 575px) { - .tx-list-item-wrapper { - padding: 0 1.3em .8em; } } - @media screen and (min-width: 576px) { - .tx-list-item-wrapper { - padding-bottom: 12px; } } - -.tx-list-clickable { - cursor: pointer; } - .tx-list-clickable:hover { - background: rgba(222, 222, 222, 0.2); } - -.tx-list-pending-item-container { - cursor: pointer; - opacity: .5; } - -.tx-list-date-wrapper { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; } - @media screen and (max-width: 575px) { - .tx-list-date-wrapper { - margin-top: 6px; } } - @media screen and (min-width: 576px) { - .tx-list-date-wrapper { - margin-top: 12px; } } - -.tx-list-content-wrapper { - -webkit-box-align: stretch; - -ms-flex-align: stretch; - align-items: stretch; - margin-bottom: 4px; - margin-top: 2px; - -webkit-box-flex: 1; - -ms-flex: 1 0 auto; - flex: 1 0 auto; - width: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; } - @media screen and (max-width: 575px) { - .tx-list-content-wrapper { - font-size: 12px; } - .tx-list-content-wrapper .tx-list-status { - font-size: 14px !important; } - .tx-list-content-wrapper .tx-list-account { - font-size: 14px !important; } - .tx-list-content-wrapper .tx-list-value { - font-size: 14px; - line-height: 18px; } - .tx-list-content-wrapper .tx-list-fiat-value { - font-size: 12px; - line-height: 16px; } } - -.tx-list-date { - color: #9b9b9b; - font-size: 12px; - font-family: Roboto; } - -.tx-list-identicon-wrapper { - -ms-flex-item-align: center; - align-self: center; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - margin-right: 16px; } - -.tx-list-account-and-status-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row wrap; - flex-flow: row wrap; - width: 0; } - @media screen and (max-width: 575px) { - .tx-list-account-and-status-wrapper { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; - -ms-flex-item-align: center; - align-self: center; } - .tx-list-account-and-status-wrapper .tx-list-account-wrapper { - height: 18px; } - .tx-list-account-and-status-wrapper .tx-list-account-wrapper .tx-list-account { - line-height: 14px; } } - @media screen and (min-width: 576px) { - .tx-list-account-and-status-wrapper { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; } - .tx-list-account-and-status-wrapper .tx-list-account-wrapper { - -webkit-box-flex: 1.3; - -ms-flex: 1.3 2 auto; - flex: 1.3 2 auto; - min-width: 153px; } - .tx-list-account-and-status-wrapper .tx-list-status-wrapper { - -webkit-box-flex: 6; - -ms-flex: 6 6 auto; - flex: 6 6 auto; } } - .tx-list-account-and-status-wrapper .tx-list-account { - font-size: 16px; - color: #5d5d5d; } - .tx-list-account-and-status-wrapper .tx-list-status { - color: #9b9b9b; - font-size: 16px; - text-transform: capitalize; } - .tx-list-account-and-status-wrapper .tx-list-status--rejected, - .tx-list-account-and-status-wrapper .tx-list-status--failed { - color: #d0021b; } - -.tx-list-item { - border-top: 1px solid #e7e7e7; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; } - @media screen and (min-width: 576px) { - .tx-list-item { - margin: 0 2.37em; } } - .tx-list-item:last-of-type { - border-bottom: 1px solid #e7e7e7; - margin-bottom: 32px; } - .tx-list-item__wrapper { - -ms-flex-item-align: center; - align-self: center; - -webkit-box-flex: 2; - -ms-flex: 2 2 auto; - flex: 2 2 auto; - color: #9b9b9b; } - .tx-list-item__wrapper .tx-list-value { - font-size: 16px; - text-align: right; } - .tx-list-item__wrapper .tx-list-value--confirmed { - color: #02c9b1; } - .tx-list-item__wrapper .tx-list-fiat-value { - font-size: 12px; - text-align: right; } - .tx-list-item--empty { - text-align: center; - border-bottom: none !important; - padding: 16px; } - -.tx-list-details-wrapper { - overflow: hidden; - -webkit-box-flex: 0; - -ms-flex: 0 0 35%; - flex: 0 0 35%; } - -.tx-list-value { - font-size: 16px; - text-align: right; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; } - -.tx-list-fiat-value { - text-align: right; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; } - -.tx-list-value--confirmed { - color: #02c9b1; } - -/* stylelint-disable */ -/* -App Sections - TODO: Move into separate files. -*/ -/* initialize */ -textarea.twelve-word-phrase { - padding: 12px; - width: 300px; - height: 140px; - font-size: 16px; - background: #fff; - resize: none; } - -.initialize-screen hr { - width: 60px; - margin: 12px; - border-color: #f7861c; - border-style: solid; } - -.initialize-screen label { - margin-top: 20px; } - -.initialize-screen button.create-vault { - margin-top: 40px; } - -.initialize-screen .warning { - font-size: 14px; - margin: 0 16px; } - -/* unlock */ -.error { - color: #f7861c; - margin-bottom: 9px; } - -.warning { - color: #ffae00; } - -.lock { - width: 50px; - height: 50px; } - -.lock.locked { - -webkit-transform: scale(1.5); - transform: scale(1.5); - opacity: 0; - -webkit-transition: opacity 400ms ease-in, -webkit-transform 400ms ease-in; - transition: opacity 400ms ease-in, -webkit-transform 400ms ease-in; - transition: opacity 400ms ease-in, transform 400ms ease-in; - transition: opacity 400ms ease-in, transform 400ms ease-in, -webkit-transform 400ms ease-in; } - -.lock.unlocked { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 1; - -webkit-transition: opacity 500ms ease-out, background 200ms ease-in, -webkit-transform 500ms ease-out; - transition: opacity 500ms ease-out, background 200ms ease-in, -webkit-transform 500ms ease-out; - transition: opacity 500ms ease-out, transform 500ms ease-out, background 200ms ease-in; - transition: opacity 500ms ease-out, transform 500ms ease-out, background 200ms ease-in, -webkit-transform 500ms ease-out; } - -.lock.locked .lock-top { - -webkit-transform: scaleX(1) translateX(0); - transform: scaleX(1) translateX(0); - -webkit-transition: -webkit-transform 250ms ease-in; - transition: -webkit-transform 250ms ease-in; - transition: transform 250ms ease-in; - transition: transform 250ms ease-in, -webkit-transform 250ms ease-in; } - -.lock.unlocked .lock-top { - -webkit-transform: scaleX(-1) translateX(-12px); - transform: scaleX(-1) translateX(-12px); - -webkit-transition: -webkit-transform 250ms ease-in; - transition: -webkit-transform 250ms ease-in; - transition: transform 250ms ease-in; - transition: transform 250ms ease-in, -webkit-transform 250ms ease-in; } - -.lock.unlocked:hover { - border-radius: 4px; - background: #e5e5e5; - border: 1px solid #b1b1b1; } - -.lock.unlocked:active { - background: #c3c3c3; } - -.section-title .fa-arrow-left { - margin: -2px 8px 0px -8px; } - -.unlock-screen #metamask-mascot-container { - margin-top: 24px; } - -.unlock-screen h1 { - margin-top: -28px; - margin-bottom: 42px; } - -.unlock-screen input[type=password] { - width: 260px; } - -.sizing-input { - font-size: 14px; - height: 30px; - padding-left: 5px; } - -.editable-label { - display: -webkit-box; - display: -ms-flexbox; - display: flex; } - -/* Webkit */ -.unlock-screen input::-webkit-input-placeholder { - text-align: center; - font-size: 1.2em; } - -/* Firefox 18- */ -.unlock-screen input:-moz-placeholder { - text-align: center; - font-size: 1.2em; } - -/* Firefox 19+ */ -.unlock-screen input::-moz-placeholder { - text-align: center; - font-size: 1.2em; } - -/* IE */ -.unlock-screen input:-ms-input-placeholder { - text-align: center; - font-size: 1.2em; } - -/* accounts */ -.accounts-section { - margin: 0 0px; } - -.accounts-section .horizontal-line { - margin: 0 18px; } - -.accounts-list-option { - height: 120px; } - -.accounts-list-option .identicon-wrapper { - width: 100px; } - -.unconftx-link { - margin-top: 24px; - cursor: pointer; } - -.unconftx-link .fa-arrow-right { - margin: 0 -8px 0px 8px; } - -/* identity panel */ -.identity-panel { - font-weight: 500; } - -.identity-panel .identicon-wrapper { - margin: 4px; - margin-top: 8px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; } - -.identity-panel .identicon-wrapper span { - margin: 0 auto; } - -.identity-panel .identity-data { - margin: 8px 8px 8px 18px; } - -.identity-panel i { - margin-top: 32px; - margin-right: 6px; - color: #b9b9b9; } - -.identity-panel .arrow-right { - padding-left: 18px; - width: 42px; - min-width: 18px; - height: 100%; } - -.identity-copy.flex-column { - -webkit-box-flex: .25; - -ms-flex: .25 0 auto; - flex: .25 0 auto; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; } - -/* accounts screen */ -.identity-section .identity-panel { - background: #e9e9e9; - border-bottom: 1px solid #b1b1b1; - cursor: pointer; } - -.identity-section .identity-panel.selected { - background: #fff; - color: #f3c83e; } - -.identity-section .identity-panel.selected .identicon { - border-color: #ffa500; } - -.identity-section .accounts-list-option:hover, -.identity-section .accounts-list-option.selected { - background: #fff; } - -/* account detail screen */ -.account-detail-section { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - overflow-y: auto; - -webkit-box-orient: inherit; - -webkit-box-direction: inherit; - -ms-flex-direction: inherit; - flex-direction: inherit; } - -.grow-tenx { - -webkit-box-flex: 10; - -ms-flex-positive: 10; - flex-grow: 10; } - -.unapproved-tx-icon { - height: 16px; - width: 16px; - background: #2faef4; - border-color: #aeaeae; - border-radius: 13px; } - -.edit-text { - height: 100%; - visibility: hidden; } - -.editing-label { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - margin-left: 50px; - margin-bottom: 2px; - font-size: 11px; - text-rendering: geometricPrecision; - color: #f7861c; } - -.name-label:hover .edit-text { - visibility: visible; } - -/* tx confirm */ -.unconftx-section input[type=password] { - height: 22px; - padding: 2px; - margin: 12px; - margin-bottom: 24px; - border-radius: 4px; - border: 2px solid #f3c83e; - background: #faf6f0; } - -/* Ether Balance Widget */ -.ether-balance-amount { - color: #f7861c; } - -.ether-balance-label { - color: #aba9aa; } - -/* Info screen */ -.info-gray { - font-family: Roboto; - text-transform: uppercase; - color: #aeaeae; } - -.icon-size { - width: 20px; } - -.info { - font-family: Roboto, Arial; - padding-bottom: 10px; - display: inline-block; - padding-left: 5px; } - -/* buy eth warning screen */ -.custom-radios { - -ms-flex-pack: distribute; - justify-content: space-around; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; } - -.custom-radio-selected { - width: 17px; - height: 17px; - border: solid; - border-style: double; - border-radius: 15px; - border-width: 5px; - background: #f7861c; - border-color: #f7f7f7; } - -.custom-radio-inactive { - width: 14px; - height: 14px; - border: solid; - border-width: 1px; - border-radius: 24px; - border-color: #aeaeae; } - -.radio-titles { - color: #f7861c; } - -.eth-warning { - -webkit-transition: opacity 400ms ease-in, -webkit-transform 400ms ease-in; - transition: opacity 400ms ease-in, -webkit-transform 400ms ease-in; - transition: opacity 400ms ease-in, transform 400ms ease-in; - transition: opacity 400ms ease-in, transform 400ms ease-in, -webkit-transform 400ms ease-in; } - -.buy-subview { - -webkit-transition: opacity 400ms ease-in, -webkit-transform 400ms ease-in; - transition: opacity 400ms ease-in, -webkit-transform 400ms ease-in; - transition: opacity 400ms ease-in, transform 400ms ease-in; - transition: opacity 400ms ease-in, transform 400ms ease-in, -webkit-transform 400ms ease-in; } - -.input-container:hover .edit-text { - visibility: visible; } - -.buy-inputs { - font-family: Roboto; - font-size: 13px; - height: 20px; - background: transparent; - -webkit-box-sizing: border-box; - box-sizing: border-box; - border: solid; - border-color: transparent; - border-width: .5px; - border-radius: 2px; } - -.input-container:hover .buy-inputs { - -webkit-box-sizing: inherit; - box-sizing: inherit; - border: solid; - border-color: #f7861c; - border-width: .5px; - border-radius: 2px; } - -.buy-inputs:focus { - border: solid; - border-color: #f7861c; - border-width: .5px; - border-radius: 2px; } - -.activeForm { - background: #f7f7f7; - border: none; - border-radius: 8px 8px 0px 0px; - width: 50%; - text-align: center; - padding-bottom: 4px; } - -.inactiveForm { - border: none; - border-radius: 8px 8px 0px 0px; - width: 50%; - text-align: center; - padding-bottom: 4px; } - -.ex-coins { - font-family: Roboto; - text-transform: uppercase; - text-align: center; - font-size: 33px; - width: 118px; - height: 42px; - padding: 1px; - color: #4d4d4d; } - -.marketinfo { - font-family: Roboto; - color: #aeaeae; - font-size: 15px; - line-height: 17px; } - -#fromCoin::-webkit-calendar-picker-indicator { - display: none; } - -#coinList { - width: 400px; - height: 500px; - overflow: scroll; } - -.icon-control .fa-refresh { - visibility: hidden; } - -.icon-control:hover .fa-refresh { - visibility: visible; } - -.icon-control:hover .fa-chevron-right { - visibility: hidden; } - -.inactive { - color: #aeaeae; } - -.inactive button { - background: #aeaeae; - color: #fff; } - -.qr-ellip-address, .ellip-address { - overflow: hidden; - text-overflow: ellipsis; } - -.qr-header { - font-size: 25px; - margin-top: 40px; } - -.qr-message { - font-size: 12px; - color: #f7861c; } - -div.message-container > div:first-child { - margin-top: 18px; - font-size: 15px; - color: #4d4d4d; } - -.pop-hover:hover { - -webkit-transform: scale(1.1); - transform: scale(1.1); } - -/* stylelint-enable */ -.token-list-item { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding: 20px 24px; - cursor: pointer; - -webkit-transition: linear 200ms; - transition: linear 200ms; - background-color: rgba(231, 231, 231, 0); - position: relative; } - .token-list-item__token-balance { - font-size: 130%; } - @media screen and (min-width: 576px) and (max-width: 890px) { - .token-list-item__token-balance { - font-size: 105%; } } - .token-list-item__fiat-amount { - margin-top: .25%; - font-size: 105%; - text-transform: uppercase; } - @media screen and (min-width: 576px) and (max-width: 890px) { - .token-list-item__fiat-amount { - font-size: 95%; } } - @media screen and (min-width: 576px) and (max-width: 890px) { - .token-list-item { - padding: 10% 4%; } } - .token-list-item--active { - background-color: #e7e7e7; } - .token-list-item__identicon { - margin-right: 15px; - border: '1px solid #dedede'; } - @media screen and (min-width: 576px) and (max-width: 890px) { - .token-list-item__identicon { - margin-right: 4%; } } - .token-list-item__ellipsis { - line-height: 45px; } - .token-list-item__balance-wrapper { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; } - -.token-menu-dropdown { - height: 55px; - width: 191px; - border-radius: 4px; - background-color: rgba(0, 0, 0, 0.82); - -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.5); - box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.5); - position: fixed; - margin-top: 20px; - margin-left: 105px; - z-index: 2000; } - .token-menu-dropdown__close-area { - position: fixed; - top: 0; - left: 0; - z-index: 2100; - width: 100%; - height: 100%; - cursor: default; } - .token-menu-dropdown__container { - padding: 16px 34px 32px; - z-index: 2200; - position: relative; } - .token-menu-dropdown__options { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; } - .token-menu-dropdown__option { - color: #fff; - font-family: Roboto; - font-size: 16px; - line-height: 21px; - text-align: center; } - -.add-token { - width: 498px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - position: relative; - z-index: 12; - font-family: 'DIN Next Light'; } - .add-token__wrapper { - background-color: #fff; - -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); - box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } - .add-token__title-container { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding: 30px 60px 12px; - border-bottom: 1px solid #efefef; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } - .add-token__title { - color: #5d5d5d; - font-size: 20px; - line-height: 26px; - text-align: center; - font-weight: 600; - margin-bottom: 12px; } - .add-token__description { - text-align: center; } - .add-token__description + .add-token__description { - margin-top: 24px; } - .add-token__confirmation-description { - margin: 12px 0; } - .add-token__content-container { - width: 100%; - border-bottom: 1px solid #efefef; } - .add-token__input-container { - padding: 11px 0; - width: 263px; - margin: 0 auto; - position: relative; } - .add-token__search-input-error-message { - position: absolute; - bottom: -10px; - font-size: 12px; - width: 100%; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - color: #f00; } - .add-token__input { - width: 100%; - border: 2px solid #efefef; - border-radius: 4px; - padding: 5px 15px; - font-size: 14px; - line-height: 19px; } - .add-token__input::-webkit-input-placeholder { - color: #cdcdcd; } - .add-token__input:-ms-input-placeholder { - color: #cdcdcd; } - .add-token__input::-ms-input-placeholder { - color: #cdcdcd; } - .add-token__input::placeholder { - color: #cdcdcd; } - .add-token__footers { - width: 100%; } - .add-token__add-custom { - color: #5d5d5d; - font-size: 18px; - line-height: 24px; - text-align: center; - padding: 12px 0; - font-weight: 600; - cursor: pointer; } - .add-token__add-custom:hover { - background-color: rgba(0, 0, 0, 0.05); } - .add-token__add-custom:active { - background-color: rgba(0, 0, 0, 0.1); } - .add-token__add-custom .fa { - position: absolute; - right: 24px; - font-size: 24px; - line-height: 24px; } - .add-token__add-custom-form { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - margin: 8px 0 51px; } - .add-token__add-custom-field { - width: 290px; - margin: 0 auto; - position: relative; } - .add-token__add-custom-field--error .add-token__add-custom-input { - border-color: #f00; } - .add-token__add-custom-error-message { - position: absolute; - bottom: -21px; - font-size: 12px; - width: 100%; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - color: #f00; } - .add-token__add-custom-label { - font-size: 16px; - line-height: 21px; - margin-bottom: 8px; } - .add-token__add-custom-input { - width: 100%; - border: 1px solid #cdcdcd; - padding: 5px 15px; - font-size: 14px; - line-height: 19px; } - .add-token__add-custom-input::-webkit-input-placeholder { - color: #cdcdcd; } - .add-token__add-custom-input:-ms-input-placeholder { - color: #cdcdcd; } - .add-token__add-custom-input::-ms-input-placeholder { - color: #cdcdcd; } - .add-token__add-custom-input::placeholder { - color: #cdcdcd; } - .add-token__add-custom-field + .add-token__add-custom-field { - margin-top: 21px; } - .add-token__buttons { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - margin: 30px 0 51px; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } - .add-token__token-icons-container { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row wrap; - flex-flow: row wrap; } - .add-token__token-wrapper { - -webkit-transition: 200ms ease-in-out; - transition: 200ms ease-in-out; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - -webkit-box-flex: 0; - -ms-flex: 0 0 42.5%; - flex: 0 0 42.5%; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding: 12px; - margin: 2.5%; - -webkit-box-sizing: border-box; - box-sizing: border-box; - border-radius: 10px; - cursor: pointer; - border: 2px solid transparent; - position: relative; } - .add-token__token-wrapper:hover { - border: 2px solid rgba(122, 201, 253, 0.5); } - .add-token__token-wrapper--selected { - border: 2px solid #7ac9fd !important; } - .add-token__token-wrapper--disabled { - opacity: .4; - pointer-events: none; } - .add-token__token-data { - -ms-flex-item-align: start; - align-self: flex-start; } - .add-token__token-name { - font-size: 14px; - line-height: 19px; } - .add-token__token-symbol { - font-size: 22px; - line-height: 29px; - font-weight: 600; } - .add-token__token-icon { - width: 60px; - height: 60px; - background-repeat: no-repeat; - background-size: contain; - background-position: center; - border-radius: 50%; - background-color: #fff; - -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.24); - box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.24); - margin-right: 12px; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } - .add-token__token-message { - position: absolute; - color: #02c9b1; - font-size: 11px; - bottom: 0; - left: 85px; } - .add-token__confirmation-token-list { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; } - .add-token__confirmation-token-list .token-balance { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; } - .add-token__confirmation-token-list .token-balance__amount { - color: #5d5d5d; - font-size: 43px; - font-weight: 300; - line-height: 43px; - margin-right: 8px; } - .add-token__confirmation-token-list .token-balance__symbol { - color: #5d5d5d; - font-size: 16px; - line-height: 24px; } - .add-token__confirmation-title { - padding: 30px 120px 12px; } - @media screen and (max-width: 575px) { - .add-token__confirmation-title { - padding: 20px 0; - width: 100%; } } - .add-token__confirmation-content { - padding-bottom: 60px; } - .add-token__confirmation-token-list-item { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - margin: 0 auto; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; } - .add-token__confirmation-token-list-item + .add-token__confirmation-token-list-item { - margin-top: 30px; } - .add-token__confirmation-token-icon { - margin-right: 18px; } - @media screen and (max-width: 575px) { - .add-token { - top: 0; - width: 100%; - overflow: hidden; - height: 100%; } - .add-token__wrapper { - -webkit-box-shadow: none !important; - box-shadow: none !important; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - width: 100%; - overflow-y: auto; } - .add-token__footers { - border-bottom: 1px solid #efefef; } - .add-token__token-icon { - width: 50px; - height: 50px; } - .add-token__token-symbol { - font-size: 18px; - line-height: 24px; } - .add-token__token-name { - font-size: 12px; - line-height: 16px; } - .add-token__buttons { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - width: 100%; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - padding: 12px 0; - margin: 0; - border-top: 1px solid #efefef; } - .add-token__buttons button { - -webkit-box-flex: 1; - -ms-flex: 1 0 auto; - flex: 1 0 auto; - margin: 0 12px; } } - -.currency-display { - height: 54px; - width: 100%ß; - border: 1px solid #dedede; - border-radius: 4px; - background-color: #fff; - color: #9b9b9b; - font-family: Roboto; - font-size: 16px; - font-weight: 300; - padding: 8px 10px; - position: relative; } - .currency-display__primary-row { - display: -webkit-box; - display: -ms-flexbox; - display: flex; } - .currency-display__input { - color: #5d5d5d; - font-family: Roboto; - font-size: 16px; - line-height: 22px; - border: none; - outline: 0 !important; - max-width: 100%; } - .currency-display__primary-currency { - color: #5d5d5d; - font-weight: 400; - font-family: Roboto; - font-size: 16px; - line-height: 22px; } - .currency-display__converted-row { - display: -webkit-box; - display: -ms-flexbox; - display: flex; } - .currency-display__converted-value, .currency-display__converted-currency { - color: #9b9b9b; - font-family: Roboto; - font-size: 12px; - line-height: 12px; } - .currency-display__input-wrapper { - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; } - .currency-display__currency-symbol { - margin-top: 1px; } - -.account-menu { - position: fixed; - z-index: 100; - top: 58px; - width: 310px; } - @media screen and (max-width: 575px) { - .account-menu { - right: calc(((100vw - 100%) / 2) + 8px); } } - @media screen and (min-width: 576px) { - .account-menu { - right: calc((100vw - 85vw) / 2); } } - @media screen and (min-width: 769px) { - .account-menu { - right: calc((100vw - 80vw) / 2); } } - @media screen and (min-width: 1281px) { - .account-menu { - right: calc((100vw - 65vw) / 2); } } - .account-menu__icon { - margin-left: 20px; - cursor: pointer; } - .account-menu__header { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; } - .account-menu__logout-button { - border: 1px solid #9b9b9b; - background-color: transparent; - color: #fff; - border-radius: 4px; - font-size: 12px; - line-height: 23px; - padding: 0 24px; - font-weight: 200; } - .account-menu img { - width: 16px; - height: 16px; } - .account-menu__accounts { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - overflow-y: auto; - max-height: 240px; - position: relative; - z-index: 200; } - .account-menu__accounts::-webkit-scrollbar { - display: none; } - @media screen and (max-width: 575px) { - .account-menu__accounts { - max-height: 215px; } } - .account-menu__accounts .keyring-label { - margin-top: 5px; - background-color: #000; - color: #9b9b9b; } - .account-menu__account { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - padding: 16px 14px; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } - @media screen and (max-width: 575px) { - .account-menu__account { - padding: 12px 14px; } } - .account-menu__account-info { - -webkit-box-flex: 1; - -ms-flex: 1 0 auto; - flex: 1 0 auto; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - padding-top: 4px; } - .account-menu__check-mark { - width: 14px; - margin-right: 12px; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } - .account-menu__check-mark-icon { - background-image: url("images/check-white.svg"); - height: 18px; - width: 18px; - background-repeat: no-repeat; - background-position: center; - background-size: contain; - margin: 3px 0; } - .account-menu .identicon { - margin: 0 12px 0 0; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } - .account-menu__name { - color: #fff; - font-size: 18px; - font-weight: 200; - line-height: 16px; } - .account-menu__balance { - color: #9b9b9b; - font-size: 14px; - line-height: 19px; } - .account-menu__action { - font-size: 16px; - line-height: 18px; - font-weight: 200; - cursor: pointer; } - -.menu { - border-radius: 4px; - background: rgba(0, 0, 0, 0.8); - -webkit-box-shadow: rgba(0, 0, 0, 0.15) 0 2px 2px 2px; - box-shadow: rgba(0, 0, 0, 0.15) 0 2px 2px 2px; - min-width: 150px; - color: #fff; } - .menu__item { - padding: 18px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - position: relative; - z-index: 200; - font-weight: 200; } - @media screen and (max-width: 575px) { - .menu__item { - padding: 14px; } } - .menu__item--clickable { - cursor: pointer; } - .menu__item--clickable:hover { - background-color: rgba(255, 255, 255, 0.05); } - .menu__item--clickable:active { - background-color: rgba(255, 255, 255, 0.1); } - .menu__item__icon { - height: 16px; - width: 16px; - margin-right: 14px; } - .menu__item__text { - font-size: 16px; - line-height: 21px; } - .menu__divider { - background-color: #5d5d5d; - width: 100%; - height: 1px; } - .menu__close-area { - position: fixed; - width: 100%; - height: 100%; - top: 0; - left: 0; - z-index: 100; } - -.gas-slider { - position: relative; - width: 313px; } - .gas-slider__input { - width: 317px; - margin-left: -2px; - z-index: 2; } - .gas-slider input[type=range] { - -webkit-appearance: none !important; } - .gas-slider input[type=range]::-webkit-slider-thumb { - -webkit-appearance: none !important; - height: 26px; - width: 26px; - border: 2px solid #B8B8B8; - background-color: #FFFFFF; - -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); - box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); - border-radius: 50%; - position: relative; - z-index: 10; } - .gas-slider__bar { - height: 6px; - width: 313px; - background: #dedede; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - position: absolute; - top: 11px; - z-index: 0; } - .gas-slider__low, .gas-slider__high { - height: 6px; - width: 49px; - z-index: 1; } - .gas-slider__low { - background-color: #e91550; } - .gas-slider__high { - background-color: #02c9b1; } - -.settings { - position: relative; - background: #fff; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - height: auto; - overflow: auto; } - -.settings__header { - padding: 25px; } - -.settings__close-button::after { - content: '\00D7'; - font-size: 40px; - color: #9b9b9b; - position: absolute; - top: 25px; - right: 30px; - cursor: pointer; } - -.settings__error { - padding-bottom: 20px; - text-align: center; - color: #e91550; } - -.settings__content { - padding: 0 25px; } - -.settings__content-row { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - padding: 10px 0 20px; } - @media screen and (max-width: 575px) { - .settings__content-row { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - padding: 10px 0; } } - -.settings__content-item { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - min-width: 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - padding: 0 5px; - height: 71px; } - @media screen and (max-width: 575px) { - .settings__content-item { - height: initial; - padding: 5px 0; } } - .settings__content-item--without-height { - height: initial; } - -.settings__content-item-col { - max-width: 300px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; } - @media screen and (max-width: 575px) { - .settings__content-item-col { - max-width: 100%; - width: 100%; } } - -.settings__content-description { - font-size: 14px; - color: #9b9b9b; - padding-top: 5px; } - -.settings__input { - padding-left: 10px; - font-size: 14px; - height: 40px; - border: 1px solid #dedede; } - -.settings__input::-webkit-input-placeholder { - font-weight: 100; - color: #9b9b9b; } - -.settings__input::-moz-placeholder { - font-weight: 100; - color: #9b9b9b; } - -.settings__input:-ms-input-placeholder { - font-weight: 100; - color: #9b9b9b; } - -.settings__input:-moz-placeholder { - font-weight: 100; - color: #9b9b9b; } - -.settings__provider-wrapper { - font-size: 16px; - border: 1px solid #dedede; - border-radius: 2px; - padding: 15px; - background-color: #fff; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; } - -.settings__provider-icon { - height: 10px; - width: 10px; - margin-right: 10px; - border-radius: 10px; } - -.settings__rpc-save-button { - -ms-flex-item-align: end; - align-self: flex-end; - padding: 5px; - text-transform: uppercase; - color: #9b9b9b; - cursor: pointer; } - -.settings__clear-button { - font-size: 16px; - border: 1px solid #2f9ae0; - color: #2f9ae0; - border-radius: 2px; - padding: 18px; - background-color: #fff; - text-transform: uppercase; } - -.settings__clear-button--red { - border: 1px solid #d0021b; - color: #d0021b; } - -.settings__info-logo-wrapper { - height: 80px; - margin-bottom: 20px; } - -.settings__info-logo { - max-height: 100%; - max-width: 100%; } - -.settings__info-item { - padding: 10px 0; } - -.settings__info-link-header { - padding-bottom: 15px; } - @media screen and (max-width: 575px) { - .settings__info-link-header { - padding-bottom: 5px; } } - -.settings__info-link-item { - padding: 15px 0; } - @media screen and (max-width: 575px) { - .settings__info-link-item { - padding: 5px 0; } } - -.settings__info-version-number { - padding-top: 5px; - font-size: 13px; - color: #9b9b9b; } - -.settings__info-about { - color: #9b9b9b; - margin-bottom: 15px; } - -.settings__info-link { - color: #2f9ae0; } - -.settings__info-separator { - margin: 15px 0; - width: 80px; - border-color: #dedede; - border: none; - height: 1px; - background-color: #dedede; - color: #dedede; } - -.tab-bar { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-box-align: end; - -ms-flex-align: end; - align-items: flex-end; } - -.tab-bar__tab { - min-width: 0; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - padding: 15px 25px; - border-bottom: 1px solid #dedede; - -webkit-box-sizing: border-box; - box-sizing: border-box; - font-size: 18px; } - -.tab-bar__tab--active { - border-color: #000; } - -.tab-bar__grow-tab { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; } - -.simple-dropdown { - height: 56px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - border: 1px solid #dedede; - border-radius: 4px; - background-color: #fff; - font-size: 16px; - color: #4d4d4d; - cursor: pointer; - position: relative; } - -.simple-dropdown__caret { - color: #cdcdcd; - padding: 0 10px; } - -.simple-dropdown__selected { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - padding: 0 15px; } - -.simple-dropdown__options { - z-index: 1050; - position: absolute; - height: 220px; - width: 100%; - border: 1px solid #d2d8dd; - border-radius: 4px; - background-color: #fff; - -webkit-box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.11); - box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.11); - margin-top: 10px; - overflow-y: scroll; - left: 0; - top: 100%; } - -.simple-dropdown__option { - padding: 10px; } - .simple-dropdown__option:hover { - background-color: #efefef; } - -.simple-dropdown__option--selected { - background-color: #dedede; } - .simple-dropdown__option--selected:hover { - background-color: #dedede; - cursor: default; } - -.simple-dropdown__close-area { - position: fixed; - top: 0; - left: 0; - z-index: 1000; - width: 100%; - height: 100%; } - -.request-signature__container { - width: 380px; - border-radius: 8px; - background-color: #fff; - -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); - box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - z-index: 25; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - font-family: Roboto; - position: relative; - height: 100%; } - @media screen and (max-width: 575px) { - .request-signature__container { - width: 100%; - top: 0; - -webkit-box-shadow: none; - box-shadow: none; } } - @media screen and (min-width: 576px) { - .request-signature__container { - max-height: 620px; } } - -.request-signature__header { - height: 64px; - width: 100%; - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column; - flex-flow: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; } - -.request-signature__header-background { - position: absolute; - background-color: #e9edf0; - z-index: 2; - width: 100%; - height: 100%; } - -.request-signature__header__text { - height: 29px; - width: 179px; - color: #5B5D67; - font-family: Roboto; - font-size: 22px; - font-weight: 300; - line-height: 29px; - z-index: 3; } - -.request-signature__header__tip-container { - width: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; } - -.request-signature__header__tip { - height: 25px; - width: 25px; - background: #e9edf0; - -webkit-transform: rotate(45deg); - transform: rotate(45deg); - position: absolute; - bottom: -8px; - z-index: 1; } - -.request-signature__account-info { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - margin-top: 18px; - margin-bottom: 20px; } - -.request-signature__account { - color: #9b9b9b; - margin-left: 17px; } - -.request-signature__account-text { - font-size: 14px; } - -.request-signature__balance { - color: #9b9b9b; - margin-right: 17px; - width: 124px; } - -.request-signature__balance-text { - text-align: right; - font-size: 14px; } - -.request-signature__balance-value { - text-align: right; - margin-top: 2.5px; } - -.request-signature__request-icon { - margin-top: 25px; } - -.request-signature__body { - width: 100%; - height: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column; - flex-flow: column; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - height: 0; } - -.request-signature__request-info { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; } - -.request-signature__headline { - height: 48px; - width: 240px; - color: #4d4d4d; - font-family: Roboto; - font-size: 18px; - font-weight: 300; - line-height: 24px; - text-align: center; - margin-top: 20px; } - -.request-signature__notice, .request-signature__warning { - font-family: "Avenir Next"; - font-size: 14px; - line-height: 19px; - text-align: center; - margin-top: 41px; - margin-bottom: 11px; - width: 100%; } - -.request-signature__notice { - color: #9b9b9b; } - -.request-signature__warning { - color: #e91550; } - -.request-signature__rows { - height: 100%; - overflow-y: scroll; - overflow-x: hidden; - border-top: 1px solid #d2d8dd; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column; - flex-flow: column; } - -.request-signature__row { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column; - flex-flow: column; } - -.request-signature__row-title { - width: 80px; - color: #9b9b9b; - font-family: Roboto; - font-size: 16px; - line-height: 22px; - margin-top: 12px; - margin-left: 18px; - width: 100%; } - -.request-signature__row-value { - color: #5d5d5d; - font-family: Roboto; - font-size: 14px; - line-height: 19px; - width: 100%; - overflow-wrap: break-word; - border-bottom: 1px solid #d2d8dd; - padding: 6px 18px 15px; } - -.request-signature__footer { - width: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: space-evenly; - -ms-flex-pack: space-evenly; - justify-content: space-evenly; - font-size: 22px; - position: relative; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - border-top: 1px solid #d2d8dd; } - .request-signature__footer__cancel-button, .request-signature__footer__sign-button { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-flex: 1; - -ms-flex: 1 0 auto; - flex: 1 0 auto; - font-family: Roboto; - font-size: 16px; - font-weight: 300; - height: 55px; - line-height: 32px; - cursor: pointer; - border-radius: 2px; - -webkit-box-shadow: none; - box-shadow: none; - max-width: 162px; - margin: 12px; } - .request-signature__footer__cancel-button { - background: none; - border: 1px solid #9b9b9b; - margin-right: 6px; } - .request-signature__footer__sign-button { - background-color: #02c9b1; - border-width: 0; - color: #fff; - margin-left: 6px; } - -.account-dropdown-mini { - height: 22px; - background-color: #fff; - font-family: Roboto; - line-height: 16px; - font-size: 12px; - width: 124px; } - .account-dropdown-mini__close-area { - position: fixed; - top: 0; - left: 0; - z-index: 1000; - width: 100%; - height: 100%; } - .account-dropdown-mini__list { - z-index: 1050; - position: absolute; - height: 180px; - width: 96pxpx; - border: 1px solid #d2d8dd; - border-radius: 4px; - background-color: #fff; - -webkit-box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.11); - box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.11); - overflow-y: scroll; } - .account-dropdown-mini .account-list-item { - margin-top: 6px; } - .account-dropdown-mini .account-list-item__account-name { - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - width: 80px; } - .account-dropdown-mini .account-list-item__top-row { - margin: 0; } - .account-dropdown-mini .account-list-item__icon { - position: initial; } - -.editable-label { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - position: relative; } - .editable-label__value { - max-width: 250px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; } - .editable-label__input { - width: 250px; - font-size: 14px; - text-align: center; - border: 1px solid #dedede; } - .editable-label__input--error { - border: 1px solid #d0021b; } - .editable-label__icon-wrapper { - position: absolute; - margin-left: 10px; - left: 100%; } - .editable-label__icon { - cursor: pointer; - color: #9b9b9b; } - -/* - Trumps - */ -/* universal */ -.app-primary .main-enter { - position: absolute; - width: 100%; } - -/* center position */ -.app-primary.from-right .main-enter-active, -.app-primary.from-left .main-enter-active { - overflow-x: hidden; - -webkit-transform: translateX(0); - transform: translateX(0); - -webkit-transition: -webkit-transform 300ms ease-in; - transition: -webkit-transform 300ms ease-in; - transition: transform 300ms ease-in; - transition: transform 300ms ease-in, -webkit-transform 300ms ease-in; } - -/* exited positions */ -.app-primary.from-left .main-leave-active { - -webkit-transform: translateX(360px); - transform: translateX(360px); - -webkit-transition: -webkit-transform 300ms ease-in; - transition: -webkit-transform 300ms ease-in; - transition: transform 300ms ease-in; - transition: transform 300ms ease-in, -webkit-transform 300ms ease-in; } - -.app-primary.from-right .main-leave-active { - -webkit-transform: translateX(-360px); - transform: translateX(-360px); - -webkit-transition: -webkit-transform 300ms ease-in; - transition: -webkit-transform 300ms ease-in; - transition: transform 300ms ease-in; - transition: transform 300ms ease-in, -webkit-transform 300ms ease-in; } - -.sidebar.from-left { - -webkit-transform: translateX(-320px); - transform: translateX(-320px); - -webkit-transition: -webkit-transform 300ms ease-in; - transition: -webkit-transform 300ms ease-in; - transition: transform 300ms ease-in; - transition: transform 300ms ease-in, -webkit-transform 300ms ease-in; } - -/* loader transitions */ -.loader-enter, -.loader-leave-active { - opacity: 0; - -webkit-transition: opacity 150 ease-in; - transition: opacity 150 ease-in; } - -.loader-enter-active, -.loader-leave { - opacity: 1; - -webkit-transition: opacity 150 ease-in; - transition: opacity 150 ease-in; } - -/* entering positions */ -.app-primary.from-right .main-enter:not(.main-enter-active) { - -webkit-transform: translateX(360px); - transform: translateX(360px); } - -.app-primary.from-left .main-enter:not(.main-enter-active) { - -webkit-transform: translateX(-360px); - transform: translateX(-360px); } - -i.fa.fa-question-circle.fa-lg.menu-icon { - font-size: 18px; } - -/* stylelint-disable */ -#buy-modal-content-footer-text { - font-family: 'DIN OT'; - font-size: 16px; } - -/* stylelint-enable */ - -/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY3NzIiwic291cmNlcyI6WyJpbmRleC5zY3NzIiwiaXRjc3Mvc2V0dGluZ3MvaW5kZXguc2NzcyIsIml0Y3NzL3NldHRpbmdzL3ZhcmlhYmxlcy5zY3NzIiwiaXRjc3Mvc2V0dGluZ3MvdHlwb2dyYXBoeS5zY3NzIiwiaXRjc3MvdG9vbHMvaW5kZXguc2NzcyIsIml0Y3NzL3Rvb2xzL3V0aWxpdGllcy5zY3NzIiwiaXRjc3MvZ2VuZXJpYy9pbmRleC5zY3NzIiwiaXRjc3MvZ2VuZXJpYy9yZXNldC5zY3NzIiwiaXRjc3MvYmFzZS9pbmRleC5zY3NzIiwiaXRjc3Mvb2JqZWN0cy9pbmRleC5zY3NzIiwiaXRjc3MvY29tcG9uZW50cy9pbmRleC5zY3NzIiwiaXRjc3MvY29tcG9uZW50cy9idXR0b25zLnNjc3MiLCJpdGNzcy9jb21wb25lbnRzL2hlYWRlci5zY3NzIiwiaXRjc3MvY29tcG9uZW50cy9mb290ZXIuc2NzcyIsIml0Y3NzL2NvbXBvbmVudHMvbmV0d29yay5zY3NzIiwiaXRjc3MvY29tcG9uZW50cy9tb2RhbC5zY3NzIiwiaXRjc3MvY29tcG9uZW50cy9uZXd1aS1zZWN0aW9ucy5zY3NzIiwiaXRjc3MvY29tcG9uZW50cy9hY2NvdW50LWRyb3Bkb3duLnNjc3MiLCJpdGNzcy9jb21wb25lbnRzL3NlbmQuc2NzcyIsIml0Y3NzL2NvbXBvbmVudHMvY29uZmlybS5zY3NzIiwiaXRjc3MvY29tcG9uZW50cy9sb2FkaW5nLW92ZXJsYXkuc2NzcyIsIml0Y3NzL2NvbXBvbmVudHMvaGVyby1iYWxhbmNlLnNjc3MiLCJpdGNzcy9jb21wb25lbnRzL3dhbGxldC1iYWxhbmNlLnNjc3MiLCJpdGNzcy9jb21wb25lbnRzL3RyYW5zYWN0aW9uLWxpc3Quc2NzcyIsIml0Y3NzL2NvbXBvbmVudHMvc2VjdGlvbnMuc2NzcyIsIml0Y3NzL2NvbXBvbmVudHMvdG9rZW4tbGlzdC5zY3NzIiwiaXRjc3MvY29tcG9uZW50cy9hZGQtdG9rZW4uc2NzcyIsIml0Y3NzL2NvbXBvbmVudHMvY3VycmVuY3ktZGlzcGxheS5zY3NzIiwiaXRjc3MvY29tcG9uZW50cy9hY2NvdW50LW1lbnUuc2NzcyIsIml0Y3NzL2NvbXBvbmVudHMvbWVudS5zY3NzIiwiaXRjc3MvY29tcG9uZW50cy9nYXMtc2xpZGVyLnNjc3MiLCJpdGNzcy9jb21wb25lbnRzL3NldHRpbmdzLnNjc3MiLCJpdGNzcy9jb21wb25lbnRzL3RhYi1iYXIuc2NzcyIsIml0Y3NzL2NvbXBvbmVudHMvc2ltcGxlLWRyb3Bkb3duLnNjc3MiLCJpdGNzcy9jb21wb25lbnRzL3JlcXVlc3Qtc2lnbmF0dXJlLnNjc3MiLCJpdGNzcy9jb21wb25lbnRzL2FjY291bnQtZHJvcGRvd24tbWluaS5zY3NzIiwiaXRjc3MvY29tcG9uZW50cy9lZGl0YWJsZS1sYWJlbC5zY3NzIiwiaXRjc3MvdHJ1bXBzL2luZGV4LnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgSVRDU1NcblxuICBodHRwOi8vd3d3LmNyZWF0aXZlYmxvcS5jb20vd2ViLWRlc2lnbi9tYW5hZ2UtbGFyZ2UtY3NzLXByb2plY3RzLWl0Y3NzLTEwMTUxNzUyOFxuICBodHRwczovL3d3dy54Zml2ZS5jby9ibG9nL2l0Y3NzLXNjYWxhYmxlLW1haW50YWluYWJsZS1jc3MtYXJjaGl0ZWN0dXJlL1xuICovXG5AaW1wb3J0ICcuL2l0Y3NzL3NldHRpbmdzL2luZGV4LnNjc3MnO1xuQGltcG9ydCAnLi9pdGNzcy90b29scy9pbmRleC5zY3NzJztcbkBpbXBvcnQgJy4vaXRjc3MvZ2VuZXJpYy9pbmRleC5zY3NzJztcbkBpbXBvcnQgJy4vaXRjc3MvYmFzZS9pbmRleC5zY3NzJztcbkBpbXBvcnQgJy4vaXRjc3Mvb2JqZWN0cy9pbmRleC5zY3NzJztcbkBpbXBvcnQgJy4vaXRjc3MvY29tcG9uZW50cy9pbmRleC5zY3NzJztcbkBpbXBvcnQgJy4vaXRjc3MvdHJ1bXBzL2luZGV4LnNjc3MnO1xuIiwiQGltcG9ydCAnLi92YXJpYWJsZXMuc2Nzcyc7XG5cbkBpbXBvcnQgJy4vdHlwb2dyYXBoeS5zY3NzJztcbiIsIi8qXG4gIFZhcmlhYmxlc1xuICovXG5cbi8vIEJhc2UgQ29sb3JzXG4kd2hpdGU6ICNmZmY7XG4kYmxhY2s6ICMwMDA7XG4kb3JhbmdlOiAjZmZhNTAwO1xuJHJlZDogI2YwMDtcbiRncmF5OiAjODA4MDgwO1xuXG4vKlxuICBDb2xvcnNcbiAgaHR0cDovL2NoaXIuYWcvcHJvamVjdHMvbmFtZS10aGF0LWNvbG9yXG4gKi9cbiR3aGl0ZS1saW5lbjogI2ZhZjZmMDsgLy8gZm9ybWVybHkgJ2ZhaW50IG9yYW5nZSAodGV4dGZpZWxkIHNoYWRlcyknXG4kcmFqYWg6ICNmNWMyNmQ7IC8vIGZvcm1lcmx5ICdsaWdodCBvcmFuZ2UgKGJ1dHRvbiBzaGFkZXMpJ1xuJGJ1dHRlcmN1cDogI2Y1YTYyMzsgLy8gZm9ybWVybHkgJ2Rhcmsgb3JhbmdlICh0ZXh0KSdcbiR0dW5kb3JhOiAjNGE0YTRhOyAvLyBmb3JtZXJseSAnYm9yZGVycy9mb250L2FueSBncmF5J1xuJGdhbGxlcnk6ICNlZmVmZWY7XG4kYWxhYmFzdGVyOiAjZjdmN2Y3O1xuJHNoYXJrOiAjMjIyMzJjO1xuJHdpbGQtc2FuZDogI2Y2ZjZmNjtcbiR3aGl0ZTogI2ZmZjtcbiRkdXN0eS1ncmF5OiAjOWI5YjliO1xuJGFsdG86ICNkZWRlZGU7XG4kYWxhYmFzdGVyOiAjZmFmYWZhO1xuJHNpbHZlci1jaGFsaWNlOiAjYWVhZWFlO1xuJGN1cmlvdXMtYmx1ZTogIzJmOWFlMDtcbiRjb25jcmV0ZTogI2YzZjNmMztcbiR0dW5kb3JhOiAjNGQ0ZDRkO1xuJG5pbGUtYmx1ZTogIzFiMzQ0ZDtcbiRzY29ycGlvbjogIzVkNWQ1ZDtcbiRzaWx2ZXI6ICNjZGNkY2Q7XG4kY2FyaWJiZWFuLWdyZWVuOiAjMDJjOWIxO1xuJG1vbnpvOiAjZDAwMjFiO1xuJGNyaW1zb246ICNlOTE1NTA7XG4kYmx1ZS1sYWdvb246ICMwMzg3ODk7XG4kcHVycGxlOiAjNjkwNDk2O1xuJHR1bGlwLXRyZWU6ICNlYmIzM2Y7XG4kbWFsaWJ1LWJsdWU6ICM3YWM5ZmQ7XG4kYXRoZW5zLWdyZXk6ICNlOWVkZjA7XG4kamFmZmE6ICNmMjg5MzA7XG4kZ2V5c2VyOiAjZDJkOGRkO1xuXG4vKlxuICBaLUluZGljaWVzXG4gKi9cbiRkcm9wZG93bi16LWluZGV4OiAzMDtcbiR0b2tlbi1pY29uLXotaW5kZXg6IDE1O1xuJGNvbnRhaW5lci16LWluZGV4OiAxNTtcbiRoZWFkZXItei1pbmRleDogMTI7XG4kbW9iaWxlLWhlYWRlci16LWluZGV4OiAyNjtcbiRtYWluLWNvbnRhaW5lci16LWluZGV4OiAxODtcbiRzZW5kLWNhcmQtei1pbmRleDogMjA7XG4kc2lkZWJhci16LWluZGV4OiAyNjtcbiRzaWRlYmFyLW92ZXJsYXktei1pbmRleDogMjU7XG5cbi8qXG4gIFogSW5kaWNpZXMgLSBDdXJyZW50XG4gIGFwcCAtIDExXG4gIGhleC9ibiBhcyBkZWNpbWFsIGlucHV0IC0gMSAtIHJlbW92ZT9cbiAgZHJvcGRvd24gLSAxMVxuICBsb2FkaW5nIC0gMTAgLSBoaWdoZXI/XG4gIG1hc2NvdCAtIDAgLSByZW1vdmU/XG4gKi9cblxuLypcbiAgUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICovXG4kYnJlYWstc21hbGw6IDU3NXB4O1xuJGJyZWFrLW1pZHBvaW50OiA3ODBweDtcbiRicmVhay1sYXJnZTogNTc2cHg7XG5cblxuJHByaW1hcnktZm9udC10eXBlOiBSb2JvdG87XG5cbiIsIkBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9Um9ib3RvOjEwMCwzMDAsNDAwLDUwMCw3MDAsOTAwJyk7XG5cbkBpbXBvcnQgdXJsKCdodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS80LjQuMC9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MnKTtcblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCBSZWd1bGFyJztcbiAgc3JjOiB1cmwoJy9mb250cy9Nb250c2VycmF0L01vbnRzZXJyYXQtUmVndWxhci53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4gIHNyYzogdXJsKCcvZm9udHMvTW9udHNlcnJhdC9Nb250c2VycmF0LVJlZ3VsYXIudHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtc2l6ZTogJ3NtYWxsJztcbn1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCBCb2xkJztcbiAgc3JjOiB1cmwoJy9mb250cy9Nb250c2VycmF0L01vbnRzZXJyYXQtQm9sZC53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4gIHNyYzogdXJsKCcvZm9udHMvTW9udHNlcnJhdC9Nb250c2VycmF0LUJvbGQudHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQgTGlnaHQnO1xuICBzcmM6IHVybCgnL2ZvbnRzL01vbnRzZXJyYXQvTW9udHNlcnJhdC1MaWdodC53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4gIHNyYzogdXJsKCcvZm9udHMvTW9udHNlcnJhdC9Nb250c2VycmF0LUxpZ2h0LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0IFVsdHJhTGlnaHQnO1xuICBzcmM6IHVybCgnL2ZvbnRzL01vbnRzZXJyYXQvTW9udHNlcnJhdC1VbHRyYUxpZ2h0LndvZmYnKSBmb3JtYXQoJ3dvZmYnKTtcbiAgc3JjOiB1cmwoJy9mb250cy9Nb250c2VycmF0L01vbnRzZXJyYXQtVWx0cmFMaWdodC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnRElOIE9UJztcbiAgc3JjOiB1cmwoJy9mb250cy9ESU5fT1QvRElOT1QtMi5vdGYnKSBmb3JtYXQoJ29wZW50eXBlJyk7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnRElOIE9UIExpZ2h0JztcbiAgc3JjOiB1cmwoJy9mb250cy9ESU5fT1QvRElOT1QtMi5vdGYnKSBmb3JtYXQoJ29wZW50eXBlJyk7XG4gIGZvbnQtd2VpZ2h0OiAyMDA7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnRElOIE5FWFQnO1xuICBzcmM6IHVybCgnL2ZvbnRzL0RJTiBORVhUL0RJTiBORVhUIFcwMSBSZWd1bGFyLm90ZicpIGZvcm1hdCgnb3BlbnR5cGUnKTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdESU4gTkVYVCBMaWdodCc7XG4gIHNyYzogdXJsKCcvZm9udHMvRElOIE5FWFQvRElOIE5FWFQgVzEwIExpZ2h0Lm90ZicpIGZvcm1hdCgnb3BlbnR5cGUnKTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdMYXRvJztcbiAgc3JjOiB1cmwoJy9mb250cy9MYXRvL0xhdG8tUmVndWxhci50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cbiIsIkBpbXBvcnQgJy4vdXRpbGl0aWVzLnNjc3MnO1xuIiwiLypcbiAgVXRpbGl0eSBDbGFzc2VzXG4gKi9cblxuLyogY29sb3IgKi9cblxuLmNvbG9yLW9yYW5nZSB7XG4gIGNvbG9yOiAjZjc4NjFjOyAvLyBUT0RPOiBtb3ZlIHRvIHNldHRpbmdzL3ZhcmlhYmxlc1xufVxuXG4uY29sb3ItZm9yZXN0IHtcbiAgY29sb3I6ICMwYTU0NDg7IC8vIFRPRE86IG1vdmUgdG8gc2V0dGluZ3MvdmFyaWFibGVzXG59XG5cbi8qIGxpYiAqL1xuXG4uZnVsbC1zaXplIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmZ1bGwtd2lkdGgge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmZ1bGwtZmxleC1oZWlnaHQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4OiAxIDEgYXV0bztcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLmZ1bGwtaGVpZ2h0IHtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4uZmxleC1jb2x1bW4ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4uc3BhY2UtYmV0d2VlbiB7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuLnNwYWNlLWFyb3VuZCB7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xufVxuXG4uZmxleC1jb2x1bW4tYm90dG9tIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xufVxuXG4uZmxleC1yb3cge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xufVxuXG4uZmxleC1zcGFjZS1iZXR3ZWVuIHtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4uZmxleC1zcGFjZS1hcm91bmQge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbn1cblxuLmZsZXgtcmlnaHQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuXG4uZmxleC1sZWZ0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xufVxuXG4uZmxleC1maXhlZCB7XG4gIGZsZXg6IG5vbmU7XG59XG5cbi5mbGV4LWJhc2lzLWF1dG8ge1xuICBmbGV4LWJhc2lzOiBhdXRvO1xufVxuXG4uZmxleC1ncm93IHtcbiAgZmxleDogMSAxIGF1dG87XG59XG5cbi5mbGV4LXdyYXAge1xuICBmbGV4LXdyYXA6IHdyYXA7XG59XG5cbi5mbGV4LWNlbnRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uZmxleC1qdXN0aWZ5LWNlbnRlciB7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4uZmxleC1hbGlnbi1jZW50ZXIge1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uZmxleC1zZWxmLWVuZCB7XG4gIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xufVxuXG4uZmxleC1zZWxmLXN0cmV0Y2gge1xuICBhbGlnbi1zZWxmOiBzdHJldGNoO1xufVxuXG4uZmxleC12ZXJ0aWNhbCB7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi56LWJ1bXAge1xuICB6LWluZGV4OiAxO1xufVxuXG4uc2VsZWN0LW5vbmUge1xuICBjdXJzb3I6IGluaGVyaXQ7XG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi5wb2ludGVyIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uY3Vyc29yLXBvaW50ZXIge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSA1MG1zIGVhc2UtaW4tb3V0O1xufVxuXG4uY3Vyc29yLXBvaW50ZXI6aG92ZXIge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG59XG5cbi5jdXJzb3ItcG9pbnRlcjphY3RpdmUge1xuICB0cmFuc2Zvcm06IHNjYWxlKC45NSk7XG59XG5cbi5jdXJzb3ItZGlzYWJsZWQge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4ubWFyZ2luLWJvdHRvbS1zbWwge1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuXG4ubWFyZ2luLWJvdHRvbS1tZWQge1xuICBtYXJnaW4tYm90dG9tOiA0MHB4O1xufVxuXG4ubWFyZ2luLXJpZ2h0LWxlZnQge1xuICBtYXJnaW46IDAgMjBweDtcbn1cblxuLmJvbGQge1xuICBmb250LXdlaWdodDogNzAwO1xufVxuXG4udGV4dC10cmFuc2Zvcm0tdXBwZXJjYXNlIHtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLmZvbnQtc21hbGwge1xuICBmb250LXNpemU6IDEycHg7XG59XG5cbi5mb250LW1lZGl1bSB7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG59XG5cbmhyLmhvcml6b250YWwtbGluZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDFweDtcbiAgYm9yZGVyOiAwO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2NjYztcbiAgbWFyZ2luOiAxZW0gMDtcbiAgcGFkZGluZzogMDtcbn1cblxuLmhvdmVyLXdoaXRlOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogJHdoaXRlO1xufVxuXG4ucmVkLWRvdCB7XG4gIGJhY2tncm91bmQ6ICNlOTE1NTA7XG4gIGNvbG9yOiAkd2hpdGU7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG59XG5cbi5kaWFtb25kIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICBiYWNrZ3JvdW5kOiAjMDM4Nzg5O1xufVxuXG4uaG9sbG93LWRpYW1vbmQge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gIGJvcmRlcjogM3B4IHNvbGlkICM2OTA0OTY7XG59XG5cbi5nb2xkZW4tc3F1YXJlIHtcbiAgYmFja2dyb3VuZDogI2ViYjMzZjtcbn1cblxuLnBlbmRpbmctZG90IHtcbiAgYmFja2dyb3VuZDogJHJlZDtcbiAgbGVmdDogMTRweDtcbiAgdG9wOiAxNHB4O1xuICBjb2xvcjogJHdoaXRlO1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIG1pbi13aWR0aDogMjBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZzogNHB4O1xuICB6LWluZGV4OiAxO1xufVxuXG4ua2V5cmluZy1sYWJlbCB7XG4gIHotaW5kZXg6IDE7XG4gIGZvbnQtc2l6ZTogOHB4O1xuICBsaW5lLWhlaWdodDogOHB4O1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7XG4gIGNvbG9yOiAjZmZmO1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBwYWRkaW5nOiA0cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgaGVpZ2h0OiAxNXB4O1xufVxuXG4uZXRoZXItYmFsYW5jZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi50YWJTZWN0aW9uIHtcbiAgbWluLXdpZHRoOiAzNTBweDtcbn1cblxuLm1lbnUtaWNvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAxMnB4O1xuICBtaW4td2lkdGg6IDEycHg7XG4gIG1hcmdpbjogMTNweDtcbn1cblxuLmV0aGVyLWljb24ge1xuICBiYWNrZ3JvdW5kOiByZ2IoMCwgMTYzLCA2OCk7XG4gIGJvcmRlci1yYWRpdXM6IDIwcHg7XG59XG5cbi50ZXN0bmV0LWljb24ge1xuICBiYWNrZ3JvdW5kOiAjMjQ2NWUxO1xufVxuXG4uZHJvcC1tZW51LWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uaW52aXNpYmxlIHtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4ub25lLWxpbmUtY29uY2F0IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5jcml0aWNhbC1lcnJvciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLXRvcDogMjBweDtcbiAgY29sb3I6ICRyZWQ7XG59XG5cbi8qXG4gIE1pc2NcbiAqL1xuXG4vLyBUT0RPOiBtb3ZlIGludG8gY29tcG9uZW50LWxldmVsIGNvbnRleHR1YWwgJ2FjdGl2ZScgc3RhdGVcbi5sZXR0ZXItc3BhY2V5IHtcbiAgbGV0dGVyLXNwYWNpbmc6IC4xZW07XG59XG5cbi5hY3RpdmUge1xuICBjb2xvcjogIzkwOTA5MDtcbn1cblxuLmNoZWNrIHtcbiAgbWFyZ2luLWxlZnQ6IDdweDtcbiAgY29sb3I6ICNmNzg2MWM7XG4gIGZsZXg6IDEgMCBhdXRvO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuIiwiLypcbiAgR2VuZXJpY1xuICovXG5cbkBpbXBvcnQgJy4vcmVzZXQuc2Nzcyc7XG5cbioge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG5odG1sLFxuYm9keSB7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG8sIEFyaWFsO1xuICBjb2xvcjogIzRkNGQ0ZDtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNGVtO1xuICBiYWNrZ3JvdW5kOiAjZjdmN2Y3O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbmh0bWwge1xuICBtaW4taGVpZ2h0OiA1MDBweDtcbn1cblxuLmFwcC1yb290IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uYXBwLXByaW1hcnkge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuXG5pbnB1dDpmb2N1cyxcbnRleHRhcmVhOmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTtcbn1cblxuLyogc3R5bGVsaW50LWRpc2FibGUgKi9cbiNhcHAtY29udGVudCB7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgfVxufVxuLyogc3R5bGVsaW50LWVuYWJsZSAqL1xuXG5hIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogaW5oZXJpdDtcbn1cblxuYTpob3ZlciB7XG4gIGNvbG9yOiAjZGY2YjBlO1xufVxuXG5pbnB1dC5sYXJnZS1pbnB1dCxcbnRleHRhcmVhLmxhcmdlLWlucHV0IHtcbiAgcGFkZGluZzogOHB4O1xufVxuXG5pbnB1dC5sYXJnZS1pbnB1dCB7XG4gIGhlaWdodDogMzZweDtcbn1cbiIsIi8qIGh0dHA6Ly9tZXllcndlYi5jb20vZXJpYy90b29scy9jc3MvcmVzZXQvXG4gICB2Mi4wIHwgMjAxMTAxMjZcbiAgIExpY2Vuc2U6IG5vbmUgKHB1YmxpYyBkb21haW4pXG4qL1xuXG5odG1sLFxuYm9keSxcbmRpdixcbnNwYW4sXG5hcHBsZXQsXG5vYmplY3QsXG5pZnJhbWUsXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYsXG5wLFxuYmxvY2txdW90ZSxcbnByZSxcbmEsXG5hYmJyLFxuYWNyb255bSxcbmFkZHJlc3MsXG5iaWcsXG5jaXRlLFxuY29kZSxcbmRlbCxcbmRmbixcbmVtLFxuaW1nLFxuaW5zLFxua2JkLFxucSxcbnMsXG5zYW1wLFxuc21hbGwsXG5zdHJpa2UsXG5zdHJvbmcsXG5zdWIsXG5zdXAsXG50dCxcbnZhcixcbmIsXG51LFxuaSxcbmNlbnRlcixcbmRsLFxuZHQsXG5kZCxcbm9sLFxudWwsXG5saSxcbmZpZWxkc2V0LFxuZm9ybSxcbmxhYmVsLFxubGVnZW5kLFxudGFibGUsXG5jYXB0aW9uLFxudGJvZHksXG50Zm9vdCxcbnRoZWFkLFxudHIsXG50aCxcbnRkLFxuYXJ0aWNsZSxcbmFzaWRlLFxuY2FudmFzLFxuZGV0YWlscyxcbmVtYmVkLFxuZmlndXJlLFxuZmlnY2FwdGlvbixcbmZvb3RlcixcbmhlYWRlcixcbmhncm91cCxcbm1lbnUsXG5uYXYsXG5vdXRwdXQsXG5ydWJ5LFxuc2VjdGlvbixcbnN1bW1hcnksXG50aW1lLFxubWFyayxcbmF1ZGlvLFxudmlkZW8ge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDtcbiAgZm9udC1zaXplOiAxMDAlO1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZSAqL1xuICBmb250OiBpbmhlcml0O1xuICAvKiBzdHlsZWxpbnQtZW5hYmxlICovXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuLyogSFRNTDUgZGlzcGxheS1yb2xlIHJlc2V0IGZvciBvbGRlciBicm93c2VycyAqL1xuXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSAqL1xuXG5hcnRpY2xlLFxuYXNpZGUsXG5kZXRhaWxzLFxuZmlnY2FwdGlvbixcbmZpZ3VyZSxcbmZvb3RlcixcbmhlYWRlcixcbmhncm91cCxcbm1lbnUsXG5uYXYsXG5zZWN0aW9uIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbmJvZHkge1xuICBsaW5lLWhlaWdodDogMTtcbn1cblxub2wsXG51bCB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbmJsb2NrcXVvdGUsXG5xIHtcbiAgcXVvdGVzOiBub25lO1xufVxuXG5ibG9ja3F1b3RlOmJlZm9yZSxcbmJsb2NrcXVvdGU6YWZ0ZXIsXG5xOmJlZm9yZSxcbnE6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgY29udGVudDogbm9uZTtcbn1cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDtcbn1cblxuYnV0dG9uIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi8qIHN0eWxlbGludC1lbmFibGUgKi9cbiIsIi8vIEJhc2VcbiIsIi8vIE9iamVjdHNcbiIsIkBpbXBvcnQgJy4vYnV0dG9ucy5zY3NzJztcblxuQGltcG9ydCAnLi9oZWFkZXIuc2Nzcyc7XG5cbkBpbXBvcnQgJy4vZm9vdGVyLnNjc3MnO1xuXG5AaW1wb3J0ICcuL25ldHdvcmsuc2Nzcyc7XG5cbkBpbXBvcnQgJy4vbW9kYWwuc2Nzcyc7XG5cbkBpbXBvcnQgJy4vbmV3dWktc2VjdGlvbnMuc2Nzcyc7XG5cbkBpbXBvcnQgJy4vYWNjb3VudC1kcm9wZG93bi5zY3NzJztcblxuQGltcG9ydCAnLi9zZW5kLnNjc3MnO1xuXG5AaW1wb3J0ICcuL2NvbmZpcm0uc2Nzcyc7XG5cbkBpbXBvcnQgJy4vbG9hZGluZy1vdmVybGF5LnNjc3MnO1xuXG4vLyBCYWxhbmNlc1xuQGltcG9ydCAnLi9oZXJvLWJhbGFuY2Uuc2Nzcyc7XG5cbkBpbXBvcnQgJy4vd2FsbGV0LWJhbGFuY2Uuc2Nzcyc7XG5cbi8vIFR4IExpc3QgYW5kIFNlY3Rpb25zXG5AaW1wb3J0ICcuL3RyYW5zYWN0aW9uLWxpc3Quc2Nzcyc7XG5cbkBpbXBvcnQgJy4vc2VjdGlvbnMuc2Nzcyc7XG5cbkBpbXBvcnQgJy4vdG9rZW4tbGlzdC5zY3NzJztcblxuQGltcG9ydCAnLi9hZGQtdG9rZW4uc2Nzcyc7XG5cbkBpbXBvcnQgJy4vY3VycmVuY3ktZGlzcGxheS5zY3NzJztcblxuQGltcG9ydCAnLi9hY2NvdW50LW1lbnUuc2Nzcyc7XG5cbkBpbXBvcnQgJy4vbWVudS5zY3NzJztcblxuQGltcG9ydCAnLi9nYXMtc2xpZGVyLnNjc3MnO1xuXG5AaW1wb3J0ICcuL3NldHRpbmdzLnNjc3MnO1xuXG5AaW1wb3J0ICcuL3RhYi1iYXIuc2Nzcyc7XG5cbkBpbXBvcnQgJy4vc2ltcGxlLWRyb3Bkb3duLnNjc3MnO1xuXG5AaW1wb3J0ICcuL3JlcXVlc3Qtc2lnbmF0dXJlLnNjc3MnO1xuXG5AaW1wb3J0ICcuL2FjY291bnQtZHJvcGRvd24tbWluaS5zY3NzJztcblxuQGltcG9ydCAnLi9lZGl0YWJsZS1sYWJlbC5zY3NzJztcbiIsIi8qXG4gIEJ1dHRvbnNcbiAqL1xuXG4uYnRuLWdyZWVuIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAyYzliMTsgLy8gVE9ETzogcmV1c2FibGUgY29sb3IgaW4gY29sb3JzLmNzc1xufVxuXG5idXR0b24uYnRuLWNsZWFyIHtcbiAgYmFja2dyb3VuZDogJHdoaXRlO1xuICBib3JkZXI6IDFweCBzb2xpZDtcbn1cblxuLy8gTm8gbG9uZ2VyIHVzZWQgaW4gZmxhdCBkZXNpZ24sIHJlbW92ZSB3aGVuIG1vZGFsIGJ1dHRvbnMgZG9uZVxuLy8gZGl2LndhbGxldC1idG4ge1xuLy8gICBib3JkZXI6IDFweCBzb2xpZCByZ2IoOTEsIDkzLCAxMDMpO1xuLy8gICBib3JkZXItcmFkaXVzOiAycHg7XG4vLyAgIGhlaWdodDogMzBweDtcbi8vICAgd2lkdGg6IDc1cHg7XG4vLyAgIGZvbnQtc2l6ZTogMC44ZW07XG4vLyAgIHRleHQtYWxpZ246IGNlbnRlcjtcbi8vICAgbGluZS1oZWlnaHQ6IDI1cHg7XG4vLyB9XG5cbi8vIC5idG4tcmVkIHtcbi8vICAgYmFja2dyb3VuZDogcmdiYSgyNTQsIDM1LCAxNywgMSk7XG4vLyAgIGJveC1zaGFkb3c6IDBweCAzcHggNnB4IHJnYmEoMjU0LCAzNSwgMTcsIDAuMzYpO1xuLy8gfVxuXG5idXR0b25bZGlzYWJsZWRdLFxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXVtkaXNhYmxlZF0ge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICBvcGFjaXR5OiAuNTtcbiAgLy8gYmFja2dyb3VuZDogcmdiYSgxOTcsIDE5NywgMTk3LCAxKTtcbiAgLy8gYm94LXNoYWRvdzogMCAzcHggNnB4IHJnYmEoMTk3LCAxOTcsIDE5NywgLjM2KTtcbn1cblxuLy8gYnV0dG9uLnNwYWNlZCB7XG4vLyAgIG1hcmdpbjogMnB4O1xuLy8gfVxuXG4vLyBidXR0b246bm90KFtkaXNhYmxlZF0pOmhvdmVyLCBpbnB1dFt0eXBlPVwic3VibWl0XCJdOm5vdChbZGlzYWJsZWRdKTpob3ZlciB7XG4vLyAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbi8vIH1cbi8vIGJ1dHRvbjpub3QoW2Rpc2FibGVkXSk6YWN0aXZlLCBpbnB1dFt0eXBlPVwic3VibWl0XCJdOm5vdChbZGlzYWJsZWRdKTphY3RpdmUge1xuLy8gICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpO1xuLy8gfVxuXG5idXR0b24ucHJpbWFyeSB7XG4gIHBhZGRpbmc6IDhweCAxMnB4O1xuICBiYWNrZ3JvdW5kOiAjZjc4NjFjO1xuICBib3gtc2hhZG93OiAwIDNweCA2cHggcmdiYSgyNDcsIDEzNCwgMjgsIC4zNik7XG4gIGNvbG9yOiAkd2hpdGU7XG4gIGZvbnQtc2l6ZTogMS4xZW07XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi5idG4tbGlnaHQge1xuICBwYWRkaW5nOiA4cHggMTJweDtcbiAgLy8gYmFja2dyb3VuZDogI0ZGRkZGRjsgLy8gJGJnLXdoaXRlXG4gIGJveC1zaGFkb3c6IDAgM3B4IDZweCByZ2JhKDI0NywgMTM0LCAyOCwgLjM2KTtcbiAgY29sb3I6ICM1ODVkNjc7IC8vIFRPRE86IG1ha2UgcmV1c2FibGUgbGlnaHQgYnV0dG9uIGNvbG9yXG4gIGZvbnQtc2l6ZTogMS4xZW07XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgYm9yZGVyOiAxcHggc29saWQgIzk3OTc5NzsgLy8gI1RPRE86IG1ha2UgcmV1c2FibGUgbGlnaHQgYm9yZGVyIGNvbG9yXG4gIG9wYWNpdHk6IC41O1xufVxuXG4vLyBUT0RPOiBjbGVhbnVwOiBub3QgdXNlZCBhbnl3aGVyZVxuYnV0dG9uLmJ0bi10aGluIHtcbiAgYm9yZGVyOiAxcHggc29saWQ7XG4gIGJvcmRlci1jb2xvcjogIzRkNGQ0ZDtcbiAgY29sb3I6ICM0ZDRkNGQ7XG4gIGJhY2tncm91bmQ6IHJnYigyNTUsIDE3NCwgNDEpO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIG1pbi13aWR0aDogMjAwcHg7XG4gIG1hcmdpbjogMTJweCAwO1xuICBwYWRkaW5nOiA2cHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbn1cblxuLmJ0bi1zZWNvbmRhcnkge1xuICBib3JkZXI6IDFweCBzb2xpZCAjOTc5Nzk3O1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBsaW5lLWhlaWdodDogMjRweDtcbiAgcGFkZGluZzogMTZweCA0MnB4O1xuXG4gICZbZGlzYWJsZWRdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGUgIWltcG9ydGFudDtcbiAgICBvcGFjaXR5OiAuNTtcbiAgfVxufVxuXG4uYnRuLXRlcnRpYXJ5IHtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gIHBhZGRpbmc6IDE2cHggNDJweDtcbn1cbiIsIi5hcHAtaGVhZGVyIHtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgYmFja2dyb3VuZDogJGdhbGxlcnk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogJGhlYWRlci16LWluZGV4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTc1cHgpIHtcbiAgICBwYWRkaW5nOiAxMnB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKDAsIDAsIDAsIC4wOCk7XG4gICAgei1pbmRleDogJG1vYmlsZS1oZWFkZXItei1pbmRleDtcbiAgfVxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gICAgaGVpZ2h0OiA3NXB4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMzJweDtcbiAgICAgIGJhY2tncm91bmQ6ICRnYWxsZXJ5O1xuICAgICAgYm90dG9tOiAtMzJweDtcbiAgICB9XG4gIH1cblxuICAubWV0YWZveC1pY29uIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuLmFwcC1oZWFkZXItY29udGVudHMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNi45dmg7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTc1cHgpIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1NzZweCkge1xuICAgIHdpZHRoOiA4NXZ3O1xuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY5cHgpIHtcbiAgICB3aWR0aDogODB2dztcbiAgfVxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODFweCkge1xuICAgIHdpZHRoOiA2NXZ3O1xuICB9XG59XG5cbi5hcHAtaGVhZGVyIGgxIHtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6ICMyMjIzMmM7IC8vICRzaGFya1xuICBsaW5lLWhlaWdodDogMjlweDtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1NzVweCkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuaDIucGFnZS1zdWJ0aXRsZSB7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNvbG9yOiAjYWVhZWFlO1xuICBmb250LXNpemU6IDFlbTtcbiAgbWFyZ2luOiAxMnB4O1xufVxuXG4ubmV0d29yay1jb21wb25lbnQtd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5sZWZ0LW1lbnUtd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmhlYWRlcl9fcmlnaHQtYWN0aW9ucyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAuaWRlbnRpY29uIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cbiIsIi5hcHAtZm9vdGVyIHtcbiAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4iLCIubmV0d29yay1jb21wb25lbnQtLWRpc2FibGVkIHtcbiAgLy8gYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICBjdXJzb3I6IGRlZmF1bHQ7XG5cbiAgLmZhLWNhcmV0LWRvd24ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cblxuLm5ldHdvcmstY29tcG9uZW50LnBvaW50ZXIge1xuICBib3JkZXI6IDFweCBzb2xpZCAkc2hhcms7XG4gIGJvcmRlci1yYWRpdXM6IDgycHg7XG4gIHBhZGRpbmc6IDZweDtcbiAgZmxleDogMCAwIGF1dG87XG5cbiAgJi5ldGhlcmV1bS1uZXR3b3JrIHtcbiAgICBib3JkZXItY29sb3I6IHJnYigzLCAxMzUsIDEzNyk7XG5cbiAgICAubWVudS1pY29uLWNpcmNsZSBkaXYge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzLCAxMzUsIDEzNywgLjcpICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgJi5yb3BzdGVuLXRlc3QtbmV0d29yayB7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2IoMjMzLCAyMSwgODApO1xuXG4gICAgLm1lbnUtaWNvbi1jaXJjbGUgZGl2IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjMzLCAyMSwgODAsIC43KSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gICYua292YW4tdGVzdC1uZXR3b3JrIHtcbiAgICBib3JkZXItY29sb3I6IHJnYigxMDUsIDQsIDE1MCk7XG5cbiAgICAubWVudS1pY29uLWNpcmNsZSBkaXYge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMDUsIDQsIDE1MCwgLjcpICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgJi5yaW5rZWJ5LXRlc3QtbmV0d29yayB7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2IoMjM1LCAxNzksIDYzKTtcblxuICAgIC5tZW51LWljb24tY2lyY2xlIGRpdiB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIzNSwgMTc5LCA2MywgLjcpICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG5cbi5kcm9wZG93bi1tZW51LWl0ZW0ge1xuICAubWVudS1pY29uLWNpcmNsZSxcbiAgLm1lbnUtaWNvbi1jaXJjbGUtLWFjdGl2ZSB7XG4gICAgbWFyZ2luOiAwIDE0cHg7XG4gIH1cbn1cblxuLm5ldHdvcmstaW5kaWNhdG9yIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZm9udC1zaXplOiAuNmVtO1xuXG4gIC5mYS1jYXJldC1kb3duIHtcbiAgICBsaW5lLWhlaWdodDogMTVweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgcGFkZGluZzogMCA0cHg7XG4gIH1cbn1cblxuLm5ldHdvcmstbmFtZSB7XG4gIGxpbmUtaGVpZ2h0OiAxNXB4O1xuICBwYWRkaW5nOiAwIDRweDtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgZm9udC1zaXplOiAxMnB4O1xuICBmbGV4OiAxIDAgYXV0bztcbn1cblxuLm5ldHdvcmstZHJvcHBvIHtcbiAgcmlnaHQ6IDJweDtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1NzZweCkge1xuICAgIHJpZ2h0OiBjYWxjKCgoMTAwJSAtIDg1dncpIC8gMikgKyAycHgpO1xuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY5cHgpIHtcbiAgICByaWdodDogY2FsYygoKDEwMCUgLSA4MHZ3KSAvIDIpICsgMnB4KTtcbiAgfVxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODFweCkge1xuICAgIHJpZ2h0OiBjYWxjKCgoMTAwJSAtIDY1dncpIC8gMikgKyAycHgpO1xuICB9XG59XG5cbi5uZXR3b3JrLW5hbWUtaXRlbSB7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG4gIGZsZXg6IDEgMCBhdXRvO1xuICBjb2xvcjogJGR1c3R5LWdyYXk7XG59XG5cbi5uZXR3b3JrLWNoZWNrLFxuLm5ldHdvcmstY2hlY2tfX3RyYW5zcGFyZW50IHtcbiAgY29sb3I6ICR3aGl0ZTtcbiAgbWFyZ2luLWxlZnQ6IDdweDtcbn1cblxuLm5ldHdvcmstY2hlY2tfX3RyYW5zcGFyZW50IHtcbiAgb3BhY2l0eTogMDtcbiAgd2lkdGg6IDE2cHg7XG4gIG1hcmdpbjogMDtcbn1cblxuLm1lbnUtaWNvbi1jaXJjbGUsXG4ubWVudS1pY29uLWNpcmNsZS0tYWN0aXZlIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMjJweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBtYXJnaW46IDAgNHB4O1xufVxuXG4ubWVudS1pY29uLWNpcmNsZS0tYWN0aXZlIHtcbiAgYm9yZGVyOiAxcHggc29saWQgJHdoaXRlO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDEwMCwgMTAwLCAxMDAsIC40KTtcbn1cblxuLm1lbnUtaWNvbi1jaXJjbGUgZGl2LFxuLm1lbnUtaWNvbi1jaXJjbGUtLWFjdGl2ZSBkaXYge1xuICBoZWlnaHQ6IDEycHg7XG4gIHdpZHRoOiAxMnB4O1xuICBib3JkZXItcmFkaXVzOiAxN3B4O1xufVxuXG4ubWVudS1pY29uLWNpcmNsZS0tYWN0aXZlIGRpdiB7XG4gIG9wYWNpdHk6IDE7XG59XG5cbi5uZXR3b3JrLWRyb3Bkb3duLWhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ubmV0d29yay1kcm9wZG93bi1kaXZpZGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMXB4O1xuICBtYXJnaW46IDEwcHggMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHNjb3JwaW9uO1xufVxuXG4ubmV0d29yay1kcm9wZG93bi10aXRsZSB7XG4gIGhlaWdodDogMjVweDtcbiAgd2lkdGg6IDc1cHg7XG4gIGNvbG9yOiAkd2hpdGU7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbGluZS1oZWlnaHQ6IDI1cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLm5ldHdvcmstZHJvcGRvd24tY29udGVudCB7XG4gIGhlaWdodDogMzZweDtcbiAgd2lkdGg6IDI2NXB4O1xuICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDE4cHg7XG59XG5cbiIsIi5tb2RhbCA+IGRpdjpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLy8gQnV5IE1vZGFsXG4uYnV5LW1vZGFsLWNvbnRlbnQge1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LWZhbWlseTogUm9ib3RvO1xuICBwYWRkaW5nOiAwIDE2cHg7XG59XG5cbi5idXktbW9kYWwtY29udGVudC1vcHRpb24ge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiAjNUI1RDY3O1xufVxuXG4ucXItZWxsaXAtYWRkcmVzcywgLmVsbGlwLWFkZHJlc3Mge1xuICB3aWR0aDogMjQ3cHg7XG4gIGJvcmRlcjogbm9uZTtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgZm9udC1zaXplOiAxNHB4O1xufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1NzVweCkge1xuICAuYnV5LW1vZGFsLWNvbnRlbnQtdGl0bGUtd3JhcHBlciB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDBweDtcbiAgfVxuXG4gIC5idXktbW9kYWwtY29udGVudC10aXRsZSB7XG4gICAgZm9udC1zaXplOiAyNnB4O1xuICAgIG1hcmdpbi10b3A6IDE1cHg7XG4gIH1cblxuICAuYnV5LW1vZGFsLWNvbnRlbnQtb3B0aW9ucyB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBwYWRkaW5nOiA1JSAzMyU7XG4gIH1cblxuICAuYnV5LW1vZGFsLWNvbnRlbnQtZm9vdGVyIHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogNTBweDtcbiAgfVxuXG4gIGRpdi5idXktbW9kYWwtY29udGVudC1vcHRpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB3aWR0aDogODB2dztcbiAgICBoZWlnaHQ6IDE1dmg7XG4gICAgbWFyZ2luOiAxMHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGJsYWNrO1xuICAgIHBhZGRpbmc6IDAlIDclO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgZGl2LmJ1eS1tb2RhbC1jb250ZW50LW9wdGlvbi10aXRsZSB7XG4gICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgfVxuXG4gICAgZGl2LmJ1eS1tb2RhbC1jb250ZW50LW9wdGlvbi1zdWJ0aXRsZSB7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgfVxuICB9XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gIC5idXktbW9kYWwtY29udGVudC10aXRsZS13cmFwcGVyIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDExMHB4O1xuICB9XG5cbiAgLmJ1eS1tb2RhbC1jb250ZW50LXRpdGxlIHtcbiAgICBmb250LXNpemU6IDI2cHg7XG4gICAgbWFyZ2luLXRvcDogMTVweDtcbiAgfVxuXG4gIC5idXktbW9kYWwtY29udGVudC1mb290ZXIge1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiA1MHB4O1xuICB9XG5cbiAgLmJ1eS1tb2RhbC1jb250ZW50LW9wdGlvbnMge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgbWFyZ2luOiAyMHB4IDAgNjBweDtcbiAgfVxuXG4gIGRpdi5idXktbW9kYWwtY29udGVudC1vcHRpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB3aWR0aDogMjB2dztcbiAgICBoZWlnaHQ6IDEyMHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGJsYWNrO1xuICAgIG1hcmdpbjogMCA4cHg7XG4gICAgcGFkZGluZzogMThweCAwO1xuXG4gICAgZGl2LmJ1eS1tb2RhbC1jb250ZW50LW9wdGlvbi10aXRsZSB7XG4gICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2NzlweCkge1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODFweCkge1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZGl2LmJ1eS1tb2RhbC1jb250ZW50LW9wdGlvbi1zdWJ0aXRsZSB7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICBwYWRkaW5nOiAwIDEwcHg7XG4gICAgICBoZWlnaHQ6IDI1JTtcblxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjc5cHgpIHtcbiAgICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgICBwYWRkaW5nOiAwIDEwcHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE1cHg7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY4MHB4KSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgcGFkZGluZzogMCA0cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDJweDtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI4MXB4KSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXYuYnV5LW1vZGFsLWNvbnRlbnQtZm9vdGVyIHtcbiAgICAgIG1hcmdpbi10b3A6IDh2aDtcbiAgICB9XG4gIH1cbn1cblxuLy8gRWRpdCBBY2NvdW50IE5hbWUgTW9kYWxcbi5lZGl0LWFjY291bnQtbmFtZS1tb2RhbC1jb250ZW50IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5lZGl0LWFjY291bnQtbmFtZS1tb2RhbC1jYW5jZWwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTJweDtcbiAgcmlnaHQ6IDIwcHg7XG4gIGZvbnQtc2l6ZTogMjVweDtcbn1cblxuLmVkaXQtYWNjb3VudC1uYW1lLW1vZGFsLXRpdGxlIHtcbiAgbWFyZ2luOiAxNXB4O1xufVxuXG4uZWRpdC1hY2NvdW50LW5hbWUtbW9kYWwtc2F2ZS1idXR0b24ge1xuICB3aWR0aDogMzMlO1xuICBoZWlnaHQ6IDQ1cHg7XG4gIG1hcmdpbjogMTVweDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbWFyZ2luLXRvcDogMjVweDtcbn1cblxuLmVkaXQtYWNjb3VudC1uYW1lLW1vZGFsLWlucHV0IHtcbiAgd2lkdGg6IDkwJTtcbiAgaGVpZ2h0OiA1MHB4O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW46IDEwcHg7XG4gIHBhZGRpbmc6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMThweDtcbn1cblxuLy8gQWNjb3VudCBNb2RhbCBDb250YWluZXJcbi5hY2NvdW50LW1vZGFsLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nOiA1cHggMCAzMXB4IDA7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRzaWx2ZXI7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcblxuICBidXR0b24ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuXG4uYWNjb3VudC1tb2RhbC1iYWNrIHtcbiAgY29sb3I6ICRkdXN0eS1ncmF5O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTNweDtcbiAgbGVmdDogMTdweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICZfX3RleHQge1xuICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICBmb250LWZhbWlseTogUm9ib3RvO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBsaW5lLWhlaWdodDogMThweDtcbiAgfVxufVxuXG4uYWNjb3VudC1tb2RhbC1jbG9zZTo6YWZ0ZXIge1xuICBjb250ZW50OiAnXFwwMEQ3JztcbiAgZm9udC1zaXplOiA0MHB4O1xuICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxMHB4O1xuICByaWdodDogMTJweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uYWNjb3VudC1tb2RhbC1jb250YWluZXIgLmlkZW50aWNvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIG1hcmdpbjogMCBhdXRvO1xuICB0b3A6IC0zMnB4O1xuICBtYXJnaW4tYm90dG9tOiAtMzJweDtcbn1cblxuXG4vLyBBY2NvdW50IERldGFpbHMgTW9kYWxcblxuLmFjY291bnQtbW9kYWwtY29udGFpbmVyIHtcblxuICAucXItaGVhZGVyIHtcbiAgICBtYXJnaW4tdG9wOiA5cHg7XG4gICAgZm9udC1zaXplOiAyMHB4O1xuICB9XG5cbiAgLnFyLXdyYXBwZXIge1xuICAgIG1hcmdpbi10b3A6IDVweDtcbiAgfVxuXG4gIC5lbGxpcC1hZGRyZXNzLXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGFsdG87XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICBtYXJnaW4tdG9wOiA3cHg7XG4gICAgd2lkdGg6IDI4NnB4O1xuICB9XG5cbiAgLmJ0bi1jbGVhciB7XG4gICAgbWluLWhlaWdodDogMjhweDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgYm9yZGVyLWNvbG9yOiAkY3VyaW91cy1ibHVlO1xuICAgIGNvbG9yOiAkY3VyaW91cy1ibHVlO1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICBmbGV4LWJhc2lzOiAxMDAlO1xuICAgIHdpZHRoOiA3NSU7XG4gICAgbWFyZ2luLXRvcDogMTdweDtcbiAgICBwYWRkaW5nOiAxMHB4IDIycHg7XG4gICAgaGVpZ2h0OiA0NHB4O1xuICAgIHdpZHRoOiAyMzVweDtcbiAgICBmb250LWZhbWlseTogUm9ib3RvO1xuICB9XG59XG5cbi5hY2NvdW50LW1vZGFsLWRpdmlkZXIge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogMTlweCAwIDhweCAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWx0bztcbn1cblxuLy8gRXhwb3J0IFByaXZhdGUgS2V5IE1vZGFsXG5cbi5hY2NvdW50LW1vZGFsLWNvbnRhaW5lciAuYWNjb3VudC1uYW1lIHtcbiAgbWFyZ2luLXRvcDogOXB4O1xuICBmb250LXNpemU6IDIwcHg7XG59XG5cbi5hY2NvdW50LW1vZGFsLWNvbnRhaW5lciAubW9kYWwtYm9keS10aXRsZSB7XG4gIG1hcmdpbi10b3A6IDE2cHg7XG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gIGZvbnQtc2l6ZTogMThweDtcbn1cblxuLmFjY291bnQtbW9kYWxfX25hbWUge1xuICBtYXJnaW4tdG9wOiA5cHg7XG4gIGZvbnQtc2l6ZTogMjBweDtcbn1cblxuLnByaXZhdGUta2V5LXBhc3N3b3JkIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLnByaXZhdGUta2V5LXBhc3N3b3JkLWxhYmVsLCAucHJpdmF0ZS1rZXktcGFzc3dvcmQtZXJyb3Ige1xuICBjb2xvcjogJHNjb3JwaW9uO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAxOHB4O1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuXG4ucHJpdmF0ZS1rZXktcGFzc3dvcmQtZXJyb3Ige1xuICBjb2xvcjogJGNyaW1zb247XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5wcml2YXRlLWtleS1wYXNzd29yZC1pbnB1dCB7XG4gIHBhZGRpbmc6IDEwcHggMCAxM3B4IDE3cHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDIxcHg7XG4gIHdpZHRoOiAyOTFweDtcbiAgaGVpZ2h0OiA0NHB4O1xufVxuXG4ucHJpdmF0ZS1rZXktcGFzc3dvcmQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG59XG5cbi5wcml2YXRlLWtleS1wYXNzd29yZC13YXJuaW5nIHtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGNkY2O1xuICBmb250LXNpemU6IDEycHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxpbmUtaGVpZ2h0OiAxNXB4O1xuICBjb2xvcjogJGNyaW1zb247XG4gIHdpZHRoOiAyOTJweDtcbiAgcGFkZGluZzogOXB4IDE1cHg7XG4gIG1hcmdpbi10b3A6IDE4cHg7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG59XG5cbi5leHBvcnQtcHJpdmF0ZS1rZXktYnV0dG9ucyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gIC5idG4tY2xlYXIge1xuICAgIHdpZHRoOiAxNDFweDtcbiAgICBoZWlnaHQ6IDU0cHg7XG4gIH1cblxuICAuYnRuLWNhbmNlbCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICAgIGJvcmRlci1jb2xvcjogJGR1c3R5LWdyYXk7XG4gICAgY29sb3I6ICRzY29ycGlvbjtcbiAgfVxufVxuXG4ucHJpdmF0ZS1rZXktcGFzc3dvcmQtZGlzcGxheS13cmFwcGVyIHtcbiAgaGVpZ2h0OiA4MHB4O1xuICB3aWR0aDogMjkxcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRzaWx2ZXI7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbn1cblxuLnByaXZhdGUta2V5LXBhc3N3b3JkLWRpc3BsYXktdGV4dGFyZWEge1xuICBjb2xvcjogJGNyaW1zb247XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDIxcHg7XG4gIGJvcmRlcjogbm9uZTtcbiAgaGVpZ2h0OiA3NXB4O1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcmVzaXplOiBub25lO1xuICBwYWRkaW5nOiA5cHggMTNweCA4cHg7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG59XG5cblxuLy8gTmV3IEFjY291bnQgTW9kYWxcbi5uZXctYWNjb3VudC1tb2RhbC13cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRhbHRvO1xuICBib3gtc2hhZG93OiAwIDAgMnB4IDJweCAkYWx0bztcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbn1cblxuLm5ldy1hY2NvdW50LW1vZGFsLWhlYWRlciB7XG4gIGJhY2tncm91bmQ6ICR3aWxkLXNhbmQ7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZzogMzBweDtcbiAgZm9udC1zaXplOiAyMnB4O1xuICBjb2xvcjogJG5pbGUtYmx1ZTtcbiAgaGVpZ2h0OiA3OXB4O1xufVxuXG4ubW9kYWwtY2xvc2UteDo6YWZ0ZXIge1xuICBjb250ZW50OiAnXFwwMEQ3JztcbiAgZm9udC1zaXplOiAyZW07XG4gIGNvbG9yOiAkZHVzdHktZ3JheTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDI1cHg7XG4gIHJpZ2h0OiAxNy41cHg7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5uZXctYWNjb3VudC1tb2RhbC1jb250ZW50IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBtYXJnaW4tdG9wOiAxNXB4O1xuICBmb250LXNpemU6IDE3cHg7XG4gIGNvbG9yOiAkbmlsZS1ibHVlO1xufVxuXG4ubmV3LWFjY291bnQtbW9kYWwtY29udGVudC5hZnRlci1pbnB1dCB7XG4gIG1hcmdpbi10b3A6IDE1cHg7XG4gIGxpbmUtaGVpZ2h0OiAyNXB4O1xufVxuXG4ubmV3LWFjY291bnQtaW5wdXQtd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZy1ib3R0b206IDJweDtcbiAgbWFyZ2luLXRvcDogMTNweDtcbn1cblxuLm5ldy1hY2NvdW50LWlucHV0IHtcbiAgcGFkZGluZzogMTVweDtcbiAgcGFkZGluZy1ib3R0b206IDIwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgYm9yZGVyOiAxcHggc29saWQgJGFsdG87XG4gIHdpZHRoOiAxMDAlO1xuICBmb250LXNpemU6IDFlbTtcbiAgY29sb3I6ICRkdXN0eS1ncmF5O1xuICBmb250LWZhbWlseTogUm9ib3RvO1xuICBmb250LXNpemU6IDE3cHg7XG4gIG1hcmdpbjogMCA2MHB4O1xufVxuXG4vLyBGb3IgcmVmZXJlbmNlIG9uIGJlbG93IHBsYWNlaG9sZGVyIHNlbGVjdG9yczogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjYxMDQ5Ny9jaGFuZ2UtYW4taHRtbDUtaW5wdXRzLXBsYWNlaG9sZGVyLWNvbG9yLXdpdGgtY3NzXG4ubmV3LWFjY291bnQtaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICBjb2xvcjogJGR1c3R5LWdyYXk7XG59XG5cbi5uZXctYWNjb3VudC1pbnB1dDotbW96LXBsYWNlaG9sZGVyIHtcbiAgY29sb3I6ICRkdXN0eS1ncmF5O1xuICBvcGFjaXR5OiAxO1xufVxuXG4ubmV3LWFjY291bnQtaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIge1xuICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gIG9wYWNpdHk6IDE7XG59XG5cbi5uZXctYWNjb3VudC1pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xuICBjb2xvcjogJGR1c3R5LWdyYXk7XG59XG5cbi5uZXctYWNjb3VudC1pbnB1dDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgY29sb3I6ICRkdXN0eS1ncmF5O1xufVxuXG4ubmV3LWFjY291bnQtbW9kYWwtY29udGVudC5idXR0b24ge1xuICBtYXJnaW4tdG9wOiAyMnB4O1xuICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICB3aWR0aDogMTEzcHg7XG4gIGhlaWdodDogNDRweDtcbn1cblxuLm5ldy1hY2NvdW50LW1vZGFsLXdyYXBwZXIgLmJ0bi1jbGVhciB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgYmFja2dyb3VuZDogJHdoaXRlO1xuICBib3JkZXI6IDFweCBzb2xpZDtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBjb2xvcjogJHR1bmRvcmE7XG4gIGZsZXg6IDE7XG59XG5cbi8vIEhpZGUgdG9rZW4gY29uZmlybWF0aW9uXG5cbi5oaWRlLXRva2VuLWNvbmZpcm1hdGlvbiB7XG4gIG1pbi1oZWlnaHQ6IDI1MC43MnB4O1xuICB3aWR0aDogMzc0LjQ5cHg7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjtcbiAgYm94LXNoYWRvdzogMCAxcHggN3B4IDAgcmdiYSgwLDAsMCwwLjUpO1xuXG4gICZfX2NvbnRhaW5lciB7XG4gICAgcGFkZGluZzogMjRweCAyN3B4IDIxcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cblxuICAmX19pZGVudGljb24ge1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHhcbiAgfVxuXG4gICZfX3N5bWJvbCB7XG4gICAgY29sb3I6ICR0dW5kb3JhO1xuICAgIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW4tYm90dG9tOiA3LjVweDtcbiAgfVxuXG4gICZfX3RpdGxlIHtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gICAgd2lkdGg6IDI3MS4yOHB4O1xuICAgIGNvbG9yOiAkdHVuZG9yYTtcbiAgICBmb250LWZhbWlseTogUm9ib3RvO1xuICAgIGZvbnQtc2l6ZTogMjJweDtcbiAgICBsaW5lLWhlaWdodDogMzBweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogMTAuNXB4O1xuICB9XG5cbiAgJl9fY29weSB7XG4gICAgaGVpZ2h0OiA0MXB4O1xuICAgIHdpZHRoOiAzMThweDtcbiAgICBjb2xvcjogJHNjb3JwaW9uO1xuICAgIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxOHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gICZfX2J1dHRvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBtYXJnaW4tdG9wOiAxNXB4O1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgYnV0dG9uIHtcbiAgICAgIGhlaWdodDogNDRweDtcbiAgICAgIHdpZHRoOiAxMTNweDtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRzY29ycGlvbjtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgIGNvbG9yOiAkdHVuZG9yYTtcbiAgICAgIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICBsaW5lLWhlaWdodDogMjBweDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDRweDtcbiAgICB9XG4gIH1cbn1cbiIsIi8qXG4gIE5ld1VJIENvbnRhaW5lciBFbGVtZW50c1xuICovXG5cbi8vIENvbXBvbmVudCBDb2xvcnNcbiR0eC12aWV3LWJnOiAkd2hpdGU7XG4kd2FsbGV0LXZpZXctYmc6ICR3aWxkLXNhbmQ7XG5cbi8vIE1haW4gY29udGFpbmVyXG4ubWFpbi1jb250YWluZXIge1xuICAvLyBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6ICRtYWluLWNvbnRhaW5lci16LWluZGV4O1xuICBmb250LWZhbWlseTogUm9ib3RvO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xufVxuXG4ubWFpbi1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLy8gdHggdmlld1xuXG4udHgtdmlldyB7XG4gIGZsZXg6IDYzLjUgMCA2Ni41JTtcbiAgYmFja2dyb3VuZDogJHR4LXZpZXctYmc7XG5cbiAgLy8gTm8gdGl0bGUgb24gbW9iaWxlXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NXB4KSB7XG4gICAgLmlkZW50aWNvbi13cmFwcGVyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLmFjY291bnQtbmFtZSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxufVxuXG4vLyB3YWxsZXQgdmlldyBhbmQgc2lkZWJhclxuXG4ud2FsbGV0LXZpZXcge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBmbGV4OiAzMy41IDEgMzMuNSU7XG4gIHdpZHRoOiAwO1xuICBiYWNrZ3JvdW5kOiAkd2FsbGV0LXZpZXctYmc7XG4gIHotaW5kZXg6IDIwMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgfVxuXG4gIC53YWxsZXQtdmlldy1hY2NvdW50LWRldGFpbHMge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICB9XG5cbiAgJl9fbmFtZS1jb250YWluZXIge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gICZfX2tleXJpbmctbGFiZWwge1xuICAgIGhlaWdodDogNDBweDtcbiAgICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgcGFkZGluZzogMCAyMHB4O1xuICB9XG5cbiAgJl9fZGV0YWlscy1idXR0b24ge1xuICAgIGNvbG9yOiAkY3VyaW91cy1ibHVlO1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICBsaW5lLWhlaWdodDogMTNweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGN1cmlvdXMtYmx1ZTtcbiAgICBib3JkZXItcmFkaXVzOiAxMC41cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZzogNHB4IDEycHg7XG4gICAgZmxleDogMCAwIGF1dG87XG4gIH1cblxuICAmX19hZGRyZXNzIHtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGFsdG87XG4gICAgY29sb3I6ICRzY29ycGlvbjtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEycHg7XG4gICAgcGFkZGluZzogNHB4IDEycHg7XG4gICAgbWFyZ2luOiAyNHB4IGF1dG87XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZmxleDogMCAwIGF1dG87XG4gIH1cblxuICAmX19zaWRlYmFyLWNsb3NlIHtcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NXB4KSB7XG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICdcXDAwRDcnO1xuICAgICAgICBmb250LXNpemU6IDQwcHg7XG4gICAgICAgIGNvbG9yOiAkdHVuZG9yYTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDEycHg7XG4gICAgICAgIGxlZnQ6IDEycHg7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmX19hZGQtdG9rZW4tYnV0dG9uIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxOXB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW46IDM2cHggYXV0bztcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZHVzdHktZ3JheTtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIHBhZGRpbmc6IDlweCAzMHB4O1xuICB9XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gIC53YWxsZXQtdmlldzo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLndhbGxldC12aWV3LXRpdGxlLXdyYXBwZXIge1xuICBmbGV4OiAwIDAgMjVweDtcbn1cblxuLndhbGxldC12aWV3LXRpdGxlIHtcbiAgbWFyZ2luLWxlZnQ6IDE1cHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcblxuICAvLyBObyB0aXRsZSBvbiBtb2JpbGVcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTc1cHgpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi53YWxsZXQtdmlldy5zaWRlYmFyIHtcbiAgZmxleDogMSAwIDIzMHB4O1xuICBiYWNrZ3JvdW5kOiByZ2IoMjUwLCAyNTAsIDI1MCk7XG4gIHotaW5kZXg6ICRzaWRlYmFyLXotaW5kZXg7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiA1NnB4O1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBib3gtc2hhZG93OiByZ2JhKDAsIDAsIDAsIC4xNSkgMnB4IDJweCA0cHg7XG4gIHdpZHRoOiA4NSU7XG4gIGhlaWdodDogY2FsYygxMDAlIC0gNTZweCk7XG59XG5cbi5zaWRlYmFyLW92ZXJsYXkge1xuICB6LWluZGV4OiAkc2lkZWJhci1vdmVybGF5LXotaW5kZXg7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgLy8gdG9wOiA0MXB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4zKTtcbn1cblxuLy8gbWFpbi1jb250YWluZXIgbWVkaWEgcXVlcmllc1xuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1NzZweCkge1xuICAubGFwLXZpc2libGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cblxuICAucGhvbmUtdmlzaWJsZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5tYWluLWNvbnRhaW5lciB7XG4gICAgLy8gbWFyZ2luLXRvcDogNi45dmg7XG4gICAgd2lkdGg6IDg1JTtcbiAgICBoZWlnaHQ6IDkwdmg7XG4gICAgYm94LXNoYWRvdzogMCAwIDdweCAwIHJnYmEoMCwgMCwgMCwgLjA4KTtcbiAgfVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjlweCkge1xuICAubWFpbi1jb250YWluZXIge1xuICAgIC8vIG1hcmdpbi10b3A6IDYuOXZoO1xuICAgIHdpZHRoOiA4MCU7XG4gICAgaGVpZ2h0OiA4MnZoO1xuICAgIGJveC1zaGFkb3c6IDAgMCA3cHggMCByZ2JhKDAsIDAsIDAsIC4wOCk7XG4gIH1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI4MXB4KSB7XG4gIC5tYWluLWNvbnRhaW5lciB7XG4gICAgLy8gbWFyZ2luLXRvcDogNi45dmg7XG4gICAgd2lkdGg6IDY1JTtcbiAgICBoZWlnaHQ6IDgydmg7XG4gICAgYm94LXNoYWRvdzogMCAwIDdweCAwIHJnYmEoMCwgMCwgMCwgLjA4KTtcbiAgfVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1NzVweCkge1xuICAubGFwLXZpc2libGUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAucGhvbmUtdmlzaWJsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuXG4gIC5tYWluLWNvbnRhaW5lciB7XG4gICAgLy8gbWFyZ2luLXRvcDogNDFweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gIH1cblxuICBidXR0b24uYnRuLWNsZWFyIHtcbiAgICB3aWR0aDogOTNweDtcbiAgICBoZWlnaHQ6IDUwcHg7XG4gICAgZm9udC1zaXplOiAuN2VtO1xuICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZDtcbiAgfVxufVxuXG4vLyB3YWxsZXQgdmlld1xuLmFjY291bnQtbmFtZSB7XG4gIGZvbnQtc2l6ZTogMjRweDtcbiAgZm9udC13ZWlnaHQ6IDIwMDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAkc2NvcnBpb247XG4gIG1hcmdpbi10b3A6IDhweDtcbiAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwIDhweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4vLyBhY2NvdW50IG9wdGlvbnMgZHJvcGRvd25cbi5hY2NvdW50LW9wdGlvbnMtbWVudSB7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgbWFyZ2luOiA1JSA3JSAwJTtcbn1cblxuLmZpYXQtYW1vdW50IHtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLnRva2VuLWJhbGFuY2VfX2Ftb3VudCB7XG4gIHBhZGRpbmctcmlnaHQ6IDZweDtcbn1cbiIsIi5hY2NvdW50LWRyb3Bkb3duLW5hbWUge1xuICBmb250LWZhbWlseTogUm9ib3RvO1xufVxuXG4uYWNjb3VudC1kcm9wZG93bi1iYWxhbmNlIHtcbiAgY29sb3I6ICRkdXN0eS1ncmF5O1xuICBsaW5lLWhlaWdodDogMTlweDtcbn1cblxuLmFjY291bnQtZHJvcGRvd24tZWRpdC1idXR0b24ge1xuICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG5cbiAgJjpob3ZlciB7XG4gICAgY29sb3I6ICR3aGl0ZTtcbiAgfVxufVxuXG4uYWNjb3VudC1saXN0LWl0ZW0ge1xuICAmX190b3Atcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cblxuICAmX19hY2NvdW50LWJhbGFuY2VzIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiAjOWI5YjliO1xuICAgIG1hcmdpbi1sZWZ0OiAzNHB4O1xuICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cbiAgXG4gICZfX2FjY291bnQtbmFtZSB7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gIH1cblxuICAmX19pY29uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDEycHg7XG4gICAgdG9wOiAxcHg7XG4gIH1cblxuICAmX19hY2NvdW50LXByaW1hcnktYmFsYW5jZSxcbiAgJl9fYWNjb3VudC1zZWNvbmRhcnktYmFsYW5jZSB7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgfVxuXG4gICZfX2FjY291bnQtcHJpbWFyeS1iYWxhbmNlIHtcbiAgICBjb2xvcjogJHNjb3JwaW9uO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBvdXRsaW5lOiAwICFpbXBvcnRhbnQ7XG4gIH1cblxuICAmX19hY2NvdW50LXNlY29uZGFyeS1iYWxhbmNlIHtcbiAgICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gIH1cblxuICAmX19hY2NvdW50LWFkZHJlc3Mge1xuICAgIG1hcmdpbi1sZWZ0OiAzNXB4O1xuICAgIHdpZHRoOiA4MCU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgfVxuXG4gICZfX2Ryb3Bkb3duIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoJGFsdG8sIC4yKTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgaW5wdXQge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKCRhbHRvLCAuMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIuc2VuZC1zY3JlZW4td3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgei1pbmRleDogMjU7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGJyZWFrLXNtYWxsKSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgfVxuXG4gIHNlY3Rpb24ge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICB9XG59XG5cbi5zZW5kLXNjcmVlbi1jYXJkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdiYSgwLCAwLCAwLCAuMDgpO1xuICBwYWRkaW5nOiA0NnB4IDQwLjVweCAyNnB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIC8vIHRvcDogLTI2cHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgd2lkdGg6IDQ5OHB4O1xuICBmbGV4OiAxIDAgYXV0bztcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICB0b3A6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBwYWRkaW5nOiAxMnB4O1xuICB9XG59XG5cbi8qIFNlbmQgU2NyZWVuICovXG5cbi5zZW5kLXNjcmVlbiBzZWN0aW9uIHtcbiAgbWFyZ2luOiA0cHggMTZweDtcbn1cblxuLnNlbmQtc2NyZWVuIGlucHV0IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cblxuLnNlbmQtZXRoLWljb24ge1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHdpZHRoOiA3MHB4O1xuICBoZWlnaHQ6IDcwcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRhbHRvO1xuICBib3gtc2hhZG93OiAwIDAgNHB4IDAgcmdiYSgwLCAwLCAwLCAuMik7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtMzVweDtcbiAgei1pbmRleDogMjU7XG4gIHBhZGRpbmc6IDRweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0b3A6IDA7XG4gIH1cbn1cblxuLnNlbmQtc2NyZWVuLWlucHV0LXdyYXBwZXIge1xuICB3aWR0aDogOTUlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLmZhLWJvbHQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDRweDtcbiAgfVxuXG4gIC5sYXJnZS1pbnB1dCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGR1c3R5LWdyYXk7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIG1hcmdpbjogNHB4IDAgMjBweDtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgbGluZS1oZWlnaHQ6IDIyLjRweDtcbiAgICBmb250LWZhbWlseTogUm9ib3RvO1xuICB9XG5cbiAgLnNlbmQtc2NyZWVuLWdhcy1pbnB1dCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIH1cblxuICAmX19lcnJvci1tZXNzYWdlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgJi0tZXJyb3Ige1xuICAgIGlucHV0LFxuICAgIC5zZW5kLXNjcmVlbi1nYXMtaW5wdXQge1xuICAgICAgYm9yZGVyLWNvbG9yOiAkcmVkICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnNlbmQtc2NyZWVuLWlucHV0LXdyYXBwZXJfX2Vycm9yLW1lc3NhZ2Uge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBib3R0b206IDRweDtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxMnB4O1xuICAgICAgbGVmdDogOHB4O1xuICAgICAgY29sb3I6ICRyZWQ7XG4gICAgfVxuICB9XG5cbiAgLnNlbmQtc2NyZWVuLWlucHV0LXdyYXBwZXJfX2Vycm9yLW1lc3NhZ2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDRweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgbGluZS1oZWlnaHQ6IDEycHg7XG4gICAgbGVmdDogOHB4O1xuICAgIGNvbG9yOiAkcmVkO1xuICB9XG59XG5cbi5zZW5kLXNjcmVlbi1pbnB1dCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uc2VuZC1zY3JlZW4tZ2FzLWlucHV0IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNDFweDtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmM2YzO1xuICBib3JkZXItd2lkdGg6IDA7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gIHBhZGRpbmctcmlnaHQ6IDEycHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgY29sb3I6ICRzY29ycGlvbjtcbn1cblxuLnNlbmQtc2NyZWVuLWFtb3VudC1sYWJlbHMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbi5zZW5kLXNjcmVlbi1nYXMtbGFiZWxzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4uY3VycmVuY3ktdG9nZ2xlIHtcbiAgJl9faXRlbSB7XG4gICAgY29sb3I6ICRjdXJpb3VzLWJsdWU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJi0tc2VsZWN0ZWQge1xuICAgICAgY29sb3I6ICRibGFjaztcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICB9XG4gIH1cbn1cblxuLnNlbmQtc2NyZWVuLWdhcy1pbnB1dC1jdXN0b21pemUge1xuICBjb2xvcjogJGN1cmlvdXMtYmx1ZTtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5nYXMtdG9vbHRpcC1jbG9zZS1hcmVhIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDEwMDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5jdXN0b21pemUtZ2FzLXRvb2x0aXAtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDUwcHg7XG4gIHdpZHRoOiAyMzdweDtcbiAgaGVpZ2h0OiAzMDdweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICBvcGFjaXR5OiAxO1xuICBib3gtc2hhZG93OiAkYWx0byAwIDAgNXB4O1xuICB6LWluZGV4OiAxMDUwO1xuICBwYWRkaW5nOiAxM3B4IDE5cHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBmb250LWZhbWlseTogXCJMYXRvXCI7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi5nYXMtdG9vbHRpcC1hcnJvdyB7XG4gIGhlaWdodDogMjVweDtcbiAgd2lkdGg6IDI1cHg7XG4gIHotaW5kZXg6IDEyMDA7XG4gIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gIGxlZnQ6IDEwN3B4O1xuICB0b3A6IDI5NHB4O1xuICBib3gtc2hhZG93OiAycHggMnB4IDJweCAkYWx0bztcbn1cblxuLmN1c3RvbWl6ZS1nYXMtdG9vbHRpcC1jb250YWluZXIgaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmN1c3RvbWl6ZS1nYXMtdG9vbHRpcC1jb250YWluZXIgaW5wdXRbdHlwZT1cIm51bWJlclwiXTpob3Zlcjo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmN1c3RvbWl6ZS1nYXMtdG9vbHRpcCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmdhcy10b29sdGlwIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5nYXMtdG9vbHRpcC1sYWJlbCB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgY29sb3I6ICR0dW5kb3JhO1xufVxuXG4uZ2FzLXRvb2x0aXAtaGVhZGVyIHtcbiAgcGFkZGluZy1ib3R0b206IDEycHg7XG59XG5cbi5nYXMtdG9vbHRpcC1pbnB1dC1sYWJlbCB7XG4gIG1hcmdpbi1ib3R0b206IDVweDtcbn1cblxuLmdhcy10b29sdGlwLWlucHV0LWxhYmVsIGkge1xuICBjb2xvcjogJHNpbHZlci1jaGFsaWNlO1xuICBtYXJnaW4tbGVmdDogNnB4O1xufVxuXG4uY3VzdG9taXplLWdhcy1pbnB1dCB7XG4gIHdpZHRoOiAxNzhweDtcbiAgaGVpZ2h0OiAyOHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAkYWx0bztcbiAgZm9udC1zaXplOiAxNnB4O1xuICBjb2xvcjogJG5pbGUtYmx1ZTtcbiAgcGFkZGluZy1sZWZ0OiA4cHg7XG59XG5cbi5jdXN0b21pemUtZ2FzLWlucHV0LXdyYXBwZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5nYXMtdG9vbHRpcC1pbnB1dC1kZXRhaWwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNHB4O1xuICByaWdodDogMjZweDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBjb2xvcjogJHNpbHZlci1jaGFsaWNlO1xufVxuXG4uZ2FzLXRvb2x0aXAtaW5wdXQtYXJyb3dzIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiA0cHg7XG4gIHdpZHRoOiAxN3B4O1xuICBoZWlnaHQ6IDI4cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkYWRhZGE7XG4gIGJvcmRlci1sZWZ0OiAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBjb2xvcjogIzliOWI5YjtcbiAgZm9udC1zaXplOiAuOGVtO1xuICBwYWRkaW5nOiAxcHggNHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi50b2tlbi1nYXMge1xuICAmX19hbW91bnQge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IDRweDtcbiAgfVxuXG4gICZfX3N5bWJvbCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG59XG5cbi5zZW5kLXNjcmVlbiB7XG4gICZfX3RpdGxlIHtcbiAgICBjb2xvcjogJHNjb3JwaW9uO1xuICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICBsaW5lLWhlaWdodDogMjlweDtcbiAgfVxuXG4gICZfX3N1YnRpdGxlIHtcbiAgICBtYXJnaW46IDEwcHggMCAyMHB4O1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgfVxuXG4gICZfX3NlbmQtYnV0dG9uLFxuICAmX19jYW5jZWwtYnV0dG9uIHtcbiAgICB3aWR0aDogMTYzcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgJl9fc2VuZC1idXR0b25fX2Rpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAuNTtcbiAgICBjdXJzb3I6IGF1dG87XG4gIH1cbn1cblxuLnNlbmQtdG9rZW4ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG4gIHotaW5kZXg6IDI1O1xuICBmb250LWZhbWlseTogUm9ib3RvO1xuXG4gICZfX2NvbnRlbnQge1xuICAgIHdpZHRoOiA0OThweDtcbiAgICBoZWlnaHQ6IDYwNXB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdiYSgwLCAwLCAwLCAuMDgpO1xuICAgIHBhZGRpbmc6IDQ2cHggNDAuNXB4IDI2cHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIC8vIHRvcDogLTI2cHg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgICBmbGV4OiAxIDAgYXV0bztcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAgICAgdG9wOiAwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgcGFkZGluZzogMTJweDtcbiAgICB9XG4gIH1cblxuICAuaWRlbnRpY29uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAtMzVweDtcbiAgICB6LWluZGV4OiAyNTtcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgdG9wOiAwO1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgfVxuICB9XG5cbiAgJl9fdGl0bGUge1xuICAgIGNvbG9yOiAkc2NvcnBpb247XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyOXB4O1xuICB9XG5cbiAgJl9fZGVzY3JpcHRpb24sXG4gICZfX2JhbGFuY2UtdGV4dCxcbiAgJl9fdG9rZW4tc3ltYm9sIHtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICAmX190b2tlbi1iYWxhbmNlIHtcbiAgICBmb250LXNpemU6IDQwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gICAgbWFyZ2luLXRvcDogMTNweDtcblxuICAgIC50b2tlbi1iYWxhbmNlX19hbW91bnQge1xuICAgICAgcGFkZGluZy1yaWdodDogMTJweDtcbiAgICB9XG4gIH1cblxuICAmX19idXR0b24tZ3JvdXAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZmxleDogMCAwIGF1dG87XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICAgIG1hcmdpbi10b3A6IDI0cHg7XG4gICAgfVxuXG4gICAgYnV0dG9uIHtcbiAgICAgIHdpZHRoOiAxNjNweDtcbiAgICB9XG4gIH1cbn1cblxuLmNvbmZpcm0tc2VuZC10b2tlbiB7XG4gICZfX2hlcm8tYW1vdW50LXdyYXBwZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG5cbi5zZW5kLXYyIHtcbiAgJl9fY29udGFpbmVyIHtcbiAgICAvLyBoZWlnaHQ6IDcwMXB4O1xuICAgIHdpZHRoOiAzODBweDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCAwIHJnYmEoMCwgMCwgMCwgLjA4KTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgICB6LWluZGV4OiAyNTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGJyZWFrLXNtYWxsKSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICBmbGV4OiAxIDEgYXV0bztcbiAgICB9XG4gIH1cblxuICAmX19zZW5kLWhlYWRlci1pY29uLWNvbnRhaW5lciB7XG4gICAgei1pbmRleDogMjU7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHRvcDogMDtcbiAgICB9XG4gIH1cblxuICAmX19zZW5kLWhlYWRlci1pY29uIHtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgd2lkdGg6IDQ4cHg7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRhbHRvO1xuICAgIHotaW5kZXg6IDI1O1xuICAgIHBhZGRpbmc6IDRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gIH1cblxuICAmX19zZW5kLWFycm93LWljb24ge1xuICAgIGNvbG9yOiAjZjI4OTMwO1xuICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogLTJweDtcbiAgICBsZWZ0OiAwO1xuICAgIGZvbnQtc2l6ZTogMS4xMmVtO1xuICB9XG5cbiAgJl9fYXJyb3ctYmFja2dyb3VuZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgIGhlaWdodDogMTRweDtcbiAgICB3aWR0aDogMTRweDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MnB4O1xuICAgIGxlZnQ6IDE5OXB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICB6LWluZGV4OiAxMDA7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICAgIHRvcDogMzZweDtcbiAgICB9XG4gIH1cblxuICAmX19oZWFkZXIge1xuICAgIGhlaWdodDogODhweDtcbiAgICB3aWR0aDogMzgwcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGF0aGVucy1ncmV5O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICAgIGhlaWdodDogNTlweDtcbiAgICAgIHdpZHRoOiAxMDB2dztcbiAgICB9XG4gIH1cblxuICAmX19oZWFkZXItdGlwIHtcbiAgICBoZWlnaHQ6IDI1cHg7XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgYmFja2dyb3VuZDogJGF0aGVucy1ncmV5O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gICAgbGVmdDogMTc4cHg7XG4gICAgdG9wOiA3NXB4O1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGJyZWFrLXNtYWxsKSB7XG4gICAgICB0b3A6IDQ2cHg7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cblxuICAmX190aXRsZSB7XG4gICAgY29sb3I6ICRzY29ycGlvbjtcbiAgICBmb250LXNpemU6IDIycHg7XG4gICAgbGluZS1oZWlnaHQ6IDI5cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi10b3A6IDI1cHg7XG4gIH1cblxuICAmX19jb3B5IHtcbiAgICBjb2xvcjogJGdyYXk7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgbGluZS1oZWlnaHQ6IDE5cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgd2lkdGg6IDI4N3B4O1xuICB9XG5cbiAgJl9fZXJyb3Ige1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBsaW5lLWhlaWdodDogMTJweDtcbiAgICBsZWZ0OiA4cHg7XG4gICAgY29sb3I6ICRyZWQ7XG4gIH1cblxuICAmX19lcnJvci1ib3JkZXIge1xuICAgIGNvbG9yOiAkcmVkO1xuICB9XG5cbiAgJl9fZm9ybSB7XG4gICAgbWFyZ2luOiAxM3B4IDA7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICAgIHBhZGRpbmc6IDEzcHggMDtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIGhlaWdodDogMDtcbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICBmbGV4OiAxIDEgYXV0bztcbiAgICB9XG4gIH1cblxuICAmX19mb3JtLWhlYWRlcixcbiAgJl9fZm9ybS1oZWFkZXItY29weSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG5cbiAgJl9fZm9ybS1yb3cge1xuICAgIG1hcmdpbjogMTQuNXB4IDE4cHggMHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93O1xuICAgIGZsZXg6IDEgMCBhdXRvO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgfVxuXG4gICZfX2Zvcm0tZmllbGQge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG5cbiAgJl9fZm9ybS1sYWJlbCB7XG4gICAgY29sb3I6ICRzY29ycGlvbjtcbiAgICBmb250LWZhbWlseTogUm9ib3RvO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBsaW5lLWhlaWdodDogMjJweDtcbiAgICB3aWR0aDogODhweDtcbiAgfVxuXG4gICZfX2Zyb20tZHJvcGRvd24ge1xuICAgIGhlaWdodDogNzNweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYWx0bztcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gICAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGNvbG9yOiAkdHVuZG9yYTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmX19jbG9zZS1hcmVhIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuICAgIFxuICAgICZfX2xpc3Qge1xuICAgICAgei1pbmRleDogMTA1MDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGhlaWdodDogMjIwcHg7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRnZXlzZXI7XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgICBib3gtc2hhZG93OiAwIDNweCA2cHggMCByZ2JhKDAgLDAgLDAgLC4xMSk7XG4gICAgICBtYXJnaW4tdG9wOiAxMXB4O1xuICAgICAgbWFyZ2luLWxlZnQ6IC0xcHg7XG4gICAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gICAgfVxuICB9XG5cbiAgJl9fdG8tYXV0b2NvbXBsZXRlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmX19kb3duLWNhcmV0IHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMThweDtcbiAgICAgIHJpZ2h0OiAxMnB4O1xuICAgIH1cbiAgfVxuXG4gICZfX3RvLWF1dG9jb21wbGV0ZSwgJl9fbWVtby10ZXh0LWFyZWEge1xuICAgICZfX2lucHV0IHtcbiAgICAgIGhlaWdodDogNTRweDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJGFsdG87XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAyMXB4O1xuICAgICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICB9XG4gIH1cblxuICAmX19hbW91bnQtbWF4IHtcbiAgICBjb2xvcjogJGN1cmlvdXMtYmx1ZTtcbiAgICBmb250LWZhbWlseTogUm9ib3RvO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBsZWZ0OiA4cHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICZfX2dhcy1mZWUtZGlzcGxheSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAmX19zbGlkZXJzLWljb24tY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjdXJpb3VzLWJsdWU7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgICBwYWRkaW5nOiA1cHg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAxNXB4O1xuICAgIHRvcDogMTRweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cblxuICAmX19zbGlkZXJzLWljb24ge1xuICAgIGNvbG9yOiAkY3VyaW91cy1ibHVlO1xuICB9XG5cbiAgJl9fbWVtby10ZXh0LWFyZWEge1xuICAgICZfX2lucHV0IHtcbiAgICAgIHBhZGRpbmc6IDZweCAxMHB4O1xuICAgIH1cbiAgfVxuXG4gICZfX2Zvb3RlciB7XG4gICAgaGVpZ2h0OiA5MnB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1ldmVubHk7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGFsdG87XG4gICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgIHBhZGRpbmc6IDAgMTJweDtcbiAgfVxuXG4gICZfX25leHQtYnRuLFxuICAmX19jYW5jZWwtYnRuLFxuICAmX19uZXh0LWJ0bl9fZGlzYWJsZWQge1xuICAgIHdpZHRoOiAxNjNweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgaGVpZ2h0OiA1NXB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICBsaW5lLWhlaWdodDogMjFweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZDtcbiAgICBtYXJnaW46IDAgNHB4O1xuICB9XG5cbiAgJl9fbmV4dC1idG4sXG4gICZfX25leHQtYnRuX19kaXNhYmxlZCB7XG4gICAgY29sb3I6ICRjdXJpb3VzLWJsdWU7XG4gICAgYm9yZGVyLWNvbG9yOiAkY3VyaW91cy1ibHVlO1xuICB9XG5cbiAgJl9fbmV4dC1idG5fX2Rpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAuNTtcbiAgICBjdXJzb3I6IGF1dG87XG4gIH1cblxuICAmX19jYW5jZWwtYnRuIHtcbiAgICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gICAgYm9yZGVyLWNvbG9yOiAkZHVzdHktZ3JheTtcbiAgfVxuXG4gICZfX2N1c3RvbWl6ZS1nYXMge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEOEQ4RDg7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7XG4gICAgYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdiYSgwLDAsMCwwLjE0KTtcbiAgICBmb250LWZhbWlseTogUm9ib3RvO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiBjb2x1bW47XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICAgIHdpZHRoOiAxMDB2dztcbiAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgfVxuXG4gICAgJl9faGVhZGVyIHtcbiAgICAgIGhlaWdodDogNTJweDtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYWx0bztcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgZm9udC1zaXplOiAyMnB4O1xuXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fdGl0bGUge1xuICAgICAgbWFyZ2luLWxlZnQ6IDE5LjI1cHg7XG4gICAgfVxuXG4gICAgJl9fY2xvc2U6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICdcXDAwRDcnO1xuICAgICAgZm9udC1zaXplOiAxLjhlbTtcbiAgICAgIGNvbG9yOiAkZHVzdHktZ3JheTtcbiAgICAgIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxOS4yNXB4O1xuICAgIH1cblxuICAgICZfX2NvbnRlbnQge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICAmX19ib2R5IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICAgICAgZmxleC1mbG93OiBjb2x1bW47XG4gICAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgICZfX2Zvb3RlciB7XG4gICAgICBoZWlnaHQ6IDc1cHg7XG4gICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGFsdG87XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGZvbnQtc2l6ZTogMjJweDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGJyZWFrLXNtYWxsKSB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgICZfX2J1dHRvbnMge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIHdpZHRoOiAxODEuNzVweDtcbiAgICAgIG1hcmdpbi1yaWdodDogMjEuMjVweDtcbiAgICB9XG5cbiAgICAmX19yZXZlcnQsICZfX2NhbmNlbCwgJl9fc2F2ZSwgJl9fc2F2ZV9fZXJyb3Ige1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbiAgICAmX19yZXZlcnQge1xuICAgICAgY29sb3I6ICRzaWx2ZXItY2hhbGljZTtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAyMS4yNXB4O1xuICAgIH1cblxuICAgICZfX2NhbmNlbCwgJl9fc2F2ZSwgJl9fc2F2ZV9fZXJyb3Ige1xuICAgICAgaGVpZ2h0OiAzNC42NHB4O1xuICAgICAgd2lkdGg6IDg1Ljc0cHg7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAkZHVzdHktZ3JheTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgIGZvbnQtZmFtaWx5OiAnRElOIE9UJztcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIGNvbG9yOiAkZHVzdHktZ3JheTtcbiAgICB9XG5cbiAgICAmX19zYXZlX19lcnJvciB7XG4gICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICBjdXJzb3I6IGF1dG87XG4gICAgfVxuXG4gICAgJl9fZXJyb3ItbWVzc2FnZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogNHB4O1xuICAgICAgcmlnaHQ6IDRweDtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxMnB4O1xuICAgICAgY29sb3I6ICRyZWQ7XG4gICAgfVxuICB9XG5cbiAgJl9fZ2FzLW1vZGFsLWNhcmQge1xuICAgIHdpZHRoOiAzNjBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIHBhZGRpbmctbGVmdDogMjBweDtcblxuICAgICZfX3RpdGxlIHtcbiAgICAgIGhlaWdodDogMjZweDtcbiAgICAgIGNvbG9yOiAkdHVuZG9yYTtcbiAgICAgIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgbGluZS1oZWlnaHQ6IDI2cHg7XG4gICAgICBtYXJnaW4tdG9wOiAxN3B4O1xuICAgIH1cblxuICAgICZfX2NvcHkge1xuICAgICAgaGVpZ2h0OiAzOHB4O1xuICAgICAgd2lkdGg6IDMxNHB4O1xuICAgICAgY29sb3I6ICR0dW5kb3JhO1xuICAgICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxOXB4O1xuICAgICAgbWFyZ2luLXRvcDogMTdweDtcbiAgICB9XG5cbiAgICAuY3VzdG9taXplLWdhcy1pbnB1dC13cmFwcGVyIHtcbiAgICAgIG1hcmdpbi10b3A6IDE3cHg7XG4gICAgfVxuXG4gICAgLmN1c3RvbWl6ZS1nYXMtaW5wdXQge1xuICAgICAgaGVpZ2h0OiA1NHB4O1xuICAgICAgd2lkdGg6IDMxNXB4O1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJGdleXNlcjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgICB9XG5cbiAgICAuZ2FzLXRvb2x0aXAtaW5wdXQtYXJyb3dzIHtcbiAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgaGVpZ2h0OiA1NHB4O1xuICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZGFkYWRhO1xuICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgY29sb3I6ICR0dW5kb3JhO1xuICAgICAgcmlnaHQ6IDBweDtcbiAgICAgIHBhZGRpbmc6IDFweCA0cHg7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cblxuICAgIGlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24ge1xuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOmhvdmVyOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIHtcbiAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG4iLCIuY29uZmlybS1zY3JlZW4tY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmb250LWZhbWlseTogUm9ib3RvO1xuICBmbGV4OiAwIDAgYXV0bztcbiAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuICBib3gtc2hhZG93OiAwIDJweCA0cHggMCByZ2JhKCRibGFjaywgLjA4KTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NXB4KSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1NzZweCkge1xuICAgIC8vIHRvcDogLTI2cHg7XG4gIH1cbn1cblxuLm5vdGlmaWNhdGlvbiB7XG4gIC5jb25maXJtLXNjcmVlbi13cmFwcGVyIHtcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAgICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gODVweCk7XG4gICAgfVxuICB9XG59XG5cbi5jb25maXJtLXNjcmVlbi13cmFwcGVyIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMzgwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuICB6LWluZGV4OiAyNTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDhweDtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDhweDtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB0b3A6IDA7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA1OHB4IC0gODVweCk7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgfVxufVxuXG4uY29uZmlybS1zY3JlZW4td3JhcHBlciA+IC5jb25maXJtLXNjcmVlbi10b3RhbC1ib3gge1xuICBtYXJnaW4tbGVmdDogMTBweDtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xufVxuXG4uY29uZmlybS1zY3JlZW4td3JhcHBlciA+IC5jb25maXJtLW1lbW8td3JhcHBlciB7XG4gIG1hcmdpbjogMDtcbn1cblxuLmNvbmZpcm0tc2NyZWVuLWhlYWRlciB7XG4gIGhlaWdodDogODhweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGF0aGVucy1ncmV5O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmb250LXNpemU6IDIycHg7XG4gIGxpbmUtaGVpZ2h0OiAyOXB4O1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMjVweCAwO1xuICBmbGV4OiAwIDAgYXV0bztcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICBmb250LXNpemU6IDIwcHg7XG4gIH1cbn1cblxuLmNvbmZpcm0tc2NyZWVuLWhlYWRlci10aXAge1xuICBoZWlnaHQ6IDI1cHg7XG4gIHdpZHRoOiAyNXB4O1xuICBiYWNrZ3JvdW5kOiAkYXRoZW5zLWdyZXk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICB0b3A6IDcxcHg7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBtYXJnaW46IDAgYXV0bztcbn1cblxuLmNvbmZpcm0tc2NyZWVuLXRpdGxlIHtcbiAgbGluZS1oZWlnaHQ6IDI3cHg7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGJyZWFrLXNtYWxsKSB7XG4gICAgbWFyZ2luLWxlZnQ6IDIycHg7XG4gICAgbWFyZ2luLXJpZ2h0OiA4cHg7XG4gIH1cbn1cblxuLmNvbmZpcm0tc2NyZWVuLWJhY2stYnV0dG9uIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRjdXJpb3VzLWJsdWU7XG4gIGxlZnQ6IDI0cHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogJGN1cmlvdXMtYmx1ZTtcbiAgcGFkZGluZzogNnB4IDEzcHggN3B4IDEycHg7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgaGVpZ2h0OiAzMHB4O1xuICB3aWR0aDogNTRweDtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4gIH1cbn1cblxuLmNvbmZpcm0tc2NyZWVuLWFjY291bnQtd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5jb25maXJtLXNjcmVlbi1hY2NvdW50LW5hbWUge1xuICBtYXJnaW4tdG9wOiAxMnB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAxOXB4O1xuICBjb2xvcjogJHNjb3JwaW9uO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5jb25maXJtLXNjcmVlbi1yb3ctaW5mbyB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDIxcHg7XG59XG5cbi5jb25maXJtLXNjcmVlbi1hY2NvdW50LW51bWJlciB7XG4gIGZvbnQtc2l6ZTogMTBweDtcbiAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gIGNvbG9yOiAkZHVzdHktZ3JheTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBoZWlnaHQ6IDE2cHg7XG59XG5cbi5jb25maXJtLXNlbmQtZXRoZXIsXG4uY29uZmlybS1zZW5kLXRva2VuIHtcbiAgaS5mYS1hcnJvdy1yaWdodCB7XG4gICAgYWxpZ24tc2VsZjogc3RhcnQ7XG4gICAgbWFyZ2luOiAyNHB4IDE0cHggMCAhaW1wb3J0YW50O1xuICB9XG59XG5cbi5jb25maXJtLXNjcmVlbi1pZGVudGljb25zIHtcbiAgbWFyZ2luLXRvcDogMjRweDtcbiAgZmxleDogMCAwIGF1dG87XG5cbiAgaS5mYS1hcnJvdy1yaWdodCB7XG4gICAgYWxpZ24tc2VsZjogc3RhcnQ7XG4gICAgbWFyZ2luOiA0MnB4IDE0cHggMDtcbiAgfVxuXG4gIGkuZmEtZmlsZS10ZXh0LW8ge1xuICAgIGZvbnQtc2l6ZTogNjBweDtcbiAgICBtYXJnaW46IDE2cHggOHB4IDAgOHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxufVxuXG4uY29uZmlybS1zY3JlZW4tc2VuZGluZy10by1tZXNzYWdlIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDE2cHg7XG4gIG1hcmdpbi10b3A6IDMwcHg7XG4gIGZvbnQtZmFtaWx5OiAnRElOIE5FWFQgTGlnaHQnO1xufVxuXG4uY29uZmlybS1zY3JlZW4tc2VuZC1hbW91bnQge1xuICBjb2xvcjogJHNjb3JwaW9uO1xuICBtYXJnaW4tdG9wOiAxMnB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogNDBweDtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgbGluZS1oZWlnaHQ6IDUzcHg7XG4gIGZsZXg6IDAgMCBhdXRvO1xufVxuXG4uY29uZmlybS1zY3JlZW4tc2VuZC1hbW91bnQtY3VycmVuY3kge1xuICBmb250LXNpemU6IDIwcHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZsZXg6IDAgMCBhdXRvO1xufVxuXG4uY29uZmlybS1tZW1vLXdyYXBwZXIge1xuICBtaW4taGVpZ2h0OiAyNHB4O1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRhbHRvO1xuICBmbGV4OiAwIDAgYXV0bztcbn1cblxuLmNvbmZpcm0tc2NyZWVuLXNlbmQtbWVtbyB7XG4gIGNvbG9yOiAkc2NvcnBpb247XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDE5cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5cbi5jb25maXJtLXNjcmVlbi1sYWJlbCB7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gIGNvbG9yOiAkc2NvcnBpb247XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbnNlY3Rpb24gLmNvbmZpcm0tc2NyZWVuLWFjY291bnQtbmFtZSxcbnNlY3Rpb24gLmNvbmZpcm0tc2NyZWVuLWFjY291bnQtbnVtYmVyLFxuLmNvbmZpcm0tc2NyZWVuLXJvdy1pbmZvLFxuLmNvbmZpcm0tc2NyZWVuLXJvdy1kZXRhaWwge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4uY29uZmlybS1zY3JlZW4tcm93cyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgd2lkdGg6IDEwMCU7XG4gIGZsZXg6IDAgMCBhdXRvO1xufVxuXG4uY29uZmlybS1zY3JlZW4tc2VjdGlvbi1jb2x1bW4ge1xuICBmbGV4OiAuNTtcbn1cblxuLmNvbmZpcm0tc2NyZWVuLXJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRhbHRvO1xuICB3aWR0aDogMTAwJTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMTJweDtcbiAgcGFkZGluZy1sZWZ0OiAzNXB4O1xuICBmb250LXNpemU6IDE2cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMnB4O1xuICBmb250LXdlaWdodDogMzAwO1xufVxuXG4uY29uZmlybS1zY3JlZW4tcm93LWRldGFpbCB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gIGNvbG9yOiAkZHVzdHktZ3JheTtcbn1cblxuLmNvbmZpcm0tc2NyZWVuLXRvdGFsLWJveCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICR3aWxkLXNhbmQ7XG4gIHBhZGRpbmc6IDIwcHg7XG4gIHBhZGRpbmctbGVmdDogMzVweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRhbHRvO1xuXG4gIC5jb25maXJtLXNjcmVlbi1sYWJlbCB7XG4gICAgbGluZS1oZWlnaHQ6IDE4cHg7XG4gIH1cblxuICAuY29uZmlybS1zY3JlZW4tcm93LWRldGFpbCB7XG4gICAgY29sb3I6ICRzY29ycGlvbjtcbiAgfVxuXG4gICZfX3N1YnRpdGxlIHtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgbGluZS1oZWlnaHQ6IDIycHg7XG4gIH1cblxuICAuY29uZmlybS1zY3JlZW4tcm93LWluZm8ge1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGxpbmUtaGVpZ2h0OiAyMXB4O1xuICB9XG59XG5cbi5jb25maXJtLXNjcmVlbi1jb25maXJtLWJ1dHRvbiB7XG4gIGhlaWdodDogNjJweDtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDJjOWIxO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGNvbG9yOiAkd2hpdGU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgcGFkZGluZy10b3A6IDE1cHg7XG4gIHBhZGRpbmctYm90dG9tOiAxNXB4O1xuICBib3JkZXItd2lkdGg6IDA7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIGZsZXg6IDEgMCBhdXRvO1xuICBmb250LXdlaWdodDogMzAwO1xuICBtYXJnaW46IDAgOHB4O1xufVxuXG4uYnRuLWxpZ2h0LmNvbmZpcm0tc2NyZWVuLWNhbmNlbC1idXR0b24ge1xuICBoZWlnaHQ6IDYycHg7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3BhY2l0eTogMTtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgYm9yZGVyLXdpZHRoOiAwO1xuICBwYWRkaW5nLXRvcDogMTVweDtcbiAgcGFkZGluZy1ib3R0b206IDE1cHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDMycHg7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZmxleDogMSAwIGF1dG87XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIG1hcmdpbjogMCA4cHg7XG59XG5cbiNwZW5kaW5nLXR4LWZvcm0ge1xuICBmbGV4OiAxIDAgYXV0bztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgcGFkZGluZzogMTJweCAxOHB4O1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA4cHg7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA4cHg7XG4gIHdpZHRoOiAxMDAlO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkYWx0bztcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICB9XG59XG4iLCIubG9hZGluZy1vdmVybGF5IHtcbiAgbGVmdDogMHB4O1xuICB6LWluZGV4OiA1MDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1NzVweCkge1xuICAgIG1hcmdpbi10b3A6IDU2cHg7XG4gICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA1NnB4KTtcbiAgfVxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gICAgbWFyZ2luLXRvcDogNzVweDtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDc1cHgpO1xuICB9XG59XG4iLCIuaGVyby1iYWxhbmNlIHtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luOiAuM2VtIC45ZW0gMDtcbiAgICAvLyBoZWlnaHQ6IDgwdmg7XG4gICAgLy8gbWF4LWhlaWdodDogMjI1cHg7XG4gICAgZmxleDogMCAwIGF1dG87XG4gIH1cblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkYnJlYWstbGFyZ2UpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luOiAyLjhlbSAyLjM3ZW0gLjhlbTtcbiAgfVxuXG4gIC5iYWxhbmNlLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBtYXJnaW46IDA7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB9XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkYnJlYWstbGFyZ2UpIHtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICBmbGV4LWdyb3c6IDM7XG4gICAgfVxuICB9XG5cbiAgLmJhbGFuY2UtZGlzcGxheSB7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgLnRva2VuLWFtb3VudCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTc1JTtcbiAgICAgICAgbWFyZ2luLXRvcDogMTIuNSU7XG4gICAgICB9XG5cbiAgICAgIC5maWF0LWFtb3VudCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTE1JTtcbiAgICAgICAgbWFyZ2luLXRvcDogOC41JTtcbiAgICAgICAgY29sb3I6ICNhMGEwYTA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGJyZWFrLWxhcmdlKSB7XG4gICAgICBtYXJnaW4tbGVmdDogMyU7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblxuICAgICAgLnRva2VuLWFtb3VudCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTM1JTtcbiAgICAgIH1cblxuICAgICAgLmZpYXQtYW1vdW50IHtcbiAgICAgICAgbWFyZ2luLXRvcDogLjI1JTtcbiAgICAgICAgZm9udC1zaXplOiAxMDUlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5iYWxhbmNlLWljb24ge1xuICAgIGJvcmRlci1yYWRpdXM6IDI1cHg7XG4gICAgd2lkdGg6IDQ1cHg7XG4gICAgaGVpZ2h0OiA0NXB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRhbHRvO1xuICB9XG5cbiAgLmhlcm8tYmFsYW5jZS1idXR0b25zIHtcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAvLyBoZWlnaHQ6IDEwMHB4OyAvLyBuZWVkZWQgYSByb3VuZCBudW1iZXIgdG8gc2V0IHRoZSBoZWlnaHRzIG9mIHRoZSBidXR0b25zIGluc2lkZVxuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICBwYWRkaW5nOiAxNnB4IDA7XG4gICAgfVxuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGJyZWFrLWxhcmdlKSB7XG4gICAgICBmbGV4LWdyb3c6IDI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIH1cblxuICAgIGJ1dHRvbi5idG4tY2xlYXIge1xuICAgICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQ7XG4gICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICBmb250LXNpemU6IDEycHg7XG5cbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAgICAgICBib3JkZXItY29sb3I6ICRjdXJpb3VzLWJsdWU7XG4gICAgICAgIGNvbG9yOiAkY3VyaW91cy1ibHVlO1xuICAgICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRicmVhay1sYXJnZSkge1xuICAgICAgICBib3JkZXItY29sb3I6ICRjdXJpb3VzLWJsdWU7XG4gICAgICAgIGNvbG9yOiAkY3VyaW91cy1ibHVlO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB3aWR0aDogODVweDtcbiAgICAgICAgaGVpZ2h0OiAzNHB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiJHdhbGxldC1iYWxhbmNlLWJnOiAjZTdlN2U3O1xuJHdhbGxldC1iYWxhbmNlLWJyZWFrcG9pbnQ6IDg5MHB4O1xuJHdhbGxldC1iYWxhbmNlLWJyZWFrcG9pbnQtcmFuZ2U6IFwic2NyZWVuIGFuZCAobWluLXdpZHRoOiAjeyRicmVhay1sYXJnZX0pIGFuZCAobWF4LXdpZHRoOiAjeyR3YWxsZXQtYmFsYW5jZS1icmVha3BvaW50fSlcIjtcblxuLndhbGxldC1iYWxhbmNlLXdyYXBwZXIge1xuICBmbGV4OiAwIDAgYXV0bztcbiAgdHJhbnNpdGlvbjogbGluZWFyIDIwMG1zO1xuICBiYWNrZ3JvdW5kOiByZ2JhKCR3YWxsZXQtYmFsYW5jZS1iZywgMCk7XG5cbiAgJi0tYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKCR3YWxsZXQtYmFsYW5jZS1iZywgMSk7XG4gIH1cbn1cblxuLndhbGxldC1iYWxhbmNlIHtcbiAgYmFja2dyb3VuZDogaW5oZXJpdDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmbGV4OiAwIDAgYXV0bztcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgJHdhbGxldC1iYWxhbmNlLWJnO1xuXG4gIC5iYWxhbmNlLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW46IDIwcHggMjRweDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGZsZXgtZ3JvdzogMztcblxuICAgIEBtZWRpYSAjeyR3YWxsZXQtYmFsYW5jZS1icmVha3BvaW50LXJhbmdlfSB7XG4gICAgICBtYXJnaW46IDEwJSA0JTtcbiAgICB9XG4gIH1cblxuICAuYmFsYW5jZS1kaXNwbGF5IHtcbiAgICBtYXJnaW4tbGVmdDogMTVweDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cbiAgICAudG9rZW4tYW1vdW50IHtcbiAgICAgIGZvbnQtc2l6ZTogMTM1JTtcbiAgICB9XG5cbiAgICAuZmlhdC1hbW91bnQge1xuICAgICAgbWFyZ2luLXRvcDogLjI1JTtcbiAgICAgIGZvbnQtc2l6ZTogMTA1JTtcbiAgICB9XG5cbiAgICBAbWVkaWEgI3skd2FsbGV0LWJhbGFuY2UtYnJlYWtwb2ludC1yYW5nZX0ge1xuICAgICAgbWFyZ2luLWxlZnQ6IDQlO1xuXG4gICAgICAudG9rZW4tYW1vdW50IHtcbiAgICAgICAgZm9udC1zaXplOiAxMDUlO1xuICAgICAgfVxuXG4gICAgICAuZmlhdC1hbW91bnQge1xuICAgICAgICBmb250LXNpemU6IDk1JTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuYmFsYW5jZS1pY29uIHtcbiAgICBib3JkZXItcmFkaXVzOiAyNXB4O1xuICAgIHdpZHRoOiA0NXB4O1xuICAgIGhlaWdodDogNDVweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYWx0bztcbiAgfVxufVxuIiwiLnR4LWxpc3QtY29udGFpbmVyIHtcbiAgaGVpZ2h0OiA4Ny41JTtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkYnJlYWstbGFyZ2UpIHtcbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIH1cbn1cblxuLnR4LWxpc3QtaGVhZGVyIHtcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAudHgtbGlzdC1oZWFkZXItd3JhcHBlciB7XG4gICAgbWFyZ2luLXRvcDogLjJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAuNmVtO1xuICAgIC8vIFRPRE86IFJlc29sdmUgTGF5b3V0IENvbmZsaWNzdCBpbiBXYWxsZXQgVmlld1xuICAgIC8vICAtIFRoaXMgZml4ZXMgdHhsaXN0IFwidHJhbnNhY3Rpb25zXCIgdGl0bGUgZGlzcGF5XG4gICAgLy8gbWFyZ2luLXRvcDogMC4yZW07XG4gICAgLy8gbWFyZ2luLWJvdHRvbTogMC42ZW07XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZmxleDogMCAwIGF1dG87XG4gIH1cblxuICAudHgtbGlzdC1oZWFkZXIge1xuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgY29sb3I6ICRkdXN0eS1ncmF5O1xuICAgIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgfVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkYnJlYWstbGFyZ2UpIHtcbiAgLnR4LWxpc3QtaGVhZGVyLXdyYXBwZXIge1xuICAgIGZsZXg6IDAgMCA1NXB4O1xuICB9XG5cbiAgLnR4LWxpc3QtaGVhZGVyIHtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgbWFyZ2luOiAxLjVlbSAyLjM3ZW07XG4gIH1cblxuICAudHgtbGlzdC1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi50eC1saXN0LWNvbnRlbnQtZGl2aWRlciB7XG4gIGhlaWdodDogMXB4O1xuICBiYWNrZ3JvdW5kOiByZ2IoMjMxLCAyMzEsIDIzMSk7XG4gIGZsZXg6IDAgMCAxcHg7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGJyZWFrLXNtYWxsKSB7XG4gICAgbWFyZ2luOiAuMWVtIDA7XG4gIH1cblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkYnJlYWstbGFyZ2UpIHtcbiAgICBtYXJnaW46IC4xZW0gMi4zN2VtO1xuICB9XG59XG5cbi50eC1saXN0LWl0ZW0td3JhcHBlciB7XG4gIGZsZXg6IDEgMSBhdXRvO1xuICB3aWR0aDogMDtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAgIHBhZGRpbmc6IDAgMS4zZW0gLjhlbTtcbiAgfVxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRicmVhay1sYXJnZSkge1xuICAgIHBhZGRpbmctYm90dG9tOiAxMnB4O1xuICB9XG59XG5cbi50eC1saXN0LWNsaWNrYWJsZSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKCRhbHRvLCAuMik7XG4gIH1cbn1cblxuLnR4LWxpc3QtcGVuZGluZy1pdGVtLWNvbnRhaW5lciB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgb3BhY2l0eTogLjU7XG59XG5cbi50eC1saXN0LWRhdGUtd3JhcHBlciB7XG4gIGZsZXg6IDEgMSBhdXRvO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAgIG1hcmdpbi10b3A6IDZweDtcbiAgfVxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRicmVhay1sYXJnZSkge1xuICAgIG1hcmdpbi10b3A6IDEycHg7XG4gIH1cbn1cblxuLnR4LWxpc3QtY29udGVudC13cmFwcGVyIHtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIG1hcmdpbi1ib3R0b206IDRweDtcbiAgbWFyZ2luLXRvcDogMnB4O1xuICBmbGV4OiAxIDAgYXV0bztcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICBmb250LXNpemU6IDEycHg7XG5cbiAgICAudHgtbGlzdC1zdGF0dXMge1xuICAgICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnR4LWxpc3QtYWNjb3VudCB7XG4gICAgICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAudHgtbGlzdC12YWx1ZSB7XG4gICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICBsaW5lLWhlaWdodDogMThweDtcbiAgICB9XG5cbiAgICAudHgtbGlzdC1maWF0LXZhbHVlIHtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICAgIH1cbiAgfVxufVxuXG4udHgtbGlzdC1kYXRlIHtcbiAgY29sb3I6ICRkdXN0eS1ncmF5O1xuICBmb250LXNpemU6IDEycHg7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG59XG5cbi50eC1saXN0LWlkZW50aWNvbi13cmFwcGVyIHtcbiAgYWxpZ24tc2VsZjogY2VudGVyO1xuICBmbGV4OiAwIDAgYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xufVxuXG4udHgtbGlzdC1hY2NvdW50LWFuZC1zdGF0dXMtd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXg6IDEgMSBhdXRvO1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICB3aWR0aDogMDtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG5cbiAgICAudHgtbGlzdC1hY2NvdW50LXdyYXBwZXIge1xuICAgICAgaGVpZ2h0OiAxOHB4O1xuXG4gICAgICAudHgtbGlzdC1hY2NvdW50IHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE0cHg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGJyZWFrLWxhcmdlKSB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIC50eC1saXN0LWFjY291bnQtd3JhcHBlciB7XG4gICAgICBmbGV4OiAxLjMgMiBhdXRvO1xuICAgICAgbWluLXdpZHRoOiAxNTNweDtcbiAgICB9XG5cbiAgICAudHgtbGlzdC1zdGF0dXMtd3JhcHBlciB7XG4gICAgICBmbGV4OiA2IDYgYXV0bztcbiAgICB9XG4gIH1cblxuICAudHgtbGlzdC1hY2NvdW50IHtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgY29sb3I6ICRzY29ycGlvbjtcbiAgfVxuXG4gIC50eC1saXN0LXN0YXR1cyB7XG4gICAgY29sb3I6ICRkdXN0eS1ncmF5O1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgfVxuXG4gIC50eC1saXN0LXN0YXR1cy0tcmVqZWN0ZWQsXG4gIC50eC1saXN0LXN0YXR1cy0tZmFpbGVkIHtcbiAgICBjb2xvcjogJG1vbnpvO1xuICB9XG59XG5cbi50eC1saXN0LWl0ZW0ge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiKDIzMSwgMjMxLCAyMzEpO1xuICBmbGV4OiAwIDAgYXV0bztcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAgIC8vIG1hcmdpbjogMCAxLjNlbSAuOTVlbTsgIWltcG9ydGFudFxuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGJyZWFrLWxhcmdlKSB7XG4gICAgbWFyZ2luOiAwIDIuMzdlbTtcbiAgfVxuXG4gICY6bGFzdC1vZi10eXBlIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKDIzMSwgMjMxLCAyMzEpO1xuICAgIG1hcmdpbi1ib3R0b206IDMycHg7XG4gIH1cblxuICAmX193cmFwcGVyIHtcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgZmxleDogMiAyIGF1dG87XG4gICAgY29sb3I6ICRkdXN0eS1ncmF5O1xuXG4gICAgLnR4LWxpc3QtdmFsdWUge1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuXG4gICAgLnR4LWxpc3QtdmFsdWUtLWNvbmZpcm1lZCB7XG4gICAgICBjb2xvcjogJGNhcmliYmVhbi1ncmVlbjtcbiAgICB9XG5cbiAgICAudHgtbGlzdC1maWF0LXZhbHVlIHtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gICYtLWVtcHR5IHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZSAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDE2cHg7XG4gIH1cbn1cblxuLnR4LWxpc3QtZGV0YWlscy13cmFwcGVyIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZmxleDogMCAwIDM1JTtcbn1cblxuLnR4LWxpc3QtdmFsdWUge1xuICBmb250LXNpemU6IDE2cHg7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnR4LWxpc3QtZmlhdC12YWx1ZSB7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnR4LWxpc3QtdmFsdWUtLWNvbmZpcm1lZCB7XG4gIGNvbG9yOiAkY2FyaWJiZWFuLWdyZWVuO1xufVxuIiwiLy8gT2xkIHNjc3MsIGRvIG5vdCBsaW50IC0gY2xlYW4gdXAgbGF0ZXJcbi8qIHN0eWxlbGludC1kaXNhYmxlICovXG5cblxuLypcbkFwcCBTZWN0aW9uc1xuICBUT0RPOiBNb3ZlIGludG8gc2VwYXJhdGUgZmlsZXMuXG4qL1xuXG4vKiBpbml0aWFsaXplICovXG50ZXh0YXJlYS50d2VsdmUtd29yZC1waHJhc2Uge1xuICBwYWRkaW5nOiAxMnB4O1xuICB3aWR0aDogMzAwcHg7XG4gIGhlaWdodDogMTQwcHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgYmFja2dyb3VuZDogJHdoaXRlO1xuICByZXNpemU6IG5vbmU7XG59XG5cbi5pbml0aWFsaXplLXNjcmVlbiBociB7XG4gIHdpZHRoOiA2MHB4O1xuICBtYXJnaW46IDEycHg7XG4gIGJvcmRlci1jb2xvcjogI2Y3ODYxYztcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbn1cblxuLmluaXRpYWxpemUtc2NyZWVuIGxhYmVsIHtcbiAgbWFyZ2luLXRvcDogMjBweDtcbn1cblxuLmluaXRpYWxpemUtc2NyZWVuIGJ1dHRvbi5jcmVhdGUtdmF1bHQge1xuICBtYXJnaW4tdG9wOiA0MHB4O1xufVxuXG4uaW5pdGlhbGl6ZS1zY3JlZW4gLndhcm5pbmcge1xuICBmb250LXNpemU6IDE0cHg7XG4gIG1hcmdpbjogMCAxNnB4O1xufVxuXG4vKiB1bmxvY2sgKi9cbi5lcnJvciB7XG4gIC8vIGNvbG9yOiAjZTIwMjAyO1xuICBjb2xvcjogI2Y3ODYxYztcbiAgbWFyZ2luLWJvdHRvbTogOXB4O1xufVxuXG4ud2FybmluZyB7XG4gIGNvbG9yOiAjZmZhZTAwO1xufVxuXG4ubG9jayB7XG4gIHdpZHRoOiA1MHB4O1xuICBoZWlnaHQ6IDUwcHg7XG59XG5cbi5sb2NrLmxvY2tlZCB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS41KTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSA0MDBtcyBlYXNlLWluLCB0cmFuc2Zvcm0gNDAwbXMgZWFzZS1pbjtcbn1cblxuLmxvY2sudW5sb2NrZWQge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDUwMG1zIGVhc2Utb3V0LCB0cmFuc2Zvcm0gNTAwbXMgZWFzZS1vdXQsIGJhY2tncm91bmQgMjAwbXMgZWFzZS1pbjtcbn1cblxuLmxvY2subG9ja2VkIC5sb2NrLXRvcCB7XG4gIHRyYW5zZm9ybTogc2NhbGVYKDEpIHRyYW5zbGF0ZVgoMCk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcyBlYXNlLWluO1xufVxuXG4ubG9jay51bmxvY2tlZCAubG9jay10b3Age1xuICB0cmFuc2Zvcm06IHNjYWxlWCgtMSkgdHJhbnNsYXRlWCgtMTJweCk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcyBlYXNlLWluO1xufVxuXG4ubG9jay51bmxvY2tlZDpob3ZlciB7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYmFja2dyb3VuZDogI2U1ZTVlNTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2IxYjFiMTtcbn1cblxuLmxvY2sudW5sb2NrZWQ6YWN0aXZlIHtcbiAgYmFja2dyb3VuZDogI2MzYzNjMztcbn1cblxuLnNlY3Rpb24tdGl0bGUgLmZhLWFycm93LWxlZnQge1xuICBtYXJnaW46IC0ycHggOHB4IDBweCAtOHB4O1xufVxuXG4udW5sb2NrLXNjcmVlbiAjbWV0YW1hc2stbWFzY290LWNvbnRhaW5lciB7XG4gIG1hcmdpbi10b3A6IDI0cHg7XG59XG5cbi51bmxvY2stc2NyZWVuIGgxIHtcbiAgbWFyZ2luLXRvcDogLTI4cHg7XG4gIG1hcmdpbi1ib3R0b206IDQycHg7XG59XG5cbi51bmxvY2stc2NyZWVuIGlucHV0W3R5cGU9cGFzc3dvcmRdIHtcbiAgd2lkdGg6IDI2MHB4O1xufVxuXG4uc2l6aW5nLWlucHV0IHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBoZWlnaHQ6IDMwcHg7XG4gIHBhZGRpbmctbGVmdDogNXB4O1xufVxuXG4uZWRpdGFibGUtbGFiZWwge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuXG4vKiBXZWJraXQgKi9cblxuLnVubG9jay1zY3JlZW4gaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG59XG5cbi8qIEZpcmVmb3ggMTgtICovXG5cbi51bmxvY2stc2NyZWVuIGlucHV0Oi1tb3otcGxhY2Vob2xkZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG59XG5cbi8qIEZpcmVmb3ggMTkrICovXG5cbi51bmxvY2stc2NyZWVuIGlucHV0OjotbW96LXBsYWNlaG9sZGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDEuMmVtO1xufVxuXG4vKiBJRSAqL1xuXG4udW5sb2NrLXNjcmVlbiBpbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG59XG5cbi8qIGFjY291bnRzICovXG5cbi5hY2NvdW50cy1zZWN0aW9uIHtcbiAgbWFyZ2luOiAwIDBweDtcbn1cblxuLmFjY291bnRzLXNlY3Rpb24gLmhvcml6b250YWwtbGluZSB7XG4gIG1hcmdpbjogMCAxOHB4O1xufVxuXG4uYWNjb3VudHMtbGlzdC1vcHRpb24ge1xuICBoZWlnaHQ6IDEyMHB4O1xufVxuXG4uYWNjb3VudHMtbGlzdC1vcHRpb24gLmlkZW50aWNvbi13cmFwcGVyIHtcbiAgd2lkdGg6IDEwMHB4O1xufVxuXG4udW5jb25mdHgtbGluayB7XG4gIG1hcmdpbi10b3A6IDI0cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLnVuY29uZnR4LWxpbmsgLmZhLWFycm93LXJpZ2h0IHtcbiAgbWFyZ2luOiAwIC04cHggMHB4IDhweDtcbn1cblxuLyogaWRlbnRpdHkgcGFuZWwgKi9cblxuLmlkZW50aXR5LXBhbmVsIHtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLmlkZW50aXR5LXBhbmVsIC5pZGVudGljb24td3JhcHBlciB7XG4gIG1hcmdpbjogNHB4O1xuICBtYXJnaW4tdG9wOiA4cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5pZGVudGl0eS1wYW5lbCAuaWRlbnRpY29uLXdyYXBwZXIgc3BhbiB7XG4gIG1hcmdpbjogMCBhdXRvO1xufVxuXG4uaWRlbnRpdHktcGFuZWwgLmlkZW50aXR5LWRhdGEge1xuICBtYXJnaW46IDhweCA4cHggOHB4IDE4cHg7XG59XG5cbi5pZGVudGl0eS1wYW5lbCBpIHtcbiAgbWFyZ2luLXRvcDogMzJweDtcbiAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gIGNvbG9yOiAjYjliOWI5O1xufVxuXG4uaWRlbnRpdHktcGFuZWwgLmFycm93LXJpZ2h0IHtcbiAgcGFkZGluZy1sZWZ0OiAxOHB4O1xuICB3aWR0aDogNDJweDtcbiAgbWluLXdpZHRoOiAxOHB4O1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5pZGVudGl0eS1jb3B5LmZsZXgtY29sdW1uIHtcbiAgZmxleDogLjI1IDAgYXV0bztcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi8qIGFjY291bnRzIHNjcmVlbiAqL1xuXG4uaWRlbnRpdHktc2VjdGlvbiB7XG59XG5cbi5pZGVudGl0eS1zZWN0aW9uIC5pZGVudGl0eS1wYW5lbCB7XG4gIGJhY2tncm91bmQ6ICNlOWU5ZTk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYjFiMWIxO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5pZGVudGl0eS1zZWN0aW9uIC5pZGVudGl0eS1wYW5lbC5zZWxlY3RlZCB7XG4gIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgY29sb3I6ICNmM2M4M2U7XG59XG5cbi5pZGVudGl0eS1zZWN0aW9uIC5pZGVudGl0eS1wYW5lbC5zZWxlY3RlZCAuaWRlbnRpY29uIHtcbiAgYm9yZGVyLWNvbG9yOiAkb3JhbmdlO1xufVxuXG4uaWRlbnRpdHktc2VjdGlvbiAuYWNjb3VudHMtbGlzdC1vcHRpb246aG92ZXIsXG4uaWRlbnRpdHktc2VjdGlvbiAuYWNjb3VudHMtbGlzdC1vcHRpb24uc2VsZWN0ZWQge1xuICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG59XG5cbi8qIGFjY291bnQgZGV0YWlsIHNjcmVlbiAqL1xuXG4uYWNjb3VudC1kZXRhaWwtc2VjdGlvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgZmxleC1kaXJlY3Rpb246IGluaGVyaXQ7XG59XG5cbi5ncm93LXRlbngge1xuICBmbGV4LWdyb3c6IDEwO1xufVxuXG4ubmFtZS1sYWJlbCB7XG59XG5cbi51bmFwcHJvdmVkLXR4LWljb24ge1xuICBoZWlnaHQ6IDE2cHg7XG4gIHdpZHRoOiAxNnB4O1xuICBiYWNrZ3JvdW5kOiByZ2IoNDcsIDE3NCwgMjQ0KTtcbiAgYm9yZGVyLWNvbG9yOiAkc2lsdmVyLWNoYWxpY2U7XG4gIGJvcmRlci1yYWRpdXM6IDEzcHg7XG59XG5cbi5lZGl0LXRleHQge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuLmVkaXRpbmctbGFiZWwge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIG1hcmdpbi1sZWZ0OiA1MHB4O1xuICBtYXJnaW4tYm90dG9tOiAycHg7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgdGV4dC1yZW5kZXJpbmc6IGdlb21ldHJpY1ByZWNpc2lvbjtcbiAgY29sb3I6ICNmNzg2MWM7XG59XG5cbi5uYW1lLWxhYmVsOmhvdmVyIC5lZGl0LXRleHQge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuLyogdHggY29uZmlybSAqL1xuXG4udW5jb25mdHgtc2VjdGlvbiBpbnB1dFt0eXBlPXBhc3N3b3JkXSB7XG4gIGhlaWdodDogMjJweDtcbiAgcGFkZGluZzogMnB4O1xuICBtYXJnaW46IDEycHg7XG4gIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYm9yZGVyOiAycHggc29saWQgI2YzYzgzZTtcbiAgYmFja2dyb3VuZDogI2ZhZjZmMDtcbn1cblxuLyogRXRoZXIgQmFsYW5jZSBXaWRnZXQgKi9cblxuLmV0aGVyLWJhbGFuY2UtYW1vdW50IHtcbiAgY29sb3I6ICNmNzg2MWM7XG59XG5cbi5ldGhlci1iYWxhbmNlLWxhYmVsIHtcbiAgY29sb3I6ICNhYmE5YWE7XG59XG5cbi8qIEluZm8gc2NyZWVuICovXG4uaW5mby1ncmF5IHtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgY29sb3I6ICRzaWx2ZXItY2hhbGljZTtcbn1cblxuLmljb24tc2l6ZSB7XG4gIHdpZHRoOiAyMHB4O1xufVxuXG4uaW5mbyB7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG8sIEFyaWFsO1xuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nLWxlZnQ6IDVweDtcbn1cblxuLyogYnV5IGV0aCB3YXJuaW5nIHNjcmVlbiAqL1xuLmN1c3RvbS1yYWRpb3Mge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLmN1c3RvbS1yYWRpby1zZWxlY3RlZCB7XG4gIHdpZHRoOiAxN3B4O1xuICBoZWlnaHQ6IDE3cHg7XG4gIGJvcmRlcjogc29saWQ7XG4gIGJvcmRlci1zdHlsZTogZG91YmxlO1xuICBib3JkZXItcmFkaXVzOiAxNXB4O1xuICBib3JkZXItd2lkdGg6IDVweDtcbiAgYmFja2dyb3VuZDogcmdiYSgyNDcsIDEzNCwgMjgsIDEpO1xuICBib3JkZXItY29sb3I6ICNmN2Y3Zjc7XG59XG5cbi5jdXN0b20tcmFkaW8taW5hY3RpdmUge1xuICB3aWR0aDogMTRweDtcbiAgaGVpZ2h0OiAxNHB4O1xuICBib3JkZXI6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDFweDtcbiAgYm9yZGVyLXJhZGl1czogMjRweDtcbiAgYm9yZGVyLWNvbG9yOiAkc2lsdmVyLWNoYWxpY2U7XG59XG5cbi5yYWRpby10aXRsZXMge1xuICBjb2xvcjogcmdiYSgyNDcsIDEzNCwgMjgsIDEpO1xufVxuXG4uZXRoLXdhcm5pbmcge1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDQwMG1zIGVhc2UtaW4sIHRyYW5zZm9ybSA0MDBtcyBlYXNlLWluO1xufVxuXG4uYnV5LXN1YnZpZXcge1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDQwMG1zIGVhc2UtaW4sIHRyYW5zZm9ybSA0MDBtcyBlYXNlLWluO1xufVxuXG4uaW5wdXQtY29udGFpbmVyOmhvdmVyIC5lZGl0LXRleHQge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuXG4uYnV5LWlucHV0cyB7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm9yZGVyOiBzb2xpZDtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXdpZHRoOiAuNXB4O1xuICBib3JkZXItcmFkaXVzOiAycHg7XG59XG5cbi5pbnB1dC1jb250YWluZXI6aG92ZXIgLmJ1eS1pbnB1dHMge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICBib3JkZXI6IHNvbGlkO1xuICBib3JkZXItY29sb3I6ICNmNzg2MWM7XG4gIGJvcmRlci13aWR0aDogLjVweDtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xufVxuXG4uYnV5LWlucHV0czpmb2N1cyB7XG4gIGJvcmRlcjogc29saWQ7XG4gIGJvcmRlci1jb2xvcjogI2Y3ODYxYztcbiAgYm9yZGVyLXdpZHRoOiAuNXB4O1xuICBib3JkZXItcmFkaXVzOiAycHg7XG59XG5cbi5hY3RpdmVGb3JtIHtcbiAgYmFja2dyb3VuZDogI2Y3ZjdmNztcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiA4cHggOHB4IDBweCAwcHg7XG4gIHdpZHRoOiA1MCU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZy1ib3R0b206IDRweDtcbn1cblxuLmluYWN0aXZlRm9ybSB7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogOHB4IDhweCAwcHggMHB4O1xuICB3aWR0aDogNTAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBhZGRpbmctYm90dG9tOiA0cHg7XG59XG5cbi5leC1jb2lucyB7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1zaXplOiAzM3B4O1xuICB3aWR0aDogMTE4cHg7XG4gIGhlaWdodDogNDJweDtcbiAgcGFkZGluZzogMXB4O1xuICBjb2xvcjogIzRkNGQ0ZDtcbn1cblxuLm1hcmtldGluZm8ge1xuICBmb250LWZhbWlseTogUm9ib3RvO1xuICBjb2xvcjogJHNpbHZlci1jaGFsaWNlO1xuICBmb250LXNpemU6IDE1cHg7XG4gIGxpbmUtaGVpZ2h0OiAxN3B4O1xufVxuXG4jZnJvbUNvaW46Oi13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbiNjb2luTGlzdCB7XG4gIHdpZHRoOiA0MDBweDtcbiAgaGVpZ2h0OiA1MDBweDtcbiAgb3ZlcmZsb3c6IHNjcm9sbDtcbn1cblxuLmljb24tY29udHJvbCAuZmEtcmVmcmVzaCB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuLmljb24tY29udHJvbDpob3ZlciAuZmEtcmVmcmVzaCB7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG59XG5cbi5pY29uLWNvbnRyb2w6aG92ZXIgLmZhLWNoZXZyb24tcmlnaHQge1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi5pbmFjdGl2ZSB7XG4gIGNvbG9yOiAkc2lsdmVyLWNoYWxpY2U7XG59XG5cbi5pbmFjdGl2ZSBidXR0b24ge1xuICBiYWNrZ3JvdW5kOiAkc2lsdmVyLWNoYWxpY2U7XG4gIGNvbG9yOiAkd2hpdGU7XG59XG5cbi5xci1lbGxpcC1hZGRyZXNzLCAuZWxsaXAtYWRkcmVzcyB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG4ucXItaGVhZGVyIHtcbiAgZm9udC1zaXplOiAyNXB4O1xuICBtYXJnaW4tdG9wOiA0MHB4O1xufVxuXG4ucXItbWVzc2FnZSB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgY29sb3I6ICNmNzg2MWM7XG59XG5cbmRpdi5tZXNzYWdlLWNvbnRhaW5lciA+IGRpdjpmaXJzdC1jaGlsZCB7XG4gIG1hcmdpbi10b3A6IDE4cHg7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgY29sb3I6ICM0ZDRkNGQ7XG59XG5cbi5wb3AtaG92ZXI6aG92ZXIge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG59XG5cbi8qIHN0eWxlbGludC1lbmFibGUgKi9cbiIsIiR3YWxsZXQtYmFsYW5jZS1icmVha3BvaW50OiA4OTBweDtcbiR3YWxsZXQtYmFsYW5jZS1icmVha3BvaW50LXJhbmdlOiBcInNjcmVlbiBhbmQgKG1pbi13aWR0aDogI3skYnJlYWstbGFyZ2V9KSBhbmQgKG1heC13aWR0aDogI3skd2FsbGV0LWJhbGFuY2UtYnJlYWtwb2ludH0pXCI7XG5cbi50b2tlbi1saXN0LWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDIwcHggMjRweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBsaW5lYXIgMjAwbXM7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJHdhbGxldC1iYWxhbmNlLWJnLCAwKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICZfX3Rva2VuLWJhbGFuY2Uge1xuICAgIGZvbnQtc2l6ZTogMTMwJTtcblxuICAgIEBtZWRpYSAjeyR3YWxsZXQtYmFsYW5jZS1icmVha3BvaW50LXJhbmdlfSB7XG4gICAgICBmb250LXNpemU6IDEwNSU7XG4gICAgfVxuICB9XG5cbiAgJl9fZmlhdC1hbW91bnQge1xuICAgIG1hcmdpbi10b3A6IC4yNSU7XG4gICAgZm9udC1zaXplOiAxMDUlO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cbiAgICBAbWVkaWEgI3skd2FsbGV0LWJhbGFuY2UtYnJlYWtwb2ludC1yYW5nZX0ge1xuICAgICAgZm9udC1zaXplOiA5NSU7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhICN7JHdhbGxldC1iYWxhbmNlLWJyZWFrcG9pbnQtcmFuZ2V9IHtcbiAgICBwYWRkaW5nOiAxMCUgNCU7XG4gIH1cblxuICAmLS1hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJHdhbGxldC1iYWxhbmNlLWJnLCAxKTtcbiAgfVxuXG4gICZfX2lkZW50aWNvbiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZGVkZWRlJztcblxuICAgIEBtZWRpYSAjeyR3YWxsZXQtYmFsYW5jZS1icmVha3BvaW50LXJhbmdlfSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDQlO1xuICAgIH1cbiAgfVxuXG4gICZfX2VsbGlwc2lzIHtcbiAgICAvLyBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgLy8gdG9wOiAyMHB4O1xuICAgIC8vIHJpZ2h0OiAyNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiA0NXB4O1xuICB9XG5cbiAgJl9fYmFsYW5jZS13cmFwcGVyIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgfVxufVxuXG4udG9rZW4tbWVudS1kcm9wZG93biB7XG4gIGhlaWdodDogNTVweDtcbiAgd2lkdGg6IDE5MXB4O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsMC44Mik7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDRweCAwIHJnYmEoMCwwLDAsMC41KTtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBtYXJnaW4tdG9wOiAyMHB4O1xuICBtYXJnaW4tbGVmdDogMTA1cHg7XG4gIHotaW5kZXg6IDIwMDA7XG5cbiAgJl9fY2xvc2UtYXJlYSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHotaW5kZXg6IDIxMDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgfVxuXG4gICZfX2NvbnRhaW5lciB7XG4gICAgcGFkZGluZzogMTZweCAzNHB4IDMycHg7XG4gICAgei1pbmRleDogMjIwMDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cblxuICAmX19vcHRpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cblxuICAmX19vcHRpb24ge1xuICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgbGluZS1oZWlnaHQ6IDIxcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG59IiwiLmFkZC10b2tlbiB7XG4gIHdpZHRoOiA0OThweDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDEyO1xuICBmb250LWZhbWlseTogJ0RJTiBOZXh0IExpZ2h0JztcblxuICAmX193cmFwcGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdiYSgkYmxhY2ssIC4wOCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgfVxuXG4gICZfX3RpdGxlLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAzMHB4IDYwcHggMTJweDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdhbGxlcnk7XG4gICAgZmxleDogMCAwIGF1dG87XG4gIH1cblxuICAmX190aXRsZSB7XG4gICAgY29sb3I6ICRzY29ycGlvbjtcbiAgICBmb250LXNpemU6IDIwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDI2cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgfVxuXG4gICZfX2Rlc2NyaXB0aW9uIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICAmX19kZXNjcmlwdGlvbiArICZfX2Rlc2NyaXB0aW9uIHtcbiAgICBtYXJnaW4tdG9wOiAyNHB4O1xuICB9XG5cbiAgJl9fY29uZmlybWF0aW9uLWRlc2NyaXB0aW9uIHtcbiAgICBtYXJnaW46IDEycHggMDtcbiAgfVxuXG4gICZfX2NvbnRlbnQtY29udGFpbmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdhbGxlcnk7XG4gIH1cblxuICAmX19pbnB1dC1jb250YWluZXIge1xuICAgIHBhZGRpbmc6IDExcHggMDtcbiAgICB3aWR0aDogMjYzcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG5cbiAgJl9fc2VhcmNoLWlucHV0LWVycm9yLW1lc3NhZ2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IC0xMHB4O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgY29sb3I6ICRyZWQ7XG4gIH1cblxuICAmX19pbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyOiAycHggc29saWQgJGdhbGxlcnk7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIHBhZGRpbmc6IDVweCAxNXB4O1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBsaW5lLWhlaWdodDogMTlweDtcblxuICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgIGNvbG9yOiAkc2lsdmVyO1xuICAgIH1cbiAgfVxuXG4gICZfX2Zvb3RlcnMge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgJl9fYWRkLWN1c3RvbSB7XG4gICAgY29sb3I6ICRzY29ycGlvbjtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBhZGRpbmc6IDEycHggMDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDUpO1xuICAgIH1cblxuICAgICY6YWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjEpO1xuICAgIH1cblxuICAgIC5mYSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICByaWdodDogMjRweDtcbiAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgIH1cbiAgfVxuXG4gICZfX2FkZC1jdXN0b20tZm9ybSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG4gICAgbWFyZ2luOiA4cHggMCA1MXB4O1xuICB9XG5cbiAgJl9fYWRkLWN1c3RvbS1maWVsZCB7XG4gICAgd2lkdGg6IDI5MHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICYtLWVycm9yIHtcbiAgICAgIC5hZGQtdG9rZW5fX2FkZC1jdXN0b20taW5wdXQge1xuICAgICAgICBib3JkZXItY29sb3I6ICRyZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJl9fYWRkLWN1c3RvbS1lcnJvci1tZXNzYWdlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAtMjFweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGNvbG9yOiAkcmVkO1xuICB9XG5cbiAgJl9fYWRkLWN1c3RvbS1sYWJlbCB7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyMXB4O1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgfVxuXG4gICZfX2FkZC1jdXN0b20taW5wdXQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRzaWx2ZXI7XG4gICAgcGFkZGluZzogNXB4IDE1cHg7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxOXB4O1xuXG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgY29sb3I6ICRzaWx2ZXI7XG4gICAgfVxuICB9XG5cbiAgJl9fYWRkLWN1c3RvbS1maWVsZCArICZfX2FkZC1jdXN0b20tZmllbGQge1xuICAgIG1hcmdpbi10b3A6IDIxcHg7XG4gIH1cblxuICAmX19idXR0b25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgICBtYXJnaW46IDMwcHggMCA1MXB4O1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICB9XG5cbiAgJl9fdG9rZW4taWNvbnMtY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIH1cblxuICAmX190b2tlbi13cmFwcGVyIHtcbiAgICB0cmFuc2l0aW9uOiAyMDBtcyBlYXNlLWluLW91dDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgICBmbGV4OiAwIDAgNDIuNSU7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAxMnB4O1xuICAgIG1hcmdpbjogMi41JTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgkbWFsaWJ1LWJsdWUsIC41KTtcbiAgICB9XG5cbiAgICAmLS1zZWxlY3RlZCB7XG4gICAgICBib3JkZXI6IDJweCBzb2xpZCAkbWFsaWJ1LWJsdWUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAmLS1kaXNhYmxlZCB7XG4gICAgICBvcGFjaXR5OiAuNDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfVxuXG4gICZfX3Rva2VuLWRhdGEge1xuICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gIH1cblxuICAmX190b2tlbi1uYW1lIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDE5cHg7XG4gIH1cblxuICAmX190b2tlbi1zeW1ib2wge1xuICAgIGZvbnQtc2l6ZTogMjJweDtcbiAgICBsaW5lLWhlaWdodDogMjlweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICB9XG5cbiAgJl9fdG9rZW4taWNvbiB7XG4gICAgd2lkdGg6IDYwcHg7XG4gICAgaGVpZ2h0OiA2MHB4O1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCAwIHJnYmEoJGJsYWNrLCAuMjQpO1xuICAgIG1hcmdpbi1yaWdodDogMTJweDtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgfVxuXG4gICZfX3Rva2VuLW1lc3NhZ2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBjb2xvcjogJGNhcmliYmVhbi1ncmVlbjtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDg1cHg7XG4gIH1cblxuICAmX19jb25maXJtYXRpb24tdG9rZW4tbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG5cbiAgICAudG9rZW4tYmFsYW5jZSB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cbiAgICAgICZfX2Ftb3VudCB7XG4gICAgICAgIGNvbG9yOiAkc2NvcnBpb247XG4gICAgICAgIGZvbnQtc2l6ZTogNDNweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDQzcHg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgICAgfVxuXG4gICAgICAmX19zeW1ib2wge1xuICAgICAgICBjb2xvcjogJHNjb3JwaW9uO1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICZfX2NvbmZpcm1hdGlvbi10aXRsZSB7XG4gICAgcGFkZGluZzogMzBweCAxMjBweCAxMnB4O1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGJyZWFrLXNtYWxsKSB7XG4gICAgICBwYWRkaW5nOiAyMHB4IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cblxuICAmX19jb25maXJtYXRpb24tY29udGVudCB7XG4gICAgcGFkZGluZy1ib3R0b206IDYwcHg7XG4gIH1cblxuICAmX19jb25maXJtYXRpb24tdG9rZW4tbGlzdC1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG5cbiAgJl9fY29uZmlybWF0aW9uLXRva2VuLWxpc3QtaXRlbSArICZfX2NvbmZpcm1hdGlvbi10b2tlbi1saXN0LWl0ZW0ge1xuICAgIG1hcmdpbi10b3A6IDMwcHg7XG4gIH1cblxuICAmX19jb25maXJtYXRpb24tdG9rZW4taWNvbiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxOHB4O1xuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGJyZWFrLXNtYWxsKSB7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgJl9fd3JhcHBlciB7XG4gICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICBmbGV4OiAxIDEgYXV0bztcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB9XG5cbiAgICAmX19mb290ZXJzIHtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ2FsbGVyeTtcbiAgICB9XG5cbiAgICAmX190b2tlbi1pY29uIHtcbiAgICAgIHdpZHRoOiA1MHB4O1xuICAgICAgaGVpZ2h0OiA1MHB4O1xuICAgIH1cblxuICAgICZfX3Rva2VuLXN5bWJvbCB7XG4gICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgICB9XG5cbiAgICAmX190b2tlbi1uYW1lIHtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICAgIH1cblxuICAgICZfX2J1dHRvbnMge1xuICAgICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBwYWRkaW5nOiAxMnB4IDA7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGdhbGxlcnk7XG5cbiAgICAgIGJ1dHRvbiB7XG4gICAgICAgIGZsZXg6IDEgMCBhdXRvO1xuICAgICAgICBtYXJnaW46IDAgMTJweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi5jdXJyZW5jeS1kaXNwbGF5IHtcbiAgaGVpZ2h0OiA1NHB4O1xuICB3aWR0aDogMTAwJcOfO1xuICBib3JkZXI6IDFweCBzb2xpZCAkYWx0bztcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gIGNvbG9yOiAkZHVzdHktZ3JheTtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogMzAwO1xuICBwYWRkaW5nOiA4cHggMTBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICZfX3ByaW1hcnktcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG5cbiAgJl9faW5wdXQge1xuICAgIGNvbG9yOiAkc2NvcnBpb247XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgbGluZS1oZWlnaHQ6IDIycHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIG91dGxpbmU6IDAgIWltcG9ydGFudDtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cblxuICAmX19wcmltYXJ5LWN1cnJlbmN5IHtcbiAgICBjb2xvcjogJHNjb3JwaW9uO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgbGluZS1oZWlnaHQ6IDIycHg7XG4gIH1cblxuICAmX19jb252ZXJ0ZWQtcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG5cbiAgJl9fY29udmVydGVkLXZhbHVlLFxuICAmX19jb252ZXJ0ZWQtY3VycmVuY3kge1xuICAgIGNvbG9yOiAkZHVzdHktZ3JheTtcbiAgICBmb250LWZhbWlseTogUm9ib3RvO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBsaW5lLWhlaWdodDogMTJweDtcbiAgfVxuXG4gICZfX2lucHV0LXdyYXBwZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG5cbiAgJl9fY3VycmVuY3ktc3ltYm9sIHtcbiAgICBtYXJnaW4tdG9wOiAxcHg7XG4gIH1cbn0iLCIuYWNjb3VudC1tZW51IHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiAxMDA7XG4gIHRvcDogNThweDtcbiAgd2lkdGg6IDMxMHB4O1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NXB4KSB7XG4gICAgcmlnaHQ6IGNhbGMoKCgxMDB2dyAtIDEwMCUpIC8gMikgKyA4cHgpO1xuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgICByaWdodDogY2FsYygoMTAwdncgLSA4NXZ3KSAvIDIpO1xuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY5cHgpIHtcbiAgICByaWdodDogY2FsYygoMTAwdncgLSA4MHZ3KSAvIDIpO1xuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI4MXB4KSB7XG4gICAgcmlnaHQ6IGNhbGMoKDEwMHZ3IC0gNjV2dykgLyAyKTtcbiAgfVxuXG4gICZfX2ljb24ge1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICZfX2hlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cblxuICAmX19sb2dvdXQtYnV0dG9uIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZHVzdHktZ3JheTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBjb2xvcjogJHdoaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgbGluZS1oZWlnaHQ6IDIzcHg7XG4gICAgcGFkZGluZzogMCAyNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiAyMDA7XG4gIH1cblxuICBpbWcge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgfVxuXG4gICZfX2FjY291bnRzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIG1heC1oZWlnaHQ6IDI0MHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAyMDA7XG5cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NXB4KSB7XG4gICAgICBtYXgtaGVpZ2h0OiAyMTVweDtcbiAgICB9XG5cbiAgICAua2V5cmluZy1sYWJlbCB7XG4gICAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmxhY2s7XG4gICAgICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gICAgfVxuICB9XG5cbiAgJl9fYWNjb3VudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gICAgcGFkZGluZzogMTZweCAxNHB4O1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTc1cHgpIHtcbiAgICAgIHBhZGRpbmc6IDEycHggMTRweDtcbiAgICB9XG4gIH1cblxuICAmX19hY2NvdW50LWluZm8ge1xuICAgIGZsZXg6IDEgMCBhdXRvO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuICAgIHBhZGRpbmctdG9wOiA0cHg7XG4gIH1cblxuICAmX19jaGVjay1tYXJrIHtcbiAgICB3aWR0aDogMTRweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4gICAgZmxleDogMCAwIGF1dG87XG4gIH1cblxuICAmX19jaGVjay1tYXJrLWljb24ge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImltYWdlcy9jaGVjay13aGl0ZS5zdmdcIik7XG4gICAgaGVpZ2h0OiAxOHB4O1xuICAgIHdpZHRoOiAxOHB4O1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICBtYXJnaW46IDNweCAwO1xuICB9XG5cbiAgLmlkZW50aWNvbiB7XG4gICAgbWFyZ2luOiAwIDEycHggMCAwO1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICB9XG5cbiAgJl9fbmFtZSB7XG4gICAgY29sb3I6ICR3aGl0ZTtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgZm9udC13ZWlnaHQ6IDIwMDtcbiAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgfVxuXG4gICZfX2JhbGFuY2Uge1xuICAgIGNvbG9yOiAkZHVzdHktZ3JheTtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDE5cHg7XG4gIH1cblxuICAmX19hY3Rpb24ge1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBsaW5lLWhlaWdodDogMThweDtcbiAgICBmb250LXdlaWdodDogMjAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuIiwiLm1lbnUge1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJhY2tncm91bmQ6IHJnYmEoJGJsYWNrLCAuOCk7XG4gIGJveC1zaGFkb3c6IHJnYmEoJGJsYWNrLCAuMTUpIDAgMnB4IDJweCAycHg7XG4gIG1pbi13aWR0aDogMTUwcHg7XG4gIGNvbG9yOiAkd2hpdGU7XG5cbiAgJl9faXRlbSB7XG4gICAgcGFkZGluZzogMThweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAyMDA7XG4gICAgZm9udC13ZWlnaHQ6IDIwMDtcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NXB4KSB7XG4gICAgICBwYWRkaW5nOiAxNHB4O1xuICAgIH1cblxuICAgICYtLWNsaWNrYWJsZSB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCR3aGl0ZSwgLjA1KTtcbiAgICAgIH1cblxuICAgICAgJjphY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCR3aGl0ZSwgLjEpO1xuICAgICAgfVxuICAgIH1cblxuICAgICZfX2ljb24ge1xuICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDE0cHg7XG4gICAgfVxuXG4gICAgJl9fdGV4dCB7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICBsaW5lLWhlaWdodDogMjFweDtcbiAgICB9XG4gIH1cblxuICAmX19kaXZpZGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2NvcnBpb247XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxcHg7XG4gIH1cblxuICAmX19jbG9zZS1hcmVhIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHotaW5kZXg6IDEwMDtcbiAgfVxufVxuIiwiLmdhcy1zbGlkZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAzMTNweDtcblxuICAmX19pbnB1dCB7XG4gICAgd2lkdGg6IDMxN3B4O1xuICAgIG1hcmdpbi1sZWZ0OiAtMnB4O1xuICAgIHotaW5kZXg6IDI7XG4gIH1cblxuICBpbnB1dFt0eXBlPXJhbmdlXSB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lICFpbXBvcnRhbnQ7XG4gIH1cblxuICBpbnB1dFt0eXBlPXJhbmdlXTo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZSAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogMjZweDtcbiAgICB3aWR0aDogMjZweDtcbiAgICBib3JkZXI6IDJweCBzb2xpZCAjQjhCOEI4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7XG4gICAgYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdiYSgwLDAsMCwwLjA4KTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDEwO1xuICB9XG5cbiAgJl9fYmFyIHtcbiAgICBoZWlnaHQ6IDZweDtcbiAgICB3aWR0aDogMzEzcHg7XG4gICAgYmFja2dyb3VuZDogJGFsdG87XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMTFweDtcbiAgICB6LWluZGV4OiAwO1xuICB9XG5cbiAgJl9fbG93LCAmX19oaWdoIHtcbiAgICBoZWlnaHQ6IDZweDtcbiAgICB3aWR0aDogNDlweDtcbiAgICB6LWluZGV4OiAxO1xuICB9XG5cbiAgJl9fbG93IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3JpbXNvbjtcbiAgfVxuXG4gICZfX2hpZ2gge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjYXJpYmJlYW4tZ3JlZW47XG4gIH1cbn0iLCIuc2V0dGluZ3Mge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuICBoZWlnaHQ6IGF1dG87XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG4uc2V0dGluZ3NfX2hlYWRlciB7XG4gIHBhZGRpbmc6IDI1cHg7XG59XG5cbi5zZXR0aW5nc19fY2xvc2UtYnV0dG9uOjphZnRlciB7XG4gIGNvbnRlbnQ6ICdcXDAwRDcnO1xuICBmb250LXNpemU6IDQwcHg7XG4gIGNvbG9yOiAkZHVzdHktZ3JheTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDI1cHg7XG4gIHJpZ2h0OiAzMHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5zZXR0aW5nc19fZXJyb3Ige1xuICBwYWRkaW5nLWJvdHRvbTogMjBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogJGNyaW1zb247XG59XG5cbi5zZXR0aW5nc19fY29udGVudCB7XG4gIHBhZGRpbmc6IDAgMjVweDtcbn1cblxuLnNldHRpbmdzX19jb250ZW50LXJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIHBhZGRpbmc6IDEwcHggMCAyMHB4O1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NXB4KSB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBwYWRkaW5nOiAxMHB4IDA7XG4gIH1cbn1cblxuLnNldHRpbmdzX19jb250ZW50LWl0ZW0ge1xuICBmbGV4OiAxO1xuICBtaW4td2lkdGg6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHBhZGRpbmc6IDAgNXB4O1xuICBoZWlnaHQ6IDcxcHg7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTc1cHgpIHtcbiAgICBoZWlnaHQ6IGluaXRpYWw7XG4gICAgcGFkZGluZzogNXB4IDA7XG4gIH1cblxuICAmLS13aXRob3V0LWhlaWdodCB7XG4gICAgaGVpZ2h0OiBpbml0aWFsO1xuICB9XG59XG5cbi5zZXR0aW5nc19fY29udGVudC1pdGVtLWNvbCB7XG4gIG1heC13aWR0aDogMzAwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTc1cHgpIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cblxuLnNldHRpbmdzX19jb250ZW50LWRlc2NyaXB0aW9uIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gIHBhZGRpbmctdG9wOiA1cHg7XG59XG5cbi5zZXR0aW5nc19faW5wdXQge1xuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAkYWx0bztcbn1cblxuLnNldHRpbmdzX19pbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG4gIGNvbG9yOiAkZHVzdHktZ3JheTtcbn1cblxuLnNldHRpbmdzX19pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG4gIGNvbG9yOiAkZHVzdHktZ3JheTtcbn1cblxuLnNldHRpbmdzX19pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xuICBmb250LXdlaWdodDogMTAwO1xuICBjb2xvcjogJGR1c3R5LWdyYXk7XG59XG5cbi5zZXR0aW5nc19faW5wdXQ6LW1vei1wbGFjZWhvbGRlciB7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG4gIGNvbG9yOiAkZHVzdHktZ3JheTtcbn1cblxuLnNldHRpbmdzX19wcm92aWRlci13cmFwcGVyIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAkYWx0bztcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBwYWRkaW5nOiAxNXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbn1cblxuLnNldHRpbmdzX19wcm92aWRlci1pY29uIHtcbiAgaGVpZ2h0OiAxMHB4O1xuICB3aWR0aDogMTBweDtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xufVxuXG4uc2V0dGluZ3NfX3JwYy1zYXZlLWJ1dHRvbiB7XG4gIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xuICBwYWRkaW5nOiA1cHg7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNvbG9yOiAkZHVzdHktZ3JheTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uc2V0dGluZ3NfX2NsZWFyLWJ1dHRvbiB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgYm9yZGVyOiAxcHggc29saWQgJGN1cmlvdXMtYmx1ZTtcbiAgY29sb3I6ICRjdXJpb3VzLWJsdWU7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgcGFkZGluZzogMThweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4uc2V0dGluZ3NfX2NsZWFyLWJ1dHRvbi0tcmVkIHtcbiAgYm9yZGVyOiAxcHggc29saWQgJG1vbnpvO1xuICBjb2xvcjogJG1vbnpvO1xufVxuXG4uc2V0dGluZ3NfX2luZm8tbG9nby13cmFwcGVyIHtcbiAgaGVpZ2h0OiA4MHB4O1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuXG4uc2V0dGluZ3NfX2luZm8tbG9nbyB7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbn1cblxuLnNldHRpbmdzX19pbmZvLWl0ZW0ge1xuICBwYWRkaW5nOiAxMHB4IDA7XG59XG5cbi5zZXR0aW5nc19faW5mby1saW5rLWhlYWRlciB7XG4gIHBhZGRpbmctYm90dG9tOiAxNXB4O1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NXB4KSB7XG4gICAgcGFkZGluZy1ib3R0b206IDVweDtcbiAgfVxufVxuXG4uc2V0dGluZ3NfX2luZm8tbGluay1pdGVtIHtcbiAgcGFkZGluZzogMTVweCAwO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NXB4KSB7XG4gICAgcGFkZGluZzogNXB4IDA7XG4gIH1cbn1cblxuLnNldHRpbmdzX19pbmZvLXZlcnNpb24tbnVtYmVyIHtcbiAgcGFkZGluZy10b3A6IDVweDtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBjb2xvcjogJGR1c3R5LWdyYXk7XG59XG5cbi5zZXR0aW5nc19faW5mby1hYm91dCB7XG4gIGNvbG9yOiAkZHVzdHktZ3JheTtcbiAgbWFyZ2luLWJvdHRvbTogMTVweDtcbn1cblxuLnNldHRpbmdzX19pbmZvLWxpbmsge1xuICBjb2xvcjogJGN1cmlvdXMtYmx1ZTtcbn1cblxuLnNldHRpbmdzX19pbmZvLXNlcGFyYXRvciB7XG4gIG1hcmdpbjogMTVweCAwO1xuICB3aWR0aDogODBweDtcbiAgYm9yZGVyLWNvbG9yOiAkYWx0bztcbiAgYm9yZGVyOiBub25lO1xuICBoZWlnaHQ6IDFweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGFsdG87XG4gIGNvbG9yOiAkYWx0bztcbn1cbiIsIi50YWItYmFyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG59XG5cbi50YWItYmFyX190YWIge1xuICBtaW4td2lkdGg6IDA7XG4gIGZsZXg6IDAgMCBhdXRvO1xuICBwYWRkaW5nOiAxNXB4IDI1cHg7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYWx0bztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgZm9udC1zaXplOiAxOHB4O1xufVxuXG4udGFiLWJhcl9fdGFiLS1hY3RpdmUge1xuICBib3JkZXItY29sb3I6ICRibGFjaztcbn1cblxuLnRhYi1iYXJfX2dyb3ctdGFiIHtcbiAgZmxleC1ncm93OiAxO1xufVxuIiwiLnNpbXBsZS1kcm9wZG93biB7XG4gIGhlaWdodDogNTZweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6IDFweCBzb2xpZCAkYWx0bztcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgY29sb3I6ICM0ZDRkNGQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uc2ltcGxlLWRyb3Bkb3duX19jYXJldCB7XG4gIGNvbG9yOiAkc2lsdmVyO1xuICBwYWRkaW5nOiAwIDEwcHg7XG59XG5cbi5zaW1wbGUtZHJvcGRvd25fX3NlbGVjdGVkIHtcbiAgZmxleC1ncm93OiAxO1xuICBwYWRkaW5nOiAwIDE1cHg7XG59XG5cbi5zaW1wbGUtZHJvcGRvd25fX29wdGlvbnMge1xuICB6LWluZGV4OiAxMDUwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGhlaWdodDogMjIwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZDJkOGRkO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogMCAzcHggNnB4IDAgcmdiYSgwLCAwLCAwLCAuMTEpO1xuICBib3gtc2hhZG93OiAwIDNweCA2cHggMCByZ2JhKDAsIDAsIDAsIC4xMSk7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgbGVmdDogMDtcbiAgdG9wOiAxMDAlO1xufVxuXG4uc2ltcGxlLWRyb3Bkb3duX19vcHRpb24ge1xuICBwYWRkaW5nOiAxMHB4O1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRnYWxsZXJ5O1xuICB9XG59XG5cbi5zaW1wbGUtZHJvcGRvd25fX29wdGlvbi0tc2VsZWN0ZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWx0bztcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWx0bztcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gIH1cbn1cblxuLnNpbXBsZS1kcm9wZG93bl9fY2xvc2UtYXJlYSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAxMDAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuIiwiLnJlcXVlc3Qtc2lnbmF0dXJlIHtcbiAgJl9fY29udGFpbmVyIHtcbiAgICB3aWR0aDogMzgwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgICBib3gtc2hhZG93OiAwIDJweCA0cHggMCByZ2JhKDAsMCwwLDAuMDgpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuICAgIHotaW5kZXg6IDI1O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGJyZWFrLXNtYWxsKSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgfVxuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGJyZWFrLWxhcmdlKSB7XG4gICAgICBtYXgtaGVpZ2h0OiA2MjBweDtcbiAgICB9XG4gIH1cblxuICAmX19oZWFkZXIge1xuICAgIGhlaWdodDogNjRweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICB9XG5cbiAgJl9faGVhZGVyLWJhY2tncm91bmQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYXRoZW5zLWdyZXk7XG4gICAgei1pbmRleDogMjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cblxuICAmX19oZWFkZXJfX3RleHQge1xuICAgIGhlaWdodDogMjlweDtcbiAgICB3aWR0aDogMTc5cHg7XG4gICAgY29sb3I6ICM1QjVENjc7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICBmb250LXNpemU6IDIycHg7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICBsaW5lLWhlaWdodDogMjlweDtcbiAgICB6LWluZGV4OiAzO1xuICB9XG5cbiAgJl9faGVhZGVyX190aXAtY29udGFpbmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB9XG5cbiAgJl9faGVhZGVyX190aXAge1xuICAgIGhlaWdodDogMjVweDtcbiAgICB3aWR0aDogMjVweDtcbiAgICBiYWNrZ3JvdW5kOiAkYXRoZW5zLWdyZXk7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IC04cHg7XG4gICAgei1pbmRleDogMTtcbiAgfVxuXG4gICZfX2FjY291bnQtaW5mbyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgbWFyZ2luLXRvcDogMThweDtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICB9XG5cbiAgJl9fYWNjb3VudCB7XG4gICAgY29sb3I6ICRkdXN0eS1ncmF5O1xuICAgIG1hcmdpbi1sZWZ0OiAxN3B4O1xuICB9XG5cbiAgJl9fYWNjb3VudC10ZXh0IHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gIH1cblxuICAmX19iYWxhbmNlIHtcbiAgICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gICAgbWFyZ2luLXJpZ2h0OiAxN3B4O1xuICAgIHdpZHRoOiAxMjRweDtcbiAgfVxuXG4gICZfX2JhbGFuY2UtdGV4dCB7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICB9XG5cbiAgJl9fYmFsYW5jZS12YWx1ZSB7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgbWFyZ2luLXRvcDogMi41cHg7XG4gIH1cblxuICAmX19yZXF1ZXN0LWljb24ge1xuICAgIG1hcmdpbi10b3A6IDI1cHg7XG4gIH1cblxuICAmX19ib2R5IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICBoZWlnaHQ6IDA7XG4gIH1cblxuICAmX19yZXF1ZXN0LWluZm8ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cblxuICAmX19oZWFkbGluZSB7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIHdpZHRoOiAyNDBweDtcbiAgICBjb2xvcjogJHR1bmRvcmE7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLXRvcDogMjBweDtcbiAgfVxuXG4gICZfX25vdGljZSxcbiAgJl9fd2FybmluZyB7XG4gICAgZm9udC1mYW1pbHk6IFwiQXZlbmlyIE5leHRcIjtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDE5cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi10b3A6IDQxcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTFweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gICZfX25vdGljZSB7XG4gICAgY29sb3I6ICRkdXN0eS1ncmF5O1xuICB9XG5cbiAgJl9fd2FybmluZyB7XG4gICAgY29sb3I6ICRjcmltc29uO1xuICB9XG5cbiAgJl9fcm93cyB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRnZXlzZXI7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgfVxuXG4gICZfX3JvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgfVxuXG4gICZfX3Jvdy10aXRsZSB7XG4gICAgd2lkdGg6IDgwcHg7XG4gICAgY29sb3I6ICRkdXN0eS1ncmF5O1xuICAgIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyMnB4O1xuICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgbWFyZ2luLWxlZnQ6IDE4cHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAmX19yb3ctdmFsdWUge1xuICAgIGNvbG9yOiAkc2NvcnBpb247XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDE5cHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2QyZDhkZDtcbiAgICBwYWRkaW5nOiA2cHggMThweCAxNXB4O1xuICB9XG5cbiAgJl9fZm9vdGVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1ldmVubHk7XG4gICAgZm9udC1zaXplOiAyMnB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGdleXNlcjtcblxuICAgICZfX2NhbmNlbC1idXR0b24sXG4gICAgJl9fc2lnbi1idXR0b24ge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGZsZXg6IDEgMCBhdXRvO1xuICAgICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgICBoZWlnaHQ6IDU1cHg7XG4gICAgICBsaW5lLWhlaWdodDogMzJweDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICBtYXgtd2lkdGg6IDE2MnB4O1xuICAgICAgbWFyZ2luOiAxMnB4O1xuICAgIH1cblxuICAgICZfX2NhbmNlbC1idXR0b24ge1xuICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRkdXN0eS1ncmF5O1xuICAgICAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gICAgfVxuXG4gICAgJl9fc2lnbi1idXR0b24ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNhcmliYmVhbi1ncmVlbjtcbiAgICAgIGJvcmRlci13aWR0aDogMDtcbiAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICBtYXJnaW4tbGVmdDogNnB4O1xuICAgIH1cbiAgfVxufSIsIi5hY2NvdW50LWRyb3Bkb3duLW1pbmkge1xuICBoZWlnaHQ6IDIycHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgd2lkdGg6IDEyNHB4O1xuXG4gICZfX2Nsb3NlLWFyZWEge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuXG4gICZfX2xpc3Qge1xuICAgIHotaW5kZXg6IDEwNTA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGhlaWdodDogMTgwcHg7XG4gICAgd2lkdGg6IDk2cHhweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ2V5c2VyO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgYm94LXNoYWRvdzogMCAzcHggNnB4IDAgcmdiYSgwICwwICwwICwuMTEpO1xuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgfVxuXG4gIC5hY2NvdW50LWxpc3QtaXRlbSB7XG4gICAgbWFyZ2luLXRvcDogNnB4O1xuICB9XG5cbiAgLmFjY291bnQtbGlzdC1pdGVtX19hY2NvdW50LW5hbWUge1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB3aWR0aDogODBweDtcbiAgfVxuXG4gIC5hY2NvdW50LWxpc3QtaXRlbV9fdG9wLXJvdyB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG5cbiAgLmFjY291bnQtbGlzdC1pdGVtX19pY29uIHtcbiAgICBwb3NpdGlvbjogaW5pdGlhbDtcbiAgfVxufSIsIi5lZGl0YWJsZS1sYWJlbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgJl9fdmFsdWUge1xuICAgIG1heC13aWR0aDogMjUwcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB9XG5cbiAgJl9faW5wdXQge1xuICAgIHdpZHRoOiAyNTBweDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRhbHRvO1xuXG4gICAgJi0tZXJyb3Ige1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJG1vbnpvO1xuICAgIH1cbiAgfVxuXG4gICZfX2ljb24td3JhcHBlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAgIGxlZnQ6IDEwMCU7XG4gIH1cblxuICAmX19pY29uIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgY29sb3I6ICRkdXN0eS1ncmF5O1xuICB9XG59XG4iLCIvKlxuICBUcnVtcHNcbiAqL1xuXG4vLyBUcmFuc2l0aW9uc1xuXG4vKiB1bml2ZXJzYWwgKi9cbi5hcHAtcHJpbWFyeSAubWFpbi1lbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi8qIGNlbnRlciBwb3NpdGlvbiAqL1xuLmFwcC1wcmltYXJ5LmZyb20tcmlnaHQgLm1haW4tZW50ZXItYWN0aXZlLFxuLmFwcC1wcmltYXJ5LmZyb20tbGVmdCAubWFpbi1lbnRlci1hY3RpdmUge1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDMwMG1zIGVhc2UtaW47XG59XG5cbi8qIGV4aXRlZCBwb3NpdGlvbnMgKi9cbi5hcHAtcHJpbWFyeS5mcm9tLWxlZnQgLm1haW4tbGVhdmUtYWN0aXZlIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDM2MHB4KTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDMwMG1zIGVhc2UtaW47XG59XG5cbi5hcHAtcHJpbWFyeS5mcm9tLXJpZ2h0IC5tYWluLWxlYXZlLWFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMzYwcHgpO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMzAwbXMgZWFzZS1pbjtcbn1cblxuLnNpZGViYXIuZnJvbS1sZWZ0IHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zMjBweCk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAzMDBtcyBlYXNlLWluO1xufVxuXG4vKiBsb2FkZXIgdHJhbnNpdGlvbnMgKi9cbi5sb2FkZXItZW50ZXIsXG4ubG9hZGVyLWxlYXZlLWFjdGl2ZSB7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMTUwIGVhc2UtaW47XG59XG5cbi5sb2FkZXItZW50ZXItYWN0aXZlLFxuLmxvYWRlci1sZWF2ZSB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMTUwIGVhc2UtaW47XG59XG5cbi8qIGVudGVyaW5nIHBvc2l0aW9ucyAqL1xuLmFwcC1wcmltYXJ5LmZyb20tcmlnaHQgLm1haW4tZW50ZXI6bm90KC5tYWluLWVudGVyLWFjdGl2ZSkge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMzYwcHgpO1xufVxuXG4uYXBwLXByaW1hcnkuZnJvbS1sZWZ0IC5tYWluLWVudGVyOm5vdCgubWFpbi1lbnRlci1hY3RpdmUpIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zNjBweCk7XG59XG5cbmkuZmEuZmEtcXVlc3Rpb24tY2lyY2xlLmZhLWxnLm1lbnUtaWNvbiB7XG4gIGZvbnQtc2l6ZTogMThweDtcbn1cblxuLy8gVGhpcyB0ZXh0IGlzIGNvbnRhaW5lZCBpbnNpZGUgYSBkaXYuXG4vLyBJRCBuZWVkZWQgdG8gb3ZlcnJpZGUgdXNlciBhZ2VudCBzdHlsZXNoZWV0LlxuLy8gU2VlIGNvbXBvbmVudHMvbW9kYWwuc2Nzc1xuXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSAqL1xuI2J1eS1tb2RhbC1jb250ZW50LWZvb3Rlci10ZXh0IHtcbiAgZm9udC1mYW1pbHk6ICdESU4gT1QnO1xuICBmb250LXNpemU6IDE2cHg7XG59XG4vKiBzdHlsZWxpbnQtZW5hYmxlICovXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7OztHQUtHO0FFTEg7O0dBRUc7QUFTSDs7O0dBR0c7QUErQkg7O0dBRUc7QUFXSDs7Ozs7OztHQU9HO0FBRUg7O0dBRUc7QUNyRUgs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QUc7QUFDSCxBQUFBLElBQUk7QUFDSixBQUFBLE1BQU07QUFDTixBQUFBLE1BQU07QUFDTixBQUFBLE1BQU07QUFDTixBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLENBQUM7QUFDRCxBQUFBLFVBQVU7QUFDVixBQUFBLEdBQUc7QUFDSCxBQUFBLENBQUM7QUFDRCxBQUFBLElBQUk7QUFDSixBQUFBLE9BQU87QUFDUCxBQUFBLE9BQU87QUFDUCxBQUFBLEdBQUc7QUFDSCxBQUFBLElBQUk7QUFDSixBQUFBLElBQUk7QUFDSixBQUFBLEdBQUc7QUFDSCxBQUFBLEdBQUc7QUFDSCxBQUFBLEVBQUU7QUFDRixBQUFBLEdBQUc7QUFDSCxBQUFBLEdBQUc7QUFDSCxBQUFBLEdBQUc7QUFDSCxBQUFBLENBQUM7QUFDRCxBQUFBLENBQUM7QUFDRCxBQUFBLElBQUk7QUFDSixBQUFBLEtBQUs7QUFDTCxBQUFBLE1BQU07QUFDTixBQUFBLE1BQU07QUFDTixBQUFBLEdBQUc7QUFDSCxBQUFBLEdBQUc7QUFDSCxBQUFBLEVBQUU7QUFDRixBQUFBLEdBQUc7QUFDSCxBQUFBLENBQUM7QUFDRCxBQUFBLENBQUM7QUFDRCxBQUFBLENBQUM7QUFDRCxBQUFBLE1BQU07QUFDTixBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLFFBQVE7QUFDUixBQUFBLElBQUk7QUFDSixBQUFBLEtBQUs7QUFDTCxBQUFBLE1BQU07QUFDTixBQUFBLEtBQUs7QUFDTCxBQUFBLE9BQU87QUFDUCxBQUFBLEtBQUs7QUFDTCxBQUFBLEtBQUs7QUFDTCxBQUFBLEtBQUs7QUFDTCxBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLE9BQU87QUFDUCxBQUFBLEtB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 */ diff --git a/old-ui/app/css/reset.css b/old-ui/app/css/reset.css deleted file mode 100644 index 9ce89e8bc..000000000 --- a/old-ui/app/css/reset.css +++ /dev/null @@ -1,48 +0,0 @@ -/* http://meyerweb.com/eric/tools/css/reset/ - v2.0 | 20110126 - License: none (public domain) -*/ - -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td, -article, aside, canvas, details, embed, -figure, figcaption, footer, header, hgroup, -menu, nav, output, ruby, section, summary, -time, mark, audio, video { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; -} -/* HTML5 display-role reset for older browsers */ -article, aside, details, figcaption, figure, -footer, header, hgroup, menu, nav, section { - display: block; -} -body { - line-height: 1; -} -ol, ul { - list-style: none; -} -blockquote, q { - quotes: none; -} -blockquote:before, blockquote:after, -q:before, q:after { - content: ''; - content: none; -} -table { - border-collapse: collapse; - border-spacing: 0; -}
\ No newline at end of file diff --git a/old-ui/app/css/transitions.css b/old-ui/app/css/transitions.css deleted file mode 100644 index 393a944f9..000000000 --- a/old-ui/app/css/transitions.css +++ /dev/null @@ -1,42 +0,0 @@ -/* universal */ -.app-primary .main-enter { - position: absolute; - width: 100%; -} - -/* center position */ -.app-primary.from-right .main-enter-active, -.app-primary.from-left .main-enter-active { - overflow-x: hidden; - transform: translateX(0px); - transition: transform 300ms ease-in; -} - -/* exited positions */ -.app-primary.from-left .main-leave-active { - transform: translateX(360px); - transition: transform 300ms ease-in; -} -.app-primary.from-right .main-leave-active { - transform: translateX(-360px); - transition: transform 300ms ease-in; -} - -/* loader transitions */ -.loader-enter, .loader-leave-active { - opacity: 0.0; - transition: opacity 150 ease-in; -} -.loader-enter-active, .loader-leave { - opacity: 1.0; - transition: opacity 150 ease-in; -} - -/* entering positions */ -.app-primary.from-right .main-enter:not(.main-enter-active) { - transform: translateX(360px); -} -.app-primary.from-left .main-enter:not(.main-enter-active) { - transform: translateX(-360px); -} - diff --git a/old-ui/app/first-time/init-menu.js b/old-ui/app/first-time/init-menu.js deleted file mode 100644 index 4f1d5d186..000000000 --- a/old-ui/app/first-time/init-menu.js +++ /dev/null @@ -1,179 +0,0 @@ -const inherits = require('util').inherits -const EventEmitter = require('events').EventEmitter -const Component = require('react').Component -const connect = require('react-redux').connect -const h = require('react-hyperscript') -const Mascot = require('../components/mascot') -const actions = require('../../../ui/app/actions') -const Tooltip = require('../components/tooltip') -const getCaretCoordinates = require('textarea-caret') - -module.exports = connect(mapStateToProps)(InitializeMenuScreen) - -inherits(InitializeMenuScreen, Component) -function InitializeMenuScreen () { - Component.call(this) - this.animationEventEmitter = new EventEmitter() -} - -function mapStateToProps (state) { - return { - // state from plugin - currentView: state.appState.currentView, - warning: state.appState.warning, - } -} - -InitializeMenuScreen.prototype.render = function () { - var state = this.props - - switch (state.currentView.name) { - - default: - return this.renderMenu(state) - - } -} - -// InitializeMenuScreen.prototype.componentDidMount = function(){ -// document.getElementById('password-box').focus() -// } - -InitializeMenuScreen.prototype.renderMenu = function (state) { - return ( - - h('.initialize-screen.flex-column.flex-center.flex-grow', [ - - h(Mascot, { - animationEventEmitter: this.animationEventEmitter, - }), - - h('h1', { - style: { - fontSize: '1.3em', - textTransform: 'uppercase', - color: '#7F8082', - marginBottom: 10, - }, - }, 'MetaMask'), - - - h('div', [ - h('h3', { - style: { - fontSize: '0.8em', - color: '#7F8082', - display: 'inline', - }, - }, 'Encrypt your new DEN'), - - h(Tooltip, { - title: 'Your DEN is your password-encrypted storage within MetaMask.', - }, [ - h('i.fa.fa-question-circle.pointer', { - style: { - fontSize: '18px', - position: 'relative', - color: 'rgb(247, 134, 28)', - top: '2px', - marginLeft: '4px', - }, - }), - ]), - ]), - - h('span.in-progress-notification', state.warning), - - // password - h('input.large-input.letter-spacey', { - type: 'password', - id: 'password-box', - placeholder: 'New Password (min 8 chars)', - onInput: this.inputChanged.bind(this), - style: { - width: 260, - marginTop: 12, - }, - }), - - // confirm password - h('input.large-input.letter-spacey', { - type: 'password', - id: 'password-box-confirm', - placeholder: 'Confirm Password', - onKeyPress: this.createVaultOnEnter.bind(this), - onInput: this.inputChanged.bind(this), - style: { - width: 260, - marginTop: 16, - }, - }), - - - h('button.primary', { - onClick: this.createNewVaultAndKeychain.bind(this), - style: { - margin: 12, - }, - }, 'Create'), - - h('.flex-row.flex-center.flex-grow', [ - h('p.pointer', { - onClick: this.showRestoreVault.bind(this), - style: { - fontSize: '0.8em', - color: 'rgb(247, 134, 28)', - textDecoration: 'underline', - }, - }, 'Import Existing DEN'), - ]), - - ]) - ) -} - -InitializeMenuScreen.prototype.createVaultOnEnter = function (event) { - if (event.key === 'Enter') { - event.preventDefault() - this.createNewVaultAndKeychain() - } -} - -InitializeMenuScreen.prototype.componentDidMount = function () { - document.getElementById('password-box').focus() -} - -InitializeMenuScreen.prototype.showRestoreVault = function () { - this.props.dispatch(actions.showRestoreVault()) -} - -InitializeMenuScreen.prototype.createNewVaultAndKeychain = function () { - var passwordBox = document.getElementById('password-box') - var password = passwordBox.value - var passwordConfirmBox = document.getElementById('password-box-confirm') - var passwordConfirm = passwordConfirmBox.value - - if (password.length < 8) { - this.warning = 'password not long enough' - this.props.dispatch(actions.displayWarning(this.warning)) - return - } - if (password !== passwordConfirm) { - this.warning = 'passwords don\'t match' - this.props.dispatch(actions.displayWarning(this.warning)) - return - } - - this.props.dispatch(actions.createNewVaultAndKeychain(password)) -} - -InitializeMenuScreen.prototype.inputChanged = function (event) { - // tell mascot to look at page action - var element = event.target - var boundingRect = element.getBoundingClientRect() - var coordinates = getCaretCoordinates(element, element.selectionEnd) - this.animationEventEmitter.emit('point', { - x: boundingRect.left + coordinates.left - element.scrollLeft, - y: boundingRect.top + coordinates.top - element.scrollTop, - }) -} diff --git a/old-ui/app/img/identicon-tardigrade.png b/old-ui/app/img/identicon-tardigrade.png Binary files differdeleted file mode 100644 index 1742a32b8..000000000 --- a/old-ui/app/img/identicon-tardigrade.png +++ /dev/null diff --git a/old-ui/app/img/identicon-walrus.png b/old-ui/app/img/identicon-walrus.png Binary files differdeleted file mode 100644 index d58fae912..000000000 --- a/old-ui/app/img/identicon-walrus.png +++ /dev/null diff --git a/old-ui/app/info.js b/old-ui/app/info.js deleted file mode 100644 index 936d270da..000000000 --- a/old-ui/app/info.js +++ /dev/null @@ -1,154 +0,0 @@ -const inherits = require('util').inherits -const Component = require('react').Component -const h = require('react-hyperscript') -const connect = require('react-redux').connect -const actions = require('../../ui/app/actions') - -module.exports = connect(mapStateToProps)(InfoScreen) - -function mapStateToProps (state) { - return {} -} - -inherits(InfoScreen, Component) -function InfoScreen () { - Component.call(this) -} - -InfoScreen.prototype.render = function () { - const state = this.props - const version = global.platform.getVersion() - - return ( - h('.flex-column.flex-grow', { - style: { - maxWidth: '400px', - }, - }, [ - - // subtitle and nav - h('.section-title.flex-row.flex-center', [ - h('i.fa.fa-arrow-left.fa-lg.cursor-pointer', { - onClick: (event) => { - state.dispatch(actions.goHome()) - }, - }), - h('h2.page-subtitle', 'Info'), - ]), - - // main view - h('.flex-column.flex-justify-center.flex-grow.select-none', [ - h('.flex-space-around', { - style: { - padding: '20px', - }, - }, [ - // current version number - - h('.info.info-gray', [ - h('div', 'Metamask'), - h('div', { - style: { - marginBottom: '10px', - }, - }, `Version: ${version}`), - ]), - - h('div', { - style: { - marginBottom: '5px', - }}, - [ - h('div', [ - h('a', { - href: 'https://metamask.io/privacy.html', - target: '_blank', - onClick: (event) => { this.navigateTo(event.target.href) }, - }, [ - h('div.info', 'Privacy Policy'), - ]), - ]), - h('div', [ - h('a', { - href: 'https://metamask.io/terms.html', - target: '_blank', - onClick: (event) => { this.navigateTo(event.target.href) }, - }, [ - h('div.info', 'Terms of Use'), - ]), - ]), - h('div', [ - h('a', { - href: 'https://metamask.io/attributions.html', - target: '_blank', - onClick: (event) => { this.navigateTo(event.target.href) }, - }, [ - h('div.info', 'Attributions'), - ]), - ]), - ] - ), - - h('hr', { - style: { - margin: '10px 0 ', - width: '7em', - }, - }), - - h('div', { - style: { - paddingLeft: '30px', - }}, - [ - h('div.fa.fa-support', [ - h('a.info', { - href: 'https://support.metamask.io', - target: '_blank', - }, 'Visit our Support Center'), - ]), - - h('div', [ - h('a', { - href: 'https://metamask.io/', - target: '_blank', - }, [ - h('img.icon-size', { - src: 'images/icon-128.png', - style: { - // IE6-9 - filter: 'grayscale(100%)', - // Microsoft Edge and Firefox 35+ - WebkitFilter: 'grayscale(100%)', - }, - }), - h('div.info', 'Visit our web site'), - ]), - ]), - - h('div', [ - h('.fa.fa-twitter', [ - h('a.info', { - href: 'https://twitter.com/metamask_io', - target: '_blank', - }, 'Follow us on Twitter'), - ]), - ]), - - h('div.fa.fa-envelope', [ - h('a.info', { - target: '_blank', - href: 'mailto:help@metamask.io?subject=Feedback', - }, 'Email us!'), - ]), - ]), - ]), - ]), - ]) - ) -} - -InfoScreen.prototype.navigateTo = function (url) { - global.platform.openWindow({ url }) -} - diff --git a/old-ui/app/infura-conversion.json b/old-ui/app/infura-conversion.json deleted file mode 100644 index 9a96fe069..000000000 --- a/old-ui/app/infura-conversion.json +++ /dev/null @@ -1,653 +0,0 @@ -{ - "objects": [ - { - "symbol": "ethaud", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "aud", - "name": "Australian Dollar" - } - }, - { - "symbol": "ethhkd", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "hkd", - "name": "Hong Kong Dollar" - } - }, - { - "symbol": "ethsgd", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "sgd", - "name": "Singapore Dollar" - } - }, - { - "symbol": "ethidr", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "idr", - "name": "Indonesian Rupiah" - } - }, - { - "symbol": "ethphp", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "php", - "name": "Philippine Peso" - } - }, - { - "symbol": "eth1st", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "1st", - "name": "FirstBlood" - } - }, - { - "symbol": "ethadt", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "adt", - "name": "adToken" - } - }, - { - "symbol": "ethadx", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "adx", - "name": "AdEx" - } - }, - { - "symbol": "ethant", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "ant", - "name": "Aragon" - } - }, - { - "symbol": "ethbat", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "bat", - "name": "Basic Attention Token" - } - }, - { - "symbol": "ethbnt", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "bnt", - "name": "Bancor" - } - }, - { - "symbol": "ethbtc", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "btc", - "name": "Bitcoin" - } - }, - { - "symbol": "ethcad", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "cad", - "name": "Canadian Dollar" - } - }, - { - "symbol": "ethcfi", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "cfi", - "name": "Cofound.it" - } - }, - { - "symbol": "ethcrb", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "crb", - "name": "CreditBit" - } - }, - { - "symbol": "ethcvc", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "cvc", - "name": "Civic" - } - }, - { - "symbol": "ethdash", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "dash", - "name": "Dash" - } - }, - { - "symbol": "ethdgd", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "dgd", - "name": "DigixDAO" - } - }, - { - "symbol": "ethetc", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "etc", - "name": "Ethereum Classic" - } - }, - { - "symbol": "etheur", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "eur", - "name": "Euro" - } - }, - { - "symbol": "ethfun", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "fun", - "name": "FunFair" - } - }, - { - "symbol": "ethgbp", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "gbp", - "name": "Pound Sterling" - } - }, - { - "symbol": "ethgno", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "gno", - "name": "Gnosis" - } - }, - { - "symbol": "ethgnt", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "gnt", - "name": "Golem" - } - }, - { - "symbol": "ethgup", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "gup", - "name": "Matchpool" - } - }, - { - "symbol": "ethhmq", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "hmq", - "name": "Humaniq" - } - }, - { - "symbol": "ethjpy", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "jpy", - "name": "Japanese Yen" - } - }, - { - "symbol": "ethlgd", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "lgd", - "name": "Legends Room" - } - }, - { - "symbol": "ethlsk", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "lsk", - "name": "Lisk" - } - }, - { - "symbol": "ethltc", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "ltc", - "name": "Litecoin" - } - }, - { - "symbol": "ethlun", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "lun", - "name": "Lunyr" - } - }, - { - "symbol": "ethmco", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "mco", - "name": "Monaco" - } - }, - { - "symbol": "ethmtl", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "mtl", - "name": "Metal" - } - }, - { - "symbol": "ethmyst", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "myst", - "name": "Mysterium" - } - }, - { - "symbol": "ethnmr", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "nmr", - "name": "Numeraire" - } - }, - { - "symbol": "ethomg", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "omg", - "name": "OmiseGO" - } - }, - { - "symbol": "ethpay", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "pay", - "name": "TenX" - } - }, - { - "symbol": "ethptoy", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "ptoy", - "name": "Patientory" - } - }, - { - "symbol": "ethqrl", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "qrl", - "name": "Quantum-Resistant Ledger" - } - }, - { - "symbol": "ethqtum", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "qtum", - "name": "Qtum" - } - }, - { - "symbol": "ethrep", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "rep", - "name": "Augur" - } - }, - { - "symbol": "ethrlc", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "rlc", - "name": "iEx.ec" - } - }, - { - "symbol": "ethrub", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "rub", - "name": "Russian Ruble" - } - }, - { - "symbol": "ethsc", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "sc", - "name": "Siacoin" - } - }, - { - "symbol": "ethsngls", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "sngls", - "name": "SingularDTV" - } - }, - { - "symbol": "ethsnt", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "snt", - "name": "Status" - } - }, - { - "symbol": "ethsteem", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "steem", - "name": "Steem" - } - }, - { - "symbol": "ethstorj", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "storj", - "name": "Storj" - } - }, - { - "symbol": "ethtime", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "time", - "name": "ChronoBank" - } - }, - { - "symbol": "ethtkn", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "tkn", - "name": "TokenCard" - } - }, - { - "symbol": "ethtrst", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "trst", - "name": "WeTrust" - } - }, - { - "symbol": "ethuah", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "uah", - "name": "Ukrainian Hryvnia" - } - }, - { - "symbol": "ethusd", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "usd", - "name": "United States Dollar" - } - }, - { - "symbol": "ethwings", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "wings", - "name": "Wings" - } - }, - { - "symbol": "ethxem", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "xem", - "name": "NEM" - } - }, - { - "symbol": "ethxlm", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "xlm", - "name": "Stellar Lumen" - } - }, - { - "symbol": "ethxmr", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "xmr", - "name": "Monero" - } - }, - { - "symbol": "ethxrp", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "xrp", - "name": "Ripple" - } - }, - { - "symbol": "ethzec", - "base": { - "code": "eth", - "name": "Ethereum" - }, - "quote": { - "code": "zec", - "name": "Zcash" - } - } - ] -} diff --git a/old-ui/app/keychains/hd/create-vault-complete.js b/old-ui/app/keychains/hd/create-vault-complete.js deleted file mode 100644 index 736e922b7..000000000 --- a/old-ui/app/keychains/hd/create-vault-complete.js +++ /dev/null @@ -1,91 +0,0 @@ -const inherits = require('util').inherits -const Component = require('react').Component -const connect = require('react-redux').connect -const h = require('react-hyperscript') -const actions = require('../../../../ui/app/actions') -const exportAsFile = require('../../util').exportAsFile - -module.exports = connect(mapStateToProps)(CreateVaultCompleteScreen) - -inherits(CreateVaultCompleteScreen, Component) -function CreateVaultCompleteScreen () { - Component.call(this) -} - -function mapStateToProps (state) { - return { - seed: state.appState.currentView.seedWords, - cachedSeed: state.metamask.seedWords, - } -} - -CreateVaultCompleteScreen.prototype.render = function () { - var state = this.props - var seed = state.seed || state.cachedSeed || '' - - return ( - - h('.initialize-screen.flex-column.flex-center.flex-grow', [ - - // // subtitle and nav - // h('.section-title.flex-row.flex-center', [ - // h('h2.page-subtitle', 'Vault Created'), - // ]), - - h('h3.flex-center.text-transform-uppercase', { - style: { - background: '#EBEBEB', - color: '#AEAEAE', - marginTop: 36, - marginBottom: 8, - width: '100%', - fontSize: '20px', - padding: 6, - }, - }, [ - 'Vault Created', - ]), - - h('div', { - style: { - fontSize: '1em', - marginTop: '10px', - textAlign: 'center', - }, - }, [ - h('span.error', 'These 12 words are the only way to restore your MetaMask accounts.\nSave them somewhere safe and secret.'), - ]), - - h('textarea.twelve-word-phrase', { - readOnly: true, - value: seed, - }), - - h('button.primary', { - onClick: () => this.confirmSeedWords() - .then(account => this.showAccountDetail(account)), - style: { - margin: '24px', - fontSize: '0.9em', - marginBottom: '10px', - }, - }, 'I\'ve copied it somewhere safe'), - - h('button.primary', { - onClick: () => exportAsFile(`MetaMask Seed Words`, seed), - style: { - margin: '10px', - fontSize: '0.9em', - }, - }, 'Save Seed Words As File'), - ]) - ) -} - -CreateVaultCompleteScreen.prototype.confirmSeedWords = function () { - return this.props.dispatch(actions.confirmSeedWords()) -} - -CreateVaultCompleteScreen.prototype.showAccountDetail = function (account) { - return this.props.dispatch(actions.showAccountDetail(account)) -} diff --git a/old-ui/app/keychains/hd/recover-seed/confirmation.js b/old-ui/app/keychains/hd/recover-seed/confirmation.js deleted file mode 100644 index eb0298a09..000000000 --- a/old-ui/app/keychains/hd/recover-seed/confirmation.js +++ /dev/null @@ -1,121 +0,0 @@ -const inherits = require('util').inherits - -const Component = require('react').Component -const connect = require('react-redux').connect -const h = require('react-hyperscript') -const actions = require('../../../../../ui/app/actions') - -module.exports = connect(mapStateToProps)(RevealSeedConfirmation) - -inherits(RevealSeedConfirmation, Component) -function RevealSeedConfirmation () { - Component.call(this) -} - -function mapStateToProps (state) { - return { - warning: state.appState.warning, - } -} - -RevealSeedConfirmation.prototype.render = function () { - const props = this.props - - return ( - - h('.initialize-screen.flex-column.flex-center.flex-grow', { - style: { maxWidth: '420px' }, - }, [ - - h('h3.flex-center.text-transform-uppercase', { - style: { - background: '#EBEBEB', - color: '#AEAEAE', - marginBottom: 24, - width: '100%', - fontSize: '20px', - padding: 6, - }, - }, [ - 'Reveal Seed Words', - ]), - - h('.div', { - style: { - display: 'flex', - flexDirection: 'column', - padding: '20px', - justifyContent: 'center', - }, - }, [ - - h('h4', 'Do not recover your seed words in a public place! These words can be used to steal all your accounts.'), - - // confirmation - h('input.large-input.letter-spacey', { - type: 'password', - id: 'password-box', - placeholder: 'Enter your password to confirm', - onKeyPress: this.checkConfirmation.bind(this), - style: { - width: 260, - marginTop: '12px', - }, - }), - - h('.flex-row.flex-start', { - style: { - marginTop: 30, - width: '50%', - }, - }, [ - // cancel - h('button.primary', { - onClick: this.goHome.bind(this), - }, 'CANCEL'), - - // submit - h('button.primary', { - style: { marginLeft: '10px' }, - onClick: this.revealSeedWords.bind(this), - }, 'OK'), - - ]), - - (props.warning) && ( - h('span.error', { - style: { - margin: '20px', - }, - }, props.warning.split('-')) - ), - - props.inProgress && ( - h('span.in-progress-notification', 'Generating Seed...') - ), - ]), - ]) - ) -} - -RevealSeedConfirmation.prototype.componentDidMount = function () { - document.getElementById('password-box').focus() -} - -RevealSeedConfirmation.prototype.goHome = function () { - this.props.dispatch(actions.showConfigPage(false)) -} - -// create vault - -RevealSeedConfirmation.prototype.checkConfirmation = function (event) { - if (event.key === 'Enter') { - event.preventDefault() - this.revealSeedWords() - } -} - -RevealSeedConfirmation.prototype.revealSeedWords = function () { - var password = document.getElementById('password-box').value - this.props.dispatch(actions.requestRevealSeed(password)) -} diff --git a/old-ui/app/keychains/hd/restore-vault.js b/old-ui/app/keychains/hd/restore-vault.js deleted file mode 100644 index e9486a28d..000000000 --- a/old-ui/app/keychains/hd/restore-vault.js +++ /dev/null @@ -1,162 +0,0 @@ -const inherits = require('util').inherits -const PersistentForm = require('../../../lib/persistent-form') -const connect = require('react-redux').connect -const h = require('react-hyperscript') -const actions = require('../../../../ui/app/actions') - -module.exports = connect(mapStateToProps)(RestoreVaultScreen) - -inherits(RestoreVaultScreen, PersistentForm) -function RestoreVaultScreen () { - PersistentForm.call(this) -} - -function mapStateToProps (state) { - return { - warning: state.appState.warning, - forgottenPassword: state.appState.forgottenPassword, - } -} - -RestoreVaultScreen.prototype.render = function () { - var state = this.props - this.persistentFormParentId = 'restore-vault-form' - - return ( - - h('.initialize-screen.flex-column.flex-center.flex-grow', [ - - h('h3.flex-center.text-transform-uppercase', { - style: { - background: '#EBEBEB', - color: '#AEAEAE', - marginBottom: 24, - width: '100%', - fontSize: '20px', - padding: 6, - }, - }, [ - 'Restore Vault', - ]), - - // wallet seed entry - h('h3', 'Wallet Seed'), - h('textarea.twelve-word-phrase.letter-spacey', { - placeholder: 'Enter your secret twelve word phrase here to restore your vault.', - }), - - // password - h('input.large-input.letter-spacey', { - type: 'password', - id: 'password-box', - placeholder: 'New Password (min 8 chars)', - dataset: { - persistentFormId: 'password', - }, - style: { - width: 260, - marginTop: 12, - }, - }), - - // confirm password - h('input.large-input.letter-spacey', { - type: 'password', - id: 'password-box-confirm', - placeholder: 'Confirm Password', - onKeyPress: this.createOnEnter.bind(this), - dataset: { - persistentFormId: 'password-confirmation', - }, - style: { - width: 260, - marginTop: 16, - }, - }), - - (state.warning) && ( - h('span.error.in-progress-notification', state.warning) - ), - - // submit - - h('.flex-row.flex-space-between', { - style: { - marginTop: 30, - width: '50%', - }, - }, [ - - // cancel - h('button.primary', { - onClick: this.showInitializeMenu.bind(this), - }, 'CANCEL'), - - // submit - h('button.primary', { - onClick: this.createNewVaultAndRestore.bind(this), - }, 'OK'), - - ]), - ]) - - ) -} - -RestoreVaultScreen.prototype.showInitializeMenu = function () { - if (this.props.forgottenPassword) { - this.props.dispatch(actions.backToUnlockView()) - } else { - this.props.dispatch(actions.showInitializeMenu()) - } -} - -RestoreVaultScreen.prototype.createOnEnter = function (event) { - if (event.key === 'Enter') { - this.createNewVaultAndRestore() - } -} - -RestoreVaultScreen.prototype.createNewVaultAndRestore = function () { - // check password - var passwordBox = document.getElementById('password-box') - var password = passwordBox.value - var passwordConfirmBox = document.getElementById('password-box-confirm') - var passwordConfirm = passwordConfirmBox.value - if (password.length < 8) { - this.warning = 'Password not long enough' - - this.props.dispatch(actions.displayWarning(this.warning)) - return - } - if (password !== passwordConfirm) { - this.warning = 'Passwords don\'t match' - this.props.dispatch(actions.displayWarning(this.warning)) - return - } - // check seed - var seedBox = document.querySelector('textarea.twelve-word-phrase') - var seed = seedBox.value.trim() - - // true if the string has more than a space between words. - if (seed.split(' ').length > 1) { - this.warning = 'there can only be a space between words' - this.props.dispatch(actions.displayWarning(this.warning)) - return - } - // true if seed contains a character that is not between a-z or a space - if (!seed.match(/^[a-z ]+$/)) { - this.warning = 'seed words only have lowercase characters' - this.props.dispatch(actions.displayWarning(this.warning)) - return - } - if (seed.split(' ').length !== 12) { - this.warning = 'seed phrases are 12 words long' - this.props.dispatch(actions.displayWarning(this.warning)) - return - } - // submit - this.warning = null - this.props.dispatch(actions.displayWarning(this.warning)) - this.props.dispatch(actions.createNewVaultAndRestore(password, seed)) -} diff --git a/old-ui/app/new-keychain.js b/old-ui/app/new-keychain.js deleted file mode 100644 index cc9633166..000000000 --- a/old-ui/app/new-keychain.js +++ /dev/null @@ -1,29 +0,0 @@ -const inherits = require('util').inherits -const Component = require('react').Component -const h = require('react-hyperscript') -const connect = require('react-redux').connect - -module.exports = connect(mapStateToProps)(NewKeychain) - -function mapStateToProps (state) { - return {} -} - -inherits(NewKeychain, Component) -function NewKeychain () { - Component.call(this) -} - -NewKeychain.prototype.render = function () { - // const props = this.props - - return ( - h('div', { - style: { - background: 'blue', - }, - }, [ - h('h1', `Here's a list!!!!`), - ]) - ) -} diff --git a/old-ui/app/new-ui-annoucement.js b/old-ui/app/new-ui-annoucement.js deleted file mode 100644 index 59b126279..000000000 --- a/old-ui/app/new-ui-annoucement.js +++ /dev/null @@ -1,85 +0,0 @@ -const PropTypes = require('prop-types') -const {PureComponent} = require('react') -const h = require('react-hyperscript') -const actions = require('../../ui/app/actions') - -module.exports = class NewUiAnnouncement extends PureComponent { - static propTypes = { - dispatch: PropTypes.func.isRequired, - }; - - close = async () => { - await this.props.dispatch(actions.setFeatureFlag('skipAnnounceBetaUI', true)) - } - - switchToNewUi = async () => { - const flag = 'betaUI' - const enabled = true - await this.props.dispatch(actions.setFeatureFlag( - flag, - enabled, - )) - await this.close() - global.platform.openExtensionInBrowser() - } - - render () { - return ( - h('div.new-ui-announcement', [ - h('section.new-ui-announcement__announcement-header', [ - h('h1', 'Announcement'), - h('a.close', { - onClick: this.close, - }, '×'), - ]), - h('section.new-ui-announcement__body', [ - h('h1', 'A New Version of MetaMask'), - h('p', [ - "We're excited to announce a brand-new version of MetaMask with enhanced features and functionality.", - ]), - h('div.updates-list', [ - h('h2', 'Updates include'), - h('ul', [ - h('li', 'New user interface'), - h('li', 'Full-screen mode'), - h('li', 'Better token support'), - h('li', 'Better gas controls'), - h('li', 'Advanced features for developers'), - h('li', 'New confirmation screens'), - h('li', 'And more!'), - ]), - ]), - h('p', [ - 'You can still use the current version of MetaMask. The new version is still in beta, ' + - 'however we encourage you to try it out as we transition into this exciting new update.', - h('span', { - dangerouslySetInnerHTML: { - __html: ' ', - }, - }), - h('a', { - href: 'https://medium.com/metamask/74dba32cc7f7', - onClick ({target}) { - const url = target.href - global.platform.openWindow({ - url, - }) - }, - }, [ - 'Learn more.', - ]), - ]), - ]), - h('section.new-ui-announcement__footer', [ - h('h1', 'Ready to try the new MetaMask?'), - h('button.positive', { - onClick: this.switchToNewUi, - }, 'Try it now'), - h('button.negative', { - onClick: this.close, - }, 'No thanks, maybe later'), - ]), - ]) - ) - } -} diff --git a/old-ui/app/provider-approval.js b/old-ui/app/provider-approval.js deleted file mode 100644 index da128f147..000000000 --- a/old-ui/app/provider-approval.js +++ /dev/null @@ -1,65 +0,0 @@ -import PropTypes from 'prop-types' -import React, { Component } from 'react' -import { approveProviderRequest, rejectProviderRequest } from '../../ui/app/actions' -import { connect } from 'react-redux' -class ProviderApproval extends Component { - render () { - const { approveProviderRequest, origin, tabID, rejectProviderRequest } = this.props - return ( - <div className="flex-column flex-grow"> - <style dangerouslySetInnerHTML={{__html: ` - .provider_approval_actions { - display: flex; - justify-content: flex-end; - margin: 14px 25px; - } - .provider_approval_actions button { - margin-left: 10px; - text-transform: uppercase; - } - .provider_approval_content { - padding: 0 25px; - } - .provider_approval_origin { - font-weight: bold; - margin: 14px 0; - } - `}} /> - <div className="section-title flex-row flex-center"> - <i - className="fa fa-arrow-left fa-lg cursor-pointer" - onClick={() => { rejectProviderRequest(tabID) }} /> - <h2 className="page-subtitle">Web3 API Request</h2> - </div> - <div className="provider_approval_content"> - {"The domain listed below is requesting access to the Ethereum blockchain and to view your current account. Always double check that you're on the correct site before approving access."} - <div className="provider_approval_origin">{origin}</div> - </div> - <div className="provider_approval_actions"> - <button - className="btn-green" - onClick={() => { approveProviderRequest(tabID) }}>APPROVE</button> - <button - className="cancel btn-red" - onClick={() => { rejectProviderRequest(tabID) }}>REJECT</button> - </div> - </div> - ) - } -} - -ProviderApproval.propTypes = { - approveProviderRequest: PropTypes.func, - origin: PropTypes.string, - tabID: PropTypes.string, - rejectProviderRequest: PropTypes.func, -} - -function mapDispatchToProps (dispatch) { - return { - approveProviderRequest: tabID => dispatch(approveProviderRequest(tabID)), - rejectProviderRequest: tabID => dispatch(rejectProviderRequest(tabID)), - } -} - -module.exports = connect(null, mapDispatchToProps)(ProviderApproval) diff --git a/old-ui/app/send.js b/old-ui/app/send.js deleted file mode 100644 index b40910236..000000000 --- a/old-ui/app/send.js +++ /dev/null @@ -1,309 +0,0 @@ -const inherits = require('util').inherits -const PersistentForm = require('../lib/persistent-form') -const h = require('react-hyperscript') -const connect = require('react-redux').connect -const Identicon = require('./components/identicon') -const actions = require('../../ui/app/actions') -const util = require('./util') -const numericBalance = require('./util').numericBalance -const addressSummary = require('./util').addressSummary -const isHex = require('./util').isHex -const EthBalance = require('./components/eth-balance') -const EnsInput = require('./components/ens-input') -const ethUtil = require('ethereumjs-util') -module.exports = connect(mapStateToProps)(SendTransactionScreen) - -function mapStateToProps (state) { - var result = { - address: state.metamask.selectedAddress, - accounts: state.metamask.accounts, - identities: state.metamask.identities, - warning: state.appState.warning, - network: state.metamask.network, - addressBook: state.metamask.addressBook, - conversionRate: state.metamask.conversionRate, - currentCurrency: state.metamask.currentCurrency, - } - - result.error = result.warning && result.warning.split('.')[0] - - result.account = result.accounts[result.address] - result.identity = result.identities[result.address] - result.balance = result.account ? numericBalance(result.account.balance) : null - - return result -} - -inherits(SendTransactionScreen, PersistentForm) -function SendTransactionScreen () { - PersistentForm.call(this) -} - -SendTransactionScreen.prototype.render = function () { - this.persistentFormParentId = 'send-tx-form' - - const props = this.props - const { - address, - account, - identity, - network, - identities, - addressBook, - conversionRate, - currentCurrency, - } = props - - return ( - - h('.send-screen.flex-column.flex-grow', [ - - // - // Sender Profile - // - - h('.account-data-subsection.flex-row.flex-grow', { - style: { - margin: '0 20px', - }, - }, [ - - // header - identicon + nav - h('.flex-row.flex-space-between', { - style: { - marginTop: '15px', - }, - }, [ - // back button - h('i.fa.fa-arrow-left.fa-lg.cursor-pointer.color-orange', { - onClick: this.back.bind(this), - }), - - // large identicon - h('.identicon-wrapper.flex-column.flex-center.select-none', [ - h(Identicon, { - diameter: 62, - address: address, - }), - ]), - - // invisible place holder - h('i.fa.fa-users.fa-lg.invisible', { - style: { - marginTop: '28px', - }, - }), - - ]), - - // account label - - h('.flex-column', { - style: { - marginTop: '10px', - alignItems: 'flex-start', - }, - }, [ - h('h2.font-medium.color-forest.flex-center', { - style: { - paddingTop: '8px', - marginBottom: '8px', - }, - }, identity && identity.name), - - // address and getter actions - h('.flex-row.flex-center', { - style: { - marginBottom: '8px', - }, - }, [ - - h('div', { - style: { - lineHeight: '16px', - }, - }, addressSummary(address)), - - ]), - - // balance - h('.flex-row.flex-center', [ - - h(EthBalance, { - value: account && account.balance, - conversionRate, - currentCurrency, - }), - - ]), - ]), - ]), - - // - // Required Fields - // - - h('h3.flex-center.text-transform-uppercase', { - style: { - background: '#EBEBEB', - color: '#AEAEAE', - marginTop: '15px', - marginBottom: '16px', - }, - }, [ - 'Send Transaction', - ]), - - // error message - props.error && h('span.error.flex-center', props.error), - - // 'to' field - h('section.flex-row.flex-center', [ - h(EnsInput, { - name: 'address', - placeholder: 'Recipient Address', - onChange: this.recipientDidChange.bind(this), - network, - identities, - addressBook, - }), - ]), - - // 'amount' and send button - h('section.flex-row.flex-center', [ - - h('input.large-input', { - name: 'amount', - placeholder: 'Amount', - type: 'number', - style: { - marginRight: '6px', - }, - dataset: { - persistentFormId: 'tx-amount', - }, - }), - - h('button.primary', { - onClick: this.onSubmit.bind(this), - style: { - textTransform: 'uppercase', - }, - }, 'Next'), - - ]), - - // - // Optional Fields - // - h('h3.flex-center.text-transform-uppercase', { - style: { - background: '#EBEBEB', - color: '#AEAEAE', - marginTop: '16px', - marginBottom: '16px', - }, - }, [ - 'Transaction Data (optional)', - ]), - - // 'data' field - h('section.flex-column.flex-center', [ - h('input.large-input', { - name: 'txData', - placeholder: '0x01234', - style: { - width: '100%', - resize: 'none', - }, - dataset: { - persistentFormId: 'tx-data', - }, - }), - ]), - ]) - ) -} - -SendTransactionScreen.prototype.navigateToAccounts = function (event) { - event.stopPropagation() - this.props.dispatch(actions.showAccountsPage()) -} - -SendTransactionScreen.prototype.back = function () { - var address = this.props.address - this.props.dispatch(actions.backToAccountDetail(address)) -} - -SendTransactionScreen.prototype.recipientDidChange = function (recipient, nickname) { - this.setState({ - recipient: recipient, - nickname: nickname, - }) -} - -SendTransactionScreen.prototype.onSubmit = function () { - const state = this.state || {} - const recipient = state.recipient || document.querySelector('input[name="address"]').value.replace(/^[.\s]+|[.\s]+$/g, '') - const nickname = state.nickname || ' ' - const input = document.querySelector('input[name="amount"]').value - const parts = input.split('') - - let message - - if (isNaN(input) || input === '') { - message = 'Invalid ether value.' - return this.props.dispatch(actions.displayWarning(message)) - } - - if (parts[1]) { - var decimal = parts[1] - if (decimal.length > 18) { - message = 'Ether amount is too precise.' - return this.props.dispatch(actions.displayWarning(message)) - } - } - - const value = util.normalizeEthStringToWei(input) - const txData = document.querySelector('input[name="txData"]').value - const balance = this.props.balance - - if (value.gt(balance)) { - message = 'Insufficient funds.' - return this.props.dispatch(actions.displayWarning(message)) - } - - if (input < 0) { - message = 'Can not send negative amounts of ETH.' - return this.props.dispatch(actions.displayWarning(message)) - } - - if ((util.isInvalidChecksumAddress(recipient))) { - message = 'Recipient address checksum is invalid.' - return this.props.dispatch(actions.displayWarning(message)) - } - - if ((!util.isValidAddress(recipient) && !txData) || (!recipient && !txData)) { - message = 'Recipient address is invalid.' - return this.props.dispatch(actions.displayWarning(message)) - } - - if (!isHex(ethUtil.stripHexPrefix(txData)) && txData) { - message = 'Transaction data must be hex string.' - return this.props.dispatch(actions.displayWarning(message)) - } - - this.props.dispatch(actions.hideWarning()) - - this.props.dispatch(actions.addToAddressBook(recipient, nickname)) - - var txParams = { - from: this.props.address, - value: '0x' + value.toString(16), - } - - if (recipient) txParams.to = ethUtil.addHexPrefix(recipient) - if (txData) txParams.data = txData - - this.props.dispatch(actions.signTx(txParams)) -} diff --git a/old-ui/app/settings.js b/old-ui/app/settings.js deleted file mode 100644 index 8df37c555..000000000 --- a/old-ui/app/settings.js +++ /dev/null @@ -1,59 +0,0 @@ -const inherits = require('util').inherits -const Component = require('react').Component -const h = require('react-hyperscript') -const connect = require('react-redux').connect -const actions = require('../../ui/app/actions') - -module.exports = connect(mapStateToProps)(AppSettingsPage) - -function mapStateToProps (state) { - return {} -} - -inherits(AppSettingsPage, Component) -function AppSettingsPage () { - Component.call(this) -} - -AppSettingsPage.prototype.render = function () { - return ( - - h('.account-detail-section.flex-column.flex-grow', [ - - // subtitle and nav - h('.flex-row.flex-center', [ - h('i.fa.fa-arrow-left.fa-lg.cursor-pointer', { - onClick: this.navigateToAccounts.bind(this), - }), - h('h2.page-subtitle', 'Settings'), - ]), - - h('label', { - htmlFor: 'settings-rpc-endpoint', - }, 'RPC Endpoint:'), - h('input', { - type: 'url', - id: 'settings-rpc-endpoint', - onKeyPress: this.onKeyPress.bind(this), - }), - - ]) - - ) -} - -AppSettingsPage.prototype.componentDidMount = function () { - document.querySelector('input').focus() -} - -AppSettingsPage.prototype.onKeyPress = function (event) { - // get submit event - if (event.key === 'Enter') { - // this.submitPassword(event) - } -} - -AppSettingsPage.prototype.navigateToAccounts = function (event) { - event.stopPropagation() - this.props.dispatch(actions.showAccountsPage()) -} diff --git a/old-ui/app/template.js b/old-ui/app/template.js deleted file mode 100644 index d15b30fd2..000000000 --- a/old-ui/app/template.js +++ /dev/null @@ -1,30 +0,0 @@ -const inherits = require('util').inherits -const Component = require('react').Component -const h = require('react-hyperscript') -const connect = require('react-redux').connect - -module.exports = connect(mapStateToProps)(COMPONENTNAME) - -function mapStateToProps (state) { - return {} -} - -inherits(COMPONENTNAME, Component) -function COMPONENTNAME () { - Component.call(this) -} - -COMPONENTNAME.prototype.render = function () { - const props = this.props - - return ( - h('div', { - style: { - background: 'blue', - }, - }, [ - `Hello, ${props.sender}`, - ]) - ) -} - diff --git a/old-ui/app/unlock.js b/old-ui/app/unlock.js deleted file mode 100644 index 7bf4ad29f..000000000 --- a/old-ui/app/unlock.js +++ /dev/null @@ -1,122 +0,0 @@ -const inherits = require('util').inherits -const Component = require('react').Component -const h = require('react-hyperscript') -const connect = require('react-redux').connect -const actions = require('../../ui/app/actions') -const getCaretCoordinates = require('textarea-caret') -const EventEmitter = require('events').EventEmitter - -const Mascot = require('./components/mascot') - -module.exports = connect(mapStateToProps)(UnlockScreen) - -inherits(UnlockScreen, Component) -function UnlockScreen () { - Component.call(this) - this.animationEventEmitter = new EventEmitter() -} - -function mapStateToProps (state) { - return { - warning: state.appState.warning, - } -} - -UnlockScreen.prototype.render = function () { - const state = this.props - const warning = state.warning - return ( - h('.flex-column', { - style: { - width: 'inherit', - }, - }, [ - h('.unlock-screen.flex-column.flex-center.flex-grow', [ - - h(Mascot, { - animationEventEmitter: this.animationEventEmitter, - }), - - h('h1', { - style: { - fontSize: '1.4em', - textTransform: 'uppercase', - color: '#7F8082', - }, - }, 'MetaMask'), - - h('input.large-input', { - type: 'password', - id: 'password-box', - placeholder: 'enter password', - style: { - - }, - onKeyPress: this.onKeyPress.bind(this), - onInput: this.inputChanged.bind(this), - }), - - h('.error', { - style: { - display: warning ? 'block' : 'none', - padding: '0 20px', - textAlign: 'center', - }, - }, warning), - - h('button.primary.cursor-pointer', { - onClick: this.onSubmit.bind(this), - style: { - margin: 10, - }, - }, 'Log In'), - ]), - - h('.flex-row.flex-center.flex-grow', [ - h('p.pointer', { - onClick: () => this.props.dispatch(actions.forgotPassword()), - style: { - fontSize: '0.8em', - color: 'rgb(247, 134, 28)', - textDecoration: 'underline', - }, - }, 'Restore from seed phrase'), - ]), - ]) - ) -} - -UnlockScreen.prototype.componentDidMount = function () { - document.getElementById('password-box').focus() -} - -UnlockScreen.prototype.onSubmit = function (event) { - const input = document.getElementById('password-box') - const password = input.value - this.props.dispatch(actions.tryUnlockMetamask(password)) -} - -UnlockScreen.prototype.onKeyPress = function (event) { - if (event.key === 'Enter') { - this.submitPassword(event) - } -} - -UnlockScreen.prototype.submitPassword = function (event) { - var element = event.target - var password = element.value - // reset input - element.value = '' - this.props.dispatch(actions.tryUnlockMetamask(password)) -} - -UnlockScreen.prototype.inputChanged = function (event) { - // tell mascot to look at page action - var element = event.target - var boundingRect = element.getBoundingClientRect() - var coordinates = getCaretCoordinates(element, element.selectionEnd) - this.animationEventEmitter.emit('point', { - x: boundingRect.left + coordinates.left - element.scrollLeft, - y: boundingRect.top + coordinates.top - element.scrollTop, - }) -} diff --git a/old-ui/app/util.js b/old-ui/app/util.js deleted file mode 100644 index 40e79b88c..000000000 --- a/old-ui/app/util.js +++ /dev/null @@ -1,241 +0,0 @@ -const ethUtil = require('ethereumjs-util') - -var valueTable = { - wei: '1000000000000000000', - kwei: '1000000000000000', - mwei: '1000000000000', - gwei: '1000000000', - szabo: '1000000', - finney: '1000', - ether: '1', - kether: '0.001', - mether: '0.000001', - gether: '0.000000001', - tether: '0.000000000001', -} -var bnTable = {} -for (var currency in valueTable) { - bnTable[currency] = new ethUtil.BN(valueTable[currency], 10) -} - -module.exports = { - valuesFor: valuesFor, - addressSummary: addressSummary, - miniAddressSummary: miniAddressSummary, - isAllOneCase: isAllOneCase, - isValidAddress: isValidAddress, - numericBalance: numericBalance, - parseBalance: parseBalance, - formatBalance: formatBalance, - generateBalanceObject: generateBalanceObject, - dataSize: dataSize, - readableDate: readableDate, - normalizeToWei: normalizeToWei, - normalizeEthStringToWei: normalizeEthStringToWei, - normalizeNumberToWei: normalizeNumberToWei, - valueTable: valueTable, - bnTable: bnTable, - isHex: isHex, - exportAsFile: exportAsFile, - isInvalidChecksumAddress, -} - -function valuesFor (obj) { - if (!obj) return [] - return Object.keys(obj) - .map(function (key) { return obj[key] }) -} - -function addressSummary (address, firstSegLength = 10, lastSegLength = 4, includeHex = true) { - if (!address) return '' - let checked = ethUtil.toChecksumAddress(address) - if (!includeHex) { - checked = ethUtil.stripHexPrefix(checked) - } - return checked ? checked.slice(0, firstSegLength) + '...' + checked.slice(checked.length - lastSegLength) : '...' -} - -function miniAddressSummary (address) { - if (!address) return '' - var checked = ethUtil.toChecksumAddress(address) - return checked ? checked.slice(0, 4) + '...' + checked.slice(-4) : '...' -} - -function isValidAddress (address) { - var prefixed = ethUtil.addHexPrefix(address) - if (address === '0x0000000000000000000000000000000000000000') return false - return (isAllOneCase(prefixed) && ethUtil.isValidAddress(prefixed)) || ethUtil.isValidChecksumAddress(prefixed) -} - -function isInvalidChecksumAddress (address) { - var prefixed = ethUtil.addHexPrefix(address) - if (address === '0x0000000000000000000000000000000000000000') return false - return !isAllOneCase(prefixed) && !ethUtil.isValidChecksumAddress(prefixed) && ethUtil.isValidAddress(prefixed) -} - -function isAllOneCase (address) { - if (!address) return true - var lower = address.toLowerCase() - var upper = address.toUpperCase() - return address === lower || address === upper -} - -// Takes wei Hex, returns wei BN, even if input is null -function numericBalance (balance) { - if (!balance) return new ethUtil.BN(0, 16) - var stripped = ethUtil.stripHexPrefix(balance) - return new ethUtil.BN(stripped, 16) -} - -// Takes hex, returns [beforeDecimal, afterDecimal] -function parseBalance (balance) { - var beforeDecimal, afterDecimal - const wei = numericBalance(balance) - var weiString = wei.toString() - const trailingZeros = /0+$/ - - beforeDecimal = weiString.length > 18 ? weiString.slice(0, weiString.length - 18) : '0' - afterDecimal = ('000000000000000000' + wei).slice(-18).replace(trailingZeros, '') - if (afterDecimal === '') { afterDecimal = '0' } - return [beforeDecimal, afterDecimal] -} - -// Takes wei hex, returns an object with three properties. -// Its "formatted" property is what we generally use to render values. -function formatBalance (balance, decimalsToKeep, needsParse = true, ticker = 'ETH') { - var parsed = needsParse ? parseBalance(balance) : balance.split('.') - var beforeDecimal = parsed[0] - var afterDecimal = parsed[1] - var formatted = 'None' - if (decimalsToKeep === undefined) { - if (beforeDecimal === '0') { - if (afterDecimal !== '0') { - var sigFigs = afterDecimal.match(/^0*(.{2})/) // default: grabs 2 most significant digits - if (sigFigs) { afterDecimal = sigFigs[0] } - formatted = '0.' + afterDecimal + ` ${ticker}` - } - } else { - formatted = beforeDecimal + '.' + afterDecimal.slice(0, 3) + ` ${ticker}` - } - } else { - afterDecimal += Array(decimalsToKeep).join('0') - formatted = beforeDecimal + '.' + afterDecimal.slice(0, decimalsToKeep) + ` ${ticker}` - } - return formatted -} - - -function generateBalanceObject (formattedBalance, decimalsToKeep = 1) { - var balance = formattedBalance.split(' ')[0] - var label = formattedBalance.split(' ')[1] - var beforeDecimal = balance.split('.')[0] - var afterDecimal = balance.split('.')[1] - var shortBalance = shortenBalance(balance, decimalsToKeep) - - if (beforeDecimal === '0' && afterDecimal.substr(0, 5) === '00000') { - // eslint-disable-next-line eqeqeq - if (afterDecimal == 0) { - balance = '0' - } else { - balance = '<1.0e-5' - } - } else if (beforeDecimal !== '0') { - balance = `${beforeDecimal}.${afterDecimal.slice(0, decimalsToKeep)}` - } - - return { balance, label, shortBalance } -} - -function shortenBalance (balance, decimalsToKeep = 1) { - var truncatedValue - var convertedBalance = parseFloat(balance) - if (convertedBalance > 1000000) { - truncatedValue = (balance / 1000000).toFixed(decimalsToKeep) - return `${truncatedValue}m` - } else if (convertedBalance > 1000) { - truncatedValue = (balance / 1000).toFixed(decimalsToKeep) - return `${truncatedValue}k` - } else if (convertedBalance === 0) { - return '0' - } else if (convertedBalance < 0.001) { - return '<0.001' - } else if (convertedBalance < 1) { - var stringBalance = convertedBalance.toString() - if (stringBalance.split('.')[1].length > 3) { - return convertedBalance.toFixed(3) - } else { - return stringBalance - } - } else { - return convertedBalance.toFixed(decimalsToKeep) - } -} - -function dataSize (data) { - var size = data ? ethUtil.stripHexPrefix(data).length : 0 - return size + ' bytes' -} - -// Takes a BN and an ethereum currency name, -// returns a BN in wei -function normalizeToWei (amount, currency) { - try { - return amount.mul(bnTable.wei).div(bnTable[currency]) - } catch (e) {} - return amount -} - -function normalizeEthStringToWei (str) { - const parts = str.split('.') - let eth = new ethUtil.BN(parts[0], 10).mul(bnTable.wei) - if (parts[1]) { - var decimal = parts[1] - while (decimal.length < 18) { - decimal += '0' - } - const decimalBN = new ethUtil.BN(decimal, 10) - eth = eth.add(decimalBN) - } - return eth -} - -var multiple = new ethUtil.BN('10000', 10) -function normalizeNumberToWei (n, currency) { - var enlarged = n * 10000 - var amount = new ethUtil.BN(String(enlarged), 10) - return normalizeToWei(amount, currency).div(multiple) -} - -function readableDate (ms) { - var date = new Date(ms) - var month = date.getMonth() - var day = date.getDate() - var year = date.getFullYear() - var hours = date.getHours() - var minutes = '0' + date.getMinutes() - var seconds = '0' + date.getSeconds() - - var dateStr = `${month}/${day}/${year}` - var time = `${hours}:${minutes.substr(-2)}:${seconds.substr(-2)}` - return `${dateStr} ${time}` -} - -function isHex (str) { - return Boolean(str.match(/^(0x)?[0-9a-fA-F]+$/)) -} - -function exportAsFile (filename, data) { - // source: https://stackoverflow.com/a/33542499 by Ludovic Feltz - const blob = new Blob([data], {type: 'text/csv'}) - if (window.navigator.msSaveOrOpenBlob) { - window.navigator.msSaveBlob(blob, filename) - } else { - const elem = window.document.createElement('a') - elem.target = '_blank' - elem.href = window.URL.createObjectURL(blob) - elem.download = filename - document.body.appendChild(elem) - elem.click() - document.body.removeChild(elem) - } -} diff --git a/old-ui/css.js b/old-ui/css.js deleted file mode 100644 index 043363cd7..000000000 --- a/old-ui/css.js +++ /dev/null @@ -1,29 +0,0 @@ -const fs = require('fs') -const path = require('path') - -module.exports = bundleCss - -var cssFiles = { - 'fonts.css': fs.readFileSync(path.join(__dirname, '/app/css/fonts.css'), 'utf8'), - 'reset.css': fs.readFileSync(path.join(__dirname, '/app/css/reset.css'), 'utf8'), - 'lib.css': fs.readFileSync(path.join(__dirname, '/app/css/lib.css'), 'utf8'), - 'index.css': fs.readFileSync(path.join(__dirname, '/app/css/index.css'), 'utf8'), - 'transitions.css': fs.readFileSync(path.join(__dirname, '/app/css/transitions.css'), 'utf8'), - 'react-tooltip-component.css': fs.readFileSync(path.join(__dirname, '..', 'node_modules', 'react-tooltip-component', 'dist', 'react-tooltip-component.css'), 'utf8'), - 'react-css': fs.readFileSync(path.join(__dirname, '..', 'node_modules', 'react-select', 'dist', 'react-select.css'), 'utf8'), -} - -function bundleCss () { - var cssBundle = Object.keys(cssFiles).reduce(function (bundle, fileName) { - var fileContent = cssFiles[fileName] - var output = String() - - output += '/*========== ' + fileName + ' ==========*/\n\n' - output += fileContent - output += '\n\n' - - return bundle + output - }, String()) - - return cssBundle -} diff --git a/old-ui/design/00-metamask-SignIn.jpg b/old-ui/design/00-metamask-SignIn.jpg Binary files differdeleted file mode 100644 index 2becdb032..000000000 --- a/old-ui/design/00-metamask-SignIn.jpg +++ /dev/null diff --git a/old-ui/design/01-metamask-SelectAcc.jpg b/old-ui/design/01-metamask-SelectAcc.jpg Binary files differdeleted file mode 100644 index 239091a98..000000000 --- a/old-ui/design/01-metamask-SelectAcc.jpg +++ /dev/null diff --git a/old-ui/design/02-metamask-AccDetails.jpg b/old-ui/design/02-metamask-AccDetails.jpg Binary files differdeleted file mode 100644 index d7d408ffc..000000000 --- a/old-ui/design/02-metamask-AccDetails.jpg +++ /dev/null diff --git a/old-ui/design/02a-metamask-AccDetails-OverToken.jpg b/old-ui/design/02a-metamask-AccDetails-OverToken.jpg Binary files differdeleted file mode 100644 index f26ff31e8..000000000 --- a/old-ui/design/02a-metamask-AccDetails-OverToken.jpg +++ /dev/null diff --git a/old-ui/design/02a-metamask-AccDetails-OverTransaction.jpg b/old-ui/design/02a-metamask-AccDetails-OverTransaction.jpg Binary files differdeleted file mode 100644 index 8a06be6b9..000000000 --- a/old-ui/design/02a-metamask-AccDetails-OverTransaction.jpg +++ /dev/null diff --git a/old-ui/design/02a-metamask-AccDetails.jpg b/old-ui/design/02a-metamask-AccDetails.jpg Binary files differdeleted file mode 100644 index c37e0f539..000000000 --- a/old-ui/design/02a-metamask-AccDetails.jpg +++ /dev/null diff --git a/old-ui/design/02b-metamask-AccDetails-Send.jpg b/old-ui/design/02b-metamask-AccDetails-Send.jpg Binary files differdeleted file mode 100644 index 10f2d27fd..000000000 --- a/old-ui/design/02b-metamask-AccDetails-Send.jpg +++ /dev/null diff --git a/old-ui/design/03-metamask-Qr.jpg b/old-ui/design/03-metamask-Qr.jpg Binary files differdeleted file mode 100644 index 9c09de42f..000000000 --- a/old-ui/design/03-metamask-Qr.jpg +++ /dev/null diff --git a/old-ui/design/05-metamask-Menu.jpg b/old-ui/design/05-metamask-Menu.jpg Binary files differdeleted file mode 100644 index 0a43d7b2a..000000000 --- a/old-ui/design/05-metamask-Menu.jpg +++ /dev/null diff --git a/old-ui/design/chromeStorePics/final_screen_dao_accounts.png b/old-ui/design/chromeStorePics/final_screen_dao_accounts.png Binary files differdeleted file mode 100644 index 805cc96b6..000000000 --- a/old-ui/design/chromeStorePics/final_screen_dao_accounts.png +++ /dev/null diff --git a/old-ui/design/chromeStorePics/final_screen_dao_locked.png b/old-ui/design/chromeStorePics/final_screen_dao_locked.png Binary files differdeleted file mode 100644 index 9d9e33930..000000000 --- a/old-ui/design/chromeStorePics/final_screen_dao_locked.png +++ /dev/null diff --git a/old-ui/design/chromeStorePics/final_screen_dao_notification.png b/old-ui/design/chromeStorePics/final_screen_dao_notification.png Binary files differdeleted file mode 100644 index d56a5ce62..000000000 --- a/old-ui/design/chromeStorePics/final_screen_dao_notification.png +++ /dev/null diff --git a/old-ui/design/chromeStorePics/final_screen_wei_account.png b/old-ui/design/chromeStorePics/final_screen_wei_account.png Binary files differdeleted file mode 100644 index d503ff301..000000000 --- a/old-ui/design/chromeStorePics/final_screen_wei_account.png +++ /dev/null diff --git a/old-ui/design/chromeStorePics/final_screen_wei_notification.png b/old-ui/design/chromeStorePics/final_screen_wei_notification.png Binary files differdeleted file mode 100644 index 3560c51ff..000000000 --- a/old-ui/design/chromeStorePics/final_screen_wei_notification.png +++ /dev/null diff --git a/old-ui/design/chromeStorePics/icon-128.png b/old-ui/design/chromeStorePics/icon-128.png Binary files differdeleted file mode 100644 index ae687147d..000000000 --- a/old-ui/design/chromeStorePics/icon-128.png +++ /dev/null diff --git a/old-ui/design/chromeStorePics/icon-64.png b/old-ui/design/chromeStorePics/icon-64.png Binary files differdeleted file mode 100644 index 7062cf4f1..000000000 --- a/old-ui/design/chromeStorePics/icon-64.png +++ /dev/null diff --git a/old-ui/design/chromeStorePics/metamask_icon.ai b/old-ui/design/chromeStorePics/metamask_icon.ai deleted file mode 100644 index 27400c5a4..000000000 --- a/old-ui/design/chromeStorePics/metamask_icon.ai +++ /dev/null @@ -1,2383 +0,0 @@ -%PDF-1.5
%âãÏÓ
-1 0 obj
<</Metadata 2 0 R/OCProperties<</D<</ON[5 0 R]/Order 6 0 R/RBGroups[]>>/OCGs[5 0 R]>>/Pages 3 0 R/Type/Catalog>>
endobj
2 0 obj
<</Length 47428/Subtype/XML/Type/Metadata>>stream
-<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> -<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c111 79.158366, 2015/09/25-01:12:00 "> - <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> - <rdf:Description rdf:about="" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:xmp="http://ns.adobe.com/xap/1.0/" - xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/" - xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" - xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" - xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" - xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/" - xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/" - xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#" - xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/" - xmlns:pdf="http://ns.adobe.com/pdf/1.3/"> - <dc:format>application/pdf</dc:format> - <dc:title> - <rdf:Alt> - <rdf:li xml:lang="x-default">metamask_icon</rdf:li> - </rdf:Alt> - </dc:title> - <xmp:CreatorTool>Adobe Illustrator CC 2015 (Macintosh)</xmp:CreatorTool> - <xmp:CreateDate>2016-06-15T14:23:12-04:00</xmp:CreateDate> - <xmp:ModifyDate>2016-06-15T14:23:12-04:00</xmp:ModifyDate> - <xmp:MetadataDate>2016-06-15T14:23:12-04:00</xmp:MetadataDate> - <xmp:Thumbnails> - <rdf:Alt> - <rdf:li rdf:parseType="Resource"> - <xmpGImg:width>240</xmpGImg:width> - <xmpGImg:height>256</xmpGImg:height> - <xmpGImg:format>JPEG</xmpGImg:format> - <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAADwAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7
FXnP5r/mvB5Tg/RmnAT6/cJyUMKx28bVAkf+ZjT4U+k7UDYuo1HBsObl6bTce5+l5X+Wf5t6jonm
KZtfu5rzTNVcG+lkZpHilACLOAamgUBWC/sgUrxAzEwakxl6uRczUaYSj6eYfS9vcQXEEdxA6ywT
KskUimqsjCqsCOoIObUG3UkUvxQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY
q7FXYq7FXYq7FXln5rfnHb+X1l0bQnWfXCCs0+zR2tfEGoaTwXoO/hmJqNTw7Dm5mm0plvL6fvfO
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</xmpGImg:image> - </rdf:li> - </rdf:Alt> - </xmp:Thumbnails> - <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass> - <xmpMM:OriginalDocumentID>uuid:65E6390686CF11DBA6E2D887CEACB407</xmpMM:OriginalDocumentID> - <xmpMM:DocumentID>xmp.did:d4d07395-aa96-47c2-a9e5-d0351947bb0c</xmpMM:DocumentID> - <xmpMM:InstanceID>uuid:c63c1031-e157-9748-9c58-86481308e954</xmpMM:InstanceID> - <xmpMM:DerivedFrom rdf:parseType="Resource"> - <stRef:instanceID>uuid:1abccb90-0c26-4942-b156-fd2eb962e3e1</stRef:instanceID> - <stRef:documentID>xmp.did:58fdc1b8-1448-3a44-9e20-282d8ec1cf95</stRef:documentID> - <stRef:originalDocumentID>uuid:65E6390686CF11DBA6E2D887CEACB407</stRef:originalDocumentID> - <stRef:renditionClass>proof:pdf</stRef:renditionClass> - </xmpMM:DerivedFrom> - <xmpMM:History> - <rdf:Seq> - <rdf:li rdf:parseType="Resource"> - <stEvt:action>saved</stEvt:action> - <stEvt:instanceID>xmp.iid:d4d07395-aa96-47c2-a9e5-d0351947bb0c</stEvt:instanceID> - <stEvt:when>2016-06-15T14:23:10-04:00</stEvt:when> - <stEvt:softwareAgent>Adobe Illustrator CC 2015 (Macintosh)</stEvt:softwareAgent> - <stEvt:changed>/</stEvt:changed> - </rdf:li> - </rdf:Seq> - </xmpMM:History> - <illustrator:StartupProfile>Web</illustrator:StartupProfile> - <illustrator:Type>Document</illustrator:Type> - <xmpTPg:NPages>1</xmpTPg:NPages> - <xmpTPg:HasVisibleTransparency>True</xmpTPg:HasVisibleTransparency> - <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint> - <xmpTPg:MaxPageSize rdf:parseType="Resource"> - <stDim:w>128.000000</stDim:w> - <stDim:h>128.000000</stDim:h> - <stDim:unit>Pixels</stDim:unit> - </xmpTPg:MaxPageSize> - <xmpTPg:PlateNames> - <rdf:Seq> - <rdf:li>Cyan</rdf:li> - <rdf:li>Magenta</rdf:li> - <rdf:li>Yellow</rdf:li> - <rdf:li>Black</rdf:li> - </rdf:Seq> - </xmpTPg:PlateNames> - <xmpTPg:SwatchGroups> - <rdf:Seq> - <rdf:li rdf:parseType="Resource"> - <xmpG:groupName>Default Swatch Group</xmpG:groupName> - <xmpG:groupType>0</xmpG:groupType> - <xmpG:Colorants> - <rdf:Seq> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>White</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>255</xmpG:red> - <xmpG:green>255</xmpG:green> - <xmpG:blue>255</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>Black</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>0</xmpG:red> - <xmpG:green>0</xmpG:green> - <xmpG:blue>0</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>RGB Red</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>255</xmpG:red> - <xmpG:green>0</xmpG:green> - <xmpG:blue>0</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>RGB Yellow</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>255</xmpG:red> - <xmpG:green>255</xmpG:green> - <xmpG:blue>0</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>RGB Green</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>0</xmpG:red> - <xmpG:green>255</xmpG:green> - <xmpG:blue>0</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>RGB Cyan</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>0</xmpG:red> - <xmpG:green>255</xmpG:green> - <xmpG:blue>255</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>RGB Blue</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>0</xmpG:red> - <xmpG:green>0</xmpG:green> - <xmpG:blue>255</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>RGB Magenta</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>255</xmpG:red> - <xmpG:green>0</xmpG:green> - <xmpG:blue>255</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=193 G=39 B=45</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>193</xmpG:red> - <xmpG:green>39</xmpG:green> - <xmpG:blue>45</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=237 G=28 B=36</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>237</xmpG:red> - <xmpG:green>28</xmpG:green> - <xmpG:blue>36</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=241 G=90 B=36</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>241</xmpG:red> - <xmpG:green>90</xmpG:green> - <xmpG:blue>36</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=247 G=147 B=30</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>247</xmpG:red> - <xmpG:green>147</xmpG:green> - <xmpG:blue>30</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=251 G=176 B=59</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>251</xmpG:red> - <xmpG:green>176</xmpG:green> - <xmpG:blue>59</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=252 G=238 B=33</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>252</xmpG:red> - <xmpG:green>238</xmpG:green> - <xmpG:blue>33</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=217 G=224 B=33</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>217</xmpG:red> - <xmpG:green>224</xmpG:green> - <xmpG:blue>33</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=140 G=198 B=63</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>140</xmpG:red> - <xmpG:green>198</xmpG:green> - <xmpG:blue>63</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=57 G=181 B=74</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>57</xmpG:red> - <xmpG:green>181</xmpG:green> - <xmpG:blue>74</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=0 G=146 B=69</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>0</xmpG:red> - <xmpG:green>146</xmpG:green> - <xmpG:blue>69</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=0 G=104 B=55</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>0</xmpG:red> - <xmpG:green>104</xmpG:green> - <xmpG:blue>55</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=34 G=181 B=115</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>34</xmpG:red> - <xmpG:green>181</xmpG:green> - <xmpG:blue>115</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=0 G=169 B=157</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>0</xmpG:red> - <xmpG:green>169</xmpG:green> - <xmpG:blue>157</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=41 G=171 B=226</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>41</xmpG:red> - <xmpG:green>171</xmpG:green> - <xmpG:blue>226</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=0 G=113 B=188</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>0</xmpG:red> - <xmpG:green>113</xmpG:green> - <xmpG:blue>188</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=46 G=49 B=146</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>46</xmpG:red> - <xmpG:green>49</xmpG:green> - <xmpG:blue>146</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=27 G=20 B=100</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>27</xmpG:red> - <xmpG:green>20</xmpG:green> - <xmpG:blue>100</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=102 G=45 B=145</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>102</xmpG:red> - <xmpG:green>45</xmpG:green> - <xmpG:blue>145</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=147 G=39 B=143</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>147</xmpG:red> - <xmpG:green>39</xmpG:green> - <xmpG:blue>143</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=158 G=0 B=93</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>158</xmpG:red> - <xmpG:green>0</xmpG:green> - <xmpG:blue>93</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=212 G=20 B=90</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>212</xmpG:red> - <xmpG:green>20</xmpG:green> - <xmpG:blue>90</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=237 G=30 B=121</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>237</xmpG:red> - <xmpG:green>30</xmpG:green> - <xmpG:blue>121</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=199 G=178 B=153</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>199</xmpG:red> - <xmpG:green>178</xmpG:green> - <xmpG:blue>153</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=153 G=134 B=117</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>153</xmpG:red> - <xmpG:green>134</xmpG:green> - <xmpG:blue>117</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=115 G=99 B=87</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>115</xmpG:red> - <xmpG:green>99</xmpG:green> - <xmpG:blue>87</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=83 G=71 B=65</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>83</xmpG:red> - <xmpG:green>71</xmpG:green> - <xmpG:blue>65</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=198 G=156 B=109</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>198</xmpG:red> - <xmpG:green>156</xmpG:green> - <xmpG:blue>109</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=166 G=124 B=82</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>166</xmpG:red> - <xmpG:green>124</xmpG:green> - <xmpG:blue>82</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=140 G=98 B=57</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>140</xmpG:red> - <xmpG:green>98</xmpG:green> - <xmpG:blue>57</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=117 G=76 B=36</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>117</xmpG:red> - <xmpG:green>76</xmpG:green> - <xmpG:blue>36</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=96 G=56 B=19</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>96</xmpG:red> - <xmpG:green>56</xmpG:green> - <xmpG:blue>19</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=66 G=33 B=11</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>66</xmpG:red> - <xmpG:green>33</xmpG:green> - <xmpG:blue>11</xmpG:blue> - </rdf:li> - </rdf:Seq> - </xmpG:Colorants> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:groupName>Grays</xmpG:groupName> - <xmpG:groupType>1</xmpG:groupType> - <xmpG:Colorants> - <rdf:Seq> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=0 G=0 B=0</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>0</xmpG:red> - <xmpG:green>0</xmpG:green> - <xmpG:blue>0</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=26 G=26 B=26</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>26</xmpG:red> - <xmpG:green>26</xmpG:green> - <xmpG:blue>26</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=51 G=51 B=51</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>51</xmpG:red> - <xmpG:green>51</xmpG:green> - <xmpG:blue>51</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=77 G=77 B=77</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>77</xmpG:red> - <xmpG:green>77</xmpG:green> - <xmpG:blue>77</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=102 G=102 B=102</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>102</xmpG:red> - <xmpG:green>102</xmpG:green> - <xmpG:blue>102</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=128 G=128 B=128</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>128</xmpG:red> - <xmpG:green>128</xmpG:green> - <xmpG:blue>128</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=153 G=153 B=153</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>153</xmpG:red> - <xmpG:green>153</xmpG:green> - <xmpG:blue>153</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=179 G=179 B=179</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>179</xmpG:red> - <xmpG:green>179</xmpG:green> - <xmpG:blue>179</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=204 G=204 B=204</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>204</xmpG:red> - <xmpG:green>204</xmpG:green> - <xmpG:blue>204</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=230 G=230 B=230</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>230</xmpG:red> - <xmpG:green>230</xmpG:green> - <xmpG:blue>230</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=242 G=242 B=242</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>242</xmpG:red> - <xmpG:green>242</xmpG:green> - <xmpG:blue>242</xmpG:blue> - </rdf:li> - </rdf:Seq> - </xmpG:Colorants> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:groupName>Web Color Group</xmpG:groupName> - <xmpG:groupType>1</xmpG:groupType> - <xmpG:Colorants> - <rdf:Seq> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=63 G=169 B=245</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>63</xmpG:red> - <xmpG:green>169</xmpG:green> - <xmpG:blue>245</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=122 G=201 B=67</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>122</xmpG:red> - <xmpG:green>201</xmpG:green> - <xmpG:blue>67</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=255 G=147 B=30</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>255</xmpG:red> - <xmpG:green>147</xmpG:green> - <xmpG:blue>30</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=255 G=29 B=37</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>255</xmpG:red> - <xmpG:green>29</xmpG:green> - <xmpG:blue>37</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=255 G=123 B=172</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>255</xmpG:red> - <xmpG:green>123</xmpG:green> - <xmpG:blue>172</xmpG:blue> - </rdf:li> - <rdf:li rdf:parseType="Resource"> - <xmpG:swatchName>R=189 G=204 B=212</xmpG:swatchName> - <xmpG:mode>RGB</xmpG:mode> - <xmpG:type>PROCESS</xmpG:type> - <xmpG:red>189</xmpG:red> - <xmpG:green>204</xmpG:green> - <xmpG:blue>212</xmpG:blue> - </rdf:li> - </rdf:Seq> - </xmpG:Colorants> - </rdf:li> - </rdf:Seq> - </xmpTPg:SwatchGroups> - <pdf:Producer>Adobe PDF library 15.00</pdf:Producer> - </rdf:Description> - </rdf:RDF> -</x:xmpmeta> - - - - - - - - - - - - - - - - - - - - - -<?xpacket end="w"?>
endstream
endobj
3 0 obj
<</Count 1/Kids[7 0 R]/Type/Pages>>
endobj
7 0 obj
<</ArtBox[19.792 16.0 109.0 112.0]/BleedBox[0.0 0.0 128.0 128.0]/Contents 8 0 R/Group 9 0 R/LastModified(D:20160615142312-04'00')/MediaBox[0.0 0.0 128.0 128.0]/Parent 3 0 R/PieceInfo<</Illustrator 10 0 R>>/Resources<</ColorSpace<</CS0 11 0 R>>/ExtGState<</GS0 12 0 R>>/ProcSet[/PDF/ImageC]/Properties<</MC0 5 0 R>>/XObject<</Im0 13 0 R>>>>/Thumb 14 0 R/TrimBox[0.0 0.0 128.0 128.0]/Type/Page>>
endobj
8 0 obj
<</Filter/FlateDecode/Length 106>>stream
-H‰Ò÷wVÐ÷u6PprqVà*ä2´Ô3·4R04S°°Ô32°P°4Õ³´´T(Jå -WÈ*Ðw6PH/æ‚H™+ -8;W:dYmnJk$j=`^PKX*GV"-/6MPPhMW4o*<SJ[.r.2B:%l2U+:>jFegTA5n:ROqi. -8M?-(/t#IN>re.=TbIMqYWQK1D%b&pOLGa]H?hKs'8Gqa4A/k;[i&\e-=4:h!/H6BW;~>
endstream
endobj
16 0 obj
[/Indexed/DeviceRGB 255 17 0 R]
endobj
17 0 obj
<</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
-8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 -b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` -E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn -6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1 -VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH< -PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O( -l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~>
endstream
endobj
13 0 obj
<</BitsPerComponent 8/ColorSpace 11 0 R/DecodeParms<</BitsPerComponent 4/Colors 3/Columns 880>>/Filter/FlateDecode/Height 947/Intent/RelativeColorimetric/Length 90241/Name/X/SMask 18 0 R/Subtype/Image/Type/XObject/Width 880>>stream
-H‰ì×ÏoiÀñù@H•–•²™y&¶á‰Ã8´™_Én²á¶„Äâ—ØÖyŸÛA¢'¸íŠ? -I - -Wú <Ó*
²º'’œ°%ÌŸYLj%éâV‡ì§æšmaþo!û‹—Ç©k¸vÜ>¢ÑwáŒu{=€Q†®<\ȃ*fƸmqÈäþY%Å”RÓp» - -i¤HòF·'î>hd,“®I#Éä_¿™ýÑ‹ÆâTj›~Qš5¸c§Rñ`ôˆn:Ës·
e8ÉÃù¤P·ÑîÕ -WW®zÙ¶°:‚lÕgÒëÜlØ7ɃÔHi’J&ÛÂüï¢ù³/¤ÓºgË.°}› ÍCœ§¯ãÃ'ÁˆËdîD|V“Öª'9TL*ù4ŸI]˜Š6…” -››>•#g‰ÛãV™¤±-Ì?}=óÆÆÂTj¡šOK¥<ý>µNh aÔuOB×në¥Y#qkBÞ)‘çÓÑfiQõ@
-¥ -zÁŸÍtuõÏt&“ì¼k¿sª»§çg1›twuO/‡JÍÀ„>_¿ç9Eªzb‚(Jr2éh›+’É“¼)€£ó⇻¤”AŒ!·àÜð«·_:Ûª.Æ%£îÙ±4¨EÑ3wËì~ÅÞ ÄsO®¼q9ÛÔFÈ$·þ½Æ~þÕEßÑ<GãîÈJÏîä? -7"P¨ç‰ 16?wŠ'¾‘¶óPÆ”äšPÎ¥ìm?U
AÑJ¢‘‡®¥»åO¡C¢/%öˆ-n·Ö :d¬}Ä_HÛëR0I™·þþºyc5SÊj¾¬åÑV}¥ ¹nÇ¡Ý!ˆñ1Iî,òœŽC8òÁ¦LaP)GíŠcAê1(ÂEŽ4F|õì°Q#0#0PïWí{² V<¬Ž^úF—¦LzâÓ@™üÓ%óûÏékËê˜êÏñ0«uÉ'‰I1ÉÀÕqÃ<Éä¼$p5žSyV(%AÇ“8äM¹ùY½Ä¶QE¾ÑðY'd7íÝ2k€µ/QÞ¼;ä°L&ŸÌï^1*
e’»£ïv<Ä7V2Sy¾+GäŸ FÎÀ"wA -†žºäP&ìœrA\Ê9g ¸JCÄ -¤´Çc¾°Øè‡1Bu€íUìU!h’B -ä¡m²‘›Õ?IÔòXü¦qýBf=«Oò¨-çuÑäÎS]*pb L¢pº¡³ -½+Qf1XGbuô.•ALø}åœÃõÀ{øì;×jÞé:˜1°XºM;`ïmœ¾öþ)Ý’r¼2ÙâÖ?¯™?ûÊbÉÑ<gÒ2¸â|çÎNDq•ª›)}™ôs*Î[˜×SwÊLGEôR>Ó¥^"ˆT‘.4²{óÀ7±Ïî„VÌ:7ÐcO¬
°î–Ùn™µ¸]‡ƒ&IŸIÊ´¹õ·×]Ô׳ºŸ›¨L&Ù¼á®~ãe¥?61‚þ8qW6É$åуS-èÜÑJ+j—”’ &‰HàR#Y(Íu3C¸"š¤ÇvaµÖäVO í¯”qˤgáŠþŸ/™ß{NÈd* ð¬w4~ž›²‹8`ਡ«Oþ®D™éàÀT -¢¯žž(‚ ƃ‚º(r„Vu¥¥6z‹0FÏ|¸iïUì6—ÆèÉô”º_ÍUp_š |ò7//…y
e2•£6©ka•…E9JT×Ähý<'|€»éË eæ’\xËyì(µ7QÔQ1Z)7•#÷5eoÓˆÀ¨ƒ0Æ‹gÞ+Û¨‘wC–xcòX”¶SÍg")“-nýkýâÅEßÑJÙÔN[ìê*ú¤«õ†Š FAÒK¸¢L®LR7‰R.’šL—BME#@Ù* -~U¿üÌÝŠÙtEEVOtÑ7ïU콊ÝؾÌxéÛÔœ'’isëöóÆjf=«£Oòôº[Z¬¹Oà ÔÒÄ((®ŠAúî>®Š&™Ö]‰r’"šÊÑ‚|f0`A|0Ä/2}€+58{™:ØÂ!ELTÇ€uB†1Hôz“ºGQ0‘gáÚâÖ[—|Q_[VSoér^G›½þyµ?lñD$g=?ÿÈ©Õ•LêN9Áš -±¬•K¥Ü*RYÄ£pØÔáÓu0ë%Kˆ¢'üäÝ*Û-l€p•D <P¦#¸Y¸Gèù¿}Ũ4”Iî¦Üϸ.V´Ö;òIâÉèÉäòÇQ&+=u ¡œ°àPaqU²¢²€S_Äq(R o*B&ñ†Ò³Bcß@-Ù«Øïmœî„大+R/ëÀ¢´‰rlpך`m{Öͯ-úŽVr´te¤O&ÿ^åLOF"“¥e59÷Åh9éåĄ˵ŠJéhoº¤”q¥{5²0üêí—ÎÞ¥:˜¨‹5ß8Ƀ*ô¸x'/>I™ÖD2Mnݾbþä…L)«¡Oò´›äYæñÐׯžîR3OF"“R õj"“iO8åä%ªÀÕÁÑ{“§PqsÎ?Heøe}-°ÄXJÚÈNÀî•m\Ñ-ëžÔH/}G¢<b"ϵſ|Ëxãy}}YM½‡ƒç>Ï©ý¤Z&œœžLæð¸/çu>7&ÊI
wQ)µ /º+Pê.bŽPà"Â$Nþö5ûØ5ÏB]Œ=á{»2È·`¡[Šø¤‘³—Hnk¬?¼¶´±¢®-«ÓsÈò\ïÄ粓ùy*dâqPúºŸäò†9’IÊغº,1ýì—ík[×ÇõìÅØ`Ä÷^Ù÷A¦/önƒ¾3¬ÖÕ•ìŒËcËèVÚn´ì©a-_s%YñS’µ…²îM{b ¶FÇ £oZÆ”±Žnk›E–%ÇytÜ$mAûs%E±Äv]ùûåÃáúJWÈøëßùê^xœAž
ÍXkŒÈ0v_•ÝKÓ‰Õò i$é‡ðFߪ†/Ñu(“ jL’Ižž²÷íþ‚§O%»k“¥/S‰‹<z YWÙnZµ <QªbÚ誒ƒÞ&ì[q¤¯¥Dz1ŒÇ'‰ÌMwc±×ÙýU¯0s)/ýPzãÚÑÄÅR¢Î¤‘m¬äÊuì˜ð/Xçö»ÏÚ?¸ßOêy·ëd’ÖRÆ<êɇ0Š‘m'hˤ¬S!m(/6Øo”Gâ´ò¡ÁF¸ù"HÔCs• c¤µófÙä§YBh†ß”•‚syÚ¡•²yß¿‡nö˜ð,@2ùöûÅ1crXS>r7B>YÌœ,7©70‡‘í§Ý™Às)“]ubûQ9OŸÎˆƒL³1Œ2$j¥ˆ¡Ên*ð2Ó*쾊O&iVóÎ"sÎÎràœ+ˆ2L²ÇjèÐÈžCüÝóÖ³ßxÒœÿŠ‘ëJ™9:J µÊŒ ÛH(“´žhxàA&xk
Âi&æÒõ‰Iu$6Ô•æj•õ“:.æÍE– Q\-^*%V¤@V;•ƒR¼M½ù€]‡d’L’ÖWí<}*©wç&Kߊ{òÂÕ-7@-&;. -C»6õ§˜6 “@9TB–U¤fðI¤[#vÛ1©‘r¶`·’,¢Î×f/5nßÐÙûT¤LÖ¹ýÞ¤õëoÄsIÃw»T&™ôÉ錿\Žßç#¹UB™ä£XJ&éuoÏÁ¾‚Ž6TEžÖÚ-E®HLäëìþu[íòÓFÙä‡Uf -‘–x¾è¬–ÏšÆX¥›¾zÃ{FEr6°ÿqÄúiVÈd>Õ½›løÅ -žÁ\½UvÌ^dKáCR&‡òpûöÔ÷€6ÓkÚ„o@)µ»ªÐÈÆÉ›zx¹üùZÎZfBÏøv¨5n“F’CÒÅ
µ`Žr·{LÅ·«y«Îí7¿gÎ2H&•Õ;xù@ÁíkÕAîœSYQ•ÙC,¥•2è9ØWp¹ -¥ôô°±Œc¸!{)²r±õ»*ûâR¨²ÁjÞ!¬ú&Ù#±8ËScM‡¤—}«¢Zi€*H&—˜MøÓfàé$“\õPÝ -Å´Á\¤¦ðId e²žDÒIЄã—F1÷úšÅÅ|CîeH Åld›Ô¬6i.2K8¤tŷ׎&Ît±(ÕQ—+ý¨Zf€B*R&ëÜ~?gÿö›ý4Ä|Wï~™¿!ù$÷ô°ó1Ì[äN¡™Ikq¤úS‰ó(Tì[È'iͧ4*m€ù†ì~¤@žŒ?ŒÅ>˜èûKT™ô)ŠÎ•òàJà3t -dEµÃ€.¡"!™|çëg_ç’F>";,o)%OõQý³ã¶ÈîÈ~Z£æ”2F»B -3›†Àœ%f_,%.už ;ÕÖ}å꺊oÓZãö_`>÷19¬)žÛ‚”€Ö™Ä¤
b˜´È-‹Å
2z[&•€;BE¦ººz1i6 ”ÈöCÓ¯!öG9™¸h¿tšÅj9«î'I#…8ä˳BœÐ!…=úÂ*ªt-T:zT™óçï”G´\2z;¬³F3¹}ZgÀµL‚hž€èâHòÓÖ¸‹!Èfi´VáL:ä†,NÆÏ0E«šwHÈV§sR I „!ø-UàÖLÒ1äô”ýÊ#4¦¦’zävØBÚ`®VðŒ|¹uÚã”™4ŠiÈ$ˆ\"&^ÊX×jÙbÞŸ±—Ø mýRòÆÕò q6ÆØÖH ¶JERçö»ÏÚ/-N&™w£'“,¥ÍŒÆ¹§Ó¿‰8‹!ÈféIƒ|²”1T÷€BãŽÖÀíSû?…D%ÿ}ê35fW§ÌŠôCÈŠ\É!/–5n“:VC1€@‚í#Î&R&ÿþ£ç2rÚò!¹“¹Ú"H Ÿ<•…O"›$;Þ,Æ”ÛGµ)¤!“ ÚP‡iîýáq£ñ‚¹6k^›³6åž¾´éÛnóìmØÙG©úÅ£òÒÚüÀÕóÜt‚,Qè¢\W -Îù¢³Hoô[¨]H&élB§’¿<iÎŒÆ'£)“LšätÆ`®Î=CèB>‰¬OS&c1–[pà‰Uyu¸¸§û®þ«Ãý×ìÆóNã'vã9 -ˆ•–Lþëëå‡\ÒÈ÷œL2é“¥ŒAkq¤‚qø$ÒàC¢Üëk—DyQØc¸§OþŸýzýqã*ã8î -U_”›D"QA‹PA‰@¥I¬µw“涱ÜÝDZž™IœPP²i¯ÏïÑG~¿;Ï9ó¤ö½]Æùºµ6ov”p“3Uô$lJ´'“o0ŸbRúåv¯îL‡Õž¤~ðcˆIÌÆF¸ôeA[QψIPY1©ßo®7xGvÀÀàèΛçjÖiô$Ü-IËßgÖ2lˆc’ø.Ťæ‡=I !;e0ò'ZƒJZóÝwzT6‘b3;— )gå—êÉS¦ôVG1¹,ø© þòžxt™ñû”þ´Éõ$¹û(!b1ô¤êÓÛßÑ®í†ì-ˆö¿Ô~ô¨Å$’"«3V[ðf‰K@MRâ+‚ÿ3ÏŸÛePI–ìa~™Fšp™ç2¹
ƒœñÞ£qZJZ—¾¥ -0 è¶Ì'ÙÏöÝ0$:HJåÑ\¨‡ý ;``pPL¶=N¿¯ìMø.›H1Eb’~«Ô“ŽvsK`TO„=éhÄwÑ“ -émýÔcrEð¿?m}÷ÓF!©•e_JRPF -7øõb1‡žT}<ì€xà´•4zàVèþ,&µ™ì²yeÁºŒ¤TõäJ=©–èqŸñùÌ#cz>)ÿR’v:¬ž5Â[Q§ŠˆÅГÊO¸"¥õ¾5¤o)À £c’ßÁ^Øm¬ÎXÝy³ƒ¤Tعš…žT=ë%o¤-øoKÔ2¬˜ÒU~cÒßîÍ õB£òô>(h1*éàh¨|: -§ØÞ<pD“úšõŤô›Gº¨|—ùi-j‰zRíñÃŽE»QË 'î -còõ'ÌÆz>‰wâTÒºçè¾£QEx=©ôD19—ú-Ædø•!}?†Åd!©}3§·«æZƒ#)•ònmDzÁ¢˜ly_|1^Ëç—N±ô›d`Q0ÔÂl¸9'0ÊNn<X -†(iCÚ4P+¾$ Š -c€T6•©^b§íú-–Û4¨¼ïœ†jeË·O|÷zë©S~?_îq¤ŒC—jžÜRÑrÌ–EË“¿>˜jìâE›k¿ú.C-ün#¶Eð<ãI«O{€vE5‹Ó„Ð&E¤N³& “݆ -ßåÚw&Bȯè¢ÍgöðwüÔâ´)#Ù„˜S’´£]\QÖVòìQùâ>“$I_jJ÷éŽXÕ,÷\^³YÂSðd|'z’¶D%Ë{o1í›!ä…‡qx';qÀì†öèèÆÚˆÚ><¹a˜XÂä™/§¾ö/¤
í‡:zÑ556hzÞó„^Ï`tN¸úʦ]aÔr˜DhKUvXÅeg§–fĤ~ü uïbU4u»+’&gËbÖ8õ”5ñ€I˜ÄnÝ£ŸT¹Á¾c’%NæáÉøN~(ôdÆXÙÚ÷'Bh%º«é=øõ½f»j-NK2z]©ë§Wô"LÎy't é»lÄ^fZ÷êƒ&Éa,·- EžŒë„K¯v|deKhß™¡÷Ds8Í^{2ycÊ"~ttûo×DZ§©`‘©ÖVò‚xé³hó²ÃðvÛ «‰ªd¹—ÙN–È“ñ“ù`õ}‡»ÂʼnCh‹VrèÒfg‹ÖiÑ™ÔO ´ŽÑ‚¶|Ù,Ií‹@ô3&ç•üó³Ö7örúÓ~x£]5K~àÊ <é'àɸN¸ôjÇG=‡=`jß–¡ÿ}ëÓÆ‹ŸäWÇn¤ŒZ«ž\LÒ³äo¿`Mì2iCûÉ|µa’'BN$àɸN~(ô¤Í<'x[)ÝÛ!tÊDJ›ÿò`òßÇàɨu¹O®&ç¼à7üéçR•,±ñRÛØ6¸=<·ÉÏÊÒ{.Íqí;!tïèê&O6vóse±8-@ʨÔmˆkãÀä$b²ä›Ãâ•ýfÙa%˜ÜŒ*Ù -ÓsÿÔMzìC*ðd\'\z•1zûAûÎD®›½ödò&<Ùÿu¢;e]ª xò^˜,ÉYo`Γ§ZõAƒ>©ð -Óýì£9®œ$Y"?LÆtzK_ÉÒ14*Y|Ù!Ô¯)7ð$½UÏ¥± -Lì&\÷üPby?èÞ“¡u‰Îr!m¼¼ßì† éèFZK—GÉÿbrΓͲøñc)ßeE›+Wÿq‹ytÛT?˜w»» ×]ÙÁ–ð]®}["„Ö«²<O?“ZšIý(B«îÚ¸œõˆRÚ9§S’!&[J¾9,^ÙŸ,9Œ&µG˜¤U -=™ -ã“ -7]&!êI -¸AQóש'=FE¡4b2¾‹&alÈ6>“ -¥ŒõôÝüôhêBÛé")ûÇ;õ¾ïIúþs*ÝQò•‡ÅäçY9c"à¦1é²’»ãz2–k¦lºvy07> -ÄdìÖ•MW.oä¹ñ€žBgDtÊ¿v(uñ˜Xš4ßKp}´G½ß“³¡-ß8,žý‚]ÎâôéoôŠÐ^ð×÷‚žôÑ“ñ[J›^Í󀞀£c¢œ±ž(òNÃY™’]$eo£
êh9[•Æ£ñ:1ùv“¯tŽí᥌e|ÈáÖ áq½'èÉKèÉøâp°é4 b -4Úô4@ß©¹Áß¿NN ôdÏ ;ÿtSl}OžªJ*Iúpü”ï±r–G
l?ú -×¢¨(£'㵢đÂgi -Ù뛌&ÞÌÂÑý¼ˆ!&;ÁÄ=Û¡ @OÀ¢çK1ÅŽ=Îú5ó:’2J.778&©$éÃkûâ4ôRJGL*ÈsͽšÖ¨+òãèI…N,ˆIñèçij&}`K¢¤üé—ësEvDÁÐRÛÏ¿îý—d“}ÁϬ“O“IbË_9¢•3„ÍDþ‘a`à(r\áÛË|Ρ@OÀ@·—²Mo¬úߎ$Ögåiù)„ÑœRð~c²b]ôø_žµ¾û+$åïH!n~ðF]1—GL*v‚×ZƒFŽ‰¹i -üåÝ• &•æèôNA„Íü®@Oªt\á»No”¶VË0ùÛ -'?îÏZØt‹Ðüw -Ù« - -Ûõ—w~Lº£wŒÉ°dú_ž–ŸXª¡†¿Ò2çoÄ‚ËϼÈ0aL&5éËQPÏRK0¿0“*¹¼?‡%‰ž -G»C‘;ô0œSOõ!ä’¢ì(m© ˆ“ @bcµÓÄ_v–¤(J–k EÛ@m·…‘KÛ8§š¸h/M Hhb IY–eIàQ}v‡¦ÛÀ¶Þ¸rç7øb¡ŽðyH~¤Ô¼ò0¶qòi_’ð¤VÇ·°ÙäS¾‡!=“˜üÅ#_¼m‘L¶Ä¤g˜¢ÇÎõiõ¾Ò°»“à=
îæÙØÅçX.‰o“÷7Í›=ð<©ËéÌZ¤Ød†áR‰Úÿè“'Ÿ4É!¤‘¦àsÛÀd‡”÷ªêq¥ak5kÁ‰ƒýôM·MJ(¾PtKx˜ôžÂ÷¤#€IŽïÉìØ -d˜”ÿ!ý†Õ©XKµ¯tkcÆZ*yÇÍ…ªþÁÉ(
¤w¯<Ì\›*Dö bÜàìû‘ž,“$=OšÂV¿–¡p'1™K.:|/˜lÓ¥À—+<¹ÿLZódg¬4bº5ÈëHâ<R¦ý†+1 88û{¼‰»½ x³#„‚®˜2sIöû—†æ -|Á‰?$Û÷dÃåëÓê}¥Q3àï׶˜]‡”×AÊ°''[É0'Å&lR»3 =™brðNG]>i&o练Ɏ[îUÖlL=´tŠ_wù“‡H£Y œø{¯D'†òõCÁ%A¤)CyŠt‘)µ8“tDzP¤ÛË |!B!ŽDñëŸD¾ÊóEg‡ìÌ“~§¬ÞWF/ûÜVs¤é'éA÷ˆ\’U/! -.a{ÏÒ0£ç•Ã‡Ž -.²Ä•ç#_žãuÑMLzb)Z‹‚¯O«÷•Vµfc+UïÅßøéA¤üãË)•¯" -4²DÙ'¥ÈÜ)58=™2è6L"„Š>^&Ư~Ì“Ínc²#–{UõÄÒµš'ùíT’ò«ÿÍZå;‰
¤Ôëøž$U:rîiõˆ -_ôÍ’K²£ì³·x#LJ®4K\¹¯4Œ^ömΔþX]ð[ãüòX„VBùf¢@)5:¾'7}OV2L¨Þ=„Pøi“³Ï²›gcÍÀ0éY¥h-8ñµiõ¾Ò§óVk6¶\‰o¬ô'éNqë¿ü|$ŸT¿Ÿ(Ð$)éyùÄ÷6AÊß“µgO"„Hb²’1ÿñflÉåsa²ÓrE½²tku*F’ŸßöŒæò—?ŠL$|õ„»)¯>´ R†õøžÞ
‘Ѹ•oB(LÑ7H>IwUóÆéhÝáóÁc’þŠºàÊ}¥[3½ì;š/‘²)øgoñŸ2ºq€”á®CJ‘=¸ R†òHO¦½Y—Òð$B¨kѧJÁ6‹)ó¯§b
ÂFÀ’l{²h-8ñÕ©˜rbéV³´ãûýyZŒ›gcFÝ;è›HùÒ¢à’¤t@ʰߓŤA#v齌·3B¨ILÒ×ODxRzûàI©”;e«5Rîkw'w9¬¦OÊóÇØD -¶yõÅ¡¯ó|ÑÙ%0öý¥Ke®œXºµ\±véIÿÙ¤)ÃHÂã{’fZ;qR†òCõ{ ã·/Dnçy]&¥Oˆ²kÓꉥU«S±ù=ŒlÞ'凯G‹¶w%)ÃH¦3àcòt:BŽxOå†êßè3$—0.e#·ÎñºP†É¶O -|¥ªžXZE€_¤¹ï”ô\(Z×ODh<Rª^ihIyä)Òˆ; -èÎrkÜ'e’‰´úýGÁÕ!%ýð
®àôèñôö±¬:ªW!ÔGåÆ{¯DNžì¢‚h®À—J\9±ô‰è¾\‰w÷ŠACl -þ¯w¬‹Ï±‰„R†>"¥°éÒj¨¦ÎÖÇž'Å3†°J†)_„P¿”K²wG¾Î÷&)‚
¹w¦Zút¿ÖýÝ ßVwø§gcž)ßH™åaO&nr°#œÞ<r:%›æÅäÔBhË“¿;¹]à„´ÞÇd‡"+“VKµ²ôicÆZÝ_ú…
Áoú¤¤=)Cœ›6Ki&RLùYe` -UöB.•€Ét/MëO0ôtx!Dùœþn‰}~ÆyLÒ¿îV]=´2ÒfÛ^åCÝQ’”_œuÞy™ÍæpÀ%(I—͹À䈬€‹!òI-ðy÷Bs9ýçß5“k£ŽI᛼AÎQnŒÔ©{Sѯëp篧íóGímî«¿Ë2=d¤7¸»Rš&Óº4M5þ³ó‡4Ù<‰P¶£'À|ž-¿È>;=NGðÈc2ncÑRŒt»¡`¾’”´«AJåÅØxÿÐwÈ&Ó·ˆ‘4¸p#§ÇB×äžÎ£)Óe6ºýËyƒ0ùÉ)«›%L^_°×«Žrhe¤{-G^óáO9&%½4”j2¾Q/ -LòÒAHi˜LÙ"Còɇ¦v¶øMîÃ¥ÏÅ)3ô0‰Pf£Û¿âÕ‚ñçŸXëa†0)¤QqVgsI½µ²ÐVÛ^Uô¶B¿”ööŸ~l׋âÕ GÞÌpé‹þ3ß ‡˜LÍÒ4íRIÛ9²&MÓ?¸ýáV¬!$)n+ÜYe6ºý\£V0®œïÐYO'¯jã
•Ñçí¦ÓSm,´uÎ^¯)òdÔw>ú‘Rù CÒ /eO— 5`2é‹ù j'#®Ã=%ÆJŒ¬XÌHÜPe9zT¢wÌ?üp¼f“}iTœnÕQnŒtwÑRµÇäïí)OX"£pOù%tû˜¼T&“»´»ÀÏî]3ˆîîÍ)“$É7e„Pf[prÞ¸||l5pnd“Ò“+ÁĽH9ðzçìûK6]mŤz¢Í¿ -¥'Ý}§ÓnM›ty!´×¸/0yþ(ûÛ[v7t®%ãOZ×ì•`bsI=·²P'LŠ'ol“òó3ö{%RÅJæµ}&¾»ûß|áDQÀ5M,÷º$)KßàB’cuq…û×\ùÜB銞„Éöö—SV‡'èOfwê5òõÎÙ7ëðÊÇ'HÉ#RΘs9§‚'•ÛÿR/)ÅÈ–1‹BrT¹§kœû,pYÿ -û}Æ+Ÿ;B(Řüä”Õ
ɯGE't”s+ÝmF\õÄwOŸ;ËþéKl¤T÷È’_šS¦OÅÓc•f@Ê=-M‹//èò:GnW?q„Pò£gE9o -óãÜ—Wª!DÏÂdUb’;É<¯ÞµŠs³®ž[#ßVÛ¦-šÌ÷ëQî|ô_öËç·ãŠãûäT èhw–äŽr+ŠþP‹»KR*„B›¤@êE` ¨kRäÎ.Iñ‡tiaýi‘^ª¢ArÈ¥¨ÛkP_Úƒb£¢DJ²lÙ2Ë£úfgI»rlX?gwø>Xðàƒ<ß÷æ}æ"WÊ -*eœ¨ç ˜Oh•)–5Àˆ´Ð‹°ŽPÅ…èèšù¯øŽÎÂãõ]lx™hà¨ð7&Êäñ\¢B{Œîµå—òìÔxúäúhv„RÂzE¥Œ,¤Y0™C˜>yÜòáôFÈòÑ ƒUJA)™¬ÚÆ_~œÞD™<¦KTèn33”[jÇ»»_Ÿ\'Øö§?½^ÌòáB¥Œ‚ï’ðkBŸ<~UŠc„>ˆº«7òDœ³çÊA³AÈ$ðñ;)± Q&%ºÐAG¾t)K‡ûä^Ûêy4ν*þ¶
oú“¥Ä{Mú°O8p×Õr\r@x"B™<¹òXt˜¥ù)ÆP¤ž·äÇŽ)Qž'eRì>¡”ÈqبrÛ‘ï]JƾИ·k7l†ÇJ){Þ'¸ë@o<‡ø®qÀ°Nª4M[-F§Êl"N¾Á•A§Š2y:q¿!߸f°l
W2÷ÖZì;fj#üñ§·SWfåüd2SËøúÎׄíøÊäiÕ“¢Îœ)~ì.—y†V‰ ê²hG™<y…è3úߎ|ïR˜á²õ ™¾•÷‹ôCÏ£wÊô÷ÌÒ¬.}ê'!3Õ‘Lî£Lžriš66v6ó³y -0A”£œ%øAj-\v(“'ëà9{-ùÒ¥6Úx{"Zw¤”(%ÌôÙŸ(j9®1Ì5Æ®#M³&¬À*=6²Ê¹X% -•òêë&(%“}-( È$ã7Þ×Ç&#M¢°d1ŠƒÙ:„UË‘ ‡ƒ€ ‰¦µ4«_}͸ùSd2Y+8‰À ÷ÝkË7.µÙ©OKÏú°ÀSn˧ÿzßZù.A¥<ñ‹®ÊdPH {ÑP&ãW‹ra3/±œÎB«ô]ñ -ßE‚<X[ “·.[›(“gœóî’5\ÉdK—Â<lñfîÊÎú½“xãR¦3JybŒe²b§ÁUŠh’±®ÕbPÍF ž'*%‚Ć2)϶:èÈ—.…ãíy‰ìjø›·üH)³så߉FȤç–3AQ<†2™€â1iQR0"|Ñ*$†Àl–fõ_¼JP&¥°QµöZò¥KaËÖv-‘Ý/Ÿ~ö^¦ž3P) È$HPHí£L&ü±Rþð«~h’ ”bÐ*$À<–³¤=güó}¾¶Ö¸s“Ãý†|éR8á$úäºPʪÕ÷èß.¦7TJÙ—Fa#™¬Øé}”Éd–¦iãàع´gC¬¬r±ô6C‰…Ëä¬2yãR¦ÏhBnÒcïûtБ/]ª2\¶¶ÜÛ‘R²H)+6®ÎÃÜrB&&|”IJÓV‹Q‚Ãß°Èj9‚C ²€éã29ÏereRª-À„Gºw)Ì£ŽÒžÜ&Mszýbºj£Râ–@6<”Iµª¸ 0›ç)aÐ8r–Àƒn1ktæÉ?P&c -Ýdôó’õ˳4«ã¢<@{ÎdŽÎb}râJÓ4E¹7lê;|@Ü*åw&‚$!“ÀŸÏ§»Uke2®ðt¼é‡-:”í] -³¨ã“ëá,ƒ!ß¼l]}Í -³»ž³ì O¶g6½*åbeœC³ -$ÀÍ_û¿°XñÆ;™T—™Ëí1”ÃHƒ‡¬åIà>~@¡C"Èña(“ÉRÛ -¨tïR•Á²u·f©:ÝæëïNºRÂeØš3CŸQ‘äJXkl¾Æëÿ
ØcàfS,ŒhäIC¨cŽø¡=²§—Þu¢0_WfkÅÔç¥é>£kŠnLåÕé1º×–¯^ª²»¤¬O®‡> ß~¨”µœQ±'tÏÂÿz©`²Ð'#Á’WÅ
xV -íùt`Oùš=Æ÷?öËï7Ž«ŠãóðFÔ{æNvfüÀo–ˆwvv—*µQ«J¨•*0• -‰DÓÄ?öÞ™ýaïÚå
úОúB¼ „J_$<©Îz½;¶ÙÇð¹ëõ¶‰iÛ{wF#ùe=ç{Ïù\&C[›²ÑÄr!ȱìö7Á&ˆÓ'kn¼~Ѻ{Å]çžÆë2
@ ¶*n{ÕQ®^ºQwÛ+î£e¯ÁÇ”wùTóƒç†ð>~'Ÿ,¦U)+…DBÆGbe!Ÿ˜z/°EÀ"Ÿ…¾-|tÊŒWXüb•ó¬vÁFã¢<ë®6NêHýâP&?p›‚drèA[‘³_Wm_š‚Û -5?&PÊFòüÝÛçà“‹¾ú1ÕJÒ'ý3p˜|R]]ž9åM‘µŠã]9LL2ìQ -¤äŸLrH‚PÎà<ɤv4øØÎ’ÓV^Z‚¯ºYv?Óý¤`¬óø¼ùvFù˜RB¬(˜çM(
ä“ -ÊH4J»¢oÕ§X)Ï¢ ¶G)<ñÆ®@’C„*pç&ÌŸ½Êî\q7H&5¶³UQ¯^ZÒ^u¶—å-îR)E÷7ß?‡A¡|^õu6æ¬0H%›ÒLÏOª©ŽRŽ„è…ÏКrñ{$$ˆA@Ê$n|Ÿ^vš$“znâ‚°WSo_Z²[sSrd¤RÞ›÷>|ãÜ|š”RŠ -Ô% -Xâ3ä“ÊJ*%ê0|ÿ,Ï™"g–ò,Ê3å9!¢+“Ÿ\JdRõÚ"NôtgÉQ®^ºÒŠ¼ÏRà“÷¥lrï?R)³iÙàÒ'a,P˜ä“*JycºÓ¼Ÿq?î„¿DVIêÀ1œ?É
’IM<(«÷.-i¯¸[õ-îg–b¥\ð~ýº{¨ò ÖŸ!É¥O–Z•¢:,Øž9{áòœÙµJ¡:3‘6pè²Ví‚Ý•IòI-¬o¿®Þ¾´äѲ×àcøÈÊÝ·85…÷ïkÞõ×ìk,Kù(;í9‰g©Ç'
Ã8Âr¨ú[†ÁÅa/³#<™4+“, -:VInI§”É(oýù½ÉdØ^r”«—–@Ô›¡—Ÿ¼/•’{w?p¯_´æ&Ì4(e”ýDŒRc”սёƒ¦D>Ì]+X§kd•qjÄ2éÇ2y{6ƒ½pŸdRw -V‰Nͪø^è3´2X)¯mP ¢?sÖbÖºùVf{D0”/#¢o`ï7øØÎ’ÓVm_Zò°’Òµ–ÐÞ_~ì”ÖBÖÒpSøE£ÒTTzÕó–aLÏtZvµð2Z)ü8¥°J¸¥†q%ˆS&–I?–IHÉd:AÓ7Ë.ùäɲ¿ÒGËé=Pkɳ)¼?ü(å_ý¸;YDl’ÉÓg‰žO_…†!Æ;‰FJ*…Ø*e—•' )“¿•2ÉÇH&Ó úÞ½½šzÓ½z,T©=Y]¥¼=+eQ/¥Ï0gª•"ªcïb|¤è›²¹ÕI»k˜ÊóFƒÉ$!ÁÞßYrÚªíKK”Ü4.©”»5›ÁJ©Íj–šå÷;>i†:'¢:nA){;,n±ŸXepx}P<‚4®MX½y£žd’@ -ÆAòâ³Çä“)(#±Ên£a•¡oó$¥<2ªcI§GG&/Zw®¸$“ÄQ ¡·¯Ú¾ôŠÞŠèÜ}!iD÷æÜ_~Ͼz¾£dÈ4‡0 -ûÉ$ñlÈ¿WS/`š±_w›tŸ–7Œ¦¾ïþüU6?„J)p°0gÂ%z½‚*uÕ#–"À#¾eDy”• Žƒ”ÉÚ”ýן8´ÈˆggènWÝöª£ÜÁ4c³[åý4¤R~zÙÅ°ÂÈ:¥,âß,ÆG¡ ŸL}†ïµÊ³âàÞAÃH¯L¶BoH‹ŒxV°ß”ÔÛ—~ì,9Ê›;˜`:A)1¬0²²C³|E"“<gŠ‰— !É$•,ÃøÁ·¾)_Eþ,¬²å¡%ˆç¡ÅL>”ÉEd’xv–ÛÅ -´¯ÚÁtb¯X:ŒOÀ°ÂÈZº`
…RâFyxÙQh$“TIcz¦“‘7ü8'a0y&ˆ'‘2Y™d˜ÌŸ“L/b³]U/`š±_w[Q|$•÷w -‚H\A¼Ä=xraOjVDÄÍEI`NÿšI&ó£éãøªžÎŒÄ8™éš§ë™Ï—7E69t}ûy^&™§+¸t€©×z™Â“/Þ½%ÖvÿpçÒ\ÞÔ§Š”"é>ãA“§nB¡Ðþ÷.ÌŽ÷W†ˆC’(Ày˜¤S÷÷ß&ÑÄrît+ºY‹H˜J
W"U|C±~î‘ò®KJéǬwÒRÅ”!’3c[È1
FÒd÷I2qÇõ…ðxC¤o)BÇi)¡çLƒNÝÕ0‰&Ýéë%6$5åKL™¶ë¬#xËý¶¢¯ŸGÊ;—ænÄ䟴T%m8ª<û9â„%€ÉS4ôºÇo¼¼÷§œ6è÷…•Ð I¤@Kq=oêw¿;G§nÛŠ“h‚Ñ…Þ|§!ß`JÕd}ž<ìv,þYžøÎl6¦I<i…‹“éÙ]`ò4M(Ê,Ž^·H:;`%5bdÉ‘¤| 4©L^r1éž½ÒϤ^U6\‰Èg˜*
—ÙãrßÖCæ‘òa–É%¥íBBÄõ]`òÔIrü®³oÎØIÚƒ~V!I¤\¹˜ö›ïÌ>&‘oøzI¾Ák³i[Ñ–ì—”èp뺤¼u1œ3Oú*î“QLê#d„àIÕ'²÷ÞòíLH˜†ˆ;Œ,¥±o+R£1ý—ßÿ;Ï‹ ˜DþDæéX|»Á†²
¦Rƒ&뎯íKì!‘Rð]ç?y;œi'|›WçÃôKCr0þýXÈ,>“¤{;P™7`H¤dt¢~øÎììs×ãVB¾Fö´*ß`ŠµVÄ7÷¥÷°'ø§×ØûÂ9Ó8™“–QN;±×– -\CèD£}£#Ig˜JÑñE>òBöm‡”õÝ'R–Ó†ˆ"ixØŒŒÿcÓχ¸n'
é×=B¾–3÷]LöItâµÜçf-"Ý`*EŸ'¾ËGßI—”¾)¥\R&'vØ’NK)¤VŒÏ3,L*>¡½ßôÒEÜ}û²o|„| -˜DÒ£Å[+ò¡lƒ©Ôvƒu,Þ’ýfZË+øGïÍÑí_ˆë“2€íÒT$fvÉS3DJÛU¥z¤DJF+7õ›çûÀ$’íÝÝ;
ùS¦Á2[+áK}ŒtŸ]‹ÿaB¤ôþz1eØ mÌ©ÌÁœÜлö~>ˆä‘²R"…¢eΙFc!ü·ÎÙ|÷’ÝF•
W"Ò%¦FôIÒç O§)…KÊä±HéýÅrÚ°š8û:¹ÂÓæôÌ3RÆ¿$ %R$Z㼩×ô{W"=Áqé éÑ®•¸t†)Óp™mÕyÛŠ¶d¿Ù@ç}z‹ÿöÝY:3—ŽJJú[“ºˆ½F¢È,“§qBîЖ&í$H‰‚Ý“óa²os\7h¢=$ü†²%¦Lƒ&ëÙøµ8ͤçjß¹4ç‘ò§n1åÈ¡˜ÔÉ·3Àä)žÐè틤³ % -n´º…¸^_ÐG˜,À“hZ¢m|R‘Ï0e"™¯—<9‘ÍìXÎiI¤$O.½ä‘ë<“z>>ãj˜<í3ÞÛ!¥R¢ æœi¦^LéºL¢©‹’ÖrД/15®D6ªÀäÄ–³mEé¿úÖl6¦öÈuŸ¥”AÏ]W6<‰ÙÝÝ=HÊ"H‰k!î<?zo®+€I4¥mÕ¹t‰)ÓvƒuÜ/»ôת@ô1v,þà»u1œ3Cžºå4ýŸ3Õ·^!<X˜ÄìÍARÚ % -H0i9—0‰¦0º²—å3L¥z6<9Éýì þ ë2oþÿƒ·”rPLhĆÌ"0‰98H©ƒ”hú;€IL¢é6“VtДÏ05.3ò¹ôתR«#RFöõp6¦ý/ -QÁÀ$æEãmHf¤DSš‡É¼©ß½4·Z -&Hã‘’ž#RʆBl¿þö,Ý m+ -L¢`åýÚªó¡l‰©Ñ Éú6~Tú¶®K¬'ø'W"õyƒ0i%Ã# -¤D'aòçß?t1¹Š‹<ÂÏã²|‰)Óz‰áXð«ëZÎg»z9x;$Ù"%ævæ)ËiÃ)‘ÿÑŽecÚô^çÀ$R£Öë¾Ó”/± 7h²áJd£â]úkUµ¾ˆÒ³g}Åq€Ob&3ûIYJ¤D~FÛ•3›çû×0‰k³‘î1.³Íz¤mE[²_¨ª=.FéãíZÜA -VâðÉ°•ô$Ñ*#À%RJsc™¥þiø$—ÐÎñ»0†R‚.±ÙðÉdL@&è@ƒ@»»ž†RŽ€š+–Q,£8“+δ¹q¦h_=ŸDX³«”q(%ð8wr⧟Ÿ¤¶‡LÐÃÚ¼jåí,¿’z€ëIQàþ6ǃj\ÑkNA[f‹kø$Â^¥œñ”rθ%ÄòrþäÄ?;ù¯s -2 Àh"Vâ² ™<4õ4^WGú«ŠZU‚6¸và“â=J©IF.œ -wˆÍ„c³=×ÎMïý~Ñ_Ÿghf‡]áüÃùS’É·Ï©Šƒª`6SV‹ÛÇOV™£d‹-6秋1õ}·Àᓈ/ÒUÊÔ#÷å
ç?É?I}¼G½ö¶¹ý>šŸ;9ñôG'žú#Ï~,üüCáçÚ¹ð†øÎIó9³=3zöêÛ+À{žaŸ†¥kŒ½?qz8gdò%È$ -g8ÖŠ®»& ŸD¸Óyµù®Õ̉öÅ^/€ZŽõ´,iUà®J -ø$ -ô< -ˆJ¸¢)H
®º¤‹A]Têª*CpŽ&ö½NÐÍl»LÿƒnfÓU¥YTª*¡V‚‰%±ûú6aÀýî50C00D‰?ŸÜ÷Õ“+osï÷½ç9ôöØ¿£Atò±jJ|÷LGq'¸Îl/£-~zG²7 0‚œ„OðhA„W¶\îm5”ž-Ö2è™ïVôÜÌÇ*Z¼<Ó„!ÁìQã=Êd™¿FÀäÓ-ŠšVö"`R!ZÏZ®Í¿æÒÊøä» |²;?Eï*8ÓÏ0KÎ2ùHGܲ,Köö -w—0™WƒÖ„aÍÄ+[í<.ï¦SUZyáìðIdü ¦®häÎ"ì…fmÀ!¥¤aßSsÙ,Z¸´¾:ù˜ï“Å‚£>‰ðĵÅà.dì‘¢ôÛJ À(h5êiI5˾ª†â:b-#Ñ0o#%ºE?+IFà“Èx£ý‘û¦lõÉ'—Qw`ï4smÀH*Á³3Ï¿§†â9b#Ÿ|µ9á.Ī:æŸìIdü .2}'úlYöƒ; {o -{Ó0yÐ=k=+Ù7Ô8\òɲE*Îþ'‹”¨k_°k>‰Œ1+þ¤m;Q×O–à“à -=Sb#£VS2‘HÀ'‘ƒ?]/¢®}¶,û6€PÑ.È -wñ0iO6süëi"=[Ô´Â-µª=×Ò±‡·äé“7È'#‘_G‚p[rH£ýÑòÊÊsÄ“%Å^ lôJ¢ž†Rð -´$E¤Fìj®-Ö3>YMù#D?ÝVä“ñx<PÊ|9°ø£Õw¢ƒ»²î´( -C#-»%þõ4¯lù÷Ó0—‰Vä“ÿ¹‹ÇE>ù“™™óç’Ñ™™xH$ŸDö#þ=Òºó>½ŸD» +ì=À$AÑY°H\îõ4:Ý襑S…´O‚|#£ÜŠÉøå⟞={éô©ËG.\?}ò|Ù¿øSÔ+KÚ¸'‹ü‹ÀKz%QOC)ø–JJ6sµù×Ó,¨LT&)ÉþЪøä?nž8ù³dìâUëì%õñ•óç’¤”䓉D‚”’[E³óòJâËä’b_y -Ês¢ƒ»’}åØ›tHO -ë›8†åT›ÃìÇSsmÜåßÖ•$+F½".÷ÑâPì(’…. -Źڬ›6ã:T†¯“‰˜Q•‡ßµÖO"ùŸ4TJÍ•WìÆr'xÒ(9“ž”$ I‰ë”ËO= ÷ëýÏ“XN·=Æ? -Ð+3ó›8†åB0ë®ÞÌgS[=%ôÕ;Ë‹/£qUæbÔ'D}$âC‘*±‡, -Û@†S™¸8½e1üô‹[õ °gþÝYž4šíùUÍÆrgIÓ(9+ÊŠ'%IÒét¬u‚KkKöäö8÷Ó¤<hì'ÃŽˆÞHJL%Õ'3–þ]jÉÄó Q‰Òcò„D½$âåáÎù~HØ ;Aöã©•bAþñ U"})i‹`Å.Ú|'V(*>¤DtåÑT0Ë|‰‘éÉùvÔÆ8Õ{¾ÐbR–I6ÓeGùºXé(´Z9›-áÉAÖ:Á¥E1þÓ/'Èþ|ÂÅ´Ñֽɲ×ön”‚ºÃíw4eé©’¡¢à·ÜÇ/©Ãt“…DÊyØC=£n®„Üzu °‚„ïÚô‘^<CO³ /×Æ Qˆ÷¡LÁ# 8£üKÖ&<£'A˰ß¼†‹æëàÉ‹–£ä$;)«ƒ“Šr§ÉèO¶¶¶êt:ÖDÁ¥å§»eï3}lœß›DObÚh{Œ@RbªÀxi¥"Ð/žI)ƒú(óˆ*~±‡À]xA¿p×ò…=qõ©µSõ͸òÔÇC¹ò¦fTª™>¨ø|¤{1Æ~05“ìÉç£$ÜùšåïI°Ÿa6‡ÄeŸøÅï?*´Ø/ÔÔåW5›æëàÉÒ;g³•ßl•k£àÒÈJ<zìŒs{÷ù]æ3ŽaÇnk„GOþß[aýdþdõ©‹x|ü²*øJï úÔäSšëHSŸ›ªoÖ -àwðä˜jKЮMî˜|û< -± ûÁÔJðZ½œ$O|vØŸÁ_ -Pôš 3>Ào‰ßt™Œ’C’®š,
ùUÍ‚d7–;V %g³I’${r5Tpi`ùÔ“ÛüNß›DObZjwœßW˜ó,[\{SÌó¥D¼|²¨—~HÕ—(ÒÏ/)êK´$0ìáÂ"' -sS…ä0HàÉb³<)V:€”çªo(ž”I©c\¹¿è&™zõ€b2Æ|À1ì$mñëÊ$öä;Äko¢`\}ê|0O%_ßRȧ´ÐEÂr‰ã|'ÒPê›uq³n9ùdæÔœ;xê˜ß@߇àu†÷ZÙH?Œ°ŸJmòK]ÜTÛ{áI.ñ‡Í;üÓaCØkðýºÆ(9 -ji²4˜.;ÉNÊꌒ³¢Üi2:ždm\¹½ü“ÛxžÝÿLd>×vÒ`ën‹+ÙÂáªÌ¿Õ£>¢.ÒŸ¦¾ÞTõQéy¸°‡$K!ß¼¢>·^UŸ+qGpå)çgQŸ‚ä9¦Ý”w6›²'Ÿ --v“¥Y`¾ž+àI“Ñ©"¥Žµ[påâú§¿ŽÏåi‚4æagiã.¿ÔËÏuR1Nµý<N»#Ô§:ŸAûaš
ö0<I¨„°bAö#©¡à¸Ô=OÂÕ&äâþÛF&uñ«›ùËÜôm.;?z±‡¨= ýp×0Ó—ÿ‡Æš|KK‰ä0HùUÍÅf'xOž«¾žÄuÔJìŠ ·ÿ…¸3Î1Ÿh;c›Ã"\#ý<Ü^A•ÓÙº;`Ã`Ÿ«‘ -Áƾ`bâø‚±½h[•4Aix°ÍCxˆ!)ICKÚ7Û‹©ÕTeRÖ½ë¶JU¥M{ÑfmÕM—'ìÚDiE”ec¿s¯íÑð䛋Ãù飫+„ñ½œïïü>gHñ—vÚäPšœJÓQðIçŸÔm¸¸¶Ho¥T«ÜÔ'iWB‚?ZFÿ|2.u/S(”rõ¶ëcÀ*'}²°©Jî -^’ºs‹»=hgö‡±6t7€ß;¥=X~|èrÂ>øvÊfT"xLÎ_?¸Èþ³;ÿHÝðÉ‚Ã6eEkànU‰[_éNùdQaUJZkŠ„áшv›²’w1…’qˆR -ƒ5±mY˜¹°«l•Q«¤lDnež6¼ž$@Ú¡¨O¦ÏÒ¾?ˆÇwdõá[:åïœ( -…Ññ²¥Vk²k¹µ…WX£
Ü2å“.—‹ú$µµ<Â<¾ÎHÞÅJf‰'oD¥\½mÎÙXé"V™sæ@É6˜æ“2ÐCR?LúÏ<ÛM‚½Ö'¿d^•¾s‚ø0ñÉÅËV¶…±Vt¯‹ùå+zâ“&€¾Úúñ9&ìC¡¶Ì+%¼Ô¤WëÅëød¿üë®o*ÓxÑ'áyÀ'nðI\\{¨Ä-*%ÇqÔ'i*’„‡CÊø5´r“ú$åEfR‚,L[˜ÂSíHÜi©XîqÀE“œmG¹b’"푯# ‹W0h’äm¸û¡ ß³Yß
Bà—~RÚ¦dR¼ö8K§½øË,uáNûì{ëä¤_¾dàHòA›Nmr(ŒÑ©¬hP–5èJª7ød‘ÞžòI—ËE•’V¢n>y
=º†–éVCyÑY_)«ÄÄ*=™ßÀ)¹˜$Ì÷¨ƒO¾wJÓRozÿ´jÎ?D’?Ûæ@h§|8Ö‡7Š7„_òÌ!À½úñxKÖ}rB¸v6Á!µfÁ'Íup-0ó¿mÔAö “J¸¯î~øÍ€âó®|%G|²¨´|RWqTmáή¯tkÖC%nÑ'¡¨OÒJ”É•·XÉû—BÉ"É›M”Rdî¼|ÚOrÏË
Òñ¡i/þã™ü@ƒ±€#Ãý5Þ<ÖŠ@/wyàñ ·¥|ra€yxUê6ÌâÃòåëøÁEÊúª¡)¯ì‹|š/OùdêÆ^m½sN̸RÎvËç×õIÙ™^…ºŒ×pN}ñI-× âÜà“£
nŠôvTSSTØ>ér¹¨OÒZq’,“|2J}’²WØB)…mV°Jù„`Ùž)ia
Kc=À>«èr
6q¬ÿöñý‘vHB†gzf †;ñ&’ -±dKßz9A|X¾|/ô㬶<X"¸â‡MùËí«ó–:ÔÀµ®Æzçöe&~ð:°›Ío|î -×ï.Kßw¹ÂÒþöžôf±ßÇZÑÝ -B¸/êG“ôn£î›eõà^;Í“SžÌô³uføø„íÂu‡Gšö£Í%Aô¼ä}—C<¼*ûÑxK¶V‡”ßœ(ØÈ'5frÝoæoÜ?çÞãäíÙb£ƒœ,¾®÷*^uZò
vÅ¡àêµ\ø¤®Ô>‰‹kÁ'_27®öɼ¼<©Å†–$ëþx„˜äãët{¡ì]žY)“Vé“>µÊœ D ƒ8ÒŽ¦<²Û'µgy³ž³'Gö†&¹zʃp¾}¼0ÀcÏ7Ó³D¤o]ÈùBG’¼ïr…¥ëÎÖ "$\§½xô§7‰®öªª¿533> -ºýol•Mze[nwð÷Ùhûë¦à“ÊyÉžòIÑ>©âÜà“j•[ôI—ËJ)µÙÐÚéJ"`’>e—¤nX -EZ¶£”¢Uö%¬RܨCRe]`þÂêˆ&ùQ“Òë0,O˜¤ÖÄo2Ǩ”ÂL¯¶~rŽ ?ßLÏ8Äv<ûæzÒîwCrºí§ øä½9ü{³¡”ð7'<$H}îÒâG®]NÃŒ™Ñí}ã´m’~r²¶ªËø2KÆè„ -‹Wð¤W–%Ÿœô ±6Ôê0¥¤q“ìé9û“û£~Ùö—Fºpš9Y~Cùi@£2:UÖ‚O*+À'Õ^aqpõà“Ez;ª©)*l}ÒårIí6´v¾ˆOƇepD}2ÊJÞÊn€(åà6•’l¿äÔ*w°¡64å•Íw“¼r¬ØRY›šÎZa:?+¢–VØþt&u¼uû3=ã/;åKKÄ .™ïß`–¤î¸"Ò²ã“hÚ‹ÿÑ‚©LlÃø™HhíÕÖ;ç8Ñl#~â+D{ÓËI?³8¤ëQã+”œ£à°MÁÕ§|Rc´áâZÕ ->©V¹S>™——'µÞÐÚá"+=²rƒ!cTêV¥Pv D)/n_)¿ -²ðY°Ê™ -V½ÜrB+>üè<ö§¡} -Ó,gØGCOÊôÖ—ò$‡”ÛĦ223ؾ{UñQ«ïÒä0!"z^"eTõ„*Ó'ˆTмM9%·ßTkÕª¢¹á«Ž$×e:;_Þ_r'èé8jÒ)IÔ«ðÿ.Š]k¹#8æO -Ï“pC`Â:TjÏ“ñu4œ½»-Z¸C€»I¼O´K Ã…V7~“üç‚ìËþ‚úúfyu«JoåyR]ež”—ÙèJs‰ÆDx2OÇ-v£—Gضô‰‹^¤DDY¨?Š”p†UΞÀý„*…Éb6IYœ›qâ ýõ°¼oe Ó²†|ºxÓ9 ñ®Õ7}t¸pÎ…Æ»ÅDJðÒ´%Á“†¤‘ñË-4Bøð¿½ÔD—eëç<ù»7J”Zs¬OÙ¼áŒÒµÞ8¨»qœ
ø$àDáAiB<¹8DÏœ’9lºÂJÓ.½± fOŒ'A<On×uÉm€”„'óhDwârõ]zy‰_§DDÙ).gFJŽ*Ãx¶ÃÁN¨2A†BO9%á^üÏ·d'÷VVë›b°g.§Ž”v‹6qÒDÜJxt°'jÅn~|YìBËÁ9ðd/]DŽ -foq]³¼Ê <)Ó[‹]iæy²Hnc†ðd~vòá•QêWiÑË“ˆ(g”~¤„Cî<w’š&TùBòœ6çB3N|³½¸½¥F¡[K^…îÔ‰"%÷&»k.œûÅ@OßúÌœÀ©ô2ÏS+¢—X.hŇ—.¢i—D¨òd{‡ä‹ãT½¡!鶈w ÓZp IÚèÝàïÓn”Äñ?Y¢ç=´ýµÝòêÖrÆ< ©®²OjjmðäØÀCFÚDz=õ‘n”ˆ(1Eø9H¥ÊÐ)jÚMñàçD”Ÿ‚”ö )§äÃCÊN3S´¬Ñlv‹Ò<ñ^ -º@Úß;eNkõ«»MQ’\ËÐ,‘B·èn/÷âñn”ѵrì€$yžäæ¥KÔŠØõ•ý‚Ú_ñá{ƒX¨zdÞƒ><TT^ÓœJ‹Äÿ°¡¾áGi¸!Üö¥K²ïð¬¹ëS—êNΘ'U5-1žÄ¥F¥Á@x2Æ^vgù¢x:Fx’ˆ(ye)£ -UöRʪ„Ï$›íA!7ºsT6°¯²lws,7Éfnz‘R˾ÕcÝgÇ¥3z:ÖjÒ) àT<öHÏ“PˆKÀ“Ïa¾Sß>ð ˜üÆAµ†1Ç“dÈÎ]-¼kŒ|p"hQ“6É£ó´ÿTaQµYVeUj¹ÎNo–2&àIºÒ<¹]×HIx2Æò¨dõZô’$"Ê]Eø9ƒH š fNà-O•ði°“îÅŸ¥‡÷—Öb‰©ÌJ’|NWì~1ÐÓ·bS.”¢»ÀÆÎJ_¿¸rB°PÓ.ÉD— -õcA -¨ïî 4¸¯"E˜Œâ(ë@cCã£2¨£õHÉú¤¥â“Å!:ì¡ovj€'+j'ª÷¨*¬„'ónÜb·`rõZôb$"Ú2Ê4Rrq”ûpÀ‰¶Uú»wLØ%@’À`_ÛÑÍöÖFŸJYÉAZ®ˆG‚·Ìº™äç>-ì§àIôáyñ*Wôíaš…q;zÐG·h9·â@¶^ì–ê ®;[ßÔûqòñP÷½ìA÷‰C¡`ö–Ö5OªjZÔU6EU3]i&<™/ÃËîiäâŽåŠð$‘PŠðs‘raÝ5Pålžìay2w©ÒßÍr×B/†‹~£z½©¦8 -Jm.‘äZšs/¿Sg~¯}g¸wC®ž]p Ðia¬ÀðøŠøe•ýZñá¥K¬|Šuççvp¶j©Ž'¹ÚÑ™ÿضsÞ½ö†¼OæSöÉÒÙý…EZkŒ'UVž'åŒ
xr»®ƒðä·Ø=ýñ -úqLÊ–ƒOüz$"ÚJ¤üv(CHù<x¤Á~<Õƒs‹*!I'ì4çBÓN|ûME—E«aLEÑ4T‘¢ˆÇàMú¯ºð”CߘVžœtJ„2Ü0IôjÊ ýw„ú?ûõþÓÖyÆ<È´â÷=çð1I Hˆmˆc°
v –¥JKÚrÁWIà`ÈÍ\BºV[Öh?L‹4E›Ú©Ú«ºI™6m•²[Ì\Ž¹äF³\H“†=ç°<–R°{ló¾úÊrHìÎû<çù¼c²X=i‘A…Ü>IW´ -ñPJþP£ÓéÿpL>æàºL”:Ï_H÷IWiÍŠâ -¥Êž¤5¦ÌüêUž¬ªª -{’2µ¿›î-¡n´t•‘¼
IHR2ó—©{‘rÊÍ,«Ò‰’B•Ü€³¦Ù1`ò·uÍs‹–% ŒL^I®JwM.ü‚Â/?O¦‹x6yàÁp8’¼›’"SgQŒ½µáw ß×Ëõ%¥aŠ–µTªÀ«BŒ6ŠP!³ÆßJ÷.ÈÔ˜sµFð¤b¯<‰wÀ“9Ù¦ÿódñdJ-7·›Ïú¾÷e7úª—I݃$$©š9 I¹¢ÊÀ*¬Êø1&– -IŽ;ÑŸOЧîVkÂTªÌ¬Ô+Š´ rÀŠâwKýÍX4O¶SÓnNF’·Râg¡?êÀ±{Êã7GEû"{’ÿªj󇇷]xÀ"?s…´Q3n:ØJÔ
žÜ¥×+5VyéõÄ“)¿BÝòg½4´€ämHB’™—–”«TiãUÛÈ+pÀ*¿Ñç'èË5y{ù*ŒQV-=ãAJGåŸ5ÍgCñÛØkqKèñyZò>Jð„¼œ'Ÿ\ÀÃö˜ú:bÒ…þöÖE&¢V Š«ÀR]éz94Ýx
‡ØIº(ÿ“3<©)1 ž”ï<©ÔéÀ“ŠÌjâÉ]üV^{-ÔM½¼Bž$$qô¤\ÉÝj´ ˜‘P•C07-ÜeÜmÄ ÉŸÎ./- O=–Ÿz©–ݦ6ÿòå„
ZP<ˆG†`«˜•u{¿ƒLŠoIh¥Ó§p,5h‘M7!è6¢fD¬@áPÓ`ÞsÇŠ¦asÅ(¹é§3òµF¥Ê”«ÚŒdˈ'7Çâ¶ò‰—+þ}ŒämHB’Ú š!%$ÐB¹ÏΫò;–¤EŽ‚ÿ4èÂCVtýðö*£6<ï`؉;@-,?Í«Ú¿ÄüêE¿½Ã™¸eß6ífž^"¤ü¶N÷R=ø^;8ý¶Â9ëáiª÷y\;ˆw°bWjOˆÞ`ø‹3sÖÃÛ™Ø+䑇;+o«Qƒ'U:0R¾·2[[M<™úËÍmåBý²Ÿ;’ø%áHéæ†Èݳ”¿ ûlß‘*‡¸ Ÿ5m܉FíøFmÖÛåÅ[5æð°KmI†Çºð¦»&wÒ…¬HtOÂIAô‚™l§fÏ3€¥/½ÒwSÂ<¹Ø‹g;±PíÑí œ¶¨µz—‚?^‰Rr‘ߣ×zßÝu§]ñ¨‹‚c‚£6jÆMO¶3?«ËOj˵ÀHZcO2»Í‚'s¶×O¦ââöñY_ÿÒUFò$!ÙTI R®R¥ ‰&aJÂë„
ÛЯßU7«³5¦•y'ÂÐL¢Ã}¯ÖðY}ÐzHTRÂNœÂâ{²~à¡%oŸ¤ÈÓ‹ØïBƒQµ(ÔÇ7‹µBÅ•JÌ)I£QýxÞXgæW½ôÒ™¹KÔ4Rˆý¬¤|Ü)ÿÔº•-<¨ÒéÀ“Û«Oæd›ˆ'SvÝäö1ÔC-ÂISê¾#!Ù„™KRFŽ’`+=ÞŒ‡í2ÑU ÃqÀŠ -4¢OëÒ‹´†ð¹cý‡”HšÊJ¯Õç{2–Þcž÷r†œ÷2«†þl'5)Ry<8ÇÛÏ¡"ðdAqx’-,ûOn!žLúµ²ƒPíP`’÷ ɦðTO\RF¨rØ! ²~Ò -YO!EJÒhÐ_?žçïÈXºÊ|}…žã$I…^uÿ¹ Ra´Q3nò‰UžÜ¶Ï,xR©Ó'‘^O<™jËÍíàb
uõâ -ñ$ ‰ôIhRòkœ¡FœHàÊÚ°° Ÿ
$ÿeA7j³*ôûØ•yǪÌë‡Ö& Ë@£5Þ:&R‚Ãc÷äÄi<ífâW³]ÒwMâg¡OžAë?…Etl¦™ºy„]?&#%i0è¯Ët¦#—úix¼Ì{ךõs—Eª
73ÝΑòvSFVqy¦¦zûCf~5ñdê.nC=ÔË+´äíFBB"$ñI)T9ÚÈq‘Så*ÆXÓÀBðó`#¶¡_ɪ-/ -9"ɵHÉ¿Ú*T#6î®m«vv'ÐÂ
÷xyÌpŽž÷Jß5 ðäÃsXh–yÒŠ&]ø§‡·…kK2Üe&céu“]œ$_\aB`Åull%lhì(Œ©6êa3ÜB3»ÍàÉ <ɽy•'¥¶Y1.~Ý[ºé¯yO†¤î8!ÉBJN•-Ô¨‹ú·--R•>kÚ¸9ÐGï(¬•ªíjÓ2–ÔfV-½Ù9‚¶iL7j³‚.œˆÞ“Ùˆ[ã[E ‡'±ä-“ø™»D
Ûeƒñ¤ÐP£v|¹&oŸo8ƒ¨ÿç¯ö——þ¨>¢3}é=æy/ÿ<ñ2ëœï!/õÀ#Ú“gÖÃÜmeÞÚ_ -ŒÌ./gËàMA~5xRÃ/âÉYnnŸ÷e@™=ïc$ï5!“?iHéfUŽ¹°Ï†8Ucl²Ïê3šìÞ]\¶<òTfVjª%K”*Ž”o‹ÿÙ€‡ù[µ'Gã^ -½ÔB~r‹óÌi£î¹ÿË~™?5‘圿c˜2Ýýš •¨Â$H¸CDaAÅ™µ$""WW$uwjªö—ÝfvvÜÒÚÚÚ£f·v§¦œ©-‡P rÂpˆr„kÐì·»!‹NÐBwß«O½êP ýº¿Çû<¦}Ý-OÈôøä[Ê|Î'³³³±OîŠÁ†¯#Äe#Üþgƒá…`RJ–13C_^Ýÿñ…èêSŠlF¥I?¯}I™8±Än¹ðf`NÒ$ÿã|Ø@ ±e¥,ßyŸdç§M‹ÈU›n$9Kô1|N=ñÀ@~{ 太7ú$—ÜÅ»™I_œ²2ù¬FBÓØú"íÔl3‚œÙ~n@♨©zº·2|R¥Êا:¡ÑÄDçx|r])±Oó03á[´<+$x¡a0˜Í.¥„uNÔ3ûšûzÞŽ–ZÉïkÂÿ`ŒºQSúê}£—žm‘>Ê@,•º5:,™ÌkQ0ÎP~"¶Ï@öø#!ðýñ°Š¿ ^)¢ÆÆøä\3Õg”øå“ý%ÄÝ‹Náë§0OùäÓ|¦?ø¤™†Zƒ}œ1Ií -DÃPÃ2ß$í¯B‘G²öFçÄÅ¥s>¾7gƒO†`ŸîÁúä¼r_§ì„ðµ†Á`¼bcæ RJX䨙žm^³ØCWÛ˜ýZû=Öúuù¾[ùÍ‚˜ò\å mR”JëݦֶÎÌ—äóÍ{ðCGµ·>Š0 þúäý’Ÿœ»üP‹ K…¯qã²QÄï>ÙUD‰¯.Òsãt–úÓ¢ƒSVäî¤áÈÿ6 &éa²!0ÝZÁtýЄ~wQ>“”$ÒbŸÜUƒ•Ièó`’ÏÛñ¡ƒ5®`SJ`ºqmåÜNÌÙ(`ÙÜŒXðÇõ{ïVFÞ)‰êüyŒá}U|RšW³±ŒTê"Þ<·†ù½´Äï‰Þb?<„óɾRê‘™æ-èO,»_2"ÅƼŸÉZÒYèká>ù§saž”8©ÓüÞ o -…Úr+9g[ë9m¡Òj¸ƒÌÿ6F€O&û¤ü@ÁFŸZ‰ðØúø{->—9Ú_bæu—R -'ê¼TçY«äX´Spž…mxæ´5t¸1ìÛªÈOõ›òãÎd%¾£N?¯`j£b½9néyÆŽ“ò¡ËDwá»Oe$o>9lB“õÞƒŽñT1¨ÚSÑGŸý%įN€LÈÖ&Ý6È'À$;èÛ˜ãXÀM’ƒY¤•L+`ç麻"|2;[2‰}r÷3»y‹Ôe§ -/1ãìÞ1JY+v¥„åÕ"Xê«ŸvC0dÎ-á㊹¯1¬¶ÑK$0Ò(ýó•Ÿ\Œ.ÏUžÔiÔÉiò£Ú—tÄ’®eBëߎ(¥‚Ñiµ&åŸè©÷Y)‹÷UðôjÔLÏ6£EÁ+E´p%ÜL
\!@}Œco1qëœì³¢ƒÓVôüâLØÑ¥¶Ï¸¬¡ª¤²¸ô¨Äy”ö-e>øäºLÖaŸâñ9;î\ƒƒ :fä˜YôJYC=i¢[IŠqK=Ç&\CkZn%aë|ÞÎJæu>~W-»mß(ˆ©ÌSžÉJTªÓ¼ØºdîĹüDlŸì.ÚÓ탄€®ô<' Üί ¿¸ìÌû"º.ùê“Êá2rÕA´• ë´Qãuj2&jÖB÷W£²÷bèØÌŒŒŒ}2ûdÐ.p!vÂÝÉGZb0˜€#~¥6¡Éz´`ÛÊÓÁ^Æ[ç<3¯í¡ÏÀ-;i÷ÍP0ÌGúneä’¨_D—ç*³µš(•Ö»Œ)2×ôRh-܆OfÂø۳ådWá‹„Ü7<r¢¹¶ô7x9Kr²ŽôåPàÁ©—ŒT’ÜÏùY'è ~Õa\ÖÐÞªPY\zllfLt‘’²Ñ'v"<¶<ÌLì–š¥v´â@‚ƒÙ"WÊ‘ -–7ט‡u±€UÎÙ¨9V/¡}yÜr¦
5HïÕ„ß.‘;>:Røn|BrؘäKbÆŠ%3Ë”Â[¢_D°Ïr*#þ»BÉ}ƒÄ©R‚®ô_!ùú¨™† / -]bf±•œi"ûŒp~}¾ÙSL<®'á·ü(%DpÚ˜Þ)±Ü"í©Ÿ<£ÓaŸÜecÁ†–2SðÊÂ`0[FüJ9c%wB-^rË¥VòY;«—×Ün¦MZÑL²ß\:\{Z‘wLII=’˜áÍ-3ƒÎ-¯çÊD7kŒ¯–Ár!‚nBÓáKCä@^•8}õI -š|;õdî!Iì“»b0[¶K¡å®¶Ñ‚—ƒÙ>¢UÊ‘j¬Á®Äçۀ͚ÓK€³hw+Vé¾N³-Ô=“ìƨ_ž®ÎSäg©êôMü
¬23‚õLÁeÒã½0³Þé/!º×½Ñ«xô$#Õ¤}´†šk¾.ÄÌb+9Ý@BŒüRJ.¬O-üœc‡£Áv‹‰Ÿ„‹{e‘à“ƙߛãñI¡¥3㓇ÏÚ“-—ƒÙ>¢UJ`ÆJ -õZ\ëzÉæœ`/~ÞκåMTóQ£ô¿Õá)=p£ ¦ôÕñŒ¤HoöJ bÉ! Orw?tTûŇC—‰®"b3ñè»L˜-´àE!ræ[¨F‰³ÐŸàûCWI_g´É4²Íd`}Ž]åáà“yyjðII -t¯C¼9O皇WI§·ð½šî¢=ãf~ÎÃ"ŸXuôˆ‰þúò>:63;;ûänŸ3>¹ÐŠì<¥"ƒá*%,æ‡Zñª…Ç-çÙ.;гväî`æ¥VröÓú›Êˆ__:\§Ì?®ÎHO9’ñSÁ[sK¥Ž½ôÜâf^Ôp)ÙUDxõÉ¡ -ê‘™&è5Ô¨™ž±â]æUÀ.ü¸žìÙäDð*ŸÔKúŒ’™&þÃNWÖl3âº|˜¬£‡Mô7å‘œO†ïÍ™T©T¬O†-Fxø?Ö¢²hGbmïf;ˆM)a%£5Ì®$ø›y-°5{ô.@&A)W8ü†Üôj=Pö×+û?¹ðvužâ܉„´ÔpH¯Ê·£†)SdÂœ–œô¯t áÔ¿ ”ÝE{ÀRV æ“\ܧ™w(xXEÎX5 ~ØíOÎBÉHÁÃò ¶ßO¦êé‘šÐ/òÍÿدۧ¦²;à¼éЙ¾Û1÷ÜsÃÊZiWË*AY+,âÝiÝ)«ÖÖjʃ" -†›„<’ -vèÉe§“¡ªêGï”ÔT -ô¤¾›âÉ¿^txZÄ`vIrˆ”@‡ó“ï1ÉP^ÚÒËþ»ÖA—ë]t3snúïÛû¿ºZä¨9zéì‰O*O>qú*°üøeÞìÉOõýìÀ“ëBÀ,0LþfÏÃZáÉmqœ·'¡èSVªæu“ÇÇ–¬Ö¡‚&RÂÁj=ï ðñ=€aÙ³Ó™qGîÐ}'O>w¸`ï¹&mèI6¥d÷ò`n¼è¢ÑăÁ¼õÉRÂÌÚi´ÿ€d!`K•—ˆò•aS^óxýÆ{¤x/c瀵à…_]=ä¬ùàÂÙ²òòòíŨpqÙÛ_púNýøþ:XG€”`ŒþzÃè·â›u»IŒwEr?0OÀ„adçm¤jV2¹²àD -s_I‚—ǘ'‹JOÿù⾑ëä[³áq#—%î˜Oœ#V¼üÇ\/†ÚHR²D½aÑ)dˆ”°fçâhjoeN[CÍùBy9zRßM)Ù`Ïw¢>ï–¸/Ã%ÜI ·žµÓLìwºèz֙⪟<ïd°|ÑEŸvPBØKrÁ×µ½ŠY}âãÊS¦“•¯Ø²ÐÄHyéLéÍäQyÜ$Nä†'UR.º ÷qÖQ è3²ø ˜œ'!³a¤)#˜Œ(ÏKmXX?%Ó¡#xZ“6Þ6¦½ÉÌ“ì5å#Ï:ø¯Ã+|I ûÜ}ÅËr9‘ö
^Bÿ^‚*UaÆ{¤õ.:æÈ¿{ÿWW‹\__ùôø™ÊSEÇ«6aÙûÓÃ×…'Íü¹µî3vÊ}`õ Üt«4’'%\<ceÌ„*—<”½:Ròä”òÁþfæÉ_\.DOê¸)žŒ´ñn)ši†Á`tî¤\tñ½$²ÁKfKµ‡ß -ÊßÜÚÿGs‘ç‹â‹Õeç«Êî_5N[©lý*º…Qdw홸ÃH™¼'5`3R¦}*¶‹Ó¶”ÞŠ'¡lÉ/Ø{<Y]]žÔeS0¹â¢Ì“xBÄ`0<I 7µÓ´ov»'°+”–g®úÉ‹.¿+Åû$øyÆe| ï·QŽG†mŠ®ô.1¦™ûê"›5Þ"®%KJ¸r¬YÈÐ#ÁÊMmR©§›·˜'eë*&óòòxó›Æv•,â×»“f#@Ê YÊ>9àŽp_÷x;²iËeeHŸuJñnéi]t‰¹EJ¶á¤¹¸Ð¯xÅ‘&4'EÊ ôµ{Bvó“hZWüÁy§˜ÚŒšµ±WM ©àÀ.oz’·°il2Ãärçw#>¯“;YpQu£Ïª+”>ì&Ü¿þÛ—M[Â1Ÿ¸ìgìt,1æ¹·¡T¤j×’"eÀl¼a€¤÷`F-ºéxJÓIñ$ùÏ-Éd2¡'õÚî1O®uHêdà¾(0LNeƒ”ÙEÜn¶rÿîow"jß„SÆ<»§$e:K §? »(1hNŠ”pÙx‹õ§ùIà„2i¥)Ì¥]µÐoê÷U+MñdoaÓÒõŠ¶ñ»¸„1Ì6É>)a?š²RØ%¹÷]’E—8)§Â€ŒTI©=°XVýdÑ)Ô%EJ¸¦¿VXp -)çìäAíždH ×Lµ’XZwÿy§æ³Ã¸Eœ³KЛL¦„'“újj½òà½ÞE¹/“ãÉ&)Ó6ä—*‹²”s¤Ä™|üâ´,$CJ¸` Þv1R¦k…Ý„Ížœµ'%À$zRŸÕK=˜ '1L2É)á°+ÁÞãý•wO"J¾ä¡SVšs¤Ä$ØÙ'ïÞèI•”OšÒ†I6‹Ú5žGd 2c‚nxþ¡'uÖdV/8È<ï”Ø4ðó_&÷“5RŽZè¼CDOrÉJ»8k§cY)tò¤ŒðFl¼E¼‰”A¥Ÿµ hºT9mÓr±°^9¿MOòæ6MMÁ¤ã{ŸïO -Ü'?ƒÑK6H™ü–‘2$liÛã0Ég“móN:‘ùBk"%&© -ÂXùů8rK¾‘”fãÒ›‘2-wŸsh9†È’êÉU<™‡žÔY“‹ ‹¶S(}Œ÷ÌÇ`0ºKvH YòP|GqLØM&I©»ÀX”Ã7
o$eàša¬YH×]ZŠk'diR¦£–wUOæ¡'uÔÅZõ“x¯Ä}Úc0=fƒ”VÄ‚“ÿ7ÝÍ̃IÀrP‹ŒÖZ)#¼‡EQI¹ä&¯ Æ×x2¨ô!;ëwŽöe6O&Y}[òA’²1©«vÕkµƒÀ’|ÚA¹Ïy£Ódš”[ ᕘ"“C—%¨HŽ“LTR†]dHi~)œÿg¿Ü–ÚFÒ8îWØûšHÝÌÔj/r1Ï°·3¯°w°9gCÓ>É6¶!KRµÁ<Ä<Á^Bå>aŒBI–Š÷k >ÈƦ%òÿêW*aK²Äÿkõ¯ßÞÕ»Ù)üh7'ÑïkáÄ'ßG
òÉx>ª2¯Ã‚Ñ{f*ïv -ÅoHŸ\6_?৖‚ -AEdRÝö±Àå½
-Ÿ-QO˜»‚½^øƒg*J= å¯\íÿ”g‡yãhÍTÞÕ -Õ¸ÑÍ©.à;'s÷‚ƒRŸÊr¥¤O^ÜÔ)”Òsôµ2¬t"Cè¤çw¢óÒUÄuŲ„^‘cá§N蛇g^ò -¯%¤RqŒY(%m¡”~ apò¼ié¯nk›‹_)%ýIžI¶é_)»9N2?Ü'KËl[üè*|2°%£iÿç/‡y£÷ÔtTw) -Ly -ßK@)ƒIcUèR#O|’Ø\ÐÞÞÓ);Ÿi¦ù(Ÿd=ŸpmÈ\?ô£5Sy[ -ŠÆÛ©DÙÖ¢vV)éÏr”‘mŽ¸‚»jhg‡%ëdçK‚ŸJ*ˆåÚ¾×{Ï “ -¯%
oápV ¥ô§””þòæ±Rn¹ìÇ™3T6(Íj¼Ïa?!%³ÿQª‹€O¬\™ìmüÂíÊÛ -¼ôXß\ÐH)iûöžNæ/Ãêwp'ËËÂø*>×'É0+ÂO©6dÝ‚ñ¿5sP¦ - -(¥R‚¶¤IQ§!y¤|r¢ã3ðI›ÑI~3ÍÚOdo× -ÔZãÖ› -”òÓlÓõÆÛHËFôO=·Ac„7RNû©k½% -ÛÈÞÜg/oÿ:élß!
ôWvî)»R&/‚‘„Š<‰ºd ÖËux}UE¤9DªaèJgëßnÔh?‘t,íh”2ˆè$™úÜø¼?ü* -hTç`HNÀ9•0/,°½9ckõøa´‡ÙŽÉõqv¸Ð…úÃòÐEÈqH–#²çuÝÛ€ê,X;ø: R>Rðµå¬¢pš©?¡|,òäcד0Ãÿ2é󖢨û†TŒô
?Ïã¼â/ÙÖ:
´–ëIF¶{rgŽk÷aç„zXž,‰‹„ôE÷ö î^-)Ja"åãÅœ·HÊF’¡}ž)»:Üù¼^ÁWÀש{)Šê›ÚÙÌòzZ\Äùi„ƒ|w–mL -i¹±žf¤ÉIãp¡ïqí!,Ý€åiT*X6–},ÖIÄ[G"åcä¼5áø9ýàçGëïº6@ÃBOÂvV “EÝ#‘)qe¥È¿b;ÓÌ$¦[‰÷òäî<?²Líìš*,]“”ùé’8s;…«¦}çP¿ÛYL-Ù-RV–ô_QTw@J¼V”λ͌ábÒYþL,y’¢¨_/u{Ï -U-!*a^xÍöæŒÍIÔcnÚeØ&7'y~á¡ïîž
Xr”ËDXF%¬þME}³FZÀ2}Zì)á9!Rúeðæi¦¥4QADʇç8‡Ík¤é£•¢¨ÛêP -v˶û—óÿd±ƒ—l{ÚØg`Èþed{{/pK;üW•®+àX´$@å4*.“?_tíj¨‘ê‹àáßDÊÛ)×Lx²9ÿù«Ï!oölêþS5Ìíž(FÂÏZBœ.ñbïΰõqúÊ
#!¸ŠÍ)–×½'…%¨Òõ º–Õºº¡{ïQ¿ÚYWª¤|#ˆ”?ëó²YOË}ËåE¤ìt¸Sg'M˜Ò›eSû²R¥·ºËȦËH -.mkšiwö|XZÀÕ˜¸L‘*{(`|â•ÃR-‘²‹]©}žbJFVˆHyÏ1âÍØeŠ;«Rû‚Rõ4ÕSÞ hÁÃyŒ—,q`;ÓÆú8CFŽ"#µ{ï :x¥Ÿs½r%(,#â"Îý
CiÖâ4ê-‘²k¥ÄuV‚Øí󅤋f}9,œ®F%ùuEÚôÄ ¨ÞD -Š‘p~™gK¬ä»³lsÒøßø³»3òcGÿ©×‚+ÝžáÚ ×›)X,`Y‰ˆZ¢µtïdê<΋!ùPR¾DÊö>/›p¬'¹g¤"å]Çû8WvJ:«HJ;£5)ŠêzõÖ§b3‹ŒCžÇøÉ"Ï¿b[S†â° -Ó»§Æä?ž³ƒ×âÈ2µãgË+XºçŸåiT\$$lªÁR_0óµ¤(…LÊ RÖu_Nït³¤”—)H²È“w8QÍÄw0uÎL Ó¾ŽEu=xï43ÈÈ‹8¯DøqïÏó #§ -JûEõFÌY•õ´¼ÁxG¤¼Ã°þ‡ZÚ¼Êpú6¡¨¾/…/ÿgÃ}ËCÕ˜(Yì0ÀvfØú8ûð½'Ií–ÓL¸úp<ÙB‚*Z²æ§QYKèÞÿ×ÿâ†{âA¤ÊÒ"÷HI°L‹›eO–‰”w8?ÿý^:Òù'ÌÓ¾|EuP½‘ G;ƒ'—Iqá…¾;Ë6'‘Ž¹Qd¤vÂõTàÉ9~d™ÚmÖ¿å,ß–ò,&.I#:ÏóYÊvRRiá¬J¤QÊ@1)¿1ÜɹYÆI»ÊJíGQÔ}SŒC6³Ž`È‹8//òà -–î À²Õ˜ X>egQQ°LeûNVHé—Áã× Po$þdzÿ‚Hù‹aáœÀ÷#Àûf…<IQ}22w®¨FE)$ò¶3ƒ:Ê’!ïƒÉ1ccÒèøKÝI&Ê–Ay’'qçø^Ö}
|ø™Ç‹²+¤¬ë¾œ^ÈY3áÁëüøgŸO4ÚNÈußJêÝDQTOñzÊ;‡G™zÃ_*^X`{sÆÖêñÃ÷dÈÛèפTY°ÌvXj¿Å5%@Ð`9,ó®ê;[2Ÿ”CžšÏëe|;o]L)o‡709_V¤M Õ3Á{V½jÑî·ü¼ˆórˆrc™%FvLÝÖƒ7¦vh
UùvX.ÊÊ’¨%Z»]m~ÝwßÀäÏäYg»³î‘2IKƒ5“«ÒÎH“DJoà<\gŸÁQž¤(J{>#›YdäEBž-±ã ß›CC*åƈ‘Ýi/ Ž,S;±†3KuþiQžFq·ÃþÇo(u/è¾ Ïã¼’'%¤„ì”h§Ô°×Õ—éÛ›—¢(½)FÂ+µe¥È¿b;39Š€Ätl`‚ÉÜšÑo*ê¨KERXžÅ–êvÐ~KR -F|êîOço6rèªêêþiwÑ÷ïêÈh˜üsv{ÁÈùÉ“N-ß³e9,ª1
Kpì5ôýîÐμ $Léh«@¤ì—Ö¤lÁ
?ehZÝ÷)«É_ô$¼°ñ—ƒºÃZØ'àâà¡Ö®Õ¬¢øÑŠ±ÿÈ€é3T–à`‰0醴*,°<‰q°
úÀ‰aê`‰”ãe?R»[桵õƒ–ò)߮뱿…g_vðÅvÝÏ;W_ùׯütàGíÿ‹Ë¿½ü·†ÿ¨ÓÀGB߃5Sü,nìà‰±»èûïü,1rª‚…ØYôåü£=7©)¯ËRXT㲑қñòÝžºùöuåù n¤™¿ %=S2üÓ&|£Ý
©å%R¶ÒâÝšÐOÀ´¾.?‡]ÙHZï^(ÉÏWìt–àµ8¯Ùïcô_\ùÑuÿ]|Äã|t×·ÊÉã•0Ûlh´XnÑaó‰ºÜÁ23•D'uëÙª´Ëaîêð,#UÜ*åýirÚmR¢Ÿü4ÔÝ’-xOÿ¦™åR–#‚•ˆ€}ï—ƒŸ•þÆg¿÷ëÿ¾<þæà›?ùçÃ|tÝÿ>Þ¿6à£Þ툢Æ,È÷—1rjƒ¥Ù]dùQž•”Ë÷næpW?ŽøR °„g=Ár`0Eõ$+…ÄHÛÄžê³Í0ogù§
ÑN‹îËßµ´¼AÊC¿¨FäÀçãØ™c}4‰sÈÐï”;Ú{l€[ÐíD]Ùá -7•D¿H¨;Ë~–•Ð°Lðf -ÛS˜f ¦Ë6À°óäDÊ~^#eAý -Ë}!ORÔ¤Ú{ÂÀ6X¬òrûKH~P.è–A^ -‰ã¨¨%Dx€”`ÔõUó@¤¡4ïnŠÀríï½ÜEÊ™‹áÀrh® -¶sÎr”
KU+mŒš)Ã7{b¼iƬw"¥Æä–XÖÕ,ÐëÕw‘ÒrI 3 ak')jB=çÛDÊ;í`Ý)°´¥T‰“(?ïÁ²“eèt¹³@‰öT˜+ëHÙÎòî¦heŒ/
æ–—5–¿~,(Y‹Î¡oOŠrk°ÅW8:±<¸}gÑ7ðGQß_Þ†¥u±•Câ4Æë,A•t½ÜI0ÞRH)‡ïúlgÅ…Â\DÊWôXŽ²¤¬‹AIôíIQîLÉý%ÔAç–½ã¯8å±>Ã2Ì–çIÑXbëeÒÁ -¹…”–óŠ”<&)j‚Áýöõ#ƒH9Ñ`za’>Ú(jrÙ°,*Q‹jL6’ø†™t4¯Æ.Æ~ÓÌXïDÊ·YÖÑ“fô(æ*RšJ6÷Ì -x¯oüM‹ÌɤT!ëäկŠ? K3€¿³(Êí/1t9=ðäÁ2a’rU6,a•ˆ8kX6:Øæ;8ÿbH)o¨Õ#e7ý›ö˜“Ii¿ -ŠW#R¯¯’芢\_>È_?â "t•94˜º_ÎísŠ¢]–å0ÀR4Rß"BÃn¦øqD%ýH=NJ¨»%;ãdÊ©¤|õ@ŸyUý¤¯ÛÐœÀßGå…r~¶³è#RŽÝÁ23•D_GŠš\¶*á ¨D9"j Í3Ûiè>Ðïiüb8×
ÌéqR¾Í²&À²kaÒ¡¤œ¹8m3ÈÎã’îÏug=ãÛó‘rÔ`ÆvÙuÏ&Šr_}X”<‰ò³o8
–pÎ âHY[Ë-ìSEé]–½[5ÑÇ– -¿ëõRŸv! 6&‰”uW,3tž9±ÃFw*ʃå{¶›Ù°ƒuœ -és.Ç}Åë±93€¿e(Ê;í=aÿùÇ.4§sµûÐ@_5ŠÂ
`™³`V -Y°\eŽ0œäIÌ:ÿ«TÙ'%úybõH™á͌њóHÙ½¯ÏÙT¼•èÛ„¢<ÜBHDÊá{óÕ(jJ‚TPRÃ2Æϓ†e›F7TKp8á›I9Íç?ÉŒO¢•áï3LÛL9ГÖ9ÿŸýzûi#»8οÐvwI¸xÎœËËV6j»+5UWiz‘¶jWEjÕ6UwÛ•¶Y !!`¶Ç\’¨ªö±ÍCU©O•"íc»}¬Z. !€mÀ`nÆ1$Üß™±½, iÀg`~ÖW£‘•Œ3g,Õj.„,Xhí#æ&ÛøH’òÿ—èîE×½^æÂ,í€eÚõ°ÌD8¸ñÙ¤Ô>¤®Øf£uŠgõû”y5sRò宺„_ÿŸ†y(iM´òáF2¤ln¯‘L^U—Kÿ’a˜+‹;°´*[ì.À2cÚ™´%˜j>T˜yëYI ÎêžSKùëœû£¾cJg·ö)e§xJª•…_7HJ+s÷ZØÐG¦~³¹5¸8cÍLû2aØ~ÉeRZ© X°a PÉé–Ò–»Õ„€·_"¥ö!µ´1 ÖëaÌRDÛg¤TÓ.Êc ¿5´´ÿ!`˜çòó±fŠ¤Ü“#Mt²'$>0ìÅr`9-E* »9 M;–6ÐéHÊ'Ë)éZL -úMȺ¹€ýÄÆç6†•·©v1zÞDR>Õ“÷.1|(aØKç¨v’ÒX.õ(Xf£®ÐÚj”§‚"C>1óL@d"ú'ÔFÊÖƒ(Ï÷W+ŸÉ -J|¡—=jRš ?‡°Õ~ÿc˜·’ÖäU>ÒH‘”[09ÒD§Ú„þ°ýßfX·8À2Ó«è’‹1½vJw[I{¼-ÓNK±np¯–6D`6KNsÿKvª9g¤€{,´´ßóæŤuÿ -ÓN8W5Ô@Æ/3¸2úWÃPñ¢-§;Eº‹/…Ùj¯R¥F¹-‡ó,RFõ¯üåŃ/ZmÒ™žÛ¡º„_ÝlÚoxó`c—ØÐG¦vȹ!¸#M4Þ.öúšc˜gƒïú)›p31R°Ô'c&ÂSA±…_ ¥÷Z‹±õ>‘‹Ñ&÷)ëOò¤´æ–ö›Ã¼<<ï^ HJÇ“÷/3í+‚a^ž< -–™ˆâMnï•òù-ÛM“”H©xå .´ªbŸõ[¹k`©À&]OÊz5^BÖÁ’©åóë¿“1̳©<HÊ!{;ÑÊÒÒ¾†•R°ìàÀƒTP -·¨²^‘j·€”ÓRÀVû͉aoª6™˜”pj#MNÀbØÁ(îÀÒÞŸ
ˆÅî,s×T;T\ºK=(œã'ËHJŽ!!8‘ÇýJù›¶ ÇéngÿºDoýÖìø±ùÁióô rœÇ˜²_uµÒãá*£¶Æ >ær;U:;–ÏçPΤ´g¸^’\îªKâãô'‰V>ܨ~{çÉ{-LÿuÆ0l·‹m û© ‚åJD€Ír±!p©‡Ow -çÈ{DJУÓj1 - 娟ý³™ýíCöÇ_Ñ+ï˜gO™'¾Z%Æ;0$lá -Î…„s„—#%a-Ʋ×øÅš‡ªÃJ€dºe¸“¸JêóY>ŸUJõYIÉ”IiÁVû†a˜Ó½K0¦„;o¢UÿÅÄ0Ìm)UúØc6 -”ôDÁ|S¤P¼S"2Ÿ]†%‚OKÏzÛ”&%\¼wýG˜&†a“3-–ýeö¯+É Î¿I†!Ã{B_}Vÿæ'À$4TK¯²ºÀ“dzaÒHงI9ªŒŸ^Ð[ÅbD5ÖSðX’¨ºyíT&e6rÒ„ý`b6¹3` +qX -Ë*ò F0`9˜êÃJr«äqI Ï -`©é°¼!Ùo—’ûÂ@UŒ”°„-@ʪLþ»FøïV{Ù[¼ÉDe%°¦«Žƒè:ÇBªgO<><9P>=‰a“°°“ -¸+¤Ô—ßÖ’½oÛx«•·€©Ø»Ž¹*éÒb±™Í RŽ³*¥Å°ˆJñ¯ -bÜþF¸¸oUàpvàhŽÿ³RßÉJ_ß½Í<íÇ•‹§ä«mòµN¹çíêyjȸå+M©5*—â+rgC §<¹ -Å+±e¼¦´]¿ÜèiEOŽáyXf“úA¿0…úKéoýôÆ0,}jݳnÒ2›9Ù †aceˆÑ(ÕÉbtš#ù¦h¾)ÆEú˜ÙZÉ|tˆQ-_ÞözhçŠÀþÕÁ¿|àÿ´ÐwªÚÛ°ÛÓzÄs¾ŽrñâIåÒj¿®¹»•ºñZ‡|µ]Gc«“Wš(;ëGÐq(>fèÉ13Æ„dΓp“èa5IˆJ$*‰ú/Ã&ia'‘³mÌI à˘†añÄá’éXG£‹Kˆ1ºéùh^Ýb,] «~¨Ö¼®ýYxûýï½8æôŸ(öÕïô6T.üÍàŸŽ·f¥ë\Ým:ÛX‡-°=†FPbZ4>«Ñ“ÏâI(ƒ˜Œ{ònõd©ÈúaبIb0°Å$-›»èÅ°›æ‰ézèa 4º¬ÔN¥cÞ̈ۦÏSË—¨ÕKõ? }ô«Ð®•ý«ƒ¿ç¯sQ1ž©4zÎ4Ê]rO%¢p‘¢‘Z©Ä¸ØlÎPb²“И)7¢'Ÿ“°$Vkf=94tb=xÔ-Þ/#næïÃÆÈŸ#ô®áYaNíϘ†M—âJ”Œ4n#ÝŠÃq±\ÃKôûjÅË ÆðŽ7C{üø£9”‹'·øÎn÷6îñ´ö´ª\:KÕwí¢üe'¥cÏ…˜u1&)ñ‘±#zòÙ=i/£žZN)£…âât?|0›Lin»wƒ )á¤ÊZ^u ô‹õ8`Ø”*FG¼8
(‚]ÖˆÓqšu%ÚŒgiÒZÑx 1\ójxÛÏC{Þ|7ðI®ÿDåbÓ^ϹCžÖ#žöJÇI¥óùJ³|µ¢è˜„Fº¢±A¹\¯/%¬È‡èÉL`’çùŒcR¿IEôZ¡8P>;ÊþM‡aØ©.;¸nâI gôç"&1,mb:4:è.11š£ù¦hÞLêFØ(9´°â‹jùuËÔêWÃ.íZØ·*pd} Îé;]ãßé9_§t|®\<\:`×9¥»•º‘Š±]¾Ú&ÃÝa46¦¢±qª£=ùÔž¬V{àÉ¡åô‘":çûŠìHJ›ìIb0Ÿ\Ïæ&’”p.e¯ìÿ}›èıs÷H4R7Ø4émóÂkÚñËÐî_¬Îö×¹|§ª½_|ä9wÈÓ~\îÖY˜.УÒÕ¢×l p˜$ÆiŽFôäÓaòÿì×ýSùÀñþÕ\€%¦2m¯g;wµ×ª¹këÝدíÔÞõ¦ã8wkQ„ -> -À¼8)Wµ`žþ㥨¥b@#ºQC£&Æ´éü”i»1b7à:l½\†âÊTŽ|W)y#|ìûá“Û峿’Ïï^Û¸‘ãk.õµVˆ½u¢÷¦8Ð(4¡GÚùûnã\D4hhäÇ{U4ºÑŠ#‹¸Q†½4‘'ó¤ILF= ¯H‘å+×¢ÿ´@QÔRql¨ÀÂg™V•”ðãâ!“â°ê?^ŠŠÆ.DG¸y™±Bfy"¹U4²Jq&rñø–pùÖÐéwC•ï¡köêù¾{§¤îK¢·^㟦>!Šq¼¡8чá-nwkžQ?ß‘ˆFõ»„Fò¤®˜LK³¤¤èáI<$,¦–/¶rV|”ÓÆ (j©86˜gAõš'!Ù®÷0©W%ö©žúÜžÀ‡ ÝhÔÜKÅ•©Åxr»|f§\ýAàÒÇÁšOõ‡ý·¾»å¾ö*Ñs]ìo -#í*ÿT4Ž{U1öó^\óðˆF@E—jÅݨ?x¨U<™˜6|£Ñ¨³'gðÐ8+Ìÿ=Jž¤¨u–l·ðY¦‡+‡IøµPþã¢ôˆ]*
¦Y4B¹a]ál FäbÙC§ß
U¾/Ÿû}ðâGÚýþ9¾æRK™Ô}YôÞ†Û…Å 1€bt«rЈØ9°]MØPºDžœïÉÔT½1©¾ðàó‘Óª>r²zÏiE-£@®¸Ržôå˜tµ:%ȳ©S}ÂlïÐ2GňhdÐU=ÂÇ”’×Ãe[BŸÿ,tö—ò…ƒ5{uŸùoÚ}wŽùî’º.J=WÅ&a¤Ÿäñ“ØDbD+ºçÚ@cܳoIŒÔb‘'ãYÒÓÓÓÒ†I -OrxŽ¹â_GÈ“µÎRŠ,¾ì %üÀ.4ë>"êJc,mZѳ¢ -E£öwÍ~=|ts¨|›|f§|~7Š±>Ûßèòµž–Ú«¤îË¢çºØ[lFþ§F0УæÆq¯0ÖÃßw«8Œ7O‰‰éjÝEžL<™˜Ô^*)a2ùºÄFž¤¨u—â°Š_””ðuÿaÂäº(ŽÆ¸3Ô-*‘‹r1?%b7Lç£bä2ç&¥ø;Ê‘ï…ý \ö£Påûrõ®àÕ¿þ~ÐßXìk)“º/ŠÞz±ï–0Ð$ÝFÚc„âƒ!DãD¿ŠÆ^6Þw…ѵ9t$(R«yRK¸Á`˜I6OrŽ}ì"ORÔú+T`ᘞ›”ðEá`z¸Ðªû@¨Xì\7ÆèXG#Š¸±#¹ßÄu‡Eqf(%o Oü$|ò§Q1^Ù¸¶ÏßÀù›K¥Îs’»FiÁ¯[눘Wå¢Ö‘¸ÑØ~xA4’)"OÎÆ03ɃÉ<X<ä^‹8,ÿ>bUê=‘RµÌ86˜gy>Ljžæš§éÚ_‹Ø…šûdRÑÈÄܘ‚nÌÛ€hte¢On}þs¹ê×òùÝÁšOµYþ[þ¦_{•ÔuIì»)¶ð“ƒüä -^Ù¼úiàFr±¥Lj«”º.Š½ubƒ0Ü -2ä§FùC1=ªtó G»–ŒÄH»È“š'ÓSSg’
“33œÏGæL0>v±«9ÓRµZ)«ô™é9H̳̚‡z¦âh´ÅÊP·¨hÔ”X†å§óS¢[`/gSœŠk“âÊ4†N¿:³S¾ô1ˆÑ«ÀßT,uTKÝ—EOèš„¡»ªúÜüDÌ{¸ý~·0Ò!ŒvÆšgEýïþµ²‘'µ!33“|ž„3Â÷
¥ˆ}RÌÂ|¨è?]SµìÂ…fá@ú³“>)2Ñõ¾HìBn´á.‡Y%"VŒä¿±"yаÄXœ©”¼.}3\¶%\¾5T±#xáÁ+{õ‡ý
œ¯Bê:µâp«0ÒÄ%ø”nÔÄ8áåÇ=üXO@Ä…ÜHh¤^µÈ“X’bR}qxVaÎò¥S-9V¢¨åDZ²Ýò¬g亄ÏëÚ:Ä.UÌtAÚt¾1b7#¹a—âܤݬ+têPå{rõ.ùÜ‚5{u‡·ý-eRGµè©‘ˆ‹'Œy„¨chœcg\ŒêRÿû8E%C¯¸'-“+&ÓLr{ò1—Så“bÂ$EÛ8öì×ûoSçÀñüë¦\ìØ>N)BìBU~èÊP…ÚJÓ4h[WuhÒ¤ªë½pÉÍ~i¡…¤í€RPB;ÄqÇqbÇqǹlÐvÉ9¶ãØ>vHÁÐøùìyßã$& ´åÒç<G_tÎïû|= ›ÚýfOîÖ†ß-TþK2$qI‰r`Åt…KnÌ£•äÂY¬Úœ8øtâÃçãu/ÅN¼=õ§èç{¢öG.VGÚ‡»Ž…{>y‚ßÎÜüÄ?îãÇø —zøÑ~>mÅeÓÐ)+qeð•â“ÃÖ~jö$¼¬Ž‘RZ³˜”FJѤ»SkLš†=x‘½ß@Ê)vŽ—*ÿ¨ÑÝb”“ÑhbbLC±€¥I@ÂWé®+6Æÿ"~ô…رßÇNîŠ6¼;Ó\ -\Œ8ê‹áÞ3!OSÈk†ºø?æã'†é™º‘¢Q -üD¹!ôöýH _Eö*þœß®h$lƒ4.Š±4/Y’›*É¥×p‡EK‘X¹Q¬ú‰X³%QûLüÈŽØ'/Ï~úÚìÙ7£û"mú(. -¾VÁï -^~´Šq|zûh=ÔŠð›tT|Âb˜zR'å7RJk“}>z&[`ß¾]ÃѽZù9‚aØE¸x©žßS¸*)á&|/£?SþQiÜ]‘=µI—45¹ÅO$‹÷E@cÕf±æg‰÷žø`{¼î¥ØG¿š=ùÇè™7fšJf.VFõa×iÊÅ%õ¹@ŒBÀÍ”ØO¹(‹1àf÷]ì7NÅ®»ÅˆnÄ°5‘ª=É0)}OJ’—l…3ÝÀ —‚MI‰aÙáf‹õ+1){rfŸî{ynµVüöœòB ‘º1/íÆÒ<Ñò”XýãÄ¡ç>ûøױ㿛=ýçèÙ¿P1¶X"G#]ÇB}
Ä1ô²<”‹‹VìL²ä©ädP\ã¢YÊMÃVMµž„ôÌ“k“ì )hÖߪ6ªÊ“¢Ò€a#pãôní2L -oiåГL‰„&c’ÑhbP\´b¹f¡Â»Óˆ•›µÏÄ?اb|eöÌëÑóoÏ´TDZFõáîãa÷¹P£0h§ää'†è™ê‘¹$I¹Ø“)Ãû„bÄ°ìMž”_sÛ¶mRÖxR"úœ0®Up0PY–Õ‰&Cè©RÂõÌ~åßwû¯Ñh\JþJfa™&YV,Í£•14²%’'E˱r£Xµ9qx[ü英˜ýÇëÑ{glæˆýHØu:Ü{6Ô×ò4‡|m‚¿ƒNÑ>*FŠÆ>è¥híÒh솻ØY•ˆa*J¥žÌÏ×æåIÙƒIvÐG« “‚’RéiˆaØC–(7oieR®áÎ=~ÌâF3ýÓ2iÊcInªø‰TI®ŒF±‚YñàÓ‰ÚTŒGvÄŽývöäkцw¢Íe‘öÑÎCž&aÐNó; -=©×jáœ&Z¶y˜ 7*Ñ“–ý.VªŸÞ£™f¤Œ3.šW$£ˆ¸€ÆdÉR~,׈–"*Æ÷¶&=?úB¼þ—±¯D?ÛýüoÑûgÚÞ‹tÔ…]gBýø?ÚσYÂÂEº€[ õÒŸÑÑàdJ¼KŒhD7b¶Jjó¤ü‚FÊ2L.)“~ÞbL6eˆ†=pl ÏÐ'C{ò“¥šT¹&Y¦¡n”éÈô(Z6ˆ5?Mz.~ôÅØßwΞÜ=ûå¢Í1:êÂ=§Bîs¡K‚¿ƒ¤
Ђž´!î(.æ\Tbf(FÃ,zR›½˜$ô™£ IÂ)Ñ“–•™hð'á1\¯ä Ùýº$yêzýöTÝŽø'¿‰újôÜ_£û"—j"Žúp÷ñ°ët¨¯!äµ ~;U(qb˜¹Ñǽ2…@/ QîÎh%QŒ†=–TåÉôÛååIYêI‰=3ɉî¿ÕFåÇ"†aß>`$áRf*É›UÆ[ÕF¸†;sf]¬zë´½nºß*x[âc=âd8è‚}ÂØ€0áçÇø '=Œˆ]«ÒQñ™‚a˜:S›'µ -“ð!%åUb˜#†$FÊOIÃî¬P»0¥ù¿ƒE)yÙšô¢É0O -wçäÕ€»ûŸÇ•Î/}Žäe_tÌî8C¬é7ò#èFÃÖVêñ¤üjö휜Å@ø¡Ož$›`$ݪ6¦Ð“¶ÆÍúECÂþô»^ÉÝ©5‚-Src‚<yŸUÞÓxÊ×Þ0Òiw]úb ¶è©!çÔP·p…F]ŠO
ð•©Ç“zF[P o×YìI8^f¤4éÁ“Iô$†™Ræ%C^«à •œh2¤Lœhæ®Ã\i#srˆÖ2kaG"„d®õáÖFoûy‡5Ðe»ì±_ñv|5Ø9íï[†”ž†a™©Ä“ò{åççKÙŽIIjÙIŸ_$’fîz%zÔΔnÞb¼Ye¼!¯Jö·žH¸ë¤(I6e¬àÉ&3ò~‡Õj]ú`.÷w4ûìƒöơΦ‘.뤻õ‹‡,Ìi7lãò~.\™{»âóÃ0õ¤OêµZmA”ý˜Lì-RfýíŽ2Åç)†©,ÑL™"tάD(EÒ’Lý5R$‘-w-[`$ù®ûÏ~ÉÚœùÙ×Õ<doîlrÀ¹ùŠ×ñ¯þöQ§mÒÝvÅkÿ·¿kjˆò2ÄlJoò4Åg
†aë;5x’¾T~>ˆRZ7ždSI4`x]µ”ö}ÄôHi¦#oVïÔ)#‰1IôI‹1^mX¶X[vRF>üÎCÉü8ÚÞžvX‡Ípñ¥¯3ØÓA§m¢÷ÒeO;Üùj°vx€%¤ø¬Á0l}§Oj -¤uƒI‰¾ œ¾>ô¬hÖߪ6¢'1ìñ%ÊrÞb¼QÉÑuwÒ÷‹æk´ËV(±À"Í‘õž³L•píàɦ‡
09ánt·:),G:£Ý¶q×Åɾ¶+^;ðR¶¥âCðuÙº÷¤ž½Q~~¾´ž<¹p$‰¦[z¨)=v1lý•bgXeÿ©â¾® ž¤7‰^4qÉr.U¼ai5’Úc0äÊcq+Ëäå ãü`ØÒ -˜uÚ‚=-½n›¿£qÈÑè¶pçÒeO»lË{L姆aÙغ÷$¤+(Ö&‰…¾Î<)„écNñ±‹aë'‹pÀÈÛ5H’Ýçàfœp)²A"[2–bŽdcŒTj+ ÄKÌ‹VëXçÿÙ/ûߦ®3ŽûoäʼníØؾβP4 -]é`/ݺn¬“ÚªnSÑ´vlëTUh´ˆ‰ØÇNÒº•N]×®h«R¶Ä÷ú-±¯ßóŠßWBÒ MjqL€ØÊ~¾{ιŽc‡Ð&ƒæ&ÎyôÑÕ½'`ÅÑ=ßïç°1°Jž·éîíéLøàÑ -ÀJ‡õr0ä€õñ~~*êõr:ª!8MÝ’B¡¬˜ÒöIñë¨T*¡ä|Rì¯IT}éç,¸é¤oa -ec’1a{Ìm"£néA#ñ§YüSÝ¿PMñþ#‰ÖMª|™,\ëõx@ã^[‹ÅòÂ9ï@È'V)Š%¾ò —Ü@ÐÚ9Þø&cþŠÝ’B¡P>—Ò÷IµZ¢|_ƒÁ
’1j¯[Hñ!Fò^¦P6ˆÉ.ÜÀuÖ¬¿Ùl¸ÝRKÖµ°³>12£mÅ{NtÈu£‘Ëϱ%Ïq›ÂÙ÷r#Ý£=îTÀ'’‰õ’ˆ%õXÁ-ÓAûp—ë|¯{¼ŸŸŠú>"nyIꪢP(ëœöIQ&u:€K`çÿÿ5¸×„«¨ªðšy¡)Êg’oŒX#Á!ç,œÈn4ÈOµ3FæJƒaþäŽâFØ€1‚*|L`lq7v
„œ!GÒo‹ólN/‰[‚Xƈ[‚v†#Ýc}Ñ-) -eYJÛ'µPª2)ùvƒ~ü´¥÷£ÔMM¡¬sÄc×5s«Ù -%쓂ЇöÀ5cÔçê’*%…Rœ¶ð¾ €FÂÉëF3ƒˆI"ÝLjɯC悈@2Á%„™Å%ŽzZSØ-YÑ$Çûù¡°+žÉã•œaŠzÉ[EÄÇ”ß6vŽöº'"Þ©¨¿À-C’÷…BY{JØ'5*•PÒ2I»Y¤Ïš´·[j³Rw7…². -Ò_33óÌf"&ì‘lƒ_ÅH& M¤‘wBhÉJŒo{Û^+˜äHOçPØ•Ø>îN«\¢—Qè–¶ c¸Ëu¾×}á?P±¤P6Ô'Eut©Q©Ô*UBY£PÔ(•°"l™ÄƒÛ|R•1én41Ô')›Ž‚wþº…™ob®š±CÂñ*ƒ -‡ü)8Ž[\áبûŸ¢+&|lÒÏ
„œà– ‹±»‹å·Mì!ÇhO'qKÿ]jHú*¤P(÷Èú÷I:g:F¯ÑÀ¦¦FTªªŠªªj¹~mpHµR%z掯Ôí}h·Ø›¦/ð×Ìšì“’—;…²†dÉuÎÂ|ÚR;kÖgŒz¬—+ei…÷kwÉ™ý LØ,™p/sd2ÿp‘cÓn6ákñlœÇÆx¾×=ÜÝñJ¹Ä-¸·Lú¸ c¤»c¼ß3õMÆP@ÓÉàt2$yR(”{dúä‚=ªÁÁ!5*è¢B^UUQY¾µ¬ª²RR1Úmõµ†ÛëÙ½ë©ý~îÙG^<Ýø{îÌŸ|mgìüYÂ,^ûAfâ“fýŒQ5*yÅS(_àŠFEøètÍÂÜn©%Ç(&ƒ -°áÀêr
†ADPÒoKø8I¤(φRe®d³õÐ×̤yR -…’ç¾û¤( …:Fü4ðÆ…BU]
Ÿ©Æ€F*«ªêÌÞ¯íþñ?xþgÏùקŒ¯¼÷†åì;pŸ}¯ÛÑ -Æ8Öǃ@B°À=d”˜9±åa‡Â®¸½3ñ6Åà&²¨šwÖ¬§>IÙ¸dÈ5K®sÌfä·Ìu—Mú¬‘™mÚ!X4Æ>´¿ÿÔ!×ppÆrlþñ"Ç&C6l•|Î!´‡»:>?‚[ò«tKNu¸Oú¸TÀ6Ôå:ß랈x¡° -Rœ„¿-áiKøl΃açXŸ"A] ‹+Mx‚5ß"Ð!ÇHwÇx¿g"âŒù/·”¼U)”ÍÉŸQÔªsÞ¸pż=‚:nùÒðIPÇo<üÐþï~ûÙ§~ô«C?=qä·DÇ[ß>Õùá»I¿m(ì„ýŽ bÀ!S[Òωöõ -¥$ö$.V»H+µjÉøsÝ´å$!Á^ ,4ñøØcO‰í$>åàœÓº)HÛã$mzbµ+îÂï›Ï™uÜvÛ$c;ï«G£ñ—ªqÕ÷{Ïk_w9 ‘{å—¤*ã‡Ö¹Ús¢¾µm6.ÌeÛ²‘F6{1ÆN&CÿÀxLjƬž–’1Ràã+åDp GðD¬ _¦‡fSÁÅÑ0Üò¹%A,¦OÂá“ÉŽ';Nœ8uüøÉcÇŽ=zìÈ‘cŸ>„j~éŸÿÆ׿úƒï~ûõ¿zág¯ýÆuþ/¿½âûóïê5HãÂH«bih -½,êêd"0•ðŒ0&yî9‚`Û-ûð„©ŽÇ¼ˆ!äш&ÜRp{GöYŸ¿ÑNŸÔ¯ÿñ3²|ä“ŸzñÔ)ÐÙÑñ’Ãñµ¯|ù{ßùæë?zÕùæo]uþí÷¿„:âO¦Þ†.ÂçÒ!샓q1êÅ-Óú²œFuÜo|:q>ÒoÝÜl¦êæ3¼ªt 7\¤”DsÀ$óýÁ%ù½+]UX%“*̾ªØ×zä•s'ë»8ÃN“F¶WÝR=懪§½npèß\Z›J -ü£úü‰PsËmAÅß?ó!ªæ3ÚÒ˜~3Cê!û–‹‰Ûµ$·$ˆçŸGÜ'êµï¿òv¿rþ§¯ýŠ{û_kÿ¡Ž¸˜¸Œ³© (%&{Äv9ê« äHãî„ûñ•0…rÁ?aL1Ƭ˜ÍQ"‚½6„5OmËE‚8´À!ãEáï›né?¿0çÐH&ßwKÆ赑F¶w©ªºåì©?Õá{ý†FªæP¾ñò¥?¿G™"ÜÒ'ˆ3ü¢¹thq4RÎêH@ˆ%°<Ž ¢¥Á%ÂmZÑpÅć»<÷aUPÇñ¨‡øQV¨£Ö·}1°Ç'àf‹§®òÁ´sLÞêæq\Qˆòª™éq0ÔõÛsÜ»È÷š
—¼ê44Ré\û¹ÜرŒ4òÖYÛÎÿñ±Èu8dÎ쳩ÐôР‹›\½aFú‘wSÉÀl*]#·$ˆggq4<™ð?„7 -uwÛcݽ³\wÒ›xˆÍZ|J¯^è¨:í/Éä“ÄA 0I8¤ -#a’ÏÌð`)9°™b& Þ¡¯ÐË©„6\‹ÜÌE…^.9"CI, ¢œbÃ}1ïNË‘‹xpͱ½˜<ªªZ7›³xdßaòªbßpÉÖ[ÑfJÕxØ+¿U6?®*«îþõÆ'êÛ‘k$#¤úHÕ0ÏÓéôX¤Oþ0þã1ß|&<÷ç÷3¼êÝun97<¸0.guèå-î– Ru™Ü’8ˆ5 -[n4¬ØÊ&iÜt,ªAþ®yŸ>T¼˜ðI[Åi¿wQ²^?ˆ6@±Wž§ý¾[âɤª"U™¼¢8îº_jhCßoE™$ÕÇ.ÆØ“³=ÇǾʇ¿îA–ͦBŨWäBaÿÝRPÐÕ‰¸zxp>Z<é–ÑÆ ÏËùš"îki“2YÀKQëÛ"™|JÙ¶|9\2|’‘Uτ›§ê´W™´á’±ž<î•ñ‘2i…Ùß¹`oh>æâFR=‰Q·Ä«yˆ9
YÐWÐ -êÌpp*ù`z<&ö9àL±ÌjÂ-}¥d -˜PøíÜ-Ãü‰øã1/Ür!ZÓoæ¢å|Œt1!ô’Ä’hrÌþ,gut2Z:·ÝÞNדû¤ú?æÕŽòò ¯²N¸A¥fVë -Ñ„ 1ãE±cïxÔ+p•k¤è™w™t‡Ý¥µi$•õUo•¢Šá>XeŽ[¥§”˜Ïhðº<Bð -M
£ÞZ x2Öë%¾ÆdÂ?3<×]‹ÜÚvKËý èÆr>¶ak3“Xë°rf”Œ%ê…«›G?$áÁ%Ér!šª³Î!/J÷V™´ÆEÚèé¼ËN˜íÃ\6c+PQµHÕ¹å?õH^ƒ@Â-y”L%`2î/ži " ³ZŸá–êDÜWJfSÁÅÑÈÍ\Ôr— 9Ëù6Ü‘ö3IÌ™á`!ìÉþÚ0(¨þqت2î›nRÊCŒRcÃ%?ê•ï»¥ŠâÀùŠ³³Âìënûʹ“f×øÎض¼äT^g3Ìi~È‘#þl¤™"ÂÉRJˆ÷‚ÅnÉSŠ[Œz'þ™Tpa$·,çcÈ÷Ûˆøb¢.îW¢uÛxÇR“i½þí5¥!~ßÇ5/‚ªª–M¦Ö-·‚ -“÷ÊÜ(,â ¨8
‡džkÌñïËÒ{Wºp^UøЛ¬k‹}Ñìæ²eØiÒHª6«†àH§Ó”,“GŒ:óÍgÂ"CkŽg©[š9½än9<·\Ó…^B,M·$±$öY}ÚÐú&l'¦‡ñÓú¬DmP„-î“öŠâXgRÊ6ǰǪÓ0IC#õÊï_•k?rv¾ËwØ‹;ZG·m‹‘FRµs1ÆÄUSG]…XΦ‚³©P1êå.guöåÂê%À÷™ˆûJCséÐâh¸œÕ! -óäsò' …wa/Þf²¿8 -ùÞ?š|óÀ×"tABÿ©óäö©eQFÒ#ƒùm¡°<‚ú´hDÜÙ´‘Mm,¥Ê†<0°äKŸ€ŸkK©xÂKJͲ)×ÄÆÒ\cYÛÉÀK& -kŸ·m°W_wÑa—±ºIBacUÒ#Ùl–¾ÉAÿÕÿžŒh(*Z!ÏÛ‡>î4Â^ DìŸ8Œ‘oúÞMÓ‹‡ÄÿÿáÏ8½ÔÛA #1˜Ïa¼b˜/™3¶.é,–¶rj}>Q6˜Y6³÷Ñùqxµ
¹fÅ×gaÂn¯è`˽2µ%wç`¯ °Ð»c}qú<è#IºË[[HÚšT˜›qßhN¿%£…yòþ-'(vÂâ°ðƒ½¬ºŒÐs0äË)ñEX„“VP<úšoÛï9ÅH"3¤€ŒÄ`.'ÂyoS)-lkT’5+Q·ÕL¼;È(Þ¸ÓOÚ² FàX6äj&ÞXšk,k`KîàÁ© IXßõ¥¹Š©Ø3ÀýQ¼š®Î'‹†d›“²,_ùÇH§÷ÃØŠM:ܽ„=¯ÍþyÀ€|ûІ„‹€§M¼‡û¦õ÷'˪±»hHæ -"Щ$KýÏyíÇ’¡P=Ô–eSžÕ¬¸Í{’þj{¶ŒR2üåµL|}q¶±¬îŒÝRºOîÂ~Vé -îÛXÊF6UMÇŠã$IØÓ-Ì‹Yθoë=^?£…ª =$^z›OØn‰H—ŽAO',þüؘì™Ùyr{Ôwà#2ƒálîþ™E3R2dwœÎ'YµCœ6þãõëJcÐÕLÆñVNÝÉë»L°D[Þ ÂbQI.kµL¶c$I¾qSÛìnýå0BïêÞ_¾¥¼›Ñ“œKºKàºñ(äƒEyý@„ë¡ÇvØsLþxf©$‘‘ÌuHÐ/Ëò™k¶)Ûzw|É -Û/`ÖÅÝÂnÎ3vY…ýZÙTàu+jgwy˜a„±ä¸ö6ƒžWS¢ƒž¼bFèùfHJú -S…%̻ՅdÍŠ3ªñÁ*…eÏ–eS®¦c«óÉÍlj'¯ƒ-UÃ]VcØçEscqÖÅÝpZx<Ÿ<%]9y1CMÏ'Àð$ez›ìè0O¾œßO‹mâmÊÈà çÈ?áL“#ß÷×Îcw‘‘ÌÍÏ€*!«ªZ2”¢.ƒ*aöUÒ±FVf,yâW“\´¸n±™“ëVbcin{Eظ¼Ü+[PW;»%þâÉîÓ{›ÞÊ¥*¦2¶’t»‘M•49›ûç1bòêBÒ$àœvȰᎮ+5d€Ö!"0òEXüðhò(äkÅf€ÞðCòõ±rZŒD8¾#¸KƒÁ`F&t®†%Ä6¢E}Æ6d:—RÐ2;ïUÆ´RÃ}[º…ïU³â닳em'¯/ÏØ{)Ý+SI6–aWgIÂhëR
¶fš´’ŽqyÍÇ7„¢å'ò-ȨÃ]_£Ó™ƒ$;añÝ´Ø Ñ;ì -¨¶õH1WI–å+§Ç=±»ô7íÐï¯+"ì…ÚdG‡åoúèìþ«ØòO¼ú«8(Æù$yî4Á`0cŽ?Yê^Ï&jºdÑ’FgeÙT6–æjVÜ…ÿÙýeíÙ2Êl ßN®fbkÉœú¬`ì–ÒPæ%k¿g§Ý¿]«>/š qW’ˆIØÕض«h<e/Ð=^oò8‡„¨j:On·âÛ‡>î6»)¥†t 篈MRR‘^'¾#ÿ$uã`ê‰Á`>lîþàGpf1)h2¸Æåê|r3›*2£#¡—Cƒ(ª¤øš[¹ÔN^ß-˜`˽ò‰-÷Æ–p@’›Ù9Øb $ûL)KZ^Bˆ€s–Wzç€ïՔؕöS
ôŽìäEXüù±¯M¼‡Ä’<ð{ð³·—´øxc0˜ß˜‰ ÉÁ+0"óêŒSIÚº´½¢ºÜs·Ügú¥t—Њ ¶Ll,Í5–µ¼ÁliA¹»Ž‹$áëoåÔZ&†’<©ZÃIY—x½˜“æIòûV@tI‰=Ÿ‘Aô…|ÀÈ×|½"¶ˆ§˜8œòº¥T !#1ÌD -&\”e²ÎÅbÏ×€®Í&`Í¿Xà_Ƙ¤o#æb\‚CôÞŽJN'T·§
8RÒ¹j ãq€üï‘â0R¼ªØônï¤E\œ‘.”$ƒ‘ÍÛ³‡ZŒ•ùV.Ûx¢¯Î%×’½ûß +Ú¶ì «šå¶To.ÀË[~áT·ŠégI+’|k×æ§Kp•BL^(wÑ®:ÂA‚º%¤TÏ{ÔózœœM.LÕ´Ur4î¹d¢‘f`B)í©1pH¸
Ë0Àˆe™[0®ËÇÀ͵ËB*Š^ÊDWfkóI˜„zÁt´&]Œo—d¶^ʬç§á´Q’oýáÚL0YÉ›ˆÉAÒýh -X%_z7ÍHJCù ôµŸÀ ØÔ}HÝ{_|raf8¶…!‘‘f0#~¸-5og¬j„Ë°ëÌ2X9©æâ˹øR6*Ü%ý°‡€%´d†+˜ØÊÜÔz>µõÔ¼TtõR¿
Ùý‰ŽüQ’ß÷5ÂË3 ¸9²Òœ‘ˆÉAL[J¶æ_·ÒÕwŒÝ§ž“€r ÎÓUvU²çUv鯺g$Oï;ÌÆ`0˜áŠØgvž.š°‡,=ZÒùŽ²Z›Ÿv`Y2˜t$ô‰"–p´€Ù&[ÊDWfÓÏŸšõR -¢Û.ç¶Ë-Ým‹‘þôùSc9sNRúD
nõx[<@Fx¸^ª£@¬=êáÖ’.Àk·á0Rá¢N'”7“„?¥ÜÌü%ênÒ‹hŒ¸zG0fC)m²p÷H6ûe‹…u¾A¯Í'Ÿ-L®œÍZ>úR0[§ÎH9©ÍÄŸ-$7zÁÜ*vl™s¼W¿1[¾(˜ÀZËwŸöÒZ°PaŠô¬/檈Úyô@ëÈOªGº¯oH8#OÊ·F# -n<á¶ü—•éµb lÙ;茷å™Yϧ–²(É«—0ÌyÉçÅrELGÄMkžÞohäìÑè {Rmy:©œ`dCHò%ôÓÿî'Ý×ÖŒ #1æ;aáîg‰¿e´´‚U2QØÙeÓBf:´ÀÛ&«f£«sS09/ -&ð¬¸]ÎA;Œ„‘ºäv™7õå\Ìy+é—3DL‚\0ÿÑDLWè=8ì¨0ã•îÆïR<Þ§`äÙ$œáˆÂ©ºªç?ôãÞ+s5)2ƒÁ`¾7š·g³¶+Æn~XQo<1Vç“Îoµöú[*ÌŽ-;Âo¯Ì&À–›‹F½ÞnÛÒáåó§¼Úú²O~¸ÊçM¤ÉúZ`®N¯WŸ+6uŸN(¼ÉlÇ´ªÛÖÜ -Lê¼·ÜHXR|Š–2ÑÚL|m> ¼\›‚¹r^¾S«¹xÉdVZÜæh^ _Ìõ}ÀHû<)“*÷$òõ89ò“C?á#¼#
ï'ögwÏÏ›ºxÁÃ.d$ƒÁ\/⇔۲k¯$“…$ -#mq<ô‘Ó Ùp`©€-$[ô7ÎvL0ƒÁ`07ÆX³ù°ó´–úgAg–Éa ’U®Í'ËéHQ—íA*ÌJòGÔGð$¨RâšÇ¼‡´o@tÇ>y²%FÊ?îÀ§¼™$Ç -rÞÞüû;ÅHœžØe“{ì³·ì«‘;ÜÔ2·pb$EQu )Îùðþ–˜mX %¹YëKE¥ŽC4?|°÷\„9°bäÉxŽ¡Ã.&Ÿ Ýj¾»˜æ-`ðp·ënCè‘&…ÀÓ—ºœäS~Ï>ÝK%þ¸ŸØU˜|óíäŸn -Õ!ŽÃœ.”ˆŒ’óõ…¹Vi®m›‡—ñt«ÝÆð~P"SÅgñ]¨«»CŒ¤(Š¢Æ]*yà€g? -EQEQuÂÉFòíL -H‰ì—
pTÕ€ï½/!&„ò›È_aB«A+ˆÊ„b‚J±”±ZDhÅjh¶bÑ"SlɨSF[ •q¨€vB‹P¤ -´Pù)- ü7Bd I€&ûî;=÷î&_²»ïí{{÷|“!;LöíÞsÎwÏ9ŒWàœ=øñ¥û™å÷!óጽPÚ‡„#¯Œ=^vÞï®^áØÓfØêçõV$Ax ê6GëÀ<=\á
kóË°n -]¡ï¥J{³Xú/ÀÃÝ-‚0G¿OKøK;ֺWáÌ·ÊBaפ
¥=Rä2¶˜Xœ - 0M5bÂcдp”;NYºý‚¾#ýpMg½äÃ|ÃÓŒÿ4ðº©ÐWŽ4,ô£v_ã}&½ú÷Ó:ì2¡ûZ=lXËÍšj0¾³«T÷<6Êg–ßñ2né}Md~Â’=§«À—}.Øß5+å¨Û³º)áÞíHÎ8·tYçöyháÎJ-îk~'3~,Ϩö&XÆ‚dÑ
·Xn‘p.ù຤ÛøFÑ–óáPÛ>7¶¬`&ù&X护ÑM…ž5*þ~ƒûZ$š½{ùS:ÆŽãçÂVB£LJ·`Y+T×H$\gR|%²¯1Ñí닶¯†ð¾Õ4´3hž±XÞzÝ4’J˜åwà@¤é(¶ëùÕ¶•_R¡
`_«‡óg,Öó]ÆœÞrlØýY.8.lºg´í;jî†È¾²X8wÓÞ¸`·oO:Ý”pëZ“„DƒªEÚÅ-ãç—„#*ƒ5D^AÂ;LI5ê6è(ñV»X‹
2·"sA—Ñó×VãTª·lø‘1ºqVx”„`¡L2%
ƒ‹4²ë®ö“MÿþTÅ÷µàª¦p ¬ÀÕuwVUn2"áü`CòpˆÔÑÊþÜÿÙ¯÷«ª+àëìs‘AGETdTðQÑXšRP#é¬m5)hÕ–g}Ôˆ $¥!)Øf,QÒÆ*>ZƒE¤BÖ·ÅG0uÄ™jEq@ïÙ{usÇIg0uf€¿s¿ß_7œýøöZëÜY«Êé†ò—<k©²þ¥K1{ê&íF[Úg¼VËÀµG:¯e7Ö
ùÎË·T¶ÏÙ[…5º3¤”÷·«1›ÉŠDëÖò‹D®y‹Ž3wå+Ùq‡à!²–JôÕA…(ov -s·ºiöô-q…8‹ƒÅZÈ,lQ¯‘7®¬ÿOºi FYk‘è}…8b'<n8ÕYRˆÓ8¢8k¶»}ÎÕ÷oiL÷Ë#ÌkyÝ3¡=L,‡Ý†·ì4.â·¯(ªt‘nÐèË67ïU‚xÚ^_íU€5–wãÇ-í6¶œÎÀµÒ2¯}å[7ܵáÓl›€æµÖì« ƒ‰¥ÿŠ"Ä-]óŠÐo6¯Uîf×s®¹ç…Ùù0³–²/¼±Ô>“_ðz_Wü9šçµ.½Or÷?ßKSÀy /ô?ÝX?§è'ñ[Ư -Ðqì'+l錎~Ùï_ù$Û˜¤\€özúáF±ŒÜ À=Fö_.ûLö‡ÍkQ¶ú£GýìÖç+YI1žÓ MÃ¥”÷ï;›o¾]˜ê–òºs”Äyïk.Zæ5þÓÛ×½—îFéÄ–÷™ ‰.?»¼ÙÇ}ËÖQ$^ëk«0p®2¯E¥“~ò‡ßL4Ÿ×Z^§b—7kò'7¥-X¡x]Ó#]Zõˆ\)›×úžô£ß½¼+k"ËI¡²–Jôµ¡Ðçjß~ùÞ‚U7ÍÞÁ:>˜ˆ"›ØÒý†ÿpñ3{+P°ÂÖ¬¬‚î&¸YåâÅÍî›êµ}4ícI«,Ò~eÝ£ïV_ yµ {&!¿¢±DóµˆqK;Ê]ßF>šöpqóO¼´îÑ׳U§Q+fÖR‰nê üˆÆrèÍ[¸Ãm…EeóZvñº7añº·›Òp^kÍ–wpÓR’ÞËÓ{YP^Ÿ:¢˜³y-[WŸ!ãç=þAv€¾˜óZk^w7n±¶¢ÀqÓàu™¥´¨EÙ+ñƒy«*+õE/lͼn¬=ÐXN|´ÈqËÚ›€Û}µÌkÇOœ·*›×lXóž×Z³u^{žNj7hÁÊkùØ÷°
k!³›9nþÚ×>J——TOÔ2A÷œŠ: 8¶A߆xm8õ„þWg‹èqüysÞ¾;[Y5Ìkmx]ÓóùŒœŒ~G“¼7ðàK´~ tà"Ø\ZØj†ŒµâæUþ¡ü\^¯Ä<K;¿Ñ;ª!niàVu·CŠ0¹æ×ü˜ñsïßTYPðÕWØ*¼n;2ovˆ“Þ¯Ž¸¥êBÁlBšõ:ö?L×’ÎkUšµTYï”(ïÓè»|W~j__¼êô¼w¼³ºöýÚõ+_ÿ ]FR…óZkA“ɈåÍ>yúžª‰[¸s¦ÎœÑì~Ìló·mþ×Ì}þrÐ~Ìœ~ý=oTš*×ZKô•cë›Í2µJšÉ -Ÿ÷ì—T{akæu)à\`Õífô+ØQ–gÖ>ãµq,^y‹¥×²j‹›¦½v}5„–ð}þ_´òCCëý¿9ˆ?¨…×5py³¸ªÂ¸<{{n´¼9é¿ZãFp‚îŠ6¾99å%åD@€¼®í–7‹ÛËšä½qDàuX7éäüMŒA -úæ0‰óŽPGDrøz-ç½oD‘è]]°ê[,SÒg‚ÝÛÉhåÛƒ,o„)ÑúZˆ€”ä‚OXÞS¢K±â‰[j_MÈëÇ°òædØû,o„)Ñ
=¬dà°oý¥æÙ½]w‚:ÆIßV•‰ -Ú0Dâ¼3Ô‘Ü©IÞÛFÔ)‰ÞÛ
ª¼Åröv–7åu2Vysr“–óÞ5¢NñZ_kWG,7³¼¨².…Š›µ¾W1n*èî‹¡ÚI'½ŸcÞT¢/ö´’#’ñÁ^ "DA7Y®y#H^G€åíÌÙN(¯ëJPysRÇn’@ÙͽZòæä„Wmæ$B´ñd»Ã8b™Ín’Pyýó!Xåï“,o„*è%`åíb
ß“×͵v‡aDÒm9Ë¡*k`µ“çìU–7Â4\ŠUÞä·Œ¡*ëóG`•·ÿ¶˜R¢· •7{~¡¬oÊëûçYÍ€I÷õöFAJôYAj'c¹*ay#Pvsçä¡Žˆ$^e#'$¯;#µ“%¹à#–7Btu ¨´/]ÂéPY¥¸(n6½
}Çj2¤ ÛÛ%†É5ŒÁJôªoNúÖ3o„*(¥¼SÔ“²˜Q¢ëZÑ@‰{’å`%º(nö©~̼*¯Ž“8ïµ_$Ë7‚•èÓ5v‰Q89m›}3¤ º -Ny“¹Ê¼0¯ NÞzÿ‹í$êŒ7k'§{–7æuû‘v!DÒõ ë‰P… ·Â´“±ŒßÅv’€Ysv.Jy3wh9ï#ê<¯/’·X¾ºƒå%:¥›´ïœÍém%¥¼ƒÔ>±œ°5í‰P%ú×î(õ-’+”y#d^o°ºÁÉ¡ë7BæõÓì"Cˆd\¼2k'qºIYiï¬ ÉT”òæäÌÌ!óºJ}‹¥Žq#d!è’7'ÿaí/¬ :$nVÞ¦³¼4¯õ½AÆ7'ýþÎòFÐüÙ¯ÿXË2Žã×ýý>çðcü:$OkØ -ÁÑaÄ"TZ˜K¡âšX˜3@‘-ÜDLÑ~àsC˜¨ÍBØšJR¸a#jdSaSB‘¿=ˆ‚œç¾ï«ëûP×jÅá¹ïë~>¯?€ÿ¾7ß}ßÏuݼHË:™Ó•Å8PËsÛ%ò!kQý¬“ šå}Õ¬“Í'0ß@5Ës•Œ7Ùy—1zÍïû’šÞšÞÂ: ª•ym184ÈhƨæÙÎR3Þ¶Éö —å݃•Ì·]ç0Þ@5ÏOŽÞuû
ƨæ¹|ŽÜdéã
TsüZÊB§Ôò£°ã
tóüS%ëdNŸ=€ñªy¶cÕŒ·yìÑhæø÷
:z˨×Ëo ›åy:¶I9åµ½jŽ÷’‹‘†Jä¸ -ã
´³<SÉxûÊ!ùq - œŠà¤·=lC¿*€³'Á-ýg¨÷^ôIPœ¡‹`Ÿ„4ÁŽRßŠÞ ÑßáM;‰Þ ±O8Có<ûÐo “D~‡3´„=zƒdÄ=á=ŠuRup†6p9ôèDg¨ËV¶¡_@g*‚ëep†šZÐ$F‚»£ø¸£“Q󛸿AjÛÙ1—Ñ¥Ð$DZÿa„Áå4å}ö¡_@g“KR„Áåt#£7Hlmñ”%º«ø% -pNŽßUoò1c÷pÕ÷¾œ‹å×ÚãêM¾æÆC˜p ’å?Œ!ã;‘Ú24 ÁJ9o[o” 8Ð)çµur>ã’ 8ЩÊG7Þ$8\)A¥n^F™ï<jO‚›|Á2Îñ}”ú®ã"+åíÝtqlgGÙ[ñ&½Á.Žßº-ÎÞècùÀ2¾Ó¸8hcù¯Œµ·â»îì’OP"çíËA' î®rgÐ!ç-uñöFzÔ¨ò/¢½NR1àîÀx=,¯‰x¼ê÷sŒ7PC~û—EÝ[ûIÌ7PÃq~O¼½É‡-eôj8>=3æÞíÂuô°|lR¼½úbz=,þp¼½%´Žsß[p–å}•h{3tÝ~Œ7P$ç¿›h{Ki1rM,oMbíÍÐðqEœãµkoM—/ô½Å - ã#S¢ë-¥Ëö3Æècyw;ßÔÜ\Fo PÎ/][o†-?$ -5à|ÏÜçÒèkŒñšüÒ†æð@1—JÏØNýPlgôºüƶÑfµÒŸMÄTo¦8‡¢‡±N‚öÔ÷ÍV«>PÈ'ï™zÁ¹´ñ
ôúy»Õ(æÓɘoì€sèä|l]k¤^.dRñ¨gè€s©ý¼úå -¹L"5¯7‡¢û‘˜Bðï,泪·ˆqÁ9tÕ«êK -ý³½™0àŠïãN¯ÀÛ-8$ï_½¼]¯ûóé„)½ytí¿s\Y‹èíOšl«ÞúÓ‰X4bBoêÞ…ë
t´Pp’Å
“Ë›ƒ¥Â…Þ\íƒs©úŒZ„´#Nýó“Ëš5Õ[6iHom^Ää¸òäÂÁ=võøh\ÈgSñÀ„Þr÷#7Г\`ñ’|tõÄØP¥Ðß—ŽQß„ÞVMc=-4à$¿¶aykh°ØŸíÍíuPÚ…u4%¥˜÷Ý”|þ–ÉÑÆ`YÍ·Ä›½é=àÊáðJ=>€K¢z›w÷R1î™j5ªª·LÒ„Þ<úøY¬“ ©noó8ÁO®l7ëåB_:ôïèo «noó'øø»Ç›Ã墚oñ âkÞ›K«N`¼®fz›ïý|úÓã£Ã%3zóh;ÆhK.4à$‹cÃÕb.m@o.ŸDo +)NðÃËTo¥\:éÞ›GÔwºrÏàR\è-œû
ùWS£Íj!?Ó›§zÓ78‡Ü{q½¶älp¹w0ÁǯkTËùL*1Ó›ÆÎ¥ÆKŒñººÐ[x~Ω ùÌçZ£µ™ÞÍ{#º‰ÑhëÞÎÍùš†|w«U+÷gRÉ ªuoEb}ÍöªÞÎÍõ7‚¼¬Y¯äLèmÝëè
ôõVogÏÌõ¢ ->ò~Õ[VûÞ\úrýgŸ;ópÓmU -ÙtRïû͡ƳjûÐÖlorÎëû7|ÛH½R̦z÷æÑÍÝ 7Üü#øÛê@1“JÄ"¾¾½9ù!w®Ìcø¿,w{{j²6PÌjÞ›GkNc¼ÎQ[··S×ÔªÅÜloŽž½©Ou'®70ŸjòµÁb.©î7}{s©~Lý4 -à2’ï/ú’j¾yžž½¹´ië$Ø!äC¥|.ªÞM{{ã
,òñ÷äó }{siÕ Œ7°„äé-ÝÞ"ÝÞzÝÖÅøt+ÆXCðÎ|>®mo.õÿ½5:üh.›ˆE<ÏÕ±7Ö…jØ!ä'Ó3½éx¾9ä܃ë
ìÑáGréxÑu¬½Œñö8Ï{r}ÚöFt#£7°G‡ïíë‹©Þt<ßòŽuì!%ß‘ÉÚööÞiôö,¶eÒATõÖë¸.Â¥=Ý_ -¡X½Å2þqæ
etÓ´"Ý“‘§ô†² -º±H½Ù9ù{ÎI”–×5“íˆ+ŠH¤7”–×û÷*Po±|—sååõÞ Åé-’=ÕzÞß Ð+N—ìš¾šŠ!‘yÛ™7”—ÓG…éÍ~ŽŸ2o(1§×Å…é-‘ƒ×Û…”U]Ï·_ó‚ˆåtû -qOƲ×ãÌJÎ~Ã/(ȾÍUzCÉÝ~RöÍÎÉ_‘ÊÎë–9Åèí€Í<ßPvÖÛ§ŠÐ[,ßáœDéy}vjzÌå,’]ÑzÞ_ÐcN×M*@o‰û*ó†ÒsúÔ„ôÉõÌÊÏéŸ%ÿÞùÀ3vÚ%W×Uè-–V>PvNïÉ¿·XöXμ¡üBÐk‹ÐÛG½†¼¿ ׬·rïÍþúÅä† -°ßò‹òMÒyØÀ9‰ -ä›íÛWû† -ê¿–ÿ9-gÞPA·™wo±Ì¤7T××gæÝ["W‘*Áëk3rî-’‰¨Ëû‹ -½Ë‡6Ъͩߟà¹B=ç$ªÍéà1ý¸(#ÙûÑ´n Òœ¾t˜O¯ÕäóªÌ*Ïéši=.’71o€ª×'êup‰L{y4]¸»'ô|áβ®hðzçÄžËØGé
‚.Y=Éì:ç$ð&KaÑÈÞ‰ÜLnÀ¿Ù·0îYp‘LÚÈ9 ü‡ÕpæÐõB,ç+û¼ÍkèUp‘Œ¸W]Þ(§õyõ"¸DŽäœþ‹×?-q‚‹e±Öóþt@Áx<ÂÆ({û¯aÞ€ÿåtõ´^÷erþŸ×ÕÓ³nÌ2zÞÓÇÛ{+[3ÞÐ÷ -(xýÍ@ÖÁ-ÌûS‚þz·Œƒ»5ï•·0É6¸”{xg–FÆÁíý˜ú¼?PPÖÆ9"Q†Á]¬.ï•×ú‚LƒûÄË”Àp¼†ùeÜÈÛµž÷g -ËéÆ£³.‘3”†åuóÑgÔ[,û<ÁžÓ§Ìì Ë-V0€á8]55«…‹åˆ4àôOíé•…Hj+è
h x½ý]Ù,œÝ¥gÙ0ïOXºl\6Ë”Az±àK&Ɉ›8(†l‘f\"s8(Ƭs3 .–‰3p@c^·‘žƒw¡º¼?
PpÜ|‰º.‘<ÏÀM8Ý|DÁE’ÜÆÀÍ8Ý8+ƒ'\"'»ô= ‘º>}`÷ÁE2ð4åtÕÛ§n{“…ÊÀM9}dBÁ}|›ú¼? -PxÁë²qÝKí~ö
h.]¶[×'_å Z`·8¨n$2ùyzZ`\u\$²Ðž‚ - #Áæê•ïíÛâQË™ACÞ?3°ó -ö"{ì”QiL-ÜÀs”@7ÒâþðáV&Îþ…Ù7 ;ÜËW¾Çžq̓;¼Np@wÒgÜškM'.–1ä ºå¢¥³k\\$§ÑÐ=Ëè…Kì¨lT\"Ó6qPÝuÕÕóF¦Wcƒ}KnLŸ{ -$A¢ŒQÐÀ€#§Á+ X Ø ->x4 ´Ð"2øèh;N¡´AÅ* -%
åa)Paª´ HA ) ‚’°çÑó;gƒY²÷îÝÝ{wŸ?²;“Ý»ç÷;ç{¾¿o4HÃz%"¹AÂûú‚DÇo)E$¸á8P"HHùÌ êÍ$í÷£ÞÄ9LìoÙ8©T9‚8‡‰Iº›Ä"ý/ Á!ˆS¨ØÝ9R{ƒK[#¿‚ ˆ#˜xVºVÄXä)ÁÑàÄAñÏÌÈíÈæ|Œ‡ ŽNUlÇÞ@pPoâ&v¤ÉPfKo|&¿† ˆ]¸`£íÉM~ºù.48q -8'%&™‹þ† ÃÅù{‰åPnÒàœ•ŠE$"¨˜ç4½)½‘m¨77à8&¤LœÊwnoÀe´pƧxo%?L,pîn\×㨷¨à”†Þ1ŠLn˜¨ê+5ヘóq t§Aù7X]6»äØ%xÇPrÉ‹
£`‘(Á9g»üïw‹re';ŒZv ˆQ.Yáât^Tã$”m7 -ÚôO!_†k#«Û5ÿûݯ4³Ëc¿ÙÓèŸH’ÁÅ$J½Iƒ›†z³ £j¯{ï…‚.²…†i -˜LoW_¯0Hú>4¸¦`z8¼ð—YtЪ2Â:Ê‘n£çïƒ/qŠóºÿ¡âHw7ô&yU Á]T‚©]5)¿l—y=5HNÛ\÷áo–«'`–ó9rÿžsGn&É=/ð‡Žl+—æ´„nYMjíJc!âY™C{ì’€,—èJ(`b_ñÖ_ƒ4߀þvMdd±ý`ÁÃU«,{7œaZðÒ~äÒëä–1Œr~EnÜ$7Ħ7ʯÀ¥<൦ôå!µxœ\o¡ou~léQýTl´abo—Ò›|LÖa(¿L(pþݳ2 EFÓ‘-¼ä´æz]\ÕèшŸ`b¼;Ó$œB^4Ñy¦²V}å[…·¶’ý±"lá{ƒe‹œÑ+Oã1Ëù*þÑÉ-{#$@×ã@‚S¸zjö.Ölº 6…a䬮ãþTΔÉaÃ}ƒÜ«)ÄrçÀQ i¥"˜è¢e¶ÊÍ¿¸?CkÄ‚4z\·Éï*Ê¡äüÛÛ»go`pSEªo>gz¤>ñöÔþiJ¦«bÓ„zû„’Jõ£˜å| -ŽsN¡îÊ/ß—¡•s±)Kå.×|"žÑTç=K‰Ëz3H«=©§7ÎtÉÿ}wjÿ€jC,"[ø¦ë_Ë)ZzD¯%çE˜ø_/bº¼õ„ÌãL!8Óõè¼Çï€)R&¶xŠ-Ôw¹Þ/®‚µ0ÌrÞƒ‹ÉnË
ÊœÚTÒƒÜ$ê¼2äfˆR¸ÛUWY.{ÔÊj¸ -‘¾¢¬¨Gº¬Åômd‹aäÒ²ŸÙrJVÊ‚>¾½Žlí̘Ë
n„/Jjàš¸´{ÅS™º¤›Æ°Ôè5£´B¨¹Ò‡›åd[ç$ögÈ$™;|gp\§™º-¿ÙAW‘‘-<¦>÷¯¬nT=â"œŠ8È
îyá«dÀtù|Cñ}ÕaL¢ÈÀ³ÐâžñkÏAñ”¢äÜ„3QÚ1.r“?Òï¤Ç)xñåªÒ±½ÚÈÅ[V -h3 ÿdôš¸ùt"è›=óTì͖βÎ'¥[íwFeÔùK!±)RÙÓ6V -49÷ ¢üŽø¸ƒ{Yx}ç¸-°ÆÚm¯?Üú‹£—z˜úΛ¾ú¸PQÎë;瘨Fâvwä¦ÃÞ(9Ó7ù…uÓ·UK6SÍÙ£«7úM^uºÂJ.*˜àc‰G½‘ׄ‡
.$¶SËÐçF¹\ËŒ_k<‹¡l.=ï™íuÐêéëÒãÈÞ“øÙ”ùu^ÕÂQºp`ñˆN-äR-µÂ°”äîš½óSYÎ9r ƒÄ-¼&¹aƒJ™Ù`U5{mxºZgŠF¶°:Ë
|qkµ -Ü=gG(Ë%z+ý -“%¬QSEÑ@©EÑXݒŬ?ƒ¿ÀlVC]¬AEØ¥¥ -*hE©`¡/¶Ìý±÷ÜymiiÝ–¾¾¹ï½óùã½Ð7ÌÜ™s?sÎW‰÷¤O•á.¼„ÏX}[2t6§ÈÞBmØEñ™Ë÷À`É6¹NBnìï“n ÜlîÃ@)„Þ'?X>Y‡e
^–#SŠ?þYB“è\¸Ü‘î›nꃾsƒk‰l_m¾’^F¶PB-½™â¦/+?§÷f¹‹aòP±ý«!E2Œ
.ÙduéÜñp}‹R”-Ô¨g -Î
¼¤¢Yï1T®.k'ú¨Q×Îl›o܅φª§oKËll}µaW%Ýøøèr³œ†É³Óý&‹$¼–Rx²Ø¾b¢¶1²õ1Ô'lO\ù)d9›œÒ)Ÿøü’·ÉÂ>÷Mp¡‹]óÚÃ7è‹ZØÙ‚¥G':uù΀„(ÛÎq) -u„òµ$dlMŸ -'¸wöƒkÆéêS”-|¨‡
O;yæª]º -1œåÔ¯ö]7®T5Ú¾ºG¦Oݸ·$kTßF×µ`‚O›V|P—ÄMãÔ]¿t…¿áMc“Y
}Óà¼ÈÆêv,»n \ÉñÿfcjÃ{.)ûÙšU—Å rLV$ÛïB@ƒu*Bßà„7F6y÷Á±ú2ØÙ|ÆËrrÖî;+õ\[ιrßptƒr©î¶¡Cx!¡¹r]þï(›P¯ -ƒg=»Éc(Ë1ùõ
fè¦ÜèŸB8P -¦ÏÕôñãÓG]dŠ²™¥õi9++½mØ'AÂ<˜¬ŸjˆnÊ7²9TýM0˜LÙ™f…S;¨šqP”»2»¤º jåÆ@“ã2OŒÙŠ”äˆP'8Ȩ}cÑÕPQ¢ëŠˆ—妕þ猪˜ís¥üQbŽor ·¾©È£I`Ïß -2¼“bd3o®$ñy¥»UݸÑ뜺µU°ËMA‰±´WŽ3]¬sÛWÌL#:$`d3Ÿ`•RòJ>ÕUdQÚæ”n¯ô3%¼ilrÓO—Ýà8ÓªÖo+¼9™À¨‚ªETO–iSW€ò‹hÌr‚Éí‰F馜ó²d—w3:²{ãÏ£¯€¡l‡W³¤ìÕÕ
ª”.‹6å˜ül„Yºâ{ex!8t¶_ö¿xWª>‹mΈŒôÝäÈ€œ5{ÏJ=WF‘sLÖÞhPvó $}_œRMפþÃâÜ} -Ë´{Bz€Êrð5xæê.ÔU¿I£&맧$¸µ²û˜{CÇÏ[š¨#›EqŒŒx(Õ¯Ìa9E•P\ƒ%—ççw§E²OwS8îÂqÍ'^ÿÓ˜DøŸÙ¢ª#AJÖS‡šTYÄ+§vê£0½‡ZÒGÝñM0ÙªËæ¦Â] lQ‡—åâ§m>P•vy$+§Ö^Dœ& ·HÈß}¶Bpœú¨8o°þ/¶‘w‚ôo®$Éó_¬Òu÷Ê.7ª›ZÕ°§Á Îô÷©7š’Dô°-z VwÔ¼ç«uõY÷¢†a0ùN¢¡ºÁ@YÖeã®þå›Æ'¨cmt-ðÆ—ŒYkCñ#0Ë1¹ë*SuS‘,Ù©pÜ…—[Cõ_ïæÀqÙbåhjîÆÚF Y.ÌÂô&L0W7µ²”O.(Ufƒ?ÕU¬Êסl±E0Ë%ݹù@³å"¥Íqy*Û`Ý@¸Âv¾yªIyì%Yqp -Ò~&enàä‰cû*wnÝöjIñcwÞ5küø´Î—@,'k;Ò}‚Y.à…ýZ¤.º\«\Œ)+;=¦ñôéÿVî~ëµMÅ+ž\¸`îäI™©)ñ^’*Ï-O0 !
ABõÚ\Æìu߃7¼%˵
ˆ.ë¢ó}wèð‡[¶<óÄŠ…sædÝrËÕ#Gôo?"Z-Ð6ü¹K1 -ÄÊÈó$d/Á:†0×ýá\}]Ýþ÷Ë7>ýÌó -²¯¹vTúUCâ:œË‰ðA€eÃç°ûÞ>ÚÅšëë<òåÁOvÿ«¬¬xÑ_ò'Mç8—jd£cÒ3t“Sƒåâ—Ë·•ý}ÍÃ…÷ý17{ĨAL--˜…3"‚\&ÔÒêì×ñïAÚ’˜‹C(D·9=Úzù½&‰b¢]°ÿ 0 -H‰œ–yTSwÇoÉž•°Ãc
[€°5la‘QIBHØADED„ª•2ÖmtFOE.®cÖ}êÒõ0êè8´×Ž8GNg¦Óïï÷9÷wïïÝß½÷ó - -V³)gB£0ñiœWו8#©8wÕ©•õ8_Å٥ʨQãüÜ«QÊj@é&»A)/ÇÙgº>'K‚ó -€x¯Íú·¶Ò- -¨ê‡†¡Ðnè÷ÐQètº}MA ï —0Óal»Á¾°ŽSàx ¬‚kà&¸^Á£ð>ø0|>_ƒ'á‡ð,ÂG!"F$H:Rˆ”!z¤éF‘Qd?r9‹\A&‘GÈ”ˆrQ¢áhš‹ÊÑ´íE‡Ñ]èaô4zBgÐ×Á–àE#H ‹*B=¡‹0HØIøˆp†p0MxJ$ùD1„˜D, V›‰½ÄÄÄãÄKÄ»ÄY‰dEò"EÒI2’ÔEÚBÚGúŒt™4MzN¦‘Èþär!YKî ’÷?%_&ß#¿¢°(®”0J:EAi¤ôQÆ(Ç()Ó”WT6U@ æP+¨íÔ!ê~êêmêæD¥eÒÔ´å´!ÚïhŸÓ¦h/èº']B/¢éëèÒÓ¿¢?a0nŒhF!ÃÀXÇØÍ8ÅøšñÜŒkæc&5S˜µ™˜6»lö˜Iaº2c˜K™MÌAæ!æEæ#…åÆ’°d¬VÖë(ëk–Íe‹Øél
»—½‡}Ž}ŸCâ¸qâ9 -N'çÎ)Î].ÂuæJ¸rî -î÷wšGä xR^¯‡÷[ÞoÆœchžgÞ`>bþ‰ù$á»ñ¥ü*~ÿ ÿ:ÿ¥…EŒ…ÒbÅ~‹ËÏ,m,£-•–Ý–,¯Y¾´Â¬â*6X[ݱF=3ë·YŸ±~dó ·‘ÛtÛ´¹iÛzÚfÙ6Û~`{ÁvÖÎÞ.ÑNg·Åî”Ý#{¾}´}…ý€ý§ö¸‘j‡‡ÏþŠ™c1X6„Æfm“Ž;'_9 œr:œ8Ýq¦:‹ËœœO:ϸ8¸¤¹´¸ìu¹éJq»–»nv=ëúÌMà–ï¶ÊmÜí¾ÀR 4 ö -n»3Ü£ÜkÜGݯz=Ä•[=¾ô„=ƒ<Ë=G</zÁ^Á^j¯^—¼ Þ¡ÞZïQïBº0FX'Ü+œòáû¤útøŒû<öuñ-ôÝà{Ö÷µ__•ß˜ß-G”,ê}çïé/÷ñ¿ÀHh8ðm W 2p[àŸƒ¸AiA«‚Ný#8$X¼?øAˆKHIÈ{!7Ä<q†¸Wüy(!46´-ôãÐaÁa†°ƒa†W†ï ¿¿@°@¹`lÁݧYÄŽˆÉH,²$òýÈÉ(Ç(YÔhÔ7ÑÎÑŠèÑ÷b<b*böÅ<Žõ‹ÕÇ~ûL&Y&9‡Ä%ÆuÇMÄsâsã‡ã¿NpJP%ìM˜IJlN<žDHJIÚtCj'•KwKg’C’—%ŸN¡§d§§|“ꙪO=–§%§mL»½Ðu¡váx:H—¦oL¿“!ȨÉøC&13#s$ó/Y¢¬–¬³ÙÜìâì=ÙOsbsúrnåºçsOæ1óŠòvç=ËËïÏŸ\ä»hÙ¢óÖê‚#…¤Â¼Â…³‹ãoZ<]TÔUt}‰`IÃ’sK—V-ý¤˜Y,+>TB(É/ÙSòƒ,]6*›-•–¾W:#—È7Ë*¢ŠÊe¿ò^YDYÙ}U„j£êAyTù`ù#µD=¬þ¶"©b{ųÊôÊ+¬Ê¯: !kJ4Gµm¥ötµ}uCõ%—®K7YV³©fFŸ¢ßYÕ.©=bàá?SŒîÆ•Æ©ºÈº‘ºçõyõ‡Ø
Ú†žkï5%4ý¦m–7Ÿlqlio™Z³lG+ÔZÚz²Í¹³mzyâò]íÔöÊö?uøuôw|¿"űN»ÎåwW&®ÜÛe֥ﺱ*|ÕöÕèjõê‰5k¶¬yÝèþ¢Ç¯g°ç‡^yïkEk‡Öþ¸®lÝD_p߶õÄõÚõ×7DmØÕÏîoê¿»1mãál {àûMÅ›Î
nßLÝlÜ<9”úO -¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäüå„æ
æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿ -%!PS-Adobe-3.0
%%Creator: Adobe Illustrator(R) 17.0
%%AI8_CreatorVersion: 19.2.1
%%For: (Zachary Mitton) ()
%%Title: (metamask_icon)
%%CreationDate: 6/15/16 2:23 PM
%%Canvassize: 16383
%%BoundingBox: 98 -140 188 -44
%%HiResBoundingBox: 98.7919746568114 -140 188 -44
%%DocumentProcessColors: Cyan Magenta Yellow Black
%AI5_FileFormat 13.0
%AI12_BuildNumber: 147
%AI3_ColorUsage: Color
%AI7_ImageSettings: 0
%%RGBProcessColor: 0 0 0 ([Registration])
%AI3_Cropmarks: 79 -156 207 -28
%AI3_TemplateBox: 180.5 -120.5 180.5 -120.5
%AI3_TileBox: -163 -488 449 304
%AI3_DocumentPreview: None
%AI5_ArtSize: 14400 14400
%AI5_RulerUnits: 6
%AI9_ColorModel: 1
%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
%AI5_TargetResolution: 800
%AI5_NumLayers: 1
%AI17_Begin_Content_if_version_gt:17 1
%AI9_OpenToView: -39.6666666666679 23.666666666667 3 1419 866 18 0 0 -5 38 0 0 0 1 1 0 1 1 0 1
%AI17_Alternate_Content
%AI9_OpenToView: -39.6666666666679 23.666666666667 3 1419 866 18 0 0 -5 38 0 0 0 1 1 0 1 1 0 1
%AI17_End_Versioned_Content
%AI5_OpenViewLayers: 7
%%PageOrigin:-220 -420
%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142
%AI9_Flatten: 1
%AI12_CMSettings: 00.MS
%%EndComments
endstream
endobj
24 0 obj
<</Length 22700>>stream
-%%BoundingBox: 98 -140 188 -44
%%HiResBoundingBox: 98.7919746568114 -140 188 -44
%AI7_Thumbnail: 120 128 8
%%BeginData: 22554 Hex Bytes
%0000330000660000990000CC0033000033330033660033990033CC0033FF
%0066000066330066660066990066CC0066FF009900009933009966009999
%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
%6666006666336666666666996666CC6666FF669900669933669966669999
%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
%9933009933339933669933999933CC9933FF996600996633996666996699
%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
%000011111111220000002200000022222222440000004400000044444444
%550000005500000055555555770000007700000077777777880000008800
%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
%524C45FD24FFA776FD75FFA04A4AA1FD73FFA04A754A75A8FD71FF7C4475
%4A6F4A6FA8FD6FFFA04A754B754B754A75FD6EFF764A6F4A754A6F4A754A
%76FD6CFF764A754B754A754B754A754AA1FD69FFA8754A6F4A754A6F4A75
%4A6F4A6F4AA1FD44FFA7C9A075A8FD1EFFA8754A754B754B754B754B754B
%754B754ACAFD3FFFCFC9C299C1997476FD1EFFA76F4A754A6F4A754A6F4A
%754A6F4A754A4B4AFD3BFFA7C99FC198BB98C198754AA8FD1DFFA8754A75
%4A754B754A754B754A754B754A754B6F76FD37FFC9C99FC198C199C199C1
%99754A75FD1DFFA74B4A754A6F4A754A6F4A754A6F4A754A6F4A754A4A76
%FD31FFA8C9A0C1999998C1999F99C199C1746F4A4A76FD1CFFA1754A754B
%754B754B754B754B754B754B754B754B754B6F7CFD2CFFCAC9C89FC198C1
%99C199C199C199C1C1C175754B754ACAFD1BFF7D4A4A6F4A754A6F4A754A
%6F4A754A6F4A754A6F4A754A6F4A6FA8FD27FFCAC9A1C2989998C199C199
%C199C199C199C199C16E4B4A754A75A8FD1AFF7C6F4A754B754A754B754A
%754B754A754B754A754B754A754B754A75FD24FFC9C99FC199C199C199C1
%99C199C199C199C199C1C1994A754B754A6F76FD1AFF764A4A6F4A754A6F
%4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A76A8FD1DFFA7C9A0C1
%99BB989998C1999F99C1999F99C1999F99C199C199994A4B4A754A6F4AA8
%FD19FF756F4B754B754B754B754B754B754B754B754B754B754B754B754B
%754B754A76FD1AFFCAC299C198C199C199C199C199C199C199C199C199C1
%99C199C199994B754B754B754A7CFD19FF764A4A754A6F4A754A6F4A754A
%6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A99FD04C199C1C1C199C1
%C1C199C1C1C199C1C1C199C1C1C199C198C199C199C199C199C199C199C1
%99C199C199C199C199C199754A754A6F4A754A4A7DFD18FF7C6E4B754A75
%4B754A754B754A754B754A754B754A754B754A754B754A754B754A754BFD
%05C1BBC1C1C1BBC1C1C1BBC1C1C1BBC1C1C1BBC1C1C199C199C199C199C1
%99C199C199C199C199C199C199C199C199754B754A754B754A754BFD19FF
%754A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A
%754A6F4A4B74C199C199C199C199C199C199C199C199C199C199C199C199
%9F99C1999F99C1999F99C1999F99C1999F99C1999F99C1994B4A754A6F4A
%754A6F4A76FD18FFA14A754B754B754B754B754B754B754B754B754B754B
%754B754B754B754B754B754B754B7599C2FD16C199C199C199C199C199C1
%99C199C199C199C199C199C175754B754B754B754B754B75A1FD18FF4A4B
%4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A75
%4A6F4A754A6F99C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C199C1
%99C199C199C199C199C199C199C199C199C199C16E4B4A6F4A754A6F4A75
%4A6F4AFD18FFA16F4B754A754B754A754B754A754B754A754B754A754B75
%4A754B754A754B754A754B754A754B75FD16C199C199C199C199C199C199
%C199C199C199C1999F6F754A754B754A754B754A754A7CFD18FF764A754A
%6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A
%754A6F4A754A9999C199C199C199C199C199C199C199C199C199C199C199
%9F99C1999F99C1999F99C1999F99C199994A6F4A6F4A754A6F4A754A6F4A
%4A7DFD17FFCA4A754B754B754B754B754B754B754B754B754B754B754B75
%4B754B754B754B754B754B754B754B7575FD17C199C199C199C199C199C1
%99C199C1C1994B754B754B754B754B754B754B754BFD18FF764A4A754A6F
%4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A75
%4A6F4A754A4B74C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C199C1
%99C199C199C199C199C199C199754A6F4A754A6F4A754A6F4A754A6F4A7C
%FD18FF754B754A754B754A754B754A754B754A754B754A754B754A754B75
%4A754B754A754B754A754B754A754B7599FD13C1BBC199C199C199C199C1
%99C199C199754A754B754A754B754A754B754A754B75A8FD17FFA04A754A
%6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A
%754A6F4A754A6F4A754A7599C199C199C199C199C199C199C199C199C199
%C199C1999F99C1999F99C199C174754A6F4A754A6F4A754A6F4A754A6F4A
%6F75FD18FF4A754B754B754B754B754B754B754B754B754B754B754B754B
%754B754B754B754B754B754B754B754B754B754A9FFD14C199C199C199C1
%99C199C175754B754B754B754B754B754B754B754B754AA7FD17FF7D4A4A
%754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A
%6F4A754A6F4A754A6F4A754A4B4AC1C1C199C1BBC199C1BBC199C1BBC199
%C1BBC199C199C199C199C199C16F4B4A754A6F4A754A6F4A754A6F4A754A
%6F4A75A8FD17FF764A754A754B754A754B754A754B754A754B754A754B75
%4A754B754A754B754A754B754A754B754A754B754A754B7575FD13C199C1
%99C199C1BBC16F754B754A754B754A754B754A754B754A754B6F75FD17FF
%A84A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A
%754A6F4A754A6F4A754A6F4A754A6F4A754A4B74C199C199C199C199C199
%C199C199C199C199C199C199C199994A4B4A754A6F4A754A6F4A754A6F4A
%754A6F4A754AA1FD17FF76754B754B754B754B754B754B754B754B754B75
%4B754B754B754B754B754B754B754B754B754B754B754B754B754B754B75
%9FFD11C199C199C199994B754B754B754B754B754B754B754B754B754B75
%4B75A8FD16FFA86F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A75
%4A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A99C1C1
%99C1BBC199C1BBC199C1BBC199C1BBC199C199994A754A6F4A754A6F4A75
%4A6F4A754A6F4A754A6F4A6F75FD17FFA74A754A754B754A754B754A754B
%754A754B754A754B754A754B754A754B754A754B754A754B754A754B754A
%754B754A754B754AFD13C199754B754A754B754A754B754A754B754A754B
%754A754B754ACAFD16FFCA4A6F4A6F4A754A6F4A754A6F4A754A6F4A754A
%6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A
%754A4B4AC1BBC199C199C199C199C199C199C199C1996F4A754A6F4A754A
%6F4A754A6F4A754A6F4A754A6F4A754A75FD17FF7D6F4B754B754B754B75
%4B754B754B754B754B754B754B754B754B754B754B754B754B754B754B75
%4B754B754B754B754B754B754B7599FD10C19F4A754B754B754B754B754B
%754B754B754B754B754B754B6F7CFD17FF764A754A6F4A754A6F4A754A6F
%4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A75
%4A6F4A754A6F4A754A7599C1BBC199C1BBC199C1BBC199C1BBC199C1C199
%4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754AA8FD17FF75754A
%754B754A754B754A754B754A754B754A754B754A754B754A754B754A754B
%754A754B754A754B754A754B754A754B754A7599C199FD12C1994A754B75
%4A754B754A754B754A754B754A754B754A75FD17FFA8754A6F4A754A6F4A
%754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A
%6F4A754A6F4A754A6F4A754A7599C1999999C199C199C199C199C199C199
%C199C199C199994A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A7CFD
%17FF75754B754B754B754B754B754B754B754B754B754B754B754B754B75
%4B754B754B754B754B754B754B754B754B754B754B7599C199C199FD13C1
%99994B754B754B754B754B754B754B754B754B754B754A7CFD15FFA8754A
%6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A
%754A6F4A754A6F4A754A6F4A754A6F4A7599C199C199C199C1BBC199C1BB
%C199C1BBC199C1BBC199C199C199994A6F4A754A6F4A754A6F4A754A6F4A
%754A6F4A754A76A8FD13FFA84A754B754A754B754A754B754A754B754A75
%4B754A754B754A754B754A754B754A754B754A754B754A754B754A754B75
%99C199C199C199C199FD0FC1BBC199C199994B754A754B754A754B754A75
%4B754A754B754A754AFD14FFA14A4A754A6F4A754A6F4A754A6F4A754A6F
%4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A75
%75C199C1999F99C199C199C199C199C199C199C199C199C199C199C199C1
%99754A6F4A754A6F4A754A6F4A754A6F4A754A4B4AA8FD14FF7C4A754B75
%4B754B754B754B754B754B754B754B754B754B754B754B754B754B754B75
%4B754B754B754B754B754B7599C199C199C199C199C199FD11C199C199C1
%C1754A754B754B754B754B754B754B754B7576FD12FFA8A151754A6F4A75
%4A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F
%4A754A6F4A754A6F4A754A4B74C199C199C199C199C199C199C1BBC199C1
%BBC199C1BBC199C1BBC199C199C199C199754A754A6F4A754A6F4A754A6F
%4A754A757DFD11FFA14A4A4A754B754A754B754A754B754A754B754A754B
%754A754B754A754B754A754B754A754B754A754B754A754B754A7575C199
%C199C199C199C199C199C1BBFD0FC199C199C199C199754A754B754A754B
%754A754B754A754A4A75CFFD10FFA8754A4A754A6F4A754A6F4A754A6F4A
%754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A
%4B6EC1999F99C1999F99C1999F99C199C199C199C199C199C199C199C199
%C199C199C1999F99C199754A754A6F4A754A6F4A754A6F4A754A4A4ACAFD
%11FFA8754A754B754B754B754B754B754B754B754B754B754B754B754B75
%4B754B754B754B754B754B754B754B7575C199C199C199C199C199C199C1
%99C199FD11C199C199C199C199754B754B754B754B754B754B754B754ACA
%FD13FFA87C4A4B4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A
%6F4A754A6F4A754A6F4A754A6F4A756EC199C199C199C199C199C199C199
%C199C199C1BBC199C1BBC199C1BBC199C1BBC199C199C199C199C199754A
%6F4A754A6F4A754A6F4A754AA7FD17FF75754A754B754A754B754A754B75
%4A754B754A754B754A754B754A754B754A754B754A754B756FC199C199C1
%99C199C199C199C199C199C199FD11C199C199C199C199C199754B754A75
%4B754A754B754A76FD13FFA8CA7DA176754A6F4A754A6F4A754A6F4A754A
%6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A4B6EC199C1999F99
%C1999F99C1999F99C1999F99C199C199C199C199C199C199C199C199C199
%9F99C1999F99C199C198754A6F4A754A6F4A754A4B4AFD12FFA87C4A4A4A
%754B754B754B754B754B754B754B754B754B754B754B754B754B754B754B
%754B754B754B7575C199C199C199C199C199C199C199C199C199C199FD11
%C199C199C199C199C199C199754B754B754B754B754A75FD14FFA8754A4A
%754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A
%6F4A754A4B4A9F99C199C199C199C199C199C199C199C199C199C199C199
%C1BBC199C1BBC199C1BBC199C1BBC199C199C199C199C199C1994B4A754A
%6F4A754A6F4AFD16FFA8A14B754B754A754B754A754B754A754B754A754B
%754A754B754A754B754A754B754A7575C199C199C199C199C199C199C199
%C199C199C199C199C199FD11C199C199C199C199C199C199754A754B754A
%754B6FA7FD18FF516F4A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A
%6F4A754A6F4A754A4B4AC1999F99C1999F99C1999F99C1999F99C1999F99
%C1999F99C199C199C199C199C199C199C199C199C1999F99C1999F99C199
%9F99C1754B4A754A6F4A6F4AA8FD17FFA1754B754B754B754B754B754B75
%4B754B754B754B754B754B754B754B754B754BC1C1C199C199C199C199C1
%99C199C199C199C199C199C199C199FD11C199C199C199C199C199C199C1
%75754B754B754AA7FD15FFA8A14B4A4A754A6F4A754A6F4A754A6F4A754A
%6F4A754A6F4A754A6F4A754A6F4A756E9999C199C199C199C199C199C199
%C199C199C199C199C199C199C199C199C1BBC199C1BBC199C1BBC199C199
%C199C199C199C199C199C199C174754A6F4AA1FD17FF4B6F4B754A754B75
%4A754B754A754B754A754B754A754B754A754B754A754B754AC1C1C199C1
%99C199C199C199C199C199C199C199C199C199C199C199FD11C199C199C1
%99C199C199C199C199C175754A76FD18FFCA4B4B4A6F4A754A6F4A754A6F
%4A754A6F4A754A6F4A754A6F4A754A6F4A6F4A9999C1999F99C1999F99C1
%999F99C1999F99C1999F99C1999F99C1999F99C199C199C199C199C199C1
%99C199C199C1999F99C1999F99C1999F99C199C16E4BA8FD1AFF756F4B75
%4B754B754B754B754B754B754B754B754B754B754B754B756F9F99C199C1
%99C199C199C199C199C199C199C199C199C199C199C199C199C199FD0FC1
%99C199C199C199C199C199C199C199C1A1FD1CFF4B4B4A754A6F4A754A6F
%4A754A6F4A754A6F4A754A6F4A754A4B4A9F99C199C199C199C199C199C1
%99C199C199C199C199C199C199C199C199C199C199C199C1BBC199C1BBC1
%99C1BBC199C199C199C199C199C199C199C199C198CAFD1CFFCF4A754A75
%4B754A754B754A754B754A754B754A754B754A754B9999C199C199C199C1
%99C199C199C199C199C199C199C199C199C199C199C199C199FD0FC199C1
%99C199C199C199C199C199C199C1CAFD1DFFA84A6F4A754A6F4A754A6F4A
%754A754A754A754A754A6F4A99999F99C1999F99C1999F99C1999F99C199
%9F99C1999F99C1999F99C1999F99C1999F99C199C199C199C199C199C199
%C199C199C1999F99C1999F99C1999F99C199FD1FFFC299C1C1C19FFD0FC1
%99C1C1C199C199C199C199C199C199C199C199C199C199C199C199C199C1
%99C199C199C199FD11C199C199C199C199C199C199C199C2FD1EFFCABBC1
%99C1C1C199C1C1C199C1C1C199C1C1C199C1C1C199C199C199C199C199C1
%99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1
%99C1BBC199C1BBC199C1BBC199C199C199C199C199C199C199C1A0FD1EFF
%FD18C199C199C199C199C199C199C199C199C199C199C199C199C199C199
%C199C199C199C199C199FD0FC199C199C199C199C199C199C198C9FD1DFF
%C9C199C199C199C199C199C199C199C199C199C199C199C199C199C1999F
%99C1999F99C1999F99C1999F99C1999F99C1999F99C1999F99C1999F99C1
%999F99C199C199C199C199C199C199C199C199C1999F99C1999F99C19999
%A1FD1DFFC9BBFD19C199C199C199C199C199C199C199C199C199C199C199
%C199C199C199C199C199C199C199FD0FC199C199C199C199C199C199C198
%C9FD1DFFC1C199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC1
%99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1
%99C199C199C199C1BBC199C1BBC199C1BBC199C1BBC199C199C199C199C1
%99C199BBA7FD1CFFC9FD1BC199C199C199C199C199C199C199C199C199C1
%99C199C199C199C199C199C199C199C199C199FD0FC199C199C199C199C1
%99C199CFFD1CFFC298C199C199C199C199C199C199C199C199C199C199C1
%99C199C199C199C1999F99C1999F99C1999F99C1999F99C1999F99C1999F
%99C1999F99C1999F99C1999F99C199C199C199C199C199C199C1999F99C1
%999F99C1999F98C1A8FD1CFFFD1EC199C199C199C199C199C199C199C199
%C199C199C199C199C199C199C199C199C199C199FD0FC199C199C199C199
%C199C199FD1CFFC9C199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199
%C1BBC199C1BBC199C199C199C199C199C199C199C199C199C199C199C199
%C199C1999999C1999999C1999999C1BBC199C1BBC199C1BBC199C1999999
%C19999989999999899A8FD1BFFC2FD1EC1BBC199C199C199C199C199C199
%C1999999C1999999C1999999C199BB99C1999999C1999999FD0DC1999999
%C1999999C1999998C9FD1AFFC998C199C199C199C199C199C199C199C199
%C199C199C199C199C199C199C199C199C199999899999998999999989999
%99989999999899999998BB999998999999989999C199C199C199C199C199
%C199C199C199999899279998999999A0FD1AFFC2FD23C199C199C199C199
%C199C199C199C199C199C199C1999F515299C199C199C199C199FD0DC199
%9999C1992E4BC199C199C2A8FD18FFCAC199C1BBC199C1BBC199C1BBC199
%C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C199C199C19999989999
%99989999999899999998C175510528057598999999989999C199C1BBC199
%C1BBC199C1BBC199C19999989927286FBB99C198C9FD18FFC9BBFD25C199
%C199C199C1999999C1999999C1BB994B2E0628272E279999C1999999C199
%FD0DC1BBC199BB992E282E99C199C1A0FD18FF9FC199C199C199C199C199
%C199C199C199C199C199C199C199C199C199C199C199C199C199C1999F99
%C1999998999999989999BB98752706052827280528279998FD0499C199C1
%99C199C199C199C199C199C1989998990528054B98C198A0A9FD16FFCAFD
%29C199C199C199C199C1999F7552282E272E272E272E272875C199C199C1
%99FD0FC199C1752E062E51C1BBC199FD17FFC998C1BBC199C1BBC199C1BB
%C199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199
%C199C199C199C199992706052805280528272805280528989999C199C199
%C199C1BBC199C1BBC199C1BBC199999951057699C199C1999FA8FD16FFFD
%2AC199C199C199C199C199A07576272E2728052E2728272E277599C199C1
%99C199FD0DC199C1759FFD04C199C199CAFD15FFA7C199C199C199C199C1
%99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1
%99C199C199C1999F99C199C1BBC1C1C1999F7575272827280528057598C1
%999F99C199C199C199C199C199C199C199C198BBC1C199C1999F98BBA7FD
%15FFC2FD2EC199C199C199FD0BC17576512E27C19FC199C199FD0FC199FD
%05C199C199CFFD14FFCA98C1BBC199C1BBC199C1BBC199C1BBC199C1BBC1
%99C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1999F99C1
%999F99C1BBC199C1BBC199FD05C1999F99C199C199C199C199C1BBC199C1
%BBC199C1BBC1999999C199C1BBC198C1CAFD14FFC2FD31C199C199FD11C1
%99C199C199C199FD0DC199C199FD05C199FD14FFA8C199C199C199C199C1
%99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1
%99C199C199C199C199C1999F99C199C199C199C199C199C199C199C199C1
%99C199C1999F99C199C199C199C199C199C199C199C1999999C199C199C1
%CAFD13FFCFFD32C199C199FD15C199C199C199FD0FC1BBC1C1C199FD14FF
%A0C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1
%BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C199C199C1BBC1
%99C1BBC199C1BBC199C1BBC199C1BBC199C199C199C1BBC199C1BBC199C1
%BBC199C1999999C199C1CAFD13FFC1BBFD33C199C199FD15C199C199C199
%FD0DC199C1C1C1C2FD13FFC998C199C199C199C199C199C199C199C199C1
%99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1
%99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1
%99C1999F99C199C199C199C199C199C199C199C198C2FD13FFFD52C199C1
%99FD0DC199C1A1FD12FFA7C1BBC199C1BBC199C1BBC199C1BBC199C1BBC1
%99C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1
%BBC199C1BBC199C199C199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC1
%99C199C199C199C199C1BBC199C1BBC199C1BBC198C9FD12FFC2BBFD35C1
%99C199C199C199FD17C199C199FD0DC1C9FD12FF99C199C199C199C199C1
%99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1
%99C199C199C199C199C199C199999899999998C1999999C199C199C199C1
%99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1
%98C2FD11FFC9FD31C199C199BB99C199BB99C199C199C199C199FD15C199
%C199FD0BC1BAC9FD10FFC2BBC199C1BBC199C1BBC199C1BBC199C1BBC199
%C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C199C1FD0499
%98999999989999C199C199C199C199C199C199C199C1BBC199C1BBC199C1
%BBC199C1BBC199C1999F99C1BBC199C1BBC199C1BBC198C9FD0EFFCFBBFD
%2BC199C1999999C1999999C1999999C199C199C199C199C199C199C199C1
%99FD11C199C199FD0BC1BAC9FD0DFFA0C199C199C199C199C199C199C199
%C199C199C199C199C199C199C199C199C199C199C199C199C19999989999
%99989999999899999998FD0499C1999F99C1999F99C1999F99C1999F99C1
%99C199C199C199C199C199C199C199C1999F99C199C199C199C199C199C1
%98C9FD0CFFC299C19FC199C19FC199C19FC199C199C199C199C199C199C1
%99C199C199C199C199C199C199C1999999C199C199C199C199C199C199C1
%99C199C199C199C199C199C199C199C199C199C199C199C19FFD0FC199FD
%0CC1CFFD0BFFA79999C199C199C199C199C199C199C199C199C199C199C1
%99C199C199C199C199C199C199C199C19999989999999899999998999999
%989999C199C199C199C199C199C199C199C199C199C199C199C199C199C1
%BBC199C1BBC199C1BBC199C199C199C1BBC199C1BBC199C199CFFD0BFF99
%C199C199C199C199C199C199C199C199C199C199C199C199C199C199C199
%C199C199C199C199C1999999C1999999C1999999C1999999C199C199C199
%C199C199C199C199C199C199C199C199C199C199C199C19FC1BBFD09C199
%FD0CC1CFFD0AFFC2989F99C1999F99C1999F99C1999F99C1999F99C1999F
%99C1999F99C1999F99C1999F99C199C1FD0499989999999899999998FD04
%99C1999F99C1999F99C1999F99C1999F99C1999F99C1999F99C1999F99C1
%999F99C199C199C199C199C199C199C199C199C199C199C199CFFD09FFCA
%C199C199C199C199C199C199C199C199C199C199C199C199C199C199C199
%C199C199C199C199C199C199C199C199C199C199C199C199C199C199C199
%C199C199C199C199C199C199C199C199C199C199C199C199C199C199C199
%FD07C199FD0CC1FD0AFF99C199C199C199C199C199C199C199C199C199C1
%99C199C199C199C199C199C199C199C199C199C199999899999998999999
%989999C199C199C199C199C199C199C199C199C199C199C199C199C199C1
%99C199C199C199C199C199C199C199C1C1C199C1BBC199C1BBC199FD04C1
%FD09FFC999C199C199C199C199C199C199C199C199C199C199C199C199C1
%99C199C199C199C199C199C199C1999999C1999999C1999999C199C199C1
%99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1
%99C199C199C199C199C1C1C199FD07C19975754B27A8FD07FFA8C1999F99
%C1999F99C1999F99C1999F99C1999F99C1999F99C1999F99C1999F99C199
%9F99C1999F99C199999899999998FD0499C1999F99C1999F99C1999F99C1
%999F99C1999F99C1999F99C1999F99C1999F99C1999F99C1999F99C1999F
%99C199C199C199C14A27F827F805F8F8F852A8FD06FF9FC199C199C199C1
%99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1
%99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1
%99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1
%99C1BBC175270027F82727272027F82752FD05FFCA98C199C199C199C199
%C199C199C199C199C199C199C199C199C199C199C199C199C199C199C199
%C1999998999999989999C199C199C199C199C199C199C199C199C199C199
%C199C199C199C199C199C199C199C198BB98C198C199C199C199C2A0A0A0
%C9A127F827F827F827F827F827F8F87DFD05FFC299C199C199C199C199C1
%99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1
%99C199C1999999C199C199C199C199C199C199C199C199C199C199C199C1
%99C199C199C199C199C299C199C2A0C3A0C9A1CAA7CAA7CAA8CAA8CAA8A8
%2727F8272727F8272727F8274BFD06FFA0BB999F99C1999F99C1999F99C1
%999F99C1999F99C1999F99C1999F99C1999F99C1999F99C1999F99C19999
%98FD0499C1999F99C1999F99C1999F98C1999998C198BB98C1999F99C199
%A09FA1A1A7A1A8A1A8A1A8A8A8A7A8A7A8A1A8A7A8A1A8A7A8A127F827F8
%27F827F827F827F8A8FD06FFCF99C199C199C199C199C199C199C199C199
%C199C199C199C199C199C199C199C199C199C199C199C199C199C199C199
%C199C199C199C199C199C199C29FC199C2A0C9A0C9A0C9A7CAA7CAA7CAA8
%CAA8CAA8CAA8CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA8CA27272027272720
%272727F852FD08FFC299C199C199C199C199C199C199C199C199C199C199
%C199C199C199C199C199C199C199C199C199C199C1989998BB99C199C199
%C2A0A0A0C3A0A7A1A8A7A8A1FD07A8A7A8A7A8A1A8A7A8A1A8A7A8A1A8A7
%A8A1A8A7A8A1A8A7A8A1A8A7A8A127F827F827F827F827F827A8FD08FFA1
%C199C199C199C199C199C199C199C199C199C199C199C199C199C199C199
%C199C199C199C199C199C198C2A1C9A0C9A1CAA7CAA7CAA8CAA8CAA8CAA7
%CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8
%CAA7CAA8CAA7CAA8A8FD0427F8272727F82752FD09FFCF98C1999F99C199
%9F99C1999F99C1999F99C1999F99C1999F99C1999F99C1999F99C1999998
%BB98C1A0C9CAFFAFFFA8A8A1A8A7A8A1A8A7A8A1A8A7A8A1A8A7A8A1A8A7
%A8A1A8A7A8A1A8A7A8A1A8A7A8A1A8A7A8A1A8A7A8A1A8A7A8A1A8A7A8A1
%CAA127F827F827F827F827F8A8FD0AFFC299C199C199C199C199C199C199
%C199C199C199C199C199C199C199C199C199C199C199C2C9CFFD0AFFA8A8
%A7A8A7CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CA
%A8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8A8FD0427F827F827F87DFD0BFF
%A8C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1
%989999C9A7CFFD10FFA8A87DA7A1A8A7A8A7CAA7A8A1A8A7A8A1A8A7A8A1
%A8A7A8A1A8A7A8A1A8A7A8A1A8A7A8A1A8A7A8A1A8A7A8A1CAA127F82727
%5252767CA1A8FD0CFF9FC199C199C199C199C199C199C199C199C199C199
%C199C199C199C199C2C9CFFD16FFA8A8A1A8A7A8A7CAA8CAA7CAA8CAA7CA
%A8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA7A8527D
%7DA8A7CAA7A8A8FD0DFFC998C1999F99C1999F99C1999F99C1999F99C199
%9F98BB989999C9A7FD1CFFCFA7A87DA17DA8A1A8A1A8A7A8A1A8A7A8A1A8
%A7A8A1A8A7A8A1A8A7A8A1A8A7A8A1A8A7A8A1A8A1A77DA8A1A77DA7A1A1
%A7FD0EFFCAC199C199C199C199C199C199C199C199C199C199C2A0C9CAFD
%23FFA8CAA1A8A1A8A7A8A7CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8CA
%A7CAA8CAA7CAA7A8A1A8A1A8A1A8A1A8A8FD10FFA0C199C199C199C199C1
%99C199C199BB98C199C9CAFD29FFA8A77DA7A1A77DA8A1A8A1A8A7A8A7CA
%A7A8A1A8A7A8A1A8A7A8A1CAA7A87DA8A1A77DA8A1A77DA7A1FD11FFCA98
%C199C199C199C199C199C198C2A0C9CAFD2FFFA8A8A1A7A1A8A1A8A1A8A7
%A8A7CAA8CAA7CAA8CAA7CAA8CAA7A8A1A8A1A8A1A8A1A8A1A8A1FD12FFCA
%C198C1999F99C1999998C2A0CAA8FD33FFA8FFA8A87DA77DA77DA77DA77D
%A8A1A8A1A8A7A8A1A8A1A77DA7A1A77DA7A1A77DA7A1FD14FFA0C199C199
%C199C1A0FD3DFFA8A8A1A8A1A8A1A8A1A8A1A8A7A8A7A8A1A8A1A8A1A8A1
%A8A1A8A1A8A1FD15FFCA98BB99C2A0CFFD41FFCFA7A8A1A17DA8A1A77DA8
%A1A77DA8A1A77DA8A1A77DA77DA17DCAFD16FFC9A7FD49FFA8A8A1A8A1A7
%A1A8A1A8A1A8A7A8A1FD04A8FFA8FD66FFA8CAA8A8A8FFA8FFA8FFFFFFA8
%FD12FFFF
%%EndData
endstream
endobj
25 0 obj
<</Length 65536>>stream
-%AI12_CompressedDataxœì½ë’$·•&øþ±?d&
CŽ;\;¶f‘™õJ-©îÖn[[Y©˜¢²UZ±(öé÷ûÎüxd&‹,²f› #+3€€Ãq98×ïüìûôóO®¾xó§»OÜq<?ûÙùíÝówoÞþê Ÿ~óòå7_¿{Ë~þÙ/&G4ºúM~VþëÝÛ¯ïß¼þÕÁLG{4¨¼å·þ?ñ—çoÿqøÝý»wo^ÿâðó_ ê÷ï^Þ¡òÕݻ篞ý×g÷/PWŸŠn®Ÿ¿C}ü¥ ¿4ñ`eÝáÓß±þùë¿=ÿúëûÿµ&ºìðÙéÍ7¯¿¸ýåéÍÿó«Ã”Ÿ?LÆ/Þ£úÞv÷uÓæ˜&3%CÌÆøö×o^|óêîõ»Oß¾yq÷õ×ç7/ß¼ýúW‡ó?ž¿>üîù—¨y~ø¿î^¾|ó÷Ãéåó0áÙíýË;¼ò«çïÆqv®~cì³Ó7÷/¿øço^ýé“a|âÇî™tù/_£/tËßùqzö›Wøäó»wï0R<3üÙ¯OëaàC)?ÿ÷Ïî¾¼—ÁlýÇ/J·oß|õêùÛ¿â»iÂ[LݘŸØ¬õ¸{õÕK̬̂Éã1 ‘å?ë?J[¼Ž´ûóŒ‰Áìx?Üèµ~™¤»¿ÝßýýW‡~óúNgâêí»Ïu…¼Gý¿Ö|öÍË»·ÿòúþFùѤSñ»7_ܽDûùû·/ŸËH1ËÿµÁž¿ýòî–õÍËoÞɦËõ ˜êß>ÿÇ×Kz3éÙ 3õÏyýÃ}vÿçgÓúìËw¿2I›MÏ~ÿÕÝë?¼ùWy•OÜtŒËæҺ͇·2Ó!Lj©“á}.Ï6ËÿË(®^¾»{û“_GòÃ<öæõÏÊѼûbýè æƒë|aoþìSlÀß¿½Ç„ýêkѽ·£îÍ_¿½ÿbٚɲþO–åˆùç1“';=õ“I~R4!oŸò‰Î¶Ç;¼H]cûìü»Õ±¿ûï‚W?¿yÅ=ú5©wŽÒË7_jÝü»Ôàëß|¥ó¢ûÛùÓ·÷¯ÙçðÏR“Ÿ}úòTýúí›o¾úÍë?¿~®´ñ_ï^€ -Ó!}H“¦÷¬ªÐoï_wÈgÏß¾ûû›·¸ºÜŽÏ¿z¤×Ïÿz÷îÅ_Ú~˧ߩçOŸ¿ûn”»×_|=w .³Ì™×Ïÿóó—/ï¿|ûü«¿Ü¿8œÞ~óõ_xóæåÜ÷NýüœuTñ›OX[žË·¯ÿZߥfiÐ>$_¿ó‘>kþÎÞsPù¿Ê3ê”Ü|q-yáø=Øæó¿?ÇFÿíýŸž°?!]í½Ï¶j~§òñ·x£äÿxõ§7/ï¿~µt½úäSúû/ï>ÿÇ×ï\¬?ß¿þcúü›ûwwËI|óê+r¨‡Ïÿòü«;鳶ü|î0Èe¾º—>ùälóéõªþ×oŸq»\÷¯ß¼üâîõá3ÞLÃæ/Üæépúbø÷a,ÅHñ‡Ÿ=;½þÇ0¶?¦)vU\)¾” ÿÕù߀Ö%Í%Ó¦\Ê å\ÊõªÜŒ·Ãx[Ëf`ë»*nUü¦-ƒü“LDIòo^•iS®Ìi.繜Ì5JýëzÀ7òѵ¹]—õÔÉàê[¿*ÁF–Aÿ±iU²‡Uþµ*'-Ãÿ±·–—VÓmÖÓ¯VuY[”a^^¿Zd]ÕõêfþËUÍ›õV+Œÿe©ëbŸæeÖ¹Ê7ëÕÆÿõgÜ]k;lÚa]ù/W–k¥dYåÔ¬ðU)ÛµÅZòŸ)×Í*Ö‡:YÃeÍXt‘ê’Me±°@CY#®Õ¹”k)7¥Ü²Ô“Å—Y¯¥‘Uòeâ³LèIÉÌ•—òz“¼ÊµŒØ”FÙ2 Ïås¬sλè„íÉP®Ý-VÛxç½>ùì'åOþÚßø[L¤
.øC -S¸ -§p7ávÀ€v)eîsœâU<Ås¼Ž·ØÓàSH1å4¥S:§ët‹}b²Í>‡sÊS¾Ê§|oò-ö‹&7ù ýL”NÓyº™n±iÌ•»òWá*^å«éêêê„r¾º¾º‘dñþNé”OªN§óéæt‹Ýe™mwöçpÆ -DÆ5CÀ…ápqð·Øn×X‹.• —Kò׌ÇucqéŒØ÷7Øg\DW¸ò€›)º€;Êá®2àUn±C¯±|¼Eyò¢
¸Üx;RÙ™¡-Ø®¶’v8Pz©“ãÍ? g œxÙ'ÝHõëË—ÉvØ…0Ü®H½’„ ›*`Cl¦½dË!·ô2r.y9½õ&*w¯"Ü6`äÙ¼ïæË.b—åëÎÍ×/»+>P¾<s®ð ©r
Â4ÜÛ` -ãfÖáj=íœòiãv‰?„™»–?yZô¬Ôq¾E¥^Þ\ÞZ—áJ¸’·YYa ÍÌô(‡§ŒrrgaÄoе)L¶¾Nåš—,b…tU;Zº‘Nd6ôË»3¡C^/”.Ò†YNÁaåvÀIöBÃÔ©å¨gMs–²Ð5åÚ£S¼CŽ¶Ôè1Z¤SßœÆï|O3û[Ë"È䈓ŠØ£%l$£"-
å—ú£ùFFÝò/õŽ™´™Ó—r6‚ÝY8è*ðß©)¹)‹©¿Å¡Š™sñ]q]±;¥üI·èxâÖLÚüïõnfIû\„±“Jg»eºXr•û†•¯%>±,"eX—aûç¬lX~ï‹»PdS£}bÙ›à2<±á“öd÷ïôó½uXïE3Ϩr©•Í¾.E9¬ª”¨JŠ\dáªÄ('}(bs=ÞU-²lÿö4WµžÞõ=é9®"}ZÓ¬ˆ¥„YA°è†Üú€ŸLü6«%õTsë¼VJµ’ë´{OÕX ‹2¥=Ÿy£e[´3UC³wD翇îd¶‡°?”–¡SîÔ‡Îos<‡•ò;Ÿá‡Îñì¾÷÷XÔµôÓË?ÊôòOåBFÊÐ7ÂmLEò‹…ß°³ôs»â8Ò†ã°+ èH$ "… ("©tåÊAy–ƒ\‘ƒ( !DÊ¢JòƒˆBFÇHÅ×|¾Ÿ! ©,DiȪ4$òÐu‘‡N"e‘‡(‘r™¡E·"áR,RÁˆ¢Qш‘áÈÈQº é,e$JI OeSB%'äЈjæFÄ¥kˆK˜(2Qh¢Ø”|Á‰¢“J5Šøt[ë“–|97ònIø·ÈöŽ?Fø§…Š“§ÕµX¸4å̲P,~˜)uÇux¬ªIÕ×xÍ" ?4¬˜
Qíç†sÙÐÈ
E6< KCÛvÉÚDÏ1<L\$ßç9.Ò¢–µšjý³UËTk]˜ˆ/R†ò‹Ý·)[µ[hJÜ”4lTy©Qóå -p*’íºœÚ2Ì:¯Z®»ÒÿÜö¥î±a}S7zÏ¢úß-n·M^_Â…/–Y—;l»IÔÍ•é‘r54 -å½rzbâ>l4ו맕açýE|r.V½çO‰¾oGEq3Îâ§--U…© -ͪÞL¥TíçTJÑEUZ*mXŽM]JY«ˆ\9ùª¥UDi¤%Î%•’ç2•r5—ÓÂÏШ=Ò´¨î÷©ÑŠ
ˆÐ%ês‰ê¬(ÍIt8—iÍ4fCT -a¤);”ä12<L7ž@2Ò0¬©Ä{“†Õy¿DžHú“ù?\~ süt¨-*X¶³*;ÅK>Ëy?€Ó‹+[ì ”@í±c±ÈÒ&Ä*›ÁPVËì5m³¸\Ô8ë„¥6
ŸV+-í´7b©U[#w)öZþÐf{%0í¶<@j»¥õ–Œ¥Xp1âfrÚbÈ=]ÏæÜì9IÚt=†G9 [>E¿ûîôâ¦XyÇ+3€·ÂÏÓÜKƒo¼JÂéO+ï˜~Q¸ÉQ0:1ÓL†<‰98§IlÂj>-âѾûð8“ÜJl+™äu!«…¢3)]Hh%Ñ\håB#Ú¸¦ˆ×ÃL×ôo¡{[Z·&qk²¶"fÊŽmIWC¬v8Ÿžxš}¾å•iØŽu¢’‰'^ðï{Ž‹âú߇qåm¿ÅCÇåÜIJéçÃÏž=¥ééë¾Çc@Ã0²9BŒ»kÛ±¯£‰iòcÊc°£wt½6sMô&;ýXݸCÎÒåäI1à“TÿÀ -+á¦àt€³Çµ“lð⟿ZŸ +R>¶›„qœVÓð#â‡Ùó6³CÇxjiú7~ûäzQfdšŽµ¸@,¶ÐËézv4þ¢û.¤¿ûâ/÷_üb¨¿ S;;Žc4`&¬#
4Øœ6%ð0yœèSI¿RмíÊò‹ëí§
m{=´½jŒPÛë¡ëµ]¼¸ÇÕÔ| èâ|ŸsÙ|<:@>ÐlŸñm¶Æçýöÿ/zÝÿ£r.·…_±…S Åž -_rUX‘ëµËBa3|ñ¢!<4¸S<½0—ô< Sy+úDe&£°‘WÂ@ÞAArŒÊ-^‰žøºu‰U÷×jKTˈXÈÅÅuXªï¯øÌî”á’—íÞÏe?êµÙ#užè—ÕçF¼nf¿›VÅœŠÿzàQ2ß7œsP‡€‡‹f¿¢'zú3mŠÓÉÚídq<9+Ÿ¼r>ñ3_<U”k]' -@Å•rO®þ§"í¨÷i ‡’
嚀y 0sÆfE€ ÅÕô:©g§µxì,>;—Ÿ¢ug{ùYôʪHNEaì‹ÉÊ]òÓü¬Ô•d1œ¨«†U¯¸â
w]<àªç[ž
)¡8¸©cÛ(ìôÍÆÿbåb<;«â]=)Ü,‘I£È¥IdÓ,v„+‘PO¢’ºD ¹QuVÕo˜ë¦«Ê¬‹Ô*rkñ$V_ba¨¸‰_³ˆ¯U€½Þ±[¤X.}õ7I¶Ê²C#ÌrOLÅù,òØÍìˆlE”îÈkYö,²ì
E™¡ˆ²n%ʦ"ÆžDŒ½1V]• Ö¯$XJ¯³ü:ˆvl`{6V„ØY‚=‰+2¬Ò¡â¬Y<çW®bcî¿™ß~Zì-CqÀÇÅŠ}³Ø³ëoëg÷üu8†šrŠs¾™m;nŽÍXþu›}!¿Õ‘?Ìj6U615r#•ÿ«½Iÿ¯n -¿£™õwÏz·Ñ2üËë×Ï_Ý}qø²|t0¿ö>\¼©v½Â,³¬Ð½Ìe| -…¹¸(Cq7o]Í·`['sµØ«µþjã[ñd˜Ë§1rQ•øNت¯àËðÛ8
úEùñTÔ‘<æ‡å}ž>àSð‚²žíÍ|eÂÍf¸k ñHʾƒ¿–é_ -±M¢á¼^A*Vﶦ³ -o‹DTŠÐ7
‘Fð\'¨uYÂÌ6@붳,º·[ü…¶eh>ˆO*ér.Vå÷+÷h¼#²öexZ³§—Ÿ:Üi0ó$•ç‹3QNÏ -ß‘6®V<Ï’°ª‚^Xºì®EH›¹92kÌV'jæX\+KdàìP¹8SÎÃìGYã·Ñ€3É¡e¨N”qV1ƒþe'ž‹±ý¦„†%:СªºU†9J°–ª1ÑŸ«¡P–:¯‹v¦êluÎ{¶¨L[†5*ÙF—ä6Ô®/¡+B‡•Æª-;–™eÑ„åaýÇ“J§—Ú–á±ß¶<µÃ'ÿOoú_¦ÃK„ÌM ]"³\©EkF0ŒED©ÐϤE È”ˆ×θϔogŸû°Á|VUuÇ^§v)H¥!Õ
{'¦x—ŠT:’ˆUªÄäjCITßÒ’…žØ¢(Z¨J(ZÔ4¬KýYöè–®l¼†Zç¨Ja†ŽÈ\"6öBi(ÎðDô9šËðPå{”iÜ{•Ÿ:ü:ü6‘KOþy¨ÃO¹ë”0i£5*£aÖÁlðX×!X¢%R¥K努Q>E—¸±(c4”¸”,ç„Z®Û™;ò¢á^ào…;r%º( Ñ />êÁ1ˆÉ]ý3HJ¨WÃ.=œÛCqÑ ™Q;
¾JªÜliJ‹†B†Î%œá±ÛµÔC^ײҫjL[ExD‚Z䤵 ´–n¶IË´®~Ô»üz§ôMj¿,v8Û'ÿ”2<Ù9>µOoú_¦ÃªD»î Oسé&àÐãùºÀF -Œ -0j¿h‚£ùMMo€p- ~v*šŸØ×fPóœj¤Ý0<м…4ŸAÍ—¸‚¡Øƪ]¬ÚÄ\ /0³)ìzdpµÂì[Œ_bøŠÝ«½¶¯jîZL]‹¡kmær‹kX›¸6æÖ¸Õš¶.Xµ†Æ¬uɨµ1i=dÏ.™³öLYO°^IÜÖSËù)exZ³š¨2<½é‘NÒOä' -òùÏçÇßáOä' -òùxÏçÇßáãm7æÓ?¤a>Y£Žƒkp¤iò>Æè§d§Ñ8ïí$á\Á09¶f‡¶–Bà'ÙzgFx™qÛö¤O/eâŽþcT1ß;ɸC0ÇtmÄojj{щ(qpþÍ‚C÷@‹í÷z
£ÎNiçûm‹ùû)íx¬?þŽNvßéÀÒéÀU§ƒ!ñ¦qç¾nܺ/¹/¯®»rþvE»i]·ùóŧ³Mi|üâT3ûëÙ·¾O'—ûؤªÊ\§ÆL+ºu6Ùu&Ù¦|tÝ,ðJçtѲ•½ K±]ŸÍÚjƒ=?Œâ‰Q‡æ`%óÖœk¬‚Ë,pHy„Ta¾kƒ5u1'ç@I¦QAÎûlÒÄP¬8úMJ&â¢7nJi´Qø‰<ÕY…ôOúdßß飑F0ÌÚDõ²G3yvÇhC°Ùx/±àe¸±w9‚Ë£/ìh¢-ØUPèhŠ·nñÓu¸&ræS–wþOÑ÷øfõc[åïx•ì^$öÛûßØlx³¯qq}ª«îc¾¶©óµÝsn<œ•ƒc&æzß‹}ÇãÍûõ•ÞÇíöQ—PÜM5VåûŽ‡‘'5æ¡Þ¿…Kë¶ÿ9ÚfKóÊÙrC$ÛŠî«éööºÛìõâ-h4ð5Œš^73ø -^.E/Íy“jðR®ÁKß—öþi{ºv³·?úÈö|¨'ÈʾG¬¿ÉK¥6üæð´œ
ÖÊ…¹÷¸F|ý,x5Úï©¿ïvÊóî1ÏðÙa±b,®óT—ãÂËÖërTèÅhvƒÖ/ÜÌžÓãʽhùjý2~äœÒsñ&pr|OÅÀ•sªO¸!yì‡øÂ"€pÖQÁ-×—ÙÁã*X\ÃZYåÂÜ[zõ¾Ü4ù€]%”÷zCç@醒®Æ×Ö(M»Diês—g„Ý'Ù Áæ§-tuh"BmÙ@ãL^u}DmA˜n$ýÝ$yïÜÉ`©†ž0&g’×nÕ³C7x'ƒá¥ŽÜ(6–Kf¤t'ì8ì=n€ñW’lŽ›ASïóuOÈûüx8SÉVÒæ*ñÿŸ;§TìœñdŽ¨>€—ÈÙ– IÐÄ°ØXâ#Ö!ë -®¯¼ÑMa†\QýÝ™†¢õ¹žµ>æ¬Y+|ÉZ±Î[1§z[gz[¥É¶ù1›Ô˜Û´˜ë’mJÌUrÌ5„íÃY|ŸVn‡o—dññòãw¨Ú`…xßÆNRÓKý®ðø…»¯œýi†îs‚ƒ™lÿ\7ÁPÎ||é›óTø‚GYÕugánK”€EŸ$%V`˜•t -ú6 >+j::ÑT¨É\P—hÇÅeìlà³éŠ»PÂnñCö»%¾oÞÿ«ßS‡º5œÉ -¾YS¸hð -åšÊÓêóš€fW³X1V®Áþ×ÿç¿ëä ã*Â:æI±2ïõóS‡OøBI®4â4ž!ÀeVÉkÝ›?áx“Á·ÂÜ“µ'cO¶žL½jÆ4-ÀšŸo·KìüŠ¡ŸYúëâµuU²“h“%
‘J–”’L¥fd™³-yïçŒ÷›t÷uËϸÃÅ<÷®+q¦ÖeèòYmˇ_Ëï½CUÁÅVÄN`7Ž¡¹ -·6˜<žr[D¯‹•å\,-§9n¼^$Dðò³Â8¤aßw¡Øý2\¨0ï[†÷ÿê÷Ô¡z*-–¨µ-ªZ£Lç¿T½—òŒºFßh7@ Kò§`€nQ@ë°†½¹¹¬#ç¶^£MÞnúî›áRD_çyö´rwQûvåÇïpØýѹâÑჲÅp¡b?™MŸ•cC¤¢a7µMìðt·˜º¦;Hõ†sM”—‹8Î)”–4y%qÒ—i¨½$!¹wb‰¹- -KúÔ«g…Ñ¢_Ìõ \ß¹Àœ¦D! ¦Ë”ª]
š b—jÝQ"#ΕÿSm®2§aæû„ã+|ù;rudãȼ]‰¬A>ÌýàQø?uØýlå³R0ÌÔœn¶ø¶‚`uEssŠ¸¤9
+Q37¢fÚ©¥Qå;NL÷óƒtø°hp)
n)ÃnªÁ6WàZœ™¥œnE*Šßõ:]Ëyåu};» šöÓ•d“qþYÐJþ³Z×öã‡,È=ôê¼*©S¦ÙZ¸Å -µ`E×;p8OÚ -ï‘nü¾2Â
;aN(¶êõFXg¯Û`•”á¡ðXb†mZ†bòòwÂk7Åõðþax«-²Ú(Ã…ôS[à£ïã/|ÿ×ážum*][¡WÔmØ!n;2Ñ.Âþ_¿=ß1ê1iÜãö8¼Üc±‚T]#Šwíœ-ÀÕÍÄÕ‡Iø~êÖÝ”€Ã·Q¸Î~§Õë´”^/¥CQäJéRzý$˜Ò-Hi‰˜¾[Ȥ"k‰™Þ?hR¼«é{‹W5ªqœn ²´ƒUöÓVøi+ü´~Ú -— -¿wh¼pðC=áC©ÊðÁ³~óúÓ·÷¯ßÝ¿þò“OVrûºbøç¯Xã´æÓçïÞݽ}
þêå?¾þú9DùòËašŽStž–~£;Xï4²3ðÆa{¬‰GìOlä -Ç…I3Ô^³+ô0pl)=ñ4/è$«§MúÂŽŒº'0Y :DÑH˜kÇuˉÄf$©¼HºØËŸ…Æ^Ëf͵<‹$‘ßòòj¯'‡¨É²ý'peÜâ8l„¨à,X™Zæd§.¯T>×S· -í}¡ù[íÌϹ0qufÿÛ¿àÿòdfä7_ƒ÷øêîù»»/žáʃì·ûÝs°‰ç7_ýãÙ›?óë·o¾ùjõL‡ŸÿâðÇ{”Á‘—Ø¢àþÅ!TfEbÀÑ(ØÀxÕL(2Ïf㴸˸$³án -ãâó,L"ˆC"™ñzŽûJÂòЄ¶ \ˆä7TÌôóÂ[¾æ‹Ê¤£d®+•¸¥
¶6¿vB‡oeªW]Í!DW1•oHwm%H2kÇÁ¤ƒ±dRq'CâÃÕŽá™XZŒ‘[õ€i;Fªx#îBÞµ]y’—oeèá´Ó¸öN‡l3_œcD9æ¾ÅD/àú*m%®¡Ý -dÞ„Sÿy]¶-•Æ
‰u•€µH¸JÙbcà®xµ[ ¶Ÿw?*ðÇŒrYrBàÊŸ:3Ì‘Ù§nŠsS.µ£ØçÁe·ôÝU”ÍdSi°k3GÔ>fT²9i\Èh?ü¹qûÂs÷¦iC;öŽ+xƒì#ÕÑà@EÔÅ:ª®P¯Ÿ€›‹lƒ‡XJÂŽµKun|‘ðÉÆ›Úëyµà$±ÐèÛá8CžŽ(Aï]ÒZ0O¨×„mx{\ê ÉF0TOÈE‡È“HfwÏãèÁaaJ@CôrÁ`%@|èR%›R˜Uø#>LØoè;yp "MfP"0Ð=âõXp©ÚÙÌé²nä |œÁ9€Àâ™APrƒ-àÉ -á2Ã3AÞ(LŸOšÅ™\ªŒ'¬"‘D‘Ó‚ÓÇÈ3ÙÏÀ -|=gÁ¿Á -gÛZ½ÖÏh+ÊÀ´³¶›6,Qó”Äåõ±YÐÞš×Y¾Õ¼ÿü”ý9Û>s¸úêǹ
%Ò‘Æ?l„ âØm¥ m]À㽃)€L„·œŠÁpï¼è½‘Ch±Mç -½Ï ÊS’I£8\®¾…Õ…<%4™À4.Ïi+Êà´»¶2©>=ôÏÐðo?ºR¡Ýµï4«™„ù1û·˜…œŽºº?U58?!YÞ¨Ø&Ø2<OYuf†\1?d1À¼‚J…Y®^U¤¥¸wRÂ1â4Qê×@R¤§'qâèA¤ ÁS"¤ÝV(Ûd@ÈDU€wÆüeº%EêAÀ[“Ô• -Y
ªBƸ4*„‡hÁÒUN©vÍv4•N Žã[”iÉ^:ÌN"hw†@SQ‘AK'!ýSå;õ- '?d¬¶ˆ‘Û…ldÓ -ƒÀeLQØ-2ux5nþ w¼¨S( 1˜£¥&y KÙµ'å…ØŽÉÀµ€µì»ÁÔ€»$FaÆîqÂRÒ'OÇ>q¯ÅˆÛLeL¤få9m#¹p\”ð¡ŒKîdv“eŒ–œ~ÐeÜãØ ŒK¶¦“ûà¹#}0ºU±OÁˆêe¹ý€$ŠÀ|°ªxAÞ* -LæTøUÎþ$</k> ÖŽå&±ƒ±&ª4yrŒ(óö$bxò(¨5ÒMâ0êòúˆÉˆ“pörû‚³wÝ—#…-F6<_¤‰ -¼4Ö£VÔ»Úˉù˜¿s9)ß²zNWQF÷¢ˆm¥;’-:ôϱœ?»3ºR¡OûNó·ÚY¨Ï¹4wJË?¼YŽúÙ1’F 7lÖµŽ,í ÕþFÝç“8ÁªJ\ìoà¾À¢Yë}¼68j @)À€…7àTÛ•TÛE‰±à¨Ÿ ° -Þãicã³ c&ª›¨N-pd<ttd—pWœ# -®«¡Ÿ*åµNX
åžF^‹³ÓŽ£âÉ^ˆp¶À±‚rÕÚðf¬WY§Ë•ªå< -ä -`Ùó^–7¹é1¼éq9§åM¸‰è(IDúRΖ72ƒøˆÌ z\-oÝ7Ë9 Fí4ÓüöÆBŒã‡!X°9f6Á:3m,oü(a¶)HÒS
oS-p¤¯Cˆ}78r!f.Ì. ‹ôk"'W
o¤g.mím ‚½¦ÙÌBŸ#Y%µ®áOçň»X×HéóÆ«ºpdšŠ1
L -/÷
-ƒÍ"¿UMg“h=Òl1{„uÞØÉäîäÊ`3’MœídœhŠëÕ<†1i*œ"h_wmÃw•Ú`{{*šª}'£å㜥4+qËËÙÃ-ÏðõÌPO’UMcdm)GÐt8³Õ41MÏb /˜7–1ru¸/¨˜ŽT•TØ\Bb -cÕ}[±2>õ•ÅdÕ?§¹úÑLcó«ÌÛwž»¿0SÿkYÄ~x;(&68`d]@Ÿ‹i“ U}µq·@3Å¢õ¯Oʨ4|nÔÞ‚,¹¸xÊ€õóÌ1M”÷…ˆO#Ýi°Ú¸Ý&H-nqdq]±$«£äàŒ«ßé¡véÆó…ö¤0Ò§qTÉ£R;{Ìà¢#OR?WŸjJ–ÏÄ'$qÛ -4Ã"ÙFjµ0Żeë¹HžÓ‚KÅÖßñaDcœJj{Å
·÷e¤Y³Î[¼Eõßl]©™¤ÁlëBëÝŽ -‰²áÔyiÒê/š3ÏDo¸Â:MpÚq…yÇ‹ z¯7¥*Ü<7§%'D•fW¾Ò¹rÒ""”‰èu¹ØÛ:ŸNÚ#=ÍÝØòÕ¹“Ú`o6ÐH½ÒÔ{yvwË#îžl¯´}¤úÅìû}ò2òóî9©Æt 4éãÑ8½»e×b×)t§ŸÆÑsg(]‹æ•vFy9Q” -wœx™7c¡"—§"›ç±§®Åž/éN7ÝìvCyl•.º™‚Dá=yÈ#ȼ¹àoJ“›W+¶£3@ïxŠsvÄôÞµb×ñtùÖÖ‰tçymƒfØ{®¨<<AìØtíñ½Kª¥>ºÖnÐ¥b×%uùV7Kíó›ìŸ$ò‡Ý3œ)ÞŽ‘êI^ú´Âc_S¾ÀroœT´²#ãêx·C²AÞÁºaÔ#4[So+8Õ¸¹±à–Ê{|*&D -ël -Õ1 fE»hÄ5¤ÜéX1æFÃä˜HXª·PÈåI¸X
ùX|Íñð5‚^É“ÀÑòIr=«Ït]F3ê¨}¥ª7Úåð¨Qï0YàÁŠu¦oe”•%D™>—Ž9tÁˆÉ†Ð/žGŽže#¾*¹BßBu“ –ŽÊýÄØÿV æà¹É×Ñ«Çú!ô-šWÑ'µ0•r½ƒÅǺ~,·•¥Ôñ!é^©ið¢™îËíTvÏtItÇu:+Ê!äâHì{°ÓåDÝ>GY±Æ•n\£ø/Ê ÙñiÇ©¢'+z&;çvñ‘™äî¥×öÎì¼õʈ!ì5p¥O´ø®ö|¡ ß©w{Ç—$Ð$Û{×b×í½ï§õ[·BP‰›è°ãOéÉè;y,êϾY¯ç¬[FK‡faÌ5¦;-Úíðˆg¼¥LÔPø>¥¥]ylí£‰Ü?ÖûÊw"CuQï*výçû¯·>ñýúÍ«ìú֋БGq»ÅE{'{:æ -÷è±›’øÉ—Wi+vÝîw¾ÞÍf7„ÇVåãóÈ'Ë’ûQÜÅvÍ]«j.輪½€gTì’‘hL~×ö^±˜eYÝ„6³½€:oCت(‰”§Ù^@Úúdœ7ö‚Î^_íy½Ú -ÏàDñLsL‰^¸:É®Ž~ã"Âñr™¨¯‰|’£ëªws5²mn%n!#\ˆ¢à -¨ì–—yš£ˆ0¡9Ä¡øxJ¯xI&0!±¡¸ÂS½lÅ
<ཽˆAz#௑’È(k$2JÜS¨éæ` —L%ìNO;…/Ú< &¾˜*Šãï0Æßyµf0÷ -•ÔXOñŸV:GK‡¡oe’'ñžá“o/^ùêwDFÐÝ掇ÝFãWñf¢”nØ -¼8ݱ ɉé)Z\ɹxãf#~¶–þ£”€2Í`gWýuSq!¼nH¢Àî¥é"ûÎ7‚±4w`>è¬Ç`±¦Å‘<`íz°*P¥ÌoƒÓ1¢Õ£gu¦Î!?„óç©‹§HÎ#o1)gœéÙ»5Šk7¶8€'*“ÅÆ%ŽôPbãNH¤ÌÕ„áŒjÖ2ÔÜpWôƒ°Ìàú×FpJø·O×^6‚…G¥ A„0SX´b»·;‡V“¼F ˆ -/ƺ¸7–®EóNú¤®)(ꦑ6©~,VE ìVâ“î½SÓ¢R£fnº~ºùíÆòØ:}tê0%âGQØð¤ÛÀDèÖj[1"F°Œ¼QÞQ‰b3QÉËé ]‹›‡?‡ãh‹+&‰@z‡ñLYB€ñ -,%Ê¢®MÂw—Ë'I’£¤–‚Èèaì¢$§Q=ïæ±âuŒù¨Y’åsTåB“ -Ý“Uƒ¢Üg&Œ˜TQ«ÊL«QL¤ŸgŠy¹iPƒ¬”6ÆŽÜ}]7iR^!FKBᦢ5ˆJ«ád…2ƪ:©ªœ‘¹q§ïuÊ#U -ü -GbgÒy‰šöÃÎ@h
<):oö^¨i¡ê&¦ë§Ûn(¬Ð쉢¦îÛ -¡‚"deÙA53cK^í·šŠ3C†œ"«xfÊB+æDˆ ¤¾žÉuÅ…*á„MÌfHýVÛ@ãÂcXé=dÔ¥£ï—’
b¦”kug(]‹æ•ê“šVIµ`4f !mÇÂè :Ezé8Ó¿RÛ@ÔÎLßM7»ÝP[¥y=±µA -é á¡ØÑÆD
”TæC׊Vc}j²x‘É Ôj˜)™BÜÐ+e <ë*ê%2.AÜ–nb;_÷ÌÌG韬ÁÞºí›è“ºVñÉ•âÎVÏËv,Œ„£¼]ß üwjóÚµm?ícøºDtpÊ4£…Gb@ +(…Ú•ö<j"°y/R;θ§ð:Q4ÎrS‰ÆÄ%f6Žtw"zSvé[èõNC*ýºÄF¶ÓJ"Í"ç™9 îØõXvZ4ï¤OêZYե洣ԅŽ—®8^Š/\÷NM‹eöš¹éúéæ·Ëãë4¯¨cݲÀ -X
däp> ‰.hÛˆ~Ôõ$°ëtí$k£²UeG¢Ê€<å˜ÎÁK^‹Ô·xQ$d õB‹(Ü^߃ë¨Åž£ßB×¢}“*M6Š94‰Oá¡ -X¦”ÌΛ” -uÑ,ï_w³Ú<å±YÿøÌl -rúé¡°È^SÂS‹Ž©…i1±hȤš3èä[ŽIƒŽEå¦8}Râ3f&‹ VN¸ŸˆHÑãeAÌaÐ*iq9™8ïNq†¥Ø6…8‹‹.Æp¢ÌºÚhñ‹3Öh‰íÕÓI¦ÕØi‰0îTfÄ¡»EÔ"§ä¦ˆZœgüÍy¦/½ë¡µè !ã
Ø:¡xÛ>¼Ä-/½Žâߢ§Z† {¨[Ô;ªŠ=æØqUZ¼*‘¤¢œQuºê஺/êÖ[eítÓÀlí¥mѾQÕZ7²nv·„†`܆êÏþEÚU³¾Ÿvâë -Ñùè¾ÝÍd7€GWäc4zvM$×A=ÊNe6Øo¢|À5%ʹ˜8’Þ@%&73Â7`pT=Ò™OÊ6«+6¨pâÒ¯7Þhû¿…‡£h
6M\ɳlƒ'®k¡¢´Æõ_o1à¨ÍS¥]¤ÝÊí´˜LÕt&:=tÓJ$+[™TN”5¢G¢t9òCªéäåPMœ-̃ºd<.3%ÊÔƒÈqŠ‡ÖƒqL;-"m‘‘ѳնo‰™Xlo#z9ÆxKñc ™ëZ¨$¾™ë»iÑá@5úÏØ®Îì´¨fL*J¬«ö®•9JHm.gÅš/ºSCÞ‚Ë1Z;ÊŒEúUós.GçTñ½ ë™`¶àrt*e°Ö&9ÁáiÁå¨c•]àÂ’¾¡Á–c蘄]:º7J€Yƒ-'šZ¬®hjCð=ÊÇ*ª[æ6$fó|D×(s¤WB.ÇͪܕaZӣ̑6Å£îØUØÏnŽ&2 ÚjáæÈ¢Ë;zþr;×±ÆÅ;ã¹À/\C¼á÷è¸B Nœ¹‰(ôPt²BSê€ÛêçõØn`ß–/5€q;ÏëZ4ãÖtŠ€†ûD=e7"ˆ 2äδ
ôAíë÷ÝtSØ
å±¥˜Õ’-¨á<É`+¶p÷Ö6êãH4Å]×aä^ìš]‹ È›ŽàÅb°ÓŠ. -8ˆ<àîÙ -µy–-œ3Á÷0m]}R÷¶ÓOƒ·3–®Åî;uº¹éÆÒNï#‹4¯fžÆSžäáŠÓ>X)èƒpÉꮅm3™×8‚¹ômP¹‚
d\×K6פoѼЋa´Nt¾43¸ÒŒ©G¯S!xzFï½Ð¶^pÝ´´½t3ÛäÑzT9öããÜíBETÀ»"¢C¾ë ":¼]Œˆ¯Ãˆè@ñ:ŒˆÎ~$¢ƒÉë@":¼¼$¢ÎÛ‰èô:ˆJ¯‰¨˜z»Ø¸^ÑÁìµàûþ.8D‡¢×Ct -6…¾í~ä)°ÅÕ/v:RÉ)hÉËMÔ'†èo Ê -ýžÞ|\oˆÌa\=yÆ)tõ3!÷š-m߈7p¢˜ç™Þ@Žy7Ž®Eó:ÕBÞµÒ”Ûݼ€÷Ã×Ïë=×¼{ýR?µú”G¦|Ù?¸V°a$T1Oب*ñEd\5!Ås¢oDÔ †4‹÷@õ€£®.ˆ3bã$n²§J{UsÁ8^}]U¹Ú~9)†¯˜Úç÷-š×¨>M«!:4ñiRê¯# ·e6ÜàâÝ¿iñ¢Xešièúig²Á#ëññÐ[%.hb7Ï =[/Ÿ¾’ab‚rQkGâ0’¥¦^3«úYÙ'î{çëç: Ä–:
°virËwbñ™Š+®ÒV”¡UcÕ¶÷†$”ê“4…M?¶´Ê¼Ó½P©ì§ <çâÄ-1$¶Ø[&ªÖ•mI1_íVb¹F‰VcF2§†ž“i‰ó¢@Tk¹îÑÍʸLÅ°AÝä¦ù[Œö#£ý4ˆSÓ~^Ʀ5u<4¼O»‡>NÓÎÐJE(Ù¾Ðüv -ês.MÜÇCoEL“¼I¶«ÎÉ™Ènܶ¨xˆ‚`;—(½VÃÚñ“ªLG+qv¦^BŠ£dI¸kQ¯dæXä½—Åa¸ï‡k4‰·Y–|²ýXºÍ;Õ;¹i•¾ÎÓ4h|^3–\ĺä&qeèß©iQ¥¸fnº~ºùíÆòØ:ý˜â\³§l(nešGQ•jâÑÃ~‹ÛZߊÆU‰°!<»j¼± Žði£ _0ÕϤ.Ø¢_÷Ž·›+TñBÇsG±ß¿5çr…MqçymƒvØÚ׊x¢¬-&Ìo7±÷ò²_Ÿ¨kï^ m¡Oj߿率èn,-ÅG£B"ëKöV#¡Œ9+¥(ük¥-6¦œs -ª"à'ûstÕ'˜ï2–ør16îT¨2Ü!"óë´}ؽ¯“˜‹üHØ¿°7„®EóUíÞ´¢k’¸ã 醺±Äc&¤C’]¿JS¡èf¢ûzÄîɦþã¡)bM7ñ6P
;T†Ä زMºV´rµrû"„‚dãï ð+L€L$~I¢Xb4ÅO’ÅÀwõ:Õ´• zA0’öëd»áÎãkE3úÚVZ½ò0µ>ínû<´ Vª—ûQ·
êܾ{ßM7ÝP[‡Q `5uf4¬þÑ„ƒæËÖ˜+3ó°ÑŠ6F_B´ÅDœbÉïKâ-ÈÉ¢UdVÒ]|gRßB¥9¯AmA“kú8ΔÊÙh\ÜK×¢y•j•Ý¶ÂþÀ<PmÈês¹Zœ²À–¤¸óNm‹eÒ¶sÓ÷S¦µÂ…Ũûã[!ˆÈà?¶7?Ad${ør$ж,Ã4ŽâàÞâ”1â?P܃'ËD$-¨zT²$æx׃‘%î)·A*&hô*œ·ˆc‘™ò@²4Fhïh§_Œ2¢ÏjaÅè™Ò41zYÖõ b^ÐQ\jo1c§q° -“ -6ö@a‘ae4΀’„óû,MGŠq=,˜(zŠý¹C£¯Ýº&ÈÐu¨…3‚FB—w°Š£$€l -E‡{,¨œÊ6ÜA€2’ð ó™ˆxAÒÝ @ɹkAŸvã–*óò«íà;-•
˜’dCžBÃDnÀù}'ždÑ…t_"”1ýc–Šh£¥²FZžÓ@*̓ÛdZÞ¨©\æ yÌÅ™«L£²b -íÀ--•-´‘8
í€"d/]€T‚ìžÌ´‡¤tä>ÚPª»¸Iµ²Å(ªÏéàÊàvÁ‘ʵuË4O¹8oub¤)¹€{4W¶`C¤hr)´8E ¿£hñö`ŽhƒÄÀöKäÑÄï»}LØÃZ*h¡ú˜‚E4i…[4¿¶™g¡íëÒôÔùcªj#Þî; DKeƒÿÃõ£›ukÞí#éùiç[ôÞNiç9sÅÏRÙ ù,Ïi@€–Ñí`-ïÔ~kž…ö9—æ®N.mmÁ] -,0Éö•¸+˜£¢à\±10W¶ósZpƒyt{ˆý˵ú jŸüøD¿—Êæƒ$}»4E}
õõðËÏîžožÃ~ß¼}ö‡û—wÏþíþ‹wÑþÃá—¿yýn§á§oïþv÷wŒëå×_Ú^ß¿âøïï¾~öÞýã±Ö¿½ûó»gxãÛ·o^_ž—:Þ7_µm]iF£÷÷ð«þÏ»û/ÿòî‰ïúÙ›¿—w
ãÅnù²ŸÞ½}q÷úÝò¶þR×üçùŸ0Yßß¾y±|§YÚ›ágW¿qÏn^QºÐ¿Ow_Þ¿.ŸüêðóºÿÛÝ/ýG´EQ·¯ð ɺQœü©» €ñ<µf² -ɵ©´,ÿÿãß;}áWCgšÿ„_ÿþ;üîðïÿ1¾Ð>1FFÒ>gŽg|p4‡ßîµêÞê·ËsªÛíýõ“ÏmY·Óó½ý¥n¢Ïî^¼Û¬ÙÙ¿—߉|@c5eÁD!š¾„'”1Õ®â뀑Ž™V+FkyÑ>ØÙ©*Ô ~»é©y¢Ç#ogªclJ)+ÜÈJ&½H4œÑè† -fé`E -£ZT:½Ð£RÁSäó9…ˆ@ñ3›%O÷¨,ú#/h¯ŠFÀ1CvâU@uÉyPïk%d -y –Ê
}è@ƒZ™7ðp1âW$£ãD¨‹I!GÅa×æÄTI„»‘@SVPKŠœ¨„¦úLŒ¨âXsIî´òш’‰ŽÝÒgPl>UB‹òÂn£>GRW£ž9´E&ô¥?Y#ÈЊ -¶®ø–l•äÁ¡JóF•çÒÂñIV’èžEÒ [ªV†Ê -81ÕøªÉd:(
iâªñDdÂ;YAÌ'ž1æ›-\¬ØÃP¢ €2mE«Ây…"ö“V$Q•Ò“Ld²QW«ËnÏø9"Í(sË8¶0ê«0Y<'ßÈ)HQ5Y˜Û‘ù¹ÊLK -Bn -TšÖÙ‰´ÅV’l¯ÔÂçŠK®™£+ù¡<½b¬TŽã¤™®ÄÛÀSQƒ-B3Å”5Iºp^l·F*bö‘ù^Ö^‡—+]én%BÞ2Œoé-kÚ5|nh°ªÏQö„!s陣¯KP2î>nKÐvÒŠßb@LjHE°#‰ -’&Õáé4™240=#õåõ³%s†ÚMÐ9®IúáÐ
$Q,™*WNüX¡YI*ÈJú
GFO%]¹POH®(ߢëƒTèsÀeѲÏWT<0¡‡‘¾Æ¬FÑîðŠ&v¿â -FB&?îi¸²Ra}4ºJ[1Ez.¦± -WÅ
Ña£Ò‚e -– -ï/A™¹’xC!A]UÂ8óV¯ØwÔC„ž!oO•sÂá“—¡CÑj%ÜîèÄ\B[.|&Hp©xQ”3Žt+Žd¥üò`õX‚)dVÔÇ©ä˜ -4+GN»£I‡eÎ¥3I´ bD„ôI `Âëœx¡ôµ¡‡V4šHE‚=‰sé·Jeg…
‰%h˜ä>g¥8êÐóH\;¹ânZn¨ýeÂ3ê›Ù™©YL©£Â4‘ótR9%ý–€€³Â\£”Uô’صÀØ¡IÆæ«T|¨˜å–>T–~œ• >T*YIxYq³;Ÿgn¼0+Šá)†[µõ"|»=8:WˆÛ4n†D·LÏËÈÙ_B½QI›>lÁCÓ$;w¦•¥$‘ t«Ð´§½Œ;Šˆ©#/%²~“Ô¥b¶ÂœóoG_0é„;‡íhAr^ù9ž\¼o'“ -QWƒT „&?šH†Œ8 è5`ÕûR²oFñƒ‰9…åÈüH½…ø§l´ÅIe…v#õY®¢³B¼\j'åAÌDâU¦Ã’“¿CTG|z¬ !—VX£™âV."=ƒXˆ>w
µô8ÒôFÀi$“RJ±[JW|_±îŸ‹þÄp¢¡oe-š†Áv°8™GŽúO¹Ž|Á’€ ¼! -IBæè’Hd(ºŠzáéS0w'§<ziGaÄ\ÆŠ,ÞAÑg&íŽB3»1eEœ)ƒ7åê…\@5’0jVfX\5^À¸éŽ)t=•å”nKOBÕ–ª@ -IEm©lÌëaË´²Rvg¢*ÏÖt¸ò-#dçñ¹•D|nþëš1wˆ81g¢°e¹/$RŠ`i¥±ýqÐE8è+e^ùÁ®2e·€‘Å[5‚ÿ§ê”×¢‹ê>Ñ)¹~¬‡¹ˆ-äÎĸ~¥(i"^›êYш“Óé*èW#CÚJÚ¨ƒ¡'˜Ž€~”L¨¯#§Ó?ϸ¯š¾KOó€€Õ€hÀJuÞ3æ˜8™IL/ž‚EQYÉ@E'†‹ÀR]†ÉÙã3¼¯êÄD" -ê!Ì#.œÀZU•Î÷z᱂Zi)V‘yÔ~TDÜ„ÂtY±x©¯wþ¨§ &¿:ŠGX~i+;$2ùˆd‹9&ÏEe'¦iØ!¥¥ VAýY)ÞVQAE¸á¹‘”H“TjÅQ…š±ŸaWÚ]¨ ÂõÒ2Ĭ
Ž ÂHº‹ƒ˜ -j/ÄËPÿª‘ªÝ‰2‚¨»’L²ü8ù–äzÄt?¨P“ŒsiFOI¤Ùqœ“‰ÊK&W±'ïä5!–4§¼Ä¥²j(YQ(³ -XÕ¾U¾PàœÀd‚ðñlÝVÃ@DóƒËw<è¨%ßœá¤bF=ÕEåóªßQ30ˆ¦YUJµ™YÁ÷¡9A}7› -†jOè*i‡j‚I[‹•¶9pÀ>;¥2U%ÑDcþ¾&ÍÆ´Õ0'N‰ËŽcÐyB*Â¥$ ”à³ä@ȼk„ [ _KÔüÉ@™†¹(wËš©fIP},PǼ»(ägn$:‰PIc€á×㘊O³€ì0þgT@t;)‚-",$U Ò1=È—™·N/mÔ3ô‰‰¢ôx6i€À^”¥dñMf.,ç´&bÌHœdI•ÐŠQHû²<ôhæ¾À®De‘(®h;i!XÈäz<¹‘Tóü$ÅãJ%÷¥¸nÑRÖ’|™% ¡Á4’JáÁâ _œ$'1â’'—“;qß¼Ë -ùê$uRÆ™ºv+žƒôqô‚&En†‘P™>èÄŸ5\j´"Gsø`¼€±cÊÃ~ \çéã|™P«š$=œDz8¶àN•4jsM$¯´¾Pû§<¿™s…pˆÀE‘ -´2Ñ8z‹ÒiØÂì5—ÂQ3CL*-°ºÒB1e[— c_€aZF³Õq"°‘&+_w<ƒ’H2Æ2U -z$9”¼FF -רû^`qÒìú$£ÂsA›"'P´'d¥#z3&i”íprêÄ“šw³•nTh”HÌ0I$¦™jNy¹[8ϺÑ8^+QÞ“‚¹m@R}Û(`|®ÚÖˆOEö
|Ž id]’RBR˜¨¶Ç+:Q)2PŒL@¢(o$T³p—0‡ž´ -}÷ -»%EEWgø8ÑÕ¹«‹ùÆ©ùžAâ‚]£x¨n£Y‰!gäçÅIYW)Ò¨{ëD*$èq¬ ¿F'øw´c2xL=hä+’´)‹öWêáXQ/Œ¬G¬f[4%áX…CJ±æåäPaÆË^04éyB -Æ3ÁٙĊL‘$-8ÅháRÖdwÂrzjsÅKÃóÁl -`NË_–7y‘:x5±…´uðÖë½À -YO…ÉlÈÒOEa)’ÂJ2òój²BÖÑ -æPHEw21h¢…Hð#u;žÉ(DMüv,ôÙ“§°Œ-Á“î ;I´ÜÿÇÞÛìÊÎdgzW {8Cõ@_“ñÏa«l=0`´ö¬ ¨eC€¥äêïÞñ<+‚ÉÌÜŸkR<0pg3"™L2±b÷gCêh4Ï9Šr0GGˆu¡'ÿÏxãà,µ -Oͪ‘q.óÑHš(Er†m -éð%ŽàáNX=ãÉfÿ”_'s36O4hÛïþ<n4 -ëùum×Éžá’üKã¾¾CÛ+R°Ù‚i‘«EE ãµKY´¹)£DÆ_ãXB@j!O7ç·j2•Zí?£‰ãx}pqš‹Ò×–¹²CÎÙÈZxA\Mñ)ÒÂ4Tœ/®²¸·\ Êé³Èä¯Àík¢WÂÚ‚ýucôϹ´†+ËMÆ2NQ‡‚½ .t€Û«WŽÄVr¼cîbÉu€ºJz’4=œÕ¥H2ý™ŒçS›ãˆë®ÞÐ6Àí²2ÎÀÉF´ti˜Ñ>Œê
¢ÊÄè0ng =Üž¾«qÔ)¾ Íl¢…™Ë{¦’F†n^ -4 -Æ2A‡»r+PjÇÓ#ñŽëØ‚„”\¼ÍiäÈÁ&YS~IYû6áe m¤CÒÛ¨¡j¯kçÜ -°'Ã-L#‹áû‘ã´!§Í<ßÒغIMM ôΪïÝn0ôÇŸˆ`…ë cu -n-…îK#ߦ!!Ú?¿F¥T…‡
4ISÙâÌi´AKª¦·XÃû½Z^!£TztÀAwJˆ6ƒÎ:7Ôó~Ðåàž¢š:*ÖGëCbÎ!1;òå 8[]>mÁÿS*³ˆ|)ê²@
è.(øÀWÍ <æ:»¥; :íÕ¦†3 -÷h8‹¡¡õqœìí¾ûŸML(=\Œ…ç2Ú)Ëæ»@ì‘ŸËüŒÆï†x–YðÈ«3{!n Ø¿ìè–? -øˆëïmDÞ=ˆÁßž+#›QèZ)äN,…czA-¯\7t•6çløNÚêB{7qesÚ—²Pé)|î³ÁïÂMÂCÑcK-8„´>ƒý4
3ì Ú4Lhó‡=åéé^ÀQàœÂH„‹W,7ˆ)Ó£ÿ3·Íó?P8 -!FRƒ…d¬%
Hi¤&òášv
‰ã* rœŠ*Yð6zELS Ë"XG}ûœv ª`Í¿ƒMA°7ÏRÓ-ÔÌ«{†f4ì½¾-ì?BëEüf¿£Ž¬/â¸3~bpGŠÐhÎvìÑc‡PàS±†|ùç´Ø]rߘÙd¡
ò‡õâ2 ’J9ê|J6 -ém!šDrŽ<‚
ÒæK¦»½9 -U!ò|j‰ø¾lòê_×øpˆ$¹7G:j'×RödïÌq ³!U~ú~Ö¾¶
Em‡;np” ¹A‚Ô*&<óý8¾'ãcQiŽ¨ÛT®çró[Lmñç¥G@ƒŽ^¡ÆJÔ)Ô.bfí_yÌX÷z|êê+‘Çža®¼ØVž'%Sf'\†<Ÿµú‡]1•)fËvà=Ž%âLVñÏe%¼w´bÒû$¦T*¦ó§”®ÎëCʉ³ç -5\¡®¤+Tø-¯=º©VÌ
&ü›ééðî{6ßõ±Ï² øs£?Xµ(露«>¬4µé}¥ß<ÿ¹àâÏZ¹ïØèM7JhÀ™Õ]½5yÎ曲7Ž1¨Rºd’dYl=yÙ›E‰pŽ†à•«Þw_®L!Î;!¾œÝÍN?P G…k6¶ÌH¼~ª„š)H$Š(’´Ò¢ö²Ëa~=ÍЋ“¡£Ç™oÙÜârUO_7·t¢Ð~oçð‡¿ùº}•Ù\v¼ÚS€)uÌÍI¯¡M -1Í"z»‚{`ƒ3:Ùiæ‰+À|ÿ¸çRŒ”SœC$2Z®‘Ö¨îyFZ‡åy·™ÔÎ
¡§Ru×NYU@\äÙÂú©ùda{@b4a°Î$4øÎ}2*/I¨˜¤^¹2iN{Ú8ÂW
SO…e•Wi¦³2S®°´ÉüWÂÛPL&%fZ“°Ÿp-*áÞY ½Ngº]°JQ4²¬´@”×ç÷D¹+è¿^]¤ Òòö'´@*«rÆÒÅï2Nà7jä¤tÅßHyq‡SÜá†QœmÿV˨•Í¥ƒ{*ˆ”ݨIιEVRáJé'¤+ÌÖŽ
«†ahêRqC -€ˆ‹#¸çMŠÓÜËr/¡çå5.©ižÝâw~ðhtaÃÂCÇÆŒ¹KöSAŸS¸Ï”~»DKŽ˜Vø{ÜÚÝ%@Håƒ"…`7¦Á5K‹æ°K-Ça3ðÒÆé]ƒÊ -ïN– ›‰oU3é«œ (<s¬ñ—ó5$æ{œÎ½Å}º¤ºüÑI+Ô¸_\ƒ„k Àœ×ê@C’G߸¼Þ÷û×‹Æ -nSû»Vfœë×NMÔ´è½G<qÒ˜æ<·35纄’æœ\ËÒŽ…]¬ 5Û–Èt†0É°Bç¯;/É1§'“YVóº4¡%A•N¿$EržÊrR:àuæ`˜µè+²³R¤‹³_—†.5lÂuGÊ&ÌáBvá.̯—i·Ush_¤j¬Ó™ª!f?÷“P¨zE2<vŠ‘„j«Øɪ,ujà-H¿RãS -`t\˜ ó_Ñ(vkœjÊ3WêfÌ~Š•È1³Åã»8~Àõ£q€² ©”mœÄ@?]'8910xiJX^ZÛ°8Â%»q•œ:ñŸ¨J9;Źk)Ÿw¢Bop¬¼{ä€þiR$.Å$DÃÕE‰‰l›Àc—ôydЮFšý›/@A¥)ÒîW„g:"ày7ztKˆ(–§*»uoÒÂef¨6úb÷ðV -KuŒ§µ¿cbbëŒü]‹†Íê¤Qõ®’ÅùØh04B-z -TKh<—½˜,å¹Å•0Ïݶd“1ÿuzž$êëùî¦KüÊ„ñ´1ò;´:‚MQWÆ÷w7w»Âõƒ4ÜßþŽ¡sÿ‡_ÿñþó¿ÿó¿þï¿þöïÿþ?ýã?þ·ù/úó?Ð÷Cî¿Û4Œ~èQC«i^ƒrA…â忬^2Å[5Aë¡Â+®îè‘îcK«|ÌfÂ58}9j‰%¡™ŽõBà0Ì^óUY½FHGîéQ½`žBYÒQpbfÓ¹"ÙØävö”ÑcÁǹ/,!ýçtŽàÉ°nE\Lü¤ÃÝ"Ià1÷»=ÌÐÍŠRß‹’çGˆàÑ„P"fþÒÜ:ϵæÀ¡m™C´CV ¾ð]
1·½yläeÈEY9²ë\²f+“£Â‘*n”˜ Ï/¨fr,i^–/ñ±@î„Ê%V§þ*|:¡4–Õf¯~ÄǵØàF*>ÞUÆ|\W”FU: ùìw¾àXºÖ#¢=¤ -ÁµšÏˆ©5vWÁÜ=ú¯J£¥E×ò©àdØ;3]助ï«QÀŒ2z tN+•_ÇÑã`}Ú{÷"}±¨†4°*ÖT*Q¡ÒГ¨¶šB~§_dÜ)ë´³«4FÚ“{‡fº)
áùÛý$y„ŸÔäíضi…Û9Ø¿`W@³hMZâ,Ÿ[P¶ ¤¥¡BÛà0Ÿ@‚íZ,¡¸a$í|À3°<ôCíqÇrT
J;©ÓvËúKÖ‡°`NÙéŒàØZuJû8ùÏSž„l)í~Ê6?ž -ô8ÙO^AV™ô -
M{Æû -1A-wÝ„ƒ)IšXeâªYeô`ÏÄÉä(þaçE[ -‹^Å´Ýr¸!lyæ@jž©94pÉ >öY4‡™sçÁtª(?›~³N¬!Ì$s” -ìku…{aòR9˜'t‘v¬5›íe -äK'ÌãS>!1þ=@tîü™•©Ù¤ŒÁ¢PÕWfl;MuÎ8»ˆZÜ]ª›oTœíXÏó.£?@i dò30ÆéP^™6Éø@(A¦Gê`Se -?áËÅ:2âË´elX,&6ÌIóåGt€&ÇŽsÔÛ ÐqÄ×øJr6:Z$Q6ñºD0ÖN{+Ó÷XˆÂûPOÁM°Âß#Šƒ; - -@0‚•*„'«7v”
žÐ?ÒübŽÕ˜°á’Z…Ÿ -^¤q¿J„Î À’P¡{Öl¥nDæÞX¸ë®'åàìaõ-‹¨
”oz‘.£à -í‹y䲕¥[$,@ Ôé豨5êÙd*ª¢ A9—.i!3Í~ë:Eª¯†»¸guš°¬õקŽ´+…T¬ºB,ªU·¤ïùîAöè‚2;è´qóß½(˜ gó±j’úE>ÇRZÅLš¿œŒùk&€”}9Eé“ÅoÚB1ý„ÿߢwsû44¿&ä©¡4"t}nüU±ù(aÊsžÎ!ŠöSf6Ce—¹áU3<„œ ’Ú°3‚Þ–,þ8ð¢ùaÐöE¨Àv~@3üÚ‘á‘*€ŠBDzL%gˆù¡ÆŸïS mA©¶Ç9ú2@Eìúâh ŒÓ1çtùÞÒzE-hæ Ó6=ƒØ˜Œ |^ñqÊD*åÁb˜T·`[ïíBDéÿ†¦ŽðŸ²ÔúÉëË‹íM9 -¤…]lžë«œö%[ˆ²U>Cü—Û8LÞ·„âìŒ8–d” -üG8x^á+g -
X{Â3Yª=¡aY’²äL·RµIŸâ„Æ€N+v\†‚)3 -M¼HÖ^¹ÜƒԳ€d€¯_w -äÐœ8b¦ÙÊ‹–Ò£9àérKÖšˆFñËàÖÙHUŒ’[ŽO]«A•d˜ªÃxÉÞ€Ú¾?7šLò‰|'¯ -¦ÛJytwáFÊW˜ër°ÿ-Ô¼gT9ÕÄÇ•Œ77÷ÕÍàMÌVDF†O%ãªßóaÆ=§WŽV8´Þsœ{9DUpfÀÍãB)ÞR|N€9Eþþ.º6”ÝŠ'5&¿ô ó®²÷%äÜ5*Gù*عJð×æpÍmÀ}jÜæH—… -çŠ::áS.1Y6C-.ncE€0éÚŒ{òÊÍÚÒ`Ž}6\°hpY¡e› -ó¢¬÷o‹¥™†}uÒ×nì‡õ`×µ\ÁÉÉùÃØàªYZHi½Qסo›éÅstqêŠRjã{6¶aÊΟÅÈ¡1K¯
™mŸ®±þFðãÌvüÊ«Ž´ÏRÙìÑØBP%D¨-Ά9 xú¥g -¾›Û &Ùðº¨Êéø\ -¸OX@(X•8úî…ÂbšZgw‘@C!'õäìAQ{ÃàöÖÊûÜ`wã+¦9qVŠrà6%}LñÒŸú -u IŒ)#ªE‘Ìq&GUÓ’ÆîJC¡°xËzª›C°>s4fYHäxß{Dž‚dÇ’‘Ô±°p°ï\lwæÚMgn¦À0Å.ËPºQÐVÔ<SÊ7ç®Þ2¹Þ=r—±Ëj륯ŠôpçTªÕ›¹Qd™Çì°†:35k3;®ØÜÇ¥éw±P†gŽRlÇxä_æ´l³BG´Ròâ×¼¶:T‡ò<sÅO=4³ -\üÛi•¿Õž7RNüˆ)mŸ¥“
=ÿ.Â6Ú¡ðòX#ì÷rÕ„«2óh…§‡ƒj‰*z¸.ÎWÆ·bαsEÝ#.íÓN®×HVe_2òEÝÚ:ò¢±ëª²ç«ÕDõ„)Rʦd˜UõªCŠ±-•LÒ‹ú¿õ!ŽZ³‘þ•°k·q‰ó爵˜S/¯¡îò‹B¶g“•º/nY…÷ˆàvÄ#AÊ*BïIgZëVÂõ±š - õð‰ÎWPæšÉ<ÕCpŸùsðj -.ÖZ8zº¹Öb gáîmûš—ÇNn1-§§õ)©8H¼¤âw‡h4Õ=]
¯Íô ðS€¯¨§ø@ 6(Öó‹•ï -ð¿fð8Gq*ìŠÏܵ1Ž¥…q澶±”,â*ôƒ‰l•ÞÚ|X¸Vºª -¸Ž7\¤·%`7Ľ?#ûO MMV>ży„Hç|+éD3Sry,èÄÃ퇱ô°¼$GþÃyÀåЀšË@¨Ù¹@ceÏJð%¸
Š=5t§n„+Š³ñC'„Pó|oÈUa$4{,g0t _²}8ó§ñPHG
P¦˜„báΛÕS–œ™¾ì$@Ç¢œ*š_A£%$I×)À®rŠmàŠD›1’׎ʶFeß^ˆ;Ó^F -âAQò±Íe|þà(U‡Xj no*I˜åö!CuÔ…E–V¯Ad±\dˆÎñ‹î¥[´¡ŠŠþV%$M-˜Š•<wŠ½¯ÔÔÙiy/uO³â¤Á,ˆÍ(ˆ9 -Å—ç¤w*8eæßâ¡©5£D:O1ò+›¦”úì¤ãÛôz+ÛU¯4x.³GþOmXHa#¬‚þgŽsõ/êmž·óÑâ1@ei)„¸”ø™ÓQÀ¨ÛZÇ bQð4:—>VÍ;·CÜí<ã36ìûÙ„dÊÜ–¦õiø$s«Ì³8È…®(ߧÁ5€ìô‹y¢-’ Ìd¸n¨»ÜѽW¹þ"^Ãm„µÎ1Ü$«d,_í²ŠzÅDDø9Ƕ>¬¹«Œ4ë#¥¥ÈèXhÈáDÔÅ;ÔÖõïuŸÜ¦$‹ùÚ×KÓÛs«©’±9MÀG†ï€ú¥µjToã÷‡¿âîRnþ_ãD¿sžó×üû?ýéÿøõ·ÿé?ÿOÿðç?ÿÓ¿ÿëÿóÿùÇÿòOÿöOÿðçú¯œˆ³üÜïü‡þ×?þáOÿöýñOÿÛÿûÿúÏþþýOÿíßÞ¾÷úõ·ÿá×ÿú¿üÍ0ðßþæ'±ó—Ï·`<១6€`ŽV1g²†‡‘Þ „Úó½Üª§n1‚âøï¸ÅÎ7©ÔÍZ¾Ãrà7€ìÅa±~‹|fû{„ÿŠ»þ½³¬ñÉ1S=¡íùV!o„ÞsT¢†ÕÇÙ^”!Ø<Ç!·Ù#¸
Á‘+ÒI#*û6(g¤½}È|Àщ|BȺb+[Ã)ò¾>³$;©fqÞZñ·vBIUéøs©‡B0íW0HQL†ƒ¥sÇl¢Tí³ Ràg/½?/zŽKÔ¾ÜÕ{¸Ú#'A¤ ª=¾íÑøfy_¬Ý§o¯û‚ëë(?[Ü.&ʧ³}!“¾
í‹âö³½09ˆ -a__$èôíZ_
)û›Y=LÙžó·G}øèõokzJWùGzÒî)÷o#z´>·½ü›½Hèœö¯Bdó·Ý|垦öí2oC«?›ËW-OË·§<ß#ñèÃI¾Ê€»~6¯àÄ´òßx¬¹mù‡]<ù4ïñO.ñâ)sû6‡Wlª[ÂËöKíG'xò¹–oøξH‹£ð}'”Wý£Ý»‘èöpº¼+Av¶os÷.»~ötq¬s›º£†6¾Ü=|õŸ
ÜÙs»ì~ú¶wèB³Ÿ~í½Xryº´w³íã6g•jÂË“ˆrÎmÅŽÊ"ò0Û‚}þ
xf;¯ó'BOÃu>¶é=hKPE¶»:»t¶ž¦ê{ã‘o/uæ1ø#ÛDë.íÝ;šÔqôÛ2]N Âj÷e™nd¦€ªü¿Y¦GØ!,a—q[¦m°ƒ
LÛ1}QÅRPÅúõæ˜.C̲Ö|ã>-ÇtyaÄhðÂJ£GŽ8¡4ô02~˜~µÈ'Âw‡o¶Óy| D·Qú¸ -+të®/ks¾G55„„x/žFéQ´¤ÀŸã6J7â¥èÏØÕlòqº((Î 4‘œ~8¥“´˜/ÿmŽ°úo¶´ct: .?
Ñ/d`‘!_>è+¿³ÝÏ/BØönzÎ1æ‚íuNšåi[œs!Ë°å!Aõ¢f¿Íy創ö[
—éí_~¡¤VÏ۶ܱ[¶Y9ËñnQŽ2ÜÉíL^ùÔÑ—!¹“#¿ùW‰~ý¶GŠ›/Ý®ã5(}O¯ñ%›í0Ž"(ß²ÅùÛoyX3‚į½|ÄC7!ßöáDnùÍ4\ªùm¯ð&¤¬Ýᔿ NžÎàJa¶¾
Á!±X?YºEÅ’ôfÿ]"j·ë7Fp¬Ûì;,ß=¾‹/Íu[{ó7.œOGïû<ËÈ[Ø|¿0ò.ìS™žþÝyÍÑÛ¶›jpaE·nZÒÙO·nS -×mÒZ<÷íÍý'ïÒY yF~·äFID½ŸpâFż–vp½°þ<}·)?Æm·-æ)§Ûe›Ï ’ô4×f·Z”jOm¾IÆmŠ]SlÚêScâ´Ž•£nÛeƒ„$ýü°ÉF‹V‘îåŽ+¤ÀmŠ
4uΧ6~µg -(å¶=NÇZK*#žå69¶ON/scŠuñ/scÀdõáiŒìS½^VÆû遼ñ>¶‹¯H¬,óaQ{H·lÍp”ÔÈòîîEÊíJ|ÿý0#ÞǶ1R.œõ¶^Ãìé8|)õYn£áIùÛak‘4Ogኾ…AÃ*&½-…Ùy¼Y óvŠÝÂ'ôÇv>Tâ7é{ÂAÎ.,Ì‚‰ªr¿=‚*Õúf
Œ×*QËxçÀÛ˜Édäw'`Vé@ÖÉ GŽ€ûßÆ¿Ì棞†¿ÜKƒ‘mô{àV.Ód9ý’+`b|:ü†gÌù2ö=–·Ôöó%ã•Ç›/…BÒm¹÷VC.L{™wØÒ>½zYQ0w۽Ųšlg^\—kÎo†¼¬ý¶‹>ù›"ÖÛ‡—¿‡Vx¯:?§QÇo¹î‚Ÿ -c„Ø‹1–»·Ç.qÞÉÛZ—{¼ÑÐÆ6C&ìi¤»mÿ\¥#Ðf>oˆ2Ò/r/ -ø–Ç1Ùm‹ý³u›Š0Ð~[Ú2³¹‰X¦´•t¸Ñ‡ƒ-»ûëÉTbþíW»ÿ~ÚÔÞÇ–;meqðãè3dÝ-yþ˜æÉŸ?šÒR.TñIb%ݦ´gYÚ+
Dãu}›ÒÚ»–ÞÎö¢=óú´Ò5„øò¢åS$V¶íÉk&zÊ´=]ß=hít–oGX,µ2Ò_Þ³§šO•óω»÷Ÿ½gÁ*ÉØðQY¶ßÄÎ<yå‹ÎoïY{ K@£¥Ÿ½g¹ž ØÔœ"éùá=®•¨dˆ_×·÷l -:¦Q©ßF´ô-,=-ÔÇ›=œó0SY³_F´ooßþ³6 -”gùÙ7–lýQÚ·]ì\¾]biس_î°ƒ4ÊQ¾Mai ñúå×ü³ ,—º‘}z¿š&âƒGáçËûUÔ‚žðí?{¿zÇ“ƒ3žÈ§õ«cs¨R3|ëßÖ¯x-‚|:¾^jiÕmôJ†ØBæòwåïÒž®®AÔb›¹r‚#rÚz¸jèxœoÖ§ð9³ÿsŽ<^®Q‹sdÄ´º=\™¥U¸íV×Ï®.ÃM}ˆÐSüòpuLè!””·¸Í\}NV=Šeö§—«E=¸õH]o/W
uI¹½\mÀ×öÎO3רn;iÌk*ù6sÊr ¼n3רl¯öh×›™+w"xÙ:õörU¦õ -+³8FN*]·©+
J>ã›ôéêJ£±ÔT=oWWŒGŒ¼ÒíêjCUåw.i¾¹ºÊWb NÁÞeÛ»²f£Â4>ê¶we•‹8—&]þá󜦴8MHÙ,ŸW?eÌ9?e5iù¼žæ‰Qò쀄˛Ï+ TtžªUú¼~1¡ÂçõÔþ {ø`_ûôy¥1h>”Ïqû¼Ú žË¿m^="—ãµ”7›WbáìËÝ’¼/UCl4Ûæ,U¬ç39×\°ÍUiTë9\}¶óë©w%Ai:Ž y„ȵÖtÜy{·§ók4¬ÌFr‚ÛùÕ¯É*`r0nçW¼,°õ -»ýv|õï pŒÛú5ÄÇ!)šÞ¬_¹(ðcÛñÕ©m®°Ûè•8iÆ‘O£W!)ˆZ€·cÛŽ¯"ƒÎ—e+«ÛˆâþíïʲI¾nÃ¥ i»¹6V$JyWŽ‘Q\îü©aT˜¶Bv|¹®®þù·W‹LÍ2î¹»ð'(…§k#_{•Û†Ó’£ÞNª½EMýaºªùèUö!È<`¶ÇêþûázZžªÃˆtÜz’}:¨öÓ»{‹þ2NÝ?üRïCË&u^;àœíŽ:ÐÛ#Óz ËÙ~{¡Ö™sܨãˆûùô>å3f“—åéX@Öít:TùIo§óÇÛ¾¦ÂB¢:£¯)"®èM<íLuŒ¤Ð³÷á yÝî¥Ô^[yó,åÐu·g)ÚV¥=\AŸ¥ýX œåKJ=–ض#µ>›Ú›
i3=oR^á˜dl‡zŠ2üÓ}4Œ=Æm:ÚÈÖÔóöm)às‹Qåt;‹òÝ.—¡(^‚^†¢xšä~Ûˆ‚ã9ú9)–ŒÜ›k¨ÔÜn³P0IâZ—G¨næÈ'6ÈÛ´E²dû€6NÒ›ý§RnÓÏfò¶úlV|Þ->Ufa$.kOe\@ -GÏû/϶ -Û¾³/¼Àq¿ÄaÖ‰ø/`<:™“N…BdŠ,î§#'xrõøvŸ+R$ÛSwÀÛM•‘f†â[˜lŽõ{šlŽX§í ;”ŶÔÄyM‡‘æeU3ßþ™¤€2lÛÌý÷Ã-ó>´L2 @±½1I)¤ô°Ä¼T¿n'L’#ÚØõ’-@n'LP`æ•y8aÒ›cÔùÚN˜B&©pÌãGS‹j+´L˜ô€o¹|`ŠëNŠ¦Î8»§Û ÓOÿðˆ4ãà “%ðˉ d¨:éÔÁÎäe9rŒ˜§ë%I ÄW¶Ù¥Wëæ{¾Þs1¿Í.
wTbPÀ4¿¹^éxÇØ°Ÿ·ée9 -GÍ7ä8oÓKBåÄt¼™^® -„„=U ‰þ—¶YúD[óí…¡•".s^ZÈ)™æ&ôÖà Ó4r»¤–âSŠ0(Ë50üx—æ¥òå»&·6T0)oé6ÀüJìlLª('FŽ¾šß0%×· ïº0mð·cu\·¦
–íæ}Z¦ë¯RU¨çnÌ(àPbï!ˆ ez‚Ò¯
úÃÓ€oãÜÚ‘NÞ˜æ+Eyç (ã¶Â4+ïÜ΀2yxb~EêËÓ2¤Iá÷çÛ3¶.äŽÙº¤þfŠùS£õýs‰.õ3¸ÛSuV„ØgÖgOOLÉŸˆ!cïq¤ÛóÔÕÝeCæì¶Ä\R¸)¤pÃaó¶Ä”¡¡¤ªVMõöÄoé -$Ϯۓgš€HŠ(êé‰ ?®Î¶ÂDìâ:oLøFÔ@žÎ— §›¢Ã±Ib+dô6¼4M¯Ž¢è¸
/Mé¶Eû+ÏP2
²RÊAVÒ49æ_\2¸Pý¿Ò6Χàexé÷T7CgÑéåØÚDÉ¥õésiѦ -Š‡¡zÞ>—&j¤k¾Ò·Ï¥Y}µ^ö–ä¦A -lWKŒàl3K)᩼yX¢AA
a[Wv€½ÝŽ•]é‘úfTɱŽÔúSª -ÈÄÖìÍ6ðºSöÓå/R¿cT¯¸Žø Ÿ?Ï0hš¿pˆjû4 ü<LÝóÇ´¦™ãrÞLÝàƒ«›&’¿>MÍ‚/©“/ë>3áñ’Ïı, -9¨< -v3ïÌÆÁ ÙΡä}hw!\y;ÿy:Ræ×ÌpíiüwÊGÀ‚-㜶ñêFQ$>Ai—ÛøO;¿f¾™å|úþ‰²8¯…²×íûç@iœy -Û6ÿðQdñá÷DZ¸$]ìûí÷wª']´ÂZ…€ - ¶ÝŸŸò&×îxÛv~¿ qì(â·ÝØ/jE·Ý£SS€†‰y¼ìQrþlxÚý}7.»?."R¢¸7‚ZÆ}§¬Es©D}äi÷ØI³Ò†ðÖñòÿ@ò`»üÝ?Ìýö±íéwê à7µà¶§ß׋øôôå93–t{ú©G¼Mº¹žmO?qÊJëÎ=<ýl¼âõ½J<Û˜*9$í:fŽ·§Ÿ0„°u¼YØNâê2²ËËOý+ªõH°u\^~öƦ€ãÊ -=¼ü´ $ …ëmê'<¢ -} Œ×›Ñ=¢Ê0·}}ÓÖ?·€)f†ùú¥Ò«äýzsü“®b¦ÿ˜SWOOÇ¿¯¶/Ç?Ã/l(æ¯ocùË¿9þùä$©ùäûB^}YÿÑ+^_„:¯ök[ÿÑVó©Ô•#x³þó£²È¶ñëGë?{9~ÑûZ¤ƒ§ó_ØI0í u«då‡óŸ¤—ÞKÔìÆrˆ\
Q†M°¾ÿ%vÑ™[”»Úñ2þS¿1© -1xeŸÆV?Ã ‚4Eÿ6þS9
pM©gËÃÏi·VPz™û™Õ¸}ì*Qùòù»~²÷{5~¸ú]äó®¨>½¹ùýnj㯚E™7ZŸŒ§y_(Û·gYójÛªâf+ï}T$J,c¾¤âÛo„ŒÞ›
ß<fan[çj¥ò´ý÷H¡ê÷ðÝ#[מé(m“=É~ç»·8JÏFž2©P\7¬ô(~!sútЃi¬®oçQA±jÛÌa.ˆœðÓ/c˜·M›cÜæxÉuMzxâAJì¹=ñøû´¬ðøq§žÖ…(Ú-+<(×j‡ïKƒµéÔýrƒÈn¿;HÅZ°.E¼RБzºÛ»¦–¸Lí2™i -TR”ÍŽ%^ø°«=°ŒÛýM]¿œoÓ·êjŸž¦o UÊ.Ó7àŒÓeõÆ樟ooTÅ€Yl_·®”p½íܺú6o&n€ß@nﶞB¶r[¶ñÛO§6аs¶CñZéi³¦—žÿðcãçWm6~¾è©U«¢–DÝíéºFÊà6[©Æ=BhZÈä=Õš^æývTÛÊXÛH-õ½§šžòœgÙ¦ÝZGË.-«Èu¾¹¤•3€—Û
ë,ˆYËæ¨î=½ÐT™Dh‰tñ7ð·í|V%Îä7Ã3Žåëås¦´dK·½YÕ[à|³7+W€n·«qq -û-«jˆ~0àŸ>f{¾íËÿäÅY®eÜÈ=O³2ŽËUŒ5ãÀ[½É²uðóÍ’l˹n'²¬êXÚdü™øUß1îÆ aíÆ2C/ÔT÷eéò›¹bÊ„0@N±|l+1¤4(ª=Ädj§z‡…œûuû…ÍiýÍ%,µÐÚæ`ü}Žv{‚ñ÷߬ÀEñ£¾ÀÐE®eU'Áôæ÷¥]î:†ÍàÍ#ܼBbÞþ4ê›»WE¸ù(·¨ k#ñöò"#M¢ïiáu)•v¾œ»ŠBC/Ã.æF/Ÿ®’»·O×¹–ÌeÏÅP(ç›)#ˆpc›qAW¡–½Í¸Xý¹.ÄÏ@è)%C!&ð.,4@ÛXÙß·@ÎÖ—Ñ®ø-†’B¶Zs`¡Éx»iÉïé/-¨c%¿»g‘ãËåešõ›óm•LælïYÔ¯ñ2Æú-€i·Ö\øK½l°r/Ûý*•y›^©fÅ(zx]Œlýv¸bwUÃ,œÐ 8ÎC+œxËícj∊©ÓýŸJÛª -¨uÍí¥h&5Ÿ‡ET!²¹KTè,›~_Oè\.°Âm5Îã1òÞëAhùÓõ‰cÜÈmötiHœ¶Çþ/Ñz;;QKcÕÛ†N°á•Ú^}@Q€/xÚ7
ævX˵)Ì„Òí»ÔGT‡Ÿ&Md›‰/ö±6‚²-™ößO'¦}l0õµºn+¥®jç»ïìŠÐímT5(Õl—¥ûÒ>¶=•ô“ºÊm¥Ô—ràÓA z‰žË8 Quð5Û8I‘uP]Ïh°†ˆã¶IêÂ5_&Hퟹk28¡t¸½FŽõw[ ro»Hø*„»„1ý;¿œLŒŸo~Gci«n›#S¶£ÝöFdRK{352)_Ëö2ðºÅ®uˆys.ÚbµÛ±hŒ@þ2*ë%üÑŸhˆE õR ÐãyÛñ·ñ‡‘ÇÂTÈߨãá>•š˜ìi:¤Ú@¿n³!í¤ú¹Í†d§7‹!Tr+ng!Æ œ×/C!ïî1~öê&×oû kïj>]ƒÔI¨ãg· åzõåÄõ«8ôá
ãYÑŸ,H0Ÿb™½Ï—›¹O ûÌ?ØþŒYv?Âm½Í|öÔñ4÷R‘z»=}ÆâË‹§—¥Gþ“•OKÁÿ³‘Zí%6=Œ{d,ò³_ê“‘~Ùô(K õÓž§/àÓ•§Cǻʷ³$H¾/žÙ’ô?xï4«íÛr§Ë4àÓiçnx켎…¯N[rª_î%Ý,OÈØ|ÙéÃ,¿¾Lt o
ù§wNQN 4¬¾,sÊ» /«x퇜¢¼Ñ¯q((ŸÛçé‡SÆ6)ø°Á)#¦´Ýoê‹Þ—é
ÅùZo«±ýwn€b@°ÛÆ6îWgDyô¨XÊìp§=/ÿ7ÿš’øûe[S¤á`æÓ¦‘8û÷c¦!çLjJ -‰ñ§7MAîá'Kš( Û‰æ3ÒûÃ_1Šüÿ
hþ_2 ¡ª) Ù:…YÀŒòÜ%,iì¥ÔCî:Oµúq7D¶/G]_NÀì¡b=®@
$k5s§§×›ÂžŽ¢"D"‹„ߌ‘\EÛÂKÁÚ ç/&çÆÖ4Ç6›ºv…'ÖÜ[°Åxf‚ó©c„Úä‘Šcš¾hˆ†û›sûiä2—ÍJL¬ìI:5™e9ã9´±K)ïê`Ï9°Ë²S¢¨§vOj3à÷½×yÐÓ°1îÑCx\å—D‹B¾“×Ï(Ú <÷ÑÞ—¨Ñë´Ê`z‚µb^°À‹<±‡øÊ„ -LHè -“Õ”ï¹V4Cî}H~žs‘òÎ -TÆÉbƒ¨Odý´[3€FÕŠê˜+=DŠR×™+‡u3¡Ïœ[)w”œ±ö¼@Ê3×x8ýJhLƒß-…ïËhZØ™°GöâÅ(uA)·…—ª ÍÉé Ùxã%Žfè ©Æ}ZQKÃæ§îѹaï7
«çÜCjb.˜åuùÓçvž´Ä4v¤ô¨[Œ¨¥ XVb—½:‹Rƒ÷
Xç|ßÀ ¬8E€uÜË…W›SÍœ¯ö7ñMmë:™ˆà‘B(:â7çÏRfÌYôYžWŠôÜïÍG:Ãgxîsc”¢YŒ¦@ÍÇv’ýçM©}Õ*0^Fo -û¤#¨À¨Ü„zMÑŠY„ýÜV!:{ -yŽ½\NæzÆ{qQ7®*=j7Œ*]´p?}èÄ‚ã>¿Â”KÜ\jåç*’¥hÌ@ô>ýÒ7,ÀÐ-ökô -.Eë[áAfx^¥ŠnòÃÛãFVQ<–áC"Ö¼uHí3¡ž„³ë®Ÿëê/œV/'ÃAպ‰ñêk oëóP+E(®÷©´xŸx@ä§YþjcIÏ÷qE¡j -sÙ›Û—ƒ^ù$clvN#\̃x¸eîeÌ^KGfÙsËVéP·ô1ÄžÏN‚«é—vj„œü"&X: 8=&óó4Tžé!대‰äµWBDš_V -Œ¸û N(ö¸3…\C…ê@àÊËSy.×JµãÒ6æ\Z™à\{Ž
«I=DÆ+áã¹Vc¾#7ù`æ
6g—æÆ\–Õˆ*+ô~#—Œà}E&tDÜIÐKÜRµE(Óðú½ã×åÙkœ¢M´å¸¿•Ü”šqÄÉŠ9c<ÉéZªàì‘CÚî„ù£ŒÃE¯ÎÚ4{ÍÕõ\½ˆìáÂó…šÖøK=¬q‘CùøØ_2'˜=¤ÌâêwøwéŸÎâôfØÔæ’¾äÇÚå¶yÙ)^œê®9‡\*zóh5ô£{v¾:¯UË'`c{EHGšÓ‡mÖlN\‰bÛ©Ã@kèî8ß=ÞÀtÈì„ÉSòÔ¨n€¬žŸBóomøúB%•eèuZ¦œS
e¼-ˆ¤Ä³½1ï<ò‹@ aºK`H±%dD·ó›…$Õ–ev·`]|3â,``ᢘ;ÙÀ˜w+‚(·*sÌ{Ôâ÷Ô- §eœëŇê¡Óp€„„ðVâ
Ÿ£*{™Dö`¥£‡KL634`²¹Îü}@ñù¹0,¿ei½cÏY½—mmY—.ÎÜ":œÖ—Ü3¬w97ù<½Ë†L†8°r}2°‡2£¾x¤ƒ9jN5-H±ŠòNgvŠÌo†ÝçÜè´©£ÌVó‡È{°# `ý%û@Ǽ^V{ 9Iµ+ÖA|uËšBGšNXô/«Qôó¼iM}Lz
²sЀ"9µ{bˆÇMô`¥‡ -B&Îæ{á‹ ²‰o"ü9zèÉ’» }Õ!òH1¯óoq1…OˆcØF]¶
D_˜†K¢}6\$RgCÖC¹-a*>IŠáë–hö86|ÆŸc†y˜êϲR›Ô6ëÂiÀcTPqtaijÞI¾’ÙíÂ#‰¤®zËðÒkØVR¬úsØa=?¬C”Èʤ%À°‡æ8³L\{47T”ž6‡Š^q‡jöŠ}âhŠÎÂ÷« -BZBäá63¶™6tB(Äqj_J’œºÏ‘GŸ/ßB÷À'eª‘²ª~5~ç+æÕ¥¿Îø°ÅïáèL%N§Ög¬™lˆˆÌfHtng¡¢¬[äÌ™Ý6h>™ù8×”)3»±aâ'Ñ‘0£¸#zÈÙ!'îLušÌîìÑ·ŸÈ)À”';ØØ°f[ã4µì ¥uTʪL -&óEäùø"õ1@ó´ØY´s'8˹âBä®´ûjk_]É%W_6J¢¬ðÐ
I¡°RZŒ,u—B&9óVÿà5Wp9Kã[[©[©öZF¬V -3—
zàOì”PBÂ<ªkš2]öˆÝ˜ÞöÉŒº\ È 3f¸"»ÀÓÝ°y>äpc'Oùj¹Å%ê`ôE6éí–!hÄ2&Q§&Ùužäfv"“ëbÀ;· ¯ç¤×—]•*”øä\»H㪋åÍh ÑEi6ªŽ -%ûMGZÄØ`³vÙÈ -¤bF¾y~ç™í{p:И7tÆC¥•#Õ¿Ä+˜¿ä,Û<hò2³W!
÷é5–*,÷0K›=Ð1±qQFÌ$ «õK°ãŸÇ>o^²ëLjÇQló¤"¶
çå Z¶+ôP‚€GÁ;6{ -ù^C†1¹9Œ+†lIoy -4FèÉùDê‘b ¹Ãe ÖÖ÷=;~[¥pôp®è5¢WaëBqrÌdņÂË
â(ç0Ž]e/~Ê1vmÚ^Äì …@º'×ô‘èU‡Ž GÔ8f -bP~ìÁlöhÒ‘ ŽZ#;[øÍŠèpm/,:%¤–f'4hí5HÀÍ‹G,NC:‚l”؇(5Û™Æø€FôhäÈ -¬Bj À¥“hP¾È3ÁN -³d‘M#/Pé\³p7ÃD„HËq‡F+4£|
”ÖgôJyk«™»È52ËÝ=‹©cÊ -ð”{ûn»–=ÀqXFÿ$ê¨ã¦_Š©ÁÞq[V¯(©Æ¦ÄÒ@»¨e}ÚCUz ¦=Pi´tSAfÉ´†ï—ñ]MzõßT4ŽÀ=Û»¸vøMM|)i`ùÄÐÀòXŽXIc9£!rŠ;IÜÙ±¦Óêè\§§©RfW˜Ô -Š"+»M™M -Hƒm¶'Œ)Ù5“mZ›Í‡9LÛMª£»Ç–"8t8Ϥ ]V+‰ÍNW FÊ.á-…àŒeøs”ˆÔ"¹°“Õ -‘»=ÏR†V%
5#uAj|@%Rk.ãó#:¨ÆÇ£GöÞ5ár‰–ïé1RRãØÛ6¹¤ÉÓTß>tôœ6æøqLé™5¢®ž–ì?P¹`[ö—S¡wÒ”ÀÒÄÎÜ~PÍ°¦•-]%xÆæLQ.äÅ-˜]‰UBÒ˜¬æq*SE½IŸ&ˆÝì -q -"p †Sh±ó[º9 @l45þ/¥d1i7¬öâBõùj”x(±ž±X©i^ÈÏQ7ëJ¶@=PGw+Ôƒù•²S?{¸EÉ'Bæ‘ÿЈ–¶¾ä 㡕͉sœ‹c¡{G-h¶E2;9ôÍ´L‘@į䊖FÁ°Î€”;Uô;[ Ê!'F.@Ls%RζÀm&3y¡oÍxä&ÙâT5-V/‡p#òµ±ñl—çôyÁë -m¼± -B n/Ú\°qgXSÄàp“ÒÎåàÜ„è[Õçý‡¤4{ÌÉ|?øM0"íq…™^‡çF± 抌¯8¢ë„ÆõñÅÞç{ýèàƒ^Ï -l¿d#Óç´p¤'>½Ü¶ÙC-ºµSà ¾¿"=ܨ5ÿÁyáhaJ/Ò•˜Ebdº>–A5{´tÅùC.„ñr–uŽdp뛨¥“ú¼„:¬QÜÏÅç.¡Æ -„ô•3 @¡˜à pa‘ Üù3Šaé.@$ÓÜì{í.0N
Ò{W6ßQ‚:4{œBµ8GyéèdÊû&.´ --g{B³–ÒHkKËi&-Ez\%@æO9âÊGäÓ¤°}ß5•Ð> -£{àIñ›ÙPoXC_¥©`¡Î†í²¼µ\k©+5-¥²Pœ„ZgñªK - ªó\ŠñÌPƒV9(æ‡û²r¨Žt -†“%¿X*œþŒÄGp£(,%òUe?†Ž„™¥H[…¨‚á¦âz㛓٫¾R߇ðµfù4zQ«Bš¥KÍ[¸'Èb9EØ``H¸ô’T¢Â1¤¯oA‡˜ÄµU+èŃ^çˆ#E¯k]1£š+V¼ì;+ͤ±§²„¬r @4÷më;•Øãa")ùò+2ßM±K˜ÜòÁ0Áp¾
% -¡•”–€©#D¶Ó5%)„¥ Qd«†¶TÝödg³DÖ””ÉA É W(¤Î-âfF൧S~U/A²B!‚P+ç!b{=¤ t‘Ï®”2I“C¹"Î3Ÿ»î‰MyoŠcC!Ͳ¹)_„HMÔY©:©vÆbQñe¦áŠ†¨¹5e`â'Ÿ¡z®æñ*XÐþRÆî]ÅŸÑ«zþ9rsœFÕÅÙ£â%þã¡åF¢B¾×È,Ã5Ž—rÖi
-|Ù0£ÿëÎôJÖ‘§}h©Ãëåî“Èj÷RÎAÌç+Q¿ -Óµfsii®Øà1v)\üã‚
Ë'ÿŽ^KSD'g‘,øòp½D%äCP¬ AìÄÚ:"DR´o`g{Q‚u½ÎJzj*¦9]05«ùÄÔƒË
i® ›¾.Ä2³ýô"é|\ -Éx®=¼1FÃ_âÂûCƒvóù<OL@‡EÆoÒþ„»(Á|…‚0¾ˆP£Ë_‘Õ†u âTð/Dûïí¿#í/""jŠzÍõòÆ]ÞÅ%ÄâcZ‰è $eÉI/Í}ƒh`¨—Äù¿+òo»õhÄ“S¾ -îæÔ1Ôm¸ -2ÓOzÈ@b¶“ä“É}K© ñâG>äcš€Rhd-gT„ô'íÝjðm$Ó+9§/ˆSH_ÜW9ŸŽ«T -2𙼠¹/`î0¥ô@xæ¿TJx÷gžT¾H/Ï ˆLãÝÕC4Ò}V¶éô0 $$¼øÓkX0\û,Œ§ZXW™ÂkÈì½Ñ%I!@ö²ïLÕíºwE²ÈHP\η>˜õLŸËÁ×KïÙ«uvÅó5„àx|ö°ÞÞBæ´0û¶’5æNÞ[†Ž4`BDILù9^Ëù0ÄÚt -?ddõ4²ºËd…|¿Àâîn:–DtNß±q-óG–ßZN)H¶Tk«)ø ÷Wò¸0ô4‰âÌ÷J¢U*ÕfùZ½ï«»ööMÖ±8ýsÉVu5O–5ôœÁØ-—“—Dzᣌ”¨”(v¸P‚©9‹)ëüÀþT…6¾T³x.'°÷/-/ -z†»Wi+°&Š‘öö#Š# m†ËQ2”ó ¨³ ÏæðS8=ÁˆØbˆ’‚Ï8ùmØ…à3@rÈ^è—Å»×ñŸú]ì=ÎÉä’£Ôè$õ:½Q×¾¼÷@^×0ßá14ê~ˆ±]ÔƒD¤il]›%Ù'U`0ÈIú,#;uG<Y´§êò’µb¬“ç1rGV–ª¥‹ôЦKâ`g°œüÔðmIõ|åÏÁ8ã‚Ê@y—i¦Ù^釸Fì½+ô[ûY‹åj—¯I¬½4uîCM
êÀVÍ9ˆ%SVIF{ƒ5da U@ˆŽ=åW¹–=Ó4ŽÒRrŒ¹]ÑjgÝX…`x‹Q„)8ËÄ
Âoåy´ƒÜ[=$Ezy#Ô|†‘X»GOÛÎ*—ïb°’:y×&.X,V:”°ŠÚ&—²Ÿ54H~ˆéŒºôT†“½³èžÄ2<búô)ÝwПäñû0v4.ãÎœØCJÕ¢öà‹É%hjÓGk<8¸Ë,ÂK+T¼•F¥áúPÞÛ½&ƒ©©'…éYfLé¾\Äàû‡šÕ|ÔP›méÔÓ J“R·sUd©5CЋ… D=ˆ}ïWnŽ…†S+öÁm -®ŸÎsG2¿©Fì/»N}Ù{R[ók=0rÆ•,'佞Ûf‘ʆrâ+†Õ5“ʬ®´ÁýyZÿV=”dP5¬†¿M™ÜÃVµ+ ãtȧ®£:óhY–½&°ðÀ}WäòŽO`¼jh¬3ïœÏ˜fDûA¦âQ/¯†ˆÍ5Ÿ%ªGŽuÕö -î‰4`Óq^ør"ípOš)w عˆ&§3`§f–uÐCìZt…7¨kñÈè>=„r%Ÿ¥†w| ->ßûŽ
½ ™Ô¡ã‰3Ë„l7Iõ|Ùm -•©ŒJT´ )ö )Fê^dÒèEIÂRUÙó=b»9_‰EJ#©C1#òÖÇEÆzŠóÓ©¯‡…òq¸B¼(Hû‘s9Ô¢MΔ(%7Žnz F+°qbr ™6b–Ø‚M´Î»0ýþ ù!ÌÜŠ§ßžõîÖ@–ÉÔT:ô/M -rèa5qQ½9ÜÛôó!Jç¨)±7Ô«Hˆ‚ŒwµŽSe{à\ÅéÆg*gIïá ºúKõ™`¹ßˆ¥üŽfˆ·(¦ŠMHÁ–ƒ± ~·KTþ½*“
e~šÃ ŒæôıãØÖFîÓ”@ ô!ÑÛB×gå†^ôæ‰ÝÂ&¨ -àux5x EZ‚ ‚x˜YÍ#ôŒš4ŒÓËçñ!A²,ð#ÌË
—|ø"ýuˆêžùª5nàš#7JA°U}Ä¿‹‡r)ض^[xbU=1í3eÓÄ -ûÞO½Jð°Ñ¹C²D¦ûA
ù‘è«àB»Gò8õöZ„ˆÜ¯;0±J(þòN5ä–•9böø-õ'n;õJjé׫‡ê#
‚^Fw"¦Ê¾^%S›s§¨ X)HW=lTS[Dì9Pt2 D2ãC¬a"јiK&Fg`])qLKVÉú¤aÁ!%˜æuÖ ¦ól ){$Æ9Íôñ.`‰1¤êbö” sߥPx!(‰º=ˆšÙ—#*`×–ej‘Ç1ê¤èý¡ô&0Õ‡Ö"PA:ɘOç¹jâgÀTÌØϱ%¿BØìSºŒóEÛ’Šû¹×°c#ÜPÎŒªúÔþS¶dlb‡³|û£ÉÐ?eV±&¹ÉŠÂÂúNÙÊÆ£ûC̽SŠ#(ÙÚÁF7ÚYüØyðQà3«b‰Èe±=¸Œ{í°çç(·Îñ0JmQ9Þ+‰ªîª_\‚µ,UökÙÐZ¥»ptûwÛý•2‡l¬#N¨NçXPcÕ„ú7ê¤Ê2ÞÕ.NöÔ -‰‰˜>Ú@æ1UîX£Ïféa9a(Ú@>Üp Ûõ’w^o ÀäD¯&b¼p£2åÉ‹.âÔqc&û´Ë¢¬öÈÁkZ)ùINŸô‡áVÌ°#ÀMí¿uú¯U7Á(XÃ…Ø#ÙÐËËNÖÜÑ‚H~•D{Rùrß2Ö ¨gÁhj“Õ¯dÁ¥(qíþ<!P„®] -8‰!7‹{
4|Ã>PÄ1Í@¨N1:´m6Š¹¤Uí[2=ë‹¿³–ô¾ŒcÃ)s!È™í(rèwŠë -4ÏyeÑ«ÜæMr¾j5ñ@ŒÇé¡ÂýîqËhïcP¸Ð/ÉPÁj(§¨!C.SIñæ*\’±d ³4oÊØe.©PسŽ»W,É݆’ɘüÂÎ%´±§V¾=õ£ôeÙp‘©Žn£ŒW¤×Äg"þÙ2+¼p9jÛë\†öõ©eÅD!ÑiÑ5¹Óžñ²V˜ðP#z JÜTªå-¯Á5ÃvE4L¿ft{Vªæ¼êÊ,cnŒwÜÕE´Å*©®6 l9#åÿSSÃh9§ž$±V“X¶ÐC¾\¡ã—b)Ó –ÛªáªÌ`ÖY[ûŠ/Yu À9ÇðÿYAò\ïšân’Äbù'ðj÷I —h/¼iŸ/6D—@iJC@%Z€ß=ÌÄVĉæ±õëK?ß{±CWCÚ`ˆ
ú -Âx’ÕØ·Ò¶h^wÚC‹›ež
[=’
Œ -ÉW)”Y±›MDŸRÕyD$Ujs–ôn²$y–.fß±Y©š/fˆ&`xöq-ÌdàêÅÓ«ËÁý¥®óÈ|s÷èM `\ õu
û+¨P¼{´'<T])&£šªäm¿¡ñg?ŸÒ8rã -ÈLèí†þ"çÑœ
ìmا‰Em‘=âNFÜI -wÀ(!ÕMjÓì±™õ´}ÖÇœ•c-¦ž™~“S·XÕÄ@ܯârƒN÷9fƒ;öЃP£F/ùíë[v÷Hlzmj܉`vû°<´B•ð'Tdz s‡{Šb/ÕKÓ~'Õq¹¦•ç’w¸„sT!ª]ÒOðˆ·L¨ÓÍ~2Ýà#ÌýeÈ“ ÎËv"ÙÓK¬òbÍ^¹LO¹F(w•ËFH-TÔ‹<$½FØ‚üĽĴþ®—ÃÕé\Pn·)Ñeã}‘SjX¾ò‰éß2í|Šÿ¸ø(×)è«FóŒ'œÑøŠå¿`‹2…Bì{ /›&O¦¡*k\6cü’Í»-æRØp£a“°+6‚“KÐ*lŽIQî\Ã"™àÄ2‰BÂÞÐïSV›^ÂbŠ¯iÓ»(ŠÈaϳ%Ø -M\Vâ)!dãˆ!‹çŒB'h¡à|žÛÅÔøÓç(B -,ÀM¼QÖ´À*R4ç–æ!M,ŠÈ«K ³Þâüx
!Ÿ‰ÛrH<$@· H¨º¤ ÈLËiò£"S4zÇc9Å)ç;…ì{Ú“˜ª¨]\®0?É]ì—)É%{¨ƒ}ZIça÷„½Á¾Ò9w@îéõ„j‚ö잤Ú"«”vÛ*åÎ
Xól…[ƒB}ò©!Ö¦^ ÐèuG¯ËT7ë7hÂœÞÞ™ƒ%Çœá2“n æÐîQW7¯í)¯7âÈŽ,¤ä°¯´£5¥©mpa\žþ•ÛÓÓ~EOxÞz¶²OM1gäfFL–]ŠÕb$ÙŒ•dúÉ`¦ÀØ«åNÓ[Ž|µ[³œýØ3LA³5£œ£PÒækßcdhò›Á„ÙóŒ† ºâSàDÏÊ‚«÷6L]PÓæGp‰ìæÀrZuý"9@¯ì^M
½ ý²ûAð±¦!€ªðò¹ÊíWu…u‡––1¡EÍóâPIùŸµ7"Ê H½¹ÊÃêû<¨¾ÙI¯½ýñLéŸ4/kU!Dyк³æ -„eá€_žøiôZ“‰«0×{ -–;kÂAé Øj÷ÐeÉâ_²Ü)¾ùò Ô'E\3ì—ÕPñË3Æq7ªB€ãzJŽo4K[k)hkîÀ«‰3$':oíçŠI¬Q•˜(‹§!²Ÿ÷ëßær\æŽ!:!¹µìüL¿[àîõ1¾Ê^”섺x\1@ çÑç -ìM!Ãü"‹(cÙT¾|Ô˱´––áóHÿúéÂ{#€ŠKË=ìÞÀ?ÑCòÕÈz~I›%Yï°Éy„f÷’§ˆ+K°<líóyÔC< õ‚¹Zª’ìŽM+oLÂj€FSWU~!+]Àý.TäÅr¨ZåÚÀˆžÅa±¡½¡¶žÕ‡ÞJ¯Øú7ˆ9ã+çA-RryÊf4“?!R)ÖîûSÐ:Çõœ˜äc'°•ì"fllxýmB±©Õ›b¹!ÕÆبÜÿÔÉ›e4("rRúütá.D1r‡G} $?´_¦¿ÃuïYgùØKïH±:sSˆõIÁpßf¿Bˆôó¶V±•æÒ„ô5è[ˆe!dÝ^L1`6ˆ^JÖÌ›,n-ªÛ>€·.¤=§Xî=e10&RgŒ’•>bôº-Ï-Š·`|Ú;¨Þ`>©4Ð0V–IA(K½½ÛHïÝ£+1ò±‡iÚ¥µãWWã<!§Ùš gÈâNcÑäÈ‹h\Å£GÎ~z¢ -ðÒ;Ølb™ò×Z’òº[x^<ö¼r—&;ó%?Q™iQ·+
&‹¢Ã4»cCdÔQì…sÍD ôúe%ÆÚî”ÑFžæáŒxB‡"z‰óg,±¼2.<˜›<¥Ÿ,êßÍŒ*Äl%"±xJM¤¤ÄÒý@0A„Ž½ÁxÍUmUŠ³…-Fˆ¢_uÊ'‡¶’ózhæÙ=ÈÙœßÑV«+_¾IʵKyUu¨ò;YäÃÕÁÎ*ˆÍñõKûŒ -ãÈ‚á“œ¨çÐ¥]6GHAÙñ' üì³.á‹3"€Zµþ¸²~êá7S\ÏfKABY¢º\ÀD¬ÿZ.£WìëpcÌÖuxv/‡?÷ðŠJ&(á~B²dûxBa•Bv,Qoƒû‹ÍK¬ÐДS§yÛrj aÞ«Rñ¸Äß±ÕêáÖpY)˜þkIšÌ¤³³ÛY6€œôË}TF—©˜xb!Ã*2ÂØ©-©%/#%0í"¦\ -ëÂàNo¼½lIêáS’¿ÿ^Ç™ñS¯bU)‰ÄKäâ6m¨Äs†¢ÞõÙÁÏ$†Lzþàˆ3u4‹-¤;Àe`Y%òØ Ú´A5ÖM‚Ùb²›Ykࢇ¥Œº»€¾†•ÐJ÷
Qó$ÜgHC¬ - -FcÃùÄsâ‘)eU¡ÉÉËÈøŒ*U±íoU®Fñ+z9ÃäI?tªz0dlë&àÎîti½;H#Ö¼Ü9JÔ öXÚõ”äÇ#xRQçsLAŠ/Ù×ù‡¤XÝX]ÛWFm¿Â2rÆêEGš°¡pµ?^¨f,°4´sK@˜Ÿ‚Oª§'uÕ2\¸Ð´pT/]©†Þ[}ûÙÃ7Â,†ôõþ'ú™ó”·?ÿËü§·?û‹¿þ›_ýþ÷ßÿî·ßýõ¿|÷·ßÿó÷¿úý÷¿þnÿÏòõ~ÿáW¿ùíwßüøÏÿý»ÿñ»¿úõo~ÿï÷ã¿þóO~÷yû³÷öwÿåG%ð_ñ5ÁÀò¦Ž‰c‘ŠhH¢Ü1vœ‰ -Ï…Àþ2¨¡)ý?(Á¡(ã7!ôùÏ
<‚å'r’É´r‘+,·Pœa.ûeª.ˆš;Å.>°y -þ+I“bË© ¸ç½;B—Õ»³}Jh;O¡/½ç„ý‘i~®e…RBd‚¤rþÀ–¶ƒå”R8cHA»¦=ÜXØ$ü·–á4èY\L€>¼åÐ×É(Í"ªD²½œíÒþò7y+.mT •>,HÞ‚<$#Ùj<IÎàtéVDR·‡B2!HÈsÛÒ}Zaª¸«½)0Ä -i5ó·Kð·Wœîf€ÛÔFqü>ˆÄu{•ˆ"eÉ·p`ìa›Á%׌ƜèÓáËAOÜØåîÛD´7=Xñ&´Þ¹£¶®àÛ‘nÄè$ÉO.qb{؃¤¾‰D¦«½
×iR£oR…l6”¹CÕ¯®ï@YUÀñˆ.`Qd6úØ`ð¬{‘eî¶""×R¨>îAŽƒ¶ÆÊiñW…ª‡”ÿsXœ°…Am2^DŽì!9jr•œ´Z˜@&¤QHéÒÆx|`È7Ž%Ô_îµûJæãŽx<X4äGIæqßñø"=[Ÿ®øtID$¬pÄhüÃŒÊ-ËxˆŸíC7ÅeI -hFŸðuÐx(c“ð¯Å»,½ÜýóëˆÒÑ‹äÿÎqy«h -.™ŽG§QæößSCôê -Ñ«å‚!Îd«ÈP…¦ÇñþPfD¥²Õä2Ó…WUЈšw[âH8Kì{hîÑ…zH¿Æ#0„³Ò'V%Ôõ÷s_² Dà–Œnݯ«¾Q¸ªÙ|པÏé?¡Ñ$D Êé*#éU€Ÿ.¡ð.yr²(”³mžÈºÜÖ¼²Êqmvû¸ŠÅUæ~WÂÕMfd)~õuÀ[ê%•·ggK -âöTðÒct9û¢‚¾å\\ä"º$Ýî×ØœúH‘ÁÛ"ƒ=½l¢RWÄ|ƒ¢Ô9iŃS¥ªÄ]„‚„
lÆÝÓÊõêBâ*.=RÖ|>‹U=h\¡¤¨<îÀéÛë¹pᤗLÜäxt!\°à>G°F$Ð H/“Ë$b5Ûõ¤1ùh 3–¾OÁvú~?`¡ûC¬oÙ9K7-,K"¥¬š¶Éj5wÑ]ê)ÖrÜ# -d±è] »øÀn*T_Æ:JÕÃÄe)C£Ið„[…ÐuÅ…Œe´ÀZ5„¹ÎÄKZ"ãÝß@R]ªZV»Áw©º{N -Þv„9ˆôË•½Ù›+Ë?M¦Å) ¶díÅDÊ_uÕO¹„ç‘’‹”À90{¨qª®‡8v_¿Õm¿Œ¡#Dd„˜Ó¤f„"„âqdTüPà‘v\Íüuådö» ‚¾¶4ïþ•Ñ÷|*bôþ/KöŠú=‡„O7ˆÔ69X7+ô–Òõ¢!m)¿¾M0„¾Ì%â)¾$Ô¬±ðîÒ~ýÓxuÙ®P“ÛO‹°ôz”Ö ÞñÐ~âcÞ"ú8h”;˜’² ½®‘Y%l&¾¡¾ï¦f;GïÑ6lI{~¤hb½ÔÜ
ð€iy„¿Cu“ðKð¶Û–"`‹øÜ{u
íc»Þ:6’|‘¶Ÿ*PK!€¤—»tʧá
!ñùÝÊ2ùOõ&tÐU¶‡þ¿waÚõ7C„€Ã ߣ¨n
&Q¼‡ÌU¯ñõaÃÀ˜ÙÇ*3w$W߯XªÎël—ÏöâmA -Íi«;ßÊ=&ÜÜÇGaÏḦ¡ÞRµ%žÜŠ½%áéÞƒfŸŽGjǯË5§} åÞXaÿ@vœÝuS ƒ+á°úÙ1PWy½®-ð_ÝC}7t‰`úTdÒ˜¡nï¦6#-ùŒ#*2é^Zé=qlœÈ¿±õ×èi÷ñ3‘‚¤›„ÄÙç ºLß!©OfA -®ûÀÍðM-8Å’KÆè¥)‰âI…;J«ÂᾺÒ}þÞ\ŸË.=]Õ¿•«EÌ~+4§Pú”KUÕWmpq KA‚Jƒ¢ÎD¦ø¢ì'C‡u8„6·
‹^JÔ'Vq}bïH0RVXÎGJûËÉyþ‰¯ -{L-,Ö;ÞB±„‰ŠŽœ/;@¦=W3É^R«MK’èÁy1MØãËòüצ*‚
Œ’ÛgGªo·Tß/9ölÞFžNñ”RÄÏî»™òE’«ß]„RºàéßWÎÝW -yáu»^඗£è¦™ëô .‘pû0ir›0ì…d•¯ÀUzQŽµÍ`º(lÿÕíÂ÷ìY; ®í1x¥#p63Y–¥î¸ì4£ÙÃ÷Þ]0ʤ£nºÌId̃+2Ï3ÒŸÈêÃ)³ëê…µ*¥e~jײï¹Çç¿Ñ6ß꯳k€¯)?ìs è3×I²k2åih{«5~¹'ºZÉíöú;FŠÜý#û…Äš:‰ºµç†/¬–Éò¦„õ¡2ЇókðA -~)¦>ãCt<8É
jªŠÎ°²åì(œH*Ö¶vŒÁ—âÍŽåv×P©Ž$‘ôGÌÛÐ.d~UWåKøÆc´ -÷|?á¡Ðð -oHDiºQ`)Y_awxÊÚñupKT‹ffŽ»´¸>"Òø>B5¹8ŽÔœ.©Ý—öFñc’ãŠQ>`EjR; ö«Bê -)Ã׋ýÉÉͬ`MA5·}8=¹î ªÜ
[/4´`‡íCÞ*²)„–_ÐK)ч -¦EøÌ1š_
Ÿ:âPÊv¤:k;Wç/§$MÊ;½¥î~ZF§Ñ"üE
ÛK嶄˜Œ5„ƒ;ìvaôÁÅCTnÄ5W˜ÊXèA⌅ä]
Ím²$™åÁh…©Óv½È³úÝ ‡95B‰@ñ \"’pÈm¤Œ{›lŠÉdEAà{§0-%C6÷áG…w¬èŒÄžÕ•ØÇå:\-‰Qï! Pð¨Éí~`x½6Ë<íQRaàçD…ð—6AÚηŸÝïgZ€Å$x©˜0Ym]ßÞ>på :ÔàX2X˜+y5*U’ÃÕ¼b¨9Ic¬Â›R
ÂBŠ&Ì'šQtbòTj{PQi¡Å0 CšH]I²+¨’Psé=Íù Ë«!VY‡ÔÁb¡¬›×yË“{Ä\¡í¸Í7ÕCe )!9–þP˜Ùí?¥˜ç¶ÚŸáÅÜó• &¬™²…¹Ü¾¬âv4&i¿†º.&'aY5ã*,Ño‘»Ñ2»ñcæüB«šC²,Þ›_”ŸˆÄÒ“<Ã’k¤Ÿ\÷àüàÑ…Ô€Ù‘V -5ÂáµW¹‡¡Ðâ’¢£ï}åEÞ;S÷rÐ,1 e«fY^®P¼Õ-åÈcO -‚=©ôS9SûTµó£=î"Šä~îK=¬ÁÉùö‹Ä¢H稙°OH0וø¥ÇnÕ¾‰¸ž¯Sw²wÏ*)ÒA›šÝ¡7߉T A¥Û‰j¹Å@)xÔÁ\mYê7µzžPmÏ—ÍÔ#íéG8W¸æ!Ö“QÜÃïb÷”è^]³î>L]ÉrŠ~Û‘ʕ¤Pé ßMüÜ„eSU=•Î‰C¯kù¾Cæ{ÙoTï\Jéþ%U·(õ¡d!õ²aIn;W/9û(†‰»°W—{˜K‡ä¼<£CnÑÒI¤ßîªÕ®lÏ1"—ÂSªÚ¥î±ï©1ΰ/+g銒 AvÚ¼dyUÃVRòŽ’§¾"ŸeºˆwÝ“y5Ò‘h¥@H–AtH*a
rÕ“74C×±R ð:
#•^AÓaF¨Q RyëzX û‡´bÉ -ŸÃ<¼‰Rú8¿$ùz EL¹ÛBÇF„Rq’ìÔžrBÆ|ÍÅB牔¨¢¤Xï€l²Wã‘,¦ªƒf1A+V¹Ó¦u?¸[<>¢Šh;Šx®°þ‰¸’!“# “#õ\W(C0Kþ#£µsYÖS„p@ˆhcˆ½"ð/P®¥Ûª8Ã.;†¥¥)ª&W\ÉC†œE‹(l¸%‘9¾º«† -ù*äsEKúV¬«‡3”Q¯).I/i—° -ô² -—Ì»t}¸½7›¾ªÇ -š“øŠ8A`žb0ð–G`K›/R1ä)†w™Àù“\æÄSây>ÄK• -ÖbwdÅ÷~kàÓ [‚‚È„Â ¯PÃq¸VyÏAÒÕtëÊ1Œ$D®ìÒìHÕåÙö×R}P -X°Í£‹JFè²ø„Õ“èªÚeó®«Ð<wˆY< Šk‚gªÜT_ÿÆÀG–¦b{|LŠ”´ìø_Ê"ÖºTFJ‰ykœßLU’Œ¤Ì”ç—±é#à -²Ê‰.1Öð’&ût Ž'L°§É´Ì-üEtÖy/$õY@»`k?šR=ù´»T~Ù( ,àµû•‰TmѪ±ÕʯôÂF‚•{Ô¬Æk&ºâ5—T~Áø+±—*$uÚpqX+|GŒ-¸CÆÀãY‰ñ"G3wþ»ªž/¥_Éd±!”Ìýí/Pßð—É„r÷ØØ9ô®Ëm'¾2G€ò -‹†™B†ö»®) 1ãaj–ƒ^($ »Û!@˜*Î%(OùG·WßÄFL’Ÿì[ðŠžRŒ¯àM-;‘=÷JáT‚…D2zh,|yý -/P´ç¨+Hx!v`ó^cAЀ%PÓ[#Ä¢ý‡g
36:‰S9Fpa†ó„¸‹ñŠ7ØXoÀ„' -‹—l´OÍŒ(e -Ri§/öœæ}¢RƒÞ ¨ïfA噀.ËsD„ÂX0²á(û&uØðÒ‘wö¾Mh„bà,ãõFÌ»¤ë„y»£FÂs±¦â—4A®:É¥Ý1¦GJCÝ6{ƒú2ÈÊœ!’Ez -‹ô^Ât|v%uÔí¹²gK*kß8Éä«#s
t•t]Ý -R¤l¬ä°ŠíÃ
Ó_ÒCV8¹Cᤴ¼:Ïh%qÎu?÷Á__0CQZ$MâwVˆ?³‚‡Ñ™Ö‚E¸«{Ñ—ÜÀüŠn@—Þ¥y«b݈Ø.rD®Pc3ÜmÇwÜ¢f´T>A€¡)ùÚdk0ž/™G{29WÐÑÜ·&íÙn= -ëì¹ZÈÂh„T"ÛL‡ˆáOsâzãÒÕqe_Y¨/ *ÖóÉ°-™GPQÂwݾ;9‡©HĪ7ͺŽ€ÛX9—Dj†ëð‹ÁՔ훹¹2Ì“¤îõ¨I\³ë«âsl<.YæŠ,É‘˜w"{ÁΗS½ï -¹™Ø¿\ÖÑ/®rÊ]šŸÕX‡RÌOj³údŒ:Ò4ÁÂÜ*Ápxu¢õ}TQÎÏ¢@×á\ª-G›^Âb™‘C×äXBô8˜L‹Úà) Æ;»(ƒ,€\5вw!ì`‘ ”‘Àºäoå^ÒÎi’Á‘,u(¡ÆeŠBÇå+ ZŒÔ‚’'öù"ºÝÔ˜Žd¤¦žàŸÚå nà ºg$Ì‚”ÃÈ„DšP;ã1¹²ó7-˜RJ -xm“sG" IC%¸„‚ºÚéâ¬v7-EÜê¸ö¹dÅþဧd$§æþÊŸ”Oš|e—Hù‘%(’üÊgŒë°9"’;¸A}¿$®‘àf÷ÙÃ;dogDo¸"{”±ß$ -T
àLq?DŠåG६׶(æ#ÈÖî%}¦Ã®°“¤‚_ä¡UF=øŒ¯joð‰ƒàœ?ÿK#ÔkELl L‹@>TðÙ@Ó#ú -1¿{àÅ°{IÓÃ|Ò«É1͆U†ÐÒ£J0jáÎ£Ô -)AÒøñ&Uv4Ã; +µIë2Œ \aûÉ9¦Šã±N|‹ä²q‘©»Š¢ÍÕ
ÈI@¾de]óš®y]VnWI§
ˆ½'ë®È ž^Žì¾‰ïíÆægtª¾fDZž¢áã)VÄ‹!L¸•·Øwz»ln -[þ»ë¤ëäîgѹæ˜ÚT ¶’èQàAfÓ@ñîÛI(·E¸_ï×÷²+,9=q»°3ùK¶Î€87ãz„U_C1×ù%9çi²÷ÊËXõýˆ†è+†û/À2ë¼” 'àc†•à›O²]üðÛêèxŘ¡ŽáÊM½ä²Ú÷ø,Ú*Á)tÆqVŽ -–ÈýYRl¦4w»4×%û¶¥æÁÑy§SG%¸“©¹uzˆâ+ßÒ†W'1q>n¦\Q£ëÖaر”ö¶õ'Eú8â—™•¤±“ç,“G2=xýÉï·5ƒÄì—CÚ"Š–®íÃ`ˆ_ò§³ÏqeD~IKö²š"°Ýfm)áÁ'«ã —ö©5›}›n¼'™5kl#e^Àt”ä˽J0òe³bŧG< æü¿.F²8ÀŒ(]í!3ƒ¨¡u©Ý<¯¼§³ÉÞÙyµªF
Uå¡gø.ÄFN -Î@¢V„빃«.Ã<yõ°Gg‚D@†N-hÅ;pv¢‡"¢GìAucf‡6£¼œ‡/…ø¬IQâ¶VqC——$7Zc¬Øð°ÀÃÍYEw$,c4á]±Ð>+ôH({ ÊT•;Ëfê$[P¸ÂÜi/ÀŠ·ùº]€&Í$U¬ê¶×®eUò©÷ˆ-#ïcÈÀ„óé ÒõÅJ'v—@T¥”×2• XPviQ4z£Ó&=óB}€¡ Ê‹çQï·ŸM-þI³˜Œl?™$“ÀÄêAÞ¹ .«Cê{T>ð85^™ -!°Ò]Ô€Ê!Kñn1%âÇÉ>?é^”—.ãOô²·—œ¼†4ChcÆ™tOaYÚɦ¥ü×Î6eüñt ú€À,S.¥çâö÷ã%B¥d剅ôaôpÌ~$ÿ,Ý»défº"a¢GIPëêÔ"‹w§›‚-< -øVéŠú“Ú´ Žk/ÅMKBËãN@"s:T}éÜ•ÄLÊS®©-ÏfaG~¡IG l€8€Ð´Ó$yi~Ý~°r -æËÝ“VžN6cª{ìom~‘þاûz¨XÚÆfäÌø¾?äÝd¦ÌT&¸/RÿõÍ.Œæb_…±â´·ˆ%~5EZ“`FSUóúbì“p;'q(uš‹É²,œ~‡À”TTo´»2ÞÕMAÇÛ-$ýD·rX{Åì,Žš²\Òœ8-9Ü}%l‚Cf“Ú™Ìý¤¾ýÅ%}´¢zÉ8:OboG$2 -ôËãET^üW?à©äÌÄéÑŽs]Ôgÿ»¿„'P~ó†0qÙo§øa¡¼Gꦀ‡l‘’RAƒì3`„IV|öF¹pˆî†ž,äNž<ÈJ¾‰!HshN÷DjÍ°˜R±Ëà×õøøWjö°:cJEêyH†Ùtä¡$ì¶ãÔŠº"?ïMeš~ûûÀÐ3Õ×L¢b¢Ù®±PM{Ø -ŽEÓÒ]<5´—Rˆüì幈Z‚SÆÆQ˜Õ–wJÏÉXsæß«˜Ð˜e|·[À¹cI(¬XÝtí†J5’'CÒçAÜÀ¾fPPŽ[l,÷3¢Øý‚º„”a,ÊCû -Ë]+nÈahžª›ñ±2æA8t$[ÒenÒ2¾ ÒBK%.kg¨(ºPIÓÖnŸ…ˆ»€*Ó̶_ŒàxóEÒ±ÖöÕíWð” ¸)ÄÞó?uɶëßCZ°d›¥JŽ’u|^(8 fQÒþwGOæϪ’%bR™ 2Qïíe'©4˜‡)‰Chv©,ˆÄ›¶/”C„( ¢CÃË
mbØp ú —@Ê"©ß~J%¨EM¡Hc±çt»ÉKˆÀTxó‚ÍhxâNæœ`dú’ÀC¯ -½HpÙ½‚ Q¸WŠŠ`Kع~¥ƾjÜ!=â°fÃZ‡DK·OðéL«Yð88nëªÉö Üt§®qZý’9Ömé-kÜnËßj^%L_ývH)ÄRŸðvñ¢$~_Ê— ×€Þ–¾ôˆTíé©ù@¦æîØÎÿKL_ho¢/ßá¥<È%’XE”>–朄f‡åŸÀ§”[¿M)bŸ]LnC‘@¸º¢7áÅ"ÑAÍúdžôbqXøjv|[µ€°ÆË'6¤»Ùðiß1"Îq‘vûŠQ¥ÑK‚À+2˦󡜡 -BV‘ -4» -À+€f]Òuײ”c ˜,Å"tP¢YMž“]ÅYʬ‚n@y_:pÇhç¿Û{]ž1àJÎû`cC!ÓÖ½þŠŽ+J…Ê5ã¥ÛÊ’¦ð{ž½™6»´2‡@ë+½½`Fñ;Ìÿx@Û™+6"¦!Uõ˜@š¯e¯Ô²ô¬dw’ -.;m^áÜKü:ÄõV€JeçvÌú®ß|8 {½˜ôžÏ“iAÆ=è_ÿ¼Ì£jxêDö,jô)ÄÙ[•KeI…·G67L-L—3ž°n˜Þ‘îBÎÃör`ñÀ”& ÙÃSRW>`èÀbnb'ŠThZ¸q:c©‹‹J])(Ñ-š¤PìŽÊïtIqÌn_âOt:ð–D´âŒXªò²¹)päML—FÍ83ŠiÀùòVø“Þjˆ(ßoj¿}‹"¦ïqBŠL¨Ž¢‘"î6(+Ô)Vš.aDÕW(ûõh¥^ÍTþ©I®B¯ù·J¢Ú‰Où~•ôbàÀcn¾Þg‘#Ü”rhT–µ~–]²öj…Õï›|¾…Aíµ(–‰ê“™{±ÍÚì ‹
#™øNbª -´¸=®Gº}ä:…bEWaŽ÷¿"Ì÷n#2©+áÊí²ÉŒ5x!Kx½Ãfûs?—r“9#: Çň˜Ã*ãBªÊ´~0ËYš»¶ó¼ÑwlØazýx ¦d»¬<fœ¤Õ[½k9YV›!ÜÂÆåFÇ â8Ðn˜Ñq¤:ÿ–@BŒ·„oÄgªwT/oªv©£sAK°òÊ£ÙÏ*mHØ& æTà>¹‡ë/¤F¹Rî|ò0bHÌ{:Wøºßé°ßµ˜ry †î9×ËS"sÔ%¸Ç/œô¤:()¾ýuµK‰½*d¹–¦tÊgìðÆ-‡W&‹=ßWŽ`Ú}ÌòrÁ ñ†Ü¦Ò¥ê|÷
µ “8J»¨( Ì¢$R -$u,u‡£–^ï]yB¤}j‰B(Ã÷¿bÒ!¯Tn[}
û§€x’²ËB˜z5€zX€.ϸ*à -C—N²Å‘udY~"’AÜŽ[]Ýi‚Gد·s³âå:DwØ£&[eƒÍ¶@÷¡·|=¡¨>ìàÚhœ<;8^ËÖWÚ‰‘0] -ÑÈÅwGœêÆÑJ?õ”çuBqëÊ›~pRò“ -º2ìÝÊ–?Oº²+€‘h\ùI¿ûÒiΩ…|D¶å4Öq€úê
ÄÉz³ä éE³Šªn.¥´ F¼»§øË¢q¬8…Ô£X7y_ý¹˜Q<¿s°<ÐɈæråÐK÷ -«9xº‘nÝ‹]¬snO¾~ÕlܘòÇÓæ+]dŸã:ÀÅ£ 77O4’’ˆ×tg[¯ñŽæSb:ùIóB
*ÿ¾¶h쯓þô|er>x©Ý^xÝÜbÄ+U•9´+=#¾-˜uij^¾ -NPOß5ÏÕw'xyi¯°žbYqiTæ®U‡NSW÷
ø[6^ñ> k|n¼c…ýÊÏÅwÀ^ãA=;í~ÈfÑ<õðÕ8ËWkÏÆ'†1›{`j®û¢qæé›ùêĸ‚¦¶rN %éK“Øgžh»1C -òÒàŒœ©Ö6òW˵ -HÙ¯ˆUOüÍå*±ÙP\÷ô¼A©1&øŒ12Õ\3ÂH=ú¶X€8i³õ•+xæÏ)¸Î‰F»ÀÝE[ï#¶Ÿ™*¢ùÎM&ºì‘'8sÍÏÅ3ï¸ÁhÉÆ ( _½ƒ×7 `Ó+ã3Ûù‰L7³û6šsÝçÓ>s\™?Ð)¾zÞXqaâõ~W]˜Â^Ÿ}êbóøm6_m¾{%qŠ8·ÄCÇÛWÏ›w(Àæç;¬_¤wëà!¶T4žÀúkâF¹Ø¹ñz7ÐtsíyiÆ Î÷U¯|ýº¨ß|ýÂ^_‚â1cù8¾µ€|eÐÿýîû“óþçýƒÊÑüÿªð„7é©9â—¢y¯L%›×zs#ö'qSž4Ä"óÉï2væà(Ä_ -¼ÅÔõ<•'Ú®ºâ—°Ì;F8ž”"•xþHÇD#Øñhlñ¨ÕÜ2c±®Ñ²oÉhÄDcÏoò¹bËfSäü¨õçÙkîщÆz•ŒÄ³Ÿ'´#‡P_½~ý-å j)ùY{ŽUcô¬¯_Ï?.×»9ð5³]Ïã9pz/§aM4fј–¿>½l'õ™YºZNÌWl n9¼Tp«Ç·
&kåµjmŒŒ—Bú§ÆÞë9mnb¦cl7ÞãŽ;UääFœâ¤ýü9°»|ø±°PhÉuA#)Ï™ƒJ©‹×ï?gs=ƹv¾ÅDñ¨Ö}¦ú'%©üê™çWnVÊÔ$¤[h9.×7KÝ73iO®+4¿—WÜò+—ÌrNÐGN¯âºøýÌþHŧ%‚z\Ö½âѨ–ü\Øgæ ö>ç¬Ï}DßJ!ÙoaÆBܾÈe¥Eh^Ï ®ûÎyŸ)Ù϶±íÊŸóœKãìÙ÷¾cÈ dg}î|å%Ï”ÑZ‹ž£æ(4‰ê§çíœ ?D†d<YŠ™=3/meã5®ò®1Op]çÕP±ó};oqŠ•· ²Þü0@ë»[è”ß|ÞúnØ£}•]Š²—<Ákp8íG3€Î9sŒÇð °—×êeVB-'0X9f‹hJ'J[+–ïW‚p~qöš¶LjB#:žo dË9m›ç[ŠGðs'½ÎýÏH:êïÛÌ殤#¯Ä¼6Ñó¹!w’'x¥êbCŠqEn–Ä -ò XÙÎÒWòK(±ÆÅîÇým4ß%'ä§x6—tQ>„’ç¥PN^°Äs¼–™;>2NâŒö’$Ë’¼´Û[è»íÉ"ª² -pó=òkˆèï¸}Ã+÷êö†É¸|\œ@z²yÃÈظ±ÞågÅïAö™”)9”aæõ;›)Û»±žÉ:Å2×=“zyçDLá]2’œå,À¬vÙÜOØ(Rø‰;¿Ž¶šAó:CÉ·6«ÓX4^¹ŽH_ë›øû2ÏË|</Â.<ë`dèÜxåÚpÍÐÀÖe¤%¿æ×,›aó×cwþXiù¡<¦cøùEìU¢æŸŸ/=ÒL*àÎ3Öœ=øóS‘z<³Ë†372ù™¹ -"¡wÉ*ç¡Ñýiöi½»Vþk.0ÇÅÀ¬…»x‚^iéyŠÈ<±J€!=)|J6uÌySWɇ"c^7>-?+<ÎIW ‡ Ö¿ü Üude™Æw“ó]êëq[/йúæý—«fc;1o}‚v6¿%¿>¬6óÍ9ÁýdN(î<ºÂïVõè{'n¾7£ö{?Ûg”Üs—Ô…ÊGƒEË·Ñ<ïœÊ°$æŒãfG³g‘˜3¹Ÿç}ÕÅ´gμ@ú×9ë·¼Ãàöw¥ªËåq¯s2 û¥0¸«%‚{w Þ¬ZÃb0Àùë -E“!jYESóÌ©2˜ý}Íó|ÔéÎF<kõ—Ô©>v¡ôõLÔã4ž²Å=Ûë¯bŠ–
Ñ:©„Hrõ‹Ân®©õ<Äë]½ÜÞ+u¬ »©ÔÍ/…ÕZ±¬ª¾S•âë0YF‚½ä îÁÌZó÷Ù÷DQ™$i’À8ëMM¼jq_ïQ°Ï}âQO×3Sõõ‚¶÷ˆO ß³ØÔì›Qœ¨B†³¯×üÝ30ž\Rª• önî(2ëð3‹W9ˆ\³!œ¨Ù•-Í‘'•'FÜéz]€üª}ýý°9^Õ¿»ÅSA¤6'©ö"#Á‹Îóèþ|·2EĉMèÉ êOj'g´çE*S†/A‚ÎÚûK‡$ö s-ëu]¥gÚA3O\ìI‘§ch¯Hz–ó÷W¤c¨@·X,,×u?_µ1\jL ¯á’+“À„IŠ¸ë™ª{}q%Ú•t¦u˜2™å d}ŒØ•ó¡Š29ºûÛ™ûüýE=\{Õ¢Üñûm¼Ãmf‰ŠÊX=´ŒšACó_ájÄGÛòúûë^W ~rÒ'€À/F=MO÷—Ly³b¡»1¡È¬–+Çs˜kM*–C¥aOê姜ìðp9Ç}º„(gÃÌ5׿‰¿WÝRÍš+ò´Y6Ç5în¯æq"¸Q»Q ßx61ý‹¯ŸŒ™Õˆ|JN“=ù*å -}yÞÜ·öÃ8AÂ
Þ+
PÜ‹¥E‰ž’™Î o=Ú_ש-@ -ªîÙ¶àøgÏóÆÎË™× ©û©ISâ,9U‰çëž÷‘;(OÐÇkùYNÍ<ÍkNLÝa>)Ä2¯w,lA9ܘ;¶îå1NPj\«â–s‚'ßÊÄù‚fAc¿s̼äèHÔîuðÛhÎM:³Ç9oïõL)A=.Ì_§g}·áò¼¹síIÄÜm3öKÝ$€lL®ÂÿSBŸùÀ’®“ži<Æ2=Ÿ|â¯ú&¥ù~>|6õTËÇI_˾9U3æÌD3ÿçxÎÓw¥ÊBë÷AŒ¤8·ƒT!c¬8„Hƒõ³ÂrYgx‰½'È’Cw‡hl9¯fâökJnž+?²¬‚š8Tè!®dtóÑGœ'xmÙLJß„æuÆn¬çÓ5+Ñ$IÖè.!Å JN÷|sŸØ¥;—š'×™<" ¦ñ,dÁ¼ú*§<úÆVƒc˜ŒÀŸ~üPÕsS‘5¢ÙÞmÂÑû´í,oì_óÏ[þy,£0åknNä_g¦>ö?nÌÜw·î¡×•‡dWòø²æ”ø䥮š‘@IY=SW¤*Àª×~½ÐV3ŸU*ÛìVõ ^•~™î¯2ïÓ“ò”E.'*]ã#V+N0×û„F6gVÿ&ég ´È°–óŽdÏí¶Ì]\‘t£±æN%#2ΚñëûJ~ÿI¥¤•¯¦ -ì°À/b›HÔë ½Æ»hHÒo£¹ßç»
˜ì'íÈ“‹ô¢Hè}ä}MۜąåF`¾‚r›ØRùdJ4¾bÊCWTó8ѦÇn|Žä•¶Ÿ—ž×YpvE/¹ÔÈp,Ï ž³‘GC»åuÍš[¸ùY¨ÎÞÑü9UÜצâ¦yŸ]OÍQû¸Pߣ‹ëà,_29I±9=iïN°òk˜ÅÛNpbÂeïr"œ„Ÿ^'ÛõÒçZ/Žvئüò QÈàÍ, -\âûgŠ¶¬ž'H(Êðt“'Èy’©o -öÕþý/¾zŠ_ -A{õLÒÖXšQ'xr£ÚÎó^å -ÕËÅ~šòW¦f*O´z@f¦ß§’œ -OÁ ‚‹IªÖøHÁ¹‚ƒ¸«Ô_7ƒpâ°úZ¡p„Z¥¨…h)‹¸…G_åJW7«üNЫfdÕ~:8;ÃX˜Í¾¸ÖL4d2Í+˜ +L½ÁKõ^„›‰ _±V¦PÑL³;ÕXU$FÕ¨)£ˆ›ª±ØbÕ½Å4MÑ=8÷D|™©XþK*vfPµžá<xÑ6 -Á?`2áN2a',\+ ©PNK#´2ÕŽ>Ü(¡¸
J&Ò0cUQdkZD¥‘»êÛÆb™™*Ïf“ºÙÐPPGÅÆøG |Æjð¥QT²ši5U²L¬ç#`HÜh¨BBx*„2‹x_‰ø}‘›Ê„ïË®#U×Ä23÷Ûoè Ñ/„w"/f&Ò%ŒsÕ‚YCxS5ƒ8‘F(Xg*KU6‘úÁÀÉ(l¦ÃµTTWûæ .© ±Ân6|“@M‹Í2ávBÔßÌTLˆ‡Q4zv -ÈTÊWÕÀ9a&ÕÞbØh(Ð -3•„&S©´/„¯ãŽ¢ÚÛó7©›5$Df ÞVi FJeBЅ蘚èú5³jdš-ƪJnª›©œÍ¸Q´‹FFRM†¢§E]Z -e¢x U9ô
Ä™J -hÖ'Ž˜«ÞÌPåõUÉLÜÅj,rtu5HØkh FŒ
5ûh5þD¡è‹¾TÜ%-SÕ3SïÎ5kê‹û`5›ve*m±IÝlªö¥‰R›†ñ9IêwÓv3hоfºqî/Õ—©®…]µÂƒÉTõ®`W¹‘èyÄëMÕ¦p¯L—P_k*bµGïa]8±AèÀZ6i›z¼&¶¬â¸Q”©¾o&îÌ” Å%UÍFPGI Q¦o ʽp/!À/S•§ú5ÕL¯ÔT(‘ ß' e‚*2ÂT—æ2ìSÕ§¶à~¡Ðƒè$Tc\B¦i -EhJ˜! -Ü,ª[œ+¨z.©*k[õRuÍؾ-̪ø>òÐT:aé¡+…äYŸýçp¤HÅdê -F}K-«·? -ÏjjbÒ—oá~¡øŽ‰è0R…\¡ÑH“ -)Óê@ß;Дǀfqqjîe :”T[Ì Q8}@]P[ø¾¡MÄkÿÖÆMRoi´ n€ XŒP*ÆÿØÔÁN¡¡„DŸk
û -êÌܦ¦ºN-y©Ù{+–5y÷¨bÛ¯n4ëE«É®¢ -<¤";UØ.Ž ©ü'Uç–ãï‹Eú6ŠUúvðÇçÚ¤9éµÜ„ó„ÆÐ,Z5xZLÑ„°šXPØÄØXµ¡RGÅÂj§*¡U,U©o&$ßþ¥šœjÍý¥N”—ºÙD|CaCš±‰¸ãÃD•¶«n÷òÑ\øº‰PÈPal"f5˜¨ROþöþ}Ž³Q¯2SUVæH'¡:¢ÚÛðÇkÕ‡büu…à‡©˜Ò Æ}®\ü÷ÇÞüícmÕÔ]5„ -%Â! úâ‘j»Š·˜ˆ%ˆ…mªÿi ÍŒ…ÂLjŽûá§Pä¯÷Ž<ÂPL,Kg œ†u‘PêM¨¢®j¤Tï-Æ‚`Ë„z
&}ªcˆçüÍí4‡åþézñ9Ä꼘܉Ï!VB0Rü„F&©÷SüÝs7ÔÔËƵªÿ?74I³x„“‰X¬J<lî/½jŽ–26ÒðXÍÑRÆ"ƒÂ¥µÄS"eBm(¬'….e®ÞKû×n-¨¯*‰¤úƒ±p†ªjÅ‹G’šŠ'䙊¤S]÷,¾‰¦Òé~`MÍ(á@?YßÂôêó„þæÁ„'6T -n±ÌŒLõþö½-U-r#Ñßè%4ˆÁ@1›ÔÍRM - :e_+Æ/Ôü×~…ÊT©¥*›g,ž%UæÌÄÕ'ÕìZ4+´ -§ˆüM'‚ö4î“X Ó¼Ž±X![¦*Ì-TëÓDë1 ßô÷lÐÓ N\UR88L³õMÜã„¥špµp.ž¾…Soþ¶[Áv™‰%¯ÕÞ/u³T&äú u R£«õŽ)¬A“?BdõµšX°p¡™ª„Z„^ÿôFÕï‡Á»‹¼ÔÍš£oñ–0!3Ds)N!Þô÷À@+†™éÍ›¯G‘ømöŠ
¦¶k¼Wú¸ZÚ:ù{«W:¹¸yÿ¡yžÂÛÛÞËÉQ·ê¡æùp¨{"œ@o ·Âýn §ÿ§ÂÐ?ÌÑ/î¨)DÏ@_o³Ëëë9—¬‡-613u„^ÈTßD^ÖTΨ -ÌCí…cè°Â±¤KÜ@+Þ[ÛÚÞG›öJG”Žg¢+&q±¥_0aYcØ”QxLb -'2q_PY#)Ç þœ_ÊÖ7n(Ìaë¡MÐvZ–¬³–%ï¢eA9!Yä$VÎý,íûm´ä$ cƒæ]A{jY*œnb%›Í9ÉÆõr‰%íªeÃziËÑûhLÑ¿7YÒ’5«7I,m¶öS¸Å
$ÝR+ÜÒË·†êZ3žZrç~ö¹Ò]ÛZé¡e¾ÅFbùkQy£¬ü´Í73’•ë,$›Ñ8Ú‡õg¼sGÐù£(¯ä¡rÊGËŠõÔ²Rjo@×mXe!±TØ!9ŒìÏ¡`Ü´llƒuHÞW‡tíϹÇ
á½b‡²A©#mc -A榳‘…ãiï„¡rô¾è´ØЂ±\tíd>¾Q‹)ŸÌ‡äŒEò<žªœÌ‡eŽù¡=Cn!ý¹ˆê/ÐøNf="ñ1S¸Òsflá #>&w\C#Ù¡½CÑžÁ9¿´Êĺ|Jã—ÊäÚpoyÛð¢IJ¿¨a¼è>4k,™=îÃ$W8øèöº -G_]…ÒU›°uÓ&¼u/$뱃)ÿ$3”ÑåSø¨âIL`âpÖ9ƒÔá\\Ùd>¶~š;–ñŒLºô§Ý#2é#Aö oÊÉO—÷IΆ"ÙNŇNà3÷,ds.áCÊÆ3^1C(ŸèÁ ç\Bí4.®n›Þ2›KmŸÃ…•ŒgRG2žICA6¹¸ÆélJë—tÙS¦êæ7Töî¹tLéD6(g4é—8Ô†GsärFÏ€ä9¾a›Ò<“«œÊ'¤½£S^aƒØðäÑ||Ýt:(m$í2
ÉÃ"ù…y#í<uXgO]:ªa2í•8Ä’qÒZ»Üéȵk7>XÇšñÕ–3h.uèc͸kmÞÂH¶l¤$Vrû~r¥·6å1ˆp -AkÞ¡Ÿ¥B)±fá»nZòþ:”cÌ -ËÒË|pö.0më7ôôÅçŽÁs™;dŽIo…Þw6Ÿ¼c6¬5.¥ý=kR›Ôö%|˜ä¦é\l
ZÕS” _â{yGfýb‡2qÕSø$ÔÒ«ljóLôs›Ô<ƒ)™ÄDŽ£}S†‘~IC)ϘÁ”š‡Øª)l|ÍT6²h]8
Jë›Fã -ÎE²’<¿Ÿ_êlŸ“w̤Ó}Gú€ôŒ¤p
í¯pöËM¬ŸNç]ÄÆÔN¡üÑü¹Ä„9€ç£ýÓ†Ó>éȢqZ\rû—´oæpЩ¤;²¯è »LŒmñô&â -,Ÿ©Û¾´¢œûY#[nÁ¡Ÿˆ«ÀïV´—–5â_r}lÆÜꯋí)Øô£¨â+2²æúWLúyt@ú2ÖyÑX:ácü{þ&m÷l*÷øB:©}]9‘Š.›@E£ÂŠÇR±µ_À‡ˆ®ŸDød“;†èZR®zjîɃéÂ1”_Ú0…kXk¥`Rü!'S"ýí1 -°âX_¥Œd½c‡0ycµ·¿¢ê{V`þí>ÛD4¿ŠÚ{_)j{¾& -N,bã맂|bܨ:p5Ë!€'˜ºÙ Ÿ€ñü£÷Gxv`~À
|LÕÍ•«²³È¾0Ⱦ€Æ˜É2<]48,ƒp¶CC€ýg<oðˆŒ±²´ºa¤{]DëdôžCø¬XS Ÿ™”Æl’]ô7ül©-35÷Íäõ÷¿&r÷ÍûM9õ‡õ÷µÃ„Že’·Ï ¬a;g¨C:éÂ:ƒq{’þ)h®g¶õÔÎH!{G 9"÷WéÐêIÀe¶~˜ëÁÚ‚õ ãdž¥}J#K»!ÎléÖSXÙcÊá=$Ÿt@ÎHÒÍ'g6(k´¥q®ø’ -ˆk#ŒÔŸDØ”ñ‰Ê‡ lž3éE„1ÐïÁˆ÷„g#œ^<ëZd³}‹±È=ÒÙÈEkn]pt)ƒ¸5¬AÖ=裢sFTËËõôÎ'VÄöÇ«˜ÌýóßÔ€¯)7„!‡Q!y£ñØ#ٹܺì5á1¸é‰®] ~!¿ôá„kÄ -qK[‰ãÐOÁ#NÚA÷Q®Hv"û#yÓ¾nÍ#Ùcýµ,Z› ÎáýaÊítðC:ü– ;ßÓÁöÛùäa\`öhð -òߨǃÙ[ð=)ãj¦ýM»b¾>€óCx yÆýH¦@‚-Ç:ÙXÐe,æë©£¹¸ÚilæÞùlæ®y˜ÿÆÖLåk§ŽŸ!‘7žGü .ºpÆËéÍ_õ·¿%ª¯™Ò!Y£ÀŸ ²Ì§VÍ`3[ç’¥—eĶ'«ˆ–ç+åÛ_® ª®šÒç‘ÎœÉx¤[K¸EP¸E
`ÃË' -4öF °]‰¯ž¼”*=)EØj>¶K±Õ_0IÛô0>F6ëÈB:ïäªìŠ±ù¹| ›7ÊU|ɬ)àåâýðwðOÞ`s"þÄþ‚µ‰äü<àO }Ó‡3ˆ·`½ÂîUlEúÓ!¢?p:&a»°²ñtP1ÆÖŒoÎHÐË€wÀ',ߤ2I¹'fürG¢õ¡mC9hÑn1ƒÿŒ‘¬cÌ@MÂÖKp(‚}u|TÉàÛÅþΨ¢‰\æ¾lÆžyð@/„á‚“FÖccª'³‰#8ßè¡LrÝ4EÍÅîOæľ[äï–“Q…ã@þ,9-ðËΑ -ü«THÊHÚ
ÒKtÖÁùtRãtÌŸÐwéücK¨Ä6=&¢ñÀ‚0_`'èì£É†çË©²»¦TbË4°‹LdÍ$ªä¸¾¢ñá2yõc:uÛ*8o4áŽl^Â9)Íz°Øê;+ÈÚÎoˆúÎoéÒ‹&ð>€“€s±±™ÂýK¨Â£K˜Ü™„¦i€íi$·˜ÃåžZã-/¿a$oìþx5ë3˜Üê£|¾vá&ðáw‚u±TXÑ8¼ÐÜ -|z`l¸àŠñº—|«øX/$ïHß‚LŽ8<¬Ö%bÄ„øômj¾5ü5ØWˆtÚö%öws ÀÆÙdÀ‡81[2‘(=©Oî~¶‰=üHI´½YGÇ×Nµ"wŽ@;Ç$íqÐNÇä»ÅG!‘?ø9Ħ8$‡\pÆh>ºäà+|bãÙy> {4öÀx%ÔN®Œýå~‰ÃÙpÄëþ -²èìïJAl¹Ö)?âO°~9¬‡Š'€=ÛJy„àÔk@ú¸…)Ñ|o9“Ù>üp!ÂUËÂÒB²e“¥ñþ~Às > -f«ãè«Ëy…
æ\|ðîùèš©\ÁÞ%LÑ÷†\`ú(ðÙ õD@î š|tådr¡ -›²wŽ¢öá×DÑE}*íÈ2ïÔ"¬£²Í§ -ÏPY»æ -]yóºöîrà<dDùxà
¯Þƒ×`yÈÛC2Á”Ÿ1e:×SíO7òïÙó{z2÷äB2¼vT8ZáŸ=b6¾:V”]?+$§ÀA(„Ðz™ zAë|Q/²0'$pèÀ…|æá%Ê”í³1ž Èùd-²åu·V1ç¥8ŸbvH¿ -±^&®f2¸Ì¢ò‚Œ*ùÞ€Kß;¯À>ð@Α2¹rŸÖ<›Ï9²r:T˜¦a*ö½ƒ(8}ö±G—|û0‚2G¡5=ÇxÂÒGƒ|+|uǶòÚ·*ÎŽìwäwì_À§n›
>{Æ/jˆ*=| -:…jí^G–^1fZ¦3‘è}ÀçU: 0øÿq<Í)âTã!.ª¨DÜápn÷#B±ýé -yã¯ÈüÝó¨äæéªøĶ©D@þH2´t,•yz“öý´ÖÇ`•Ó:|^\RÍt°™S€¶ü¸1U~Áløóø Äõ€Oe -Àß醻+è¦Î5˜Ÿ4v¯€˜ UxZŸJß?‡(>ºˆ¨î4£2O, c§€þVT\1¢š_®¼Ÿ-Ö¤l¥*Ï n:y
pÿ¼#KتÛËÙ¦®udáErGœb©ÀÑÁ—öq$vo'aâþx‡£õÎ7+`-ùg—Paõ¨€¤aÀ5/á8p@îH¬‹ãê¦*jÏ›’MW¼›#<h¾z“ÄBÎK¬Ydß‘ç¼£‡(ÁŽ œNy
-Ø.;‚Ü2ÈùAv‘É9¼Í:ºo™1!À¿€iˆQB|Í%äŠÎ| EöÑ/iöõ»ÆbƒJÞ5‹-8!ýÇE£y -J ¸óל#À]¦€ìÒáYد~eíÃõš&¦v2pðEA¾mhÁ;¿ø\döx6£u²Ñú kanmÝ«•Çn8Ù]¸N|,‡8Õfs¹lækàÛInù’Ê=´ -`vÄ3pŽ.ä2æYLçì›óƒ Þ -\RƒÎ+G<çÜfî…qš>%Ò+p -|=ŠÚ[fLî9ì—Fkòõ€ocœ›³gÄŠ
w¿&j¯šn -þàu·øÁ‹~4¹»*§ÞÁG|K6¶>Úà3VxÇV¸„÷W@.OÂP:¾q*UxÞ¬¸ekAa¤ƒx½–
Ò±€‹!7pŽ—Eå§cª&A^ -]pÖ@5e“À¦âg†¤œ“KÈÒÛ&Dõìæn¹†<QÛ¤†/1/üW‹}ŸlÆÑ…STù¶Ïb3wÌ㲎.¦K.cÌ -8,¼xþà<¹Ã1¿0²—X/Ä×Oy¡ÏJɪKf؉äë<6çÐ"¤LÈÆû+ˆºë_“%'qÆ;gÛl섘ÄÁgœÒ8ã'dψÆ[ß‘•gd8nå“:œ+q~6ÿàRð§QEg¥DÕU°ýDÕEc²ò¢ UrDô2Qô4¶uÈf´!›½{>Æ´ÈfCÎ'“µ>¶ý/ÖË[º–Qi3àZðÊë{¾˜YpÑ -o…Wõ•LÛZF}Ió§:=ø£÷ -N.¢êŸ,ç¶÷XÙm@°õOײÙ'— -âÈ3ÅñWqö’<ÿ‹}õµ/}ëE -yå[c›º_¿b>nP¶=VØìpW^ºn{óJÂÖë—’ìÎ߈äÎtzòûºY¶ý™Æ*Ûß®žF";Go{¿aBc.jûTyu§‰üèï–Šk¿:oŠã>_Ïå>ÞÈe>?Ï¢•É|~”Eÿò.úð.™ûp3ßýI{©OOsyêíÜêâ[i•®/ö–þϽëÎwy~¸ÊîõõRîÍã\þYw6yÿEO_êÇÎô¹Nò¶ßV*š?,çÏvùÚ]¼«üþ±;óÃòðG‚:ùŠã®w…Ù=¾–ÇÝì‰b~ìñb¯= à¯Ü
çotÄØu\Hc¯÷ñçîû²—ïûrç»üés/œÉ_nåÎ>DòxÇ‹¿pûx×é<[«–W_Ùdžm]Õih½ÿ×XŸìµ"®¼saŸ>LU¾ºU |×QÀ¾êÊ`Þõdp¯»rÈ'Ï#mnü·½Íÿ²SÜøÝY~çg7òù§(æã£LþsG¡ó«c•Üçî<òÎsòÜk%µû…¢è²>YðÃR¢ì¾1±ëÓFhcO?r¶=w;Xyö–¯òÈ'þÀ#[åáÛöÔñ§}â¹RqêMŸ{ìÌ^xäÃ}àÍxâÆ~ÿÌAqà·ÍŠc¬)désOœ¹;w¢Øû÷â•Ýw3ì_])q~ ÎëÉ®:×—‡«Þ«d?ÜËäßIeov†‘?¼³£¯?ñ£{îÅÛ½¾\âøöl…ÇÓ½µ¾=ÍÕA몃ïW—ûw5Ty<i/·ýp¾€úø&YÞù»§õ±mÿP8†kN4>_Fîø`Nooº
l—<þôtËÆOÆÔÅ®vÏ.8<=_jÿb¶Ó‹SŽ/~¨`:º#åW~³ßr¸w…MÊé™ÖŽ‘ý7›ÛJHÒY‹Ý3ƒ;òÀÁáÅå^O÷ÕumÛæöøXíÃk™`×è}=»£ËŠ=‚ÆéÇëÁvÎg)¸@ïê¶ä÷=fAÏÐϺ=Ÿ¶W"™«¬½žRžu#»dÐéõÁ2ÛŠøÏ— -Þ+zPŠe²ýF|ÙÁqeÛ®'•ûö4VðHn^)s{º·’7Ÿ{ß“ãøò\9õèC¸õÑÞMDûoëäu¯¾¦’OÌ!·ÿ¼Þîdg â…›¢õ¿V+ò¯/±.éX"?ý+¥|Ò‘åüâtµë³5¶o;Š™Ç¹—3¶¾¾ZÆ¿ìÈ¡®½ð’_ülkóý¿,å§^ÔÕ'žÔ'AòÎ_]©WâaN_ž(gïÝŒ²:òu-÷¤–m̶ú÷²-ç{7ZwÿËÝëqkUÓíÄÊÚ;IÕ9µIùu=uίWò?ß)â~z’Ç|~šÃþú$Çñõ±²€®Æ÷';Ëíß}_lsïß®–ûÿµŠÚý³wä ²óÖ1™ÇÒW¤€]©ö×±Í=ô˜gv#ü·ë±Â¶õœoxjN×ÞùŽ¨¸jLìø´Ž;÷ÄËöÎÍDþæXæÄ{yÛ?VÊK®-Uä_Zl]z}©âäGÿf’ëóSµ.¯N×(_ÜÌeŸw¦Ú~¼YÜUW—r?·>ù~n]CGBUêýÜ&þñµtòÁÓ@û÷WK6¦?̨(~”XÑÚWÚÞS¼çNl zß²ôÛYå9׳Êrîd”‡>¬¬ØúæX ýæM2yã½uúƒ=ê‘'î‘/é^wê‘}°‡¤w÷X±Ÿº²l>ö†Ó¿¼L÷êÙYãß³½Á·gG½WÏÞþŽ,òÚOÖ7þ›—wþÛMq÷Ü-.÷Zn>Û»Ö¢ù•Ìrû§¯Ø«O‚·¾¹Vîøúl9õøMuí¥7uã™ÂÏn\K·%µóù&öp§’¹zÛßîÑYnO÷W;>;Qæþôp]Pwó¶È®ÒªÔ{ÙeÑóKò´ÞŽ/Ý?ºäüý°Â›]!ùW:"Š.Þ‰,ºÑVp÷^XÁMôïÛwËn܈*>z3¦¤õfBYÞÍÌ*ßGÍ•¶ï(`?tf;¼:Qªxð_~6'z‰ÃÿkCíÿÕ†:ö–e¿ØÊìødI5þ²†Ûñ’¤ýJ27_óo»ó˜—Sé—Ï“ù÷÷¹Ï·Éo™Ÿže)ßß(²{{·”zü2Úæô?m§ž+ØžÊîëéüûŽ»÷—K;órf4ö´mw|yºœ{%ÓéõéJ×Wª]^í\RYp/¹ü`Gté•ûáE…þÐVx ý<ÿ ¼ðüýðÂSQ%Gкkº›P¾íVByÃíÄòÔ»9•ÊÏò-nö2–E7æÛìè]ÁúÀrGßoå½rà.õøÛݸ–d÷èJ®ý³k%ìå.?yû‡UŠ–w«¸ön9wü©©+˜»ˆlò¹ŸøÎû)9w²›âî•6Ù?¹RÊœâ¡ØýOs›º‡&ò?¯¥N¼e™î®Ä ®†FÏ'{ëíÞ^Aºð|…Ý»k%Ü/_)è.¯«½_Uy?©Î÷q[ÿþzýâA‚Û‹5IݹµÉ³«ªïÇ—îéˆ.†Ï»Ñ%ߣy:w+ªô쵸ªS×bË܈-º™\æþlgûéqó¬;Uy¯#¹ðÔ‹»q?Œ½þ(Œ»}/ -ÖFéµ4$×ÙåY·³*’nVÅwVÕ_K®Ì¹]G¾|oõc¯uW¯»+ÒOy·2kª®¤Vl»’\ý ÉW}}áŒzwôlćq›/÷n¶ø±w³¼ç7?èÛ«kSAGîÎÜ{y;}Ÿìmq~y¤‚~t;‚¹}+0é~a+Ì|ÎÝ,Ùs/¦dÛíø’ƒQ%W…5=Š©py} ’øýu‚å›^7«wÿëeý[oˆâ·ÏqvïOäÇt”TåÜͨ¬¹‘TÖz%¹,ênY…ßÆ2ÿ‡î=í¥Ê7—ò^Ÿ*åßtðÏ»rùž'YÌñ߉=ÿ³‘9ý»“C÷Í2ÿî¶&ŸžöZ—ç*·¾=SæøæTóéY†âÍ?©·¯Ù_;ò\^ì+wxw¼ÔêY¯‡UÏGòù½H—‡ª–ì°}p>Íâ‡Þ[Ú~•mÉ>1}Kxýh‹˜ú±[º
¬nÿ‹%Þ¾Œñx¹£ª°+©ªú^b¹ó«½¥Vÿè
Üü²×vÓ›^nãû^~ã»^Æü}/µùc¯ƒÕ/½þVÿî
¢íH¡ëHQüüsìæǽܦ²î¹–‡{×—ÿíÈ]뉰»×‘éþø`]̽²Æ²Ûéu·«"ºªšø×ws˜‡]ñôƒg‘샻 üÛGùþZêã:Jê"îVÕT~ür\IØÃj¤³OW)ßß.vx}±ÂùÕ‘Êàžú¦ìYMñÅužOÛ*©¾J#_¼ˆa^w!Ýy»ØùõÑJ¯§íÕÁ=UU•«Rd×2Ÿ{²ˆW?E/~´¾ßë°åJï–‡>šm*¬š¸1ç”
×zWX¿üÍ›ýýn^úìÊæk‰¥Èî•î¹’Xšz3§Ä«»¥ÄùÅîêý‡dúá›ê‡ÏNÈŽ»Ð]/bÝž¨I¾—WwðR|é¹ëÑ%G.%”ï¿œ€¾›Pzòr\鶫ÉN/‘}w¥ìkÖ쪓WcK/\‹.jG:ëÆÝð‚Ý!yŸÐç -Òuɲ+åÿú·áq¯µÕo½A./÷–o[y¥;´ðÄ£ÈÒ#"Ëò»SØßn岿ÝÍ{hÿñR©Íûo<Ý»|Ktþˆu®¾Ú«íµ¾µá$¦+Í%F_}'16[)14^!Ñ7úV²Øx¹DßØB²LÓoMÔ‰QkÚþ{þÚ½k‰ŸŸÅÅÞ,*Ùv.½|ÏÉeųʫÎg–7_L.-¼S‘†°ƒOW[óöM¦í«;Å®OT!\TSx3³¶érjÕ¶ë‰å;n¨¸R8Ϧë<l?/Úv'¾üÒo§ºÂŠö? +Üÿ,¬˜þ÷£ŒÍ;?Ë,ÂJG®ÚÈJNÑ“ÌÔ/™./™"#ù}ôÐï~!YúÅlÉÊ•¬d¥µN™¨ýÕ7¤dΨ)’É’IèªI’aÚã%#µ¾LÔÑ“L8G¢7f‰dæ#ÉüùË$2K_ÉÊŒ;ãÖŸéýzsG/#ù_AÄå^GæòO¾v/®–¶_N®¼x9¦øòµ˜â7#‹N^)©¿XQq3µ*ýnN]âÝ‚ÚúË©•ûðœ&–V_M«,¾ž^±õíÉRÅ‹ßCÉwo¢ºŠ*;»C>ÉGk¨Fñïw‰æz-Öïü}Éú˜Ý£ÍÃ[FnŽ=8~cîU=ó?ëo8ò?2óc½_™W>˜³ÜÚM2Ko©dæÄ/%zãg¡w'&"*$Œ>#п&HÆJô´ÇIfÑ“,5±’|gW¤½<ôôÐ5§®íî]gùs¯·õï½á¶ïÏ°o_e3]“ØîשÜëg9nÏ÷V¦uäV×\N-k¾\ºëRR)Ò‹eSÊ¿¿[úãõèâí×Ë>.=})®ôÇ‹qůÇ7ÝJ,/»“ZÝÓœÛûÊ·ðç§áõ¿¿Èñ|ÑX¼åŸ½«/õÊV%ÿ8æ[.¼ŸÁW«$sçèI-ž'Yc淋!eÇxó¤Ö±kÜ"´gOדŒ”—”èJtðÿºè½´Ñÿý$Zêë –¡è£«ú£i㶡èÿiÃæKô
YÉ×D¶Öêý½™wW’JÏæ”VÎ.+½YZq!³¬âjZYÕÅôòmSʶ_H.;x>±ìÌ…øÒ£âK¾ÿ!¡ä -+ºã*Ö¿êÝò»dÞ¤yHG£ç‡g€žJ¿ÌÍô'í'ÑüÿóZømàJa’ýF¡ŸÃ%ýµ†£“LµH²Dæ(YÚ1Þú²{c‘ŽrâÞõäx<ÞUÕ~>¹ìâ…¸âÖËIeíWËŽ)>{%¦(ùN^•ý›…)·ò«A6_Š-9p5®´êZJ™ÇÓ¶2æ÷Ç9ô?»²b»ò«;žå÷Ä•Xü³×kuùS¤ßn’è
‡Þa ~þþè á÷aèÆ"‰~ƒßûýåmþü_?üv}ß»úæn0êoZ‹¿ó”,Ïz2nÍžÞ[>ôºÒ/Þ¤*ŸÝÍsx|ºÄíñÎòÐΪª°ÿÇÞ{†E•mûÞ“¨D%"¢(Q9CUµb2ˆDI’3JT$É&0Û†V»ÍYQÌÙn[ÛÔy‡î}κsLº÷ésïyÏÝçyîûÍåS«¨µæ˜#Ì5Çÿ÷ ©åÜ9œËb›„1l½¼± Æñè¹â¦³—òȸ/=q1¿ññõÜæW·²ëß]¯Ä¯é÷JàÄï„Xé/B†÷
ÁÃ1 áú}À9ªÿ~Eà߯™Ùˆ©hòä -²4wC¶ËbÐâ^uG‚õÃ79!o>¯¸ZP_s½¢)öùÎF¨‡÷4A^u%νËñÇ
÷›£_4À÷nä×ßÆ9û£ûé[‡sÝôÚŽaïŽ6àüBáœV;ÂÊbìÿçµ×Ä?Ÿë߃óÕøýgÃçM®Œ.¾Bºøß(2{‡=ê°Òøý\uÈü3½ -‡jq|oh¾SÔþúÀŸAÁwÖôÿãóö†ä=küiLÕ~ÿ™.þ©þg¤6Ñ°B£ÔÌð8™`Ÿd‰cüDd¢5Òœ‚5l‘Îl4ÖÌÍ\•WŸ×r¾(ÌåÞ^ÌÅyKŽóo×6+¾¬ -úp¦&öéöìcOa_ÙÃøÈÉw`ßzézvó§iõûpÍ™þ¬¾Éÿ!£÷ëiË|”h¬†áÿelÐÿá+áë?âÌSì•àœÌGNEc
¢q¦ŽÈÂd 2ã€ÌŒ!SƒyÈtÄ\d¬7Ãçºó‘™>þ=3g4eA8rÚá6 ØŠ^ Ñ‘OTÇÝÝQ¹ÙáÓ%Ûpì{q¹¨ïÙÅ’í_]+èy{xÇ·· -¶¿¿“ß÷ö~n÷³;ÙÛs; îr¹-,¥ñÿÆ?þááü Oñ2ײFFšæø«Qx!òãø©n‰}ÉD4FÓ™Œ˜Ltì©þ4v¼šd‹s?<´€ëR[Ä÷¨/«zcäÿ£Æ¿9ŸÛz¶¢ñ³/ÊÚ®](h½u)¿õöå‚m·oæ¶^»”×zùr~ëákù±?={-· ¾ßt£¤Áõ¥à<s®óÿø\þð›à#t‰gñûç#‰ÑùýóÑx͵&£qxœ,MìÑx3{d1~%²œêŽ¬lÄÈÂFŠ,¦ˆ‘¹¥;3ÉŸÎ";ßZ´,ç¹Óa®âëÓ¹u§kIÞrySã‰Kù
87kj¹^Ü€óÌf¨=^ÄùÎÅnÜÈi|p9¯ñòÕÜF|Ž
~?¡Kc6«Û,tıuô¿|^à'GÏ I>öÃsP—d#£Ðõ±ÈB×YÍE–cW¢©vJ4}I<šl‰1Èr¦YN¦ÑØi;Q„Ƙ»£qã¼ÈÏæJšÑòÜî_žï„ˆ°'‡Ëo÷Toû¢²ñæ—ÅmÎm»~±pŽñç¯æ4|}3·åÃPvËûû™dwÜ¿™»
rRŸ_¥Í¢ÀÿјÁûEr´Q¿gÃ1æÞðÏðO™¶²Ô›Š,ôg"sã9Ø7Ï@fFvxþ-EÆË‘¹Érdj²’œÛxÛ`4ÞF&ÏC3|Ê‘}øa¥›_9l]®‹¾¢¢ö—Cúå™âÖ{Záqº7˜Ýør0·æÜWrz_ÞÍí~ù(«ëÊ`.®%Ê·º>VLåý?¶ÍásEdü ž«[ c
\!áye‚眩ÆDü½‰Èá(ü0aƒÆèÏÆç¶ -¼ô£–z¯¥r8¯Ý8wλ³µEĈ‘·¿=
åÞ§<}ôG™¨øÀ¸U|ªšÍôÿ]ª“1¿>ÆçÃcÙDwdn+FÓ]Ö¢9T)šM•¡¹òZ´0f†CÍ}Ãåý‚Õª3x|î‹\îKÁÿ-«zh´8z—Æ\y%²W5ª-Û£µ"Ðpeùsç–ŸÆ»àüÄË÷/B°ä×)ÜW‹|ß¼WÕM+¿Æ§¶â-Wméÿ‰ù›o’å_þ¼š>ð[€¬ïÎÜÀ¿ÊÿÂú!„?úV©:q/Zqñyìw -¸*:)ª4L5þû¸ë!0ÓŒGN¹þ4ÁZ‚&Í -F6±hšG²“” Ù^ëÑœÑh–=¦ÏvG¶¶höb-¦ªÔ–$Ÿ±tÃU]—Þ›ìqWpõy(ú¿B¨ÉüjßVù×ʤ?ÿœ.ûá×Lßççµë¯³}º^ÏöÝ+Øû -bÑM‘ !²Ç¸'²¹¯ï„¿ý¢9ìõÙ&ùw_U1>¤KnJÙ_×pß¼(.º»¥chpÖ⡚f×Γ&[/þìRª6œ{ày†ÏÓDo -²´\Œ¦.D<ãUŒ–ÒÙhYl‡æÒºkF«.3=~$báã:ù÷§ò©¿eþûOëd¿—!ùíizÀß…5¿"ωï/‚Òï'!œýþu±ÿk!Ø«úâx߸zÏÈm¿K‚ô–0ðÛqÞž±ÒãB óê}~Ì˽mQ¯¶&?éíŠùê`G€Ø±á1ZìÖÓóhöÔ[…¸÷ûEë;ô¦ÌXFê´ÿê0Äã6ÁÜM³“â<w#rˆ;§µ¤â+CÇnÁÛÞ¯Úï¯B¸ß¯B„Ï/‚Âå©àè|KXèþFp÷ÿ»°:ãA}ÃÀ¼ú֡†ü{5õòga
ÅÛžÇYÁÁó¸`ïuKð=B$¯…µ²¿e)~¾WÃýøõFÿã‚S@PŒºóÂ%ÈÇÃA%ìc¤zŸ81uçæË3·WÄo5âóŽÙ0»ÿîËûDïúÁ“)Ú?Iš¹ËÜ7²zÄìbdi0åÿXúÛÔÀyαFÙ¢)‹xdÔ©¾¼æ¥ ø?·È| ÿ"ĉÿ"$|/Dø>ƾà@Ü(¿‚¿ø‘&û d~#ÄŠn \ÀiÁKÜðÒN\|ÈJÔóÆ^:ô÷æÝ·ùÒï„tÉK!Æoà·Åâò£Ö’mÑý?x1Ÿä¤-7çSµ§gSg3‡ïÊ]S(o]Í -yt±Š?ùM×ùÑr`«/Ïe=eCžžR¾¹U-ØùËèÿò¼t±_¥1i…Œ
'á:zš4ÓÍõÏ@±û56ÞÖ_¾ÿß&¸Þ–áù$ò:+¬ð*9mî×£ë—ÄÜïœàÁ>½óõÞvÕÇ‹›ÙOŠdïÞn¸$ˆD梄՚¢uëµEy%†~MÇlü® ->üë'%Ü“çÙâ²C¼%rš®)Þó•Ôž_½e‰5†²ÐL-¶îáþð7rŹ§qÜ™—aÜÕg±Šƒ©»?¬”íùÙÚõÊ•Þñ;òëPú¡¾§'·u»õ&M_Iêì?Æ8fÌž+CK¹ -5çœ3£ÜîN¾ß ªÀ„$¿÷Bö× -1Ž»ô?Ò?,òþÁ{C¿Ñ'O´xé|˜¬xä—üɵ¼µÏwõ¤?mí -{¬‰þîChHà}v~7Ç·ü¼•ÿç‚“èœÐój¸îÔ4ñç¿zÑ_|ÅRŸ½”ü›7•Úb"
JÒð
”!J«At’@?¿ÛŠi¼ŒÝós€êü“TÕ¥û©ÒîËd õÓÛŒý’õ—û'¡Iö$FkõtµßíRÖÀqmìB4ÝA†–¨ªÔœšÞŒs>-Ìv}$¬ôù« ’ýúuýÛË"îo*B>œ©‡{ÜûçÅ̃w©ô•Ÿ#¨sS°W?Æ+<)R>ËãŽ}PP:Í|}‘·ãRÄJYûß%íƒöâ“ÿî)n¿6W’Va}в–¨Ýï=˜Ã爐–{‹d¹mc¹’® ŠŠÞi\ëàò ]Õå›ÁƒWKT§ÄóG¿Rð/$Ô®oܨ֛‹¤•û&û&7êÃý6SM²vðçÆÒlô4a¦+ší›ˆ–'îáö™0Ëû[ÁõåjX£óù p~¯^|_ö?ðG¿ˆ-o¿`äå*E’`ÄQÁê¡1™úaÝÓøæ›+¸ªãv~ä0irœb‰–ÃcÆ8äá
Ööòs×0§^qÒæ‹óéäÊQdÿùÀ;?²':&G‡ K×-Y¾ë•;ßýÚƒÝzfÓóÚU±ï)ÇÞ}½^~õiµóonÔÖsvÒÃ?ùЗ>F0Þ¦ˆ¾Â=†çU›n/êÓX²z·æòÕ»µœcFx¤å^pÒÄk÷OvÌÇ…°'ïÞÖmÔÛŸ²ü«Ä-¯ç‰û~\":"¸öÿº20µÍhùr'4×zZ`i‰d^ž(4~n䆜1áÙeã O,ððîÌ•—ÑŠ¡¡léç‘HÿÅGºï¯î²ª#ÓdÙ•ÆTíÎiôÁ'"²Góô·as—VžFoè+ËÑ–†¥hÉ¢“´HßËî×¢à“·×]x˜JþÀJšnÌ“T˜*êý¸8 ãÝ<Ÿücf.Š<õyN*4
Çæq³V¡ÉÎ!È>t«šóæûæ‡;ÏóÂJÏøqûýžo§yí7ñLnÔ
(Øa¸¥R`U•¸þÀQï{Qÿ·ŽÒš33¨Ìž±tJ‹ —Ñ9–ÉÙcÅdîÏÄWx¹z#÷å+‘ÄÇ+‰)”!ê2Uˆ:SØf)m¹4_ÚzqtÛE{ºåó…²mçQ;ߺ²G^rô—_ñd_å¦öIlA—ÝÿÁSyêÞš Á¡‚°Ûç«‚n^ÏS^¸·^ºç£;ôUPYõ¦¢”z>E»Æxl:c±2¬Tcö2 -1°F&#q=€ëPÛy"äœwi´ûSÁÍç[¥ü®~ÿ×<Éy
Ü+8‹sÛLWãk™Rb Ûzj&]Üm…ý€&_¢š‚þNîÈc‘ -XåŽx6†ô -í¸ÂÝ6Áéucy‘yáŸb¿Áµ§ZQ5Çl™ŠCÓÙ‡§Ëûžù„íº«äš¹¬Íc ƒ©Ú?î}å´ß_Nמš#Ûù«rà+Fñí½*ÕÓ[•ûþÍYVØm)m\HúÈ=½^üáJ÷Ëã -é¯B†ä¯B -ŽgñÞ¯Êû¨°Ä;m`´“(y*V«ù·?žÍ>y³¿õ*•9ù3'Kn6r[åÄ’Dz4Ê¿°¥*OÚúH•hÉÔYhåÌ…(ÀÅ+Â4ÂSr#“sMB×æVeÖŒ¥;//ƒ}¾ü‰GÁÔ±¯$ÔÀž’ݯWÊÊz¨Êfÿ+ì«•íýÙCÒòr¡¬í;zï¿ùIš‡æÓ:Í©ø,&³~Œ´çñ2fï?jàƒ‡¤sh‘dëù¢Þ7‹ÅÇñaÁ-`à×¥~{ÿm±ßÁÞã¢àèù^ðù‹ ðü(øû<üü® ¾gßÀë':#øúm>eퟧ–¨š áã퉖Μˆ\( -õÙôæ1²î˨®ç+˜ÒÖL^›“ßd!þPyævlèÍÓ¥ôéo²²ƒ“¥™[Œé’#S'Ÿ‡+ïÜ.„}ªk×2™ƒï¥ÒîgK™Ò½“™õuƲª/mÅ— õñÇÈ‹¼O Ë=²O¹'îÖõL=:Ê#y·¾÷a‘ä;!
öòIîaù»Ì¼|ƒ»“?>'wäºtrYºÉ3uØ=/øÇbºï©“lmž®XªBГ.¡y¤JÈ6€^4vÇCï }פ·¨Ç40dÛŸ®‚9GUí™J'o2¤2635GgBÿ‰²çq -P¦iHRG»ûÊÑ -Wäë¥DžNÞÈi¶=ò\á6Ì¢áÔ=<órä퀤"ÉUa!I™†Á…=SBŠûg@o²pëxèqäú_ú…º³Z~øk…´ÿWYN³]¼c‚¬ï;'YÃõùTj³‰4¡J_¶ã7'å…gÉì¡·éuÙ°Íú™©M{'S…ÛÆÑÝãeå‡lÄÝíŇ~u
ÜóÓªÀ¶Áy¢íôÿ´4à(Îe¯ -¢À¡(¯þƒõ;ò÷e¢’¢¼&ñöŸ—ÒÇÞÓ/Š³ZLd¶‘¥Ö‰ù5§ÅK‘ÃT[´bÞbä‡ç;zÙ@KO™ZnZìTÝé¹ôÀkoùg÷åü‘<wèÃï"ev¿ó¦êŽÛ1ùí–\FÝ.§Û’ÉjÇþ¶Ý‚ÚØ7æ¡dÏ{Wêâ«`ùåû Ôñ$’=?»Jw}·JÚÿ£sü[†»úb-áE¬tÏ/.²ä -Cf}‰!•¿}¼¤ã‘sú[•òÙݲèoŽoã¾yX >#ˆ¾ÜšÞÍöÏ=fî|˜µêi£ -žÒêSÓkÕ%a™Z²à4M1½FÝÙÑÏ¿¹hÎG蔊Ѳ]ß8ü à‚Ô@3t‹ÙÐDMUJ•©¢æ‹…|ïÝ3è$ë½»’ÝþÜ4 Tî*¥o\é²ÝÖLnóX¶¸o"ôzA<·i»
èó„]>ÿ¸¿}í“¡×/Êw¾`«¾œÍl:=ƒÚñÁ™9ñŠ—ö¼X.Û÷ƒ'uè?]}h:]kJ嵎•dwŽ—œ(Úzmº(}§‰·*M݃ŠWóUdjˆèu?q¸š,¥ÉX²®ÖÐyU -ÛªüØËPÅ¡çJzÇ÷îp©ºs™Â^+:c‹ »q` -hRÇߊŽýÅ=ðÐOî‡qøq¥´òÀdIñ>+iVûYB©Œ‹/ðÇÄr½ùØÖÍèòcÓ¨õ•†`÷TéÁÉÐW*]½AÛça>"%’ÉS5˜üÞñtÛ#G¶ý™èfƒžÑ:ô”–í}ï½]LûÐ2jÇgj×3W觱Oaò;dzi[Lè´#zCƒ©¬ÇùÝœ¤÷–îyï$;ò^L{b¾|¤Ï¾
æ.|E{/•øÕƒ>õ^.ÙûW*®DÏŸQ¯Õ€þ-z÷ÞÊS×ݾR º1˜Ãœy«ýwéçB€¨úÊOišm>Í2˜ˆ?ŽG~,’DoЖ®Ù ¶V“ŠHÓ–ªÖk:¹¸£•Ø®\ìHxlTr¥!“˜§' ‰T‡XÁ'¤ê*RÊŒ 3*:C‡KÐäãRu@+ï,V|¬`}H•¶§Ó«¥}™¯=A×I«2â³·˜3}]•'¯E†]=U}÷³ºàÓƒÉÌŽ÷žÐƒÆ˜Ì4Üw`ªÌ`Ëz¬égç15gà<a†¤ÿG'IÓõ¹™Æ’‚ãÄUgl¤ÉF®î¸^°_†–/vEÎŽ^È_®}–’ØRûivÈF×M10A³GG+pþùUP~×$ù–Ãs¡'O¹é¸×zgEPéÀ>8AS"ã«ŠÑ$Z„ÀÂH.-/¬³ä/dº¯¬”u-ù´Œ¿´íŽ½ôÐÞÜÁoiéŽç+€£À$UŒî½õÔjÛÃeTçÃeìö·^d®×´e6nŸD5.b÷¿d>{!ƒ±eν -a/¾ˆ O¼fpLt¤Šv[Ic‹tDtŒº§ƒ<œDH:÷Ñù#é¤-£éì¾q EGæŽ1ÑØwÄ«Óëꌰ-L`Šð£æâè[aú?ø²å‡¦S±¹:TR±>“߃ãùAœ6™1
Ã>²æè,ªóÖ2¦û™³÷•/»ïk½û;ÑÛ>ð:€ùìú4dÝO—ËêOÛIÞ;AÔ²°ç›ùò½Jºýã -Iý;IïOËàýÓé%£d Ù:Låáé²]œ©]@7“ª:8*ÿlª¬áÚ<IïGñÞ_VIS[=BÐÂéóédä0e.Z6orssCÞ~ÈÍÇ6œûrÈ'€A^"äå#Fâ°
Yz1h‚mÐZ?–S§$Ø÷Pê„×|~1×óÔî}æšÝTb¾S¹{ -»çi€rÿl—-ßeÃ嵎M,~ï™üØC%ô¹‚ÙÿˆÚõ;µûGOè £Ûî-…kÈÔZЕ;l¤Û®Ù3Þò§^†K÷ÿÍSR}ÖVV=8[ÜóÖ!°ç£´tïDqx¶–˜_«î#W‡¦iR‰[%k²´—Îw@s'LC˹ ÏU~ØoJ0"A^±q²óš‡¼åÖJà®èJd*(báaæÕY@¯?è¾ðÛ§A)Ž˜œs¦¨ÃJÖùt½ï£/5ð]û…»¡ÍœÁЋgS«ŒIO^Në8’ßÔ_žOt+Î OÏ£ëNÍaJ&Ñå¦Hw¼ZIú6€9ôFLmÿÑ•ÚxØô2$ª$
³Z]œ¡IÅ”ë·Çþ9±H4õ¤ÁZ ³úôê‚‘lN—%[~Ô–j~°ì4q^1IªE¯-7¤ãòt©Ø¬‘ Éï·‘m{¼”ô ×~n'뺹z+qüR»Î}¬TJàÏ?\Mú6PÖrc!‹c¿lóç3 7úטó_…I~r–ætšK“ëFË -ûÆKwýì$íïù¶Méî]@L•¤k"E¸:Ñii\(é~à@çöŽN×tYî‹–Ï^ŠÜ–ya»” -°6è̦lf“9ÄI6¯Å‚hêlÀõ`ÎÅ‹vLds[,ˆ–dFý:!S‡N(Ò#z;ŸÛ’)[Œ¨¨¬ 5Ï>|Ш’®ÎÔ†>iÐÛã*ŽÍ૾˜C'éRájÒ öLÅêq¹–0_¤ß¹J÷¿÷¤v¾q¡v}p—u?[Ám<0
´ÝA§€é{é -k =D·kXSý¯<¹]/üÙCÏeì‰Jæóçœtç{gfóç³@w↬åòBêà;jÿ÷Þ²Æ먜XW“¥7™ÐUØgö<[9Õ~o)ôƒž?hGJx®…ÆiP¶˜ÀÚ€¬÷å -ºáêB*ªh¤'ë äçË#.¹b4·±o2hSrE}ñµ4ãÒêMáKc³GJƒÖkJÂâ5€ÙA·9«4äUý3¹Ú/€¶è}ëüÞ‰ =J´´q¬¶]Z(í}²ÏGG¦éÄ|¶õâºcp¿ýž²ÿ”ë»åÉl¿ãÎìþÖ‹>ðM -¿t4h¢Ó{ÞùHw¾um3ªå¡Œ/hѳ€‰ÅuåÚ2C&¿Ë’)Äq×,öLVƒ—±Ù”Éj4£òq}”²ÙˆIÙb̬¯5âãõéµ%4ŽÁÀÅná€*âÕÙô¦ÐßJõ½w¦ú^:ŽWØ5°ŠjpÓzÍøbÀÇ./°™@cˆM).̾¯üøãOŠÃ”ܾR¨@3ÖNˆ†På^[¶¬Ë´žè†s@{Ø 4®“èÞÔÀGOiÏóe0g@ÃŒþLRž>WØnyµã[²ß¸»¸–š@lùÎÉ`£ ¡AÅçèH”àÔAó]¶&U[“;’.˜€ç¶·ñðô -<ÖÜ‘§ŒâÒ£DåË›C^^¨…^9Ð*Q¸ÇB_>ðd
_Ì‘áD¶í†ƒ´÷Û²ª/§KÖ”Œtu£å³– o\€¦‰›k‹õý€G¬LP‡&kúŠÂ°ßClXº6hO…·ž÷ j»àF´ÓbŠô@+ -¸% ¡Ï¦×šÒkRF@ÜV~v[zäF·õÄ<Ð¥M%ªõÜBæÐ søG©xÇŽLÉ!аgªpNY÷Å<6¥Ö$P¡¹[ºÏâ,ÔÕÒÐxMÐö§Öm4 -ÚÿtX²–”ŽR§C×iñé5¦LåþéàA·‰n¼¾H¹ï¯ÜóŒá«?›M´‹Û'Ò{^ùò'^ѧþÂ<èG¦’¸|²ÌÖ±Ôêd-?±wúê'‰ÊÔöô– ð‹„S†ó -Ö9ëÍå{‡<;ï‹å]÷<؆SÀ.yü€{æÏ™–KØ®›ÎPÊw½ zŸ¬â²Ûðuª3¦Œ¬ãñRj÷ 9!í|¶”ÞØ?‰Ïm·„÷æíæ狘˜=jM¾N <^ŠLצbáZ¤jy‹8\ó¸"‡i‹ÐR»ÅÈÝt9CÕÄ!±têVcfÓ¾)LJµèă–*᧖+²kÝg<sQ€îá³>ö¯°bhqÝw]A‹™ø¦¤l}Yç-G¢ÿsúmsâ{9ÕþÒ˜cLb¥!žê¾¸öò¤Ø Ý÷ÜUVvøIOOòò!à]‘1H1îá8“Y¢zÇ”IùPuÐò&Ñ Yú\bš²^‹hÊcȵ_Z®ì8çÂoù|.Ø5™¬ú`lóÕ¥lçõU ûÅåÔ˜‘\«åÒºûÆrà0(ó·Z*Š»&@Yyh6hÒm—–*vߓл¾ñdÖ•ÊBc5 ç¼tÛdùæþYÀdw½õaúßú’Xß÷Ô™h1•î™ÂF—ê²1¹ºž< +ÍUŸ´£Û/ç·:€VpÔ`Ì`-
´‰Ø_{æ)ö7lvÇ86·Û’äë5_Îá¶=wâ»_z*»Ÿú)»ú1]·WQž^mÊõL-CÐуý oÌä÷Y‘œ£âØL¶ñúb¾ók7¾÷¥²÷ž(¸ïŽD¾ý®/è'â¹<G^Ø6A™W;N¾õè¶ûºß1èŠmÓäd8·aJwL±nÑÓ‹/7&&Ýùx»ë½/×ÿÖÖ-`ô ™Òž‰$î'a?½qÏTXŸar&Èâ7êÑ)uÆTb•µ:C[ƨ9¯pCË—BpO(€ŠR–;h1]Oœ@Ç—\#\׊%,¢#â´€Q¡ØzÆ0ÐÖW6-žçp-}C~lÓ•%|^Ó8Б璋
ÉzgÑ6œwåÊ2tñçˆ^ßÁw"æÈ[Z²çW&s‹)h2Šäkplæ2ë«FƒN:»ñÐtð
ÀN]z.2^+(§q¼*¯ÓZ•×d5 -~<HÍ×Ïɸ`5Ðc„¸ z[ Å
zÃtÄZ-¢?¹±ª¼ùü2®õúrಂæ(aÀƒö+ιònÐÒ”vœ[Ä|B)vÝó ÅŠÑ L<.Áý7YyßìW™¾‡nÜÞbvó±YtJ‘hø³ÉE†À:†lB®äæ°öÀm·Ígˆ' 3ÆLb7ôŽ“EnÐÆŽ£A—îùÖ™mº¿Û5Ô~|f§%Ñ®ë{è*ëºã5/0³`]Œ¬Ã•ìš6¯ìxàZolÏ3¶ýöJ`ð«³F×X3L×U²¾+@'ÖDˆÿ…ë\¶Ç†éx¶RÙõÈ›éùÚ
?ßtTªÍ¹°uZ0ïaÍI±åè|¦gÈY±ë®8h×=FÞyÇn»±˜ÜÖÃv uÇïµ!Ü«²ÏfÈû¾ñåû¿3Û¿w§z^®äJN%ëÇeý6Dßnà…Huôv„â³'Aô–sÈ}Œ¤ÚÑTâF}¨uq
Üu·Z
t¹õ
&<~}¢# Ìlw6JÝÏKJôŽú…ʪ£óT%;¦që+䉣åYlÇýUŠî»^ìÖ+öŠÌ-æDâ+è]¯+0Æ÷;;‹jÆyÙ—bÅñ‡áDS ËêväQ´bö‡q\"hŠ¶™Ãù*s:'(Ó¶šƒª*§Ù -ô`!Ö掷 ‹OXx¥F|ÝŶûAíw}äƒN„彶ÔP•Ù8NYqt0¾‚’±‘¦C8Øø})Ó‡µ¸Ù-ý3¸ýÄòsCѪ3×@‹ÛÛÙøÑÃZܽƒÊ·å;îûS=W—-n¨)»Ÿ®Â5ôЄzD±.ß -ŹΠ{×4Ž7 M¯,î±ô™M‡§ÑqúÒ°T-¨{€_"/˜$Ïß3‰0.ËöL‡\4‹H±ùðL¸†`[R.^¸|`ÿŠm÷ÜUO¼åÇfCþ+ã"Ôé5â0¯€Õ€ã2³õ(©{øäÍÆ q‰¯·6p
øzm{â«(?9tÔáÄ1ŠVgCÖj)’‹F
ΦS‹”÷½ƒº‡@stžwDõaÖxÝžp²;-A;˜îx±‚Þze>SzdSs×T‡lÙŠÃ3¨”'#ÃNŸNQž\-ÙûÑ•®==‡Ù|i.»¡ƒøX`ÎÁ}:¶ Ó -Öõ€ -úÜÀ€H-
ną̀ºøc…°K
·°hç” ”ª1Áñ¹†ÀT‘oêò‡·¼|ç4ªÿ…§êĵ¨àëçr¸#/°71æ4µŒ.Ñâ®Ø?ð°ÁlæÉ<íx$åz¾vgqŒ&ì,³ g(«u°³dÊpÂÎRü‰%øÎêC¸¿àG‘\i˜UBX„m“œk -†'º´}@ÿlïv–¢ý‘ßõÌØ1žã6N]†mXóð°6ÔŒ|Z^Ø=Þ•«ÃEd -‰EÀ3Iœ.¸ï¼0ˆCŠ¸4ÝßÙYcEôJÿ`gEdTewMמ¶WLSàxFtø×ènWfÛ8ÂP̬0Ž¥2¿Á -´ô•YØâq•Géû®=³žãá¨áçç??»Ç -4«Á¾Ùl«ieFÊM}Ó‚:}B¶Ý
uSïÝêÎÓèÎïy*ù?uç¹€î¼êì½x!‡˜MEö¶ñòü¾‰²¨4mX“Ù0‚[_c1¸YT¨šˆV“Gh
¿õÖÈsùÌîqÿ€íG‡oЖ2Áj‰a;Ñ$ÖuÅ£‹=µÄH‘×b¥LæµÁœßtx&ÓûÄ
¸D°¾(Åy°e€s.ò•!?w/ÂÎ’r -5óOvÖ$X#‚˜( -P¡ -ZÜ\J1ƒ_øf\Ç]gÈIa
P§«ˆÍÕƒ}#„UÜ; Ö[û7·×ŠY¿i– IXN8f’ù;«ë®ß{ÏÖRþ`gA¼•¯ßböÌgV™¯ØYÀK†Úì?ØY…Ãì,®÷ƒc5!¾¨RjÆðá)Ú0wAÃ_±®Úr ð¹Ê– „g¶¡ÁB•½ÅûÀ±;ø°Œ„½…Ÿ”ºÙžzë~>ÔñŠ’®É ¹M˜}k4œ_ªì<ïT¶g¦<«ÚtŸ÷LX°Lcv¼óàw}+Y`Ç<ÇNX`Z¿°—oÚ1m˜»ž¤ ¬DàÀz Üóò§x$â#Ôý¥r$æ"Õ v„õì -GŦëG -0¡FÖÎkÖ>´’k¿¾ø®ò´z3U^50*øî[îçÃ}È©@››ð 7uLfº‡œ!¶FBÎ;ò·çÒð9—£÷6η]T9
ã•1yzÁéõAY¸®¯Øe«Üu[¦Ús_.ßù\LƒvrÛÂÎ"üö=Ó¨¶‹„ŶÞt$쬜V`giøÂ\T$¨sy;¬@«›°©7í&ì,%ð“U8ÌÎRþ™•ð;+eA±¸¶Tà¼r^`Ççm³}oào@N,0ejžŸõ–ÀV ÏÇu…Ÿ¼Fƒ¢ÃÕ€K9áþÀó«ŽÎ"`jà¼dXçxç¾–ò¸<=Â'‹^?˜ßò¬ºñâBv൯¬ëÉ2àRÁQ°¿œÆ¨ÕH·~$¦áç-G×äÙ#àwÄ’ªBÕù
Õ¦°Žñê7x]Xà -ÄA¶íÚr¾kÈ鸶’n=·ðd-öçZ¦Ë΋«ûbhÉþGEù‘ÙÀ%Uì¸À7|±((µÄ„
‹ÕTÉÔÅõÚx®åúrÈÁ8\Ëó%‡ÙYagÝ_Éoå+ï{¡> ,ŒÄ|}:2g„$*M‹Š.ù;Ö—€9@øJ»§*ª÷Û) -¶X’ø^ÐfÍmÙ;K^÷¥½²üÐl`WÊsôa¯ÌqX7QæwZ³Çó9¾´'ܘÒvkø]ˆràqU§Ütp¦"w‹øb9<?4Zø[À¹çZO9°œ`}Üs–`~-ö½
cɵ¦„á[@X÷ª‚k¾¼Çî_0P»xDÁ5eK{¬Ù˜L)¡. -W‡ØIò_ÐôϨ6õõ`Q $T
Û Œ+3„úV™¹e,0OÀ's›ÎRô>ð':Èp¯buöHðù\R™!ÄBJ™ !–†ª‰aÏŽ=KASætL 1Ç5ÂÙ…5O\·Áþ4X/æ—ì²a¶œ -îéØ0 Ùºp_Š©ûr>Ýr}1°³”ÙöNÀÎb7ï›=\ÉîÉ\nÏxвfÈšó鄬XϪÄöYÖ‹Ï Ÿ/°³Š†ÙY|ãç‹ØÖóK FõVó•¹V$×Ä~˜-3ͧìùZ|ÞeÝ“ø’žI„5_²kª¢þä"®ùܵ…{.É¥Fª\\ -õ»,2C[†s|6ÍXiò²ßYœ¸îÃóx"÷;«¸s°8˜S-§ c]Q´Ãføu{&€=Z8ÔU»§sµ‡íØÖ³ØÆ–rõgHÎBÖ¬ªúgÀk6\)¶{ü÷ ¾
¸SxŽ²Õ¸–ï¹»J¾ÿ.MïÿÚ—êt„=vpÏ]Qy|Ù7™ž7ŠßOrüêšÈc'Ã\‰Tí -dún»àzÈÞ3ø"EN‡K|øÚoì -{ݸ¨Ü‘òÒýÓHÍÜzÖQžQg&UQgpNMÖ}ÖÀÝb±ý€ËØhu™,ç†R$•¨™1òc8/¦ùò"X—Àõä)¥T#,Oü·ä{m€oû—“¨êäºéÆ"`Ž -Û&ÀÚ5ß{ßûï9\R¾©Ã†&iÉS·Ž}=ìÞ—ÊäòDlëÐ2Âì5Â>:í¸±‚k¿±R±q÷tÂ4æ-ÎùHÎZu`ì/ Ïo¶Ûxj!½ã©+ÕzeÜß…ûͤ×1¶XĤÊ}3ÁÏC.%O/6"yJvã8eQ‡5¹'„ý;ÝzvÕxb.\à¬C=/•Ç©¿‚0Up\!>¯´ö°L'Ü 8oœ?’ç=[½Ï–Åù9®[B>!á°Ây(•5Þ7ì=cw>ó
ëÖÛn/gÎ-„¹ -Éø²]S¨°t-™rÔÀ‚œ˜plægÌyœò°ßª|÷TEAƒ%¹WÖpl>Ûy}%×pÎîÓ3aÙÚ"nµÇ²âíÖTÛx}r¿&ÛC^‡%Ì1®¤ÏšÞ²Ï–ê¼æHµ^ZL5_°‡^T66Kø˜l\ºŽ|ãö©„{H -vOæ×àW §Ho2V¡XÚ8媶cºØ$®¹ôáÞøàMÉ3ôØue†òÔ*¾°û¨Žñd×L¤ÞÀσk|i‘¯J)y4Ô&PïÂu‡< î·rØf¹øbÛÀ˜Æ×L^Ø9öòðñYº -ˆçõ'A¾<-¨aÏ–¢¤ÏönÀ¼‚÷÷‹åiÍfP;ƒÿ†<’pÓ×W“=GÀ‚OÛlŠã˜)‰óÀ{Å>…˨7¦3á Ã~Åœ6ÂìV@îœ[X£ÝPnBXMÄ>Ÿp^aÍç¡0ǹ-LJý°O±#œ+`ÅÂ:;žcòT|í -±áúò"°A\-dê¿œã9!Óöåb¾¿>OÂ~(ð‡aÖÉÓʌȽRœŸM¾ý¡?ôÑ1i8߆½´¥øºm˜,:Â+ƒût™¦P'»æ6¹à6™EöWìû]›BØ/ó‹äøÚ‚¿RæuL q©êa‚ãsæ6uM&vZ¾Ó†Þ|r]u|›Vo -ù97Ø÷Ò~ÃæalE%j'\ÒÿÕJÙg_pý_ûs»žûÒ5û¦3Q©ÚÐù»©ÀéÁq`™ÀL(3$ï›Ìëcs…OǧãÓñéøt|:>ŸŽOǧãÓñéøt|:>ŸŽOǧãÓñéøt|:>ŸŽOǧãÓñéøt|:>ŸŽOǧãÓñéøt|:>ŸŽÿŸ©SÝãÃÝB’CX/ƒ©ÎÞ‹‚ð×’uÉISƒæ:'%»E‡%G'ć$¥[;·X?ÊÛÍÚÑÚÖ/$=")h^}ÐëeÖ¶ÎÞóçá'àŸÎ°žuÞœöÖs%!±Ö¶Ã/jl-JŠŽŠŽÇß”†…ÄFÿê2ü0 à-,·à’´~ÝjqH2~Jüð7]"ðsþÓ·m©øø¸ˆpkò]kümëE3æY;ã› -ŸD¬Çæ[Ï#ÿØtü…þd
þVªõüyÖþÖrå<ëpø}‰Ý’yóç[/™ç0ß:ÎÀÎa©Ã¼9‹—í÷篒~ÿüýÿýkòûñÿñçñ‡µÃ—Ö#:6ÂqøSr6¿_gÛøý°žsÝ"R¢Ã"\ý9_k6À@nmG®yóðÉŸÞâ%sÎsp°VZÏÇ_/^ -Z¿Áj }ï4Ž¤A)šŒ2Q“‰LÓV¬ÉÓSÆåêË×—ŽÊ©››(Ϭ5ƒýë2|¾ø=¨ËÓ¶˜*²·Y*ó»AA™Ze -zD+½Ü쇋MÕ¡£SµÚÆáëk)‹œæñŠ†³Kåµ'í•9Õð;¶.>MzˆÖIaé»Ö8h›6”±ÕBµ6Ë@™”¦§L«0
¢ñ°®À4(˜uZ gº2tP´¯Et&cruÙ¤}èÏTe7‡¾a>¹ÐP™C4‡ò-¡‡K‘VmÊÇfë2«×iƒÎéíÁ¶OGÅk²kµ@CBž†m#¥Ôzð•åûfÉ«ÏQ¦6šñq9zlB¶.Ø9ô‚¾ô–¾¿ôz3Ò7[¤¶©ÈëžHt´/.á[—C_$—3¬=Á¬-Ô—*ñX`{ ½ÌÉØž¡Ÿ·¤w2h3>\|–.é]É(6VæwLäÖ—æÖ¤Ž$½)ÐG‹Çô÷EÆjqY]–\\¡ž˜P÷pòÁ>ÒI<ß”)š>QCÆÇà±LÖ¤ðC¯Q÷àQ€/;ÌÄQÅk
šˆT<çÃÔÄ” -~+¼?ÐeÃsF@?Wªš~ð:b*\-‰R#ºÌø šK©3ᢠ-t¤Ê$
ø s=Íò˜|=Й ã³zÿ†{µA¿øIlLúHùšb=™"QCªÀ~4(AS¾¦@O‘¶eŒ2©ÒX—¥§ˆI×ÞVUFµ½ÚÐ7Ëem&½g Á½÷x|t kÑûI«4U$—C/#ÑæK©CÆ)«a,_}b.ôNBo7ô¶ÊÓñuMì{¡ÿDYºÇV¹ùøå¦=3Dbû4eôØçéˆýçp0öÉØgBï
ØésÅcÅÆdŒ„>v°ej‘ôÂ’~fèU)Ü>z…H¿ëúR#boØ/+S*MÉeFò¤<ðsðZDgÆ<³šô¢’¾ñM;¦*‹û§Â\S”lŸšYÃý‚»lH¿YqÏDEnûxÐîQì´!tÖæêóymã¡wôO—öN–C ô™äÔ[ðjÇ=aÐÍÑ%¢]Ün½o|v¹|}Á(˜ß ~´Äà½Ò*<–`Ðÿƒ}Ø'è]°QqZÐ;:`W>"äã'A %c±-zÑÈßO…d<~>öItX’–L©þ‡èD¥ -ñ{®ÅÂù%ëËSªL@¿tz@CCž\m:ÞnžˆRĪˡ'*_— -^« zDWÇ^¢+}!øEL†.h.È“ŠFoíRvM–ô8*ʺl ü؃í'é£Êm±èÏå¢2G=²Ô-¤gPU²sé½Æã¦Èl²Î:'*Jû¦àüÀ -4Šû¦**Íߤظ×|‘2u£1hk±‘‰Z¤ÏÈ-øèu# ×U±¡bŒ|]…Ÿ^;tEˆ®h#@<Ìj€>¶iЩ,Ķ}¶Ð§ˆçÑ’#ºmø½€=dÔ™FœÌ%ès•WžMzxëÎ.„þ.èGƒ¾)ÈgˆöNî6+xmÐ#‡Vv-ôæéËs±ÝAÿØâÆíS@ëYYº{ª2«Ó -ú÷ñß2‡¹=S|b‰!èÑ“zÐò]WbHbzzƒ9Ì&_û„
ºÐûG|*öµ A…$âñ[Mt†Áב÷
ãŸ}çp=@O]ʪԀÙÀF㸰&Gôj™ dM.4Ctš@cÆ~‘RD«Cþ½ ³ºN az -𠹎 -Ûob©>ÑÈn˦–A/5…s*"M‹‰/Ó-+nÓ¡éòÒöDG.,Y‹Ã¾”ôšâ9yh:‚ý®o6ƒ~x 誱êD« -bØ¢ŠHw#ö÷9gþÇ;pŸ{¾{ïÿ~çþ~üæÖbËœs¼ã}Ÿçc>ûì±áumhºÀó•€- ï -]'ÀóŠ8΢˜½0k0ÂkçÝ&ÇFÓf(÷.<£ïŠæÊÇøÙ}Ð ;í>4õ(”ÿh‹s£àÞÀ¹ÝÓ)ÒS¨^ ú*]=‹Kc†ž)Eçøtž[ˆ@nÄó
½¹ -£`¼ÎúN†{)‚œ‡õË/O„yÄ^úYc÷Ãó¦3 µzN(NÿzÎÎ?0$‹ê?Æ×|¨ý—|§Ï¬Gü`5èlãg`QŒŠCp®ÄÇEÿ©¬ÿ4ðÈ€< -*Ø;ÀïÎ2ðF`\“æb½³ñõñš„ë³Çµ… Wù -øˆ‡¯hÀ3g.O -W¡L†A/ p!œm¼ý„=‚xÈq9ÐËß Ü' -Ÿs-ªYày‚±Ä=ÊÙCú~™‹ÙÜuB¬íì1 k
@> -{¹™Éè<Àf·QWZ°Î(ÖŠ±ôšøëÒžs› -´þ裣IÄ«§1äFB³aX§½¹9Šb÷°ÝHТ¾Úñ¤è¬<hý& en3æ¡ÀäÜp<ÇPŽ…¾%äNÄ÷†ãú‡ë¼Çðàƒ> -ù´‡_%>ƒð -Z1 ©‹ùº×TоÅÞ¾×—cþë?Oì–0p,ôŶA -›°!F‡ÐY/{§-¢’Ê÷`/¥‹~S Ÿ‰õ$¼bˆ|¯.£#ßn¡Ò[Õ¨Œû°_dì»ílÈË ‘(´ðµ<sÈcö£Àçð*ýnZ°™µ™ ø>f7tÌ阒TJã^¬Ñ -ž]ŽIs‡Ä!Œàóp%#+ÝÁ&Ô©“jÔ„ åª 2¤ˆêŠKÜ\à¥X40¡.§Š{ºÆÇèùå¬bƒž®e¢Š¶jëèe@\èé†ø:Š+˜SØ×ñ~¬IüâhÀ"àœˆ?–ž›(î¡ÏýÖÒ{¢ñÐ9‡¾à^ò ÊŸf¶#ÓFh±Vá[-&C^¼=aЇ˜]xá™ÀÉà¥ÎgÌäØcŽc„g}&‹9Ž†Ø½HÀ¡’sž¸WÚÏÐÛÅýNû°™bßÛCú ÀO"wÁ}2`=¬…rÞmÖöHü…Œ/ÚFÞø¨MÝÔ\íS¡íCg@üŠ-ä /߀ãà^aMx˜ç(O`|ºS.‘sqOzH>×Wà~îÿDÍQèË€v³z}VÐKAxñuÐ5‚Þ¸Ä -ÕTÀ¶²™CúE¿¢<‰9”7èÞZþ=€÷±fðõÓNãD é~eÖ;ÃG©AÿôØA™±
™ÎZ#þrÑg -ôW™‹ž“AWûåøÝ[þȘ?~uðõàá'´M™
XÆê럻ŠNþ ÂDUngÜ2~º(´‹ŸÅD<ZO¦Ô+ƒë•¾€¹4•:ŽjžÂ9žiJ0DqªtBÍn*©fY¸
ë·œ‚øðœ r -™)½³ü3@§ë±èò‡|¶î·@V²YÒ´k”Y8Ž¥ž|¾uá&èáÿ¥—±”uØ<ÐØ -Œù¥Qð>ö©@ç&µÒäE÷F|!Z´qÁóæ”<è
Q¾…™ -Ì›Ñø
iZMÃ=à|küo®N/ÈY
9‘Š-ÚÆ„¼ZÇ -úî¸_>G/71WƒÏ"øDcÞ†¸h‚·X·ñõ-ìéàI¸¿/:ýO¾Î†Ü_žIÐœs0Ð_‡ùâ4ôîñúGˆc—ô…bç蹘¯›"¾>hlqßÙ+s1æËðÚy‡‰B¿k˱^ô™°ÇDÖaJ…º(«ÖPx»‰d®vj ßîÀÇÐ=?„°¸9Â9"KyJ|V~HKq”Ã`nÂ9€g -¹Aÿá<Âá(w‰Qn‡¼ˆµÜPüaEè~Š)ðm[ì1á¤ôO ?ð˜Òû‡úùÅ.ó?ð˜`ln¤/ÅêÌG¨
âž · -±†óä…Àix¸ýq[<ŸpÝ9v.ëuc1ëÿ`åPþB´ù -zX"à÷(ß@´÷€‡€žÄ'kè°âµò“C½.É匥XÿúRÈŒ!Ýâ£1@s<‡ ÿ):âÅ¥ä´×DÜ?ƒÚt{«à¾ýÙ¡½,ä)ðGAµúÎØGýRÀTòåpØ‚=(ιý‡ÇDJ•š(Z‹¶‹QüËcB =/cúv3 -¹–=Þ8¤_<¯£ºÇ+Á:*Ö{ÏÝÀ^×]ÈÛ°†"µF¹Ü;e±(â€äj_|¥Ý€ÎèÐ ã+·c 4OXßKɸ|ì1AÇ–ìÀˆ?Ã~}cB_tZ|–ÀwúPØgÛ3~x·` ×! ñ¿zLXþå1a5’69&O‰ŽËa¼k¨ÎÓ±¥»Øè¢,¸gàwc9äÌ9m£Åž·—1)íûÙ+ÝÚTê€*ô¥En× æЙà߆9/hi_‚ýaèÀÞ›g=&ã}6a3€—Cÿ¸:ð_ðü=4±ù¥Ñ’ÓÞ“ÀÖ>A¯–Žx¿…u¼2—<é5tá©ó!“!>yâcršê„ªš&¡¥iD°Çñz(àN:¹ZôkAzX| -üŒÎŒÄ|"èáFØó1JµÉ".
×.N)Õd¶ˆQmýw›Àéxýör8ƒlš™\µ‡Mo×Â!9«!fÈzLXÿô˜8?Z‚=&n~ñyï)Ð[ã£ùDÁÞ„5%1s$° -pã‘K£ ×Æ#%sðÄpñÅXÛö\xd,†\ñŠóè©Fçí†ço“º¤(ÁxBÿ¼( §ˆ½’‚F² æÉzæF³ðJ“Œ/xUá\Wª,É*ç “+ö³²¼˜¬:mÐt†Þ%Þú¨~Ù+€ -56¥TN)Sñ…Þ3^°ÖnDà—íyk)™P¿‹ -+\Ï\ÎYJ=[s”ÿýàaÉø]_ -˜csX‡ ->Xƒa‰â®)JØÏ
ñT¬QŒÞg“+UÙÔuÌORšTaÍ|€À' -ÿ?|òæþÓ'/Söýèóè!-r¼Ï q¾ö5ÀßõØrQj£&Z¸îÄ^¯XKŽ½4¨‡ˆ#‰nÕP¦O^–<ª:ÄËîQ…¹@çe¬“AK¸&ð%¼|.p2ÎÅΉó@›NmQƒx×FxP{¿.ö+å‰P}Gu^|Êaœêx’ZX‚ü.9€÷‹ÜÃçb}eX;‚½e°çÕE!h3ûå®’¸d,€5!À¿Ø×
Ö(a}%샜ø -¶Š|î®yf.½°æo®=:æ´Ç¼û/â¯x]È#q>ø¡ŸÄ•lŸ:ê¤ûXòÄåq(Fæ2žw–€¿4öªwO@\%úá_P'`?^Èí5tô‹-P³%žYK -’ç@\@> -ÈÁ~XÀ}ØÕ9ðG¯dèg²{@?bÒjh¯îƒ—hðÃ5¸Oòx¬ -Çö| -7ÓYÝZ‚ÄšÂóS(³cx¯$ôaíæ»ÐûÎr‘}âìõb1zEh,Áë@aø¹¼ö)l:ö†FùMì{m®ý˜ÄÏÅï[¸c{âïQ?æ2ö¢@M`||hO½ÙéáÐ[⟖‡ž1yÊq,yÄf$ø’ƒï ë’2 ÍßHG—mƒ¹ -ã è£z‰ó‚KÒ//lhÞ&ðöÂýK÷è¾.¿Qðéð,£#žlÄk(p¿Ò—àž ¬ Áº#ôŒ=Sæcü„ê•R¶—Žy±¯[öšÞi°Î/ -¾·úiLXÞ&ðhÅ÷±…[±`DÎzÈËTÊӸ֡蓉jöÓ‚oøùÝYkÿÕŽ‚ŒFeæòÕð»Ð?$5ï†5):¤pð2¾j‡ðj‹>}µû -R†þ.`V›XÒ*l -å4“vÍžOF–n"¯:@ßìÓç_ÿª.Èù¡O½úfLå<Hçö³ôµO:dæ§ýÔÕuöv_ü´éˆäUÝñëÆSÌ£1“ÑÉƼÛe|9i‰ô¤Ý8èKཫ螇$š§Ë„AÏÖ³)jÒku”iV¹è`Z9išZÊÅ)c¿c«àéRÇ|WR‰Õ»¡?# -~± öePIÕ»ÁKsN„íÙ̺LV“Ö§Î$·íƒu8Àÿç¹´fe<FS›ö’1¥¸/Í?^ù“ºÚ®¹…IjVßHðÝ8ûÞZ‰{©x¿èÝÇà+ëuc öt-{¿•Ìø°JkÚG_m: Êj2^mÐßH2¹~œ#ôoàÜÉ„Ê'×Tj» -졯õh3·šyà=ÍÜû@òÓz÷ -â[w’Yß5˜gÝÆ¢¢çØ7'ÅÏš0Zá-t ß•Ü1fï4 DwšÐÿ×JŠrMØZ² -}·žŒiØÎËú¬Lçv²’g5’Üj3À2’ì’¾Ú£%ÈlU®ÞJ°×€‘í'Tì>h²wºLlåÎ!ßÒÌ¥LrË>AäÛõÔŸ À»éäfeãû•‡ŒïV¦3¾jÐ!oÖƒ¯®ÈïùZìé–P§Œ×´|¯†zŒû‡mFdʶB
Å8DV²]äûd
쑦ՊҺµ Å\¾¿ñ§™´Kæ<ÚíÚ|Ò3w¡a\ÝÃûœºàÙõò›„|ó»)]ðÍ\ðþoùåœÝúÅ^ØýÁ›iùäHWôœaûNÀ½“–—º‰+j…/zÍé'"úY¿Xü¢þ„ôiíIã{ÕfÒŒž$¾J]’Tw€IiÚrÏ.W*äéj&©UE|¥ÙÈäJ%JjÓù?]\ÑÄ-a¡Ä!x–É9¯©ÆîW—Ãaí8û?/(¬ÓA}dn´07ûØœ6–Íi²ÏÚŠžÖæµ™‹®·ST怕X¿KÑ©ÂÞhç±÷Ú!yoÀ€¼ûUŸ¹ùшº;`ÄÞm§é{]|öQ‹Ht¿Y,É9d’W|Nô°Ò„IoפÔî&Ó»TÑ¡1Ç„¼^q 1F_éÔf´jÃz0«bS_z†’Þ¬25Tj“ -ä>6
忤&eX³ Ó>(“W{öñ³÷Ó×ú´è›]zä]êÖG=êÎGæq¿”}Ö‹ò@7K½ø(a_õåvÝF×x·æÖKÅ›²[Äô½Nô˜ù¾ê r¾ê“O>ÓlþÇ#‚77!_| -K[Ä¥•ö&¯Þ]0yúî”än¥”¹Ö¬ÇdöhÁ¹±áù›¡àº‚ð•÷Q"Ìé–°©ý,ʯ›°Imj¼ƒ'å̬†ƒ§%¬…¼±–>/·Ýë6æôJÅ·ÚE’¬VJrž¦5k‹2»õÙ«ÝÚ¬ßãUà‘ÅúÜ[FGož¤áù[ -ß´æwgžõJéG}¬ðy»[ÐvœÉÿt˜~Ó„)é>üïµdÞ~>Fþq˜zýÍXðò‹*üdÊ”uYJÚJ}$íï}E•eöÌó¦ôÝ5¨E&·í!3>í‡ùÀÜï Ù‡íbqn“){¿e²ZuÈ«jÂÌV飊#ßÒ§eÂ;-}»Ëˆ¾Þ¡'¼ÓF‹4š -Ÿµ™R7¿j“w?ê±·ÚH*§O>ꢨ¼>)ÿõ0û®Û’-ë8Ǽï:ÍT|8ÏTvœ¥^ˆ™Ü.jõ¢WDÝÿ õ „÷›…tAÓ!¦¾ÅJØÙäeÜÿ>\<Ø$hæ,y5œ9ÕðùSßa˼î=LeÒ¢ÃP
µ‹ž ¼Ö4q.G¸êô«xaÕkx×ÿ®&ÌéHÞ”_4œwQ_«Á?ZÍ¿õ]“¼ýMGðò3C> ùY¿© -bz·ò¿í%jI3[HÓ{UÇ¥oŠlŒK‹\¾ãn’_b'~QsBr»I$Êj7ÂXåJ¯&ð4Õ96½_aÂbû+óq5Û¹¿’ÅßÌèÞÏÎâOïŃ%ÂOüØ_»|…Ÿüد}ÞÌ@Ÿ‡x 4øxkVäéæ4™Wy`\xÙ嘣·dÔÀï.⾦à#Äšt¿÷´JÚ›üéÚŽ‹è~Z2¯ÍÙ—ƒ‡™ß÷‘i*’¼FK“Â2'éã–ãÂW=Gèƒó´K,~ßhmÒR$.m¶¾n>)*n=')ª´‘”T9šT\½o¶’¼¬µ½µç7že_v˜Ó¯;ŠóêQ<Vœ””œVžA9ÏØ(£k'ßÿÁ^lÍFÞ¨óžrFTQßQ[½—´«,DÚW"êjôö5ûˆ»èÖvü’¿™òKþ4!K~5T|9Føh/lð•|ª -5ïz#þÔDW|8K¿ì–27z
È°·ëéW먨ÚÔõ:ðšèyƒ¹ñËòÒ¼2KiNÅaÉÝcéƒ*3ã»U¦Ì£61û䃔|ÖŲ/[ÌE
§Åyu§ÄOZ‰·›‘w¿ë‘xª¿ìËVsqE…½¨¶ÚEÚTécÚUqüÃÝÄ“×v>ˆ;Ü÷2F4Pí+n©ð•ÖXÓ¯úLØ÷gØæj“î·‡zó¢-Ún%X6§ÅYÕ'Æ]¨“mLŽµhÍ’ä‡0ƒ=‚š_Oðþ¡ýñ¹Ði"ç«ó©”ÊôµmöJ¿6ä6¨]—çó
S>ne -š´¿
1kË4-ô?Üñ,úPÇ«haU“ 軩þN•ïù|!ïÝH=mc‚¦ÍåDN7ˆsêÌÌ:^ÉN¶ÝN²jLO?Öò0Ѹ¾Øê{»™]k4å ûôúý“º|?é«Šsìõ&CÉí䶽ÑíD[VŠ¹˜„÷ž2¿ÿhˆÁÃÝ÷¢ŒÂ$ŸÞ„˜õ<Œ´¯‹Ä1™Uâu¯Ä9*ý½»Ì²9%Z‚âöpWNÔ±¶[1’þÊ`qsÀ¡Î—2¦aÀ†—ËéRYß5‰]»'Ké+_˜<9/yÒqŒ¼úç~2øýZ^DÕZÁóoŒ´µÊϼãyÜÑö'ñƽUá–7qg½ÏÁîwQ’Ϊ -ïˆÄ¹ý%÷»ÌÄošÏš”»›4š¶GˆÞ6žd
¨‘}jâ¬&øQÛaÉ›ÆâBT“_~1“ÔÔzTø§:WG¦š¶E -ó[-È¿kóë· ®}Ñ`žôŠ„MnVÉ)'Zo%™ô¡\˜mÒW!þZr¨;GfÛ$KL¨u‰©uO´lÉL–ô¿a;ê\uÜwo -Lð¨÷«u‰¼YåÇÝJ‡ˆÇhœ^–ÙGæ;Ç>+v’Ý-qŠŒ-õˆ:Þž%úØ loò’VW]´—ÔZ‹Þ7X‹Ë«íanD_Fqí/ó+÷‹v/u© -M*öˆ (÷O¤;{\Œ^s|^#wü(ÊOAe¾ñ±E^ÑéE2‡º(_II¡>IÇѹQƒÎzo9=ƒ×œž ùûø·O6ÞI
© -̬ʶl½•aÞ™Í6”Û -ËËλ׆^…q‚ãe¥]ÄÍjLjôr—ˆ{5öE
Öa©
ŽÑGºïÆP¿v»öpÇŒúþq’÷»H~ÿälÒÿ$ر*"6 Ò'&¾Ä=êj‘G”}eTô™ú䨳õ)ÑÇ›³"¥=o‚ͺŸEJzC$%Í~ÂG¿¢nþ]Gøü×ÃfM¥Qg›2SO7g%ùp7æ`C=Ï¢…Û}Èžßl˜Þn7Ñ·ª #·ef}"Ú9£æÁ#ô‡j»#÷c]ë#®×å_6xÅéèg~Û¢ïÿd¾¾MÒTǤéúÉMŒÊÿQ½Ž×bCÝcãªÝdæ]·"~ãÎëurƺ=œX§Ÿ“èôqBí~ŽÑäÌŒ¾rg~pVì·*Oö{•'ùå‹“^'ÖjZfø€Ó¤Þþ8$.n¶5©®ò=Þr/ѱ:*%ªÜ;ñj™[¬mclª¤»2@XßèÂÖµÛ‰ê*]%½
Ág2’œ«"m+cnºË½uŽ°®C9ûy¬´¿<ܬ»0Ú¼+'æBsRª_ªKMx≶Ìæ÷®ËtG‡£°»åÎòpóîܘ“mYqšcccêÝb½êü„Ÿšý¨®ÏöTÇ7;^-g¦_ÄéëÜÜ¡;S'8{®V1§Êëü~Jôkew…LZ±[$ª{‘7‹Ü"½J"N6eD˜w܈`ú<Øú[æէèŽa;œŽµß÷¨J¼÷Æ%òå{‡ˆœ7®²;o]Ñÿëùôsdú;èèÆö…C}õ«ð}úÎ)² Ø!,嬒J›Á¦‹AÑQ„rGŒàÎZ-Ïè;gu¤ó–ìJƒSLQÓ¥Ð'
v‘9
vQÁM^É¢ïe¢ï•PMßDòû» óœSÑwž¤yÔR~¿Éy¹=|1±}Ÿ6±yç^bëŽ}ÄƪÄúÍ{ˆ5[Uˆõ[
eÒq˜ºý“)ê™[¡QÇiP_ÚJÃ"Ò_zËn¾öˆ -/ô“ÅæûÊÒ -="C¢/#ìpº13VØÛãkÜU~´ín,ÂEñ¡¥¾ ©o½bÓ߻ɲnˆ.÷ŒœÇoü»…ñÇü°ô -ÙK”ßž5Z‡Ýiµ½ÓnÎþhðÑËþ´ÅÀ:r²šŽˆX5W‰X8\˜O(s‰iÄlt(¡ïWŽžM¬›½„Ø·ODh‰íå4¥nò;wÓÄÒ)s‰9Ä,ô[³ˆ ò -Äd¹ÙÄÌáJÄÜÑK ¥ik‰…s7+V([-‰}>3¼àvéUqBAçŸVÔ[îðígK“Žw‘Yo=b -ß:†¿-v/(µ{úÎ1"©Ü-:ºÔ+Ö»2 Ñ2$!éWÌm<¦n‘qï.Ç„¿÷Ž>Øû4’ìøõÝ×ëjßSÓt)¤¾åb0šCñä>7íÎà@ö¯k8Þ˜ªm“1YÏéž‚Nà;%íì/ëµrþ¾Eû!·S;¦n© -ï±Xi±pæ"BIa1º†Äb1žCŒEÇ$ô“"1P’ŸA,ž¦D¬ÛfDì5 “W¹ô|¼jüà<&NÓðwŠ÷+gcÜÿ"DÔÛå/lt5u{‰»ÛŽ}¸s¹*0.þWTZGäõ7î‘(/F]-ô”=.vŠ|ýÞ!üJ±[ÊÇ‘Ïß8G¾.t/|ïžZæ&‹ªðŠkn¾ÈuY†~i³Iúµï\À‰Ž”pýß9‹ýo¸-j¯§íÛÛ°SX¶T‰X½f9¡nzFNË󚂶ûÕéêÇlå—ÌW"&‰ÑÄ(b1Ž@×%>‡r?Ž^®z,ú‘è'yüÚxôùË„Äú"bå/·ÿ·JØWä™ûÜ?*²À72ºÀ7*úÝå¨ØBoYz¡gÔ•¨{ùnQ/ -\"s\"¿r¸‹ææb—ÈEÎQoKíÃ}*âÙ¯¾ÂÏõ¾ä¯Ÿ\/¶DǼjF5¸õbht“sô.Nñqbù¬å(§¢ó‡s…ÎJ_ŒÍ8tÀ™#þãÞÿÏrøjà7áL F
›‚¾N$FÊMD?Í fNYM¬ÝrˆØïU¥À@ucsB9ê°¸¯9À¢åzlV¾GTasøÕ·îQYïÜ¢PŽ Ï+ró¨Š5íyêY±ùèSÄÝwΑ±ÅžQm™QÂ_[Øßýœƒãª>X‡7;GüÎÜ/{=wÓ]Biüt
£ñùDgßO@×4EÜTô|?ì¿\Íþ†¯î_¯{ú„±‹þ½h.®Ú{‚Pñk¡~“[©?Àe;z¼¤í•Af-Ï#ŽµdË.ÕÄÆZ×Êb^½BXÅ$ŒaìoŒcÎ+ÙËBg<nK¸D5;Ew”9Dˆ?û£Ï\·ƒc
û¸üïœÖ{Nc§¾91Ðÿë¸F¹Ÿwþ;âç=Sµ„X¸PŸX«q‰ØëZ5I½‹;@}*³³*I -Nxé'»óÚ#úi‹ìI¾[Ì“"ç¸ïœ£ó -\£ß¼t‹~•ïòÎ7Òµ"4&¸Ô7:¨Ü[vµñ®rÇÈ›¥ÎI¥2ÞWÎJã·UÝëötUs[¹uk·3å&áƒÏâÿŒ99|ÿåqœÂ×ÿ|
C‘8½? -Ͻ¡y8¯FŸãPV@Ì$¦ŒXLÌQÜO,ßeAl5M“Ó¨ç4ÈÏŽ¦Ý³‹\#‚Šýd'Z®F¶lH•.^‰°W”/új[}¬-;^Ï~ïQŽ0{}uØÖµM¬u5ëˉDøB¬z)tÔ¼Y3ÿïýptüëµþõ\¯üÏ÷†®{$¾3cÑ‹>'áÙ;”Q‡rüÏkƒçŸÂäÄÊÄÎã·GhÜäÖº9ëÃ-÷CÏV¦GG¾õÁqxº!5ª&ß-á}¡KtÃú"—„¦7nÉMïjÊ£_½u‰Fñ){Rè*K(ò’ér’
ÊbÆ„ixnýwyáûñ×uþwpMc~ŽéHô9_ÿ$ô‰jâÔÍÄ‚eb…ÊEb“8qØž«Ü<½Ïœùá†[ÞI/|e·ó<£ó^»Å¾-pM(+pK)-vNz^è›[è•RèéX‡[EPªï‘ѕºn‡h—r:«–mü__ÇP6”Çç,ÿ/c:ìç{cÑ»ãÐç”a3‰òóˆIÃÐ8MC9iªñó‰i#–“†/&&Ê/"¦ŒYMÌT8@¬Tv!v}=Bµ€[Çö8!܉êÔ„(—òÐhñÇÒ -S·Ó'¬'¦ZGL·–˜ -ßÝ@(ŒG¿§ J,ÞxˆØfœ%¿?›[nÐÁ3o¼x²êJ(`³{/<£Pík}ãžÞ\à™ÑþÎ5µ÷Ç•ž2׌þJ—ôÞ§”æJ‡„ÒR§Dà]ûʹ“äÿßäÇ¿ò \à/ÅJÄ”áŠè§Ih¡ò£ú)7å’ùÄŒáˉi£VÓƬ!¦ßHÌœ»ŸX°a?
gb#›<l‹0UnW@÷½/œ™°ûµSìK¿¨ûÏ.ǽËw-+t‰-ãšP^âû®Ð9öÍ—Ø{ï\¢ -P>}ùÎI¯ËÞ{Fªµqª+שþ¯¯å¯¼ 9b,Îì£~~?ç‘1?¿ŸŒÆQqÄBb6§9Ó6s6³æî%æ,Q'æ-2$f-ⳊsÔ‰´ˆ¹ËbN(±Ë±e‚Ê[nøçðAQ·¼ñ‰z\艰™,¦Ø#áÌhàw -~AXìý{ǨÚ7ÎQoŠœ¢Ð5Fê~ãî°–[´i'ª“ÿíë‚<9g†áøû¡84Çb42‰˜!7“˜5v91kÊ:bÎ̽Ē5bÙöSÄÂÍæè° æ¬sRÄÌ¥$1s¾1CQ˜=û -m_bó¡{ò;‚»¦¨äpË÷s[õ?rGŽÔ]óú<Ï#¶ºÀ5¦Su©CT[©S<̹öZÇ´¶*§”¶zûä·¥NˆKø†©Õr{–¬Òú_Çæеxü žM•›EL•G Í«ihÎM—Ÿ^›OLDc8 ÓF-"fŒ_®m#¡0k+ŠOU“úÄì&ļ–Ä‚}ŽÄ}bO¬ ’ˆ
fOåv‡ü6C¹”Û@÷_ºX˜âñ&<ÜïM`Ä{„½ªÐµ=|ï${Œj\i±£¬Ô1¦«Ü1¶Â!6ÿsôùêøõ·Ü®Y“fÿÛãö×|ƒ|•jº¼"¡8rº¦Ù(§£×' Š=qè=¹¹„â˜å(¢±·åÍÍÄ…½Äü…$±h“±t¯5±XÕX¢æBÌW¶!æ©Û¿¨ÛËyÄzã¹¾“Tžp+ú¹£Â®7N犓Ýó#ž=ôI¬zî™\÷Ú3=?ßEœ!¸Ì7Öª1>¶ñ„ú2{܇}|yYå·dÖ¬uÿv-Ž±`DT½†£Z6N åþE„âð…(ÏÏG9Çæ4ô9]N]ßbæ¸EÄ´qPnDÇä•„Ât”ÿiJkL ¥µæÄ‚
'ˆÅ{œ‰ÅúÄí -Gè%Ejµp‹”¶ÿ[ã&ÿ/ùq(LDׂÐÇø„Ò/ªÄ%-t*Ĭùj(W( -3Qþ˜¹
åL4ÏÐ\›;k71gö^bž¢ -1w¡1oM,ÜxŒX®îJ¬¤ëŽæÊmt+½!´yìÎÇÜ/»Ó~ÌÞWÈmÔì⟛íŒÛzy¾ÎŠ,Ï÷L/*tŽ~òÚMÆ/ý~Ðà9§mô -“VsP=^²ÁœX©aM,ÙfF,YÁ#ÎßCÌCùrÎÔ5耚·‰˜;{;”ĂÕ4±`½ˆXªz–X«H¬¥c‰ÍGŸÉoí¿ý7[µŸSVûÀíÓäÌ
z9¶§ÏóHó°“u™Ñ‡:DœlÌŠM}å›ôÚ'öTÓµÓžâ(—ÚˆÔ²2Û¾ -›Ðøb¨}µA÷Ìÿxm#ñõLÀµy2¡ˆóÇ8ŒùÇᯀA _N1a¹h>*SGÀ¡DLŸ¸†˜µ@‡X¤Œðñ™Ã÷„öÍØs›¯üŒ[xRù1·lwòßfíŒì¶=¤kÊ—²ñ;.=½Ç¯|Šj.·b-§jô‰;kø‰;-üRäeÚ÷(ølc|$ð9àä€5w-t‘=çQZbÞôÞ!j Â9©æ½Sù¥ÉAÍùý4ÈßÿØó³–C|2V5‡˜;e-±p•±F󱜲!–™‡«r‡¯ñ};r£ßû1›<ÞŽ^wéÉðuŽy#¶x•Ýâß<~‹oýø-ŽïFoµÎµÓ£b¾ÇÜš}µÜnå›Ü"• fµln™f-§©SÏ tÛ8‘n'är—.VÇD -·H—ê ÑàK7è¡h£ØÓxÉmÓ|Èm>PÆi4q¦¼.îŒ`àO{ñ·ê öËo½‡œŠ¾±…œê¦í„¶†:ÏQÂ>F2Q…µAd—1W|*lŠÐ9wõ‡Ž0wÀ˜Êü¬I»ßZÀ·ËTÔ1µz£!1gÂâÿÒúØ”G8a¬IˉÅ[„Äfã$¹ÝAmÓ ÿíÿŒçËAÃïÜIÃ_9KýOÜa”j9R¿Œ#ußsz†õœ™`€³3êäN”q¬þî€adÛC»óR»7ó+þ8L÷õ¸ð?rÖ¼6ÎB7ûφ¾9J¼„Ú-ÔµÏèGƒ,?¦dúb5™˜·•¾Wc$Ê}'–”Ù›ÖŸtš²Iƒû™ðŠmLà›uLncÚô2@Ò]hPÊ1vQÿíuEyq’ü\bòèyÄÔ‰ÞB,X©C¬Ó³!¶¸5|›wùøÝ·þþ‹Z%·Í'ƒ/¹=<_(8™:V×å¢î+Nƒi*·³øp#^:XÌ4ºúzmõ9¿(EƒÓG‡œ³iàì9QW–»H·ˆÓv5z²-†—ïþ¢Åú‡^ÿÛ^òú-eÐDÁA»LxÝvá½N‘øUÓI6¯ÍŒ-j>!~_zÑ(k`¯àú7u2³CºòQ]øäÃA*ÿËAœÊþsYã,Û‹yö¿~LE5cõ:±ƒõ¦ê˜7i%§¢ó‘“}æÎêösÆ(_‹
QÝ¥¾|s£¾
ºë¢Ü e{mÊvMbëŽ
„¾åùFzˆß9ŸiÉLµnŠM>Ô›+£>¸TpBí«×êø¾ž§÷ˆS1xÅéë§vl4ºÔðÑÔ³v†¼ßg$¸ó»y1fßø¬¼Ž‘€ ¥'ä±Nèﻤ̣ãv1׿éK_7^”Ö\ä§îœögd7U÷lÔøÝzg‰³6ã-ûéÃ~Æåb²<ªk37˶ ˆíÒ€a*²îÙª/¸ÕjõÜ^íß8©àÇ{êÏ6wö÷z?Ó¼Xûcû[<èÚ¾‹ÔÛo‡ÉW¿‹™¢ÁSâÚFwIi³3›; &m“tTu;†Ï°ÿ_ºÙðÉ?4
ãßã]ò›ÏAbò7’Yýô½>¾ ¦z‹À)n&ë™ü‹Ø/m)[ºÛ8³Ž–¾)±1)-ò”¾¨=%Ìi³[ydfç~2¶dßÿæBóQãa½múð ¸wð¯0– -“W¿¬T#VëX»-oÚŸ[¥ÕÃш_…ö -¹¶À( užaÄíÅiµ›
®õìäå íRgRb¦±6I3iÇëóh»séSþ¨iê»÷<mT¯x†„Xb*'šÊÑnqsø1…ø±ù ›©˜G› ¯·W{Õ˜m,õ¼]ˆ÷UúÄ/`\“çQ×4%O«—V¸š•¿0.)v–äW[ñ¯ªÃs¤}ÄtƒÞã´Ý3ghøäÍÚkæ%¿zI̘ DLø -ÿ$õ*¦jçêwp¦hÜô´ns›ô‚ëëš¹PV6 4
%„¾ä’<ïBÔdu±g›¡s@Bhªh*«7š{öyÑOËihꪻ÷Zêú߀"DR3yÓ³vMÜR›z\[ÏIÜÂæÂ3Žìµ6]Ó»•GE÷>ˆù×>« £(+¿Ò?ª"‹7£§ñOŒ\ùSE’ß|ž¹ÛKãg]láyfÒçÆBÒ-a6åš2Wà{w‘aJÝfû?ÔŒ®U6Š+]o1°UÿÚ×ú9ËqF“ýÑ}ðÇ.Ï+³œeÓ3¾í rû)£ØÖM†ö1Ó¶ 3C§ -SÙºƒØ¶d9±gýVBÍ;ê˜Óhx–
´ô$}§;þb•Ý¥%º_#>¨²w›iáF>Õ§E†?\C»ÄÏamÂg°Ž)shûx”oãg‘Þéóaò®÷«‘&¢75§É‡Ÿy¼ëßÔø™•ù×¾ì£öÐlQëa~ë þõïûçý&ÒVžI—Œ¹¼Äúmô‹©¤¹êò±Î‡ lg«ag ÿŒS×—õÖsÊUܧŒÐ¦ÏÈé_Jšl”ÃiòŸ.ÕŸ‘ã™Ù˜\nH—SÝ©Šæß:Báê‚ßdAf§*Ì}Öxhf€n1sÐr¸ôBÀtqгM´ŠTj©Š j/“Ñr -þ‹1²Èº[†Ø\9&cf†¥ÁÇû
Wø«ç_¹º÷—êÓ:Æq¯Ðþº/<7¬./5Üœc¶ª\ýæ zá•ïÿÛn\G®þƒeB^ÏT>¥fŒXrr6´¹k¿z{^ýÝÞþ¹Ûûâ¿ïò>ùºòs3µg¦êÒ[Ç꣊ìp_ÜÁóR4˜Íg¶>Ž/½:—‹/w€ÝsEçgb®Tw(ÕÚåanž^I´rz¦ð-_o[_n‡n6ôŒHOèÂ^ú×=˜íZlâúŸ»pƒ/wb^œg>EÈé˜"&ՌᓪFó©Nú£,Îý¶]×ñx½÷©_·ë/ÿêŽ÷g£ðîŸ
üÝŸ}¥¾
æ®þªÓžûÏ=üÍ_íéÿ±ƒ‹(´; ù™yùÆX`~‹ú»«áæÓPŸûç?¿—)ÜùÙàuåÿÙ£{ç¿<<+?ž½W¬Y<~¶f‘ýtöyŠfÏ~Q£
IµÖ…¦Z{ûÇXrIÖ:c¼åö»5[™ÿܺv#ñظ¸r!:ÛNëdŽX!G%Úª ÅŽÄŒ -I±‘ü£,åˆDh%È'žy©çŸ©Â…¼¹¢–)|r¥£®÷éF¡ÿÏ{¡k($UŒ–3jƽOwn|äÿÉÍÜG—ê}oß‹úÝ‹4)ïÜL¡ñÉ:¡òò±¸Û™¯»»\¨:¿€å ´'þ±]{ì³eÞiGµ¹“¼*îÌÒÅ5Þ¹›Õ«7i6¯Ý©qÙ¸Os@`†9Kmx‘Íê¹K4³l4³íÇhš¢ÙÂòäW>93”š‹Ë0“g8rm‰Ôüp‹OÑɲo”¥V/kDc˜%i‚…W8JÉ«Ÿ,½¶Jèúx«¾ëÁ&–K/Áý×µ<\»ðwWéüO¼®ÿÕp„ز‘à.ðu7—rmO7qO7‰}?^u~¾PÒ7ƒ;~oxöµ·péµ÷Vxï{?ñÃ×üõ?,&näò‡¦êÂóm<ù0ó½{ÍžížOè܇äçckFñ½“ Åe
óB˜ïˆ4ç×f¶0MÈgU.ÅÜŠpâ7w±ôÂ<.<ˆ‹-!ät³x~žåƒÇÆ )&Yue×ñå&¡ëåáô÷îâ™ï<ù¡w“Þö¹?{—~ÔaNCßõb³¾áöíÉ_·cµ,Î|ïþjÔõýe‹¶áã%ÚžnÂëç“Gê£2l„ò‹óôƒ¿¹pýÙÝL®âü\®ôÒ}ã§Ëµ=?nô:ýïÛt‰ÍŽ{=ü4«æ-×,qš©Y7{™fÓò•š]»vi\÷{hvíc±åÇnÞ’ÆÍCÐìÛã©Ùçæ¥ñò²Ð'×;B{þ3ÚÐZ„ÖŸÈû›sZæ{¸@sâÇÔýbßóÒšÝ\tŽP>4[<õÂÃpöÛKgIÙÍ“ ‰%ŸþJ¯\}j¯¼R…³?yrƒÝÍ
ýc/fÂø–Çp
åÜÚ‰|yÿ,]Û§«…s?{Ë7¿ ÐýŸ{µ•wçë+ï-öêþyw÷/uE§§{dXyÉ1ænú -âaf×OĬ?t_ä²¾¹˜#eq`šÙ8^ÈoŸªïx±‰?ówîä_÷ðµ·–ˆ©-ãö½x1±Â‘fò2›'Q~Óð§¤+X~ewôör¾þæR¡èä¾ôÜl]ÿ÷[¹?y~ôâúþ±“+¹8zZc¬…§pÈ\ë›bÉ…•ÚyƒÛ 3ÿoM=oŠtö ÿÈÊ.fvNK¯Ì玵öÍ_–WLb+Fò1¥|D¶-ž>Ú‘bÁÙYú¶gh¹ö%úÎ/6`¶’Å?ÃÕ‡ò•gãQòûOñ~òÖ7}¾Jd±__ýÎÌ&b~Mxÿ[íɺè2;ÆëâêGéóz§èÿm»îį;ï0ÛÜ¡úÇhéƒcÐÓðTÌI§¥ùÞ*m×Wëø¬žI޾ɖ;6»k6/Þ Ùµi³KÆCÇktª¿¹>Ֆѹ#øè4[mp¬%”¤ñhÅ'78Iå7CÓº®ÆÄúqjpòpŸàE -07'Ûs{fŠ-÷6Aë Ú|fÓx¾th&×ól«Ðõd»8ôÊ
s®RÅ©ùÐä{ž»(§Ÿè„ó/´º¡Ÿ]´gþ¾ƒ¿þ‹ |ô<R¹ýâxúÏžº¡gÛÅ’ÁYbvîöâBýÙ¿¸ÒìòõUý…ÿ‹ÕOVêëGs‰
Ž\÷¯[õ½¿lã~ºZ_vqŸÕ>QW|y¦>©iŒ‹‹‡fÝÒÕš=[ökÀñëK§cŸYìÑÍIó£p€4:…ðÄaÐL%»d~S¬¿°Düv/×so‹œX0JŠN³“š¦ò
7—‰57–òìïøënÝÀÛ¤œæÉBj“Txn6X|Z“˜vl<⤘Ý4‘4uRY=˜ÄrñüþébVÓDÒ’LiËG¥ÙðQùv¤·SöÎ|úœP3šNy<søШÒJ³Æœ4ôö¤²«äŠ[KùèüÞ\€™‡ÎG{æ"ó줬ŽÉX/º“Ý©;ûë^nàÇÜào»õ]/·H%çæBÛ:Bï7;¡±í!¾É¤aÍø~¯4øú€xá•^¼þÚ ¼óJÒ
üê"T¿³ºsˆú¦?âÎÿr€;û7WýÑÏVr™ÝÑWÓ'ÃW0ŸÙýrr®õñÌCÏÚ‘:•µƒ\jÍôô=ßlá?YÅçwÛ+³:hf¿»¬‘âÊFI%½3¡M)å÷Ng×rœ”Ôà„k¬Ï®ó‰·ÔúGZ€ÙÁ·>ØV4”Š¥Ú[+¡½OÒ¸Îé™íQÒÒf±B×òÑ*]ÏóÍl=nŽ]_!6¸žo¿·Iî{ìf8ñ•Nêýr¯Ð÷p·0ôÓ>þÜÒo}äGÓŒ¯>+7~õqæïý>¸“,]}¦Àç -™Ç&°µ»Z8ýó~ÌâògþÓ]—ybâî½¼fëºm}Dù¡ë‡âà®Ðãrº'éK¯ÌÖ'wD.ºg˜>èÛndÑÐ\â1f“c*Fë!µq4åÁU±ÎxõÓ`ùìta„ƒÁìëE£ ‰ÎŸúÅM7ð³´Í¸¦§ëp¡EfÎêʘb!§s²Çâ,«/Dæ+„ôÆqRJµ“~t—Ã꣄êÑBB£_;ZŽÌÁÇÚó,ƒ‹nq@ÕHs1¹Î ó\ï¯.\ï7Û¡ã!åuN#VQ«sš?]¾øxàò‚Í!1¡`$4\„3ßî—¯=WÕ‹_¤3_éP#@3½Ò*?=_,ît†ÖßøÞJhÏ€
³:‰?ù›+wò/{uݯ6aÍ@ÃL&6{„”×:y×ÿã.±ðì,pw½Y-ƒš ±t`&l\d¦‡Ö -FìØeîu0ÎÒÝÓŸùMèŸl
í©€æ÷Ý|Z>ØEÚiaùvЊ·úbrš0qÛpé¾ñàåÏäºëË¡KM%®ù½UÂ…ß´ÂÅè¼úÿ±Q(¼0öBË)ëo-jÇx«fÈõÄ¢3³gQWëFZBÛŸ;\b@.¾j”.2‹ùÌ<;1‚ùºÄ2Gz“)ÍôÁ‰V°¨—4ÐI&Ƴ'p¬Ð{ä %Äâ‰qÚ2)1o¤œZ:ºŒx_à B‹[.==zu,†¹˜4²úgBëÜ"ÒŒJ¨t‚Ž!´>ô=_o_€X°à©6Ü]…¼KºøŠî›;BïbÁù†›¸ÐXf±Rßö`½˜xÜÉS‰0÷™oÍÄ ”aˆ!bfóD>¡t¤—O1¤utÀ<óö
5'¼î©ˆÈQ<¼d
0Æ -ü"V§Œ“³ë&‚‰…x+‘nƒ>™—fÎr3}@šµ_9ZN¦“ÂH§H‚V~fýx©´6«Û·A7QìûjŸÐu»TmiÞU_Zf'Ø}ê©'úƒï¾xûV²Ï™FÒ†lxoÖ¨¾ùýÕˆåò»/ÊŸ¼ŠÂœjxè¸ -¾~Ì—…Z‰õ,>vNb+G¢Wŧ5C°_ïo¶}ó~͆yë5»·Ðh’¬t†hWV»îÜçÅri–C*!ÄßöÒû™A“úÓÐ/…ö?ïg¥ãƒÍùƒ‡ää*'¡üì<ø@è6ñG?[c8ó•l8õR+/-&í‚Öéü©ïÝåë¯}ø›ÿ!yŸÿ¯=|Éå9wÀ'KkžÀŠ³Úï¥Õ€;‹¹z0à´ÁiÖ{]µøEâ”±<@L¯e1=ËlN>0ܺ˜Ä«döM(O¬†YʱÌÆ -F‰±l-eµL -)õNBD‘> Þ -¬)¡ž›°1¬K/é šlM,¡‚.gáp‘ƒÖ—å'ÌßAûW`µÅòÄÚ1ÐzWóNÌ"ÞL~ópŸˆéŠ÷Ïêh¥ƒÕ¥c1¼-áð‘‘BRýbätLU‹ÏÎ'=)ô9®.“{ìQžx)÷ˆ7WÂ.eö=sÄs¡éƒõbç.¨•Á×\ÏómRF»NõN`ÊèÛŸmà†þ¾šºŽ—ø’3ä¬ÖÉxm®»ö°õ$j„°B;.4ÇÆ[‰4ç‚’¹p\‹D+WO‰Õ<;5ëæ®ÑlX²V³ÛºœÍ¼üÂ-øÄ:GáÈ™ÙBBåhèÄCK•8‰¥ŽjF-Ø}£Á3÷ôP4Ð}">ô©˜ÅyÄ<hI]vB‹™|SlÆ}Ç—IÿçöÏ~Âõ¿)\ë7Á¢ËØÚ0wgµ×o^ä{_íÔ7Ü] -?¹w¯^³oŸ§¼+º‰UNàNÇ Lf£Ÿ9ôŽ½9U£“šCË›4¢£ÒGHÑI6œ_¼iÊ3(µ~´ÙÐþÞ¹æe°k!(Î -ú`âñO6ˆŸmƒî—”Y5Žr¦Öó]Ÿo‡ÁS7Y-蜀¡üÂbhò-mP‡kùÁö -‡‹ôÃ-‰s^Ô6S©>±ÜAqðg7áÄÏîë{_¸SÑ©ÙbH‘–e˱õ§e÷ºÒRå%|ë³ÍrݽuЊG
÷½4h‰ßí%æ)ó7bFû$1«k2åëUï.•Ú^m—»¾Ùkèz±ßÐõt¿Ðy+XˆJr¥“”ß=Z†ÐÑÃyè9½S)ç(»ºP<úÙZ¹ã»]rÏ7n†žÇž¾½µJß#wè'²µ¼TÉk™fÈ®¤Ô]Y)v}¶Cn¿·“Ùæ:ÊÉXn#õÏ`±nééE–:€‰Éw<Û"þê.øù -Œ -µîÎ:b ÅW8›–s\µ÷Á~ñØÇëåìc“ #/Å8P¿3¿å]9JTŠ-û÷4Òë;ÿ‹§pùg^{êï;…´'h2z*¡,¶™8‡B|Å(褋%æÁ7€]z)(ÒÊ'óècv‡³1ûØTÔ`üAøq3÷ý4zÉ×zŒˆ›ÐÛ‚7ô†ùÀ+ÒŸ,91G9þþ&©ù³Íà²Bs”ðÐ~eù TÚ5Zšºö÷ÖHçŸsêà/ZÜÆ0bÚ°ûâ{âQé}èÆüêF¡÷é.éôW^bõÕE|B¾=4üŸ|°ŽñYŒÊ²CnŽÞƒ”ßçÍgÄèŒ 'gˆ©=“ôA©Ö`챘1 -º||÷O.â±'˜
9£ö“Ó:&“v]ïÓú·Qó‚™…¾õá -gÀæ
í_íÖ›Øýr‡Øz+Øò¡ôáàú5#t~¹MßûÕè„¢'Bþ×¹øÔ,¡ýåVCç×®B÷w»ØówB÷Á˜Z9^ò?l…už“Zse…ÐýÀE|äå3øXP:îæ[>ß -G.Îå#ÊFèüP÷€_¢äœ¡äœšAŒËâSó+@³ˆòˆê‹q
a[:)Ò\>Ø¿Úöx·±ý¹«Zzu1ò_½hæÍû™ ˆ`^ÕÀâ²Pw…ê9®Ú—ìz[ƒk¨¶³ëÕöÜ]-½±:êØCBãäsÑ/ÆJËIœÇn®1t<qõézàÍ]è<ƒwÄõ2vô³ÕÄEÈè˜í`¾ýõ¾îãBÑå¹BÕ]VS]˜/–]\Àõ?Ûn¸q/ÈÿöíÃÍ{‡´§ÿ²“¯½½T¨þh™˜ÚN>Ì9ìÓ‰¹SÑ×úw`wˆ=¯w{âºÛM³w7ó«Z‰å¡¾foxs†è<!(Ê -q‘¸Y1£ÁJAÿ!é6Xwj\ÎH¹’ÅAh¬B—›ØYÌu?Ú«œx¢…Ÿ8ø›¾‹å1`gÊ·Õù'X‚-«—Â-ôb˜9ô¸
Q†;0NHSö`¢µDš¶9#HSùÈàlúÜ`@$‡œcçWÀX!¶qt‘qófû$TŒõÌr -¼:ŸôÚIê‘óå†ÖKÐâ.;1ü+uà±'rdìe é,gŠ,°“CLZÜÄjy°‘tfÁ|†Î5^wÕù%ЬÅy4â÷F¤Ú˜úÀ)Äø0†e -ÍjØ·Ål5©x´áHï\ŸŽ{n~m<¨nêyô‡î<ÿFwþÔíÿ®;ÿõèίãìÅk1
M5£mŠ’Ó;]œdž„>4u˜_åˆn–wÐÌ“÷5Óƒ£–j–\÷åzä¹rZ×$Ä?°ýø€Tkàk¦Õ*f'–Äa=\0’X쉅£Õ즩†ÄZ¯
kþÈÅ…BÏó]à¡¿¨cyØ2àœ{ºë5ûwï#v–NRÍôÂì¬è!&zz5»µ,¾™#>S†‚Ól!É6J`ü09(e8|4XÜħÎj˜¤æ4M…ÿ£Rlï‰wÁ®tüî:0~HŸ>¾Ìy«Êr}æª7Ö)Õç–(åg³°eºÐÿhÎÞ W --n)¡ÊQ`¿|3©ý‘rRô -'ðÊÀÎ/µÙ³³òLì,#«÷}Ã-_Œ Ucå€k¬]hø«‡+‘Áçòš¦Ï,µq¢1£f"ó;dÿ”aÄÞbÏ÷I¬‡çCoý_Ÿ:^-ìœ Ímbö!×h|ƒ¡ãý>ŧ*é•ã ûÞ3±`KÎÍúÙ#þä Y°cÁÆ£ç³Ø‰€Ð|kµr¤®‰»k V"øèbÏë -¼y°³<pVRò1;K/Hì,fãðOÄÎre}€ýnˆ/£&äò O¶ó
É·£Qˆ¶¢¬”H?Áîb>Y.í
"jÔ;׬õÁV©õ³-à»*I
ãŒÙÝÎ`TÈ]_îFž}äTÐæ&>á‘ö™B×Äb$³¼#§mŠ”ÄÞ#¸=÷Y¾uo‡1³qŠ!,ÛÎ7¹a¢O:«ëËçï맞(ÊÀ+/ÚÉ-×;‹øí§ær-;Klþb#±³2›ÁβpÇZT£Ì¥ìþ©Ðê&6õ‘!bgÀO;+ÏÄÎ2ü+;+ê
;+a˜àbÁ‰¬¶TYÞŽœìø충Ð÷9 X`†Äb¶>&ƒ@Ïgu‡ÌžïjÁñfàR!g îž_qe}€©Áò“ÎñÀl•]K%"ÛŽød!ñÃÀüVÒ›&òG?\%žü³»¾óù&ð9ß`œ/çÙj5ª"â‡ó~þû]–g5y`Æ0üŒ‡§ÑšË©•Nè#"þ ~ÃïEÜi.€å?Ç'J•—‚W6·û½ÆÝU¯A¾-†$2\7Q-š–/å•,nËð'%Ìç²ZFN®%æÎ[q}/\äþ—û‰ôðdÝ쬤ßÙYñ6FbgYªÔÞ\ÆÒéýÌðÚÁÛÆ^©!~‚Zuj±OA×lŸ¸<â[S=žvté±·|²‘x,KCZöà›¼a‚œZÃr¯“³Å–O7ËvíŸnå›ß[<õÂp>‡j™Ng¼/©þÖJhÉãÜ£Zzy1¸¤jÿ¹ñÖŸÄÂ1¢¸¥14Í–ÕkS¤¦Ï6#“X-kâKšØY±³žl•û¾wWN¼ôÆdÔĈÎÁeÓ'Yq!yÃß°³Ð_s€øJ%]sÔʳKÔÜšÉßs[œ¥šÓ‹”úwWJ/,»R‰Î³bXãè›r:œÅ£×Všøï®&nLQ«3~±C«òÊrÑóÕ¬š‰ðÅ -ž0Äü-pî¥æ›ëÄŽ¯¶£¿F{î` æÔ2ßÛ8A«u"†sx.±î¹íÎri÷,ì_¨]Î}ÍᚊEÝÎbXšN4×û˜#vRþMÿ”J'÷=¢Æ[{ÐLôOµ6D; ¾5¤ÕL -8?bݵed›`ˤS,š+·~¹ö)õüyöëÔž'î~ƒe‰ùOpé<€ŸdNè‚Îéòáâ‘ØÓÇ=¢2l±/%Ô¿»‚oúl-ØY†“Ï}ßëí`g‰Õg`æC*š)euO–µ@=çÛˆVúYåÌ>‹{Ø{bïì¬|;K>úαùýõˆÔoe1ßÕ<•rMæ÷ÁlA>,¿¹Z®eﻸk†\Ø=ƒXó…ƒsÔ†k¤ãï'®-ö\âŠF³X} -Ø]¨ùä쎩`nÈ…31cB}¦¼³DØ+ú—Q™¶rLöäaÄ€a¶¤Tœ[„ýb¼GæÚ‹I”ï#SŠ.̺=¥°g&˜ßˆß"óq`Ả%¿˜w| -˜Õ4çR÷Ñâ¥TÕ\>–ÌìÞ •ëXÜf5ò}âØ /*ìrÙµ§Ú<Üö>™þÎt·—ª/.FOC½ðµj¸ðÀ(v?Ü!ùDZêµ²ûWĨɮŸDŒ/pÞ‡Eä ~¿°³Ä†;«¨nËmž"×^[|\ßþhêw}PŠµžåøbRË8°Ò”âßYœ¬îcëxºô†UÐ1l# kªé61ÖÕüþY¦ßÛ=
ö@µ 8ÔCó¤Ú‹KÄæ»ë˜mîPÎB=«Šð;ˆ
WÄìžý=ääÛÀbkT¬dµ|÷£mÊÙG<ö;w®ãÞFœ±Ãž»Z~m)›LÎ)Ÿ}¬ó»öIhÐÕÑþç>2<ðzïï`õ^3|‘šÙ>•ÝKöص/陃³nRpÖp¥èì\ª™›ïnTRêÇ錡æË©‰aÛëî–Èì6®CÌõz–ê4:Q#¥C~Œ÷%ÿÓô%X=9LÇ̈åÉþ–RÒ3|+œ_"&QÅ¥ü±Ï×€9¦Í9°Z½(18Ü -¬-\O¥êebå¥Eèå#F‹!™6œ!Æeì¡+Eçæ…özÁ¤jÎzÛ˜%“kï¬Æž1ÑÄ]_[¨œšµ!§Óço¤Æ»¦Ü’ÖÑà\Cù¥%°{º×è7Ç•×2
½k¹ç‰óßK¥Ø{9$ÍF<k¥$ÖŹñô7†s_+JÿמbóƒMÄìA¸ÓW–‹íŸo‘Z?ߪ–Í#¦9˜·,磜µâÜœ/„PrŽOK<zsßÿb'×üñìïb¿™fÃì(&•ŸY?\JI.MyJÆÑI†üvgÚbþo¾»†;z}®8ë¨çuJ„9øÄTaq…|^Q;ΰÌ#nÞ7Ë)F°u/Vž™/²üœÕ-«Oh%æŸX*§ÃëÆÙ3qàå>0 -XöQvè_Êõï®óˆøA`m
—v|êlÚGÎd÷2ðòjÏ/A>BÜj0Ûûf±…øØ;‡/'OûgÁ.Âs¨ÞCÊì9|Ç‹|Û£MðyJ9Ë%ÀUB¬¾°„ï~î¢=Òƒ½zb}%”:ÒÙôq¨ôÌ|©ˆåµàãÿáŸÀ]î~´Eßþùz¾ñîJÚÓIb±¶ÃÖ˜‰oÜ2™öÑÀÙáô£M9rË4œ#àÚ?¦ÜI.œÍù'[é
‡-PK€[…œL81†Å™Æñ2Ë?eœ·*š£æ6N¦½²Æ«+Ď϶JïÃ>½àŸaí)…šq‡X,+èsæZ>^‡ßOû5̲Û'cI…½Î|Í™ù\ǧ¹æÖrÇ?XYT1<Ý|L1"ÙF)é›C|8œ!Éš)‡²‘k§&V¡–6ËG¥Š>æCÏ.‚M²šköÞà_À›R¢SìÄÃÅJbÅ9¯‡ù¨ö)Ôçc5Õìy¸FàK{ºk5Þ:Nƒ<µ ê]\wäIØo•˜ÍJ‘)6dÛ`L³k¦äuLÃY92ÝVE<o¸¾ù -xZ¨qfK-ì…³XWxØ/V’ŽCíÿ<’¸éñeŽtæ,ø¤j'Çœ(΃÷Ê|Š”Ò0Lgâ ã¼bf1»Uä>àÜ¢G›Z:†XMäƒßYAœWôLXŠ5.Õ\3ù#°O™#ÎX±è³³5¦$²k—ÇìŒÕ'È‹`ƒ¬Z%4¼»÷9¡ÐòîZ¹Šýö>‰'~(øÃèó OžT<šöJYN>›Ò÷ô -n"„8/ˆõE9»¶ðW†ìöi—*.,!&8{ÏґΙd§¥³øê‹øŠkĤ'äsôÞpî¥õóXOÄØ -Ž¶'\{âÛúKßyH'¾;
¾rç«ÎÌ‚1‚üÝ»9àô°8°€Ö#؃QÅôºi]_]ö_ooooooooooooooooooooooooooooooooooooooooÿ??æÌÙ°Ë/ÎÏ^Üg?ÇÅuûßá¸ÀX{û9>Ë\bãv…øÇ…DEúÅ&;oÄ—Äû9×]Îçï÷KŒõYî³b¹ÏçMÎó]\Ù¿Ø3Ø·8/f?»|éÊÕÎË´~áÎóM¿Õ™}ÛÙ36$8$’}QçïhúÑMìÃ~ɺ
ëV,]¹bùçõËW¯ZºzåºuÎøò†õKW-_·ö_¾Ž/¯§ÿÁ—×Ðüþåÿþ%ÿ‡/ÿ÷/9d/ØGÚ{Ûopž¿ÀYì—;»Úǘ®ÅžðÀ¦îd¯ø÷Ã~p…³¸×~Ù®À„ÿÀ$wgÑÃ^q^îLoØôç?^Þ:öW-_ºv½³ÁyûïÚ•ì»â¡ÿoO`?òæI¿Z:ýýëÙ–³â™ËíçÌ¡Wˆ[¹ÑyõŠµk×Ù‹®¶û\Íî4®Í]€™—lŽòAsOÎÏÌÃÛßì€gÙ>wY³g—Vãæ®h´úCfºÀ,kŒ9êƒ2¬õAéÖÚ€+/5Æ|·‹§fÛæ}×=’ƃ3ó0Ƙ{èÃÌ÷¸‰š].Þš}{¼4@ó22׶òö‹¶à"rmõ¡…¶ž)VîZÍσÈ>éüã,õùô¾I–îÞ>ô·Ý¼
ìwè4»·¹²ÏZ·lŽ±Qß¿ß—~Æ[ -1ヒ!ebH©É"cvË4ŒÒcÔ•dzÃsì0òL£-‡ËGc¼ãÁ8zŒqLC~ótŒš`’?c©`<’'ái¶†¥Ëª‹Ë1–‰29"Ö$(Øg%4ÅF‰†DIÝxÈI‘4 ~#H‡’†ËA‡‘†Xö÷ãË!I"DgØ‘4B`Šµ#żьSüÍ!Gi! Æ -#…–c!•å$
çn!ÅVÆ8
oÍÇ’„$¸¤°tŒKBBU§÷5ÓÉÍDŒã‡±÷•b«¦WWKO.0dwOÇ(²·b&øÇ[AZÞ{ñÀÆl±ßƒ±P\ÏØ#£IÂ(³}ª’70CÊl™$Ä9ˆqUìëµc¤äZ'!8{¸·!Ò²RtÖ’ÌÈ8>‘Ž“dMáhº&È>> £L8>OÇÕ!ÕÀþïfÁK¾æGô2›CF2ÌžÞAf^Z?3w/UÉ%F¤p’s<°_Ñ -ÒÝž/õôÓ衾tóÐi0>-®íícáv@ÖìØë©9€ñV¿dk9²r¤W=ZŒ(¡£Ìhð6ÆY¸²ŸsÝ i^_3Háu@’Hç“`)¢-… $k54ÛΑ5B‰/å“Y››®¤ÕŽÃqs={¿ì5˜+I5NjFÛdCN—3¤‰Ng$9«äR'ØžhÇ$Z«©-“Øõ¬@–"óøµñî¥öÆjCfåDüŒÄlGŠL²ÁHI“äµÓ˜¼I’ e:lÞ'¥n¢1&ÝÞ›dgH*s‚dI2Îu€d„àwØ -òƒá}B,ÿH+’…˲c3G`œÒ˜ql -Æ|å¸<%(Æ$‚²NÆÈ•šTé$‡gØ -‡[C–‹Fq˜íóÁ‘–b`Œ$”$f E£12o(=³H©¼¸Ôxtœ‘i'FeØÂÎ1Æ9"Œ‚И^rÃ8sÏÛT³»¦“ìÕÑ×ËÍ÷6cŒQÊ4IE1y#tv/˜=Ðèq³gŒßöÌ„”áÜ"ÓmiÔ$¥ÀÑÓ>]Š/%…&§QŒ½²ûFãxAáVRzçd)"ÏÎK4ß³ÝùÈ=ÀÖ›!ÁR+G[èå0v/ã,9ö¡•CÍxÈwÑ„°1FZdL`"[óþf^œQ¹U¼>ȵŠ™Ã0~#D€~`æ-›‘Œ2{Y–êÇHÁ¹6:C¬þd)0‚¬„åØA‚îO(FõL£Õ›îHK®„ØéÕhÊü¨O”¥šk§&ÕŒ5Ä–;ªévjX²
FQ)•ã$Œ:¤XcÌUJ¯¦Q1Hf`TžÝ[Bc°û@ò<IåNj\©#FIJ/¡a,ݧôÆ råõeuÄ(6FQ•dv]!AÁ|/ÆEE§æª¯49µ@%)‡¾¹†tŒÄg Èü§il—ùdæ31*»¢±Tv¯Ä°”á;‡ÍóGct•Æ1Z’×7£=4ž_4šìùeCBù5®x´›m?‡ßE²X¸çi•4:JcÞGúç -NÌÁZSûfCâÊ4Þ78‹Æà -º§«YS µc̘E²1Y#äì–)5£q碞™ -Fú0’Ù0QNKò¿ïÏ´%lI
·NŨšœQ;^‰Ï‰õ
YWøUHáµòFv/a×a>ö y -18 -£n…€]¹íñÔ¸í×j ᤙ-îã5ö5z™=Ÿù$Þ?ÖJo2‡ÿ!Ùà¤a°øf½_¨a‰ÑgwO½Æ[0S…,ÈÚâoC^6Æû&YaÔk#R4Ö•Ç^sùHï/ª`„’P1rCÕä…WéY?×]{5œn®`l&8Ç–ó±„<É ²ØK2ÌÂG¨a)¶HPbóGÂ7BjTM·ÁH¢ZÜ9cËð°-9ŒÙ'»Ÿ4ö”Õ4²<§•‚Ó†“|Xb
øæÒ¨4»ojÚ±‰¦¼ cºZÔ;›åS!)¤–ôÎQË/,†oRKNχ/2$–8B -KŠ¶¢±-¶[È!‡‡a4UM-«.-'׎…ÉAÊ -É9´NÃë$™ -Ë…äÈl;ŒŸ’|îWlé(\K>äÆ‹°Ž¤¤ßc,ò~Œ‡Âf ù%f§oÆòñZht™å‹ÿ»_óû“JQgAš€ä#«//†,6¬2U“kÈWÒGb¹£”V>HøQHžÔÙùy@ˆ¹SHž#¶ÀÞ_LÑHŠÏ'fB^þ -ܤAÕ‚¡YRt©|*dðð7hä<׶~¼¿Éj -¤’Øú…MÂÑÈðïÏÁzÁš‚–»f\û½¶¢¾™ÀP@Öœ¯<7ñdXïø;X;(€LŽÈlâä²â°ÎHJýMÈòëXÍìnšQdñŽV£õäC[&¢–å|b¨Ö£t¶>qý”äG°+…°šƒÅ$!ŒƒÀdkžÅc`µ`ŸÒáŠQ@Gà:ctÝKÏjÞ×½$ä…xm‚êöpsÌêPsÈÛóC}äg¸ÏÌg!&³\ØF)½¸ë±°RlÙH’'e¾ù¡àfÉE[êb,).É…$[Cò2†ZV—›dýâ-Ñ›"óíxßxK/ÔëJ¤…§`Žzõ®›Þ'ÚŽ$Ëêt)$}8$õ ˜Vãæ³{„<èä ¸ög›i}ÁeVOà:mqÓŸü»uíßn€&ÉõÃSÆêc-½%Õ7¡ñýÕRÍ+¥øJG. Ö -=ÈR`
È1™#à7©Î¬C…ÕÒǧ@FИÈr‚èôjT’-òO5µdê S oŽ5Eµ«µYŽd
9ÈNYn ) äšq‘–„ä*“êÇ’¯e1ˆÊ
`÷Ìg›äøgK5W—É$Å\0’¤àêî®û~Ø'|íÍ÷¿"YP’v‰.‰üšddçÙÑ@מÙìy|'â5Ш-„pöóð•èÅ”8ð‡R‡Q‚œ ¾ÎxÊ2Ú§’Ô4Ëq •B>?Çòj
HŽ5®p¤™c‹µÛ$ËÖ‚ŠzŸY\pÝã®Á}×û&[¡~VÖ´~¬€€¤´^ -2—²má·%æSÐÿ€äåŒÌÈq€ŒDò±ql-
ƒ4Ÿp(c8ÇêjoVÓxé|4Þ²¿ÉJ²¯Ã÷‰‡˜í¦YC:õ:¤Þ9%ÖÒ|ðãƒR¬±õ¾‡-i1‹¾%|'«÷,)þQœ/°2} -{ÌérzJeñ½'cvëtä¢ðß -fõú05†å[AÞ‰iæËɇBÚ¸T¯9Bª–P¥§æSý›Õ:UÍk›Ž<=C5µjœ!¥Î$«˜Q;‘òå’žY|Çý-„>J,~&É?5ÏPJæ ¯á{_ïäû¾ÛAxÇæO×K5wWBÒP+XÄ
’>X"ä«ÂñO×Iµ®–Ò›& ?BÒ†Cv\húbßõ|+Iª±•Ù1YÌh7åG®-ÝÛ µ=Ý.w<Ù)·Ýw\‰I²Å•œ–)¨KIº’•ˆK@ ä÷:S~Ì>”²+‹¤ª›KÅ£Ÿ¬uóÐkÐË€]p×›êufWXS„á`u?Iȇ&G¾¡ ædõ¤Ïhm2»GŸý)ºÄAfudÉÑ·CÞËdþÓ?Õ5$ A$Å×Sn-GWŒ‚_F¾ƒž0dÛa“q—c*G}®ýÍ¥L9öÈ(% s8lòŽÈC
‡©W©fôv©ß™^7A-=g’ó@Ár¸„üQÈõHº$.o$Éø´OãZ?YÇþ«î/ú_¶éµca^j˜9ú²äF‡kEîXçÌOP~™¨œÆ)ÔÓGéÈ©ÔO¢þÏÑIE_RË2z}ñ襰|ƒÕë!BoÜÏb*òÇÔcLrC,e~’j¨ÈþÜò}’¸C½•e§@â1¿É“‘$Q÷LÈ5B>Æbj“”Ìê—Ä#£Ñ_GAœð6e -{œ±”–.BÛ“Í|Ç“-RãGëHn%öQh¯dÕLkÏ/î²B$Ÿé6È裆«¼µ×[ì‹Õú®›HR,,ÓV8e…z]D½Ž8Éò&ôðßÈÛS.•\7–Ö»7ȵàC#cÊF*©Í¦z=¡tõ™ÏE¼€”´\|~žPsk©\ze¡œxlœ”4ß'¬{mÆÔf“„.»6jÂñq²Õ¢&Òò@2ó·è‘éY
õ¢§Ú`OÈPÒû{½žn‡~
õ -™/“ŠgQµ[pü0HqÃ6eôñ~GBð7—§¿Ý¯\~fäÚÉÛ7H)(k¸àÇrÿÖ¨éäÃÕŽˆ[†ôã¥ú{S*³C’°‚¬2üg^×H°’'z¸^¹m$¯ù»ôžƒ’Âê:–Àß’Œ•©^·G…×FŽ9-Så’¡9¬v^@us&»& ª1Ôc@Í_S~f!jz¹âÊbøD¾ù“ubÍ{ËÄ -äþ°éüQ<«ÄC)ÃH¶± gò)8a˜O^ÇLþøŸÖ+#–^œ'DW: ¦¡wD²Ú;÷ä9û¤3â4Õ’,¦CƸ3¡šÕ•,fC:M¯ÆX -߉øÕåF–Û4?ûêsúyÚKl -ÉT©êö2êGDdÙ!Ÿ'¬BLÉ(c8[‡"¨n#$DÃTqèëý?’€„0h¼¼T
Ùös ýfƒ<¸¥ß‘„À{3¾AB¥7ÉZ¾»ÚPpzžÂr)=RV¡ç™?8“p,'E&´}±I¬»ºÈü,䥲k¹¦Gë€2É]wLE¿Šöw³|{fðQ†B¶¾™ÏDo–¤è€AöK¦=7 @ä¾g®|÷w."«mI>–åCí„Og%Ð'BÍ/F±§þþÍêa}`’•§.ÈÌm·€ž§9Ø|HÚ0`!p@ÇÖ®ÀÖ<Ðè'áÌò( '@M„ûº5¤}QÑú—,§[lVÊo,%ü -9p3|èI#êHPÂMÐìwç5Ò¡ôáF 7˜¿¦þ䡤á¸ß´¯áiEŸƒ¢p”p€±J·ãƒÈQnQ}ÒüÞfò‹È9Ñ뢫þæJñØݵÈ3!“ˆ{ -ß »¾Ò$7Z=öQó[±JòŒõWWH_»A†~{(ÆdæËKºf+=öžéÔþo=…¾ï÷pׂ©ôô\®åBBÍ_l $«ŸqÞÂÝÃGã¡D™‹L úP„Å.lÔ -!!rMHõ_‘ÑoñÖ‚oˆ¯„šS¾‹=aç…æ{›¤ãŸlXÞI=ƒ²ÓóáG¨æL=:^-<7Oìúv—Ôÿ£ßý›úÒJÞ©YrFÛdaðû=ÀQÍékÔK8Æ>•[0ŠÎE¤ÔE]ŽþjuÔ¿@x"ÿCM
Jnˆ* dö>!/+4|¾FÊìŸÂEÙAÆ«ûÔª!æ{w{j\vîÕ¸îõÖxJ¡´Š¼Sè|¼
r³/GKÇ?cMõDÕµ•8óÅ[K¬–Æ{W»îíë?\£²ØF½÷”J'ÚÿÃYŽlȶö8s¶H½ßº¢æÊbØ÷"ùw$DÜp!!Î.…¤¾W2½5[O<Ξ°\ÓÑ4Ù€³Pȃ“†¡×¦åñ`¸¥šX3–¤èqæ¢ o6|ì•üäOß٠װΘÓåŒû‰þ;Ðð)jQÇLHë›n,O¿ô”û_¸ãþ-E¾¶åÞ6ÃÐ}Üù`—tìÎZøqè©$˜Ñ»¤ó 3-;¹ -³ïK]¤î'»©>ézá‚=`{€µãëÿ¬Ý”?°v=?ìƹ`’§síÓœkÀ߇4zóýíJ÷ó½BíG+p`;´'´öRQ££—†xÈj$åìÞïÆ{Q†whOþ䂵 TßY*&wŒ‡ô=jMÔK´|¸rùâìö©Rº_턽»±|Ðm×~‹jßYœW#3쌈#@ˆ†Åƒ7ÄVйb%¿~ -É!cïgËpæ‡ÅERÊeWrúf`Où/aØ°G‰ýv/qV>ùðyjLþHêõÊ´QâX}j¶Rscü¡€$Ï -ç}|’jÆûÆäŒTÓÊÇ‘þïGÜ[nðÅ.ãµ/}?üSŠxñ•ûTÜôÄ&ª×ÐÛ±òÒB`i…žov³)t>Û&5|¸V9raR88‹ºØóOU`O{°ÿ‚„àYýJûBíÓ/G=¡oùb°r|D¾-^lÇldŠXx~pЄ–ÏocµÊñiò$âÎãÕœ["¿½1ÛP84¹ß›þ*Õ´¥sŶϷ©í÷(w ½_ýµÞ`íN¾ðþß±vO]€µÃ9LZcè1[$yøÊSýÄâ?ÎAD˜¤ÂÓ³pF -æ/€D•3ëMg>P§ gguÑÅYÆŠ+K€ óAØoÀ>ÊÁD+ìSa{CèQଂšßéLçÊoÀPa¥,Jª#DÄ
£32,¢®!™røÔŒøÈh™ôzµ†ÜÆ©jÙ©…8ß+ሜ¶ÚûÈ
øS}ß·ÛèŒBdþœ1Äê;¶>؈ž $èÉ·£&Æú*>=ÎüÁº‚Õ8»’Ý4…Ö*°’µW—“¬äu›ÞSnï±îâR®çÑV®õ‹u‘3s„”£cq&„#bÿO¸¦;« ”Q;Òùô»ÓA¦ì¾éîîØÔ7B*êˆúÈ„™,¿¼8pCéé…t¦çÀqvk§äܾ÷Ç]òÀ/äÂËóè|
ðYÈËJ†æ°ša0.$—Ìê -¶× ¡µ}TÔ”¨»ÓŽÇé¯cù
r] p²Ú&cß{~bp*Å}Üc!<i8mÍ윂=ZÔ>|ÐÇÇÆ 1Åö@w£Nb”e¹tÎ ³\ýÙjärFÏŠÍQyö´o· <,2ÍNeñäàé¼D>õ{éï nE/µäì<ª7*¯,"tI.γûgXœE}”³µêê -¥üÊÜ[ìYc¯žÐècbÿýBœñEŸ?`&õ…°gÊ|/í壇…ç±<CJ*M~ˆ$ì5ÃFk®-'\ -êK³µóz¨·)Ï83{Å„goût|ló8/Â~Çb¹ä—ÅþöyÑÓÀyáèG«…¡]õíO6Èq•£yÿ:+‰ž"ö®±Þå’óó•ôöÉ„fIm˜€^[sh(£ŽæFhï?©Î‰PÎÌ¿©¥'Pì§ú£u -}?,ßN --¤:£’c‹³(è£é}BMgêý£,Ñ[ÒùDY gÌEfÚrÁ)ÖÀˆS"åtMk?X)ÿrÖðc¬®7×1‹¼gs A‡ý²ôêq@;á\ŠTsg…鈘J¯g*n.ï¯:–êyæ[a×8'ê“ß9‹êRäÿÀ~°šX9ruöMý€þÙ@b©eW—H
¥œyXJýxú sr—Q„¾0‹—är:¦Á^¤Ú;«€â¢þ%³{v]ç -¬$@Œ
7VÒ -®wEïê bOûŽèvM§ü‰Å3¾ëËBÓí5´oUä -ŎÿAÌQK/-’ê®-£(0Ó§žyñm÷7 -Gf꽪ÐH+Šw@¸ôü°ƒïþq»X÷Å\GøGœaë>^%$uÓÚ'HE§f ÝßìPú^ -y'¦s…Wgzµ<]áué¿vëoý§ž¿ûoîOÿÓOøðß‚ôŸÿßu÷ÿË_xýtùÇïJÄWËü#}ôK8®ñþ½<õÁ“LùöÏAÂßáÖ¯ªzûëpãͯ"|.>ö7ö=ÑZí6t<Ý'v½ØÅ|Ï&ÜW¾ææb±ãõvµÿ¥·oÿS^éøfR~s)jEß¼¶™†Œê‰¾‡‹}òæÈõØ;¾C¸&`<±O‡ø(žþÖS<ó«·tåIºòJ–n}{P¹ù4X¾óMrê[žümßþõ&}ßÛ¥Óßj¥‹ßˆ"»‡ÜÅß<¹ÿôÏüÕ›¿ð›·tá[A¸øgôÎ+E¹ôR5\}à{ç³Ãʵ‡¾bï·{ôÿ/koÞT³î}O
×(îîîP£Þ&i’¥‘z¡@¡XKKݺ¦î-PA÷R¨»+uÁáÙ{¯ofñ<çì÷œówïëz“k‘4iÊš™{n™¬ùý3÷cÙ}ðPG6GF¼ÙŒìÙqµW‡¾Òi€¾¯¥s»‘mr¤y
¸ôf
M^iÐÁ3Ûԑ ÿKkSCßY`YÔ°kš‚üÑCDÞ>q³Ï»3b„ßúhŒßùÈ%K©gƒÐôSø‹êõÀу^ÑmØÆ‚.œ~Ð,?l· vˆ‰»½|´Æ,¸ÿÕXXø•ƒ=ùLPEßýÝ{ñ•¦+;ω+k]Í^—:˜=-=!)¨•’yíÆd΀>:7*ºh;Šl\ùþò£„.ì—P™Ã:ô×Ę̈´.-¾…‚‰å9E$A‰¾5}ûÎIú¼Ú^t·ß”.”Šou‹$¹¸$¯™ ³Ú
D9ýêZ¿ôx’´¢.ß]EÈÊv²2¢ÑE;Pþ"ºçydÙQv·(ëƒ>‘Ù¯%Èý¢!LÞÃÏþv€ŸûC÷ŽÁømÌ1áÀçÅáôpïe¬áËI¼ý‹9ôÑ—úæ--·¸';Úu3A<Ò&êÿ,íi7ë’éz™"iªõ‡ý(&Þ|µ ‹úŠËš/H_µœtH¤wÌÌTÙY¼*r2TvJ|¯^Šå|Ѧv÷ -¤ŽP·1<±~ZÿCkÆtNú!žôj½ÐüvµéÍz)ª7‰¬nm -Ù•]âN_\Øf&zÙxTò²ÅNXð»öè‹x:,¥ßu¢‹úŽ’ϥģ!Š~ÞmI½í:J}²&Þ
&+úO‘åƒöäû϶xñïÖø›o¦ÂW_h¼ø“9YÕg/骼,é.ÕV¹’Ï?˜B"wTKï:€]ùtÍò^A=ì‹´™S÷Z(2·Ó»Ö£Eçtr¥j#û–>:Fßé ‰Û}&ÄõcúN!¾ßjN?ë2Ço~5À ->S·º0¼°[€=êÃñ—CR¢è«5UÚoOUõœ!ËûN’5Î’µ=§ñ#bòA‰bþbP„ßû Ä
é{í4ñ¶ÍŠlî8G÷¶˜—G‹G[„íŒ=¿±Á[>;Í=È7ƒÖxþ'}" -ÆP—øÙ¨.Cßi²¾æ¥(> õ*~Týþõ¿kÑ…=É»jG›Ç/%É:dø£õ‚[ßu±Ûß…¯>“Ø“Bû«†0ap§ õÛ^Qú¨¾4§3¿[wTú®ÄÙ´²ÄÛ¢ü¯YQ…‹øEÃqÉí6‘(·Û„ÍU®ê¢:€qŽÊÖ‡9áN±ëÕ¤†]¿ð°²o–ÄàgOñ§òPñhE(ýéCõK_ ý©%ˆú:t‰òT†íÌ•lÏŠ¨MŠ®º˜p¤çV>ò›—x¨-üð‡û‰fýå2ñ@G¨¤»-˜hìq„ýiO¾µ¡^Zs¾kbY#ê’—öfÅUÒÇGéׇ‰û£8ù´O,.ou2ë(W¶»ÒoÚíDeg$%µÎ’Š:w³º·Eåíç$¯íEïíÅE§©W=6Ä›^ñËfh5v’·§Äŵ§ Ï35¹Ò·W|?±a+ÿÎ?´ùO¼dè°¨«9@ÚW!ª‹õµ^¦‡Ú/‹û[CˆÎ.‚Š¿™*þ0Ã*~±Ö|±%>|t¥G[%Ÿê"mú&ˆ?µ…5N¯ú¥äA.õ~3ñzÛ¸¿þѽ&zÞbcúªÚAú²Ê^ZXc-)h1•Þ¯³4-¨3'u‰©'¤Ø³>ŠzÕa#zÛrRü²é„øI§èq·%VðÝ{8Â'aü¥^uÚˆkj\Eõ^Ò¶ÚËæ}%1G?¤Úu^O=Ò{?ÉzèU‚h¤>PÜQ ªlp"^™Q姨öz/³þ÷1Vƒ/ãuÝJ±oÏJ:לšäИwº5=ñXgnœéHQ9:à'løå8ÿáïÆhýG|&REäymžñAÈ1 ® ߆b—Ðëù"^ÆÇdñè³î÷–]E2óÆâ`ëžgñV=¯ãéº6aÉwsÎ}FCàÿ|)ßÊeŒ±) y‘ÇÍ%âÂ&KËž×qv]·ÓεfgÛv<L5m.DqºÝŽ‹òZMD…°ŸÞ”;˜5I_ל¡®·ñ$·;DÈÏPÝ>Ç»r Í%¤”ûÇUÇ#´î¿k:ú6Jòé]„åÀC™k“ŒµÉÜ -¯Ø»ž±Ùå¾qöíñh·Ö}…±¶]·$õáâáö«ÞWqdˈ3ÿc„ç~צöí#ýž¬$®~Ñ3{ÚpVò¤Ç»öÇ!,¼|#?¦n£ðù7RÚYdÓó<éH÷“dÓÁºhº£ÅGÜÛ|Ù¢¿4VÒ[B–õØ ‹?™ -ÿÎ>ëÇÉÒÎãdMç9a÷#d_“«Þ'q¢úJW“Â_u¹Wê·ñrFöpîýPã1†ü¶ßÚu\K̬öIH©ñM -i¸œâÛžz¶=#Õ¦ï~‚äKM”øsgý©+Dô3Īÿaì™ÖŒä£ùqæC£õ?Žðîü®EÞøÂvÂ8?¢K>\GE”lC¹+™ÛoÈÆÜ{úÌÿ®w`¦×š„’ô.*¥æ _ºÏû¨+~ÕigZSé#©¬ñ Ÿ˜s~ÕÆ”mÂÂßmàËÊ7aOG1Ic¥ï‘ÏR÷=O–öT†Š>4˜ŽVÆ8´¦¦ú7†¦ù5†¦¦×y'4†fJ:Ê.M]g͇KeÞ-‘—š/ÇG·øÄ_«ó”å6¸G߬ñˆí½TRRs9î|sB¼ÅÀÃj`À¨>I>1—<k9.yÕb/yWï(~ÖbKÝm'¨í&¢A‚QÆ™úÚ{É®=?ùtûÕtûö¼4»ö[é’žú ¢ìó1~Åß$†¶Xíßrß3<ã—Œ7«oïêǽ¢ÒN‹²8«þ—qdÇ€+YÖ{‚¬è>óg[ñ•6™ÿÁHt¿AJ—VŸ6kydÛu'ɪûIìÑ®û©çÚ²²]Ze‰õÁ±nÍá1aµ1ת½dwÝbŠ"+[ÃKê.D׸DU48EÔÖ;ETŸ«k£**\£TºÇ\«ôŽ
«L´oÉJ0~!i¶ì{"Úþ8%xÂðñûÿw¾ ȇƒ"Ñ£:ï#Ìøª-Îë%È{ߺ²ÇA2ØF÷vP½ü$ÑâOÕ‘ÄÈ€ý¹;H:\e6X+#;zÝÏ`Ï>`¢·
Ç¥må—$ÃufÃïe>
áé!Í—3϶ç\µê}', ´îžp¤¯ épßx玘„ˆz¿¸»un²’Fç¨â§È×N‘ïàcQ“sdQ£sä³:טB8ï2k½ã²«¼ãÒ«}âjC¤ŸÞ†s+šU±FÇhÐ÷FDâÃ’{}–âwí§Í*Ê|ÍZJBÍ»ËbDï[O sG´°+CZâÜ6¡øQ—µä]«ƒ¸ÆäW_,%
þ!5Á™žõ²LóÎ]Ôy»ñ› µy—0ï‹ùdPD·µúœkMÏ8Þy+Íl°ú¢x³¡²ñ×æ«þ¸mq©)^‰ ¾©ö9é’áòª§ÉÛ¶§ Ù·-4ů981©ÑKv³Î-µn1á8½ªr•½,óL|VæWPá!K¬ô‹=Ú+úØBw·Hëë.Òo»ìÄN¢ò'qu½+š²²‹Ð®ƒã‚ªƒâ}«#½ê"ÓÊüBªƒS‰Þ/“7Œ€ßÊ=ýSXU`rbI@|v‰_œ[S,´¯´´ÈšËiGá¹á#£žÆïcîÆXØþýúÛvw2#êBóCëÃòí;o]±é-Œ§Zª/ÐÕUg}#¯¡qBÇ«Z—˜›õî1ÙÕ^1w\cJZœ¢2[Üã÷$à¿ô{ó[“¡Øñ¿3ŽØ÷OžfÃOÂÝëbCj/'$WøÆ^+ñ‹u?Õœ{º9#þh{®L:ð.ܲÿ™L2Ð!ùÐ*iï¢ýb…ßü»!ýük˶ÊØÓm9™'ÛsS(H°|k5ð,žþØ}øÕ™ì÷}«;Üs;Îrè‘̤›9fÒ>z˜øPïr¸ç^¢wsLžiSÑEîkÆ“óm'øÉ"Žsš2×=m'½m‹Iõï"|°×ýXo^bd«obR½OœMß-™É¯ÌYã^ÆÔh€3Ã!†6fHãQÆÒä+sÚäsŽúVçO}¯óǾ|ñ0î`ÄF±m«x÷]üý+qYû³úºÀ£wSÝëc3b«/¥^«òI¼Ðš˜)é¯
¡›[½¨¦nQS·d°%ütË•4Ϻ˜Ôµ‰)7‹}ã½÷ŒqjN‚>ûy¢t¸:Ú²¿8Þ¦¯0Á¡=-3¸)(Ó«!:õxWNù[ßE¢§Çîo…¾³:Ú¦ÿA‚]Wn’C{bbB³Ob@Sp -ý©=ïûìŠ÷|sá72–œ†cxotQdâlÃðüùúeŒ¿÷û Ñ/µa—j‚²Ê|d0îÉn–øÈ*CbìÚ®ÄØô܈!‡Gü¨æäëOÖ0Ž¦Z{<l»’ýêÃRï¾ó’½*w‹)|çwç½7ü¬·ìé{OYv©_¼u/Œ±C%Ñ(¾Õ'>-õ½-s‹Ê…>«¢Ö9b´Í1ì#<J ¯ók -NþþÑS¿ƒá›|gÎî½wµÅ#¡¤í|ä“Ya‹Klx[@ºè{U¨è{mŠ‡æ£ïd‚á_Ÿ3ê·ð©ºG왕? ƒÝš`ûÞƒ`çM°u§Ø¼ý -a^”Y˜’ù> 1»Ü'.æ
ñÕþ‰(Ï´þý˜éÇ¢¨ì¯¸Wп=kuŠºÓéy§Û)šúÑrÙ8ÿÓ®“lš–¡¬›¿,UœY`>Psá±>_;n.Ø4wÐÔ}±«¼®ÔGaï~¬œ>ÌsàoÍ“fiòsÁlÅÅ`þ¸•`±ÊF°tþv°fØÁ³š—kfê½`ö×1´°÷sø{ÆŠ~ÿÙÞ¬§T–ûÞ/¡ø½{ôû2÷è·•.QOKÝcÒª}âã+/Õ†¤úÔF¤¤½H¸ÍŽ©,©ôbBtù¥x‹Á§2¬ç—óÄÐ ·kkTBCÛùˆæÇp8‡’±C>-W/ÿ—zî7”
œ¯L3ö¸;Ë0´t±Aþ—Íú…ßaðÙkдRo–/Þ–Î^ÏZÛ0LÁ$0L€ÇTø“*˜+ÌËUƒM»LÀA³(õóÏ'i$.Ðicty_˜ü_gÓá¢Á¾`ºuÔWÔÖ îï±ýp+áb]hRòû€Ø¬·~²ëï|eÐ/Æ^+ö{\æ!{Sî}µÌ'úcÙówž²7ÅžÑÅåîÑ™U>q±5Iíí¡LŸ}ä—.ç´_†Î„ïɈæüÆ;ôŽÙ¡å÷Få€ØYnË^-°jåb°~Ãj m~J^ß?o–ïµÚ¶V,Z¦)`”€"{W‚íR€w9 ÿçÏŠð•I°Õào?)°¯M‚÷…“×€Í[E`,賎*ñ•½‘%>Ž•½
ӁŒ/½›X|).»Ø?öê[¿Ø»E>±/ÞzɼõŠyüÚ;¦ -Š»óÆ/þé[¯¸'E> OJ<“î—zÆ¿|ëÿî•Oüë"ï؈Ò@™wMdBxe`|Xõ¥¸k5°îªv—ݬôŒI«ô‹ãeÎé¼fvjÜž¡asA~ÓÆ`¶üTÖdzgñÚœ<Ûÿ -¬¢ÇÿÚ†Ÿ–8¾?–{?ç¡û½6Þ'B¯:ÌÓ•–ƒyª‡Àê}ÇÀNó,yfFûÜënÞÿ(4¿Ä;&¬,(îxǵXTÛ·dÆ¡¼Õ•0÷Š
„bãm»òeèõür¯˜j˜³778EýÌu"S½-‡ -e0¿kœ»`Îìÿß¾W„Ç?·õ¯×P{þ|ïg»Ç°=3öÐxŸÊÎÞŸõ§Rø³ãÙù7kÚV°vÏ1°÷èm%›Ìa?ãdÝq/òtmv¼ìýeÖO¶dÆ6ù¤”{Å7Á1l.ñJi{ç“ÞVî™ÒPåÿú½W<´Ï¸'ÅÞq)%q†£Œd‹šÌœ¬ÂÎÿÉ/ü»·¿Úù?ÝP›Æÿ9¦cà}Ûþ©ðc¢òv°d•¬QwÛÄ©r®1Œ?36Ö-·.¥½Œ»ýÒ?þåŸÄ÷o½SªÞúdT–y¦=/öN|Pì›Qì/s¯Ž‰E‡OMX,Œï²øZ_™UßíƒJÆpݪÿv;~zCöœþiLåþ|o|w"¼O—›
f*, -0Uq9˜¢°L¿Ìž¥Öªy½GÞ(i¼e6Qƒo=`Þ"ƒñ -}e#È× œü*ôÅen²ö¶ó17aÍéÔgü±ÖÉú°rŸÌV˜òðß|%úù¯xæédè•P›TÇ -Œ}ï|³Ûßú_é.õÎ,õ»:På}e¸Ö+{°Á#£½Ö-¥²Ò#Õ]šÕÌΩ -ÿoüã_~µå)h¼T•ƒéŠªð§©pQä‡ñS~ô%‹ÀLÅÕ@eìz 2~˜1i+˜=ÿX²æ~:ž`+•.·ƒÎ”ßÒ?ÝøcI÷¿ñH|{ïÙŤÒ"ïĪb¯ÄêwÞ)Õ‰¥Åž‰ïÞy%Þ-õŠ}ýé«R8ôz\¹¿L«‹ÑX»IãßnË_~ùˆ ¬gûçóq¬ÿçóipU•–‚¹pœæ©lógmsæóVhƒËx`Î2˜³œTçiƒ™KôÁüU$Ø` ö¹wLVÏlxáý",–Í[Þ]Ž}\ì%ƒ¹Y\B™Ÿæ™ñ¨ö¸óæ/0+/wm|çû®Ä#¶Qfô±Øs,\~Ù¶½0¶Nû—Û…üä8Ö3(²ÏúÀŸsp›L3ågƒ9Vƒ9Ó7y³‚$`Õî`évxóÖŠÀ¼¥8˜½³qÁLUm0w®ûÞ&~<ØïÑ8Yû£Ëb¬-[ï^´¯ÎMy[ñÜ/©ùoJÙ[Ÿãß”¸Ë>Tx$ŒÔ¸%7¸$Ž4º¥6Tx¤ œÔà#Y¶Ãäß3tþSÙmêŸÙãϘ‡æÞÏ÷&Ãw§ƒYcæ€yW€9“ÖUåÐ7¯³¦o€óo˜£¼¨ªì3T²m›¿ÚÌ_&K7Ù5`»Õ]…=á}ÓÕ™ÕšeÌNÎGæðᦼ@”ƒ>é—XÿÖ;¡ŽS}¥[lW¥G2šsÝîY]u]Í®éï+=`-¥ÕÈX±Nÿ߶͟mìø¡x¦,?(+À - Î+8çf(,‚¯-SàN…‡ÊØe`æ¤õ°m[Á¬9;¡}j@›ä€¹[ÍÀ‚ö`‰¦;XÁ k¨d°O[,ŸÊïøu¦Z%³…,;ïXœá÷.::è]hL9̽ê`Û–{Ä=†1®²Ì=®«Ò=¡¯Ú=±«Æ-±ègüÙúäí÷̾9SçþËãö×|CþEª -ª@uÌئ¹ÐgÀ×'È=åç{òóêøÕб›¸ úÍí`Þ¬ƒ`ÑR,Ûv¬<è–ëxƒZ^`‘š3X },Ôv«ù1`³éù=SÕŸ0k¸Ã̺ïÇ™²ôPߢ˜¨g/§Ö=÷OozãŸ]Tä‡j†ðªÀÄsɉŰNh®re×!E_]T¿Ã¬˜3gÓ¿ËÙ\åˆ0z)ÂX6q1ôýË€ªâRèçA‹œÉÚ¦ -¼ÏŸÛ·Ìž¸¨L\}#<¦³f@ÿ¿Ì -ß“ýDNÿ×1û™ÿçÏù’Ÿ¹ðx8Zá\›Çp{ÌPXT§nbÇJu´AC0Úá°p3 } -Ì[n -6‰`û‘g -[#{&í~ÄÌÕfÔ´>0šœQƆ;È£†ü·ßŠ²kʉ·ê½cך›˜ùúRbڛˉ'ÚòRÌÊb½c2«ª.DÕ8G&—ùÅê
1ø£SÿkÛÆ°í™ÌÆæi@•õÙœ"ûˆrä/g(-€9È|8U²:ƒS6€9KÁ25˜Ÿz¡x rhæëÌ"µgÌj”Oª=fVíOÿÛœ½²A•Ý}Ó÷xUMÚsþñ¸AÕÓ50k52&Ÿ˜Ó¼OÌIúKI€ùУðÓÉ2TÏ¡šåšQíZì÷¼Ô=¦²Â5ºÜ-v¤Æ3¡Ü# ûÒæ¦åY®‚|òïÿŠmŽÿ3–#ûD™±êØy`þô`é:C°A÷X;ƒU6Q`½ÛÅ
ïÇl
*¿Íïý¸MçŸ(nr©´# jÂŽàöI;›'íp/·Ó©hì^¿šÉš™
šÌ~µ›Ì2õ°öYZùÌ*ÝFF×°™u1"£6†Œ2çëbP΂ڕsgÏÚ¨.ÁúÆš -lÄÀzì"Ø$ŠÛŽ]WØÖ0e³@í%ŸZf‡f-³ù¿}!MÓwÚæ(lƒíÒX¹=vוxUN9Ø¡¢‘ðuþ¡ÇÌV˜Ÿèþ˜ñŒ:P_J|
ûZ/¤bQlÛj^DÉjüî<º¢ÿ¬èù·#øí?8Âì¿iPùÿ0=ünN=ýlNJ¤ëmÅo;N£ë8%Œ‰º8Da†Âÿ÷ÐzšiÊã–À\+X¸˜–¬3Ëv+uœÁ¾?X¯wl<`ÖmÇÁªõÚ`õj°~'
vb!r»Ï>»çBÉͬ¿/Õ©c´šãAÆûòÝæûf”èséEÁ·oNÂÏ?\;J/ç×õé}ë
o0Û+·‚!ø5Œ¹°eä$ÕÚèF}¨÷¶|oÙ÷*Nô±;„hqâ—3aí£To§Ÿo]DjMå…¿š°x´Ñ%KïüìRUm0÷€ó¶Seâr0oÞN°b› تkva~`îöOUÜ]:]í³VçÃç1£gDŸžza¿Ö¸˜üãëáïõÎü?Úœ8¿3Gu¾3\ÝÏßð;#1úÊX‘ŸúüŒû3½Ð·ó
íbÆëÚ„1*fUŒ'ÿÝ<Ïë³¢gØëXפÃ=w϶f¥ë¾“ÊáÒê˜õb‹8¿'ŸŠyYŸvèœK¸|Í>¶NûŸnSà¸-TÝVnÀ<÷Øe÷ZiwP÷”½Œ*´½ÝzŸÜèWÆÊècmðk¶1{5ª˜mÚýŒ¶ñïÌçÆY~•gLbÌ«>,F4úÊ¡@ÛÓyÅìÒ}Èl׫bt¸mŒ9¿9%ùÃUü>Œúòá’ñCFczL^cÛn` £
Ð>Jt#–ÕªND¿Þ"r¹2_|"j:íù`‘û»!ý`ÄÏù¬KøÞZ"pÉQ5´ »~+Ì›¼ü¿ý§m*À<æXSWƒå;h°Ý4M~X— -ò‡>³óÅ‚÷±ãýÂØs>1Ö†-Ð42§ŠÁŒÊc^3c)a\Lz™ãÜ*†â¼`ôx²®
<¿‚ÜÌþ킚߉¡/ÁGƉßÅ3Êÿc'/°p1?¥qž÷Yx4J *¶`‘/Öc©/wwLDJÅ’ªWóæ·!ô“^s*mô]³‹}·‰|ÐFš·½ -‘ôW…r+rË>ül×è§*ÌÓÆ- -0®ÍÞVí‚ÝÒ9õ¸þ¹/˜õZÍÌAƒ_©ðÇWü._ê·æ ó‘—1è»?j¸ÃhrÄß³Æ^ÿ&&KFOˆ[}%•ížÔƒ1v!m–¡†!Ðß» ëßùÉ•ÛyOþ¡ËK.ÝÄ?4íƒ&mÅr‡uˆ»CaBý¡GÒlÊ?}¡8(k%•X¹ß4§‰¾«p6«,ñ—¾h<Av‹éüN>–Ó{K¬Ø!¾¹Ôðlì$ô}ÛÅÉìÚÁ?ßÐXΚ¶,\«ÖÚƒýö·ÆºÇ¬Ó`X_Akt#eÔÇмÆÌøößöY»+é™=-0á› -3“·8æ2ÉÒ;c%_q€ -y¸cÄ»–Ì{—Ïûѱf.ÐÑÜ°Ä¢í¢×MG‰§=” þíülðTöúóü!#öšècîã K§1ˆ%K§÷hÓ}:dÔËDfŸ–øfEÖõ•´Æ®ýv‹z½Ap÷«^<jM4:p{+FCír…òžÃÙ -»ä*î?’«¤q,¬Îù‡Sµ½Ÿ¨èå~Ý@ŒŽø kq<ë£R°Á¯®Æ÷5^Bßf^ö—ÝÜûŒ¶IÞƒ&ŽIÓ÷ïW›Ï[çÍB=]`qâÔ›î3Ü.ÎEûÄLî~Ñ&ÞwÙŠkjÜ~áîþb ¸ù«¶0äþJ¡[°2ym%~§•Ë^£ùbÀÒäÎÚ‚àW+ñÙ³…–îc–JBÛÓJì¾—Ü>®Ù“êS¦EMŽØ‹’W¾™òx7kt''uh³×ƒYšbOùÍêR°Ææ¹ëÔÀR
s°Ý"JN#¼AU§€Ù û†9¨[ûÐïg¬Ôñ½¥¢{6vÇûê,“ˆ¼%&!™x1·—s³·sóö -Â^®Á\2gã *”sÚlÂýúÂåÆ|âDðd=-} ½ÿ àÀxÅç±Ä\^(5—'|’æ Š·ßn¤¼ÝŽ'<Ú&Ly³»6¨EÞï¢ðçÝ4{]ååä%¤wú<oDWò´þ¨ie·eõ›ÓŠ2OIQý9ÁõQm´¯s™Áu¸4ÑÀ7g¦Îå—sZ(¬ß‡™“•q°€uèêÍ\ áY<M»9d0Àø—>øð¯žü7irƒÑày$Í09ûÒÁ²0êéZÜ/côŠÄ ÿIˆ)h¬®
tvì5m@“ÇؽB,;Î'w™™Sôlš+ -VÊ6g=T,NyN“º„ÍÆÓÞíC×ùқͰÝ|,ÿ³.?·ï ðbÖ,8q«‡‹®«Þø¦ÃOèÚ&Lú¸¿ñw#~|ÍüBš*vÂu<á3SÙ²¸1b„åèðÓjvð£Þ¬áfõïä=`txw™Cœü{Œnü}§Ñuf»Î[f¯î0Ã1ø…ëŽ2ÆÍŒ‘Q)cÈyÅš”1÷%chþt±ñIÏ1K{‹“ -úº`ÏÚE@s×.`Àå -æ§]¦˜ùd.7÷Ë[ƒöI|¢æ£=ŽT^—‘yAíÑÝbAÞg-¡{ü,ÜïêBaöGu¡¬læ¯"82IxõuIQûY²``÷º\HQEû™±Ë7–b>)sqïŒùÂÀ‚e¼Œ¦í¼‚Z&׿ª™$Unæ^ÙÉÉûº‡SsÙ†kRó7‰IÉßH£û¿ïãú_ÃõŒSá]ù¶0Œ›$vnã¹&¨/¤Ì:FNçÑÖrê;÷€]+Vƒ›w#8ïp[qh/béIU‹‹~± ÏïÓÝkÑ÷iª oµ -ˆÜ!},úáÂ+yå=“rϘG¸&C›<»”½ÍCþõa-ìm™è]ÃIìág>ÿú7-AÎG5AÞMâá -]AèÓ•ñ)y¾¥‹’Ðì¼"?*¯±WοM@
æ#¸CÐ4aN¯š7ÊT13·˜´°W”:„̇=ÛFgÕèᙕꬺƒä•=Ä€Þ®“òûµð‹¹‹ øÙ¤_ö"´×í§._Y†ø<–ï^¸hÉK>Õz-Í¢¬ÈGtmˆC†<_O\~±»:¢A<î¡™û…7?ëbýÆxhÁ*Ü-ræ™8›ï–6“xg7ªt×隊¾ô¼¼vBÎPì¢ÀÅäxVrB‡8eþ™È)j°t¬ -˜ ë¦MÊÖ¾C@kï~`lÈe9Ä\¡™&9¦Àê✺4Md}\ ‡mEú/ÒSwKrÚ{ -}ÊmÚ3LåÔIÔXŠïtH±¨7….i³0Ùû-üœauÜÿöR¤ÕÅ—Ç ŠtYˆ:$øÕOÚ¨±è¢M„OÖÜ9B…¼”¿±±‡Ã&Ü¿h›|Õ6¹ûýIþ—ƒ‚àÛKù~7\“g -OLDãbˆôÇx"€öæC[Ÿ…>X‰ž‚츳í+¹0Ææa\ Š¯¬ùxRó^2¹]q³Ïˆå ´áÂÃ:ho‘\³»Úªå´k¡ýâ8ô)„WÚ|ò|„ -~>l:~A6Cã| ~·ÉõauáýaöºOJ<ï“à¯Í¨¢îÃ؃aÿöüé°ˆãWMÌ΢1e.Ç3;¥€öoṟõ%O›ŽšV¿÷––Wº/%¼Âè1nèû庂Ã`½êr°nò"ø8è‘€o{aŒàè…1&–§1ëócÒsŠêšÚà ôŸwîeõØ°³ÁS{ω|sy+è“ŽÄ•YÍ([çñ”åIEÚÎq<b%Ðy-<ñ1QÐk‚$ÍÇB•ÙM{‰«}ºˆkHœ™N»E¨ÙMZ’'¥6–%O½mëîE›½¨<K\ÖE{Ð(ŸÛK YÃ."ôþòbæb<êÕf"ìΘ'¬áç}QçÇ•m2q‰Uæ{_›Ëy¹Lp6qº–6¬¶ïûwj½zÀ˜o%‡öYòŒß¾rX6aX>Y¬Ÿ6€ùʯL½Ò—ˆ"înB{ò$—n k˜ä¯¡ÍN*ò…4 ¥ÇY!ÒÂ8ë?Mä=Š}¸ÈxP˜Q³æÒÐø’j· ->ëSwpÁÕŽHG84é.àQO7b)Mû°´¦}ä•A=v®‡ÝYM\º²‹¯ÜAÞê4!îu -Ñد{ÌÉ·Öøã>ÆĽ˜oîÁqßñ\ü˜¼®tÔ¹€‹8÷¶^ãðÓÓp·ì¹ˆ…ÛxŒå¶ÐwœÇÏDO‡¶°ð…GØÛhß -‘7bH¬ÂŽ{ŒÇNûM"¼2a<¿óÁ¸Y„³ì§+\‡¥Uí#2Ú5‰=†äÍ\<·_›åmßîã÷úhŸ†0£m¿0æÅ~þ°:Ú„jYtÍ7ñ|X*¸2z€ó~?ëë>tþ¸“ÿTáI·ñDðÝUÂœ
ìê¨&âfb!wVb÷Ve¥›ùYý{y7¾« •u9æ`ÛªÍ`ÃŒ¥`×òM`ßæàСC@߈éÁØóc -p §Ãz<À³<© tŠVFìAä_ÐmÄZD¬?·”ÇøÐ÷`Öò¬~\ü›TfÛ!<«]1»1{¯‰DpîròzGr«F„l—ÌYFy&ÎEL,úF£Pô IBvˆ‰[\,ç£6–ûEí Óê÷ >¤½#çàÁW— RJ··Mè§]V‚[¿éòC_†V®çeî2ÉÚ+¸±ˆgå¦Ä£OÉäxç1ûˆ)ü£®cölÙ6-\ öíкjFÐo - -®Áb_lÆ£Ÿn$ò—à·—®öÄ -8DA?»òE»twâe𥧸Äy¾™³"v,p¢ Òm ¡¶÷ˆ˜z3g%ÄÙCüGüˆ÷8Ò=}X¸‹o܉ì1a^±82?8·óœ€w‡Ø‘¤ße”–=ìäÈG„é{ÐÞJÿL%jè‰ôeÍIúMÓ¼`ÀD˜P¾„±_þh
Ú›ˆö¯oº-ùù_5îiª‚³ÑÓ„>Ùó9ßÔyÚ(߶©)Èý¢‰X`Âç•ÐšWl%ÏrZ+·ñ3wáYsMÌœ5÷‚ýë÷€Cûô ]òG€ØR^h
kK{ïI¸½ËþáÓŠHƒ’e¼X9*áN13¨à'ëÓq]¥ŽÑ³Ä‡Æ™v/¢¬ä%‡ÆK½³–’I•ûë ±1p÷U<0w)–ÕrÈhP's;Ð>W*äújÄijZ5D7Ä6¾ wPƒó³&þxˆ·ž½h;BÞèã -r[ÔÉK9ËHϘÙXäݵÂ[£úìÞåÇýbaÁ°îhØ*pŒžŽ9Æ(c™Ã…ÙCjxlévaÐݸGêÁÅûK…çT448`×Æí@ç€@:žHëK €0ö¤Öò,óÃÿËè$Ž;ŽEÌTÖ.¡ß$£69ݺXVåÚÑoeï2‘öKX€Ç<ÝDF<ÙˆËàÿ—÷Q[pWòJœG\ˆœAùß^Ž´6p—¨¤Kœ*Š“¤g–©sÖƒça.î{ué‘0‡eI:ÇÌÄOºŒÇOúNdy;AV³Ó±Ã®ck}íÃGŒ*Á—1hŸ4âíQAÖÐ!Ï6âö¾“L0+9ŽÀ {ÆNøL¤<Òæ¡ù"Èÿ¨%¸5¬‹]ë×ÄrF´…í¨K·W"¶;âÙ]Zˆ±†ØCxÂO†5–×£Kåt“Bòq§„xÔA ®
káÖ!îŠÂ„wÛ°;CÆØOúÂز˜{æ´®&tŠSÁC ÏÌl?€r,¹~Ú?Žxþˆ)ùfa§€]ˆPAk¬®¸¬dvØwœ.
ë `dHêlÐ4êRöRĦ¤|³Á¾œE™úXpÜmœÀôœ"ßò„ÒìÀ“kö"Ä…ä¥"ŸmElÄûd×^Y‹{”eiÃX!H*Þ&ÈjÝçã^"îñ2ñín<µr}¥Þ@’×( ²«t‰+µÚDî€~»—C=é6¥ëê]¤eÁÒÆ÷~hÿ½yÑK'êA‹ù\Â=n6œ»Û‰ƒFh/.~ó‡¡À=oŽ¶.îRB»àIDF¯&™Ó«øb˜Wæ\a`ár¡C¼2ÊEu4‘f«)@|–»’Õc´vKŸ -™Æj=\ÍBLy¤«„ôðP¬“>(=Lßj .aq¾0
1ÑñëC‚kƒˆm†%4íBã‹XtH³€8ëÊS§^éóga}AB_A¸ÊfQÎá3×ØY˜¬Â§ÊĹÈéô ŸIø)ÿÉ8ŒÁH醰: âò¤SÔ´¿ËÖÀ²»ÔǃòI_Èj…Á:'±tÒCúxH—i3!Æéà71\ˆ›ÝFôÃV±øn³„ºÙ(@5bF£µ–!|c5y1}1b=á²×[{iƒà°NÂóGô±üQ]AfÇ>4gÃŒBú3§='Q>ÉPÞ‚]í?DúßZ†twM`-ƒj2¤D^[Šl14°îã9| ò òˆù.<ê8FxÌcî¿ÎmuêÒÝUž%Ð>¨ŒLh€Y:(Ѿ)Gq€ˆ^‘âö'l”t
)`LÚÊÁ¾X€ØCˆéŠ›ŸVD,’åg_[ƲTÐ㥼•t`ö -:äÎ:–•tgûr«)r¥GW|£³¼÷ÖÖæዳæwË©ì}–GÇšºßFˆ‹›í%]—Ì»Š"Ñ^9Ä*ß®'Ѿ|¤Ç ”=Û(„5ˆ0¥|— kà€0äù*þQÿqZ<°Ýn kÄtbãæ)¿IFHXrRžgqVÑk ý¦% -Æ ö”UâÓ¤¢C,;í˜ïDÄŠBº%ˆ¡O:EÎÀ:ŒEq[r¯Zjq¿üõx3âÒ!¦–øzQ0Â'î~ð®~ÙKø,C{"æ”ÑÏ6“‘*&bk9”ë‘7—¡8‹êjÅ EÄöÇÎ\šŒØ¹°i‚ÐgúL$í ¯sR¦oÒ9q¶ð°£’±1ŒB - N2«±í éX¡µG±„`ú©qš4éPŽ>Sé*ˆËˆÚ…tP‹›¼± -ñê`ÓøÉȺº±înËŒr8†ˆõ!Ìj>ˆôX-X¤§ójÊ»¨»ì8৽' Íl0³ã?ucÆJaJÍnÒ1~Wd'oBBßHXË‘6ÎcQ!ÝçàSy¦v¬†´ÀÊŽí¤yfbvTžålød.@1å(
p‹SJH¿Ö)³hϨ9HÅs¤ÃŠÛ¹ŽGëd<ú˜<Ìä„V.cˆs¡Ó‰Ã.cÔ1–SD!V¾{´*xu9¬ÛÕ7‘¼Ò¨GdT«SÑ·°Ì»ð{f'Òî_oZ<sÎúÅ3'Ó›5R–
ózš£ÂÄ7ÛQ,§Ÿ·[Ð%'Ñ>=TÃ#Ž+af}ÙQÂ1ÆÇôùÄéЩh -wI˜…j#¡¥œú~#°gÕn føVç•{}X»jéñ`.
sH‘-«¿ÍšË!&7âO#~)bÿã–g•øayÜâŒí6ƒ¾µ -ù@ÄmÂcËvHn6Ò’ëízo=Ë.ôK^„_ï1¤wšâO¡Lî0:ø¥û+ظƒôÉ\gcGÎ*ñø -Î)!Ê!šÕØD6†æ%²ÃŽ:aµ„ü2g¦ðÍ`~ýbÿ°Öcc¹c¤ -b½‹}ò–±z3¾‰ó‘î«éŠÚëÄJGZ]#ÞqæòTâ|´ -«aà•¶@|ñÖj–'…Ö9cl¢³jtÄ×x¢ôzRöt+²Kè;sω„¢Ýdz…ªE9,«UrK‚ý=iÊS[ö`¹ŸusBÖ¾¿”·„öHž‡ÎMÿœO$ ŽùOÄŽz7ÇlœÆ`ÇQ_8*és)Xóh]+w€=vm
Äå´ã™WÀ£”‰Ë7—¡Ó'±TYaÇ@e±[$Òô̹@Ü'VŸ
ñ© E×£ ˜‡ØBTFb1³¾é´Û$aZÕ^–ÿóbÐœxüI„%wíEšc„}ð87ä
aíel‚dƒxv‡–0æÕFä'uu…@OÞ;Ža3î«ã„4™¥æòˆwl‚‰€¶G,o–}Òue~<f~N‰eÊCH%ï—¤¾Ö¤#mBvMØœUB|02¾d™V¦†¸_”{Ø,6×J(Þg”ïG:¯¨yb¿ô%H@\°±ñ¤â=âÜz>žÓ«Kœ¹8Ehq\‘Õ9HY* -Ï[‡tÉœA"oÐõÙm,‹)àúrÒ6`yÌcçŽâJS¡O6àÉ-ûé¨Ê]ˆ‡tÔИ¡µ4Ä&"¯}Ðe5O¡¿!ÝRç’óØ|=ìùF*¥CÎèÒ•d´I2šŒˆôêƒHQä:ƒòÍ\„X†ˆ£‡®g@|cÂ+{›s=XKÆ–í¤Ó>¢³º$Yõ\³ìZ¾èJ!â'¹¼Qä“´Pâ9WU¸•Ì(Ó¤S+µ mîbs2˜ÛW—ÀX·†å霂41ñ´–dΰ!•7hŒÖ-Ð:)âA™‹Ø¸úéK×W õÂ#¡ðÄ¥‰¸C´2f2;â<†KšËi8öïSè;!vXi¹#‘ÞªŽ8¾lÁº–Ç'nm§„4*ÄQ/w±hçB”YmZ8ÏQ_ˆ³kŒÈ¸÷»iϸ¹ˆ#Oõ›Â®wú¦À¼ËkŠè¤óø|!Ëë»3Ä%îâü럵—ˆˆÉÈ…±í§Î!q.d⤓— -V!߀´—ž²9¡dê;_ꙶXê· -å -ˆYÄæáw×¢>D¶% NÈ#]>dÿâ”zmij«¾8ðÁz”ÿ -)k9Ü\Ž@qi^!—‰¨B¶î¡Ï†+#Æ%ìï1H×Pœ -û+¥ÕPød#⨣ïPÃh[yÒü”’ø¬ïT–Á÷t‡$Aß4£†ƒ˜»ˆóŒôŽ°lèÏb˶³ºnió;Oí<€G½ßBÜ_I„½‚5UÁj2èîìj‹ºäI¥å‹’§•Gø7FµðȉðâMä…TÖÇ"Í9ô=é¶ -VžåÒf/Dügd{ig‰“›Ñéí‡X;†sœOÚÉ¡m!yô1Òj¸6åÓ"ŸŒE蜨Ãã)k×±H_^’ÔpˆÎèÔAºøaôùãòÒJŽÕoAšá¹+‘a9ˆ¡ù먘§ÛEiuÚˆ«Keuê"Æ#‘ÚªcËÇ¢þîü¼ÿàÎg÷êH -Û--‹_yŠ¯5qÉÐ[kØuC¤óàwmî¥Ì®+†®'â^ï@ká|ësŠˆuLüÅuIV9ºÞ -圬^1ÒÁEšˆbyØŠÍõX6÷‘Sc.«Wƒô ÎŽÙA»96±ÏE×ÚYí,Ø·ig#í,˜ßÙ{M{ÇÏGÌX‰Œ{jg‘Çý'òal|HpÊJž”ÀÿËÔB²´SB¬eR -mó(²×eVÆ1vMälÀTÌö¨"ÒgBLo–{÷rËâF:[0N£ÃôäÅiH¯ÎÔ5r®ørÞj:¦h7…XÜAy«þ•øZ=åÈè»,ÂæL'ü&Ò¶?YܬþPRÍ^–3‹4ŸçwØ
ˆY‹®Gcõ{í.Œÿ¹ìÌj|HyNBÚQâ“®jgE/ s›Ñú 刴³¤€ÇEz&Žc‘NúÞ
é…¡8$¶;?áOí¬ÙH;‹å•þ¥eí:Nê–¾Pùb»Ô'¥Æ3–ÃÔ{«Ûå’4—ÕPt št,%^²ˆ¥/q…¾Ž«ÈÖw"kß‘/w¢ÏÃx8õçç½~~Þ-sbV#û&OB[=qºäröJÓ´Jó”:[7eÕýwÿ‹;½ÿß¹óÍšˆ;/}Œ®½è¡˜†44Ån)óE^Ù‹„‡ÏAk£ÆRç”QŒGºYÌBŽ‹›É ‘ŽšïõetTÕn”çÒ.sQüCÚ~¸Õ…1ÂLŽÏh'Š¬ë¿©¬»£ÿt±g‰cäO½64ç/ß]KdµBºDh}Q -8Ú|_läQ|’X;“v/±u/²>7–¶q‡|4Òâfõ©=b抽 ÿIžtâ=«wû–Šµiü°|úsAÊ(oÃ\úµbÙ“]¢ðÛDÁ·Ö²šmþI‹ˆ«u:èÚ´VŠXÜ”C˜2ÿ&Ò7£Rë4PNŠÖ -PÍŠÝЧ¢_mCzóH;‹ƒ®•¤Lå‘v– -ÜÜTŸ0¶h"[Z¿±…j$DÜR8Ž÷"×]Žò:‚·jרÕã”NÁ¬¼3ÇXú“¼>¾jš²ªN¦:Ø$Š•¦ -p'ç7,¥ÚYT¿ýàyþ-ªÅå=\Nµ³ó ¥eˆ¹(¹jòÁûƃ«›jSÇVSí,%ô“¡Ö£¥ügí,×?µ³v÷a-´äÉ-%‚Ûy¡\8üÞÐß -ò@®FóϾ -k-›EÆ\ArrÛ€>x±©œ±PmÕ|“F Žˆøƒü
ï‹t§åÛþ ÈÃ'œ½ -hsn1†›eð6ç°‡øãô1R|õ4hùR\Iⶠ--ÒâÊ&aý‚Eîr´YŽ{ÊE•éqN~ý,8[M™å6MÄNŠÁéï“4Âpǘ™oÕàl|{+]¢!¿Uú¥Ž†æ |2Ÿrl¦TþĈò cb{@_ø|Þ#zb¡\éªej±UÃ{~Hì–BS}Kc$‰kTg5O’·aê¥=ú%U“ØÔóàÖ_Šœ‹Í<?:JŸ¬ÑT,(<âŽeT>õR⩹"ÉU¡ƒúf¦pÒ°*CSÓ/,‚öp -é$n“
xŸêØ -ÕX—Â÷Mêyß²oa4„ubõT>íÄl.ïÚRbcËøÌ«³ÐšUâþéxª
Eìž|° -û—¨&Qâ…9Šì‹¡9M9Úç@rYÔ¢8{gmhmá~ŠÉçærI'g¢–Í9ö“+Ý{AGkèbÔÑ©T…®õB“ª`tÖPÛF/™vuÖ¬¨æ!j˜°‹è³3¤ˆƒúСV†”èaÿ
¯¾Öƒ-é<ªš¢L89vOÇõ&èq…å‹ÚµPÞd@ü÷Þ#DGpðëÇmõÐ÷¤Ä¾îÐscåÑfQÜ×lÂåÕÿ@5{PC ºÓ§çqE~äü$ÅTO¥šæм%˜bÖÄ£Ó±¿>@É
,.ëâBž¶µò¼»‹±¾‹õfÚëè1€Æ¤„Ã3àç¥D§d}£/Ò£kBÄ¿+ò®-–gŸ‹ûuäó¢‹&ô+¨¦ -‰+ÔçEaËTª„ë&ø‘Æ2﹤ÃÓ8‚ÏIÞ²xÂœ'þ‰àPÖÞ¿Î{ϸÊöMÐ -Ž$†º„¼³GA«P„–6Á£|bñ¡GfÂ&IÎ5koð/ЛÝ|p;£‰{‡aåÄG£u>’3Ñ|ƒüîô¥MÍ39Üù.î;pÖ[yb³üŸ~Ô¶¡1Mî™Vü-öò;üûKˆç™ç¯@Où ölI‘{'aïæÎëÅ¢WŽ.rgøoàHª›î?Œî9‚¼WÊÇFÐ8½WâSxŸL]h:S=aìW̧šÝ°tnQ£õNµš¨>7Ÿê¼¢fBp(æ8Ÿz¶ÇAû”ø8ªsXÔÙÉ÷{FìŒä'ÀE°A’-d3/ÏÇ8²ù——Éä=ÈuR=1è‡BuÔɽ¢‡ÒµR‚‰ Ï&V<5BëEð6öÒF‘û{` -´è¨^ÖéüâG O‚væ6½ð)§fÒýÀñ‡&c¿+t¡Aˆý‚˜_#{¥.ú–Æ¥Ä㳩&8¹f>¶d"µÓ¸ÊIŠ”3‰g§s^™#€çèµaßKÁƒå˜OTcËÞM:áæû;’|aÌïaÄWu*’Oeí÷ôFð;}èô80ÎGhºF¢çMçõ™¹Ý_¯Ç×ãëñõøz|=¾_¯Ç×ãëñõøz|=¾_¯Ç×ãëñõøz|=¾_¯Ç×ãëñõøz|=¾_¯Ç×ãëñõøz|=¾ÿ?úúëwl[g½ËZ‡Û¤£¿zóbKò³¹õÎ]¶:Æ:ú–sW{ìZç`³ËÁu‡µ‡·Þr<Åm‘o^§·\oÚko[Ëy–Ë,§ëý 7mõæùó,ÉßN×›E^:o΂EzsÍmõ¦õ¼©ùµž‰‡ƒ½Ãò¤…µ³mÏK ÙK—-û~ÎÂyK—è}?oé¼9‹,ZªçòŸŸ^´p΢K—ê9ãéïéxz1}Á{úÏ7qþŸßÛYg»«³CÇLg™Þ´éz«#ÿ§ïÈýø÷c‡çÎí¦Ö»Èùïèyr-¹€ÿôô4ùŽÖ.¶Ûôè³zäi½%Óuæé&n¾±Õñ$_æëÍ£ÿ8oòƒùÆ‘<µGoþ<=#=Q9Oo^o®3ûûyóçãDç÷\?9á%ß÷ü¼åŸ^H¿nùÇëÿëÏôõ;þããÉ÷žqÞààl»¼ç[z5_\û|=n£ÎÜu¶»ll×ñ†zœ±ŽHÎt6ΞÿÉOô~.X¼`aÏÇ(õæ“O^² -̆u挡Ș˶kXØõF§Ì. ·Ìο·ù¶ÝÚ¦’»æúÕ&ÌÊ›˜ÍxÆXá¤a¬r×4–9in0à˜u«Í˜ML»™*·kšÛîÔ6³vÓ’»„ö—9Fö7±õÑ64·dŒL¶2 ´²°ÙÕKfÞÇÜÊ«—¡™%ýl3%yfýÊÍä«9cÆÛk¢¡›ï·l±¢¯1ã4vÞ½AÒ¢ôI 2&Upþ· @/% v€fnÚ´³3a(gÑøŒMÕh4U†çM@
=[Ý{‰hü™‹³_ÞÒæÑäóÐpŠæ8Á% ?%× _EGŸ~¢ÈWÒG(‹’®àõh®ÚîÕW°ÛÙ[µ#bÒƒ|¾gü0°n(éƒOo4K+TrÑFDK M`·¹k£Y
ѼGo€›ËyFní¬Å{¤E£ÂÁ³·ÂÞƒ’ã€\Œwòï‡FPÃZȬ4,„ˆœÈõ»úô—ü“GIq¦+ƒË& ÉÚLrÐ`m<µAA¯=ºR_‰âíä}ÐðŠûé;”’3Ã*¿ãó¿a=£q»’ÉóiÃyï´¬}p_3å-ÒònA)H@κÁ’ñD¥÷MÁ9ß It#>H(Èç(,´¼•&ˆM•öš Á´‰™†©¹µ†¡©Ä€LÊM¼3%ª4Ú"2FjØ$cÐk!ºhÉÈõ(lÈ=%?ƒäsýº-gAXË:Dö—;D÷—mõÒ)¹ ˆYM¬™ÊQ¤žÆùÉCÍlܵŒfÍFÆ»ÖÞ½…Iƒù])C9—ˆ2ÎUâfª]Z›Éë6¯é°•H˜p [²°ÜÝ‹Uºõbí¼zKŽÁ”.AEϨ!–i°¹ ¢_š.6ÒËÈõ’sнRGH…c•!¥z iPîIâIJÔå7öÃ;ïé§pØÓ[òÍÿ†Üß±"7sÆIêkËÄ´‹”IcðžØ¿Ã«š%(éJX% -.@ ½²n}/äÕ®@ƒ&ØC‚Áº‡
´P’± ö@›ªw{FcqdùDDP¡ºþýiOÄ0eHÑÞ3z︧/m’AC/7Úhhç¬Íû—Œå]˜ -¶šV¹1gÉ|Sîîe.¸iÉ'2–»zÉÉÃ\pÔ42cC®GœGµC‹’áØî!sÞFÃT®b@$‹ó-·-°‹X—¨ Äû˜Ê·i˜±ö” š\š±ùÝÃyûÐ~J-|7Ð\-:… -Çã½AŒŽfZÎMÁÅ bwhă-ÆTLé´2ªZ_é_<Dä³Fa.¡yKp‹b|ÚÌRᑃhL÷VÂ\aw{ïêÛMˆÔ§_B -¹µ¿í”𾎞7ƃü
àq?@ìnÁ©4 Á9¸àØŬå®^üVŸÞ ŒÙŸ‚øE¹ä ü‚¦L~€` -dº vÀƒb±_·¨”à @=šÛ7MÝr‚ä¶^ÚìŽè ÕâcO£NL£„v6»´yâKiÓ+™“–Àu —„ýzæè¢1ßoœ&%M ~’³r×V(m{Çɵ .£A’8{Q(¹
°ôº3t)„ô"±<`ÂàÜqÔžAzC~±‡¤¯Ý£ÖY -õQ>9chs#‰ßÀvCJ@pœwš.%›òŒ"íŽN‰ˆmÀGÑøëAl
ð±˜CYchs9ˆµ¼£‡)ÃJ¾“ŠõИL4É|ż&1o@,#R¢Š‚oqž” -¾7ã]4ÍIþ%“zM(Ùß
¶1gf€t˜6îÆŸAÝÑ&í=ÓïS†Ñ‡ô¹¤s3AÆÍ䎆`v8ïŒ\Pá7x(ŠÇ@ä „íM° yÎ@FϹGë@ŒÄ\åª LJ -’“©ˆÿ¶óí -0Ë;œƒÄ$Ö‰Ì[ïÞ -!ûäw&(î3šòMe$WQXi –\ˆsc-‘·;kšóö$qÔqŒh -:¿àÇSFËKWpUïdþ²Þ¢¨sH>©lÐ's¤ÌÖ£—/i@œŽUßXħÞ\À{&
“oóÐF
„˜‚{à@øMš¦£†Bréœq HTí!˜ÀÍ äêÕøSòŽ|b0 nÇœ¢¹Éµ Fê
¢j+÷l ’#ïT]dAp…qzeŒ¤¾–Ä,ˆ¯Pl -ê 3¤˜‘ø ÈðÎÖ%s©HÙí}å$¯6#9©…%c&ØhPÂLò<|·Ø®_ob"_‰½\ôÐé È v>½1eV;{Ñ9F|,ê–ð$ßëEãó:D -¡Ú±)çfq»¢#)¶‘Ïùp+ì1¤T¢Z‰·¨=©‚& -' -NQk!Þ#wðïÁ%àU6çþR>íÖ"Þ?w4ð!ëàׄêlîÃeŠÒÖŸ(Y,ÄËÇrE=!öì.»v_øt•PÜ´V(¬[
"–2FWBòÇ!/¥¤D ãD\‚¸Kø^=ŠÉCŒ?=“O¾8‡Ëº·ÄÀXÆ –»02”õäëÄ®0§¨ÀÉû)9¾ãž¾À"rN’?ÔÎMb÷¨ó žÀ»ÅHÞÂuÔí€{å[‰ÿ´ñíœdU Wâ=3(¶Ü‡À/ï &BzØ$ê÷¤!u·àl4y‡À~‚Gìq[`_Ø&ˆ+C•;#i$Ô¨íÒz§úh)îhQ ò@‚áv‡Ö£¤,»ÂS‚∢oå÷–Ê}2Pýh,«|·ŠõO û3•œ4Q—Ù8pî%§Ç<'~‚âs`…¨ÇÑš>jH±§Ózÿd}²SÔe@"- Öç‰Z -Á$_ÁjãJOS}³G÷)üJü$Í¡b@hxd*„„€÷)yòu× "È+Ã÷M¢Äk”l©l"ˆ(ArfÎ7uïMò—=±CQ_åöDÁ9î‰?1BÍ4‘vÊÙ9|K¿Äx!Nð gf²%/VqY
ßsaß". -~c¸Ìsóä¥Í+!LÆGíýŽÛ<LáHbž'Á9‘åz˜b~ýj¶°i…¢¸éG^}{)%’ÙûˆÔƒRGiÇæ@È„I”¤t@—tiî·,ûá"YiÛ”,Í)°?»ÕUù:‡|q’à&Ôðÿ$î§XÊ;}$dl€µàC€…9÷øÁ¢o^O¾¾;n1Ÿ‹x’l!úØT6õÒ!îôaO¶.gçÕ¿§‚äÜT¾y=äÀäÞH»stAÒ+Û -ñZ >ˆ¿ELFrxÌÑÞ·Ö„”1{¿äëþP¯¡µBâËø¨ªI´FˆÜÍÞ³HÆa›êx_Ä.ê‹óØC[ÄS-*EÕ› óýSì‚·êËZb³³r:agÊ0Ä-¥wF!?ÇÚ”Dì’s0þ3¬ô;ËR’QÔ -p¿B)qèRÁA¢Éëþ€¿¥]=ùºr,œ%§É/ÄTë“Üy:Í›Éøõk
§5ä|ð5 ‡g §OÏ‚OTäÝ[Ê¥^ŸË%ûæÇ(HþÀm÷éC )#Ê¿>áíw÷±+ž¨È¹³‚9\܉©¬[Ò Ä4Ô®Å$÷=ð|@qšæ’$¦ƒ
Bnl -É+IÌ)œLrׂø²¤ü†5bÑÓµAÆ€HÛé¼&qË ±+÷Æ.ë&%1¤øÖ7oÆ'Ù”íû´Æ¼¢sÅŸù:0ŠÜSäëT4ÉÌyßþ” ”ø[!íì<1¼XO --™@òàI Ñ<×@p)óÚB.éü,>B°šæm$W #DŽØ¢§?‘|}1ïš2˜Ö÷E×äë|êÉ9oBý
8s¨'_Ç| -vb²w¢œ3ŽæëÖ$_‡à[ZwŽªšLóe<·+`¿%nB‰Š]Të¥õëÅê'¦ÂÑ69Wùr³¬èî2*vá@îù6‚ÅíÎÝ´’‡V©+Éý‰ÃÜÄ9@¼ -×ÈfX•;h¿J¡åzGÄ$Ô5XGÿ¾ Ë•[ûhcm¡G€$M—®w'›OÏ
õ‡]‡ß%ß¿HIåˆýQ1GÔ@äGl -e Ù¥b1Åzÿ»ˆ‡ØERð -Ä>°Wu"äüœk¬?à{’Ël½´M,ì4Ö³¨yjBì[áàׂØ`Aæ.Kæ<D)QOžà(ˆSBx9jäùÞ -FD×8P¿$˜ŠË¯_!&\˜C…È=cþ ¯h_-/x´Ì¢¼íGà4Ô.M Þ6Þ¸™Š]ÈH®n¡ø‡Ø…|Ö®ŒM”ŒÙ‘Ú'>‹ŠV¡.i·›Öf°vÛ¤y5ˆ>·ïˆüžøÔQ@ˆ<ĺÊØê© „¥kå.=µ.etÅJÄí•:²‡@yw_ŠÈƒø꟢+±_b—JרA´~†Øš|’Š¼Ðº½GÏÞ -~ -B-$Ö£îLݽ‡É·¹õÂÞ*†±3ì?Ä.J׊å7³~¹£þ»©viQ›AÒ/i$ð=Ä.0Rð?‹]„÷ˆ]GÅ*ˆÝ¨¼IdïÛ—³õèMë!%;RA2P§ø7âðdjw®qƒàG +/}µŠ-íZͦ_ŸOëýžQƒû^®Ã<å=Ct°þ„ù+Q?”1Š -ïØÊ9íî‹=<È©!2/Ÿ+ʯ¢äî kE.¤Ø®ibjÂo1eHÞ¯<ëȇ‘û)ÜÁ/BuÓF–Y·ÜYóã&â°¨µZ8@¤,W‚Ĩ›a
ïLIs‘¿’˜‰z!ù¨¸jÈË!H -± 3É7ó‚ˆ÷…–Vt¬•y·™Ì©Åû†Ø…Éf[jàaÁòÄ%‘ÿƒ\›Š]°ÌCÃo÷ï«‚¨ñ×´>¹Ý«/Æ›®kØìЦ_íÜ´q¯Dg Ðëê?@a¿›ú!Š-2Î/ó®¯ ~˜µNˆe\\Àe_[œ HŒ)|›}~A‘jÊhºŽ^ ‡uTJ<™qf>_Ùl -~G|*vÚ#v!ý³Ø…ÛŸbž½Y+-…è¨Iñ.Ö„Iœgójàsî-ã î¤5ƒøCÓàGhÎé›5JŠ<:•+í\Çï{m (û°ui1ìà$! p,[ÕµBr4ç©7ò%ì#*ê1„î‹ðI‰¼õ#äêÈ!N -ü‡šdçÕWé3b\Xûq.›ù`1¸oœÜ%j -Æ\¨Œ;5G¹OŸâ™ñC±_bÑ£µBêÍ…t?Öì úe¢¡‚ÅøÈso-æ2Ïχ؅ä“Ck¨`Ï‘*"÷;et¹¾2ñô\ìéèÁ4%ãiíu Ý1Ci= ûäã´†òß]‘ƒéwÌ0ÔÁQ[Qæ7®sk~ìÉÙIüöÅþŽc3”Q{õQ³§Â™t:aj -/˜@Å."zÄ.ÄìsK hAÅ -Ë‘<•’%“ßó%
«ù²¦õ4?)m[5A°O‘ñŸûÆýC°¯üåzìû16g{HÑé>ƒ¢ "ö5àóAúžW·J,kÝȦݞû -û},½RGY¹‡–üt)¹ÿqJŒ¼ªmêìC[«[w|¸2¬SÈÄ&š¯¡¶qʤ“3 ¸Ë–?_Q¶¤e%Ÿyk‰{|ºY5‰ŠcÍß7cjtœk„]ƒý'±É_éºPDѳ#Ÿå?\ -Á<…Kx¹sô -öh3ûï‚}OWC°û0éCýˆØ"%¾O:8ŠZ‘ø}‡W¢P‘‡&a -HQ -B}&þøtEîµÅòì«óiÝâX®±ƒPG¦š §fAè\whÝÓ‡}àØ»ˆ¹sT_±÷õ:¡ò‘yj*Ý_a0ಘj}’3̇@
€&y™‹‹_èÜÀ:*rJäÝ~9£ð {úÓ ¾Ö…¸OPáX¬{bͳ÷¥qcÌ:{õ¥{[KÆa¹bD³uY÷hˆ’#O‚xªÜ‘`é*=!¥fp‡P>ŽÆf×0º¯tÖ¢8l‡ß -âOå¥
+QW¡×LÎ
Âö)Ä~2®,¢ßɧf‘ç¦#gÃþ0ï°ëäUkQå"öMàÃ÷êaŸj=òÂGË„¤kói]šÌ
ì×C¾MqnâáiX+¦Âó…÷—Á7À¶Ñïý"ä=f 1‡é~Y¬/`5
ìÇa³n/b«_o–5-v%
UØ8н’¨)bíó]ˆ96Mô/KEg|3G£VDæ€>] -H§}#tíß+}©&þMŠÛ?Æ~šŒ£¿w -À;FÒÝ£îÒ{QPG“Y:öì©·qí…Ú’…¥«jÆòýåö>½!>¤t<—vs›óh)æ„ÕH^¯iA|,p1öæRq=¬—ù§èB´ -ûRøÔ«ó{îAÖÄTzÎ؃”xq«®[ -Q\šÏß -»Æ>QËð’I4/þ‡ ɉÅØ33±¦ØSØ7b_Rü™Ù|æí%³‡ùdŒ¢ºOîÔLŠƒP&ñ’ú…âoa/|ÚÕ…£õKb÷ä¾Nƒð)ƒ ¶ñ46󺆂û¸WŸÖ±&„uGÔŒ#K'PüD♢ôÑOlî•ÅtÝÊ5jDÜ°Î/¦œ˜‹z—~u!Äbûy·—PaÂÌÓóà—ùÄOÓXGb`l‰Ù‡¦SL
!Å›Nce×&YEëJ.ºò;¼õCYqû -¬I±©·ç#‘4.*;ŒÙÊ×›E-+¨Ý§œ…˜ÝEQÝ$f-Æ:*É¡æ-FîŸÿƒ˜#ŜɧŸKk Ð>Øbª(¬[ÎÆVN¤"¨U9îЦñâ4å/×(Ê^¯âÒ.Æ}„ÄV.ýîBÖ+kçW4š:8‰-{¾F¬h3‚ð;7¢¯9Ö<‡Q/Û§‡u@n{xÚ«rh¢´wöQQ#ˆ`O2|pòi‚#.Í£˜#ì~x"—xzº<›|.0«Ož®Ü3}¨" x4z`‚\]»P~ðó&öð;c‹ƒ¿®—þ»±âúo–Š›Ÿ¶²gÞóìþφòªÏë•ÖóG_YHÛì•×ŸºK7Zwpçº$®âõF>÷þ–ÑÅú*¿¨Kн«äžAÌ’ÌÓ©Bò¥y|iëZÕþ§ -ëê:qkyܺ¬Ö\Ì»·’ -/{¦ŒPÒ{Œ¼RQôxê3bÊ•…Ø—¡(~¼¢F4ç$Øž¯z±…«~cÈ•¿[Ï•<_ƒu< ÄDý\yûJb§em?Éski]šO9?þSQÙ¹¾…+n_K -WÒ±F¦¾;O᫃¼›-i_iy²a›åñǶlůØÔ;ó ð+Æ_žCÅå -Ÿ®¤kZ±çg!Óz§Ooäƒ|ú½%ˆ¡‡d?ü^Œ»0û_TåOMÅò×›Qƒâ¢ON!ùÓh6¤j<¶‚<òÌDÓü§óMOv¯—]ú»Lqí7¥üÎ_Ù[¿ÙÉüëV‹ºnöÙ/þÂë1\Çç@¶þ;û36Lªo -®¼µc/|ÙKï%éJ³³êâËmTMæÊ‚ÆõÊ⧛¸Ò¶uÄ÷ü€qU¤^œÅ?[%ík7³Ú÷T!?ß &\œƒ\Ñ*¬p¢2 eŒÕΨa–á•úBÖŽ¯R!*”bñ‘;ÔiÂ~oÆŸ~Îó§;þRçVñâS{áês;ñ`§BQõaƒ¢¨ùYÅËUü¡NsþÄsŽ#c(?ñÁD~üWcîð'3ÅñfüñN–=ñÊ‚?×!Š'Û%噦mVWkvŠg¬¸½d¥OVÈ÷¾ZM«`s\êy°KØ»ïå¡â™Ök…êNئ±j“Bu¸^à*š6(ÊÚVÁ÷ñåÄÿ·Äš…¼üÅJyå›5>®c÷¿ÛÌ~e$?öa‹âÈ'#űO&Üù÷*þÒ[â^óŠ+Ÿ”üõ7ÛÅ3/·ŠGÉ5®Î4«¤³í[ù³{â¥9j̧~5’þÕX~ág–¿ùÉ^vç߬äW~„ÚgžRmƒ¿Õõû».Þß¡<Þ âö·qUo6ãÜøŒ›‹h\!øHqõ“R8ýZÉ—½ßÀ_°õ`_ü|ùV-3Ï^×ÄZ¨å;ÞªËunâ‰×–Âé·*éH§¨¬~¦Pîof…òv±êµ1_ùÚ€??b]|쉩¬ºf H͸¹øEŒ!ó<f±¸·Ó@,±™-{½Ö¢ú—Õ²‚÷ËÌ÷þö£yõßWšÞé–›·u;ÉÞü‹—ôþI’ðþe¬¼éWEû/ÞÜ»Oáì»ßB•kR¶½9©v|~8Wúð4Y|ý"AÕÕœbõò‘zûó«…ʧ
‘ä>Jì_· -7_;J5;ªk-âñ¥êX“•õ™G.[¯Ýô¶>Wã.|¬’Wý²^Vôl¹pð¥…êLÓvþÈ[¹"ïñ2ÔÿP3ª:Œ‰2Uí{,³>Ú`kyø± -ù&[Þ¹ž‡-Ttmdu˜K§Û¬Ä«O•W[\dÇÿ¶E~î{ñ½J¸óÜ]¸ùÊ‘»ôVÅž{Ç—;mø[Ϲ›ŸmÙ;ïí¹‡¯Ý¹oݸ»?;(nÿÍVqã7KÙµ_ÅíÏÖÜ£WnÊçµ±ÊÎqbÃ#îòköø[ýq³¼äùòŠÏë0¸“],¶S’δYó'[x®ú™¡¼²kPõÌDu®ÞöºøÈI8ÖÁ±G_™±»Œ„cÏYéT«µpé¹µâð¯ò㟌ø#ÏåŠÓòs¯Š«ïTìÍ_mùû¯ÝøG];¹¯\¹ú»¸†.Å•wæ‡Ø¤¸òVTœ|!“Ÿ{'N¶ì¶m\s‡§ð²-ÊòýƒécK²¬½Ûͼ©ÛNÑòón®¹Ë—»ñÖVqàóf6ÄP¿œÑÈË°¦I}9Á¥ˆ¨W™§?žm~ðßÖ -§»”Ê;u{ìÎ_Ý£,x²K97ËâÈïåG3”]û™“_øÀZTÿeµ,÷틢ߖ‹%7«ª:äÖ'UwîùXÖÞÝúàN¸Õ͇~Ò•&gåÑ6Q¬î4£XeßÛÈÓXçø½ï7L¸Dòß7^–ß´TvæSyÍo6ìÛŸƒ¥Ï’¤“„Ï/âù?^Å Ÿ[âù_ßÅpÞEHjSŸU«]Û˳£ê’ò3Eçnï:’øð×é][Šý‹SyV¯¨¥7IÊζöI×r?ݸíøkmeU¿¯‘—X¥¼ÚêfuûQê|‡£pý={ꣂ»øJ’´z[uÔ$KµíþÂv±æÙNå½åÃÆ@«Æ[ÑâƒvOåµ'nâÝ'nÒÍVþZ—{ãåVéj3±Çzå‡îÒíwâó,Í*^-·H8¥ož×´ÀüØ¿¯7¿Øm¦¸÷Î^|Þ¥zõ(Uõ®1U|Õ+¼k•^·&²Ï^øY<üWk‹‡ÿb%ø‡¬þöÅ'ácKœòscšÝ«³¹Òç¶d¶þ…{íµŠ;ôÖDž~w›z}®"ëÉÅÁO†xN¼Übgyn·êê#7Õéz[åñKÕ©FËãÖܹçá…J~éÏ_ë°oµ¸JWŸî.<sÏwÚÈÿn$?ûÁœ#ñ—¿öÌNª¯÷Ÿ<Qµ5ÄZ¿º—éøâx‘˳ƒEÛ_žÊ·}w-Wüð8Nê¨k›¼Ùëï¬øÏÜùöÇ!V¯ïfn{{5Çéù‘B·öò|Ïæ¢üÝOò³=ZKòœžUg[~¸™Ê}|!kúÃÙüìߌPÿ‘v¦
ƒ+'(J_¬d÷0à÷½7€oCì’…\ž`Zúi wûãv«Î»©6ÏoªŸÜN°íº”³ëzŽÐØæ'»÷»µñ©îÕ‘—'šoóëmd`É°¬¦tø;éôS›®ëÙ.Ï{¶îÝëÐq¶È²¹&q?Ú®÷·š‰§É}ºñ`·ÕÓ›ñªëõ;ùƒm¦Ê£"üßÙæü¼:—Ø\náƒÈìø‡ 9°AÛ×'²,?ÞJW~¾“jóæ¬Úÿ©šÚdõ샳ö>Ïvk/ÍQ»µ}u:Ëáù‘\åû†é}{⶗ײ¹–>ægº·(ªß(+zõqa -»ï—MV›v)/t9È+ÿe<åÁóÌÆ9²Ë¿qªgñv]—ó·w^(°|Û˜!t´„I/›c·¾¾Ÿ¥|Ù˜ÈÕt¹Èn¶´8ÿ7SÙ¥× -îþ3g®þ™§¬é·íÜ«§!“m//d‹kýÍNÿe£IÅã…¦U–ŸüûJã›Ý†æmsté¨Ì+«Ë-¬ÏOlŠ-oJ)ÚÕ^Zd÷êT®ò—útéçgÉÂçç‰âoÏ·½>›µ³µ´ÀñÙlëwç3,ÿ}»é±¿åýb"~Fâü‡BÜÙ™|ê½…À®\õkCsOv(…Cÿì[V>•)Kžð…õ?)rî/Qìÿ´QºöÌŲ¾6LY[$\xc-«úËYfÍ\yÊÙæêså?Ê•Oj÷¿¸Thÿêrª«6I|Ñeù±6swkQQ䓤âˆ'IE%¡yQO’Ê”51ìÓ绬ßßW‡¶¤•Æ4Çæd´„åT6««›3×e’ëÍŠ©‹ÏN|Ÿ•X›íÕœ›³õÍÙLþÍ›öá{Wîòkå¥gåµ7åÇ{¤K-ü‰v–?Ôn&~j·øØíÃÿú2Æ¥ý@Gû¾·öýÅ.íGJ”]ãÙšŸÌþ«RÖôwyÿ9šÜí65ºÚ½Á¤üÕbÓ}Ÿ–‹÷ŸíÞú¦&{Ûë«Ù\Ç®æåîa§;ÁÏRE›)wàÅñT“J¸_çaÕr#Þáù±üm²ŸŸ*òl+ßëת΋zœÐœ’™Ü•YY¢>ö$ óæï´ÚÖ=)÷}Óo×û¥?lòNmxìZK~®kðIøÐ?ãLm`femhVrm\ž[Ky®åûë©â‡¦›WÔò§ÿânq¡Û\qêß-¸c¿Ypgߊ⹮ÂþO¦\é¯ë¥ý/Yîäo¬PÛµ[ù¶-YxÙÅ¿|¡|ÿ$Mú\—Æ~x&üܯzÿ0Ýêmƒšëx`qù¯òK/äâ&gUÛƒåûÆT«÷wÕaM)%‰Í±e»Ú«öm{y9[ùö^œíë˹Û_Ï·u$ǧ#37õqDö‰Æ -Í.©ËŽjHÌU}¾•bRÛ-˜¦?œn±¿{µpòƒ(y¿Uyò•t§ÝÃêaM¸U˽$ëΚLñn«»¬úÃZyÅ»µRu›L:÷ÜVy§u·t›Ääk¿Ø(›žD&Ö'”?V—Y?»§n>s’ú«EQóRÙþ_6pÞŠB[k˜gkI©ó³#ÅVoï_x3Çê]M¦ôksê¶×§³}Û²‹ -Ÿ„äå> /rë¨*Q¾Êw=
uè:^Þ–TÑœ—ÿ$D}¸1 ã
™çÉ8]{䯾Zœw©&(ûøà u^mD–cç,ñSG¢ÐÙ¥zÜ-Üzî"=|â->hñ–êûcn¨k¢‰]'dÇ×Åç„×¥å…4¦å×Dä&Ö%±/ß„˜Ýè¶0oívÜNüSò£¸‚¼{Q9{ïEd<Í"öU\œV[ìHÎMñác°ÑÝn#“ÝF²ößÝñÞ.ÇÊR“$=N>àöìH…ÝËÓ9|K¯P÷hWø“´JŒ×ü2?ÌÜ[’y¢É?ó^‹wzYK`Žýë㹊?^‡š¾év0{÷ï.æ¿wï‘ÿþ9Øêý…”ÀÆ̼ĆØÜ‚‡áY•÷"²ü²rÜ›K²<šKsÛ«Õª7wRl^_R+ß´¦*_´&)ÛŸÅçþئ8üo†Âå?lmÚj³<ÚªÊ\Û«í_ÏÝúöJÖ¶7—r„O±ò7ñáÞ¾kL¶ï:šmóîœÚ¬³Ûɬý£=ûⱟ}×ɼÐæÌý–OoF›\ï64®úm±qÂ… Æ>ÅÃL‹G—´Í7«û›¨xû2Ðéåþ¼´Öð¼üÇaÙv¯Ž¨ÍþÒ½Ëèe·å–7Ý’áûn¥á»nÁà}7gô±ÛÆì×n³¿w{ò¿5Fò¿7FÊù%Ȩ£[Ú’Õ6ÕôT÷FÅÝ¿o“jÚ}7Æ9vœ( -|œUšUSTù(,Ï·5¯Lùº!Qhn
áŸvú‰OB•o[R<Z*Šƒ3‹|ò -ßÏ>w78Ó»9ŸøìËyª÷u6¯oçؽ:»»½¸,ái|YHSF‘óóª\¢Ù®®@áu+ñuv¯Ïäº<¯ÎßÝž——Û–õ4¡Pøܯxõ³¿¢ë7?ó'Ý6Æ÷º
O~\¶%-o´aÊq›kºW›¿ü}‡øGCrL}BnyM˜šÄ=õá{aê¨ÚÄL—¶ŠL»®C™Üû|ó_îúg[ÇíùÖ® ‡Îã“‹NÜ Q_{yúNhö±»¡äoCÕï«÷Þȱ}Ibì»{ˆ¯ñõ yï©oÕ¤WŸõ°Á'õcÛžäOäqøºˆ§ ¹²¿} -ÞÜÑmnö{·§ýË#ÙûZ‚rïµy¥]hñSŸnñËJi‹*”$þÞˆxhýñŽÚâý_v^î^e2xãv7uV»4´˜ï×0‹–ÿÄ,Y¶†Y°d53oÑÌì%«˜yKL˜•ò@õþ†®¯ú×éžvoPüÒT›ž¹÷ZLöáY·ã³ónÆe—ߎP§ÝJ̉&ØÁµµ*Oxû&ÎòU}ÆöçÇó.*H«+,»•·÷AXö‚rê"ó€ó,ZÿÍÉòÓÍô½õ!Ù׈»Ôê~ì™wÚ±Nïþï-±F>/6ñVYk(23Çé1{é2]f3œù†<ôÈ÷3ú~ÃÌýFŸY³Fd6KþšUaZËW°Ì”¡ã˜±Ìòª1ŒŽ–.3Dóft/=f\ß)ŒÞð9ÌÄq‹˜éÓW2‹Mݘ5±õ#7]éþÁ¨±[½üOÅÝîmÂݟݬºî««ïFäÞ¾˜q·&0ãV_úÅû™Åua99µQy1
‰Ea
©…Åw£rÒ1
SçßÎÍx“³õíEµ¼ë/öÝÛPÿÖôܦ6¯ÔæŽ=)dÈÿþ.Ì ¥ÛdÓ?æl -<4ÌÀ§bˆQÐ ]äûz~™·ùô¿-68Û½Ü ÷é”UæÌd½¹ÌÄÑ“=ÝÉäF2:Ì -QŸ¹’yþzhæq27Õ„¨OÝκ[ëŸÛXÀÿÚ'üÜ'ÿãs螎œÜëí$?Û“–Óœ³éU·ñ–ŽÌ´1Óˆ#çsëCÎJ“^Æf -Ûî„•´=.lz˜sýnH±Ïì·C³ïEe~ìVÎ_©dFê§sëòÿÛãÏëüŸ\S¿/cÚ›üëK¯0ùGbâ°EÌwSeÌôU{˜…R‘Æ•Ýã~m9S|%.ûèÕÈœ«7ÂòîÞ --|t+¬´¶&¸øòíм3·C²JoGªë2³ð«OÎ"ñ]Ó®ÞöêhªAm·áÌ©þ××Ñã
µè9kýÓ˜j|ù]òÛäßPÑÌHñÌ`
]2NÉOKbüf¸¶>3¸×dfÖ$fh¿YÌhÝMÌŒ•!Ìòí7´WßêžË¿½Dp‹šÄÄ„¬º´éSm¢å‡«ÉÎmjâc²._YJÂ|
0ù>â[oרÛÛ¼2“œÓ»=3Ûè÷nÛ
å/¦ü` dFk
úÿæ¿ùJüüg¼À<Õ!^ ×4ª¯>3zÐBæ›Ë™1ÿgF\Êè[̌Йnjè3—6`3ß÷ŸÏè$¯Ó]ÍL^°YjYµî@÷4“®n»Ö£I.ûÒ€ÍN\‰Ì*$±ïÙð½í·"+:½½±ïͣЊ÷
!{ß6•¶7ÖÖ!ïZS×½d°Öÿÿø§Äõ§`¼Fië1C{"?
&£ˆÈOâ§æXâK&0#{Mc†÷™Åï7›1p3zÜ:æ»iûmfð%‹…2Í_5ú¥ÛFx}#(ïZ|ÖÉKÑù÷o†æ=º’Ww'´°îaPÞýÛÁywî„丒u‹øÓk÷ƒ²ñ|öƒHõÚçÝ«gÌ]ý¿¾–?ý&|DêÙû|ù¾/õ#ý¾|?„Œã(í‰Ì7dœÆ_ÄŒÓ]ÄŒ÷3V=3~’)3f’3f²)3jìzfäw›™qS9f¶aóC`‡Îª»Ýs¥W‚2®$gQÜr'6ëüí5ÁfÙ¹5j‚3s{»EðÁbf=¹œuç^P¹Fõ–ߺ·.sJÑœ´p9‰Cþ¯~²/õ½è÷=>°gö§hd03Rs43¦ÿ4fÌйÌØÑ?1ú³•ÌÔïw0Ù‘‡3v†ÈŒ¨`FO‘3£'˜0#Gg¾ùfýÝ\ófEÐõ/º7¿ë¶µi=íVW–Tx)!ëáåˆüæá…5·Â -IŒÏ»q/PýâaPî‡ú€Ü÷M~yž5=*&5ø{·rÒb³ÿÕ˜áüSŒ6øzì‰y˜{=¿Ó!¿ÊèöÃŒ ÏŒ8ƒ5lñÍÓÝ¡³Éü[ÆŒ¶‚5|3bøOôÚÆM³bÆM’˜‰s]˜éqÌ¢m'´–¥¼ºêt÷´55ÝKŒ?uÛÛ?ÝzùjDÞã[¡¹Ídœ×d=¯
*Àœë|Xþ¼1¨ôy³ÉÝÚ ’KÄ¥¯}Òý£þÌÍÿkÛì¹V†ŽâÙ0Í1Ì0-’!‘y5œÌ¹ZÈs˜Ad“Çð>“˜‘g‘k[ÀèŽYBìs5±Icæ›VÌø%nÌwk}ãf:_ÀLW3óm.j®HýËÈ•µÝóÙ·5^{n—¤FÜÉȈÿØ{Ï°ª®uï{R•ª"vQ{/(vA¤—µXköUè Ò‘ÞAª¢€Rl€ ņ]c‰šXc¢&{×[vÚ.É9g=ã?HöÙÏužë¼ûËûÍ™kÅÕæ÷¸Ë˜ãþý?iüœä^wȹú¼pËiãn\/ØòâFÁ¶—_4½¸•ßtùÓ¢©w[=>3,Ògè¿=nÎ7ø{D*{“AÌ óQ䜆{´'¿·!Û¶çߌ‡3ƒ,&HÆÎj:ñ›ÎÌ°K˜‘£9Æiv,3nI3Æs53Ö½˜¹4›qðÈaFxä2TÌŒàÆó«ž÷q=c˜¨xcX!¿ü´pÕõ5¥—ë?:µ¶õÎÇå;\*ïº|¹xj†
7«šÒ·4]!uÂÛytRóÃ…J×#†±C†Lÿ·c¹)͵#’èeJb™•#ñýNÌ ÓÑÄÏ$9€ÚfòŸ½ñ@r~£˜ÁVNL«QÄ7’GßIÌ@{âÿ|Ç©¡Œã´(fÔÌ8fÌâ"fL`#3Ê·š™uØØ¥â¾Õ’ÆÑî®$Ž×}u®<ñn熺‹5›Ÿ+Ûtëâê-ɹ}q¹¨áìù_ßÉ®ûËýÜ–7Oswܼ›ßÚöEicÐoߥOÕdýŽYOüßÿÓ—ôäÂd´¬È\³'c8„>ìMF0ƒúL§c5ÈÁØ 3”ØáˆY:fÄ‘ø”@fØ_fÐP7fÐ(OfÐŒfä2ç‚j˜Y±GMæl|d³ Û0dé-Ã,·[åÏ¿ÇE=î^[uu}CË'•[ˆïÜv‘äÒÄF·>½S°ýÛ{ùm¯äïøñA^Ûw·‹Ú¿¹U€µ¤M>Ï -'ÇyÿÖ¸™ü‹ìñ¶ä\Höa=‘qáÆŒrô!çáÊéN|ÅRfà`â?»ŸIæ™kÇ,b†
]Â8re†V0ãfô¬f‚ÇjfÛÎL_qÒxVÉÍÞ3ëžZ.8m±¨ó·¡Ë®fy½4(ØŸæ¿8UQ~©¡aÃùÚM_^.ïºz¥hë™K%[Ô7~
S|lð
:Nê‹+¿†I_=/ úÆïù…a‰ëš«ýÙŒþ_Ï«'¶YÐì^Ò’fYˆÐC™~dœö™Â#ñxìÌ(f’g3Ö%œ;QÅŒ¹˜q þr˜ÝTò@Ì›Í:ä” -fÔ5CÃŒsKa¦Ö0Ó„&ÆyÅG&³ê¾±ž÷¡a¨ÛÃR÷¯
Ëߢ¯±Ò÷¯Ë£Ÿª°gkÄ·Çãïm길¦©íÒÚ¦„'ÝÛC¿¿¾¹ø~cÇÍ›9_ßÊ®k¹^¶ÙûµŸéŸü¿ž›9=›û2ƒ¨ÿ°¢9¿ý‰þÒÞÌä ÃÉ|ÄØ™ááÈØÛNe†Œòcœ–’ü8ùœéâº×ï7Œ\ú‘aòÉ¥§
ãíø!6½ê?oãË~ó‹oZÏÏ<Ý{ñº/û¹4L\~ßàôCŠò/†Dù§«¡¯?Üò¸eê9ÔäÈ5O£v½R¼åãk7¾Èkxòyþæ··ŠÚî}^ØÌýô$ß½èóþððïÿŽmZüËaŸÈŒõÆï7=Ù™ê•ÌLà³™ñQõÌ”ü“¦S«>3Ÿµîs‹ÙeŸõžžyÆtzÁy³97-ç¬j=§ê¡õœ‚k½çf]îµ ì–Ͳӆ©Ëî-=hpr}:Ð}Ÿa¼×}ƒ—ßCëÿ ñbÕï™w·5"gÁyí%¹sÑíúm -AÉø,cÀÓÐx"ó'~be‡‡.•3ŒœÆ/þ_ìÒ˜Žüú€A$ìÊéÁš dÆ/Kf¦qÌ®’™®©cfÇî7q©½g»¨Ûà°ô<ŸÛ†9ËnæÃÿ-¬~ÐonÌ“éšõŒ³~³Ñüøýf‹‹oØ.©zÖßmÛÏן6Ì"ù‰·ß_
!ªßÞ¥K?]-õûÎ {Wáà¿ùÉåÆ«øc¿+å/¾KÕ|üË -þðïl׸Iûþ+Hsê×Péì¡ò‰W:ýé»1ÚOž¥`¿SàUC«¶ÚÄÞä{XÁL³ë=Šäú³˜Ž*fÔäÆÉ%Žç™ÍLU•3S¼Ó˜i‹c˜ÉÎ<3~Š3a‚'3e®ÌÌåªæ¥žî5?çªå²ÎÿíyÇàîûÀðÊÊýôkaÔWë5?^«TÿòKûão¹~Ï’÷ž¿MñÝñrŠßƒsÀ
ƒRñ…APÝ2„²Þ&JïçK_ß]ñê£á//lÑüðUµpÿm–êsƒŽ½ýÛJéÛçe¥w6¶Þº‘³±ìVíV÷¶w£F;Îý7ìÒUÉ=È<#çÙßj3lØ\fìì f–W<ã•1óù|fa\«éü†ký–~j˜äù›A¥4¼[¥ùËÙbîo·rƒþëçUì?îf«~’øÃJÏ_
-¯
*¿_
:ÿŸ
â_^–¼4„x×|2Ü/¾ÑÂ+ªÖÜÿŠÁW}Ó¸ï÷yÊ¢ýƒÕ§AÂ7oŠc_hŽþæHSêãα_i
T0bD¬™Xn¦vßC^<ûJ«ìüËÏ´V«1Ò:íÿuØ’q1È…7UMòÜ5ŒKüE³yë¾²]ÐnDlož÷Þÿo†ÿß‘¾¿´Ëž¸Ý4ÌöøÎàðÊìû›öÝ,jlºU²©ønm£æÝ…¬¡øÛó¼`pñ:epö¾iðT<1„ª^’Ù·¿çi¹[+ýôõš€S×ÀàXc·Ùó_O}”ØÇÈu>v.ÎÔäî®M¨ï'töþÃO>ù6˜ßó£—Pzh”:wÏ ¿¨š^Sf)™a6cþÇZÐÛ¦ ɳHŽÕg3fŽÌ8·/ª}Ñþoùt¾„)5Ä+ÿjH -ü‹!Òïñ÷
\àMçÿ¹!@ùÐξ5ä}kˆSÜ4HçÞÊM/¦*ËŽ:(:¾sVßúG¤ðúûbõ†,ÕC¬ÿ¾ßç*«N8ª¶ßŸÃwÿè-|øNRoûb&Wwn -×z~®pì^æä5îæռЇŸTËg¾
•ÚÞ-n¹ˆ5ŸNO>CŸ\¨Ö}w³Fqà Î\Èÿ?ÏË’øÅ>&Ù¾½;ÛQ¤ŽžÃŒšäÇLÈf\♺¬ùÒzÑ¡ÿá~Û°Ì'…÷Ãbïòsƒ¼ã;,ý‹ò¿hðŸ|™ûõý»O6ˆo—²¯_å^1(ë6R$®0U¬J3W•Ûúo9éäÕà+¿|\.=~–¯¬<:ÂG¥aòL•ûÿc ·ÿ76©Ö–
Ë5Ì“}«Ñ^|/.]}§ýüFFÐÞ·KØý¿xp{¾qçwýà!Ÿù:Œ¿üS˜ß9ƒëòU{F_Bëì=ìH̘2eæKëŒÜ -Î÷Y~Ûàê÷ƒAô£!Åÿ!˜øk’Ä]þ§_Jø_Þ•úßà“ÓÝož«3wþL&0)Õ,èø+oÍãkEÉÏötd=iÚñêäþ‡·«·²ïî¦ùU]røÐસhìøf–²áì8凿yó}%r¼bü݇ËØÖ_œbâÄ2œ>΄r’Àß/nwZ-÷ÿ¨¿ô8Cå^†ºýÝB6qUPV³ÊfëE)̨!Î4F›Ðõt£?ìÒŒékBâÚàÙÌx–™§¯6rÝòÝP·s†)î
K|ÿfг¿}Çÿþ¢TúûÃu¡oÏ7âÞŸôæY™pÿuÿÙ/‘ÜÅ¿kÅ«ï´÷—ên<-’N¾Õr9mýÜüŸóQ-2Øÿ®j¹á¬<ó_^Ê–kÓU™ëlÑÍn»<‹ÛûÆS8öZÍn»;‡-l,•ï¡]×9Njº±(xÏAÿéÙ!7®–ëÏÝOO|¥•÷=Wq{¾]Î5}1G½þàh¿ÔÍÖ¸ßfojC×þõÀXì;‘1É™â—Ä,J:Ôkù†É>ßR_®Àï[ƒäÿÒ +ïBÿÇÿÈ3ÿÆÛ]Í©B‰1‹Íµ_Ý>NÞúÅb©úÔÔ@ã2j(³`Ì0f‡2žË\®é²³æ⃕ÂÙo$õÖOfò©ëûÐýçû^ûÓ=ѱBx–9X²òŽo<äö—žbýùYBÇKwíÁ'’xçešæê“n÷ß—sõ§ªýìË_y)<|•®øÖáyËà¶tívó£»LæØkºhÅ^3·Ø}½<3OõñX}¦¿÷ÞŸ§ -ïÞ–`/NÑÝúíÜ«ŸóŽ–*·½œ¡ìúižâ¸Á#¨û·%AÍý-re¦;ef
Æ°Þ^LXB²eTNÁ€ˆüÊ¡è:ö“‡ðÙ‹í[ùêÿªRû«¯úàß<ØêããØüõv\Ýîqü‘Ç -ºGóÜ÷áAG~÷P¯¿0ŽÏé̆˜«ÃÓÍؘ3Ú÷²÷¥"äÌ—ÉÁ—dpçÞŠª-ŸÏPUŸ«è|77°õõßâ“—i‹Œg¸ê™q$6¼”íÊ8‡Õ¹m¸7Èó¨aª×%ïËäqœøýŽïÇy–êÙ2põ®A»GUw8(QtÞwVt¿@]{~"—Û1˜OßÖ_Ên,ìwrÖÛx»û0‹–0*_¯TJF«5fõ¡ÆBIó0õ¶+3ÕMŸÌRoÿÄ™ßöálvû¥9ÜîWîâñÿñW2ÝW¹¶e”¸z‡ßýÖKwöîÊà·V‡y©:ø‹ëEºËwÓÔûßy ¯‚Ëk´W¤¯±ò-Ý3Àsíù!KÂ+L¦,ä˜6ŽLÿÞ¤ uè„ -ÆèJ_'†å¾ßDþ§Jø7+R]2ˆAnÊÂfû äZ¦—Û°õg'ñeíĘ - åÖ` -¸z0žs\˜À¥Œ,ÆÒ^!ÊŽ+Ùë’Õ0XV¨oòïAÄo¥-ù¦s¸Ú“„uGÇ‹kŽ×t=õ
ßsG'm½±@ÊÛ0 -yûÙ&é×GëÔ¿²U3¤“x–àóó9a˜ç“¹¯¯«"ŒñÒ®0 -hy4E|ü]Ž|ó›áÌ/›ºµßò¥>ŒRÊЪ&pëÏLðUë˜yc'3K&Íf—¹1!Úp“ˆôB»¨ÔÂþaÉE}õ¹µƒù¶ObŸ¯|úawò+·ïG/ÕÞ—KØÊNný>'áÐ7 -ì«eüâ©Úöb6Ûüƒà?ýU[oÍäsÚq yBnã -Dï´ï±B÷ÑÍhÍÉÇ:݉aÒî7¾BË‹ÅlÛW‹ÄÎwØó©¹v?Uuøθg&±
NVŸøÅ?èÊï\Àm’S}eüÆJÆ-Àç°avÀ†‡cüÃKÌ–.U0^J¨Ë4Q¥oîëá§a»¸3~Þ:ÆËÕ‡qâÌx-^Þ£E#'{z2n‹–1>ŒZÁ3}¸IhJ®mHIǘвî‰è
Ò•ÔG£ÔýÂ?ôèíšc_kÕÝ?º³[òe»F°]?¸²›®Ïä2¶öW'V[³»~wÕ]~š*}%Ð^—œíƒÐÏÌ=0š+Ù>”_Ý>œ:ê¤là¬<ú›{ÐþŸ—5ߘ¡Øùvn`÷ÏóO\öªAtë?tAWÿCô?þ…Šò]CE[ú+wþ2Ÿ?ù†jz>[™·?›³} -ò¡Çjaïk®áÔT¡¸e˜”Ý0@*h&äµÛ2„[Ó5óPµÿ;÷É7!šOï%r§~T©öÿâ®ÞóÃRu÷OË„SßÒÕçÉòåçqêý¿.cS×Ù -iå¶\ñÎáªÖ‡.¹ïõº§w*c¾=µ]úöÁjåyƒ"ð#ƒGà–×S -OZÃø -ÉÆ™m}ƒN¼Ô5gÇj“Uá¹flH¦©’_iì¶ÀÌ¿éÌR’ðéëú²{¾uü ”‚ÀÌ -¿ ?yÉŸ~)˜¸€+Ýë Ž+µPð±Æ^žãéª`àÜÇ÷æS6öå󻆂ÅGöR1Äw$ó«ú[!”’Gí'Óз"t¿õ«ŽŽçâ --¸”2k¡¸ƒÄó#$Ü2PÈÞÔã#kOLæÚn.ÚŸ.|ã'üZÁïý΃ò¶¿>øN>
¶ýÉ"¶ñÜTÕ¾7®èB-‹=ßÂÇoôêï«?›ªêüy!¾?ŸUÞ‡MÌ·ÖÏîyëÆíz·ÜL®úÈ8®êƒ±ì¦k3Tß-Pøu©:£ÉÎ+0”™=~3Õ~4ã2f:³pÆ,fùòåŒ ³Ü›Ä6’ûIŒo Àx{*o_%£O4a³ìÀ„A6X‹`ý‰|¸1§"¾‡‹4¦úq[/Í•:ž,ç;ŸºÙÍ%[ ë÷Ž÷? Ôº¥íŠU{œ¤¢¦¡`bÉ“tò‰gZáÐ÷ -nÏÜÞŸ¼ÐÆ7ßk(¯®Â¯ßå¤Þ~ÍY8ü*H>û"B}èï^ªšØšS”¯\‚:^/PW©ŒÈ7SÊÉƾl„‘2,Ó”KÚh«Z™g>¦3}Ä8fáœeŒ×Râ7Õ4"Á†×®Ù?A×vÍS³íæè®C^¡ŠÕ3A -¡z˜E
CÐënç8ô‘’80B(Ø4H(mu`Ûž,ä¾óãöýàÉ×}4UÌi$xñbFµíÉ+hJó›ÆOgR®àú¹Íçfð
g§ ûFñU‡Ç¨w}³„;ú} pô;%·ó'wnÍ1'ð2Tú…°ÂX’mÊÅVYA·A&þ9©Ô -L=uH¶8{à?ò+V÷v«NLà¶ÞŸûó—ä#„”ê>|r•-_dÉÅåõ;R,;äÄn4Ÿö ×}8•ÝñÅ|ôV’ø¬;y;B>ñH§?+Q¾ô`ôû vÛç³EûÙ
NDo"úׄK_…«öýì¦.h¤NmèË–t
WïùÅUÝýfòb›ËÔ{Zb†5
…6˜rZšnÌVµßwá;‡…d™.[äÇ,š2ŸY¾Ð›Ø¥Š TóŒZnÌF’Ú2iµ5Ÿ”k©ŠN1…%e¼Dd˜ñYöÒú3SÀô×UŸÑ0PÕ;8:ÛB#E뢳,ô«;G‹Í7‚õ6_°m_µw4×ùh‰Ð~ÏUÜûÌ}®Rõþ à òÝ4î©…#OT꽯ÜT\ÆŸ~-h®<NÐœ{²B<ðR¡ÞûÈU\³ÇI,jÌÕ›ÄzçC{—O§eþNêŽ{³Ô
ý¸ŒF;®ãͶëõR~ó5gvݱ±|aëuåñÑlæ¶þnnŒË4gÆs±?Oh}©Õä'‰=j}¤1e~”歷N!.£˜©Ô.‰ßŽNö|åÅuÞX,g”õ•’rä²m|ãÙéâÆ3ÓøMäóºðPïþv©TÜ4LÈ©³—ÊÖŸ[o/æn„8)mB™:9¤Ì$¹x鮑bá¶!”%™Ý8€O̵àK(og݇èÏôý¸è¼^`Íã5èãJ½"×}ÒàíIëNN”«?šÆ'•ZqFê`öÌ%”XI…mÃ0_Ôû~pWzãÅíþn·çÛþt±´æð8°ÝÁ)º^¸ƒ±ö¿‡aÍuã%íy }ÆŠ§Ÿë„ŸIêÝoÜ„
NwqƒÝöélîÈë -‰Ï,±ã‰¯ËXg'ƒ7™Ý4˜Î0 1•p’©Æ±'èXaí‘KˆÄ¡ÓæáÐ12JúÈ9UýÁeÄyA,n¹êÀxðêHsëadí
Öt‹(3*½ÆC°>Ø·K /@µ`¡§Úxa6ò.éØ3:|Êjk6$Æ„‰ëÑmc™ÄJvûybÆV{…&Þ8H$¾Qˆ4£²{!†ˆMCøôª>Êàxª!Žˆ§×šgA!+)g£¤Ã19J Rfø°d3è‘:e \T?šXˆçÐaåãó,°N¦”cIŽ`ÄFäši5ý„èÜ^j)–rŠ$°òIU»Æº})¸‰âÎûÞBû—®Ré™”y·áƒ©Ðì„vŸvÿ=6ìãKi‘ç>Ê ->xKOÙgcŽ²M—œË埆ÉWŸ%¢O5<8®BH(ñe+M„ŒwRjú`ŠÏÝ65‚?näºÈŸ™?~ã±4€QEdš©uI&>¤vu÷V’\šäšª¿dCÀäüR°ÿùðT35ṁ2“³jí…õ‡ÆÂÛÄo¾>Gwð¾¬ÛÿTk>˜BÙ…e-#ùýßøɧŸógÿ*1xòkŽ¥qúd¹Mƒ¹©fþJÝYôÕCNkîå£bà©NÉļ:Ó-¡ÍÉGÆ™‚‹Iõ*‰} ¥PËŒk*§K/ë+¦¹TØ<z`i6J¹Ì$‡Ã’Ì(¯ªöÄtmÍá©àrA³JŒI4§Nlúl¾\sp2ø†=ú†…ÖÚ”5}¡×
}
¾õú±ó¶;r30C©nvÑÖaà`jŽ<ÒèÏÜY©9ü@䛯ÍÆ6G®%tSÁL²ì…ø -+6"ÍZRzÕØ„a^*¥0#ne–9Õ*kwVUتBH~BüØ¿©õh,ϨëÖ»¶¤Û‰êÍ”6
‡îÕtÅù“º¬thu©IŒ€Þ–°jm!³¡?Õ0(nsÐVš@yRXçl<9]î¼å©Ý}O©Ùq×SÜtvìR&Ü3G<¶]ž'îøÂ
õ fÏó@®óñR)¿™\§{hÊ°æs{ôsBÝöt>¿¦{”\Ø2ßÍg¹'™O"#Ä–[q+‹-‚4 Æ\T–9‡k‘aæ£HÍãθŒ›ÃÌŸ:—ñp—3ÌHgÂgÔÛ kŽÒkú–*ÕΨ²Óæ×A»¯ôÌÜ'ªÏ>ñ¯Ø‚˜¶Ô~Ç,fê›RòÙ¶›(ÿçÜ«Páô_4\Ë‹Ð’ÖÛ’¹aìGj¯€ ž
ò]ÏÜÙÆÓà'½¼XÆÛ[Á@AF=t§¨Ž4™õ¡ÆàqZF-‡ƒåMщyÖRR¦šfF™òÄJ-WéZ/.“7~8v-D¥š&n½:_l»¾Ü/© v ͵¶]™Ç·¾:ºâúaÚ²£ [t -X‡|ó•ùÚ½wUüžo½„U•¶lXœ)Õ9¯Ø>Z³¡{2tÅ=¯|…îW~4Öw=q£,¦ŠýcĘ -K1¶Ð’#óOEÆ\i©æÌT¾åÑ"¹þ†XqÐQØa-
l"q÷×^Tó”ø1¿u¨XØ>ŒæëµO“¶?s•Û_xéÚŸøëÚø;¾\-DMV½TÚ1,Cpô°Ÿ|c¡¸ËæëNN7_Ÿ+·}½\î|á«ë¼«éºÒì¼ã~"™ËÓ4%Í#tEuC5õ'f‰í×—É7܉mºÐœŒä6BÅ®Q$ÖM¤<½„*[hbòm‹{ÞøIݯ°nuRð …ŠŽ‘4î§?½fÿX¬Ï…ûF° k¬øô;.©Ú†[‘m®CÜ/g-\ÊàžP m-w°À„]Áñ¥×ˆÔµJ•Èð‘ñfШÐÖŸw¡hiÕvT›–Ìs\m×-qËgóä¢-CÁ‘—RËlézgév’wÛj³-ÉŸGP^ß‘× -áø+^µÿGw!w£=˜Œ -ÍJÛzt…´ê¾à¤‹kŽŽ‡o€v"¸ôRT‚YpÁæáú¢6G}ÑÔ`|üx°‘Ÿ -Õ6Nª°¥º…¥»Ç§WI(´…¦Šfmç˜?YÜšªÝã¸îç^úÓ×¢C®_,Ž?`3¾Ë•LNÓ¶ÁТ,îu‡ÆS=løO½ä}•Á»ª¥Ž¯=D£©v‰ÙTg(¯i(´³X]ÕÎÒþ‹v»ïwÔ‡¸¿èÏÑ\©G;«œjPm›ÔBhSPmxÊ¥íþ3lïOí,mËÃåòŽ§Ë©“9®ãYb[КÇk´ÐjÈ©€|ZSÒ>ßIŠ.´"ózA_^×|o¹Üþܺ|4^g¬#Œ¨~4ëöŽƒ¡Äš}“¥Æ³Îš¶;àêJϽÀxZ/%1rç¹úÿ‹;?ìŸÜù®o=u'ž†‡_¹P¤Ýý@!ÖšH×
¡óP¶{$Ÿ^oG×kNL¶\œƒµpUdš)XÇ2ÉË×usì·BÎIõŠ¡ƒMDm”±ZAs=Êæ^‘l]$ªW=èˆTsM<±›ÌZ{°Ï5»ŸPí¬rrmÿÔÎZí,’ß%ÛhWof¬.—Ľ?´³Ä¸r+Ƀ–³/E‹:òYÁa&Rx¼XË¢žØæJØkµÕÇ#qŒ®‰¤VôábVšBŸ LoʽÞr~eqCg‹Äi<‚+ûB¯.8¯n¨vm÷¹ñò< ,îuÝã¡¥Ý}W÷²„<’3%”YÉ1=,nª?Ô|kåÌBóœk|ïÚ#SÁ¬Å~4ªßŸcѳœM5>ô±EÖÐŽÒ&æYõhg58ˆ{øa}PÊ€v–žQ* g’Ñ:]¸ï½0Ä!m|¦åÚYƒ¡Ey¥jgEæõÖçï¡©;ç¬/Ù7NKâåð¯\mIu»r›‡R
ÅÜuöбÔor -kDˆ‰Š@=è¡"ñ%ÊñI™Ý[k¡‹É²ÐD¦õ’£²{ÃGC‹›êS6Õos€ÿ³-ï©Þ¹¶ÒÖ.Ðø¡|ú´uvÈ[µ$×'~`’vÓ͆ÃS5ëM¢šmåÍ#…]w<±÷k¥`qKéµvyOè›IwÜ“b
PSd©+´Â¾ªUÖ9 -ë-Tû·°ÓAH[Û‡O4¥ZN$fÒù§vÖŽ;ËäλÞXKùS;ñV“¶±?ìYζ‡^´³ —ŒÚ쿵³Jz´³ô¤Þ‰3E|ѧ×#ÒÍ1wÁð×®ª±CŸ«+Ù6‚ê™ål¢Ïß8„øÀÁˆrxv/ª½E^œ±a ^Þú¿¾u¼¶|Çh0·©frM—æëÚ.¹Wɫî3ôž©ìšÃã„]¯=å=ß+À‘…v,´ñèëIìÄ€Ðô‘³fí®q=ºë)¦ÐJ„þ -#@;‹Ø8üÕÎò!ŸGÐ~×¥ï¯M/é—eSjF9"É\ŒH4Ó$ø í.â“媮1Ð@„†];‡®YË%RËõÅÐwÕd6Ôu8B£Bn¿é<÷9SÍMõ ׶ŽÚo¹!¶P„J’wo.e’s„.Gç—$ߺ±L_°i¸.¶È*$«qHp©ë×í™ Ûó%«ßO£ÙýLɃÜ|Û…jgQýöýã¸æO¨v–ØôŪUÐí,?ÌEm¢±T´Ë¬nªM½v/ÕÎÒA?ÚY%=ÚYºÕÎJüS;+½—c‰¤¶Ô’¼9/´ã‹¶;€ï
ý
ä$ÐÓeT’ùÙ8Ú -ôõ¤î£ÉëCVšp|„t©3Pݼ¾úÄdú€¦ÉKz8Ç»ÇhɵÔÄYQ}²˜´^ÐüÖämÂoþd¶¸ï¥»ãñBèr!Ñ&Ø_Γj5Z'ħõæCÃMü}4ŒŠ'5yd~/<'PÉ1j}˜±œScuDÄÔox_¬a@wš‹ ùOþÖ!RÍ“ Wmn?O–ñóaäÛbLñÇõC´ëöN€–/Í+IÜ–áOÖŸKj9«Žjþa¿·ó‰›¼ë©?ÕÎ#=.ËBýOí¬Ì?´³Ò,ôT;ëà4MÝYgmje_5j„ï½mÜ+Õå6ÖÖîŸ\Ö>&8µ„ê[Óz<wó`Êco¾º€ê8]ʲ‡^Õ&o,çl$¹×¾1ˆƒbóµEòŽ[Bëµ%|ÓŹЀ§kaØŸCk™Ž8/©á£Y`Écߣ¶êøè’jwÝ”7}4'8£¼¿gª_™kIêµáҶ닃I¤–íÑ—ìÑΨvÖ½%òÎoü4ÝOƒ°õÕÂH*¶æ£ -z©¢3͸˜’Þjga} šT_iMûXmÍ¡©ÚÕ‡Ñø¾ºÙQÚx`²¦ácg]ÕÑ)ЮÔ$Xc¯æ8ÖMtÅmŽâæS³zô9>v¦º1-Žx.b‡z\5'fèÖ™¤-Ü8¾Xƒ×‡Å˜B:÷RÓY±í¾+Ö×è=wh ×ß»i°6µÎžj8ǦZ÷úÕŽrU‡î_¨]?äpMÅŠG16×B-F³Áƈ4ÿÓ?»ÆÞÏSd‚TaFbxŽ¹.¾Òõ.wã`hžÀ'KŽLÖvÞ dÜ«X‘ß>_J©´E,ät‰&Ju˜‘{~HìA.…8¦+hAc$‰kTgkž¤nÃþ4¬—öè—ìq6ž[ß5—ÐxzttÙ›S}°ÂfÄàŠfê´ÕǧkH -
¬oöh -×ØõèP‘Š<µþŒ3´ßPMhð\þ¹&ö@ö…hãzC£yˆ¸éÄyó•ùÈq_ÚñÐEÎXj:µMhËäÑX4Nn¹é -û”:_zã~¶óž_èžÛ²Dü'téÐOŒ2¦:Ðe;FÊ«*ûàž>ÆDHÌ·Ä})¡áã™ü¶ës¡¥Û÷H`w>w…v–¸áàDô|Hå{GK…ÃÁ²èšó¹‰T;Z!XÏZOì³²“œ9_hg•öhgÉ›?œ#6]š‡A×[IÌ×69Ð\“ø}h¶ ¶žu–ëÈyW¶’Ë;FQùò=cµgæH[/Σº¶¸ç’ZÑO_HêhøUuOÚn¸Éí·=øö‹ùíä½jOL†žt> ÷¤]wjš.{Û!*ÞL®=8kÚwyäEtm£ë‰+×òÉ\ªïDj,Zk¬;>En¾¶DÞreò$…*”áõé¦Rh¦9Ö|´É«m¡ƒªÍ²Ôe¬³—v|áÜñ¥’jÉäÔ
D.À“z(HIêu–ض c a„ucèÑ`]ƒæ`Tç4ÏRWÐ4Ú]¨ùä¢6hnÈå»G£Ç„®3•t;‰°W¬_&XÊÉEÖÈè±%MõáɸŸA5ÞVÛˆ™4ßG¦©8:^ÜzmÖD4壡ùø-m!\WÔ£Ô/–lÍjÚçReÕÊ®¦¨º¬õ¨3ä¡r=‰Û¤FC¾Oul•·;ŠäÚÓÚz¸Ùä<‰þ¡én#m86kÚ£µº£·ôbÇíeRp‚)«’Ü¿¢5E
C©ÆtއŗZÓõ„ÑÎÏϦuÛê¦árÝ©™ÈÇÙÖ;óQ¿³QÙæ,ÉñÅÌæÐJÓTþ¡ÅIê>2GJjg•µ‚¶‘„9µíÕX×–îrêyߎ°ZB‡ºzïx©îØT±é‚±±ùRãyš³Ð5«êî‰xª
WAìž|rêÛ ;Eæ¨XCjùŽ;K5‡îðü¡¯ý¸¶°Ç÷ܵëOM£û&³ŠúȇîªCO]]uòLRøáÏ¢ô»o ]_.#õ¾3|‘¶ ÕŒ%9rí×tŽÅ^7)º°·¦âÐ8Z37]X Én¨Ö¯4HNM5¬Ww9BwK$ögÅc–
&¹¡šQ«ôŒ•Ýù1ÎKØúé¬Kz²—šÓQ-OòYš5NзÂþ%ªIT}f¿åó9Цís µ,Ö¢Äè83hmázjj?œ.Ö|0kùˆÑbL§K6…Ž2î¡k*§ú(ô^/4©ZFBg
kÛè%“ëÎ;ãžÕ<Ä&ì¢òÔ$mÙþ±Ð¡ÖïpÄþiÓ…žÜ’Σ=ãtë?˜ -»§cõ&èq•4ÀÚµÜyÏ—øïiRJ±“k!†¥˜i2ê`_xàE îðCf×C…Øtk!ÕìÁÕ>1Clý|±Ôòù횽㩦94oIÎGsÖêñ¿>@S¼u4°ÄÍgg󻞸sMŸÍÁý]Üo¦½ŽqeV4&?8 ~¹”&«¬ÍSò7Õ•¶:Ò{BÄ¿óMæp›OOÇõÎ:êyµ&ÞúTS…Äêó*Z±‡e<Õ
Ây“ü‘Æ2ïÅšƒD’Ÿ“ºe6ò •DüÉC…è¼^øÞØ{&î~ê
@ëÖÛ¿\$nº8sñK\×å$îx´{=µ -bý%gê«ó6DΊ÷¥>†Œ%ö^Bï ûhÜÃÚêþÖ«nð©ôÞth¤ ê^ÄX¼¿™h†=X‡N‘²ÊL -îÑDÌÝ2š*8'Ü¢VšøúœVÃÈ«ˆ]àsæ†þ=zæNÓ¬?0k¨¸‰œQ“RbK5±HŒFŽ„嶺è¯i<7ë3š -bäûi+M”²`O„_`©É‚Ž%yø¯ü–¡ˆ“hÙ'æ[aýRnøx4¨~´¶
—»u0êlz¹€Œ/4È —Wwd*òª[
ÍöòN¤F¡ú¸w_NµxZ¯/€v^Cë=ÔªÄn‘A‚o{²„ß~g!|žf=É% «„X»áèT¾ã±›vï5tbp¯žj}¥WÙѽ'XkÄ ªƒ¤ -’×B߇‚îrÇÅlëçóøMfÑ{:™$vÀvÈëÑ7nFïb={‡ó6éÉ‘›G`×úÍäÊ=c¸ð,3V·Êµt«s@NÌÝHâ̦A2É?eì·ªÚ;V»zÓ0z¯lÓÉ™bÛõ%Ò¦‹.¸O/„ç›+¤•FÜ -ËÊv:rÍŸ¹àýéýš|bEÃ0Ǥò.G~ãÁ \Ûµ\Ó•¹ÜÖËÎèEãò, )ÆgYhÖìKõá°‡dõÞÑòJCãW[i³¶‚V¡ZÚ$•ªwzh2l’Ô\Ö¸÷ÿ½)MR¶•¸ªÒV“QÝ_.é$>ªu8]ç#57Èëp /ðS1AjŽAÚõ.®;ò$Üo•ˆÍJ ÙÔ¶¡1M®™¦¤möòÈ y–ZÄóÆÓs¯@Oõ öliË»œ°wó -ß÷‹5™[¢v†ÿFIuÓÓÖÙÑ=GЂÏÜ`Oâ˜=óÐ{%>EÊnMgª'ŒýŠÍT³[‹Ü:·X£Í©êOµš¨þp&ÕyÅš ÉC1Ç¥§zü´O‰£:WЊÅ:;™cšríJˆ‘úylÔ@³…Ægb‘ -ÍÏ•kÉ{ó¤zbÐ…þ0Öy°NžYÙÞ+%9ôÙ4; NÈ$ù6öÒVë¶vß8hÑQ½2ܧË]g: Úu˜Ûô:À?l8>™î^w`ö»B7„Ø/ˆùEsrmá¯tE#h\ª>:•j‚“s–ÖîMí´j·¿áÌd¾úÔD1³Ñù=7ì{iù|æÕØŠN2ƒN¸ªû«%ì_JÝ_H{žùñµÇÑæèAþGÆn,tzH˜Hç#´+mé÷¦óúätÃûãýñþx¼?Þï÷Çûãýñþx¼?Þï÷Çûãýñþx¼?Þï÷Çûãýñþx¼?Þï÷Çûãýñþx¼?Þï÷ÇÿÏÇر ËCSCmDo›±n>s‚ÉßU¡«R#SlmÆOwKI]ž“˜š’å¸ -Ýδ«eÕú~è,Eg0v£SWÚ4]&è„äÃ’M5èŒí$.×TXÚ]Y{l:2Ñ=&Çç[Rúù©Y™m¡I¤~HR”J‚ç£ûhEfo9j•¹>¡ÌV—B>?mh$BR¾¥"Df›«ÑMÌë8M¸1HD -Éfè&DÇ°™bJ¶Š“.4ÎDJÙÐ4|Lš9Bé1 oI±yè”=U͆©å0#ø±äü³-µyµƒ´Uû&êŠ:F¢9Hc$„§™ª@Ͻr÷X:lW÷AG(®gÊÚ~”^TÐê )Ù=J*h*¤UØŠ©µä÷uý¥¬:{!º¨w.ÁÄV)©ÐšÒ2ò·¡;À)¦¼½&è(Ú:]LØ9OwªƒÒ@>‡Ž5á¥c•ºhc´A`VE)U¡F~J-Ú’] R%9øk˜ -K¡«_iê¥o šAç´¸ª¶_Px²‰o€Ì,óR0èl
Í2—júH©ú‰ñeÖ¬˜hu† }ª‰yž;¨¼!F á{€F¤N7tI¦BT¦¹ve‘•.¾ÐZ“VÑ7¸ 67R“[7;ÍYr¾ä;k27Úkó·Ó·;‚b ˨¶™‘’¬²ªìa?R\†“a®ÍiJ®ï0
ˆ[‡k7]˜¯©;ã¬+¨‚çHÄv¤„LtP*II+íï¡4„Íg×Ñ'çÙèR2t™ëìA+ 4†U«mA‹BW™<c"„'˜Q"dl¡¥˜R`NJ}þ–áèð•SKl5Qù”T´yº´™5ör\¾¥°b•9ˆ\´‡Ø>`*F&›ö É$¶‘^ÑÝòºªƒ“55Ǧé26”ã¬ÄÄ|KØ9:ø@"BíÐËjH;âJa›Ú¢ö‘”xµù“yrÓEè`” -z(Br‰µZGÆ‚Øí:N%öŒÎÛòÎÑ (P%·„<KÚe’]f§+n)¥Uö•Vfô¦]$èx%ãF;ñ¢â̤¼Ã¤ø+¥iìéêK|¤'£È|Ó¥›ªä$VŽ%c™jÊ‘‡J^i(3~bz>Á„Òb"3Èœ7Rrz¤U|?Zň‚^è¼â+¬AßÃû(¹£ !Úˆ”É9 [YJoè/E¯¶PëRLð R ûX[l"Ÿ•èÒëéªiJGblVoÍÊ2+V›d¢Ö?œhªY¹ÚJ›¹q€.e½6>ÏJ›e.T}vÍ@)]Ùæèp•ò6Ð.1Ð2Ð%OÆÇ’ªbq džÌõöÚÔ*;tRŠ^zã -úñ½èÑUìŸ Ûpj–níþ‰ZJqØ9N—‡nø"kê‰ÿìéØ%>™øLtÉÀ®hG*+16»7:Îa3ºŒÒ~èZ¥Çè*)Ù9]=´35¢µ7â—uéëûkS+ûiRŠlàçð^”ˆ…1Ï¡]£´Ã{í®±º²î±˜kÚòc@·êéìÛãD;ÃÊ:Fj[†ƒ²£_½Û‰~ˆÉ…ÖrQópt™ÑNçŠÎÑtó¡#¤ qˆœS7€’AîŽ+°¤Š1”2Üâ€.59¿n&muÌo]áWAýÂwåõd,aèÔ!>ö 2…o†.7!`W¾ž -Æ×_Å€ÞĊĽy&À_Ï°2y=ñI|xŠ«‹2†ÿ¡ÄèÌ^°øf6t¥ oŠ®g?ˉÆBdŽ¹Sh¢->dyØ’i†._Ì-tGÑŽ¦Äò×÷q~‰eÖšôêþ
¨Ú…&µÆD?Ÿå^§3Ö c&ºØ’I6™ƒPIì¥âá#´±Ù– #hRJûÀ7‚2*®Ì³@7¢¶r‡:–á`[r,±O2ž´ã©pÛ0yÐI+Eçö¦ä°Œ´»O_¾{í’&ã¦ÍÝ2¤'/h©èCòЄ´kºÆj×ߤ]s`|‘.c(XbT’íØ"ó -Éü¡Ô7JX#ßöÝ04'œæ:R5ëM¡Ý¶
f£cèpB>C)9…ÛðÞ ‡£ÛTLF×_‘µ¦Ø:Õ`‹kvŽ•YW±w¬.¯Íöä³a.¡»IN*·9žv»ƒº»ªÜ–Æô¬Mƒ0W„rís,Ñ¥G}*ñµ 6p¡IdüVP"0|ýÞòtˆãz€|®õFPWcH\XY` ²¬œj*…e›ƒ¨Oü"§1Fþ‚®E1@`mä<h®£'ö›TaM -?)†$›ñºÈ"79ÄetpÓ®ý¸Lšjãh‡(=ï†4„Ì$±¼€ä„EÛ†S{†ü;Æ~>7cÓ@äB ‰P•½uíþ#ñ¹ÆÒSòI—U7Ò˜ÒÊújÓ«úSò±
ø(SˆÍ #>s(óÚ}
òTV¥®dÇ(mI›#:wi#™¯˜— L¢cóä
%9´ŒÀ÷¤„ -:!‘[ÀïÉI«mÐYHm …Ølzµ¥%âw©%6ÜÊüÞB8ñ} Õ¢›~5™cÄÓ.{ÐÂKm@¿ã‰ÿbWõµÁ¾„\Ó~ú/H|Õ€€›iÑÓýI¾CÍÙétn‘ -WŸœD;×ØJ9̓¥µN›,–ê®9Kñ5¶ -üt¬‰&»~ ¦öèT¹îÄtt…ÓkW¶s:ïA£”C(OÆ“ü2Œk‰_d>js·Õ—ì_¿#†¬0ýˆæK• <œŸ!>¶©Ñ5smi×%GäA´û”Œ7lt ÚIŽY\2?(1…äBrB‘:O)> -ã•RÕ×RŸGI㕶˜GRæ1y?:Ca3 "‚¼DìôÏŽ||ÚµLrH‰ÄŒùˆý™Uv¨³@% äÈ
ǧ€ˆM»U‰j³6R_Iëí¤Üõý¡f? -Ú ¥ü¯;2*âê¶á”Ì‘RfKÏ/¹¢ÏeÝ£A–? -þY.oEIUäßèw«Ø9 - šó5‡Ç#~ƒ>†ùŽÏÁÜ -$ÆJ1¤æ 1Iˆ%ó 2Ëœ'ñŠZ°OiUu_¨Fà:£k]É’Z…1ÂZòB|7!u{œ±JŠ&uÈJcí ðC× Ÿaœ‰ÏBL&¹°…¦êØ$Ì/ÄfÐ_¥”u}(™”ø~ä‡Bh¬)•dÊF$›Òx°ªª“eÚ-†*R—÷ýÒL±6!$”Zñ!i¦JÔëš…aŒzõ®œdz#¥Å’:]ŠÉë
šU¦˜Ô¸¥dŒ§Uì5®õÑ":¿àÇ -6ævÜY$îyíËîû›‡ºõ«ù `RR?l0»q -sYJ€?ª¿à,îüÖ[Ú÷<ˆßõŒA)Õ%©¢òkJ]Ubuzí‰íÁ®‘wÁw"^C•µ…Gž_‰u¡ä5¶üŠœ^4ANVoešä·:PÊ4Éq@I¡>Ï#y5T
(‰5µ¼Pl‰¹Û¤>–Ì-ê}ü$qÁÇÓÁ¸³!Yf¨Ÿ¡(Û3ÒÍ -Eã…9”pºjFRゾ ì y£æýÕŸo¸éE
ÌcÔq -µž*˜B‰Ä7aÇSÄÔÊ>ˆE|ùlÐQ·Â‹Û¡:¥%ñkOú¢–‘ÈEá¿A &õz/m2É@ZAÞº4ñ‡ˆåÔ‡‚êú-×+ì@©¥*Uû'Ðú·°ÅA[²}$òX¬jsjê²ë{ˆŠùuCh¾¼¦Ó‰oûr1U=ÊX×ë™”üPÑ4JSµ{¼°é³9|×sw~ç×˨²cÓµyÒƳ@3”c+¬k¡nÃÅäõ‚"òUaë5©îg)oÛ`ä‡BLnoÇ…m_ÌçÛ/¡4U¨k´
ó[{r„µ§&‰[nÌ—¶?p•Ûî¹ËÛ¿t©¤‡VHâJqópÔ¥”ÚZ%âÔOJ»i~Lšu'&Kµg§‰›¯Îõ
d¬eÀ.üØžzØæUà u?¥Ç¯Ìè|Cƒš“ÔO žÑ¹Iìë<XO’ÖØʤn‘ëvÈ{¹0â?ÃsÌQÓæú”Ö@sk9©º/ü2ò¬ ƒØ›Á]N®éÕsµn,ÅXÈ)kûj" -zÃ6AvDª[UN×ê@iÆÚ.]ïÌ«¬:ÜCò@Or¸ôÒ¾Èõ(µ$µ¤%ø–µŽàZ®ºp~ðå¿dw¿vòêÀþ”ÚXc¬Ë‚Æ<׊ÒÛÿkoWÕº¿‚ݹÅîVl‘ŽkY« -Ƙ¯Ã"ÈK/à˜ -øÑ&lÖФ!Œ_±Ÿä8Ô5˜øwg9(í -ó—Kק@~•¾ä>&€sÊ6^÷W‚’1ÇŸ`Ò´ÿ£u ¶'²I˜Xöâ㳚Šÿ F‡Vn§]R~‚¸(²žM‡<Þ@$Ô«‚r㑼¾è7•<†cÞŒsÜ“”ሣ*Ô©˜šÝd\ÍF^°›´r -ìÃ}‚Ø!`–(ðÞ:Pº€‰BÜä4˜ÚôÃù>_÷[V²E˜Ð´‹›&vÜ~,uàôàë4ðuˆ“7Aÿ¯Éö–² -šÁ¼7€µÀ‡ -€©æܹÆqƱ+â -šÇMùãðM¤ì(€€ -¥0õã>~Jûî¿ø:`¾§À×9U‰ãøÌŸ´ËMÐÄþVøhƒØ5NYâ¿ -hˆ¯Ãyq“é¹úÞG°S§äEÇðy_7Ç|!ðÞrygô%_†ï·›(òº±‚›ly&N
"c©(¡BSœQk,ºÛDÐiºÂØ·;85ˆ£øžÄXÜãñERrNqhê)æþ؇ÁÙ„× -¯‘ãëC><|(öà €H…½ÚÊe[‡<%ÇÕ0.å¸:LÓƒ\ƒsÔ<ÔŽ°/$cËw‚ªß¬Š1ÉÆdpN¹œí Çq„ì§!þ5PCgS2!0Wæˆ2?û§„Çñì‡m”@
B|ÆfœNiÄ1é'ÀĤøµ!5qtº(®IÖÓÁ!†Ò–øß¿à=&ŽÁô+ð« ,BFaŽíû˹rÓã®g.#b«vé}ûA¡¡%€‰àž¹ÝZ&s‰U–žq¶ ؆›NövW®JG½ÛÅM „uÂËÇ›N 2N™›â_»_’^o÷† -{½…³OÏÛË¡FÃ\¿»œ›²æûr-㔡LžvoõQâ¨øW‰s’2ì#Ä$ÈkPÇ®Œ†i²„¹õ¨-)tÎäêݾ7r¯
òç1ǾK‚};øEnê¶?NíòF0éÛ(xÁZN
âZœò?Õ ¼@
Âwh2?Äð/¶Ñÿ5sQÀæ&F2Aœó±ÆÜ&£‚q~ò¢ï4®NÜþ˜
wž¸ºcä<ÆãÖÆûáª!ÿ…ÿ}˜¢˜ÑÖw&L5ƒúÇ¡17LÀ}ä&f†3ËùRðÿ#`^.Ã؆›Êüœû}®–=¦¥2~/×sùˆ“ã -g¯M–ÀgàÈ©oãÔ BæÓõ\ü¸jRdl,AœMA=ç8Lý¶8”–þTƒ˜
j°6Ù_j–WFM´|±Eêvk¹cÆr¤˜AÎÓ5}§Ä⓹ -TȨ˜’]tPÎzP+ß…ÉnjףUDDÕ6PŒšt7òU\p7ÆëP3%uÇçûLÈÍrSè@ÙÜŠ«¹ú‡(¥A—Lü NcnËMŽÅx&v‚O5è•€<p~úôõ \þ>Ç|XxèòžÀr˜ž&9OPÃ&ÚŽEèà³Ká3ªO‚žÀQ ÞÊÀ‰ Ç€¿?¦úâj¿Ä˜ŠŽªØ-ö~ºŽSÀ÷ŒŠ.ÙE¤4«Ñe;IM{ -rXbà÷Øß@¦äɳÒëËab*W+?9”ë’^MYÆMª¾0chÂðÅÑÀgÔ ÿ)>íÛ¥ô´ÇD.±Õ蓼ÂåíÏ
õV0à§@ÉÇzÈ;sŠç—}¦Ï‡ÞN-âg—ÿPƒH¨Ò'UëR¶J©Aeç9›<¤ïÀ÷ { qüW5×!5ã85l72+ÌÛŒ¦Éåœâ -„Æ8 -êE<=ÁïqŠ*J=®“¹§.åðÌÏ^S _$ıe¢€¼Í\?Ôì@aôÏZ/¨j‚R*ì‘¿•y²Ô $Öá\r -ypÈH£ª4ÅÅ{†8;Žß6Ðßqo•Ô#y)äì9eI®í=r -LŇ)Õ\=”¥0F€üÿ‚æl63¡.JD`nŠq¸äVI¤¶©ƒ(ÓnI†êÉóÉŸý'ƒJ:íùb§aí;ãQ>i+ ç%q^À©A¸
©AˆÃ«€â7-céÌœ”9å5ÌS¹iÂøçL|¥:“X£Éñ“„&u¨™€b(Ú‘Áÿ‡¢Ý¼*Ú%ujBߟšÎõÄ.C_üû0=²\MœØ¨Ml„û -`vÌ3¸]èeôÉ^j\Ô ŽràÒ¨SA}jC£€^‰k¼2×WÊ
Pƒ•0OŒ£.ûM£NžÅõÈàx¼†›P>8#\vQsAõ
rµRgù|‰×ÍUÐßKƒz#`f°Õä*=P>¦´«r= -§\ÇC!ô¨pyÇèŠ3éóœoNçëêå\Ïø}à³¾ Z¹ô®8FÌãÎ*(J欅d±KâКœ“ÒA÷×IU{‰è’mÔõÛK)ëÐÐ1¤D„¿æ”šr·pªAvJ05ŸûÛ ¤ù¯¬•dÄ«DXîF.oêQ§¯O„<2§0éýp
(K=oâzú záì\»»”LîÞ/Jë3¹?\Îõ×€rà²kK1gØ -.ܤ|ðÁ˜W೸ðw6 Ž -œx·m¸\\OÆ7€uAýÆ!f.Ô=¡æG¶áâ>ì1uâòh®·Õ>~ÔhûçAõ8l&uöêPížê¢Ä1Œ¥Ò•EþÅ[ -ꢋ~SéÓöãà5c³_EÓ.NçÖ -ëÁÜ -iq”ë•„œ"ԮἋ®Ý[!¾;—Se± ™¹"|–ru » î¹®ö9h:§âŒý›ÄóÆJ.ösü#z÷óã®ã˜cîÜÅõ¨u½(Gšê©·8=rKÓÓŠ3&NÙ%[qP(aœæÓy›¨ð²mp@yózö±€‹¡7—SŸƒzÙÿ™ ê})L@îÆ¡{:b*÷š¡ÉçÙ:J^¾
Tc9>}+Ø5ô‰šºÆ/æx)àPüÀœX|=g5Ô‡ò©K@
K╳– )Pá0+à0ë`%îâúä®æpä…q¼äü‚SÜO`/L`îfPáâò—Øîñ}]Ê ¨j$ .F…<ÝÄÕPà~û$/år‚P‚º#äŒÝpø Ç32¡l/ñr+W·:í1TÎ Î/ö¿¿òitPîfPSåÔè#T8å¾ì
à—É(짹X‡càõt³oä0-(L€R×½•\ìOëЦ4ªÒWÓÂïBþP×¼jRT@ÁFà/DtÕQZ‹•ÖCÆ6ìæìÞÿ¨½©±å»pÌR?uTÌ·@Î[ì~c øˆ9Ï«™ Gë¹((Lßl0&cÊwR×Óq*«:vjï@½%©s™ØF•l…ûþzXé ·›©Ë¡ÓiÛØYŒÇÍÅTbÛ>qJ“!(£sùFx®8Ô<C¾À%Uê€ôױܳ*N·I’@§úêГ>Ø/ãˆç8ÌárK™q½½ˆöÉ^I„á0«uäLâBÐÒ.n圹€—n&n~Ò¡n÷ n~Õfÿ0"_3%ó> rúêÆ'}"ýÓ~2m@“¹Û%<k:,}]wVò¦ñý¸CB§tk3ïv™^[*;i;ò\ï*¾g öˆÏér‘ßó
LB£†ìFižQ.>TN˜'–òÅ‘Eªœ2ñÿé2ûî¯$c«wC~Fìÿr3ôeqÕ»Aõ‡ãœÛ3éèŒ}:©O“ŽoÛu¸@©ˆósIͪ¨&6í%"J¹¼4ãÿd=øO2]|׬ - v&ñ¼³ŠË¥rý¢Y+ÁÁGÆãÖR*èÙz*ì½ -‘òa™Ô´JkÒg4ñDi
ðHÄ×ï×ùxíDLåN°°k2±]
zG¨=zôf>¨DÓ÷?‚¤Þ½ÂèÖDÆw-úy·©¸èÃÏLaÇIÉóæÃôÃVZt_øw¥Y5¦Ì½&¡ø^þÿZ qv£ó°“&K6’ï6
ÛùŸU©œNFú¼æ¸4§Ú°Œ4³† Òzt…éêÀ•@ z
è°¢’˜Šý¢‡"æ^·Ž¬Ü9¤0š¾ŒŽoÙ'”¿Ý@ž½>x7߬jú ò iVõ!*å«P¸pÅ^/Öqêk1uª\Mëú“5¹|ç!ë‘À™ "ˆ¡ +Ù.ö|ºú_dIuÆâ¤n]ÈAÑW,Ãüiå”>Ÿr¹±€pÏYdU·Ñø«)|þCH¾ú&% -3§ò¿Y -ßÿí€ œµ Z¿\u¸F·|²§*zÎ2}'àÞÉÊK]$5ö¢—½–ÔÓ1õ¼_"yYBö¬ö¤éýjYJ
_]¥)«Ó¡šöcß³ö•x¶†ŽkU“¤6›˜¥Ö‘â¸6-±÷³uÀÍ\bIíüg›ýì1ÕÔ5m©(jǹœR(xBâ#}«Gßî7a²Û&»EÄ<o? ~VwX”Ûf)¾ÙN’éZdlý.aJ§s«ÏÜo£i¼‡Äý‘õÕˆ¾ýÑ„Ì0a²Ú)ê~—€yÜ"?h–Hsjšåÿ,~TiF'·k jwÉ]êøR›£Þl -5"éƒ*‘Ö³O9¸ŸºÑ§KÝî2$î
w>’÷>òè'ý2æy/öÝùò£”yÝsDœÓy@|¯1«åÔË$š0Z$ÔýN>䘿 -³¿O?SLÞÇÿ›/¿ŠD¥$¥•WÌ^¿»höìÝ)iV¥Œ¾ÑlH§÷èÂkc‚ó¶@,àâ -ÆGdîG©(»[Ê$ök1ظYlÆĵiðœT4±¸0Ô'¡jš_h%{Q~F|¿ÛT”Ý+“ÜiK3ZIézJ”Ô¬'Nï6bÒºõ¯'«AÍŠ¹~9%/VáDƒó¶~_Ãç<°x«8¹]OœôA—JìÖd|QF÷ïà'ÛÃÏø¡j\Èü&ö¸°çË’þZ_Qçu¢æËi²ù‹Ý÷Ñ•êûæ,,ö?Øó@~¬ív„d ÎOÜýÁ[ÖQïoÖY&?Ò–#«tÇ÷QB½ùz@”×}LR\o#{ÕpNœÕ"•Ý«13Ï);yàUž•ùãâ³’Õ2"ý‹¦0¶u§èf§@–Ss„¹ÓK‘Õ; ÿ9cQz‹öCƲÔj¡ùÝÊC¦·«eÀ7©¤vMl!¥C›º×—d7™‰skIsN -³~7 RÏúe¢Â¶³¢¼®côó^õ¸½h·`òÛŽÑyŸQ…ý‡é’î³ôûÞ3ôÛÏGÉ‚ß‘o¾™ -_}‘ŸÌé²®3Ò¶ÒëÒö÷žâʲ+ô‹æTVÊÔ%âÛö)ŸöÃy tPÌ£v‰$§ÉœyÐÀÐúDZ‡†(½•'{\qì[ö¬ì¸è^MÝí2¡nvŠîµQ’‡æ¢çmæäí¯zDÖGCæNAf·ˆÇ]$™Û'£ò¾bÞuŸaÊ:~¦ßw¦+>œ§+;Α/$tN
±‰|Ù+&|û„¢Í"*¿é ]ßrAÔÙäaÚÿ>X2Øà'lfÏðkXK²áóEº¾Ã†~Ó{ˆÌü¤Káj>xÔ49_Žq)ÄÈWñƒª×òoþ]C”Ý!•–_²|’{I]«Eû?^#¸ó]›¸ûM_øê3M< ¿ª#zU±ßvŠãueé-„ùýªc²Â"kÓÒ"çï]ÍòJl%/kNHï6‰Åí&VIíÕžFá8Ç$÷ëbL¨"¹’:_U³M˜ó‹1QüÍ‚êýì(ùôÞW2Xâ+úôÁ‹ù¥ËSô©Á‹ùÚwès“”úkÍŸnN -ó(÷ -.»q¤ãN9𛓤¯Éÿð‡‡‘fÝïå’ž_i{“7UÛq ßÏ3ô›AKæÕà!aú÷}DÒ€š4·ñŒYA™ƒìIË1ÑëžÃÔÃA’~Ö%‘¼o´2k)ö“”6_½i>).nýYZTi--©²7«Ê¿*~ß|AúªöŒømíI^ã9æU‡%õ¦ó€$·ÛcÅIi~ÉYIAåYìóLMRºv -¼.åGÖlâßû‡&ÿkBõ·Õ{ȺÊd}Uâ®Æ뢾æë’îFªõƒ äoæ‚’?̈’_,…_ŽR>^
6xJ?UZv=Š|jò£*>œ£^uËè[½<"èí*àõz2´V…¼ùQ¾'~Ñ`iúªü¢,·ìŒ,»â4«ÁTö°ÊÂ4«Êœ~Ü&až~Ï»æU‹¥8¿á´$·î”äiëQñ“v"ë»!ñh€Oãø˼jµ”TT\×V;Éš*¯›w…û{²õfì‘·Q‡ú^Eˆª=%-âÒ+êuŸó¾õ,Ó\ídÖý6ä`onøñ¶;1gš“¢.ÔÇF]¬ -;×y¼5#Ìt /€ìqÖür‚ÿèwCÈÿH~œ&vL[@&|P¥nè1©ýzàÛ v ^,0Nø¨B1k`Ñ–'7¯-ð>Ôñ<ü`ÇëpQU“°è»¹ÑCV]àþbÿ íHC=SDQ– -b‡Û%Ùu¯ÃN¶Ý»Ð˜œ|´åQ¬i}±'Ä5æn3)¾Ñh"ÎÆ÷éÍû‹fuy^²×?37›Œ¥w[Äàg˜öF—mØæ"bÞ»‡y•x‡ƒ
ê¾j:˜$ýT`ÑóH~¥NÎÙdF‰SèýÇÐä÷®agšÂ¥Ønue‡m»!í¯ô—ô7ûì|F7XósX2㻶0¶kíöt•úEÇìYÍyéÓŽ£DÚû ÿ÷ëø!Uë„/¾Ñ²Ö*/ËŽQGÚŸF›öV‹Z\$õ×t¿•vVùÐÅ'…ŸLO~7>ï&éw'èŠÖšoGè®:'Ø“ƒOÃÄÕ¥WL²Õæ¥To6NØaôà‡ªQ«ÏoúýØÉ–´ÈÄr—ˆ˜ -×(Ÿšë1®5þ±ç›b-»FH¿TI>·ú‰>µùˆ¿µúì~úscBô±ÖÌ0ó¾'Á‚êGŒïý®Aßú“d·â8? -ò|´š (ÚØ•ÎèÖçbèÆ7[Ó´:¡4¾M‰©ØK†¿S!o|Ô–¼j=iZQê"-p=í1¦ÿºOR¼žð/\Ë—¿_O<$¤µ¥®G><9Üõ"ZÖQê+þPãa:Xr±16Ö½Ö7ÎÖ76¾Ê9Ò£Ö7QÚR|ªk;oÞÿNîܘpþzxpƒKxZ•£<£Æ>øv…C^oèµr¯0Ÿ÷^¡>×Ã.×G„èyÂôô¸Q%ý§éæÒç
'¤¯ÎH«/Iž7eî7SÌfñÇF/Á kÍ|í¼v²93ú\sjü™æq'›ïÄK;ª½¨âÏÇù%“ -k~%*ÿ~Œ÷–56ÌeµxI][S?î¿k½x §8ì`wnÝÒs….î<E—´ŸÅøù¨$¥É˜Îü` ~X#½+?gÖðÆëhÛ½¨ƒíOCµ=Œ½Ð””lÛ(ô¨öµ«÷ñ«ôI+w’ß«µÉ«µ -,m¼ä_TeTPaTRcPYmPŠ¿.¯´*)¹œSj’VêêWêy¦!)´ÿu€x Æۢ멜¨ûã¬à)Ë'þC@ßû& õŠÅ;ˆn|4¦¾jJntRôƒo”¨´ã¢´·ÉOÔÙâÁt~p“ö×J>•R=.¢Ïí^²þ’ ³ÞJ9ÝÒi'xñ›€xþçל5½¿&í¯ -0ë+w©ñ÷©¿žx¾9=õ`ç‹0io‘ç¡îGº²¢wÝ ·n ‰¨v»_e'/ªµ*h° -|ÝhXˆ?æÕYæÕZ>¯º’Ï]b¥sXr™sX|¹K˜G¥O„ìS¾?¯”•¬Ü`ÕEÄ’œþÒ]’Âæsf%Å®f
E¾æíÅ!â·g…DJŸ†$£I(yÜvHZØxQR€cò«/ÒšZwŸ -ïDÇjy¢yk‘\”×zœ¸õ›ž ¶~›ðÆ-úi¯XÔÔèr¡1>áDë8³Þ"ìóÂÍúŠC$_ëvg‡Ù4…ÅÆÔ:EFԺƞiI—ö¿`:êœvdE»6ùƸÕ{GFÕ:ÉoWÙÕUiòïÓ«²+òÜbÇÈçÅaY%òÈR·Ðc홡â->¢ö&YuÕUQ~ÛIII•ø}ƒ•¤¼ú -œ
yñUl×Þa^å^á®å‘NU‘qÅn>åÞ±Tg“ÉVÀodÁþɯÌ3:²È#<¹È-Ì®.ÛW\\`Åõ¸cøµ‘ƒŽ†oYCÞÖPØüý,üí“÷ª|3}«ý2Ï´ÞI±ìÌgÊmDåeç]kÓ`ŸàzUir»Ú>$¹Ü)ä~Í•¢« ÄûðÃÝYä/ÝÎÆ=ìQ“¾œäg/ß?9šõ?õ·¯ -‰ô©¼]âšVäz¥24ül}|è¹ú„ðcÍrYO¡¿E÷s¹´§1@ú¡ÑWÚÜê%züËAòößõE/~9dÑTz®)=ñtsFÌáYz_†ìy.úØ~èùÕšîív«ò;Üq7Ì¢ï±Ü¤=nÒ<x˜úPm{¸ãA¤s}È
Óº¼«¼×¬¾Qú·FÞOYÇMåÙÇM7ŠoÚhRþ»˜ìí´?Þy#2°Ñ52ªÚ%̲ëŽÜäWö¼a'kjÐÃJôûY©~+ÒëgiÃAÖÂä+{Îä{ùVåÎ|¯r'¾|q0la%¡M˲ÚäÛ%ÅÍ6fÕUžÇZîÇÚW‡&„–_‹M+s‰´iŒL”vWúˆê˜ºv[q]¥³´·Áÿ\CJœcUH¬MedÌí×°ÇoC¬ê£°Ï~)ë/¶è.·ìÊŽ¸Ø—è]ç•èT{¢-=‚þë*ÕÑa/ênľ³<ز;'âd[FÔÅæÈȈz—H:ïѧf/²ëó²ã›-¿–µ0*bôî0Œœ¥ïŸ9O·˜Uçw~?%þ¥ÒïZ…wDR±‹Ç=ùí"¹G©OÈɦ”ËŽ[!tÿ€SßcC¿þtÇñÃLc‡ÃÑö¬h·j¿Øû…NòWïíB²Ãî½uÆÿ¯³üÙ[Gyò;·ðC8ÆöC|õªðŽ|öÎAž_l”}VI¥uÀ`Ó%¿ø*¾ÎÎ;BøûGGÝ–oò½p¸óNXjƒCDQÓåÀ§
¶òìÛPÿ&xñ÷2_ñ÷Jˆ‡æƒ…rAÿ¯õ_°jFvþ“´œQÜov^a@‚¶ïÓC[vîE*;ö¡M*êhÖ=hŠÚ ÂCª„ý0Í+O§h¦ÿm¥V«E~iwt(
-I~u-ìö·Ð௰È<Ï°¤7y`¾OøUŒN7¦GŠz{<M»*‚´eEb\Xê“øÖ#2ù½KX&Æ
áåî‘€ó?nú1/(¹Â)ìöoÏ‚îµZÞk· -f~4\7Ìü´•g%Ÿ¬¡/F«ç)£EÃg¢h&š‡¦¡9øRÆŸ¯=Ÿ³íÛ'Fº’+ -Ú2Å»)´lÊ<4ÍÆ¿5MPœ‰&+ÌA³†+£y£—!åiëТy[ÐÊ•ªh«ñ´ïzÅ—ì.Ã*V$ìüãù–=(zûùŒYÇ;yÆ[·ˆ‚·öÁo‹íƒóKmƒž½³‰+w /õˆ¼VéëR÷Ö#â.·§.ò¨wW#‚ß_?ÐûLNtür™êëu¾ÒQÓt9 ¾å’?>CÑÄ>½–§“ùË:û[Sõ¬S&:ÜŸ©ïûNY/óËÝì¿oÕ{ÄîÔ‹¨[¦Æ?Š–(¯G‹f-FÊ3—à5Ì@Ð84Acñ5 ¥„¦#eÅhÉ4e´~› Úk¤¨vùÅxõèÁùZM¬¶ñöÿÖÚ´ÿe€¸·Ë[Ô8è*nêöt·ûýp'âj•oTô[Ф|7ùÍBW9ö‹¡iîaOŠäoÞÛ§»„b,Qè(Sà\ðÞ>8±Ì%,´Â#ª¹ù¢/Ûu&ðK›uÜ/}?ûœèH6ú=¾¿ÝªáöfÚ‰õ°;5ÐòeÊhÍÚHÓü¬‚®û™z®iÓ5Ú(.] Œ&£‰h4…F áÜû¼.Eü>)üùõpüñxÕcñoÄ_)rßßš°mØ$F»Ho…ý÷ØÕ¢¾"Wy®<ò…w¨<ßSžïþîjhdÁµ°ä÷ÐÔ|·Ðûy.¡/óä9ùN!O^;‡dá³y¯ØIþ°È1ômé•àë•>ÑÌ×OÑçzOâ—OΗZÂ#^7ãÜz)0¼É1\§‹5Úcz˜½ÛáTüúáµÂ¯J[ìÍ8|Á+†þã
~þŸß¸ÕÀo˜€F
›‚?ND#&â¯f YSÖ u[¢ýU3ù8n²ØG’ô5ûo¹™‘çZïœöÖ54ãK(ö1Á¹EöAn~‘æ=OÝËü£À6:„d½s”G»‡oKýÒâÃüÖèåÐèUõá‚p³cï7öäþ°7ó6ï1@Êãgà5Œæ^ÿHü -áó xMÓ±ÅMÅŸÁçÃþËjþóÛ0nuÿºîaøön,þ{3ðY\½÷Rój¡y›]e4Àa:z<dí•~-/BŽ¶d†]®‰Œ´ª
‹xýcYl“°‡‘…×Â`³_»…½*päö
|é“|§Ð†b‡ðŽ2»ÉÇboü÷,
:XƸ=!øÎZë¾gµvY¢)x‡þ_¿Áþ¼#ðßÞ³™£–¢E‹ŒÐ:Ëh¯sÕ$Í.V‡üTf{¡$Î?æ•Wؽ7náÏòžæ¹D<-rŒzøÎ1<7ß9¼ð•Køë<çЀwžrçŠÀÿRÏp¿òkai˜w•ÛËo—:†Ä•º…ñ¿²´^³*šw§«[Ú(¬_§‚f)Lâlp÷*þO›Sàî¿"g§ðñ?¯aÈGâŸâÎÞÐ9Æ}ßßÇa¯:ÍBSF,As•ö£»Ž#ó$zV‹øÜioÞýØ7³È9įØ+ìDKZ(ðá3
‰a€Ë€Wbìê‰?ÚÔ„†mË”Ã÷3ß;…”cÌ^_c4„uck#-ú²å_HÔ/Žš?{Öÿn¯]ë_߃õ*þù³¡uäîÌX|‡Æâ÷IÜéò¨C>HñϵŽáÎßÌɛЪÇÑÎcwGhÝf× -»Y«C-ÏU&‡Ëß^çìðtCbhMžKÌû§ð:¼‡õEN1M….ñMïcjÊìÃ_¿u -Çöö´À9,¦È#L•nT•¢¦qgë¿óÿÛ·¿Öùß½ÁšÆü¹§#ñûhný“ð;Ž‰S· …Ë…h¥Ú%´Y;lO;ßð3ky¨áε¸—žawsÝÃs߸D¾ÍwŽ)ËwI(-vŒ{Qà™SàšPà.·/ …Ë¥Â/Çwyx¥«ü`×Ý -}ðüjÔ»<çȲ§ÈòBç˜ò‡ÈwŽ‘……N‘÷ß9…æcúêC|?ì½»\£U_µ^ý½–¿ü&øˆ±œgõçç£9?2æÏÏ'ã}T±ÍÁû4wÚ4oæ4{Þ^4w©&š¿ØÍ^,@³—#¥¹šhÆB]4o9Öê¢]ö-ÔÞ²ë%^:¿ôåpKáõÐ'NrŒÍÂ"ŠÝäg†÷¸—ñÆbïßÛ‡Ö:†9„â5Ê
¾±v÷WX¼y'Ž“ÿíuŸÍy†áÜçC>pèŽåÐÈ$4Caš=vš=e=š;k/ZºVŠ–o?…m±Ä×q4w•Í]D¢YË4kÍPÒDsæèp?[ÏG»j'h~`µúØC÷¯ž)OôyîZòÂ-ªþkLq¾KŽñ‘oŠìåJ"*ì"úkl#jíbkJb -)M]‡}óJ4sÊZ|þv ÙSw#¥i»Ñôi{¹µÍ[a†æ-– EëO¢•zžhËÁûŠ;ü»¦¨e³+ö³*FÙÇënx}‘ëYïQ÷©ºÔ.´Ô!Î\{}R[•CB[ý•ø·¥˜KxiÔ²{–®Öý_ÛæÐZ·Ï¦*ÌFS1CÂçj>sÓàï-@ñNÂ×´Q‹ÑŒñkðÚ6¡™³U°}ªc›4Bs6™¡ù*gÐÂ}öh©‘7ZÉD£•dÚhñLawÀ¯3TKÙToñåKñn…ÁÁ^…¾!ï1öªÂk{ôÞ!ì Žq¥Åöam¥ö]åö‘mv‘y…Žáç«£C4ß²»fOšóoïÛ_ç
ü=DªéŠJHiäB¼¦9اãïOÀ{âÐÏæ!¥1+°?Ä{7n=ö›[ÐÜ™{Ñ‚EZ¼ù8Z¶× --ÑrFK5œÐUk4_Óý¤i‹VðCÐÓ…ž“Ôž²+yýìQW¡ÃÏÅñ¾®y!AÏ]zá_÷Æ=9/Ï)8ƒ™gä…ÆèÈÌêË®pyHñÇWWÕî±KgÏ^ÿoÇòáÖŒˆ£×pËÆ)cß¿)
_„ýül‘38Ûœ†ß§+ÌÄë[ˆf[Œ¦[ˆ}#¾&¯B3§cÿ¿X)¯5GÊë,ÑÂ'Ð’=Žh‰QZ¨çƒÖZÞUØæQ;nï]v‘F«†qðIiûK÷ÓÕIþ¯}Cï¾t“W¼v«Çk+És~Vbò¡Ê:ðSmt³m|Yµ]l\‰kˆÉî‹kÅVÿ×=ÂÀÿñõ_¾dÁ»5Ÿµéxgs×tÅŸÒ¤õÜ^)Í×À6¨æ`;üi“ý´Æ>ÅÍ]¢‡”æ¨#¥…ZHiƒZ°Ÿ9_´éx–âÖ€† ;o°³U+ØMêì6㯜°l¼qݳÈ;8:ÿjö¯1–Æ6Þ\eÓYc×[gÿ¹îJ\w¥cBG…=ä’äº-,o±òökßÿÅ?ù‰x-}Œ_‰”RG•uñ:ÔÐìØW¨¢™³°ÿ˜µ
ûL|ÎðY›7{7š;g/š¯¤†æ-â¡ùË)´hÓQ´BÓ& õGr6¹”ÞØ<vçö§ÝI?æì+`7iw±<áçf[Ó¶Gîo‚ƒýsýäåyîÉEŽáO߸„ J¿à½`õLb~Qðý -Üž_Ÿ¡„ñð,54s&RZaŒ–ï;‹Öh
q¢ÍÇo*n󫙸û;_5ïO%»u_%»üß.Ÿº)*GÓ׋½ÑYè°'oŽØãT:q¯gË4õˆ¯óö?a7a|¢£ÿkÆÿ1x‘ùRäªßÍŠt|Jæ„60(ZAÞÿÃXTÒ}^üâÛòîFÂä¿©3™ÿ0?únÎ<ûl.Êî•ÊžT•ä·œƒ~'£"ÖDMâ£8]ñŽ{“6uôBŒõ7¡Ÿ”ùháj3´xÛ ´LË廣5:к=GÑê-$Z¾FX¡…Ö¨ˆ -á3lûù'£vØÝ—ô÷EZU¬†^kbØËš_¾;X¶ß~wUð훕ðó[ý–ÑIÿu^|×ý[ìÃRÖ˜WÂRü -Ö\Ø0pši¬µc>T;ì}nÑõ*Lü±Ý‡ª°â¿g¥ÂÊǘÎV7ת€ØŠR› -¿p¸Á…‹”Uþ
»T -ž%â þ¹ ö”kô<"²t+á—³‚òÊZN_»¿\œÜ¬g‘^%eÂKw2WügÀ3”ÏådRÇ>*ºf7øl0í£†4³’ôTûȚʼMnÿ]]è’0W]º™x6H›6{š
¼•3ß¼?Xkþ¯ìEÏNév°„n6»]÷ræd5Þ¤-92Ì0ºa
ÝØm#*ë¸D=ýÆχOÙ¯ª‹Œùæˆ{FÃóù -Âûé -=m_ºí]µíSGfѦZžw˜và¬ãd™ß,2®pôùŠžÔ›9í|"ó³6?£k¯ðjÒ|Â;s1u§ƒ}µÂ[ß´øm›…Q·‘·þnÀ¯ØHÚÄ)§®Œ¡lCfvQ·ˆÌ-~\ÅV~Л•¼¤nãVËø>»ß(óǃ[W1¸ÉnÑÊgwj÷³Fz¿°íAÖP¯ž50xÇê½bõMŠY†—Ëêø?S6<í8ÒÈ⌢ÉÓŠzºÚhǪh߶mHg„ȃ—FÒçÇÃMÐ}þóÃÁ_Ðv‰s |oIÏ”…Ü<ϤeR{o%ú´ËxÚ*|†0¡vß²‡òHU¦£fSNa³…ØJsËO(yéA¾ì”¯Þ[$°
˜Jº?\"yÚrPZYî}²wïl©{ýABóÊãÖ"êBðT¡Ï‹Æ,Ÿüb¸H÷»[ËîéÍ3cµ/eOÒ:Ÿ1^÷!»•ÿ‘½½|üJÖÂÈ)}¦Ž¾)ÒT3ÄkÒD;TѾ»ðŒíúf›‘(³Á˜LnRžuk,!x&OŠì´ÝxNÓ5½],ážÃuMT†Â”&U8s„ÏÍ¥äùë kÿ©”_ö*xþDšØ`Ï0™<éó²ÃâœF©4»î -þ +1¦jgu°æxßuï²›
ýë—X¸ŒPUå!mc)2’^Vä_¬©/F{¶i })ÒVÓEjk¶ í=û‡´hD§´´úî}HWÓ x$Ë,ÍÏÙN4sI\bîvc%<$u šÏ827Ú̳*ˆïn|ÖÚ‡Ï$ÝR&TÊ‹7—§ NûŒ¦þ¡&Ík>OgõRܳ.61Jð<3qýÖ"Â%féœ0O虵Ø8¡n‹qÖ
“›_UM¢J7ðRTŒn|Ýa”±lË3©ø›Ô¤èo´ÁÃßwñÜSgóæ§|ÛAæô“&‘›¯DLÚÄÌ^ -œb,:4LMeÚ¶tÚ³AàsGu
ϲÁ,=é%Ïi0‹~¹žÌìÒ?¨‹ÖŠ˜¬fJt§Q@eôéÁÖRNÑsëàŒ}Â\êJ4ö·Ñ³‰kÉàòoökùfâšÓÄ£Ï|þÍo‚ôª‚_öQz(¦¨õ¬(¯õ„àæ÷}Âó^©î §”yüØúmÔË™´¹êêÑÎG1Lg³q.Ë3zÎj…õ1tÈQÚgtéQgŒ.ÇM6Éfµ¾Ï–IÎ*ð-lGÍ.7&)¨ïTÇço=RÅx„¼è5Y˜Þ©çƈ133`n1}àÌpÙEŸé¿ç›EI:db©š0©j/Ò¢3 dw«¤‚Ìn
òj†2å>‹vK^ -i#Ÿ.Åq>c@MW½Ýäf¿šða¿1ñºKF½è’’¯z͘¼öÃDN¿€÷‡ù¬_Ì¿õë>â¤û8CÆ|˜±ÙYEx~‹Ìø¬+}VwÌ´ü³ì}©=•Û+5Îþ‡–à1kÄó}»D[pQZ‚VOX€?ÎCZ4âµ)8f3ÒÄâìpâÐå‘Ù…ájû4Ñ^ì?÷ªìäô؈óÞ©3Žãøæ– -+D§/•\¼:•ÓŒ:j=†±8=\tòÒ˜• ºÑ`,¹× ¡²:M¨y¤•ïTArÝN*µKæR—}¦ˆì”¨ä:
éÓw–EÏœV=6{YzžJí׆gЗ»‹(yÍ6Ê÷áJúj¢2ôjåwo%Æ +ù7¾¨ñÊכ؆Nå;§Í1öÉ],89ECó…-»Ðn
¤¾Sòƒç,ù'<ÆlY¶-;-™0
™<íÁøð•©SüBqÀýõðLžôú£µLdåSÌ•"³ÓÃùB¢eLJs³Aã¼ûd±Kð\&ôÑf*áí^aBÅ.Œ¥×Âþ¢*·²>ë2÷zHAjËÐQ ÎyMÝ2èÙ:"¦nW·‹NéÕáκ߽Ե”…DxéVúN« õ U{K½î0§ó[‘Oº(w®ó'\ÇðÈã -ÚZÒRã!̹?ê4š<0™´Kžs£HK‡Q<ê(ö§ÈŸƒ§`[ø‰rÅ—_þ:xn…º1 O{f-'N8Œ!ι§œq<¿‡ñ`ØLÊZ>ä#ý²Wqe»¨„æ}Ô}úö™ÑÉÍÛ¾ÛeD=èÀs„¦Ý—kù™ýjðpYèù¦^ôË)ƒ{ø!o×ò“¾î‚×OZ¹Ož¶Cyß_.LP'R÷ÁÜLÂçÞ2ÂóÁR¡üÝ~R÷Nã[ßU—"§j™£ÍË7 µÓ¡mKÖ£]6¡ýû÷#]#´_Ç6ŒõL¤gD!-ÒÑ3FƧ…VÁSaö øxFf-¬?š´P øØ÷‡8ý¸ð7*LbÓ~2©YfvgœÆQÞKè›MFÒ;b°]Ú3}1ã9fb‰nÕ -Å9uRQv‹„ºÓÃ#Ò?j_´á™02ªzÜC‘sàlÒ;u± æÝên¯‰èYÛAÁß´ù¾¯V}K×'ön3IìÛ)ð¸µÀø ÝcÑY=áÁaÆ.'ÎLä»2rÇÆmhýOËЮû¶ªö›‘0^ríæ -iÜ;-qDÙ^Ð]ƒ9t0¯/”!…8=LÇàÙð¬?Ì}y¥,ƒçHqø‰²—+Q®±ó…qM»ÈÛƒúDæG-2ðùZÚ&J‰ÂÌ‹§/ùLåžÉ³œÃá›ÂÜ\Aïì•DèË
dð³u”GæBÒóîAjÇ^"«ÇˆÊê6&R¾h×î/†y|Ù9EuDof=œ8î9ÎtDØ?Ÿq3õfÖ#`ÎÌ$8¦íãçÒžÙ+ˆðZ°/˜ù‹qÅOÔ9ŸIäÙÿ½÷Ž«ºFeƒé¢:„ÎP6 ñéŦIrÁX¶„FÓG#idi„4²-cã‚q°1ÍwÀ˜ !Jrù’J!äææÞ”Û¾÷~ïûýÞûã¾µÖ©3#Yg„ÊŒ8Öœ³æì}öZ{ïUö^{-§:ÖžâO: cG†6¼rEÃÓŸ©tyÇw+öÿJų• ÿš¿ó۶țŸ56ýèÃtä'¿[xý¯·5<ùK>²¿á¡ïNó‰x~-ø“náÿªôÞ÷M_æ‘3Ö¾Èwäÿ¾ÙwôU¨ïÀجò=ÿ¿«0XâîI¸¦Qk›HqZvÀ×øT¬9tÁm·÷_uýü²ë¯SËfͼÆe}ÙB_ ÌkØ -ï;úŸ³}Ïýå¦ðºÝïÚ19¼ñÕ+1×F`åÎÉ¡•ådhí“çSL»À\ºø½Ï^ZóäùKrÅ®oÒ+O¤ï=•âílýîTú^úðYþE«NÄXóXÏácŒ*ßâ•'à9iŒ·Þúi‘mß÷ºî=í6Û„…¾æ2ÏþÎõ§†×ì»ç‹ï…ÿ¬ö½ò¹þçþÊäßg7øâ†ð}¯^…±Ý1NAððŸª1ÆÆ -<©Å°öý—¹á#_.½þdžÐÛ_6¿ûÇ°ï¹TúîµwåFÓÿ‹÷¿ö÷þWþk^ÃcïsþÕÏÇuµ†¾ÇÏ lžyð‹P‡ð?õ±ŠçÇ1ž?ÆŽôÅ`®µtç¿ëáspm áПn<úsÞ¿èÞ“n;hNYÍüHY8³õÌð}‡/ÇØ”á{_ -´<7¼|×d¤±/u÷I¾æÞãë[;Ãœ§>œ¹z0&PtÛÑkÂ;¾ÏalŒ÷I1®×ºcR,m¾=ïñ¾CŸ_óqFðñ·ÙÐîR{?˜yæã[~êþõÜà3¿|þ¯·^ýËÂð;ÿÜùèã•M|ÿ¦O¶ÏßÇú£¾ðw>‹"Ï
®~ü<˜»Bð¥¿ÕàYÜÀËÿï|ßê£çÏž(»Q¾©¬¡ãÓ‚þR:ò—y_Ì¿îà
[Þ¼²aég£.:§ -s¶6—a|Š¹éù«(câî#wn;“r=Üõè¹Só*a><”uMßùÅ¢È+Ÿø0.L°eÀ7‰1Ñ/þýVßs«ÄØfþ''cÿb,:ÌYL]yçæÓƒëö_\rì‹ðŠàªGÏ
¯xhrpÕcçú×}´ô¡³‚K>;Ø»ã¬HçúÓwn,€Æ¼¸˜7„ò€Æ:'†úvNÆóþÃÿ¨ôþÓÍÇ#¼~ÿ%”«èA°svÿBÆüb˜óòbn&Œ1ZºáŒá|ùŸk"o}‹½ñûÆðËŸúÐFÀ˜Ñ¸vB1„xijhó~Æz -<ú.‡±g07H -ŒaÜ:å#ßgBKwœs[,1u½Ð¦—¯@9‹vµ¯¥óxŒíï﹯cú{<Ó×¹xæúSCÀë–m=;‚ñ&Wì>¯aѲI€l—aœdʱã óXáÚ£c Òrœî¹ó„—?#r×–s0.#â…yP1wdËKWc¼:a•ZŒ¬g/ÇXw˜·ˆbF-Ý>ãb¬†C¿¿óP.X̧ºëÇ<ê]á7þHýè¾ç´†Û“ÇùoOiy1Æ2Èʆ§?TBËž˜\í˜x[xc01!Ô¾âD”!¡Õ»Ï,ÝrF]såöµu0çÙm·ß1‘âl¬?x1ÊÔQÖEÊ-wNÂüE`§œY»ó|̉…òó°:VŒëdu‘%AG˜Ðжò„`ïö³‚‹Vžè/¡8EaŒ•¿ú‘o†·<{%Øí7aÜÄÐ3ŸÞ<ð››Ã¼ÅRÌ»‡¾U9;1w_ìÅOZ~ð“ÞÄ¿ß×üò‡Mr×»<ÎцÝ?P–G~ðEKäçLã9=´á1Žkðö8ð²;Ž.{äãþ‹‚ÝÛÏÀµªÀÊ'ÏE¡¦¡uÂÍ××”©W+e³oZPV߶|’¯±ë¸y`»VßRº4èÑ$åß®kˆOÀ˜Üã—bìÿ@kf’/°hb ¥gR¤ïÁÉÁ^¹y Æm -<ö¾Øøò§‘Æ¿F¶ë:Š]¸á©K/þËüÈÛ_6¾÷ÿ„o{íæîûö’;˜Ÿlåîóü‹3“jêêË0ï,ž«Çpõ‹Vž0w^}òEÊSz@hÕékNÁÜœDêxŒ‹Iù*a|aL¨Z_¤,زäøH7Œ±¥ÎuÃ\Z³çBÌG€±‹¢½^Aq™A‡µtM¢xU¾9=¶ýÕ -ŒË…9«BÉô §.´ûgjdûË×b|C-¿ášÓbÝ÷‰ùº1¿F`ïû3B‡~[ºÆ¥¼ÙkŸ¸ã`F_û,ÚôÎGwD_ý](°ç -ÎaÌMàZbÞTŒ™\ñÈä`ǦSÚz'a®ŒðÒG(Ç&Ž1œ—uá– þ;úN \Bx‚=›N¯¿ôàwû7¶Éòe;ÎÁXï±õG¯ |3÷î¾ó>QNWÄ쌕Ž¹º| #0ßV°çþ3‚Ë9‡r¬Ûwqló+S)ž®sîúÎôÈ¡çÄžû¤.ºÿã9¡G¿ÇḌÀ?Ü3Gy|ò§Jhÿ¯*ÑŒùr¡ÿÐç7…ïÞtzd2æ”iØû™êþ¿ç`Ì ß¾/ÔÀ}G/‹¬yêBlÛ¼Ys`>…Ê‚K6žê¿cÝÉ·E;'úÛûNð§Ë&Í«
ƒÍS]&_%–©RÙìJŒËÙ2¡.ž:.°lçÙÁû_¾2¸tûY'c©Ráe[Ύݽs÷…ùÌkFË0îågÃøTÀ_ÑeÆ -ø¨c1oê¾û´†}¿žAñ~ø·xðíÿŠúŸúÓÌ9ìzàt˜çƒíµà¶@ŽÁÀá?V7ìú±ùäܹ
e·ÜR[†ù®¨–=8óNQ'ÌÉÜŸˆñŽoóÇÊ|‘–‰Ë›bD§WîZ~²?Þ;‰bÊ??õÞõ{ߊ<üÝé8®ƒí™I,ôÄÏÕо÷o¸_áÕžKºÖ“ï)¿¼ó04®ÛyalÃþË0@ã¯_‡±{ÞScÏ\8ò—¹ÁžÍ§7´¤Ž§<盞¾<úÐÑk1ï`èÈßn
ýÛ|’õ‡ÿPI±˜6½xe(¹é”Ð’5§øaþÕC`\éðöw*O}v}dç2ÆŠÃ<jØg¸–†±‰BÏýy.å<~º{ï¡5.$}ýÁxÃOÿñæÈ?Ím<ð‡šÆ¿« îÿ͘1Ú·}røÞƒ—b,CŒ£‡þß8¸îðŤslýÎ5¡ÇÞ—"ûþ<+rèO·6ú¸ööÿ>óÑ|ŒŸsÙ]¿ç’Ƶ;.ˆî|“x¿*²÷ƒj›2éd Û7={ȺiO¯sËé˜3°ï³BGþ1?|ôopÝ×I1tpÓÁKIîwŸ¾ïÅ)¸>\óÂ%
÷XúÈÙþ®måþÅ+N¨
Å'TÞ0«ìú™7•ážÐBÿ¢ ˜Ëc÷~3Æñ%][W*$:&aŽŠØÎÉ”wÛÙ”›æ9Ò"vøÚÐã?S"k¿ -¿ôi]è¡ï\Xzo9Æðeî=sãw(½æTÔÍqí!|ï3ŒùŒòãŒ7¼pYè®C4´ßuæØ™q&ÆåükeèñOTC´ý"+÷]H±ëÿ®ºaÿog Í‹9³p]ŒÖá6¹Ç|ãÞOç`¬·ÐÁ/ªBOýæFÌ}Y¼ê$Ì뇹f‚û}SÃáOoÀ8¡¸&Büé¼ùÅ+‚{¿¸±qÿïçþy”¯Æ¸Mwmÿf¸µgÎ{\sŠ=ü&<øaeìÈGuÍG>F÷ývv`Ï/UÌÙÞùFƺoxé -Ê{µù[Ó¢‡ÿ2?rôÏuÁgþk¶ÿàŸnozm -o>zÅ·{áËÚ¦7“ˆ}ëóæÀÃ?õÒ>F÷Ž3ý]÷†¶îm`bÞõÚðâ 1Üûè9¨ŸâHbÎwõ¡EknñQ¼cÌ‚ñ·½É4m|öªpïgE»¶ž]µûüÐÞOnŠøè–ÐΟ ±•“b!£|Åx×=÷œŽ9ÎÂzî,ÿ —½ú§ºØ[¿k£˜j÷ì¿ØÈ…zT Öü°ã¸pÆÝóMÄ·qõ¾K—ïü&Æ@mZýÄÅe-åÜ -Ä[«™-«€Mž¸ûD|fa¿Ì×Ô21r×öɸŽˆòí7¬×00ï´¿
ôŸ»Ÿ8?¼ý[×`¾ -ÌÍ=NCÙüy
e¨o‡’Ë€ï<?¶õù©˜Ë—ôJÛä'÷Ï[&Ò·ƒrþ¡¿•ÿ™?TFžý¢†rgaŒôTßÉ>3wÖr=wVïÉM”;ëeotÇ÷„Xf󙾆øl;æÛƽÒÆ•œ{ðÅëš7¸²9³žò[“=¾ò±ó(ûžŸÏ | ‡0/
ŲÇ|”›|×y‘»Ýë…+Q†öüâúÈþg÷þâÆÀîw%ÌOkaèŸC¶Ì~â~äûÆ’G¿ÇØ–o_‡yIcÏ~²0òè÷ÅæeÏ µ¦Žoºcå)`¯]~òýëQƒ-«å—Ôrg)wÖ'7Fžù—ùÑ£_܆>ÈhP.Œ®u§ÚWŸX¿hù$rýIFî,\_Âœ”_é¾SbÛ_©ˆÝóð…$ßïÙã ?üÒµÑG~ 4nyý:Ì]íZ}úŠáÇu“Æuû<¡ÇÞâ´ü?(o̦§<ø,ÊŽ(æãÚþ&Óxÿk×ÄÖ<|>òâ(–oIù·0Ï}x÷÷äоOoÆõ5ÚsÇ\‚ëv -Ü¿¢íòêïýHÓЦƒžÐ’•'ûB‰‰
ÍmQv’þ‹1ýWlŸ<N¨ì¶ú– ¡Ö»NhìØ|:Ú·+>sž O?ôÚµ±CŸ. 8ȸW±øî“燻7ŸŽ²Ðߘ>®Î×2¡}~@ö .…r¬qõÞKHF‚\£<»¸æ vú§áz©–¿äÈÁ‡ßÆØú2Ú\Á]o3˜‡ qÅcçQ~°5{.F¹Ó¼iñ‡Ø¶oO‚Š9pp}SË)¼ýl-ÈPÔSw¾#`î7Ô(' -æà]ùêšèw‚¹€q|áÌŒôÆu¨‡„}“‰<öžŠº"î«`îxÌ‹‚y~B;ßšNcsˬ"YtUä©_ߌã3|è_oÁýºØ¡OæÇü6þ‰yéj`þÄö‰”zÃþK#=›ÏÀ=}ì“`úîSp_*øÈØÀ“ïK˜;«ñ…Ï‚
Ï|y3æÎ -=ôò4<óÞøüåá5/ÂXÖAZsþá4Ê…¹Bp=럛N€/æκWËyì»bh÷O”´Þ -2¿qÍî‹I×¾9[P>ñ=!²ðÞ|à²Èƃ—Q®ùG¦Äv½#†ŸxW¡¼¶¸ç’ÙtVÓ°0‡ß–£SÃû>¨ŒøíìÀn<
u=ø浘Ïó|`¾§ØÖ·¼+ž<?ØÞ1)òàË×âšF쥨ÑÚÆá?ÜìêŸ$Êï6Ù[¿}]dÏ/nŒ<þÞÔ“jëãe¦¥Ç‡ãËOÀ5ŸØ÷œŽyPcKúNi\¶urxÿ¯ª›þ¦ŽrÉܵã\Ô`ÝVözŒí`cæ0ÂucÌGƒë¤ƒQžÓU§4®Þ}æîB›/²vßŘs#²ñ¹ËñŒ 3?zEÇ+®_¦WŸ¹síi¨‡QKÑm¯^‹û”ã½óžòPÛrÒ÷Q‹nzýêп˜k"ч.Çœß(¿CÀã0·ÒíQâ‹ëŸ¸sVÓ9—/hÅ6ÊÚØ÷À7(3ô
ê¡‘ ·ÁFC}ŸòØ ^´ñ€'´'Ûóá® -ãœzò‡”c=vï³Whõ¼ÇÙ‚˜‡zÛóW‡w¼QÚýcƘÞõ#ÒYhÍjÛÑiXå†ÛãÞ‡º -÷Ô׸ބù¸Öï¹×®#‡>¹ø·7ܽ®<’\yr¨¥{RtÙÎo _Oè¥?-l|õ÷Ñ賿¯
íþp&åìÁ5Ê;ý&ÚûËÂOýòÆØ}Ï_M9Í1ç-è|¤³n{uú"ˆ®{âBÌzì{|àÙ?TûwÿLÄý]Üo¦³Ž©
§’LzàåkÏ£.íÛpé)w?vAã½{=´'ü=°ûÇ¢ÿ±·§#}0Ï:Úó¾hÇDÌ_A9U@®ÏÛ´}X®¦¼Aˆ7è$#`Þ‡¶¿<5ú9Ø-<êõaàO ‡:Û¾g¡ç¾¸s -íþ½?¯DžJ{ÓñÄqh÷¢ŒÅúƒ‰ô$ôÉÀµpÌSº½g’¯¾Yˉ¸òñó0§ -â„{cÁö;Ž_pë<Ði£e‘¸Ç¼ü¡s´|æßõFxi®¡â$êŒÑîõ§SN,Ѩ#aÛ7½:ºë‡®ÏD7ÁøƒöÅ6¿1-Ü÷È7Ð'"Ô±ú”h汄ú‘ÝýÔ('£˜Ë>}÷©¸~yä"æ<¢üA˜ksÃ|â<´³iy5ô/æ Ã|y;^«@}„òVcÎöÏ\6 -åçÀ½sä唋gïû30w–!{mU·¨aˆÀ¾?Üxú£™Èó¢€.y•PÖ>ôzEàà畱ç?òažÜ«§\_K·œM¾'¸Öˆ>@[^žÞz-æ7Æ{äO˜wùàG74ìý¥xôÇíé,Ùc昖ßxÏ…´ˆëè;¼ê±ó5yÏ%èGàßû3Ò"›\éoí›ÔÐØsÚ˜· -uÌ Zù0È™G¿ý3‚þV[žŸ»çÑi¯ìÑï°¡}ïß~ô]÷éƒwŸP¾c‚1Ȳ
Ïxü{~&cý´_s7Œ‡µ{/Ä9ÞxØxøå©þ}¿˜áßýžä⧞E
¥VŒù1C}'Gï{f -å‡C’{ž¿<rÈÐŽ{Nõ=þMÌUÅ\Ú †·=<ô•kqL‚Íuî½!Á|SÑ®§†z6Ÿ]¶íœÈúCÀ£ö^Dë|`3‘½åF˜_ºv~}Ùm>êÑh› ½‹tG= ÷[Ã0fÃ+N¦±9¦fÑõû.A_žHçªSb(Ïw½-¢¾‚ù´ÐDŸØÆÃW ïÎ+lîG—?q.ÚÎÈ¿Q¤¼é½[Ï&Ÿ#Ì¿ü¡É Ç&“œÇ|¯ÀSÂ+v‹9)Ÿ0ú+®ÞC9»c¨û`ž[\£½kË9”«‰xðwYÊóŠk& ‡â?ü–Æ0÷)ð8Ês…¹bqæXtÐn=Œ3°OP/Â16ÜõûuÂàžH‘¡À“ò‰aþPÌ?Œë<¸N¾|óY´W -:æg‹>ó»xŽ.¸ômô¥Ýt»ÿ…«0å+Ã}º•['£„¹ëpn?<ôíkÉxëKW¢¿+æMÄ„è/ˆó‹t -ò«Æµ{/!¹´íõ -Ê 8‡ïß9Ó-Ï]xèkÛÞšZ¾k2ês„ú½<õË8Ÿ(ÇÖ¢®I˜'¼þè?ßØð?/ýó‚ð‘?Î<øòÕÁEËNÀó!¨ÿAßMÁ<= ¦Ñ|Ä܃éͧS»i^gúÿ¸÷ã~Üûq?îÇý¸÷ã~Üûq?îÇý¸÷ã~Üûq?îÇý¸÷ã~Üûq?îÇý¸÷ã~Üûq?îÇýŒðgÊ”Ùm³â™xyè–ò)•óÄf¸¯÷dÝå˧4O¯ìÎÌJ¶f’éÎxwŸg‚Bjüófyfx¦ÖÄûÝÍL³Ø<Í3Ó3µrË4Cøušç:x”ñr‚gz}"žòLÕ*õÀÏžÚîä¢d' -–ûmW@éQÕÝÛ³¸.žöwšDj^˜î¬ëNvf’‹**4pUð²ÿP¾°²ÐO¾ÀÜ9ÉÒvºy 4EŠ.L·%ð2‹Øþ -é4íéQÇ°§+ÑZÛ;È1ê{ƒŽ» ЛŠwÏ^Þ•îLt:Ç-¿àècY(’ÕéΞL|HZKÉRs
>N‰´Â1UVŒ…é)€J‘[Ñl!Ý2ìvôˆ¨"uédg¦¦¦‘Y«Løô[£‹®ÒÓŽ†´¾àî>ŒÅîCÚC±«{£¥•ÎvJ±ðÇšÎÞqà£Å«²-qÎÑ–ŒCs,¿—²8dGD(jDé;;"lñs¯â—™ñîdfqG"ã|c»”dçèìÜú‚I¦.žÌÀtE¨³(é[øJr©x˜,Ht/J %KO%*tªã.¹v¸ŽGãõ²®ãQI8U§Ó©ªîDb…ãmŽ¢õ:ú?©Å"_.`V[ÿª¶d*î|›±”Lçë¹mÎu•±à-ãÐÎ1"%³ìuì¢;Þ–ìuÎìÇÇNENww-N§Ò‹óÀâ1[Æ/ws~V¦È¹Û¸ái#ªÌåi.OCµu¼8ò¶vÚ¤ˆ™X'‹œ‰9î’R[L/U÷Ýñ#À±ƒréÅp,@Ýý"8F1Z÷[Ñ&ç"¶Ø%“se´Ä$S)GmÄÊ&– -;U2VÇIœOü¢whiqÜ7.+¾>)•E‚JÇ;(Ջ㉔/‘J´²È–_pÔ‘¬w¼á5T$óŽ™8š•ìéJÅ[‰ÎÌ‚xWéÉ$ÆcüçÉ»d³.v+]97:ŒÇG}œvÄ¡*Ç[Ï%¡‰š²˜…˜sq\ìBÌqŸ”š&^o8˜DÅÈöZ¯£ýTq>é‹|ª8?3[Š¡^¸äÅ2ûœw Eóõ w‡ÔÉ)U¼cº½;ÝáܧýµçA´:Ûfšó˜?Ú³£¿Üì—Ì"æ|•Y{zô=RËâ}Žq¦‘‰wÄd´çÇàØJg"îøpCk<Õº íÜAÝV xwr2iç†GzéLw:ÞЈ·¶övôîgdgá¶"£Ž[w‚Ì{Çèµµ%3É¥ gƒý¨BœÉÛ“©T!>ש1³LâÉŽÆ×Q)íðwÊxq›iuÝfŠÍÎsÞ%¥¶$âºÍ«ÛŒó¨c¥ç73ÞÓ+ŽWÇ™Öqã8S€-vÙä:Ρ|r¬–†ãL¿ègZÇãÌ8bb®ãŒë8Ó’®ãÌ:ΰ®ãLÉjâãÆq¦ -˜ôE>UƵãŒóWj|`˜·ˆJÇý§ -Ô\ØÚŸ#%°t¤Øø
—4.ã_;_ý„çqù›#þ&¹üÍåo%ÂßU—¿¹ümv7 -báEÎïZÓ]éÐZk{™ì¥Ëª
K/8^`[2ˆˆ?ðÑâ=†·Ä9O[2,Íñ²î’AvàìˆEÈ }gG„--´Ø%g¼;™YÜ‘È8×JI‚Eê”’$·A‡S”–ÎöǺÖ=…8„v¸ûÏîþsûÏ…‰,Æ%4wÿÙÝv÷ŸÝýç±Û&Y;Ð3³ ¹Q*{Îã7KŠ»çìî9ˆœ»ç<Üö»çœ{…ÙÝsv÷œ-ÉÝs…-ξ‚ÂÇg•)Þݦ¶d{{oO¢:Ý êw§ó¡—WnôÕvÇL£·»Âº/»Ð¨#×—H¥ÒËœb˜J.Zœß+Z1x¬cs‹:–ú /’y<¹EØ5_ƒ´Ä…L²’_‡s“ùŽ»72oæ¢îD¢s&ðÒÄÌdg[rQzæÒd:•ÈÌìN´ÍLwÇ;Û$sèrðrèÜ:w.í.Я).9ÞtI¤à¦ õ[‰ÑW¤ÇˆÅW$;z3ƒdYµOãù1[ý™•$Û¿ã1ö™¥™+5ºŽ^z€×Ë º÷µŒñdü÷t%ZAëè#Å;Ït"Ì^ÞJ^K£ùÇÀ¦P,^ -EžÃ9"nxŽ"sa-öð…z9½ìß¡9Æe™T2SO¶¼ïŠÐb>…Pì"ÔpUl"tÜD¸’]ãŠÑ±£…JœR‘ nd«qÙªànu£Z
¡cÛ†qÕªr^³oq¼-½ÌÍ;äÿzÄ}‡‡ý‡,sû—‚PÚ‡ý§msœ–õ!æ‘AXª‘åE>WŠ©¥ÛÛ{œÝ‰¶‚Øu©qZÂôke#½sDZ±P,3:Ëõ¥Ó/®WäF+0SœŽÓeɶœÈô§GáŸwŽÑâD!>Yæ㣎“ej»!–¿Š©=ʨV°¢ã¡è\=í¸Lœ[,}îòÇ[ -’»üQš†Oi/(ãeùÃ9"îòG XÈ¥ÆÜåwù£˜øº»üá.”ÔòÖ™xNO®Y]Ò;Øi_&™idËnöàÓ
ÉTgý³ÊŒþò—c7ËÎÞŽÚÖL|i¨Ù‹Œ¾ÿ¨×q´œ–xObNwâÎÞDg«s"§Ô¨#ØÞ⦦“ÎÏgh…"h¼i”ñj-lÑÒ¡*0L¶uäóŠ¶O¾Á´`¥~© -&5^ƒ/ßDŒ×q® LÚ¹”N*n4%7šÒ€È¹Ñ”†{¥àhJ#²’ÔÐÛÝÒ›¥§d—Ý80%pø® -v¼X…`2níÀ‚ÎmùéŠq™ë±çFØ(.‹¨´#l¸F…ÈXˆ«´ƒX
¥Ã«Ýx!¥ÈÓ†-^Èh{§Sƒo”ÎÔiOÝTA(ÍhIÅ[—Ìôh tW¼5™é›QÀqO¦/å|ÝTzôÀé¾R›Ss°ïJoJ}•8:îÚ阤ӥ Õã‰Æ×]5¢HXÞ×!¿¡Fd_k¼ -Øêt'å¥wn6å–u{õôv·Ç[…u_v¡QGnÙâN_§pÙ~¯pÀBm(æu$M?\äl<™ÁvÍ× .Œä8–V"7ÜÚJŒ¾¤à3ÒøŠdGo[¬æ󣎱¶‘‹45FªÖ¬$ÉÚšB6…G(ZÀ,?Ôè"¤ôt?W{(uía<‰Û!d‘²È-Ú”f/ïJw& -°Eò¯½e´µ`ƒ+¿ «=¹ÚÓÈiO®ò4bÊ“OŸÊ¥«=¹^Ö¥³SP¸jájKîªúW8Òä´O–5ÈÖøèèŸÍrŒˆsζd,›sDñ5°#"³–½d'툰c€H¡+ßE/;ãÝÉÌâŽDÉ3JI†ŽKgäT2SOfº"´˜7¦‹]„:GġņH‘‹Ð!Ù5®K1Z¨Äq%èø‘ ¥³Tí&•,bÍhÄYHétÉȵ£ô†Åø€4~Sùû8¸ã5Ò6Š[£sù¨tuºRŽíÄzý¿þ®LˆÓ®£+çLÒx|ÔeGªr…¤8GáÓ¬ØÇ\(Ú3¸‹`éò
:j¶ÀÁH,FÆ1%Õ¸%òu87WÚ!E*ëìÅS¤bÜ•%«QÆ©öksŽ¶TÃq½‡Š;f|z¬«;“À} -€
ã8&s {3¥{Š}ȱ^çÈJP·w™ãc”¥6¥J[—\<Ôžèž“ì.†U”bégÎãxç'oI%…jf•õ>§·èÊæñ–9½õ¥ÇT¼²‡ñ¸Ã$‡ÛÜn¬ËÜJt´U±£ -ÙCxØ»¡;ÞÙÓî<ÛEñŒþ!ž*pMÆbÑd(Úi)hÜÚ ,Û]9Éî òÆ«L¥Š kŠ…$C³®èÚ1¶mJ -«)•óX¦yvg›™Ê -A"Bš¦;ë - -YT¡«‹’öÊvQ‚ö“¯¯£%*ŸZÙÖæ™_šîF&RÎx*á_h^$Ê{¯ÚrÆ+©2«ªªÀH -+ˆŠ‡ñ²‚"ȧp¢(Hœ¤9)yY‰‘gy™ -,‹EâdAd
endstream
endobj
29 0 obj
<</Length 65536>>stream
-T…áUŽó„âå–»S¨nn…‹; -'qšJVD‚寪p‚í)ÕË ƒïã¼ë©€jßÏ*^–xl¹I… -–õÂk%hºàUYI´«)W¼<V¨Õ/bT†·^Ä -€—ýÍå -A¢Q=*£à»¼<#JTê…q*ÙA<:ªÆÎUdÕó^^Vwˆ"I -ŒöðÇaM´ZUxA«†³F2!Y8¨Z7ÀÐ`Eì<x”ç¡×€>0:YU"ÀCá0%Ydõ„h-‡v1/Z hÁÊø&{UôØÆ -Ïr¢…}ÒLâD‹@<gÍ1‚@#M˜Al˜wPR°^Ž‘ ú -iêH]£Ðùð°(ÊNñ"¼’ À -;›Ò<D†ƒfH,MÞC`jÚŒ -[ƒ’ý06„µAÿÊܦ4ç³7è®<7¥y(,nJs'¨½S+;Ó•“ˆÇÙD¨CUyÆ$+CÿÀL"•NSë@㪄0z$EE^h@ ƒU'^ -dÕ©úRI-œ-XIs»“mó}Z½\~0gwÆz5Ô\•N§²ŸéÄÅñ¹½É6ͬžÒÖ[s¹jŒÓÓL°~Œ²ªÞL&ÝÙœ^ -Vbÿ6Ù5½@ÁYú¼Àp²í&Ƴ¨8 ð({qö)tyì‡Ó~¯Ð$Ç((«ðFÖ7¦¬qúkÓ -¡F "çʳ¨šÑwñNºÆ'AšÀµQ^ôP kÓjÊת‚ìÑÇæØZŽÊÈó,ìÀ/èw¤<0kID!ÏÕÖFGS¿Àel´˜á»S -#ª1eµÑþ*r²Ç, - -G£›þŠ -ªÚl&£™!Ô¼3*ÁWh5WkÔ”Wµàlðw¢ÉßæYÔoK&`ØñÓ¨S+Tì`Öv ˆõT-*GÅDÿ -ÚB…¬Ê²õ£x@m³Õ$+žP‡íu,Ëq«i¨f],ƒ$)üu,çQ ¬y/‚À©jU䪆9 Ç”ö¡«€¼·ÊÁ -}œeò¼) MŽjk–äS*Un›iÖôÓ'Ž1oì#Þ>lH¶4ö9§c_Qe9Çä
ÉzJ–eÞÞ_ÐY xŠÔ_¶ne$¬mx9cŸáÁ6Ò¬«ïy¬©ð×±8<XF°?ŽÆÖQÅ®j˜±“ÁÏâë$Ö6øyÛàÿª"_ðH0ÀÖQéÎŽˆt¯îN´%3žêxw›é^,ˮڡ®µêWïáTZxà45 -šú<™œÚÜ€™ ß’ÝLfeú
E ¿ªËµo©Æo¶"Z5šaÕžõf½Aú…Q‹ý:V†rê$<ÞAß20/˜tœþͪø0ü&ZÀ’Âú±ÂV¦B«ŸTímË»£¶µëiîÐï$Ôd¼ê•ô6‰¾‰FÔûÏörzmÕ嶗Ôd½› -ÁÍ>4¼&8XMp°)è_E"8²·ýI]T½‡ò6EÌÖ(F@p‚ÛàE!¸ÙƱ£É
Nœ&-ó«(d“K¯<™Áʪˆ¦Ÿý™‚x¬œU9¼ÍÞÖáýáS5¼øHNeC"ƒ#áÀ‘¤`ô¿Å".²úfPqÑ´ŽÊémšÙiÓ†]\†Û šDa¸INÅCÒ‚#¹Ày4^ ý-Ia§Ûà’¢?1[7Í65³Tˆá—ƒá6¸ -Qn’SIA–DG¹nHˆæ9†i_c/)rçЀօmQt®qeÏÏlö -ŠÈs,#^Òè -Ί’飡yM³tæM0÷CìJˆ¹7Âj¹P?-ztËÆ¢k|qÆ?ë©ì¢ÆÖV-nëgìdc×Ö¾]«oâ0œeÇ»°–U§9äÛàrÕe‰çN#{k‘äÜõS˜Øx -´˜½¦²J¯°W†¨¶ý.UεÄCÕ0ã`[(8ce½nØ°xf kéx¯XŠŽÝ鮶ô²c:Z[YΘœ®YÃéšÖ DtÛé0QG¤Æ„ - -•ÊI"Ïf{¤Cw0l¶˜ømä¸+Áï0mxU³_Çj.'£ˆ\Õp"§0œö65çm„k×â]~2 -‚Às9…ƒÍ˲²X‹€ñræ¿ü£$´lapVç*å¼ÁÚX“Ñ0h?Òs©~ŠÔ¬écg°N%B~å#G^Æ"k~‘ -¢•Þ!¤9ÉTDZMÞ~àcؽ¹ÐðeyŒ[ÄB]ŽNÓàF>§àÁtTcð‚YÔ˜ûYÛÉÇ茪é v0@( –J³^£ŸäCŒbZ -à)‰…ÚxRAD–gN”e•Ååz'ïî¥`#YãTAÔY@S@€,kkmÃEEx0H ù£Ìó¬±?®b=²Q¤âóœ¯Åz`BÓÄ{–Е¹Ò5¯si¢;“hËY -˜Þ8Lqu¼úXG°y²H@ -ŠºËâF(„ècÍ‹Þcp·ÂhB -øÂj¿€jÍ<cxÁ‚ÕWì9/ŒÅV·
@
ЪÒaœ—…ñ WeÂx™ö6ÊáBd. ëbÍ÷HÛÚÔб -š›•Û Ô„ê~h¥Y«úþq…Œ¡$Á*Ò‘
Ó*ÆéÊö—Ë^…‚Ú
lP•%«ÕÈÃ$ÅŽ®êeµÍ³r;Ähµ3[ÓûQ¯Üì(³ ¶.6Zjëa³ …²^·`ôp(J† -ÓÄVRôª2cïwÀ ²ègŠfÅ&Ì×ÛÈg6ÓF?³¤…°^¹`Ð/RD?êÒN?;LÚ^¥‚ -¸ «Ùó§á,úqÏV¶
U€È´XjÕn‡´` í0BӬܤ„Ù;—1šjç2B—1‘6¸Œ
`r™\j!
9qtÚA„#*Šh#kÆÄ5é,ä_6ãÁu|>‹¦yƒãÛ΂èô³ÁLúeÁE«rƒ -V,ú™-µÈgbc€,|µší÷:íò¨„¤‘¯JÙ¤³ƒ=jí”á‚”Åý–¸Þ`£¨0¼p¼WTÁÆì -í²(¤XŒ› &®z•¶{B¹Ô°+\…ˆŽ¡¨˜3N×e, - -E"C'2Ëè:“Y§~o‘È„˜$²A´em½N_㶙¦·Ì¢‘Ñv³ŒQ§u¯Ó(—Ç9ÂÀŒ¶q0lûÀJXò4bHQžéØ|AÚsÚ_ûÀе_uXߪ2þÿëþ«þX–ý¿qå~Üùég•
ÏèøÇ¡~¾Úf+z½y¦jzà Omwæ1 -ö³mÐ!nœPɼ“¨óÍÂ+wû„€CÙ@év“»¿•h[+P²ŸÍ‚a{…Êån°do±Ry›,Ê6K”;•ûÙ~É°ƒéÊò·`:¤M*™·
“u¾CˆåmÅt(›1ýQo`J÷³I“
t¼MƒIµò7j(ÕÖ¶j°dþfMÔùv
fyËÛ°ATß²é‡j¸Ÿœl ãÍt°ÏÛÎÁsæCØÐÁby[:Ù@§›:ˆMÞ¶ßØé‡Z¶Ÿ
Ÿl ã-ôñÉÝô¡dŒ…oû wRÞÆO6ÐáÖâ’·ùƒÀ·ú¡Õ1ô‰üm¡l ã!(–¿5DÀÂ7‡¨XîöP6Ðéa“»EDÀ‚7‰ú¡Ö±dZÞæ‘
XÀö‘M¶–lÊp![H6¥×ZÊ:ÞF²Ô`kUȦ³l%õCc6‹É,`“ɦöfv(M6å6‹°CÙl²ôÝ,Âeéj9Ðu³;”(›ž›EÙ·£,u6‹¬CØ’²)¸YdʶT?´r Üf3‚!lXÙÛ,²eÓʦ¾fQv(W66›aóªz
®ÍÚ)[ø¶–M“µ“uH[[6}ÕNÖ!moY*¬ª…oqåÓipõÕNÑÂ7¿,ÕÕNÐÂ7À,
ÕNÌÂ7Á,ÕNÉÂ7Âòé3¸¾j§dá[d¦®j'dáÛd–Jj'dÁ[e–’j§cáÛeùÔ\AµÓ±ð4K9µ²ðÍ4Kµ²ð
5K+µS²ðMµ|úLÉ‚–Œ¸·¿r¬“ž…žÓ¾%Ý‘8KdÎá"IÉ^Íjà¬J‰9`É<R^ðª¼H¾ˆ‡— <¦AdùA˜†ž‘(¦!úWeY;Âóä9¢½“yŽå4/dÕËÉ_ŸÒNr )qšºÁ Fc‡QmxV‰ -(=”cÅ-uœ9ÐÃÚBxŠ¼¢d%'Ö‹ª¿=ªžÁL6TËÆœÄ3' ©
§Â‡KÊëXÌ4m«'?ÓôHãV5œ¸3³%öà(\V< =ͺlM<1ZšÉ¬QXAÃÐlúà©ÐFõeTÛðÍ×ö¿Ö3VAm€kõé£Üö^[sô!þU“¤÷—~Kï\{´|~€˜~F¼>ýCa·U{ˆ¦œ«ˆ<¥‹dU{‡“-]øëJefËš.åFâq쪆;ƺ1]²'ÙSú Ek°MœW¡“â $ ©£{h®Ö¿‘ӯ©¬GûOWðkòª:f0'h«*Ž‚9U/è0_ÕO{úiµõP^UÇh#‡çµYUø*§Xç§D<‚¯ÿŠ/ÄòW¨Uä:ÑÓ]þ.M#<Vé!Ä6ÃhñàYÅOƒ;º„ÉÅ[—œyYa{¢‚W¼2K7êÆà šÍ[íÔ^’?]Ñ#¨Ði…±,UÉb HãªÆl–vbö0¸ÉªC¯ººÜx]M¹hc鱉vD
U PÁ«TK‡~¥£×.)n4nÙò)5–ñ$`ÐãÓ/u"±ŒI#ýR/Hå°NÅÐmõ×bS̘O(œ‡JÒ6œÙtz¥U9Çg]iÍ0WcëZF#"Õ‡wvØíj£!_]›5t)›ÂÅsÚ-f¼Âe‡ÞåÅLnâX1êJò`«HÌI)Á²`l³ø6ÑV•Ìåm,‡Ê¬_r3JŒ4jUÚ`茪…¶4‹qò1UYûøé°,Ûp³Æ 5.mÃÕvƨ3F·1ú9—3(íÃÕÖ¯®°Ê’]£Ò²Ø! -›38EA¡r¼`õ„0Ä×±ÚZ¬hOàkk4vUÃŽYÅ×I¶×eÙZßí(ÏaÈ9ÌÚäg&CËe¾v¶¬Üj·ñõ -ÛÀ`è±_aèq’€Awì‰^r©Å©¨ˆ“eª`[²º„“…œ'°‡n<kv$z‰U8Έr®…4B8U
;NÖ0ËeÙ©:GÁâQ˜I‡´+à~¬Æã8OÊüÝìÂèeYúª£ºÍ -sfôË›éwëJû¹ÝåPŒµŠ±Y³ w>´CvU$ÓOÑNè”XxÛ:0Î2Nuñ¢Ù7A.íeDQB››§Ð_0byÞé^×*dЖáýN²®«qÈH’lAjLn¥á¾»
‚æ.K™`~"@ô*¸6¯/IÛ6Æè粄Š—QEmÓE•dm7…ÉuÔhi²ÞR‘ÛŽŠÜ¦â ã<|*ìk[;Ù©°“«ÂNÉÖrºë^¤U;¸ÆðÀÀÂô`(‘;±Q'†-'ßhɸ¬Ö1Óo
D-Äû»5¶ê¡m#û;l¯·šU]no¯•¥ºQ–Eòò3Š—x:ŽÊäa«CjL'k;¦5ùÅ´Ó¿æcÔúBݨ…˜ÍnµÝÛºc -«"ºñŠ¯ -ÜôÃM, -Ã'[]F7^‘@ƒxȽ¦XÅsj¶ÞZ=L{p’GPpçMYí -_Š;oõ>_>#×en1ï -Û0Giý^å=$™‚). <%ó"y\(´I‹þ*KNA •²u ¬d=¢êþ>f%ÀxQk¹ ‚úA;WD•`–µÞc -ˆt•<µT‘—HÝ#Çtˆ§S7 ÓVsÅbYQãO`S1xî†Q1;KŠÜt‰Ã¹Âk9·U‰Q -à•qŸu2/£„©ŽÐw«âÐ -dl§O9™gpÃT%RÑ‹¬/ܤÛAKe—²doLÍÁHÇ@3É«7Ve@ -#Š'ñ*Š¸öj‚@æ)ý‹a¸)ù(®>i†êê´TA3NEô×sg´tÑ*:²a^‰òf‰'(ZNµ -HÒ˜*24ÖꑼN«ÎïÇc»x¢t‹1Ëø8”1<GF~E•ìTCÁråUž~µÕNdKQg\œ¦Mžêx÷1%‹m=’õjÞüè@¨/Ð0¬–Š™áŒ%†µ¥p²æ†Íâj;CžØx!šá…NÕ,®¤0¨6à¡5„(´²H;>8aL -2-œ@
¿2ŽNÕïQ‚±/æ©ô8¤ZãH
B;¢bqK -*‹I[ASEÜš…WêQ
x¢@…±€»VD‚{P0'\¥4`˜Ú€C?>¨³>Ø -Fä`i$$4ÀxÝ}¥{M*i}ݹõfè -[ãƽÞ$£°Þd½n#ÜĵhÀ³ô -£°qkÔmÜë¯6 -ë
Ënwëp¬¼@U¨d"¨Y2.óö 2´,ƒb\‚b´!ÞRï®ÈÄ[ô´sîXWÁi+~ò`G_Òiy:)gäB¤]Ðv1mº¥íV!Æ-–í:S{Ô¨ÔHZUú-LOsâ@*b»U4©‰UršßºÓ™¡;[cég»†¢¬~KûjFt£5±Bcߦxsîôf
àm!:÷B8“ÁjÈq -Ú¿0”·±è[5ZãUáûñIäªF9Áæ—6ÐxÕO ÜCCHAe‹Ñì%UB›ŠS0'› YPǪxüT„¨+ .¼a%™ÒEóðaÔüi`¾Ž~ø¦jf·7žÎ‡X%Úµwðùï0JuäÔŠwJ^ù«Äp8%F -}ãfãJ55vCby¦²;onO·ööôk¯ãÞs=ꊦ0YN„D†:Œ'Aûk]Ôítô1“ìv8+‘inê ʬ'TÙ¿ö‚ç…Xøgž#£„ jZŒuS£ßTèwù7úu/Éz% -*÷žeå2:¸ º‚dÝÔè7ú]þ~ÝóÕXt“ -(0'Ïú|Cº·uqÞÏTEÏb£4¥ÚNèŽÅYE«Ç»[Óñ”§ÂS—èlM¦ŒÇÛð)ª"§@<su\w.êMÏêÜOõ5 ªÀ@\_"Þ1}šÇ«õtoV_
sŸ·iÍ°½jo;ÜbøtTâµ<úÁâBº¢y*ç5WuìJ%¨†šdLÀæj<)5c§4buiô“%”úëAÄ*·ÓÔchiòtñLû餕M÷螶ÇdÍ+†PC¥ntðhø -ÚU,˜šÇ lU*ÑÙ6L”N•<-<¬ò"R>}öòDk/¶~ ²yL²·Ø‹™?~õ6äô£&ÚtvYÛÞÞ“ÈL£ ¼^`^*ÕK†cºÛï›cº&Á0Å‘N¾©Y•zj€”žÙíí ààé†df({jmo¦,A›‡Ä¬dOW*Þ§ÝNA¦nÎ
®¡5¯SkŽ#fTjsf¸…×°Þ±àî´(Ä«Š¬²²JËú6`D¹ñ¸Nã'ÇbÅ£r’+Z\ÑâŠW´h8‰÷¡+™ÆN…H&y$%S¿R=ÕéîÎDwÏpI…œJMIp̾`½,:êÙÑ-¡·g aî®o÷õ¡È]Ié—±(Åòº³±¸g#êD/3‚¢2/q"úuxNdãœJ,:;õA#]PV5%G±ZLÕDœ=;ïðÄ9Ú¨SQˆN\ uš‰…% -¿FLLu™˜ËÄJJ¥(~¢àqL—Ÿèü¤*Õ›ð,LûÓ3ôîĸ²ÈŠ,'rxJžñ²2'«<+`MVî×g§l¹uâŠH¦9¾ž,–|=%1ßÏ“ýêlk,è'2’Ìã"f¤P;œÌ)‹YÞxPv¢ä˜®H òe‰×•&!‡X¹Ö–™PSÂðŽŠ±A´Ï÷5èÉŽ'zJÐA¦±&p*….EL€ñdI6Üy;ùxòÌ]ª“ÕlÈ@ôà ’ã…|²"1*zó#qözóCµT<æ £QìŽÙH>ûº¦L3\ÊZÙ~œdÜP‘yOY°üQ‰00yeEa)ª²Ï‰fpž‰lM_xLj
û‚á˜Ìw^y†XI… Î’¯¨,qËÉ"Oü“â’ÊGxmþçÎÿŸ½ÿÜN^I†áï|&gHd“3ã€MMØ3{ÿxý«n „¶göÌý̵Öå¨ÕU]]]©«ºQÉüY -ï•Ù#É>,‰C‘BùX$t´Îbz.%<žê\ò¯åîZÇÿB&ñÿ[‹ -þ{çØøÅ)þ-“Þ®7·io¸þÇUæ)\ÿaËùoKápðï¸`ÂE¡D‚3Kû‹¦ÎÉûc´ÅÎØéÜ®Mo†xÿÉÐö¶s™ÌÞ_?ð»™»»Áb+Æa7ª5ÊÉÅa+ît½ýKës-ðéOGuÓØxDì¶ìwúèpá©bËo3ÿÜô@ð&GãõvtÛmwœ+ðÿjŽ\dóÿN©ùŸ¼þé)5ˆ$ϨAgÓ ËHñ_âÖë÷£´-t/!ÒM’Dðÿ#j@ˆ¢ÛíH*Hø|l
E¢ýÃø½>†Â'Ú¡8(Šš¢«aHÂÏ2ž;@óÿ1?•½ÿ³Y…ò¯z@¨çë ³ÿ»¶ÿ'ÿÃäàßf·ž¹ø×vx=j³Z)‘Õú_lj38ÿg`j°/ðkï°Ø¿ñDkc¶Ü,N¢•;æçd<ìÜþ»6°¥È@rS ¿ç
ü˜Y
ÏÇ>ªžYë-Fûý°Öÿå1Y_ø'J¿Ù0Ÿþºÿ~S\’ØÚžÎö#öÙo/M`PmG¸Ê'8Yë¹äm}4ä0!ht7/éó8t™~Ÿö“¾€7ôzƒ>lG²VæñíÎh$ÛJö¡ël(?d˜ÛsïüBn;¸ö~”ÔMC¿AšôûðÞ¼›¤ü€1íõÃH)n¿þH6ô~êÏÞñõ@ÀK#ÃÍGø¤ŸÁ)óA’&}€ LúnÏ”?¾Ž*“¸×)eêû´í+ÐÕ£„× -¯$£>ÿq¶ßO{QZ-°G»£
$Ê À9Þ€$ôƒ¬Z? Ùï :Ÿ1è‚ *À\P"ƒpà'ÜS¸VI”oÉbE-rQ* -0èŽB/º<ÈVê$Eÿ€˜c!LóÇõ(´‘ÆFš‹ ¨`Š¤Ñµ¦lÕ -LLºßÍ+Aøi?°10!E3ÇU žíN -§è„¢
âŒEz¡{/Aûña—^Xç?ꉢpñG€!½„AxýA†Å" H¹@rAPÕíÅy±¼Dàˆ…Ñ••$£þàŸ ^ d!xI´¨€q|$ºƒ…*.UYÀÿ‡WŽP)Ä^ÌÞã¢A÷cÂ’?>Tƒç¾x}~€Ëò -QÚð -ð"Pa]å¢hJ‚'íGÂê'ü`!•n”ÇÙF p2€xÑdG`Àøs¦‚ÁkL¤Ö¥ØBDŠ£ú£Ž|$Î^ƒÔ -ƒÜ €ŠÖ!Ų>^‚äŒKPdâ dRay
ß -nÇ·°¬æ/Xÿiî‘eNz}Xö3'»Ã‹®5Ff8¸ -!}.6 -.k_½Vš¸B›Ã”XÅh%NX1È‹«œ†5Ê¢ -k -ÚbOÀ/È%&°À£,Ü, -'½']>0hO‹.X^ äAÔÀ\{)Ió첸ÐÇ×¢~æÄJhñ}±D=.Hc ÉèCN;»€kЕõ0£`£áºw/:¾Hàcœ€¥Ð¤ú‘tÁ‚ìòü{ŸH‰"rJHy0TVØš
PG¤À* -Ý ýcGOûX‹HLÂúG“¼HKZ·ÞCl|ò[lÜž,/’&AœÛ`€]c4˜w æËhše Ú‚™±–bþ -ó¬pô±8 t§X.ò^šýbµ -gƒÍ‚, v -€QSŸdr/F¤þËÑ_ p Éê%ý÷ž‡‰ƒµØYò!Ž‡¿GÛõoSëÅz{›Û®›“°½2 VÐÈ®>à""(¹Ÿ•Äêeï)rCœi°Dàà¶^¯ÿ´Kƒ‚((F²e9ŸØøf.\J„Æq±.#6È™“Ï„öú±™«» ïhð;0óQÜvöȸßg‡B€ö&@ha{Œeì -àhü9¦ -™X¡¡D±ûËÇSeHød`ŽKd¹75Z,Rà½r
½²}¢†Ù_Üh(y4óëíì¯õ*Ï‹Q2oòM2¶·äb4¢‘¶Îôȵ©ízƒvÓÙs;.Ý ‘¬Aâ6€òˆD¤~XŒ¶ü@Âù”X|n…;a¤_b»ï¯{Ûá-yytîyc<Ñ"QçFL qü4t}´h®ë,Xv®w³Ój¦Ø÷˜à‹ -h~‹Ù~…Ýa.âþRÉ[ðäÿÉ NHúv¼@–új´½íö³ÛÞbÖÛ‰à D^»õa¿˜F·;|Èî²S©ÆûÑ?ÂáxÌB!ˆO)†vˆÀ -Mg»5PgtÛG7pÇ5o7½
x7[§3ù¨o{GŽœ]1Š÷œoöN³!ôv"ªQ ÈöuKfM'<!ªÖöä^ñ-‰–$Õ¦<TÛž@‰hÞSË£
”êþèí|VàÍ_m;Ú¶ŒnQ6Ðmf8Û÷ú³OŠ»ü¡¦Äç‰cÑÞêf»)p -¸Ýû8v`àcŒø;'¤Ò -«Áâ0D£@s«!Îìß÷dL5ñw!Ê
´—†ŽÄaž¾Å'és!Úßr“ë»æW‚ðó=ß7ßór愶׀tg‹!x%(ÎòçÙMÚÞ£xf¬2vbÓµN6ÐÙ ç7’£iïÙ)ª¯¸~Є›,‚„45TÞò -ãtj/ñéN]ˆ’æ•·˜o½Eso]‡a@’U^:²;qÕ[ä·†åóŸü4qjr†„ðN Ñ‹X6ß6ý1ªŠÜòT¡òÅÝ Joý?%;¿Q…=
P±M{¶®ÿ±
Ž×bÆ7ùE=îFâáHäDóíS¥&ÙOj½ùó6ÙÌ‘+y´QOÈ`sä>ï¨*5@ÒM´,|üÂ5®ÌIh^àp¦Kbw1.1?ˆ!°/²÷b±žÃ0è¨U´¤ÆÊk#ö©ßÒ–ØÛX×â=ã|›³}|š[¬Áp¬6‡ÅŽïÒŸLTøfƒŒÙÝ-®Ž¾íYQÛy¢PëmÙ›vµtVš51}M3ËþhXÛ®Q -Fi$fbASÔ%Âä„(%Õ! 9˜Š;’ƒuxô Ïöª /X3` -gÁôØÕ‘]w‰ ·:ñ¦ç1þuœ?ïLM‹Üäõyd_õÄ6ïE“éúùÙP.*ƒÁ}Dé˜öAòC:«õÙ?¹°ÿb€šÝê6QPr„Ñ?ÝBa¿ -û‚L|vÃýaj¦8W¨Îw….šV¹€_C.:(hÕ<…ù>nÂú&žëL%ùÎ)jZytZœL¡L¨± -صŠm«J)a3iR±m´ÑŠëOD,•5p&›çœàù\÷ݹ[pE€.š!X½…Èw·ÚÍg›> =Wn¶ö»Bo«Ür°^,NúÆzÏ·?F¯Ññ¾rÀ@´v‹ë~a5^ßž7WU}*Ž¼múžˆŽµ§²i=zSÆt„{ìQ\ ¾Û/ÜCÁ‘‚*ÄA¯qíÏ{×ZÞÙ—ðx±ÒŒÔf¨¹s¶Þäô†€ŽäšÉCGm8èœ)Mž.U·ãex3AÙVü´iB®6rÝ‹ÑX[Ãýz£ŠÛr{®€#ۖͲå(¬2fxÛÿó6½¡ŠSÅ)@½¬ø²òÐ@D3ùFª$c»Zóv8:5»˜rÜ -o{(Ëáh7›¬x¡#JIô¹”`U± eȬxÙõgûåÑÊÐ ¿Óq9êÅÖ½äoNI¶¬WèJ"´%¦@Ôòd£ôÙc|0ÇQ’·C÷z‹.c“ÉŽA}o Â6±d«
·)ªÄêÄÈ|\›?.,Nq«Ê©8ö¥Úîå1î›ÅàOyVaÛVâ
-%)I]Ôjw<f^•sqsVJŸ†–w€å÷è7å—”v¨)xd@ e‘4â}䋨´lו&È2šòWi¶å鮹ªýÞVìgJ -[1RrþŸ·`ÿ£&Õj»íZá½1©–qK™vœ<g¬Hñ×¹›£Ür1SÐ -…€?=B“‚êtºÌ!X+&ßuXÌ›öTóÁp¶gÚF“qÅPö†ïuºm›Ð™}ùz<Tlåõ¯@µs˜f͹ò毿þÒéliÎnÑëtÖ¢þÆð—3Õ¿Îÿ -$|0nÑ×f‚y›,àƒéþè¹d|”Ãø˜§è¹?Þzû²Á‹Í| -Eô5Œ¿&½ðúZe7Ÿ!ôu€¿&Þ
|°êQß‘D ö9†O¶(úÚ¼1å,î„>ÛQ#}=gšß{á“ó½IÍvMúŠõ§Ýu×>¸Hü4›m¿Ð×GôÕ•ùˆ}Yчü ú“Ô´¿Å_ñX‚€í_žŸgSã·è_ô3½™fúMBŸ¤ ··|g÷&=®Z¢ùµ3e3I;´¶¾eúÆÐKzlɛҥƒ·‹I†‰é½1aâ;Ý”J¼*m| -²þ×_æq§éâlB7]g*£s%=ÓeÌqœú‹§MÞ㘛<ûü™ý‘÷Ô¸ÒôˆÎŽwü#¼
?a˜–R~žÏŽmõ!4;ÕwxR¨Ÿ±e0·$wïë½›Ì%;ÏõD}xgNf<ÂÇêž|uéØ<š1¯Ÿì¹ä+ý‘œ‡†ÎøWg–ä±Ò¹×*ðê—7ü¡yþ•X®'‡l$[¨ÒtiÐJÍ¢ù#S)“ñ¯»ãÈ”³÷´×xüõ—g^,é±ý–á(´*†
g|•šM†û³|¹Ó£Ý“yg“ñÐýçÜS;|Ìò…|aS vùj¦O8‰RÇ0†™üt$]Á‡—taX°Ü˜’‹ø›\øM}†ñìÆÞÄvP óàZú‡"@.¯ƒnêHf¨q.An]ŽxÊÒO\n}zìzõ¦“•JL<¥ì\þ…yø/ÁFºtu:ý0ÿ©Ó¥Û>àÙmJ§»+îžzn®lö7½Îvÿô¥³‡‚vÌãx^¡·boè›!k]ˆ¿è¶káˆïl“ -ÕAWrºrÏô®»¿sØt53]Ð=ô3]£Pñ鉧G]ëð©×=Ýó{t -P^Ÿ]÷añªûhúº~«ÞÐ
Ÿ6FÝx+ë¦ëÞ^77yÝ2ÔùÒ«îœîkÐþÒíT^¯+ôzÃ&YÑ›“³Þ:}zÔ;Rw„Þµ3}è‰J/¬÷’•åIïÿõ{‹U^õ1K/¢o;_úÔ´ÞÐg»%Ÿ¾ðVXè˯ùª¾:¬øôõÅÃJÿ¸o5õúyM,ôú÷†î]ß_äq¸@égÐÁÒ°yÓoj@Ù[iƒ¾±5̾»©Á6ë·
®7ÞNÀà7{†À²·3D>ÂcC¼þùlHß«†|ƒÈÊíyÔP{}ðšŸQ—¡c°YoÁÞЫõ¶†Ñ¤±4|R¥Ï“aUOM
;sbbÔWïÆF‹351:º¹©‘—>~ÝãÒ|}ÿ2ÆJ1•&-Ƽ7á2Vm¿±îÜEmw(g|õ´jÆ^ÈðbWJSãücw0nö9·I>DoL&óÓ}Ùä8X^Mä}oe¢÷ ‡)roŽ™’ĸaÊM¦¦J)j35wÜÔÑïŸLÝÅüË4üœÑ¦Ï÷ši3,ͺaÏg¶Ì‡f·y¹1û}ت‘/æø,a½1™st«d®<ÍWæ¦Ù5??äúæ1ó™'#ÿ‹y•n»Í—m1ïÚ.‹käy²øZonKø!üjI–Ö>K¡ÚZj¯±;K{fÝXº‡iÅ2¦;˲\x·ìçñ;–XTguƒOV:H‡¬ÑÏÀޚɆŸ¬ŠÖæªa¶¾¾öÖaqS¶.’mÝ'Kz›%9Ø<)GÍÆ”Ë1Û]wç¶å¾Ò;[Í=ÚžŠ©¶íc+Ùf±&@±}-~»)ýå°»Í/;ý–þ²ßå}s{ÞkÙÌëž½³uíýEïÕ>Ÿ½½Ø÷ë÷‡Í6ysPõ»#œ×÷ébì¸w¦Žvåiëèéw&Çg%àvìõuæÆä´¾’N*[¸wF\ëgf—9«ƒÁÙy«yƒoƹìÏÛ.ýª9w¹L1‡‹ ¹®ÄýWÛUZŒ×®–ÿÕëúxmW\sw}ê:Lž ·#ùRqÓæþŸn -à’¦‚µ|c"É{›‡Œ6lS²Ð#*äãš¡È>™Z“«|E™¾f ŠŠZTlYP¥T·C=ÙÝ9 -L^†ú*,^[º±òÒ>Û‡7åÿxôÖ˜dÑû4ƽŸåIÀ§oW‰“ϳO9|Ñcö;½ïÉnÜûFãηów~Çܾ÷یޟK¥LþGOÕæ¸&„ÿËigh»=yGÈ<Mzt³Þx§ûë‚þ -vÌŒýÕG3AÛ0ú,×-=15g†ÛµÙ
‘n©TÛH>¿ ”RI_à9¾ÌJñÏ ¡§‚Ô¨T&ÍMð!3?FFXïˆ3dŸuB¡¬^2ë.ꌦ›Ð¬MߘÂÆÒbö¥rÙp:mÙ…›é·rxØ.ZÂûÑŽVƒ?O}Î"µé é^m‘¯ñóGÔu×IEcö¡-zß›¢ï-c)º)ú½1g®´EÓý·Ø}É^ˆ½?W`öc›ÙÆ|çr¥æw±ûíÛ]uS®Ýõ²ÎôÝvÓÆ=Õœ'ž`¼–xÃjÒŇËù&¡ë¾ÍÞÞË,‘v&‰ö¤=N|ZzÓ¤%2ÿLËdiCl“ÝdÎÜlŽSÊ}o÷¦T9–jì÷ÅÔ¸Ÿk¥O‡aš©ÞïÒŪÛ~kOéÍG¥‘ñ˜c³L2`·e_u‰Ì̾ìd-íÏ]6왳÷£ùc¶_Ýïrº-šó»Ý\ÁvPro¦A%÷å°móD°”ʧkÛyþiš‰å—öŤàl–b…„ÍöYx|¤ -ŸÁܶh;P÷ÅØÈà(6šÓ·â´5Š•¬Õ—])úÜm•À傼œíËÖÀ¶SŽ¾SÉS¹aIØËÓÖËgÅFêZ•Ø,™ª4gTå3ÖÝ;˜Éô>Ag^îÛ~Ãýý2òš®º+Ùp5Ý%¨ê‹þà¬~eæ–5íj…»×Cí}ßÝ?èÞƇ‡@v¨¦ÓÃØAÛêVO¨ßy?™z+๫/ï‹
ÏÈüØÈyêýF·jÛ4uúWG3м‹4k!kµ9ÙûöAËð˜|)…Ÿñ‡Çm3<où»Q²U™Æ*±9óÙ¶%¾S;1?¶Ÿ&}{;ŽežèüÛçSÕa
?Mæ•AÇñad:é·Ç~çí… -<ëz³ñshZ¾{n:CëçeÆV~!Ç;ûKÉ;é¾»ýØ«-:н¦L³ç××þ&ö¦{s›oLoáûPÿíñ¡Q~[7L××£
ݪîyÜ1öÇw÷ãcæ½`%™÷ÁÓÔñaó©9ÿè¾ì=c¡ÿÚ»‹·Ú½çxÑ;jýp½Vë·†Zkï×û}ëÆ4hìÈ—ÁºTè
içäsø0 ¶ÃeëÅ6ò ÿ¨}NŽ©p}ìÍ
ÆÕöÓa<ǽ/å-Lª
óûüHÝÔû° -Okžekº˜o·3ß«-<{x½ÌV÷e°>?éÚ ðÙxu,?7“Bt4/†óV:ÁÌwŸ›Þ"’y,:r´Ô?-cËx¤±\v©lqe±-«Œ…|]
<DtídÜûu1ïm¯§ýXdCUæÖxÿجºâé+ðóµ=ýVçu¶q÷[kûngr;›iüÿb'w•:§qÙ1·i\Á,ÎðóÎþ9ZÔF[t9-#}ç¤<©>yy§ü´q6u"·í
ÑæÌ-ºå–Í#WÊg_*£|„Ä–} ×¹ˆ_Bb®Å¾¥ëÚ4uÕ}xÞ}Ê·¼Ûna°–΢ÊÞÕð”•$NA£AMO%’Š½úPÓcLD>¤s„ßÜö6•†:N‘Kžöd 㦗ih²MÙ1Í”’=ŽM³½Ý¾=ê£Bj.ÀÖœŽv£ÛÞvt»ŸŽn¹ÝûÛÝ1ƒñÓÑêvÇ&>öVü»±oñjèíÐÏìÏ -X —:¹“ê{×¾»ªùÅiG-áÞ“³è5W]Éø6·œ†&+]1«sZ-©YϽ3ÒùmÅs±Šï.T~µTâÛÀÉf¨JÀDú|‚Ø¥?Ó'aŒ‡»n{<âÜìâ»å¹1ÅÃeÝöب¸ONòåxÄ7j¤fÑØ ív[& ÊÃÀcÒYSˆyÎíÓŸoI߳˙X®Ë»D¡±Ÿ:b´áMûŒíäçÂÒ¾1¥ÇD±/Ù™‘ Ž™ÖÃËk¢™r·äòÛ…Þâ‘yö-Ú¹—Ž´ÓtÈZsÃñ +û«1=~k3hKò)4NN÷©)óL -ÈñaNÈòW<rgi³ý -‚'ì"~B>vz#Œ› lj¥Óp‘&;`„SËWšè·0îìw!&Ñe1PüõÔ_ƒƒrz¿FÏñ0îΤÄÍ1z,W“ðÉ
LÏ”ˆhê`ö…%1µß˜Ñ4pPØw±Î}ãa`: ÉÅ£:Å ç$pˆKŽ%¦>%,ÊøÓ©G¨ð+Ë ùåC–-PãòiTgV‘$~ -¶×³Žx[„!Þ²Xƒ©é¡þœ.•¾’ü%ßG‰ú*]7ºÛ>ÎÔ\’B(ì;„î‰Å{Äõ‘]‹Ÿzô¶pB[›ÌÀÙô$i'åâùd²?Iì™üÙ¶B–Rñ<†³Â^UžëÆ7"À5E¾mp‘]Yó좃'¼æZ{*õ×Â,%°ÖýÏ?qN4¸&ÈRú¡s¢Á5ᬾ‡ºÐÐX—Yàûvçg%°poóÜ<šæœ}ôTLb3öL§sWÿ·<ìHý©ükº”¤- -®—:QÌ|¥D=jðòyÝ>è@sW¯Ì—Ò7 ‘ØüY[§¶O”:äÆhé~˜.ƒÎ#óYõà§ßéTÞÀ*#×Zs³ -/¹×ÅI¿âmås<Í,0霉lº“·K
MÐÎï¸1…ßÖ/¯JZvæ~®Šš„G]ÛÇÑB÷“ð,ã\?“ ýd¢áϾå–{»µû<J˜.2ì@—T¦¬!sG?åR÷©Öˆ7¸Ý‹îÌæ¯:Lrü‹gr]n o{sc sà†õY¢éhö+I/Êþ³ÌMb× KëÔLoôcûª‰U¬°–â!4/ˆéªëÁ&X{ÈD5”)ÅÃÉ
ßòæ0‹Xã[Wð€dr<Á¼
ïÓãà‡'ó<Ú›Eô~n-MÐûÝNb=ÚbBf9™Køëëy@ê®Àã’X”öJ1HpžÈ4L°ŽÍÆ÷ôøa™¶yC6•x›dSñI=oŒ’…DÐ3OH7IØ?ãf¡—¤÷<l@ôñP{4‰6Ûw—¼„ÏpQmªu¤¬™'ì%’[T–Ž“˃~ùzwNåA™Ù¡0ýpǧ9Þ7¼¾ctñvׇ.\ßÆ3ÎáO“ÖgW)nëå´\¿È{M.Aû ÈoYx¦£îÇ‘Ô#Ÿùê!ïîvig?›‰ØŒ¦GàÅÎWrYù/ùåAêkþŒ,¥0i9ç3©Öô¤ÇÍ-8{ÄxÉ[…ÝÛGΔՕâ[CwŸ¯·n †
‚ÖœØÐÞÎS65¾óž—ç¿ ã€AXÖÄÊŸ>gåŸOÓ¹˜i&Ffc°ƒÖóîÔm8k-Ûȹ|E2â)=Št‘«ppœÀã.×nµüÛp¬¢Üg¢J&½àfßÍã‘ØÆÀ_‹G3>
=<*;ç3{ôe~Wé -ò -n„íf©¦¤NÒgË«ÌÀ¿È.·M‚X–Ó¨da:µÄ:1¶JCÊ—r]XÁz"&¡ŠÃš´iÖiZ©¶gçEŽñOÁwb‹¸¹JÔ]ö˜êƒÈ:[:žß|;×È £YFÊuâ¼qÈYŽhñ¹È£h·ä‚‰±+ÁmdÒhs±¼¨‡\ãÈö4R~¢’·ÉÅbó!ràÏ<ÆSÛýLŸˆXø<×#Í>H,z#´+a@›5D¢¾.ïÓÎê×ðh)Í'¬ùúC1gzú
<Ý6› Ôóbcã+_/cG9<^šÍà¶Òg[H¨€Äθñd›"ÜÎ8ª°ëRj«À2,rÖ-ùÆt‚ÝŽGYßwÖ_wh ¥î3Á¬P±Ýsð,AZ¢!E¶òPî=3C(´ÇFÙ÷…‡I/âÌÓ$“äv{´õíÊZ‹®VŠ|\î£y c®Ûøc_KlE"™|7 ¥å!èo&<•€îóC/¶Þš£Xô®íiïÓÆ0fšýE`o7²Ùø˜¼qhÕù—ÆN/¦ò*À>m -ì‘HåX
m_ñ¡`æÌúw¶4BZÄ^ ŽV£¤o>ÒÇ·V€¹KåSÓ—¡yXúxäÁÛM—Jýi³XüØcÙž9¿=‚ÙÉ<8Êù5 -c.¡LïãÓ™XÝéjÙë…Ãkº¨gôŽ}¿wÃ…j¾N‡žû0–Q–3Õ8iQ$&0û`æÙ -1ÿã¸kõ=„ÇQq9î¦{/úDù"!ïéÁÃé~öÞ5÷I°’ró¼¡í!÷&vzJ9¢uzª³yóQËc©ß˜tŽØ<¢³Ý?uÎé}ŒÝ:Ç!ÔÐ9+Oi‹¨P„'Ú±bð~]ÊöàÛQ;PÎþôÜwWýˆy“o -ýèVt·6G9 û;‡h¤º×Þ‹šì¡ tnw1@°îK©Tpá±ÐÔþBæõ4ôŽ,¹D‚йñݳšÆk¥J(‚Â5n·½þ -%D@·ÛÄh}äߢNtçÿqšæ.ôà‘W¿}4o8ûaÔ{§…HåÍÝuHöiç\¶äžN‰ü‡ép~z!ùAô¦Í2oØ©#^Ÿ#Fô”ïMîén¸X•ôjª’zÎ -ÅZ!ô*û4@ÙëòO§½®åD±Ëç Êü<}Zv¬î(ù§ýê8|~*¢m¨êý¼ÌÛ¼9yܱOÇ–¯ èÝGÇìhœŽI}è‚býbc%õœ•riÇ|+û´mê{tòO_Ó¡è‘bÏ?L]Æ(ûôs_ÛäeŸÎ[Tòáüô‚bËy6Ö•{PzûeŸ)_ìIžb¦Áªß(˽mÖ™¯vÙ§™D¥?’}Z¤îô¤<Å:ÊhÉ<õç‰LÔ~sÈ=u4vwÜÓ”;"^•ùæGΞ8?÷í|κÐKCËKŠ“?¦zºáÜÑ컟=Éõîžý$cÔÞˆ<Ì”ÎUvÀÃül¢?nô[VçL×SèOûo'^=y”|[=e‰Ö\œ<?G`Å^¼X\âµ<ÞŠðT+ø±Oz3ÀGNðžY´oé¤Ïln—@Ünõ7¦3XìéÈ -fu<‚ÇŸ¸‰°¥ž‡K-íº‡åŠ¿öeZÒ†¯n橪ÚÎ?åøŽ“Iók‚“–K÷úDÔ©ó4±ìaË s#.Zñh÷ËyþÛX‡MÎYG2‰õ÷c[dsêÑŠ»ˆóÆOŒE,˜{IƒàêedïY4qàc÷ÇYYs -©y° BŠÒûÁ¬[qR–;‚G…1ÉAZ¾’%5¢£?ò¬3/1>‹Nv|7¦óñÙ<Î_C¯>†ÓøìI¯ -ÄÒ>kÌŸ¬g¡‘X -‘öägV¶«-ì~$VØugùJ ‘YÎʽ~]OyIºƒqóÌqò)O%ŸƒEeºßÈK(zl—¢§›Š¯¬è¹QcÝÌkaË'à eͬ葦]U+ ,ƒ3ãdÿp´#WÒ´ë¸t²b[nUâxœäÐ:úë‡Æ×bxpÞ»V³¢Fê\ÉÌí&H"’vˆFÅ×b¼Qjn37ûb4PZë«$%a€wÀ{âÑö´ù|þa3rOi™irnȞђÇ8°qþo†×ÒÓµ#zä'ã Žtg¤ÖΤºÂtçíòØ/×]/«uÝ)¯:Е=ýÓAq.
¤ó‘t¢?/Þ&Å[€d´fJRÓ ãO(úzD_òŒï$/y£úpB‰‡Ë>'‰Y,×ßÉ
2NŒöž+ìrJÎ_Åq9%Ãœš¦UôÌ»“¬bÒ`3žƒ5ó²—UK7¦kæ7‡h’¿Þz’ZûÃœPNK«²>+^”öwEY]Ysøh1é -]¿\ᓳ›’Â$£Snõ¶ë»ymøT@<Ÿ¹€LP,A‚
#)>dHAÙì¸1]ƒ”á›@(-Ñ’{Û›”Õ²VP8 -ÉŠ"$ˢЂ—qŠÕC²04ÞBâfÿê0Iå%T´†7N^’•âA¨–¿Þ -~Ó²«ŽÇÉ)ÀÇ}]ÌûrÌO
)m'ÜÕ¼ ÉÅ[¥¢¬g!oE]±ø¤ý%X47¦oRàYSVy7šû:’×aÃ퉳ýüt²½œ¼És/G™|M?×뽓¿/Ñ™`‡ð:%*Ü´`ëÂiZœ)œ¦ú+;)œ|zcR_†Ô
êŒr_½Ç'cD \N»&RòÌÏЗ@‹‰%Únn»h»¹xOƒD“Œ¤€0ñ¯ŸJ´Ç³D;z¯×XðâÎÔ%ÚÆ$ÔÙ÷%ÚiUæZë_h0kRíêµý\/Ñ.bl??—h¨—Ÿï½â~vƒœIëiÇsc’²J¨µVò ù[‡Ò6ŠÏYæ[‚ÏsG¿ýtö¨_Æ–/y1¤Ñ2KÁ:¯î¥3¿NÌBg-ÝUBöÆ$+f¿™ý \Ì-ìK<ñï(0k¢¤&9 £Þ6Ó^¶‡~~ž{‘q¨E;ïêý7Ý5†—%vpg¿«fu!ŒÏ¬¡6„_]?±ïyLÚÓ×w?öøžÚZ£Y¼Ø…¬6l_eß+Ç`Qg?·ï_¿¤táµZÍÚõ!K-†úù‰}Ïë夿¯Åp?ö½T/'ïU¦ÚPYb óúõcm(Ð…ïâ}b~ý•t$$$ó°8])Hž:§aÈÚï[…)á“Ò©a÷íéé'±jQœ:ûéêæá%±¶•s(¦ÉÜ=Î$‚"çÁ\º5s…ÝÓгåQˆ\iH§¡$Ë8·Guy‰SÊíºPK)·G“_©A1Qɧ¡lzž|暌¿˜QÚH©aqõw¿—mÉîÝœ¢=Zê¡3¯1\*ÿF„(Æ\gbÈä ¢™|wkŠÁ²É,öŽbò-Ë7Çø½&¤4rÄÅââ42»tÏú,毬$=npµÜn¢sÞuÎV7£s%¼]T7—‘ª cOnùy
_‹]VЉ*†¾]C§\A‡eò/ÔÐÉÅt²Õ‚WÖÐ)WÐñ«RC§\A'°ú~PC§\A'¨üA
rBµàU5tÊt¸Zðjè”ÛqµÕ?®¡»X¸‚ -º“gñÃ:å -:l©×Ð ’*Ìj–¬”µ-Ÿ/_ $JvÑ€’d¤7ž¸m×V/•ùÈßN†M‹_‰à€ÖHïKZ¨í¯›:Þ_Zœ°ñm:…ívÖŠžt¼UK1ØèsÔR¢÷ø”:SÎÃÒ6>ëS«œÓ<>Qäêr½h'ºçz”d*U"WJ(I•Ì¡±\U4§IÖdD© çÜžë -¨öW¥‚°ùc’É ×‡å‚Æød°Ç«:.ƒòÐn4» 3!¯
bN†9ÿiĘ-v“Û¶zIjÅnòþ©ò†OZf“A®©š’U3*…µu&LÁ"/wlúÔ—Zå£6™ÕË^åôâU)çöö½ò)”W•˜âÚ·ŠÆªCu߈%µ—}²Ç.CgjÃy`# -“À»’I³ßرÊÉš]²U`<KI\¦jvi®ã;¨åÀ_QÇ×W«1‚Vò¥iòE0ʦôe¼%:5È!—*Ñ”Ÿ?ÕxÍYÃœ0‚)9Zëø[µš%ff§£Î~Bt{Þù«L¹¦3uŽ×N1a€õ‡S-Õ>ȳDûÅ„_*ùÔq ò¢Äz‰J.m¶ìEÌ÷ÒÍ:-õºtÜR¹^NÔ…Ls½P#KtñAuIôçCquç58{'OÅÙ›ä5;{rˆs¿Ñ…ÚÑ(0ϧS5´•Ê}k†Þ uýr4i¤—*qS2Ü(†¤QUšŒwÁöJ5r7*eζ<ñ€”<¹¹p¯ìÈÐî"•ßšÞk 9ogDŽ“?×…w$\%ÖRR)»:òQ{Imþ
{¬ uş׻¬=öY¸.¼#_f'Î ú6¦*‘†‘+!ÏWFd( ê‘)êšð‡JÂŬ®ÅèäÓŠ’rvºzQœJâ³;Ü¢ø/[’ô™"ŽÈü0K
,a£†ˆ·Ç§Ržc¹Í?‰ÈðüýâÏ#2ÐU!»ãŠ2´ïDd.ª‘Aeh¢ˆŒ\EªZ}žïªˆŒdœ¿¨¡<G[q*у§ÎÉÚÒ÷ÐU„ÐX.eù¼q-Ʋ÷îÑaÐÀÊ5‰›Òïd2 y =X~'¨CYUrzµ”¡}3¯_P™|téŠò±‹ÔÉjAµºº«“f/3Tq]Æ|=ź:^é¨B¥°z´¤xHoõòlKÅT½ÚåY¤è7ŠîXó.—˜ô;õpÊoäÔ)×Ã]þØwêᤲ kËß®‡ûAÅõpJª¿W‡¢Ö?\êá$N•-âú~=œ êøŽå·ëáÄ玲q¿]§zJÀ¯Ôà v¬4¤Z~¯Nì‹Émë J¶ŸWÖ#÷k9‘Е0'RζԒÙZkʉT[û»¹÷§f@ -'Hü¼÷ãT›}ýh©#‘í…µÇp?¿PÉu‘É ¯.ÑPq|@ì2ß™w—LƳåË~‘ñlùR™Ñ"”ö<µ~²ÏÅG¼¨ÂO—!t¦x¬Œ”“]†Öe¨`#z_ç/J2Úû¹nùÈÔ#C?¿R™öhÓbªýÈ ,sš–\šõå‘Àª§¡ £Ò¢ÓmÎË*>S>ØIÕ¡>U¤’úï&ˆðÆ,w°ð·*R{úw
E¤+R{ú¾–J©ß¯T¤¾~ýNE*êç7*RQ½ØÏ+RQ/¿Q‘ŠúÑv´È%–ÊëÃDþÐÔ«“Œl.nö…ËðéÇËPT -'-Ç~»çó+fôüF)œä¼üz)Ü÷ã–BŠ)ûîWø•?(…ãŸA„‹áþ%¥pQ…A)œt|L£ÖQ2ù¢€~²RáÓT6WUˉðB{,åVq‹´&z¡®üš"ŠÈ¨3ù“í®´a.¾vsWÞѸ…£t:/ˆr)•w†¢^Ü,®«{•=G¬ŽÑQ õp^¿èÖ8§<nð—±ê4·hõÞÓ†á!“
ãÝl3VËÄ={HþlóŽéàkÃÓÏ™m<‘§›ÅTÒ=H¥’žº„ ±9ª#ÓBˆ2qÖbIU!/‰«Qz‘¯;<„j|ö»…Õ -?øÌêŸÚMÝZ®ÂÎ×yR*vzdÙfR©ÂÎTUzr@?€æ\APq-VȱãEáÄÅn¾§iùt3¡¨LoU*v#Ý" ÂûøÂK¹ -;Ú`ø¢¯rÅn/JUgKå -»u³)Ô\M‡r@GÊ÷ñ=<ÉÍÜ¿ädÉk\yÃïr@„vxVaÁr£ÆŸ8>il–jÇF-}¯eM=úl5¶§:Ë´„!zô’bÙÃB¬P•bÇRn…¬cÅŽE°GT3¯§´G=CU5‘¿ÇêKJ¼}1¤Ô’SÕò<Xïõ7o’“ºvDâL
Ñ%¥›ä®ŠÂ½¤5§HªTCâ3!¯ÈëS»DN1¯O;?©\"';>©{ßÔ.Ñ:>õ»4]ížÑYj?¸?NûzÉä/"’MwÕzr¤÷;Õtß‹Ã\[M'åïâü½j:çÃü°šN*&(^/?¯¦“ª¥ûnå£|5T,^:Óþ'Õt²pkVòü±UÓIu¥rBÈ7ªé¾©‘¯¬¦“Ú§9éÊ_«¦“ª¥ãûû¿SM'UK§1·çŠj:©Xûñöß«¦“š]éýÕj:)㆟;ú;ÕtRµt2§Íÿ šî¥©AÞRún5”qzcúíj:©ù“Ȇúa5¸+Õ;…¿UM'g[þn5vŠý¤šNÔ•xOü—ªé¾E±««ék¬~šNº¶ú·«é¤: -2UÏrH‰PÒ* -4Ü.'ܘúJˆb€ÔU×.+¡$H!+aè¤pí²ŒÈDZLèÝ‘ÅÈ#òƒ•‹Í•#s§Û²”.ºûñ5w¼s®4šäß¹æNöv¹’¦Z%×ÜÉUri+¤Ó” ¡œŸ|¾èîgs•ël´Ü2£¥ÒtÍjDæÇ×Üq6ŒòEw?¾æŽ}S¹èNÛæѦôç\yïIåIÔ^gQúµ¥Mélr»–†µiåOÙ]tAjî¡¢2:ä<+Fà5ÒiÉh¾Q¯0”OâÐ\_PÒ¯H"CÔ‘
ý 9YÛ
[ -˜J%\s6t¥š?¦9 -:Ӗќ،e߯T>þ|+Ý(¨p87ûûÑt·«T/¼Ì®Æo¬@ÜËE%»d¥°z-;îLSaÜâÂÚÆê²°¶±ú½SQg¿r‘1æ1ÀV‹0ãë.YR6¥H©zß«RµýrKUâ]fP+zâr9Ô£ÝüW*SN'_oI\vU>üÖ
†ð &¿E¬yí?^uQµÜîºxíÇæÛ‹RVçýüÂ)l??½ší帥N8¼.WõQC!ÃU;¼6‡Ä2li(dÐÿñ
wÇúJ¹;î¾±%’+¾{oõu7Ü)U>þ`»áîWnÊS'ÒvSÞOë‰N7åý|*Üp'¬KÒRòî”î{EwÜ]ÃÖSÍQõÓÏk_¿ÎfŽœ÷ª¹°:S7sn´:ìÝtß+¬W>ú?Bõ…ÉrèëιÂý|Cn^œúù•zÎ -¡ÍSíG¾VTÄt£v̾.ïšúv©"&þ®(΋e²ªL„†¸ÖñÞ7eLZŠ˜,Ñ®Øåi1-eLÂAªÄNÏ]æE¶Œ)dÕT¡®è¶ŸVeȪeUj)b²DWbãû»~åÓUELrDèîDM{aøÄÕðþàT~‘a(qXâS‡½â7j\SnùSÅÿrítW]÷ˆI)ou~ïhªÞ}û¥×ŽìÑT×Û0ýÝU×=ªÜ”çùf+o}žÒ04T=«×¸Jš«ž•j\¹šˆ2#
ïhú¡Š·|´™ž“©¤§ØNFÅÆ)}çh4£ë
Ÿr5\Ý—}zÍ)KLŸfíòbÇÜ'AÞý]TPwcÚZ?T%¼‡-”zéÈÔÃÙä‹ð¶‡)”É¢2<Â.WûGŒLÝö&W„÷*Æ¢Ïn¼²c%r†çGY –Bß=‘»‡Ívzªä:¸æ§x@…¥i;c>ß#èU9Ú¬w/) 7&D`ñs‚2¼ž¸öOÞR¤&”6˜|÷ésV\÷® -2» -‰´ÊÏ(¦ZË£}ÂËRLõ>«(Vö½ÊtvQ.,erûÿ³÷æÑmœ÷¹0ÿù¾{îwªs{}¾Ü´¶€03 -TSôõ›z©›4 -z}ý’¥I&n½¹õãKCÎûŒúúM½jçOG_¿©*‹RÞÎ\ßÇg¤Î¶¯_©iéêgíÎP2‡¾~ãnÃ’±]ýÆÔìšqzJ‰Ù×oÚ¼×´ôõ›º«Ÿ9’çØ×oê€kKFêœúú%ò·’Åqu®fÝ×oêÈlúúMq¯]<»<Mýø–L½•”ûñMÓN.å~|sêëgn%éí3ÓlŽ }ý¦È{˜6ÚöÄLûúMäiŃtôõ›ì¾{¢'qvù[)ÈyÓ8Ým8]_¿©ýÍc£fß×oìÙ¿Zœm?¾™iLÞ/
·ÙÕoîýøRIbš®zÃÄX™µâŸ‘:·¾~cÛºúñŒ¡¹÷õ3S¥¦ê+:ç¾~SËœIÆØŒûúMÝÕoÎU›ô¾~s´õ¥Ø×/…¼×4ôõ›º«ßŒûñÍ*wÜl9±¯ßì“á-]ý,eN}ý&š’]ý&«r6Ó¾~S‡w{ŠÍº¯ßÔNãlJ³îë—äºXºúM].õ¾~³·[Ž=c3Ïyšd]9‡¾~‰‰+YW¿YGŽëë7到t -×/ÛS´¼fÏH{{¼¸åâó´ÙÜZ‘çVOœCÆä—>º¯¦qí¦c;.еْö“l;\*/ÙT^S•ìd±“A·ÕO¯ËrÉ;é±²ŒÆü#ÛÅÝûê6HM-ÅAÙŠSmâ¹ãÞã4“´ÊHõ¶-½°b+W«mb9‰ÞMÁº:¹D:qœ÷·Ÿ+Ù/Œ»}È¡mßbIšKØ[-‡F¦µdçaÃ*yKÛ"¹b_ðDk ¹å ²³aÕÖ-Ç}åÅU•_<þhpxv{åžòå‡ÈikÚ œÛÝp`Sh•÷(ÙÎîfc³¼}f~iáÙÕ4•qï¡òGk¼-ì¨6=qžŽäMÕ{ö4VînÑw䀷Ÿ+¢I»Kù²~Ãʽ-låTRÜšO£[ùL\¼²(`¼+Íg¶crFV7‘«—°¬_2á„/ë—²F§ØþòÅ–"㋃•eµkÈfC%…Kå¶`~(.]8ýDå±³ÍkKŠ7¬.`;Jwî`é’-¥n9s¤¸”ü`}¡åG¤-ëÉƶ,Kü¨ló¾úÆÂæß«¶þ½eRø´qb¶)ãüÙR¥ÆwÄü®0ñË‹äRåPÑ1óGË,ÛQ.¬+¡ßëúhåÖšeôDihUMýXÆ·}ôln{G!ÿ•£J©Bß±Ìbƒ•Êòi¸ÕŽ"þKÇVm¡ÛÙQBƒÃZJ…¶±úfíÛ_ª_«½ÁÂâÚ]g—“ŸÖ-e?-+Xµî¸ñG늌¿RR ));·K®\º¶€ŒŽ’Ý’u½8_wËñÁ0Á~¤›|È‹ù`O²½±qã©o±Ä²ÅÒbñâc…õ¶¬ÚP¿bë¦ÕçÓ»nsYÁ¾]^6TèÛ»¿Ì¼ð‡—K=v8ØX°¿º¬ íøYãÐ÷,M\°²ŠÐz:¦÷ñST±/\JäRYűm+õwçêËôwmûéÚ²¬²àH£þ®ìÔJº‰•|ûÊé÷Ñ|óeçjJø¿nlÛ©oûpAƒ9Úö•Yöæð£Çg?`glß -ó®<j9–Ã{¼[è“æQ¦°só¹¢SK6m?v²¦¢:ìÝ•˜HLgÎÓ8à·ØžÄÍËå¶ð c³ÃXî/«_Áöv¹ÿÑý+õwGΘ¿·\ÿ½ÝOl¿7Û¶ÔVœóÛ´³î@`‘\ytYùú°~ŒÅ³é÷~ë…Uü^+Æ:ýcæMsZ›8oO1:sŽ›7×Üv>¿rÏæÚªÍçZh‘‚U¡Í•%EuçÍñm‡ìÀÉ´¶†•¨-0}|dú×£ál!¿ª›],)>ë+*>ãÛî_.}¢µ¤$¿è¢>‘Ù’‚3{+ù¸¢€¥9—V(§×–’'Ç:Ò5²qá³›N)¡"¦ëhèM³DÐIˆZBÅ“Ø”B%I®>ýAu>}m¦y%M‡Z½„Ï!K·ÈGÍï–êßÕ—Ò1]MÆÆêÝ¡-‡Ïn:>fV))Yy´š^ˆêRël¸¹yÓɧ¶Ñ¹ü½çÙ£…úMô»RCžÕ¬ÖÏ„\Æ~…¬äv6“5Åƶé\J÷†Ì¥‰ÉšÏ|äXÈ”º,å¡ÄÞƒn]ß –5´^_ü¸nçgä„oeqBV²ïhÕ‚%Çå¦ -òë-…V™Ã6ñØÆ]–
„,-»Óê—ð¸¾T`Ö)$Qs‘~'’ïÖ´q•éßWVe‘Ú\v=¶ÒÜÀŽ‰hã ÇÂ7ò‡¬ª—ŒùBZ]"Ä·–ÑôVò`Z*¤ïŠÌïŠÍïÈuYº«™êƒ>ØÉ°ßgyŠùÚ‹öÌ>lH¬õe†º"¢ì¨´ó -é/-ÕmÐÛÃËŒ¥wÛý‚n¯)b¿Â*‰;K蚦”¼§ÊØF—o¬kâ×j‘\V ÕðRúóBëÕß»ˆý•å›×,_óè‰C'·œ^ܶùÜqM2ƒßÔD¯hÂ&±wgñœ·8f{õ%ºmqUýúu[6Õû=¼åôêê›ê651ËÜÚ²Íû—Ò¥ÇL3_Ýò„g€]_ýÀÖ,5/Ørg½ytg¿.KiüXwÄ·›ÙsèIßµ„¿Û¼oyˆzéö–l{,ÌÞé—öè©•ôW–鸳õEdJ©i€[F¶¼)Ÿÿ•eÌæ¯ïÏÙ# ÃïQ«mêì©Æ]¹o¥Åžº±>Híê‡ÉVí[VQ|ä1ÿºSMúàc•+·Ø.º[GiØ¡ -;â«bW¨Ðø%2S÷/-¢Vy2ƒ®<p‘þ´8aˆ$W·0W·[Ò:Šc\=»Vó™©š ©|«“I§«}…–îÖ}I'¶¯~Œ{úÉìµ?i\êÉCåtùÂã-©{ˆz««¬³ÒÚV:[VZ¿«)¤Sfõ2ÝŒyj}qEÕcçKÈÄ,²L\ÒÚ³ç6Ÿó5Ž f!ÙZÀF?·J¯¨¬bÙþB6±›Š»uø¦lYÊM›Ü饄¹¥“Ú|çÛ-–r›§Õ—Ú¸“:iv,I8²»6,ZSRZêYS²ºÔS¼³í܉–m-gNiò,]ôè¢âMáÒÒú¦ãçƒ-'NÔxªµâü±¶'N4µzÖyŠ7íÚ¯YYqâØùã'<,ÚjåáÕ¦f™¾³ú<bõ¹±2kþ抓k•³!qçú#'Kön°L?\F]¨kö.=ýxˆè½ÂcE2}¼î÷.-îòæ‡..¥÷rÂm¼I=¿lÀ/+N´ln«,¬Ù3ÎÁ¬Ek×)ëÉ•{6ŸØY^|ñÔcÅ¡Mûª+öwï*/n-9oX,©ÃuLxƒÅ-ŸÄ‹O”V«ß[ðØÖÞeÅÝÔ›_AŽEªXSì]ZP^N¿òîðm¥Ç·•þ`£wÙ¦åÇ©|y—4‹ä†8Ò¼Æ:%§¦É3W 3×4ú=•˜·fàkMxZÉ“úZ·Ø£§6?ØVšxØë3½²~‰EXþ2¹,~êCÖ¿Mo12e-!·ØB~³¼ø8ÑÀÊÎRö‘Lò^òq{ybÛºûe{ÝK3&¦Ö°¸Áš5äÞF.íömÅ\/lnh–ÈÇúR.ø³jûþ妇•œ~ñ1‘ͧúÃpoMBÑ6þŠ>»/’“=o&>mÌ0 O›µd›¶Ìüù5ÅŠÝl‹Ukv¬]£Ë'ê*ÂÇ×{
5ÑPj<Më¸ãr‘Ì]—çE}xí=²Â¢
,Ãëè6.t‰v´¾XöGJJÖ„È»ý¥ú“ê衲
kÃeäZ=B£zô÷ÇW°Mè—öìÎe\/ÐP?ò±ÁŒg÷—ï•Z”A`cÍC_nùÁ!ïòFr,ÜÃZÛ,ëÇrö‰U³c‰—ñr¬µ¡Èr¿ÓKë¡’R¥´<Ÿ¼;Rj¼;žP4ÇtgXëã+&ìÍÊÖÝÁ%]½{™¯6x¸VæR€è=ãÅÕ%UJ!õN\¥?É©†˜:dE“¬Y7ÙÃAŸþ—’«O -ºíg¬]4U›$›ÂèéŽY½þÿ’ò=KŽ>R »É㽤¬lûì}¤É܃Ôf•²ƒ°tζijk.'¡|¹å$0·µ~V'NÝ›³)+õ7Ù)0l¼×m2NÂ’q>Òesô•¯oMĤn¶Œƒë¶·¦à+×c “yËõÌg~™ƒ;ÙPšÂÝ®çl’
«Ÿâhœ° Öu.µ}à±C7Á:fÍå0X†qKY|î38ŒúuÅ3Š\˜xW’…ñ’¹Œij!,·ýŒ¥z&¨-qÙt‡11öÀšÅSºô–’¤‡‘⩤KûR¶‹>%´¹Ðì5²H¦Í–ßT67è¿|¼´0IW}œiÌqŒ’?·1V³¢(±IÇØ”›8T^2×18?·1VÒT0ÉKy5…K§ Ö
°ƒ;Æ.šËÕ`¦d c,ÕM(5¾éo×äÐãl©àKyîK¾‡Š’ŸJº¬jú´WƒÌiïø©öFY_X7·«AUíÔ§’=_¦:ŒÐ²àÌî û°ª¦”ªñ9Ü¡;˦ه–
Å¥–'rhEkQýc–M=$ÏípôTa¡ñDžr/¦Ø‡¥“ªqû ßûã÷☴zÙœFıeë‹æG#ð“Þâ“îÃÄÙòØÆðFëÇжrëÇõ›ôðÕ•¥ùLQ&º©±}]³Ì{lEÅÆÂƆŠ¶#JÍ–ƒU,â‚[V–'O˜k‹›¯õˆ[#0|ƒ²‡-®ó-ær‹CnÛ‰&ÝÒpvYYcèøR¶æÖ-ü4Œ›-RùòqùÆz_MÖ%1À*T°0gî0ÃœõU7³g}å^<Áìq¶ºÑí0ôÁtÊ\öZwt\Üò윙ºåŠÎÙ'-‹ëÙ%…LšÂç±4%…LšÂFrº’B&M IÔhMCRHád)!‹ä4&…LšB}»iK -™4%„KÚ’B -'K !Ç’¾¤ISB¨E1mI!“¦„»ÒL -¡ËÕ•c0Šý|ÎÒo¤Ú&ýn;±„ŸEÓÉÌìlž¢f‰}žÚSyÄ°õñN/
¡¦A²f¥eJBKtGJ©¯Xwö\¿Ô4+.c©©,ƒ&À6˜®É½ÂÜÊ`ñ¸zf€•á’ ndöƒ
+Ø,_d”Ø°ŽF¾uNÞP¾”ùä¹!Ì3#ؽ?6@ƒ,•?ç8_º»rý#á„Ìc/ç!öìÚª»LÉÜUÌæ.úWt³ã =`BÙiÙvÂ×b¤E^ìÚ°èÑE2õV6V6·z*É2ùf׉ֶôV6n>qêLSÍ‘§O´,*õðÿJÈôuõZOiÙOÙÊ•äÃJúmÍÑEùìw=¥žš¦E%žM•‹äÆâM-gŽµž9ßt¤åiÏ:úUCmM}¸Â³ÎÃÿA#ùzòÉ.•4’ß&?* >ÒÆROñæóçÏÑŸì -îñT>uá|K«‡ÿÝg.ž9zî¼gË®]Óÿ¾õ÷Èá7ÒÝ#ÿkx’¾9±¨mQ‰~p仧ɇ*òæqòÕ“žÒOgÿÁÏqúû;ù™ ž9wbå$í<r±•œ¥üúï•EÅ'Þwæ؉ÊfOÃÖEû=%E¥%¥ËW—^¹ªduéš’UüOMøv횢ÕkK×®^±jåª5¥¥+<ËV¬ðô¬YSâY»b5Ýöé¹oþ²±Eóÿ=Ëéå]ÍN -òù%2رUi=²Ž\é’’’5Ë5„ÿŸ8 -= -.&;kEÞþfaÄ$ד¼(¥ÊŠœS – - -B -=Ü2i·œ³—–ÜÁ<M6^# - -jLjyU]׺üCªt-"vÉ£Qù•ŽÀŸ5ŠA„TÙŠ„e’uQÌíÆÜéboµ *Ї» -19rC._K" -“F“3¤Æ)7†¤ -›>¯?. -JÏ™KûŸfX&m—^9IõÍ¡’²’ -|Ça| -aÆ -Z•ÇŠ -uv£ë.° 0ê]S1©í™ì?à|¬TEÐêÿ{’ -훓‡VŒ -í•ó>«ó¸5ã -cJæ\L¶ì~ea¿°í"—”4–2ìÒÇæ -ÌÕÈß,æ×z¡Gà$p”Vûi·]Ò€¶“OAÑ“”˜‚ --2ÉÄ$˜„f+F-ì6Gc -ûd̀ɽ ~`§Ð‘“V²ÊH™æ2rt1YµX/í’+&0W©±ŠÑ*:wEîK -RiåùqD€¹fŠ$Šq\<ä0-ãy•õ:4½Õ·b4§&‘šÝGvN‘¯ˆ˜üA›üẌ¨09‘tQÏr$5”Ý -äæ -ŠqHJ`æ ž;3$RåõÆu¼ªæ
wH#]ëDFRU@}Ù£Qy+æç’'‰Z€œŒ<`rHõõq__+[&dÓ¬ÇL
³—¢B‡
Ä$˜]ÔŒµs[ð÷ã–¢© -½²2æ0NcÁãêQ콈ÝÃÓH5/»\ëþy‡ø»ç™¤¼ªÓ|OÞ<¸*ò÷ü
yÕ¿±üþÌþ•ù¯ŒÿçäwøFÆýóß\Ñ·`ݲ¹ë¿²þ÷¦üWæž,Ä®fó®ÐJ€ƒ]ò|Ð94&Ð*~¸Nh¯´>œ;=¡'+¸e’ŠÉ²oÀÜ$‘”íîOò¼qYz›è®g춆É[=è
¦4`2"jò?>!>³5ûÊ•'™HÙkŒz0õ$G$w&xðƒ¶õ¡b9˜óìRÜßjñýöYzLÊ{}â|kÐ!4&_>å‹Ue}À$'K¬`ÉÝAOcÀ$iAŸY(<&¥ÆŠ?·C¸¦‰ï@R‚Éxÿ2SvK0«iLþ¢]úÜ!/YÆveyÀ¤•ÔÙriå¿GEÀ€ELºúj`™ÁöJ÷KG=o_‰x@n8Žd•1E%8{òr壚üã'¥wgqQ ÉØWãÑx“ˆI€A“ŠKU¸¹Aç0¢¸£Uîoó½ûÍçµ]À€E¢'ouKГàìÈGΰ&û‚øü¡#˜SùfÁX•+Ž‹ -'#OÌù`ûV/¼Þ`Þ탞gC09‘¾rZì«v嘘T™ždÆI÷‹'‹L!8¼:¦¸x‘I'A§±£Òõå“ÞL?Àë
ê|F"CâˆIpÆ䓯vÊ_<â‹(îÎ -˜ä4=Øšâ¹ú‡øZÃöQ -‚Ï.Å«rÿ¤Ý÷»çáõ
²‘ðæeT¡g@3ûæ§OIŸØ'ä@¹ò¤4+Àt×ÐJAÈì´rfœ/6‰í˜ZØ}©Òõ§{=wû¤wPŽË›ÝГ`J4Ë•§Y|ÎLŽ™3YÏnÞciÝ -ϳ&Œ¿}V†¤ \‘nõ -%8žƒ‰€Iß•4ûÆ Qn€ÒA+„+ ›¥`7t1Yž§*.ÞªA•Í–í•î¿8îyÀ„¼Þ ¯÷1ý`·€3‡DL«Ôjýåã¾h8Ç&Ó£ÊzvkÜ8‰àIÀÈÄ!C‚¦h…¡'A0A^/îûïó!1ä¼Yº¡Âå
RbòW—üŸ9èÍù€I+YE·¦¸»«=qôX8¸}2äîq„‰S§Æj}¨Îs«WBF)9àuK…ɶIRO³olŸ¯xnìÔ°«e÷{L!8|M¡)>•®m¢ ˜$’òå3^¢'ƒ&Œ ¯jn·˜í¥)&¿Ù$]Ý&8$ûf{ªôXLèÎîðâZ4XÁ$ÔXƾ×]áõ ïöÁ8éhòìòæ+§ÅÞ§dߌ#‹œtwWºâ(cÆÉî ¨†” ÁÉÈs>¶Ïso@|€&ŒŽçý&*ìV5 -¤“šüJ‡ôùFoDqPÀä8ÔzÐcH€
rGô"§#yp|ý ß»Ï"ÑÛé$àB(G³\ùŸ”>º‡V˜ŒØ=)ÙB-¤×Œ†„8œÝ€ééÞþ°Šæ 8i9ÊJ×åîW"â»Ï¡Â¹£IôähzÒYä—ûfTþN³øü¡½ÒþIɶÉ0äî«ñ°YQˆ£L7Òºƒ.saû(ÁL&¹MÚ+ÜŸkôÜ¿,ÁëípÞéEUs‘\ë!Õ?¬É_=ãëv;3`21òJAè‰0˜ -½¾=vƒ` -Œ°Š”ßnaå(í–4 -|‹U5c -“¯uÉ_>î#ò©3w‚L6xµú -Œ±^M¡öÉ(Œ“ΆVÎË-ÖX'wÜ> ˜vòÄœ?Þ-Üí—PŽÒQ‰BOfù5e“ïß!\båÊÁTf6]O2!Ìn'ÃuÐB®~Ô0ÁùdGPø»³^˜(ÅÛ=ðwg:iöê¿¡Ê_;ëë¯qÑ€I»çŠ¬ ?K4çBñr=a§šì¯;ª±ŽöÑ° "Pç‡<×»Ÿ6aô½ûœô&$¥3x¯_´]/SL¾Ú)ÿå1o,Ì*LÚ=Wd¹OSUtg7*9Ü>©…]ˆœÁù&k¸øðÜ¿,!1Ç!|ó2-v«&p"yö͈&ÿ×SÒ'÷y‰’DÀäÌ&´»¿ÖƒÌn n6X¬õj¨a‚EòØúçó(Gé’«ŒÊ$WøDL~¿UüP§½Òþ™!»¨öIevëñ“€³¡¡†9.µ°»£ÒõüaPCF§†PBOfy¹òaUþÆ9ß•BGæ”™Oe,rR¥d1Ž2æ3M“1@FE7Œ“ ¸P$’²½ÒýÒ/“ðzç<É%~½z2ƒÈ&Éë—{£˜œõ<fŒCL:¼NTDqi!Íı{p‚ saNï½^ï\'[2¼1@Ó‡m×Qàu&&G5ù——¤Ïòv….LΖD60·&í±ˆL§ƒÛ'úÉÁ#™‡;*]¬söˆ(G™ó|!”@ž}s3*ÿg›ôÇõ¬\9¢¼æ0ƒõ±ƒZù#qdâ8Ü:«ñªa¡
»AÐIù¥DQ:·º¥kГ6ŠI09¢Éÿr^|f+ʕω\0°JAB=q½ìdØÓ‡æ hy9ÊÞj÷ž¦^o”£ÌU¾uEzpU¼Û‹J;Å$˜üÊ)±»Š®ãÐ’{Žä9ZU -‚žt0¸q²'èVî^'AÐ&ÒÄœ -÷G<·û¤wàõÎ]>`U͇ì–UÎ$¯0ùëùϽ….â &ç:qzR—Г¢æ$ÚMÞ×ûÎù¨×›Ù²l?à|ðÍËÒ°†Ê…U’ŒDLþäIé#{XÀ$²oÒ1eñnz‘`·–l†^Ãœ&t»‰‚ö’z½ƒîî_G$Ræ6GcГ(&Ù©&þ_›Åç¶#`2S/CTD•‚œ
:
Q=©"»
í&¹Û+ÝŸ:èyã2
´ƒ¤Ì=òÊÛ=~èÉ“7TʯžñõÕ¸:‚ëJ'{ªM´ú -Ïm®G}ðzç*ß¼,Ý@å¼*I#`ògOËŸØë!J“i'ÍÄ =A´Åq:xÑQÕÈÄÁ‚Bêõ®p¿tÔó€i$æä$QÕ|Å$;±DL~ï¢ï…˜œ¯iªŸöX¸ž°WÏ -ÀqàÆÉ ¼Ç"‚¹ÁˆB_¿ÝâûÊQf9ß 9‡›(rå¿h—>{ÐÛ¥ `2#¨±˜mJ¦'9éL˜×]U\1'A0·Ès>¸Ë=Ú#ÃëÕ$×Îá)9<`rD“Ð&ÿq½&3‡šÂŒQaﱈÌn‡‚éÉ…nôÄÁ\$‘”_:á}Àe‰Ýºœ5oÆœ«'ùkò7›¤«Û}“qìe•aY=éDðvHª9 = ‚¹GÞ„ñ‡OyQŽ2«y·×~]g—˜¼¡R=ùòI_w˜´ûžMš×"z$Ž2æNÏèתVõ²QöLÓN-Lk½Èš0Âë½|cÀ‰ÆI0©Ê¯tHŸ;äð€I»o(p{˜s³wʘ;Z¹^Ãœ…Ñâ&Á\fGPø›3Þ·¯Š¿×;;ùæe‰ç5Û®ñHI2Žjòž”>ºÇs©Ò˜ÌHÔz4VÆbҙГáÿ[
½è‰‚¹ÎÎ »¿Öý‹NñÝg‘ë•$WmÔ1!”ü0G£òwšÅçw `2s
ÓzMZ5NÂÙíLðë®…ÖB0N‚`î“—£üÄ>áˬ%$eòNä=ÉË•ßP寞ñõ°€IÛop2öÓ`¹Å/ž¢Š™8N¿èyyZˆ'm . -“¯vÊ~Ä×…€É&·DÅÂzsžÞ8
zÃnŲ‹¸[AÐ äå(ŸÛ!¼¦Q¯7$e6ñª'õªævK¾ùR’LLŽFåŸ<%}¬V˜DÀd&S32q´Z/0N:¦EZ ÝU‚ -g7:†<×û¥#Þ·ž×;ûH– -“D$ÿåQ¯Æ -à©”Œ1{Ô%Vv2 -=é<ðEÄtY!ô¢Á":•íî/ð¼ó¬ü”£Ì*¾1 çLJ09¢É¿h—>uÀƒì›l!ÏÄ¡mõ—©-ìT6€ÐËUÑÐÚÀÝîa ‚ -$îžj÷ž¦^o$ædÉʼnæBJ3`ò{¥× 4ûÆî›L‘\óǪhåÉ8ʘ;d$ô×¢L:—¼åG„Û}¾·áõÎ*ÞÌþªæ<`rX•ÿ¥Izf«»åʳTL*îKÊÃqèIG‚—‡Òj–ŒÁ8 ‚Ž'‘”û¸‰9YÄWÅ;½Ùíï&b’»ì_>鋱råðqg5VƼ3L#'‘‰ãLðë
/îGƒEt<yîà -Òñ -rt=YåÒÂnØ'AL½ £å(3–®Š÷Äëªßv19•yÉÿé(Wž³deÌ…(ËÄqÒiHÔ0¹x‚?îqS$OÌyÿNa(FûzCRf&ï_¶³ -%/WNÄä¾Oúp -FÙ? AÌ.Fúúƒ'}ï>‹ÄœÌ#Óù·{l¡ä“äÍË'}Ñ0-WÎ4`îQ3©Pg7Œ“N_A<]ýd -Y±ºÿãIs2‡äB̽ª9Ͼ¹•¿wQúpÐ^iÿxm¡iŽŽ²žÝ¼!à pûdÈÝ[ƒÊ` Îi9ÊJ÷G„[½Ò;HÌÉ’«p36'=ÉË•hò7Ή˜t6Í‹Õž8ÊN:z™ J/œÝ Î7y®÷WXF*fìVS áÞÙW5'ÿpX•¯uÉ}Ò
#`¤zR/; 1é0p=
.î«ñØ>AÌyv)ä‰ãþy§¹Þö“Upº×/ÎNOò€ÉŸ·ËŸ9è!—µ&Î0ï±èÖ!ã¤ÃÀ#'{ÈŠRqÁ8 ‚à›(?¹_¸7 ¢e&ðþå‡Pò€ÉQMþÑû¤?ÙͲoPµ4¼œ¼Ç"ì“Ž‚^v’É#rÁb„Y)¿öMÌž´äŒÎ$„’LÞPåoŸßN[rÛ>¢@ÛÉ%_FEÇA“µ™´ ‚@òÄ!"äê6á5M„×Ûv>¸"Ýî‘®¥¦'y…ÉÁˆô7§¼=U4`Òöáf5v_“71¦'áìvx
óí„¥¡a7‚Hšë]áþ\£ça"³]V9“o]¡!”wûR*AÉ&_é?ßè `Ëst¢Ç¢Ó`¢ÕœÝ Ú@"H¢a÷¿·Âëm?ß`VÇÉM”<`’ˆÉ?)}¬ÁÓ¤—ÐÊþZOgÈ;Nc -ªââe'óB%Ùƒ´n3‰Üë}e›ðJMmâ3ÒÚä?ª:‚¨0 ¦Äh˜eâT-æ"ÃN‰, ô†ÝA7j˜ƒ ˜iä‰ÞÏn~Ñ—·
|ëŠDNûw[¥î*f™DÌ$˜™–ðjõ8zv; yFÃnîé†}Á!ï•óþÂۤѨüæeûõ•ÓÈ‹É¿Ñ/ÿÝŸB;EpòáÑ]%DC‚Uc -¯coÿ8A¼TéúâßDË$ÿH$ͽñÝúÊ|ëi4*ÒÆ‹ì*IùÙƒÞK°R‚M«T4DËNò&΀ÀûijÕ^-äêFÙI3€Aáó^îW%ÒåúX=ÉM”·{$èÉ…“ÌåMÎ<¿(ÜJù«Kþ5xÚ+í6`&ÐLÄèÿ*2‰ãè=«Ö½”½í£A'³½Âý™ƒ*&™_u¢˜äJf$*¿‰øÉ'Ñð¯÷‹C–1¬Ê?ZþÓ¬” '«:(P…1é$p[tÌèÖ
= ‚ $š„(“_]’n¨òdbÒôzßë‡ËÛ?¬%®O÷þE»ôÑ=TRâ!âpê=Ãè±è8håôrG‚îþíãAÇ’wTüÈQ&ÓŠI.cnuÛ/®H¢áGcc.5kòŸ”>°S€¤t8»«MqZΔ$ô¤£Àóq¡·Á“ ÚC.&_ØéùÉ“Òˆ6½˜äöI¢´‹wz“E hò´ŠÏï:‚xš8‘|
*+;GE'ÁZ,¨mA´ƒdæ麉!jdT£Uh¦“¦¤DïE[x@šÝJë8EuII.((N£Þ_¶YâF¶/à0=Y¿;Oå´h³‚àÂ’‹ÉZÏ÷.J7£)Y&z…(má[cC(’’\Äï^ôõV»!)HV%f±Vþ{qèI§éÉ–µ †¼Ý(> ‚àÂ’‹I¢=¾Ù$ÎPLrõ2¤úïÃåmou¯ju|ÿs“.)mcàB²·Fˆò2æðt;zñÉík¬;’¶4‚ èòöÜDuíAc&'Ô-OÑDy»Ç,ï…ç½~1¹žävã¨.)É%þÿÙ{óè6®óîŸÿ¼üÎy缧¿æM_[ –™´Û’âX¶µÀ’\%JdbDZ-ï²}I -m•¶ ¯øÉË#8‰SxÁ‹™7WØU~&ùI - -;ÃüäEKÞÙf¢[ºÒšÔöWr¹ÉQÊ¿yÈŽnŒ¦G6/æs ”¦¸f‹¬Xè - -›gÏ'»¥+º]¾–a>Û |©ÎV_‚Švæ‡+eJ™oÁ}2èµvVÙá“ -ž™$_~ð4mÏ]h25
ô^Ì"WÛ$QcŒÿs‡ˆR>#µ”[ÉÈǘ…'ÿòFe§¹s9¦ß¹ñ–×d÷‹ê-n°%œàÆ} -[??ye…. -Qf…á°"vÉ[»èD)Ï7*¯= -Æ€ -z’¾cB&3s ¿rQUFQˆÒxFšåÜôɾؽÕ’L¯PÊܧ+Ûh¢’nÿ‹À'3‹øZLjyôn.Çò7 -—É€·øÍmŽAÈd†.áW®bÉÛ`&XÕ œõɾX–r8äüîŽF½¹ ”¹ -„x™äs_.ç|ò…þ€Œ%o£!Æž›UƒâéeƒaR)Eßï…Ll–nðKð„^QTTôFmlùÛ]õn)Ç9 --DÙ-!EiѪAù3Œi“wUyïüÇ[¬Xø6ŽØind2‡"nSeS¹-è‹Ö–>Z -øÍd„I"!â[êxi¢² Ëß -NåÇpØ<>ÙËR?$¿²™vMþ´É%,U¶`©5‚“ÝÄ*µ· ?QʘLâå€4Ðd’˜äÅ ©&SóA®Îeô^4’«ìw}¡õ3ƒªòSJtcÔ ¿C-Ehyõ‰¥Ü+„z
"{QÄ*‘—ˆ7j‹¦¦¦ùªwȇ‚B -y³àÇpÔÒÉO -[%ƒr>âW±©ùß¼ÖºèîGŸ5Pz+Ý -Ìzkô2ˆ0ÿðéBWJò0l¯´52ŸÄþÉÜ ÍCEE3»'ö.µÒ4Þyj,÷ØRnmáêHׯ§i¤@/Èýu¤¤økígê*öLæ+tÉ[EïE¹ÚjZŸì‹¥¸˜R6•ÑF…9Ï’ÿêÖŠhIóJ‰ŽÚ:ºx=ÓUè¨r„½óB´+â<vù¢ç¯;ªlä"òî6jÜ6†àÍß -LeŸ&î“ÞODP‚Rhì©ûD¸Ì¢zŠñM´™I†|V¾M2¶„mC r6@&MGÐyMBïE#˜`UƒL¿!„× - _¾õˆCøcJa^‚r¶P -¾ÀM”žº¢·¸³ÊÚTFÏÎKÃ2 €8ÈýX_by~“õ݃ty2izÐ{Ñ8Ÿì–®¶IÂ/qàJÙÿæ!{¡5øf%(‹µ’æ(A)*¢J龕m¤ùÉæòh– @ŽÀe’¼ñ½½GBfÒdðÂ/c8•c£…’ÌçJy¶AùÚýö†BRJ.*ͬ’L%ƒ„†vç%š¥¼…h[šÊ&7I -eç>É–¼±Þ->ˆRjUåÉš¨ôF+7Á*3“ÉAȤI!p©Y¼w™’‰.z‚^ø%ÎæX¢JÙ¨|õ>[,|Oú¤¯X¬J!&£è¦–7¬:E³J¬}eÈM×è)i2 Ÿ4%¼%Ny¯TKÞÚpP•“G”W¶ØŽ”˜¿Î9—“¦8ŸD Ê\ VÏ\û#¿çVVpÒÒRÁÚÜÄ]> -Ö{QAas#ëˆ6‘~•³=¨X–ò»¥Î*¦”¢nÆÁWN[×ÿaG¼s>ŠnÞW©z?*µñÓ:¬;½ &« -åõö½¡ø2Ç€ªüàiG¸ŒnÏþ¸Ó•mÀSY›¿êåg„ŠŠ´ÞFªoòÜwK9µÊ VÀH.“ßä2YHµò@<t·[½
a¬³P/N?´Ø'ù¾¿*eÀ\J©í¸±9ˆü›Î€»o
x£›~ù¾JT`N “€Ã{/"Ei—š -:íÏ•rPUÞÜæ°Ú¦™šÕX Ê 7ê“HQæu¥Œ¿‚|Õ[õ2«ôãÀ -øþZj ²z•!´×` -õ%–¯Ýo?ÛPX-áÀLôä‹A,yâ“ÑÆ‹¢/±àÆ”’À•RøPGhCä'ÍoÔF¯fm]QØC_iU½è1p(% -™"<W[Řù¸јR²5fRJ^½¶‡.»…š|Ò\QwZ'BKVÒ½
|“ÍK‹~ -QêÎxa7^œe¼‘GÓ±ò›¬
y¨”ü_8ì³ò–‹Ø?YÐ'–´¸—¾e„ˬá2«ð -@&p™ì¨²ýt—„‰$/D9Ñ- w0“A«‰¾¸9WÊ·÷ÈäaEYy§”¼¡ê¾5‚zæˆZÉJf•·`/%Èkâer(D÷Lb"I‚Þ‹qM~qs“^Öà›<¬È#«Ñ“7“o¬˜¹E-ùdÅ'Z=¹b9ÿª–Ý¢¢šÈ[È %ÏäI™ôãH~*g”-y㬷ŽŒuÈh¼8Ó#‡ydµUç…Rò&)´3Ž‡žìÆJ7"ÂÔÚ µÌÒèn¤ÌýñÀT¸L¶TXÉ“y2 Ò‚ô^Ô4^œmȱQGYo=#‘ùןÛ
G´7ì$Vº<hv:6Tï'B¬-#-uŽÍ“ ?!˜<‡ÉÓø‡Ï`™¤ï½HüG¸ƒ™Œ+-h¼8ó¨c¨Ê›Û¹¬”üߊn›d=qh@&9âs’î[C>Úõ)+oÄ27ÈC4™üþ6Ç€ -™éCGNlÉèC'=ât½29×Àc{)¿ŸÛJ=ƒ³ñ–Vº;4“Üsש¥7•4 á2I^íÉÓ¸2 2f¤Å)^ÃÌÅX§<Â’÷lð×PHùÎ㎆K@ôsu*MÌü^['8è{ËK“/a_´Ó"Z.‚|‡Ý€·8™úÁQ -0óq©YîOÎ>ör?ûòÍŽFOqN)e¬[7]éÆîÞ¿[ûCÕ3ï¦6‹¹šQ ¸L’§îwž€LÝÐz/ -031Ñ-]iÅšÄðó+\)¿Å”Røc6K:…ˬ*kÕÍÝBŒÓ E|wEµÌ¦z©C¶W¢µ"0 Vj’<uyÒSÐ^ˆ’ö^ÄÁým—/¢¿@rÃOËRæHƒï–héòÿÁ¶Ér¹µ+Þ{Ái.ç½oò¯¯ -öG%Û&Mq‡nÞ¨-R=VÕkå9I””æãHIñŸÎv¡Q¡dqž‹Ae´ƒí¢:1Þ‰-”)ŽC¶õâäaå•-¶ú’loWk .4Ó&9ã#~u›˜dÈ=kÓRa…CSBž¨_»ßN^ØÉ\Y -z/Á0/¦>Uå7ä—6g/K9¹m²ä“¬t›=´j¢ª{J›ÈÓýôp“¢Éä -B) ˆL~å>Ûézç -Qê@'m¼xMÂz·øéçpÈùö~;17j!“ˆŒ‚+eëú?¤Ç»X]J(%È2šLB&Aþƒ%o½íñ‚i ~¹? _ -;¯…æ
x+x—hAä}ðÊ -`2Èî:Ñ{Q™ì¢KÞ—š°ämd”^mv‘ÏØIø$Bçˆf)+íÁX–V ôBõÑ=“]UÖÿÞO‹c™˜¾8{¥E¼™ƒ«ô2–¼u‡˜äõg_ÐûQÉa@D•Òãbáè‘ɵÂò³]2“Àı=Â’·>Œu Ç1øåñ6W_ÐAñI„‘¡e)±—è‚&“?…L³£õ^.cæ`0Œ'†øåm®^¿DæúwžX(Z:fŽh]J(%ȘD™þ À`h!ʺýO¸Œ™€Ë-I½ ÒJAD){‚¬øäëÈO"Œ¨RzD)y!áfò.“Ú27¶B€/y£÷¢.\o§>‰ç†žøé.Ú"ÇÏöOÂ'Æ_øn*•T¯¥YJ"ô4·—~ù×gC¬î&P8\k“¢Ì¢å±IFo†C´XPÍ»Ù>ÒBåÔ -¥É£úhi òùæS^”2 -ô^ÔT
ÒZ|2èì . Ó<Š™#²¼Ò©êµ½¨K ’‚×™1™¼TPñôTŽª ¥.\m“ð -@v!ýua´CFãE=ñË£ó{‚òñàÚüŽ@d'ŠÈx+ŠËRB)Á`{&¿÷¤c ˆô p!>9Æ© ¿áªéÊö½ìp7’“ˆìQÊPœR"K ¦…Èd£§ø›[ý±)Uø“ -ùüýóéyAŠ¼(E?SáãÊõZP‚0ÊHêK§|©Eê;.†åT9”N4PN2´ï'núßþù<vØñö>Ç;ûSàíýŽ_püx§ƒËsJ¼ù´ýGlùyÛ×´½Æо$|O€ü©/ÖY_¨±¾8Ĩ¿ôÛ»å!UÁ¡K -‡O"r&˜OÞxŽVW#–%ð!£©ì8ÓËÉÏΤÿTŠdÕ™;ä´g¢xÉL .ϳða·4Ü„g; -ªõ&HQ(D©c2 - -NãðB”XòNöÓv°ªA¢¯f^â—¯4¹ú‚ÎXÛnø$"âu:'º¥È‹Ø9 ¢`n¸¡e†!FÕ t¡ùIZÌ>‰Èà¯6¯Hã]2»Á„vÐ[ô£€§Ç¯7aA'³N·t¹EFåÛ” Ò•îá³?Z|2ŸD·X“¦±îô‹"ó% -í] |2c" -¿‚¹CÐ9¦>y¢aAQQÅ'Ùæ“£I%&¢`:z™\k“p(2
¢Uƒð`áWšh1ówvQŸªðI„ÑÁÆØ«Ö]” Yc› -+f>¨ºÎÕ++–=ÉR”Ÿ)b!Ú:&
¶Ø=Ñí$/Â(; ²jQ0~*g/ø©3ŽÆ‹?BäËùF'ñI·ÛÍW½á“ÂèI<»€pЀ©ô¢÷bú⓬9Ή†Ä'ëÔÁ'KNÞè´ßèvDP)»(˜ -/D)üöÌ/øA¿ëíx˜Phs¿|ìÈ‚Eëjkkc)J,y#ˆàšœtq™D; -¤(H -Ú.µ(¸™è’7v¶§]òî–®¶Â'åKagßÙñÈÊ%OmíJî“,E ŸDè±±Dî¾ÈËHNñ ] -/D ŸLZ5(,ôû©_¾D|²aþ¶M%Î{ª×Ö®-^»)J„þÁÒnǺAî€ƒÞ -ç=ÕK<,y#Ò
*“§_útKHN‚|½ž$HÝÌî7»2Ó‹ƒ‰J<çÙƹsñ‡9Hó]þ=ºBM‚í¶ÇCçx,Íul»ýÂam”ŸL’NÚxñRHâŠõÃØq•™Dñ½Ø‘áZ˜‰O[&#üj³ëLƒëŽUÄ'ïX³q¡»NqWi…ƒø)oÞÎ[´¢ ò'Xrò·/ÚÇ»äß…O‚ü -Q.^UA|’_òFŠ1m¼¼‹|^gwíª úŽ .5ÑÅå“û¨1¾»ÝU»Y¬oÊâ¯p1 -›§Do}–ò“Çv:z÷Kûè’;î¤%×l<´åž3{È?ÝaÜ‚;Ýq0qódÛ1vþæð‚òåÄ'o+©˜¿n³óžj^Ø\ë½H|rŲ'¡”ˆ)Áʱ²“¿{'» ¡Jߊ:è$s.yœR«D®ÌL~
òo{f:I £ÜðÉä™è–†CRvŽäÊŃò×¾˜ä’µÕäsÙ½Ußغ´g¿)J2TÎß¼/breÈy¶ÑõØ–u®U5|å÷æEë«]ëk¯ªàKÞÜ'q*1m|Ð ì$0ñ{)êœ÷=ÊÙCÔ*ó΀ÑÐÒ ;'¦«š³çs‡å©6é)ï2†B”I>4XÊkÒ‰¬l¡<¶Ã1tHùâç—SŸ\SM _ªK=?yF¡YJÎzóÊ“=
Ò4>é§-ÆÈçˮ֎äðF9ËVEݵ2z*'¶‹>‰àÁvN¶ÌïrD^„O33U)µ\%-.´w²Õ p1 -+É+%y÷4À*ó•ã“Ç·éùš×¶.ý|Åúø‰{êlŸ&Ú¶q-ù˳ÖÖ9µÿ4~gVIàž@¼ðû.ëÏì3pÉ›Œ(ò’ò¬˜ù´>ÉWÀo_[ýGnϼΠ-—{“æ“|ɛɹyÉ[(-xO9òMNŽ3d’¥ä+à<Wyz¬¸hÓ(@øŽVš¯Û/½ý¬òÂç>Uáõj‹†é™d‚R>Q}ï ¶L™#×—6€>¬OrU¸Ì–¼ñðOƒª'$fø«íR™·tQ\1óÙ³”‡·ÜC^gŽ§þÞÊ‹J%ù|ã[(O78_Øz'¹qV¸«–¬©Òº.ò%o¢—Ä' ðÉÂŒ J/÷õ‰<Lp²€2UÊ@´‹ÙùzÖ´1¦7•£8ΪùÓ;»—®!þéƒËj|-!9çd\G—®þÚC·÷ìË¡òæç§æ“ÃaeKÞÉÁ«éØ¡Fƒ7Ç!o=w²ms¾ìh«Þdø¥Q
•ožœ£CÜÛqKeÿÕS+ˆOÞµaã´>y×ʺ›/be!+;9Þåø°· -ìdMNÞèrˆ¿OÈMÈRr«ìiÎD{LámnNî¶÷ì—þói×á-÷¬^_®Éž9Éi•rǦ5¼ä‹ÀKI1“¨dž¨ -ìs´]ô–ðFÞW[ï뺅’ÿˆO¶Ýwg|Þ;ùáGW½ŸJvÕ›½w¤Ð^–â§û'É—¶+‰O®^ï[²†v]\zw
_òžÁ'Ñ(§ -¾½;ýê ³äÙ=´Ð7]òTµ[;¾ýÕíÙsD;6!³yjÅ[tr’³‡¤46Oj¶0€%ïäŸò¹ƒv½–¼ù6à<9ß½¾,í!½8v;üéƒËα}¼Ó>4ø{G:›lÙéñ+ßx–n¡\¾n“‹å$§vñNðI¤(ÍôÊ^m“Æ»‘áw% -Gd~ùÈ8!ƒüË-[ÎúÎdR.•¿amß´æýéÚÊG7OÖ§?H.79Y°huµk=âMÿ¡ìHÏOò#Þ¼‹7|²@âF—=òvN>ÙËRÆAÛë0{¾UòÄ.GÏ~éÇÛœmŸ½“ï+‹OÂä8÷}š˜ðÔ Ý¸_ìä^G†£‹/hŽvˆ¿¹òòCÚ«Ï’÷ñt¨wÞÿéx'LÓ'ÙݱdíÆ?}V8OH’Óq²'£M¶×š]g]eeôˆ÷Oåüuôˆ÷²UuZ~2¾ë"|ÒÌÁÊNNÐm“ŽŸÇ{( -Ñâäyk’ tÝwÇ,Å -¶ØýásóntÑü$z,`£•20Y]³Ê,„Îs’Ä$Ïîuüäåð–{Ön(×Òz9UR2´Ž9DŒî˜sæ`F•‚nòÉ -Õ3ù$=åüdR\o“Îìw¼›ÖD,ô}v³ìäÅÌ3¾5âM²¼Ü÷å§?}ºiáo*‘—£í²>ëÝL)¯4¹þeçm‹WmáùÉe«ê¸Oâ<Ž™ƒ•ï–?À1 -wet²3Ññí4fù}›WÖ»©7ù[ÑJ晲˜2TúƒÎkmÒ„èÛ'/è9âH¯‘7õ´ÛþγÒ#U´˜y&¯Zñ'Ú*Ê}_|jeOóüžsFغäh'ͦòî6ºŒ+Í®·÷/q¹7-]W¹bõfâ“ õ‚âê™Ã'MEÑ“8ÝRä$'Cne)o¶JÛëðãÛ§vK½û¥ms…ëVÞ½®‚Op‹u-„’wð‰~¹»êë[—ž×/EI;žìvè{gR)ýÊH³Ÿœ¾ä=Lsg,/>ù㧛|%‹ÒºGøÖí/¬®(ý“wõ4/ˆ¼¨üŽ—à&Éÿmõj¸Ð϶P¾_¿àñûÜKÜ›—{½<? Ÿ4s°ää.2œ>DÙI -v¬ûƒnš–üèyø$ -KÉÊåÒ+¿™óЗ}ïr¿Ü!ôÀy¼1§~jv”T<¹\ŽR3N rèʇ7ÈÄô(eË\a¹‰ªb™\øÓçŒ]<É+‡þyÛÍ×=~ßE59©¢N’®'#ê$Ç¢¯HiÎŽØ•§-[«K×~yÛuLFžóÍ¢~rÁE?bzr!_Гq²x²û«g±Ãì+ÌÄÀ68 –2ûâãudshcùR×÷µú‡_<Ô¾ F@“‘”<~{×WþëÁ)MÌa?X±2ê -ÝÕœ}ˆ`zrß½g™‡ÄÏo[ôò²y'òRØ´S%rà¨ÄHAyùµäˆìñãg3=y_O -³ SOZ-‰°&¿erÛÉ"3q -:q -Ô“k"¬I/žì>YÚ_¬Â& -)”¬wÍ:+vº[m÷XjØv -¢>ݲ-W‰€žtk[¼€éÉëyñäÂ…¡'ºx[÷ÀF‰·° °¤ÕtÝñUM7Üô’Õ¿¡Ë-Ô×ÓUH=Ç3Ïz™æõ\ü›;¯¾ñ†ë/½æ¦ Îñ€¸ådúz„åÝ7_ùùðÆjÆY+û¬KvêÝj[ôÝGŽ°ýé-Tj×Ê“èõö¥G=ëÍ>LQOöx4v0ÜrËf]~Ï
ò
ГÎ^\Oö–¤°>- ØHR2i‘«ÄÌ4/öiKî»H†ê
CuAk¾úþúsŸ}`~î=—þîΫn¿éº‹Föõ„i¨.B”짻k^íJ#D)Š'-lÆ ÜéM™j,ç¹8”>Þ›ÃÎÖêURX’RalÏ•£¢d‚¡§`ªGB_~J]ºzö¢EýˆŠ'ýbÍ8N\|—mŸÆŽoyp2^/é -ù‘!mYHÏyϸ:ø(Íg_iô¤Ö䤾¾ú¼Ç~¿`éO¯¸þ†.¾ú¦ó+̳Íy=—‰‰97¿ôÛ³ëVÊŸ/qU–-Ov›r‚xHy‡™R†9‡‘>A,÷aŒ‚¤dçl»‡ªa'sðãðDfJõ†Téúë¡'½ø.«|øÿë/V· 8 @‚b¹¤)oÈÁÔµ·ì-RŒ¾žÍê·›T*w/‘» -Õ/ô9;–^Pø›‹ï[|Õm7]·pQð´ñóxùïn½â_KäŠerÕZÅòfœ@IÙ_Xцíôf]9>öpöQs–¸ê¢3„QÔv²=8Ɉ·››tµ:-…éI¶übΓ\¢‡]¦Šå¯J?S -o,?; -þØ…îŒ(`jË>îGÔSHU‹^ÿ6·m¹¸
M&)«W‡¥üb
aŒx•2;¢:óÕ†IN\OÊÿX§-\¸zÒ©‹'O•jâ`°ü¤ -CRÆVT°?×’ƒPUtÙR&,Ûrù6·M ’2ì]iúœ¯ -ÕAˆý·†4©¿$¯„œ¬&åjÞ–MÃß]~öb¾ìvÞòï/ªœ|§0 -{3q '¹x²ûdAj?ïD4 -ERŠ!Œ]y‘œëÝ%|!ÂÔ“-YLOj¢
zÒ‹ö—ø`= -””(ò¶ÅÈç|Â%lÉŒdˆ2¼–1¼›>¿È¦ž´Za…µ¸˜Ì=¯XⶓÑrË -–ïœê-”O•`Š -èÄÁŒE -•f‹¬„ )Ã…IÊÖ,y,SÊ/–¸Ó]“¨¢ F ¦x‹ïvyRÜÜ,èNèIÛ/œ<U¬öc& -a%ã¾oHÊÐGöè]?úèöÅúd†06_öà¦cƒ=ñé.*ÈwÛ|ñød_‰rªD> ÷6 -Imš2ä£CÛÆÂ8À-FÍ´‚[éöhõºÒVp.—/ГvZ<8ùei2û€d7 -Í?ê¬L -ä(Ѥ…>~:wæË4¼Û4¸µ‰´Vô÷ÓÈõ“Hv -Îé/v
>ŒN -'¯¡ŠX2Ý=tñŽcHʘñU)/¼·út’5ГÖ,ÚìGõ3©çQ' -208ï—¥žÿZvËcÂîèq;P{øÜ–hHÊNHÊ|½Që.P{ò$Ò5Û¡'X|³Ÿ,’úáw -N®¬®kaàŽÞœ
wt»Ó‘G{*"JHÊ ¾Ú¨õ«ð=ÕÅ7]!¦~½Q³|· -wô®|îèö¤»@ÈD)ƒà¾”¥ÐEXa/næÙ_äêçwËw+ -]ýÅ’Ø, -øc"P@m¶ì¼H:ó”Ò!'ýÄ|žðdÔoõç<a~+o2ßj÷Ð¥2ºä*ÍYrÕ*ê¬9jFZ-ŸÀHª×Ê00KÌΞ -g'¾»U:ìRnîÛ””–¿x;0ø°ÖÇ‹.&™•0’òD6õÊ5gS”›=Ž„}½Q§O|âÑÄü'{ø<èIÐÿùõP¾5Ö_ŸÜo›à[þË -ê6XH -7ÝÑûÑ>œpsß”öñäëZ_±Ô[Ä„ãwÀ7·poàÍt F€ˆÂ.ª+‘õ¶š®ˆà$˜£%œ»£3a)Z‡‘س?£IiòÍ&aÌϦ”z&½¯æì³ÜJGN -RÞ -oɦÉb=ÜÄ2‘…eGȹo!;Û=Ö¿fË|D£ÒÜ‚s˜îÚ±8þ$%Gú|¶»[³¡'ˆ•«Ñ›c
Uk0]DCXf(M™jKŽÚ‘§ö&jçÎ -qŒ$¥AE)icél.½âKRú[¨93ÅÇv:ª(ˆ09=N‚(aº£aÙ5Â=A 1:¡å¾!)}|À7–]zò`üE)uÊÛMµÇГ -#Î[ÂÛ=ÜÝÉáJöúÇ£IÙç—”ƒE“s²¤Ë§+mÙ<Ù”7 -B” -Nâó/ˆkÌ<8ÝÉV;òHžõ;-bÉÔo»Çx;c½M¦9\Rž,‘{™°Cs*)ºrȈ×g -ŒRZþ:@¢ßÅÊ—Å2i3'Rò×Ü¢ÓÞlÏñ'¾ -”±Æè JùÍ&>à»(…äÙ””<¬Š”7 -“ó±ôdÕjx0yM,™°^C” -·Z51z‹”ælªÿôŽxÍMYjOõ¯Ð2Iù0™
n<“ô™ƒÚstQBéjp#å
€èLÎG“Ç—Iõi00 ŒéŽnue›Gó°‘ÕîÕº×DÇ÷`¾ËÔiö_¢„²I§b†6¤¼°]«Y“óázÓˆCîè¼%¼3_¦är‰l¡rëÊ—G侇IJ'ØlFJ|—(~æI)^'»n·çP—7|9 -o2ÝÑ£3̱ÝÃÿ—%öRö
«~4ž÷óˆ+Ü,>BÒ›-}´J~ù÷ÒwKi7'ß}iÒÕç%«ÉIÿuzÒô3“Î<“4äÌ™$#™ž”’˜¤¤'ìqÆC½ÙLUŠY9ÕkR`D €=H“ó£%Sp2Íú
-[@Ž¥*ÅmÖ,!åì!)ùkØ2)É®Üty`=ºV»^9¶Ôzá==‰à$ -¶ä:““”Âó§¯XYy½ëôé<ÛêÇ(aØTΚ¥YUTÉC”>]a’’º¼a€m¨Š“óÚõÖoL -“”ƒx„;З¥ªç׌<^gµ´³ -3ý-%'+ŠbªÊëIñ·Ocz²7/z -¦ƒeC‰e‰Ü™OÖCBRŠXå7›”'ï–(47+Aƒ“AªRâÝßRô¦4êó)Dé¿ ä -µä å
€±‰É9{•˜®€JOkÁ¢Qt¾pÅè[{†oÝtúSŒ9çQçKÑ¥õ%WÖmº¾nËÍÕÿóªc|aÕ1î}¬âàŸËÞ~IÈ?.ÞRÚ(h|Óˆ1òÜôqÊMÑÈT⨢qªºzr*zRæmÝQœåÍõdg>éItå -I €ÝѵnrKIIÁÉå®út$»A2¡}·fŒ–.ÅØŠ1æ~Ï‹›®«}ä¶Ú?ý¬æéßV?»´jkõJïy”bŒ‡¶U-Ž Œ7JsÌ:Æý#ÃŒñ*¡'''&]I´b$&
ã J}.;kºrSPE €Ðµêµ±.¤¬^‹6¯¶H§w¾Ùwk~¡¾iöH)i&)%}CíTûÄÝÕÏ<@YéízåËy•»®8ð?åo>WþÎK¤‚†*1güRF뵜€žGOFËÀ|ì%RÞ¾)S5ÎëÏn -uy»ÌÊÀèZ]ZÔMÎÙ//_!!8 ìĈӢcÚÈJ'‰Æu§ûÖžÁE£F/L.\L~Œ¯Ûr)Æ?ß[ý÷Ô+½³Týöݤú¸õb€}·øB/¯ñ:FÒ3Ã;¦£nß
'C“IIÊÌ™VèI£Š²!S9‘™Ò¨«Hyàü&çQÍw×®·úm‚D!ûneØhiÓ¾{ýŠ1fŸCŠ±äÊÚ‡o¥OýªæÏ÷Qã6wå«Å•{-ý¯å‡¶3h¤¡Í -F¿}7׊¯´½ð×1Ž2`ºÑr 'Gד<8ižÔ”wƒ›Œ(‹ -&tðö禇ڥgP爙^>ó…äbáe¼íåæÚÇRóä/ªŸ]RÅ{¥«^)äfŒÏ—Þ‚ƒ÷köÝ£8x#%à@Oëɘ{NŽ¾xˆ’}À$#J1žÞúË -=é²I[÷ð¥gÒë©Õià)RÞ -N®p¾6fÇ´á«“L™è
gúÖO§d41Ê
ÜŒ‘¬uÈñbš¸ùÆš'î¢:ÆçÖÐÌ—Ý›+öÿÉЊdß½›é@ºQ2}ÈT"Ó†ÇΛÇ?öÝþ"ÆÑt#D#H4 ' ›ŠI¾xWN½®œÈäWK+ -Zr -Éfk=¹]ÌÊQ|ºfd½ -N -2Sêõ³Æ9Ë<ÿ?ï¼ú÷÷÷lÿäàKÿ~{»D=²ÿè‘}e,ÿð`´o - -:CÚÈH_s‚T%[ídzò…÷wogbòÓ×_þìõW>ÜOÂòý=Û>Ü·ý“ƒ/~ö….™¼ÚÒò› ->þÈβö9K>]>]ñºµ†tÍ·nöÐÙ¨‹tvä5äÈ5m´þwwÿíÝ]L[ncbòÃýÛ?:°ãÓ×^þ`ßöûž?²{ëû¶}´‡º«º™q -týžaþsÛ¶mïÙz„©J*üßxåo¾úþ^öO£êòý½$/?9ø"ûú¿ßÞmvôfÆ™°,ƒ¶ -]r£Ë½–ß° -Ù´.Þ_Ã5dB\B\#톶m=¼óïB+ -¿Ê¾$ÒŒ-,ƒ´%ïèÙñ17ºäÚrß·!ëo… -¢Æ£•F6eªTKÌ#2IéÕåÁ'’†Î’;yF;Q® SYk˜˜4ÿñŶíÜúþ^²#ÚÀÿùÖÎÏÞxeI9jÉ%Ó–];¼÷è‘ý|ä]ØPOúÕc2SLCº(ê8cÆÓ§Ÿvúw¿ó_ÓO?=yÖ,M–榦œöÜÌ¿àö®½÷-»cöúmOnÞûÜ“;þüˆ…×âØ/ÑMàËTÜŠ™ .…‘n#©Ýœ¥õŠþšÍ«3ä†ty˜ÕÏ`<÷×D{Q¸2#=ð+xîð®ÞÛË„åóìÛî7HŸXXŽ(¹¤=Âèò_‡†:z`¢€s±VOšik‘¹fR¨Ç3Ï8ãŒÓNÿ¯ÿ÷Óþë»LRž}Vê‚οêÒ‹oºæÊ_ü莕÷ÿ6/må“¥¹¯<óØ»»ž{}ì%Ÿ´ý;¾8¼ïoî´êòkÝ¢{eÃƹì>Û–%ˆ;†Wq°M]ž”QÝA2’ -#‡Í@'EbFFt Êõp»¡ç¸AúVnþj€Azxò’êžb¶¸˜ÿøù»0QÀyÄ@OŠÆÀßO"m}Æô駟~ú}÷»ßù/¦*çsö5—_rÇ×ýú§‹Wüá7ùé«þX˜¹õ‰Mû·>ýÉAºà|úúËŸ¼öÒÇ^d— öùý½Û~E:¼{ëk/=cÕ5ײå¿Ô³{ks&¿óÂ8ÄúÐÁÌì–,/oº©wk¾,é³{gN6wÊÅ }ß¼…g+]–‡Ò_EU3Q÷kË÷mg¿Ä4º<þþþQï\0ºÀVD\O]f§LÒŒ³Î<“ý~âL‚ÉșӧÏNÑ.ùþüÞtýo~þ£uÝWè^õxQÖ³ï|öñ7^|†)ÆÚÍ$»°°çTί9GFg맯½üÞÞ#¯x ±xWŽOŸÝÀÇÆAOç"æ×…‘¼A»Q§ªHŸ[©ÏP}n)ç\r÷/²8С!cºè;¼ÆòƒƒÛIUúƒ“Ÿ¤‡´6 G˜¨óÜÓ§¼[œÒâC&ê„y³üN - -ÒW?YšûÒŸÝõìŸ^ßñÌ»;ŸcHÿýÖ.ªôPïîzþ0'ÈJ7øú³gë?ÞÜùþžÿ:Àƒ“Ãk~cÑÍô³{g³Û.ºr€#n?üy[6FšÅÀ>]iÒÕ}ö°Cþθš_ãÄ5Ò =ûÀsGv=oWšé{ƒôñ{ÃÙl¢Îä¥ÈRýçÝ¢£ç8ÏŒ£ê -%@B„céÜ€ÀGI@À«ºêÔÜdl5wclÓq‘{Ãlíî|3³w§S³ÚI73÷ÿ=ó!ËöÝîþï}çm#:eŠN™þ}û129!þÌ1§wöY—\tÁõW]ñà=·§>öàk/LÊzóŸ‹f¼³xö{KÅGÍòÂlö!Ã\Göá°L7s½Ç¥ðk¯åbîny~ºøD˨÷ãOoDˆr«7ÎD¹-âîVƒ+Ð_ã~½gRâÑç’D
0÷-·¦$nŸXÇsŽÂHù¨= ½,zYÎô²¼,7â.6)'^3'ŬƊyþnñ–æn,Éÿ´âXX[5üI‘¤®Yñè.æ+½Gæ:öîÕ›ù“Ìu¼ø¼s¯ºôG?¿á§¿»ýO?rÿ‹Þ¿LûçósÞyµ\œÆÅôÎW!_̇\VUžŸézÅ9顱Ç&%DBV¦ûaU’›‘OQ‰ð§¼‡UxÑ•ƒ%õ -ÔcTˆòæF˜š´Jb…—S´i
}´E3ás”žÚåF+æ¾ï?(\4ïTÞÄ2Ëiñ!ê™n·xè Kø–XXm¹‚þ$óE|røˆ¡¼MÆxt<0Ðí³þþ÷μò’ÞvãµÜýëñüáʼnOýï¥g³ßüç¼Ì·x¶úÛ*®Z0‹}º»Ü1·ù#5v¸+ç1g2£hNfeÑ…;Û<5þØs˜„%ßíØÂÜ;™ïzÄQ¡îÞ'qkJò.ïiÕžç› -#U¥Ö€töuyûÐæ9˜{ÉgQΛ¹rþLœ…æ‚€o™¢ž]†Qÿ´ší‹¼ýÅÂÒi¹þdÞôÿžš”4°_ÿ`^{tB¸λ庫øͯS{ð•çRßù×óÌud?Y4ë]æ.2ﱞZÇš®cxüÆú×òÂ¥Nºˆ&…Š”ÛS1ˆKš2ígÿ”¤ÃÏ&W0¯’ÏùáÊ’¶>9,ô)FvÔ^–?=øÎÜ¿‹rVΛYÈ7µpù}Ë€ƒÊþþåÙÁnqwˆúæyḎ„o‰…ÕÂ%tÄýÉy™oýüúk~uÓõO=ü‡¼O¾ûÊÿå¼÷:û&s™0™×.âÆxž¢Ð‘±t®¿Ö±¸MœÆú‚“þJï9oP'i`pPaÆš[íˆ;XQ»ÜÂÈÔx÷Lù½“¿û«x yˆ’ýÊ‹$kzŒYˆFjNíéKò˜¿—.ÜÈLöaÎ\>>Ç’—?…ǦÔnˆA—îÙâ¹›Šó0D+,‹‰ˆ©iý9n?‹›&X^˜Í¶Šl1×q™˜îÈ~«¸fŸu$¼ÇZ‹{¶¢ã0EcOw]ˆ%?uNÌèÃà ¬6]!ÏÛ//Œ<ìoÓndJÜŽ§“j>±^¸‘QHÍéKs§SÞkÍ]½`¶ûñ.âa3%¡fn:?CQwC—ð-±°š½6,ñ˜7#púU¦ë:QŠÃ^ëîÅœÞÒܬH} ÊŠ8+güˆŠÔøS’àObµÅJñÇ!]Ò]ÛÝI’Þ¤< ò„ABóJ‹ßzk©8v§„£L7²±¢pFË›wêv/ƮԢ^ȇ¨ûC—õÌ´Df«Æb{±UógŠ™`é¡Ê’Ù{¬¶|él[š—¹*'G|=©Céž•“·{’ÿ@ºÈûXZ®`7‘m^Nõ—ì27r[Jâ® É_{…>š¼0s~@-D¬²Zeqñìò¼Œ2fŒòü•¼Ùsþ¬Ö³)¡9qžªËÏZ9oÆÚEsÜIDu
Q¼ÇŠìÚTœÏ¶`îÄžˆÕ=¶Pø<!2‡í^ÌœIëš{õp“ýµ—'Ñ•ƒþ2xüÀÔ¤£b˜€¿X7%nûä‘Ÿ?Ø3ôqô÷× -˜V®²')”Î'˜ñ¯s²jø -añ÷z“·yãø •SÞXa_îÄ{÷©àùëɉÜÿËö ìww=3²Ž'ÊK’Ú@2¸E¨užEiAb)Š*k
HokËê^²—áž-.†¨çn.Áu,¹–ÿ¤›¢¹l/¦™'ÉÛÖ±-çâ”Åù°RqVsü]9XQ¿x+MЇsÈÅÄȸÝÞ¡ÁLJ粃ƒÇP…ßò³¼ÜÒ^.U›w2jHÄ -Q¾eUGO°[+‚ëÞ¾Ã4¢Ÿ'Y*¦•ù2JgN«ñAÆ림¹ÿ°w2\Ê(^þš]ùÔñ}“ÝøäÖÔ¸mÞø“ã·>9,øÔðæš,ø@užXìM
þOñfGfç¦Ood–%8 ½-+-ëò-ý%—þÐ%ï÷K.?Þ3ŽY—Xá]îå–^°M
îrÒNË´£&›ÈNnó&BÊ;Ê/€Lñ—Gîð&|ó?J›}¿"Eœ_ãMâ=ÚÞs‚OŠÛ_7hFíéÌ »=๙UÒƒ>^D}Ë gg¾e°£CÔ±Zi},šn‚ÏaÄ}¿°¯Õg³_—æ ¡»ù¸í·Û¼¼^n§WíÁAX
/w¤OjÕ´ŸƒókDCVÜoÂ×ÞQն㸠ý5@sêΖ8+<t@z¤Â•!¾eµ’KözxZܶ¸/8èU—X-\Ÿ”óöí5‹fëÔ¾]sù2–ds±ç¥GäÃG#¸ŸðÕSC¶!åñr@ôú+!wOLÜ79ÑmÂrµÓ~N¯þ\k#ˆ.jwt–ç¥çø#–«Î^9o&ï -ÏÍhãÆðúÝËôÐÌø²‚ì•ógº=ß2òž –Z‹{’¥l¥eÓMˆ3™înKr§GäÓF+ݸÞÀÙ‹¤Ù -F¸{?¶¦"…‰âÇ NH8ø\\ÕÃàŸóƒm -1 }ypÜŒ¼=Û·ôQÏãCÔWÎ÷‡.1D]ãåž™¸fÑœeùYÅZ—JÖX«æÏ*ÉË(ËçÎ$FM†™Àã¶ÔÄ#Ï&WDÜ_ªkm~›§NMb>ä6Ѹ]!j_wŒ½ýï§UÝÖ,ÂgÇ Õ©Yc¹Ô÷^i^÷ó¸oYžŸÅܳófD|ÖPƒ«ªUÜ¢^èºäÝâÁŽD/•]þ1øÚ7ÝÔ\¾ôÕf3a–ºj}"R:“å?{ÑKˆ®‰–éÆ$wOJ<ú\s&>s#yadˆÓÈ}È›Ñ 2-~ºÆÿ–䧕Š*WÍŸµ¾(g™;ïNz#^R½£§TºdæØ=[|SqÍ!êXò/ÿéÛøVf»UµÌÚnùÒ—¹U(ùþ†™´üª~òøYÌKáxð'#»¼þ[àú»&òªH~̺7Ñ#¹sR|èá5îäž$ÜH -/“`FzcV
÷ryA6s?,šËœ“Eè¾¥Ì+xfâªù3K¢¦é&t±}\©t äøœÉÖCx#t[Š[‰‡A”r#_°{R¢h$?J;i›7nû„ÄÅ!ÙBÚH -+¸>åíÛyî¦Xg,\Ë?j2£&ÛwtÌîI ÛRã÷Mq°ˆûWQ²Búkö’»ô¢ö`[jâ–v/F|zâ¡;x{+ -Ë -ñÌ™'¹{?q÷Dqx
s2yF;¾ÖÍÀàq -æbùÒËsÒÝŠJæn^0»ªyG»ð-ÓJÅu·£'8è2$Žy0¼‹9ϫо]Ïíiyù/qI¤Nˆ”6A|à!ݒƒ“þã£y -#™y`JÒaq¾¹ ™Ä‡FNúÉãg…^<·¿&Bw -ÏkW¤$PÇ…‚ -§sÅMˆg¬]4G³éYµ‡¨—‹A—Í%—yKjwô´–oùqqskùéíK6´xÍ»D>L’áDm}vs´öLJä5„‘ö[îCn´iy6Y¸‘IîÄÈããêxû8 -o¼,gå}Z>"ÒŸÔv#+ØJåžäo|Í÷áuk# -# -æObÔ¤ò¥ÆóCdÚÄÜ–Zu⮉|êøþ)I¼0Òßb¿Û;4t‡ÂsÙYWà -GYb…e•åòÐwi^VÕSÔExn[SZ÷¬¯{j¶ß“Ü9‘Ÿ_ÃVEJÜöT^¹%%ùË¿&ÔxaÙ7£0 -ô× -³™o)æXf Ì«ÎåKÏ™ÁÇ„·Ë{Û„„ÞJºÎ¤ë4î™”xøÑ£p/wz¾zjˆ;ôÒÏMè¯ -²Ä}O¯ói:À†t÷¤æ(ž¬+Çu#E§öîI‰{'óŒöΉ "P™¸}"õóu艇Þ@s
&” -#Ýþø -(}‚/L.^Ñ_7 -påþH=àî€ôe"Ûê.eÀ{)ã¬ê€v‰n,‘9ŠËÅ€M^”ÈóÎÌWœµvÑöR×.âÎÌf_—Õ®odƒ88Æ]¥yénj»,?³Ô—Yœ—Vš7½¤pFQÎû«rrZrQƒŽbU k5ÑÿS´ß -²‹çM_ê{oUNNaá´&½?ž_T¥˜QŽ -nAÄL -b& -ŽÚ@p ÓýŸ(z>Ø[ýÉž°GJª°éákàQ‚Zÿ¢ûèÞÑ#8>Ôu_øŠJêÀ¢Ÿ‚˜ ÅøžÓ>©°øܨù@fïóþŽ.m16]Ò‚ÿaèwóß -?aÏÞQãP2¹=`·²Ü¸à¦µ‹–+ -NŠaÆSÛ÷Ç©_OGåƒÑbÞ<¤Ý‹áÏrסtšá¢žÀ~ó¨qÏ®¨tµf[tû°(ù0ö3Ì%“õ`SçVx”Q߯ MÉ×<žñ™ÿ©°lña<+JÜI0MäÆ7ˆ{Ï…à¢Ãô»‹Ãn˜˜½^Ø5DZý (öëÏ¢EnýòÚHn\p«1å< - ì×H§‹ŸÈÙ|P< -LjUÉ^‡n‰Ž.I’ß:5\ubӢ⺂ †'†ÿ§c¿³Êüêþ¨±ýšSó¹x!*ÜI³ªÕŠJê€ýKÏEÅ…žÌ…##/úý´OÜGÀª£d}çò(ð{“œ¾±
ŽëýRFÁýÚ+}{¥»aqìº6›. ¿ÛÃûK>m¥ -å“nßú_Ú(Ç0=îGjìyOf¯ÚÏï»eÛõûQ}ZóÆ®È5[ÃU'6ýd,§1¦[8Óõôß½»~—SýZÍGbß´×{ä¯ßÛörãf‹ú@pzâ/ô7žyçëŽ ‘U6ì@UÒS÷M=», ¹ñf¸W §‡1ð¢{^)?áÞj«1Áö#Oèn޸ܜˆÈM\ßñRê„aúýÛ]øÐK÷Š›ìœlÃV
‹~ ùãà!ž‰_¡\6=ñs8]ðï×H»¤;_/«÷×j¬ÔüCŽæ¿ÒîÕÖî¿9ýêLÝ=ˆ¨À0c¸PŒžI·þcÅÞãüÞ6b¿Vöãwè.·Nÿm³®:±èŠÁœÒrÙ¤ïY·¾°ä°+‘ubÓ¯õŽŸyÈ€9‘•\VG/²Ö÷k¾ÿ›¿Íßå×M“œÈ*úš¡³}3IÿmYÃU÷EvèdÍv]qCþŒ‘¿x탯øÍ´íjÅÇM|(ý±ÎŸ¼&SÔ¶5\ubÓã÷Boªá߯‘NC®{aéÖ£üF6y¿VëAXÙW_½&»I¹ñë¼w¶p -aø‘=“¯š´`¿¶Õ.ôo:ïúô{k-Ø;S[—LÖƒE?N€à” ؘÝqìMs*Üûg‡å1rè‘‘˜H¿ÁV‚™íëvD0P‹Îë -ÁIد%ýò…ÜOÅ«jÌn1•Ô×EWûÆ®Ûhex.TËqlú/#Sêد‘žWMž÷ù1~×*[©›>®«ycr»S"¹‰ÐÔÃh†“ÓmÌî2ø‡ãówá7¬¡Bÿ¦cÑ-ºv‹°wõ—ÈÕpÕ‰M¿» -¥„þ¶É—ý9{»{³êjÌn1©©‡Ãäö”á,w-,ºu,'Á!ã$ñ†§3>vïS}Ù-Å¡•÷êiÞ<$öuéäÆW6 -ç~"³ÜDC}®Mñï×Úõ=ãî·>:È“²Íêm-è¡Û}goçŠM2•ÔûLý»~~…¬³Ÿ×¿W»ƒ´Úh¿V›þYC¹ý⹊JêÀ¦ô!vµÁÆìÞãîøqñ[+—݈»þÕ÷4Ó{7¿<$½Üø¥?rf—^:‚û5cÌ=o,Û!.{kæ²Ä¢34+Wg×wüq)Ón5±è¦$í¶Îá?Êìÿ«WWíà ¶ìתãPë>½n9“[ŠœYîÚXtqoX¸VÁ0Ü‘~cnþ[ù!2÷ßÈbÑÏFjeÞLû¼*rãÍpoy ¸0lÌîùý_¿°è {©#©CßÖ*Hf’Žo+#7QØ•¢Õõ4ÁC¡Hò]ÿ^¸U\ã¶Lf7€C+µªå2I§·¹ÕP›~{›N7 ¢ø÷kÄ|Ëß—~΃þ|¿&‰Ô6Ý SòÍCFú„ÑP‹n?W¯
t„0cÄUì1üêg—îs‡ H°_«^H=døb)ÆÞ5‹® -Áµ„`.»ûé×NÌ÷ï×Z:!²Up¨s¡6æÍ0ÉYÅÊÉMt×·×æ&´5UÙ§ýò™œ¯Ü+ÑÛÉ°éBmZ˜Ü.jóƒ¹Ã{6^ÒÈÉhCü!B^÷Œo3w[4d¼õ±ècÚÈÍ ã¾P ¨¤Øƒr.·¡Í0ÌqÉ:ô¿Ì;ïËCü:¶vcv‹qh….{u&·Ûö¨“¨ŽM^¬É}hÿÄ‘.q—<1g§(KxáHc¨¤ÙíôpdØGÝíÇT•÷3>Á”óFÌe›£¯}2ó÷òE¦Ð¿É0G÷=Ƽ2¹Ý{XMgÒÅ¢{Â¥lˆ`cvß+¼³Ö‹ÛíD¬Ð¿éXtÓ(-Ì»^…ŠJê€}ôýËÔâ^´B£ûÅOÎÚ N§·Ô0kA,š®Å-6‰©¸ÜDŽþ )ëÈì8𼇲¾§ø†ãP¨6ƦßÞ ƒã!]_U]nânü[¸Ú’Ùæ¨=0m³ÿZÉW8Òlº©»Ÿ¨Òå]õåƽ/0å¼:ÁýZ¯+Ç?A¡ýZuØ«þ?
<4C¹ñ÷P:T#<ýcÏ{ø½eûÅ’:—Ýì•_ þíõ„¥ŠU(ׇcÓôXõïH8ðï×Úõ8ý¾w?Ú# -GÔÛ¯ÕÀ¡ËÔA{H|™‚%“uÃÞÆD
<ŽâDƒÏ¾ó?ëýCÆ+5¸Ã6}Tõ›kxÈÅ«eYÞØù]ÄTûž´>HK¼ûã~÷ïrWkŽbAÿúpèѳOv³{óÃmÚX7ŽM÷‹Ò˜IUcöÙ¿}³d¿"—Ëݵhf'µÍ{ñ?ÙªrQIØtC4vù…2bóß[ø-
ÿ!¾‘…mί¶ycNþGµL†bÓÜ(›rî/ô7ú$þüŸk 'RÊ^Ñ–aÑONSú¾²×~×wšY7*>_&Jߘ&lÌîwöÿ·ô;÷hfØüTÒéJ{“&1Ÿ¨ÔOn"Hùˆêq¬Æ2nŽ½çå»Ý7¯Ñ~:ýöv•?E=ĘBu”÷(ýTå[ÓCÆIÜ/^^ð™x×j'³Â¢»)ü!ê!^ÔTnâD‡³5Ž™°ýšxð:»áÿJ¶ñÓéuܯU‡½½WvZbHL=j¸êĦôÕSpÆ잣¯™¼è€¸êŽ4›»H]¹yHWMJ&ëƱé4íb&ÁÆì˜3o™ìÛé¾S[wÃæǦk:({C=$nÎrîÇ$…ÝÚ÷kÃoœ<Gì×d2Þê°÷ù˜²÷Ó$ :ÕpÕ‰M+oSöó°ÂOÿ«¦~"N;lÛ³#C¿=]Õ
‚IƬVqÊdÓ°éÎsT½C¡øý»ÿñÓùÛÅñ¨Ø¯ÕÀ¦¹ÝÕüø4Lò£ -]“¡XtÃH¥'rÙÜ°uý“'flõ¿+í?(ëĦ÷¨y/ÙýûÑŽhÜœÎ<ͨ&ÆìÁ×x³6ºoHÙÆìcÓ¯ÏTRo|Êä¾èß¡>«v²û¥ãg®§gXZ粤’¾d°„=|÷œ •‘¾|m„Méý‘¾âÍ%¶ÏùÍúì -å”GÉÚ<“òñ2^ -{rRª–Ë$#6¡¶(ŠC')•
ðñð&ªØ4½ZæÏb˜7 *½M1óv3‚“@Ulº9A¥d·A:f¼U©¤/+-9ï;D'¢8Ôù…ZæürªRIËûªeÞ†îBt¨ŠEÿ¡’yc
˜ *6Ý÷c•¢“é¼ -Ñ *-U*Zâ!÷Z0o@QØ“ût¤%Ô♃9 -@Ulº?^%w2†\þ
ÌP‡úTj
`¯ô_ؽUa–â -ÉíÞN«@2 -SI‹Ô‰–˜dÀJ˜7 .µQǼäzäºÂ0w2^ófO.äÆ¡3Õq'
rÁQ¸“@]˜±¸Q!¹‘7aÞ€Â8ôëAÊlß’„#q€ÊØôyuÜI™ÌG? -#j¹Tq'=dÜwˆN…©¤ùíT‰–Äøro@aØfèieÌ›IâÀ¼…±è–duÌñ¢t¨ŒMs”I¾¤Ç§p'Â8Ôþµ*rcîäý6ÌP›nW&ùfØ"$€Â8ý·2\ƒ„Ê0çìUÌã-”r•±éʪèÍCÎÚóTÆ¢ãUñ&ÙëÝP‡Gb"-¤Æá!#¾Bp¨ŒEçvVžänäºÒØôqUj¹LÒ©r*cÓ/ÏP%Zb«,è
¨s'Õñ&É,'Ê8Ôú½*æÍ$ßC2 -Î$?Fy Л:”PprËQ¤ß€~°M’„‚óߣÛèóÚäs)cÈ$„K€–È(¸òwz"Ò€ÖÀ’Npìµ¼‡t7Ðéöpéêƒ? tŦÎÑÖX(&VŽt -ràGÝq¸MYýxnkÚVm\l1£Y²“Š=Ä¢›íãJÕ©½Jƒ´?ûîœ}ß³Ak š¨d¢+½µ+o¨n3LÒë]þo[سhƒ‡*iÁ•íÚrg.¿ý Æ
D33VæOI*Žý;C&B‘$ˆJ¸â¾{çÒvE^û‡Îžc‰€hÃaû¸½o~ÏB›Àþv·¯…‰Ñ OzytÛ9•< ÑïÙ½ØÆè„?÷_OMÚlÚ2WÜ…Y”bŽ2ˆF¾›ú"µwÛ¨cš¤Ã+aâ@”b³}ÜÚ?÷k»s¼Ù6®gjÅQo :±,zâö¶Ó›Ø.ž–a¡`D%µÆm¨7¡8óærŠÜ -¢ˆJ!·È4|ód\—Ç¿Dn -h{šS#-®:á±ÊWÏ>Šì -mÞü@p@IZy§jÖÃ÷twÅpú‚‰îš˜$æ¯P‹Îy#\p(…E7&¨·yóÁµ°éÑŸ*jÝ8P ‡Ò?)0Ž«~LbBp@‡¦©+ Â÷2Å!‹@Z6DaoR`’Î3!8 -:´ÓÅÀyÈÇ‘ -Ï
2IÜ!$€ìØ´âò‘ÃöíÉ#&ewpìƒâO¨-ÒcÓ£Å< w÷N˜ÞT5piC€ü°
Ü+ññCöéÕ¹S¬ºE”&¹ö(ôäÇ¢¹‰ñ#öíÕµs‡e
œAÞ„Ü€Øtý¸øQCû‹ˆ‰GQg’ÄÏPªÀ¦ûnOL6 o÷®]b=Šv xÈÃH¾plš’˜<lp¿ÝºtfzSÑÀ¤GÌP‹¾•œ8r耞ݺvn¯¦‹!—}‡d -É -fj§ 8 tÅqäÒ›Iú~ótÅ¡»ÆÊäOäg¨-ÚâÐ2鹓ùp'¶Øtc¢Då\9µ%@_lúÁ@‰ôf’©p'¾Ø´h€<z3HÏ•˜ôÅ¢éåÉw{ÈmÇaÞ€¾XôuC½±×ñÌЋþ×”ForÆ—ˆ– -úí‘Ö›IÆaˆ -lzl\¤õæ!‡Ü@T`Ó£çGXo´ÉnØtÏ·ãÄ_£D6Ý×5²z3Hû4”*ƒèÀ¦ßÄGv|‰‡|ÿ̈º $ÇöŽF´D̲¤ÇDУ4Iß¡75ð -Ê‘œA®Fm ˆ"ØÃþw)Á1w2rѳ/ã#%8ƒG©2ˆ.lê<¡¦“<äˆ2,zäçœA:•¢¶DÝ#1Ú^próQ˜7uTÒçG`g×P[¢‹n>«ÍóÞ’´Ñ0ÁBbÚVo&ù䢋·qe—IzBo :qlºp@› -ÎC¾1x Za‚ËîІ‚3yž—“•°gÿ¿mXJi’[àN‚è…Ùš¶]e—Aî‚; ¢fmžh+Á1w2æ
D56µm£Ê.“œƒReåX”ÞÜ6‚ó¨
wD7Ý][x”²¥Ê ê±è¾‹Û +C~‰N -MLò’o - - -‡€–ÀWp^cLû·`ß -}MbÀFÃFð‚|Â7÷vón%PÆð‚<«÷Ñܨ¯]±98Âspòñ0߆“ȘÜüá1y2ǧä$ãಾEÂS\ä_£7ÚÞ°—½±zw7$ÀÉ#é¾»7@;šcâ7Ž“„=·‚œÜæ»wÃ@ -ç»%?ÀÉ}sYÈ–`ôJËO#ÿ6%LIûÛ7¶\@wÕ¤üÈ]K§O°ùu|p†ŽB9±B ®“
cƒ×€”“ p˜\<¾ëËh<¾<Þ˜o]ÙôÀ§ð¬¨£ÅN¾{KÑXiùc4 pûm–t‘dæmz“ƒ6·|í}GÇœ!&pÒÎÎh£g¨lBÊ1ÀüÈÐáß4Æ\HõÌómú>ËóU
§F±œÈp‘¯_Á–{ë¡%Ì÷žŠy ƒ½Èœ‰˜œl‰õÿâ´“C.(Yõ²PêQ,|9Ìw£ø‡`b¶ÃÏÿ¢@m„16æt=‚9–JŸˆùò|öÜppÎ_ -¨c›Ðõt,§¬ì+ð -_l}â8rrÂ'¿_Áj-€AŠU‡‚oiƒf~´óštØn=Û˜R¸¢û‘á]†€,Ä -GUV!prׂ€˜u‘Œ/Åcp0?rö讵±`2ïïz³+y,*…³‹|WÉm%` ö„H”ÐØNì´~a!dl4L)\9ø,˜ÖŒœ[¸ÈƒêÀx78¸µgŸ1!˜¥ÀO¼tçÊ9£ªz¸Ká?ÞfŸ ÒÙ -Ÿ¼áµoHËù5 ¿Xðb=-Ä%ß=þâæÊÙô}†hÈ6-ËeßüP—s¡XΨ>{ 0…·1rÃlB³7÷VÚŸïø±ùBúC:d›X -?¿àºgO‚îB±œ—P涋ÅmL=C†) -ÉàÜëŽ~КÂõVQ¢GKá—f
þytŠå¼ÁE¾¯TámTd¶E8ëÁY¹?ìß^±˜´ƒËÍMºöÕ“$šÖì8ùqJ ½\¥02&ÌVQG_»Ó<˜26O‹G„¥Ý´‡‰åø¥ÀÉoÊX &÷9&Lz„<ôäõ9p«(dl^Káý†çÀ„/År3á"]«0^ò2ì§ü–àÜ‹Ø|°%›°ÖèÊõ?~îЛÈäÎN-¼"ŖΟƒcò#®ÿÇ¢º -G&Ç€“Òx47¡L:0{ƒ[iŸxãgy‹èªrlœKás4?yx9År4.òÛ|þ“ -Ù„39¼xóžS”Üp"ˆÓ'TÓnáë·© ãj¿8f)äïŸÞ°l‚(‘ …µD -o£H°°û}+ÁÁüÈéOnS€uÇÑR?âÃ] -¿u_p–Â]äkW ËÜ0,k&½À3%í¯ß¼§n}”)îRøí
¾R¸‹< Pì‘`‹^÷ÊÁ¹W];þìÆ¢ùô)¤BkÂÜ¥ð·ºKáœ(à¡oÂSMv‡&?òÕŽÞ4:dCé‘ €)…_nº‘.…Ç+ª8y²ž•]gBŠåóÐàpz«¨¡C¿mŒºCù‘ –ÂççÜü] -½ÉQš*¤ÂÛ(Ô-½à‰½ÁÉZ_ïÛ²rh2¶ Ærá†û> -ŸWÏ´ÜE›>!pr»@ͺ«Ë¿<‡ƒs¯«uäÑÞ,°o=zI;¨a¤»¤ö¿÷ÑÒç´fùøE57¸7ÕtÏ1f§£ƒ÷6ŃGÑ«l¡ -²5Ä´0¥ðâÛ9)…»ƒ0×ðÙɯˆÃÃC§øè•7vlÝv]gOYVvbtô•óæOx¡T$A„Yw\w‹àw)ü×L)Üßå¦FmlxÂG'O÷ù?øè¯>r×Õ×®1®H^°èÒ‹/¹P6á–dç…Éd2©T\ž¢’6Â#Ü¥ð•Ûßò*”#FÀÆI]çúôõ½/îØùà¦?ªª³ÄÇ/œú0i˜mläÙž3R -¿óMÚ¦ñr#ÆårM7AåÔ±cïî}å÷m߸᧫›Vê2’ÌŸò’ (…&C†@°S -_Zv׿€ÝàîXnt€8<]¢ã³÷>xö‘G~~݆Õåå9ééË_uÁø!¢Ôd~Z‰@º.]Zóèazÿ1ƒM†‡8ñýñ/¾xs×3÷þìçݵ
¹1qK]17|ö„s…‰|€ˆ@ -¿ÜúØG#¡ØÐñã_îÿðo/½òä–-m5YQ³Âg…M±£„ÙáÌÒ£KÛïfç–ÿ½}]¿Õ\”{Õ’‹§>X"¥
LŠÆˆ„0éùyÿÎ0‰ñpsDB»9z|(1/¾ï b‚ÝÀ”JS_›Ñê´Êë‹äJCqZ3õï•V‡Ó6 /“+›Õ†§±³ÕÙÙßg¸F¡ª/-©)6*tŠ˜ë5¶fMsRs¬"Kc(NÒ4S_ >U$P‡&)Ô+mÖE<£‚úLQ>ÐÙÞÙGý±ªÕÚcƒÇeQÿÉk¦¹\~'ü]¡6Tg¤mým6ðÅÔ¼¾^Wc5g*còÓbµE ©¦Ä†x‡®:)µ>n %Ó¶ZפmЬ7g袲ìYí¥ÉÙzGíº¨sWö`êº.£#¥-·¤É˜¸ÒîŒ7+¹F‹¾kmj}|¶ÙØÖ›™#W‚?Ôªkó´ñŽ¬øî¦õFCAQ]÷rCF˺öøüÚ¼ôx}A´Ý`©ëlN6ªŒ}[—M“bˆ[fLQe•©5E«•»®&;Ųܬ.]Ñ—§±9ÛŒš¢æMñÙµm%re|vç`-ø½ÃÔ¢j-È2›œêRéæ¨¾Ü -C—2·Ül27kÔʲ¾B]_ÌzuEkFV\L6Ú QçêÒÁwµæ¸Ú³>Ûj0˜#ŒÝ½Ë´5EZúÌr%}n³Ä\bj©¶¤ç÷è{Rè¿éuæD§9¯ÄÞ3rx üáüîG^‚r0&ϤꯣþfΡ»@Ý—Ñ®ÓhúóÝÝr¥fENMݘS€î¶T4›¢Ó -ÜmI±ªûT:µ¾V©QíÊÄ -}Vow•ºÃ¶^5Ý”è{c£¨sŸ"ÓfjéÕ™ZôÊL}wQc¨ê‰0›2c;Õý‘ÑÓ§>¿R‘lŽ±[’)qW®6ýš´–Žµz]½®ÕPš¸"™’~Œ½Ë`´Ûûsò+•[EbZBDQníèSMºCçÚÒ(½Î‘X™ßœ‘:Ø[—š›dë2ô™cÖ£Ûsb“mù–֖ ߥ,Ïým³¡j0Q•o±™Ó’×X3@§ggTïµ*ò+óµéö²±
ªkk§ÑæêÊ›u9…ú¬jg¤¡¬½Ð8^négÙ2R'ö ¼•§)¥UUÒŸÑ•nHoëÉÉoí.šp¸¨ù4¾$G£MªÎ ¿FŸh2§s\^m–“ê1êÈe†êÌ^ý¸²#<è·ÀtN£ÚZ–`ŽTi¦ÕmYP‰G> t~ÔTP:ùÛ-J éÔ“Á‘ ï+¨\e¨6Z“¨êUÀ®*“–ëSSè»ÑuÔ·víÑÑË)«‹ª6Z,EI¦„þ²}v^ª’Ò±©/Ðœ˜ß•C4îöÆ0åw»#¨d«Ì*¹]×Ñ¢n•+Ú¢We»O1éó‚6U’eŠFÆê³V—ôkµ]UùÝ¥+Õ“ïfì!rå؃&Ü™sÍš”5«ÖGPŸF[ÀSRBŒY¯.µÄ¤kìYý-ImÙe)«UöšÝí&¥92ͨn.6µ¨W-3”[Z’cuž¶ÙZßm¬kðæ´IF[\e¡£'¦y’‚P'•+©ÓRBÔÕÙÚõé©å…†²Žîh½ &+Ù¸¬^ŸZ–Ò¥±5e)ÊÆv}JS¶T£íÈœôµÉçv÷ƒ9Q®ÌNhlêN‹X»Æ©¯]Ö¸² 3R›a6%ÙSŒöJ‡][i[žM9ef×úòBJwìÙùÅ•Jà -š´•Ö"³±'9ÂhÏ,¬ÿd¨Ó÷ØRóLQZJ“Ó”jcIAǪ|»Ù˜Ö˜¬ÑÚ£íc€¹IiÕ)-¦¬2êIUV:þ<£ÇQ÷ÝA©}Ue—!}Õú&êk
¶‘‡#5` ” ÑÔ\S<¹GãÔ¦iv½U)_Õe´e¯¡L³³dÀÛ0S舰FŒ¹TsVS¼®sÍŠ¶üeži¬ƒÏ†5mQúVŠnPêºNc5ýl -p*—àEú©€wmñõòlõعU€{¹ -xÐTÀ¯ãs4>… -ððLæL<m‹*àñ9¯|yd.TÀ«¶ø¬,õŸ£ñàu<Ʋ -xß_T€Íãs4¯âUrˆ¹°§>ö˜—*Àº\øƒÿq¬3¶…ð§Ç<WnäÂwv”Kð¬-þª€ß=æ‘ -p(¾³£©€mñCØé±™T€k¹ðe_¼m‹o*ÀbC"¾³£¬ª€OmñZØU rá7;Ê– -øÞcÞ¨ -p'—HÞÇc<W«ýR6zlfàX.‘¼Çx®Vûª¬õØ9U r‰ä}<ÆsµÚ`·Ç¦S -½\Êòår¥²ÂÚn«°vöØäíël -k__¿Óê´£>Q´ØÎþ›ÂÑÑ5øõ÷áJ¥©Ü,ÿÕ(óI
endstream
endobj
15 0 obj
[/ICCBased 19 0 R]
endobj
6 0 obj
[5 0 R]
endobj
32 0 obj
<</CreationDate(D:20160615142312-04'00')/Creator(Adobe Illustrator CC 2015 \(Macintosh\))/ModDate(D:20160615142312-04'00')/Producer(Adobe PDF library 15.00)/Title(metamask_icon)>>
endobj
xref
0 33
0000000000 65535 f
-0000000016 00000 n
-0000000144 00000 n
-0000047649 00000 n
-0000000000 00000 f
-0000163121 00000 n
-0000593503 00000 n
-0000047700 00000 n
-0000048109 00000 n
-0000048283 00000 n
-0000163420 00000 n
-0000139682 00000 n
-0000163307 00000 n
-0000049181 00000 n
-0000048344 00000 n
-0000593468 00000 n
-0000048620 00000 n
-0000048668 00000 n
-0000139717 00000 n
-0000160473 00000 n
-0000163191 00000 n
-0000163222 00000 n
-0000163494 00000 n
-0000163800 00000 n
-0000165099 00000 n
-0000187851 00000 n
-0000253439 00000 n
-0000319027 00000 n
-0000384615 00000 n
-0000450203 00000 n
-0000515791 00000 n
-0000581379 00000 n
-0000593526 00000 n
-trailer
<</Size 33/Root 1 0 R/Info 32 0 R/ID[<858D18969ABF4CF88593CFB9A20C1759><B33F39DA517C42B9A50D10EC91C85574>]>>
startxref
593722
%%EOF
\ No newline at end of file diff --git a/old-ui/design/chromeStorePics/promo1400560.png b/old-ui/design/chromeStorePics/promo1400560.png Binary files differdeleted file mode 100644 index d3637ecc8..000000000 --- a/old-ui/design/chromeStorePics/promo1400560.png +++ /dev/null diff --git a/old-ui/design/chromeStorePics/promo440280.png b/old-ui/design/chromeStorePics/promo440280.png Binary files differdeleted file mode 100644 index c1f92b1c0..000000000 --- a/old-ui/design/chromeStorePics/promo440280.png +++ /dev/null diff --git a/old-ui/design/chromeStorePics/promo920680.png b/old-ui/design/chromeStorePics/promo920680.png Binary files differdeleted file mode 100644 index 726bd810a..000000000 --- a/old-ui/design/chromeStorePics/promo920680.png +++ /dev/null diff --git a/old-ui/design/chromeStorePics/screen_dao_accounts.png b/old-ui/design/chromeStorePics/screen_dao_accounts.png Binary files differdeleted file mode 100644 index 1a2e8052c..000000000 --- a/old-ui/design/chromeStorePics/screen_dao_accounts.png +++ /dev/null diff --git a/old-ui/design/chromeStorePics/screen_dao_locked.png b/old-ui/design/chromeStorePics/screen_dao_locked.png Binary files differdeleted file mode 100644 index 6592c17e4..000000000 --- a/old-ui/design/chromeStorePics/screen_dao_locked.png +++ /dev/null diff --git a/old-ui/design/chromeStorePics/screen_dao_notification.png b/old-ui/design/chromeStorePics/screen_dao_notification.png Binary files differdeleted file mode 100644 index baeb2ec39..000000000 --- a/old-ui/design/chromeStorePics/screen_dao_notification.png +++ /dev/null diff --git a/old-ui/design/chromeStorePics/screen_wei_account.png b/old-ui/design/chromeStorePics/screen_wei_account.png Binary files differdeleted file mode 100644 index 23301e4bf..000000000 --- a/old-ui/design/chromeStorePics/screen_wei_account.png +++ /dev/null diff --git a/old-ui/design/chromeStorePics/screen_wei_notification.png b/old-ui/design/chromeStorePics/screen_wei_notification.png Binary files differdeleted file mode 100644 index 7a763e5df..000000000 --- a/old-ui/design/chromeStorePics/screen_wei_notification.png +++ /dev/null diff --git a/old-ui/design/metamask-logo-eyes.png b/old-ui/design/metamask-logo-eyes.png Binary files differdeleted file mode 100644 index c29331b28..000000000 --- a/old-ui/design/metamask-logo-eyes.png +++ /dev/null diff --git a/old-ui/design/wireframes/1st_time_use.png b/old-ui/design/wireframes/1st_time_use.png Binary files differdeleted file mode 100644 index c18ced5e2..000000000 --- a/old-ui/design/wireframes/1st_time_use.png +++ /dev/null diff --git a/old-ui/design/wireframes/metamask_wfs_jan_13.pdf b/old-ui/design/wireframes/metamask_wfs_jan_13.pdf Binary files differdeleted file mode 100644 index c77c9274a..000000000 --- a/old-ui/design/wireframes/metamask_wfs_jan_13.pdf +++ /dev/null diff --git a/old-ui/design/wireframes/metamask_wfs_jan_13.png b/old-ui/design/wireframes/metamask_wfs_jan_13.png Binary files differdeleted file mode 100644 index d71d7bdb4..000000000 --- a/old-ui/design/wireframes/metamask_wfs_jan_13.png +++ /dev/null diff --git a/old-ui/design/wireframes/metamask_wfs_jan_18.pdf b/old-ui/design/wireframes/metamask_wfs_jan_18.pdf Binary files differdeleted file mode 100644 index 592ba8532..000000000 --- a/old-ui/design/wireframes/metamask_wfs_jan_18.pdf +++ /dev/null diff --git a/old-ui/example.js b/old-ui/example.js deleted file mode 100644 index 4627c0e9c..000000000 --- a/old-ui/example.js +++ /dev/null @@ -1,123 +0,0 @@ -const injectCss = require('inject-css') -const MetaMaskUi = require('./index.js') -const MetaMaskUiCss = require('./css.js') -const EventEmitter = require('events').EventEmitter - -// account management - -var identities = { - '0x1113462427bcc9133bb46e88bcbe39cd7ef0e111': { - name: 'Walrus', - img: 'QmW6hcwYzXrNkuHrpvo58YeZvbZxUddv69ATSHY3BHpPdd', - address: '0x1113462427bcc9133bb46e88bcbe39cd7ef0e111', - balance: 220, - txCount: 4, - }, - '0x222462427bcc9133bb46e88bcbe39cd7ef0e7222': { - name: 'Tardus', - img: 'QmQYaRdrf2EhRhJWaHnts8Meu1mZiXrNib5W1P6cYmXWRL', - address: '0x222462427bcc9133bb46e88bcbe39cd7ef0e7222', - balance: 10.005, - txCount: 16, - }, - '0x333462427bcc9133bb46e88bcbe39cd7ef0e7333': { - name: 'Gambler', - img: 'QmW6hcwYzXrNkuHrpvo58YeZvbZxUddv69ATSHY3BHpPdd', - address: '0x333462427bcc9133bb46e88bcbe39cd7ef0e7333', - balance: 0.000001, - txCount: 1, - }, -} - -var unapprovedTxs = {} -addUnconfTx({ - from: '0x222462427bcc9133bb46e88bcbe39cd7ef0e7222', - to: '0x1113462427bcc9133bb46e88bcbe39cd7ef0e111', - value: '0x123', -}) -addUnconfTx({ - from: '0x1113462427bcc9133bb46e88bcbe39cd7ef0e111', - to: '0x333462427bcc9133bb46e88bcbe39cd7ef0e7333', - value: '0x0000', - data: '0x000462427bcc9133bb46e88bcbe39cd7ef0e7000', -}) - -function addUnconfTx (txParams) { - var time = (new Date()).getTime() - var id = createRandomId() - unapprovedTxs[id] = { - id: id, - txParams: txParams, - time: time, - } -} - -var isUnlocked = false -var selectedAccount = null - -function getState () { - return { - isUnlocked: isUnlocked, - identities: isUnlocked ? identities : {}, - unapprovedTxs: isUnlocked ? unapprovedTxs : {}, - selectedAccount: selectedAccount, - } -} - -var accountManager = new EventEmitter() - -accountManager.getState = function (cb) { - cb(null, getState()) -} - -accountManager.setLocked = function () { - isUnlocked = false - this._didUpdate() -} - -accountManager.submitPassword = function (password, cb) { - if (password === 'test') { - isUnlocked = true - cb(null, getState()) - this._didUpdate() - } else { - cb(new Error('Bad password -- try "test"')) - } -} - -accountManager.setSelectedAccount = function (address, cb) { - selectedAccount = address - cb(null, getState()) - this._didUpdate() -} - -accountManager.signTransaction = function (txParams, cb) { - alert('signing tx....') -} - -accountManager._didUpdate = function () { - this.emit('update', getState()) -} - -// start app - -var container = document.getElementById('app-content') - -var css = MetaMaskUiCss() -injectCss(css) - -MetaMaskUi({ - container: container, - accountManager: accountManager, -}) - -// util - -function createRandomId () { - // 13 time digits - var datePart = new Date().getTime() * Math.pow(10, 3) - // 3 random digits - var extraPart = Math.floor(Math.random() * Math.pow(10, 3)) - // 16 digits - return datePart + extraPart -} diff --git a/old-ui/lib/contract-namer.js b/old-ui/lib/contract-namer.js deleted file mode 100644 index f05e770cc..000000000 --- a/old-ui/lib/contract-namer.js +++ /dev/null @@ -1,33 +0,0 @@ -/* CONTRACT NAMER - * - * Takes an address, - * Returns a nicname if we have one stored, - * otherwise returns null. - */ - -const contractMap = require('eth-contract-metadata') -const ethUtil = require('ethereumjs-util') - -module.exports = function (addr, identities = {}) { - const checksummed = ethUtil.toChecksumAddress(addr) - if (contractMap[checksummed] && contractMap[checksummed].name) { - return contractMap[checksummed].name - } - - const address = addr.toLowerCase() - const ids = hashFromIdentities(identities) - return addrFromHash(address, ids) -} - -function hashFromIdentities (identities) { - const result = {} - for (const key in identities) { - result[key] = identities[key].name - } - return result -} - -function addrFromHash (addr, hash) { - const address = addr.toLowerCase() - return hash[address] || null -} diff --git a/old-ui/lib/etherscan-prefix-for-network.js b/old-ui/lib/etherscan-prefix-for-network.js deleted file mode 100644 index 2c1904f1c..000000000 --- a/old-ui/lib/etherscan-prefix-for-network.js +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = function (network) { - const net = parseInt(network) - let prefix - switch (net) { - case 1: // main net - prefix = '' - break - case 3: // ropsten test net - prefix = 'ropsten.' - break - case 4: // rinkeby test net - prefix = 'rinkeby.' - break - case 42: // kovan test net - prefix = 'kovan.' - break - default: - prefix = '' - } - return prefix -} diff --git a/old-ui/lib/icon-factory.js b/old-ui/lib/icon-factory.js deleted file mode 100644 index 27a74de66..000000000 --- a/old-ui/lib/icon-factory.js +++ /dev/null @@ -1,65 +0,0 @@ -var iconFactory -const isValidAddress = require('ethereumjs-util').isValidAddress -const toChecksumAddress = require('ethereumjs-util').toChecksumAddress -const contractMap = require('eth-contract-metadata') - -module.exports = function (jazzicon) { - if (!iconFactory) { - iconFactory = new IconFactory(jazzicon) - } - return iconFactory -} - -function IconFactory (jazzicon) { - this.jazzicon = jazzicon - this.cache = {} -} - -IconFactory.prototype.iconForAddress = function (address, diameter) { - const addr = toChecksumAddress(address) - if (iconExistsFor(addr)) { - return imageElFor(addr) - } - - return this.generateIdenticonSvg(address, diameter) -} - -// returns svg dom element -IconFactory.prototype.generateIdenticonSvg = function (address, diameter) { - var cacheId = `${address}:${diameter}` - // check cache, lazily generate and populate cache - var identicon = this.cache[cacheId] || (this.cache[cacheId] = this.generateNewIdenticon(address, diameter)) - // create a clean copy so you can modify it - var cleanCopy = identicon.cloneNode(true) - return cleanCopy -} - -// creates a new identicon -IconFactory.prototype.generateNewIdenticon = function (address, diameter) { - var numericRepresentation = jsNumberForAddress(address) - var identicon = this.jazzicon(diameter, numericRepresentation) - return identicon -} - -// util - -function iconExistsFor (address) { - return contractMap[address] && isValidAddress(address) && contractMap[address].logo -} - -function imageElFor (address) { - const contract = contractMap[address] - const fileName = contract.logo - const path = `images/contract/${fileName}` - const img = document.createElement('img') - img.src = path - img.style.width = '75%' - return img -} - -function jsNumberForAddress (address) { - var addr = address.slice(2, 10) - var seed = parseInt(addr, 16) - return seed -} - diff --git a/old-ui/lib/lost-accounts-notice.js b/old-ui/lib/lost-accounts-notice.js deleted file mode 100644 index 948b13db6..000000000 --- a/old-ui/lib/lost-accounts-notice.js +++ /dev/null @@ -1,23 +0,0 @@ -const summary = require('../app/util').addressSummary - -module.exports = function (lostAccounts) { - return { - date: new Date().toDateString(), - title: 'Account Problem Caught', - body: `MetaMask has fixed a bug where some accounts were previously mis-generated. This was a rare issue, but you were affected! - -We have successfully imported the accounts that were mis-generated, but they will no longer be recovered with your normal seed phrase. - -We have marked the affected accounts as "Loose", and recommend you transfer ether and tokens away from those accounts, or export & back them up elsewhere. - -Your affected accounts are: -${lostAccounts.map(acct => ` - ${summary(acct)}`).join('\n')} - -These accounts have been marked as "Loose" so they will be easy to recognize in the account list. - -For more information, please read [our blog post.][1] - -[1]: https://medium.com/metamask/metamask-3-migration-guide-914b79533cdd#.7d8ktj4h3 - `, - } -} diff --git a/old-ui/lib/persistent-form.js b/old-ui/lib/persistent-form.js deleted file mode 100644 index d4dc20b03..000000000 --- a/old-ui/lib/persistent-form.js +++ /dev/null @@ -1,61 +0,0 @@ -const inherits = require('util').inherits -const Component = require('react').Component -const defaultKey = 'persistent-form-default' -const eventName = 'keyup' - -module.exports = PersistentForm - -function PersistentForm () { - Component.call(this) -} - -inherits(PersistentForm, Component) - -PersistentForm.prototype.componentDidMount = function () { - const fields = document.querySelectorAll('[data-persistent-formid]') - const store = this.getPersistentStore() - - for (var i = 0; i < fields.length; i++) { - const field = fields[i] - const key = field.getAttribute('data-persistent-formid') - const cached = store[key] - if (cached !== undefined) { - field.value = cached - } - - field.addEventListener(eventName, this.persistentFieldDidUpdate.bind(this)) - } -} - -PersistentForm.prototype.getPersistentStore = function () { - let store = window.localStorage[this.persistentFormParentId || defaultKey] - if (store && store !== 'null') { - store = JSON.parse(store) - } else { - store = {} - } - return store -} - -PersistentForm.prototype.setPersistentStore = function (newStore) { - window.localStorage[this.persistentFormParentId || defaultKey] = JSON.stringify(newStore) -} - -PersistentForm.prototype.persistentFieldDidUpdate = function (event) { - const field = event.target - const store = this.getPersistentStore() - const key = field.getAttribute('data-persistent-formid') - const val = field.value - store[key] = val - this.setPersistentStore(store) -} - -PersistentForm.prototype.componentWillUnmount = function () { - const fields = document.querySelectorAll('[data-persistent-formid]') - for (var i = 0; i < fields.length; i++) { - const field = fields[i] - field.removeEventListener(eventName, this.persistentFieldDidUpdate.bind(this)) - } - this.setPersistentStore({}) -} - diff --git a/old-ui/lib/tx-helper.js b/old-ui/lib/tx-helper.js deleted file mode 100644 index 0a6f55a63..000000000 --- a/old-ui/lib/tx-helper.js +++ /dev/null @@ -1,28 +0,0 @@ -const valuesFor = require('../app/util').valuesFor -const log = require('loglevel') - -module.exports = function (unapprovedTxs, unapprovedMsgs, personalMsgs, typedMessages, network) { - log.debug('tx-helper called with params:') - log.debug({ unapprovedTxs, unapprovedMsgs, personalMsgs, typedMessages, network }) - - const txValues = network ? valuesFor(unapprovedTxs).filter(txMeta => txMeta.metamaskNetworkId === network) : valuesFor(unapprovedTxs) - log.debug(`tx helper found ${txValues.length} unapproved txs`) - - const msgValues = valuesFor(unapprovedMsgs) - log.debug(`tx helper found ${msgValues.length} unsigned messages`) - let allValues = txValues.concat(msgValues) - - const personalValues = valuesFor(personalMsgs) - log.debug(`tx helper found ${personalValues.length} unsigned personal messages`) - allValues = allValues.concat(personalValues) - - const typedValues = valuesFor(typedMessages) - log.debug(`tx helper found ${typedValues.length} unsigned typed messages`) - allValues = allValues.concat(typedValues) - - allValues = allValues.sort((a, b) => { - return a.time > b.time - }) - - return allValues -} diff --git a/package-lock.json b/package-lock.json index 3d3d38b19..739a0f57e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2761,11 +2761,18 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.0.tgz", "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", - "dev": true, "requires": { "es6-promisify": "^5.0.0" } }, + "agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "requires": { + "humanize-ms": "^1.2.1" + } + }, "airbnb-js-shims": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/airbnb-js-shims/-/airbnb-js-shims-1.4.1.tgz", @@ -6424,8 +6431,7 @@ "component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" }, "component-inherit": { "version": "0.0.3", @@ -6572,6 +6578,11 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" + }, "copy-concurrently": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", @@ -7504,8 +7515,7 @@ "data-uri-to-buffer": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", - "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==", - "dev": true + "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==" }, "date-format": { "version": "1.2.0", @@ -7613,8 +7623,7 @@ "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" }, "deepmerge": { "version": "0.2.10", @@ -7697,7 +7706,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", - "dev": true, "requires": { "ast-types": "0.x.x", "escodegen": "1.x.x", @@ -7707,8 +7715,7 @@ "esprima": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" } } }, @@ -9066,14 +9073,12 @@ "es6-promise": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", - "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==", - "dev": true + "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==" }, "es6-promisify": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "dev": true, "requires": { "es6-promise": "^4.0.3" } @@ -9140,7 +9145,6 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", - "dev": true, "requires": { "esprima": "^3.1.3", "estraverse": "^4.2.0", @@ -9152,14 +9156,12 @@ "esprima": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "optional": true } } @@ -9760,7 +9762,7 @@ } }, "eth-contract-metadata": { - "version": "github:MetaMask/eth-contract-metadata#4d855fea9a5c899059134e03986be9d98e844270", + "version": "github:MetaMask/eth-contract-metadata#f6201b0c4aca8e98321b9b0b65744bc2fe8e35fa", "from": "github:MetaMask/eth-contract-metadata#master" }, "eth-ens-namehash": { @@ -9812,7 +9814,7 @@ } }, "ethereumjs-abi": { - "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#2863c40e0982acfc0b7163f0285d4c56427c7799", + "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#d84a96796079c8595a0c78accd1e7709f2277215", "from": "git+https://github.com/ethereumjs/ethereumjs-abi.git", "requires": { "bn.js": "^4.10.0", @@ -9902,7 +9904,7 @@ } }, "ethereumjs-abi": { - "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#2863c40e0982acfc0b7163f0285d4c56427c7799", + "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#d84a96796079c8595a0c78accd1e7709f2277215", "from": "git+https://github.com/ethereumjs/ethereumjs-abi.git", "requires": { "bn.js": "^4.10.0", @@ -9971,7 +9973,7 @@ "dependencies": { "babelify": { "version": "7.3.0", - "resolved": "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz", + "resolved": "http://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz", "integrity": "sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU=", "requires": { "babel-core": "^6.0.14", @@ -10082,7 +10084,7 @@ } }, "ethereumjs-abi": { - "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#2863c40e0982acfc0b7163f0285d4c56427c7799", + "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#d84a96796079c8595a0c78accd1e7709f2277215", "from": "git+https://github.com/ethereumjs/ethereumjs-abi.git", "requires": { "bn.js": "^4.10.0", @@ -10190,7 +10192,7 @@ } }, "ethereumjs-abi": { - "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#2863c40e0982acfc0b7163f0285d4c56427c7799", + "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#d84a96796079c8595a0c78accd1e7709f2277215", "from": "git+https://github.com/ethereumjs/ethereumjs-abi.git", "requires": { "bn.js": "^4.10.0", @@ -10262,7 +10264,7 @@ "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8=" }, "ethereumjs-abi": { - "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#2863c40e0982acfc0b7163f0285d4c56427c7799", + "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#d84a96796079c8595a0c78accd1e7709f2277215", "from": "git+https://github.com/ethereumjs/ethereumjs-abi.git", "requires": { "bn.js": "^4.10.0", @@ -10485,7 +10487,7 @@ } }, "ethereumjs-abi": { - "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#2863c40e0982acfc0b7163f0285d4c56427c7799", + "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#d84a96796079c8595a0c78accd1e7709f2277215", "from": "git+https://github.com/ethereumjs/ethereumjs-abi.git", "requires": { "bn.js": "^4.10.0", @@ -10698,7 +10700,7 @@ "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8=" }, "ethereumjs-abi": { - "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#2863c40e0982acfc0b7163f0285d4c56427c7799", + "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#d84a96796079c8595a0c78accd1e7709f2277215", "from": "git+https://github.com/ethereumjs/ethereumjs-abi.git", "requires": { "bn.js": "^4.10.0", @@ -12098,8 +12100,7 @@ "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, "filename-regex": { "version": "2.0.1", @@ -12737,6 +12738,11 @@ "samsam": "1.x" } }, + "formidable": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", + "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==" + }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -12909,7 +12915,6 @@ "version": "0.3.10", "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", - "dev": true, "requires": { "readable-stream": "1.1.x", "xregexp": "2.0.0" @@ -12918,14 +12923,12 @@ "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, "readable-stream": { "version": "1.1.14", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -12936,8 +12939,7 @@ "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" } } }, @@ -18906,7 +18908,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.2.tgz", "integrity": "sha512-ZD325dMZOgerGqF/rF6vZXyFGTAay62svjQIT+X/oU2PtxYpFxvSkbsdi+oxIrsNxlZVd4y8wUDqkaExWTI/Cw==", - "dev": true, "requires": { "data-uri-to-buffer": "1", "debug": "2", @@ -21564,7 +21565,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", - "dev": true, "requires": { "agent-base": "4", "debug": "3.1.0" @@ -21574,7 +21574,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -21641,7 +21640,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", - "dev": true, "requires": { "agent-base": "^4.1.0", "debug": "^3.1.0" @@ -21651,7 +21649,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -21663,6 +21660,14 @@ "resolved": "https://registry.npmjs.org/human-standard-token-abi/-/human-standard-token-abi-2.0.0.tgz", "integrity": "sha512-m1f5DiIvqaNmpgphNqx2OziyTCj4Lvmmk28uMSxGWrOc9/lMpAKH8UcMPhvb13DMNZPzxn07WYFhxOGKuPLryg==" }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "requires": { + "ms": "^2.0.0" + } + }, "humanize-url": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/humanize-url/-/humanize-url-1.0.1.tgz", @@ -22146,8 +22151,7 @@ "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" }, "ipaddr.js": { "version": "1.5.2", @@ -24391,7 +24395,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, "requires": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -24430,6 +24433,11 @@ "resolve": "^1.1.7" } }, + "lil-uuid": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/lil-uuid/-/lil-uuid-0.1.1.tgz", + "integrity": "sha1-+e3PI/AOQr9D8PhD2Y2LU/M0HxY=" + }, "livereload-js": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", @@ -26428,8 +26436,7 @@ "netmask": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", - "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", - "dev": true + "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=" }, "next-tick": { "version": "1.0.0", @@ -28525,7 +28532,6 @@ "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, "requires": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.4", @@ -28538,8 +28544,7 @@ "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" } } }, @@ -28664,7 +28669,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-2.0.2.tgz", "integrity": "sha512-cDNAN1Ehjbf5EHkNY5qnRhGPUCp6SnpyVof5fRzN800QV1Y2OkzbH9rmjZkbBRa8igof903yOnjIl6z0SlAhxA==", - "dev": true, "requires": { "agent-base": "^4.2.0", "debug": "^3.1.0", @@ -28680,7 +28684,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -28691,7 +28694,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz", "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", - "dev": true, "requires": { "co": "^4.6.0", "degenerator": "^1.0.4", @@ -30958,8 +30960,7 @@ "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, "prepend-file": { "version": "1.3.1", @@ -31158,11 +31159,49 @@ "ipaddr.js": "1.5.2" } }, + "proxy-agent": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-2.3.1.tgz", + "integrity": "sha512-CNKuhC1jVtm8KJYFTS2ZRO71VCBx3QSA92So/e6NrY6GoJonkx3Irnk4047EsCcswczwqAekRj3s8qLRGahSKg==", + "requires": { + "agent-base": "^4.2.0", + "debug": "^3.1.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "lru-cache": "^4.1.2", + "pac-proxy-agent": "^2.0.1", + "proxy-from-env": "^1.0.0", + "socks-proxy-agent": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, "proxy-from-env": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=", - "dev": true + "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=" }, "proxyquire": { "version": "2.0.1", @@ -31203,8 +31242,7 @@ "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "psl": { "version": "1.1.29", @@ -31224,6 +31262,17 @@ "randombytes": "^2.0.1" } }, + "pubnub": { + "version": "4.21.7", + "resolved": "https://registry.npmjs.org/pubnub/-/pubnub-4.21.7.tgz", + "integrity": "sha512-TZ96GuY+gZIu9rJaqcO2cZ6tl4JPLruoUcN01sljm1CcDgzIZbOfcDSZp4NcZas4ECSqAAwo/izMMiImRRS4Yg==", + "requires": { + "agentkeepalive": "^3.5.2", + "lil-uuid": "^0.1.1", + "superagent": "^3.8.1", + "superagent-proxy": "^1.0.3" + } + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -31270,10 +31319,10 @@ "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", "dev": true }, - "qrcode-npm": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/qrcode-npm/-/qrcode-npm-0.0.3.tgz", - "integrity": "sha1-d+5vvvqcDyn6CdTRUggHxqYEK5o=" + "qrcode-generator": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/qrcode-generator/-/qrcode-generator-1.4.1.tgz", + "integrity": "sha512-KOdSAyFBPf0/5Z3mra4JfSbjrDlUn2J3YH8Rm33tRGbptxP4vhogLWysvkQp8mp5ix9u80Wfr4vxHXTeR9o0Ug==" }, "qs": { "version": "6.5.1", @@ -33816,8 +33865,7 @@ "smart-buffer": { "version": "1.1.15", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.1.15.tgz", - "integrity": "sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=", - "dev": true + "integrity": "sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=" }, "snapdragon": { "version": "0.8.2", @@ -34633,7 +34681,6 @@ "version": "1.1.10", "resolved": "https://registry.npmjs.org/socks/-/socks-1.1.10.tgz", "integrity": "sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o=", - "dev": true, "requires": { "ip": "^1.1.4", "smart-buffer": "^1.0.13" @@ -34643,7 +34690,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-3.0.1.tgz", "integrity": "sha512-ZwEDymm204mTzvdqyUqOdovVr2YRd2NYskrYrF2LXyZ9qDiMAoFESGK8CRphiO7rtbo2Y757k2Nia3x2hGtalA==", - "dev": true, "requires": { "agent-base": "^4.1.0", "socks": "^1.1.10" @@ -35986,6 +36032,89 @@ } } }, + "superagent": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", + "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", + "requires": { + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.2.0", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.3.5" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "superagent-proxy": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/superagent-proxy/-/superagent-proxy-1.0.3.tgz", + "integrity": "sha512-79Ujg1lRL2ICfuHUdX+H2MjIw73kB7bXsIkxLwHURz3j0XUmEEEoJ+u/wq+mKwna21Uejsm2cGR3OESA00TIjA==", + "requires": { + "debug": "^3.1.0", + "proxy-agent": "2" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -36536,8 +36665,7 @@ "thunkify": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", - "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=", - "dev": true + "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=" }, "tildify": { "version": "1.2.0", @@ -36945,7 +37073,6 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, "requires": { "prelude-ls": "~1.1.2" } @@ -38451,8 +38578,7 @@ "xregexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", - "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=", - "dev": true + "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=" }, "xtend": { "version": "4.0.1", @@ -38467,8 +38593,7 @@ "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" }, "yargs": { "version": "6.6.0", diff --git a/package.json b/package.json index 1636ea0a1..66e3d49ab 100644 --- a/package.json +++ b/package.json @@ -14,13 +14,9 @@ "test:single": "cross-env METAMASK_ENV=test mocha --require test/helper.js", "test:integration": "npm run test:integration:build && npm run test:flat && npm run test:mascara", "test:integration:build": "gulp build:scss", - "test:e2e:chrome": "shell-parallel -s 'npm run ganache:start' -x 'sleep 3 && npm run test:e2e:run:chrome'", "test:e2e:drizzle:beta": "SELENIUM_BROWSER=chrome test/e2e/beta/run-drizzle.sh", - "test:e2e:chrome:beta": "SELENIUM_BROWSER=chrome test/e2e/beta/run-all.sh", - "test:e2e:firefox": "shell-parallel -s 'npm run ganache:start' -x 'sleep 3 && npm run test:e2e:run:firefox'", - "test:e2e:firefox:beta": "SELENIUM_BROWSER=firefox test/e2e/beta/run-all.sh", - "test:e2e:run:chrome": "SELENIUM_BROWSER=chrome mocha test/e2e/metamask.spec --bail --recursive", - "test:e2e:run:firefox": "SELENIUM_BROWSER=firefox mocha test/e2e/metamask.spec --bail --recursive", + "test:e2e:chrome": "SELENIUM_BROWSER=chrome test/e2e/beta/run-all.sh", + "test:e2e:firefox": "SELENIUM_BROWSER=firefox test/e2e/beta/run-all.sh", "test:screens": "shell-parallel -s 'npm run ganache:start' -x 'sleep 3 && npm run test:screens:run'", "test:screens:run": "node test/screens/new-ui.js", "test:coverage": "nyc --reporter=text --reporter=html npm run test:unit && npm run test:coveralls-upload", @@ -176,9 +172,10 @@ "promise-filter": "^1.1.0", "promise-to-callback": "^1.0.0", "prop-types": "^15.6.1", + "pubnub": "^4.21.5", "pump": "^3.0.0", "pumpify": "^1.3.4", - "qrcode-npm": "0.0.3", + "qrcode-generator": "1.4.1", "ramda": "^0.24.1", "react": "^15.6.2", "react-addons-css-transition-group": "^15.6.0", diff --git a/test/unit/components/binary-renderer-test.js b/test/unit/components/binary-renderer-test.js deleted file mode 100644 index e428c26ad..000000000 --- a/test/unit/components/binary-renderer-test.js +++ /dev/null @@ -1,23 +0,0 @@ -var assert = require('assert') -var BinaryRenderer = require('../../../old-ui/app/components/binary-renderer') - -describe('BinaryRenderer', function () { - let binaryRenderer - const message = 'Hello, world!' - const buffer = Buffer.from(message, 'utf8') - const hex = buffer.toString('hex') - - beforeEach(function () { - binaryRenderer = new BinaryRenderer() - }) - - it('recovers message', function () { - const result = binaryRenderer.hexToText(hex) - assert.equal(result, message) - }) - - it('recovers message with hex prefix', function () { - const result = binaryRenderer.hexToText('0x' + hex) - assert.equal(result, message) - }) -}) diff --git a/test/unit/components/bn-as-decimal-input-test.js b/test/unit/components/bn-as-decimal-input-test.js deleted file mode 100644 index fab396548..000000000 --- a/test/unit/components/bn-as-decimal-input-test.js +++ /dev/null @@ -1,89 +0,0 @@ -var assert = require('assert') - -const additions = require('react-testutils-additions') -const h = require('react-hyperscript') -const ReactTestUtils = require('react-addons-test-utils') -const ethUtil = require('ethereumjs-util') -const BN = ethUtil.BN - -var BnInput = require('../../../old-ui/app/components/bn-as-decimal-input') - -describe('BnInput', function () { - it('can tolerate a gas decimal number at a high precision', function (done) { - const renderer = ReactTestUtils.createRenderer() - - let valueStr = '20' - while (valueStr.length < 20) { - valueStr += '0' - } - const value = new BN(valueStr, 10) - - const inputStr = '2.3' - - let targetStr = '23' - while (targetStr.length < 19) { - targetStr += '0' - } - const target = new BN(targetStr, 10) - - const precision = 18 // ether precision - const scale = 18 - - const props = { - value, - scale, - precision, - onChange: (newBn) => { - assert.equal(newBn.toString(), target.toString(), 'should tolerate increase') - done() - }, - } - - const inputComponent = h(BnInput, props) - const component = additions.renderIntoDocument(inputComponent) - renderer.render(inputComponent) - const input = additions.find(component, 'input.hex-input')[0] - ReactTestUtils.Simulate.change(input, { preventDefault () {}, target: { - value: inputStr, - checkValidity () { return true } }, - }) - }) - - it('can tolerate wei precision', function (done) { - const renderer = ReactTestUtils.createRenderer() - - const valueStr = '1000000000' - - const value = new BN(valueStr, 10) - const inputStr = '1.000000001' - - - const targetStr = '1000000001' - - const target = new BN(targetStr, 10) - - const precision = 9 // gwei precision - const scale = 9 - - const props = { - value, - scale, - precision, - onChange: (newBn) => { - assert.equal(newBn.toString(), target.toString(), 'should tolerate increase') - const reInput = BnInput.prototype.downsize(newBn.toString(), 9, 9) - assert.equal(reInput.toString(), inputStr, 'should tolerate increase') - done() - }, - } - - const inputComponent = h(BnInput, props) - const component = additions.renderIntoDocument(inputComponent) - renderer.render(inputComponent) - const input = additions.find(component, 'input.hex-input')[0] - ReactTestUtils.Simulate.change(input, { preventDefault () {}, target: { - value: inputStr, - checkValidity () { return true } }, - }) - }) -}) diff --git a/test/unit/nameForAccount_test.js b/test/unit/nameForAccount_test.js deleted file mode 100644 index 9bb02c6bc..000000000 --- a/test/unit/nameForAccount_test.js +++ /dev/null @@ -1,41 +0,0 @@ -var assert = require('assert') -var sinon = require('sinon') - -var path = require('path') -var contractNamer = require(path.join(__dirname, '..', '..', 'old-ui', 'lib', 'contract-namer.js')) - -describe('contractNamer', function () { - beforeEach(function () { - this.sinon = sinon.createSandbox() - }) - - afterEach(function () { - this.sinon.restore() - }) - - describe('naming a contract', function () { - it('should return nothing for an unknown random account', function () { - const input = '0x2386F26FC10000' - const output = contractNamer(input) - assert.deepEqual(output, null) - }) - - it('should accept identities as an optional second parameter', function () { - const input = '0x2386F26FC10000'.toLowerCase() - const expected = 'bar' - const identities = {} - identities[input] = { name: expected } - const output = contractNamer(input, identities) - assert.deepEqual(output, expected) - }) - - it('should check for identities case insensitively', function () { - const input = '0x2386F26FC10000'.toLowerCase() - const expected = 'bar' - const identities = {} - identities[input] = { name: expected } - const output = contractNamer(input.toUpperCase(), identities) - assert.deepEqual(output, expected) - }) - }) -}) diff --git a/test/unit/ui/add-token.spec.js b/test/unit/ui/add-token.spec.js deleted file mode 100644 index f6b6155a0..000000000 --- a/test/unit/ui/add-token.spec.js +++ /dev/null @@ -1,43 +0,0 @@ -const assert = require('assert') -const { createMockStore } = require('redux-test-utils') -const h = require('react-hyperscript') -const { shallowWithStore } = require('../../lib/render-helpers') -const AddTokenScreen = require('../../../old-ui/app/add-token') - -describe('Add Token Screen', function () { - let addTokenComponent, store, component - const mockState = { - metamask: { - identities: { - '0x7d3517b0d011698406d6e0aed8453f0be2697926': { - 'address': '0x7d3517b0d011698406d6e0aed8453f0be2697926', - 'name': 'Add Token Name', - }, - }, - }, - } - beforeEach(function () { - store = createMockStore(mockState) - component = shallowWithStore(h(AddTokenScreen), store) - addTokenComponent = component.dive() - }) - - describe('#ValidateInputs', function () { - - it('Default State', function () { - addTokenComponent.instance().validateInputs() - const state = addTokenComponent.state() - assert.equal(state.warning, 'Address is invalid.') - }) - - it('Address is a Metamask Identity', function () { - addTokenComponent.setState({ - address: '0x7d3517b0d011698406d6e0aed8453f0be2697926', - }) - addTokenComponent.instance().validateInputs() - const state = addTokenComponent.state() - assert.equal(state.warning, 'Personal address detected. Input the token contract address.') - }) - - }) -}) diff --git a/ui/app/actions.js b/ui/app/actions.js index f3e9d2b27..a9c3d2ccf 100644 --- a/ui/app/actions.js +++ b/ui/app/actions.js @@ -63,6 +63,7 @@ var actions = { CREATE_NEW_VAULT_IN_PROGRESS: 'CREATE_NEW_VAULT_IN_PROGRESS', SHOW_CREATE_VAULT: 'SHOW_CREATE_VAULT', SHOW_RESTORE_VAULT: 'SHOW_RESTORE_VAULT', + fetchInfoToSync, FORGOT_PASSWORD: 'FORGOT_PASSWORD', forgotPassword: forgotPassword, markPasswordForgotten, @@ -635,6 +636,21 @@ function requestRevealSeedWords (password) { } } +function fetchInfoToSync () { + return dispatch => { + log.debug(`background.fetchInfoToSync`) + return new Promise((resolve, reject) => { + background.fetchInfoToSync((err, result) => { + if (err) { + dispatch(actions.displayWarning(err.message)) + return reject(err) + } + resolve(result) + }) + }) + } +} + function resetAccount () { return dispatch => { dispatch(actions.showLoadingIndication()) diff --git a/ui/app/app.js b/ui/app/app.js index 9c44bd553..1001adc9a 100644 --- a/ui/app/app.js +++ b/ui/app/app.js @@ -25,6 +25,7 @@ import Lock from './components/pages/lock' import UiMigrationAnnouncement from './components/ui-migration-annoucement' const RestoreVaultPage = require('./components/pages/keychains/restore-vault').default const RevealSeedConfirmation = require('./components/pages/keychains/reveal-seed') +const MobileSyncPage = require('./components/pages/mobile-sync') const AddTokenPage = require('./components/pages/add-token') const ConfirmAddTokenPage = require('./components/pages/confirm-add-token') const ConfirmAddSuggestedTokenPage = require('./components/pages/confirm-add-suggested-token') @@ -55,6 +56,7 @@ import { UNLOCK_ROUTE, SETTINGS_ROUTE, REVEAL_SEED_ROUTE, + MOBILE_SYNC_ROUTE, RESTORE_VAULT_ROUTE, ADD_TOKEN_ROUTE, CONFIRM_ADD_TOKEN_ROUTE, @@ -90,6 +92,7 @@ class App extends Component { <Initialized path={UNLOCK_ROUTE} component={UnlockPage} exact /> <Initialized path={RESTORE_VAULT_ROUTE} component={RestoreVaultPage} exact /> <Authenticated path={REVEAL_SEED_ROUTE} component={RevealSeedConfirmation} exact /> + <Authenticated path={MOBILE_SYNC_ROUTE} component={MobileSyncPage} exact /> <Authenticated path={SETTINGS_ROUTE} component={Settings} /> <Authenticated path={NOTICE_ROUTE} component={NoticeScreen} exact /> <Authenticated path={`${CONFIRM_TRANSACTION_ROUTE}/:id?`} component={ConfirmTransaction} /> diff --git a/ui/app/components/pages/mobile-sync/index.js b/ui/app/components/pages/mobile-sync/index.js new file mode 100644 index 000000000..22a69d092 --- /dev/null +++ b/ui/app/components/pages/mobile-sync/index.js @@ -0,0 +1,387 @@ +const { Component } = require('react') +const { connect } = require('react-redux') +const PropTypes = require('prop-types') +const h = require('react-hyperscript') +const classnames = require('classnames') +const PubNub = require('pubnub') + +const { requestRevealSeedWords, fetchInfoToSync } = require('../../../actions') +const { DEFAULT_ROUTE } = require('../../../routes') +const actions = require('../../../actions') + +const qrCode = require('qrcode-generator') + +import Button from '../../button' +import LoadingScreen from '../../loading-screen' + +const PASSWORD_PROMPT_SCREEN = 'PASSWORD_PROMPT_SCREEN' +const REVEAL_SEED_SCREEN = 'REVEAL_SEED_SCREEN' + +class MobileSyncPage extends Component { + static propTypes = { + history: PropTypes.object, + selectedAddress: PropTypes.string, + displayWarning: PropTypes.func, + fetchInfoToSync: PropTypes.func, + requestRevealSeedWords: PropTypes.func, + } + + constructor (props) { + super(props) + + this.state = { + screen: PASSWORD_PROMPT_SCREEN, + password: '', + seedWords: null, + error: null, + syncing: false, + completed: false, + } + + this.syncing = false + } + + componentDidMount () { + const passwordBox = document.getElementById('password-box') + if (passwordBox) { + passwordBox.focus() + } + } + + handleSubmit (event) { + event.preventDefault() + this.setState({ seedWords: null, error: null }) + this.props.requestRevealSeedWords(this.state.password) + .then(seedWords => { + this.generateCipherKeyAndChannelName() + this.setState({ seedWords, screen: REVEAL_SEED_SCREEN }) + this.initWebsockets() + }) + .catch(error => this.setState({ error: error.message })) + } + + generateCipherKeyAndChannelName () { + this.cipherKey = `${this.props.selectedAddress.substr(-4)}-${PubNub.generateUUID()}` + this.channelName = `mm-${PubNub.generateUUID()}` + } + + initWebsockets () { + this.pubnub = new PubNub({ + subscribeKey: process.env.PUBNUB_SUB_KEY, + publishKey: process.env.PUBNUB_PUB_KEY, + cipherKey: this.cipherKey, + ssl: true, + }) + + this.pubnubListener = this.pubnub.addListener({ + message: (data) => { + const {channel, message} = data + // handle message + if (channel !== this.channelName || !message) { + return false + } + + if (message.event === 'start-sync') { + this.startSyncing() + } else if (message.event === 'end-sync') { + this.disconnectWebsockets() + this.setState({syncing: false, completed: true}) + } + }, + }) + + this.pubnub.subscribe({ + channels: [this.channelName], + withPresence: false, + }) + + } + + disconnectWebsockets () { + if (this.pubnub && this.pubnubListener) { + this.pubnub.disconnect(this.pubnubListener) + } + } + + // Calculating a PubNub Message Payload Size. + calculatePayloadSize (channel, message) { + return encodeURIComponent( + channel + JSON.stringify(message) + ).length + 100 + } + + chunkString (str, size) { + const numChunks = Math.ceil(str.length / size) + const chunks = new Array(numChunks) + for (let i = 0, o = 0; i < numChunks; ++i, o += size) { + chunks[i] = str.substr(o, size) + } + return chunks + } + + notifyError (errorMsg) { + return new Promise((resolve, reject) => { + this.pubnub.publish( + { + message: { + event: 'error-sync', + data: errorMsg, + }, + channel: this.channelName, + sendByPost: false, // true to send via post + storeInHistory: false, + }, + (status, response) => { + if (!status.error) { + resolve() + } else { + reject(response) + } + }) + }) + } + + async startSyncing () { + if (this.syncing) return false + this.syncing = true + this.setState({syncing: true}) + + const { accounts, network, preferences, transactions } = await this.props.fetchInfoToSync() + + const allDataStr = JSON.stringify({ + accounts, + network, + preferences, + transactions, + udata: { + pwd: this.state.password, + seed: this.state.seedWords, + }, + }) + + const chunks = this.chunkString(allDataStr, 17000) + const totalChunks = chunks.length + try { + for (let i = 0; i < totalChunks; i++) { + await this.sendMessage(chunks[i], i + 1, totalChunks) + } + } catch (e) { + this.props.displayWarning('Sync failed :(') + this.setState({syncing: false}) + this.syncing = false + this.notifyError(e.toString()) + } + } + + sendMessage (data, pkg, count) { + return new Promise((resolve, reject) => { + this.pubnub.publish( + { + message: { + event: 'syncing-data', + data, + totalPkg: count, + currentPkg: pkg, + }, + channel: this.channelName, + sendByPost: false, // true to send via post + storeInHistory: false, + }, + (status, response) => { + if (!status.error) { + resolve() + } else { + reject(response) + } + } + ) + }) + } + + + componentWillUnmount () { + this.disconnectWebsockets() + } + + renderWarning (text) { + return ( + h('.page-container__warning-container', [ + h('.page-container__warning-message', [ + h('div', [text]), + ]), + ]) + ) + } + + renderContent () { + const { t } = this.context + + if (this.state.syncing) { + return h(LoadingScreen, {loadingMessage: 'Sync in progress'}) + } + + if (this.state.completed) { + return h('div.reveal-seed__content', {}, + h('label.reveal-seed__label', { + style: { + width: '100%', + textAlign: 'center', + }, + }, t('syncWithMobileComplete')), + ) + } + + return this.state.screen === PASSWORD_PROMPT_SCREEN + ? h('div', {}, [ + this.renderWarning(this.context.t('mobileSyncText')), + h('.reveal-seed__content', [ + this.renderPasswordPromptContent(), + ]), + ]) + : h('div', {}, [ + this.renderWarning(this.context.t('syncWithMobileBeCareful')), + h('.reveal-seed__content', [ this.renderRevealSeedContent() ]), + ]) + } + + renderPasswordPromptContent () { + const { t } = this.context + + return ( + h('form', { + onSubmit: event => this.handleSubmit(event), + }, [ + h('label.input-label', { + htmlFor: 'password-box', + }, t('enterPasswordContinue')), + h('.input-group', [ + h('input.form-control', { + type: 'password', + placeholder: t('password'), + id: 'password-box', + value: this.state.password, + onChange: event => this.setState({ password: event.target.value }), + className: classnames({ 'form-control--error': this.state.error }), + }), + ]), + this.state.error && h('.reveal-seed__error', this.state.error), + ]) + ) + } + + renderRevealSeedContent () { + + const qrImage = qrCode(0, 'M') + qrImage.addData(`metamask-sync:${this.channelName}|@|${this.cipherKey}`) + qrImage.make() + + const { t } = this.context + return ( + h('div', [ + h('label.reveal-seed__label', { + style: { + width: '100%', + textAlign: 'center', + }, + }, t('syncWithMobileScanThisCode')), + h('.div.qr-wrapper', { + style: { + display: 'flex', + justifyContent: 'center', + }, + dangerouslySetInnerHTML: { + __html: qrImage.createTableTag(4), + }, + }), + ]) + ) + } + + renderFooter () { + return this.state.screen === PASSWORD_PROMPT_SCREEN + ? this.renderPasswordPromptFooter() + : this.renderRevealSeedFooter() + } + + renderPasswordPromptFooter () { + return ( + h('div.new-account-import-form__buttons', {style: {padding: 30}}, [ + + h(Button, { + type: 'default', + large: true, + className: 'new-account-create-form__button', + onClick: () => this.props.history.push(DEFAULT_ROUTE), + }, this.context.t('cancel')), + + h(Button, { + type: 'primary', + large: true, + className: 'new-account-create-form__button', + onClick: event => this.handleSubmit(event), + disabled: this.state.password === '', + }, this.context.t('next')), + ]) + ) + } + + renderRevealSeedFooter () { + return ( + h('.page-container__footer', {style: {padding: 30}}, [ + h(Button, { + type: 'default', + large: true, + className: 'page-container__footer-button', + onClick: () => this.props.history.push(DEFAULT_ROUTE), + }, this.context.t('close')), + ]) + ) + } + + render () { + return ( + h('.page-container', [ + h('.page-container__header', [ + h('.page-container__title', this.context.t('syncWithMobileTitle')), + this.state.screen === PASSWORD_PROMPT_SCREEN ? h('.page-container__subtitle', this.context.t('syncWithMobileDesc')) : null, + this.state.screen === PASSWORD_PROMPT_SCREEN ? h('.page-container__subtitle', this.context.t('syncWithMobileDescNewUsers')) : null, + ]), + h('.page-container__content', [ + this.renderContent(), + ]), + this.renderFooter(), + ]) + ) + } +} + +MobileSyncPage.propTypes = { + requestRevealSeedWords: PropTypes.func, + fetchInfoToSync: PropTypes.func, + history: PropTypes.object, +} + +MobileSyncPage.contextTypes = { + t: PropTypes.func, +} + +const mapDispatchToProps = dispatch => { + return { + requestRevealSeedWords: password => dispatch(requestRevealSeedWords(password)), + fetchInfoToSync: () => dispatch(fetchInfoToSync()), + displayWarning: (message) => dispatch(actions.displayWarning(message || null)), + } + +} + +const mapStateToProps = state => { + const { + metamask: { selectedAddress }, + } = state + + return { + selectedAddress, + } +} + +module.exports = connect(mapStateToProps, mapDispatchToProps)(MobileSyncPage) diff --git a/ui/app/components/pages/settings/settings-tab/settings-tab.component.js b/ui/app/components/pages/settings/settings-tab/settings-tab.component.js index 1c02b2507..661cbd1dc 100644 --- a/ui/app/components/pages/settings/settings-tab/settings-tab.component.js +++ b/ui/app/components/pages/settings/settings-tab/settings-tab.component.js @@ -5,7 +5,7 @@ import validUrl from 'valid-url' import { exportAsFile } from '../../../../util' import SimpleDropdown from '../../../dropdowns/simple-dropdown' import ToggleButton from 'react-toggle-button' -import { REVEAL_SEED_ROUTE } from '../../../../routes' +import { REVEAL_SEED_ROUTE, MOBILE_SYNC_ROUTE } from '../../../../routes' import locales from '../../../../../../app/_locales/index.json' import TextField from '../../../text-field' import Button from '../../../button' @@ -46,6 +46,7 @@ export default class SettingsTab extends PureComponent { delRpcTarget: PropTypes.func, displayWarning: PropTypes.func, revealSeedConfirmation: PropTypes.func, + setFeatureFlagToBeta: PropTypes.func, showClearApprovalModal: PropTypes.func, showResetAccountConfirmationModal: PropTypes.func, warning: PropTypes.string, @@ -61,6 +62,7 @@ export default class SettingsTab extends PureComponent { setUseNativeCurrencyAsPrimaryCurrencyPreference: PropTypes.func, setAdvancedInlineGasFeatureFlag: PropTypes.func, advancedInlineGas: PropTypes.bool, + mobileSync: PropTypes.bool, } state = { @@ -338,6 +340,39 @@ export default class SettingsTab extends PureComponent { ) } + + renderMobileSync () { + const { t } = this.context + const { history, mobileSync } = this.props + + if (!mobileSync) { + return + } + + return ( + <div className="settings-page__content-row"> + <div className="settings-page__content-item"> + <span>{ t('syncWithMobile') }</span> + </div> + <div className="settings-page__content-item"> + <div className="settings-page__content-item-col"> + <Button + type="primary" + large + onClick={event => { + event.preventDefault() + history.push(MOBILE_SYNC_ROUTE) + }} + > + { t('syncWithMobile') } + </Button> + </div> + </div> + </div> + ) + } + + renderResetAccount () { const { t } = this.context const { showResetAccountConfirmationModal } = this.props @@ -538,6 +573,7 @@ export default class SettingsTab extends PureComponent { { this.renderHexDataOptIn() } { this.renderAdvancedGasInputInline() } { this.renderBlockieOptIn() } + { this.renderMobileSync() } </div> ) } diff --git a/ui/app/components/pages/settings/settings-tab/settings-tab.container.js b/ui/app/components/pages/settings/settings-tab/settings-tab.container.js index 49da0db12..72458ba33 100644 --- a/ui/app/components/pages/settings/settings-tab/settings-tab.container.js +++ b/ui/app/components/pages/settings/settings-tab/settings-tab.container.js @@ -26,6 +26,7 @@ const mapStateToProps = state => { sendHexData, privacyMode, advancedInlineGas, + mobileSync, } = {}, provider = {}, currentLocale, @@ -44,6 +45,7 @@ const mapStateToProps = state => { privacyMode, provider, useNativeCurrencyAsPrimaryCurrency, + mobileSync, } } diff --git a/ui/app/components/qr-code.js b/ui/app/components/qr-code.js index 1c07e244c..312815891 100644 --- a/ui/app/components/qr-code.js +++ b/ui/app/components/qr-code.js @@ -1,6 +1,6 @@ const Component = require('react').Component const h = require('react-hyperscript') -const qrCode = require('qrcode-npm').qrcode +const qrCode = require('qrcode-generator') const inherits = require('util').inherits const connect = require('react-redux').connect const { isHexPrefixed } = require('ethereumjs-util') diff --git a/ui/app/components/send/send-content/send-gas-row/send-gas-row.container.js b/ui/app/components/send/send-content/send-gas-row/send-gas-row.container.js index 50cb47178..a187d61a2 100644 --- a/ui/app/components/send/send-content/send-gas-row/send-gas-row.container.js +++ b/ui/app/components/send/send-content/send-gas-row/send-gas-row.container.js @@ -26,7 +26,7 @@ import { } from '../../../../ducks/gas.duck' import { getGasLoadingError, gasFeeIsInError, getGasButtonGroupShown } from './send-gas-row.selectors.js' import { showModal, setGasPrice, setGasLimit, setGasTotal } from '../../../../actions' -import { getAdvancedInlineGasShown, getCurrentEthBalance } from '../../../../selectors' +import { getAdvancedInlineGasShown, getCurrentEthBalance, getSelectedToken } from '../../../../selectors' import SendGasRow from './send-gas-row.component' export default connect(mapStateToProps, mapDispatchToProps, mergeProps)(SendGasRow) @@ -42,7 +42,7 @@ function mapStateToProps (state) { const balance = getCurrentEthBalance(state) const insufficientBalance = !isBalanceSufficient({ - amount: getSendAmount(state), + amount: getSelectedToken(state) ? '0x0' : getSendAmount(state), gasTotal, balance, conversionRate, diff --git a/ui/app/components/send/send-content/send-gas-row/tests/send-gas-row-container.test.js b/ui/app/components/send/send-content/send-gas-row/tests/send-gas-row-container.test.js index 723c406f7..12e78657b 100644 --- a/ui/app/components/send/send-content/send-gas-row/tests/send-gas-row-container.test.js +++ b/ui/app/components/send/send-content/send-gas-row/tests/send-gas-row-container.test.js @@ -35,6 +35,7 @@ proxyquire('../send-gas-row.container.js', { '../../../../selectors': { getCurrentEthBalance: (s) => `mockCurrentEthBalance:${s}`, getAdvancedInlineGasShown: (s) => `mockAdvancedInlineGasShown:${s}`, + getSelectedToken: () => false, }, '../../send.selectors.js': { getConversionRate: (s) => `mockConversionRate:${s}`, diff --git a/ui/app/components/send/send-footer/tests/send-footer-container.test.js b/ui/app/components/send/send-footer/tests/send-footer-container.test.js index cf4c893ee..daefa5103 100644 --- a/ui/app/components/send/send-footer/tests/send-footer-container.test.js +++ b/ui/app/components/send/send-footer/tests/send-footer-container.test.js @@ -14,7 +14,9 @@ const actionSpies = { } const utilsStubs = { addressIsNew: sinon.stub().returns(true), - constructTxParams: sinon.stub().returns('mockConstructedTxParams'), + constructTxParams: sinon.stub().returns({ + value: 'mockAmount', + }), constructUpdatedTx: sinon.stub().returns('mockConstructedUpdatedTxParams'), } @@ -115,7 +117,7 @@ describe('send-footer container', () => { ) assert.deepEqual( actionSpies.signTokenTx.getCall(0).args, - [ '0xabc', 'mockTo', 'mockAmount', 'mockConstructedTxParams' ] + [ '0xabc', 'mockTo', 'mockAmount', { value: 'mockAmount' } ] ) }) @@ -143,7 +145,7 @@ describe('send-footer container', () => { ) assert.deepEqual( actionSpies.signTx.getCall(0).args, - [ 'mockConstructedTxParams' ] + [ { value: 'mockAmount' } ] ) }) }) diff --git a/ui/app/components/send/send.utils.js b/ui/app/components/send/send.utils.js index b2ac41e9c..d78b7736f 100644 --- a/ui/app/components/send/send.utils.js +++ b/ui/app/components/send/send.utils.js @@ -234,10 +234,14 @@ async function estimateGas ({ if (to) { paramsForGasEstimate.to = to } + + if (!value || value === '0') { + paramsForGasEstimate.value = '0xff' + } } // if not, fall back to block gasLimit - paramsForGasEstimate.gas = ethUtil.addHexPrefix(multiplyCurrencies(blockGasLimit, 0.95, { + paramsForGasEstimate.gas = ethUtil.addHexPrefix(multiplyCurrencies(blockGasLimit || '0x5208', 0.95, { multiplicandBase: 16, multiplierBase: 10, roundDown: '0', diff --git a/ui/app/components/send/tests/send-utils.test.js b/ui/app/components/send/tests/send-utils.test.js index f31e1221b..48fa09392 100644 --- a/ui/app/components/send/tests/send-utils.test.js +++ b/ui/app/components/send/tests/send-utils.test.js @@ -316,6 +316,7 @@ describe('send utils', () => { from: 'mockAddress', gas: '0x64x0.95', to: '0xisContract', + value: '0xff', } beforeEach(() => { @@ -373,7 +374,7 @@ describe('send utils', () => { assert.equal(baseMockParams.estimateGasMethod.callCount, 1) assert.deepEqual( baseMockParams.estimateGasMethod.getCall(0).args[0], - { gasPrice: undefined, value: undefined, data, from: baseExpectedCall.from, gas: baseExpectedCall.gas}, + { gasPrice: undefined, value: '0xff', data, from: baseExpectedCall.from, gas: baseExpectedCall.gas}, ) assert.equal(result, '0xabc16') }) diff --git a/ui/app/components/shapeshift-form.js b/ui/app/components/shapeshift-form.js index a842bcc8b..b22c01e8f 100644 --- a/ui/app/components/shapeshift-form.js +++ b/ui/app/components/shapeshift-form.js @@ -4,7 +4,7 @@ const PropTypes = require('prop-types') const Component = require('react').Component const connect = require('react-redux').connect const classnames = require('classnames') -const { qrcode } = require('qrcode-npm') +const qrcode = require('qrcode-generator') const { shapeShiftSubview, pairUpdate, buyWithShapeShift } = require('../actions') const { isValidAddress } = require('../util') const SimpleDropdown = require('./dropdowns/simple-dropdown') diff --git a/ui/app/reducers/metamask.js b/ui/app/reducers/metamask.js index 5a08f2d09..0de56ddbb 100644 --- a/ui/app/reducers/metamask.js +++ b/ui/app/reducers/metamask.js @@ -36,7 +36,7 @@ function reduceMetamask (state, action) { tokenBalance: '0x0', from: '', to: '', - amount: '0x0', + amount: '0', memo: '', errors: {}, maxModeOn: false, diff --git a/ui/app/routes.js b/ui/app/routes.js index fcf3d3e68..2f4863547 100644 --- a/ui/app/routes.js +++ b/ui/app/routes.js @@ -4,6 +4,7 @@ const LOCK_ROUTE = '/lock' const SETTINGS_ROUTE = '/settings' const INFO_ROUTE = '/settings/info' const REVEAL_SEED_ROUTE = '/seed' +const MOBILE_SYNC_ROUTE = '/mobile-sync' const CONFIRM_SEED_ROUTE = '/confirm-seed' const RESTORE_VAULT_ROUTE = '/restore-vault' const ADD_TOKEN_ROUTE = '/add-token' @@ -43,6 +44,7 @@ module.exports = { SETTINGS_ROUTE, INFO_ROUTE, REVEAL_SEED_ROUTE, + MOBILE_SYNC_ROUTE, CONFIRM_SEED_ROUTE, RESTORE_VAULT_ROUTE, ADD_TOKEN_ROUTE, |