From b3b928ae4ff5da7cd21e033dbdf94963e0e81ddd Mon Sep 17 00:00:00 2001 From: Jonas Hermsmeier Date: Fri, 7 Apr 2017 21:34:18 +0200 Subject: [PATCH] feat(image-stream): Support Apple Disk Images (#1257) This adds support for flashing Apple Disk Images (.dmg) Change-Type: minor --- .gitattributes | 1 + lib/image-stream/handlers.js | 30 +++++ lib/image-stream/supported.js | 4 + lib/image-stream/utils.js | 34 +++--- npm-shrinkwrap.json | 98 +++++++++++++---- package.json | 4 +- tests/gui/models/supported-formats.spec.js | 2 +- tests/image-stream/data/dmg/raw.dmg | Bin 0 -> 1675140 bytes .../image-stream/data/dmg/zlib-compressed.dmg | Bin 0 -> 17819 bytes tests/image-stream/data/images/raw.img | Bin 0 -> 2342912 bytes .../data/images/zlib-compressed.img | Bin 0 -> 9400320 bytes tests/image-stream/dmg.spec.js | 104 ++++++++++++++++++ tests/image-stream/utils.spec.js | 49 +++++---- 13 files changed, 268 insertions(+), 58 deletions(-) create mode 100644 tests/image-stream/data/dmg/raw.dmg create mode 100644 tests/image-stream/data/dmg/zlib-compressed.dmg create mode 100644 tests/image-stream/data/images/raw.img create mode 100644 tests/image-stream/data/images/zlib-compressed.img create mode 100644 tests/image-stream/dmg.spec.js diff --git a/.gitattributes b/.gitattributes index 69f141f2..8d2169d9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -30,3 +30,4 @@ Makefile text *.png binary *.xz binary *.zip binary +*.dmg binary diff --git a/lib/image-stream/handlers.js b/lib/image-stream/handlers.js index d46673fb..fbe2b9c3 100644 --- a/lib/image-stream/handlers.js +++ b/lib/image-stream/handlers.js @@ -23,6 +23,7 @@ const lzma = Bluebird.promisifyAll(require('lzma-native')); const zlib = require('zlib'); const unbzip2Stream = require('unbzip2-stream'); const gzip = require('./gzip'); +const udif = Bluebird.promisifyAll(require('udif')); const archive = require('./archive'); const zipArchiveHooks = require('./archive-hooks/zip'); @@ -125,6 +126,35 @@ module.exports = { }); }, + /** + * @summary Handle Apple disk images (.dmg) + * @function + * @public + * @memberof handlers + * + * @param {String} file - file path + * @param {Object} options - options + * @param {Number} [options.size] - file size + * + * @fulfil {Object} - image metadata + * @returns {Promise} + */ + 'application/x-apple-diskimage': (file, options) => { + return udif.getUncompressedSizeAsync(file).then((size) => { + return { + stream: udif.createReadStream(file), + size: { + original: options.size, + final: { + estimation: false, + value: size + } + }, + transform: new PassThroughStream() + }; + }); + }, + /** * @summary Handle ZIP compressed images * @function diff --git a/lib/image-stream/supported.js b/lib/image-stream/supported.js index 18d66c36..144f196f 100644 --- a/lib/image-stream/supported.js +++ b/lib/image-stream/supported.js @@ -37,6 +37,10 @@ module.exports = [ extension: 'xz', type: 'compressed' }, + { + extension: 'dmg', + type: 'compressed' + }, { extension: 'img', type: 'image' diff --git a/lib/image-stream/utils.js b/lib/image-stream/utils.js index 5090c5a3..81bfc06c 100644 --- a/lib/image-stream/utils.js +++ b/lib/image-stream/utils.js @@ -18,15 +18,16 @@ const _ = require('lodash'); const Bluebird = require('bluebird'); -const fs = Bluebird.promisifyAll(require('fs')); -const archiveType = require('archive-type'); +const fileType = require('file-type'); +const mime = require('mime-types'); +const fs = require('fs'); /** * @summary Get archive mime type * @function * @public * - * @param {String} file - file path + * @param {String} filename - file path * @fulfil {String} - mime type * @returns {Promise} * @@ -35,28 +36,27 @@ const archiveType = require('archive-type'); * console.log(mimeType); * }); */ -exports.getArchiveMimeType = (file) => { +exports.getArchiveMimeType = (filename) => { - // `archive-type` only needs the first 261 bytes - // See https://github.com/kevva/archive-type - const ARCHIVE_TYPE_IDENTIFICATION_BYTES_LENGTH = 261; + const mimeType = mime.lookup(filename); - return Bluebird.using(fs.openAsync(file, 'r').disposer((fileDescriptor) => { + if (mimeType) { + return Bluebird.resolve(mimeType); + } + + const FILE_TYPE_ID_BYTES = 262; + + return Bluebird.using(fs.openAsync(filename, 'r').disposer((fileDescriptor) => { return fs.closeAsync(fileDescriptor); }), (fileDescriptor) => { const BUFFER_START = 0; - const chunk = new Buffer(ARCHIVE_TYPE_IDENTIFICATION_BYTES_LENGTH); + const buffer = Buffer.alloc(FILE_TYPE_ID_BYTES); - return fs.readAsync( - fileDescriptor, - chunk, - BUFFER_START, - ARCHIVE_TYPE_IDENTIFICATION_BYTES_LENGTH, - null - ).then(() => { - return _.get(archiveType(chunk), [ 'mime' ], 'application/octet-stream'); + return fs.readAsync(fileDescriptor, buffer, BUFFER_START, FILE_TYPE_ID_BYTES, null).then(() => { + return _.get(fileType(buffer), [ 'mime' ], 'application/octet-stream'); }); }); + }; /** diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index f2e3c2dc..d064970e 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -146,6 +146,11 @@ "from": "any-promise@>=1.1.0 <2.0.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" }, + "apple-data-compression": { + "version": "0.1.0", + "from": "apple-data-compression@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/apple-data-compression/-/apple-data-compression-0.1.0.tgz" + }, "aproba": { "version": "1.1.1", "from": "aproba@>=1.0.3 <2.0.0", @@ -157,11 +162,6 @@ "from": "arch@2.1.0", "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.0.tgz" }, - "archive-type": { - "version": "3.2.0", - "from": "archive-type@>=3.2.0 <4.0.0", - "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-3.2.0.tgz" - }, "archiver": { "version": "1.3.0", "from": "archiver@>=1.0.0 <2.0.0", @@ -470,6 +470,11 @@ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", "dev": true }, + "bloodline": { + "version": "1.0.1", + "from": "bloodline@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/bloodline/-/bloodline-1.0.1.tgz" + }, "bluebird": { "version": "3.4.1", "from": "bluebird@>=3.0.5 <4.0.0", @@ -940,6 +945,11 @@ "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-2.0.5.tgz", "dev": true }, + "commander": { + "version": "2.8.1", + "from": "commander@>=2.8.1 <2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz" + }, "commoner": { "version": "0.10.8", "from": "commoner@>=0.10.3 <0.11.0", @@ -2439,9 +2449,9 @@ } }, "file-type": { - "version": "3.9.0", - "from": "file-type@>=3.1.0 <4.0.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz" + "version": "4.1.0", + "from": "file-type@latest", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.1.0.tgz" }, "file-uri-to-path": { "version": "0.0.2", @@ -2565,6 +2575,18 @@ "from": "async@>=0.9.0 <0.10.0", "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", "dev": true + }, + "mime-db": { + "version": "1.12.0", + "from": "mime-db@>=1.12.0 <1.13.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", + "dev": true + }, + "mime-types": { + "version": "2.0.14", + "from": "mime-types@>=2.0.3 <2.1.0", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "dev": true } } }, @@ -4634,16 +4656,14 @@ "dev": true }, "mime-db": { - "version": "1.12.0", - "from": "mime-db@>=1.12.0 <1.13.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", - "dev": true + "version": "1.27.0", + "from": "mime-db@>=1.27.0 <1.28.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz" }, "mime-types": { - "version": "2.0.14", - "from": "mime-types@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", - "dev": true + "version": "2.1.15", + "from": "mime-types@latest", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz" }, "minimalistic-assert": { "version": "1.0.0", @@ -5746,7 +5766,21 @@ "version": "2.55.0", "from": "request@2.55.0", "resolved": "https://registry.npmjs.org/request/-/request-2.55.0.tgz", - "dev": true + "dev": true, + "dependencies": { + "mime-db": { + "version": "1.12.0", + "from": "mime-db@>=1.12.0 <1.13.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", + "dev": true + }, + "mime-types": { + "version": "2.0.14", + "from": "mime-types@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "dev": true + } + } }, "require-directory": { "version": "2.1.1", @@ -5983,6 +6017,11 @@ "from": "sax@>=0.6.0", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.2.tgz" }, + "seek-bzip": { + "version": "1.0.5", + "from": "seek-bzip@>=1.0.5 <2.0.0", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz" + }, "semver": { "version": "5.1.1", "from": "semver@>=5.1.0 <6.0.0", @@ -6728,6 +6767,28 @@ "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.0.tgz", "dev": true }, + "udif": { + "version": "0.7.0", + "from": "udif@latest", + "resolved": "https://registry.npmjs.org/udif/-/udif-0.7.0.tgz", + "dependencies": { + "base64-js": { + "version": "1.1.2", + "from": "base64-js@1.1.2", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.1.2.tgz" + }, + "plist": { + "version": "2.0.1", + "from": "plist@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-2.0.1.tgz" + }, + "xmlbuilder": { + "version": "8.2.2", + "from": "xmlbuilder@8.2.2", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz" + } + } + }, "uglify-js": { "version": "2.8.13", "from": "uglify-js@>=2.6.0 <3.0.0", @@ -7046,8 +7107,7 @@ "xmldom": { "version": "0.1.27", "from": "xmldom@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", - "dev": true + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz" }, "xregexp": { "version": "2.0.0", diff --git a/package.json b/package.json index e737917c..cd827d61 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,6 @@ "angular-ui-bootstrap": "^2.5.0", "angular-ui-router": "^0.4.2", "arch": "^2.1.0", - "archive-type": "^3.2.0", "bluebird": "^3.0.5", "bootstrap-sass": "^3.3.5", "chalk": "^1.1.3", @@ -79,6 +78,7 @@ "electron-is-running-in-asar": "^1.0.0", "etcher-image-write": "^9.0.1", "etcher-latest-version": "^1.0.0", + "file-type": "^4.1.0", "flat": "^2.0.1", "flexboxgrid": "^6.3.0", "immutable": "^3.8.1", @@ -86,6 +86,7 @@ "lodash": "^4.5.1", "lodash-deep": "^2.0.0", "lzma-native": "^1.5.2", + "mime-types": "^2.1.15", "mountutils": "^1.0.3", "node-ipc": "^8.9.2", "node-stream-zip": "^1.3.4", @@ -98,6 +99,7 @@ "semver": "^5.1.0", "sudo-prompt": "^6.1.0", "trackjs": "^2.1.16", + "udif": "^0.7.0", "unbzip2-stream": "^1.0.11", "yargs": "^4.6.0", "yauzl": "^2.6.0" diff --git a/tests/gui/models/supported-formats.spec.js b/tests/gui/models/supported-formats.spec.js index 89865643..5ba2f63d 100644 --- a/tests/gui/models/supported-formats.spec.js +++ b/tests/gui/models/supported-formats.spec.js @@ -23,7 +23,7 @@ describe('Browser: SupportedFormats', function() { it('should return the supported compressed extensions', function() { const extensions = SupportedFormatsModel.getCompressedExtensions(); - m.chai.expect(extensions).to.deep.equal([ 'gz', 'bz2', 'xz' ]); + m.chai.expect(extensions).to.deep.equal([ 'gz', 'bz2', 'xz', 'dmg' ]); }); }); diff --git a/tests/image-stream/data/dmg/raw.dmg b/tests/image-stream/data/dmg/raw.dmg new file mode 100644 index 0000000000000000000000000000000000000000..560d19438faa7affbeb611255bbaee5ab0647a94 GIT binary patch literal 1675140 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 zHv~oNvv7u)Xv*&&%lD8|F8;$rH${B{1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U 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 literal 0 HcmV?d00001 diff --git a/tests/image-stream/data/dmg/zlib-compressed.dmg b/tests/image-stream/data/dmg/zlib-compressed.dmg new file mode 100644 index 0000000000000000000000000000000000000000..cac90e9eebdeaccd67c1e8eeaaf1a7b315c3fa0f GIT binary patch literal 17819 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 literal 0 HcmV?d00001 diff --git a/tests/image-stream/data/images/raw.img b/tests/image-stream/data/images/raw.img new file mode 100644 index 0000000000000000000000000000000000000000..347f5e13baf1d48e53a9965d7eb3d4309f21ad59 GIT binary patch literal 2342912 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 zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkL{{0r1l zn%8ZveJL%8`bCi!=HZR}lv2Iy%-!e4+-3tVzGolVEn zvPn;1L;?f|5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZAk|Wu*NtI)sx687MUfXqj?s#=pxK?XoyMGP zxrP%UK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB=EEz`C>PY&xEnwQH0J5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N 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 z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N 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 zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly 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 z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+0D)5oG)kEhgQC^S*R;ErmFC>&z9RC{EL&E} zccR@F`JzroF6!E=JOKg(2oNAZfB*pk1PBnAn!wVLGExqgCGD|C8zn#U-x9e|R+jDM z6J@A8UiOwpOMlr~c9i|)V3cLv7eo5XrYOC)^<6J+bKc^>x0knsejF z(Oy}~rZ=np(>8NH&$PzK?-!bp^E-(%tI_HhzgZT=?gWnon=g7}hNFqh@SKlE)*lb%tV(*%!yq&hXh6+v$^C zN>}vU8l80-&aN|4>TK}V*37NZ*{V6S3!0Y4(wp(EXG-j-o7J(C)w(*4nd`c9RoBk3 zljpvk>k{XauTRV@!2F%IVUyI=`RU+UB$?x~4swvrNt_u1=kL^gc`8)EaA9S$ooJ zW7!a|UFG(8-5Oi%xfnCkmEk|qovY&Z9`WpO^q*pnSarA>x2{v&6Ro^9XNu`sr>dUQ zSEHQg=G1)Fcllh^ZF6GL#H-D;e74kUojz%EvG{B(>*G9oTfD~hpKHdh#MKqKTDPg} zKmEsRhw9j>d!n_o?o5}jN50s6-q+=m@80TnD(B3nYyT8K!5-N0t5&UAV7cs0Rqzz82|bIbFY8<$dRvp@xd>D z^u>Sui`%~ZwMV}EdtdtU@BZ??c<3)*{nf8M|1TTO)mQ(@vTHw-%gS#C?z{fCfA<5^ zS+Hpc5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+0D=F{4jl*p00000`M)+of&&K*95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*AcIe$i zp&$wa@VR0jn7DSZu^?^RJE!dJ+fdv?BUYJO3^LG6^UGHX-pZc6xS(lWD|LXTo=Bi|6MSPT6oYp)y8+Uot ZcL~Yd=HqIWO)g6vn{6KGCxO=p`~$035sm-= literal 0 HcmV?d00001 diff --git a/tests/image-stream/dmg.spec.js b/tests/image-stream/dmg.spec.js new file mode 100644 index 00000000..1d7c19fa --- /dev/null +++ b/tests/image-stream/dmg.spec.js @@ -0,0 +1,104 @@ +/* + * Copyright 2016 resin.io + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +const m = require('mochainon'); +const fs = require('fs'); +const path = require('path'); +const DATA_PATH = path.join(__dirname, 'data'); +const IMAGES_PATH = path.join(DATA_PATH, 'images'); +const DMG_PATH = path.join(DATA_PATH, 'dmg'); +const imageStream = require('../../lib/image-stream/index'); +const tester = require('./tester'); + +describe('ImageStream: DMG', function() { + + this.timeout(20000); + + context('compressed', function() { + + describe('.getFromFilePath()', function() { + + describe('given an dmg image', function() { + tester.extractFromFilePath( + path.join(DMG_PATH, 'zlib-compressed.dmg'), + path.join(IMAGES_PATH, 'zlib-compressed.img')); + }); + + }); + + describe('.getImageMetadata()', function() { + + it('should return the correct metadata', function() { + const image = path.join(DMG_PATH, 'zlib-compressed.dmg'); + const uncompressedSize = fs.statSync(path.join(IMAGES_PATH, 'zlib-compressed.img')).size; + const compressedSize = fs.statSync(image).size; + + return imageStream.getImageMetadata(image).then((metadata) => { + m.chai.expect(metadata).to.deep.equal({ + size: { + original: compressedSize, + final: { + estimation: false, + value: uncompressedSize + } + } + }); + }); + }); + + }); + + }); + + context('uncompressed', function() { + + describe('.getFromFilePath()', function() { + + describe('given an dmg image', function() { + tester.extractFromFilePath( + path.join(DMG_PATH, 'raw.dmg'), + path.join(IMAGES_PATH, 'raw.img')); + }); + + }); + + describe('.getImageMetadata()', function() { + + it('should return the correct metadata', function() { + const image = path.join(DMG_PATH, 'raw.dmg'); + const uncompressedSize = fs.statSync(path.join(IMAGES_PATH, 'raw.img')).size; + const compressedSize = fs.statSync(image).size; + + return imageStream.getImageMetadata(image).then((metadata) => { + m.chai.expect(metadata).to.deep.equal({ + size: { + original: compressedSize, + final: { + estimation: false, + value: uncompressedSize + } + } + }); + }); + }); + + }); + + }); + +}); diff --git a/tests/image-stream/utils.spec.js b/tests/image-stream/utils.spec.js index c7ea3199..476da520 100644 --- a/tests/image-stream/utils.spec.js +++ b/tests/image-stream/utils.spec.js @@ -26,44 +26,53 @@ describe('ImageStream: Utils', function() { describe('.getArchiveMimeType()', function() { - it('should resolve application/x-bzip2 for a bz2 archive', function(done) { + it('should resolve application/x-bzip2 for a bz2 archive', function() { const file = path.join(DATA_PATH, 'bz2', 'raspberrypi.img.bz2'); - utils.getArchiveMimeType(file).then((type) => { + return utils.getArchiveMimeType(file).then((type) => { m.chai.expect(type).to.equal('application/x-bzip2'); - done(); - }).catch(done); + }); }); - it('should resolve application/x-xz for a xz archive', function(done) { + it('should resolve application/x-xz for a xz archive', function() { const file = path.join(DATA_PATH, 'xz', 'raspberrypi.img.xz'); - utils.getArchiveMimeType(file).then((type) => { + return utils.getArchiveMimeType(file).then((type) => { m.chai.expect(type).to.equal('application/x-xz'); - done(); - }).catch(done); + }); }); - it('should resolve application/gzip for a gz archive', function(done) { + it('should resolve application/gzip for a gz archive', function() { const file = path.join(DATA_PATH, 'gz', 'raspberrypi.img.gz'); - utils.getArchiveMimeType(file).then((type) => { + return utils.getArchiveMimeType(file).then((type) => { m.chai.expect(type).to.equal('application/gzip'); - done(); - }).catch(done); + }); }); - it('should resolve application/zip for a zip archive', function(done) { + it('should resolve application/zip for a zip archive', function() { const file = path.join(DATA_PATH, 'zip', 'zip-directory-rpi-only.zip'); - utils.getArchiveMimeType(file).then((type) => { + return utils.getArchiveMimeType(file).then((type) => { m.chai.expect(type).to.equal('application/zip'); - done(); - }).catch(done); + }); }); - it('should resolve application/octet-stream for an uncompress image', function(done) { + it('should resolve application/octet-stream for an uncompressed image', function() { const file = path.join(DATA_PATH, 'images', 'raspberrypi.img'); - utils.getArchiveMimeType(file).then((type) => { + return utils.getArchiveMimeType(file).then((type) => { m.chai.expect(type).to.equal('application/octet-stream'); - done(); - }).catch(done); + }); + }); + + it('should resolve application/x-apple-diskimage for a compressed Apple disk image', function() { + const file = path.join(DATA_PATH, 'dmg', 'zlib-compressed.dmg'); + return utils.getArchiveMimeType(file).then((type) => { + m.chai.expect(type).to.equal('application/x-apple-diskimage'); + }); + }); + + it('should resolve application/x-apple-diskimage for an uncompressed Apple disk image', function() { + const file = path.join(DATA_PATH, 'dmg', 'raw.dmg'); + return utils.getArchiveMimeType(file).then((type) => { + m.chai.expect(type).to.equal('application/x-apple-diskimage'); + }); }); });