From a729c5a461d5c476d8c65d3d1f6f5ecb0aa78e2d Mon Sep 17 00:00:00 2001 From: fchasen Date: Tue, 13 Oct 2015 23:45:11 -0400 Subject: [PATCH] Updates Request to detect file types inorder to handle both xhtml and html --- books | 2 +- build/epub.js | 1553 +++++++++++++++++---------------- build/epub.js.map | 2 +- build/epub.min.js | 10 +- build/epub.min.map | 2 +- build/hooks.js.map | 2 +- build/reader.js.map | 2 +- build/reader.min.js | 2 +- build/reader.min.map | 2 +- libs/mime-types/mime-types.js | 6 +- reader/js/epub.js.map | 2 +- reader/js/epub.min.js | 1551 ++++++++++++++++---------------- reader/js/hooks.js.map | 2 +- reader/js/reader.min.js | 2 +- src/book.js | 2 +- src/chapter.js | 11 +- src/core.js | 121 ++- src/unarchiver.js | 5 +- 18 files changed, 1682 insertions(+), 1597 deletions(-) diff --git a/books b/books index 8d6c46e..e979031 160000 --- a/books +++ b/books @@ -1 +1 @@ -Subproject commit 8d6c46ef23ca637d89e66b18b2146ccef93c1ac4 +Subproject commit e9790315c2510315e270a7a4c4921825e9918039 diff --git a/build/epub.js b/build/epub.js index 9285fa5..e189268 100644 --- a/build/epub.js +++ b/build/epub.js @@ -3,49 +3,13 @@ * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors * @license Licensed under MIT license * See https://raw.githubusercontent.com/tildeio/rsvp.js/master/LICENSE - * @version 3.1.0 + * @version 3.0.14 */ (function() { "use strict"; - function lib$rsvp$utils$$objectOrFunction(x) { - return typeof x === 'function' || (typeof x === 'object' && x !== null); - } - function lib$rsvp$utils$$isFunction(x) { - return typeof x === 'function'; - } - - function lib$rsvp$utils$$isMaybeThenable(x) { - return typeof x === 'object' && x !== null; - } - - var lib$rsvp$utils$$_isArray; - if (!Array.isArray) { - lib$rsvp$utils$$_isArray = function (x) { - return Object.prototype.toString.call(x) === '[object Array]'; - }; - } else { - lib$rsvp$utils$$_isArray = Array.isArray; - } - - var lib$rsvp$utils$$isArray = lib$rsvp$utils$$_isArray; - - var lib$rsvp$utils$$now = Date.now || function() { return new Date().getTime(); }; - - function lib$rsvp$utils$$F() { } - - var lib$rsvp$utils$$o_create = (Object.create || function (o) { - if (arguments.length > 1) { - throw new Error('Second argument not supported'); - } - if (typeof o !== 'object') { - throw new TypeError('Argument must be an object'); - } - lib$rsvp$utils$$F.prototype = o; - return new lib$rsvp$utils$$F(); - }); - function lib$rsvp$events$$indexOf(callbacks, callback) { + function $$rsvp$events$$indexOf(callbacks, callback) { for (var i=0, l=callbacks.length; i 1) { + throw new Error('Second argument not supported'); + } + if (typeof o !== 'object') { + throw new TypeError('Argument must be an object'); + } + $$utils$$F.prototype = o; + return new $$utils$$F(); + }); + + var $$instrument$$queue = []; + + var $$instrument$$default = function instrument(eventName, promise, child) { + if (1 === $$instrument$$queue.push({ + name: eventName, + payload: { + guid: promise._guidKey + promise._id, + eventName: eventName, + detail: promise._result, + childGuid: child && promise._guidKey + child._id, + label: promise._label, + timeStamp: $$utils$$now(), + stack: new Error(promise._label).stack + }})) { + + setTimeout(function() { + var entry; + for (var i = 0; i < $$instrument$$queue.length; i++) { + entry = $$instrument$$queue[i]; + $$rsvp$config$$config.trigger(entry.name, entry.payload); + } + $$instrument$$queue.length = 0; + }, 50); } + }; - lib$rsvp$config$$config['trigger'](entry.name, entry.payload); - } - lib$rsvp$instrument$$queue.length = 0; - }, 50); - } + function $$$internal$$noop() {} + var $$$internal$$PENDING = void 0; + var $$$internal$$FULFILLED = 1; + var $$$internal$$REJECTED = 2; + var $$$internal$$GET_THEN_ERROR = new $$$internal$$ErrorObject(); - function lib$rsvp$instrument$$instrument(eventName, promise, child) { - if (1 === lib$rsvp$instrument$$queue.push({ - name: eventName, - payload: { - key: promise._guidKey, - id: promise._id, - eventName: eventName, - detail: promise._result, - childId: child && child._id, - label: promise._label, - timeStamp: lib$rsvp$utils$$now(), - error: lib$rsvp$config$$config["instrument-with-stack"] ? new Error(promise._label) : null - }})) { - lib$rsvp$instrument$$scheduleFlush(); - } - } - var lib$rsvp$instrument$$default = lib$rsvp$instrument$$instrument; - - function lib$rsvp$$internal$$withOwnPromise() { - return new TypeError('A promises callback cannot return that same promise.'); - } - - function lib$rsvp$$internal$$noop() {} - - var lib$rsvp$$internal$$PENDING = void 0; - var lib$rsvp$$internal$$FULFILLED = 1; - var lib$rsvp$$internal$$REJECTED = 2; - - var lib$rsvp$$internal$$GET_THEN_ERROR = new lib$rsvp$$internal$$ErrorObject(); - - function lib$rsvp$$internal$$getThen(promise) { + function $$$internal$$getThen(promise) { try { return promise.then; } catch(error) { - lib$rsvp$$internal$$GET_THEN_ERROR.error = error; - return lib$rsvp$$internal$$GET_THEN_ERROR; + $$$internal$$GET_THEN_ERROR.error = error; + return $$$internal$$GET_THEN_ERROR; } } - function lib$rsvp$$internal$$tryThen(then, value, fulfillmentHandler, rejectionHandler) { + function $$$internal$$tryThen(then, value, fulfillmentHandler, rejectionHandler) { try { then.call(value, fulfillmentHandler, rejectionHandler); } catch(e) { @@ -339,129 +316,129 @@ } } - function lib$rsvp$$internal$$handleForeignThenable(promise, thenable, then) { - lib$rsvp$config$$config.async(function(promise) { + function $$$internal$$handleForeignThenable(promise, thenable, then) { + $$rsvp$config$$config.async(function(promise) { var sealed = false; - var error = lib$rsvp$$internal$$tryThen(then, thenable, function(value) { + var error = $$$internal$$tryThen(then, thenable, function(value) { if (sealed) { return; } sealed = true; if (thenable !== value) { - lib$rsvp$$internal$$resolve(promise, value); + $$$internal$$resolve(promise, value); } else { - lib$rsvp$$internal$$fulfill(promise, value); + $$$internal$$fulfill(promise, value); } }, function(reason) { if (sealed) { return; } sealed = true; - lib$rsvp$$internal$$reject(promise, reason); + $$$internal$$reject(promise, reason); }, 'Settle: ' + (promise._label || ' unknown promise')); if (!sealed && error) { sealed = true; - lib$rsvp$$internal$$reject(promise, error); + $$$internal$$reject(promise, error); } }, promise); } - function lib$rsvp$$internal$$handleOwnThenable(promise, thenable) { - if (thenable._state === lib$rsvp$$internal$$FULFILLED) { - lib$rsvp$$internal$$fulfill(promise, thenable._result); - } else if (thenable._state === lib$rsvp$$internal$$REJECTED) { - thenable._onError = null; - lib$rsvp$$internal$$reject(promise, thenable._result); + function $$$internal$$handleOwnThenable(promise, thenable) { + if (thenable._state === $$$internal$$FULFILLED) { + $$$internal$$fulfill(promise, thenable._result); + } else if (promise._state === $$$internal$$REJECTED) { + $$$internal$$reject(promise, thenable._result); } else { - lib$rsvp$$internal$$subscribe(thenable, undefined, function(value) { + $$$internal$$subscribe(thenable, undefined, function(value) { if (thenable !== value) { - lib$rsvp$$internal$$resolve(promise, value); + $$$internal$$resolve(promise, value); } else { - lib$rsvp$$internal$$fulfill(promise, value); + $$$internal$$fulfill(promise, value); } }, function(reason) { - lib$rsvp$$internal$$reject(promise, reason); + $$$internal$$reject(promise, reason); }); } } - function lib$rsvp$$internal$$handleMaybeThenable(promise, maybeThenable) { + function $$$internal$$handleMaybeThenable(promise, maybeThenable) { if (maybeThenable.constructor === promise.constructor) { - lib$rsvp$$internal$$handleOwnThenable(promise, maybeThenable); + $$$internal$$handleOwnThenable(promise, maybeThenable); } else { - var then = lib$rsvp$$internal$$getThen(maybeThenable); + var then = $$$internal$$getThen(maybeThenable); - if (then === lib$rsvp$$internal$$GET_THEN_ERROR) { - lib$rsvp$$internal$$reject(promise, lib$rsvp$$internal$$GET_THEN_ERROR.error); + if (then === $$$internal$$GET_THEN_ERROR) { + $$$internal$$reject(promise, $$$internal$$GET_THEN_ERROR.error); } else if (then === undefined) { - lib$rsvp$$internal$$fulfill(promise, maybeThenable); - } else if (lib$rsvp$utils$$isFunction(then)) { - lib$rsvp$$internal$$handleForeignThenable(promise, maybeThenable, then); + $$$internal$$fulfill(promise, maybeThenable); + } else if ($$utils$$isFunction(then)) { + $$$internal$$handleForeignThenable(promise, maybeThenable, then); } else { - lib$rsvp$$internal$$fulfill(promise, maybeThenable); + $$$internal$$fulfill(promise, maybeThenable); } } } - function lib$rsvp$$internal$$resolve(promise, value) { + function $$$internal$$resolve(promise, value) { if (promise === value) { - lib$rsvp$$internal$$fulfill(promise, value); - } else if (lib$rsvp$utils$$objectOrFunction(value)) { - lib$rsvp$$internal$$handleMaybeThenable(promise, value); + $$$internal$$fulfill(promise, value); + } else if ($$utils$$objectOrFunction(value)) { + $$$internal$$handleMaybeThenable(promise, value); } else { - lib$rsvp$$internal$$fulfill(promise, value); + $$$internal$$fulfill(promise, value); } } - function lib$rsvp$$internal$$publishRejection(promise) { - if (promise._onError) { - promise._onError(promise._result); + function $$$internal$$publishRejection(promise) { + if (promise._onerror) { + promise._onerror(promise._result); } - lib$rsvp$$internal$$publish(promise); + $$$internal$$publish(promise); } - function lib$rsvp$$internal$$fulfill(promise, value) { - if (promise._state !== lib$rsvp$$internal$$PENDING) { return; } + function $$$internal$$fulfill(promise, value) { + if (promise._state !== $$$internal$$PENDING) { return; } promise._result = value; - promise._state = lib$rsvp$$internal$$FULFILLED; + promise._state = $$$internal$$FULFILLED; if (promise._subscribers.length === 0) { - if (lib$rsvp$config$$config.instrument) { - lib$rsvp$instrument$$default('fulfilled', promise); + if ($$rsvp$config$$config.instrument) { + $$instrument$$default('fulfilled', promise); } } else { - lib$rsvp$config$$config.async(lib$rsvp$$internal$$publish, promise); + $$rsvp$config$$config.async($$$internal$$publish, promise); } } - function lib$rsvp$$internal$$reject(promise, reason) { - if (promise._state !== lib$rsvp$$internal$$PENDING) { return; } - promise._state = lib$rsvp$$internal$$REJECTED; + function $$$internal$$reject(promise, reason) { + if (promise._state !== $$$internal$$PENDING) { return; } + promise._state = $$$internal$$REJECTED; promise._result = reason; - lib$rsvp$config$$config.async(lib$rsvp$$internal$$publishRejection, promise); + + $$rsvp$config$$config.async($$$internal$$publishRejection, promise); } - function lib$rsvp$$internal$$subscribe(parent, child, onFulfillment, onRejection) { + function $$$internal$$subscribe(parent, child, onFulfillment, onRejection) { var subscribers = parent._subscribers; var length = subscribers.length; - parent._onError = null; + parent._onerror = null; subscribers[length] = child; - subscribers[length + lib$rsvp$$internal$$FULFILLED] = onFulfillment; - subscribers[length + lib$rsvp$$internal$$REJECTED] = onRejection; + subscribers[length + $$$internal$$FULFILLED] = onFulfillment; + subscribers[length + $$$internal$$REJECTED] = onRejection; if (length === 0 && parent._state) { - lib$rsvp$config$$config.async(lib$rsvp$$internal$$publish, parent); + $$rsvp$config$$config.async($$$internal$$publish, parent); } } - function lib$rsvp$$internal$$publish(promise) { + function $$$internal$$publish(promise) { var subscribers = promise._subscribers; var settled = promise._state; - if (lib$rsvp$config$$config.instrument) { - lib$rsvp$instrument$$default(settled === lib$rsvp$$internal$$FULFILLED ? 'fulfilled' : 'rejected', promise); + if ($$rsvp$config$$config.instrument) { + $$instrument$$default(settled === $$$internal$$FULFILLED ? 'fulfilled' : 'rejected', promise); } if (subscribers.length === 0) { return; } @@ -473,7 +450,7 @@ callback = subscribers[i + settled]; if (child) { - lib$rsvp$$internal$$invokeCallback(settled, child, callback, detail); + $$$internal$$invokeCallback(settled, child, callback, detail); } else { callback(detail); } @@ -482,29 +459,29 @@ promise._subscribers.length = 0; } - function lib$rsvp$$internal$$ErrorObject() { + function $$$internal$$ErrorObject() { this.error = null; } - var lib$rsvp$$internal$$TRY_CATCH_ERROR = new lib$rsvp$$internal$$ErrorObject(); + var $$$internal$$TRY_CATCH_ERROR = new $$$internal$$ErrorObject(); - function lib$rsvp$$internal$$tryCatch(callback, detail) { + function $$$internal$$tryCatch(callback, detail) { try { return callback(detail); } catch(e) { - lib$rsvp$$internal$$TRY_CATCH_ERROR.error = e; - return lib$rsvp$$internal$$TRY_CATCH_ERROR; + $$$internal$$TRY_CATCH_ERROR.error = e; + return $$$internal$$TRY_CATCH_ERROR; } } - function lib$rsvp$$internal$$invokeCallback(settled, promise, callback, detail) { - var hasCallback = lib$rsvp$utils$$isFunction(callback), + function $$$internal$$invokeCallback(settled, promise, callback, detail) { + var hasCallback = $$utils$$isFunction(callback), value, error, succeeded, failed; if (hasCallback) { - value = lib$rsvp$$internal$$tryCatch(callback, detail); + value = $$$internal$$tryCatch(callback, detail); - if (value === lib$rsvp$$internal$$TRY_CATCH_ERROR) { + if (value === $$$internal$$TRY_CATCH_ERROR) { failed = true; error = value.error; value = null; @@ -513,7 +490,7 @@ } if (promise === value) { - lib$rsvp$$internal$$reject(promise, lib$rsvp$$internal$$withOwnPromise()); + $$$internal$$reject(promise, new TypeError('A promises callback cannot return that same promise.')); return; } @@ -522,184 +499,175 @@ succeeded = true; } - if (promise._state !== lib$rsvp$$internal$$PENDING) { + if (promise._state !== $$$internal$$PENDING) { // noop } else if (hasCallback && succeeded) { - lib$rsvp$$internal$$resolve(promise, value); + $$$internal$$resolve(promise, value); } else if (failed) { - lib$rsvp$$internal$$reject(promise, error); - } else if (settled === lib$rsvp$$internal$$FULFILLED) { - lib$rsvp$$internal$$fulfill(promise, value); - } else if (settled === lib$rsvp$$internal$$REJECTED) { - lib$rsvp$$internal$$reject(promise, value); + $$$internal$$reject(promise, error); + } else if (settled === $$$internal$$FULFILLED) { + $$$internal$$fulfill(promise, value); + } else if (settled === $$$internal$$REJECTED) { + $$$internal$$reject(promise, value); } } - function lib$rsvp$$internal$$initializePromise(promise, resolver) { - var resolved = false; + function $$$internal$$initializePromise(promise, resolver) { try { resolver(function resolvePromise(value){ - if (resolved) { return; } - resolved = true; - lib$rsvp$$internal$$resolve(promise, value); + $$$internal$$resolve(promise, value); }, function rejectPromise(reason) { - if (resolved) { return; } - resolved = true; - lib$rsvp$$internal$$reject(promise, reason); + $$$internal$$reject(promise, reason); }); } catch(e) { - lib$rsvp$$internal$$reject(promise, e); + $$$internal$$reject(promise, e); } } - function lib$rsvp$enumerator$$makeSettledResult(state, position, value) { - if (state === lib$rsvp$$internal$$FULFILLED) { + function $$enumerator$$makeSettledResult(state, position, value) { + if (state === $$$internal$$FULFILLED) { return { state: 'fulfilled', value: value }; } else { - return { + return { state: 'rejected', reason: value }; } } - function lib$rsvp$enumerator$$Enumerator(Constructor, input, abortOnReject, label) { - var enumerator = this; + function $$enumerator$$Enumerator(Constructor, input, abortOnReject, label) { + this._instanceConstructor = Constructor; + this.promise = new Constructor($$$internal$$noop, label); + this._abortOnReject = abortOnReject; - enumerator._instanceConstructor = Constructor; - enumerator.promise = new Constructor(lib$rsvp$$internal$$noop, label); - enumerator._abortOnReject = abortOnReject; + if (this._validateInput(input)) { + this._input = input; + this.length = input.length; + this._remaining = input.length; - if (enumerator._validateInput(input)) { - enumerator._input = input; - enumerator.length = input.length; - enumerator._remaining = input.length; + this._init(); - enumerator._init(); - - if (enumerator.length === 0) { - lib$rsvp$$internal$$fulfill(enumerator.promise, enumerator._result); + if (this.length === 0) { + $$$internal$$fulfill(this.promise, this._result); } else { - enumerator.length = enumerator.length || 0; - enumerator._enumerate(); - if (enumerator._remaining === 0) { - lib$rsvp$$internal$$fulfill(enumerator.promise, enumerator._result); + this.length = this.length || 0; + this._enumerate(); + if (this._remaining === 0) { + $$$internal$$fulfill(this.promise, this._result); } } } else { - lib$rsvp$$internal$$reject(enumerator.promise, enumerator._validationError()); + $$$internal$$reject(this.promise, this._validationError()); } } - var lib$rsvp$enumerator$$default = lib$rsvp$enumerator$$Enumerator; - - lib$rsvp$enumerator$$Enumerator.prototype._validateInput = function(input) { - return lib$rsvp$utils$$isArray(input); + $$enumerator$$Enumerator.prototype._validateInput = function(input) { + return $$utils$$isArray(input); }; - lib$rsvp$enumerator$$Enumerator.prototype._validationError = function() { + $$enumerator$$Enumerator.prototype._validationError = function() { return new Error('Array Methods must be provided an Array'); }; - lib$rsvp$enumerator$$Enumerator.prototype._init = function() { + $$enumerator$$Enumerator.prototype._init = function() { this._result = new Array(this.length); }; - lib$rsvp$enumerator$$Enumerator.prototype._enumerate = function() { - var enumerator = this; - var length = enumerator.length; - var promise = enumerator.promise; - var input = enumerator._input; + var $$enumerator$$default = $$enumerator$$Enumerator; - for (var i = 0; promise._state === lib$rsvp$$internal$$PENDING && i < length; i++) { - enumerator._eachEntry(input[i], i); + $$enumerator$$Enumerator.prototype._enumerate = function() { + var length = this.length; + var promise = this.promise; + var input = this._input; + + for (var i = 0; promise._state === $$$internal$$PENDING && i < length; i++) { + this._eachEntry(input[i], i); } }; - lib$rsvp$enumerator$$Enumerator.prototype._eachEntry = function(entry, i) { - var enumerator = this; - var c = enumerator._instanceConstructor; - if (lib$rsvp$utils$$isMaybeThenable(entry)) { - if (entry.constructor === c && entry._state !== lib$rsvp$$internal$$PENDING) { - entry._onError = null; - enumerator._settledAt(entry._state, i, entry._result); + $$enumerator$$Enumerator.prototype._eachEntry = function(entry, i) { + var c = this._instanceConstructor; + if ($$utils$$isMaybeThenable(entry)) { + if (entry.constructor === c && entry._state !== $$$internal$$PENDING) { + entry._onerror = null; + this._settledAt(entry._state, i, entry._result); } else { - enumerator._willSettleAt(c.resolve(entry), i); + this._willSettleAt(c.resolve(entry), i); } } else { - enumerator._remaining--; - enumerator._result[i] = enumerator._makeResult(lib$rsvp$$internal$$FULFILLED, i, entry); + this._remaining--; + this._result[i] = this._makeResult($$$internal$$FULFILLED, i, entry); } }; - lib$rsvp$enumerator$$Enumerator.prototype._settledAt = function(state, i, value) { - var enumerator = this; - var promise = enumerator.promise; + $$enumerator$$Enumerator.prototype._settledAt = function(state, i, value) { + var promise = this.promise; - if (promise._state === lib$rsvp$$internal$$PENDING) { - enumerator._remaining--; + if (promise._state === $$$internal$$PENDING) { + this._remaining--; - if (enumerator._abortOnReject && state === lib$rsvp$$internal$$REJECTED) { - lib$rsvp$$internal$$reject(promise, value); + if (this._abortOnReject && state === $$$internal$$REJECTED) { + $$$internal$$reject(promise, value); } else { - enumerator._result[i] = enumerator._makeResult(state, i, value); + this._result[i] = this._makeResult(state, i, value); } } - if (enumerator._remaining === 0) { - lib$rsvp$$internal$$fulfill(promise, enumerator._result); + if (this._remaining === 0) { + $$$internal$$fulfill(promise, this._result); } }; - lib$rsvp$enumerator$$Enumerator.prototype._makeResult = function(state, i, value) { + $$enumerator$$Enumerator.prototype._makeResult = function(state, i, value) { return value; }; - lib$rsvp$enumerator$$Enumerator.prototype._willSettleAt = function(promise, i) { + $$enumerator$$Enumerator.prototype._willSettleAt = function(promise, i) { var enumerator = this; - lib$rsvp$$internal$$subscribe(promise, undefined, function(value) { - enumerator._settledAt(lib$rsvp$$internal$$FULFILLED, i, value); + $$$internal$$subscribe(promise, undefined, function(value) { + enumerator._settledAt($$$internal$$FULFILLED, i, value); }, function(reason) { - enumerator._settledAt(lib$rsvp$$internal$$REJECTED, i, reason); + enumerator._settledAt($$$internal$$REJECTED, i, reason); }); }; - function lib$rsvp$promise$all$$all(entries, label) { - return new lib$rsvp$enumerator$$default(this, entries, true /* abort on reject */, label).promise; - } - var lib$rsvp$promise$all$$default = lib$rsvp$promise$all$$all; - function lib$rsvp$promise$race$$race(entries, label) { + + var $$promise$all$$default = function all(entries, label) { + return new $$enumerator$$default(this, entries, true /* abort on reject */, label).promise; + }; + + var $$promise$race$$default = function race(entries, label) { /*jshint validthis:true */ var Constructor = this; - var promise = new Constructor(lib$rsvp$$internal$$noop, label); + var promise = new Constructor($$$internal$$noop, label); - if (!lib$rsvp$utils$$isArray(entries)) { - lib$rsvp$$internal$$reject(promise, new TypeError('You must pass an array to race.')); + if (!$$utils$$isArray(entries)) { + $$$internal$$reject(promise, new TypeError('You must pass an array to race.')); return promise; } var length = entries.length; function onFulfillment(value) { - lib$rsvp$$internal$$resolve(promise, value); + $$$internal$$resolve(promise, value); } function onRejection(reason) { - lib$rsvp$$internal$$reject(promise, reason); + $$$internal$$reject(promise, reason); } - for (var i = 0; promise._state === lib$rsvp$$internal$$PENDING && i < length; i++) { - lib$rsvp$$internal$$subscribe(Constructor.resolve(entries[i]), undefined, onFulfillment, onRejection); + for (var i = 0; promise._state === $$$internal$$PENDING && i < length; i++) { + $$$internal$$subscribe(Constructor.resolve(entries[i]), undefined, onFulfillment, onRejection); } return promise; - } - var lib$rsvp$promise$race$$default = lib$rsvp$promise$race$$race; - function lib$rsvp$promise$resolve$$resolve(object, label) { + }; + + var $$promise$resolve$$default = function resolve(object, label) { /*jshint validthis:true */ var Constructor = this; @@ -707,78 +675,175 @@ return object; } - var promise = new Constructor(lib$rsvp$$internal$$noop, label); - lib$rsvp$$internal$$resolve(promise, object); + var promise = new Constructor($$$internal$$noop, label); + $$$internal$$resolve(promise, object); return promise; - } - var lib$rsvp$promise$resolve$$default = lib$rsvp$promise$resolve$$resolve; - function lib$rsvp$promise$reject$$reject(reason, label) { + }; + + var $$promise$reject$$default = function reject(reason, label) { /*jshint validthis:true */ var Constructor = this; - var promise = new Constructor(lib$rsvp$$internal$$noop, label); - lib$rsvp$$internal$$reject(promise, reason); + var promise = new Constructor($$$internal$$noop, label); + $$$internal$$reject(promise, reason); return promise; - } - var lib$rsvp$promise$reject$$default = lib$rsvp$promise$reject$$reject; + }; - var lib$rsvp$promise$$guidKey = 'rsvp_' + lib$rsvp$utils$$now() + '-'; - var lib$rsvp$promise$$counter = 0; + var $$rsvp$promise$$guidKey = 'rsvp_' + $$utils$$now() + '-'; + var $$rsvp$promise$$counter = 0; - function lib$rsvp$promise$$needsResolver() { + function $$rsvp$promise$$needsResolver() { throw new TypeError('You must pass a resolver function as the first argument to the promise constructor'); } - function lib$rsvp$promise$$needsNew() { + function $$rsvp$promise$$needsNew() { throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function."); } - function lib$rsvp$promise$$Promise(resolver, label) { - var promise = this; + var $$rsvp$promise$$default = $$rsvp$promise$$Promise; - promise._id = lib$rsvp$promise$$counter++; - promise._label = label; - promise._state = undefined; - promise._result = undefined; - promise._subscribers = []; + /** + Promise objects represent the eventual result of an asynchronous operation. The + primary way of interacting with a promise is through its `then` method, which + registers callbacks to receive either a promise’s eventual value or the reason + why the promise cannot be fulfilled. - if (lib$rsvp$config$$config.instrument) { - lib$rsvp$instrument$$default('created', promise); + Terminology + ----------- + + - `promise` is an object or function with a `then` method whose behavior conforms to this specification. + - `thenable` is an object or function that defines a `then` method. + - `value` is any legal JavaScript value (including undefined, a thenable, or a promise). + - `exception` is a value that is thrown using the throw statement. + - `reason` is a value that indicates why a promise was rejected. + - `settled` the final resting state of a promise, fulfilled or rejected. + + A promise can be in one of three states: pending, fulfilled, or rejected. + + Promises that are fulfilled have a fulfillment value and are in the fulfilled + state. Promises that are rejected have a rejection reason and are in the + rejected state. A fulfillment value is never a thenable. + + Promises can also be said to *resolve* a value. If this value is also a + promise, then the original promise's settled state will match the value's + settled state. So a promise that *resolves* a promise that rejects will + itself reject, and a promise that *resolves* a promise that fulfills will + itself fulfill. + + + Basic Usage: + ------------ + + ```js + var promise = new Promise(function(resolve, reject) { + // on success + resolve(value); + + // on failure + reject(reason); + }); + + promise.then(function(value) { + // on fulfillment + }, function(reason) { + // on rejection + }); + ``` + + Advanced Usage: + --------------- + + Promises shine when abstracting away asynchronous interactions such as + `XMLHttpRequest`s. + + ```js + function getJSON(url) { + return new Promise(function(resolve, reject){ + var xhr = new XMLHttpRequest(); + + xhr.open('GET', url); + xhr.onreadystatechange = handler; + xhr.responseType = 'json'; + xhr.setRequestHeader('Accept', 'application/json'); + xhr.send(); + + function handler() { + if (this.readyState === this.DONE) { + if (this.status === 200) { + resolve(this.response); + } else { + reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']')); + } + } + }; + }); } - if (lib$rsvp$$internal$$noop !== resolver) { - if (!lib$rsvp$utils$$isFunction(resolver)) { - lib$rsvp$promise$$needsResolver(); + getJSON('/posts.json').then(function(json) { + // on fulfillment + }, function(reason) { + // on rejection + }); + ``` + + Unlike callbacks, promises are great composable primitives. + + ```js + Promise.all([ + getJSON('/posts'), + getJSON('/comments') + ]).then(function(values){ + values[0] // => postsJSON + values[1] // => commentsJSON + + return values; + }); + ``` + + @class RSVP.Promise + @param {function} resolver + @param {String} label optional string for labeling the promise. + Useful for tooling. + @constructor + */ + function $$rsvp$promise$$Promise(resolver, label) { + this._id = $$rsvp$promise$$counter++; + this._label = label; + this._state = undefined; + this._result = undefined; + this._subscribers = []; + + if ($$rsvp$config$$config.instrument) { + $$instrument$$default('created', this); + } + + if ($$$internal$$noop !== resolver) { + if (!$$utils$$isFunction(resolver)) { + $$rsvp$promise$$needsResolver(); } - if (!(promise instanceof lib$rsvp$promise$$Promise)) { - lib$rsvp$promise$$needsNew(); + if (!(this instanceof $$rsvp$promise$$Promise)) { + $$rsvp$promise$$needsNew(); } - lib$rsvp$$internal$$initializePromise(promise, resolver); + $$$internal$$initializePromise(this, resolver); } } - var lib$rsvp$promise$$default = lib$rsvp$promise$$Promise; - // deprecated - lib$rsvp$promise$$Promise.cast = lib$rsvp$promise$resolve$$default; - lib$rsvp$promise$$Promise.all = lib$rsvp$promise$all$$default; - lib$rsvp$promise$$Promise.race = lib$rsvp$promise$race$$default; - lib$rsvp$promise$$Promise.resolve = lib$rsvp$promise$resolve$$default; - lib$rsvp$promise$$Promise.reject = lib$rsvp$promise$reject$$default; + $$rsvp$promise$$Promise.cast = $$promise$resolve$$default; - lib$rsvp$promise$$Promise.prototype = { - constructor: lib$rsvp$promise$$Promise, + $$rsvp$promise$$Promise.all = $$promise$all$$default; + $$rsvp$promise$$Promise.race = $$promise$race$$default; + $$rsvp$promise$$Promise.resolve = $$promise$resolve$$default; + $$rsvp$promise$$Promise.reject = $$promise$reject$$default; - _guidKey: lib$rsvp$promise$$guidKey, + $$rsvp$promise$$Promise.prototype = { + constructor: $$rsvp$promise$$Promise, - _onError: function (reason) { - var promise = this; - lib$rsvp$config$$config.after(function() { - if (promise._onError) { - lib$rsvp$config$$config['trigger']('error', reason, promise._label); - } - }); + _guidKey: $$rsvp$promise$$guidKey, + + _onerror: function (reason) { + $$rsvp$config$$config.trigger('error', reason); }, /** @@ -969,8 +1034,8 @@ ``` @method then - @param {Function} onFulfillment - @param {Function} onRejection + @param {Function} onFulfilled + @param {Function} onRejected @param {String} label optional string for labeling the promise. Useful for tooling. @return {Promise} @@ -979,29 +1044,29 @@ var parent = this; var state = parent._state; - if (state === lib$rsvp$$internal$$FULFILLED && !onFulfillment || state === lib$rsvp$$internal$$REJECTED && !onRejection) { - if (lib$rsvp$config$$config.instrument) { - lib$rsvp$instrument$$default('chained', parent, parent); + if (state === $$$internal$$FULFILLED && !onFulfillment || state === $$$internal$$REJECTED && !onRejection) { + if ($$rsvp$config$$config.instrument) { + $$instrument$$default('chained', this, this); } - return parent; + return this; } - parent._onError = null; + parent._onerror = null; - var child = new parent.constructor(lib$rsvp$$internal$$noop, label); + var child = new this.constructor($$$internal$$noop, label); var result = parent._result; - if (lib$rsvp$config$$config.instrument) { - lib$rsvp$instrument$$default('chained', parent, child); + if ($$rsvp$config$$config.instrument) { + $$instrument$$default('chained', parent, child); } if (state) { var callback = arguments[state - 1]; - lib$rsvp$config$$config.async(function(){ - lib$rsvp$$internal$$invokeCallback(state, child, callback, result); + $$rsvp$config$$config.async(function(){ + $$$internal$$invokeCallback(state, child, callback, result); }); } else { - lib$rsvp$$internal$$subscribe(parent, child, onFulfillment, onRejection); + $$$internal$$subscribe(parent, child, onFulfillment, onRejection); } return child; @@ -1036,7 +1101,7 @@ @return {Promise} */ 'catch': function(onRejection, label) { - return this.then(undefined, onRejection, label); + return this.then(null, onRejection, label); }, /** @@ -1080,10 +1145,9 @@ @return {Promise} */ 'finally': function(callback, label) { - var promise = this; - var constructor = promise.constructor; + var constructor = this.constructor; - return promise.then(function(value) { + return this.then(function(value) { return constructor.resolve(callback()).then(function(){ return value; }); @@ -1095,292 +1159,32 @@ } }; - function lib$rsvp$all$settled$$AllSettled(Constructor, entries, label) { - this._superConstructor(Constructor, entries, false /* don't abort on reject */, label); - } - - lib$rsvp$all$settled$$AllSettled.prototype = lib$rsvp$utils$$o_create(lib$rsvp$enumerator$$default.prototype); - lib$rsvp$all$settled$$AllSettled.prototype._superConstructor = lib$rsvp$enumerator$$default; - lib$rsvp$all$settled$$AllSettled.prototype._makeResult = lib$rsvp$enumerator$$makeSettledResult; - lib$rsvp$all$settled$$AllSettled.prototype._validationError = function() { - return new Error('allSettled must be called with an array'); - }; - - function lib$rsvp$all$settled$$allSettled(entries, label) { - return new lib$rsvp$all$settled$$AllSettled(lib$rsvp$promise$$default, entries, label).promise; - } - var lib$rsvp$all$settled$$default = lib$rsvp$all$settled$$allSettled; - function lib$rsvp$all$$all(array, label) { - return lib$rsvp$promise$$default.all(array, label); - } - var lib$rsvp$all$$default = lib$rsvp$all$$all; - var lib$rsvp$asap$$len = 0; - var lib$rsvp$asap$$toString = {}.toString; - var lib$rsvp$asap$$vertxNext; - function lib$rsvp$asap$$asap(callback, arg) { - lib$rsvp$asap$$queue[lib$rsvp$asap$$len] = callback; - lib$rsvp$asap$$queue[lib$rsvp$asap$$len + 1] = arg; - lib$rsvp$asap$$len += 2; - if (lib$rsvp$asap$$len === 2) { - // If len is 1, that means that we need to schedule an async flush. - // If additional callbacks are queued before the queue is flushed, they - // will be processed by this flush that we are scheduling. - lib$rsvp$asap$$scheduleFlush(); - } - } - - var lib$rsvp$asap$$default = lib$rsvp$asap$$asap; - - var lib$rsvp$asap$$browserWindow = (typeof window !== 'undefined') ? window : undefined; - var lib$rsvp$asap$$browserGlobal = lib$rsvp$asap$$browserWindow || {}; - var lib$rsvp$asap$$BrowserMutationObserver = lib$rsvp$asap$$browserGlobal.MutationObserver || lib$rsvp$asap$$browserGlobal.WebKitMutationObserver; - var lib$rsvp$asap$$isNode = typeof self === 'undefined' && - typeof process !== 'undefined' && {}.toString.call(process) === '[object process]'; - - // test for web worker but not in IE10 - var lib$rsvp$asap$$isWorker = typeof Uint8ClampedArray !== 'undefined' && - typeof importScripts !== 'undefined' && - typeof MessageChannel !== 'undefined'; - - // node - function lib$rsvp$asap$$useNextTick() { - var nextTick = process.nextTick; - // node version 0.10.x displays a deprecation warning when nextTick is used recursively - // setImmediate should be used instead instead - var version = process.versions.node.match(/^(?:(\d+)\.)?(?:(\d+)\.)?(\*|\d+)$/); - if (Array.isArray(version) && version[1] === '0' && version[2] === '10') { - nextTick = setImmediate; - } - return function() { - nextTick(lib$rsvp$asap$$flush); - }; - } - - // vertx - function lib$rsvp$asap$$useVertxTimer() { - return function() { - lib$rsvp$asap$$vertxNext(lib$rsvp$asap$$flush); - }; - } - - function lib$rsvp$asap$$useMutationObserver() { - var iterations = 0; - var observer = new lib$rsvp$asap$$BrowserMutationObserver(lib$rsvp$asap$$flush); - var node = document.createTextNode(''); - observer.observe(node, { characterData: true }); - - return function() { - node.data = (iterations = ++iterations % 2); - }; - } - - // web worker - function lib$rsvp$asap$$useMessageChannel() { - var channel = new MessageChannel(); - channel.port1.onmessage = lib$rsvp$asap$$flush; - return function () { - channel.port2.postMessage(0); - }; - } - - function lib$rsvp$asap$$useSetTimeout() { - return function() { - setTimeout(lib$rsvp$asap$$flush, 1); - }; - } - - var lib$rsvp$asap$$queue = new Array(1000); - function lib$rsvp$asap$$flush() { - for (var i = 0; i < lib$rsvp$asap$$len; i+=2) { - var callback = lib$rsvp$asap$$queue[i]; - var arg = lib$rsvp$asap$$queue[i+1]; - - callback(arg); - - lib$rsvp$asap$$queue[i] = undefined; - lib$rsvp$asap$$queue[i+1] = undefined; - } - - lib$rsvp$asap$$len = 0; - } - - function lib$rsvp$asap$$attemptVertex() { - try { - var r = require; - var vertx = r('vertx'); - lib$rsvp$asap$$vertxNext = vertx.runOnLoop || vertx.runOnContext; - return lib$rsvp$asap$$useVertxTimer(); - } catch(e) { - return lib$rsvp$asap$$useSetTimeout(); - } - } - - var lib$rsvp$asap$$scheduleFlush; - // Decide what async method to use to triggering processing of queued callbacks: - if (lib$rsvp$asap$$isNode) { - lib$rsvp$asap$$scheduleFlush = lib$rsvp$asap$$useNextTick(); - } else if (lib$rsvp$asap$$BrowserMutationObserver) { - lib$rsvp$asap$$scheduleFlush = lib$rsvp$asap$$useMutationObserver(); - } else if (lib$rsvp$asap$$isWorker) { - lib$rsvp$asap$$scheduleFlush = lib$rsvp$asap$$useMessageChannel(); - } else if (lib$rsvp$asap$$browserWindow === undefined && typeof require === 'function') { - lib$rsvp$asap$$scheduleFlush = lib$rsvp$asap$$attemptVertex(); - } else { - lib$rsvp$asap$$scheduleFlush = lib$rsvp$asap$$useSetTimeout(); - } - function lib$rsvp$defer$$defer(label) { - var deferred = {}; - - deferred['promise'] = new lib$rsvp$promise$$default(function(resolve, reject) { - deferred['resolve'] = resolve; - deferred['reject'] = reject; - }, label); - - return deferred; - } - var lib$rsvp$defer$$default = lib$rsvp$defer$$defer; - function lib$rsvp$filter$$filter(promises, filterFn, label) { - return lib$rsvp$promise$$default.all(promises, label).then(function(values) { - if (!lib$rsvp$utils$$isFunction(filterFn)) { - throw new TypeError("You must pass a function as filter's second argument."); - } - - var length = values.length; - var filtered = new Array(length); - - for (var i = 0; i < length; i++) { - filtered[i] = filterFn(values[i]); - } - - return lib$rsvp$promise$$default.all(filtered, label).then(function(filtered) { - var results = new Array(length); - var newLength = 0; - - for (var i = 0; i < length; i++) { - if (filtered[i]) { - results[newLength] = values[i]; - newLength++; - } - } - - results.length = newLength; - - return results; - }); - }); - } - var lib$rsvp$filter$$default = lib$rsvp$filter$$filter; - - function lib$rsvp$promise$hash$$PromiseHash(Constructor, object, label) { - this._superConstructor(Constructor, object, true, label); - } - - var lib$rsvp$promise$hash$$default = lib$rsvp$promise$hash$$PromiseHash; - - lib$rsvp$promise$hash$$PromiseHash.prototype = lib$rsvp$utils$$o_create(lib$rsvp$enumerator$$default.prototype); - lib$rsvp$promise$hash$$PromiseHash.prototype._superConstructor = lib$rsvp$enumerator$$default; - lib$rsvp$promise$hash$$PromiseHash.prototype._init = function() { - this._result = {}; - }; - - lib$rsvp$promise$hash$$PromiseHash.prototype._validateInput = function(input) { - return input && typeof input === 'object'; - }; - - lib$rsvp$promise$hash$$PromiseHash.prototype._validationError = function() { - return new Error('Promise.hash must be called with an object'); - }; - - lib$rsvp$promise$hash$$PromiseHash.prototype._enumerate = function() { - var enumerator = this; - var promise = enumerator.promise; - var input = enumerator._input; - var results = []; - - for (var key in input) { - if (promise._state === lib$rsvp$$internal$$PENDING && Object.prototype.hasOwnProperty.call(input, key)) { - results.push({ - position: key, - entry: input[key] - }); - } - } - - var length = results.length; - enumerator._remaining = length; - var result; - - for (var i = 0; promise._state === lib$rsvp$$internal$$PENDING && i < length; i++) { - result = results[i]; - enumerator._eachEntry(result.entry, result.position); - } - }; - - function lib$rsvp$hash$settled$$HashSettled(Constructor, object, label) { - this._superConstructor(Constructor, object, false, label); - } - - lib$rsvp$hash$settled$$HashSettled.prototype = lib$rsvp$utils$$o_create(lib$rsvp$promise$hash$$default.prototype); - lib$rsvp$hash$settled$$HashSettled.prototype._superConstructor = lib$rsvp$enumerator$$default; - lib$rsvp$hash$settled$$HashSettled.prototype._makeResult = lib$rsvp$enumerator$$makeSettledResult; - - lib$rsvp$hash$settled$$HashSettled.prototype._validationError = function() { - return new Error('hashSettled must be called with an object'); - }; - - function lib$rsvp$hash$settled$$hashSettled(object, label) { - return new lib$rsvp$hash$settled$$HashSettled(lib$rsvp$promise$$default, object, label).promise; - } - var lib$rsvp$hash$settled$$default = lib$rsvp$hash$settled$$hashSettled; - function lib$rsvp$hash$$hash(object, label) { - return new lib$rsvp$promise$hash$$default(lib$rsvp$promise$$default, object, label).promise; - } - var lib$rsvp$hash$$default = lib$rsvp$hash$$hash; - function lib$rsvp$map$$map(promises, mapFn, label) { - return lib$rsvp$promise$$default.all(promises, label).then(function(values) { - if (!lib$rsvp$utils$$isFunction(mapFn)) { - throw new TypeError("You must pass a function as map's second argument."); - } - - var length = values.length; - var results = new Array(length); - - for (var i = 0; i < length; i++) { - results[i] = mapFn(values[i]); - } - - return lib$rsvp$promise$$default.all(results, label); - }); - } - var lib$rsvp$map$$default = lib$rsvp$map$$map; - - function lib$rsvp$node$$Result() { + function $$rsvp$node$$Result() { this.value = undefined; } - var lib$rsvp$node$$ERROR = new lib$rsvp$node$$Result(); - var lib$rsvp$node$$GET_THEN_ERROR = new lib$rsvp$node$$Result(); + var $$rsvp$node$$ERROR = new $$rsvp$node$$Result(); + var $$rsvp$node$$GET_THEN_ERROR = new $$rsvp$node$$Result(); - function lib$rsvp$node$$getThen(obj) { + function $$rsvp$node$$getThen(obj) { try { return obj.then; } catch(error) { - lib$rsvp$node$$ERROR.value= error; - return lib$rsvp$node$$ERROR; + $$rsvp$node$$ERROR.value= error; + return $$rsvp$node$$ERROR; } } - - function lib$rsvp$node$$tryApply(f, s, a) { + function $$rsvp$node$$tryApply(f, s, a) { try { f.apply(s, a); } catch(error) { - lib$rsvp$node$$ERROR.value = error; - return lib$rsvp$node$$ERROR; + $$rsvp$node$$ERROR.value = error; + return $$rsvp$node$$ERROR; } } - function lib$rsvp$node$$makeObject(_, argumentNames) { + function $$rsvp$node$$makeObject(_, argumentNames) { var obj = {}; var name; var i; @@ -1399,7 +1203,7 @@ return obj; } - function lib$rsvp$node$$arrayResult(_) { + function $$rsvp$node$$arrayResult(_) { var length = _.length; var args = new Array(length - 1); @@ -1410,7 +1214,7 @@ return args; } - function lib$rsvp$node$$wrapThenable(then, promise) { + function $$rsvp$node$$wrapThenable(then, promise) { return { then: function(onFulFillment, onRejection) { return then.call(promise, onFulFillment, onRejection); @@ -1418,7 +1222,7 @@ }; } - function lib$rsvp$node$$denodeify(nodeFunc, options) { + var $$rsvp$node$$default = function denodeify(nodeFunc, options) { var fn = function() { var self = this; var l = arguments.length; @@ -1431,171 +1235,379 @@ if (!promiseInput) { // TODO: clean this up - promiseInput = lib$rsvp$node$$needsPromiseInput(arg); - if (promiseInput === lib$rsvp$node$$GET_THEN_ERROR) { - var p = new lib$rsvp$promise$$default(lib$rsvp$$internal$$noop); - lib$rsvp$$internal$$reject(p, lib$rsvp$node$$GET_THEN_ERROR.value); + promiseInput = $$rsvp$node$$needsPromiseInput(arg); + if (promiseInput === $$rsvp$node$$GET_THEN_ERROR) { + var p = new $$rsvp$promise$$default($$$internal$$noop); + $$$internal$$reject(p, $$rsvp$node$$GET_THEN_ERROR.value); return p; } else if (promiseInput && promiseInput !== true) { - arg = lib$rsvp$node$$wrapThenable(promiseInput, arg); + arg = $$rsvp$node$$wrapThenable(promiseInput, arg); } } args[i] = arg; } - var promise = new lib$rsvp$promise$$default(lib$rsvp$$internal$$noop); + var promise = new $$rsvp$promise$$default($$$internal$$noop); args[l] = function(err, val) { if (err) - lib$rsvp$$internal$$reject(promise, err); + $$$internal$$reject(promise, err); else if (options === undefined) - lib$rsvp$$internal$$resolve(promise, val); + $$$internal$$resolve(promise, val); else if (options === true) - lib$rsvp$$internal$$resolve(promise, lib$rsvp$node$$arrayResult(arguments)); - else if (lib$rsvp$utils$$isArray(options)) - lib$rsvp$$internal$$resolve(promise, lib$rsvp$node$$makeObject(arguments, options)); + $$$internal$$resolve(promise, $$rsvp$node$$arrayResult(arguments)); + else if ($$utils$$isArray(options)) + $$$internal$$resolve(promise, $$rsvp$node$$makeObject(arguments, options)); else - lib$rsvp$$internal$$resolve(promise, val); + $$$internal$$resolve(promise, val); }; if (promiseInput) { - return lib$rsvp$node$$handlePromiseInput(promise, args, nodeFunc, self); + return $$rsvp$node$$handlePromiseInput(promise, args, nodeFunc, self); } else { - return lib$rsvp$node$$handleValueInput(promise, args, nodeFunc, self); + return $$rsvp$node$$handleValueInput(promise, args, nodeFunc, self); } }; fn.__proto__ = nodeFunc; return fn; - } + }; - var lib$rsvp$node$$default = lib$rsvp$node$$denodeify; - - function lib$rsvp$node$$handleValueInput(promise, args, nodeFunc, self) { - var result = lib$rsvp$node$$tryApply(nodeFunc, self, args); - if (result === lib$rsvp$node$$ERROR) { - lib$rsvp$$internal$$reject(promise, result.value); + function $$rsvp$node$$handleValueInput(promise, args, nodeFunc, self) { + var result = $$rsvp$node$$tryApply(nodeFunc, self, args); + if (result === $$rsvp$node$$ERROR) { + $$$internal$$reject(promise, result.value); } return promise; } - function lib$rsvp$node$$handlePromiseInput(promise, args, nodeFunc, self){ - return lib$rsvp$promise$$default.all(args).then(function(args){ - var result = lib$rsvp$node$$tryApply(nodeFunc, self, args); - if (result === lib$rsvp$node$$ERROR) { - lib$rsvp$$internal$$reject(promise, result.value); + function $$rsvp$node$$handlePromiseInput(promise, args, nodeFunc, self){ + return $$rsvp$promise$$default.all(args).then(function(args){ + var result = $$rsvp$node$$tryApply(nodeFunc, self, args); + if (result === $$rsvp$node$$ERROR) { + $$$internal$$reject(promise, result.value); } return promise; }); } - function lib$rsvp$node$$needsPromiseInput(arg) { + function $$rsvp$node$$needsPromiseInput(arg) { if (arg && typeof arg === 'object') { - if (arg.constructor === lib$rsvp$promise$$default) { + if (arg.constructor === $$rsvp$promise$$default) { return true; } else { - return lib$rsvp$node$$getThen(arg); + return $$rsvp$node$$getThen(arg); } } else { return false; } } - var lib$rsvp$platform$$platform; - /* global self */ - if (typeof self === 'object') { - lib$rsvp$platform$$platform = self; + var $$rsvp$all$$default = function all(array, label) { + return $$rsvp$promise$$default.all(array, label); + }; - /* global global */ - } else if (typeof global === 'object') { - lib$rsvp$platform$$platform = global; - } else { - throw new Error('no global: `self` or `global` found'); + function $$rsvp$all$settled$$AllSettled(Constructor, entries, label) { + this._superConstructor(Constructor, entries, false /* don't abort on reject */, label); } - var lib$rsvp$platform$$default = lib$rsvp$platform$$platform; - function lib$rsvp$race$$race(array, label) { - return lib$rsvp$promise$$default.race(array, label); + $$rsvp$all$settled$$AllSettled.prototype = $$utils$$o_create($$enumerator$$default.prototype); + $$rsvp$all$settled$$AllSettled.prototype._superConstructor = $$enumerator$$default; + $$rsvp$all$settled$$AllSettled.prototype._makeResult = $$enumerator$$makeSettledResult; + + $$rsvp$all$settled$$AllSettled.prototype._validationError = function() { + return new Error('allSettled must be called with an array'); + }; + + var $$rsvp$all$settled$$default = function allSettled(entries, label) { + return new $$rsvp$all$settled$$AllSettled($$rsvp$promise$$default, entries, label).promise; + }; + + var $$rsvp$race$$default = function race(array, label) { + return $$rsvp$promise$$default.race(array, label); + }; + + function $$promise$hash$$PromiseHash(Constructor, object, label) { + this._superConstructor(Constructor, object, true, label); } - var lib$rsvp$race$$default = lib$rsvp$race$$race; - function lib$rsvp$reject$$reject(reason, label) { - return lib$rsvp$promise$$default.reject(reason, label); + + var $$promise$hash$$default = $$promise$hash$$PromiseHash; + $$promise$hash$$PromiseHash.prototype = $$utils$$o_create($$enumerator$$default.prototype); + $$promise$hash$$PromiseHash.prototype._superConstructor = $$enumerator$$default; + + $$promise$hash$$PromiseHash.prototype._init = function() { + this._result = {}; + }; + + $$promise$hash$$PromiseHash.prototype._validateInput = function(input) { + return input && typeof input === 'object'; + }; + + $$promise$hash$$PromiseHash.prototype._validationError = function() { + return new Error('Promise.hash must be called with an object'); + }; + + $$promise$hash$$PromiseHash.prototype._enumerate = function() { + var promise = this.promise; + var input = this._input; + var results = []; + + for (var key in input) { + if (promise._state === $$$internal$$PENDING && input.hasOwnProperty(key)) { + results.push({ + position: key, + entry: input[key] + }); + } + } + + var length = results.length; + this._remaining = length; + var result; + + for (var i = 0; promise._state === $$$internal$$PENDING && i < length; i++) { + result = results[i]; + this._eachEntry(result.entry, result.position); + } + }; + + var $$rsvp$hash$$default = function hash(object, label) { + return new $$promise$hash$$default($$rsvp$promise$$default, object, label).promise; + }; + + function $$rsvp$hash$settled$$HashSettled(Constructor, object, label) { + this._superConstructor(Constructor, object, false, label); } - var lib$rsvp$reject$$default = lib$rsvp$reject$$reject; - function lib$rsvp$resolve$$resolve(value, label) { - return lib$rsvp$promise$$default.resolve(value, label); - } - var lib$rsvp$resolve$$default = lib$rsvp$resolve$$resolve; - function lib$rsvp$rethrow$$rethrow(reason) { + + $$rsvp$hash$settled$$HashSettled.prototype = $$utils$$o_create($$promise$hash$$default.prototype); + $$rsvp$hash$settled$$HashSettled.prototype._superConstructor = $$enumerator$$default; + $$rsvp$hash$settled$$HashSettled.prototype._makeResult = $$enumerator$$makeSettledResult; + + $$rsvp$hash$settled$$HashSettled.prototype._validationError = function() { + return new Error('hashSettled must be called with an object'); + }; + + var $$rsvp$hash$settled$$default = function hashSettled(object, label) { + return new $$rsvp$hash$settled$$HashSettled($$rsvp$promise$$default, object, label).promise; + }; + + var $$rsvp$rethrow$$default = function rethrow(reason) { setTimeout(function() { throw reason; }); throw reason; - } - var lib$rsvp$rethrow$$default = lib$rsvp$rethrow$$rethrow; - - // defaults - lib$rsvp$config$$config.async = lib$rsvp$asap$$default; - lib$rsvp$config$$config.after = function(cb) { - setTimeout(cb, 0); }; - var lib$rsvp$$cast = lib$rsvp$resolve$$default; - function lib$rsvp$$async(callback, arg) { - lib$rsvp$config$$config.async(callback, arg); + + var $$rsvp$defer$$default = function defer(label) { + var deferred = { }; + + deferred.promise = new $$rsvp$promise$$default(function(resolve, reject) { + deferred.resolve = resolve; + deferred.reject = reject; + }, label); + + return deferred; + }; + + var $$rsvp$map$$default = function map(promises, mapFn, label) { + return $$rsvp$promise$$default.all(promises, label).then(function(values) { + if (!$$utils$$isFunction(mapFn)) { + throw new TypeError("You must pass a function as map's second argument."); + } + + var length = values.length; + var results = new Array(length); + + for (var i = 0; i < length; i++) { + results[i] = mapFn(values[i]); + } + + return $$rsvp$promise$$default.all(results, label); + }); + }; + + var $$rsvp$resolve$$default = function resolve(value, label) { + return $$rsvp$promise$$default.resolve(value, label); + }; + + var $$rsvp$reject$$default = function reject(reason, label) { + return $$rsvp$promise$$default.reject(reason, label); + }; + + var $$rsvp$filter$$default = function filter(promises, filterFn, label) { + return $$rsvp$promise$$default.all(promises, label).then(function(values) { + if (!$$utils$$isFunction(filterFn)) { + throw new TypeError("You must pass a function as filter's second argument."); + } + + var length = values.length; + var filtered = new Array(length); + + for (var i = 0; i < length; i++) { + filtered[i] = filterFn(values[i]); + } + + return $$rsvp$promise$$default.all(filtered, label).then(function(filtered) { + var results = new Array(length); + var newLength = 0; + + for (var i = 0; i < length; i++) { + if (filtered[i]) { + results[newLength] = values[i]; + newLength++; + } + } + + results.length = newLength; + + return results; + }); + }); + }; + + var $$rsvp$asap$$len = 0; + + var $$rsvp$asap$$default = function asap(callback, arg) { + $$rsvp$asap$$queue[$$rsvp$asap$$len] = callback; + $$rsvp$asap$$queue[$$rsvp$asap$$len + 1] = arg; + $$rsvp$asap$$len += 2; + if ($$rsvp$asap$$len === 2) { + // If len is 1, that means that we need to schedule an async flush. + // If additional callbacks are queued before the queue is flushed, they + // will be processed by this flush that we are scheduling. + $$rsvp$asap$$scheduleFlush(); + } + }; + + var $$rsvp$asap$$browserGlobal = (typeof window !== 'undefined') ? window : {}; + var $$rsvp$asap$$BrowserMutationObserver = $$rsvp$asap$$browserGlobal.MutationObserver || $$rsvp$asap$$browserGlobal.WebKitMutationObserver; + + // test for web worker but not in IE10 + var $$rsvp$asap$$isWorker = typeof Uint8ClampedArray !== 'undefined' && + typeof importScripts !== 'undefined' && + typeof MessageChannel !== 'undefined'; + + // node + function $$rsvp$asap$$useNextTick() { + return function() { + process.nextTick($$rsvp$asap$$flush); + }; } - function lib$rsvp$$on() { - lib$rsvp$config$$config['on'].apply(lib$rsvp$config$$config, arguments); + function $$rsvp$asap$$useMutationObserver() { + var iterations = 0; + var observer = new $$rsvp$asap$$BrowserMutationObserver($$rsvp$asap$$flush); + var node = document.createTextNode(''); + observer.observe(node, { characterData: true }); + + return function() { + node.data = (iterations = ++iterations % 2); + }; } - function lib$rsvp$$off() { - lib$rsvp$config$$config['off'].apply(lib$rsvp$config$$config, arguments); + // web worker + function $$rsvp$asap$$useMessageChannel() { + var channel = new MessageChannel(); + channel.port1.onmessage = $$rsvp$asap$$flush; + return function () { + channel.port2.postMessage(0); + }; + } + + function $$rsvp$asap$$useSetTimeout() { + return function() { + setTimeout($$rsvp$asap$$flush, 1); + }; + } + + var $$rsvp$asap$$queue = new Array(1000); + + function $$rsvp$asap$$flush() { + for (var i = 0; i < $$rsvp$asap$$len; i+=2) { + var callback = $$rsvp$asap$$queue[i]; + var arg = $$rsvp$asap$$queue[i+1]; + + callback(arg); + + $$rsvp$asap$$queue[i] = undefined; + $$rsvp$asap$$queue[i+1] = undefined; + } + + $$rsvp$asap$$len = 0; + } + + var $$rsvp$asap$$scheduleFlush; + + // Decide what async method to use to triggering processing of queued callbacks: + if (typeof process !== 'undefined' && {}.toString.call(process) === '[object process]') { + $$rsvp$asap$$scheduleFlush = $$rsvp$asap$$useNextTick(); + } else if ($$rsvp$asap$$BrowserMutationObserver) { + $$rsvp$asap$$scheduleFlush = $$rsvp$asap$$useMutationObserver(); + } else if ($$rsvp$asap$$isWorker) { + $$rsvp$asap$$scheduleFlush = $$rsvp$asap$$useMessageChannel(); + } else { + $$rsvp$asap$$scheduleFlush = $$rsvp$asap$$useSetTimeout(); + } + + // default async is asap; + $$rsvp$config$$config.async = $$rsvp$asap$$default; + + var $$rsvp$$cast = $$rsvp$resolve$$default; + + function $$rsvp$$async(callback, arg) { + $$rsvp$config$$config.async(callback, arg); + } + + function $$rsvp$$on() { + $$rsvp$config$$config.on.apply($$rsvp$config$$config, arguments); + } + + function $$rsvp$$off() { + $$rsvp$config$$config.off.apply($$rsvp$config$$config, arguments); } // Set up instrumentation through `window.__PROMISE_INTRUMENTATION__` if (typeof window !== 'undefined' && typeof window['__PROMISE_INSTRUMENTATION__'] === 'object') { - var lib$rsvp$$callbacks = window['__PROMISE_INSTRUMENTATION__']; - lib$rsvp$config$$configure('instrument', true); - for (var lib$rsvp$$eventName in lib$rsvp$$callbacks) { - if (lib$rsvp$$callbacks.hasOwnProperty(lib$rsvp$$eventName)) { - lib$rsvp$$on(lib$rsvp$$eventName, lib$rsvp$$callbacks[lib$rsvp$$eventName]); + var $$rsvp$$callbacks = window['__PROMISE_INSTRUMENTATION__']; + $$rsvp$config$$configure('instrument', true); + for (var $$rsvp$$eventName in $$rsvp$$callbacks) { + if ($$rsvp$$callbacks.hasOwnProperty($$rsvp$$eventName)) { + $$rsvp$$on($$rsvp$$eventName, $$rsvp$$callbacks[$$rsvp$$eventName]); } } } - var lib$rsvp$umd$$RSVP = { - 'race': lib$rsvp$race$$default, - 'Promise': lib$rsvp$promise$$default, - 'allSettled': lib$rsvp$all$settled$$default, - 'hash': lib$rsvp$hash$$default, - 'hashSettled': lib$rsvp$hash$settled$$default, - 'denodeify': lib$rsvp$node$$default, - 'on': lib$rsvp$$on, - 'off': lib$rsvp$$off, - 'map': lib$rsvp$map$$default, - 'filter': lib$rsvp$filter$$default, - 'resolve': lib$rsvp$resolve$$default, - 'reject': lib$rsvp$reject$$default, - 'all': lib$rsvp$all$$default, - 'rethrow': lib$rsvp$rethrow$$default, - 'defer': lib$rsvp$defer$$default, - 'EventTarget': lib$rsvp$events$$default, - 'configure': lib$rsvp$config$$configure, - 'async': lib$rsvp$$async + var rsvp$umd$$RSVP = { + 'race': $$rsvp$race$$default, + 'Promise': $$rsvp$promise$$default, + 'allSettled': $$rsvp$all$settled$$default, + 'hash': $$rsvp$hash$$default, + 'hashSettled': $$rsvp$hash$settled$$default, + 'denodeify': $$rsvp$node$$default, + 'on': $$rsvp$$on, + 'off': $$rsvp$$off, + 'map': $$rsvp$map$$default, + 'filter': $$rsvp$filter$$default, + 'resolve': $$rsvp$resolve$$default, + 'reject': $$rsvp$reject$$default, + 'all': $$rsvp$all$$default, + 'rethrow': $$rsvp$rethrow$$default, + 'defer': $$rsvp$defer$$default, + 'EventTarget': $$rsvp$events$$default, + 'configure': $$rsvp$config$$configure, + 'async': $$rsvp$$async }; /* global define:true module:true window: true */ - if (typeof define === 'function' && define['amd']) { - define(function() { return lib$rsvp$umd$$RSVP; }); - } else if (typeof module !== 'undefined' && module['exports']) { - module['exports'] = lib$rsvp$umd$$RSVP; - } else if (typeof lib$rsvp$platform$$default !== 'undefined') { - lib$rsvp$platform$$default['RSVP'] = lib$rsvp$umd$$RSVP; + if (typeof define === 'function' && define.amd) { + define(function() { return rsvp$umd$$RSVP; }); + } else if (typeof module !== 'undefined' && module.exports) { + module.exports = rsvp$umd$$RSVP; + } else if (typeof this !== 'undefined') { + this['RSVP'] = rsvp$umd$$RSVP; } }).call(this); - - 'use strict'; var EPUBJS = EPUBJS || {}; @@ -2199,7 +2211,7 @@ EPUBJS.Book.prototype.loadChange = function(url){ EPUBJS.Book.prototype.unlistenToRenderer = function(renderer){ renderer.Events.forEach(function(eventName){ renderer.off(eventName); - } ); + }); }; //-- Choose between a request from store or a request from network @@ -3012,7 +3024,7 @@ EPUBJS.Chapter.prototype.load = function(_store, _credentials){ if(store){ promise = store.getXml(this.absolute); }else{ - promise = EPUBJS.core.request(this.absolute, 'xml', credentials); + promise = EPUBJS.core.request(this.absolute, false, credentials); } promise.then(function(xml){ @@ -3070,15 +3082,6 @@ EPUBJS.Chapter.prototype.url = function(_store){ url = this.absolute; deferred.resolve(url); } - /* - loaded = EPUBJS.core.request(url, 'xml', false); - loaded.then(function(contents){ - chapter.contents = contents; - deferred.resolve(chapter.absolute); - }, function(error){ - deferred.reject(error); - }); - */ return deferred.promise; }; @@ -3394,26 +3397,83 @@ EPUBJS.core.getEls = function(classes) { EPUBJS.core.request = function(url, type, withCredentials) { var supportsURL = window.URL; var BLOB_RESPONSE = supportsURL ? "blob" : "arraybuffer"; - var deferred = new RSVP.defer(); - var xhr = new XMLHttpRequest(); + var uri; //-- Check from PDF.js: // https://github.com/mozilla/pdf.js/blob/master/web/compatibility.js var xhrPrototype = XMLHttpRequest.prototype; + var handler = function() { + var r; + + if (this.readyState != this.DONE) return; + + if (this.status === 200 || (this.status === 0 && this.response) ) { // Android & Firefox reporting 0 for local & blob urls + if(type == 'xml'){ + // If this.responseXML wasn't set, try to parse using a DOMParser from text + if(!this.responseXML){ + r = new DOMParser().parseFromString(this.response, "application/xml"); + } else { + r = this.responseXML; + } + }else + if(type == 'xhtml'){ + if(!this.responseXML){ + r = new DOMParser().parseFromString(this.response, "application/xhtml+xml"); + } else { + r = this.responseXML; + } + }else + if(type == 'html'){ + if(!this.responseXML){ + r = new DOMParser().parseFromString(this.response, "text/html"); + } else { + r = this.responseXML; + } + } else + if(type == 'json'){ + r = JSON.parse(this.response); + }else + if(type == 'blob'){ + + if(supportsURL) { + r = this.response; + } else { + //-- Safari doesn't support responseType blob, so create a blob from arraybuffer + r = new Blob([this.response]); + } + + }else{ + r = this.response; + } + + deferred.resolve(r); + } else { + deferred.reject({ + message : this.response, + stack : new Error().stack + }); + } + }; + if (!('overrideMimeType' in xhrPrototype)) { // IE10 might have response, but not overrideMimeType Object.defineProperty(xhrPrototype, 'overrideMimeType', { value: function xmlHttpRequestOverrideMimeType(mimeType) {} }); } + if(withCredentials) { xhr.withCredentials = true; } - xhr.open("GET", url, true); - xhr.onreadystatechange = handler; + + // If type isn't set, determine it from the file extension + if(!type) { + uri = EPUBJS.core.uri(url); + type = uri.extension; + } if(type == 'blob'){ xhr.responseType = BLOB_RESPONSE; @@ -3424,56 +3484,26 @@ EPUBJS.core.request = function(url, type, withCredentials) { } if(type == 'xml') { - xhr.overrideMimeType('text/xml'); + xhr.responseType = "document"; + xhr.overrideMimeType('text/xml'); // for OPF parsing } + if(type == 'xhtml') { + xhr.responseType = "document"; + } + + if(type == 'html') { + xhr.responseType = "document"; + } + if(type == "binary") { xhr.responseType = "arraybuffer"; } + xhr.open("GET", url, true); + xhr.onreadystatechange = handler; xhr.send(); - function handler() { - if (this.readyState === this.DONE) { - if (this.status === 200 || (this.status === 0 && this.response) ) { // Android & Firefox reporting 0 for local & blob urls - var r; - - if(type == 'xml'){ - - // If this.responseXML wasn't set, try to parse using a DOMParser from text - if(!this.responseXML){ - r = new DOMParser().parseFromString(this.response, "text/xml"); - } else { - r = this.responseXML; - } - - }else - if(type == 'json'){ - r = JSON.parse(this.response); - }else - if(type == 'blob'){ - - if(supportsURL) { - r = this.response; - } else { - //-- Safari doesn't support responseType blob, so create a blob from arraybuffer - r = new Blob([this.response]); - } - - }else{ - r = this.response; - } - - deferred.resolve(r); - } else { - deferred.reject({ - message : this.response, - stack : new Error().stack - }); - } - } - } - return deferred.promise; }; @@ -3979,6 +4009,7 @@ EPUBJS.core.values = function(object) { } return result; }; + EPUBJS.EpubCFI = function(cfiStr){ if(cfiStr) return this.parse(cfiStr); }; @@ -7620,7 +7651,8 @@ EPUBJS.Unarchiver.prototype.getXml = function(url, encoding){ return this.getText(decodededUrl, encoding). then(function(text){ var parser = new DOMParser(); - return parser.parseFromString(text, "text/xml"); + var mimeType = EPUBJS.core.getMimeType(url); + return parser.parseFromString(text, mimeType); }); }; @@ -7633,7 +7665,7 @@ EPUBJS.Unarchiver.prototype.getUrl = function(url, mime){ var _URL = window.URL || window.webkitURL || window.mozURL; var tempUrl; var blob; - + if(!entry) { deferred.reject({ message : "File not found in the epub: " + url, @@ -7739,7 +7771,7 @@ EPUBJS.Unarchiver.prototype.toStorage = function(entries){ "rdf+xml" : "rdf", "smil" : [ "smi", "smil" ], "xhtml+xml" : [ "xhtml", "xht" ], - "xml" : [ "xml", "xsl", "xsd" ], + "xml" : [ "xml", "xsl", "xsd", "opf" ], "zip" : "zip", "x-httpd-eruby" : "rhtml", "x-latex" : "latex", @@ -7755,7 +7787,7 @@ EPUBJS.Unarchiver.prototype.toStorage = function(entries){ "mathml+xml" : "mathml", "metalink+xml" : "metalink", "mp4" : "mp4s", - "oebps-package+xml" : "opf", + // "oebps-package+xml" : "opf", "omdoc+xml" : "omdoc", "oxps" : "oxps", "vnd.amazon.ebook" : "azw", @@ -7921,4 +7953,5 @@ EPUBJS.Unarchiver.prototype.toStorage = function(entries){ }; })(); + //# sourceMappingURL=epub.js.map \ No newline at end of file diff --git a/build/epub.js.map b/build/epub.js.map index 0138dc6..55e7ef0 100644 --- a/build/epub.js.map +++ b/build/epub.js.map @@ -22,5 +22,5 @@ "libs/mime-types/mime-types.js" ], "names": [], - "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC5jDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACxyCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC7YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;ACxlBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACtiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC5KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACnOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;ACpcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC7RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC9sCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;ACzJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC9PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACnIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,K" + "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,c;ACzkDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxyCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;ACpcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9sCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA" } \ No newline at end of file diff --git a/build/epub.min.js b/build/epub.min.js index d499fa1..00eae36 100644 --- a/build/epub.min.js +++ b/build/epub.min.js @@ -3,10 +3,10 @@ * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors * @license Licensed under MIT license * See https://raw.githubusercontent.com/tildeio/rsvp.js/master/LICENSE - * @version 3.1.0 + * @version 3.0.14 */ -(function(){"use strict";function a(a){return"function"==typeof a||"object"==typeof a&&null!==a}function b(a){return"function"==typeof a}function c(a){return"object"==typeof a&&null!==a}function d(){}function e(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1}function f(a){var b=a._promiseCallbacks;return b||(b=a._promiseCallbacks={}),b}function g(a,b){return"onerror"===a?void va.on("error",b):2!==arguments.length?va[a]:void(va[a]=b)}function h(){setTimeout(function(){for(var a,b=0;bh;h++)u(e.resolve(a[h]),void 0,c,d);return f}function E(a,b){var c=this;if(a&&"object"==typeof a&&a.constructor===c)return a;var d=new c(k,b);return q(d,a),d}function F(a,b){var c=this,d=new c(k,b);return t(d,a),d}function G(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function H(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function I(a,c){var d=this;d._id=Ja++,d._label=c,d._state=void 0,d._result=void 0,d._subscribers=[],va.instrument&&xa("created",d),k!==a&&(b(a)||G(),d instanceof I||H(),z(d,a))}function J(a,b,c){this._superConstructor(a,b,!1,c)}function K(a,b){return new J(Ka,a,b).promise}function L(a,b){return Ka.all(a,b)}function M(a,b){Wa[Pa]=a,Wa[Pa+1]=b,Pa+=2,2===Pa&&Ma()}function N(){var a=process.nextTick,b=process.versions.node.match(/^(?:(\d+)\.)?(?:(\d+)\.)?(\*|\d+)$/);return Array.isArray(b)&&"0"===b[1]&&"10"===b[2]&&(a=setImmediate),function(){a(S)}}function O(){return function(){La(S)}}function P(){var a=0,b=new Ta(S),c=document.createTextNode("");return b.observe(c,{characterData:!0}),function(){c.data=a=++a%2}}function Q(){var a=new MessageChannel;return a.port1.onmessage=S,function(){a.port2.postMessage(0)}}function R(){return function(){setTimeout(S,1)}}function S(){for(var a=0;Pa>a;a+=2){var b=Wa[a],c=Wa[a+1];b(c),Wa[a]=void 0,Wa[a+1]=void 0}Pa=0}function T(){try{var a=require,b=a("vertx");return La=b.runOnLoop||b.runOnContext,O()}catch(c){return R()}}function U(a){var b={};return b.promise=new Ka(function(a,c){b.resolve=a,b.reject=c},a),b}function V(a,c,d){return Ka.all(a,d).then(function(a){if(!b(c))throw new TypeError("You must pass a function as filter's second argument.");for(var e=a.length,f=new Array(e),g=0;e>g;g++)f[g]=c(a[g]);return Ka.all(f,d).then(function(b){for(var c=new Array(e),d=0,f=0;e>f;f++)b[f]&&(c[d]=a[f],d++);return c.length=d,c})})}function W(a,b,c){this._superConstructor(a,b,!0,c)}function X(a,b,c){this._superConstructor(a,b,!1,c)}function Y(a,b){return new X(Ka,a,b).promise}function Z(a,b){return new Za(Ka,a,b).promise}function $(a,c,d){return Ka.all(a,d).then(function(a){if(!b(c))throw new TypeError("You must pass a function as map's second argument.");for(var e=a.length,f=new Array(e),g=0;e>g;g++)f[g]=c(a[g]);return Ka.all(f,d)})}function _(){this.value=void 0}function aa(a){try{return a.then}catch(b){return cb.value=b,cb}}function ba(a,b,c){try{a.apply(b,c)}catch(d){return cb.value=d,cb}}function ca(a,b){for(var c,d,e={},f=a.length,g=new Array(f),h=0;f>h;h++)g[h]=a[h];for(d=0;dd;d++)c[d-1]=a[d];return c}function ea(a,b){return{then:function(c,d){return a.call(b,c,d)}}}function fa(a,b){var c=function(){for(var c,d=this,e=arguments.length,f=new Array(e+1),g=!1,h=0;e>h;++h){if(c=arguments[h],!g){if(g=ia(c),g===db){var i=new Ka(k);return t(i,db.value),i}g&&g!==!0&&(c=ea(g,c))}f[h]=c}var j=new Ka(k);return f[e]=function(a,c){a?t(j,a):void 0===b?q(j,c):b===!0?q(j,da(arguments)):ra(b)?q(j,ca(arguments,b)):q(j,c)},g?ha(j,f,a,d):ga(j,f,a,d)};return c.__proto__=a,c}function ga(a,b,c,d){var e=ba(c,d,b);return e===cb&&t(a,e.value),a}function ha(a,b,c,d){return Ka.all(b).then(function(b){var e=ba(c,d,b);return e===cb&&t(a,e.value),a})}function ia(a){return a&&"object"==typeof a?a.constructor===Ka?!0:aa(a):!1}function ja(a,b){return Ka.race(a,b)}function ka(a,b){return Ka.reject(a,b)}function la(a,b){return Ka.resolve(a,b)}function ma(a){throw setTimeout(function(){throw a}),a}function na(a,b){va.async(a,b)}function oa(){va.on.apply(va,arguments)}function pa(){va.off.apply(va,arguments)}var qa;qa=Array.isArray?Array.isArray:function(a){return"[object Array]"===Object.prototype.toString.call(a)};var ra=qa,sa=Date.now||function(){return(new Date).getTime()},ta=Object.create||function(a){if(arguments.length>1)throw new Error("Second argument not supported");if("object"!=typeof a)throw new TypeError("Argument must be an object");return d.prototype=a,new d},ua={mixin:function(a){return a.on=this.on,a.off=this.off,a.trigger=this.trigger,a._promiseCallbacks=void 0,a},on:function(a,b){if("function"!=typeof b)throw new TypeError("Callback must be a function");var c,d=f(this);c=d[a],c||(c=d[a]=[]),-1===e(c,b)&&c.push(b)},off:function(a,b){var c,d,g=f(this);return b?(c=g[a],d=e(c,b),void(-1!==d&&c.splice(d,1))):void(g[a]=[])},trigger:function(a,b,c){var d,e,g=f(this);if(d=g[a])for(var h=0;he;e++)a._eachEntry(d[e],e)},B.prototype._eachEntry=function(a,b){var d=this,e=d._instanceConstructor;c(a)?a.constructor===e&&a._state!==ya?(a._onError=null,d._settledAt(a._state,b,a._result)):d._willSettleAt(e.resolve(a),b):(d._remaining--,d._result[b]=d._makeResult(za,b,a))},B.prototype._settledAt=function(a,b,c){var d=this,e=d.promise;e._state===ya&&(d._remaining--,d._abortOnReject&&a===Aa?t(e,c):d._result[b]=d._makeResult(a,b,c)),0===d._remaining&&s(e,d._result)},B.prototype._makeResult=function(a,b,c){return c},B.prototype._willSettleAt=function(a,b){var c=this;u(a,void 0,function(a){c._settledAt(za,b,a)},function(a){c._settledAt(Aa,b,a)})};var Ea=C,Fa=D,Ga=E,Ha=F,Ia="rsvp_"+sa()+"-",Ja=0,Ka=I;I.cast=Ga,I.all=Ea,I.race=Fa,I.resolve=Ga,I.reject=Ha,I.prototype={constructor:I,_guidKey:Ia,_onError:function(a){var b=this;va.after(function(){b._onError&&va.trigger("error",a,b._label)})},then:function(a,b,c){var d=this,e=d._state;if(e===za&&!a||e===Aa&&!b)return va.instrument&&xa("chained",d,d),d;d._onError=null;var f=new d.constructor(k,c),g=d._result;if(va.instrument&&xa("chained",d,f),e){var h=arguments[e-1];va.async(function(){y(e,f,h,g)})}else u(d,f,a,b);return f},"catch":function(a,b){return this.then(void 0,a,b)},"finally":function(a,b){var c=this,d=c.constructor;return c.then(function(b){return d.resolve(a()).then(function(){return b})},function(b){return d.resolve(a()).then(function(){throw b})},b)}},J.prototype=ta(Da.prototype),J.prototype._superConstructor=Da,J.prototype._makeResult=A,J.prototype._validationError=function(){return new Error("allSettled must be called with an array")};var La,Ma,Na=K,Oa=L,Pa=0,Qa=({}.toString,M),Ra="undefined"!=typeof window?window:void 0,Sa=Ra||{},Ta=Sa.MutationObserver||Sa.WebKitMutationObserver,Ua="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),Va="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,Wa=new Array(1e3);Ma=Ua?N():Ta?P():Va?Q():void 0===Ra&&"function"==typeof require?T():R();var Xa=U,Ya=V,Za=W;W.prototype=ta(Da.prototype),W.prototype._superConstructor=Da,W.prototype._init=function(){this._result={}},W.prototype._validateInput=function(a){return a&&"object"==typeof a},W.prototype._validationError=function(){return new Error("Promise.hash must be called with an object")},W.prototype._enumerate=function(){var a=this,b=a.promise,c=a._input,d=[];for(var e in c)b._state===ya&&Object.prototype.hasOwnProperty.call(c,e)&&d.push({position:e,entry:c[e]});var f=d.length;a._remaining=f;for(var g,h=0;b._state===ya&&f>h;h++)g=d[h],a._eachEntry(g.entry,g.position)},X.prototype=ta(Za.prototype),X.prototype._superConstructor=Da,X.prototype._makeResult=A,X.prototype._validationError=function(){return new Error("hashSettled must be called with an object")};var $a,_a=Y,ab=Z,bb=$,cb=new _,db=new _,eb=fa;if("object"==typeof self)$a=self;else{if("object"!=typeof global)throw new Error("no global: `self` or `global` found");$a=global}var fb=$a,gb=ja,hb=ka,ib=la,jb=ma;va.async=Qa,va.after=function(a){setTimeout(a,0)};if("undefined"!=typeof window&&"object"==typeof window.__PROMISE_INSTRUMENTATION__){var kb=window.__PROMISE_INSTRUMENTATION__;g("instrument",!0);for(var lb in kb)kb.hasOwnProperty(lb)&&oa(lb,kb[lb])}var mb={race:gb,Promise:Ka,allSettled:Na,hash:ab,hashSettled:_a,denodeify:eb,on:oa,off:pa,map:bb,filter:Ya,resolve:ib,reject:hb,all:Oa,rethrow:jb,defer:Xa,EventTarget:ua,configure:g,async:na};"function"==typeof define&&define.amd?define(function(){return mb}):"undefined"!=typeof module&&module.exports?module.exports=mb:"undefined"!=typeof fb&&(fb.RSVP=mb)}).call(this);var EPUBJS=EPUBJS||{};EPUBJS.VERSION="0.2.11",EPUBJS.plugins=EPUBJS.plugins||{},EPUBJS.filePath=EPUBJS.filePath||"/epubjs/",EPUBJS.Render={},function(a){var b=(a.ePub||{},a.ePub=function(){var a,b;return"undefined"!=typeof arguments[0]&&("string"==typeof arguments[0]||arguments[0]instanceof ArrayBuffer)&&(a=arguments[0],arguments[1]&&"object"==typeof arguments[1]?(b=arguments[1],b.bookPath=a):b={bookPath:a}),!arguments[0]||"object"!=typeof arguments[0]||arguments[0]instanceof ArrayBuffer||(b=arguments[0]),new EPUBJS.Book(b)});"function"==typeof define&&define.amd?define(["rsvp"],function(){return b}):"undefined"!=typeof module&&module.exports&&(module.exports=b)}(window),EPUBJS.Book=function(a){this.settings=EPUBJS.core.defaults(a||{},{bookPath:void 0,bookKey:void 0,packageUrl:void 0,storage:!1,fromStorage:!1,saved:!1,online:!0,contained:!1,width:void 0,height:void 0,layoutOveride:void 0,orientation:void 0,minSpreadWidth:768,gap:"auto",version:1,restore:!1,reload:!1,"goto":!1,styles:{},headTags:{},withCredentials:!1,render_method:"Iframe"}),this.settings.EPUBJSVERSION=EPUBJS.VERSION,this.spinePos=0,this.stored=!1,this.online=this.settings.online||navigator.onLine,this.networkListeners(),this.ready={manifest:new RSVP.defer,spine:new RSVP.defer,metadata:new RSVP.defer,cover:new RSVP.defer,toc:new RSVP.defer,pageList:new RSVP.defer},this.readyPromises=[this.ready.manifest.promise,this.ready.spine.promise,this.ready.metadata.promise,this.ready.cover.promise,this.ready.toc.promise],this.pageList=[],this.pagination=new EPUBJS.Pagination,this.pageListReady=this.ready.pageList.promise,this.ready.all=RSVP.all(this.readyPromises),this.ready.all.then(this._ready.bind(this)),this.isRendered=!1,this._q=EPUBJS.core.queue(this),this._rendering=!1,this._displayQ=EPUBJS.core.queue(this),this._moving=!1,this._gotoQ=EPUBJS.core.queue(this),this.renderer=new EPUBJS.Renderer(this.settings.render_method),this.renderer.setMinSpreadWidth(this.settings.minSpreadWidth),this.renderer.setGap(this.settings.gap),this.listenToRenderer(this.renderer),this.defer_opened=new RSVP.defer,this.opened=this.defer_opened.promise,this.store=!1,this.settings.storage!==!1&&this.fromStorage(!0),("string"==typeof this.settings.bookPath||this.settings.bookPath instanceof ArrayBuffer)&&this.open(this.settings.bookPath,this.settings.reload),window.addEventListener("beforeunload",this.unload.bind(this),!1)},EPUBJS.Book.prototype.open=function(a,b){var c,d=this,e=new RSVP.defer;return this.settings.bookPath=a,this.settings.contained||this.isContained(a)?(this.settings.contained=this.contained=!0,this.bookUrl="",c=this.unarchive(a).then(function(){return d.loadPackage()})):(this.bookUrl=this.urlFrom(a),c=this.loadPackage()),this.settings.restore&&!b&&localStorage?c.then(function(a){var b=d.packageIdentifier(a),c=d.restore(b);c||d.unpack(a),e.resolve(),d.defer_opened.resolve()}):c.then(function(a){d.unpack(a),e.resolve(),d.defer_opened.resolve()}),this._registerReplacements(this.renderer),e.promise},EPUBJS.Book.prototype.loadPackage=function(a){var b,c=this,d=new EPUBJS.Parser,e=a||"META-INF/container.xml";return b=this.settings.packageUrl?c.loadXml(c.settings.packageUrl):c.loadXml(c.bookUrl+e).then(function(a){return d.container(a)}).then(function(a){return c.settings.contentsPath=c.bookUrl+a.basePath,c.settings.packageUrl=c.bookUrl+a.packagePath,c.settings.encoding=a.encoding,c.loadXml(c.settings.packageUrl)}),b["catch"](function(a){console.error("Could not load book at: "+e),c.trigger("book:loadFailed",e)}),b},EPUBJS.Book.prototype.packageIdentifier=function(a){var b=new EPUBJS.Parser;return b.identifier(a)},EPUBJS.Book.prototype.unpack=function(a){var b=this,c=new EPUBJS.Parser;b.contents=c.packageContents(a,b.settings.contentsPath),b.manifest=b.contents.manifest,b.spine=b.contents.spine,b.spineIndexByURL=b.contents.spineIndexByURL,b.metadata=b.contents.metadata,b.settings.bookKey||(b.settings.bookKey=b.generateBookKey(b.metadata.identifier)),b.globalLayoutProperties=b.parseLayoutProperties(b.metadata),b.contents.coverPath&&(b.cover=b.contents.cover=b.settings.contentsPath+b.contents.coverPath),b.spineNodeIndex=b.contents.spineNodeIndex,b.ready.manifest.resolve(b.contents.manifest),b.ready.spine.resolve(b.contents.spine),b.ready.metadata.resolve(b.contents.metadata),b.ready.cover.resolve(b.contents.cover),b.locations=new EPUBJS.Locations(b.spine,b.store,b.settings.withCredentials),b.contents.navPath?(b.settings.navUrl=b.settings.contentsPath+b.contents.navPath,b.loadXml(b.settings.navUrl).then(function(a){return c.nav(a,b.spineIndexByURL,b.spine)}).then(function(a){b.toc=b.contents.toc=a,b.ready.toc.resolve(b.contents.toc)},function(a){b.ready.toc.resolve(!1)}),b.loadXml(b.settings.navUrl).then(function(a){return c.pageList(a,b.spineIndexByURL,b.spine)}).then(function(a){var c=new EPUBJS.EpubCFI,d=0;0!==a.length&&(b.pageList=b.contents.pageList=a,b.pageList.forEach(function(a){a.cfi||(d+=1,c.generateCfiFromHref(a.href,b).then(function(c){a.cfi=c,a.packageUrl=b.settings.packageUrl,d-=1,0===d&&(b.pagination.process(b.pageList),b.ready.pageList.resolve(b.pageList))}))}),d||(b.pagination.process(b.pageList),b.ready.pageList.resolve(b.pageList)))},function(a){b.ready.pageList.resolve([])})):b.contents.tocPath?(b.settings.tocUrl=b.settings.contentsPath+b.contents.tocPath,b.loadXml(b.settings.tocUrl).then(function(a){return c.toc(a,b.spineIndexByURL,b.spine)}).then(function(a){b.toc=b.contents.toc=a,b.ready.toc.resolve(b.contents.toc)},function(a){b.ready.toc.resolve(!1)})):b.ready.toc.resolve(!1)},EPUBJS.Book.prototype.createHiddenRender=function(a,b,c){var d,e,f=this.element.getBoundingClientRect(),g=b||this.settings.width||f.width,h=c||this.settings.height||f.height;return a.setMinSpreadWidth(this.settings.minSpreadWidth),a.setGap(this.settings.gap),this._registerReplacements(a),this.settings.forceSingle&&a.forceSingle(!0),d=document.createElement("div"),d.style.visibility="hidden",d.style.overflow="hidden",d.style.width="0",d.style.height="0",this.element.appendChild(d),e=document.createElement("div"),e.style.visibility="hidden",e.style.overflow="hidden",e.style.width=g+"px",e.style.height=h+"px",d.appendChild(e),a.initialize(e),d},EPUBJS.Book.prototype.generatePageList=function(a,b){var c=[],d=new EPUBJS.Renderer(this.settings.render_method,!1),e=this.createHiddenRender(d,a,b),f=new RSVP.defer,g=-1,h=this.spine.length,i=0,j=function(a){var b,e=g+1,f=a||new RSVP.defer;return e>=h?f.resolve():(g=e,b=new EPUBJS.Chapter(this.spine[g],this.store),d.displayChapter(b,this.globalLayoutProperties).then(function(a){d.pageMap.forEach(function(a){i+=1,c.push({cfi:a.start,page:i})}),d.pageMap.length%2>0&&d.spreads&&(i+=1,c.push({cfi:d.pageMap[d.pageMap.length-1].end,page:i})),setTimeout(function(){j(f)},1)})),f.promise}.bind(this);j().then(function(){d.remove(),this.element.removeChild(e),f.resolve(c)}.bind(this));return f.promise},EPUBJS.Book.prototype.generatePagination=function(a,b){var c=this,d=new RSVP.defer;return this.ready.spine.promise.then(function(){c.generatePageList(a,b).then(function(a){c.pageList=c.contents.pageList=a,c.pagination.process(a),c.ready.pageList.resolve(c.pageList),d.resolve(c.pageList)})}),d.promise},EPUBJS.Book.prototype.loadPagination=function(a){var b=JSON.parse(a);return b&&b.length&&(this.pageList=b,this.pagination.process(this.pageList),this.ready.pageList.resolve(this.pageList)),this.pageList},EPUBJS.Book.prototype.getPageList=function(){return this.ready.pageList.promise},EPUBJS.Book.prototype.getMetadata=function(){return this.ready.metadata.promise},EPUBJS.Book.prototype.getToc=function(){return this.ready.toc.promise},EPUBJS.Book.prototype.networkListeners=function(){var a=this;window.addEventListener("offline",function(b){a.online=!1,a.settings.storage&&a.fromStorage(!0),a.trigger("book:offline")},!1),window.addEventListener("online",function(b){a.online=!0,a.settings.storage&&a.fromStorage(!1),a.trigger("book:online")},!1)},EPUBJS.Book.prototype.listenToRenderer=function(a){var b=this;a.Events.forEach(function(c){a.on(c,function(a){b.trigger(c,a)})}),a.on("renderer:visibleRangeChanged",function(a){var b,c,d,e=[];this.pageList.length>0&&(b=this.pagination.pageFromCfi(a.start),d=this.pagination.percentageFromPage(b),e.push(b),a.end&&(c=this.pagination.pageFromCfi(a.end),e.push(c)),this.trigger("book:pageChanged",{anchorPage:b,percentage:d,pageRange:e}))}.bind(this)),a.on("render:loaded",this.loadChange.bind(this))},EPUBJS.Book.prototype.loadChange=function(a){var b,c,d=EPUBJS.core.uri(a),e=EPUBJS.core.uri(this.currentChapter.absolute);d.path!=e.path?(console.warn("Miss Match",d.path,this.currentChapter.absolute),b=this.spineIndexByURL[d.filename],c=new EPUBJS.Chapter(this.spine[b],this.store),this.currentChapter=c,this.renderer.currentChapter=c,this.renderer.afterLoad(this.renderer.render.docEl),this.renderer.beforeDisplay(function(){this.renderer.afterDisplay()}.bind(this))):this._rendering||this.renderer.reformat()},EPUBJS.Book.prototype.unlistenToRenderer=function(a){a.Events.forEach(function(b){a.off(b)})},EPUBJS.Book.prototype.loadXml=function(a){return this.settings.fromStorage?this.store.getXml(a,this.settings.encoding):this.settings.contained?this.zip.getXml(a,this.settings.encoding):EPUBJS.core.request(a,"xml",this.settings.withCredentials)},EPUBJS.Book.prototype.urlFrom=function(a){var b,c=EPUBJS.core.uri(a),d=c.protocol,e="/"==c.path[0],f=window.location,g=f.origin||f.protocol+"//"+f.host,h=document.getElementsByTagName("base");return h.length&&(b=h[0].href),c.protocol?c.origin+c.path:!d&&e?(b||g)+c.path:d||e?void 0:EPUBJS.core.resolveUrl(b||f.pathname,c.path)},EPUBJS.Book.prototype.unarchive=function(a){return this.zip=new EPUBJS.Unarchiver,this.store=this.zip,this.zip.open(a)},EPUBJS.Book.prototype.isContained=function(a){if(a instanceof ArrayBuffer)return!0;var b=EPUBJS.core.uri(a);return!b.extension||"epub"!=b.extension&&"zip"!=b.extension?!1:!0},EPUBJS.Book.prototype.isSaved=function(a){var b;return localStorage?(b=localStorage.getItem(a),localStorage&&null!==b?!0:!1):!1},EPUBJS.Book.prototype.generateBookKey=function(a){return"epubjs:"+EPUBJS.VERSION+":"+window.location.host+":"+a},EPUBJS.Book.prototype.saveContents=function(){return localStorage?void localStorage.setItem(this.settings.bookKey,JSON.stringify(this.contents)):!1},EPUBJS.Book.prototype.removeSavedContents=function(){return localStorage?void localStorage.removeItem(this.settings.bookKey):!1},EPUBJS.Book.prototype.renderTo=function(a){var b,c=this;if(EPUBJS.core.isElement(a))this.element=a;else{if("string"!=typeof a)return void console.error("Not an Element");this.element=EPUBJS.core.getEl(a)}return b=this.opened.then(function(){return c.renderer.initialize(c.element,c.settings.width,c.settings.height),c.metadata.direction&&c.renderer.setDirection(c.metadata.direction),c._rendered(),c.startDisplay()})},EPUBJS.Book.prototype.startDisplay=function(){var a;return a=this.settings["goto"]?this["goto"](this.settings["goto"]):this.settings.previousLocationCfi?this.gotoCfi(this.settings.previousLocationCfi):this.displayChapter(this.spinePos)},EPUBJS.Book.prototype.restore=function(a){var b,c=this,d=["manifest","spine","metadata","cover","toc","spineNodeIndex","spineIndexByURL","globalLayoutProperties"],e=!1,f=this.generateBookKey(a),g=localStorage.getItem(f),h=d.length;if(this.settings.clearSaved&&(e=!0),!e&&"undefined"!=g&&null!==g)for(c.contents=JSON.parse(g),b=0;h>b;b++){var i=d[b];if(!c.contents[i]){e=!0;break}c[i]=c.contents[i]}return!e&&g&&this.contents&&this.settings.contentsPath?(this.settings.bookKey=f,this.ready.manifest.resolve(this.manifest),this.ready.spine.resolve(this.spine),this.ready.metadata.resolve(this.metadata),this.ready.cover.resolve(this.cover),this.ready.toc.resolve(this.toc),!0):!1},EPUBJS.Book.prototype.displayChapter=function(a,b,c){var d,e,f,g,h=this,i=c||new RSVP.defer;return this.isRendered?this._rendering||this._rendering?(this._displayQ.enqueue("displayChapter",[a,b,i]),i.promise):(EPUBJS.core.isNumber(a)?f=a:(e=new EPUBJS.EpubCFI(a),f=e.spinePos),(0>f||f>=this.spine.length)&&(console.warn("Not A Valid Location"),f=0,b=!1,e=!1),g=new EPUBJS.Chapter(this.spine[f],this.store),this._rendering=!0,this._needsAssetReplacement()&&g.registerHook("beforeChapterRender",[EPUBJS.replace.head,EPUBJS.replace.resources,EPUBJS.replace.svg],!0),h.currentChapter=g,d=h.renderer.displayChapter(g,this.globalLayoutProperties),e?h.renderer.gotoCfi(e):b&&h.renderer.lastPage(),d.then(function(a){h.spinePos=f,i.resolve(h.renderer),h.settings.fromStorage===!1&&h.settings.contained===!1&&h.preloadNextChapter(),h._rendering=!1,h._displayQ.dequeue(),0===h._displayQ.length()&&h._gotoQ.dequeue()},function(a){console.error("Could not load Chapter: "+g.absolute,a),h.trigger("book:chapterLoadFailed",g.absolute),h._rendering=!1,i.reject(a)}),i.promise):(this._q.enqueue("displayChapter",arguments),i.reject({message:"Rendering",stack:(new Error).stack}),i.promise)},EPUBJS.Book.prototype.nextPage=function(){var a;return this.isRendered?(a=this.renderer.nextPage(),a?void 0:this.nextChapter()):this._q.enqueue("nextPage",arguments)},EPUBJS.Book.prototype.prevPage=function(){var a;return this.isRendered?(a=this.renderer.prevPage(),a?void 0:this.prevChapter()):this._q.enqueue("prevPage",arguments)},EPUBJS.Book.prototype.nextChapter=function(){var a;if(this.spinePos0){for(a=this.spinePos-1;this.spine[a]&&this.spine[a].linear&&"no"==this.spine[a].linear;)a--;if(a>=0)return this.displayChapter(a,!0);this.trigger("book:atStart")}else this.trigger("book:atStart")},EPUBJS.Book.prototype.getCurrentLocationCfi=function(){return this.isRendered?this.renderer.currentLocationCfi:!1},EPUBJS.Book.prototype["goto"]=function(a){return 0===a.indexOf("epubcfi(")?this.gotoCfi(a):a.indexOf("%")===a.length-1?this.gotoPercentage(parseInt(a.substring(0,a.length-1))/100):"number"==typeof a||isNaN(a)===!1?this.gotoPage(a):this.gotoHref(a)},EPUBJS.Book.prototype.gotoCfi=function(a,b){var c,d,e,f=b||new RSVP.defer;return this.isRendered?this._moving||this._rendering?(console.warn("Renderer is moving"),this._gotoQ.enqueue("gotoCfi",[a,f]),!1):(c=new EPUBJS.EpubCFI(a),d=c.spinePos,-1==d?!1:(e=this.spine[d],promise=f.promise,this._moving=!0,this.currentChapter&&this.spinePos===d?(this.renderer.gotoCfi(c),this._moving=!1,f.resolve(this.renderer.currentLocationCfi)):(e&&-1!=d||(d=0,e=this.spine[d]),this.currentChapter=new EPUBJS.Chapter(e,this.store),this.currentChapter&&(this.spinePos=d,render=this.renderer.displayChapter(this.currentChapter,this.globalLayoutProperties),this.renderer.gotoCfi(c),render.then(function(a){this._moving=!1,f.resolve(a.currentLocationCfi)}.bind(this)))),promise.then(function(){this._gotoQ.dequeue()}.bind(this)),promise)):(console.warn("Not yet Rendered"),this.settings.previousLocationCfi=a,!1)},EPUBJS.Book.prototype.gotoHref=function(a,b){var c,d,e,f,g,h=b||new RSVP.defer;return this.isRendered?this._moving||this._rendering?(this._gotoQ.enqueue("gotoHref",[a,h]),!1):(c=a.split("#"),d=c[0],e=c[1]||!1,f=d.replace(this.settings.contentsPath,""),g=this.spineIndexByURL[f],d||(g=this.currentChapter?this.currentChapter.spinePos:0),"number"!=typeof g?!1:this.currentChapter&&g==this.currentChapter.spinePos?(e?this.renderer.section(e):this.renderer.firstPage(),h.resolve(this.renderer.currentLocationCfi),h.promise.then(function(){this._gotoQ.dequeue()}.bind(this)),h.promise):this.displayChapter(g).then(function(){e&&this.renderer.section(e),h.resolve(this.renderer.currentLocationCfi)}.bind(this))):(this.settings["goto"]=a,!1)},EPUBJS.Book.prototype.gotoPage=function(a){var b=this.pagination.cfiFromPage(a);return this.gotoCfi(b)},EPUBJS.Book.prototype.gotoPercentage=function(a){var b=this.pagination.pageFromPercentage(a);return this.gotoPage(b)},EPUBJS.Book.prototype.preloadNextChapter=function(){var a,b=this.spinePos+1;return b>=this.spine.length?!1:(a=new EPUBJS.Chapter(this.spine[b]),void(a&&EPUBJS.core.request(a.absolute)))},EPUBJS.Book.prototype.storeOffline=function(){var a=this,b=EPUBJS.core.values(this.manifest);return this.store.put(b).then(function(){a.settings.stored=!0,a.trigger("book:stored")})},EPUBJS.Book.prototype.availableOffline=function(){return this.settings.stored>0?!0:!1},EPUBJS.Book.prototype.toStorage=function(){var a=this.settings.bookKey;this.store.isStored(a).then(function(b){return b===!0?(this.settings.stored=!0,!0):this.storeOffline().then(function(){this.store.token(a,!0)}.bind(this))}.bind(this))},EPUBJS.Book.prototype.fromStorage=function(a){[EPUBJS.replace.head,EPUBJS.replace.resources,EPUBJS.replace.svg];this.contained||this.settings.contained||(this.online&&this.opened.then(this.toStorage.bind(this)),this.store&&this.settings.fromStorage&&a===!1?(this.settings.fromStorage=!1,this.store.off("offline"),this.store=!1):this.settings.fromStorage||(this.store=new EPUBJS.Storage(this.settings.credentials),this.store.on("offline",function(a){a?(this.offline=!0,this.settings.fromStorage=!0,this.trigger("book:offline")):(this.offline=!1,this.settings.fromStorage=!1,this.trigger("book:online"))}.bind(this))))},EPUBJS.Book.prototype.setStyle=function(a,b,c){var d=["color","background","background-color"];return this.isRendered?(this.settings.styles[a]=b,this.renderer.setStyle(a,b,c),void(-1===d.indexOf(a)&&this.renderer.reformat())):this._q.enqueue("setStyle",arguments)},EPUBJS.Book.prototype.removeStyle=function(a){return this.isRendered?(this.renderer.removeStyle(a),this.renderer.reformat(),void delete this.settings.styles[a]):this._q.enqueue("removeStyle",arguments)},EPUBJS.Book.prototype.addHeadTag=function(a,b){return this.isRendered?void(this.settings.headTags[a]=b):this._q.enqueue("addHeadTag",arguments)},EPUBJS.Book.prototype.useSpreads=function(a){console.warn("useSpreads is deprecated, use forceSingle or set a layoutOveride instead"),a===!1?this.forceSingle(!0):this.forceSingle(!1)},EPUBJS.Book.prototype.forceSingle=function(a){var b="undefined"==typeof a?!0:a;this.renderer.forceSingle(b),this.settings.forceSingle=b,this.isRendered&&this.renderer.reformat()},EPUBJS.Book.prototype.setMinSpreadWidth=function(a){this.settings.minSpreadWidth=a,this.isRendered&&(this.renderer.setMinSpreadWidth(this.settings.minSpreadWidth),this.renderer.reformat())},EPUBJS.Book.prototype.setGap=function(a){this.settings.gap=a,this.isRendered&&(this.renderer.setGap(this.settings.gap),this.renderer.reformat())},EPUBJS.Book.prototype.chapter=function(a){var b,c,d=this.spineIndexByURL[a];return d&&(b=this.spine[d],c=new EPUBJS.Chapter(b,this.store,this.settings.withCredentials),c.load()),c},EPUBJS.Book.prototype.unload=function(){this.settings.restore&&localStorage&&this.saveContents(),this.unlistenToRenderer(this.renderer),this.trigger("book:unload")},EPUBJS.Book.prototype.destroy=function(){window.removeEventListener("beforeunload",this.unload),this.currentChapter&&this.currentChapter.unload(),this.unload(),this.renderer&&this.renderer.remove()},EPUBJS.Book.prototype._ready=function(){this.trigger("book:ready")},EPUBJS.Book.prototype._rendered=function(a){this.isRendered=!0,this.trigger("book:rendered"),this._q.flush()},EPUBJS.Book.prototype.applyStyles=function(a,b){a.applyStyles(this.settings.styles),b()},EPUBJS.Book.prototype.applyHeadTags=function(a,b){a.applyHeadTags(this.settings.headTags),b()},EPUBJS.Book.prototype._registerReplacements=function(a){a.registerHook("beforeChapterDisplay",this.applyStyles.bind(this,a),!0),a.registerHook("beforeChapterDisplay",this.applyHeadTags.bind(this,a),!0),a.registerHook("beforeChapterDisplay",EPUBJS.replace.hrefs.bind(this),!0)},EPUBJS.Book.prototype._needsAssetReplacement=function(){return this.settings.fromStorage?!0:this.settings.contained?!0:!1},EPUBJS.Book.prototype.parseLayoutProperties=function(a){ -var b=this.settings.layoutOveride&&this.settings.layoutOveride.layout||a.layout||"reflowable",c=this.settings.layoutOveride&&this.settings.layoutOveride.spread||a.spread||"auto",d=this.settings.layoutOveride&&this.settings.layoutOveride.orientation||a.orientation||"auto";return{layout:b,spread:c,orientation:d}},RSVP.EventTarget.mixin(EPUBJS.Book.prototype),RSVP.on("error",function(a){}),RSVP.configure("instrument",!1),EPUBJS.Chapter=function(a,b,c){this.href=a.href,this.absolute=a.url,this.id=a.id,this.spinePos=a.index,this.cfiBase=a.cfiBase,this.properties=a.properties,this.manifestProperties=a.manifestProperties,this.linear=a.linear,this.pages=1,this.store=b,this.credentials=c,this.epubcfi=new EPUBJS.EpubCFI,this.deferred=new RSVP.defer,this.loaded=this.deferred.promise,EPUBJS.Hooks.mixin(this),this.getHooks("beforeChapterRender"),this.caches={}},EPUBJS.Chapter.prototype.load=function(a,b){var c,d=a||this.store,e=b||this.credentials;return c=d?d.getXml(this.absolute):EPUBJS.core.request(this.absolute,"xml",e),c.then(function(a){this.setDocument(a),this.deferred.resolve(this)}.bind(this)),c},EPUBJS.Chapter.prototype.render=function(a){return this.load().then(function(a){var b=a.querySelector("head"),c=a.createElement("base");return c.setAttribute("href",this.absolute),b.insertBefore(c,b.firstChild),this.contents=a,new RSVP.Promise(function(b,c){this.triggerHooks("beforeChapterRender",function(){b(a)}.bind(this),this)}.bind(this))}.bind(this)).then(function(a){var b=new XMLSerializer,c=b.serializeToString(a);return c}.bind(this))},EPUBJS.Chapter.prototype.url=function(a){var b,c=new RSVP.defer,d=a||this.store,e=this;return d?this.tempUrl?(b=this.tempUrl,c.resolve(b)):d.getUrl(this.absolute).then(function(a){e.tempUrl=a,c.resolve(a)}):(b=this.absolute,c.resolve(b)),c.promise},EPUBJS.Chapter.prototype.setPages=function(a){this.pages=a},EPUBJS.Chapter.prototype.getPages=function(a){return this.pages},EPUBJS.Chapter.prototype.getID=function(){return this.ID},EPUBJS.Chapter.prototype.unload=function(a){this.document=null,this.tempUrl&&a&&(a.revokeUrl(this.tempUrl),this.tempUrl=!1)},EPUBJS.Chapter.prototype.setDocument=function(a){var b=a.namespaceURI;a.doctype;this.document=a.implementation.createDocument(b,null,null),this.contents=this.document.importNode(a.documentElement,!0),this.document.appendChild(this.contents),!this.document.evaluate&&document.evaluate&&(this.document.evaluate=document.evaluate)},EPUBJS.Chapter.prototype.cfiFromRange=function(a){var b,c,d,e,f,g;if(this.document){if("undefined"!=typeof document.evaluate){if(c=EPUBJS.core.getElementXPath(a.startContainer),d=EPUBJS.core.getElementXPath(a.endContainer),e=this.document.evaluate(c,this.document,EPUBJS.core.nsResolver,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue,a.collapsed||(f=this.document.evaluate(d,this.document,EPUBJS.core.nsResolver,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue),b=this.document.createRange(),e)try{b.setStart(e,a.startOffset),!a.collapsed&&f&&b.setEnd(f,a.endOffset)}catch(h){console.log("missed"),e=!1}e||(console.log("not found, try fuzzy match"),cleanStartTextContent=EPUBJS.core.cleanStringForXpath(a.startContainer.textContent),c="//text()[contains(.,"+cleanStartTextContent+")]",e=this.document.evaluate(c,this.document,EPUBJS.core.nsResolver,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue,e&&(b.setStart(e,a.startOffset),a.collapsed||(g=EPUBJS.core.cleanStringForXpath(a.endContainer.textContent),d="//text()[contains(.,"+g+")]",f=this.document.evaluate(d,this.document,EPUBJS.core.nsResolver,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue,f&&b.setEnd(f,a.endOffset))))}else b=a;return this.epubcfi.generateCfiFromRange(b,this.cfiBase)}},EPUBJS.Chapter.prototype.find=function(a){var b=this,c=[],d=a.toLowerCase(),e=function(a){for(var e,f,g,h=a.textContent.toLowerCase(),i=b.document.createRange(),j=-1,k=150;-1!=f;)f=h.indexOf(d,j+1),-1!=f&&(i=b.document.createRange(),i.setStart(a,f),i.setEnd(a,f+d.length),e=b.cfiFromRange(i),a.textContent.length=g&&c&&c(!0),e=!0)};b(a,f)}.bind(this))},EPUBJS.Chapter.prototype.replaceWithStored=function(a,b,c,d){var e,f={},g=this.store,h=this.caches[a],i=EPUBJS.core.uri(this.absolute),j=i.base,k=b,l=5,m=function(a,b,c){f[b]=a},n=function(a){d&&d(),EPUBJS.core.values(e).forEach(function(a){g.revokeUrl(a)}),h=f};g&&(h||(h={}),e=EPUBJS.core.clone(h),this.replace(a,function(b,d){var h=b.getAttribute(k),i=EPUBJS.core.resolveUrl(j,h),m=function(c){var e;b.onload=function(){clearTimeout(e),d(c,i)},b.onerror=function(a){clearTimeout(e),d(c,i),console.error(a)},"svg image"==a&&b.setAttribute("externalResourcesRequired","true"),"link[href]"==a&&"stylesheet"!==b.getAttribute("rel")?d(c,i):e=setTimeout(function(){d(c,i)},l),b.setAttribute(k,c)};i in e?(m(e[i]),f[i]=e[i],delete e[i]):c(g,i,m,b)},n,m))};var EPUBJS=EPUBJS||{};EPUBJS.core={},EPUBJS.core.getEl=function(a){return document.getElementById(a)},EPUBJS.core.getEls=function(a){return document.getElementsByClassName(a)},EPUBJS.core.request=function(a,b,c){function d(){if(this.readyState===this.DONE)if(200===this.status||0===this.status&&this.response){var a;a="xml"==b?this.responseXML?this.responseXML:(new DOMParser).parseFromString(this.response,"text/xml"):"json"==b?JSON.parse(this.response):"blob"==b?e?this.response:new Blob([this.response]):this.response,g.resolve(a)}else g.reject({message:this.response,stack:(new Error).stack})}var e=window.URL,f=e?"blob":"arraybuffer",g=new RSVP.defer,h=new XMLHttpRequest,i=XMLHttpRequest.prototype;return"overrideMimeType"in i||Object.defineProperty(i,"overrideMimeType",{value:function(a){}}),c&&(h.withCredentials=!0),h.open("GET",a,!0),h.onreadystatechange=d,"blob"==b&&(h.responseType=f),"json"==b&&h.setRequestHeader("Accept","application/json"),"xml"==b&&h.overrideMimeType("text/xml"),"binary"==b&&(h.responseType="arraybuffer"),h.send(),g.promise},EPUBJS.core.toArray=function(a){var b=[];for(var c in a){var d;a.hasOwnProperty(c)&&(d=a[c],d.ident=c,b.push(d))}return b},EPUBJS.core.uri=function(a){var b,c,d,e={protocol:"",host:"",path:"",origin:"",directory:"",base:"",filename:"",extension:"",fragment:"",href:a},f=a.indexOf("blob:"),g=a.indexOf("://"),h=a.indexOf("?"),i=a.indexOf("#");return 0===f?(e.protocol="blob",e.base=a.indexOf(0,i),e):(-1!=i&&(e.fragment=a.slice(i+1),a=a.slice(0,i)),-1!=h&&(e.search=a.slice(h+1),a=a.slice(0,h),href=a),-1!=g?(e.protocol=a.slice(0,g),b=a.slice(g+3),d=b.indexOf("/"),-1===d?(e.host=e.path,e.path=""):(e.host=b.slice(0,d),e.path=b.slice(d)),e.origin=e.protocol+"://"+e.host,e.directory=EPUBJS.core.folder(e.path),e.base=e.origin+e.directory):(e.path=a,e.directory=EPUBJS.core.folder(a),e.base=e.directory),e.filename=a.replace(e.base,""),c=e.filename.lastIndexOf("."),-1!=c&&(e.extension=e.filename.slice(c+1)),e)},EPUBJS.core.folder=function(a){var b=a.lastIndexOf("/");if(-1==b)var c="";return c=a.slice(0,b+1)},EPUBJS.core.dataURLToBlob=function(a){var b,c,d,e,f,g=";base64,";if(-1==a.indexOf(g))return b=a.split(","),c=b[0].split(":")[1],d=b[1],new Blob([d],{type:c});b=a.split(g),c=b[0].split(":")[1],d=window.atob(b[1]),e=d.length,f=new Uint8Array(e);for(var h=0;e>h;++h)f[h]=d.charCodeAt(h);return new Blob([f],{type:c})},EPUBJS.core.addScript=function(a,b,c){var d,e;e=!1,d=document.createElement("script"),d.type="text/javascript",d.async=!1,d.src=a,d.onload=d.onreadystatechange=function(){e||this.readyState&&"complete"!=this.readyState||(e=!0,b&&b())},c=c||document.body,c.appendChild(d)},EPUBJS.core.addScripts=function(a,b,c){var d=a.length,e=0,f=function(){e++,d==e?b&&b():EPUBJS.core.addScript(a[e],f,c)};EPUBJS.core.addScript(a[e],f,c)},EPUBJS.core.addCss=function(a,b,c){var d,e;e=!1,d=document.createElement("link"),d.type="text/css",d.rel="stylesheet",d.href=a,d.onload=d.onreadystatechange=function(){e||this.readyState&&"complete"!=this.readyState||(e=!0,b&&b())},c=c||document.body,c.appendChild(d)},EPUBJS.core.prefixed=function(a){var b=["Webkit","Moz","O","ms"],c=a[0].toUpperCase()+a.slice(1),d=b.length;if("undefined"!=typeof document.documentElement.style[a])return a;for(var e=0;d>e;e++)if("undefined"!=typeof document.documentElement.style[b[e]+c])return b[e]+c;return a},EPUBJS.core.resolveUrl=function(a,b){var c,d,e=[],f=EPUBJS.core.uri(b),g=a.split("/");return f.host?b:(g.pop(),d=b.split("/"),d.forEach(function(a){".."===a?g.pop():e.push(a)}),c=g.concat(e),c.join("/"))},EPUBJS.core.uuid=function(){var a=(new Date).getTime(),b="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(b){var c=(a+16*Math.random())%16|0;return a=Math.floor(a/16),("x"==b?c:7&c|8).toString(16)});return b},EPUBJS.core.insert=function(a,b,c){var d=EPUBJS.core.locationOf(a,b,c);return b.splice(d,0,a),d},EPUBJS.core.locationOf=function(a,b,c,d,e){var f,g=d||0,h=e||b.length,i=parseInt(g+(h-g)/2);return c||(c=function(a,b){return a>b?1:b>a?-1:(a=b)?0:void 0}),0>=h-g?i:(f=c(b[i],a),h-g===1?f>0?i:i+1:0===f?i:-1===f?EPUBJS.core.locationOf(a,b,c,i,h):EPUBJS.core.locationOf(a,b,c,g,i))},EPUBJS.core.indexOfSorted=function(a,b,c,d,e){var f,g=d||0,h=e||b.length,i=parseInt(g+(h-g)/2);return c||(c=function(a,b){return a>b?1:b>a?-1:(a=b)?0:void 0}),0>=h-g?-1:(f=c(b[i],a),h-g===1?0===f?i:-1:0===f?i:-1===f?EPUBJS.core.indexOfSorted(a,b,c,i,h):EPUBJS.core.indexOfSorted(a,b,c,g,i))},EPUBJS.core.queue=function(a){var b=[],c=a,d=function(a,c,d){return b.push({funcName:a,args:c,context:d}),b},e=function(){var a;b.length&&(a=b.shift(),c[a.funcName].apply(a.context||c,a.args))},f=function(){for(;b.length;)e()},g=function(){b=[]},h=function(){return b.length};return{enqueue:d,dequeue:e,flush:f,clear:g,length:h}},EPUBJS.core.getElementXPath=function(a){return a&&a.id?'//*[@id="'+a.id+'"]':EPUBJS.core.getElementTreeXPath(a)},EPUBJS.core.getElementTreeXPath=function(a){var b,c,d,e,f=[],g="http://www.w3.org/1999/xhtml"===a.ownerDocument.documentElement.getAttribute("xmlns");for(a.nodeType===Node.TEXT_NODE&&(b=EPUBJS.core.indexOfTextNode(a)+1,f.push("text()["+b+"]"),a=a.parentNode);a&&1==a.nodeType;a=a.parentNode){b=0;for(var h=a.previousSibling;h;h=h.previousSibling)h.nodeType!=Node.DOCUMENT_TYPE_NODE&&h.nodeName==a.nodeName&&++b;c=a.nodeName.toLowerCase(),d=g?"xhtml:"+c:c,e=b?"["+(b+1)+"]":"",f.splice(0,0,d+e)}return f.length?"./"+f.join("/"):null},EPUBJS.core.nsResolver=function(a){var b={xhtml:"http://www.w3.org/1999/xhtml",epub:"http://www.idpf.org/2007/ops"};return b[a]||null},EPUBJS.core.cleanStringForXpath=function(a){var b=a.match(/[^'"]+|['"]/g);return b=b.map(function(a){return"'"===a?'"\'"':'"'===a?"'\"'":"'"+a+"'"}),"concat('',"+b.join(",")+")"},EPUBJS.core.indexOfTextNode=function(a){for(var b,c=a.parentNode,d=c.childNodes,e=-1,f=0;fb;b++){var d=arguments[b];for(var e in d)void 0===a[e]&&(a[e]=d[e])}return a},EPUBJS.core.extend=function(a){var b=[].slice.call(arguments,1);return b.forEach(function(b){b&&Object.getOwnPropertyNames(b).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))})}),a},EPUBJS.core.clone=function(a){return EPUBJS.core.isArray(a)?a.slice():EPUBJS.core.extend({},a)},EPUBJS.core.isElement=function(a){return!(!a||1!=a.nodeType)},EPUBJS.core.isNumber=function(a){return!isNaN(parseFloat(a))&&isFinite(a)},EPUBJS.core.isString=function(a){return"string"==typeof a||a instanceof String},EPUBJS.core.isArray=Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)},EPUBJS.core.values=function(a){var b,c,d,e=-1;if(!a)return[];for(b=Object.keys(a),c=b.length,d=Array(c);++e0;){if(c=d.shift(),"text"===c.type?(e=g.childNodes[c.index],g=e.parentNode||g):g=c.id?f.getElementById(c.id):h[c.index],"undefined"==typeof g)return console.error("No Element For",c,a.str),!1;h=Array.prototype.slice.call(g.children)}return g},EPUBJS.EpubCFI.prototype.compare=function(a,b){if("string"==typeof a&&(a=new EPUBJS.EpubCFI(a)),"string"==typeof b&&(b=new EPUBJS.EpubCFI(b)),a.spinePos>b.spinePos)return 1;if(a.spinePosb.steps[c].index)return 1;if(a.steps[c].indexb.characterOffset?1:a.characterOffset")},EPUBJS.EpubCFI.prototype.generateRangeFromCfi=function(a,b){var c,d,e,f,g,h,i=b||document,j=i.createRange();return"string"==typeof a&&(a=this.parse(a)),-1===a.spinePos?!1:(c=a.steps[a.steps.length-1],"undefined"!=typeof document.evaluate?(d=this.generateXpathFromSteps(a.steps),e=i.evaluate(d,i,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue):(g=this.generateQueryFromSteps(a.steps),h=i.querySelector(g),h&&"text"==c.type&&(e=h.childNodes[c.index])),e?(e&&a.characterOffset>=0?(f=e.length,a.characterOffset-1&&this.hooks[a].splice(c,1)):Array.isArray(b)&&b.forEach(function(b){c=this.hooks[a].indexOf(b),c>-1&&this.hooks[a].splice(c,1)},this))},a.prototype.triggerHooks=function(a,b,c){function d(){f--,0>=f&&b&&b()}var e,f;return"undefined"==typeof this.hooks[a]?!1:(e=this.hooks[a],f=e.length,0===f&&b&&b(),void e.forEach(function(a){a(d,c)}))},{register:function(a){if(void 0===EPUBJS.hooks[a]&&(EPUBJS.hooks[a]={}),"object"!=typeof EPUBJS.hooks[a])throw"Already registered: "+a;return EPUBJS.hooks[a]},mixin:function(b){for(var c in a.prototype)b[c]=a.prototype[c]}}}(),EPUBJS.Layout=EPUBJS.Layout||{},EPUBJS.Layout.Reflowable=function(){this.documentElement=null,this.spreadWidth=null},EPUBJS.Layout.Reflowable.prototype.format=function(a,b,c,d){var e=EPUBJS.core.prefixed("columnAxis"),f=EPUBJS.core.prefixed("columnGap"),g=EPUBJS.core.prefixed("columnWidth"),h=EPUBJS.core.prefixed("columnFill"),i=Math.floor(b),j=Math.floor(i/8),k=d>=0?d:j%2===0?j:j-1;return this.documentElement=a,this.spreadWidth=i+k,a.style.overflow="hidden",a.style.width=i+"px",a.style.height=c+"px",a.style[e]="horizontal",a.style[h]="auto",a.style[g]=i+"px",a.style[f]=k+"px",this.colWidth=i,this.gap=k,{pageWidth:this.spreadWidth,pageHeight:c}},EPUBJS.Layout.Reflowable.prototype.calculatePages=function(){var a,b;return this.documentElement.style.width="auto",a=this.documentElement.scrollWidth,b=Math.ceil(a/this.spreadWidth),{displayedPages:b,pageCount:b}},EPUBJS.Layout.ReflowableSpreads=function(){this.documentElement=null,this.spreadWidth=null},EPUBJS.Layout.ReflowableSpreads.prototype.format=function(a,b,c,d){var e=EPUBJS.core.prefixed("columnAxis"),f=EPUBJS.core.prefixed("columnGap"),g=EPUBJS.core.prefixed("columnWidth"),h=EPUBJS.core.prefixed("columnFill"),i=2,j=Math.floor(b),k=j%2===0?j:j-1,l=Math.floor(k/8),m=d>=0?d:l%2===0?l:l-1,n=Math.floor((k-m)/i);return this.documentElement=a,this.spreadWidth=(n+m)*i,a.style.overflow="hidden",a.style.width=k+"px",a.style.height=c+"px",a.style[e]="horizontal",a.style[h]="auto",a.style[f]=m+"px",a.style[g]=n+"px",this.colWidth=n,this.gap=m,{pageWidth:this.spreadWidth,pageHeight:c}},EPUBJS.Layout.ReflowableSpreads.prototype.calculatePages=function(){var a=this.documentElement.scrollWidth,b=Math.ceil(a/this.spreadWidth);return this.documentElement.style.width=b*this.spreadWidth-this.gap+"px",{displayedPages:b,pageCount:2*b}},EPUBJS.Layout.Fixed=function(){this.documentElement=null},EPUBJS.Layout.Fixed.prototype.format=function(a,b,c,d){var e,f,g,h,i=EPUBJS.core.prefixed("columnWidth"),j=a.querySelector("[name=viewport]");return this.documentElement=a,j&&j.hasAttribute("content")&&(e=j.getAttribute("content"),f=e.split(","),f[0]&&(g=f[0].replace("width=","")),f[1]&&(h=f[1].replace("height=",""))),a.style.width=g+"px"||"auto",a.style.height=h+"px"||"auto",a.style[i]="auto",a.style.overflow="auto",this.colWidth=g,this.gap=0,{pageWidth:g,pageHeight:h}},EPUBJS.Layout.Fixed.prototype.calculatePages=function(){return{displayedPages:1,pageCount:1}},EPUBJS.Locations=function(a,b,c){this.spine=a,this.store=b,this.credentials=c,this.epubcfi=new EPUBJS.EpubCFI,this._locations=[],this.total=0,this["break"]=150,this._current=0},EPUBJS.Locations.prototype.generate=function(a){var b=new RSVP.defer,c=-1,d=this.spine.length,e=function(a){var b,f=c+1,g=a||new RSVP.defer;return f>=d?g.resolve():(c=f,b=new EPUBJS.Chapter(this.spine[c],this.store,this.credentials),this.process(b).then(function(){setTimeout(function(){e(g)},1)})),g.promise}.bind(this);e().then(function(){this.total=this._locations.length-1,this._currentCfi&&(this.currentLocation=this._currentCfi),b.resolve(this._locations)}.bind(this));return b.promise},EPUBJS.Locations.prototype.process=function(a){return a.load().then(function(b){var c,d,e=b,f=e.documentElement.querySelector("body"),g=0;this.sprint(f,function(b){var f,h=b.length,i=0;for(0===g&&(c=e.createRange(),c.setStart(b,0)),f=this["break"]-g,f>h&&(g+=h,i=h);h>i;)g=this["break"],i+=this["break"],i>=h?g=h-(i-this["break"]):(c.setEnd(b,i),cfi=a.cfiFromRange(c),this._locations.push(cfi),g=0,i+=1,c=e.createRange(),c.setStart(b,i));d=b}.bind(this)),c&&(c.setEnd(d,d.length),cfi=a.cfiFromRange(c),this._locations.push(cfi),g=0)}.bind(this))},EPUBJS.Locations.prototype.sprint=function(a,b){for(var c=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,null,!1);node=c.nextNode();)b(node)},EPUBJS.Locations.prototype.locationFromCfi=function(a){return 0===this._locations.length?-1:EPUBJS.core.locationOf(a,this._locations,this.epubcfi.compare)},EPUBJS.Locations.prototype.percentageFromCfi=function(a){var b=this.locationFromCfi(a);return this.percentageFromLocation(b)},EPUBJS.Locations.prototype.percentageFromLocation=function(a){return a&&this.total?a/this.total:0},EPUBJS.Locations.prototype.cfiFromLocation=function(a){var b=-1;return"number"!=typeof a&&(a=parseInt(a)),a>=0&&a1?a/100:a,c=Math.ceil(this.total*b);return this.cfiFromLocation(c)},EPUBJS.Locations.prototype.load=function(a){return this._locations=JSON.parse(a),this.total=this._locations.length-1,this._locations},EPUBJS.Locations.prototype.save=function(a){return JSON.stringify(this._locations)},EPUBJS.Locations.prototype.getCurrent=function(a){return this._current},EPUBJS.Locations.prototype.setCurrent=function(a){var b;if("string"==typeof a)this._currentCfi=a;else{if("number"!=typeof a)return;this._current=a}0!==this._locations.length&&("string"==typeof a?(b=this.locationFromCfi(a),this._current=b):b=a,this.trigger("changed",{percentage:this.percentageFromLocation(b)}))},Object.defineProperty(EPUBJS.Locations.prototype,"currentLocation",{get:function(){return this._current},set:function(a){this.setCurrent(a)}}),RSVP.EventTarget.mixin(EPUBJS.Locations.prototype),EPUBJS.Pagination=function(a){this.pages=[],this.locations=[],this.epubcfi=new EPUBJS.EpubCFI,a&&a.length&&this.process(a)},EPUBJS.Pagination.prototype.process=function(a){a.forEach(function(a){this.pages.push(a.page),this.locations.push(a.cfi)},this),this.pageList=a,this.firstPage=parseInt(this.pages[0]),this.lastPage=parseInt(this.pages[this.pages.length-1]),this.totalPages=this.lastPage-this.firstPage},EPUBJS.Pagination.prototype.pageFromCfi=function(a){var b=-1;if(0===this.locations.length)return-1;var c=EPUBJS.core.indexOfSorted(a,this.locations,this.epubcfi.compare);return-1!=c&&c=0?this.pages[c-1]:this.pages[0],void 0!==b||(b=-1)),b},EPUBJS.Pagination.prototype.cfiFromPage=function(a){var b=-1;"number"!=typeof a&&(a=parseInt(a));var c=this.pages.indexOf(a);return-1!=c&&(b=this.locations[c]),b},EPUBJS.Pagination.prototype.pageFromPercentage=function(a){var b=Math.round(this.totalPages*a);return b},EPUBJS.Pagination.prototype.percentageFromPage=function(a){var b=(a-this.firstPage)/this.totalPages;return Math.round(1e3*b)/1e3},EPUBJS.Pagination.prototype.percentageFromCfi=function(a){var b=this.pageFromCfi(a),c=this.percentageFromPage(b);return c},EPUBJS.Parser=function(a){this.baseUrl=a||""},EPUBJS.Parser.prototype.container=function(a){var b,c,d,e;return a?(b=a.querySelector("rootfile"))?(c=b.getAttribute("full-path"),d=EPUBJS.core.uri(c).directory,e=a.xmlEncoding,{packagePath:c,basePath:d,encoding:e}):void console.error("No RootFile Found"):void console.error("Container File Not Found")},EPUBJS.Parser.prototype.identifier=function(a){var b;return a?(b=a.querySelector("metadata"),b?this.getElementText(b,"identifier"):void console.error("No Metadata Found")):void console.error("Package File Not Found")},EPUBJS.Parser.prototype.packageContents=function(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=this;return b&&(this.baseUrl=b),a?(c=a.querySelector("metadata"))?(d=a.querySelector("manifest"))?(e=a.querySelector("spine"))?(f=n.manifest(d),g=n.findNavPath(d),h=n.findTocPath(d,e),i=n.findCoverPath(d),j=Array.prototype.indexOf.call(e.parentNode.childNodes,e),k=n.spine(e,f),l={},k.forEach(function(a){l[a.href]=a.index}),m=n.metadata(c),m.direction=e.getAttribute("page-progression-direction"),{metadata:m,spine:k,manifest:f,navPath:g,tocPath:h,coverPath:i,spineNodeIndex:j,spineIndexByURL:l}):void console.error("No Spine Found"):void console.error("No Manifest Found"):void console.error("No Metadata Found"):void console.error("Package File Not Found")},EPUBJS.Parser.prototype.findNavPath=function(a){var b=a.querySelector("item[properties$='nav'], item[properties^='nav '], item[properties*=' nav ']");return b?b.getAttribute("href"):!1},EPUBJS.Parser.prototype.findTocPath=function(a,b){var c,d=a.querySelector("item[media-type='application/x-dtbncx+xml']");return d||(c=b.getAttribute("toc"),c&&(d=a.querySelector("item[id='"+c+"']"))),d?d.getAttribute("href"):!1},EPUBJS.Parser.prototype.findCoverPath=function(a){var b=a.querySelector("item[properties='cover-image']");return b?b.getAttribute("href"):!1},EPUBJS.Parser.prototype.metadata=function(a){var b={},c=this;return b.bookTitle=c.getElementText(a,"title"),b.creator=c.getElementText(a,"creator"),b.description=c.getElementText(a,"description"),b.pubdate=c.getElementText(a,"date"),b.publisher=c.getElementText(a,"publisher"),b.identifier=c.getElementText(a,"identifier"),b.language=c.getElementText(a,"language"),b.rights=c.getElementText(a,"rights"),b.modified_date=c.querySelectorText(a,"meta[property='dcterms:modified']"),b.layout=c.querySelectorText(a,"meta[property='rendition:layout']"),b.orientation=c.querySelectorText(a,"meta[property='rendition:orientation']"),b.spread=c.querySelectorText(a,"meta[property='rendition:spread']"),b},EPUBJS.Parser.prototype.getElementText=function(a,b){var c,d=a.getElementsByTagNameNS("http://purl.org/dc/elements/1.1/",b);return d&&0!==d.length?(c=d[0],c.childNodes.length?c.childNodes[0].nodeValue:""):""},EPUBJS.Parser.prototype.querySelectorText=function(a,b){var c=a.querySelector(b);return c&&c.childNodes.length?c.childNodes[0].nodeValue:""},EPUBJS.Parser.prototype.manifest=function(a){var b=this.baseUrl,c={},d=a.querySelectorAll("item"),e=Array.prototype.slice.call(d);return e.forEach(function(a){var d=a.getAttribute("id"),e=a.getAttribute("href")||"",f=a.getAttribute("media-type")||"",g=a.getAttribute("properties")||"";c[d]={href:e,url:b+e,type:f,properties:g}}),c},EPUBJS.Parser.prototype.spine=function(a,b){var c=[],d=a.getElementsByTagName("itemref"),e=Array.prototype.slice.call(d),f=Array.prototype.indexOf.call(a.parentNode.childNodes,a),g=new EPUBJS.EpubCFI;return e.forEach(function(a,d){var e=a.getAttribute("idref"),h=g.generateChapterComponent(f,d,e),i=a.getAttribute("properties")||"",j=i.length?i.split(" "):[],k=b[e].properties,l=k.length?k.split(" "):[],m={id:e,linear:a.getAttribute("linear")||"",properties:j,manifestProperties:l,href:b[e].href,url:b[e].url,index:d,cfiBase:h,cfi:"epubcfi("+h+")"};c.push(m)}),c},EPUBJS.Parser.prototype.querySelectorByType=function(a,b,c){var d=a.querySelector(b+'[*|type="'+c+'"]');if(0!==d.length)return d;d=a.querySelectorAll(b);for(var e=0;ed;++d)e=this.navItem(h[d],b,c),j[e.id]=e,e.parent?(f=j[e.parent],f.subitems.push(e)):k.push(e);return k},EPUBJS.Parser.prototype.navItem=function(a,b,c){var d,e=a.getAttribute("id")||!1,f=a.querySelector("a, span"),g=f.getAttribute("href")||"",h=f.textContent||"",i=g.split("#"),j=i[0],k=b[j],l=c[k],m=[],n=a.parentNode,o=l?l.cfi:"";return n&&"navPoint"===n.nodeName&&(d=n.getAttribute("id")),e||(k?(l=c[k],e=l.id,o=l.cfi):(e="epubjs-autogen-toc-id-"+EPUBJS.core.uuid(),a.setAttribute("id",e))),{id:e,href:g,label:h,spinePos:k,subitems:m,parent:d,cfi:o}},EPUBJS.Parser.prototype.toc=function(a,b,c){var d,e,f,g=a.querySelectorAll("navMap navPoint"),h=g.length,i={},j=[];if(!g||0===h)return j;for(d=0;h>d;++d)e=this.tocItem(g[d],b,c),i[e.id]=e,e.parent?(f=i[e.parent],f.subitems.push(e)):j.push(e);return j},EPUBJS.Parser.prototype.tocItem=function(a,b,c){var d,e=a.getAttribute("id")||!1,f=a.querySelector("content"),g=f.getAttribute("src"),h=a.querySelector("navLabel"),i=h.textContent?h.textContent:"",j=g.split("#"),k=j[0],l=b[k],m=c[l],n=[],o=a.parentNode,p=m?m.cfi:"";return o&&"navPoint"===o.nodeName&&(d=o.getAttribute("id")),e||(l?(m=c[l],e=m.id,p=m.cfi):(e="epubjs-autogen-toc-id-"+EPUBJS.core.uuid(),a.setAttribute("id",e))),{id:e,href:g,label:i,spinePos:l,subitems:n,parent:d,cfi:p}},EPUBJS.Parser.prototype.pageList=function(a,b,c){var d,e,f=this.querySelectorByType(a,"nav","page-list"),g=f?f.querySelectorAll("ol li"):[],h=g.length,i=[];if(!g||0===h)return i;for(d=0;h>d;++d)e=this.pageListItem(g[d],b,c),i.push(e);return i},EPUBJS.Parser.prototype.pageListItem=function(a,b,c){var d,e,f,g=(a.getAttribute("id")||!1,a.querySelector("a")),h=g.getAttribute("href")||"",i=g.textContent||"",j=parseInt(i),k=h.indexOf("epubcfi");return-1!=k?(d=h.split("#"),e=d[0],f=d.length>1?d[1]:!1,{cfi:f,href:h,packageUrl:e,page:j}):{href:h,page:j}},EPUBJS.Render.Iframe=function(){this.iframe=null,this.document=null,this.window=null,this.docEl=null,this.bodyEl=null,this.leftPos=0,this.pageWidth=0},EPUBJS.Render.Iframe.prototype.create=function(){return this.iframe=document.createElement("iframe"),this.iframe.id="epubjs-iframe:"+EPUBJS.core.uuid(),this.iframe.scrolling="no",this.iframe.seamless="seamless",this.iframe.style.border="none",this.iframe.addEventListener("load",this.loaded.bind(this),!1),this.isMobile=navigator.userAgent.match(/(iPad|iPhone|iPod|Mobile|Android)/g),this.transform=EPUBJS.core.prefixed("transform"),this.iframe},EPUBJS.Render.Iframe.prototype.load=function(a,b){var c=this,d=new RSVP.defer;return this.window&&this.unload(),this.iframe.onload=function(a){c.document=c.iframe.contentDocument,c.docEl=c.document.documentElement,c.headEl=c.document.head,c.bodyEl=c.document.body||c.document.querySelector("body"),c.window=c.iframe.contentWindow,c.window.addEventListener("resize",c.resized.bind(c),!1),c.leftPos=0,c.setLeft(0),c.bodyEl&&(c.bodyEl.style.margin="0"),"rtl"==c.direction&&"rtl"!=c.docEl.dir&&(c.docEl.dir="rtl",c.docEl.style.position="absolute",c.docEl.style.right="0"),d.resolve(c.docEl)},this.iframe.onerror=function(a){d.reject({message:"Error Loading Contents: "+a,stack:(new Error).stack})},this.document=this.iframe.contentDocument,this.document?(this.document.open(),this.document.write(a),this.document.close(),d.promise):(d.reject(new Error("No Document Available")),d)},EPUBJS.Render.Iframe.prototype.loaded=function(a){var b,c,d=this.iframe.contentWindow.location.href;this.document=this.iframe.contentDocument,this.docEl=this.document.documentElement,this.headEl=this.document.head,this.bodyEl=this.document.body||this.document.querySelector("body"),this.window=this.iframe.contentWindow,"about:blank"!=d&&(b=this.iframe.contentDocument.querySelector("base"),c=b.getAttribute("href"),this.trigger("render:loaded",c))},EPUBJS.Render.Iframe.prototype.resize=function(a,b){this.iframe&&(this.iframe.height=b,isNaN(a)||a%2===0||(a+=1),this.iframe.width=a,this.width=this.iframe.getBoundingClientRect().width||a,this.height=this.iframe.getBoundingClientRect().height||b)},EPUBJS.Render.Iframe.prototype.resized=function(a){this.width=this.iframe.getBoundingClientRect().width,this.height=this.iframe.getBoundingClientRect().height},EPUBJS.Render.Iframe.prototype.totalWidth=function(){return this.docEl.scrollWidth},EPUBJS.Render.Iframe.prototype.totalHeight=function(){return this.docEl.scrollHeight},EPUBJS.Render.Iframe.prototype.setPageDimensions=function(a,b){this.pageWidth=a,this.pageHeight=b},EPUBJS.Render.Iframe.prototype.setDirection=function(a){this.direction=a,this.docEl&&"rtl"==this.docEl.dir&&(this.docEl.dir="rtl",this.docEl.style.position="static",this.docEl.style.right="auto")},EPUBJS.Render.Iframe.prototype.setLeft=function(a){this.isMobile?this.docEl.style[this.transform]="translate("+-a+"px, 0)":this.document.defaultView.scrollTo(a,0)},EPUBJS.Render.Iframe.prototype.setStyle=function(a,b,c){c&&(a=EPUBJS.core.prefixed(a)),this.bodyEl&&(this.bodyEl.style[a]=b)},EPUBJS.Render.Iframe.prototype.removeStyle=function(a){this.bodyEl&&(this.bodyEl.style[a]="")},EPUBJS.Render.Iframe.prototype.addHeadTag=function(a,b,c){var d=c||this.document,e=d.createElement(a),f=d.head;for(var g in b)e.setAttribute(g,b[g]);f&&f.insertBefore(e,f.firstChild)},EPUBJS.Render.Iframe.prototype.page=function(a){this.leftPos=this.pageWidth*(a-1),"rtl"===this.direction&&(this.leftPos=-1*this.leftPos),this.setLeft(this.leftPos)},EPUBJS.Render.Iframe.prototype.getPageNumberByElement=function(a){var b,c;if(a)return b=this.leftPos+a.getBoundingClientRect().left,c=Math.floor(b/this.pageWidth)+1},EPUBJS.Render.Iframe.prototype.getPageNumberByRect=function(a){var b,c;return b=this.leftPos+a.left,c=Math.floor(b/this.pageWidth)+1},EPUBJS.Render.Iframe.prototype.getBaseElement=function(){return this.bodyEl},EPUBJS.Render.Iframe.prototype.getDocumentElement=function(){return this.docEl},EPUBJS.Render.Iframe.prototype.isElementVisible=function(a){var b,c;return a&&"function"==typeof a.getBoundingClientRect&&(b=a.getBoundingClientRect(),c=b.left,0!==b.width&&0!==b.height&&c>=0&&c=1&&a<=this.displayedPages?(this.chapterPos=a,this.render.page(a),this.visibleRangeCfi=this.getVisibleRangeCfi(),this.currentLocationCfi=this.visibleRangeCfi.start,this.trigger("renderer:locationChanged",this.currentLocationCfi),this.trigger("renderer:visibleRangeChanged",this.visibleRangeCfi),!0):!1:(console.warn("pageMap not set, queuing"),this._q.enqueue("page",arguments),!0)},EPUBJS.Renderer.prototype.nextPage=function(){return this.page(this.chapterPos+1)},EPUBJS.Renderer.prototype.prevPage=function(){return this.page(this.chapterPos-1)},EPUBJS.Renderer.prototype.pageByElement=function(a){var b;a&&(b=this.render.getPageNumberByElement(a),this.page(b))},EPUBJS.Renderer.prototype.lastPage=function(){return this._moving?this._q.enqueue("lastPage",arguments):void this.page(this.displayedPages)},EPUBJS.Renderer.prototype.firstPage=function(){return this._moving?this._q.enqueue("firstPage",arguments):void this.page(1)},EPUBJS.Renderer.prototype.section=function(a){var b=this.doc.getElementById(a);b&&this.pageByElement(b)},EPUBJS.Renderer.prototype.firstElementisTextNode=function(a){var b=a.childNodes,c=b.length;return c&&b[0]&&3===b[0].nodeType&&b[0].textContent.trim().length?!0:!1},EPUBJS.Renderer.prototype.isGoodNode=function(a){var b=["audio","canvas","embed","iframe","img","math","object","svg","video"];return-1!==b.indexOf(a.tagName.toLowerCase())?!0:this.firstElementisTextNode(a)},EPUBJS.Renderer.prototype.walk=function(a,b,c){for(var d,e,f,g,h=a,i=[h],j=1e4,k=0;!d&&i.length;){if(a=i.shift(),this.containsPoint(a,b,c)&&this.isGoodNode(a)&&(d=a),!d&&a&&a.childElementCount>0){if(e=a.children,!e||!e.length)return d;f=e.length?e.length:0;for(var l=f-1;l>=0;l--)e[l]!=g&&i.unshift(e[l])}if(!d&&0===i.length&&h&&null!==h.parentNode&&(i.push(h.parentNode),g=h,h=h.parentNode),k++,k>j){console.error("ENDLESS LOOP");break}}return d},EPUBJS.Renderer.prototype.containsPoint=function(a,b,c){var d;return a&&"function"==typeof a.getBoundingClientRect&&(d=a.getBoundingClientRect(),0!==d.width&&0!==d.height&&d.left>=b&&b<=d.left+d.width)?!0:!1},EPUBJS.Renderer.prototype.textSprint=function(a,b){for(var c,d=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,{acceptNode:function(a){return/^\s*$/.test(a.data)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}},!1);c=d.nextNode();)b(c)},EPUBJS.Renderer.prototype.sprint=function(a,b){for(var c,d=document.createTreeWalker(a,NodeFilter.SHOW_ELEMENT,null,!1);c=d.nextNode();)b(c)},EPUBJS.Renderer.prototype.mapPage=function(){var a,b,c=this,d=[],e=this.render.getBaseElement(),f=1,g=this.layout.colWidth+this.layout.gap,h=this.formated.pageWidth*(this.chapterPos-1),i=g*f-h,j=0,k=function(a){var b,c,d=Array.prototype.slice.call(a.childNodes);if(a.nodeType==Node.ELEMENT_NODE){if(c=document.createRange(),c.selectNodeContents(a),b=c.getBoundingClientRect(),!b||0===b.width&&0===b.height)return;b.left>j&&d.forEach(function(a){a.nodeType==Node.TEXT_NODE&&a.textContent.trim().length&&l(a)}),b.right>j&&d.forEach(function(a){a.nodeType==Node.TEXT_NODE&&a.textContent.trim().length&&l(a)})}},l=function(e){var k=c.splitTextNodeIntoWordsRanges(e);k.forEach(function(e){var k=e.getBoundingClientRect();!k||0===k.width&&0===k.height||(k.left+k.width0&&(b&&(b.setEnd(a,pos),c.push(b)),b=this.doc.createRange(),b.setStart(a,pos+1));return b&&(b.setEnd(a,d.length),c.push(b)),c},EPUBJS.Renderer.prototype.rangePosition=function(a){var b,c;return c=a.getClientRects(),c.length?b=c[0]:null},EPUBJS.Renderer.prototype.getPageCfi=function(){var a;return this.spreads?(a=2*this.chapterPos,startRange=this.pageMap[a-2]):(a=this.chapterPos,startRange=this.pageMap[a-1]),this.pageMap[2*this.chapterPos-1].start},EPUBJS.Renderer.prototype.getRange=function(a,b,c){var d,e=this.doc.createRange();return c=!0,"undefined"==typeof document.caretPositionFromPoint||c?"undefined"==typeof document.caretRangeFromPoint||c?(this.visibileEl=this.findElementAfter(a,b),e.setStart(this.visibileEl,1)):e=this.doc.caretRangeFromPoint(a,b):(d=this.doc.caretPositionFromPoint(a,b),e.setStart(d.offsetNode,d.offset)),e},EPUBJS.Renderer.prototype.pagesInCurrentChapter=function(){var a,b;return this.pageMap?(b=this.pageMap.length,a=this.spreads?Math.ceil(b/2):b):(console.warn("page map not loaded"),!1)},EPUBJS.Renderer.prototype.currentRenderedPage=function(){var a;return this.pageMap?a=this.spreads&&this.layout.pageCount>1?2*this.chapterPos:this.chapterPos:(console.warn("page map not loaded"),!1)},EPUBJS.Renderer.prototype.getRenderedPagesLeft=function(){var a,b,c;return this.pageMap?(b=this.pageMap.length,a=this.spreads?2*this.chapterPos:this.chapterPos,c=b-a):(console.warn("page map not loaded"),!1)},EPUBJS.Renderer.prototype.getVisibleRangeCfi=function(){var a,b,c;return this.pageMap?(this.spreads?(a=2*this.chapterPos,b=this.pageMap[a-2],c=b,this.layout.pageCount>1&&(c=this.pageMap[a-1])):(a=this.chapterPos,b=this.pageMap[a-1],c=b),b||(console.warn("page range miss:",a,this.pageMap),b=this.pageMap[this.pageMap.length-1],c=b),{start:b.start,end:c.end}):(console.warn("page map not loaded"),!1)},EPUBJS.Renderer.prototype.gotoCfi=function(a){var b,c,d;if(this._moving)return this._q.enqueue("gotoCfi",arguments);if(EPUBJS.core.isString(a)&&(a=this.epubcfi.parse(a)),"undefined"==typeof document.evaluate)c=this.epubcfi.addMarker(a,this.doc),c&&(b=this.render.getPageNumberByElement(c),this.epubcfi.removeMarker(c,this.doc),this.page(b));else if(d=this.epubcfi.generateRangeFromCfi(a,this.doc)){var e=d.getBoundingClientRect();b=e?this.render.getPageNumberByRect(e):1,this.page(b),this.currentLocationCfi=a.str}else this.page(1)},EPUBJS.Renderer.prototype.findFirstVisible=function(a){var b,c=a||this.render.getBaseElement();return b=this.walk(c,0,0),b?b:a},EPUBJS.Renderer.prototype.findElementAfter=function(a,b,c){var d,e=c||this.render.getBaseElement();return d=this.walk(e,a,b),d?d:e},EPUBJS.Renderer.prototype.resize=function(a,b,c){this.width=a,this.height=b,c!==!1&&this.render.resize(this.width,this.height),this.contents&&this.reformat(),this.trigger("renderer:resized",{width:this.width,height:this.height})},EPUBJS.Renderer.prototype.onResized=function(a){var b=this.container.clientWidth,c=this.container.clientHeight;this.resize(b,c,!1)},EPUBJS.Renderer.prototype.addEventListeners=function(){this.render.document&&this.listenedEvents.forEach(function(a){this.render.document.addEventListener(a,this.triggerEvent.bind(this),!1)},this)},EPUBJS.Renderer.prototype.removeEventListeners=function(){this.render.document&&this.listenedEvents.forEach(function(a){this.render.document.removeEventListener(a,this.triggerEvent,!1)},this)},EPUBJS.Renderer.prototype.triggerEvent=function(a){this.trigger("renderer:"+a.type,a)},EPUBJS.Renderer.prototype.addSelectionListeners=function(){this.render.document.addEventListener("selectionchange",this.onSelectionChange.bind(this),!1)},EPUBJS.Renderer.prototype.removeSelectionListeners=function(){this.render.document&&this.doc.removeEventListener("selectionchange",this.onSelectionChange,!1)},EPUBJS.Renderer.prototype.onSelectionChange=function(a){this.selectionEndTimeout&&clearTimeout(this.selectionEndTimeout),this.selectionEndTimeout=setTimeout(function(){this.selectedRange=this.render.window.getSelection(),this.trigger("renderer:selected",this.selectedRange)}.bind(this),500)},EPUBJS.Renderer.prototype.setMinSpreadWidth=function(a){this.minSpreadWidth=a,this.spreads=this.determineSpreads(a)},EPUBJS.Renderer.prototype.determineSpreads=function(a){return this.isForcedSingle||!a||this.width=g&&c&&c(!0),e=!0)};b(a,f)}.bind(this))},RSVP.EventTarget.mixin(EPUBJS.Renderer.prototype);var EPUBJS=EPUBJS||{};EPUBJS.replace={},EPUBJS.replace.hrefs=function(a,b){var c=this,d=function(a,d){var e,f,g=a.getAttribute("href"),h=g.search("://");if(-1!=h)a.setAttribute("target","_blank");else{var i=EPUBJS.core.uri(b.render.window.location.href);e=i.directory,f=e?"file"===i.protocol?EPUBJS.core.resolveUrl(i.base,g):EPUBJS.core.resolveUrl(e,g):g,a.onclick=function(){return c["goto"](f),!1}}d()};b.replace("a[href]",d,a)},EPUBJS.replace.head=function(a,b){b.replaceWithStored("link[href]","href",EPUBJS.replace.links,a)},EPUBJS.replace.resources=function(a,b){b.replaceWithStored("[src]","src",EPUBJS.replace.srcs,a)},EPUBJS.replace.svg=function(a,b){b.replaceWithStored("svg image","xlink:href",function(a,b,c){a.getUrl(b).then(c)},a)},EPUBJS.replace.srcs=function(a,b,c){a.getUrl(b).then(c)},EPUBJS.replace.links=function(a,b,c,d){"stylesheet"===d.getAttribute("rel")?EPUBJS.replace.stylesheets(a,b).then(function(a,b){c(a,b)},function(a){c(null)}):a.getUrl(b).then(c,function(a){c(null)})},EPUBJS.replace.stylesheets=function(a,b){var c=new RSVP.defer;if(a)return a.getText(b).then(function(d){EPUBJS.replace.cssUrls(a,b,d).then(function(a){var b=window.URL||window.webkitURL||window.mozURL,d=new Blob([a],{type:"text/css"}),e=b.createObjectURL(d);c.resolve(e)},function(a){c.reject(a)})},function(a){c.reject(a)}),c.promise},EPUBJS.replace.cssUrls=function(a,b,c){var d=new RSVP.defer,e=[],f=c.match(/url\(\'?\"?([^\'|^\"^\)]*)\'?\"?\)/g);if(a)return f?(f.forEach(function(f){var g=EPUBJS.core.resolveUrl(b,f.replace(/url\(|[|\)|\'|\"]/g,"")),h=a.getUrl(g).then(function(a){c=c.replace(f,'url("'+a+'")')},function(a){d.reject(a)});e.push(h)}),RSVP.all(e).then(function(){d.resolve(c)}),d.promise):(d.resolve(c),d.promise)},EPUBJS.Storage=function(a){this.checkRequirements(),this.urlCache={},this.withCredentials=a,this.URL=window.URL||window.webkitURL||window.mozURL,this.offline=!1},EPUBJS.Storage.prototype.checkRequirements=function(a){"undefined"==typeof localforage&&console.error("localForage library not loaded")},EPUBJS.Storage.prototype.put=function(a,b){var c=new RSVP.defer,d=a.length,e=0,f=function(b){var c,g,h=b||new RSVP.defer;return e>=d?h.resolve():(c=a[e].url,g=window.encodeURIComponent(c),EPUBJS.core.request(c,"binary").then(function(a){return localforage.setItem(g,a)}).then(function(a){e++,setTimeout(function(){f(h)},1)})),h.promise}.bind(this);return Array.isArray(a)||(a=[a]),f().then(function(){c.resolve()}.bind(this)),c.promise},EPUBJS.Storage.prototype.token=function(a,b){var c=window.encodeURIComponent(a);return localforage.setItem(c,b).then(function(a){return null===a?!1:!0})},EPUBJS.Storage.prototype.isStored=function(a){var b=window.encodeURIComponent(a);return localforage.getItem(b).then(function(a){return null===a?!1:!0})},EPUBJS.Storage.prototype.getText=function(a){var b=window.encodeURIComponent(a);return EPUBJS.core.request(a,"arraybuffer",this.withCredentials).then(function(a){return this.offline&&(this.offline=!1,this.trigger("offline",!1)),localforage.setItem(b,a),a}.bind(this)).then(function(b){var c=new RSVP.defer,d=EPUBJS.core.getMimeType(a),e=new Blob([b],{type:d}),f=new FileReader;return f.addEventListener("loadend",function(){c.resolve(f.result)}),f.readAsText(e,d),c.promise})["catch"](function(){var c=new RSVP.defer,d=localforage.getItem(b);return this.offline||(this.offline=!0,this.trigger("offline",!0)),d?(d.then(function(b){var d=EPUBJS.core.getMimeType(a),e=new Blob([b],{type:d}),f=new FileReader;f.addEventListener("loadend",function(){c.resolve(f.result)}),f.readAsText(e,d)}),c.promise):(c.reject({message:"File not found in the storage: "+a,stack:(new Error).stack}),c.promise)}.bind(this))},EPUBJS.Storage.prototype.getUrl=function(a){var b=window.encodeURIComponent(a);return EPUBJS.core.request(a,"arraybuffer",this.withCredentials).then(function(c){return this.offline&&(this.offline=!1,this.trigger("offline",!1)),localforage.setItem(b,c),a}.bind(this))["catch"](function(){var c,d,e=new RSVP.defer,f=window.URL||window.webkitURL||window.mozURL;return this.offline||(this.offline=!0,this.trigger("offline",!0)),b in this.urlCache?(e.resolve(this.urlCache[b]),e.promise):(c=localforage.getItem(b))?(c.then(function(c){var g=new Blob([c],{type:EPUBJS.core.getMimeType(a)});d=f.createObjectURL(g),e.resolve(d),this.urlCache[b]=d}.bind(this)),e.promise):(e.reject({message:"File not found in the storage: "+a,stack:(new Error).stack}),e.promise)}.bind(this))},EPUBJS.Storage.prototype.getXml=function(a){var b=window.encodeURIComponent(a);return EPUBJS.core.request(a,"arraybuffer",this.withCredentials).then(function(a){return this.offline&&(this.offline=!1,this.trigger("offline",!1)),localforage.setItem(b,a),a}.bind(this)).then(function(b){var c=new RSVP.defer,d=EPUBJS.core.getMimeType(a),e=new Blob([b],{type:d}),f=new FileReader;return f.addEventListener("loadend",function(){var a=new DOMParser,b=a.parseFromString(f.result,"text/xml");c.resolve(b)}),f.readAsText(e,d),c.promise})["catch"](function(){var c=new RSVP.defer,d=localforage.getItem(b);return this.offline||(this.offline=!0,this.trigger("offline",!0)),d?(d.then(function(b){var d=EPUBJS.core.getMimeType(a),e=new Blob([b],{type:d}),f=new FileReader;f.addEventListener("loadend",function(){var a=new DOMParser,b=a.parseFromString(f.result,"text/xml");c.resolve(b)}),f.readAsText(e,d)}),c.promise):(c.reject({message:"File not found in the storage: "+a,stack:(new Error).stack}),c.promise)}.bind(this))},EPUBJS.Storage.prototype.revokeUrl=function(a){var b=window.URL||window.webkitURL||window.mozURL,c=this.urlCache[a];c&&b.revokeObjectURL(c)},EPUBJS.Storage.prototype.failed=function(a){console.error(a)},RSVP.EventTarget.mixin(EPUBJS.Storage.prototype),EPUBJS.Unarchiver=function(a){this.checkRequirements(),this.urlCache={}},EPUBJS.Unarchiver.prototype.checkRequirements=function(a){"undefined"==typeof JSZip&&console.error("JSZip lib not loaded")},EPUBJS.Unarchiver.prototype.open=function(a,b){if(a instanceof ArrayBuffer){this.zip=new JSZip(a);var c=new RSVP.defer;return c.resolve(),c.promise}return EPUBJS.core.request(a,"binary").then(function(a){this.zip=new JSZip(a)}.bind(this))},EPUBJS.Unarchiver.prototype.getXml=function(a,b){var c=window.decodeURIComponent(a);return this.getText(c,b).then(function(a){var b=new DOMParser;return b.parseFromString(a,"text/xml")})},EPUBJS.Unarchiver.prototype.getUrl=function(a,b){var c,d,e=this,f=new RSVP.defer,g=window.decodeURIComponent(a),h=this.zip.file(g),i=window.URL||window.webkitURL||window.mozURL;return h?a in this.urlCache?(f.resolve(this.urlCache[a]),f.promise):(d=new Blob([h.asUint8Array()],{type:EPUBJS.core.getMimeType(h.name)}),c=i.createObjectURL(d),f.resolve(c),e.urlCache[a]=c,f.promise):(f.reject({message:"File not found in the epub: "+a,stack:(new Error).stack}),f.promise)},EPUBJS.Unarchiver.prototype.getText=function(a,b){var c,d=new RSVP.defer,e=window.decodeURIComponent(a),f=this.zip.file(e);return f?(c=f.asText(),d.resolve(c),d.promise):(d.reject({message:"File not found in the epub: "+a,stack:(new Error).stack}),d.promise)},EPUBJS.Unarchiver.prototype.revokeUrl=function(a){var b=window.URL||window.webkitURL||window.mozURL,c=this.urlCache[a];c&&b.revokeObjectURL(c)},EPUBJS.Unarchiver.prototype.failed=function(a){console.error(a)},EPUBJS.Unarchiver.prototype.afterSaved=function(a){this.callback()},EPUBJS.Unarchiver.prototype.toStorage=function(a){function b(){f--,0===f&&e.afterSaved()}var c=0,d=20,e=this,f=a.length;a.forEach(function(a){setTimeout(function(a){e.saveEntryFileToStorage(a,b)},c,a),c+=d}),console.log("time",c)},function(){"use strict";var a={application:{ecmascript:["es","ecma"],javascript:"js",ogg:"ogx",pdf:"pdf",postscript:["ps","ai","eps","epsi","epsf","eps2","eps3"],"rdf+xml":"rdf",smil:["smi","smil"],"xhtml+xml":["xhtml","xht"],xml:["xml","xsl","xsd"],zip:"zip","x-httpd-eruby":"rhtml","x-latex":"latex","x-maker":["frm","maker","frame","fm","fb","book","fbdoc"],"x-object":"o","x-shockwave-flash":["swf","swfl"],"x-silverlight":"scr","epub+zip":"epub","font-tdpfr":"pfr","inkml+xml":["ink","inkml"],json:"json","jsonml+json":"jsonml","mathml+xml":"mathml","metalink+xml":"metalink",mp4:"mp4s","oebps-package+xml":"opf","omdoc+xml":"omdoc",oxps:"oxps","vnd.amazon.ebook":"azw",widget:"wgt","x-dtbncx+xml":"ncx","x-dtbook+xml":"dtb","x-dtbresource+xml":"res","x-font-bdf":"bdf","x-font-ghostscript":"gsf","x-font-linux-psf":"psf","x-font-otf":"otf","x-font-pcf":"pcf","x-font-snf":"snf","x-font-ttf":["ttf","ttc"],"x-font-type1":["pfa","pfb","pfm","afm"],"x-font-woff":"woff","x-mobipocket-ebook":["prc","mobi"],"x-mspublisher":"pub","x-nzb":"nzb","x-tgif":"obj","xaml+xml":"xaml","xml-dtd":"dtd","xproc+xml":"xpl","xslt+xml":"xslt","internet-property-stream":"acx","x-compress":"z","x-compressed":"tgz","x-gzip":"gz"},audio:{flac:"flac",midi:["mid","midi","kar","rmi"],mpeg:["mpga","mpega","mp2","mp3","m4a","mp2a","m2a","m3a"],mpegurl:"m3u",ogg:["oga","ogg","spx"],"x-aiff":["aif","aiff","aifc"],"x-ms-wma":"wma","x-wav":"wav",adpcm:"adp",mp4:"mp4a",webm:"weba","x-aac":"aac","x-caf":"caf","x-matroska":"mka","x-pn-realaudio-plugin":"rmp",xm:"xm",mid:["mid","rmi"]},image:{gif:"gif",ief:"ief",jpeg:["jpeg","jpg","jpe"],pcx:"pcx",png:"png","svg+xml":["svg","svgz"],tiff:["tiff","tif"],"x-icon":"ico",bmp:"bmp",webp:"webp","x-pict":["pic","pct"],"x-tga":"tga","cis-cod":"cod"},message:{rfc822:["eml","mime","mht","mhtml","nws"]},text:{"cache-manifest":["manifest","appcache"],calendar:["ics","icz","ifb"],css:"css",csv:"csv",h323:"323",html:["html","htm","shtml","stm"],iuls:"uls",mathml:"mml",plain:["txt","text","brf","conf","def","list","log","in","bas"],richtext:"rtx","tab-separated-values":"tsv","x-bibtex":"bib","x-dsrc":"d","x-diff":["diff","patch"],"x-haskell":"hs","x-java":"java","x-literate-haskell":"lhs","x-moc":"moc","x-pascal":["p","pas"],"x-pcs-gcd":"gcd","x-perl":["pl","pm"],"x-python":"py","x-scala":"scala","x-setext":"etx","x-tcl":["tcl","tk"],"x-tex":["tex","ltx","sty","cls"],"x-vcard":"vcf",sgml:["sgml","sgm"],"x-c":["c","cc","cxx","cpp","h","hh","dic"],"x-fortran":["f","for","f77","f90"],"x-opml":"opml","x-nfo":"nfo","x-sfv":"sfv","x-uuencode":"uu",webviewhtml:"htt"},video:{mpeg:["mpeg","mpg","mpe","m1v","m2v","mp2","mpa","mpv2"], -mp4:["mp4","mp4v","mpg4"],quicktime:["qt","mov"],ogg:"ogv","vnd.mpegurl":["mxu","m4u"],"x-flv":"flv","x-la-asf":["lsf","lsx"],"x-mng":"mng","x-ms-asf":["asf","asx","asr"],"x-ms-wm":"wm","x-ms-wmv":"wmv","x-ms-wmx":"wmx","x-ms-wvx":"wvx","x-msvideo":"avi","x-sgi-movie":"movie","x-matroska":["mpv","mkv","mk3d","mks"],"3gpp2":"3g2",h261:"h261",h263:"h263",h264:"h264",jpeg:"jpgv",jpm:["jpm","jpgm"],mj2:["mj2","mjp2"],"vnd.ms-playready.media.pyv":"pyv","vnd.uvvu.mp4":["uvu","uvvu"],"vnd.vivo":"viv",webm:"webm","x-f4v":"f4v","x-m4v":"m4v","x-ms-vob":"vob","x-smv":"smv"}},b=function(){var b,c,d,e,f={};for(b in a)if(a.hasOwnProperty(b))for(c in a[b])if(a[b].hasOwnProperty(c))if(d=a[b][c],"string"==typeof d)f[d]=b+"/"+c;else for(e=0;ec;c++)if(a[c]===b)return c;return-1}function b(a){var b=a._promiseCallbacks;return b||(b=a._promiseCallbacks={}),b}function c(a,b){return"onerror"===a?void X.on("error",b):2!==arguments.length?X[a]:void(X[a]=b)}function d(a){return"function"==typeof a||"object"==typeof a&&null!==a}function e(a){return"function"==typeof a}function f(a){return"object"==typeof a&&null!==a}function g(){}function h(){}function i(a){try{return a.then}catch(b){return fb.error=b,fb}}function j(a,b,c,d){try{a.call(b,c,d)}catch(e){return e}}function k(a,b,c){X.async(function(a){var d=!1,e=j(c,b,function(c){d||(d=!0,b!==c?n(a,c):p(a,c))},function(b){d||(d=!0,q(a,b))},"Settle: "+(a._label||" unknown promise"));!d&&e&&(d=!0,q(a,e))},a)}function l(a,b){b._state===db?p(a,b._result):a._state===eb?q(a,b._result):r(b,void 0,function(c){b!==c?n(a,c):p(a,c)},function(b){q(a,b)})}function m(a,b){if(b.constructor===a.constructor)l(a,b);else{var c=i(b);c===fb?q(a,fb.error):void 0===c?p(a,b):e(c)?k(a,b,c):p(a,b)}}function n(a,b){a===b?p(a,b):d(b)?m(a,b):p(a,b)}function o(a){a._onerror&&a._onerror(a._result),s(a)}function p(a,b){a._state===cb&&(a._result=b,a._state=db,0===a._subscribers.length?X.instrument&&bb("fulfilled",a):X.async(s,a))}function q(a,b){a._state===cb&&(a._state=eb,a._result=b,X.async(o,a))}function r(a,b,c,d){var e=a._subscribers,f=e.length;a._onerror=null,e[f]=b,e[f+db]=c,e[f+eb]=d,0===f&&a._state&&X.async(s,a)}function s(a){var b=a._subscribers,c=a._state;if(X.instrument&&bb(c===db?"fulfilled":"rejected",a),0!==b.length){for(var d,e,f=a._result,g=0;gh;h++)g[h]=a[h];for(d=0;dd;d++)c[d-1]=a[d];return c}function H(a,b){return{then:function(c,d){return a.call(b,c,d)}}}function I(a,b,c,d){var e=E(c,d,b);return e===pb&&q(a,e.value),a}function J(a,b,c,d){return ob.all(b).then(function(b){var e=E(c,d,b);return e===pb&&q(a,e.value),a})}function K(a){return a&&"object"==typeof a?a.constructor===ob?!0:D(a):!1}function L(a,b,c){this._superConstructor(a,b,!1,c)}function M(a,b,c){this._superConstructor(a,b,!0,c)}function N(a,b,c){this._superConstructor(a,b,!1,c)}function O(){return function(){process.nextTick(S)}}function P(){var a=0,b=new Ib(S),c=document.createTextNode("");return b.observe(c,{characterData:!0}),function(){c.data=a=++a%2}}function Q(){var a=new MessageChannel;return a.port1.onmessage=S,function(){a.port2.postMessage(0)}}function R(){return function(){setTimeout(S,1)}}function S(){for(var a=0;Fb>a;a+=2){var b=Kb[a],c=Kb[a+1];b(c),Kb[a]=void 0,Kb[a+1]=void 0}Fb=0}function T(a,b){X.async(a,b)}function U(){X.on.apply(X,arguments)}function V(){X.off.apply(X,arguments)}var W={mixin:function(a){return a.on=this.on,a.off=this.off,a.trigger=this.trigger,a._promiseCallbacks=void 0,a},on:function(c,d){var e,f=b(this);e=f[c],e||(e=f[c]=[]),-1===a(e,d)&&e.push(d)},off:function(c,d){var e,f,g=b(this);return d?(e=g[c],f=a(e,d),void(-1!==f&&e.splice(f,1))):void(g[c]=[])},trigger:function(a,c){var d,e,f=b(this);if(d=f[a])for(var g=0;g1)throw new Error("Second argument not supported");if("object"!=typeof a)throw new TypeError("Argument must be an object");return g.prototype=a,new g},ab=[],bb=function(a,b,c){1===ab.push({name:a,payload:{guid:b._guidKey+b._id,eventName:a,detail:b._result,childGuid:c&&b._guidKey+c._id,label:b._label,timeStamp:$(),stack:new Error(b._label).stack}})&&setTimeout(function(){for(var a,b=0;bd;d++)this._eachEntry(c[d],d)},y.prototype._eachEntry=function(a,b){var c=this._instanceConstructor;f(a)?a.constructor===c&&a._state!==cb?(a._onerror=null,this._settledAt(a._state,b,a._result)):this._willSettleAt(c.resolve(a),b):(this._remaining--,this._result[b]=this._makeResult(db,b,a))},y.prototype._settledAt=function(a,b,c){var d=this.promise;d._state===cb&&(this._remaining--,this._abortOnReject&&a===eb?q(d,c):this._result[b]=this._makeResult(a,b,c)),0===this._remaining&&p(d,this._result)},y.prototype._makeResult=function(a,b,c){return c},y.prototype._willSettleAt=function(a,b){var c=this;r(a,void 0,function(a){c._settledAt(db,b,a)},function(a){c._settledAt(eb,b,a)})};var ib=function(a,b){return new hb(this,a,!0,b).promise},jb=function(a,b){function c(a){n(f,a)}function d(a){q(f,a)}var e=this,f=new e(h,b);if(!Z(a))return q(f,new TypeError("You must pass an array to race.")),f;for(var g=a.length,i=0;f._state===cb&&g>i;i++)r(e.resolve(a[i]),void 0,c,d);return f},kb=function(a,b){var c=this;if(a&&"object"==typeof a&&a.constructor===c)return a;var d=new c(h,b);return n(d,a),d},lb=function(a,b){var c=this,d=new c(h,b);return q(d,a),d},mb="rsvp_"+$()+"-",nb=0,ob=B;B.cast=kb,B.all=ib,B.race=jb,B.resolve=kb,B.reject=lb,B.prototype={constructor:B,_guidKey:mb,_onerror:function(a){X.trigger("error",a)},then:function(a,b,c){var d=this,e=d._state;if(e===db&&!a||e===eb&&!b)return X.instrument&&bb("chained",this,this),this;d._onerror=null;var f=new this.constructor(h,c),g=d._result;if(X.instrument&&bb("chained",d,f),e){var i=arguments[e-1];X.async(function(){v(e,f,i,g)})}else r(d,f,a,b);return f},"catch":function(a,b){return this.then(null,a,b)},"finally":function(a,b){var c=this.constructor;return this.then(function(b){return c.resolve(a()).then(function(){return b})},function(b){return c.resolve(a()).then(function(){throw b})},b)}};var pb=new C,qb=new C,rb=function(a,b){var c=function(){for(var c,d=this,e=arguments.length,f=new Array(e+1),g=!1,i=0;e>i;++i){if(c=arguments[i],!g){if(g=K(c),g===qb){var j=new ob(h);return q(j,qb.value),j}g&&g!==!0&&(c=H(g,c))}f[i]=c}var k=new ob(h);return f[e]=function(a,c){a?q(k,a):void 0===b?n(k,c):b===!0?n(k,G(arguments)):Z(b)?n(k,F(arguments,b)):n(k,c)},g?J(k,f,a,d):I(k,f,a,d)};return c.__proto__=a,c},sb=function(a,b){return ob.all(a,b)};L.prototype=_(hb.prototype),L.prototype._superConstructor=hb,L.prototype._makeResult=x,L.prototype._validationError=function(){return new Error("allSettled must be called with an array")};var tb=function(a,b){return new L(ob,a,b).promise},ub=function(a,b){return ob.race(a,b)},vb=M;M.prototype=_(hb.prototype),M.prototype._superConstructor=hb,M.prototype._init=function(){this._result={}},M.prototype._validateInput=function(a){return a&&"object"==typeof a},M.prototype._validationError=function(){return new Error("Promise.hash must be called with an object")},M.prototype._enumerate=function(){var a=this.promise,b=this._input,c=[];for(var d in b)a._state===cb&&b.hasOwnProperty(d)&&c.push({position:d,entry:b[d]});var e=c.length;this._remaining=e;for(var f,g=0;a._state===cb&&e>g;g++)f=c[g],this._eachEntry(f.entry,f.position)};var wb=function(a,b){return new vb(ob,a,b).promise};N.prototype=_(vb.prototype),N.prototype._superConstructor=hb,N.prototype._makeResult=x,N.prototype._validationError=function(){return new Error("hashSettled must be called with an object")};var xb,yb=function(a,b){return new N(ob,a,b).promise},zb=function(a){throw setTimeout(function(){throw a}),a},Ab=function(a){var b={};return b.promise=new ob(function(a,c){b.resolve=a,b.reject=c},a),b},Bb=function(a,b,c){return ob.all(a,c).then(function(a){if(!e(b))throw new TypeError("You must pass a function as map's second argument.");for(var d=a.length,f=new Array(d),g=0;d>g;g++)f[g]=b(a[g]);return ob.all(f,c)})},Cb=function(a,b){return ob.resolve(a,b)},Db=function(a,b){return ob.reject(a,b)},Eb=function(a,b,c){return ob.all(a,c).then(function(a){if(!e(b))throw new TypeError("You must pass a function as filter's second argument.");for(var d=a.length,f=new Array(d),g=0;d>g;g++)f[g]=b(a[g]);return ob.all(f,c).then(function(b){for(var c=new Array(d),e=0,f=0;d>f;f++)b[f]&&(c[e]=a[f],e++);return c.length=e,c})})},Fb=0,Gb=function(a,b){Kb[Fb]=a,Kb[Fb+1]=b,Fb+=2,2===Fb&&xb()},Hb="undefined"!=typeof window?window:{},Ib=Hb.MutationObserver||Hb.WebKitMutationObserver,Jb="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,Kb=new Array(1e3);xb="undefined"!=typeof process&&"[object process]"==={}.toString.call(process)?O():Ib?P():Jb?Q():R(),X.async=Gb;if("undefined"!=typeof window&&"object"==typeof window.__PROMISE_INSTRUMENTATION__){var Lb=window.__PROMISE_INSTRUMENTATION__;c("instrument",!0);for(var Mb in Lb)Lb.hasOwnProperty(Mb)&&U(Mb,Lb[Mb])}var Nb={race:ub,Promise:ob,allSettled:tb,hash:wb,hashSettled:yb,denodeify:rb,on:U,off:V,map:Bb,filter:Eb,resolve:Cb,reject:Db,all:sb,rethrow:zb,defer:Ab,EventTarget:W,configure:c,async:T};"function"==typeof define&&define.amd?define(function(){return Nb}):"undefined"!=typeof module&&module.exports?module.exports=Nb:"undefined"!=typeof this&&(this.RSVP=Nb)}).call(this);var EPUBJS=EPUBJS||{};EPUBJS.VERSION="0.2.11",EPUBJS.plugins=EPUBJS.plugins||{},EPUBJS.filePath=EPUBJS.filePath||"/epubjs/",EPUBJS.Render={},function(a){var b=(a.ePub||{},a.ePub=function(){var a,b;return"undefined"!=typeof arguments[0]&&("string"==typeof arguments[0]||arguments[0]instanceof ArrayBuffer)&&(a=arguments[0],arguments[1]&&"object"==typeof arguments[1]?(b=arguments[1],b.bookPath=a):b={bookPath:a}),!arguments[0]||"object"!=typeof arguments[0]||arguments[0]instanceof ArrayBuffer||(b=arguments[0]),new EPUBJS.Book(b)});"function"==typeof define&&define.amd?define(["rsvp"],function(){return b}):"undefined"!=typeof module&&module.exports&&(module.exports=b)}(window),EPUBJS.Book=function(a){this.settings=EPUBJS.core.defaults(a||{},{bookPath:void 0,bookKey:void 0,packageUrl:void 0,storage:!1,fromStorage:!1,saved:!1,online:!0,contained:!1,width:void 0,height:void 0,layoutOveride:void 0,orientation:void 0,minSpreadWidth:768,gap:"auto",version:1,restore:!1,reload:!1,"goto":!1,styles:{},headTags:{},withCredentials:!1,render_method:"Iframe"}),this.settings.EPUBJSVERSION=EPUBJS.VERSION,this.spinePos=0,this.stored=!1,this.online=this.settings.online||navigator.onLine,this.networkListeners(),this.ready={manifest:new RSVP.defer,spine:new RSVP.defer,metadata:new RSVP.defer,cover:new RSVP.defer,toc:new RSVP.defer,pageList:new RSVP.defer},this.readyPromises=[this.ready.manifest.promise,this.ready.spine.promise,this.ready.metadata.promise,this.ready.cover.promise,this.ready.toc.promise],this.pageList=[],this.pagination=new EPUBJS.Pagination,this.pageListReady=this.ready.pageList.promise,this.ready.all=RSVP.all(this.readyPromises),this.ready.all.then(this._ready.bind(this)),this.isRendered=!1,this._q=EPUBJS.core.queue(this),this._rendering=!1,this._displayQ=EPUBJS.core.queue(this),this._moving=!1,this._gotoQ=EPUBJS.core.queue(this),this.renderer=new EPUBJS.Renderer(this.settings.render_method),this.renderer.setMinSpreadWidth(this.settings.minSpreadWidth),this.renderer.setGap(this.settings.gap),this.listenToRenderer(this.renderer),this.defer_opened=new RSVP.defer,this.opened=this.defer_opened.promise,this.store=!1,this.settings.storage!==!1&&this.fromStorage(!0),("string"==typeof this.settings.bookPath||this.settings.bookPath instanceof ArrayBuffer)&&this.open(this.settings.bookPath,this.settings.reload),window.addEventListener("beforeunload",this.unload.bind(this),!1)},EPUBJS.Book.prototype.open=function(a,b){var c,d=this,e=new RSVP.defer;return this.settings.bookPath=a,this.settings.contained||this.isContained(a)?(this.settings.contained=this.contained=!0,this.bookUrl="",c=this.unarchive(a).then(function(){return d.loadPackage()})):(this.bookUrl=this.urlFrom(a),c=this.loadPackage()),c.then(this.settings.restore&&!b&&localStorage?function(a){var b=d.packageIdentifier(a),c=d.restore(b);c||d.unpack(a),e.resolve(),d.defer_opened.resolve()}:function(a){d.unpack(a),e.resolve(),d.defer_opened.resolve()}),this._registerReplacements(this.renderer),e.promise},EPUBJS.Book.prototype.loadPackage=function(a){var b,c=this,d=new EPUBJS.Parser,e=a||"META-INF/container.xml";return b=this.settings.packageUrl?c.loadXml(c.settings.packageUrl):c.loadXml(c.bookUrl+e).then(function(a){return d.container(a)}).then(function(a){return c.settings.contentsPath=c.bookUrl+a.basePath,c.settings.packageUrl=c.bookUrl+a.packagePath,c.settings.encoding=a.encoding,c.loadXml(c.settings.packageUrl)}),b.catch(function(){console.error("Could not load book at: "+e),c.trigger("book:loadFailed",e)}),b},EPUBJS.Book.prototype.packageIdentifier=function(a){var b=new EPUBJS.Parser;return b.identifier(a)},EPUBJS.Book.prototype.unpack=function(a){var b=this,c=new EPUBJS.Parser;b.contents=c.packageContents(a,b.settings.contentsPath),b.manifest=b.contents.manifest,b.spine=b.contents.spine,b.spineIndexByURL=b.contents.spineIndexByURL,b.metadata=b.contents.metadata,b.settings.bookKey||(b.settings.bookKey=b.generateBookKey(b.metadata.identifier)),b.globalLayoutProperties=b.parseLayoutProperties(b.metadata),b.contents.coverPath&&(b.cover=b.contents.cover=b.settings.contentsPath+b.contents.coverPath),b.spineNodeIndex=b.contents.spineNodeIndex,b.ready.manifest.resolve(b.contents.manifest),b.ready.spine.resolve(b.contents.spine),b.ready.metadata.resolve(b.contents.metadata),b.ready.cover.resolve(b.contents.cover),b.locations=new EPUBJS.Locations(b.spine,b.store,b.settings.withCredentials),b.contents.navPath?(b.settings.navUrl=b.settings.contentsPath+b.contents.navPath,b.loadXml(b.settings.navUrl).then(function(a){return c.nav(a,b.spineIndexByURL,b.spine)}).then(function(a){b.toc=b.contents.toc=a,b.ready.toc.resolve(b.contents.toc)},function(){b.ready.toc.resolve(!1)}),b.loadXml(b.settings.navUrl).then(function(a){return c.pageList(a,b.spineIndexByURL,b.spine)}).then(function(a){var c=new EPUBJS.EpubCFI,d=0;0!==a.length&&(b.pageList=b.contents.pageList=a,b.pageList.forEach(function(a){a.cfi||(d+=1,c.generateCfiFromHref(a.href,b).then(function(c){a.cfi=c,a.packageUrl=b.settings.packageUrl,d-=1,0===d&&(b.pagination.process(b.pageList),b.ready.pageList.resolve(b.pageList))}))}),d||(b.pagination.process(b.pageList),b.ready.pageList.resolve(b.pageList)))},function(){b.ready.pageList.resolve([])})):b.contents.tocPath?(b.settings.tocUrl=b.settings.contentsPath+b.contents.tocPath,b.loadXml(b.settings.tocUrl).then(function(a){return c.toc(a,b.spineIndexByURL,b.spine)}).then(function(a){b.toc=b.contents.toc=a,b.ready.toc.resolve(b.contents.toc)},function(){b.ready.toc.resolve(!1)})):b.ready.toc.resolve(!1)},EPUBJS.Book.prototype.createHiddenRender=function(a,b,c){var d,e,f=this.element.getBoundingClientRect(),g=b||this.settings.width||f.width,h=c||this.settings.height||f.height;return a.setMinSpreadWidth(this.settings.minSpreadWidth),a.setGap(this.settings.gap),this._registerReplacements(a),this.settings.forceSingle&&a.forceSingle(!0),d=document.createElement("div"),d.style.visibility="hidden",d.style.overflow="hidden",d.style.width="0",d.style.height="0",this.element.appendChild(d),e=document.createElement("div"),e.style.visibility="hidden",e.style.overflow="hidden",e.style.width=g+"px",e.style.height=h+"px",d.appendChild(e),a.initialize(e),d},EPUBJS.Book.prototype.generatePageList=function(a,b){{var c=[],d=new EPUBJS.Renderer(this.settings.render_method,!1),e=this.createHiddenRender(d,a,b),f=new RSVP.defer,g=-1,h=this.spine.length,i=0,j=function(a){var b,e=g+1,f=a||new RSVP.defer;return e>=h?f.resolve():(g=e,b=new EPUBJS.Chapter(this.spine[g],this.store),d.displayChapter(b,this.globalLayoutProperties).then(function(){d.pageMap.forEach(function(a){i+=1,c.push({cfi:a.start,page:i})}),d.pageMap.length%2>0&&d.spreads&&(i+=1,c.push({cfi:d.pageMap[d.pageMap.length-1].end,page:i})),setTimeout(function(){j(f)},1)})),f.promise}.bind(this);j().then(function(){d.remove(),this.element.removeChild(e),f.resolve(c)}.bind(this))}return f.promise},EPUBJS.Book.prototype.generatePagination=function(a,b){var c=this,d=new RSVP.defer;return this.ready.spine.promise.then(function(){c.generatePageList(a,b).then(function(a){c.pageList=c.contents.pageList=a,c.pagination.process(a),c.ready.pageList.resolve(c.pageList),d.resolve(c.pageList)})}),d.promise},EPUBJS.Book.prototype.loadPagination=function(a){var b=JSON.parse(a);return b&&b.length&&(this.pageList=b,this.pagination.process(this.pageList),this.ready.pageList.resolve(this.pageList)),this.pageList},EPUBJS.Book.prototype.getPageList=function(){return this.ready.pageList.promise},EPUBJS.Book.prototype.getMetadata=function(){return this.ready.metadata.promise},EPUBJS.Book.prototype.getToc=function(){return this.ready.toc.promise},EPUBJS.Book.prototype.networkListeners=function(){var a=this;window.addEventListener("offline",function(){a.online=!1,a.settings.storage&&a.fromStorage(!0),a.trigger("book:offline")},!1),window.addEventListener("online",function(){a.online=!0,a.settings.storage&&a.fromStorage(!1),a.trigger("book:online")},!1)},EPUBJS.Book.prototype.listenToRenderer=function(a){var b=this;a.Events.forEach(function(c){a.on(c,function(a){b.trigger(c,a)})}),a.on("renderer:visibleRangeChanged",function(a){var b,c,d,e=[];this.pageList.length>0&&(b=this.pagination.pageFromCfi(a.start),d=this.pagination.percentageFromPage(b),e.push(b),a.end&&(c=this.pagination.pageFromCfi(a.end),e.push(c)),this.trigger("book:pageChanged",{anchorPage:b,percentage:d,pageRange:e}))}.bind(this)),a.on("render:loaded",this.loadChange.bind(this))},EPUBJS.Book.prototype.loadChange=function(a){var b,c,d=EPUBJS.core.uri(a),e=EPUBJS.core.uri(this.currentChapter.absolute);d.path!=e.path?(console.warn("Miss Match",d.path,this.currentChapter.absolute),b=this.spineIndexByURL[d.filename],c=new EPUBJS.Chapter(this.spine[b],this.store),this.currentChapter=c,this.renderer.currentChapter=c,this.renderer.afterLoad(this.renderer.render.docEl),this.renderer.beforeDisplay(function(){this.renderer.afterDisplay()}.bind(this))):this._rendering||this.renderer.reformat()},EPUBJS.Book.prototype.unlistenToRenderer=function(a){a.Events.forEach(function(b){a.off(b)})},EPUBJS.Book.prototype.loadXml=function(a){return this.settings.fromStorage?this.store.getXml(a,this.settings.encoding):this.settings.contained?this.zip.getXml(a,this.settings.encoding):EPUBJS.core.request(a,"xml",this.settings.withCredentials)},EPUBJS.Book.prototype.urlFrom=function(a){var b,c=EPUBJS.core.uri(a),d=c.protocol,e="/"==c.path[0],f=window.location,g=f.origin||f.protocol+"//"+f.host,h=document.getElementsByTagName("base");return h.length&&(b=h[0].href),c.protocol?c.origin+c.path:!d&&e?(b||g)+c.path:d||e?void 0:EPUBJS.core.resolveUrl(b||f.pathname,c.path)},EPUBJS.Book.prototype.unarchive=function(a){return this.zip=new EPUBJS.Unarchiver,this.store=this.zip,this.zip.open(a)},EPUBJS.Book.prototype.isContained=function(a){if(a instanceof ArrayBuffer)return!0;var b=EPUBJS.core.uri(a);return!b.extension||"epub"!=b.extension&&"zip"!=b.extension?!1:!0},EPUBJS.Book.prototype.isSaved=function(a){var b;return localStorage?(b=localStorage.getItem(a),localStorage&&null!==b?!0:!1):!1},EPUBJS.Book.prototype.generateBookKey=function(a){return"epubjs:"+EPUBJS.VERSION+":"+window.location.host+":"+a},EPUBJS.Book.prototype.saveContents=function(){return localStorage?void localStorage.setItem(this.settings.bookKey,JSON.stringify(this.contents)):!1},EPUBJS.Book.prototype.removeSavedContents=function(){return localStorage?void localStorage.removeItem(this.settings.bookKey):!1},EPUBJS.Book.prototype.renderTo=function(a){var b,c=this;if(EPUBJS.core.isElement(a))this.element=a;else{if("string"!=typeof a)return void console.error("Not an Element");this.element=EPUBJS.core.getEl(a)}return b=this.opened.then(function(){return c.renderer.initialize(c.element,c.settings.width,c.settings.height),c.metadata.direction&&c.renderer.setDirection(c.metadata.direction),c._rendered(),c.startDisplay()})},EPUBJS.Book.prototype.startDisplay=function(){var a;return a=this.settings.goto?this.goto(this.settings.goto):this.settings.previousLocationCfi?this.gotoCfi(this.settings.previousLocationCfi):this.displayChapter(this.spinePos)},EPUBJS.Book.prototype.restore=function(a){var b,c=this,d=["manifest","spine","metadata","cover","toc","spineNodeIndex","spineIndexByURL","globalLayoutProperties"],e=!1,f=this.generateBookKey(a),g=localStorage.getItem(f),h=d.length;if(this.settings.clearSaved&&(e=!0),!e&&"undefined"!=g&&null!==g)for(c.contents=JSON.parse(g),b=0;h>b;b++){var i=d[b];if(!c.contents[i]){e=!0;break}c[i]=c.contents[i]}return!e&&g&&this.contents&&this.settings.contentsPath?(this.settings.bookKey=f,this.ready.manifest.resolve(this.manifest),this.ready.spine.resolve(this.spine),this.ready.metadata.resolve(this.metadata),this.ready.cover.resolve(this.cover),this.ready.toc.resolve(this.toc),!0):!1},EPUBJS.Book.prototype.displayChapter=function(a,b,c){var d,e,f,g,h=this,i=c||new RSVP.defer;return this.isRendered?this._rendering||this._rendering?(this._displayQ.enqueue("displayChapter",[a,b,i]),i.promise):(EPUBJS.core.isNumber(a)?f=a:(e=new EPUBJS.EpubCFI(a),f=e.spinePos),(0>f||f>=this.spine.length)&&(console.warn("Not A Valid Location"),f=0,b=!1,e=!1),g=new EPUBJS.Chapter(this.spine[f],this.store),this._rendering=!0,this._needsAssetReplacement()&&g.registerHook("beforeChapterRender",[EPUBJS.replace.head,EPUBJS.replace.resources,EPUBJS.replace.svg],!0),h.currentChapter=g,d=h.renderer.displayChapter(g,this.globalLayoutProperties),e?h.renderer.gotoCfi(e):b&&h.renderer.lastPage(),d.then(function(){h.spinePos=f,i.resolve(h.renderer),h.settings.fromStorage===!1&&h.settings.contained===!1&&h.preloadNextChapter(),h._rendering=!1,h._displayQ.dequeue(),0===h._displayQ.length()&&h._gotoQ.dequeue()},function(a){console.error("Could not load Chapter: "+g.absolute,a),h.trigger("book:chapterLoadFailed",g.absolute),h._rendering=!1,i.reject(a)}),i.promise):(this._q.enqueue("displayChapter",arguments),i.reject({message:"Rendering",stack:(new Error).stack}),i.promise)},EPUBJS.Book.prototype.nextPage=function(){var a;return this.isRendered?(a=this.renderer.nextPage(),a?void 0:this.nextChapter()):this._q.enqueue("nextPage",arguments)},EPUBJS.Book.prototype.prevPage=function(){var a;return this.isRendered?(a=this.renderer.prevPage(),a?void 0:this.prevChapter()):this._q.enqueue("prevPage",arguments)},EPUBJS.Book.prototype.nextChapter=function(){var a;if(this.spinePos0){for(a=this.spinePos-1;this.spine[a]&&this.spine[a].linear&&"no"==this.spine[a].linear;)a--;if(a>=0)return this.displayChapter(a,!0);this.trigger("book:atStart")}else this.trigger("book:atStart")},EPUBJS.Book.prototype.getCurrentLocationCfi=function(){return this.isRendered?this.renderer.currentLocationCfi:!1},EPUBJS.Book.prototype.goto=function(a){return 0===a.indexOf("epubcfi(")?this.gotoCfi(a):a.indexOf("%")===a.length-1?this.gotoPercentage(parseInt(a.substring(0,a.length-1))/100):"number"==typeof a||isNaN(a)===!1?this.gotoPage(a):this.gotoHref(a)},EPUBJS.Book.prototype.gotoCfi=function(a,b){var c,d,e,f=b||new RSVP.defer;return this.isRendered?this._moving||this._rendering?(console.warn("Renderer is moving"),this._gotoQ.enqueue("gotoCfi",[a,f]),!1):(c=new EPUBJS.EpubCFI(a),d=c.spinePos,-1==d?!1:(e=this.spine[d],promise=f.promise,this._moving=!0,this.currentChapter&&this.spinePos===d?(this.renderer.gotoCfi(c),this._moving=!1,f.resolve(this.renderer.currentLocationCfi)):(e&&-1!=d||(d=0,e=this.spine[d]),this.currentChapter=new EPUBJS.Chapter(e,this.store),this.currentChapter&&(this.spinePos=d,render=this.renderer.displayChapter(this.currentChapter,this.globalLayoutProperties),this.renderer.gotoCfi(c),render.then(function(a){this._moving=!1,f.resolve(a.currentLocationCfi)}.bind(this)))),promise.then(function(){this._gotoQ.dequeue()}.bind(this)),promise)):(console.warn("Not yet Rendered"),this.settings.previousLocationCfi=a,!1)},EPUBJS.Book.prototype.gotoHref=function(a,b){var c,d,e,f,g,h=b||new RSVP.defer;return this.isRendered?this._moving||this._rendering?(this._gotoQ.enqueue("gotoHref",[a,h]),!1):(c=a.split("#"),d=c[0],e=c[1]||!1,f=d.replace(this.settings.contentsPath,""),g=this.spineIndexByURL[f],d||(g=this.currentChapter?this.currentChapter.spinePos:0),"number"!=typeof g?!1:this.currentChapter&&g==this.currentChapter.spinePos?(e?this.renderer.section(e):this.renderer.firstPage(),h.resolve(this.renderer.currentLocationCfi),h.promise.then(function(){this._gotoQ.dequeue()}.bind(this)),h.promise):this.displayChapter(g).then(function(){e&&this.renderer.section(e),h.resolve(this.renderer.currentLocationCfi)}.bind(this))):(this.settings.goto=a,!1)},EPUBJS.Book.prototype.gotoPage=function(a){var b=this.pagination.cfiFromPage(a);return this.gotoCfi(b)},EPUBJS.Book.prototype.gotoPercentage=function(a){var b=this.pagination.pageFromPercentage(a);return this.gotoPage(b)},EPUBJS.Book.prototype.preloadNextChapter=function(){var a,b=this.spinePos+1;return b>=this.spine.length?!1:(a=new EPUBJS.Chapter(this.spine[b]),void(a&&EPUBJS.core.request(a.absolute)))},EPUBJS.Book.prototype.storeOffline=function(){var a=this,b=EPUBJS.core.values(this.manifest);return this.store.put(b).then(function(){a.settings.stored=!0,a.trigger("book:stored")})},EPUBJS.Book.prototype.availableOffline=function(){return this.settings.stored>0?!0:!1},EPUBJS.Book.prototype.toStorage=function(){var a=this.settings.bookKey;this.store.isStored(a).then(function(b){return b===!0?(this.settings.stored=!0,!0):this.storeOffline().then(function(){this.store.token(a,!0)}.bind(this))}.bind(this))},EPUBJS.Book.prototype.fromStorage=function(a){[EPUBJS.replace.head,EPUBJS.replace.resources,EPUBJS.replace.svg];this.contained||this.settings.contained||(this.online&&this.opened.then(this.toStorage.bind(this)),this.store&&this.settings.fromStorage&&a===!1?(this.settings.fromStorage=!1,this.store.off("offline"),this.store=!1):this.settings.fromStorage||(this.store=new EPUBJS.Storage(this.settings.credentials),this.store.on("offline",function(a){a?(this.offline=!0,this.settings.fromStorage=!0,this.trigger("book:offline")):(this.offline=!1,this.settings.fromStorage=!1,this.trigger("book:online"))}.bind(this))))},EPUBJS.Book.prototype.setStyle=function(a,b,c){var d=["color","background","background-color"];return this.isRendered?(this.settings.styles[a]=b,this.renderer.setStyle(a,b,c),void(-1===d.indexOf(a)&&this.renderer.reformat())):this._q.enqueue("setStyle",arguments)},EPUBJS.Book.prototype.removeStyle=function(a){return this.isRendered?(this.renderer.removeStyle(a),this.renderer.reformat(),void delete this.settings.styles[a]):this._q.enqueue("removeStyle",arguments)},EPUBJS.Book.prototype.addHeadTag=function(a,b){return this.isRendered?void(this.settings.headTags[a]=b):this._q.enqueue("addHeadTag",arguments)},EPUBJS.Book.prototype.useSpreads=function(a){console.warn("useSpreads is deprecated, use forceSingle or set a layoutOveride instead"),this.forceSingle(a===!1?!0:!1)},EPUBJS.Book.prototype.forceSingle=function(a){var b="undefined"==typeof a?!0:a;this.renderer.forceSingle(b),this.settings.forceSingle=b,this.isRendered&&this.renderer.reformat()},EPUBJS.Book.prototype.setMinSpreadWidth=function(a){this.settings.minSpreadWidth=a,this.isRendered&&(this.renderer.setMinSpreadWidth(this.settings.minSpreadWidth),this.renderer.reformat())},EPUBJS.Book.prototype.setGap=function(a){this.settings.gap=a,this.isRendered&&(this.renderer.setGap(this.settings.gap),this.renderer.reformat())},EPUBJS.Book.prototype.chapter=function(a){var b,c,d=this.spineIndexByURL[a];return d&&(b=this.spine[d],c=new EPUBJS.Chapter(b,this.store,this.settings.withCredentials),c.load()),c},EPUBJS.Book.prototype.unload=function(){this.settings.restore&&localStorage&&this.saveContents(),this.unlistenToRenderer(this.renderer),this.trigger("book:unload")},EPUBJS.Book.prototype.destroy=function(){window.removeEventListener("beforeunload",this.unload),this.currentChapter&&this.currentChapter.unload(),this.unload(),this.renderer&&this.renderer.remove()},EPUBJS.Book.prototype._ready=function(){this.trigger("book:ready")},EPUBJS.Book.prototype._rendered=function(){this.isRendered=!0,this.trigger("book:rendered"),this._q.flush()},EPUBJS.Book.prototype.applyStyles=function(a,b){a.applyStyles(this.settings.styles),b()},EPUBJS.Book.prototype.applyHeadTags=function(a,b){a.applyHeadTags(this.settings.headTags),b()},EPUBJS.Book.prototype._registerReplacements=function(a){a.registerHook("beforeChapterDisplay",this.applyStyles.bind(this,a),!0),a.registerHook("beforeChapterDisplay",this.applyHeadTags.bind(this,a),!0),a.registerHook("beforeChapterDisplay",EPUBJS.replace.hrefs.bind(this),!0)},EPUBJS.Book.prototype._needsAssetReplacement=function(){return this.settings.fromStorage?!0:this.settings.contained?!0:!1},EPUBJS.Book.prototype.parseLayoutProperties=function(a){var b=this.settings.layoutOveride&&this.settings.layoutOveride.layout||a.layout||"reflowable",c=this.settings.layoutOveride&&this.settings.layoutOveride.spread||a.spread||"auto",d=this.settings.layoutOveride&&this.settings.layoutOveride.orientation||a.orientation||"auto";return{layout:b,spread:c,orientation:d}},RSVP.EventTarget.mixin(EPUBJS.Book.prototype),RSVP.on("error",function(){}),RSVP.configure("instrument",!1),EPUBJS.Chapter=function(a,b,c){this.href=a.href,this.absolute=a.url,this.id=a.id,this.spinePos=a.index,this.cfiBase=a.cfiBase,this.properties=a.properties,this.manifestProperties=a.manifestProperties,this.linear=a.linear,this.pages=1,this.store=b,this.credentials=c,this.epubcfi=new EPUBJS.EpubCFI,this.deferred=new RSVP.defer,this.loaded=this.deferred.promise,EPUBJS.Hooks.mixin(this),this.getHooks("beforeChapterRender"),this.caches={}},EPUBJS.Chapter.prototype.load=function(a,b){var c,d=a||this.store,e=b||this.credentials;return c=d?d.getXml(this.absolute):EPUBJS.core.request(this.absolute,!1,e),c.then(function(a){this.setDocument(a),this.deferred.resolve(this) +}.bind(this)),c},EPUBJS.Chapter.prototype.render=function(){return this.load().then(function(a){var b=a.querySelector("head"),c=a.createElement("base");return c.setAttribute("href",this.absolute),b.insertBefore(c,b.firstChild),this.contents=a,new RSVP.Promise(function(b){this.triggerHooks("beforeChapterRender",function(){b(a)}.bind(this),this)}.bind(this))}.bind(this)).then(function(a){var b=new XMLSerializer,c=b.serializeToString(a);return c}.bind(this))},EPUBJS.Chapter.prototype.url=function(a){var b,c=new RSVP.defer,d=a||this.store,e=this;return d?this.tempUrl?(b=this.tempUrl,c.resolve(b)):d.getUrl(this.absolute).then(function(a){e.tempUrl=a,c.resolve(a)}):(b=this.absolute,c.resolve(b)),c.promise},EPUBJS.Chapter.prototype.setPages=function(a){this.pages=a},EPUBJS.Chapter.prototype.getPages=function(){return this.pages},EPUBJS.Chapter.prototype.getID=function(){return this.ID},EPUBJS.Chapter.prototype.unload=function(a){this.document=null,this.tempUrl&&a&&(a.revokeUrl(this.tempUrl),this.tempUrl=!1)},EPUBJS.Chapter.prototype.setDocument=function(a){{var b=a.namespaceURI;a.doctype}this.document=a.implementation.createDocument(b,null,null),this.contents=this.document.importNode(a.documentElement,!0),this.document.appendChild(this.contents),!this.document.evaluate&&document.evaluate&&(this.document.evaluate=document.evaluate)},EPUBJS.Chapter.prototype.cfiFromRange=function(a){var b,c,d,e,f,g;if(this.document){if("undefined"!=typeof document.evaluate){if(c=EPUBJS.core.getElementXPath(a.startContainer),d=EPUBJS.core.getElementXPath(a.endContainer),e=this.document.evaluate(c,this.document,EPUBJS.core.nsResolver,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue,a.collapsed||(f=this.document.evaluate(d,this.document,EPUBJS.core.nsResolver,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue),b=this.document.createRange(),e)try{b.setStart(e,a.startOffset),!a.collapsed&&f&&b.setEnd(f,a.endOffset)}catch(h){console.log("missed"),e=!1}e||(console.log("not found, try fuzzy match"),cleanStartTextContent=EPUBJS.core.cleanStringForXpath(a.startContainer.textContent),c="//text()[contains(.,"+cleanStartTextContent+")]",e=this.document.evaluate(c,this.document,EPUBJS.core.nsResolver,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue,e&&(b.setStart(e,a.startOffset),a.collapsed||(g=EPUBJS.core.cleanStringForXpath(a.endContainer.textContent),d="//text()[contains(.,"+g+")]",f=this.document.evaluate(d,this.document,EPUBJS.core.nsResolver,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue,f&&b.setEnd(f,a.endOffset))))}else b=a;return this.epubcfi.generateCfiFromRange(b,this.cfiBase)}},EPUBJS.Chapter.prototype.find=function(a){var b=this,c=[],d=a.toLowerCase(),e=function(a){for(var e,f,g,h=a.textContent.toLowerCase(),i=b.document.createRange(),j=-1,k=150;-1!=f;)f=h.indexOf(d,j+1),-1!=f&&(i=b.document.createRange(),i.setStart(a,f),i.setEnd(a,f+d.length),e=b.cfiFromRange(i),a.textContent.length=g&&c&&c(!0),e=!0)};b(a,f)}.bind(this))},EPUBJS.Chapter.prototype.replaceWithStored=function(a,b,c,d){var e,f={},g=this.store,h=this.caches[a],i=EPUBJS.core.uri(this.absolute),j=i.base,k=b,l=5,m=function(a,b){f[b]=a},n=function(){d&&d(),EPUBJS.core.values(e).forEach(function(a){g.revokeUrl(a)}),h=f};g&&(h||(h={}),e=EPUBJS.core.clone(h),this.replace(a,function(b,d){var h=b.getAttribute(k),i=EPUBJS.core.resolveUrl(j,h),m=function(c){var e;b.onload=function(){clearTimeout(e),d(c,i)},b.onerror=function(a){clearTimeout(e),d(c,i),console.error(a)},"svg image"==a&&b.setAttribute("externalResourcesRequired","true"),"link[href]"==a&&"stylesheet"!==b.getAttribute("rel")?d(c,i):e=setTimeout(function(){d(c,i)},l),b.setAttribute(k,c)};i in e?(m(e[i]),f[i]=e[i],delete e[i]):c(g,i,m,b)},n,m))};var EPUBJS=EPUBJS||{};EPUBJS.core={},EPUBJS.core.getEl=function(a){return document.getElementById(a)},EPUBJS.core.getEls=function(a){return document.getElementsByClassName(a)},EPUBJS.core.request=function(a,b,c){var d,e=window.URL,f=e?"blob":"arraybuffer",g=new RSVP.defer,h=new XMLHttpRequest,i=XMLHttpRequest.prototype,j=function(){var a;this.readyState==this.DONE&&(200===this.status||0===this.status&&this.response?(a="xml"==b?this.responseXML?this.responseXML:(new DOMParser).parseFromString(this.response,"application/xml"):"xhtml"==b?this.responseXML?this.responseXML:(new DOMParser).parseFromString(this.response,"application/xhtml+xml"):"html"==b?this.responseXML?this.responseXML:(new DOMParser).parseFromString(this.response,"text/html"):"json"==b?JSON.parse(this.response):"blob"==b?e?this.response:new Blob([this.response]):this.response,g.resolve(a)):g.reject({message:this.response,stack:(new Error).stack}))};return"overrideMimeType"in i||Object.defineProperty(i,"overrideMimeType",{value:function(){}}),c&&(h.withCredentials=!0),b||(d=EPUBJS.core.uri(a),b=d.extension),"blob"==b&&(h.responseType=f),"json"==b&&h.setRequestHeader("Accept","application/json"),"xml"==b&&(h.responseType="document",h.overrideMimeType("text/xml")),"xhtml"==b&&(h.responseType="document"),"html"==b&&(h.responseType="document"),"binary"==b&&(h.responseType="arraybuffer"),h.open("GET",a,!0),h.onreadystatechange=j,h.send(),g.promise},EPUBJS.core.toArray=function(a){var b=[];for(var c in a){var d;a.hasOwnProperty(c)&&(d=a[c],d.ident=c,b.push(d))}return b},EPUBJS.core.uri=function(a){var b,c,d,e={protocol:"",host:"",path:"",origin:"",directory:"",base:"",filename:"",extension:"",fragment:"",href:a},f=a.indexOf("blob:"),g=a.indexOf("://"),h=a.indexOf("?"),i=a.indexOf("#");return 0===f?(e.protocol="blob",e.base=a.indexOf(0,i),e):(-1!=i&&(e.fragment=a.slice(i+1),a=a.slice(0,i)),-1!=h&&(e.search=a.slice(h+1),a=a.slice(0,h),href=a),-1!=g?(e.protocol=a.slice(0,g),b=a.slice(g+3),d=b.indexOf("/"),-1===d?(e.host=e.path,e.path=""):(e.host=b.slice(0,d),e.path=b.slice(d)),e.origin=e.protocol+"://"+e.host,e.directory=EPUBJS.core.folder(e.path),e.base=e.origin+e.directory):(e.path=a,e.directory=EPUBJS.core.folder(a),e.base=e.directory),e.filename=a.replace(e.base,""),c=e.filename.lastIndexOf("."),-1!=c&&(e.extension=e.filename.slice(c+1)),e)},EPUBJS.core.folder=function(a){var b=a.lastIndexOf("/");if(-1==b)var c="";return c=a.slice(0,b+1)},EPUBJS.core.dataURLToBlob=function(a){var b,c,d,e,f,g=";base64,";if(-1==a.indexOf(g))return b=a.split(","),c=b[0].split(":")[1],d=b[1],new Blob([d],{type:c});b=a.split(g),c=b[0].split(":")[1],d=window.atob(b[1]),e=d.length,f=new Uint8Array(e);for(var h=0;e>h;++h)f[h]=d.charCodeAt(h);return new Blob([f],{type:c})},EPUBJS.core.addScript=function(a,b,c){var d,e;e=!1,d=document.createElement("script"),d.type="text/javascript",d.async=!1,d.src=a,d.onload=d.onreadystatechange=function(){e||this.readyState&&"complete"!=this.readyState||(e=!0,b&&b())},c=c||document.body,c.appendChild(d)},EPUBJS.core.addScripts=function(a,b,c){var d=a.length,e=0,f=function(){e++,d==e?b&&b():EPUBJS.core.addScript(a[e],f,c)};EPUBJS.core.addScript(a[e],f,c)},EPUBJS.core.addCss=function(a,b,c){var d,e;e=!1,d=document.createElement("link"),d.type="text/css",d.rel="stylesheet",d.href=a,d.onload=d.onreadystatechange=function(){e||this.readyState&&"complete"!=this.readyState||(e=!0,b&&b())},c=c||document.body,c.appendChild(d)},EPUBJS.core.prefixed=function(a){var b=["Webkit","Moz","O","ms"],c=a[0].toUpperCase()+a.slice(1),d=b.length;if("undefined"!=typeof document.documentElement.style[a])return a;for(var e=0;d>e;e++)if("undefined"!=typeof document.documentElement.style[b[e]+c])return b[e]+c;return a},EPUBJS.core.resolveUrl=function(a,b){var c,d,e=[],f=EPUBJS.core.uri(b),g=a.split("/");return f.host?b:(g.pop(),d=b.split("/"),d.forEach(function(a){".."===a?g.pop():e.push(a)}),c=g.concat(e),c.join("/"))},EPUBJS.core.uuid=function(){var a=(new Date).getTime(),b="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(b){var c=(a+16*Math.random())%16|0;return a=Math.floor(a/16),("x"==b?c:7&c|8).toString(16)});return b},EPUBJS.core.insert=function(a,b,c){var d=EPUBJS.core.locationOf(a,b,c);return b.splice(d,0,a),d},EPUBJS.core.locationOf=function(a,b,c,d,e){var f,g=d||0,h=e||b.length,i=parseInt(g+(h-g)/2);return c||(c=function(a,b){return a>b?1:b>a?-1:(a=b)?0:void 0}),0>=h-g?i:(f=c(b[i],a),h-g===1?f>0?i:i+1:0===f?i:-1===f?EPUBJS.core.locationOf(a,b,c,i,h):EPUBJS.core.locationOf(a,b,c,g,i))},EPUBJS.core.indexOfSorted=function(a,b,c,d,e){var f,g=d||0,h=e||b.length,i=parseInt(g+(h-g)/2);return c||(c=function(a,b){return a>b?1:b>a?-1:(a=b)?0:void 0}),0>=h-g?-1:(f=c(b[i],a),h-g===1?0===f?i:-1:0===f?i:-1===f?EPUBJS.core.indexOfSorted(a,b,c,i,h):EPUBJS.core.indexOfSorted(a,b,c,g,i))},EPUBJS.core.queue=function(a){var b=[],c=a,d=function(a,c,d){return b.push({funcName:a,args:c,context:d}),b},e=function(){var a;b.length&&(a=b.shift(),c[a.funcName].apply(a.context||c,a.args))},f=function(){for(;b.length;)e()},g=function(){b=[]},h=function(){return b.length};return{enqueue:d,dequeue:e,flush:f,clear:g,length:h}},EPUBJS.core.getElementXPath=function(a){return a&&a.id?'//*[@id="'+a.id+'"]':EPUBJS.core.getElementTreeXPath(a)},EPUBJS.core.getElementTreeXPath=function(a){var b,c,d,e,f=[],g="http://www.w3.org/1999/xhtml"===a.ownerDocument.documentElement.getAttribute("xmlns");for(a.nodeType===Node.TEXT_NODE&&(b=EPUBJS.core.indexOfTextNode(a)+1,f.push("text()["+b+"]"),a=a.parentNode);a&&1==a.nodeType;a=a.parentNode){b=0;for(var h=a.previousSibling;h;h=h.previousSibling)h.nodeType!=Node.DOCUMENT_TYPE_NODE&&h.nodeName==a.nodeName&&++b;c=a.nodeName.toLowerCase(),d=g?"xhtml:"+c:c,e=b?"["+(b+1)+"]":"",f.splice(0,0,d+e)}return f.length?"./"+f.join("/"):null},EPUBJS.core.nsResolver=function(a){var b={xhtml:"http://www.w3.org/1999/xhtml",epub:"http://www.idpf.org/2007/ops"};return b[a]||null},EPUBJS.core.cleanStringForXpath=function(a){var b=a.match(/[^'"]+|['"]/g);return b=b.map(function(a){return"'"===a?'"\'"':'"'===a?"'\"'":"'"+a+"'"}),"concat('',"+b.join(",")+")"},EPUBJS.core.indexOfTextNode=function(a){for(var b,c=a.parentNode,d=c.childNodes,e=-1,f=0;fb;b++){var d=arguments[b];for(var e in d)void 0===a[e]&&(a[e]=d[e])}return a},EPUBJS.core.extend=function(a){var b=[].slice.call(arguments,1);return b.forEach(function(b){b&&Object.getOwnPropertyNames(b).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))})}),a},EPUBJS.core.clone=function(a){return EPUBJS.core.isArray(a)?a.slice():EPUBJS.core.extend({},a)},EPUBJS.core.isElement=function(a){return!(!a||1!=a.nodeType)},EPUBJS.core.isNumber=function(a){return!isNaN(parseFloat(a))&&isFinite(a)},EPUBJS.core.isString=function(a){return"string"==typeof a||a instanceof String},EPUBJS.core.isArray=Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)},EPUBJS.core.values=function(a){var b,c,d,e=-1;if(!a)return[];for(b=Object.keys(a),c=b.length,d=Array(c);++e0;){if(c=d.shift(),"text"===c.type?(e=g.childNodes[c.index],g=e.parentNode||g):g=c.id?f.getElementById(c.id):h[c.index],"undefined"==typeof g)return console.error("No Element For",c,a.str),!1;h=Array.prototype.slice.call(g.children)}return g},EPUBJS.EpubCFI.prototype.compare=function(a,b){if("string"==typeof a&&(a=new EPUBJS.EpubCFI(a)),"string"==typeof b&&(b=new EPUBJS.EpubCFI(b)),a.spinePos>b.spinePos)return 1;if(a.spinePosb.steps[c].index)return 1;if(a.steps[c].indexb.characterOffset?1:a.characterOffset")},EPUBJS.EpubCFI.prototype.generateRangeFromCfi=function(a,b){var c,d,e,f,g,h,i=b||document,j=i.createRange();return"string"==typeof a&&(a=this.parse(a)),-1===a.spinePos?!1:(c=a.steps[a.steps.length-1],"undefined"!=typeof document.evaluate?(d=this.generateXpathFromSteps(a.steps),e=i.evaluate(d,i,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue):(g=this.generateQueryFromSteps(a.steps),h=i.querySelector(g),h&&"text"==c.type&&(e=h.childNodes[c.index])),e?(e&&a.characterOffset>=0?(f=e.length,a.characterOffset-1&&this.hooks[a].splice(c,1)):Array.isArray(b)&&b.forEach(function(b){c=this.hooks[a].indexOf(b),c>-1&&this.hooks[a].splice(c,1)},this))},a.prototype.triggerHooks=function(a,b,c){function d(){f--,0>=f&&b&&b()}var e,f;return"undefined"==typeof this.hooks[a]?!1:(e=this.hooks[a],f=e.length,0===f&&b&&b(),void e.forEach(function(a){a(d,c)}))},{register:function(a){if(void 0===EPUBJS.hooks[a]&&(EPUBJS.hooks[a]={}),"object"!=typeof EPUBJS.hooks[a])throw"Already registered: "+a;return EPUBJS.hooks[a]},mixin:function(b){for(var c in a.prototype)b[c]=a.prototype[c]}}}(),EPUBJS.Layout=EPUBJS.Layout||{},EPUBJS.Layout.Reflowable=function(){this.documentElement=null,this.spreadWidth=null},EPUBJS.Layout.Reflowable.prototype.format=function(a,b,c,d){var e=EPUBJS.core.prefixed("columnAxis"),f=EPUBJS.core.prefixed("columnGap"),g=EPUBJS.core.prefixed("columnWidth"),h=EPUBJS.core.prefixed("columnFill"),i=Math.floor(b),j=Math.floor(i/8),k=d>=0?d:j%2===0?j:j-1;return this.documentElement=a,this.spreadWidth=i+k,a.style.overflow="hidden",a.style.width=i+"px",a.style.height=c+"px",a.style[e]="horizontal",a.style[h]="auto",a.style[g]=i+"px",a.style[f]=k+"px",this.colWidth=i,this.gap=k,{pageWidth:this.spreadWidth,pageHeight:c}},EPUBJS.Layout.Reflowable.prototype.calculatePages=function(){var a,b;return this.documentElement.style.width="auto",a=this.documentElement.scrollWidth,b=Math.ceil(a/this.spreadWidth),{displayedPages:b,pageCount:b}},EPUBJS.Layout.ReflowableSpreads=function(){this.documentElement=null,this.spreadWidth=null},EPUBJS.Layout.ReflowableSpreads.prototype.format=function(a,b,c,d){var e=EPUBJS.core.prefixed("columnAxis"),f=EPUBJS.core.prefixed("columnGap"),g=EPUBJS.core.prefixed("columnWidth"),h=EPUBJS.core.prefixed("columnFill"),i=2,j=Math.floor(b),k=j%2===0?j:j-1,l=Math.floor(k/8),m=d>=0?d:l%2===0?l:l-1,n=Math.floor((k-m)/i);return this.documentElement=a,this.spreadWidth=(n+m)*i,a.style.overflow="hidden",a.style.width=k+"px",a.style.height=c+"px",a.style[e]="horizontal",a.style[h]="auto",a.style[f]=m+"px",a.style[g]=n+"px",this.colWidth=n,this.gap=m,{pageWidth:this.spreadWidth,pageHeight:c}},EPUBJS.Layout.ReflowableSpreads.prototype.calculatePages=function(){var a=this.documentElement.scrollWidth,b=Math.ceil(a/this.spreadWidth);return this.documentElement.style.width=b*this.spreadWidth-this.gap+"px",{displayedPages:b,pageCount:2*b}},EPUBJS.Layout.Fixed=function(){this.documentElement=null},EPUBJS.Layout.Fixed.prototype.format=function(a){var b,c,d,e,f=EPUBJS.core.prefixed("columnWidth"),g=a.querySelector("[name=viewport]");return this.documentElement=a,g&&g.hasAttribute("content")&&(b=g.getAttribute("content"),c=b.split(","),c[0]&&(d=c[0].replace("width=","")),c[1]&&(e=c[1].replace("height=",""))),a.style.width=d+"px"||"auto",a.style.height=e+"px"||"auto",a.style[f]="auto",a.style.overflow="auto",this.colWidth=d,this.gap=0,{pageWidth:d,pageHeight:e}},EPUBJS.Layout.Fixed.prototype.calculatePages=function(){return{displayedPages:1,pageCount:1}},EPUBJS.Locations=function(a,b,c){this.spine=a,this.store=b,this.credentials=c,this.epubcfi=new EPUBJS.EpubCFI,this._locations=[],this.total=0,this.break=150,this._current=0},EPUBJS.Locations.prototype.generate=function(){{var a=new RSVP.defer,b=-1,c=this.spine.length,d=function(a){var e,f=b+1,g=a||new RSVP.defer;return f>=c?g.resolve():(b=f,e=new EPUBJS.Chapter(this.spine[b],this.store,this.credentials),this.process(e).then(function(){setTimeout(function(){d(g)},1)})),g.promise}.bind(this);d().then(function(){this.total=this._locations.length-1,this._currentCfi&&(this.currentLocation=this._currentCfi),a.resolve(this._locations)}.bind(this))}return a.promise},EPUBJS.Locations.prototype.process=function(a){return a.load().then(function(b){var c,d,e=b,f=e.documentElement.querySelector("body"),g=0;this.sprint(f,function(b){var f,h=b.length,i=0;for(0===g&&(c=e.createRange(),c.setStart(b,0)),f=this.break-g,f>h&&(g+=h,i=h);h>i;)g=this.break,i+=this.break,i>=h?g=h-(i-this.break):(c.setEnd(b,i),cfi=a.cfiFromRange(c),this._locations.push(cfi),g=0,i+=1,c=e.createRange(),c.setStart(b,i));d=b}.bind(this)),c&&(c.setEnd(d,d.length),cfi=a.cfiFromRange(c),this._locations.push(cfi),g=0)}.bind(this))},EPUBJS.Locations.prototype.sprint=function(a,b){for(var c=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,null,!1);node=c.nextNode();)b(node)},EPUBJS.Locations.prototype.locationFromCfi=function(a){return 0===this._locations.length?-1:EPUBJS.core.locationOf(a,this._locations,this.epubcfi.compare)},EPUBJS.Locations.prototype.percentageFromCfi=function(a){var b=this.locationFromCfi(a);return this.percentageFromLocation(b)},EPUBJS.Locations.prototype.percentageFromLocation=function(a){return a&&this.total?a/this.total:0},EPUBJS.Locations.prototype.cfiFromLocation=function(a){var b=-1;return"number"!=typeof a&&(a=parseInt(a)),a>=0&&a1?a/100:a,c=Math.ceil(this.total*b);return this.cfiFromLocation(c)},EPUBJS.Locations.prototype.load=function(a){return this._locations=JSON.parse(a),this.total=this._locations.length-1,this._locations},EPUBJS.Locations.prototype.save=function(){return JSON.stringify(this._locations)},EPUBJS.Locations.prototype.getCurrent=function(){return this._current},EPUBJS.Locations.prototype.setCurrent=function(a){var b;if("string"==typeof a)this._currentCfi=a;else{if("number"!=typeof a)return;this._current=a}0!==this._locations.length&&("string"==typeof a?(b=this.locationFromCfi(a),this._current=b):b=a,this.trigger("changed",{percentage:this.percentageFromLocation(b)}))},Object.defineProperty(EPUBJS.Locations.prototype,"currentLocation",{get:function(){return this._current},set:function(a){this.setCurrent(a)}}),RSVP.EventTarget.mixin(EPUBJS.Locations.prototype),EPUBJS.Pagination=function(a){this.pages=[],this.locations=[],this.epubcfi=new EPUBJS.EpubCFI,a&&a.length&&this.process(a)},EPUBJS.Pagination.prototype.process=function(a){a.forEach(function(a){this.pages.push(a.page),this.locations.push(a.cfi)},this),this.pageList=a,this.firstPage=parseInt(this.pages[0]),this.lastPage=parseInt(this.pages[this.pages.length-1]),this.totalPages=this.lastPage-this.firstPage},EPUBJS.Pagination.prototype.pageFromCfi=function(a){var b=-1;if(0===this.locations.length)return-1;var c=EPUBJS.core.indexOfSorted(a,this.locations,this.epubcfi.compare);return-1!=c&&c=0?this.pages[c-1]:this.pages[0],void 0!==b||(b=-1)),b},EPUBJS.Pagination.prototype.cfiFromPage=function(a){var b=-1;"number"!=typeof a&&(a=parseInt(a));var c=this.pages.indexOf(a);return-1!=c&&(b=this.locations[c]),b},EPUBJS.Pagination.prototype.pageFromPercentage=function(a){var b=Math.round(this.totalPages*a);return b},EPUBJS.Pagination.prototype.percentageFromPage=function(a){var b=(a-this.firstPage)/this.totalPages;return Math.round(1e3*b)/1e3},EPUBJS.Pagination.prototype.percentageFromCfi=function(a){var b=this.pageFromCfi(a),c=this.percentageFromPage(b);return c},EPUBJS.Parser=function(a){this.baseUrl=a||""},EPUBJS.Parser.prototype.container=function(a){var b,c,d,e;return a?(b=a.querySelector("rootfile"))?(c=b.getAttribute("full-path"),d=EPUBJS.core.uri(c).directory,e=a.xmlEncoding,{packagePath:c,basePath:d,encoding:e}):void console.error("No RootFile Found"):void console.error("Container File Not Found")},EPUBJS.Parser.prototype.identifier=function(a){var b;return a?(b=a.querySelector("metadata"),b?this.getElementText(b,"identifier"):void console.error("No Metadata Found")):void console.error("Package File Not Found")},EPUBJS.Parser.prototype.packageContents=function(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=this;return b&&(this.baseUrl=b),a?(c=a.querySelector("metadata"))?(d=a.querySelector("manifest"))?(e=a.querySelector("spine"))?(f=n.manifest(d),g=n.findNavPath(d),h=n.findTocPath(d,e),i=n.findCoverPath(d),j=Array.prototype.indexOf.call(e.parentNode.childNodes,e),k=n.spine(e,f),l={},k.forEach(function(a){l[a.href]=a.index}),m=n.metadata(c),m.direction=e.getAttribute("page-progression-direction"),{metadata:m,spine:k,manifest:f,navPath:g,tocPath:h,coverPath:i,spineNodeIndex:j,spineIndexByURL:l}):void console.error("No Spine Found"):void console.error("No Manifest Found"):void console.error("No Metadata Found"):void console.error("Package File Not Found")},EPUBJS.Parser.prototype.findNavPath=function(a){var b=a.querySelector("item[properties$='nav'], item[properties^='nav '], item[properties*=' nav ']");return b?b.getAttribute("href"):!1},EPUBJS.Parser.prototype.findTocPath=function(a,b){var c,d=a.querySelector("item[media-type='application/x-dtbncx+xml']");return d||(c=b.getAttribute("toc"),c&&(d=a.querySelector("item[id='"+c+"']"))),d?d.getAttribute("href"):!1},EPUBJS.Parser.prototype.findCoverPath=function(a){var b=a.querySelector("item[properties='cover-image']");return b?b.getAttribute("href"):!1},EPUBJS.Parser.prototype.metadata=function(a){var b={},c=this;return b.bookTitle=c.getElementText(a,"title"),b.creator=c.getElementText(a,"creator"),b.description=c.getElementText(a,"description"),b.pubdate=c.getElementText(a,"date"),b.publisher=c.getElementText(a,"publisher"),b.identifier=c.getElementText(a,"identifier"),b.language=c.getElementText(a,"language"),b.rights=c.getElementText(a,"rights"),b.modified_date=c.querySelectorText(a,"meta[property='dcterms:modified']"),b.layout=c.querySelectorText(a,"meta[property='rendition:layout']"),b.orientation=c.querySelectorText(a,"meta[property='rendition:orientation']"),b.spread=c.querySelectorText(a,"meta[property='rendition:spread']"),b},EPUBJS.Parser.prototype.getElementText=function(a,b){var c,d=a.getElementsByTagNameNS("http://purl.org/dc/elements/1.1/",b);return d&&0!==d.length?(c=d[0],c.childNodes.length?c.childNodes[0].nodeValue:""):""},EPUBJS.Parser.prototype.querySelectorText=function(a,b){var c=a.querySelector(b);return c&&c.childNodes.length?c.childNodes[0].nodeValue:""},EPUBJS.Parser.prototype.manifest=function(a){var b=this.baseUrl,c={},d=a.querySelectorAll("item"),e=Array.prototype.slice.call(d);return e.forEach(function(a){var d=a.getAttribute("id"),e=a.getAttribute("href")||"",f=a.getAttribute("media-type")||"",g=a.getAttribute("properties")||"";c[d]={href:e,url:b+e,type:f,properties:g}}),c},EPUBJS.Parser.prototype.spine=function(a,b){var c=[],d=a.getElementsByTagName("itemref"),e=Array.prototype.slice.call(d),f=Array.prototype.indexOf.call(a.parentNode.childNodes,a),g=new EPUBJS.EpubCFI;return e.forEach(function(a,d){var e=a.getAttribute("idref"),h=g.generateChapterComponent(f,d,e),i=a.getAttribute("properties")||"",j=i.length?i.split(" "):[],k=b[e].properties,l=k.length?k.split(" "):[],m={id:e,linear:a.getAttribute("linear")||"",properties:j,manifestProperties:l,href:b[e].href,url:b[e].url,index:d,cfiBase:h,cfi:"epubcfi("+h+")"};c.push(m)}),c},EPUBJS.Parser.prototype.querySelectorByType=function(a,b,c){var d=a.querySelector(b+'[*|type="'+c+'"]');if(0!==d.length)return d;d=a.querySelectorAll(b);for(var e=0;ed;++d)e=this.navItem(h[d],b,c),j[e.id]=e,e.parent?(f=j[e.parent],f.subitems.push(e)):k.push(e);return k},EPUBJS.Parser.prototype.navItem=function(a,b,c){var d,e=a.getAttribute("id")||!1,f=a.querySelector("a, span"),g=f.getAttribute("href")||"",h=f.textContent||"",i=g.split("#"),j=i[0],k=b[j],l=c[k],m=[],n=a.parentNode,o=l?l.cfi:"";return n&&"navPoint"===n.nodeName&&(d=n.getAttribute("id")),e||(k?(l=c[k],e=l.id,o=l.cfi):(e="epubjs-autogen-toc-id-"+EPUBJS.core.uuid(),a.setAttribute("id",e))),{id:e,href:g,label:h,spinePos:k,subitems:m,parent:d,cfi:o}},EPUBJS.Parser.prototype.toc=function(a,b,c){var d,e,f,g=a.querySelectorAll("navMap navPoint"),h=g.length,i={},j=[];if(!g||0===h)return j; +for(d=0;h>d;++d)e=this.tocItem(g[d],b,c),i[e.id]=e,e.parent?(f=i[e.parent],f.subitems.push(e)):j.push(e);return j},EPUBJS.Parser.prototype.tocItem=function(a,b,c){var d,e=a.getAttribute("id")||!1,f=a.querySelector("content"),g=f.getAttribute("src"),h=a.querySelector("navLabel"),i=h.textContent?h.textContent:"",j=g.split("#"),k=j[0],l=b[k],m=c[l],n=[],o=a.parentNode,p=m?m.cfi:"";return o&&"navPoint"===o.nodeName&&(d=o.getAttribute("id")),e||(l?(m=c[l],e=m.id,p=m.cfi):(e="epubjs-autogen-toc-id-"+EPUBJS.core.uuid(),a.setAttribute("id",e))),{id:e,href:g,label:i,spinePos:l,subitems:n,parent:d,cfi:p}},EPUBJS.Parser.prototype.pageList=function(a,b,c){var d,e,f=this.querySelectorByType(a,"nav","page-list"),g=f?f.querySelectorAll("ol li"):[],h=g.length,i=[];if(!g||0===h)return i;for(d=0;h>d;++d)e=this.pageListItem(g[d],b,c),i.push(e);return i},EPUBJS.Parser.prototype.pageListItem=function(a){var b,c,d,e=(a.getAttribute("id")||!1,a.querySelector("a")),f=e.getAttribute("href")||"",g=e.textContent||"",h=parseInt(g),i=f.indexOf("epubcfi");return-1!=i?(b=f.split("#"),c=b[0],d=b.length>1?b[1]:!1,{cfi:d,href:f,packageUrl:c,page:h}):{href:f,page:h}},EPUBJS.Render.Iframe=function(){this.iframe=null,this.document=null,this.window=null,this.docEl=null,this.bodyEl=null,this.leftPos=0,this.pageWidth=0},EPUBJS.Render.Iframe.prototype.create=function(){return this.iframe=document.createElement("iframe"),this.iframe.id="epubjs-iframe:"+EPUBJS.core.uuid(),this.iframe.scrolling="no",this.iframe.seamless="seamless",this.iframe.style.border="none",this.iframe.addEventListener("load",this.loaded.bind(this),!1),this.isMobile=navigator.userAgent.match(/(iPad|iPhone|iPod|Mobile|Android)/g),this.transform=EPUBJS.core.prefixed("transform"),this.iframe},EPUBJS.Render.Iframe.prototype.load=function(a){var b=this,c=new RSVP.defer;return this.window&&this.unload(),this.iframe.onload=function(){b.document=b.iframe.contentDocument,b.docEl=b.document.documentElement,b.headEl=b.document.head,b.bodyEl=b.document.body||b.document.querySelector("body"),b.window=b.iframe.contentWindow,b.window.addEventListener("resize",b.resized.bind(b),!1),b.leftPos=0,b.setLeft(0),b.bodyEl&&(b.bodyEl.style.margin="0"),"rtl"==b.direction&&"rtl"!=b.docEl.dir&&(b.docEl.dir="rtl",b.docEl.style.position="absolute",b.docEl.style.right="0"),c.resolve(b.docEl)},this.iframe.onerror=function(a){c.reject({message:"Error Loading Contents: "+a,stack:(new Error).stack})},this.document=this.iframe.contentDocument,this.document?(this.document.open(),this.document.write(a),this.document.close(),c.promise):(c.reject(new Error("No Document Available")),c)},EPUBJS.Render.Iframe.prototype.loaded=function(){var a,b,c=this.iframe.contentWindow.location.href;this.document=this.iframe.contentDocument,this.docEl=this.document.documentElement,this.headEl=this.document.head,this.bodyEl=this.document.body||this.document.querySelector("body"),this.window=this.iframe.contentWindow,"about:blank"!=c&&(a=this.iframe.contentDocument.querySelector("base"),b=a.getAttribute("href"),this.trigger("render:loaded",b))},EPUBJS.Render.Iframe.prototype.resize=function(a,b){this.iframe&&(this.iframe.height=b,isNaN(a)||a%2===0||(a+=1),this.iframe.width=a,this.width=this.iframe.getBoundingClientRect().width||a,this.height=this.iframe.getBoundingClientRect().height||b)},EPUBJS.Render.Iframe.prototype.resized=function(){this.width=this.iframe.getBoundingClientRect().width,this.height=this.iframe.getBoundingClientRect().height},EPUBJS.Render.Iframe.prototype.totalWidth=function(){return this.docEl.scrollWidth},EPUBJS.Render.Iframe.prototype.totalHeight=function(){return this.docEl.scrollHeight},EPUBJS.Render.Iframe.prototype.setPageDimensions=function(a,b){this.pageWidth=a,this.pageHeight=b},EPUBJS.Render.Iframe.prototype.setDirection=function(a){this.direction=a,this.docEl&&"rtl"==this.docEl.dir&&(this.docEl.dir="rtl",this.docEl.style.position="static",this.docEl.style.right="auto")},EPUBJS.Render.Iframe.prototype.setLeft=function(a){this.isMobile?this.docEl.style[this.transform]="translate("+-a+"px, 0)":this.document.defaultView.scrollTo(a,0)},EPUBJS.Render.Iframe.prototype.setStyle=function(a,b,c){c&&(a=EPUBJS.core.prefixed(a)),this.bodyEl&&(this.bodyEl.style[a]=b)},EPUBJS.Render.Iframe.prototype.removeStyle=function(a){this.bodyEl&&(this.bodyEl.style[a]="")},EPUBJS.Render.Iframe.prototype.addHeadTag=function(a,b,c){var d=c||this.document,e=d.createElement(a),f=d.head;for(var g in b)e.setAttribute(g,b[g]);f&&f.insertBefore(e,f.firstChild)},EPUBJS.Render.Iframe.prototype.page=function(a){this.leftPos=this.pageWidth*(a-1),"rtl"===this.direction&&(this.leftPos=-1*this.leftPos),this.setLeft(this.leftPos)},EPUBJS.Render.Iframe.prototype.getPageNumberByElement=function(a){var b,c;if(a)return b=this.leftPos+a.getBoundingClientRect().left,c=Math.floor(b/this.pageWidth)+1},EPUBJS.Render.Iframe.prototype.getPageNumberByRect=function(a){var b,c;return b=this.leftPos+a.left,c=Math.floor(b/this.pageWidth)+1},EPUBJS.Render.Iframe.prototype.getBaseElement=function(){return this.bodyEl},EPUBJS.Render.Iframe.prototype.getDocumentElement=function(){return this.docEl},EPUBJS.Render.Iframe.prototype.isElementVisible=function(a){var b,c;return a&&"function"==typeof a.getBoundingClientRect&&(b=a.getBoundingClientRect(),c=b.left,0!==b.width&&0!==b.height&&c>=0&&c=1&&a<=this.displayedPages?(this.chapterPos=a,this.render.page(a),this.visibleRangeCfi=this.getVisibleRangeCfi(),this.currentLocationCfi=this.visibleRangeCfi.start,this.trigger("renderer:locationChanged",this.currentLocationCfi),this.trigger("renderer:visibleRangeChanged",this.visibleRangeCfi),!0):!1:(console.warn("pageMap not set, queuing"),this._q.enqueue("page",arguments),!0)},EPUBJS.Renderer.prototype.nextPage=function(){return this.page(this.chapterPos+1)},EPUBJS.Renderer.prototype.prevPage=function(){return this.page(this.chapterPos-1)},EPUBJS.Renderer.prototype.pageByElement=function(a){var b;a&&(b=this.render.getPageNumberByElement(a),this.page(b))},EPUBJS.Renderer.prototype.lastPage=function(){return this._moving?this._q.enqueue("lastPage",arguments):void this.page(this.displayedPages)},EPUBJS.Renderer.prototype.firstPage=function(){return this._moving?this._q.enqueue("firstPage",arguments):void this.page(1)},EPUBJS.Renderer.prototype.section=function(a){var b=this.doc.getElementById(a);b&&this.pageByElement(b)},EPUBJS.Renderer.prototype.firstElementisTextNode=function(a){var b=a.childNodes,c=b.length;return c&&b[0]&&3===b[0].nodeType&&b[0].textContent.trim().length?!0:!1},EPUBJS.Renderer.prototype.isGoodNode=function(a){var b=["audio","canvas","embed","iframe","img","math","object","svg","video"];return-1!==b.indexOf(a.tagName.toLowerCase())?!0:this.firstElementisTextNode(a)},EPUBJS.Renderer.prototype.walk=function(a,b,c){for(var d,e,f,g,h=a,i=[h],j=1e4,k=0;!d&&i.length;){if(a=i.shift(),this.containsPoint(a,b,c)&&this.isGoodNode(a)&&(d=a),!d&&a&&a.childElementCount>0){if(e=a.children,!e||!e.length)return d;f=e.length?e.length:0;for(var l=f-1;l>=0;l--)e[l]!=g&&i.unshift(e[l])}if(!d&&0===i.length&&h&&null!==h.parentNode&&(i.push(h.parentNode),g=h,h=h.parentNode),k++,k>j){console.error("ENDLESS LOOP");break}}return d},EPUBJS.Renderer.prototype.containsPoint=function(a,b){var c;return a&&"function"==typeof a.getBoundingClientRect&&(c=a.getBoundingClientRect(),0!==c.width&&0!==c.height&&c.left>=b&&b<=c.left+c.width)?!0:!1},EPUBJS.Renderer.prototype.textSprint=function(a,b){for(var c,d=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,{acceptNode:function(a){return/^\s*$/.test(a.data)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}},!1);c=d.nextNode();)b(c)},EPUBJS.Renderer.prototype.sprint=function(a,b){for(var c,d=document.createTreeWalker(a,NodeFilter.SHOW_ELEMENT,null,!1);c=d.nextNode();)b(c)},EPUBJS.Renderer.prototype.mapPage=function(){var a,b,c=this,d=[],e=this.render.getBaseElement(),f=1,g=this.layout.colWidth+this.layout.gap,h=this.formated.pageWidth*(this.chapterPos-1),i=g*f-h,j=0,k=function(a){var b,c,d=Array.prototype.slice.call(a.childNodes);if(a.nodeType==Node.ELEMENT_NODE){if(c=document.createRange(),c.selectNodeContents(a),b=c.getBoundingClientRect(),!b||0===b.width&&0===b.height)return;b.left>j&&d.forEach(function(a){a.nodeType==Node.TEXT_NODE&&a.textContent.trim().length&&l(a)}),b.right>j&&d.forEach(function(a){a.nodeType==Node.TEXT_NODE&&a.textContent.trim().length&&l(a)})}},l=function(e){var k=c.splitTextNodeIntoWordsRanges(e);k.forEach(function(e){var k=e.getBoundingClientRect();!k||0===k.width&&0===k.height||(k.left+k.width0&&(b&&(b.setEnd(a,pos),c.push(b)),b=this.doc.createRange(),b.setStart(a,pos+1));return b&&(b.setEnd(a,d.length),c.push(b)),c},EPUBJS.Renderer.prototype.rangePosition=function(a){var b,c;return c=a.getClientRects(),c.length?b=c[0]:null},EPUBJS.Renderer.prototype.getPageCfi=function(){var a;return this.spreads?(a=2*this.chapterPos,startRange=this.pageMap[a-2]):(a=this.chapterPos,startRange=this.pageMap[a-1]),this.pageMap[2*this.chapterPos-1].start},EPUBJS.Renderer.prototype.getRange=function(a,b,c){var d,e=this.doc.createRange();return c=!0,"undefined"==typeof document.caretPositionFromPoint||c?"undefined"==typeof document.caretRangeFromPoint||c?(this.visibileEl=this.findElementAfter(a,b),e.setStart(this.visibileEl,1)):e=this.doc.caretRangeFromPoint(a,b):(d=this.doc.caretPositionFromPoint(a,b),e.setStart(d.offsetNode,d.offset)),e},EPUBJS.Renderer.prototype.pagesInCurrentChapter=function(){var a,b;return this.pageMap?(b=this.pageMap.length,a=this.spreads?Math.ceil(b/2):b):(console.warn("page map not loaded"),!1)},EPUBJS.Renderer.prototype.currentRenderedPage=function(){var a;return this.pageMap?a=this.spreads&&this.layout.pageCount>1?2*this.chapterPos:this.chapterPos:(console.warn("page map not loaded"),!1)},EPUBJS.Renderer.prototype.getRenderedPagesLeft=function(){var a,b,c;return this.pageMap?(b=this.pageMap.length,a=this.spreads?2*this.chapterPos:this.chapterPos,c=b-a):(console.warn("page map not loaded"),!1)},EPUBJS.Renderer.prototype.getVisibleRangeCfi=function(){var a,b,c;return this.pageMap?(this.spreads?(a=2*this.chapterPos,b=this.pageMap[a-2],c=b,this.layout.pageCount>1&&(c=this.pageMap[a-1])):(a=this.chapterPos,b=this.pageMap[a-1],c=b),b||(console.warn("page range miss:",a,this.pageMap),b=this.pageMap[this.pageMap.length-1],c=b),{start:b.start,end:c.end}):(console.warn("page map not loaded"),!1)},EPUBJS.Renderer.prototype.gotoCfi=function(a){var b,c,d;if(this._moving)return this._q.enqueue("gotoCfi",arguments);if(EPUBJS.core.isString(a)&&(a=this.epubcfi.parse(a)),"undefined"==typeof document.evaluate)c=this.epubcfi.addMarker(a,this.doc),c&&(b=this.render.getPageNumberByElement(c),this.epubcfi.removeMarker(c,this.doc),this.page(b));else if(d=this.epubcfi.generateRangeFromCfi(a,this.doc)){var e=d.getBoundingClientRect();b=e?this.render.getPageNumberByRect(e):1,this.page(b),this.currentLocationCfi=a.str}else this.page(1)},EPUBJS.Renderer.prototype.findFirstVisible=function(a){var b,c=a||this.render.getBaseElement();return b=this.walk(c,0,0),b?b:a},EPUBJS.Renderer.prototype.findElementAfter=function(a,b,c){var d,e=c||this.render.getBaseElement();return d=this.walk(e,a,b),d?d:e},EPUBJS.Renderer.prototype.resize=function(a,b,c){this.width=a,this.height=b,c!==!1&&this.render.resize(this.width,this.height),this.contents&&this.reformat(),this.trigger("renderer:resized",{width:this.width,height:this.height})},EPUBJS.Renderer.prototype.onResized=function(){var a=this.container.clientWidth,b=this.container.clientHeight;this.resize(a,b,!1)},EPUBJS.Renderer.prototype.addEventListeners=function(){this.render.document&&this.listenedEvents.forEach(function(a){this.render.document.addEventListener(a,this.triggerEvent.bind(this),!1)},this)},EPUBJS.Renderer.prototype.removeEventListeners=function(){this.render.document&&this.listenedEvents.forEach(function(a){this.render.document.removeEventListener(a,this.triggerEvent,!1)},this)},EPUBJS.Renderer.prototype.triggerEvent=function(a){this.trigger("renderer:"+a.type,a)},EPUBJS.Renderer.prototype.addSelectionListeners=function(){this.render.document.addEventListener("selectionchange",this.onSelectionChange.bind(this),!1)},EPUBJS.Renderer.prototype.removeSelectionListeners=function(){this.render.document&&this.doc.removeEventListener("selectionchange",this.onSelectionChange,!1)},EPUBJS.Renderer.prototype.onSelectionChange=function(){this.selectionEndTimeout&&clearTimeout(this.selectionEndTimeout),this.selectionEndTimeout=setTimeout(function(){this.selectedRange=this.render.window.getSelection(),this.trigger("renderer:selected",this.selectedRange)}.bind(this),500)},EPUBJS.Renderer.prototype.setMinSpreadWidth=function(a){this.minSpreadWidth=a,this.spreads=this.determineSpreads(a)},EPUBJS.Renderer.prototype.determineSpreads=function(a){return this.isForcedSingle||!a||this.width=g&&c&&c(!0),e=!0)};b(a,f)}.bind(this))},RSVP.EventTarget.mixin(EPUBJS.Renderer.prototype);var EPUBJS=EPUBJS||{};EPUBJS.replace={},EPUBJS.replace.hrefs=function(a,b){var c=this,d=function(a,d){var e,f,g=a.getAttribute("href"),h=g.search("://");if(-1!=h)a.setAttribute("target","_blank");else{var i=EPUBJS.core.uri(b.render.window.location.href);e=i.directory,f=e?"file"===i.protocol?EPUBJS.core.resolveUrl(i.base,g):EPUBJS.core.resolveUrl(e,g):g,a.onclick=function(){return c.goto(f),!1}}d()};b.replace("a[href]",d,a)},EPUBJS.replace.head=function(a,b){b.replaceWithStored("link[href]","href",EPUBJS.replace.links,a)},EPUBJS.replace.resources=function(a,b){b.replaceWithStored("[src]","src",EPUBJS.replace.srcs,a)},EPUBJS.replace.svg=function(a,b){b.replaceWithStored("svg image","xlink:href",function(a,b,c){a.getUrl(b).then(c)},a)},EPUBJS.replace.srcs=function(a,b,c){a.getUrl(b).then(c)},EPUBJS.replace.links=function(a,b,c,d){"stylesheet"===d.getAttribute("rel")?EPUBJS.replace.stylesheets(a,b).then(function(a,b){c(a,b)},function(){c(null)}):a.getUrl(b).then(c,function(){c(null)})},EPUBJS.replace.stylesheets=function(a,b){var c=new RSVP.defer;if(a)return a.getText(b).then(function(d){EPUBJS.replace.cssUrls(a,b,d).then(function(a){var b=window.URL||window.webkitURL||window.mozURL,d=new Blob([a],{type:"text/css"}),e=b.createObjectURL(d);c.resolve(e)},function(a){c.reject(a)})},function(a){c.reject(a)}),c.promise},EPUBJS.replace.cssUrls=function(a,b,c){var d=new RSVP.defer,e=[],f=c.match(/url\(\'?\"?([^\'|^\"^\)]*)\'?\"?\)/g);if(a)return f?(f.forEach(function(f){var g=EPUBJS.core.resolveUrl(b,f.replace(/url\(|[|\)|\'|\"]/g,"")),h=a.getUrl(g).then(function(a){c=c.replace(f,'url("'+a+'")')},function(a){d.reject(a)});e.push(h)}),RSVP.all(e).then(function(){d.resolve(c)}),d.promise):(d.resolve(c),d.promise)},EPUBJS.Storage=function(a){this.checkRequirements(),this.urlCache={},this.withCredentials=a,this.URL=window.URL||window.webkitURL||window.mozURL,this.offline=!1},EPUBJS.Storage.prototype.checkRequirements=function(){"undefined"==typeof localforage&&console.error("localForage library not loaded")},EPUBJS.Storage.prototype.put=function(a){var b=new RSVP.defer,c=a.length,d=0,e=function(b){var f,g,h=b||new RSVP.defer;return d>=c?h.resolve():(f=a[d].url,g=window.encodeURIComponent(f),EPUBJS.core.request(f,"binary").then(function(a){return localforage.setItem(g,a)}).then(function(){d++,setTimeout(function(){e(h)},1)})),h.promise}.bind(this);return Array.isArray(a)||(a=[a]),e().then(function(){b.resolve()}.bind(this)),b.promise},EPUBJS.Storage.prototype.token=function(a,b){var c=window.encodeURIComponent(a);return localforage.setItem(c,b).then(function(a){return null===a?!1:!0})},EPUBJS.Storage.prototype.isStored=function(a){var b=window.encodeURIComponent(a);return localforage.getItem(b).then(function(a){return null===a?!1:!0})},EPUBJS.Storage.prototype.getText=function(a){var b=window.encodeURIComponent(a);return EPUBJS.core.request(a,"arraybuffer",this.withCredentials).then(function(a){return this.offline&&(this.offline=!1,this.trigger("offline",!1)),localforage.setItem(b,a),a}.bind(this)).then(function(b){var c=new RSVP.defer,d=EPUBJS.core.getMimeType(a),e=new Blob([b],{type:d}),f=new FileReader;return f.addEventListener("loadend",function(){c.resolve(f.result)}),f.readAsText(e,d),c.promise}).catch(function(){var c=new RSVP.defer,d=localforage.getItem(b);return this.offline||(this.offline=!0,this.trigger("offline",!0)),d?(d.then(function(b){var d=EPUBJS.core.getMimeType(a),e=new Blob([b],{type:d}),f=new FileReader;f.addEventListener("loadend",function(){c.resolve(f.result)}),f.readAsText(e,d)}),c.promise):(c.reject({message:"File not found in the storage: "+a,stack:(new Error).stack}),c.promise)}.bind(this))},EPUBJS.Storage.prototype.getUrl=function(a){var b=window.encodeURIComponent(a);return EPUBJS.core.request(a,"arraybuffer",this.withCredentials).then(function(c){return this.offline&&(this.offline=!1,this.trigger("offline",!1)),localforage.setItem(b,c),a}.bind(this)).catch(function(){var c,d,e=new RSVP.defer,f=window.URL||window.webkitURL||window.mozURL;return this.offline||(this.offline=!0,this.trigger("offline",!0)),b in this.urlCache?(e.resolve(this.urlCache[b]),e.promise):(c=localforage.getItem(b))?(c.then(function(c){var g=new Blob([c],{type:EPUBJS.core.getMimeType(a)});d=f.createObjectURL(g),e.resolve(d),this.urlCache[b]=d}.bind(this)),e.promise):(e.reject({message:"File not found in the storage: "+a,stack:(new Error).stack}),e.promise)}.bind(this))},EPUBJS.Storage.prototype.getXml=function(a){var b=window.encodeURIComponent(a);return EPUBJS.core.request(a,"arraybuffer",this.withCredentials).then(function(a){return this.offline&&(this.offline=!1,this.trigger("offline",!1)),localforage.setItem(b,a),a}.bind(this)).then(function(b){var c=new RSVP.defer,d=EPUBJS.core.getMimeType(a),e=new Blob([b],{type:d}),f=new FileReader;return f.addEventListener("loadend",function(){var a=new DOMParser,b=a.parseFromString(f.result,"text/xml");c.resolve(b)}),f.readAsText(e,d),c.promise}).catch(function(){var c=new RSVP.defer,d=localforage.getItem(b);return this.offline||(this.offline=!0,this.trigger("offline",!0)),d?(d.then(function(b){var d=EPUBJS.core.getMimeType(a),e=new Blob([b],{type:d}),f=new FileReader;f.addEventListener("loadend",function(){var a=new DOMParser,b=a.parseFromString(f.result,"text/xml");c.resolve(b)}),f.readAsText(e,d)}),c.promise):(c.reject({message:"File not found in the storage: "+a,stack:(new Error).stack}),c.promise)}.bind(this))},EPUBJS.Storage.prototype.revokeUrl=function(a){var b=window.URL||window.webkitURL||window.mozURL,c=this.urlCache[a];c&&b.revokeObjectURL(c)},EPUBJS.Storage.prototype.failed=function(a){console.error(a)},RSVP.EventTarget.mixin(EPUBJS.Storage.prototype),EPUBJS.Unarchiver=function(){this.checkRequirements(),this.urlCache={}},EPUBJS.Unarchiver.prototype.checkRequirements=function(){"undefined"==typeof JSZip&&console.error("JSZip lib not loaded")},EPUBJS.Unarchiver.prototype.open=function(a){if(a instanceof ArrayBuffer){this.zip=new JSZip(a);var b=new RSVP.defer;return b.resolve(),b.promise}return EPUBJS.core.request(a,"binary").then(function(a){this.zip=new JSZip(a)}.bind(this))},EPUBJS.Unarchiver.prototype.getXml=function(a,b){var c=window.decodeURIComponent(a);return this.getText(c,b).then(function(b){var c=new DOMParser,d=EPUBJS.core.getMimeType(a);return c.parseFromString(b,d)})},EPUBJS.Unarchiver.prototype.getUrl=function(a){var b,c,d=this,e=new RSVP.defer,f=window.decodeURIComponent(a),g=this.zip.file(f),h=window.URL||window.webkitURL||window.mozURL;return g?a in this.urlCache?(e.resolve(this.urlCache[a]),e.promise):(c=new Blob([g.asUint8Array()],{type:EPUBJS.core.getMimeType(g.name)}),b=h.createObjectURL(c),e.resolve(b),d.urlCache[a]=b,e.promise):(e.reject({message:"File not found in the epub: "+a,stack:(new Error).stack}),e.promise)},EPUBJS.Unarchiver.prototype.getText=function(a){var b,c=new RSVP.defer,d=window.decodeURIComponent(a),e=this.zip.file(d);return e?(b=e.asText(),c.resolve(b),c.promise):(c.reject({message:"File not found in the epub: "+a,stack:(new Error).stack}),c.promise)},EPUBJS.Unarchiver.prototype.revokeUrl=function(a){var b=window.URL||window.webkitURL||window.mozURL,c=this.urlCache[a];c&&b.revokeObjectURL(c)},EPUBJS.Unarchiver.prototype.failed=function(a){console.error(a)},EPUBJS.Unarchiver.prototype.afterSaved=function(){this.callback()},EPUBJS.Unarchiver.prototype.toStorage=function(a){function b(){f--,0===f&&e.afterSaved()}var c=0,d=20,e=this,f=a.length;a.forEach(function(a){setTimeout(function(a){e.saveEntryFileToStorage(a,b)},c,a),c+=d}),console.log("time",c)},function(){"use strict";var a={application:{ecmascript:["es","ecma"],javascript:"js",ogg:"ogx",pdf:"pdf",postscript:["ps","ai","eps","epsi","epsf","eps2","eps3"],"rdf+xml":"rdf",smil:["smi","smil"],"xhtml+xml":["xhtml","xht"],xml:["xml","xsl","xsd","opf"],zip:"zip","x-httpd-eruby":"rhtml","x-latex":"latex","x-maker":["frm","maker","frame","fm","fb","book","fbdoc"],"x-object":"o","x-shockwave-flash":["swf","swfl"],"x-silverlight":"scr","epub+zip":"epub","font-tdpfr":"pfr","inkml+xml":["ink","inkml"],json:"json","jsonml+json":"jsonml","mathml+xml":"mathml","metalink+xml":"metalink",mp4:"mp4s","omdoc+xml":"omdoc",oxps:"oxps","vnd.amazon.ebook":"azw",widget:"wgt","x-dtbncx+xml":"ncx","x-dtbook+xml":"dtb","x-dtbresource+xml":"res","x-font-bdf":"bdf","x-font-ghostscript":"gsf","x-font-linux-psf":"psf","x-font-otf":"otf","x-font-pcf":"pcf","x-font-snf":"snf","x-font-ttf":["ttf","ttc"],"x-font-type1":["pfa","pfb","pfm","afm"],"x-font-woff":"woff","x-mobipocket-ebook":["prc","mobi"],"x-mspublisher":"pub","x-nzb":"nzb","x-tgif":"obj","xaml+xml":"xaml","xml-dtd":"dtd","xproc+xml":"xpl","xslt+xml":"xslt","internet-property-stream":"acx","x-compress":"z","x-compressed":"tgz","x-gzip":"gz"},audio:{flac:"flac",midi:["mid","midi","kar","rmi"],mpeg:["mpga","mpega","mp2","mp3","m4a","mp2a","m2a","m3a"],mpegurl:"m3u",ogg:["oga","ogg","spx"],"x-aiff":["aif","aiff","aifc"],"x-ms-wma":"wma","x-wav":"wav",adpcm:"adp",mp4:"mp4a",webm:"weba","x-aac":"aac","x-caf":"caf","x-matroska":"mka","x-pn-realaudio-plugin":"rmp",xm:"xm",mid:["mid","rmi"]},image:{gif:"gif",ief:"ief",jpeg:["jpeg","jpg","jpe"],pcx:"pcx",png:"png","svg+xml":["svg","svgz"],tiff:["tiff","tif"],"x-icon":"ico",bmp:"bmp",webp:"webp","x-pict":["pic","pct"],"x-tga":"tga","cis-cod":"cod"},message:{rfc822:["eml","mime","mht","mhtml","nws"]},text:{"cache-manifest":["manifest","appcache"],calendar:["ics","icz","ifb"],css:"css",csv:"csv",h323:"323",html:["html","htm","shtml","stm"],iuls:"uls",mathml:"mml",plain:["txt","text","brf","conf","def","list","log","in","bas"],richtext:"rtx","tab-separated-values":"tsv","x-bibtex":"bib","x-dsrc":"d","x-diff":["diff","patch"],"x-haskell":"hs","x-java":"java","x-literate-haskell":"lhs","x-moc":"moc","x-pascal":["p","pas"],"x-pcs-gcd":"gcd","x-perl":["pl","pm"],"x-python":"py","x-scala":"scala","x-setext":"etx","x-tcl":["tcl","tk"],"x-tex":["tex","ltx","sty","cls"],"x-vcard":"vcf",sgml:["sgml","sgm"],"x-c":["c","cc","cxx","cpp","h","hh","dic"],"x-fortran":["f","for","f77","f90"],"x-opml":"opml","x-nfo":"nfo","x-sfv":"sfv","x-uuencode":"uu",webviewhtml:"htt"},video:{mpeg:["mpeg","mpg","mpe","m1v","m2v","mp2","mpa","mpv2"],mp4:["mp4","mp4v","mpg4"],quicktime:["qt","mov"],ogg:"ogv","vnd.mpegurl":["mxu","m4u"],"x-flv":"flv","x-la-asf":["lsf","lsx"],"x-mng":"mng","x-ms-asf":["asf","asx","asr"],"x-ms-wm":"wm","x-ms-wmv":"wmv","x-ms-wmx":"wmx","x-ms-wvx":"wvx","x-msvideo":"avi","x-sgi-movie":"movie","x-matroska":["mpv","mkv","mk3d","mks"],"3gpp2":"3g2",h261:"h261",h263:"h263",h264:"h264",jpeg:"jpgv",jpm:["jpm","jpgm"],mj2:["mj2","mjp2"],"vnd.ms-playready.media.pyv":"pyv","vnd.uvvu.mp4":["uvu","uvvu"],"vnd.vivo":"viv",webm:"webm","x-f4v":"f4v","x-m4v":"m4v","x-ms-vob":"vob","x-smv":"smv"}},b=function(){var b,c,d,e,f={};for(b in a)if(a.hasOwnProperty(b))for(c in a[b])if(a[b].hasOwnProperty(c))if(d=a[b][c],"string"==typeof d)f[d]=b+"/"+c;else for(e=0;e-1||(this.settings.bookmarks.push(a),this.trigger("reader:bookmarked",a))},EPUBJS.Reader.prototype.removeBookmark=function(a){var b=this.isBookmarked(a);-1!==b&&(this.settings.bookmarks.splice(b,1),this.trigger("reader:unbookmarked",b))},EPUBJS.Reader.prototype.isBookmarked=function(a){var b=this.settings.bookmarks;return b.indexOf(a)},EPUBJS.Reader.prototype.clearBookmarks=function(){this.settings.bookmarks=[]},EPUBJS.Reader.prototype.addNote=function(a){this.settings.annotations.push(a)},EPUBJS.Reader.prototype.removeNote=function(a){var b=this.settings.annotations.indexOf(a);-1!==b&&delete this.settings.annotations[b]},EPUBJS.Reader.prototype.clearNotes=function(){this.settings.annotations=[]},EPUBJS.Reader.prototype.setBookKey=function(a){return this.settings.bookKey||(this.settings.bookKey="epubjsreader:"+EPUBJS.VERSION+":"+window.location.host+":"+a),this.settings.bookKey},EPUBJS.Reader.prototype.isSaved=function(a){var b;return localStorage?(b=localStorage.getItem(this.settings.bookKey),null===b?!1:!0):!1},EPUBJS.Reader.prototype.removeSavedSettings=function(){return localStorage?void localStorage.removeItem(this.settings.bookKey):!1},EPUBJS.Reader.prototype.applySavedSettings=function(){var a;if(!localStorage)return!1;try{a=JSON.parse(localStorage.getItem(this.settings.bookKey))}catch(b){return!1}return a?(a.styles&&(this.settings.styles=EPUBJS.core.defaults(this.settings.styles||{},a.styles)),this.settings=EPUBJS.core.defaults(this.settings,a),!0):!1},EPUBJS.Reader.prototype.saveSettings=function(){return this.book&&(this.settings.previousLocationCfi=this.book.getCurrentLocationCfi()),localStorage?void localStorage.setItem(this.settings.bookKey,JSON.stringify(this.settings)):!1},EPUBJS.Reader.prototype.unload=function(){this.settings.restore&&localStorage&&this.saveSettings()},EPUBJS.Reader.prototype.hashChanged=function(){var a=window.location.hash.slice(1);this.book["goto"](a)},EPUBJS.Reader.prototype.selectedRange=function(a){var b=new EPUBJS.EpubCFI,c=b.generateCfiFromRangeAnchor(a,this.book.renderer.currentChapter.cfiBase),d="#"+c;this.settings.history&&window.location.hash!=d&&(history.pushState({},"",d),this.currentLocationCfi=c)},RSVP.EventTarget.mixin(EPUBJS.Reader.prototype),EPUBJS.reader.BookmarksController=function(){var a=this.book,b=$("#bookmarksView"),c=b.find("#bookmarks"),d=document.createDocumentFragment(),e=function(){b.show()},f=function(){b.hide()},g=0,h=function(b){var c=document.createElement("li"),d=document.createElement("a");return c.id="bookmark-"+g,c.classList.add("list_item"),d.textContent=b,d.href=b,d.classList.add("bookmark_link"),d.addEventListener("click",function(b){var c=this.getAttribute("href");a.gotoCfi(c),b.preventDefault()},!1),c.appendChild(d),g++,c};return this.settings.bookmarks.forEach(function(a){var b=h(a);d.appendChild(b)}),c.append(d),this.on("reader:bookmarked",function(a){var b=h(a);c.append(b)}),this.on("reader:unbookmarked",function(a){var b=$("#bookmark-"+a);b.remove()}),{show:e,hide:f}},EPUBJS.reader.ControlsController=function(a){var b=this,c=($("#store"),$("#fullscreen")),d=($("#fullscreenicon"),$("#cancelfullscreenicon"),$("#slider")),e=($("#main"),$("#sidebar"),$("#setting")),f=$("#bookmark"),g=function(){b.offline=!1},h=function(){b.offline=!0},i=!1;return a.on("book:online",g),a.on("book:offline",h),d.on("click",function(){b.sidebarOpen?(b.SidebarController.hide(),d.addClass("icon-menu"),d.removeClass("icon-right")):(b.SidebarController.show(),d.addClass("icon-right"),d.removeClass("icon-menu"))}),"undefined"!=typeof screenfull&&(c.on("click",function(){screenfull.toggle($("#container")[0])}),screenfull.raw&&document.addEventListener(screenfull.raw.fullscreenchange,function(){i=screenfull.isFullscreen,i?c.addClass("icon-resize-small").removeClass("icon-resize-full"):c.addClass("icon-resize-full").removeClass("icon-resize-small")})),e.on("click",function(){b.SettingsController.show()}),f.on("click",function(){var a=b.book.getCurrentLocationCfi(),c=b.isBookmarked(a);-1===c?(b.addBookmark(a),f.addClass("icon-bookmark").removeClass("icon-bookmark-empty")):(b.removeBookmark(a),f.removeClass("icon-bookmark").addClass("icon-bookmark-empty"))}),a.on("renderer:locationChanged",function(a){var c="#"+a,d=b.isBookmarked(a);-1===d?f.removeClass("icon-bookmark").addClass("icon-bookmark-empty"):f.addClass("icon-bookmark").removeClass("icon-bookmark-empty"),b.currentLocationCfi=a,b.settings.history&&window.location.hash!=c&&history.pushState({},"",c)}),a.on("book:pageChanged",function(a){}),{}},EPUBJS.reader.MetaController=function(a){var b=a.bookTitle,c=a.creator,d=$("#book-title"),e=$("#chapter-title"),f=$("#title-seperator");document.title=b+" – "+c,d.html(b),e.html(c),f.show()},EPUBJS.reader.NotesController=function(){var a=this.book,b=this,c=$("#notesView"),d=$("#notes"),e=$("#note-text"),f=$("#note-anchor"),g=b.settings.annotations,h=a.renderer,i=[],j=new EPUBJS.EpubCFI,k=function(){c.show()},l=function(){c.hide()},m=function(c){var d,g,h,i,k,l=a.renderer.doc;if(l.caretPositionFromPoint?(d=l.caretPositionFromPoint(c.clientX,c.clientY),g=d.offsetNode,h=d.offset):l.caretRangeFromPoint&&(d=l.caretRangeFromPoint(c.clientX,c.clientY),g=d.startContainer,h=d.startOffset),3!==g.nodeType)for(var p=0;pm/2.5&&(o=m/2.5,pop_content.style.maxHeight=o+"px"),popRect.height+l>=m-25?(b.style.top=l-popRect.height+"px",b.classList.add("above")):b.classList.remove("above"),k-popRect.width<=0?(b.style.left=k+"px",b.classList.add("left")):b.classList.remove("left"),k+popRect.width/2>=n?(b.style.left=k-300+"px",popRect=b.getBoundingClientRect(),b.style.left=k-popRect.width+"px",popRect.height+l>=m-25?(b.style.top=l-popRect.height+"px",b.classList.add("above")):b.classList.remove("above"),b.classList.add("right")):b.classList.remove("right")},f=function(){i[d].classList.add("on")},g=function(){i[d].classList.remove("on")},j=function(){setTimeout(function(){i[d].classList.remove("show")},100)},l=function(){b.ReaderController.slideOut(),k()};a.addEventListener("mouseover",e,!1),a.addEventListener("mouseout",j,!1),a.addEventListener("click",l,!1)};return f.on("click",function(b){f.text("Cancel"),e.prop("disabled","true"),a.on("renderer:click",m)}),g.forEach(function(a){n(a)}),h.registerHook("beforeChapterDisplay",function(a,b){var c=b.currentChapter;g.forEach(function(a){var b=j.parse(a.anchor);if(b.spinePos===c.spinePos)try{o(a)}catch(d){console.log("anchoring failed",a.anchor)}}),a()},!0),{show:k,hide:l}},EPUBJS.reader.ReaderController=function(a){var b=$("#main"),c=$("#divider"),d=$("#loader"),e=$("#next"),f=$("#prev"),g=this,a=this.book,h=function(){var c=a.getCurrentLocationCfi();g.settings.sidebarReflow?(b.removeClass("single"),b.one("transitionend",function(){a.gotoCfi(c)})):b.removeClass("closed")},i=function(){var c=a.getCurrentLocationCfi();g.settings.sidebarReflow?(b.addClass("single"),b.one("transitionend",function(){a.gotoCfi(c)})):b.addClass("closed")},j=function(){d.show(),m()},k=function(){d.hide()},l=function(){c.addClass("show")},m=function(){c.removeClass("show")},n=!1,o=function(b){37==b.keyCode&&("rtl"===a.metadata.direction?a.nextPage():a.prevPage(),f.addClass("active"),n=!0,setTimeout(function(){n=!1,f.removeClass("active")},100),b.preventDefault()),39==b.keyCode&&("rtl"===a.metadata.direction?a.prevPage():a.nextPage(),e.addClass("active"),n=!0,setTimeout(function(){n=!1,e.removeClass("active")},100),b.preventDefault())};return document.addEventListener("keydown",o,!1),e.on("click",function(b){"rtl"===a.metadata.direction?a.prevPage():a.nextPage(),b.preventDefault()}),f.on("click",function(b){"rtl"===a.metadata.direction?a.nextPage():a.prevPage(),b.preventDefault()}),a.on("renderer:spreads",function(a){a?l():m()}),{slideOut:i,slideIn:h,showLoader:j,hideLoader:k,showDivider:l,hideDivider:m,arrowKeys:o}},EPUBJS.reader.SettingsController=function(){var a=(this.book,this),b=$("#settings-modal"),c=$(".overlay"),d=function(){b.addClass("md-show")},e=function(){b.removeClass("md-show")},f=$("#sidebarReflow");return f.on("click",function(){a.settings.sidebarReflow=!a.settings.sidebarReflow}),b.find(".closer").on("click",function(){e()}),c.on("click",function(){e()}),{show:d,hide:e}},EPUBJS.reader.SidebarController=function(a){var b=this,c=$("#sidebar"),d=$("#panels"),e="Toc",f=function(a){var c=a+"Controller";e!=a&&"undefined"!=typeof b[c]&&(b[e+"Controller"].hide(),b[c].show(),e=a,d.find(".active").removeClass("active"),d.find("#show-"+a).addClass("active"))},g=function(){return e},h=function(){b.sidebarOpen=!0,b.ReaderController.slideOut(),c.addClass("open")},i=function(){b.sidebarOpen=!1,b.ReaderController.slideIn(),c.removeClass("open")};return d.find(".show_view").on("click",function(a){var b=$(this).data("view");f(b),a.preventDefault()}),{show:h,hide:i,getActivePanel:g,changePanelTo:f}},EPUBJS.reader.TocController=function(a){var b=this.book,c=$("#tocView"),d=document.createDocumentFragment(),e=!1,f=function(a,b){var c=document.createElement("ul");return b||(b=1),a.forEach(function(a){var d=document.createElement("li"),e=document.createElement("a");toggle=document.createElement("a");var g;d.id="toc-"+a.id,d.classList.add("list_item"),e.textContent=a.label,e.href=a.href,e.classList.add("toc_link"),d.appendChild(e),a.subitems.length>0&&(b++,g=f(a.subitems,b),toggle.classList.add("toc_toggle"),d.insertBefore(toggle,e),d.appendChild(g)),c.appendChild(d)}),c},g=function(){c.show()},h=function(){c.hide()},i=function(a){var b=a.id,d=c.find("#toc-"+b),f=c.find(".currentChapter");c.find(".openChapter");d.length&&(d!=f&&d.has(e).length>0&&f.removeClass("currentChapter"),d.addClass("currentChapter"),d.parents("li").addClass("openChapter"))};b.on("renderer:chapterDisplayed",i);var j=f(a);return d.appendChild(j),c.append(d),c.find(".toc_link").on("click",function(a){var d=this.getAttribute("href");a.preventDefault(),b["goto"](d),c.find(".currentChapter").addClass("openChapter").removeClass("currentChapter"),$(this).parent("li").addClass("currentChapter")}),c.find(".toc_toggle").on("click",function(a){var b=$(this).parent("li"),c=b.hasClass("openChapter");a.preventDefault(),c?b.removeClass("openChapter"):b.addClass("openChapter")}),{show:g,hide:h}}; +EPUBJS.reader={},EPUBJS.reader.plugins={},function(a){var b=(a.ePubReader||{},a.ePubReader=function(a,b){return new EPUBJS.Reader(a,b)});"function"==typeof define&&define.amd?define(function(){return Reader}):"undefined"!=typeof module&&module.exports&&(module.exports=b)}(window,jQuery),EPUBJS.Reader=function(a,b){var c,d,e,f=this,g=$("#viewer"),h=window.location.search;this.settings=EPUBJS.core.defaults(b||{},{bookPath:a,restore:!0,reload:!1,bookmarks:void 0,annotations:void 0,contained:void 0,bookKey:void 0,styles:void 0,sidebarReflow:!1,generatePagination:!1,history:!0}),h&&(e=h.slice(1).split("&"),e.forEach(function(a){var b=a.split("="),c=b[0],d=b[1]||"";f.settings[c]=decodeURIComponent(d)})),this.setBookKey(this.settings.bookPath),this.settings.restore&&this.isSaved()&&this.applySavedSettings(),this.settings.styles=this.settings.styles||{fontSize:"100%"},this.book=c=new EPUBJS.Book(this.settings),this.settings.previousLocationCfi&&c.gotoCfi(this.settings.previousLocationCfi),this.offline=!1,this.sidebarOpen=!1,this.settings.bookmarks||(this.settings.bookmarks=[]),this.settings.annotations||(this.settings.annotations=[]),this.settings.generatePagination&&c.generatePagination(g.width(),g.height()),c.renderTo("viewer"),f.ReaderController=EPUBJS.reader.ReaderController.call(f,c),f.SettingsController=EPUBJS.reader.SettingsController.call(f,c),f.ControlsController=EPUBJS.reader.ControlsController.call(f,c),f.SidebarController=EPUBJS.reader.SidebarController.call(f,c),f.BookmarksController=EPUBJS.reader.BookmarksController.call(f,c),f.NotesController=EPUBJS.reader.NotesController.call(f,c);for(d in EPUBJS.reader.plugins)EPUBJS.reader.plugins.hasOwnProperty(d)&&(f[d]=EPUBJS.reader.plugins[d].call(f,c));return c.ready.all.then(function(){f.ReaderController.hideLoader()}),c.getMetadata().then(function(a){f.MetaController=EPUBJS.reader.MetaController.call(f,a)}),c.getToc().then(function(a){f.TocController=EPUBJS.reader.TocController.call(f,a)}),window.addEventListener("beforeunload",this.unload.bind(this),!1),window.addEventListener("hashchange",this.hashChanged.bind(this),!1),document.addEventListener("keydown",this.adjustFontSize.bind(this),!1),c.on("renderer:keydown",this.adjustFontSize.bind(this)),c.on("renderer:keydown",f.ReaderController.arrowKeys.bind(this)),c.on("renderer:selected",this.selectedRange.bind(this)),this},EPUBJS.Reader.prototype.adjustFontSize=function(a){var b,c=2,d=187,e=189,f=48,g=a.ctrlKey||a.metaKey;this.settings.styles&&(this.settings.styles.fontSize||(this.settings.styles.fontSize="100%"),b=parseInt(this.settings.styles.fontSize.slice(0,-1)),g&&a.keyCode==d&&(a.preventDefault(),this.book.setStyle("fontSize",b+c+"%")),g&&a.keyCode==e&&(a.preventDefault(),this.book.setStyle("fontSize",b-c+"%")),g&&a.keyCode==f&&(a.preventDefault(),this.book.setStyle("fontSize","100%")))},EPUBJS.Reader.prototype.addBookmark=function(a){var b=this.isBookmarked(a);b>-1||(this.settings.bookmarks.push(a),this.trigger("reader:bookmarked",a))},EPUBJS.Reader.prototype.removeBookmark=function(a){var b=this.isBookmarked(a);-1!==b&&(this.settings.bookmarks.splice(b,1),this.trigger("reader:unbookmarked",b))},EPUBJS.Reader.prototype.isBookmarked=function(a){var b=this.settings.bookmarks;return b.indexOf(a)},EPUBJS.Reader.prototype.clearBookmarks=function(){this.settings.bookmarks=[]},EPUBJS.Reader.prototype.addNote=function(a){this.settings.annotations.push(a)},EPUBJS.Reader.prototype.removeNote=function(a){var b=this.settings.annotations.indexOf(a);-1!==b&&delete this.settings.annotations[b]},EPUBJS.Reader.prototype.clearNotes=function(){this.settings.annotations=[]},EPUBJS.Reader.prototype.setBookKey=function(a){return this.settings.bookKey||(this.settings.bookKey="epubjsreader:"+EPUBJS.VERSION+":"+window.location.host+":"+a),this.settings.bookKey},EPUBJS.Reader.prototype.isSaved=function(){var a;return localStorage?(a=localStorage.getItem(this.settings.bookKey),null===a?!1:!0):!1},EPUBJS.Reader.prototype.removeSavedSettings=function(){return localStorage?void localStorage.removeItem(this.settings.bookKey):!1},EPUBJS.Reader.prototype.applySavedSettings=function(){var a;if(!localStorage)return!1;try{a=JSON.parse(localStorage.getItem(this.settings.bookKey))}catch(b){return!1}return a?(a.styles&&(this.settings.styles=EPUBJS.core.defaults(this.settings.styles||{},a.styles)),this.settings=EPUBJS.core.defaults(this.settings,a),!0):!1},EPUBJS.Reader.prototype.saveSettings=function(){return this.book&&(this.settings.previousLocationCfi=this.book.getCurrentLocationCfi()),localStorage?void localStorage.setItem(this.settings.bookKey,JSON.stringify(this.settings)):!1},EPUBJS.Reader.prototype.unload=function(){this.settings.restore&&localStorage&&this.saveSettings()},EPUBJS.Reader.prototype.hashChanged=function(){var a=window.location.hash.slice(1);this.book.goto(a)},EPUBJS.Reader.prototype.selectedRange=function(a){var b=new EPUBJS.EpubCFI,c=b.generateCfiFromRangeAnchor(a,this.book.renderer.currentChapter.cfiBase),d="#"+c;this.settings.history&&window.location.hash!=d&&(history.pushState({},"",d),this.currentLocationCfi=c)},RSVP.EventTarget.mixin(EPUBJS.Reader.prototype),EPUBJS.reader.BookmarksController=function(){var a=this.book,b=$("#bookmarksView"),c=b.find("#bookmarks"),d=document.createDocumentFragment(),e=function(){b.show()},f=function(){b.hide()},g=0,h=function(b){var c=document.createElement("li"),d=document.createElement("a");return c.id="bookmark-"+g,c.classList.add("list_item"),d.textContent=b,d.href=b,d.classList.add("bookmark_link"),d.addEventListener("click",function(b){var c=this.getAttribute("href");a.gotoCfi(c),b.preventDefault()},!1),c.appendChild(d),g++,c};return this.settings.bookmarks.forEach(function(a){var b=h(a);d.appendChild(b)}),c.append(d),this.on("reader:bookmarked",function(a){var b=h(a);c.append(b)}),this.on("reader:unbookmarked",function(a){var b=$("#bookmark-"+a);b.remove()}),{show:e,hide:f}},EPUBJS.reader.ControlsController=function(a){var b=this,c=($("#store"),$("#fullscreen")),d=($("#fullscreenicon"),$("#cancelfullscreenicon"),$("#slider")),e=($("#main"),$("#sidebar"),$("#setting")),f=$("#bookmark"),g=function(){b.offline=!1},h=function(){b.offline=!0},i=!1;return a.on("book:online",g),a.on("book:offline",h),d.on("click",function(){b.sidebarOpen?(b.SidebarController.hide(),d.addClass("icon-menu"),d.removeClass("icon-right")):(b.SidebarController.show(),d.addClass("icon-right"),d.removeClass("icon-menu"))}),"undefined"!=typeof screenfull&&(c.on("click",function(){screenfull.toggle($("#container")[0])}),screenfull.raw&&document.addEventListener(screenfull.raw.fullscreenchange,function(){i=screenfull.isFullscreen,i?c.addClass("icon-resize-small").removeClass("icon-resize-full"):c.addClass("icon-resize-full").removeClass("icon-resize-small")})),e.on("click",function(){b.SettingsController.show()}),f.on("click",function(){var a=b.book.getCurrentLocationCfi(),c=b.isBookmarked(a);-1===c?(b.addBookmark(a),f.addClass("icon-bookmark").removeClass("icon-bookmark-empty")):(b.removeBookmark(a),f.removeClass("icon-bookmark").addClass("icon-bookmark-empty"))}),a.on("renderer:locationChanged",function(a){var c="#"+a,d=b.isBookmarked(a);-1===d?f.removeClass("icon-bookmark").addClass("icon-bookmark-empty"):f.addClass("icon-bookmark").removeClass("icon-bookmark-empty"),b.currentLocationCfi=a,b.settings.history&&window.location.hash!=c&&history.pushState({},"",c)}),a.on("book:pageChanged",function(){}),{}},EPUBJS.reader.MetaController=function(a){var b=a.bookTitle,c=a.creator,d=$("#book-title"),e=$("#chapter-title"),f=$("#title-seperator");document.title=b+" – "+c,d.html(b),e.html(c),f.show()},EPUBJS.reader.NotesController=function(){var a=this.book,b=this,c=$("#notesView"),d=$("#notes"),e=$("#note-text"),f=$("#note-anchor"),g=b.settings.annotations,h=a.renderer,i=[],j=new EPUBJS.EpubCFI,k=function(){c.show()},l=function(){c.hide()},m=function(c){var d,g,h,i,k,l=a.renderer.doc;if(l.caretPositionFromPoint?(d=l.caretPositionFromPoint(c.clientX,c.clientY),g=d.offsetNode,h=d.offset):l.caretRangeFromPoint&&(d=l.caretRangeFromPoint(c.clientX,c.clientY),g=d.startContainer,h=d.startOffset),3!==g.nodeType)for(var p=0;pm/2.5&&(o=m/2.5,pop_content.style.maxHeight=o+"px"),popRect.height+l>=m-25?(b.style.top=l-popRect.height+"px",b.classList.add("above")):b.classList.remove("above"),k-popRect.width<=0?(b.style.left=k+"px",b.classList.add("left")):b.classList.remove("left"),k+popRect.width/2>=n?(b.style.left=k-300+"px",popRect=b.getBoundingClientRect(),b.style.left=k-popRect.width+"px",popRect.height+l>=m-25?(b.style.top=l-popRect.height+"px",b.classList.add("above")):b.classList.remove("above"),b.classList.add("right")):b.classList.remove("right")},f=function(){i[d].classList.add("on")},g=function(){i[d].classList.remove("on")},j=function(){setTimeout(function(){i[d].classList.remove("show")},100)},l=function(){b.ReaderController.slideOut(),k()};a.addEventListener("mouseover",e,!1),a.addEventListener("mouseout",j,!1),a.addEventListener("click",l,!1)};return f.on("click",function(){f.text("Cancel"),e.prop("disabled","true"),a.on("renderer:click",m)}),g.forEach(function(a){n(a)}),h.registerHook("beforeChapterDisplay",function(a,b){var c=b.currentChapter;g.forEach(function(a){var b=j.parse(a.anchor);if(b.spinePos===c.spinePos)try{o(a)}catch(d){console.log("anchoring failed",a.anchor)}}),a()},!0),{show:k,hide:l}},EPUBJS.reader.ReaderController=function(a){var b=$("#main"),c=$("#divider"),d=$("#loader"),e=$("#next"),f=$("#prev"),g=this,a=this.book,h=function(){var c=a.getCurrentLocationCfi();g.settings.sidebarReflow?(b.removeClass("single"),b.one("transitionend",function(){a.gotoCfi(c)})):b.removeClass("closed")},i=function(){var c=a.getCurrentLocationCfi();g.settings.sidebarReflow?(b.addClass("single"),b.one("transitionend",function(){a.gotoCfi(c)})):b.addClass("closed")},j=function(){d.show(),m()},k=function(){d.hide()},l=function(){c.addClass("show")},m=function(){c.removeClass("show")},n=!1,o=function(b){37==b.keyCode&&("rtl"===a.metadata.direction?a.nextPage():a.prevPage(),f.addClass("active"),n=!0,setTimeout(function(){n=!1,f.removeClass("active")},100),b.preventDefault()),39==b.keyCode&&("rtl"===a.metadata.direction?a.prevPage():a.nextPage(),e.addClass("active"),n=!0,setTimeout(function(){n=!1,e.removeClass("active")},100),b.preventDefault())};return document.addEventListener("keydown",o,!1),e.on("click",function(b){"rtl"===a.metadata.direction?a.prevPage():a.nextPage(),b.preventDefault()}),f.on("click",function(b){"rtl"===a.metadata.direction?a.nextPage():a.prevPage(),b.preventDefault()}),a.on("renderer:spreads",function(a){a?l():m()}),{slideOut:i,slideIn:h,showLoader:j,hideLoader:k,showDivider:l,hideDivider:m,arrowKeys:o}},EPUBJS.reader.SettingsController=function(){var a=(this.book,this),b=$("#settings-modal"),c=$(".overlay"),d=function(){b.addClass("md-show")},e=function(){b.removeClass("md-show")},f=$("#sidebarReflow");return f.on("click",function(){a.settings.sidebarReflow=!a.settings.sidebarReflow}),b.find(".closer").on("click",function(){e()}),c.on("click",function(){e()}),{show:d,hide:e}},EPUBJS.reader.SidebarController=function(){var a=this,b=$("#sidebar"),c=$("#panels"),d="Toc",e=function(b){var e=b+"Controller";d!=b&&"undefined"!=typeof a[e]&&(a[d+"Controller"].hide(),a[e].show(),d=b,c.find(".active").removeClass("active"),c.find("#show-"+b).addClass("active"))},f=function(){return d},g=function(){a.sidebarOpen=!0,a.ReaderController.slideOut(),b.addClass("open")},h=function(){a.sidebarOpen=!1,a.ReaderController.slideIn(),b.removeClass("open")};return c.find(".show_view").on("click",function(a){var b=$(this).data("view");e(b),a.preventDefault()}),{show:g,hide:h,getActivePanel:f,changePanelTo:e}},EPUBJS.reader.TocController=function(a){var b=this.book,c=$("#tocView"),d=document.createDocumentFragment(),e=!1,f=function(a,b){var c=document.createElement("ul");return b||(b=1),a.forEach(function(a){var d=document.createElement("li"),e=document.createElement("a");toggle=document.createElement("a");var g;d.id="toc-"+a.id,d.classList.add("list_item"),e.textContent=a.label,e.href=a.href,e.classList.add("toc_link"),d.appendChild(e),a.subitems.length>0&&(b++,g=f(a.subitems,b),toggle.classList.add("toc_toggle"),d.insertBefore(toggle,e),d.appendChild(g)),c.appendChild(d)}),c},g=function(){c.show()},h=function(){c.hide()},i=function(a){{var b=a.id,d=c.find("#toc-"+b),f=c.find(".currentChapter");c.find(".openChapter")}d.length&&(d!=f&&d.has(e).length>0&&f.removeClass("currentChapter"),d.addClass("currentChapter"),d.parents("li").addClass("openChapter"))};b.on("renderer:chapterDisplayed",i);var j=f(a);return d.appendChild(j),c.append(d),c.find(".toc_link").on("click",function(a){var d=this.getAttribute("href");a.preventDefault(),b.goto(d),c.find(".currentChapter").addClass("openChapter").removeClass("currentChapter"),$(this).parent("li").addClass("currentChapter")}),c.find(".toc_toggle").on("click",function(a){var b=$(this).parent("li"),c=b.hasClass("openChapter");a.preventDefault(),c?b.removeClass("openChapter"):b.addClass("openChapter")}),{show:g,hide:h}}; //# sourceMappingURL=reader.min.map \ No newline at end of file diff --git a/build/reader.min.map b/build/reader.min.map index 284092a..9d1509b 100644 --- a/build/reader.min.map +++ b/build/reader.min.map @@ -1 +1 @@ -{"version":3,"file":"reader.min.js","sources":["reader.js"],"names":["EPUBJS","reader","plugins","root","$","ePubReader","path","options","Reader","define","amd","module","exports","window","jQuery","bookPath","_options","book","plugin","parameters","this","$viewer","search","location","settings","core","defaults","restore","reload","bookmarks","undefined","annotations","contained","bookKey","styles","sidebarReflow","generatePagination","history","slice","split","forEach","p","name","value","decodeURIComponent","setBookKey","isSaved","applySavedSettings","fontSize","Book","previousLocationCfi","gotoCfi","offline","sidebarOpen","width","height","renderTo","ReaderController","call","SettingsController","ControlsController","SidebarController","BookmarksController","NotesController","hasOwnProperty","ready","all","then","hideLoader","getMetadata","meta","MetaController","getToc","toc","TocController","addEventListener","unload","bind","hashChanged","document","adjustFontSize","on","arrowKeys","selectedRange","prototype","e","interval","PLUS","MINUS","ZERO","MOD","ctrlKey","metaKey","parseInt","keyCode","preventDefault","setStyle","addBookmark","cfi","present","isBookmarked","push","trigger","removeBookmark","bookmark","splice","indexOf","clearBookmarks","addNote","note","removeNote","index","clearNotes","identifier","VERSION","host","storedSettings","localStorage","getItem","removeSavedSettings","removeItem","stored","JSON","parse","saveSettings","getCurrentLocationCfi","setItem","stringify","hash","range","epubcfi","EpubCFI","generateCfiFromRangeAnchor","renderer","currentChapter","cfiBase","cfiFragment","pushState","currentLocationCfi","RSVP","EventTarget","mixin","$bookmarks","$list","find","docfrag","createDocumentFragment","show","hide","counter","createBookmarkItem","listitem","createElement","link","id","classList","add","textContent","href","event","getAttribute","appendChild","append","item","$item","remove","$fullscreen","$slider","$settings","$bookmark","goOnline","goOffline","fullscreen","addClass","removeClass","screenfull","toggle","raw","fullscreenchange","isFullscreen","bookmarked","title","bookTitle","author","creator","$title","$author","$dash","html","$notesView","$notes","$text","$anchor","popups","insertAtPoint","textNode","offset","annotation","doc","caretPositionFromPoint","clientX","clientY","offsetNode","caretRangeFromPoint","startContainer","startOffset","nodeType","i","childNodes","length","generateCfiFromTextNode","annotatedAt","Date","anchor","body","val","addAnnotation","placeMarker","text","prop","off","innerHTML","onclick","marker","mark","style","verticalAlign","lineHeight","padding","backgroundColor","borderRadius","cursor","uuid","addMarker","markerEvents","txt","showPop","pop","itemRect","left","top","iheight","iwidth","maxHeight","setAttribute","pop_content","render","onPop","offPop","hidePop","getBoundingClientRect","popRect","setTimeout","openSidebar","slideOut","registerHook","callback","chapter","spinePos","console","log","$main","$divider","$loader","$next","$prev","slideIn","currentPosition","one","showLoader","hideDivider","showDivider","keylock","metadata","direction","nextPage","prevPage","bool","$overlay","$sidebarReflowSetting","$sidebar","$panels","activePanel","changePanelTo","viewName","controllerName","getActivePanel","view","data","generateTocItems","level","container","subitems","label","insertBefore","onShow","onHide","chapterChange","$current","has","parents","tocitems","url","parent","$el","open","hasClass"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"reader.min.js","sources":["reader.js"],"names":["EPUBJS","reader","plugins","root","ePubReader","path","options","Reader","define","amd","module","exports","window","jQuery","bookPath","_options","book","plugin","parameters","this","$viewer","$","search","location","settings","core","defaults","restore","reload","bookmarks","undefined","annotations","contained","bookKey","styles","sidebarReflow","generatePagination","history","slice","split","forEach","p","name","value","decodeURIComponent","setBookKey","isSaved","applySavedSettings","fontSize","Book","previousLocationCfi","gotoCfi","offline","sidebarOpen","width","height","renderTo","ReaderController","call","SettingsController","ControlsController","SidebarController","BookmarksController","NotesController","hasOwnProperty","ready","all","then","hideLoader","getMetadata","meta","MetaController","getToc","toc","TocController","addEventListener","unload","bind","hashChanged","document","adjustFontSize","on","arrowKeys","selectedRange","prototype","e","interval","PLUS","MINUS","ZERO","MOD","ctrlKey","metaKey","parseInt","keyCode","preventDefault","setStyle","addBookmark","cfi","present","isBookmarked","push","trigger","removeBookmark","bookmark","splice","indexOf","clearBookmarks","addNote","note","removeNote","index","clearNotes","identifier","VERSION","host","storedSettings","localStorage","getItem","removeSavedSettings","removeItem","stored","JSON","parse","saveSettings","getCurrentLocationCfi","setItem","stringify","hash","goto","range","epubcfi","EpubCFI","generateCfiFromRangeAnchor","renderer","currentChapter","cfiBase","cfiFragment","pushState","currentLocationCfi","RSVP","EventTarget","mixin","$bookmarks","$list","find","docfrag","createDocumentFragment","show","hide","counter","createBookmarkItem","listitem","createElement","link","id","classList","add","textContent","href","event","getAttribute","appendChild","append","item","$item","remove","$fullscreen","$slider","$settings","$bookmark","goOnline","goOffline","fullscreen","addClass","removeClass","screenfull","toggle","raw","fullscreenchange","isFullscreen","bookmarked","title","bookTitle","author","creator","$title","$author","$dash","html","$notesView","$notes","$text","$anchor","popups","insertAtPoint","textNode","offset","annotation","doc","caretPositionFromPoint","clientX","clientY","offsetNode","caretRangeFromPoint","startContainer","startOffset","nodeType","i","childNodes","length","generateCfiFromTextNode","annotatedAt","Date","anchor","body","val","addAnnotation","placeMarker","text","prop","off","innerHTML","onclick","marker","mark","style","verticalAlign","lineHeight","padding","backgroundColor","borderRadius","cursor","uuid","addMarker","markerEvents","txt","showPop","pop","itemRect","left","top","iheight","iwidth","maxHeight","setAttribute","pop_content","render","onPop","offPop","hidePop","getBoundingClientRect","popRect","setTimeout","openSidebar","slideOut","registerHook","callback","chapter","spinePos","console","log","$main","$divider","$loader","$next","$prev","slideIn","currentPosition","one","showLoader","hideDivider","showDivider","keylock","metadata","direction","nextPage","prevPage","bool","$overlay","$sidebarReflowSetting","$sidebar","$panels","activePanel","changePanelTo","viewName","controllerName","getActivePanel","view","data","generateTocItems","level","container","subitems","label","insertBefore","onShow","onHide","chapterChange","$current","has","parents","tocitems","url","parent","$el","open","hasClass"],"mappings":"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"} \ No newline at end of file diff --git a/libs/mime-types/mime-types.js b/libs/mime-types/mime-types.js index 2cfd03b..cb352be 100644 --- a/libs/mime-types/mime-types.js +++ b/libs/mime-types/mime-types.js @@ -14,7 +14,7 @@ "rdf+xml" : "rdf", "smil" : [ "smi", "smil" ], "xhtml+xml" : [ "xhtml", "xht" ], - "xml" : [ "xml", "xsl", "xsd" ], + "xml" : [ "xml", "xsl", "xsd", "opf" ], "zip" : "zip", "x-httpd-eruby" : "rhtml", "x-latex" : "latex", @@ -30,7 +30,7 @@ "mathml+xml" : "mathml", "metalink+xml" : "metalink", "mp4" : "mp4s", - "oebps-package+xml" : "opf", + // "oebps-package+xml" : "opf", "omdoc+xml" : "omdoc", "oxps" : "oxps", "vnd.amazon.ebook" : "azw", @@ -195,4 +195,4 @@ return filename && mimeTypes[filename.split(".").pop().toLowerCase()] || defaultValue; }; -})(); \ No newline at end of file +})(); diff --git a/reader/js/epub.js.map b/reader/js/epub.js.map index 5e1580a..9031831 100644 --- a/reader/js/epub.js.map +++ b/reader/js/epub.js.map @@ -1 +1 @@ -{"version":3,"file":"epub.min.js","sources":["epub.js"],"names":["lib$rsvp$utils$$objectOrFunction","x","lib$rsvp$utils$$isFunction","lib$rsvp$utils$$isMaybeThenable","lib$rsvp$utils$$F","lib$rsvp$events$$indexOf","callbacks","callback","i","l","length","lib$rsvp$events$$callbacksFor","object","_promiseCallbacks","lib$rsvp$config$$configure","name","value","lib$rsvp$config$$config","arguments","lib$rsvp$instrument$$scheduleFlush","setTimeout","entry","lib$rsvp$instrument$$queue","payload","guid","key","id","childGuid","childId","error","stack","lib$rsvp$instrument$$instrument","eventName","promise","child","push","_guidKey","_id","detail","_result","label","_label","timeStamp","lib$rsvp$utils$$now","Error","lib$rsvp$$internal$$withOwnPromise","TypeError","lib$rsvp$$internal$$noop","lib$rsvp$$internal$$getThen","then","lib$rsvp$$internal$$GET_THEN_ERROR","lib$rsvp$$internal$$tryThen","fulfillmentHandler","rejectionHandler","call","e","lib$rsvp$$internal$$handleForeignThenable","thenable","async","sealed","lib$rsvp$$internal$$resolve","lib$rsvp$$internal$$fulfill","reason","lib$rsvp$$internal$$reject","lib$rsvp$$internal$$handleOwnThenable","_state","lib$rsvp$$internal$$FULFILLED","lib$rsvp$$internal$$REJECTED","_onError","lib$rsvp$$internal$$subscribe","undefined","lib$rsvp$$internal$$handleMaybeThenable","maybeThenable","constructor","lib$rsvp$$internal$$publishRejection","lib$rsvp$$internal$$publish","lib$rsvp$$internal$$PENDING","_subscribers","instrument","lib$rsvp$instrument$$default","parent","onFulfillment","onRejection","subscribers","settled","lib$rsvp$$internal$$invokeCallback","lib$rsvp$$internal$$ErrorObject","this","lib$rsvp$$internal$$tryCatch","lib$rsvp$$internal$$TRY_CATCH_ERROR","succeeded","failed","hasCallback","lib$rsvp$$internal$$initializePromise","resolver","resolved","lib$rsvp$enumerator$$makeSettledResult","state","position","lib$rsvp$enumerator$$Enumerator","Constructor","input","abortOnReject","enumerator","_instanceConstructor","_abortOnReject","_validateInput","_input","_remaining","_init","_enumerate","_validationError","lib$rsvp$promise$all$$all","entries","lib$rsvp$enumerator$$default","lib$rsvp$promise$race$$race","lib$rsvp$utils$$isArray","resolve","lib$rsvp$promise$resolve$$resolve","lib$rsvp$promise$reject$$reject","lib$rsvp$promise$$needsResolver","lib$rsvp$promise$$needsNew","lib$rsvp$promise$$Promise","lib$rsvp$promise$$counter","lib$rsvp$all$settled$$AllSettled","_superConstructor","lib$rsvp$all$settled$$allSettled","lib$rsvp$promise$$default","lib$rsvp$all$$all","array","all","lib$rsvp$asap$$asap","arg","lib$rsvp$asap$$queue","lib$rsvp$asap$$len","lib$rsvp$asap$$scheduleFlush","lib$rsvp$asap$$useNextTick","nextTick","process","version","versions","node","match","Array","isArray","setImmediate","lib$rsvp$asap$$flush","lib$rsvp$asap$$useVertxTimer","lib$rsvp$asap$$vertxNext","lib$rsvp$asap$$useMutationObserver","iterations","observer","lib$rsvp$asap$$BrowserMutationObserver","document","createTextNode","observe","characterData","data","lib$rsvp$asap$$useMessageChannel","channel","MessageChannel","port1","onmessage","port2","postMessage","lib$rsvp$asap$$useSetTimeout","lib$rsvp$asap$$attemptVertex","r","require","vertx","runOnLoop","runOnContext","lib$rsvp$defer$$defer","deferred","reject","lib$rsvp$filter$$filter","promises","filterFn","values","filtered","results","newLength","lib$rsvp$promise$hash$$PromiseHash","lib$rsvp$hash$settled$$HashSettled","lib$rsvp$hash$settled$$hashSettled","lib$rsvp$hash$$hash","lib$rsvp$promise$hash$$default","lib$rsvp$map$$map","mapFn","lib$rsvp$node$$Result","lib$rsvp$node$$getThen","obj","lib$rsvp$node$$ERROR","lib$rsvp$node$$tryApply","f","s","a","apply","lib$rsvp$node$$makeObject","_","argumentNames","args","lib$rsvp$node$$arrayResult","lib$rsvp$node$$wrapThenable","onFulFillment","lib$rsvp$node$$denodeify","nodeFunc","options","fn","self","promiseInput","lib$rsvp$node$$needsPromiseInput","lib$rsvp$node$$GET_THEN_ERROR","p","err","val","lib$rsvp$node$$handlePromiseInput","lib$rsvp$node$$handleValueInput","__proto__","result","lib$rsvp$race$$race","race","lib$rsvp$reject$$reject","lib$rsvp$resolve$$resolve","lib$rsvp$rethrow$$rethrow","lib$rsvp$$async","lib$rsvp$$on","lib$rsvp$$off","lib$rsvp$utils$$_isArray","Object","prototype","toString","Date","now","getTime","lib$rsvp$utils$$o_create","create","o","lib$rsvp$events$$default","mixin","on","allCallbacks","off","index","splice","trigger","_eachEntry","c","_settledAt","_willSettleAt","_makeResult","lib$rsvp$promise$all$$default","lib$rsvp$promise$race$$default","lib$rsvp$promise$resolve$$default","lib$rsvp$promise$reject$$default","lib$rsvp$promise$$guidKey","cast","after","catch","finally","lib$rsvp$all$settled$$default","lib$rsvp$all$$default","lib$rsvp$asap$$default","lib$rsvp$asap$$browserWindow","window","lib$rsvp$asap$$browserGlobal","MutationObserver","WebKitMutationObserver","lib$rsvp$asap$$isNode","lib$rsvp$asap$$isWorker","Uint8ClampedArray","importScripts","lib$rsvp$defer$$default","lib$rsvp$filter$$default","hasOwnProperty","lib$rsvp$platform$$platform","lib$rsvp$hash$settled$$default","lib$rsvp$hash$$default","lib$rsvp$map$$default","lib$rsvp$node$$default","global","lib$rsvp$platform$$default","lib$rsvp$race$$default","lib$rsvp$reject$$default","lib$rsvp$resolve$$default","lib$rsvp$rethrow$$default","cb","lib$rsvp$$callbacks","lib$rsvp$$eventName","lib$rsvp$umd$$RSVP","Promise","allSettled","hash","hashSettled","denodeify","map","filter","rethrow","defer","EventTarget","configure","define","module","EPUBJS","VERSION","plugins","filePath","Render","root","ePub","bookPath","ArrayBuffer","Book","amd","exports","settings","core","defaults","bookKey","packageUrl","storage","fromStorage","saved","online","contained","width","height","layoutOveride","orientation","minSpreadWidth","gap","restore","reload","goto","styles","headTags","withCredentials","render_method","EPUBJSVERSION","spinePos","stored","navigator","onLine","networkListeners","ready","manifest","RSVP","spine","metadata","cover","toc","pageList","readyPromises","pagination","Pagination","pageListReady","_ready","bind","isRendered","_q","queue","_rendering","_displayQ","_moving","_gotoQ","renderer","Renderer","setMinSpreadWidth","setGap","listenToRenderer","defer_opened","opened","store","open","addEventListener","unload","forceReload","epubpackage","book","isContained","bookUrl","unarchive","loadPackage","urlFrom","localStorage","packageXml","identifier","packageIdentifier","restored","unpack","_registerReplacements","_containerPath","parse","Parser","containerPath","loadXml","containerXml","container","paths","contentsPath","basePath","packagePath","encoding","console","contents","packageContents","spineIndexByURL","generateBookKey","globalLayoutProperties","parseLayoutProperties","coverPath","spineNodeIndex","locations","Locations","navPath","navUrl","navHtml","nav","epubcfi","EpubCFI","wait","forEach","pg","cfi","generateCfiFromHref","href","tocPath","tocUrl","tocXml","createHiddenRender","_width","_height","hiddenContainer","hiddenEl","box","element","getBoundingClientRect","forceSingle","createElement","style","visibility","overflow","appendChild","initialize","generatePageList","pager","spineLength","currentPage","nextChapter","chapter","next","done","Chapter","displayChapter","chap","pageMap","item","start","page","spreads","end","remove","removeChild","generatePagination","defered","loadPagination","pagelistJSON","JSON","getPageList","getMetadata","getToc","Events","range","startPage","endPage","percent","pageRange","pageFromCfi","percentageFromPage","anchorPage","percentage","loadChange","url","uri","chapterUri","currentChapter","absolute","path","warn","filename","afterLoad","render","docEl","beforeDisplay","afterDisplay","reformat","unlistenToRenderer","getXml","zip","request","base","protocol","fromRoot","location","origin","host","baseTag","getElementsByTagName","resolveUrl","pathname","Unarchiver","extension","isSaved","storedSettings","getItem","saveContents","setItem","stringify","removeSavedContents","removeItem","renderTo","elem","rendered","isElement","getEl","direction","setDirection","_rendered","startDisplay","display","previousLocationCfi","gotoCfi","fetch","fromStore","len","clearSaved","pos","enqueue","isNumber","_needsAssetReplacement","registerHook","replace","head","resources","svg","lastPage","preloadNextChapter","dequeue","message","nextPage","prevPage","prev","prevChapter","linear","getCurrentLocationCfi","currentLocationCfi","target","indexOf","gotoPercentage","parseInt","substring","isNaN","gotoPage","gotoHref","cfiString","spineItem","split","section","relativeURL","firstPage","cfiFromPage","pageFromPercentage","storeOffline","assets","put","availableOffline","toStorage","isStored","token","Storage","credentials","offline","setStyle","prefixed","noreflow","removeStyle","addHeadTag","tag","attrs","useSpreads","use","_use","force","load","destroy","removeEventListener","flush","applyStyles","applyHeadTags","hrefs","layout","spread","event","spineObject","cfiBase","properties","manifestProperties","pages","loaded","Hooks","getHooks","caches","_store","_credentials","xml","setDocument","doc","querySelector","setAttribute","insertBefore","firstChild","triggerHooks","serializer","XMLSerializer","serializeToString","tempUrl","getUrl","setPages","num","getPages","getID","ID","revokeUrl","_document","namespaceURI","doctype","implementation","createDocument","importNode","documentElement","evaluate","cfiFromRange","_range","startXpath","endXpath","startContainer","endContainer","cleanEndTextContent","getElementXPath","nsResolver","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","collapsed","createRange","setStart","startOffset","setEnd","endOffset","log","cleanStartTextContent","cleanStringForXpath","textContent","generateCfiFromRange","find","_query","matches","query","toLowerCase","excerpt","text","last","limit","textSprint","func","treeWalker","createTreeWalker","NodeFilter","SHOW_TEXT","acceptNode","test","FILTER_ACCEPT","FILTER_REJECT","nextNode","finished","progress","items","querySelectorAll","slice","count","called","full","replaceWithStored","attr","_oldUrls","_newUrls","_cache","_uri","_chapterBase","_attr","_wait","notempty","clone","link","src","getAttribute","replaceUrl","timeout","onload","clearTimeout","onerror","getElementById","getEls","classes","getElementsByClassName","type","handler","readyState","DONE","status","response","responseXML","DOMParser","parseFromString","supportsURL","Blob","URL","BLOB_RESPONSE","xhr","XMLHttpRequest","xhrPrototype","defineProperty","mimeType","onreadystatechange","responseType","setRequestHeader","overrideMimeType","send","toArray","arr","member","newitm","ident","withoutProtocol","dot","firstSlash","directory","fragment","blob","doubleSlash","search","folder","lastIndexOf","lastSlash","dataURLToBlob","dataURL","parts","contentType","raw","rawLength","uInt8Array","BASE64_MARKER","atob","Uint8Array","charCodeAt","addScript","body","addScripts","srcArr","total","curr","addCss","rel","unprefixed","vendors","upper","toUpperCase","segments","folders","pop","concat","join","uuid","d","Math","random","floor","insert","compareFunction","locationOf","_start","_end","compared","pivot","b","indexOfSorted","_scope","scope","funcName","context","inwait","shift","clear","getElementTreeXPath","nodeName","tagName","pathIndex","isXhtml","ownerDocument","nodeType","Node","TEXT_NODE","indexOfTextNode","parentNode","sibling","previousSibling","DOCUMENT_TYPE_NODE","prefix","ns","xhtml","epub","str","part","textNode","sib","children","childNodes","source","prop","extend","sources","getOwnPropertyNames","propName","getOwnPropertyDescriptor","n","parseFloat","isFinite","isString","String","props","keys","cfiStr","generateChapterComponent","_spineNodeIndex","_pos","generatePathComponent","steps","segment","generateCfiFromElement","pathTo","unshift","getChapterComponent","splitStr","getPathComponent","pathComponent","getCharecterOffsetComponent","chapSegment","chapterComponent","charecterOffsetComponent","assertion","chapId","endInt","parseStep","has_brackets","spineId","step","characterOffset","textLocationAssertion","addMarker","_doc","_marker","lastStep","marker","createMarker","findParent","splitText","classList","add","removeMarker","contains","nextSib","nextSibling","prevSib","sections","compare","cfiOne","cfiTwo","generateCfiFromTextNode","anchor","offset","generateCfiFromRangeAnchor","anchorNode","anchorOffset","startElement","startSteps","startPath","startIndex","endElement","endSteps","endPath","endIndex","generateXpathFromSteps","xpath","generateQueryFromSteps","generateRangeFromCfi","textLength","startContainerParent","debug","selectNode","isCfiString","el","events","createEvent","tell","listen","deafen","listenUntil","evt","CustomEvent","msg","dispatchEvent","bindto","OnEvt","OffEvt","unlisten","hooks","plugs","plugType","hook","toAdd","toFront","removeHook","toRemove","passed","countdown","register","Layout","Reflowable","spreadWidth","format","_gap","columnAxis","columnGap","columnWidth","columnFill","colWidth","pageWidth","pageHeight","calculatePages","totalWidth","displayedPages","scrollWidth","ceil","pageCount","ReflowableSpreads","divisor","fullWidth","Fixed","content","viewport","hasAttribute","_locations","_current","generate","chars","_currentCfi","currentLocation","counter","sprint","dist","locationFromCfi","percentageFromCfi","loc","percentageFromLocation","cfiFromLocation","cfiFromPercentage","save","json","getCurrent","setCurrent","get","set","totalPages","round","baseUrl","rootfile","fullpath","xmlEncoding","metadataNode","getElementText","manifestNode","spineNode","findNavPath","findTocPath","findCoverPath","tocId","bookTitle","creator","description","pubdate","publisher","language","rights","modified_date","querySelectorText","found","getElementsByTagNameNS","nodeValue","q","manifestXml","selected","spineXml","Id","propArray","manifestProps","manifestPropArray","vert","querySelectorByType","html","getAttributeNS","bookSpine","navElement","navItems","list","navItem","subitems","navPoints","tocItem","navLabel","pageListItem","isCfi","Iframe","iframe","bodyEl","leftPos","scrolling","seamless","border","isMobile","userAgent","transform","contentDocument","headEl","contentWindow","resized","setLeft","margin","dir","right","write","close","v","baseEl","resize","totalHeight","scrollHeight","setPageDimensions","defaultView","scrollTo","tagEl","getPageNumberByElement","left","getPageNumberByRect","boundingClientRect","getBaseElement","getDocumentElement","isElementVisible","rect","scroll","bool","renderMethod","hidden","listenedEvents","upEvent","downEvent","isForcedSingle","onResized","layoutSettings","initWidth","initHeight","clientWidth","clientHeight","globalLayout","removeEventListeners","removeSelectionListeners","chapterPos","currentChapterCfiBase","reconcileLayoutSettings","layoutMethod","determineLayout","visible","formated","addEventListeners","addSelectionListeners","queued","updatePages","visibleRangeCfi","getVisibleRangeCfi","property","rendition","determineSpreads","mapPage","headTag","pageByElement","firstElementisTextNode","leng","trim","isGoodNode","embeddedElements","walk","y","prevNode","startNode","STOP","ITER","containsPoint","childElementCount","SHOW_ELEMENT","prevRange","elLimit","check","elPos","elRange","ELEMENT_NODE","selectNodeContents","checkText","ranges","splitTextNodeIntoWordsRanges","collapse","indexOfBreakableChar","startPosition","whiteCharacters","charAt","rangePosition","getClientRects","getPageCfi","startRange","getRange","forceElement","caretPositionFromPoint","caretRangeFromPoint","visibileEl","findElementAfter","offsetNode","pagesInCurrentChapter","pgs","currentRenderedPage","getRenderedPagesLeft","pagesLeft","endRange","findFirstVisible","startEl","setSize","triggerEvent","onSelectionChange","selectionEndTimeout","selectedRange","getSelection","cutoff","replacments","relative","isRelative","onclick","links","srcs","stylesheets","getText","cssUrls","newText","_URL","webkitURL","mozURL","createObjectURL","replaced","checkRequirements","urlCache","current","encodedUrl","encodeURIComponent","localforage","buffer","getMimeType","reader","FileReader","readAsText","parser","fromCache","revokeObjectURL","zipUrl","JSZip","decodededUrl","decodeURIComponent","mime","unarchiver","file","asUint8Array","asText","afterSaved","that","delay","saveEntryFileToStorage","table","application","ecmascript","javascript","ogg","pdf","postscript","rdf+xml","smil","xhtml+xml","x-httpd-eruby","x-latex","x-maker","x-object","x-shockwave-flash","x-silverlight","epub+zip","font-tdpfr","inkml+xml","jsonml+json","mathml+xml","metalink+xml","mp4","oebps-package+xml","omdoc+xml","oxps","vnd.amazon.ebook","widget","x-dtbncx+xml","x-dtbook+xml","x-dtbresource+xml","x-font-bdf","x-font-ghostscript","x-font-linux-psf","x-font-otf","x-font-pcf","x-font-snf","x-font-ttf","x-font-type1","x-font-woff","x-mobipocket-ebook","x-mspublisher","x-nzb","x-tgif","xaml+xml","xml-dtd","xproc+xml","xslt+xml","internet-property-stream","x-compress","x-compressed","x-gzip","audio","flac","midi","mpeg","mpegurl","x-aiff","x-ms-wma","x-wav","adpcm","webm","x-aac","x-caf","x-matroska","x-pn-realaudio-plugin","xm","mid","image","gif","ief","jpeg","pcx","png","svg+xml","tiff","x-icon","bmp","webp","x-pict","x-tga","cis-cod","rfc822","cache-manifest","calendar","css","csv","h323","iuls","mathml","plain","richtext","tab-separated-values","x-bibtex","x-dsrc","x-diff","x-haskell","x-java","x-literate-haskell","x-moc","x-pascal","x-pcs-gcd","x-perl","x-python","x-scala","x-setext","x-tcl","x-tex","x-vcard","sgml","x-c","x-fortran","x-opml","x-nfo","x-sfv","x-uuencode","webviewhtml","video","quicktime","vnd.mpegurl","x-flv","x-la-asf","x-mng","x-ms-asf","x-ms-wm","x-ms-wmv","x-ms-wmx","x-ms-wvx","x-msvideo","x-sgi-movie","3gpp2","h261","h263","h264","jpm","mj2","vnd.ms-playready.media.pyv","vnd.uvvu.mp4","vnd.vivo","x-f4v","x-m4v","x-ms-vob","x-smv","mimeTypes","subtype","defaultValue"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"epub.min.js","sources":["epub.js"],"names":["$$rsvp$events$$indexOf","callbacks","callback","i","l","length","$$rsvp$events$$callbacksFor","object","_promiseCallbacks","$$rsvp$config$$configure","name","value","$$rsvp$config$$config","on","arguments","$$utils$$objectOrFunction","x","$$utils$$isFunction","$$utils$$isMaybeThenable","$$utils$$F","$$$internal$$noop","$$$internal$$getThen","promise","then","error","$$$internal$$GET_THEN_ERROR","$$$internal$$tryThen","fulfillmentHandler","rejectionHandler","call","e","$$$internal$$handleForeignThenable","thenable","async","sealed","$$$internal$$resolve","$$$internal$$fulfill","reason","$$$internal$$reject","_label","$$$internal$$handleOwnThenable","_state","$$$internal$$FULFILLED","_result","$$$internal$$REJECTED","$$$internal$$subscribe","undefined","$$$internal$$handleMaybeThenable","maybeThenable","constructor","$$$internal$$publishRejection","_onerror","$$$internal$$publish","$$$internal$$PENDING","_subscribers","instrument","$$instrument$$default","parent","child","onFulfillment","onRejection","subscribers","settled","detail","$$$internal$$invokeCallback","$$$internal$$ErrorObject","this","$$$internal$$tryCatch","$$$internal$$TRY_CATCH_ERROR","succeeded","failed","hasCallback","TypeError","$$$internal$$initializePromise","resolver","$$enumerator$$makeSettledResult","state","position","$$enumerator$$Enumerator","Constructor","input","abortOnReject","label","_instanceConstructor","_abortOnReject","_validateInput","_input","_remaining","_init","_enumerate","_validationError","$$rsvp$promise$$needsResolver","$$rsvp$promise$$needsNew","$$rsvp$promise$$Promise","_id","$$rsvp$promise$$counter","$$rsvp$node$$Result","$$rsvp$node$$getThen","obj","$$rsvp$node$$ERROR","$$rsvp$node$$tryApply","f","s","a","apply","$$rsvp$node$$makeObject","_","argumentNames","args","Array","$$rsvp$node$$arrayResult","$$rsvp$node$$wrapThenable","onFulFillment","$$rsvp$node$$handleValueInput","nodeFunc","self","result","$$rsvp$node$$handlePromiseInput","$$rsvp$promise$$default","all","$$rsvp$node$$needsPromiseInput","arg","$$rsvp$all$settled$$AllSettled","entries","_superConstructor","$$promise$hash$$PromiseHash","$$rsvp$hash$settled$$HashSettled","$$rsvp$asap$$useNextTick","process","nextTick","$$rsvp$asap$$flush","$$rsvp$asap$$useMutationObserver","iterations","observer","$$rsvp$asap$$BrowserMutationObserver","node","document","createTextNode","observe","characterData","data","$$rsvp$asap$$useMessageChannel","channel","MessageChannel","port1","onmessage","port2","postMessage","$$rsvp$asap$$useSetTimeout","setTimeout","$$rsvp$asap$$len","$$rsvp$asap$$queue","$$rsvp$$async","$$rsvp$$on","$$rsvp$$off","off","$$rsvp$events$$default","mixin","trigger","eventName","allCallbacks","push","index","splice","options","$$utils$$_isArray","isArray","Object","prototype","toString","$$utils$$isArray","$$utils$$now","Date","now","getTime","$$utils$$o_create","create","o","Error","$$instrument$$queue","payload","guid","_guidKey","childGuid","timeStamp","stack","entry","$$enumerator$$default","_eachEntry","c","_settledAt","_willSettleAt","resolve","_makeResult","enumerator","$$promise$all$$default","$$promise$race$$default","$$promise$resolve$$default","$$promise$reject$$default","$$rsvp$promise$$guidKey","cast","race","reject","catch","finally","$$rsvp$node$$GET_THEN_ERROR","$$rsvp$node$$default","fn","promiseInput","p","err","val","__proto__","$$rsvp$all$$default","array","$$rsvp$all$settled$$default","$$rsvp$race$$default","$$promise$hash$$default","results","key","hasOwnProperty","$$rsvp$hash$$default","$$rsvp$asap$$scheduleFlush","$$rsvp$hash$settled$$default","$$rsvp$rethrow$$default","$$rsvp$defer$$default","deferred","$$rsvp$map$$default","promises","mapFn","values","$$rsvp$resolve$$default","$$rsvp$reject$$default","$$rsvp$filter$$default","filterFn","filtered","newLength","$$rsvp$asap$$default","$$rsvp$asap$$browserGlobal","window","MutationObserver","WebKitMutationObserver","$$rsvp$asap$$isWorker","Uint8ClampedArray","importScripts","$$rsvp$$callbacks","$$rsvp$$eventName","rsvp$umd$$RSVP","Promise","allSettled","hash","hashSettled","denodeify","map","filter","rethrow","defer","EventTarget","configure","define","amd","module","exports","EPUBJS","VERSION","plugins","filePath","Render","root","ePub","bookPath","ArrayBuffer","Book","settings","core","defaults","bookKey","packageUrl","storage","fromStorage","saved","online","contained","width","height","layoutOveride","orientation","minSpreadWidth","gap","version","restore","reload","goto","styles","headTags","withCredentials","render_method","EPUBJSVERSION","spinePos","stored","navigator","onLine","networkListeners","ready","manifest","RSVP","spine","metadata","cover","toc","pageList","readyPromises","pagination","Pagination","pageListReady","_ready","bind","isRendered","_q","queue","_rendering","_displayQ","_moving","_gotoQ","renderer","Renderer","setMinSpreadWidth","setGap","listenToRenderer","defer_opened","opened","store","open","addEventListener","unload","forceReload","epubpackage","book","isContained","bookUrl","unarchive","loadPackage","urlFrom","localStorage","packageXml","identifier","packageIdentifier","restored","unpack","_registerReplacements","_containerPath","parse","Parser","containerPath","loadXml","containerXml","container","paths","contentsPath","basePath","packagePath","encoding","console","contents","packageContents","spineIndexByURL","generateBookKey","globalLayoutProperties","parseLayoutProperties","coverPath","spineNodeIndex","locations","Locations","navPath","navUrl","navHtml","nav","epubcfi","EpubCFI","wait","forEach","pg","cfi","generateCfiFromHref","href","tocPath","tocUrl","tocXml","createHiddenRender","_width","_height","hiddenContainer","hiddenEl","box","element","getBoundingClientRect","forceSingle","createElement","style","visibility","overflow","appendChild","initialize","generatePageList","pager","spineLength","currentPage","nextChapter","chapter","next","done","Chapter","displayChapter","pageMap","item","start","page","spreads","end","remove","removeChild","generatePagination","defered","loadPagination","pagelistJSON","JSON","getPageList","getMetadata","getToc","Events","range","startPage","endPage","percent","pageRange","pageFromCfi","percentageFromPage","anchorPage","percentage","loadChange","url","uri","chapterUri","currentChapter","absolute","path","warn","filename","afterLoad","render","docEl","beforeDisplay","afterDisplay","reformat","unlistenToRenderer","getXml","zip","request","base","protocol","fromRoot","location","origin","host","baseTag","getElementsByTagName","resolveUrl","pathname","Unarchiver","extension","isSaved","storedSettings","getItem","saveContents","setItem","stringify","removeSavedContents","removeItem","renderTo","elem","rendered","isElement","getEl","direction","setDirection","_rendered","startDisplay","display","previousLocationCfi","gotoCfi","fetch","fromStore","len","clearSaved","chap","pos","enqueue","isNumber","_needsAssetReplacement","registerHook","replace","head","resources","svg","lastPage","preloadNextChapter","dequeue","message","nextPage","prevPage","prev","prevChapter","linear","getCurrentLocationCfi","currentLocationCfi","target","indexOf","gotoPercentage","parseInt","substring","isNaN","gotoPage","gotoHref","cfiString","spineItem","split","section","relativeURL","firstPage","cfiFromPage","pageFromPercentage","storeOffline","assets","put","availableOffline","toStorage","isStored","token","Storage","credentials","offline","setStyle","prefixed","noreflow","removeStyle","addHeadTag","tag","attrs","useSpreads","use","_use","force","load","destroy","removeEventListener","flush","applyStyles","applyHeadTags","hrefs","layout","spread","spineObject","id","cfiBase","properties","manifestProperties","pages","loaded","Hooks","getHooks","caches","_store","_credentials","xml","setDocument","doc","querySelector","setAttribute","insertBefore","firstChild","triggerHooks","serializer","XMLSerializer","serializeToString","tempUrl","getUrl","setPages","num","getPages","getID","ID","revokeUrl","_document","namespaceURI","doctype","implementation","createDocument","importNode","documentElement","evaluate","cfiFromRange","_range","startXpath","endXpath","startContainer","endContainer","cleanEndTextContent","getElementXPath","nsResolver","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","collapsed","createRange","setStart","startOffset","setEnd","endOffset","log","cleanStartTextContent","cleanStringForXpath","textContent","generateCfiFromRange","find","_query","matches","query","toLowerCase","excerpt","text","last","limit","textSprint","func","treeWalker","createTreeWalker","NodeFilter","SHOW_TEXT","acceptNode","test","FILTER_ACCEPT","FILTER_REJECT","nextNode","finished","progress","items","querySelectorAll","slice","count","called","after","full","replaceWithStored","attr","_oldUrls","_newUrls","_cache","_uri","_chapterBase","_attr","_wait","clone","link","src","getAttribute","replaceUrl","timeout","onload","clearTimeout","onerror","getElementById","getEls","classes","getElementsByClassName","type","supportsURL","URL","BLOB_RESPONSE","xhr","XMLHttpRequest","xhrPrototype","handler","r","readyState","DONE","status","response","responseXML","DOMParser","parseFromString","Blob","defineProperty","responseType","setRequestHeader","onreadystatechange","send","toArray","arr","member","newitm","ident","withoutProtocol","dot","firstSlash","directory","fragment","blob","doubleSlash","search","folder","lastIndexOf","lastSlash","dataURLToBlob","dataURL","parts","contentType","raw","rawLength","uInt8Array","BASE64_MARKER","atob","Uint8Array","charCodeAt","addScript","body","addScripts","srcArr","total","curr","cb","addCss","rel","unprefixed","vendors","upper","toUpperCase","segments","folders","pop","concat","join","uuid","d","Math","random","floor","insert","compareFunction","locationOf","_start","_end","compared","pivot","b","indexOfSorted","_scope","scope","funcName","context","inwait","shift","clear","getElementTreeXPath","nodeName","tagName","pathIndex","isXhtml","ownerDocument","nodeType","Node","TEXT_NODE","indexOfTextNode","parentNode","sibling","previousSibling","DOCUMENT_TYPE_NODE","prefix","ns","xhtml","epub","str","match","part","textNode","sib","children","childNodes","source","prop","extend","sources","getOwnPropertyNames","propName","getOwnPropertyDescriptor","n","parseFloat","isFinite","isString","String","props","keys","cfiStr","generateChapterComponent","_spineNodeIndex","_pos","generatePathComponent","steps","segment","generateCfiFromElement","pathTo","unshift","getChapterComponent","splitStr","getPathComponent","pathComponent","getCharecterOffsetComponent","chapSegment","chapterComponent","charecterOffsetComponent","assertion","chapId","endInt","parseStep","has_brackets","spineId","step","characterOffset","textLocationAssertion","addMarker","_doc","_marker","lastStep","marker","createMarker","findParent","splitText","classList","add","removeMarker","contains","nextSib","nextSibling","prevSib","sections","compare","cfiOne","cfiTwo","generateCfiFromTextNode","anchor","offset","generateCfiFromRangeAnchor","anchorNode","anchorOffset","startElement","startSteps","startPath","startIndex","endElement","endSteps","endPath","endIndex","generateXpathFromSteps","xpath","generateQueryFromSteps","generateRangeFromCfi","textLength","startContainerParent","debug","selectNode","isCfiString","el","events","createEvent","tell","listen","deafen","listenUntil","evt","CustomEvent","msg","dispatchEvent","bindto","OnEvt","OffEvt","unlisten","hooks","plugs","plugType","hook","toAdd","toFront","removeHook","toRemove","passed","countdown","register","Layout","Reflowable","spreadWidth","format","_gap","columnAxis","columnGap","columnWidth","columnFill","colWidth","pageWidth","pageHeight","calculatePages","totalWidth","displayedPages","scrollWidth","ceil","pageCount","ReflowableSpreads","divisor","fullWidth","Fixed","content","viewport","hasAttribute","_locations","break","_current","generate","_currentCfi","currentLocation","counter","sprint","dist","locationFromCfi","percentageFromCfi","loc","percentageFromLocation","cfiFromLocation","cfiFromPercentage","save","getCurrent","setCurrent","get","set","totalPages","round","baseUrl","rootfile","fullpath","xmlEncoding","metadataNode","getElementText","manifestNode","spineNode","findNavPath","findTocPath","findCoverPath","tocId","bookTitle","creator","description","pubdate","publisher","language","rights","modified_date","querySelectorText","found","getElementsByTagNameNS","nodeValue","q","manifestXml","selected","spineXml","Id","propArray","manifestProps","manifestPropArray","vert","querySelectorByType","html","getAttributeNS","bookSpine","navElement","navItems","list","navItem","subitems","navPoints","tocItem","navLabel","pageListItem","isCfi","Iframe","iframe","bodyEl","leftPos","scrolling","seamless","border","isMobile","userAgent","transform","contentDocument","headEl","contentWindow","resized","setLeft","margin","dir","right","write","close","baseEl","resize","totalHeight","scrollHeight","setPageDimensions","defaultView","scrollTo","tagEl","getPageNumberByElement","left","getPageNumberByRect","boundingClientRect","getBaseElement","getDocumentElement","isElementVisible","rect","scroll","bool","renderMethod","hidden","listenedEvents","upEvent","downEvent","isForcedSingle","onResized","layoutSettings","initWidth","initHeight","clientWidth","clientHeight","globalLayout","removeEventListeners","removeSelectionListeners","chapterPos","currentChapterCfiBase","reconcileLayoutSettings","layoutMethod","determineLayout","visible","formated","addEventListeners","addSelectionListeners","queued","updatePages","visibleRangeCfi","getVisibleRangeCfi","global","property","rendition","determineSpreads","mapPage","headTag","pageByElement","firstElementisTextNode","leng","trim","isGoodNode","embeddedElements","walk","y","prevNode","startNode","STOP","ITER","containsPoint","childElementCount","SHOW_ELEMENT","prevRange","elLimit","check","elPos","elRange","ELEMENT_NODE","selectNodeContents","checkText","ranges","splitTextNodeIntoWordsRanges","collapse","indexOfBreakableChar","startPosition","whiteCharacters","charAt","rangePosition","getClientRects","getPageCfi","startRange","getRange","forceElement","caretPositionFromPoint","caretRangeFromPoint","visibileEl","findElementAfter","offsetNode","pagesInCurrentChapter","pgs","currentRenderedPage","getRenderedPagesLeft","pagesLeft","endRange","findFirstVisible","startEl","setSize","triggerEvent","onSelectionChange","selectionEndTimeout","selectedRange","getSelection","cutoff","replacments","relative","isRelative","onclick","links","srcs","stylesheets","getText","cssUrls","newText","_URL","webkitURL","mozURL","createObjectURL","replaced","checkRequirements","urlCache","current","encodedUrl","encodeURIComponent","localforage","buffer","mimeType","getMimeType","reader","FileReader","readAsText","parser","fromCache","revokeObjectURL","zipUrl","JSZip","decodededUrl","decodeURIComponent","unarchiver","file","asUint8Array","asText","afterSaved","that","delay","saveEntryFileToStorage","table","application","ecmascript","javascript","ogg","pdf","postscript","rdf+xml","smil","xhtml+xml","x-httpd-eruby","x-latex","x-maker","x-object","x-shockwave-flash","x-silverlight","epub+zip","font-tdpfr","inkml+xml","json","jsonml+json","mathml+xml","metalink+xml","mp4","oebps-package+xml","omdoc+xml","oxps","vnd.amazon.ebook","widget","x-dtbncx+xml","x-dtbook+xml","x-dtbresource+xml","x-font-bdf","x-font-ghostscript","x-font-linux-psf","x-font-otf","x-font-pcf","x-font-snf","x-font-ttf","x-font-type1","x-font-woff","x-mobipocket-ebook","x-mspublisher","x-nzb","x-tgif","xaml+xml","xml-dtd","xproc+xml","xslt+xml","internet-property-stream","x-compress","x-compressed","x-gzip","audio","flac","midi","mpeg","mpegurl","x-aiff","x-ms-wma","x-wav","adpcm","webm","x-aac","x-caf","x-matroska","x-pn-realaudio-plugin","xm","mid","image","gif","ief","jpeg","pcx","png","svg+xml","tiff","x-icon","bmp","webp","x-pict","x-tga","cis-cod","rfc822","cache-manifest","calendar","css","csv","h323","iuls","mathml","plain","richtext","tab-separated-values","x-bibtex","x-dsrc","x-diff","x-haskell","x-java","x-literate-haskell","x-moc","x-pascal","x-pcs-gcd","x-perl","x-python","x-scala","x-setext","x-tcl","x-tex","x-vcard","sgml","x-c","x-fortran","x-opml","x-nfo","x-sfv","x-uuencode","webviewhtml","video","quicktime","vnd.mpegurl","x-flv","x-la-asf","x-mng","x-ms-asf","x-ms-wm","x-ms-wmv","x-ms-wmx","x-ms-wvx","x-msvideo","x-sgi-movie","3gpp2","h261","h263","h264","jpm","mj2","vnd.ms-playready.media.pyv","vnd.uvvu.mp4","vnd.vivo","x-f4v","x-m4v","x-ms-vob","x-smv","mimeTypes","subtype","defaultValue"],"mappings":"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"} \ No newline at end of file diff --git a/reader/js/epub.min.js b/reader/js/epub.min.js index 9285fa5..13c27ee 100644 --- a/reader/js/epub.min.js +++ b/reader/js/epub.min.js @@ -3,49 +3,13 @@ * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors * @license Licensed under MIT license * See https://raw.githubusercontent.com/tildeio/rsvp.js/master/LICENSE - * @version 3.1.0 + * @version 3.0.14 */ (function() { "use strict"; - function lib$rsvp$utils$$objectOrFunction(x) { - return typeof x === 'function' || (typeof x === 'object' && x !== null); - } - function lib$rsvp$utils$$isFunction(x) { - return typeof x === 'function'; - } - - function lib$rsvp$utils$$isMaybeThenable(x) { - return typeof x === 'object' && x !== null; - } - - var lib$rsvp$utils$$_isArray; - if (!Array.isArray) { - lib$rsvp$utils$$_isArray = function (x) { - return Object.prototype.toString.call(x) === '[object Array]'; - }; - } else { - lib$rsvp$utils$$_isArray = Array.isArray; - } - - var lib$rsvp$utils$$isArray = lib$rsvp$utils$$_isArray; - - var lib$rsvp$utils$$now = Date.now || function() { return new Date().getTime(); }; - - function lib$rsvp$utils$$F() { } - - var lib$rsvp$utils$$o_create = (Object.create || function (o) { - if (arguments.length > 1) { - throw new Error('Second argument not supported'); - } - if (typeof o !== 'object') { - throw new TypeError('Argument must be an object'); - } - lib$rsvp$utils$$F.prototype = o; - return new lib$rsvp$utils$$F(); - }); - function lib$rsvp$events$$indexOf(callbacks, callback) { + function $$rsvp$events$$indexOf(callbacks, callback) { for (var i=0, l=callbacks.length; i 1) { + throw new Error('Second argument not supported'); + } + if (typeof o !== 'object') { + throw new TypeError('Argument must be an object'); + } + $$utils$$F.prototype = o; + return new $$utils$$F(); + }); + + var $$instrument$$queue = []; + + var $$instrument$$default = function instrument(eventName, promise, child) { + if (1 === $$instrument$$queue.push({ + name: eventName, + payload: { + guid: promise._guidKey + promise._id, + eventName: eventName, + detail: promise._result, + childGuid: child && promise._guidKey + child._id, + label: promise._label, + timeStamp: $$utils$$now(), + stack: new Error(promise._label).stack + }})) { + + setTimeout(function() { + var entry; + for (var i = 0; i < $$instrument$$queue.length; i++) { + entry = $$instrument$$queue[i]; + $$rsvp$config$$config.trigger(entry.name, entry.payload); + } + $$instrument$$queue.length = 0; + }, 50); } + }; - lib$rsvp$config$$config['trigger'](entry.name, entry.payload); - } - lib$rsvp$instrument$$queue.length = 0; - }, 50); - } + function $$$internal$$noop() {} + var $$$internal$$PENDING = void 0; + var $$$internal$$FULFILLED = 1; + var $$$internal$$REJECTED = 2; + var $$$internal$$GET_THEN_ERROR = new $$$internal$$ErrorObject(); - function lib$rsvp$instrument$$instrument(eventName, promise, child) { - if (1 === lib$rsvp$instrument$$queue.push({ - name: eventName, - payload: { - key: promise._guidKey, - id: promise._id, - eventName: eventName, - detail: promise._result, - childId: child && child._id, - label: promise._label, - timeStamp: lib$rsvp$utils$$now(), - error: lib$rsvp$config$$config["instrument-with-stack"] ? new Error(promise._label) : null - }})) { - lib$rsvp$instrument$$scheduleFlush(); - } - } - var lib$rsvp$instrument$$default = lib$rsvp$instrument$$instrument; - - function lib$rsvp$$internal$$withOwnPromise() { - return new TypeError('A promises callback cannot return that same promise.'); - } - - function lib$rsvp$$internal$$noop() {} - - var lib$rsvp$$internal$$PENDING = void 0; - var lib$rsvp$$internal$$FULFILLED = 1; - var lib$rsvp$$internal$$REJECTED = 2; - - var lib$rsvp$$internal$$GET_THEN_ERROR = new lib$rsvp$$internal$$ErrorObject(); - - function lib$rsvp$$internal$$getThen(promise) { + function $$$internal$$getThen(promise) { try { return promise.then; } catch(error) { - lib$rsvp$$internal$$GET_THEN_ERROR.error = error; - return lib$rsvp$$internal$$GET_THEN_ERROR; + $$$internal$$GET_THEN_ERROR.error = error; + return $$$internal$$GET_THEN_ERROR; } } - function lib$rsvp$$internal$$tryThen(then, value, fulfillmentHandler, rejectionHandler) { + function $$$internal$$tryThen(then, value, fulfillmentHandler, rejectionHandler) { try { then.call(value, fulfillmentHandler, rejectionHandler); } catch(e) { @@ -339,129 +316,129 @@ } } - function lib$rsvp$$internal$$handleForeignThenable(promise, thenable, then) { - lib$rsvp$config$$config.async(function(promise) { + function $$$internal$$handleForeignThenable(promise, thenable, then) { + $$rsvp$config$$config.async(function(promise) { var sealed = false; - var error = lib$rsvp$$internal$$tryThen(then, thenable, function(value) { + var error = $$$internal$$tryThen(then, thenable, function(value) { if (sealed) { return; } sealed = true; if (thenable !== value) { - lib$rsvp$$internal$$resolve(promise, value); + $$$internal$$resolve(promise, value); } else { - lib$rsvp$$internal$$fulfill(promise, value); + $$$internal$$fulfill(promise, value); } }, function(reason) { if (sealed) { return; } sealed = true; - lib$rsvp$$internal$$reject(promise, reason); + $$$internal$$reject(promise, reason); }, 'Settle: ' + (promise._label || ' unknown promise')); if (!sealed && error) { sealed = true; - lib$rsvp$$internal$$reject(promise, error); + $$$internal$$reject(promise, error); } }, promise); } - function lib$rsvp$$internal$$handleOwnThenable(promise, thenable) { - if (thenable._state === lib$rsvp$$internal$$FULFILLED) { - lib$rsvp$$internal$$fulfill(promise, thenable._result); - } else if (thenable._state === lib$rsvp$$internal$$REJECTED) { - thenable._onError = null; - lib$rsvp$$internal$$reject(promise, thenable._result); + function $$$internal$$handleOwnThenable(promise, thenable) { + if (thenable._state === $$$internal$$FULFILLED) { + $$$internal$$fulfill(promise, thenable._result); + } else if (promise._state === $$$internal$$REJECTED) { + $$$internal$$reject(promise, thenable._result); } else { - lib$rsvp$$internal$$subscribe(thenable, undefined, function(value) { + $$$internal$$subscribe(thenable, undefined, function(value) { if (thenable !== value) { - lib$rsvp$$internal$$resolve(promise, value); + $$$internal$$resolve(promise, value); } else { - lib$rsvp$$internal$$fulfill(promise, value); + $$$internal$$fulfill(promise, value); } }, function(reason) { - lib$rsvp$$internal$$reject(promise, reason); + $$$internal$$reject(promise, reason); }); } } - function lib$rsvp$$internal$$handleMaybeThenable(promise, maybeThenable) { + function $$$internal$$handleMaybeThenable(promise, maybeThenable) { if (maybeThenable.constructor === promise.constructor) { - lib$rsvp$$internal$$handleOwnThenable(promise, maybeThenable); + $$$internal$$handleOwnThenable(promise, maybeThenable); } else { - var then = lib$rsvp$$internal$$getThen(maybeThenable); + var then = $$$internal$$getThen(maybeThenable); - if (then === lib$rsvp$$internal$$GET_THEN_ERROR) { - lib$rsvp$$internal$$reject(promise, lib$rsvp$$internal$$GET_THEN_ERROR.error); + if (then === $$$internal$$GET_THEN_ERROR) { + $$$internal$$reject(promise, $$$internal$$GET_THEN_ERROR.error); } else if (then === undefined) { - lib$rsvp$$internal$$fulfill(promise, maybeThenable); - } else if (lib$rsvp$utils$$isFunction(then)) { - lib$rsvp$$internal$$handleForeignThenable(promise, maybeThenable, then); + $$$internal$$fulfill(promise, maybeThenable); + } else if ($$utils$$isFunction(then)) { + $$$internal$$handleForeignThenable(promise, maybeThenable, then); } else { - lib$rsvp$$internal$$fulfill(promise, maybeThenable); + $$$internal$$fulfill(promise, maybeThenable); } } } - function lib$rsvp$$internal$$resolve(promise, value) { + function $$$internal$$resolve(promise, value) { if (promise === value) { - lib$rsvp$$internal$$fulfill(promise, value); - } else if (lib$rsvp$utils$$objectOrFunction(value)) { - lib$rsvp$$internal$$handleMaybeThenable(promise, value); + $$$internal$$fulfill(promise, value); + } else if ($$utils$$objectOrFunction(value)) { + $$$internal$$handleMaybeThenable(promise, value); } else { - lib$rsvp$$internal$$fulfill(promise, value); + $$$internal$$fulfill(promise, value); } } - function lib$rsvp$$internal$$publishRejection(promise) { - if (promise._onError) { - promise._onError(promise._result); + function $$$internal$$publishRejection(promise) { + if (promise._onerror) { + promise._onerror(promise._result); } - lib$rsvp$$internal$$publish(promise); + $$$internal$$publish(promise); } - function lib$rsvp$$internal$$fulfill(promise, value) { - if (promise._state !== lib$rsvp$$internal$$PENDING) { return; } + function $$$internal$$fulfill(promise, value) { + if (promise._state !== $$$internal$$PENDING) { return; } promise._result = value; - promise._state = lib$rsvp$$internal$$FULFILLED; + promise._state = $$$internal$$FULFILLED; if (promise._subscribers.length === 0) { - if (lib$rsvp$config$$config.instrument) { - lib$rsvp$instrument$$default('fulfilled', promise); + if ($$rsvp$config$$config.instrument) { + $$instrument$$default('fulfilled', promise); } } else { - lib$rsvp$config$$config.async(lib$rsvp$$internal$$publish, promise); + $$rsvp$config$$config.async($$$internal$$publish, promise); } } - function lib$rsvp$$internal$$reject(promise, reason) { - if (promise._state !== lib$rsvp$$internal$$PENDING) { return; } - promise._state = lib$rsvp$$internal$$REJECTED; + function $$$internal$$reject(promise, reason) { + if (promise._state !== $$$internal$$PENDING) { return; } + promise._state = $$$internal$$REJECTED; promise._result = reason; - lib$rsvp$config$$config.async(lib$rsvp$$internal$$publishRejection, promise); + + $$rsvp$config$$config.async($$$internal$$publishRejection, promise); } - function lib$rsvp$$internal$$subscribe(parent, child, onFulfillment, onRejection) { + function $$$internal$$subscribe(parent, child, onFulfillment, onRejection) { var subscribers = parent._subscribers; var length = subscribers.length; - parent._onError = null; + parent._onerror = null; subscribers[length] = child; - subscribers[length + lib$rsvp$$internal$$FULFILLED] = onFulfillment; - subscribers[length + lib$rsvp$$internal$$REJECTED] = onRejection; + subscribers[length + $$$internal$$FULFILLED] = onFulfillment; + subscribers[length + $$$internal$$REJECTED] = onRejection; if (length === 0 && parent._state) { - lib$rsvp$config$$config.async(lib$rsvp$$internal$$publish, parent); + $$rsvp$config$$config.async($$$internal$$publish, parent); } } - function lib$rsvp$$internal$$publish(promise) { + function $$$internal$$publish(promise) { var subscribers = promise._subscribers; var settled = promise._state; - if (lib$rsvp$config$$config.instrument) { - lib$rsvp$instrument$$default(settled === lib$rsvp$$internal$$FULFILLED ? 'fulfilled' : 'rejected', promise); + if ($$rsvp$config$$config.instrument) { + $$instrument$$default(settled === $$$internal$$FULFILLED ? 'fulfilled' : 'rejected', promise); } if (subscribers.length === 0) { return; } @@ -473,7 +450,7 @@ callback = subscribers[i + settled]; if (child) { - lib$rsvp$$internal$$invokeCallback(settled, child, callback, detail); + $$$internal$$invokeCallback(settled, child, callback, detail); } else { callback(detail); } @@ -482,29 +459,29 @@ promise._subscribers.length = 0; } - function lib$rsvp$$internal$$ErrorObject() { + function $$$internal$$ErrorObject() { this.error = null; } - var lib$rsvp$$internal$$TRY_CATCH_ERROR = new lib$rsvp$$internal$$ErrorObject(); + var $$$internal$$TRY_CATCH_ERROR = new $$$internal$$ErrorObject(); - function lib$rsvp$$internal$$tryCatch(callback, detail) { + function $$$internal$$tryCatch(callback, detail) { try { return callback(detail); } catch(e) { - lib$rsvp$$internal$$TRY_CATCH_ERROR.error = e; - return lib$rsvp$$internal$$TRY_CATCH_ERROR; + $$$internal$$TRY_CATCH_ERROR.error = e; + return $$$internal$$TRY_CATCH_ERROR; } } - function lib$rsvp$$internal$$invokeCallback(settled, promise, callback, detail) { - var hasCallback = lib$rsvp$utils$$isFunction(callback), + function $$$internal$$invokeCallback(settled, promise, callback, detail) { + var hasCallback = $$utils$$isFunction(callback), value, error, succeeded, failed; if (hasCallback) { - value = lib$rsvp$$internal$$tryCatch(callback, detail); + value = $$$internal$$tryCatch(callback, detail); - if (value === lib$rsvp$$internal$$TRY_CATCH_ERROR) { + if (value === $$$internal$$TRY_CATCH_ERROR) { failed = true; error = value.error; value = null; @@ -513,7 +490,7 @@ } if (promise === value) { - lib$rsvp$$internal$$reject(promise, lib$rsvp$$internal$$withOwnPromise()); + $$$internal$$reject(promise, new TypeError('A promises callback cannot return that same promise.')); return; } @@ -522,184 +499,175 @@ succeeded = true; } - if (promise._state !== lib$rsvp$$internal$$PENDING) { + if (promise._state !== $$$internal$$PENDING) { // noop } else if (hasCallback && succeeded) { - lib$rsvp$$internal$$resolve(promise, value); + $$$internal$$resolve(promise, value); } else if (failed) { - lib$rsvp$$internal$$reject(promise, error); - } else if (settled === lib$rsvp$$internal$$FULFILLED) { - lib$rsvp$$internal$$fulfill(promise, value); - } else if (settled === lib$rsvp$$internal$$REJECTED) { - lib$rsvp$$internal$$reject(promise, value); + $$$internal$$reject(promise, error); + } else if (settled === $$$internal$$FULFILLED) { + $$$internal$$fulfill(promise, value); + } else if (settled === $$$internal$$REJECTED) { + $$$internal$$reject(promise, value); } } - function lib$rsvp$$internal$$initializePromise(promise, resolver) { - var resolved = false; + function $$$internal$$initializePromise(promise, resolver) { try { resolver(function resolvePromise(value){ - if (resolved) { return; } - resolved = true; - lib$rsvp$$internal$$resolve(promise, value); + $$$internal$$resolve(promise, value); }, function rejectPromise(reason) { - if (resolved) { return; } - resolved = true; - lib$rsvp$$internal$$reject(promise, reason); + $$$internal$$reject(promise, reason); }); } catch(e) { - lib$rsvp$$internal$$reject(promise, e); + $$$internal$$reject(promise, e); } } - function lib$rsvp$enumerator$$makeSettledResult(state, position, value) { - if (state === lib$rsvp$$internal$$FULFILLED) { + function $$enumerator$$makeSettledResult(state, position, value) { + if (state === $$$internal$$FULFILLED) { return { state: 'fulfilled', value: value }; } else { - return { + return { state: 'rejected', reason: value }; } } - function lib$rsvp$enumerator$$Enumerator(Constructor, input, abortOnReject, label) { - var enumerator = this; + function $$enumerator$$Enumerator(Constructor, input, abortOnReject, label) { + this._instanceConstructor = Constructor; + this.promise = new Constructor($$$internal$$noop, label); + this._abortOnReject = abortOnReject; - enumerator._instanceConstructor = Constructor; - enumerator.promise = new Constructor(lib$rsvp$$internal$$noop, label); - enumerator._abortOnReject = abortOnReject; + if (this._validateInput(input)) { + this._input = input; + this.length = input.length; + this._remaining = input.length; - if (enumerator._validateInput(input)) { - enumerator._input = input; - enumerator.length = input.length; - enumerator._remaining = input.length; + this._init(); - enumerator._init(); - - if (enumerator.length === 0) { - lib$rsvp$$internal$$fulfill(enumerator.promise, enumerator._result); + if (this.length === 0) { + $$$internal$$fulfill(this.promise, this._result); } else { - enumerator.length = enumerator.length || 0; - enumerator._enumerate(); - if (enumerator._remaining === 0) { - lib$rsvp$$internal$$fulfill(enumerator.promise, enumerator._result); + this.length = this.length || 0; + this._enumerate(); + if (this._remaining === 0) { + $$$internal$$fulfill(this.promise, this._result); } } } else { - lib$rsvp$$internal$$reject(enumerator.promise, enumerator._validationError()); + $$$internal$$reject(this.promise, this._validationError()); } } - var lib$rsvp$enumerator$$default = lib$rsvp$enumerator$$Enumerator; - - lib$rsvp$enumerator$$Enumerator.prototype._validateInput = function(input) { - return lib$rsvp$utils$$isArray(input); + $$enumerator$$Enumerator.prototype._validateInput = function(input) { + return $$utils$$isArray(input); }; - lib$rsvp$enumerator$$Enumerator.prototype._validationError = function() { + $$enumerator$$Enumerator.prototype._validationError = function() { return new Error('Array Methods must be provided an Array'); }; - lib$rsvp$enumerator$$Enumerator.prototype._init = function() { + $$enumerator$$Enumerator.prototype._init = function() { this._result = new Array(this.length); }; - lib$rsvp$enumerator$$Enumerator.prototype._enumerate = function() { - var enumerator = this; - var length = enumerator.length; - var promise = enumerator.promise; - var input = enumerator._input; + var $$enumerator$$default = $$enumerator$$Enumerator; - for (var i = 0; promise._state === lib$rsvp$$internal$$PENDING && i < length; i++) { - enumerator._eachEntry(input[i], i); + $$enumerator$$Enumerator.prototype._enumerate = function() { + var length = this.length; + var promise = this.promise; + var input = this._input; + + for (var i = 0; promise._state === $$$internal$$PENDING && i < length; i++) { + this._eachEntry(input[i], i); } }; - lib$rsvp$enumerator$$Enumerator.prototype._eachEntry = function(entry, i) { - var enumerator = this; - var c = enumerator._instanceConstructor; - if (lib$rsvp$utils$$isMaybeThenable(entry)) { - if (entry.constructor === c && entry._state !== lib$rsvp$$internal$$PENDING) { - entry._onError = null; - enumerator._settledAt(entry._state, i, entry._result); + $$enumerator$$Enumerator.prototype._eachEntry = function(entry, i) { + var c = this._instanceConstructor; + if ($$utils$$isMaybeThenable(entry)) { + if (entry.constructor === c && entry._state !== $$$internal$$PENDING) { + entry._onerror = null; + this._settledAt(entry._state, i, entry._result); } else { - enumerator._willSettleAt(c.resolve(entry), i); + this._willSettleAt(c.resolve(entry), i); } } else { - enumerator._remaining--; - enumerator._result[i] = enumerator._makeResult(lib$rsvp$$internal$$FULFILLED, i, entry); + this._remaining--; + this._result[i] = this._makeResult($$$internal$$FULFILLED, i, entry); } }; - lib$rsvp$enumerator$$Enumerator.prototype._settledAt = function(state, i, value) { - var enumerator = this; - var promise = enumerator.promise; + $$enumerator$$Enumerator.prototype._settledAt = function(state, i, value) { + var promise = this.promise; - if (promise._state === lib$rsvp$$internal$$PENDING) { - enumerator._remaining--; + if (promise._state === $$$internal$$PENDING) { + this._remaining--; - if (enumerator._abortOnReject && state === lib$rsvp$$internal$$REJECTED) { - lib$rsvp$$internal$$reject(promise, value); + if (this._abortOnReject && state === $$$internal$$REJECTED) { + $$$internal$$reject(promise, value); } else { - enumerator._result[i] = enumerator._makeResult(state, i, value); + this._result[i] = this._makeResult(state, i, value); } } - if (enumerator._remaining === 0) { - lib$rsvp$$internal$$fulfill(promise, enumerator._result); + if (this._remaining === 0) { + $$$internal$$fulfill(promise, this._result); } }; - lib$rsvp$enumerator$$Enumerator.prototype._makeResult = function(state, i, value) { + $$enumerator$$Enumerator.prototype._makeResult = function(state, i, value) { return value; }; - lib$rsvp$enumerator$$Enumerator.prototype._willSettleAt = function(promise, i) { + $$enumerator$$Enumerator.prototype._willSettleAt = function(promise, i) { var enumerator = this; - lib$rsvp$$internal$$subscribe(promise, undefined, function(value) { - enumerator._settledAt(lib$rsvp$$internal$$FULFILLED, i, value); + $$$internal$$subscribe(promise, undefined, function(value) { + enumerator._settledAt($$$internal$$FULFILLED, i, value); }, function(reason) { - enumerator._settledAt(lib$rsvp$$internal$$REJECTED, i, reason); + enumerator._settledAt($$$internal$$REJECTED, i, reason); }); }; - function lib$rsvp$promise$all$$all(entries, label) { - return new lib$rsvp$enumerator$$default(this, entries, true /* abort on reject */, label).promise; - } - var lib$rsvp$promise$all$$default = lib$rsvp$promise$all$$all; - function lib$rsvp$promise$race$$race(entries, label) { + + var $$promise$all$$default = function all(entries, label) { + return new $$enumerator$$default(this, entries, true /* abort on reject */, label).promise; + }; + + var $$promise$race$$default = function race(entries, label) { /*jshint validthis:true */ var Constructor = this; - var promise = new Constructor(lib$rsvp$$internal$$noop, label); + var promise = new Constructor($$$internal$$noop, label); - if (!lib$rsvp$utils$$isArray(entries)) { - lib$rsvp$$internal$$reject(promise, new TypeError('You must pass an array to race.')); + if (!$$utils$$isArray(entries)) { + $$$internal$$reject(promise, new TypeError('You must pass an array to race.')); return promise; } var length = entries.length; function onFulfillment(value) { - lib$rsvp$$internal$$resolve(promise, value); + $$$internal$$resolve(promise, value); } function onRejection(reason) { - lib$rsvp$$internal$$reject(promise, reason); + $$$internal$$reject(promise, reason); } - for (var i = 0; promise._state === lib$rsvp$$internal$$PENDING && i < length; i++) { - lib$rsvp$$internal$$subscribe(Constructor.resolve(entries[i]), undefined, onFulfillment, onRejection); + for (var i = 0; promise._state === $$$internal$$PENDING && i < length; i++) { + $$$internal$$subscribe(Constructor.resolve(entries[i]), undefined, onFulfillment, onRejection); } return promise; - } - var lib$rsvp$promise$race$$default = lib$rsvp$promise$race$$race; - function lib$rsvp$promise$resolve$$resolve(object, label) { + }; + + var $$promise$resolve$$default = function resolve(object, label) { /*jshint validthis:true */ var Constructor = this; @@ -707,78 +675,175 @@ return object; } - var promise = new Constructor(lib$rsvp$$internal$$noop, label); - lib$rsvp$$internal$$resolve(promise, object); + var promise = new Constructor($$$internal$$noop, label); + $$$internal$$resolve(promise, object); return promise; - } - var lib$rsvp$promise$resolve$$default = lib$rsvp$promise$resolve$$resolve; - function lib$rsvp$promise$reject$$reject(reason, label) { + }; + + var $$promise$reject$$default = function reject(reason, label) { /*jshint validthis:true */ var Constructor = this; - var promise = new Constructor(lib$rsvp$$internal$$noop, label); - lib$rsvp$$internal$$reject(promise, reason); + var promise = new Constructor($$$internal$$noop, label); + $$$internal$$reject(promise, reason); return promise; - } - var lib$rsvp$promise$reject$$default = lib$rsvp$promise$reject$$reject; + }; - var lib$rsvp$promise$$guidKey = 'rsvp_' + lib$rsvp$utils$$now() + '-'; - var lib$rsvp$promise$$counter = 0; + var $$rsvp$promise$$guidKey = 'rsvp_' + $$utils$$now() + '-'; + var $$rsvp$promise$$counter = 0; - function lib$rsvp$promise$$needsResolver() { + function $$rsvp$promise$$needsResolver() { throw new TypeError('You must pass a resolver function as the first argument to the promise constructor'); } - function lib$rsvp$promise$$needsNew() { + function $$rsvp$promise$$needsNew() { throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function."); } - function lib$rsvp$promise$$Promise(resolver, label) { - var promise = this; + var $$rsvp$promise$$default = $$rsvp$promise$$Promise; - promise._id = lib$rsvp$promise$$counter++; - promise._label = label; - promise._state = undefined; - promise._result = undefined; - promise._subscribers = []; + /** + Promise objects represent the eventual result of an asynchronous operation. The + primary way of interacting with a promise is through its `then` method, which + registers callbacks to receive either a promise’s eventual value or the reason + why the promise cannot be fulfilled. - if (lib$rsvp$config$$config.instrument) { - lib$rsvp$instrument$$default('created', promise); + Terminology + ----------- + + - `promise` is an object or function with a `then` method whose behavior conforms to this specification. + - `thenable` is an object or function that defines a `then` method. + - `value` is any legal JavaScript value (including undefined, a thenable, or a promise). + - `exception` is a value that is thrown using the throw statement. + - `reason` is a value that indicates why a promise was rejected. + - `settled` the final resting state of a promise, fulfilled or rejected. + + A promise can be in one of three states: pending, fulfilled, or rejected. + + Promises that are fulfilled have a fulfillment value and are in the fulfilled + state. Promises that are rejected have a rejection reason and are in the + rejected state. A fulfillment value is never a thenable. + + Promises can also be said to *resolve* a value. If this value is also a + promise, then the original promise's settled state will match the value's + settled state. So a promise that *resolves* a promise that rejects will + itself reject, and a promise that *resolves* a promise that fulfills will + itself fulfill. + + + Basic Usage: + ------------ + + ```js + var promise = new Promise(function(resolve, reject) { + // on success + resolve(value); + + // on failure + reject(reason); + }); + + promise.then(function(value) { + // on fulfillment + }, function(reason) { + // on rejection + }); + ``` + + Advanced Usage: + --------------- + + Promises shine when abstracting away asynchronous interactions such as + `XMLHttpRequest`s. + + ```js + function getJSON(url) { + return new Promise(function(resolve, reject){ + var xhr = new XMLHttpRequest(); + + xhr.open('GET', url); + xhr.onreadystatechange = handler; + xhr.responseType = 'json'; + xhr.setRequestHeader('Accept', 'application/json'); + xhr.send(); + + function handler() { + if (this.readyState === this.DONE) { + if (this.status === 200) { + resolve(this.response); + } else { + reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']')); + } + } + }; + }); } - if (lib$rsvp$$internal$$noop !== resolver) { - if (!lib$rsvp$utils$$isFunction(resolver)) { - lib$rsvp$promise$$needsResolver(); + getJSON('/posts.json').then(function(json) { + // on fulfillment + }, function(reason) { + // on rejection + }); + ``` + + Unlike callbacks, promises are great composable primitives. + + ```js + Promise.all([ + getJSON('/posts'), + getJSON('/comments') + ]).then(function(values){ + values[0] // => postsJSON + values[1] // => commentsJSON + + return values; + }); + ``` + + @class RSVP.Promise + @param {function} resolver + @param {String} label optional string for labeling the promise. + Useful for tooling. + @constructor + */ + function $$rsvp$promise$$Promise(resolver, label) { + this._id = $$rsvp$promise$$counter++; + this._label = label; + this._state = undefined; + this._result = undefined; + this._subscribers = []; + + if ($$rsvp$config$$config.instrument) { + $$instrument$$default('created', this); + } + + if ($$$internal$$noop !== resolver) { + if (!$$utils$$isFunction(resolver)) { + $$rsvp$promise$$needsResolver(); } - if (!(promise instanceof lib$rsvp$promise$$Promise)) { - lib$rsvp$promise$$needsNew(); + if (!(this instanceof $$rsvp$promise$$Promise)) { + $$rsvp$promise$$needsNew(); } - lib$rsvp$$internal$$initializePromise(promise, resolver); + $$$internal$$initializePromise(this, resolver); } } - var lib$rsvp$promise$$default = lib$rsvp$promise$$Promise; - // deprecated - lib$rsvp$promise$$Promise.cast = lib$rsvp$promise$resolve$$default; - lib$rsvp$promise$$Promise.all = lib$rsvp$promise$all$$default; - lib$rsvp$promise$$Promise.race = lib$rsvp$promise$race$$default; - lib$rsvp$promise$$Promise.resolve = lib$rsvp$promise$resolve$$default; - lib$rsvp$promise$$Promise.reject = lib$rsvp$promise$reject$$default; + $$rsvp$promise$$Promise.cast = $$promise$resolve$$default; - lib$rsvp$promise$$Promise.prototype = { - constructor: lib$rsvp$promise$$Promise, + $$rsvp$promise$$Promise.all = $$promise$all$$default; + $$rsvp$promise$$Promise.race = $$promise$race$$default; + $$rsvp$promise$$Promise.resolve = $$promise$resolve$$default; + $$rsvp$promise$$Promise.reject = $$promise$reject$$default; - _guidKey: lib$rsvp$promise$$guidKey, + $$rsvp$promise$$Promise.prototype = { + constructor: $$rsvp$promise$$Promise, - _onError: function (reason) { - var promise = this; - lib$rsvp$config$$config.after(function() { - if (promise._onError) { - lib$rsvp$config$$config['trigger']('error', reason, promise._label); - } - }); + _guidKey: $$rsvp$promise$$guidKey, + + _onerror: function (reason) { + $$rsvp$config$$config.trigger('error', reason); }, /** @@ -969,8 +1034,8 @@ ``` @method then - @param {Function} onFulfillment - @param {Function} onRejection + @param {Function} onFulfilled + @param {Function} onRejected @param {String} label optional string for labeling the promise. Useful for tooling. @return {Promise} @@ -979,29 +1044,29 @@ var parent = this; var state = parent._state; - if (state === lib$rsvp$$internal$$FULFILLED && !onFulfillment || state === lib$rsvp$$internal$$REJECTED && !onRejection) { - if (lib$rsvp$config$$config.instrument) { - lib$rsvp$instrument$$default('chained', parent, parent); + if (state === $$$internal$$FULFILLED && !onFulfillment || state === $$$internal$$REJECTED && !onRejection) { + if ($$rsvp$config$$config.instrument) { + $$instrument$$default('chained', this, this); } - return parent; + return this; } - parent._onError = null; + parent._onerror = null; - var child = new parent.constructor(lib$rsvp$$internal$$noop, label); + var child = new this.constructor($$$internal$$noop, label); var result = parent._result; - if (lib$rsvp$config$$config.instrument) { - lib$rsvp$instrument$$default('chained', parent, child); + if ($$rsvp$config$$config.instrument) { + $$instrument$$default('chained', parent, child); } if (state) { var callback = arguments[state - 1]; - lib$rsvp$config$$config.async(function(){ - lib$rsvp$$internal$$invokeCallback(state, child, callback, result); + $$rsvp$config$$config.async(function(){ + $$$internal$$invokeCallback(state, child, callback, result); }); } else { - lib$rsvp$$internal$$subscribe(parent, child, onFulfillment, onRejection); + $$$internal$$subscribe(parent, child, onFulfillment, onRejection); } return child; @@ -1036,7 +1101,7 @@ @return {Promise} */ 'catch': function(onRejection, label) { - return this.then(undefined, onRejection, label); + return this.then(null, onRejection, label); }, /** @@ -1080,10 +1145,9 @@ @return {Promise} */ 'finally': function(callback, label) { - var promise = this; - var constructor = promise.constructor; + var constructor = this.constructor; - return promise.then(function(value) { + return this.then(function(value) { return constructor.resolve(callback()).then(function(){ return value; }); @@ -1095,292 +1159,32 @@ } }; - function lib$rsvp$all$settled$$AllSettled(Constructor, entries, label) { - this._superConstructor(Constructor, entries, false /* don't abort on reject */, label); - } - - lib$rsvp$all$settled$$AllSettled.prototype = lib$rsvp$utils$$o_create(lib$rsvp$enumerator$$default.prototype); - lib$rsvp$all$settled$$AllSettled.prototype._superConstructor = lib$rsvp$enumerator$$default; - lib$rsvp$all$settled$$AllSettled.prototype._makeResult = lib$rsvp$enumerator$$makeSettledResult; - lib$rsvp$all$settled$$AllSettled.prototype._validationError = function() { - return new Error('allSettled must be called with an array'); - }; - - function lib$rsvp$all$settled$$allSettled(entries, label) { - return new lib$rsvp$all$settled$$AllSettled(lib$rsvp$promise$$default, entries, label).promise; - } - var lib$rsvp$all$settled$$default = lib$rsvp$all$settled$$allSettled; - function lib$rsvp$all$$all(array, label) { - return lib$rsvp$promise$$default.all(array, label); - } - var lib$rsvp$all$$default = lib$rsvp$all$$all; - var lib$rsvp$asap$$len = 0; - var lib$rsvp$asap$$toString = {}.toString; - var lib$rsvp$asap$$vertxNext; - function lib$rsvp$asap$$asap(callback, arg) { - lib$rsvp$asap$$queue[lib$rsvp$asap$$len] = callback; - lib$rsvp$asap$$queue[lib$rsvp$asap$$len + 1] = arg; - lib$rsvp$asap$$len += 2; - if (lib$rsvp$asap$$len === 2) { - // If len is 1, that means that we need to schedule an async flush. - // If additional callbacks are queued before the queue is flushed, they - // will be processed by this flush that we are scheduling. - lib$rsvp$asap$$scheduleFlush(); - } - } - - var lib$rsvp$asap$$default = lib$rsvp$asap$$asap; - - var lib$rsvp$asap$$browserWindow = (typeof window !== 'undefined') ? window : undefined; - var lib$rsvp$asap$$browserGlobal = lib$rsvp$asap$$browserWindow || {}; - var lib$rsvp$asap$$BrowserMutationObserver = lib$rsvp$asap$$browserGlobal.MutationObserver || lib$rsvp$asap$$browserGlobal.WebKitMutationObserver; - var lib$rsvp$asap$$isNode = typeof self === 'undefined' && - typeof process !== 'undefined' && {}.toString.call(process) === '[object process]'; - - // test for web worker but not in IE10 - var lib$rsvp$asap$$isWorker = typeof Uint8ClampedArray !== 'undefined' && - typeof importScripts !== 'undefined' && - typeof MessageChannel !== 'undefined'; - - // node - function lib$rsvp$asap$$useNextTick() { - var nextTick = process.nextTick; - // node version 0.10.x displays a deprecation warning when nextTick is used recursively - // setImmediate should be used instead instead - var version = process.versions.node.match(/^(?:(\d+)\.)?(?:(\d+)\.)?(\*|\d+)$/); - if (Array.isArray(version) && version[1] === '0' && version[2] === '10') { - nextTick = setImmediate; - } - return function() { - nextTick(lib$rsvp$asap$$flush); - }; - } - - // vertx - function lib$rsvp$asap$$useVertxTimer() { - return function() { - lib$rsvp$asap$$vertxNext(lib$rsvp$asap$$flush); - }; - } - - function lib$rsvp$asap$$useMutationObserver() { - var iterations = 0; - var observer = new lib$rsvp$asap$$BrowserMutationObserver(lib$rsvp$asap$$flush); - var node = document.createTextNode(''); - observer.observe(node, { characterData: true }); - - return function() { - node.data = (iterations = ++iterations % 2); - }; - } - - // web worker - function lib$rsvp$asap$$useMessageChannel() { - var channel = new MessageChannel(); - channel.port1.onmessage = lib$rsvp$asap$$flush; - return function () { - channel.port2.postMessage(0); - }; - } - - function lib$rsvp$asap$$useSetTimeout() { - return function() { - setTimeout(lib$rsvp$asap$$flush, 1); - }; - } - - var lib$rsvp$asap$$queue = new Array(1000); - function lib$rsvp$asap$$flush() { - for (var i = 0; i < lib$rsvp$asap$$len; i+=2) { - var callback = lib$rsvp$asap$$queue[i]; - var arg = lib$rsvp$asap$$queue[i+1]; - - callback(arg); - - lib$rsvp$asap$$queue[i] = undefined; - lib$rsvp$asap$$queue[i+1] = undefined; - } - - lib$rsvp$asap$$len = 0; - } - - function lib$rsvp$asap$$attemptVertex() { - try { - var r = require; - var vertx = r('vertx'); - lib$rsvp$asap$$vertxNext = vertx.runOnLoop || vertx.runOnContext; - return lib$rsvp$asap$$useVertxTimer(); - } catch(e) { - return lib$rsvp$asap$$useSetTimeout(); - } - } - - var lib$rsvp$asap$$scheduleFlush; - // Decide what async method to use to triggering processing of queued callbacks: - if (lib$rsvp$asap$$isNode) { - lib$rsvp$asap$$scheduleFlush = lib$rsvp$asap$$useNextTick(); - } else if (lib$rsvp$asap$$BrowserMutationObserver) { - lib$rsvp$asap$$scheduleFlush = lib$rsvp$asap$$useMutationObserver(); - } else if (lib$rsvp$asap$$isWorker) { - lib$rsvp$asap$$scheduleFlush = lib$rsvp$asap$$useMessageChannel(); - } else if (lib$rsvp$asap$$browserWindow === undefined && typeof require === 'function') { - lib$rsvp$asap$$scheduleFlush = lib$rsvp$asap$$attemptVertex(); - } else { - lib$rsvp$asap$$scheduleFlush = lib$rsvp$asap$$useSetTimeout(); - } - function lib$rsvp$defer$$defer(label) { - var deferred = {}; - - deferred['promise'] = new lib$rsvp$promise$$default(function(resolve, reject) { - deferred['resolve'] = resolve; - deferred['reject'] = reject; - }, label); - - return deferred; - } - var lib$rsvp$defer$$default = lib$rsvp$defer$$defer; - function lib$rsvp$filter$$filter(promises, filterFn, label) { - return lib$rsvp$promise$$default.all(promises, label).then(function(values) { - if (!lib$rsvp$utils$$isFunction(filterFn)) { - throw new TypeError("You must pass a function as filter's second argument."); - } - - var length = values.length; - var filtered = new Array(length); - - for (var i = 0; i < length; i++) { - filtered[i] = filterFn(values[i]); - } - - return lib$rsvp$promise$$default.all(filtered, label).then(function(filtered) { - var results = new Array(length); - var newLength = 0; - - for (var i = 0; i < length; i++) { - if (filtered[i]) { - results[newLength] = values[i]; - newLength++; - } - } - - results.length = newLength; - - return results; - }); - }); - } - var lib$rsvp$filter$$default = lib$rsvp$filter$$filter; - - function lib$rsvp$promise$hash$$PromiseHash(Constructor, object, label) { - this._superConstructor(Constructor, object, true, label); - } - - var lib$rsvp$promise$hash$$default = lib$rsvp$promise$hash$$PromiseHash; - - lib$rsvp$promise$hash$$PromiseHash.prototype = lib$rsvp$utils$$o_create(lib$rsvp$enumerator$$default.prototype); - lib$rsvp$promise$hash$$PromiseHash.prototype._superConstructor = lib$rsvp$enumerator$$default; - lib$rsvp$promise$hash$$PromiseHash.prototype._init = function() { - this._result = {}; - }; - - lib$rsvp$promise$hash$$PromiseHash.prototype._validateInput = function(input) { - return input && typeof input === 'object'; - }; - - lib$rsvp$promise$hash$$PromiseHash.prototype._validationError = function() { - return new Error('Promise.hash must be called with an object'); - }; - - lib$rsvp$promise$hash$$PromiseHash.prototype._enumerate = function() { - var enumerator = this; - var promise = enumerator.promise; - var input = enumerator._input; - var results = []; - - for (var key in input) { - if (promise._state === lib$rsvp$$internal$$PENDING && Object.prototype.hasOwnProperty.call(input, key)) { - results.push({ - position: key, - entry: input[key] - }); - } - } - - var length = results.length; - enumerator._remaining = length; - var result; - - for (var i = 0; promise._state === lib$rsvp$$internal$$PENDING && i < length; i++) { - result = results[i]; - enumerator._eachEntry(result.entry, result.position); - } - }; - - function lib$rsvp$hash$settled$$HashSettled(Constructor, object, label) { - this._superConstructor(Constructor, object, false, label); - } - - lib$rsvp$hash$settled$$HashSettled.prototype = lib$rsvp$utils$$o_create(lib$rsvp$promise$hash$$default.prototype); - lib$rsvp$hash$settled$$HashSettled.prototype._superConstructor = lib$rsvp$enumerator$$default; - lib$rsvp$hash$settled$$HashSettled.prototype._makeResult = lib$rsvp$enumerator$$makeSettledResult; - - lib$rsvp$hash$settled$$HashSettled.prototype._validationError = function() { - return new Error('hashSettled must be called with an object'); - }; - - function lib$rsvp$hash$settled$$hashSettled(object, label) { - return new lib$rsvp$hash$settled$$HashSettled(lib$rsvp$promise$$default, object, label).promise; - } - var lib$rsvp$hash$settled$$default = lib$rsvp$hash$settled$$hashSettled; - function lib$rsvp$hash$$hash(object, label) { - return new lib$rsvp$promise$hash$$default(lib$rsvp$promise$$default, object, label).promise; - } - var lib$rsvp$hash$$default = lib$rsvp$hash$$hash; - function lib$rsvp$map$$map(promises, mapFn, label) { - return lib$rsvp$promise$$default.all(promises, label).then(function(values) { - if (!lib$rsvp$utils$$isFunction(mapFn)) { - throw new TypeError("You must pass a function as map's second argument."); - } - - var length = values.length; - var results = new Array(length); - - for (var i = 0; i < length; i++) { - results[i] = mapFn(values[i]); - } - - return lib$rsvp$promise$$default.all(results, label); - }); - } - var lib$rsvp$map$$default = lib$rsvp$map$$map; - - function lib$rsvp$node$$Result() { + function $$rsvp$node$$Result() { this.value = undefined; } - var lib$rsvp$node$$ERROR = new lib$rsvp$node$$Result(); - var lib$rsvp$node$$GET_THEN_ERROR = new lib$rsvp$node$$Result(); + var $$rsvp$node$$ERROR = new $$rsvp$node$$Result(); + var $$rsvp$node$$GET_THEN_ERROR = new $$rsvp$node$$Result(); - function lib$rsvp$node$$getThen(obj) { + function $$rsvp$node$$getThen(obj) { try { return obj.then; } catch(error) { - lib$rsvp$node$$ERROR.value= error; - return lib$rsvp$node$$ERROR; + $$rsvp$node$$ERROR.value= error; + return $$rsvp$node$$ERROR; } } - - function lib$rsvp$node$$tryApply(f, s, a) { + function $$rsvp$node$$tryApply(f, s, a) { try { f.apply(s, a); } catch(error) { - lib$rsvp$node$$ERROR.value = error; - return lib$rsvp$node$$ERROR; + $$rsvp$node$$ERROR.value = error; + return $$rsvp$node$$ERROR; } } - function lib$rsvp$node$$makeObject(_, argumentNames) { + function $$rsvp$node$$makeObject(_, argumentNames) { var obj = {}; var name; var i; @@ -1399,7 +1203,7 @@ return obj; } - function lib$rsvp$node$$arrayResult(_) { + function $$rsvp$node$$arrayResult(_) { var length = _.length; var args = new Array(length - 1); @@ -1410,7 +1214,7 @@ return args; } - function lib$rsvp$node$$wrapThenable(then, promise) { + function $$rsvp$node$$wrapThenable(then, promise) { return { then: function(onFulFillment, onRejection) { return then.call(promise, onFulFillment, onRejection); @@ -1418,7 +1222,7 @@ }; } - function lib$rsvp$node$$denodeify(nodeFunc, options) { + var $$rsvp$node$$default = function denodeify(nodeFunc, options) { var fn = function() { var self = this; var l = arguments.length; @@ -1431,171 +1235,379 @@ if (!promiseInput) { // TODO: clean this up - promiseInput = lib$rsvp$node$$needsPromiseInput(arg); - if (promiseInput === lib$rsvp$node$$GET_THEN_ERROR) { - var p = new lib$rsvp$promise$$default(lib$rsvp$$internal$$noop); - lib$rsvp$$internal$$reject(p, lib$rsvp$node$$GET_THEN_ERROR.value); + promiseInput = $$rsvp$node$$needsPromiseInput(arg); + if (promiseInput === $$rsvp$node$$GET_THEN_ERROR) { + var p = new $$rsvp$promise$$default($$$internal$$noop); + $$$internal$$reject(p, $$rsvp$node$$GET_THEN_ERROR.value); return p; } else if (promiseInput && promiseInput !== true) { - arg = lib$rsvp$node$$wrapThenable(promiseInput, arg); + arg = $$rsvp$node$$wrapThenable(promiseInput, arg); } } args[i] = arg; } - var promise = new lib$rsvp$promise$$default(lib$rsvp$$internal$$noop); + var promise = new $$rsvp$promise$$default($$$internal$$noop); args[l] = function(err, val) { if (err) - lib$rsvp$$internal$$reject(promise, err); + $$$internal$$reject(promise, err); else if (options === undefined) - lib$rsvp$$internal$$resolve(promise, val); + $$$internal$$resolve(promise, val); else if (options === true) - lib$rsvp$$internal$$resolve(promise, lib$rsvp$node$$arrayResult(arguments)); - else if (lib$rsvp$utils$$isArray(options)) - lib$rsvp$$internal$$resolve(promise, lib$rsvp$node$$makeObject(arguments, options)); + $$$internal$$resolve(promise, $$rsvp$node$$arrayResult(arguments)); + else if ($$utils$$isArray(options)) + $$$internal$$resolve(promise, $$rsvp$node$$makeObject(arguments, options)); else - lib$rsvp$$internal$$resolve(promise, val); + $$$internal$$resolve(promise, val); }; if (promiseInput) { - return lib$rsvp$node$$handlePromiseInput(promise, args, nodeFunc, self); + return $$rsvp$node$$handlePromiseInput(promise, args, nodeFunc, self); } else { - return lib$rsvp$node$$handleValueInput(promise, args, nodeFunc, self); + return $$rsvp$node$$handleValueInput(promise, args, nodeFunc, self); } }; fn.__proto__ = nodeFunc; return fn; - } + }; - var lib$rsvp$node$$default = lib$rsvp$node$$denodeify; - - function lib$rsvp$node$$handleValueInput(promise, args, nodeFunc, self) { - var result = lib$rsvp$node$$tryApply(nodeFunc, self, args); - if (result === lib$rsvp$node$$ERROR) { - lib$rsvp$$internal$$reject(promise, result.value); + function $$rsvp$node$$handleValueInput(promise, args, nodeFunc, self) { + var result = $$rsvp$node$$tryApply(nodeFunc, self, args); + if (result === $$rsvp$node$$ERROR) { + $$$internal$$reject(promise, result.value); } return promise; } - function lib$rsvp$node$$handlePromiseInput(promise, args, nodeFunc, self){ - return lib$rsvp$promise$$default.all(args).then(function(args){ - var result = lib$rsvp$node$$tryApply(nodeFunc, self, args); - if (result === lib$rsvp$node$$ERROR) { - lib$rsvp$$internal$$reject(promise, result.value); + function $$rsvp$node$$handlePromiseInput(promise, args, nodeFunc, self){ + return $$rsvp$promise$$default.all(args).then(function(args){ + var result = $$rsvp$node$$tryApply(nodeFunc, self, args); + if (result === $$rsvp$node$$ERROR) { + $$$internal$$reject(promise, result.value); } return promise; }); } - function lib$rsvp$node$$needsPromiseInput(arg) { + function $$rsvp$node$$needsPromiseInput(arg) { if (arg && typeof arg === 'object') { - if (arg.constructor === lib$rsvp$promise$$default) { + if (arg.constructor === $$rsvp$promise$$default) { return true; } else { - return lib$rsvp$node$$getThen(arg); + return $$rsvp$node$$getThen(arg); } } else { return false; } } - var lib$rsvp$platform$$platform; - /* global self */ - if (typeof self === 'object') { - lib$rsvp$platform$$platform = self; + var $$rsvp$all$$default = function all(array, label) { + return $$rsvp$promise$$default.all(array, label); + }; - /* global global */ - } else if (typeof global === 'object') { - lib$rsvp$platform$$platform = global; - } else { - throw new Error('no global: `self` or `global` found'); + function $$rsvp$all$settled$$AllSettled(Constructor, entries, label) { + this._superConstructor(Constructor, entries, false /* don't abort on reject */, label); } - var lib$rsvp$platform$$default = lib$rsvp$platform$$platform; - function lib$rsvp$race$$race(array, label) { - return lib$rsvp$promise$$default.race(array, label); + $$rsvp$all$settled$$AllSettled.prototype = $$utils$$o_create($$enumerator$$default.prototype); + $$rsvp$all$settled$$AllSettled.prototype._superConstructor = $$enumerator$$default; + $$rsvp$all$settled$$AllSettled.prototype._makeResult = $$enumerator$$makeSettledResult; + + $$rsvp$all$settled$$AllSettled.prototype._validationError = function() { + return new Error('allSettled must be called with an array'); + }; + + var $$rsvp$all$settled$$default = function allSettled(entries, label) { + return new $$rsvp$all$settled$$AllSettled($$rsvp$promise$$default, entries, label).promise; + }; + + var $$rsvp$race$$default = function race(array, label) { + return $$rsvp$promise$$default.race(array, label); + }; + + function $$promise$hash$$PromiseHash(Constructor, object, label) { + this._superConstructor(Constructor, object, true, label); } - var lib$rsvp$race$$default = lib$rsvp$race$$race; - function lib$rsvp$reject$$reject(reason, label) { - return lib$rsvp$promise$$default.reject(reason, label); + + var $$promise$hash$$default = $$promise$hash$$PromiseHash; + $$promise$hash$$PromiseHash.prototype = $$utils$$o_create($$enumerator$$default.prototype); + $$promise$hash$$PromiseHash.prototype._superConstructor = $$enumerator$$default; + + $$promise$hash$$PromiseHash.prototype._init = function() { + this._result = {}; + }; + + $$promise$hash$$PromiseHash.prototype._validateInput = function(input) { + return input && typeof input === 'object'; + }; + + $$promise$hash$$PromiseHash.prototype._validationError = function() { + return new Error('Promise.hash must be called with an object'); + }; + + $$promise$hash$$PromiseHash.prototype._enumerate = function() { + var promise = this.promise; + var input = this._input; + var results = []; + + for (var key in input) { + if (promise._state === $$$internal$$PENDING && input.hasOwnProperty(key)) { + results.push({ + position: key, + entry: input[key] + }); + } + } + + var length = results.length; + this._remaining = length; + var result; + + for (var i = 0; promise._state === $$$internal$$PENDING && i < length; i++) { + result = results[i]; + this._eachEntry(result.entry, result.position); + } + }; + + var $$rsvp$hash$$default = function hash(object, label) { + return new $$promise$hash$$default($$rsvp$promise$$default, object, label).promise; + }; + + function $$rsvp$hash$settled$$HashSettled(Constructor, object, label) { + this._superConstructor(Constructor, object, false, label); } - var lib$rsvp$reject$$default = lib$rsvp$reject$$reject; - function lib$rsvp$resolve$$resolve(value, label) { - return lib$rsvp$promise$$default.resolve(value, label); - } - var lib$rsvp$resolve$$default = lib$rsvp$resolve$$resolve; - function lib$rsvp$rethrow$$rethrow(reason) { + + $$rsvp$hash$settled$$HashSettled.prototype = $$utils$$o_create($$promise$hash$$default.prototype); + $$rsvp$hash$settled$$HashSettled.prototype._superConstructor = $$enumerator$$default; + $$rsvp$hash$settled$$HashSettled.prototype._makeResult = $$enumerator$$makeSettledResult; + + $$rsvp$hash$settled$$HashSettled.prototype._validationError = function() { + return new Error('hashSettled must be called with an object'); + }; + + var $$rsvp$hash$settled$$default = function hashSettled(object, label) { + return new $$rsvp$hash$settled$$HashSettled($$rsvp$promise$$default, object, label).promise; + }; + + var $$rsvp$rethrow$$default = function rethrow(reason) { setTimeout(function() { throw reason; }); throw reason; - } - var lib$rsvp$rethrow$$default = lib$rsvp$rethrow$$rethrow; - - // defaults - lib$rsvp$config$$config.async = lib$rsvp$asap$$default; - lib$rsvp$config$$config.after = function(cb) { - setTimeout(cb, 0); }; - var lib$rsvp$$cast = lib$rsvp$resolve$$default; - function lib$rsvp$$async(callback, arg) { - lib$rsvp$config$$config.async(callback, arg); + + var $$rsvp$defer$$default = function defer(label) { + var deferred = { }; + + deferred.promise = new $$rsvp$promise$$default(function(resolve, reject) { + deferred.resolve = resolve; + deferred.reject = reject; + }, label); + + return deferred; + }; + + var $$rsvp$map$$default = function map(promises, mapFn, label) { + return $$rsvp$promise$$default.all(promises, label).then(function(values) { + if (!$$utils$$isFunction(mapFn)) { + throw new TypeError("You must pass a function as map's second argument."); + } + + var length = values.length; + var results = new Array(length); + + for (var i = 0; i < length; i++) { + results[i] = mapFn(values[i]); + } + + return $$rsvp$promise$$default.all(results, label); + }); + }; + + var $$rsvp$resolve$$default = function resolve(value, label) { + return $$rsvp$promise$$default.resolve(value, label); + }; + + var $$rsvp$reject$$default = function reject(reason, label) { + return $$rsvp$promise$$default.reject(reason, label); + }; + + var $$rsvp$filter$$default = function filter(promises, filterFn, label) { + return $$rsvp$promise$$default.all(promises, label).then(function(values) { + if (!$$utils$$isFunction(filterFn)) { + throw new TypeError("You must pass a function as filter's second argument."); + } + + var length = values.length; + var filtered = new Array(length); + + for (var i = 0; i < length; i++) { + filtered[i] = filterFn(values[i]); + } + + return $$rsvp$promise$$default.all(filtered, label).then(function(filtered) { + var results = new Array(length); + var newLength = 0; + + for (var i = 0; i < length; i++) { + if (filtered[i]) { + results[newLength] = values[i]; + newLength++; + } + } + + results.length = newLength; + + return results; + }); + }); + }; + + var $$rsvp$asap$$len = 0; + + var $$rsvp$asap$$default = function asap(callback, arg) { + $$rsvp$asap$$queue[$$rsvp$asap$$len] = callback; + $$rsvp$asap$$queue[$$rsvp$asap$$len + 1] = arg; + $$rsvp$asap$$len += 2; + if ($$rsvp$asap$$len === 2) { + // If len is 1, that means that we need to schedule an async flush. + // If additional callbacks are queued before the queue is flushed, they + // will be processed by this flush that we are scheduling. + $$rsvp$asap$$scheduleFlush(); + } + }; + + var $$rsvp$asap$$browserGlobal = (typeof window !== 'undefined') ? window : {}; + var $$rsvp$asap$$BrowserMutationObserver = $$rsvp$asap$$browserGlobal.MutationObserver || $$rsvp$asap$$browserGlobal.WebKitMutationObserver; + + // test for web worker but not in IE10 + var $$rsvp$asap$$isWorker = typeof Uint8ClampedArray !== 'undefined' && + typeof importScripts !== 'undefined' && + typeof MessageChannel !== 'undefined'; + + // node + function $$rsvp$asap$$useNextTick() { + return function() { + process.nextTick($$rsvp$asap$$flush); + }; } - function lib$rsvp$$on() { - lib$rsvp$config$$config['on'].apply(lib$rsvp$config$$config, arguments); + function $$rsvp$asap$$useMutationObserver() { + var iterations = 0; + var observer = new $$rsvp$asap$$BrowserMutationObserver($$rsvp$asap$$flush); + var node = document.createTextNode(''); + observer.observe(node, { characterData: true }); + + return function() { + node.data = (iterations = ++iterations % 2); + }; } - function lib$rsvp$$off() { - lib$rsvp$config$$config['off'].apply(lib$rsvp$config$$config, arguments); + // web worker + function $$rsvp$asap$$useMessageChannel() { + var channel = new MessageChannel(); + channel.port1.onmessage = $$rsvp$asap$$flush; + return function () { + channel.port2.postMessage(0); + }; + } + + function $$rsvp$asap$$useSetTimeout() { + return function() { + setTimeout($$rsvp$asap$$flush, 1); + }; + } + + var $$rsvp$asap$$queue = new Array(1000); + + function $$rsvp$asap$$flush() { + for (var i = 0; i < $$rsvp$asap$$len; i+=2) { + var callback = $$rsvp$asap$$queue[i]; + var arg = $$rsvp$asap$$queue[i+1]; + + callback(arg); + + $$rsvp$asap$$queue[i] = undefined; + $$rsvp$asap$$queue[i+1] = undefined; + } + + $$rsvp$asap$$len = 0; + } + + var $$rsvp$asap$$scheduleFlush; + + // Decide what async method to use to triggering processing of queued callbacks: + if (typeof process !== 'undefined' && {}.toString.call(process) === '[object process]') { + $$rsvp$asap$$scheduleFlush = $$rsvp$asap$$useNextTick(); + } else if ($$rsvp$asap$$BrowserMutationObserver) { + $$rsvp$asap$$scheduleFlush = $$rsvp$asap$$useMutationObserver(); + } else if ($$rsvp$asap$$isWorker) { + $$rsvp$asap$$scheduleFlush = $$rsvp$asap$$useMessageChannel(); + } else { + $$rsvp$asap$$scheduleFlush = $$rsvp$asap$$useSetTimeout(); + } + + // default async is asap; + $$rsvp$config$$config.async = $$rsvp$asap$$default; + + var $$rsvp$$cast = $$rsvp$resolve$$default; + + function $$rsvp$$async(callback, arg) { + $$rsvp$config$$config.async(callback, arg); + } + + function $$rsvp$$on() { + $$rsvp$config$$config.on.apply($$rsvp$config$$config, arguments); + } + + function $$rsvp$$off() { + $$rsvp$config$$config.off.apply($$rsvp$config$$config, arguments); } // Set up instrumentation through `window.__PROMISE_INTRUMENTATION__` if (typeof window !== 'undefined' && typeof window['__PROMISE_INSTRUMENTATION__'] === 'object') { - var lib$rsvp$$callbacks = window['__PROMISE_INSTRUMENTATION__']; - lib$rsvp$config$$configure('instrument', true); - for (var lib$rsvp$$eventName in lib$rsvp$$callbacks) { - if (lib$rsvp$$callbacks.hasOwnProperty(lib$rsvp$$eventName)) { - lib$rsvp$$on(lib$rsvp$$eventName, lib$rsvp$$callbacks[lib$rsvp$$eventName]); + var $$rsvp$$callbacks = window['__PROMISE_INSTRUMENTATION__']; + $$rsvp$config$$configure('instrument', true); + for (var $$rsvp$$eventName in $$rsvp$$callbacks) { + if ($$rsvp$$callbacks.hasOwnProperty($$rsvp$$eventName)) { + $$rsvp$$on($$rsvp$$eventName, $$rsvp$$callbacks[$$rsvp$$eventName]); } } } - var lib$rsvp$umd$$RSVP = { - 'race': lib$rsvp$race$$default, - 'Promise': lib$rsvp$promise$$default, - 'allSettled': lib$rsvp$all$settled$$default, - 'hash': lib$rsvp$hash$$default, - 'hashSettled': lib$rsvp$hash$settled$$default, - 'denodeify': lib$rsvp$node$$default, - 'on': lib$rsvp$$on, - 'off': lib$rsvp$$off, - 'map': lib$rsvp$map$$default, - 'filter': lib$rsvp$filter$$default, - 'resolve': lib$rsvp$resolve$$default, - 'reject': lib$rsvp$reject$$default, - 'all': lib$rsvp$all$$default, - 'rethrow': lib$rsvp$rethrow$$default, - 'defer': lib$rsvp$defer$$default, - 'EventTarget': lib$rsvp$events$$default, - 'configure': lib$rsvp$config$$configure, - 'async': lib$rsvp$$async + var rsvp$umd$$RSVP = { + 'race': $$rsvp$race$$default, + 'Promise': $$rsvp$promise$$default, + 'allSettled': $$rsvp$all$settled$$default, + 'hash': $$rsvp$hash$$default, + 'hashSettled': $$rsvp$hash$settled$$default, + 'denodeify': $$rsvp$node$$default, + 'on': $$rsvp$$on, + 'off': $$rsvp$$off, + 'map': $$rsvp$map$$default, + 'filter': $$rsvp$filter$$default, + 'resolve': $$rsvp$resolve$$default, + 'reject': $$rsvp$reject$$default, + 'all': $$rsvp$all$$default, + 'rethrow': $$rsvp$rethrow$$default, + 'defer': $$rsvp$defer$$default, + 'EventTarget': $$rsvp$events$$default, + 'configure': $$rsvp$config$$configure, + 'async': $$rsvp$$async }; /* global define:true module:true window: true */ - if (typeof define === 'function' && define['amd']) { - define(function() { return lib$rsvp$umd$$RSVP; }); - } else if (typeof module !== 'undefined' && module['exports']) { - module['exports'] = lib$rsvp$umd$$RSVP; - } else if (typeof lib$rsvp$platform$$default !== 'undefined') { - lib$rsvp$platform$$default['RSVP'] = lib$rsvp$umd$$RSVP; + if (typeof define === 'function' && define.amd) { + define(function() { return rsvp$umd$$RSVP; }); + } else if (typeof module !== 'undefined' && module.exports) { + module.exports = rsvp$umd$$RSVP; + } else if (typeof this !== 'undefined') { + this['RSVP'] = rsvp$umd$$RSVP; } }).call(this); - - 'use strict'; var EPUBJS = EPUBJS || {}; @@ -2199,7 +2211,7 @@ EPUBJS.Book.prototype.loadChange = function(url){ EPUBJS.Book.prototype.unlistenToRenderer = function(renderer){ renderer.Events.forEach(function(eventName){ renderer.off(eventName); - } ); + }); }; //-- Choose between a request from store or a request from network @@ -3012,7 +3024,7 @@ EPUBJS.Chapter.prototype.load = function(_store, _credentials){ if(store){ promise = store.getXml(this.absolute); }else{ - promise = EPUBJS.core.request(this.absolute, 'xml', credentials); + promise = EPUBJS.core.request(this.absolute, false, credentials); } promise.then(function(xml){ @@ -3070,15 +3082,6 @@ EPUBJS.Chapter.prototype.url = function(_store){ url = this.absolute; deferred.resolve(url); } - /* - loaded = EPUBJS.core.request(url, 'xml', false); - loaded.then(function(contents){ - chapter.contents = contents; - deferred.resolve(chapter.absolute); - }, function(error){ - deferred.reject(error); - }); - */ return deferred.promise; }; @@ -3394,26 +3397,83 @@ EPUBJS.core.getEls = function(classes) { EPUBJS.core.request = function(url, type, withCredentials) { var supportsURL = window.URL; var BLOB_RESPONSE = supportsURL ? "blob" : "arraybuffer"; - var deferred = new RSVP.defer(); - var xhr = new XMLHttpRequest(); + var uri; //-- Check from PDF.js: // https://github.com/mozilla/pdf.js/blob/master/web/compatibility.js var xhrPrototype = XMLHttpRequest.prototype; + var handler = function() { + var r; + + if (this.readyState != this.DONE) return; + + if (this.status === 200 || (this.status === 0 && this.response) ) { // Android & Firefox reporting 0 for local & blob urls + if(type == 'xml'){ + // If this.responseXML wasn't set, try to parse using a DOMParser from text + if(!this.responseXML){ + r = new DOMParser().parseFromString(this.response, "application/xml"); + } else { + r = this.responseXML; + } + }else + if(type == 'xhtml'){ + if(!this.responseXML){ + r = new DOMParser().parseFromString(this.response, "application/xhtml+xml"); + } else { + r = this.responseXML; + } + }else + if(type == 'html'){ + if(!this.responseXML){ + r = new DOMParser().parseFromString(this.response, "text/html"); + } else { + r = this.responseXML; + } + } else + if(type == 'json'){ + r = JSON.parse(this.response); + }else + if(type == 'blob'){ + + if(supportsURL) { + r = this.response; + } else { + //-- Safari doesn't support responseType blob, so create a blob from arraybuffer + r = new Blob([this.response]); + } + + }else{ + r = this.response; + } + + deferred.resolve(r); + } else { + deferred.reject({ + message : this.response, + stack : new Error().stack + }); + } + }; + if (!('overrideMimeType' in xhrPrototype)) { // IE10 might have response, but not overrideMimeType Object.defineProperty(xhrPrototype, 'overrideMimeType', { value: function xmlHttpRequestOverrideMimeType(mimeType) {} }); } + if(withCredentials) { xhr.withCredentials = true; } - xhr.open("GET", url, true); - xhr.onreadystatechange = handler; + + // If type isn't set, determine it from the file extension + if(!type) { + uri = EPUBJS.core.uri(url); + type = uri.extension; + } if(type == 'blob'){ xhr.responseType = BLOB_RESPONSE; @@ -3423,57 +3483,28 @@ EPUBJS.core.request = function(url, type, withCredentials) { xhr.setRequestHeader("Accept", "application/json"); } - if(type == 'xml') { - xhr.overrideMimeType('text/xml'); + if(type == 'xml' || type == 'xhtml') { + xhr.responseType = "document"; + // xhr.overrideMimeType('text/xml'); } + if(type == 'xhtml') { + xhr.responseType = "document"; + // xhr.overrideMimeType('text/xml'); + } + + if(type == 'html') { + xhr.responseType = "document"; + } + if(type == "binary") { xhr.responseType = "arraybuffer"; } + xhr.open("GET", url, true); + xhr.onreadystatechange = handler; xhr.send(); - function handler() { - if (this.readyState === this.DONE) { - if (this.status === 200 || (this.status === 0 && this.response) ) { // Android & Firefox reporting 0 for local & blob urls - var r; - - if(type == 'xml'){ - - // If this.responseXML wasn't set, try to parse using a DOMParser from text - if(!this.responseXML){ - r = new DOMParser().parseFromString(this.response, "text/xml"); - } else { - r = this.responseXML; - } - - }else - if(type == 'json'){ - r = JSON.parse(this.response); - }else - if(type == 'blob'){ - - if(supportsURL) { - r = this.response; - } else { - //-- Safari doesn't support responseType blob, so create a blob from arraybuffer - r = new Blob([this.response]); - } - - }else{ - r = this.response; - } - - deferred.resolve(r); - } else { - deferred.reject({ - message : this.response, - stack : new Error().stack - }); - } - } - } - return deferred.promise; }; @@ -3979,6 +4010,7 @@ EPUBJS.core.values = function(object) { } return result; }; + EPUBJS.EpubCFI = function(cfiStr){ if(cfiStr) return this.parse(cfiStr); }; @@ -7620,7 +7652,8 @@ EPUBJS.Unarchiver.prototype.getXml = function(url, encoding){ return this.getText(decodededUrl, encoding). then(function(text){ var parser = new DOMParser(); - return parser.parseFromString(text, "text/xml"); + var mimeType = EPUBJS.core.getMimeType(url); + return parser.parseFromString(text, mimeType); }); }; @@ -7633,7 +7666,7 @@ EPUBJS.Unarchiver.prototype.getUrl = function(url, mime){ var _URL = window.URL || window.webkitURL || window.mozURL; var tempUrl; var blob; - + if(!entry) { deferred.reject({ message : "File not found in the epub: " + url, diff --git a/reader/js/hooks.js.map b/reader/js/hooks.js.map index b6b64cc..7ae9050 100644 --- a/reader/js/hooks.js.map +++ b/reader/js/hooks.js.map @@ -13,5 +13,5 @@ "reader_src/controllers/toc_controller.js" ], "names": [], - "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gD;AC7TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;AC9RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;AChJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A" + "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gD;AC7TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;AC9RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;AChJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA" } \ No newline at end of file diff --git a/reader/js/reader.min.js b/reader/js/reader.min.js index 65cd051..d9f8290 100644 --- a/reader/js/reader.min.js +++ b/reader/js/reader.min.js @@ -1,2 +1,2 @@ -EPUBJS.reader={},EPUBJS.reader.plugins={},function(a,b){var c=(a.ePubReader||{},a.ePubReader=function(a,b){return new EPUBJS.Reader(a,b)});"function"==typeof define&&define.amd?define(function(){return Reader}):"undefined"!=typeof module&&module.exports&&(module.exports=c)}(window,jQuery),EPUBJS.Reader=function(a,b){var c,d,e,f=this,g=$("#viewer"),h=window.location.search;this.settings=EPUBJS.core.defaults(b||{},{bookPath:a,restore:!0,reload:!1,bookmarks:void 0,annotations:void 0,contained:void 0,bookKey:void 0,styles:void 0,sidebarReflow:!1,generatePagination:!1,history:!0}),h&&(e=h.slice(1).split("&"),e.forEach(function(a){var b=a.split("="),c=b[0],d=b[1]||"";f.settings[c]=decodeURIComponent(d)})),this.setBookKey(this.settings.bookPath),this.settings.restore&&this.isSaved()&&this.applySavedSettings(),this.settings.styles=this.settings.styles||{fontSize:"100%"},this.book=c=new EPUBJS.Book(this.settings),this.settings.previousLocationCfi&&c.gotoCfi(this.settings.previousLocationCfi),this.offline=!1,this.sidebarOpen=!1,this.settings.bookmarks||(this.settings.bookmarks=[]),this.settings.annotations||(this.settings.annotations=[]),this.settings.generatePagination&&c.generatePagination(g.width(),g.height()),c.renderTo("viewer"),f.ReaderController=EPUBJS.reader.ReaderController.call(f,c),f.SettingsController=EPUBJS.reader.SettingsController.call(f,c),f.ControlsController=EPUBJS.reader.ControlsController.call(f,c),f.SidebarController=EPUBJS.reader.SidebarController.call(f,c),f.BookmarksController=EPUBJS.reader.BookmarksController.call(f,c),f.NotesController=EPUBJS.reader.NotesController.call(f,c);for(d in EPUBJS.reader.plugins)EPUBJS.reader.plugins.hasOwnProperty(d)&&(f[d]=EPUBJS.reader.plugins[d].call(f,c));return c.ready.all.then(function(){f.ReaderController.hideLoader()}),c.getMetadata().then(function(a){f.MetaController=EPUBJS.reader.MetaController.call(f,a)}),c.getToc().then(function(a){f.TocController=EPUBJS.reader.TocController.call(f,a)}),window.addEventListener("beforeunload",this.unload.bind(this),!1),window.addEventListener("hashchange",this.hashChanged.bind(this),!1),document.addEventListener("keydown",this.adjustFontSize.bind(this),!1),c.on("renderer:keydown",this.adjustFontSize.bind(this)),c.on("renderer:keydown",f.ReaderController.arrowKeys.bind(this)),c.on("renderer:selected",this.selectedRange.bind(this)),this},EPUBJS.Reader.prototype.adjustFontSize=function(a){var b,c=2,d=187,e=189,f=48,g=a.ctrlKey||a.metaKey;this.settings.styles&&(this.settings.styles.fontSize||(this.settings.styles.fontSize="100%"),b=parseInt(this.settings.styles.fontSize.slice(0,-1)),g&&a.keyCode==d&&(a.preventDefault(),this.book.setStyle("fontSize",b+c+"%")),g&&a.keyCode==e&&(a.preventDefault(),this.book.setStyle("fontSize",b-c+"%")),g&&a.keyCode==f&&(a.preventDefault(),this.book.setStyle("fontSize","100%")))},EPUBJS.Reader.prototype.addBookmark=function(a){var b=this.isBookmarked(a);b>-1||(this.settings.bookmarks.push(a),this.trigger("reader:bookmarked",a))},EPUBJS.Reader.prototype.removeBookmark=function(a){var b=this.isBookmarked(a);-1!==b&&(this.settings.bookmarks.splice(b,1),this.trigger("reader:unbookmarked",b))},EPUBJS.Reader.prototype.isBookmarked=function(a){var b=this.settings.bookmarks;return b.indexOf(a)},EPUBJS.Reader.prototype.clearBookmarks=function(){this.settings.bookmarks=[]},EPUBJS.Reader.prototype.addNote=function(a){this.settings.annotations.push(a)},EPUBJS.Reader.prototype.removeNote=function(a){var b=this.settings.annotations.indexOf(a);-1!==b&&delete this.settings.annotations[b]},EPUBJS.Reader.prototype.clearNotes=function(){this.settings.annotations=[]},EPUBJS.Reader.prototype.setBookKey=function(a){return this.settings.bookKey||(this.settings.bookKey="epubjsreader:"+EPUBJS.VERSION+":"+window.location.host+":"+a),this.settings.bookKey},EPUBJS.Reader.prototype.isSaved=function(a){var b;return localStorage?(b=localStorage.getItem(this.settings.bookKey),null===b?!1:!0):!1},EPUBJS.Reader.prototype.removeSavedSettings=function(){return localStorage?void localStorage.removeItem(this.settings.bookKey):!1},EPUBJS.Reader.prototype.applySavedSettings=function(){var a;if(!localStorage)return!1;try{a=JSON.parse(localStorage.getItem(this.settings.bookKey))}catch(b){return!1}return a?(a.styles&&(this.settings.styles=EPUBJS.core.defaults(this.settings.styles||{},a.styles)),this.settings=EPUBJS.core.defaults(this.settings,a),!0):!1},EPUBJS.Reader.prototype.saveSettings=function(){return this.book&&(this.settings.previousLocationCfi=this.book.getCurrentLocationCfi()),localStorage?void localStorage.setItem(this.settings.bookKey,JSON.stringify(this.settings)):!1},EPUBJS.Reader.prototype.unload=function(){this.settings.restore&&localStorage&&this.saveSettings()},EPUBJS.Reader.prototype.hashChanged=function(){var a=window.location.hash.slice(1);this.book["goto"](a)},EPUBJS.Reader.prototype.selectedRange=function(a){var b=new EPUBJS.EpubCFI,c=b.generateCfiFromRangeAnchor(a,this.book.renderer.currentChapter.cfiBase),d="#"+c;this.settings.history&&window.location.hash!=d&&(history.pushState({},"",d),this.currentLocationCfi=c)},RSVP.EventTarget.mixin(EPUBJS.Reader.prototype),EPUBJS.reader.BookmarksController=function(){var a=this.book,b=$("#bookmarksView"),c=b.find("#bookmarks"),d=document.createDocumentFragment(),e=function(){b.show()},f=function(){b.hide()},g=0,h=function(b){var c=document.createElement("li"),d=document.createElement("a");return c.id="bookmark-"+g,c.classList.add("list_item"),d.textContent=b,d.href=b,d.classList.add("bookmark_link"),d.addEventListener("click",function(b){var c=this.getAttribute("href");a.gotoCfi(c),b.preventDefault()},!1),c.appendChild(d),g++,c};return this.settings.bookmarks.forEach(function(a){var b=h(a);d.appendChild(b)}),c.append(d),this.on("reader:bookmarked",function(a){var b=h(a);c.append(b)}),this.on("reader:unbookmarked",function(a){var b=$("#bookmark-"+a);b.remove()}),{show:e,hide:f}},EPUBJS.reader.ControlsController=function(a){var b=this,c=($("#store"),$("#fullscreen")),d=($("#fullscreenicon"),$("#cancelfullscreenicon"),$("#slider")),e=($("#main"),$("#sidebar"),$("#setting")),f=$("#bookmark"),g=function(){b.offline=!1},h=function(){b.offline=!0},i=!1;return a.on("book:online",g),a.on("book:offline",h),d.on("click",function(){b.sidebarOpen?(b.SidebarController.hide(),d.addClass("icon-menu"),d.removeClass("icon-right")):(b.SidebarController.show(),d.addClass("icon-right"),d.removeClass("icon-menu"))}),"undefined"!=typeof screenfull&&(c.on("click",function(){screenfull.toggle($("#container")[0])}),screenfull.raw&&document.addEventListener(screenfull.raw.fullscreenchange,function(){i=screenfull.isFullscreen,i?c.addClass("icon-resize-small").removeClass("icon-resize-full"):c.addClass("icon-resize-full").removeClass("icon-resize-small")})),e.on("click",function(){b.SettingsController.show()}),f.on("click",function(){var a=b.book.getCurrentLocationCfi(),c=b.isBookmarked(a);-1===c?(b.addBookmark(a),f.addClass("icon-bookmark").removeClass("icon-bookmark-empty")):(b.removeBookmark(a),f.removeClass("icon-bookmark").addClass("icon-bookmark-empty"))}),a.on("renderer:locationChanged",function(a){var c="#"+a,d=b.isBookmarked(a);-1===d?f.removeClass("icon-bookmark").addClass("icon-bookmark-empty"):f.addClass("icon-bookmark").removeClass("icon-bookmark-empty"),b.currentLocationCfi=a,b.settings.history&&window.location.hash!=c&&history.pushState({},"",c)}),a.on("book:pageChanged",function(a){}),{}},EPUBJS.reader.MetaController=function(a){var b=a.bookTitle,c=a.creator,d=$("#book-title"),e=$("#chapter-title"),f=$("#title-seperator");document.title=b+" – "+c,d.html(b),e.html(c),f.show()},EPUBJS.reader.NotesController=function(){var a=this.book,b=this,c=$("#notesView"),d=$("#notes"),e=$("#note-text"),f=$("#note-anchor"),g=b.settings.annotations,h=a.renderer,i=[],j=new EPUBJS.EpubCFI,k=function(){c.show()},l=function(){c.hide()},m=function(c){var d,g,h,i,k,l=a.renderer.doc;if(l.caretPositionFromPoint?(d=l.caretPositionFromPoint(c.clientX,c.clientY),g=d.offsetNode,h=d.offset):l.caretRangeFromPoint&&(d=l.caretRangeFromPoint(c.clientX,c.clientY),g=d.startContainer,h=d.startOffset),3!==g.nodeType)for(var p=0;pm/2.5&&(o=m/2.5,pop_content.style.maxHeight=o+"px"),popRect.height+l>=m-25?(b.style.top=l-popRect.height+"px",b.classList.add("above")):b.classList.remove("above"),k-popRect.width<=0?(b.style.left=k+"px",b.classList.add("left")):b.classList.remove("left"),k+popRect.width/2>=n?(b.style.left=k-300+"px",popRect=b.getBoundingClientRect(),b.style.left=k-popRect.width+"px",popRect.height+l>=m-25?(b.style.top=l-popRect.height+"px",b.classList.add("above")):b.classList.remove("above"),b.classList.add("right")):b.classList.remove("right")},f=function(){i[d].classList.add("on")},g=function(){i[d].classList.remove("on")},j=function(){setTimeout(function(){i[d].classList.remove("show")},100)},l=function(){b.ReaderController.slideOut(),k()};a.addEventListener("mouseover",e,!1),a.addEventListener("mouseout",j,!1),a.addEventListener("click",l,!1)};return f.on("click",function(b){f.text("Cancel"),e.prop("disabled","true"),a.on("renderer:click",m)}),g.forEach(function(a){n(a)}),h.registerHook("beforeChapterDisplay",function(a,b){var c=b.currentChapter;g.forEach(function(a){var b=j.parse(a.anchor);if(b.spinePos===c.spinePos)try{o(a)}catch(d){console.log("anchoring failed",a.anchor)}}),a()},!0),{show:k,hide:l}},EPUBJS.reader.ReaderController=function(a){var b=$("#main"),c=$("#divider"),d=$("#loader"),e=$("#next"),f=$("#prev"),g=this,a=this.book,h=function(){var c=a.getCurrentLocationCfi();g.settings.sidebarReflow?(b.removeClass("single"),b.one("transitionend",function(){a.gotoCfi(c)})):b.removeClass("closed")},i=function(){var c=a.getCurrentLocationCfi();g.settings.sidebarReflow?(b.addClass("single"),b.one("transitionend",function(){a.gotoCfi(c)})):b.addClass("closed")},j=function(){d.show(),m()},k=function(){d.hide()},l=function(){c.addClass("show")},m=function(){c.removeClass("show")},n=!1,o=function(b){37==b.keyCode&&("rtl"===a.metadata.direction?a.nextPage():a.prevPage(),f.addClass("active"),n=!0,setTimeout(function(){n=!1,f.removeClass("active")},100),b.preventDefault()),39==b.keyCode&&("rtl"===a.metadata.direction?a.prevPage():a.nextPage(),e.addClass("active"),n=!0,setTimeout(function(){n=!1,e.removeClass("active")},100),b.preventDefault())};return document.addEventListener("keydown",o,!1),e.on("click",function(b){"rtl"===a.metadata.direction?a.prevPage():a.nextPage(),b.preventDefault()}),f.on("click",function(b){"rtl"===a.metadata.direction?a.nextPage():a.prevPage(),b.preventDefault()}),a.on("renderer:spreads",function(a){a?l():m()}),{slideOut:i,slideIn:h,showLoader:j,hideLoader:k,showDivider:l,hideDivider:m,arrowKeys:o}},EPUBJS.reader.SettingsController=function(){var a=(this.book,this),b=$("#settings-modal"),c=$(".overlay"),d=function(){b.addClass("md-show")},e=function(){b.removeClass("md-show")},f=$("#sidebarReflow");return f.on("click",function(){a.settings.sidebarReflow=!a.settings.sidebarReflow}),b.find(".closer").on("click",function(){e()}),c.on("click",function(){e()}),{show:d,hide:e}},EPUBJS.reader.SidebarController=function(a){var b=this,c=$("#sidebar"),d=$("#panels"),e="Toc",f=function(a){var c=a+"Controller";e!=a&&"undefined"!=typeof b[c]&&(b[e+"Controller"].hide(),b[c].show(),e=a,d.find(".active").removeClass("active"),d.find("#show-"+a).addClass("active"))},g=function(){return e},h=function(){b.sidebarOpen=!0,b.ReaderController.slideOut(),c.addClass("open")},i=function(){b.sidebarOpen=!1,b.ReaderController.slideIn(),c.removeClass("open")};return d.find(".show_view").on("click",function(a){var b=$(this).data("view");f(b),a.preventDefault()}),{show:h,hide:i,getActivePanel:g,changePanelTo:f}},EPUBJS.reader.TocController=function(a){var b=this.book,c=$("#tocView"),d=document.createDocumentFragment(),e=!1,f=function(a,b){var c=document.createElement("ul");return b||(b=1),a.forEach(function(a){var d=document.createElement("li"),e=document.createElement("a");toggle=document.createElement("a");var g;d.id="toc-"+a.id,d.classList.add("list_item"),e.textContent=a.label,e.href=a.href,e.classList.add("toc_link"),d.appendChild(e),a.subitems.length>0&&(b++,g=f(a.subitems,b),toggle.classList.add("toc_toggle"),d.insertBefore(toggle,e),d.appendChild(g)),c.appendChild(d)}),c},g=function(){c.show()},h=function(){c.hide()},i=function(a){var b=a.id,d=c.find("#toc-"+b),f=c.find(".currentChapter");c.find(".openChapter");d.length&&(d!=f&&d.has(e).length>0&&f.removeClass("currentChapter"),d.addClass("currentChapter"),d.parents("li").addClass("openChapter"))};b.on("renderer:chapterDisplayed",i);var j=f(a);return d.appendChild(j),c.append(d),c.find(".toc_link").on("click",function(a){var d=this.getAttribute("href");a.preventDefault(),b["goto"](d),c.find(".currentChapter").addClass("openChapter").removeClass("currentChapter"),$(this).parent("li").addClass("currentChapter")}),c.find(".toc_toggle").on("click",function(a){var b=$(this).parent("li"),c=b.hasClass("openChapter");a.preventDefault(),c?b.removeClass("openChapter"):b.addClass("openChapter")}),{show:g,hide:h}}; +EPUBJS.reader={},EPUBJS.reader.plugins={},function(a){var b=(a.ePubReader||{},a.ePubReader=function(a,b){return new EPUBJS.Reader(a,b)});"function"==typeof define&&define.amd?define(function(){return Reader}):"undefined"!=typeof module&&module.exports&&(module.exports=b)}(window,jQuery),EPUBJS.Reader=function(a,b){var c,d,e,f=this,g=$("#viewer"),h=window.location.search;this.settings=EPUBJS.core.defaults(b||{},{bookPath:a,restore:!0,reload:!1,bookmarks:void 0,annotations:void 0,contained:void 0,bookKey:void 0,styles:void 0,sidebarReflow:!1,generatePagination:!1,history:!0}),h&&(e=h.slice(1).split("&"),e.forEach(function(a){var b=a.split("="),c=b[0],d=b[1]||"";f.settings[c]=decodeURIComponent(d)})),this.setBookKey(this.settings.bookPath),this.settings.restore&&this.isSaved()&&this.applySavedSettings(),this.settings.styles=this.settings.styles||{fontSize:"100%"},this.book=c=new EPUBJS.Book(this.settings),this.settings.previousLocationCfi&&c.gotoCfi(this.settings.previousLocationCfi),this.offline=!1,this.sidebarOpen=!1,this.settings.bookmarks||(this.settings.bookmarks=[]),this.settings.annotations||(this.settings.annotations=[]),this.settings.generatePagination&&c.generatePagination(g.width(),g.height()),c.renderTo("viewer"),f.ReaderController=EPUBJS.reader.ReaderController.call(f,c),f.SettingsController=EPUBJS.reader.SettingsController.call(f,c),f.ControlsController=EPUBJS.reader.ControlsController.call(f,c),f.SidebarController=EPUBJS.reader.SidebarController.call(f,c),f.BookmarksController=EPUBJS.reader.BookmarksController.call(f,c),f.NotesController=EPUBJS.reader.NotesController.call(f,c);for(d in EPUBJS.reader.plugins)EPUBJS.reader.plugins.hasOwnProperty(d)&&(f[d]=EPUBJS.reader.plugins[d].call(f,c));return c.ready.all.then(function(){f.ReaderController.hideLoader()}),c.getMetadata().then(function(a){f.MetaController=EPUBJS.reader.MetaController.call(f,a)}),c.getToc().then(function(a){f.TocController=EPUBJS.reader.TocController.call(f,a)}),window.addEventListener("beforeunload",this.unload.bind(this),!1),window.addEventListener("hashchange",this.hashChanged.bind(this),!1),document.addEventListener("keydown",this.adjustFontSize.bind(this),!1),c.on("renderer:keydown",this.adjustFontSize.bind(this)),c.on("renderer:keydown",f.ReaderController.arrowKeys.bind(this)),c.on("renderer:selected",this.selectedRange.bind(this)),this},EPUBJS.Reader.prototype.adjustFontSize=function(a){var b,c=2,d=187,e=189,f=48,g=a.ctrlKey||a.metaKey;this.settings.styles&&(this.settings.styles.fontSize||(this.settings.styles.fontSize="100%"),b=parseInt(this.settings.styles.fontSize.slice(0,-1)),g&&a.keyCode==d&&(a.preventDefault(),this.book.setStyle("fontSize",b+c+"%")),g&&a.keyCode==e&&(a.preventDefault(),this.book.setStyle("fontSize",b-c+"%")),g&&a.keyCode==f&&(a.preventDefault(),this.book.setStyle("fontSize","100%")))},EPUBJS.Reader.prototype.addBookmark=function(a){var b=this.isBookmarked(a);b>-1||(this.settings.bookmarks.push(a),this.trigger("reader:bookmarked",a))},EPUBJS.Reader.prototype.removeBookmark=function(a){var b=this.isBookmarked(a);-1!==b&&(this.settings.bookmarks.splice(b,1),this.trigger("reader:unbookmarked",b))},EPUBJS.Reader.prototype.isBookmarked=function(a){var b=this.settings.bookmarks;return b.indexOf(a)},EPUBJS.Reader.prototype.clearBookmarks=function(){this.settings.bookmarks=[]},EPUBJS.Reader.prototype.addNote=function(a){this.settings.annotations.push(a)},EPUBJS.Reader.prototype.removeNote=function(a){var b=this.settings.annotations.indexOf(a);-1!==b&&delete this.settings.annotations[b]},EPUBJS.Reader.prototype.clearNotes=function(){this.settings.annotations=[]},EPUBJS.Reader.prototype.setBookKey=function(a){return this.settings.bookKey||(this.settings.bookKey="epubjsreader:"+EPUBJS.VERSION+":"+window.location.host+":"+a),this.settings.bookKey},EPUBJS.Reader.prototype.isSaved=function(){var a;return localStorage?(a=localStorage.getItem(this.settings.bookKey),null===a?!1:!0):!1},EPUBJS.Reader.prototype.removeSavedSettings=function(){return localStorage?void localStorage.removeItem(this.settings.bookKey):!1},EPUBJS.Reader.prototype.applySavedSettings=function(){var a;if(!localStorage)return!1;try{a=JSON.parse(localStorage.getItem(this.settings.bookKey))}catch(b){return!1}return a?(a.styles&&(this.settings.styles=EPUBJS.core.defaults(this.settings.styles||{},a.styles)),this.settings=EPUBJS.core.defaults(this.settings,a),!0):!1},EPUBJS.Reader.prototype.saveSettings=function(){return this.book&&(this.settings.previousLocationCfi=this.book.getCurrentLocationCfi()),localStorage?void localStorage.setItem(this.settings.bookKey,JSON.stringify(this.settings)):!1},EPUBJS.Reader.prototype.unload=function(){this.settings.restore&&localStorage&&this.saveSettings()},EPUBJS.Reader.prototype.hashChanged=function(){var a=window.location.hash.slice(1);this.book.goto(a)},EPUBJS.Reader.prototype.selectedRange=function(a){var b=new EPUBJS.EpubCFI,c=b.generateCfiFromRangeAnchor(a,this.book.renderer.currentChapter.cfiBase),d="#"+c;this.settings.history&&window.location.hash!=d&&(history.pushState({},"",d),this.currentLocationCfi=c)},RSVP.EventTarget.mixin(EPUBJS.Reader.prototype),EPUBJS.reader.BookmarksController=function(){var a=this.book,b=$("#bookmarksView"),c=b.find("#bookmarks"),d=document.createDocumentFragment(),e=function(){b.show()},f=function(){b.hide()},g=0,h=function(b){var c=document.createElement("li"),d=document.createElement("a");return c.id="bookmark-"+g,c.classList.add("list_item"),d.textContent=b,d.href=b,d.classList.add("bookmark_link"),d.addEventListener("click",function(b){var c=this.getAttribute("href");a.gotoCfi(c),b.preventDefault()},!1),c.appendChild(d),g++,c};return this.settings.bookmarks.forEach(function(a){var b=h(a);d.appendChild(b)}),c.append(d),this.on("reader:bookmarked",function(a){var b=h(a);c.append(b)}),this.on("reader:unbookmarked",function(a){var b=$("#bookmark-"+a);b.remove()}),{show:e,hide:f}},EPUBJS.reader.ControlsController=function(a){var b=this,c=($("#store"),$("#fullscreen")),d=($("#fullscreenicon"),$("#cancelfullscreenicon"),$("#slider")),e=($("#main"),$("#sidebar"),$("#setting")),f=$("#bookmark"),g=function(){b.offline=!1},h=function(){b.offline=!0},i=!1;return a.on("book:online",g),a.on("book:offline",h),d.on("click",function(){b.sidebarOpen?(b.SidebarController.hide(),d.addClass("icon-menu"),d.removeClass("icon-right")):(b.SidebarController.show(),d.addClass("icon-right"),d.removeClass("icon-menu"))}),"undefined"!=typeof screenfull&&(c.on("click",function(){screenfull.toggle($("#container")[0])}),screenfull.raw&&document.addEventListener(screenfull.raw.fullscreenchange,function(){i=screenfull.isFullscreen,i?c.addClass("icon-resize-small").removeClass("icon-resize-full"):c.addClass("icon-resize-full").removeClass("icon-resize-small")})),e.on("click",function(){b.SettingsController.show()}),f.on("click",function(){var a=b.book.getCurrentLocationCfi(),c=b.isBookmarked(a);-1===c?(b.addBookmark(a),f.addClass("icon-bookmark").removeClass("icon-bookmark-empty")):(b.removeBookmark(a),f.removeClass("icon-bookmark").addClass("icon-bookmark-empty"))}),a.on("renderer:locationChanged",function(a){var c="#"+a,d=b.isBookmarked(a);-1===d?f.removeClass("icon-bookmark").addClass("icon-bookmark-empty"):f.addClass("icon-bookmark").removeClass("icon-bookmark-empty"),b.currentLocationCfi=a,b.settings.history&&window.location.hash!=c&&history.pushState({},"",c)}),a.on("book:pageChanged",function(){}),{}},EPUBJS.reader.MetaController=function(a){var b=a.bookTitle,c=a.creator,d=$("#book-title"),e=$("#chapter-title"),f=$("#title-seperator");document.title=b+" – "+c,d.html(b),e.html(c),f.show()},EPUBJS.reader.NotesController=function(){var a=this.book,b=this,c=$("#notesView"),d=$("#notes"),e=$("#note-text"),f=$("#note-anchor"),g=b.settings.annotations,h=a.renderer,i=[],j=new EPUBJS.EpubCFI,k=function(){c.show()},l=function(){c.hide()},m=function(c){var d,g,h,i,k,l=a.renderer.doc;if(l.caretPositionFromPoint?(d=l.caretPositionFromPoint(c.clientX,c.clientY),g=d.offsetNode,h=d.offset):l.caretRangeFromPoint&&(d=l.caretRangeFromPoint(c.clientX,c.clientY),g=d.startContainer,h=d.startOffset),3!==g.nodeType)for(var p=0;pm/2.5&&(o=m/2.5,pop_content.style.maxHeight=o+"px"),popRect.height+l>=m-25?(b.style.top=l-popRect.height+"px",b.classList.add("above")):b.classList.remove("above"),k-popRect.width<=0?(b.style.left=k+"px",b.classList.add("left")):b.classList.remove("left"),k+popRect.width/2>=n?(b.style.left=k-300+"px",popRect=b.getBoundingClientRect(),b.style.left=k-popRect.width+"px",popRect.height+l>=m-25?(b.style.top=l-popRect.height+"px",b.classList.add("above")):b.classList.remove("above"),b.classList.add("right")):b.classList.remove("right")},f=function(){i[d].classList.add("on")},g=function(){i[d].classList.remove("on")},j=function(){setTimeout(function(){i[d].classList.remove("show")},100)},l=function(){b.ReaderController.slideOut(),k()};a.addEventListener("mouseover",e,!1),a.addEventListener("mouseout",j,!1),a.addEventListener("click",l,!1)};return f.on("click",function(){f.text("Cancel"),e.prop("disabled","true"),a.on("renderer:click",m)}),g.forEach(function(a){n(a)}),h.registerHook("beforeChapterDisplay",function(a,b){var c=b.currentChapter;g.forEach(function(a){var b=j.parse(a.anchor);if(b.spinePos===c.spinePos)try{o(a)}catch(d){console.log("anchoring failed",a.anchor)}}),a()},!0),{show:k,hide:l}},EPUBJS.reader.ReaderController=function(a){var b=$("#main"),c=$("#divider"),d=$("#loader"),e=$("#next"),f=$("#prev"),g=this,a=this.book,h=function(){var c=a.getCurrentLocationCfi();g.settings.sidebarReflow?(b.removeClass("single"),b.one("transitionend",function(){a.gotoCfi(c)})):b.removeClass("closed")},i=function(){var c=a.getCurrentLocationCfi();g.settings.sidebarReflow?(b.addClass("single"),b.one("transitionend",function(){a.gotoCfi(c)})):b.addClass("closed")},j=function(){d.show(),m()},k=function(){d.hide()},l=function(){c.addClass("show")},m=function(){c.removeClass("show")},n=!1,o=function(b){37==b.keyCode&&("rtl"===a.metadata.direction?a.nextPage():a.prevPage(),f.addClass("active"),n=!0,setTimeout(function(){n=!1,f.removeClass("active")},100),b.preventDefault()),39==b.keyCode&&("rtl"===a.metadata.direction?a.prevPage():a.nextPage(),e.addClass("active"),n=!0,setTimeout(function(){n=!1,e.removeClass("active")},100),b.preventDefault())};return document.addEventListener("keydown",o,!1),e.on("click",function(b){"rtl"===a.metadata.direction?a.prevPage():a.nextPage(),b.preventDefault()}),f.on("click",function(b){"rtl"===a.metadata.direction?a.nextPage():a.prevPage(),b.preventDefault()}),a.on("renderer:spreads",function(a){a?l():m()}),{slideOut:i,slideIn:h,showLoader:j,hideLoader:k,showDivider:l,hideDivider:m,arrowKeys:o}},EPUBJS.reader.SettingsController=function(){var a=(this.book,this),b=$("#settings-modal"),c=$(".overlay"),d=function(){b.addClass("md-show")},e=function(){b.removeClass("md-show")},f=$("#sidebarReflow");return f.on("click",function(){a.settings.sidebarReflow=!a.settings.sidebarReflow}),b.find(".closer").on("click",function(){e()}),c.on("click",function(){e()}),{show:d,hide:e}},EPUBJS.reader.SidebarController=function(){var a=this,b=$("#sidebar"),c=$("#panels"),d="Toc",e=function(b){var e=b+"Controller";d!=b&&"undefined"!=typeof a[e]&&(a[d+"Controller"].hide(),a[e].show(),d=b,c.find(".active").removeClass("active"),c.find("#show-"+b).addClass("active"))},f=function(){return d},g=function(){a.sidebarOpen=!0,a.ReaderController.slideOut(),b.addClass("open")},h=function(){a.sidebarOpen=!1,a.ReaderController.slideIn(),b.removeClass("open")};return c.find(".show_view").on("click",function(a){var b=$(this).data("view");e(b),a.preventDefault()}),{show:g,hide:h,getActivePanel:f,changePanelTo:e}},EPUBJS.reader.TocController=function(a){var b=this.book,c=$("#tocView"),d=document.createDocumentFragment(),e=!1,f=function(a,b){var c=document.createElement("ul");return b||(b=1),a.forEach(function(a){var d=document.createElement("li"),e=document.createElement("a");toggle=document.createElement("a");var g;d.id="toc-"+a.id,d.classList.add("list_item"),e.textContent=a.label,e.href=a.href,e.classList.add("toc_link"),d.appendChild(e),a.subitems.length>0&&(b++,g=f(a.subitems,b),toggle.classList.add("toc_toggle"),d.insertBefore(toggle,e),d.appendChild(g)),c.appendChild(d)}),c},g=function(){c.show()},h=function(){c.hide()},i=function(a){{var b=a.id,d=c.find("#toc-"+b),f=c.find(".currentChapter");c.find(".openChapter")}d.length&&(d!=f&&d.has(e).length>0&&f.removeClass("currentChapter"),d.addClass("currentChapter"),d.parents("li").addClass("openChapter"))};b.on("renderer:chapterDisplayed",i);var j=f(a);return d.appendChild(j),c.append(d),c.find(".toc_link").on("click",function(a){var d=this.getAttribute("href");a.preventDefault(),b.goto(d),c.find(".currentChapter").addClass("openChapter").removeClass("currentChapter"),$(this).parent("li").addClass("currentChapter")}),c.find(".toc_toggle").on("click",function(a){var b=$(this).parent("li"),c=b.hasClass("openChapter");a.preventDefault(),c?b.removeClass("openChapter"):b.addClass("openChapter")}),{show:g,hide:h}}; //# sourceMappingURL=reader.min.map \ No newline at end of file diff --git a/src/book.js b/src/book.js index fd8db2f..58c960d 100644 --- a/src/book.js +++ b/src/book.js @@ -540,7 +540,7 @@ EPUBJS.Book.prototype.loadChange = function(url){ EPUBJS.Book.prototype.unlistenToRenderer = function(renderer){ renderer.Events.forEach(function(eventName){ renderer.off(eventName); - } ); + }); }; //-- Choose between a request from store or a request from network diff --git a/src/chapter.js b/src/chapter.js index 80008a2..c4814d9 100644 --- a/src/chapter.js +++ b/src/chapter.js @@ -31,7 +31,7 @@ EPUBJS.Chapter.prototype.load = function(_store, _credentials){ if(store){ promise = store.getXml(this.absolute); }else{ - promise = EPUBJS.core.request(this.absolute, 'xml', credentials); + promise = EPUBJS.core.request(this.absolute, false, credentials); } promise.then(function(xml){ @@ -89,15 +89,6 @@ EPUBJS.Chapter.prototype.url = function(_store){ url = this.absolute; deferred.resolve(url); } - /* - loaded = EPUBJS.core.request(url, 'xml', false); - loaded.then(function(contents){ - chapter.contents = contents; - deferred.resolve(chapter.absolute); - }, function(error){ - deferred.reject(error); - }); - */ return deferred.promise; }; diff --git a/src/core.js b/src/core.js index e3d0f9a..64b7235 100644 --- a/src/core.js +++ b/src/core.js @@ -14,26 +14,83 @@ EPUBJS.core.getEls = function(classes) { EPUBJS.core.request = function(url, type, withCredentials) { var supportsURL = window.URL; var BLOB_RESPONSE = supportsURL ? "blob" : "arraybuffer"; - var deferred = new RSVP.defer(); - var xhr = new XMLHttpRequest(); + var uri; //-- Check from PDF.js: // https://github.com/mozilla/pdf.js/blob/master/web/compatibility.js var xhrPrototype = XMLHttpRequest.prototype; + var handler = function() { + var r; + + if (this.readyState != this.DONE) return; + + if (this.status === 200 || (this.status === 0 && this.response) ) { // Android & Firefox reporting 0 for local & blob urls + if(type == 'xml'){ + // If this.responseXML wasn't set, try to parse using a DOMParser from text + if(!this.responseXML){ + r = new DOMParser().parseFromString(this.response, "application/xml"); + } else { + r = this.responseXML; + } + }else + if(type == 'xhtml'){ + if(!this.responseXML){ + r = new DOMParser().parseFromString(this.response, "application/xhtml+xml"); + } else { + r = this.responseXML; + } + }else + if(type == 'html'){ + if(!this.responseXML){ + r = new DOMParser().parseFromString(this.response, "text/html"); + } else { + r = this.responseXML; + } + } else + if(type == 'json'){ + r = JSON.parse(this.response); + }else + if(type == 'blob'){ + + if(supportsURL) { + r = this.response; + } else { + //-- Safari doesn't support responseType blob, so create a blob from arraybuffer + r = new Blob([this.response]); + } + + }else{ + r = this.response; + } + + deferred.resolve(r); + } else { + deferred.reject({ + message : this.response, + stack : new Error().stack + }); + } + }; + if (!('overrideMimeType' in xhrPrototype)) { // IE10 might have response, but not overrideMimeType Object.defineProperty(xhrPrototype, 'overrideMimeType', { value: function xmlHttpRequestOverrideMimeType(mimeType) {} }); } + if(withCredentials) { xhr.withCredentials = true; } - xhr.open("GET", url, true); - xhr.onreadystatechange = handler; + + // If type isn't set, determine it from the file extension + if(!type) { + uri = EPUBJS.core.uri(url); + type = uri.extension; + } if(type == 'blob'){ xhr.responseType = BLOB_RESPONSE; @@ -44,56 +101,26 @@ EPUBJS.core.request = function(url, type, withCredentials) { } if(type == 'xml') { - xhr.overrideMimeType('text/xml'); + xhr.responseType = "document"; + xhr.overrideMimeType('text/xml'); // for OPF parsing } + if(type == 'xhtml') { + xhr.responseType = "document"; + } + + if(type == 'html') { + xhr.responseType = "document"; + } + if(type == "binary") { xhr.responseType = "arraybuffer"; } + xhr.open("GET", url, true); + xhr.onreadystatechange = handler; xhr.send(); - function handler() { - if (this.readyState === this.DONE) { - if (this.status === 200 || (this.status === 0 && this.response) ) { // Android & Firefox reporting 0 for local & blob urls - var r; - - if(type == 'xml'){ - - // If this.responseXML wasn't set, try to parse using a DOMParser from text - if(!this.responseXML){ - r = new DOMParser().parseFromString(this.response, "text/xml"); - } else { - r = this.responseXML; - } - - }else - if(type == 'json'){ - r = JSON.parse(this.response); - }else - if(type == 'blob'){ - - if(supportsURL) { - r = this.response; - } else { - //-- Safari doesn't support responseType blob, so create a blob from arraybuffer - r = new Blob([this.response]); - } - - }else{ - r = this.response; - } - - deferred.resolve(r); - } else { - deferred.reject({ - message : this.response, - stack : new Error().stack - }); - } - } - } - return deferred.promise; }; @@ -598,4 +625,4 @@ EPUBJS.core.values = function(object) { result[index] = object[props[index]]; } return result; -}; \ No newline at end of file +}; diff --git a/src/unarchiver.js b/src/unarchiver.js index 9c87e79..7573b3c 100644 --- a/src/unarchiver.js +++ b/src/unarchiver.js @@ -28,7 +28,8 @@ EPUBJS.Unarchiver.prototype.getXml = function(url, encoding){ return this.getText(decodededUrl, encoding). then(function(text){ var parser = new DOMParser(); - return parser.parseFromString(text, "text/xml"); + var mimeType = EPUBJS.core.getMimeType(url); + return parser.parseFromString(text, mimeType); }); }; @@ -41,7 +42,7 @@ EPUBJS.Unarchiver.prototype.getUrl = function(url, mime){ var _URL = window.URL || window.webkitURL || window.mozURL; var tempUrl; var blob; - + if(!entry) { deferred.reject({ message : "File not found in the epub: " + url,