@treinetic/treinetic-epub-reader 1.3.2 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +126 -155
- package/dist/ExternalControls.d.ts +40 -0
- package/dist/Keyboard.d.ts +14 -0
- package/dist/ModuleConfig.d.ts +14 -0
- package/dist/Settings.d.ts +6 -0
- package/dist/TOCJsonCreator.d.ts +11 -0
- package/dist/ThemeManager.d.ts +20 -0
- package/dist/TreineticEpubReader.d.ts +38 -0
- package/dist/TreineticHelpers.d.ts +19 -0
- package/dist/model/Metadata.d.ts +13 -0
- package/dist/model/Package.d.ts +21 -0
- package/dist/model/Spine.d.ts +19 -0
- package/dist/model/SpineItem.d.ts +34 -0
- package/dist/parser/EpubParser.d.ts +6 -0
- package/dist/style.css +1 -0
- package/dist/treinetic-epub-reader.es.js +3286 -0
- package/dist/treinetic-epub-reader.umd.js +38 -0
- package/dist/view/ReaderView.d.ts +42 -0
- package/license.txt +25 -0
- package/package.json +56 -153
- package/dist/TreineticEpubReader.css +0 -1324
- package/dist/TreineticEpubReader.js +0 -58314
- package/dist/TreineticEpubReader.min.css +0 -1
- package/dist/TreineticEpubReader.min.js +0 -2
- package/dist/TreineticEpubReader.min.js.map +0 -1
- package/dist/sample/assets/epub/epub_1.epub +0 -0
- package/dist/sample/assets/epub/epub_2/META-INF/container.xml +0 -6
- package/dist/sample/assets/epub/epub_2/OEBPS/0.css +0 -101
- package/dist/sample/assets/epub/epub_2/OEBPS/1.css +0 -12
- package/dist/sample/assets/epub/epub_2/OEBPS/@public@vhost@g@gutenberg@html@files@2852@2852-h@2852-h-0.htm.html +0 -26
- package/dist/sample/assets/epub/epub_2/OEBPS/@public@vhost@g@gutenberg@html@files@2852@2852-h@2852-h-1.htm.html +0 -27
- package/dist/sample/assets/epub/epub_2/OEBPS/@public@vhost@g@gutenberg@html@files@2852@2852-h@2852-h-10.htm.html +0 -49
- package/dist/sample/assets/epub/epub_2/OEBPS/@public@vhost@g@gutenberg@html@files@2852@2852-h@2852-h-11.htm.html +0 -152
- package/dist/sample/assets/epub/epub_2/OEBPS/@public@vhost@g@gutenberg@html@files@2852@2852-h@2852-h-12.htm.html +0 -111
- package/dist/sample/assets/epub/epub_2/OEBPS/@public@vhost@g@gutenberg@html@files@2852@2852-h@2852-h-13.htm.html +0 -136
- package/dist/sample/assets/epub/epub_2/OEBPS/@public@vhost@g@gutenberg@html@files@2852@2852-h@2852-h-14.htm.html +0 -177
- package/dist/sample/assets/epub/epub_2/OEBPS/@public@vhost@g@gutenberg@html@files@2852@2852-h@2852-h-15.htm.html +0 -144
- package/dist/sample/assets/epub/epub_2/OEBPS/@public@vhost@g@gutenberg@html@files@2852@2852-h@2852-h-16.htm.html +0 -105
- package/dist/sample/assets/epub/epub_2/OEBPS/@public@vhost@g@gutenberg@html@files@2852@2852-h@2852-h-17.htm.html +0 -52
- package/dist/sample/assets/epub/epub_2/OEBPS/@public@vhost@g@gutenberg@html@files@2852@2852-h@2852-h-2.htm.html +0 -83
- package/dist/sample/assets/epub/epub_2/OEBPS/@public@vhost@g@gutenberg@html@files@2852@2852-h@2852-h-3.htm.html +0 -84
- package/dist/sample/assets/epub/epub_2/OEBPS/@public@vhost@g@gutenberg@html@files@2852@2852-h@2852-h-4.htm.html +0 -69
- package/dist/sample/assets/epub/epub_2/OEBPS/@public@vhost@g@gutenberg@html@files@2852@2852-h@2852-h-5.htm.html +0 -158
- package/dist/sample/assets/epub/epub_2/OEBPS/@public@vhost@g@gutenberg@html@files@2852@2852-h@2852-h-6.htm.html +0 -154
- package/dist/sample/assets/epub/epub_2/OEBPS/@public@vhost@g@gutenberg@html@files@2852@2852-h@2852-h-7.htm.html +0 -163
- package/dist/sample/assets/epub/epub_2/OEBPS/@public@vhost@g@gutenberg@html@files@2852@2852-h@2852-h-8.htm.html +0 -94
- package/dist/sample/assets/epub/epub_2/OEBPS/@public@vhost@g@gutenberg@html@files@2852@2852-h@2852-h-9.htm.html +0 -154
- package/dist/sample/assets/epub/epub_2/OEBPS/@public@vhost@g@gutenberg@html@files@2852@2852-h@images@cover.jpg +0 -0
- package/dist/sample/assets/epub/epub_2/OEBPS/content.opf +0 -91
- package/dist/sample/assets/epub/epub_2/OEBPS/pgepub.css +0 -30
- package/dist/sample/assets/epub/epub_2/OEBPS/toc.ncx +0 -125
- package/dist/sample/assets/epub/epub_2/OEBPS/wrap0000.html +0 -16
- package/dist/sample/assets/epub/epub_2/mimetype +0 -1
- package/dist/sample/assets/images/horizontal.png +0 -0
- package/dist/sample/assets/images/horizontal@2x.png +0 -0
- package/dist/sample/assets/images/vertical.png +0 -0
- package/dist/sample/assets/images/vertical@2x.png +0 -0
- package/dist/sample/assets/workers/deflate.js +0 -2
- package/dist/sample/assets/workers/inflate.js +0 -2
- package/dist/sample/assets/workers/z-worker.js +0 -2
- package/dist/sample/css/TreineticEpubReader.css +0 -1324
- package/dist/sample/css/style.css +0 -248
- package/dist/sample/index.html +0 -63
- package/dist/sample/js/TreineticEpubReader.js +0 -58314
- package/dist/sample/js/main.js +0 -218
- package/dist/workers/deflate.js +0 -2
- package/dist/workers/inflate.js +0 -2
- package/dist/workers/z-worker.js +0 -2
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
!function(root,factory){"function"==typeof define&&define.amd?define(["jquery"],factory):root.TreineticEpubReader=factory(root.$)}(this,function($){var requirejs,require,define,root,factory;!function(undef){var main,req,makeMap,handlers,defined={},waiting={},config={},defining={},hasOwn=Object.prototype.hasOwnProperty,aps=[].slice,jsSuffixRegExp=/\.js$/;function hasProp(obj,prop){return hasOwn.call(obj,prop)}function normalize(name,baseName){var nameParts,nameSegment,mapValue,foundMap,lastIndex,foundI,foundStarMap,starI,i,j,part,baseParts=baseName&&baseName.split("/"),map=config.map,starMap=map&&map["*"]||{};if(name){for(lastIndex=(name=name.split("/")).length-1,config.nodeIdCompat&&jsSuffixRegExp.test(name[lastIndex])&&(name[lastIndex]=name[lastIndex].replace(jsSuffixRegExp,"")),"."===name[0].charAt(0)&&baseParts&&(name=baseParts.slice(0,baseParts.length-1).concat(name)),i=0;i<name.length;i++)if("."===(part=name[i]))name.splice(i,1),i-=1;else if(".."===part){if(0===i||1===i&&".."===name[2]||".."===name[i-1])continue;i>0&&(name.splice(i-1,2),i-=2)}name=name.join("/")}if((baseParts||starMap)&&map){for(i=(nameParts=name.split("/")).length;i>0;i-=1){if(nameSegment=nameParts.slice(0,i).join("/"),baseParts)for(j=baseParts.length;j>0;j-=1)if((mapValue=map[baseParts.slice(0,j).join("/")])&&(mapValue=mapValue[nameSegment])){foundMap=mapValue,foundI=i;break}if(foundMap)break;!foundStarMap&&starMap&&starMap[nameSegment]&&(foundStarMap=starMap[nameSegment],starI=i)}!foundMap&&foundStarMap&&(foundMap=foundStarMap,foundI=starI),foundMap&&(nameParts.splice(0,foundI,foundMap),name=nameParts.join("/"))}return name}function makeRequire(relName,forceSync){return function(){var args=aps.call(arguments,0);return"string"!=typeof args[0]&&1===args.length&&args.push(null),req.apply(undef,args.concat([relName,forceSync]))}}function makeLoad(depName){return function(value){defined[depName]=value}}function callDep(name){if(hasProp(waiting,name)){var args=waiting[name];delete waiting[name],defining[name]=!0,main.apply(undef,args)}if(!hasProp(defined,name)&&!hasProp(defining,name))throw new Error("No "+name);return defined[name]}function splitPrefix(name){var prefix,index=name?name.indexOf("!"):-1;return index>-1&&(prefix=name.substring(0,index),name=name.substring(index+1,name.length)),[prefix,name]}function makeRelParts(relName){return relName?splitPrefix(relName):[]}makeMap=function(name,relParts){var plugin,relName,parts=splitPrefix(name),prefix=parts[0],relResourceName=relParts[1];return name=parts[1],prefix&&(plugin=callDep(prefix=normalize(prefix,relResourceName))),prefix?name=plugin&&plugin.normalize?plugin.normalize(name,(relName=relResourceName,function(name){return normalize(name,relName)})):normalize(name,relResourceName):(prefix=(parts=splitPrefix(name=normalize(name,relResourceName)))[0],name=parts[1],prefix&&(plugin=callDep(prefix))),{f:prefix?prefix+"!"+name:name,n:name,pr:prefix,p:plugin}},handlers={require:function(name){return makeRequire(name)},exports:function(name){var e=defined[name];return void 0!==e?e:defined[name]={}},module:function(name){return{id:name,uri:"",exports:defined[name],config:function(name){return function(){return config&&config.config&&config.config[name]||{}}}(name)}}},main=function(name,deps,callback,relName){var cjsModule,depName,ret,map,i,relParts,usingExports,args=[],callbackType=typeof callback;if(relParts=makeRelParts(relName=relName||name),"undefined"===callbackType||"function"===callbackType){for(deps=!deps.length&&callback.length?["require","exports","module"]:deps,i=0;i<deps.length;i+=1)if("require"===(depName=(map=makeMap(deps[i],relParts)).f))args[i]=handlers.require(name);else if("exports"===depName)args[i]=handlers.exports(name),usingExports=!0;else if("module"===depName)cjsModule=args[i]=handlers.module(name);else if(hasProp(defined,depName)||hasProp(waiting,depName)||hasProp(defining,depName))args[i]=callDep(depName);else{if(!map.p)throw new Error(name+" missing "+depName);map.p.load(map.n,makeRequire(relName,!0),makeLoad(depName),{}),args[i]=defined[depName]}ret=callback?callback.apply(defined[name],args):void 0,name&&(cjsModule&&cjsModule.exports!==undef&&cjsModule.exports!==defined[name]?defined[name]=cjsModule.exports:ret===undef&&usingExports||(defined[name]=ret))}else name&&(defined[name]=callback)},requirejs=require=req=function(deps,callback,relName,forceSync,alt){if("string"==typeof deps)return handlers[deps]?handlers[deps](callback):callDep(makeMap(deps,makeRelParts(callback)).f);if(!deps.splice){if((config=deps).deps&&req(config.deps,config.callback),!callback)return;callback.splice?(deps=callback,callback=relName,relName=null):deps=undef}return callback=callback||function(){},"function"==typeof relName&&(relName=forceSync,forceSync=alt),forceSync?main(undef,deps,callback,relName):setTimeout(function(){main(undef,deps,callback,relName)},4),req},req.config=function(cfg){return req(cfg)},requirejs._defined=defined,(define=function(name,deps,callback){if("string"!=typeof name)throw new Error("See almond README: incorrect module build, no module name");deps.splice||(callback=deps,deps=[]),hasProp(defined,name)||hasProp(waiting,name)||(waiting[name]=[name,deps,callback])}).amd={jQuery:!0}}(),define("TreineticEpubReader",function(){}),function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define("eventEmitter",[],e):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EventEmitter3=e()}(function(){return function i(s,f,c){function u(t,e){if(!f[t]){if(!s[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(a)return a(t,!0);var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}var o=f[t]={exports:{}};s[t][0].call(o.exports,function(e){return u(s[t][1][e]||e)},o,o.exports,i,s,f,c)}return f[t].exports}for(var a="function"==typeof require&&require,e=0;e<c.length;e++)u(c[e]);return u}({1:[function(e,t,n){"use strict";var r=Object.prototype.hasOwnProperty,v="~";function o(){}function i(e,t,n,r,o){if("function"!=typeof n)throw new TypeError("The listener must be a function");var i=new function(e,t,n){this.fn=e,this.context=t,this.once=n||!1}(n,r||e,o),s=v?v+t:t;return e._events[s]?e._events[s].fn?e._events[s]=[e._events[s],i]:e._events[s].push(i):(e._events[s]=i,e._eventsCount++),e}function u(e,t){0==--e._eventsCount?e._events=new o:delete e._events[t]}function s(){this._events=new o,this._eventsCount=0}Object.create&&(o.prototype=Object.create(null),(new o).__proto__||(v=!1)),s.prototype.eventNames=function(){var e,t,n=[];if(0===this._eventsCount)return n;for(t in e=this._events)r.call(e,t)&&n.push(v?t.slice(1):t);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(e)):n},s.prototype.listeners=function(e){var t=v?v+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var r=0,o=n.length,i=new Array(o);r<o;r++)i[r]=n[r].fn;return i},s.prototype.listenerCount=function(e){var t=v?v+e:e,n=this._events[t];return n?n.fn?1:n.length:0},s.prototype.emit=function(e,t,n,r,o,i){var s=v?v+e:e;if(!this._events[s])return!1;var f,c,u=this._events[s],a=arguments.length;if(u.fn){switch(u.once&&this.removeListener(e,u.fn,void 0,!0),a){case 1:return u.fn.call(u.context),!0;case 2:return u.fn.call(u.context,t),!0;case 3:return u.fn.call(u.context,t,n),!0;case 4:return u.fn.call(u.context,t,n,r),!0;case 5:return u.fn.call(u.context,t,n,r,o),!0;case 6:return u.fn.call(u.context,t,n,r,o,i),!0}for(c=1,f=new Array(a-1);c<a;c++)f[c-1]=arguments[c];u.fn.apply(u.context,f)}else{var l,p=u.length;for(c=0;c<p;c++)switch(u[c].once&&this.removeListener(e,u[c].fn,void 0,!0),a){case 1:u[c].fn.call(u[c].context);break;case 2:u[c].fn.call(u[c].context,t);break;case 3:u[c].fn.call(u[c].context,t,n);break;case 4:u[c].fn.call(u[c].context,t,n,r);break;default:if(!f)for(l=1,f=new Array(a-1);l<a;l++)f[l-1]=arguments[l];u[c].fn.apply(u[c].context,f)}}return!0},s.prototype.on=function(e,t,n){return i(this,e,t,n,!1)},s.prototype.once=function(e,t,n){return i(this,e,t,n,!0)},s.prototype.removeListener=function(e,t,n,r){var o=v?v+e:e;if(!this._events[o])return this;if(!t)return u(this,o),this;var i=this._events[o];if(i.fn)i.fn!==t||r&&!i.once||n&&i.context!==n||u(this,o);else{for(var s=0,f=[],c=i.length;s<c;s++)(i[s].fn!==t||r&&!i[s].once||n&&i[s].context!==n)&&f.push(i[s]);f.length?this._events[o]=1===f.length?f[0]:f:u(this,o)}return this},s.prototype.removeAllListeners=function(e){var t;return e?(t=v?v+e:e,this._events[t]&&u(this,t)):(this._events=new o,this._eventsCount=0),this},s.prototype.off=s.prototype.removeListener,s.prototype.addListener=s.prototype.on,s.prefixed=v,s.EventEmitter=s,void 0!==t&&(t.exports=s)},{}]},{},[1])(1)}),define("readium_shared_js/globals",["jquery","eventEmitter"],function($,EventEmitter){var Globals={version:function(){return"0.8.0"},Views:{ORIENTATION_LANDSCAPE:"orientation_landscape",ORIENTATION_PORTRAIT:"orientation_portrait"},Events:{READER_INITIALIZED:"ReaderInitialized",PAGINATION_CHANGED:"PaginationChanged",SETTINGS_APPLIED:"SettingsApplied",FXL_VIEW_RESIZED:"FXLViewResized",READER_VIEW_CREATED:"ReaderViewCreated",READER_VIEW_DESTROYED:"ReaderViewDestroyed",CONTENT_DOCUMENT_LOAD_START:"ContentDocumentLoadStart",CONTENT_DOCUMENT_LOADED:"ContentDocumentLoaded",CONTENT_DOCUMENT_UNLOADED:"ContentDocumentUnloaded",MEDIA_OVERLAY_STATUS_CHANGED:"MediaOverlayStatusChanged",MEDIA_OVERLAY_TTS_SPEAK:"MediaOverlayTTSSpeak",MEDIA_OVERLAY_TTS_STOP:"MediaOverlayTTSStop",PLUGINS_LOADED:"PluginsLoaded"},InternalEvents:{CURRENT_VIEW_PAGINATION_CHANGED:"CurrentViewPaginationChanged"},logEvent:function(eventName,eventType,eventSource){0}};return $.extend(Globals,new EventEmitter),Globals}),navigator.epubReadingSystem={name:"",version:"0.0.0",layoutStyle:"paginated",hasFeature:function(feature,version){return(!version||"1.0"===version)&&("dom-manipulation"===feature||("layout-changes"===feature||"touch-events"!==feature&&("mouse-events"===feature||("keyboard-events"===feature||"spine-scripting"===feature))))}},function(){"use strict";console.debug||(console.debug=console.log),console.info||(console.info=console.log),console.warn||(console.warn=console.log),console.error||(console.error=console.log)}(),define("console_shim",function(){}),root=this,factory=function(){"use strict";var func,ArrayIterator,_apply=Function.call.bind(Function.apply),_call=Function.call.bind(Function.call),isArray=Array.isArray,keys=Object.keys,throwsError=function(func){try{return func(),!1}catch(e){return!0}},valueOrFalseIfThrows=function(func){try{return func()}catch(e){return!1}},isCallableWithoutNew=(func=throwsError,function(){return!_apply(func,this,arguments)}),supportsDescriptors=!!Object.defineProperty&&!throwsError(function(){return Object.defineProperty({},"x",{get:function(){}})}),functionsHaveNames="foo"===function(){}.name,_forEach=Function.call.bind(Array.prototype.forEach),_reduce=Function.call.bind(Array.prototype.reduce),_filter=Function.call.bind(Array.prototype.filter),_some=Function.call.bind(Array.prototype.some),defineProperty=function(object,name,value,force){!force&&name in object||(supportsDescriptors?Object.defineProperty(object,name,{configurable:!0,enumerable:!1,writable:!0,value:value}):object[name]=value)},defineProperties=function(object,map,forceOverride){_forEach(keys(map),function(name){var method=map[name];defineProperty(object,name,method,!!forceOverride)})},_toString=Function.call.bind(Object.prototype.toString),isCallable="function"==typeof/abc/?function(x){return"function"==typeof x&&"[object Function]"===_toString(x)}:function(x){return"function"==typeof x},Value_getter=function(object,name,getter){if(!supportsDescriptors)throw new TypeError("getters require true ES5 support");Object.defineProperty(object,name,{configurable:!0,enumerable:!1,get:getter})},Value_proxy=function(originalObject,key,targetObject){if(!supportsDescriptors)throw new TypeError("getters require true ES5 support");var originalDescriptor=Object.getOwnPropertyDescriptor(originalObject,key);Object.defineProperty(targetObject,key,{configurable:originalDescriptor.configurable,enumerable:originalDescriptor.enumerable,get:function(){return originalObject[key]},set:function(value){originalObject[key]=value}})},Value_redefine=function(object,property,newValue){if(supportsDescriptors){var descriptor=Object.getOwnPropertyDescriptor(object,property);descriptor.value=newValue,Object.defineProperty(object,property,descriptor)}else object[property]=newValue},Value_defineByDescriptor=function(object,property,descriptor){supportsDescriptors?Object.defineProperty(object,property,descriptor):"value"in descriptor&&(object[property]=descriptor.value)},Value_preserveToString=function(target,source){source&&isCallable(source.toString)&&defineProperty(target,"toString",source.toString.bind(source),!0)},create=Object.create||function(prototype,properties){var Prototype=function(){};Prototype.prototype=prototype;var object=new Prototype;return void 0!==properties&&keys(properties).forEach(function(key){Value_defineByDescriptor(object,key,properties[key])}),object},supportsSubclassing=function(C,f){return!!Object.setPrototypeOf&&valueOrFalseIfThrows(function(){var Sub=function Subclass(arg){var o=new C(arg);return Object.setPrototypeOf(o,Subclass.prototype),o};return Object.setPrototypeOf(Sub,C),Sub.prototype=create(C.prototype,{constructor:{value:Sub}}),f(Sub)})},globals=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")}(),globalIsFinite=globals.isFinite,_indexOf=Function.call.bind(String.prototype.indexOf),_arrayIndexOfApply=Function.apply.bind(Array.prototype.indexOf),_concat=Function.call.bind(Array.prototype.concat),_strSlice=Function.call.bind(String.prototype.slice),_push=Function.call.bind(Array.prototype.push),_pushApply=Function.apply.bind(Array.prototype.push),_shift=Function.call.bind(Array.prototype.shift),_max=Math.max,_min=Math.min,_floor=Math.floor,_abs=Math.abs,_exp=Math.exp,_log=Math.log,_sqrt=Math.sqrt,_hasOwnProperty=Function.call.bind(Object.prototype.hasOwnProperty),noop=function(){},OrigMap=globals.Map,origMapDelete=OrigMap&&OrigMap.prototype.delete,origMapGet=OrigMap&&OrigMap.prototype.get,origMapHas=OrigMap&&OrigMap.prototype.has,origMapSet=OrigMap&&OrigMap.prototype.set,Symbol=globals.Symbol||{},symbolSpecies=Symbol.species||"@@species",numberIsNaN=Number.isNaN||function(value){return value!=value},numberIsFinite=Number.isFinite||function(value){return"number"==typeof value&&globalIsFinite(value)},_sign=isCallable(Math.sign)?Math.sign:function(value){var number=Number(value);return 0===number?number:numberIsNaN(number)?number:number<0?-1:1},_log1p=function(value){var x=Number(value);return x<-1||numberIsNaN(x)?NaN:0===x||x===1/0?x:-1===x?-1/0:1+x-1==0?x:x*(_log(1+x)/(1+x-1))},isStandardArguments=function(value){return"[object Arguments]"===_toString(value)},isArguments=isStandardArguments(arguments)?isStandardArguments:function(value){return null!==value&&"object"==typeof value&&"number"==typeof value.length&&value.length>=0&&"[object Array]"!==_toString(value)&&"[object Function]"===_toString(value.callee)},Type_primitive=function(x){return null===x||"function"!=typeof x&&"object"!=typeof x},Type_string=function(x){return"[object String]"===_toString(x)},Type_regex=function(x){return"[object RegExp]"===_toString(x)},Type_symbol=function(x){return"function"==typeof globals.Symbol&&"symbol"==typeof x},overrideNative=function(object,property,replacement){var original=object[property];defineProperty(object,property,replacement,!0),Value_preserveToString(object[property],original)},hasSymbols="function"==typeof Symbol&&"function"==typeof Symbol.for&&Type_symbol(Symbol()),$iterator$=Type_symbol(Symbol.iterator)?Symbol.iterator:"_es6-shim iterator_";globals.Set&&"function"==typeof(new globals.Set)["@@iterator"]&&($iterator$="@@iterator"),globals.Reflect||defineProperty(globals,"Reflect",{},!0);var o,Reflect=globals.Reflect,$String=String,domAll="undefined"!=typeof document&&document?document.all:null,isNullOrUndefined=null==domAll?function(x){return null==x}:function(x){return null==x&&x!==domAll},ES={Call:function(F,V){var args=arguments.length>2?arguments[2]:[];if(!ES.IsCallable(F))throw new TypeError(F+" is not a function");return _apply(F,V,args)},RequireObjectCoercible:function(x,optMessage){if(isNullOrUndefined(x))throw new TypeError(optMessage||"Cannot call method on "+x);return x},TypeIsObject:function(x){return void 0!==x&&null!==x&&!0!==x&&!1!==x&&("function"==typeof x||"object"==typeof x||x===domAll)},ToObject:function(o,optMessage){return Object(ES.RequireObjectCoercible(o,optMessage))},IsCallable:isCallable,IsConstructor:function(x){return ES.IsCallable(x)},ToInt32:function(x){return ES.ToNumber(x)>>0},ToUint32:function(x){return ES.ToNumber(x)>>>0},ToNumber:function(value){if("[object Symbol]"===_toString(value))throw new TypeError("Cannot convert a Symbol value to a number");return+value},ToInteger:function(value){var number=ES.ToNumber(value);return numberIsNaN(number)?0:0!==number&&numberIsFinite(number)?(number>0?1:-1)*_floor(_abs(number)):number},ToLength:function(value){var len=ES.ToInteger(value);return len<=0?0:len>Number.MAX_SAFE_INTEGER?Number.MAX_SAFE_INTEGER:len},SameValue:function(a,b){return a===b?0!==a||1/a==1/b:numberIsNaN(a)&&numberIsNaN(b)},SameValueZero:function(a,b){return a===b||numberIsNaN(a)&&numberIsNaN(b)},IsIterable:function(o){return ES.TypeIsObject(o)&&(void 0!==o[$iterator$]||isArguments(o))},GetIterator:function(o){if(isArguments(o))return new ArrayIterator(o,"value");var itFn=ES.GetMethod(o,$iterator$);if(!ES.IsCallable(itFn))throw new TypeError("value is not an iterable");var it=ES.Call(itFn,o);if(!ES.TypeIsObject(it))throw new TypeError("bad iterator");return it},GetMethod:function(o,p){var func=ES.ToObject(o)[p];if(!isNullOrUndefined(func)){if(!ES.IsCallable(func))throw new TypeError("Method not callable: "+p);return func}},IteratorComplete:function(iterResult){return!!iterResult.done},IteratorClose:function(iterator,completionIsThrow){var returnMethod=ES.GetMethod(iterator,"return");if(void 0!==returnMethod){var innerResult,innerException;try{innerResult=ES.Call(returnMethod,iterator)}catch(e){innerException=e}if(!completionIsThrow){if(innerException)throw innerException;if(!ES.TypeIsObject(innerResult))throw new TypeError("Iterator's return method returned a non-object.")}}},IteratorNext:function(it){var result=arguments.length>1?it.next(arguments[1]):it.next();if(!ES.TypeIsObject(result))throw new TypeError("bad iterator");return result},IteratorStep:function(it){var result=ES.IteratorNext(it);return!ES.IteratorComplete(result)&&result},Construct:function(C,args,newTarget,isES6internal){var target=void 0===newTarget?C:newTarget;if(!isES6internal&&Reflect.construct)return Reflect.construct(C,args,target);var proto=target.prototype;ES.TypeIsObject(proto)||(proto=Object.prototype);var obj=create(proto),result=ES.Call(C,obj,args);return ES.TypeIsObject(result)?result:obj},SpeciesConstructor:function(O,defaultConstructor){var C=O.constructor;if(void 0===C)return defaultConstructor;if(!ES.TypeIsObject(C))throw new TypeError("Bad constructor");var S=C[symbolSpecies];if(isNullOrUndefined(S))return defaultConstructor;if(!ES.IsConstructor(S))throw new TypeError("Bad @@species");return S},CreateHTML:function(string,tag,attribute,value){var S=ES.ToString(string),p1="<"+tag;""!==attribute&&(p1+=" "+attribute+'="'+ES.ToString(value).replace(/"/g,""")+'"');return p1+">"+S+"</"+tag+">"},IsRegExp:function(argument){if(!ES.TypeIsObject(argument))return!1;var isRegExp=argument[Symbol.match];return void 0!==isRegExp?!!isRegExp:Type_regex(argument)},ToString:function(string){return $String(string)}};if(supportsDescriptors&&hasSymbols){var defineWellKnownSymbol=function(name){if(Type_symbol(Symbol[name]))return Symbol[name];var sym=Symbol.for("Symbol."+name);return Object.defineProperty(Symbol,name,{configurable:!1,enumerable:!1,writable:!1,value:sym}),sym};if(!Type_symbol(Symbol.search)){var symbolSearch=defineWellKnownSymbol("search"),originalSearch=String.prototype.search;defineProperty(RegExp.prototype,symbolSearch,function(string){return ES.Call(originalSearch,string,[this])});overrideNative(String.prototype,"search",function(regexp){var O=ES.RequireObjectCoercible(this);if(!isNullOrUndefined(regexp)){var searcher=ES.GetMethod(regexp,symbolSearch);if(void 0!==searcher)return ES.Call(searcher,regexp,[O])}return ES.Call(originalSearch,O,[ES.ToString(regexp)])})}if(!Type_symbol(Symbol.replace)){var symbolReplace=defineWellKnownSymbol("replace"),originalReplace=String.prototype.replace;defineProperty(RegExp.prototype,symbolReplace,function(string,replaceValue){return ES.Call(originalReplace,string,[this,replaceValue])});overrideNative(String.prototype,"replace",function(searchValue,replaceValue){var O=ES.RequireObjectCoercible(this);if(!isNullOrUndefined(searchValue)){var replacer=ES.GetMethod(searchValue,symbolReplace);if(void 0!==replacer)return ES.Call(replacer,searchValue,[O,replaceValue])}return ES.Call(originalReplace,O,[ES.ToString(searchValue),replaceValue])})}if(!Type_symbol(Symbol.split)){var symbolSplit=defineWellKnownSymbol("split"),originalSplit=String.prototype.split;defineProperty(RegExp.prototype,symbolSplit,function(string,limit){return ES.Call(originalSplit,string,[this,limit])});overrideNative(String.prototype,"split",function(separator,limit){var O=ES.RequireObjectCoercible(this);if(!isNullOrUndefined(separator)){var splitter=ES.GetMethod(separator,symbolSplit);if(void 0!==splitter)return ES.Call(splitter,separator,[O,limit])}return ES.Call(originalSplit,O,[ES.ToString(separator),limit])})}var symbolMatchExists=Type_symbol(Symbol.match),stringMatchIgnoresSymbolMatch=symbolMatchExists&&((o={})[Symbol.match]=function(){return 42},42!=="a".match(o));if(!symbolMatchExists||stringMatchIgnoresSymbolMatch){var symbolMatch=defineWellKnownSymbol("match"),originalMatch=String.prototype.match;defineProperty(RegExp.prototype,symbolMatch,function(string){return ES.Call(originalMatch,string,[this])});overrideNative(String.prototype,"match",function(regexp){var O=ES.RequireObjectCoercible(this);if(!isNullOrUndefined(regexp)){var matcher=ES.GetMethod(regexp,symbolMatch);if(void 0!==matcher)return ES.Call(matcher,regexp,[O])}return ES.Call(originalMatch,O,[ES.ToString(regexp)])})}}var wrapConstructor=function(original,replacement,keysToSkip){Value_preserveToString(replacement,original),Object.setPrototypeOf&&Object.setPrototypeOf(original,replacement),supportsDescriptors?_forEach(Object.getOwnPropertyNames(original),function(key){key in noop||keysToSkip[key]||Value_proxy(original,key,replacement)}):_forEach(Object.keys(original),function(key){key in noop||keysToSkip[key]||(replacement[key]=original[key])}),replacement.prototype=original.prototype,Value_redefine(original.prototype,"constructor",replacement)},defaultSpeciesGetter=function(){return this},addDefaultSpecies=function(C){supportsDescriptors&&!_hasOwnProperty(C,symbolSpecies)&&Value_getter(C,symbolSpecies,defaultSpeciesGetter)},addIterator=function(prototype,impl){var implementation=impl||function(){return this};defineProperty(prototype,$iterator$,implementation),!prototype[$iterator$]&&Type_symbol($iterator$)&&(prototype[$iterator$]=implementation)},createDataPropertyOrThrow=function(object,name,value){if(function(object,name,value){supportsDescriptors?Object.defineProperty(object,name,{configurable:!0,enumerable:!0,writable:!0,value:value}):object[name]=value}(object,name,value),!ES.SameValue(object[name],value))throw new TypeError("property is nonconfigurable")},emulateES6construct=function(o,defaultNewTarget,defaultProto,slots){if(!ES.TypeIsObject(o))throw new TypeError("Constructor requires `new`: "+defaultNewTarget.name);var proto=defaultNewTarget.prototype;ES.TypeIsObject(proto)||(proto=defaultProto);var obj=create(proto);for(var name in slots)if(_hasOwnProperty(slots,name)){var value=slots[name];defineProperty(obj,name,value,!0)}return obj};if(String.fromCodePoint&&1!==String.fromCodePoint.length){var originalFromCodePoint=String.fromCodePoint;overrideNative(String,"fromCodePoint",function(codePoints){return ES.Call(originalFromCodePoint,this,arguments)})}var StringShims={fromCodePoint:function(codePoints){for(var next,result=[],i=0,length=arguments.length;i<length;i++){if(next=Number(arguments[i]),!ES.SameValue(next,ES.ToInteger(next))||next<0||next>1114111)throw new RangeError("Invalid code point "+next);next<65536?_push(result,String.fromCharCode(next)):(next-=65536,_push(result,String.fromCharCode(55296+(next>>10))),_push(result,String.fromCharCode(next%1024+56320)))}return result.join("")},raw:function(callSite){var cooked=ES.ToObject(callSite,"bad callSite"),rawString=ES.ToObject(cooked.raw,"bad raw value"),len=rawString.length,literalsegments=ES.ToLength(len);if(literalsegments<=0)return"";for(var nextKey,next,nextSeg,nextSub,stringElements=[],nextIndex=0;nextIndex<literalsegments&&(nextKey=ES.ToString(nextIndex),nextSeg=ES.ToString(rawString[nextKey]),_push(stringElements,nextSeg),!(nextIndex+1>=literalsegments));)next=nextIndex+1<arguments.length?arguments[nextIndex+1]:"",nextSub=ES.ToString(next),_push(stringElements,nextSub),nextIndex+=1;return stringElements.join("")}};String.raw&&"xy"!==String.raw({raw:{0:"x",1:"y",length:2}})&&overrideNative(String,"raw",StringShims.raw),defineProperties(String,StringShims);var StringPrototypeShims={repeat:function(times){var thisStr=ES.ToString(ES.RequireObjectCoercible(this)),numTimes=ES.ToInteger(times);if(numTimes<0||numTimes>=1/0)throw new RangeError("repeat count must be less than infinity and not overflow maximum string size");return function repeat(s,times){if(times<1)return"";if(times%2)return repeat(s,times-1)+s;var half=repeat(s,times/2);return half+half}(thisStr,numTimes)},startsWith:function(searchString){var S=ES.ToString(ES.RequireObjectCoercible(this));if(ES.IsRegExp(searchString))throw new TypeError('Cannot call method "startsWith" with a regex');var position,searchStr=ES.ToString(searchString);arguments.length>1&&(position=arguments[1]);var start=_max(ES.ToInteger(position),0);return _strSlice(S,start,start+searchStr.length)===searchStr},endsWith:function(searchString){var S=ES.ToString(ES.RequireObjectCoercible(this));if(ES.IsRegExp(searchString))throw new TypeError('Cannot call method "endsWith" with a regex');var endPosition,searchStr=ES.ToString(searchString),len=S.length;arguments.length>1&&(endPosition=arguments[1]);var pos=void 0===endPosition?len:ES.ToInteger(endPosition),end=_min(_max(pos,0),len);return _strSlice(S,end-searchStr.length,end)===searchStr},includes:function(searchString){if(ES.IsRegExp(searchString))throw new TypeError('"includes" does not accept a RegExp');var position,searchStr=ES.ToString(searchString);return arguments.length>1&&(position=arguments[1]),-1!==_indexOf(this,searchStr,position)},codePointAt:function(pos){var thisStr=ES.ToString(ES.RequireObjectCoercible(this)),position=ES.ToInteger(pos),length=thisStr.length;if(position>=0&&position<length){var first=thisStr.charCodeAt(position);if(first<55296||first>56319||position+1===length)return first;var second=thisStr.charCodeAt(position+1);return second<56320||second>57343?first:1024*(first-55296)+(second-56320)+65536}}};if(String.prototype.includes&&!1!=="a".includes("a",1/0)&&overrideNative(String.prototype,"includes",StringPrototypeShims.includes),String.prototype.startsWith&&String.prototype.endsWith){var startsWithRejectsRegex=throwsError(function(){return"/a/".startsWith(/a/)}),startsWithHandlesInfinity=valueOrFalseIfThrows(function(){return!1==="abc".startsWith("a",1/0)});startsWithRejectsRegex&&startsWithHandlesInfinity||(overrideNative(String.prototype,"startsWith",StringPrototypeShims.startsWith),overrideNative(String.prototype,"endsWith",StringPrototypeShims.endsWith))}hasSymbols&&(valueOrFalseIfThrows(function(){var re=/a/;return re[Symbol.match]=!1,"/a/".startsWith(re)})||overrideNative(String.prototype,"startsWith",StringPrototypeShims.startsWith),valueOrFalseIfThrows(function(){var re=/a/;return re[Symbol.match]=!1,"/a/".endsWith(re)})||overrideNative(String.prototype,"endsWith",StringPrototypeShims.endsWith),valueOrFalseIfThrows(function(){var re=/a/;return re[Symbol.match]=!1,"/a/".includes(re)})||overrideNative(String.prototype,"includes",StringPrototypeShims.includes));defineProperties(String.prototype,StringPrototypeShims);var ws=["\t\n\v\f\r "," \u2028","\u2029\ufeff"].join(""),trimRegexp=new RegExp("(^["+ws+"]+)|(["+ws+"]+$)","g"),trimShim=function(){return ES.ToString(ES.RequireObjectCoercible(this)).replace(trimRegexp,"")},nonWS=["
","",""].join(""),nonWSregex=new RegExp("["+nonWS+"]","g"),isBadHexRegex=/^[-+]0x[0-9a-f]+$/i,hasStringTrimBug=nonWS.trim().length!==nonWS.length;defineProperty(String.prototype,"trim",trimShim,hasStringTrimBug);var iteratorResult=function(x){return{value:x,done:0===arguments.length}},StringIterator=function(s){ES.RequireObjectCoercible(s),this._s=ES.ToString(s),this._i=0};StringIterator.prototype.next=function(){var s=this._s,i=this._i;if(void 0===s||i>=s.length)return this._s=void 0,iteratorResult();var second,len,first=s.charCodeAt(i);return len=first<55296||first>56319||i+1===s.length?1:(second=s.charCodeAt(i+1))<56320||second>57343?1:2,this._i=i+len,iteratorResult(s.substr(i,len))},addIterator(StringIterator.prototype),addIterator(String.prototype,function(){return new StringIterator(this)});var ArrayShims={from:function(items){var mapFn,mapping,T,length,result,i,C=this;if(arguments.length>1&&(mapFn=arguments[1]),void 0===mapFn)mapping=!1;else{if(!ES.IsCallable(mapFn))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(T=arguments[2]),mapping=!0}if(void 0!==(isArguments(items)||ES.GetMethod(items,$iterator$))){result=ES.IsConstructor(C)?Object(new C):[];var next,nextValue,iterator=ES.GetIterator(items);for(i=0;!1!==(next=ES.IteratorStep(iterator));){nextValue=next.value;try{mapping&&(nextValue=void 0===T?mapFn(nextValue,i):_call(mapFn,T,nextValue,i)),result[i]=nextValue}catch(e){throw ES.IteratorClose(iterator,!0),e}i+=1}length=i}else{var value,arrayLike=ES.ToObject(items);for(length=ES.ToLength(arrayLike.length),result=ES.IsConstructor(C)?Object(new C(length)):new Array(length),i=0;i<length;++i)value=arrayLike[i],mapping&&(value=void 0===T?mapFn(value,i):_call(mapFn,T,value,i)),createDataPropertyOrThrow(result,i,value)}return result.length=length,result},of:function(){for(var len=arguments.length,C=this,A=isArray(C)||!ES.IsCallable(C)?new Array(len):ES.Construct(C,[len]),k=0;k<len;++k)createDataPropertyOrThrow(A,k,arguments[k]);return A.length=len,A}};defineProperties(Array,ArrayShims),addDefaultSpecies(Array),defineProperties((ArrayIterator=function(array,kind){this.i=0,this.array=array,this.kind=kind}).prototype,{next:function(){var i=this.i,array=this.array;if(!(this instanceof ArrayIterator))throw new TypeError("Not an ArrayIterator");if(void 0!==array)for(var len=ES.ToLength(array.length);i<len;i++){var retval,kind=this.kind;return"key"===kind?retval=i:"value"===kind?retval=array[i]:"entry"===kind&&(retval=[i,array[i]]),this.i=i+1,iteratorResult(retval)}return this.array=void 0,iteratorResult()}}),addIterator(ArrayIterator.prototype),Array.of===ArrayShims.of||function(){var Foo=function(len){this.length=len};Foo.prototype=[];var fooArr=Array.of.apply(Foo,[1,2]);return fooArr instanceof Foo&&2===fooArr.length}()||overrideNative(Array,"of",ArrayShims.of);var ArrayPrototypeShims={copyWithin:function(target,start){var end,o=ES.ToObject(this),len=ES.ToLength(o.length),relativeTarget=ES.ToInteger(target),relativeStart=ES.ToInteger(start),to=relativeTarget<0?_max(len+relativeTarget,0):_min(relativeTarget,len),from=relativeStart<0?_max(len+relativeStart,0):_min(relativeStart,len);arguments.length>2&&(end=arguments[2]);var relativeEnd=void 0===end?len:ES.ToInteger(end),finalItem=relativeEnd<0?_max(len+relativeEnd,0):_min(relativeEnd,len),count=_min(finalItem-from,len-to),direction=1;for(from<to&&to<from+count&&(direction=-1,from+=count-1,to+=count-1);count>0;)from in o?o[to]=o[from]:delete o[to],from+=direction,to+=direction,count-=1;return o},fill:function(value){var start,end;arguments.length>1&&(start=arguments[1]),arguments.length>2&&(end=arguments[2]);var O=ES.ToObject(this),len=ES.ToLength(O.length);start=ES.ToInteger(void 0===start?0:start),end=ES.ToInteger(void 0===end?len:end);for(var relativeStart=start<0?_max(len+start,0):_min(start,len),relativeEnd=end<0?len+end:end,i=relativeStart;i<len&&i<relativeEnd;++i)O[i]=value;return O},find:function(predicate){var list=ES.ToObject(this),length=ES.ToLength(list.length);if(!ES.IsCallable(predicate))throw new TypeError("Array#find: predicate must be a function");for(var value,thisArg=arguments.length>1?arguments[1]:null,i=0;i<length;i++)if(value=list[i],thisArg){if(_call(predicate,thisArg,value,i,list))return value}else if(predicate(value,i,list))return value},findIndex:function(predicate){var list=ES.ToObject(this),length=ES.ToLength(list.length);if(!ES.IsCallable(predicate))throw new TypeError("Array#findIndex: predicate must be a function");for(var thisArg=arguments.length>1?arguments[1]:null,i=0;i<length;i++)if(thisArg){if(_call(predicate,thisArg,list[i],i,list))return i}else if(predicate(list[i],i,list))return i;return-1},keys:function(){return new ArrayIterator(this,"key")},values:function(){return new ArrayIterator(this,"value")},entries:function(){return new ArrayIterator(this,"entry")}};if(Array.prototype.keys&&!ES.IsCallable([1].keys().next)&&delete Array.prototype.keys,Array.prototype.entries&&!ES.IsCallable([1].entries().next)&&delete Array.prototype.entries,Array.prototype.keys&&Array.prototype.entries&&!Array.prototype.values&&Array.prototype[$iterator$]&&(defineProperties(Array.prototype,{values:Array.prototype[$iterator$]}),Type_symbol(Symbol.unscopables)&&(Array.prototype[Symbol.unscopables].values=!0)),functionsHaveNames&&Array.prototype.values&&"values"!==Array.prototype.values.name){var originalArrayPrototypeValues=Array.prototype.values;overrideNative(Array.prototype,"values",function(){return ES.Call(originalArrayPrototypeValues,this,arguments)}),defineProperty(Array.prototype,$iterator$,Array.prototype.values,!0)}defineProperties(Array.prototype,ArrayPrototypeShims),1/[!0].indexOf(!0,-0)<0&&defineProperty(Array.prototype,"indexOf",function(searchElement){var value=_arrayIndexOfApply(this,arguments);return 0===value&&1/value<0?0:value},!0),addIterator(Array.prototype,function(){return this.values()}),Object.getPrototypeOf&&addIterator(Object.getPrototypeOf([].values()));var arr,arrayFromSwallowsNegativeLengths=valueOrFalseIfThrows(function(){return 0===Array.from({length:-1}).length}),arrayFromHandlesIterables=1===(arr=Array.from([0].entries())).length&&isArray(arr[0])&&0===arr[0][0]&&0===arr[0][1];if(arrayFromSwallowsNegativeLengths&&arrayFromHandlesIterables||overrideNative(Array,"from",ArrayShims.from),!valueOrFalseIfThrows(function(){return Array.from([0],void 0)})){var origArrayFrom=Array.from;overrideNative(Array,"from",function(items){return arguments.length>1&&void 0!==arguments[1]?ES.Call(origArrayFrom,this,arguments):_call(origArrayFrom,this,items)})}var int32sAsOne=-(Math.pow(2,32)-1),toLengthsCorrectly=function(method,reversed){var obj={length:int32sAsOne};return obj[reversed?(obj.length>>>0)-1:0]=!0,valueOrFalseIfThrows(function(){return _call(method,obj,function(){throw new RangeError("should not reach here")},[]),!0})};if(!toLengthsCorrectly(Array.prototype.forEach)){var originalForEach=Array.prototype.forEach;overrideNative(Array.prototype,"forEach",function(callbackFn){return ES.Call(originalForEach,this.length>=0?this:[],arguments)})}if(!toLengthsCorrectly(Array.prototype.map)){var originalMap=Array.prototype.map;overrideNative(Array.prototype,"map",function(callbackFn){return ES.Call(originalMap,this.length>=0?this:[],arguments)})}if(!toLengthsCorrectly(Array.prototype.filter)){var originalFilter=Array.prototype.filter;overrideNative(Array.prototype,"filter",function(callbackFn){return ES.Call(originalFilter,this.length>=0?this:[],arguments)})}if(!toLengthsCorrectly(Array.prototype.some)){var originalSome=Array.prototype.some;overrideNative(Array.prototype,"some",function(callbackFn){return ES.Call(originalSome,this.length>=0?this:[],arguments)})}if(!toLengthsCorrectly(Array.prototype.every)){var originalEvery=Array.prototype.every;overrideNative(Array.prototype,"every",function(callbackFn){return ES.Call(originalEvery,this.length>=0?this:[],arguments)})}if(!toLengthsCorrectly(Array.prototype.reduce)){var originalReduce=Array.prototype.reduce;overrideNative(Array.prototype,"reduce",function(callbackFn){return ES.Call(originalReduce,this.length>=0?this:[],arguments)})}if(!toLengthsCorrectly(Array.prototype.reduceRight,!0)){var originalReduceRight=Array.prototype.reduceRight;overrideNative(Array.prototype,"reduceRight",function(callbackFn){return ES.Call(originalReduceRight,this.length>=0?this:[],arguments)})}var lacksOctalSupport=8!==Number("0o10"),lacksBinarySupport=2!==Number("0b10"),trimsNonWhitespace=_some(nonWS,function(c){return 0===Number(c+0+c)});if(lacksOctalSupport||lacksBinarySupport||trimsNonWhitespace){var OrigNumber=Number,binaryRegex=/^0b[01]+$/i,octalRegex=/^0o[0-7]+$/i,isBinary=binaryRegex.test.bind(binaryRegex),isOctal=octalRegex.test.bind(octalRegex),hasNonWS=nonWSregex.test.bind(nonWSregex),isBadHex=isBadHexRegex.test.bind(isBadHexRegex),NumberShim=function(){var NumberShim=function(value){var primValue;"string"==typeof(primValue=arguments.length>0?Type_primitive(value)?value:function(O){var result;if("function"==typeof O.valueOf&&(result=O.valueOf(),Type_primitive(result)))return result;if("function"==typeof O.toString&&(result=O.toString(),Type_primitive(result)))return result;throw new TypeError("No default value")}(value):0)&&(primValue=ES.Call(trimShim,primValue),isBinary(primValue)?primValue=parseInt(_strSlice(primValue,2),2):isOctal(primValue)?primValue=parseInt(_strSlice(primValue,2),8):(hasNonWS(primValue)||isBadHex(primValue))&&(primValue=NaN));var receiver=this,valueOfSucceeds=valueOrFalseIfThrows(function(){return OrigNumber.prototype.valueOf.call(receiver),!0});return receiver instanceof NumberShim&&!valueOfSucceeds?new OrigNumber(primValue):OrigNumber(primValue)};return NumberShim}();wrapConstructor(OrigNumber,NumberShim,{}),defineProperties(NumberShim,{NaN:OrigNumber.NaN,MAX_VALUE:OrigNumber.MAX_VALUE,MIN_VALUE:OrigNumber.MIN_VALUE,NEGATIVE_INFINITY:OrigNumber.NEGATIVE_INFINITY,POSITIVE_INFINITY:OrigNumber.POSITIVE_INFINITY}),Number=NumberShim,Value_redefine(globals,"Number",NumberShim)}var maxSafeInteger=Math.pow(2,53)-1;defineProperties(Number,{MAX_SAFE_INTEGER:maxSafeInteger,MIN_SAFE_INTEGER:-maxSafeInteger,EPSILON:2.220446049250313e-16,parseInt:globals.parseInt,parseFloat:globals.parseFloat,isFinite:numberIsFinite,isInteger:function(value){return numberIsFinite(value)&&ES.ToInteger(value)===value},isSafeInteger:function(value){return Number.isInteger(value)&&_abs(value)<=Number.MAX_SAFE_INTEGER},isNaN:numberIsNaN}),defineProperty(Number,"parseInt",globals.parseInt,Number.parseInt!==globals.parseInt),1===[,1].find(function(){return!0})&&overrideNative(Array.prototype,"find",ArrayPrototypeShims.find),0!==[,1].findIndex(function(){return!0})&&overrideNative(Array.prototype,"findIndex",ArrayPrototypeShims.findIndex);var FAKENULL,gpo,spo,isEnumerableOn=Function.bind.call(Function.bind,Object.prototype.propertyIsEnumerable),ensureEnumerable=function(obj,prop){supportsDescriptors&&isEnumerableOn(obj,prop)&&Object.defineProperty(obj,prop,{enumerable:!1})},sliceArgs=function(){for(var initial=Number(this),len=arguments.length,desiredArgCount=len-initial,args=new Array(desiredArgCount<0?0:desiredArgCount),i=initial;i<len;++i)args[i-initial]=arguments[i];return args},assignTo=function(source){return function(target,key){return target[key]=source[key],target}},assignReducer=function(target,source){var symbols,sourceKeys=keys(Object(source));return ES.IsCallable(Object.getOwnPropertySymbols)&&(symbols=_filter(Object.getOwnPropertySymbols(Object(source)),isEnumerableOn(source))),_reduce(_concat(sourceKeys,symbols||[]),assignTo(source),target)},ObjectShims={assign:function(target,source){var to=ES.ToObject(target,"Cannot convert undefined or null to object");return _reduce(ES.Call(sliceArgs,1,arguments),assignReducer,to)},is:function(a,b){return ES.SameValue(a,b)}};if(Object.assign&&Object.preventExtensions&&function(){var thrower=Object.preventExtensions({1:2});try{Object.assign(thrower,"xy")}catch(e){return"y"===thrower[1]}}()&&overrideNative(Object,"assign",ObjectShims.assign),defineProperties(Object,ObjectShims),supportsDescriptors){var ES5ObjectShims={setPrototypeOf:function(Object,magic){var set,setPrototypeOf=function(O,proto){return function(O,proto){if(!ES.TypeIsObject(O))throw new TypeError("cannot set prototype on a non-object");if(null!==proto&&!ES.TypeIsObject(proto))throw new TypeError("can only set prototype to an object or null"+proto)}(O,proto),_call(set,O,proto),O};try{set=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,_call(set,{},null)}catch(e){if(Object.prototype!=={}.__proto__)return;set=function(proto){this.__proto__=proto},setPrototypeOf.polyfill=setPrototypeOf(setPrototypeOf({},null),Object.prototype)instanceof Object}return setPrototypeOf}(Object)};defineProperties(Object,ES5ObjectShims)}if(Object.setPrototypeOf&&Object.getPrototypeOf&&null!==Object.getPrototypeOf(Object.setPrototypeOf({},null))&&null===Object.getPrototypeOf(Object.create(null))&&(FAKENULL=Object.create(null),gpo=Object.getPrototypeOf,spo=Object.setPrototypeOf,Object.getPrototypeOf=function(o){var result=gpo(o);return result===FAKENULL?null:result},Object.setPrototypeOf=function(o,p){return spo(o,null===p?FAKENULL:p)},Object.setPrototypeOf.polyfill=!1),!!throwsError(function(){return Object.keys("foo")})){var originalObjectKeys=Object.keys;overrideNative(Object,"keys",function(value){return originalObjectKeys(ES.ToObject(value))}),keys=Object.keys}if(throwsError(function(){return Object.keys(/a/g)})){var regexRejectingObjectKeys=Object.keys;overrideNative(Object,"keys",function(value){if(Type_regex(value)){var regexKeys=[];for(var k in value)_hasOwnProperty(value,k)&&_push(regexKeys,k);return regexKeys}return regexRejectingObjectKeys(value)}),keys=Object.keys}if(Object.getOwnPropertyNames&&!!throwsError(function(){return Object.getOwnPropertyNames("foo")})){var cachedWindowNames="object"==typeof window?Object.getOwnPropertyNames(window):[],originalObjectGetOwnPropertyNames=Object.getOwnPropertyNames;overrideNative(Object,"getOwnPropertyNames",function(value){var val=ES.ToObject(value);if("[object Window]"===_toString(val))try{return originalObjectGetOwnPropertyNames(val)}catch(e){return _concat([],cachedWindowNames)}return originalObjectGetOwnPropertyNames(val)})}if(Object.getOwnPropertyDescriptor&&!!throwsError(function(){return Object.getOwnPropertyDescriptor("foo","bar")})){var originalObjectGetOwnPropertyDescriptor=Object.getOwnPropertyDescriptor;overrideNative(Object,"getOwnPropertyDescriptor",function(value,property){return originalObjectGetOwnPropertyDescriptor(ES.ToObject(value),property)})}if(Object.seal&&!!throwsError(function(){return Object.seal("foo")})){var originalObjectSeal=Object.seal;overrideNative(Object,"seal",function(value){return ES.TypeIsObject(value)?originalObjectSeal(value):value})}if(Object.isSealed&&!!throwsError(function(){return Object.isSealed("foo")})){var originalObjectIsSealed=Object.isSealed;overrideNative(Object,"isSealed",function(value){return!ES.TypeIsObject(value)||originalObjectIsSealed(value)})}if(Object.freeze&&!!throwsError(function(){return Object.freeze("foo")})){var originalObjectFreeze=Object.freeze;overrideNative(Object,"freeze",function(value){return ES.TypeIsObject(value)?originalObjectFreeze(value):value})}if(Object.isFrozen&&!!throwsError(function(){return Object.isFrozen("foo")})){var originalObjectIsFrozen=Object.isFrozen;overrideNative(Object,"isFrozen",function(value){return!ES.TypeIsObject(value)||originalObjectIsFrozen(value)})}if(Object.preventExtensions&&!!throwsError(function(){return Object.preventExtensions("foo")})){var originalObjectPreventExtensions=Object.preventExtensions;overrideNative(Object,"preventExtensions",function(value){return ES.TypeIsObject(value)?originalObjectPreventExtensions(value):value})}if(Object.isExtensible&&!!throwsError(function(){return Object.isExtensible("foo")})){var originalObjectIsExtensible=Object.isExtensible;overrideNative(Object,"isExtensible",function(value){return!!ES.TypeIsObject(value)&&originalObjectIsExtensible(value)})}if(Object.getPrototypeOf&&!!throwsError(function(){return Object.getPrototypeOf("foo")})){var originalGetProto=Object.getPrototypeOf;overrideNative(Object,"getPrototypeOf",function(value){return originalGetProto(ES.ToObject(value))})}var desc,hasFlags=supportsDescriptors&&((desc=Object.getOwnPropertyDescriptor(RegExp.prototype,"flags"))&&ES.IsCallable(desc.get));if(supportsDescriptors&&!hasFlags){Value_getter(RegExp.prototype,"flags",function(){if(!ES.TypeIsObject(this))throw new TypeError("Method called on incompatible type: must be an object.");var result="";return this.global&&(result+="g"),this.ignoreCase&&(result+="i"),this.multiline&&(result+="m"),this.unicode&&(result+="u"),this.sticky&&(result+="y"),result})}var regex,regExpSupportsFlagsWithRegex=supportsDescriptors&&valueOrFalseIfThrows(function(){return"/a/i"===String(new RegExp(/a/g,"i"))}),regExpNeedsToSupportSymbolMatch=hasSymbols&&supportsDescriptors&&((regex=/./)[Symbol.match]=!1,RegExp(regex)===regex),regexToStringIsGeneric=valueOrFalseIfThrows(function(){return"/abc/"===RegExp.prototype.toString.call({source:"abc"})}),regexToStringSupportsGenericFlags=regexToStringIsGeneric&&valueOrFalseIfThrows(function(){return"/a/b"===RegExp.prototype.toString.call({source:"a",flags:"b"})});if(!regexToStringIsGeneric||!regexToStringSupportsGenericFlags){var origRegExpToString=RegExp.prototype.toString;defineProperty(RegExp.prototype,"toString",function(){var R=ES.RequireObjectCoercible(this);return Type_regex(R)?_call(origRegExpToString,R):"/"+$String(R.source)+"/"+$String(R.flags)},!0),Value_preserveToString(RegExp.prototype.toString,origRegExpToString)}if(supportsDescriptors&&(!regExpSupportsFlagsWithRegex||regExpNeedsToSupportSymbolMatch)){var flagsGetter=Object.getOwnPropertyDescriptor(RegExp.prototype,"flags").get,sourceDesc=Object.getOwnPropertyDescriptor(RegExp.prototype,"source")||{},sourceGetter=ES.IsCallable(sourceDesc.get)?sourceDesc.get:function(){return this.source},OrigRegExp=RegExp,RegExpShim=function RegExp(pattern,flags){var patternIsRegExp=ES.IsRegExp(pattern);return this instanceof RegExp||!patternIsRegExp||void 0!==flags||pattern.constructor!==RegExp?Type_regex(pattern)?new RegExp(ES.Call(sourceGetter,pattern),void 0===flags?ES.Call(flagsGetter,pattern):flags):(patternIsRegExp&&(pattern.source,void 0===flags&&pattern.flags),new OrigRegExp(pattern,flags)):pattern};wrapConstructor(OrigRegExp,RegExpShim,{$input:!0}),RegExp=RegExpShim,Value_redefine(globals,"RegExp",RegExpShim)}if(supportsDescriptors){var regexGlobals={input:"$_",lastMatch:"$&",lastParen:"$+",leftContext:"$`",rightContext:"$'"};_forEach(keys(regexGlobals),function(prop){prop in RegExp&&!(regexGlobals[prop]in RegExp)&&Value_getter(RegExp,regexGlobals[prop],function(){return RegExp[prop]})})}addDefaultSpecies(RegExp);var inverseEpsilon=1/Number.EPSILON,BINARY_32_EPSILON=Math.pow(2,-23),BINARY_32_MAX_VALUE=Math.pow(2,127)*(2-BINARY_32_EPSILON),BINARY_32_MIN_VALUE=Math.pow(2,-126),E=Math.E,LOG2E=Math.LOG2E,LOG10E=Math.LOG10E,numberCLZ=Number.prototype.clz;delete Number.prototype.clz;var MathShims={acosh:function(value){var x=Number(value);if(numberIsNaN(x)||value<1)return NaN;if(1===x)return 0;if(x===1/0)return x;var xInvSquared=1/(x*x);if(x<2)return _log1p(x-1+_sqrt(1-xInvSquared)*x);var halfX=x/2;return _log1p(halfX+_sqrt(1-xInvSquared)*halfX-1)+1/LOG2E},asinh:function(value){var x=Number(value);if(0===x||!globalIsFinite(x))return x;var a=_abs(x),aSquared=a*a,s=_sign(x);return a<1?s*_log1p(a+aSquared/(_sqrt(aSquared+1)+1)):s*(_log1p(a/2+_sqrt(1+1/aSquared)*a/2-1)+1/LOG2E)},atanh:function(value){var x=Number(value);if(0===x)return x;if(-1===x)return-1/0;if(1===x)return 1/0;if(numberIsNaN(x)||x<-1||x>1)return NaN;var a=_abs(x);return _sign(x)*_log1p(2*a/(1-a))/2},cbrt:function(value){var x=Number(value);if(0===x)return x;var result,negate=x<0;return negate&&(x=-x),result=x===1/0?1/0:(x/((result=_exp(_log(x)/3))*result)+2*result)/3,negate?-result:result},clz32:function(value){var x=Number(value),number=ES.ToUint32(x);return 0===number?32:numberCLZ?ES.Call(numberCLZ,number):31-_floor(_log(number+.5)*LOG2E)},cosh:function(value){var x=Number(value);if(0===x)return 1;if(numberIsNaN(x))return NaN;if(!globalIsFinite(x))return 1/0;var t=_exp(_abs(x)-1);return(t+1/(t*E*E))*(E/2)},expm1:function(value){var x=Number(value);if(x===-1/0)return-1;if(!globalIsFinite(x)||0===x)return x;if(_abs(x)>.5)return _exp(x)-1;for(var t=x,sum=0,n=1;sum+t!==sum;)sum+=t,t*=x/(n+=1);return sum},hypot:function(x,y){for(var result=0,largest=0,i=0;i<arguments.length;++i){var value=_abs(Number(arguments[i]));largest<value?(result*=largest/value*(largest/value),result+=1,largest=value):result+=value>0?value/largest*(value/largest):value}return largest===1/0?1/0:largest*_sqrt(result)},log2:function(value){return _log(value)*LOG2E},log10:function(value){return _log(value)*LOG10E},log1p:_log1p,sign:_sign,sinh:function(value){var x=Number(value);if(!globalIsFinite(x)||0===x)return x;var a=_abs(x);if(a<1){var u=Math.expm1(a);return _sign(x)*u*(1+1/(u+1))/2}var t=_exp(a-1);return _sign(x)*(t-1/(t*E*E))*(E/2)},tanh:function(value){var x=Number(value);return numberIsNaN(x)||0===x?x:x>=20?1:x<=-20?-1:(Math.expm1(x)-Math.expm1(-x))/(_exp(x)+_exp(-x))},trunc:function(value){var x=Number(value);return x<0?-_floor(-x):_floor(x)},imul:function(x,y){var a=ES.ToUint32(x),b=ES.ToUint32(y),al=65535&a,bl=65535&b;return al*bl+((a>>>16&65535)*bl+al*(b>>>16&65535)<<16>>>0)|0},fround:function(x){var v=Number(x);if(0===v||v===1/0||v===-1/0||numberIsNaN(v))return v;var sign=_sign(v),abs=_abs(v);if(abs<BINARY_32_MIN_VALUE)return sign*(abs/BINARY_32_MIN_VALUE/BINARY_32_EPSILON+inverseEpsilon-inverseEpsilon)*BINARY_32_MIN_VALUE*BINARY_32_EPSILON;var a=(1+BINARY_32_EPSILON/Number.EPSILON)*abs,result=a-(a-abs);return result>BINARY_32_MAX_VALUE||numberIsNaN(result)?sign*(1/0):sign*result}},withinULPDistance=function(result,expected,distance){return _abs(1-result/expected)/Number.EPSILON<(distance||8)};defineProperties(Math,MathShims),defineProperty(Math,"sinh",MathShims.sinh,Math.sinh(710)===1/0),defineProperty(Math,"cosh",MathShims.cosh,Math.cosh(710)===1/0),defineProperty(Math,"log1p",MathShims.log1p,-1e-17!==Math.log1p(-1e-17)),defineProperty(Math,"asinh",MathShims.asinh,Math.asinh(-1e7)!==-Math.asinh(1e7)),defineProperty(Math,"asinh",MathShims.asinh,Math.asinh(1e300)===1/0),defineProperty(Math,"atanh",MathShims.atanh,0===Math.atanh(1e-300)),defineProperty(Math,"tanh",MathShims.tanh,-2e-17!==Math.tanh(-2e-17)),defineProperty(Math,"acosh",MathShims.acosh,Math.acosh(Number.MAX_VALUE)===1/0),defineProperty(Math,"acosh",MathShims.acosh,!withinULPDistance(Math.acosh(1+Number.EPSILON),Math.sqrt(2*Number.EPSILON))),defineProperty(Math,"cbrt",MathShims.cbrt,!withinULPDistance(Math.cbrt(1e-300),1e-100)),defineProperty(Math,"sinh",MathShims.sinh,-2e-17!==Math.sinh(-2e-17));var expm1OfTen=Math.expm1(10);defineProperty(Math,"expm1",MathShims.expm1,expm1OfTen>22025.465794806718||expm1OfTen<22025.465794806718);var origMathRound=Math.round,roundHandlesBoundaryConditions=0===Math.round(.5-Number.EPSILON/4)&&1===Math.round(Number.EPSILON/3.99-.5),roundDoesNotIncreaseIntegers=[inverseEpsilon+1,2*inverseEpsilon-1].every(function(num){return Math.round(num)===num});defineProperty(Math,"round",function(x){var floor=_floor(x);return x-floor<.5?floor:-1===floor?-0:floor+1},!roundHandlesBoundaryConditions||!roundDoesNotIncreaseIntegers),Value_preserveToString(Math.round,origMathRound);var origImul=Math.imul;-5!==Math.imul(4294967295,5)&&(Math.imul=MathShims.imul,Value_preserveToString(Math.imul,origImul)),2!==Math.imul.length&&overrideNative(Math,"imul",function(x,y){return ES.Call(origImul,Math,arguments)});var count,thenable,PromiseShim=function(){var setTimeout=globals.setTimeout;if("function"==typeof setTimeout||"object"==typeof setTimeout){ES.IsPromise=function(promise){return!!ES.TypeIsObject(promise)&&void 0!==promise._promise};var makeZeroTimeout,PromiseCapability=function(C){if(!ES.IsConstructor(C))throw new TypeError("Bad promise constructor");var capability=this;if(capability.resolve=void 0,capability.reject=void 0,capability.promise=new C(function(resolve,reject){if(void 0!==capability.resolve||void 0!==capability.reject)throw new TypeError("Bad Promise implementation!");capability.resolve=resolve,capability.reject=reject}),!ES.IsCallable(capability.resolve)||!ES.IsCallable(capability.reject))throw new TypeError("Bad promise constructor")};"undefined"!=typeof window&&ES.IsCallable(window.postMessage)&&(makeZeroTimeout=function(){var timeouts=[];return window.addEventListener("message",function(event){if(event.source===window&&"zero-timeout-message"===event.data){if(event.stopPropagation(),0===timeouts.length)return;_shift(timeouts)()}},!0),function(fn){_push(timeouts,fn),window.postMessage("zero-timeout-message","*")}});var P,pr,Promise$prototype,Promise$prototype$then,PromiseShim,enqueue=ES.IsCallable(globals.setImmediate)?globals.setImmediate:"object"==typeof process&&process.nextTick?process.nextTick:(P=globals.Promise,(pr=P&&P.resolve&&P.resolve())&&function(task){return pr.then(task)}||(ES.IsCallable(makeZeroTimeout)?makeZeroTimeout():function(task){setTimeout(task,0)})),PROMISE_IDENTITY=function(x){return x},PROMISE_THROWER=function(e){throw e},PROMISE_FAKE_CAPABILITY={},enqueuePromiseReactionJob=function(handler,capability,argument){enqueue(function(){promiseReactionJob(handler,capability,argument)})},promiseReactionJob=function(handler,promiseCapability,argument){var handlerResult,f;if(promiseCapability===PROMISE_FAKE_CAPABILITY)return handler(argument);try{handlerResult=handler(argument),f=promiseCapability.resolve}catch(e){handlerResult=e,f=promiseCapability.reject}f(handlerResult)},fulfillPromise=function(promise,value){var _promise=promise._promise,length=_promise.reactionLength;if(length>0&&(enqueuePromiseReactionJob(_promise.fulfillReactionHandler0,_promise.reactionCapability0,value),_promise.fulfillReactionHandler0=void 0,_promise.rejectReactions0=void 0,_promise.reactionCapability0=void 0,length>1))for(var i=1,idx=0;i<length;i++,idx+=3)enqueuePromiseReactionJob(_promise[idx+0],_promise[idx+2],value),promise[idx+0]=void 0,promise[idx+1]=void 0,promise[idx+2]=void 0;_promise.result=value,_promise.state=1,_promise.reactionLength=0},rejectPromise=function(promise,reason){var _promise=promise._promise,length=_promise.reactionLength;if(length>0&&(enqueuePromiseReactionJob(_promise.rejectReactionHandler0,_promise.reactionCapability0,reason),_promise.fulfillReactionHandler0=void 0,_promise.rejectReactions0=void 0,_promise.reactionCapability0=void 0,length>1))for(var i=1,idx=0;i<length;i++,idx+=3)enqueuePromiseReactionJob(_promise[idx+1],_promise[idx+2],reason),promise[idx+0]=void 0,promise[idx+1]=void 0,promise[idx+2]=void 0;_promise.result=reason,_promise.state=2,_promise.reactionLength=0},createResolvingFunctions=function(promise){var alreadyResolved=!1;return{resolve:function(resolution){var then;if(!alreadyResolved){if(alreadyResolved=!0,resolution===promise)return rejectPromise(promise,new TypeError("Self resolution"));if(!ES.TypeIsObject(resolution))return fulfillPromise(promise,resolution);try{then=resolution.then}catch(e){return rejectPromise(promise,e)}if(!ES.IsCallable(then))return fulfillPromise(promise,resolution);enqueue(function(){promiseResolveThenableJob(promise,resolution,then)})}},reject:function(reason){if(!alreadyResolved)return alreadyResolved=!0,rejectPromise(promise,reason)}}},optimizedThen=function(then,thenable,resolve,reject){then===Promise$prototype$then?_call(then,thenable,resolve,reject,PROMISE_FAKE_CAPABILITY):_call(then,thenable,resolve,reject)},promiseResolveThenableJob=function(promise,thenable,then){var resolvingFunctions=createResolvingFunctions(promise),resolve=resolvingFunctions.resolve,reject=resolvingFunctions.reject;try{optimizedThen(then,thenable,resolve,reject)}catch(e){reject(e)}},Promise=PromiseShim=function(resolver){if(!(this instanceof PromiseShim))throw new TypeError('Constructor Promise requires "new"');if(this&&this._promise)throw new TypeError("Bad construction");if(!ES.IsCallable(resolver))throw new TypeError("not a valid resolver");var promise=emulateES6construct(this,PromiseShim,Promise$prototype,{_promise:{result:void 0,state:0,reactionLength:0,fulfillReactionHandler0:void 0,rejectReactionHandler0:void 0,reactionCapability0:void 0}}),resolvingFunctions=createResolvingFunctions(promise),reject=resolvingFunctions.reject;try{resolver(resolvingFunctions.resolve,reject)}catch(e){reject(e)}return promise};Promise$prototype=Promise.prototype;var _promiseAllResolver=function(index,values,capability,remaining){var alreadyCalled=!1;return function(x){alreadyCalled||(alreadyCalled=!0,values[index]=x,0==--remaining.count&&(0,capability.resolve)(values))}};return defineProperties(Promise,{all:function(iterable){var C=this;if(!ES.TypeIsObject(C))throw new TypeError("Promise is not object");var iterator,iteratorRecord,capability=new PromiseCapability(C);try{return function(iteratorRecord,C,resultCapability){for(var next,nextValue,it=iteratorRecord.iterator,values=[],remaining={count:1},index=0;;){try{if(!1===(next=ES.IteratorStep(it))){iteratorRecord.done=!0;break}nextValue=next.value}catch(e){throw iteratorRecord.done=!0,e}values[index]=void 0;var nextPromise=C.resolve(nextValue),resolveElement=_promiseAllResolver(index,values,resultCapability,remaining);remaining.count+=1,optimizedThen(nextPromise.then,nextPromise,resolveElement,resultCapability.reject),index+=1}0==--remaining.count&&(0,resultCapability.resolve)(values);return resultCapability.promise}(iteratorRecord={iterator:iterator=ES.GetIterator(iterable),done:!1},C,capability)}catch(e){var exception=e;if(iteratorRecord&&!iteratorRecord.done)try{ES.IteratorClose(iterator,!0)}catch(ee){exception=ee}return(0,capability.reject)(exception),capability.promise}},race:function(iterable){var C=this;if(!ES.TypeIsObject(C))throw new TypeError("Promise is not object");var iterator,iteratorRecord,capability=new PromiseCapability(C);try{return function(iteratorRecord,C,resultCapability){for(var next,nextValue,nextPromise,it=iteratorRecord.iterator;;){try{if(!1===(next=ES.IteratorStep(it))){iteratorRecord.done=!0;break}nextValue=next.value}catch(e){throw iteratorRecord.done=!0,e}nextPromise=C.resolve(nextValue),optimizedThen(nextPromise.then,nextPromise,resultCapability.resolve,resultCapability.reject)}return resultCapability.promise}(iteratorRecord={iterator:iterator=ES.GetIterator(iterable),done:!1},C,capability)}catch(e){var exception=e;if(iteratorRecord&&!iteratorRecord.done)try{ES.IteratorClose(iterator,!0)}catch(ee){exception=ee}return(0,capability.reject)(exception),capability.promise}},reject:function(reason){if(!ES.TypeIsObject(this))throw new TypeError("Bad promise constructor");var capability=new PromiseCapability(this);return(0,capability.reject)(reason),capability.promise},resolve:function(v){var C=this;if(!ES.TypeIsObject(C))throw new TypeError("Bad promise constructor");if(ES.IsPromise(v)&&v.constructor===C)return v;var capability=new PromiseCapability(C);return(0,capability.resolve)(v),capability.promise}}),defineProperties(Promise$prototype,{catch:function(onRejected){return this.then(null,onRejected)},then:function(onFulfilled,onRejected){if(!ES.IsPromise(this))throw new TypeError("not a promise");var resultCapability,C=ES.SpeciesConstructor(this,Promise);resultCapability=arguments.length>2&&arguments[2]===PROMISE_FAKE_CAPABILITY&&C===Promise?PROMISE_FAKE_CAPABILITY:new PromiseCapability(C);var value,fulfillReactionHandler=ES.IsCallable(onFulfilled)?onFulfilled:PROMISE_IDENTITY,rejectReactionHandler=ES.IsCallable(onRejected)?onRejected:PROMISE_THROWER,_promise=this._promise;if(0===_promise.state){if(0===_promise.reactionLength)_promise.fulfillReactionHandler0=fulfillReactionHandler,_promise.rejectReactionHandler0=rejectReactionHandler,_promise.reactionCapability0=resultCapability;else{var idx=3*(_promise.reactionLength-1);_promise[idx+0]=fulfillReactionHandler,_promise[idx+1]=rejectReactionHandler,_promise[idx+2]=resultCapability}_promise.reactionLength+=1}else if(1===_promise.state)value=_promise.result,enqueuePromiseReactionJob(fulfillReactionHandler,resultCapability,value);else{if(2!==_promise.state)throw new TypeError("unexpected Promise state");value=_promise.result,enqueuePromiseReactionJob(rejectReactionHandler,resultCapability,value)}return resultCapability.promise}}),PROMISE_FAKE_CAPABILITY=new PromiseCapability(Promise),Promise$prototype$then=Promise$prototype.then,Promise}}();if(globals.Promise&&(delete globals.Promise.accept,delete globals.Promise.defer,delete globals.Promise.prototype.chain),"function"==typeof PromiseShim){defineProperties(globals,{Promise:PromiseShim});var promiseSupportsSubclassing=supportsSubclassing(globals.Promise,function(S){return S.resolve(42).then(function(){})instanceof S}),promiseIgnoresNonFunctionThenCallbacks=!throwsError(function(){return globals.Promise.reject(42).then(null,5).then(null,noop)}),promiseRequiresObjectContext=throwsError(function(){return globals.Promise.call(3,noop)}),promiseResolveBroken=function(Promise){var p=Promise.resolve(5);p.constructor={};var p2=Promise.resolve(p);try{p2.then(null,noop).then(null,noop)}catch(e){return!0}return p===p2}(globals.Promise),getsThenSynchronously=supportsDescriptors&&(count=0,thenable=Object.defineProperty({},"then",{get:function(){count+=1}}),Promise.resolve(thenable),1===count),BadResolverPromise=function BadResolverPromise(executor){var p=new Promise(executor);executor(3,function(){}),this.then=p.then,this.constructor=BadResolverPromise};BadResolverPromise.prototype=Promise.prototype,BadResolverPromise.all=Promise.all;var hasBadResolverPromise=valueOrFalseIfThrows(function(){return!!BadResolverPromise.all([1,2])});if(promiseSupportsSubclassing&&promiseIgnoresNonFunctionThenCallbacks&&promiseRequiresObjectContext&&!promiseResolveBroken&&getsThenSynchronously&&!hasBadResolverPromise||(Promise=PromiseShim,overrideNative(globals,"Promise",PromiseShim)),1!==Promise.all.length){var origAll=Promise.all;overrideNative(Promise,"all",function(iterable){return ES.Call(origAll,this,arguments)})}if(1!==Promise.race.length){var origRace=Promise.race;overrideNative(Promise,"race",function(iterable){return ES.Call(origRace,this,arguments)})}if(1!==Promise.resolve.length){var origResolve=Promise.resolve;overrideNative(Promise,"resolve",function(x){return ES.Call(origResolve,this,arguments)})}if(1!==Promise.reject.length){var origReject=Promise.reject;overrideNative(Promise,"reject",function(r){return ES.Call(origReject,this,arguments)})}ensureEnumerable(Promise,"all"),ensureEnumerable(Promise,"race"),ensureEnumerable(Promise,"resolve"),ensureEnumerable(Promise,"reject"),addDefaultSpecies(Promise)}var s,m,testOrder=function(a){var b=keys(_reduce(a,function(o,k){return o[k]=!0,o},{}));return a.join(":")===b.join(":")},preservesInsertionOrder=testOrder(["z","a","bb"]),preservesNumericInsertionOrder=testOrder(["z",1,"a","3",2]);if(supportsDescriptors){var fastkey=function(key,skipInsertionOrderCheck){return skipInsertionOrderCheck||preservesInsertionOrder?isNullOrUndefined(key)?"^"+ES.ToString(key):"string"==typeof key?"$"+key:"number"==typeof key?preservesNumericInsertionOrder?key:"n"+key:"boolean"==typeof key?"b"+key:null:null},emptyObject=function(){return Object.create?Object.create(null):{}},addIterableToMap=function(MapConstructor,map,iterable){if(isArray(iterable)||Type_string(iterable))_forEach(iterable,function(entry){if(!ES.TypeIsObject(entry))throw new TypeError("Iterator value "+entry+" is not an entry object");map.set(entry[0],entry[1])});else if(iterable instanceof MapConstructor)_call(MapConstructor.prototype.forEach,iterable,function(value,key){map.set(key,value)});else{var iter,adder;if(!isNullOrUndefined(iterable)){if(adder=map.set,!ES.IsCallable(adder))throw new TypeError("bad map");iter=ES.GetIterator(iterable)}if(void 0!==iter)for(;;){var next=ES.IteratorStep(iter);if(!1===next)break;var nextItem=next.value;try{if(!ES.TypeIsObject(nextItem))throw new TypeError("Iterator value "+nextItem+" is not an entry object");_call(adder,map,nextItem[0],nextItem[1])}catch(e){throw ES.IteratorClose(iter,!0),e}}}},addIterableToSet=function(SetConstructor,set,iterable){if(isArray(iterable)||Type_string(iterable))_forEach(iterable,function(value){set.add(value)});else if(iterable instanceof SetConstructor)_call(SetConstructor.prototype.forEach,iterable,function(value){set.add(value)});else{var iter,adder;if(!isNullOrUndefined(iterable)){if(adder=set.add,!ES.IsCallable(adder))throw new TypeError("bad set");iter=ES.GetIterator(iterable)}if(void 0!==iter)for(;;){var next=ES.IteratorStep(iter);if(!1===next)break;var nextValue=next.value;try{_call(adder,set,nextValue)}catch(e){throw ES.IteratorClose(iter,!0),e}}}},collectionShims={Map:function(){var empty={},MapEntry=function(key,value){this.key=key,this.value=value,this.next=null,this.prev=null};MapEntry.prototype.isRemoved=function(){return this.key===empty};var Map$prototype,requireMapSlot=function(map,method){if(!ES.TypeIsObject(map)||!function(map){return!!map._es6map}(map))throw new TypeError("Method Map.prototype."+method+" called on incompatible receiver "+ES.ToString(map))},MapIterator=function(map,kind){requireMapSlot(map,"[[MapIterator]]"),this.head=map._head,this.i=this.head,this.kind=kind};addIterator(MapIterator.prototype={isMapIterator:!0,next:function(){if(!this.isMapIterator)throw new TypeError("Not a MapIterator");var result,i=this.i,kind=this.kind,head=this.head;if(void 0===this.i)return iteratorResult();for(;i.isRemoved()&&i!==head;)i=i.prev;for(;i.next!==head;)if(!(i=i.next).isRemoved())return result="key"===kind?i.key:"value"===kind?i.value:[i.key,i.value],this.i=i,iteratorResult(result);return this.i=void 0,iteratorResult()}});var MapShim=function Map(){if(!(this instanceof Map))throw new TypeError('Constructor Map requires "new"');if(this&&this._es6map)throw new TypeError("Bad construction");var map=emulateES6construct(this,Map,Map$prototype,{_es6map:!0,_head:null,_map:OrigMap?new OrigMap:null,_size:0,_storage:emptyObject()}),head=new MapEntry(null,null);return head.next=head.prev=head,map._head=head,arguments.length>0&&addIterableToMap(Map,map,arguments[0]),map};return Value_getter(Map$prototype=MapShim.prototype,"size",function(){if(void 0===this._size)throw new TypeError("size method called on incompatible Map");return this._size}),defineProperties(Map$prototype,{get:function(key){var entry;requireMapSlot(this,"get");var fkey=fastkey(key,!0);if(null!==fkey)return(entry=this._storage[fkey])?entry.value:void 0;if(this._map)return(entry=origMapGet.call(this._map,key))?entry.value:void 0;for(var head=this._head,i=head;(i=i.next)!==head;)if(ES.SameValueZero(i.key,key))return i.value},has:function(key){requireMapSlot(this,"has");var fkey=fastkey(key,!0);if(null!==fkey)return void 0!==this._storage[fkey];if(this._map)return origMapHas.call(this._map,key);for(var head=this._head,i=head;(i=i.next)!==head;)if(ES.SameValueZero(i.key,key))return!0;return!1},set:function(key,value){requireMapSlot(this,"set");var entry,head=this._head,i=head,fkey=fastkey(key,!0);if(null!==fkey){if(void 0!==this._storage[fkey])return this._storage[fkey].value=value,this;entry=this._storage[fkey]=new MapEntry(key,value),i=head.prev}else this._map&&(origMapHas.call(this._map,key)?origMapGet.call(this._map,key).value=value:(entry=new MapEntry(key,value),origMapSet.call(this._map,key,entry),i=head.prev));for(;(i=i.next)!==head;)if(ES.SameValueZero(i.key,key))return i.value=value,this;return entry=entry||new MapEntry(key,value),ES.SameValue(-0,key)&&(entry.key=0),entry.next=this._head,entry.prev=this._head.prev,entry.prev.next=entry,entry.next.prev=entry,this._size+=1,this},delete:function(key){requireMapSlot(this,"delete");var head=this._head,i=head,fkey=fastkey(key,!0);if(null!==fkey){if(void 0===this._storage[fkey])return!1;i=this._storage[fkey].prev,delete this._storage[fkey]}else if(this._map){if(!origMapHas.call(this._map,key))return!1;i=origMapGet.call(this._map,key).prev,origMapDelete.call(this._map,key)}for(;(i=i.next)!==head;)if(ES.SameValueZero(i.key,key))return i.key=empty,i.value=empty,i.prev.next=i.next,i.next.prev=i.prev,this._size-=1,!0;return!1},clear:function(){requireMapSlot(this,"clear"),this._map=OrigMap?new OrigMap:null,this._size=0,this._storage=emptyObject();for(var head=this._head,i=head,p=i.next;(i=p)!==head;)i.key=empty,i.value=empty,p=i.next,i.next=i.prev=head;head.next=head.prev=head},keys:function(){return requireMapSlot(this,"keys"),new MapIterator(this,"key")},values:function(){return requireMapSlot(this,"values"),new MapIterator(this,"value")},entries:function(){return requireMapSlot(this,"entries"),new MapIterator(this,"key+value")},forEach:function(callback){requireMapSlot(this,"forEach");for(var context=arguments.length>1?arguments[1]:null,it=this.entries(),entry=it.next();!entry.done;entry=it.next())context?_call(callback,context,entry.value[1],entry.value[0],this):callback(entry.value[1],entry.value[0],this)}}),addIterator(Map$prototype,Map$prototype.entries),MapShim}(),Set:function(){var Set$prototype,requireSetSlot=function(set,method){if(!ES.TypeIsObject(set)||!function(set){return set._es6set&&void 0!==set._storage}(set))throw new TypeError("Set.prototype."+method+" called on incompatible receiver "+ES.ToString(set))},SetShim=function Set(){if(!(this instanceof Set))throw new TypeError('Constructor Set requires "new"');if(this&&this._es6set)throw new TypeError("Bad construction");var set=emulateES6construct(this,Set,Set$prototype,{_es6set:!0,"[[SetData]]":null,_storage:emptyObject()});if(!set._es6set)throw new TypeError("bad set");return arguments.length>0&&addIterableToSet(Set,set,arguments[0]),set};Set$prototype=SetShim.prototype;var ensureMap=function(set){if(!set["[[SetData]]"]){var m=new collectionShims.Map;set["[[SetData]]"]=m,_forEach(keys(set._storage),function(key){var k=function(key){var k=key;if("^null"===k)return null;if("^undefined"!==k){var first=k.charAt(0);return"$"===first?_strSlice(k,1):"n"===first?+_strSlice(k,1):"b"===first?"btrue"===k:+k}}(key);m.set(k,k)}),set["[[SetData]]"]=m}set._storage=null};Value_getter(SetShim.prototype,"size",function(){return requireSetSlot(this,"size"),this._storage?keys(this._storage).length:(ensureMap(this),this["[[SetData]]"].size)}),defineProperties(SetShim.prototype,{has:function(key){var fkey;return requireSetSlot(this,"has"),this._storage&&null!==(fkey=fastkey(key))?!!this._storage[fkey]:(ensureMap(this),this["[[SetData]]"].has(key))},add:function(key){var fkey;return requireSetSlot(this,"add"),this._storage&&null!==(fkey=fastkey(key))?(this._storage[fkey]=!0,this):(ensureMap(this),this["[[SetData]]"].set(key,key),this)},delete:function(key){var fkey;if(requireSetSlot(this,"delete"),this._storage&&null!==(fkey=fastkey(key))){var hasFKey=_hasOwnProperty(this._storage,fkey);return delete this._storage[fkey]&&hasFKey}return ensureMap(this),this["[[SetData]]"].delete(key)},clear:function(){requireSetSlot(this,"clear"),this._storage&&(this._storage=emptyObject()),this["[[SetData]]"]&&this["[[SetData]]"].clear()},values:function(){return requireSetSlot(this,"values"),ensureMap(this),new SetIterator(this["[[SetData]]"].values())},entries:function(){return requireSetSlot(this,"entries"),ensureMap(this),new SetIterator(this["[[SetData]]"].entries())},forEach:function(callback){requireSetSlot(this,"forEach");var context=arguments.length>1?arguments[1]:null,entireSet=this;ensureMap(entireSet),this["[[SetData]]"].forEach(function(value,key){context?_call(callback,context,key,key,entireSet):callback(key,key,entireSet)})}}),defineProperty(SetShim.prototype,"keys",SetShim.prototype.values,!0),addIterator(SetShim.prototype,SetShim.prototype.values);var SetIterator=function(it){this.it=it};return SetIterator.prototype={isSetIterator:!0,next:function(){if(!this.isSetIterator)throw new TypeError("Not a SetIterator");return this.it.next()}},addIterator(SetIterator.prototype),SetShim}()};if(globals.Set&&!Set.prototype.delete&&Set.prototype.remove&&Set.prototype.items&&Set.prototype.map&&Array.isArray((new Set).keys)&&(globals.Set=collectionShims.Set),globals.Map||globals.Set){valueOrFalseIfThrows(function(){return 2===new Map([[1,2]]).get(1)})||(globals.Map=function Map(){if(!(this instanceof Map))throw new TypeError('Constructor Map requires "new"');var m=new OrigMap;return arguments.length>0&&addIterableToMap(Map,m,arguments[0]),delete m.constructor,Object.setPrototypeOf(m,globals.Map.prototype),m},globals.Map.prototype=create(OrigMap.prototype),defineProperty(globals.Map.prototype,"constructor",globals.Map,!0),Value_preserveToString(globals.Map,OrigMap));var testMap=new Map,mapUsesSameValueZero=((m=new Map([[1,0],[2,0],[3,0],[4,0]])).set(-0,m),m.get(0)===m&&m.get(-0)===m&&m.has(0)&&m.has(-0)),mapSupportsChaining=testMap.set(1,2)===testMap;mapUsesSameValueZero&&mapSupportsChaining||overrideNative(Map.prototype,"set",function(k,v){return _call(origMapSet,this,0===k?0:k,v),this}),mapUsesSameValueZero||(defineProperties(Map.prototype,{get:function(k){return _call(origMapGet,this,0===k?0:k)},has:function(k){return _call(origMapHas,this,0===k?0:k)}},!0),Value_preserveToString(Map.prototype.get,origMapGet),Value_preserveToString(Map.prototype.has,origMapHas));var testSet=new Set,setUsesSameValueZero=Set.prototype.delete&&Set.prototype.add&&Set.prototype.has&&((s=testSet).delete(0),s.add(-0),!s.has(0)),setSupportsChaining=testSet.add(1)===testSet;if(!setUsesSameValueZero||!setSupportsChaining){var origSetAdd=Set.prototype.add;Set.prototype.add=function(v){return _call(origSetAdd,this,0===v?0:v),this},Value_preserveToString(Set.prototype.add,origSetAdd)}if(!setUsesSameValueZero){var origSetHas=Set.prototype.has;Set.prototype.has=function(v){return _call(origSetHas,this,0===v?0:v)},Value_preserveToString(Set.prototype.has,origSetHas);var origSetDel=Set.prototype.delete;Set.prototype.delete=function(v){return _call(origSetDel,this,0===v?0:v)},Value_preserveToString(Set.prototype.delete,origSetDel)}var mapSupportsSubclassing=supportsSubclassing(globals.Map,function(M){var m=new M([]);return m.set(42,42),m instanceof M}),mapFailsToSupportSubclassing=Object.setPrototypeOf&&!mapSupportsSubclassing,mapRequiresNew=function(){try{return!(globals.Map()instanceof globals.Map)}catch(e){return e instanceof TypeError}}();0===globals.Map.length&&!mapFailsToSupportSubclassing&&mapRequiresNew||(globals.Map=function Map(){if(!(this instanceof Map))throw new TypeError('Constructor Map requires "new"');var m=new OrigMap;return arguments.length>0&&addIterableToMap(Map,m,arguments[0]),delete m.constructor,Object.setPrototypeOf(m,Map.prototype),m},globals.Map.prototype=OrigMap.prototype,defineProperty(globals.Map.prototype,"constructor",globals.Map,!0),Value_preserveToString(globals.Map,OrigMap));var setSupportsSubclassing=supportsSubclassing(globals.Set,function(S){var s=new S([]);return s.add(42,42),s instanceof S}),setFailsToSupportSubclassing=Object.setPrototypeOf&&!setSupportsSubclassing,setRequiresNew=function(){try{return!(globals.Set()instanceof globals.Set)}catch(e){return e instanceof TypeError}}();if(0!==globals.Set.length||setFailsToSupportSubclassing||!setRequiresNew){var OrigSet=globals.Set;globals.Set=function Set(){if(!(this instanceof Set))throw new TypeError('Constructor Set requires "new"');var s=new OrigSet;return arguments.length>0&&addIterableToSet(Set,s,arguments[0]),delete s.constructor,Object.setPrototypeOf(s,Set.prototype),s},globals.Set.prototype=OrigSet.prototype,defineProperty(globals.Set.prototype,"constructor",globals.Set,!0),Value_preserveToString(globals.Set,OrigSet)}var newMap=new globals.Map,mapIterationThrowsStopIterator=!valueOrFalseIfThrows(function(){return newMap.keys().next().done});if(("function"!=typeof globals.Map.prototype.clear||0!==(new globals.Set).size||0!==newMap.size||"function"!=typeof globals.Map.prototype.keys||"function"!=typeof globals.Set.prototype.keys||"function"!=typeof globals.Map.prototype.forEach||"function"!=typeof globals.Set.prototype.forEach||isCallableWithoutNew(globals.Map)||isCallableWithoutNew(globals.Set)||"function"!=typeof newMap.keys().next||mapIterationThrowsStopIterator||!mapSupportsSubclassing)&&defineProperties(globals,{Map:collectionShims.Map,Set:collectionShims.Set},!0),globals.Set.prototype.keys!==globals.Set.prototype.values&&defineProperty(globals.Set.prototype,"keys",globals.Set.prototype.values,!0),addIterator(Object.getPrototypeOf((new globals.Map).keys())),addIterator(Object.getPrototypeOf((new globals.Set).keys())),functionsHaveNames&&"has"!==globals.Set.prototype.has.name){var anonymousSetHas=globals.Set.prototype.has;overrideNative(globals.Set.prototype,"has",function(key){return _call(anonymousSetHas,this,key)})}}defineProperties(globals,collectionShims),addDefaultSpecies(globals.Map),addDefaultSpecies(globals.Set)}var throwUnlessTargetIsObject=function(target){if(!ES.TypeIsObject(target))throw new TypeError("target must be an object")},ReflectShims={apply:function(){return ES.Call(ES.Call,null,arguments)},construct:function(constructor,args){if(!ES.IsConstructor(constructor))throw new TypeError("First argument must be a constructor.");var newTarget=arguments.length>2?arguments[2]:constructor;if(!ES.IsConstructor(newTarget))throw new TypeError("new.target must be a constructor.");return ES.Construct(constructor,args,newTarget,"internal")},deleteProperty:function(target,key){if(throwUnlessTargetIsObject(target),supportsDescriptors){var desc=Object.getOwnPropertyDescriptor(target,key);if(desc&&!desc.configurable)return!1}return delete target[key]},has:function(target,key){return throwUnlessTargetIsObject(target),key in target}};Object.getOwnPropertyNames&&Object.assign(ReflectShims,{ownKeys:function(target){throwUnlessTargetIsObject(target);var keys=Object.getOwnPropertyNames(target);return ES.IsCallable(Object.getOwnPropertySymbols)&&_pushApply(keys,Object.getOwnPropertySymbols(target)),keys}});var callAndCatchException=function(func){return!throwsError(func)};if(Object.preventExtensions&&Object.assign(ReflectShims,{isExtensible:function(target){return throwUnlessTargetIsObject(target),Object.isExtensible(target)},preventExtensions:function(target){return throwUnlessTargetIsObject(target),callAndCatchException(function(){return Object.preventExtensions(target)})}}),supportsDescriptors){var internalGet=function(target,key,receiver){var desc=Object.getOwnPropertyDescriptor(target,key);if(!desc){var parent=Object.getPrototypeOf(target);if(null===parent)return;return internalGet(parent,key,receiver)}return"value"in desc?desc.value:desc.get?ES.Call(desc.get,receiver):void 0},internalSet=function(target,key,value,receiver){var desc=Object.getOwnPropertyDescriptor(target,key);if(!desc){var parent=Object.getPrototypeOf(target);if(null!==parent)return internalSet(parent,key,value,receiver);desc={value:void 0,writable:!0,enumerable:!0,configurable:!0}}return"value"in desc?!!desc.writable&&(!!ES.TypeIsObject(receiver)&&(Object.getOwnPropertyDescriptor(receiver,key)?Reflect.defineProperty(receiver,key,{value:value}):Reflect.defineProperty(receiver,key,{value:value,writable:!0,enumerable:!0,configurable:!0}))):!!desc.set&&(_call(desc.set,receiver,value),!0)};Object.assign(ReflectShims,{defineProperty:function(target,propertyKey,attributes){return throwUnlessTargetIsObject(target),callAndCatchException(function(){return Object.defineProperty(target,propertyKey,attributes)})},getOwnPropertyDescriptor:function(target,propertyKey){return throwUnlessTargetIsObject(target),Object.getOwnPropertyDescriptor(target,propertyKey)},get:function(target,key){throwUnlessTargetIsObject(target);var receiver=arguments.length>2?arguments[2]:target;return internalGet(target,key,receiver)},set:function(target,key,value){throwUnlessTargetIsObject(target);var receiver=arguments.length>3?arguments[3]:target;return internalSet(target,key,value,receiver)}})}if(Object.getPrototypeOf){var objectDotGetPrototypeOf=Object.getPrototypeOf;ReflectShims.getPrototypeOf=function(target){return throwUnlessTargetIsObject(target),objectDotGetPrototypeOf(target)}}if(Object.setPrototypeOf&&ReflectShims.getPrototypeOf){Object.assign(ReflectShims,{setPrototypeOf:function(object,proto){if(throwUnlessTargetIsObject(object),null!==proto&&!ES.TypeIsObject(proto))throw new TypeError("proto must be an object or null");return proto===Reflect.getPrototypeOf(object)||!(Reflect.isExtensible&&!Reflect.isExtensible(object))&&(!function(object,lastProto){for(var proto=lastProto;proto;){if(object===proto)return!0;proto=ReflectShims.getPrototypeOf(proto)}return!1}(object,proto)&&(Object.setPrototypeOf(object,proto),!0))}})}Object.keys(ReflectShims).forEach(function(key){!function(key,shim){ES.IsCallable(globals.Reflect[key])?valueOrFalseIfThrows(function(){return globals.Reflect[key](1),globals.Reflect[key](NaN),globals.Reflect[key](!0),!0})&&overrideNative(globals.Reflect,key,shim):defineProperty(globals.Reflect,key,shim)}(key,ReflectShims[key])});var originalReflectGetProto=globals.Reflect.getPrototypeOf;if(functionsHaveNames&&originalReflectGetProto&&"getPrototypeOf"!==originalReflectGetProto.name&&overrideNative(globals.Reflect,"getPrototypeOf",function(target){return _call(originalReflectGetProto,globals.Reflect,target)}),globals.Reflect.setPrototypeOf&&valueOrFalseIfThrows(function(){return globals.Reflect.setPrototypeOf(1,{}),!0})&&overrideNative(globals.Reflect,"setPrototypeOf",ReflectShims.setPrototypeOf),globals.Reflect.defineProperty&&(valueOrFalseIfThrows(function(){var basic=!globals.Reflect.defineProperty(1,"test",{value:1}),extensible="function"!=typeof Object.preventExtensions||!globals.Reflect.defineProperty(Object.preventExtensions({}),"test",{});return basic&&extensible})||overrideNative(globals.Reflect,"defineProperty",ReflectShims.defineProperty)),globals.Reflect.construct&&(valueOrFalseIfThrows(function(){var F=function(){};return globals.Reflect.construct(function(){},[],F)instanceof F})||overrideNative(globals.Reflect,"construct",ReflectShims.construct)),"Invalid Date"!==String(new Date(NaN))){var dateToString=Date.prototype.toString;overrideNative(Date.prototype,"toString",function(){var valueOf=+this;return valueOf!=valueOf?"Invalid Date":ES.Call(dateToString,this)})}var stringHTMLshims={anchor:function(name){return ES.CreateHTML(this,"a","name",name)},big:function(){return ES.CreateHTML(this,"big","","")},blink:function(){return ES.CreateHTML(this,"blink","","")},bold:function(){return ES.CreateHTML(this,"b","","")},fixed:function(){return ES.CreateHTML(this,"tt","","")},fontcolor:function(color){return ES.CreateHTML(this,"font","color",color)},fontsize:function(size){return ES.CreateHTML(this,"font","size",size)},italics:function(){return ES.CreateHTML(this,"i","","")},link:function(url){return ES.CreateHTML(this,"a","href",url)},small:function(){return ES.CreateHTML(this,"small","","")},strike:function(){return ES.CreateHTML(this,"strike","","")},sub:function(){return ES.CreateHTML(this,"sub","","")},sup:function(){return ES.CreateHTML(this,"sup","","")}};_forEach(Object.keys(stringHTMLshims),function(key){var method=String.prototype[key],shouldOverwrite=!1;if(ES.IsCallable(method)){var output=_call(method,"",' " '),quotesCount=_concat([],output.match(/"/g)).length;shouldOverwrite=output!==output.toLowerCase()||quotesCount>2}else shouldOverwrite=!0;shouldOverwrite&&overrideNative(String.prototype,key,stringHTMLshims[key])});var JSONstringifiesSymbols=function(){if(!hasSymbols)return!1;var stringify="object"==typeof JSON&&"function"==typeof JSON.stringify?JSON.stringify:null;if(!stringify)return!1;if(void 0!==stringify(Symbol()))return!0;if("[null]"!==stringify([Symbol()]))return!0;var obj={a:Symbol()};return obj[Symbol()]=!0,"{}"!==stringify(obj)}(),JSONstringifyAcceptsObjectSymbol=valueOrFalseIfThrows(function(){return!hasSymbols||"{}"===JSON.stringify(Object(Symbol()))&&"[{}]"===JSON.stringify([Object(Symbol())])});if(JSONstringifiesSymbols||!JSONstringifyAcceptsObjectSymbol){var origStringify=JSON.stringify;overrideNative(JSON,"stringify",function(value){if("symbol"!=typeof value){var replacer;arguments.length>1&&(replacer=arguments[1]);var args=[value];if(isArray(replacer))args.push(replacer);else{var replaceFn=ES.IsCallable(replacer)?replacer:null;args.push(function(key,val){var parsedValue=replaceFn?_call(replaceFn,this,key,val):val;if("symbol"!=typeof parsedValue)return Type_symbol(parsedValue)?assignTo({})(parsedValue):parsedValue})}return arguments.length>2&&args.push(arguments[2]),origStringify.apply(this,args)}})}return globals},"function"==typeof define&&define.amd?define("es6-shim",factory):"object"==typeof exports?module.exports=factory():root.returnExports=factory(),function(root){var freeExports="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule="object"==typeof module&&module&&!module.nodeType&&module,freeGlobal="object"==typeof global&&global;freeGlobal.global!==freeGlobal&&freeGlobal.window!==freeGlobal&&freeGlobal.self!==freeGlobal||(root=freeGlobal);var punycode,key,maxInt=2147483647,base=36,tMin=1,tMax=26,skew=38,damp=700,initialBias=72,initialN=128,delimiter="-",regexPunycode=/^xn--/,regexNonASCII=/[^\x20-\x7E]/,regexSeparators=/[\x2E\u3002\uFF0E\uFF61]/g,errors={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},baseMinusTMin=base-tMin,floor=Math.floor,stringFromCharCode=String.fromCharCode;function error(type){throw new RangeError(errors[type])}function map(array,fn){for(var length=array.length,result=[];length--;)result[length]=fn(array[length]);return result}function mapDomain(string,fn){var parts=string.split("@"),result="";return parts.length>1&&(result=parts[0]+"@",string=parts[1]),result+map((string=string.replace(regexSeparators,".")).split("."),fn).join(".")}function ucs2decode(string){for(var value,extra,output=[],counter=0,length=string.length;counter<length;)(value=string.charCodeAt(counter++))>=55296&&value<=56319&&counter<length?56320==(64512&(extra=string.charCodeAt(counter++)))?output.push(((1023&value)<<10)+(1023&extra)+65536):(output.push(value),counter--):output.push(value);return output}function ucs2encode(array){return map(array,function(value){var output="";return value>65535&&(output+=stringFromCharCode((value-=65536)>>>10&1023|55296),value=56320|1023&value),output+=stringFromCharCode(value)}).join("")}function digitToBasic(digit,flag){return digit+22+75*(digit<26)-((0!=flag)<<5)}function adapt(delta,numPoints,firstTime){var k=0;for(delta=firstTime?floor(delta/damp):delta>>1,delta+=floor(delta/numPoints);delta>baseMinusTMin*tMax>>1;k+=base)delta=floor(delta/baseMinusTMin);return floor(k+(baseMinusTMin+1)*delta/(delta+skew))}function decode(input){var out,basic,j,index,oldi,w,k,digit,t,baseMinusT,codePoint,output=[],inputLength=input.length,i=0,n=initialN,bias=initialBias;for((basic=input.lastIndexOf(delimiter))<0&&(basic=0),j=0;j<basic;++j)input.charCodeAt(j)>=128&&error("not-basic"),output.push(input.charCodeAt(j));for(index=basic>0?basic+1:0;index<inputLength;){for(oldi=i,w=1,k=base;index>=inputLength&&error("invalid-input"),((digit=(codePoint=input.charCodeAt(index++))-48<10?codePoint-22:codePoint-65<26?codePoint-65:codePoint-97<26?codePoint-97:base)>=base||digit>floor((maxInt-i)/w))&&error("overflow"),i+=digit*w,!(digit<(t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias));k+=base)w>floor(maxInt/(baseMinusT=base-t))&&error("overflow"),w*=baseMinusT;bias=adapt(i-oldi,out=output.length+1,0==oldi),floor(i/out)>maxInt-n&&error("overflow"),n+=floor(i/out),i%=out,output.splice(i++,0,n)}return ucs2encode(output)}function encode(input){var n,delta,handledCPCount,basicLength,bias,j,m,q,k,t,currentValue,inputLength,handledCPCountPlusOne,baseMinusT,qMinusT,output=[];for(inputLength=(input=ucs2decode(input)).length,n=initialN,delta=0,bias=initialBias,j=0;j<inputLength;++j)(currentValue=input[j])<128&&output.push(stringFromCharCode(currentValue));for(handledCPCount=basicLength=output.length,basicLength&&output.push(delimiter);handledCPCount<inputLength;){for(m=maxInt,j=0;j<inputLength;++j)(currentValue=input[j])>=n&¤tValue<m&&(m=currentValue);for(m-n>floor((maxInt-delta)/(handledCPCountPlusOne=handledCPCount+1))&&error("overflow"),delta+=(m-n)*handledCPCountPlusOne,n=m,j=0;j<inputLength;++j)if((currentValue=input[j])<n&&++delta>maxInt&&error("overflow"),currentValue==n){for(q=delta,k=base;!(q<(t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias));k+=base)qMinusT=q-t,baseMinusT=base-t,output.push(stringFromCharCode(digitToBasic(t+qMinusT%baseMinusT,0))),q=floor(qMinusT/baseMinusT);output.push(stringFromCharCode(digitToBasic(q,0))),bias=adapt(delta,handledCPCountPlusOne,handledCPCount==basicLength),delta=0,++handledCPCount}++delta,++n}return output.join("")}if(punycode={version:"1.3.2",ucs2:{decode:ucs2decode,encode:ucs2encode},decode:decode,encode:encode,toASCII:function(input){return mapDomain(input,function(string){return regexNonASCII.test(string)?"xn--"+encode(string):string})},toUnicode:function(input){return mapDomain(input,function(string){return regexPunycode.test(string)?decode(string.slice(4).toLowerCase()):string})}},"function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",[],function(){return punycode});else if(freeExports&&freeModule)if(module.exports==freeExports)freeModule.exports=punycode;else for(key in punycode)punycode.hasOwnProperty(key)&&(freeExports[key]=punycode[key]);else root.punycode=punycode}(this),function(root,factory){"use strict";"object"==typeof module&&module.exports?module.exports=factory():"function"==typeof define&&define.amd?define("IPv6",factory):root.IPv6=factory(root)}(this,function(root){"use strict";var _IPv6=root&&root.IPv6;return{best:function(address){var pos,_segments,segments=address.toLowerCase().split(":"),length=segments.length,total=8;for(""===segments[0]&&""===segments[1]&&""===segments[2]?(segments.shift(),segments.shift()):""===segments[0]&&""===segments[1]?segments.shift():""===segments[length-1]&&""===segments[length-2]&&segments.pop(),-1!==segments[(length=segments.length)-1].indexOf(".")&&(total=7),pos=0;pos<length&&""!==segments[pos];pos++);if(pos<total)for(segments.splice(pos,1,"0000");segments.length<total;)segments.splice(pos,0,"0000");for(var i=0;i<total;i++){_segments=segments[i].split("");for(var j=0;j<3&&"0"===_segments[0]&&_segments.length>1;j++)_segments.splice(0,1);segments[i]=_segments.join("")}var best=-1,_best=0,_current=0,current=-1,inzeroes=!1;for(i=0;i<total;i++)inzeroes?"0"===segments[i]?_current+=1:(inzeroes=!1,_current>_best&&(best=current,_best=_current)):"0"===segments[i]&&(inzeroes=!0,current=i,_current=1);_current>_best&&(best=current,_best=_current),_best>1&&segments.splice(best,_best,""),length=segments.length;var result="";for(""===segments[0]&&(result=":"),i=0;i<length&&(result+=segments[i],i!==length-1);i++)result+=":";return""===segments[length-1]&&(result+=":"),result},noConflict:function(){return root.IPv6===this&&(root.IPv6=_IPv6),this}}}),function(root,factory){"use strict";"object"==typeof module&&module.exports?module.exports=factory():"function"==typeof define&&define.amd?define("SecondLevelDomains",factory):root.SecondLevelDomains=factory(root)}(this,function(root){"use strict";var _SecondLevelDomains=root&&root.SecondLevelDomains,SLD={list:{ac:" com gov mil net org ",ae:" ac co gov mil name net org pro sch ",af:" com edu gov net org ",al:" com edu gov mil net org ",ao:" co ed gv it og pb ",ar:" com edu gob gov int mil net org tur ",at:" ac co gv or ",au:" asn com csiro edu gov id net org ",ba:" co com edu gov mil net org rs unbi unmo unsa untz unze ",bb:" biz co com edu gov info net org store tv ",bh:" biz cc com edu gov info net org ",bn:" com edu gov net org ",bo:" com edu gob gov int mil net org tv ",br:" adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ",bs:" com edu gov net org ",bz:" du et om ov rg ",ca:" ab bc mb nb nf nl ns nt nu on pe qc sk yk ",ck:" biz co edu gen gov info net org ",cn:" ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ",co:" com edu gov mil net nom org ",cr:" ac c co ed fi go or sa ",cy:" ac biz com ekloges gov ltd name net org parliament press pro tm ",do:" art com edu gob gov mil net org sld web ",dz:" art asso com edu gov net org pol ",ec:" com edu fin gov info med mil net org pro ",eg:" com edu eun gov mil name net org sci ",er:" com edu gov ind mil net org rochest w ",es:" com edu gob nom org ",et:" biz com edu gov info name net org ",fj:" ac biz com info mil name net org pro ",fk:" ac co gov net nom org ",fr:" asso com f gouv nom prd presse tm ",gg:" co net org ",gh:" com edu gov mil org ",gn:" ac com gov net org ",gr:" com edu gov mil net org ",gt:" com edu gob ind mil net org ",gu:" com edu gov net org ",hk:" com edu gov idv net org ",hu:" 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ",id:" ac co go mil net or sch web ",il:" ac co gov idf k12 muni net org ",in:" ac co edu ernet firm gen gov i ind mil net nic org res ",iq:" com edu gov i mil net org ",ir:" ac co dnssec gov i id net org sch ",it:" edu gov ",je:" co net org ",jo:" com edu gov mil name net org sch ",jp:" ac ad co ed go gr lg ne or ",ke:" ac co go info me mobi ne or sc ",kh:" com edu gov mil net org per ",ki:" biz com de edu gov info mob net org tel ",km:" asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ",kn:" edu gov net org ",kr:" ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ",kw:" com edu gov net org ",ky:" com edu gov net org ",kz:" com edu gov mil net org ",lb:" com edu gov net org ",lk:" assn com edu gov grp hotel int ltd net ngo org sch soc web ",lr:" com edu gov net org ",lv:" asn com conf edu gov id mil net org ",ly:" com edu gov id med net org plc sch ",ma:" ac co gov m net org press ",mc:" asso tm ",me:" ac co edu gov its net org priv ",mg:" com edu gov mil nom org prd tm ",mk:" com edu gov inf name net org pro ",ml:" com edu gov net org presse ",mn:" edu gov org ",mo:" com edu gov net org ",mt:" com edu gov net org ",mv:" aero biz com coop edu gov info int mil museum name net org pro ",mw:" ac co com coop edu gov int museum net org ",mx:" com edu gob net org ",my:" com edu gov mil name net org sch ",nf:" arts com firm info net other per rec store web ",ng:" biz com edu gov mil mobi name net org sch ",ni:" ac co com edu gob mil net nom org ",np:" com edu gov mil net org ",nr:" biz com edu gov info net org ",om:" ac biz co com edu gov med mil museum net org pro sch ",pe:" com edu gob mil net nom org sld ",ph:" com edu gov i mil net ngo org ",pk:" biz com edu fam gob gok gon gop gos gov net org web ",pl:" art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ",pr:" ac biz com edu est gov info isla name net org pro prof ",ps:" com edu gov net org plo sec ",pw:" belau co ed go ne or ",ro:" arts com firm info nom nt org rec store tm www ",rs:" ac co edu gov in org ",sb:" com edu gov net org ",sc:" com edu gov net org ",sh:" co com edu gov net nom org ",sl:" com edu gov net org ",st:" co com consulado edu embaixada gov mil net org principe saotome store ",sv:" com edu gob org red ",sz:" ac co org ",tr:" av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ",tt:" aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ",tw:" club com ebiz edu game gov idv mil net org ",mu:" ac co com gov net or org ",mz:" ac co edu gov org ",na:" co com ",nz:" ac co cri geek gen govt health iwi maori mil net org parliament school ",pa:" abo ac com edu gob ing med net nom org sld ",pt:" com edu gov int net nome org publ ",py:" com edu gov mil net org ",qa:" com edu gov mil net org ",re:" asso com nom ",ru:" ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ",rw:" ac co com edu gouv gov int mil net ",sa:" com edu gov med net org pub sch ",sd:" com edu gov info med net org tv ",se:" a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ",sg:" com edu gov idn net org per ",sn:" art com edu gouv org perso univ ",sy:" com edu gov mil net news org ",th:" ac co go in mi net or ",tj:" ac biz co com edu go gov info int mil name net nic org test web ",tn:" agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ",tz:" ac co go ne or ",ua:" biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk dp edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ",ug:" ac co go ne or org sc ",uk:" ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ",us:" dni fed isa kids nsn ",uy:" com edu gub mil net org ",ve:" co com edu gob info mil net org web ",vi:" co com k12 net org ",vn:" ac biz com edu gov health info int name net org pro ",ye:" co com gov ltd me net org plc ",yu:" ac co edu gov org ",za:" ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ",zm:" ac co com edu gov net org sch ",com:"ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ",net:"gb jp se uk ",org:"ae",de:"com "},has:function(domain){var tldOffset=domain.lastIndexOf(".");if(tldOffset<=0||tldOffset>=domain.length-1)return!1;var sldOffset=domain.lastIndexOf(".",tldOffset-1);if(sldOffset<=0||sldOffset>=tldOffset-1)return!1;var sldList=SLD.list[domain.slice(tldOffset+1)];return!!sldList&&sldList.indexOf(" "+domain.slice(sldOffset+1,tldOffset)+" ")>=0},is:function(domain){var tldOffset=domain.lastIndexOf(".");if(tldOffset<=0||tldOffset>=domain.length-1)return!1;if(domain.lastIndexOf(".",tldOffset-1)>=0)return!1;var sldList=SLD.list[domain.slice(tldOffset+1)];return!!sldList&&sldList.indexOf(" "+domain.slice(0,tldOffset)+" ")>=0},get:function(domain){var tldOffset=domain.lastIndexOf(".");if(tldOffset<=0||tldOffset>=domain.length-1)return null;var sldOffset=domain.lastIndexOf(".",tldOffset-1);if(sldOffset<=0||sldOffset>=tldOffset-1)return null;var sldList=SLD.list[domain.slice(tldOffset+1)];return sldList?sldList.indexOf(" "+domain.slice(sldOffset+1,tldOffset)+" ")<0?null:domain.slice(sldOffset+1):null},noConflict:function(){return root.SecondLevelDomains===this&&(root.SecondLevelDomains=_SecondLevelDomains),this}};return SLD}),function(root,factory){"use strict";"object"==typeof module&&module.exports?module.exports=factory(require("./punycode"),require("./IPv6"),require("./SecondLevelDomains")):"function"==typeof define&&define.amd?define("URIjs",["./punycode","./IPv6","./SecondLevelDomains"],factory):root.URI=factory(root.punycode,root.IPv6,root.SecondLevelDomains,root)}(this,function(punycode,IPv6,SLD,root){"use strict";var _URI=root&&root.URI;function URI(url,base){var _urlSupplied=arguments.length>=1,_baseSupplied=arguments.length>=2;if(!(this instanceof URI))return _urlSupplied?_baseSupplied?new URI(url,base):new URI(url):new URI;if(void 0===url){if(_urlSupplied)throw new TypeError("undefined is not a valid argument for URI");url="undefined"!=typeof location?location.href+"":""}if(null===url&&_urlSupplied)throw new TypeError("null is not a valid argument for URI");return this.href(url),void 0!==base?this.absoluteTo(base):this}URI.version="1.19.1";var p=URI.prototype,hasOwn=Object.prototype.hasOwnProperty;function escapeRegEx(string){return string.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function getType(value){return void 0===value?"Undefined":String(Object.prototype.toString.call(value)).slice(8,-1)}function isArray(obj){return"Array"===getType(obj)}function filterArrayValues(data,value){var i,length,lookup={};if("RegExp"===getType(value))lookup=null;else if(isArray(value))for(i=0,length=value.length;i<length;i++)lookup[value[i]]=!0;else lookup[value]=!0;for(i=0,length=data.length;i<length;i++){(lookup&&void 0!==lookup[data[i]]||!lookup&&value.test(data[i]))&&(data.splice(i,1),length--,i--)}return data}function arrayContains(list,value){var i,length;if(isArray(value)){for(i=0,length=value.length;i<length;i++)if(!arrayContains(list,value[i]))return!1;return!0}var _type=getType(value);for(i=0,length=list.length;i<length;i++)if("RegExp"===_type){if("string"==typeof list[i]&&list[i].match(value))return!0}else if(list[i]===value)return!0;return!1}function arraysEqual(one,two){if(!isArray(one)||!isArray(two))return!1;if(one.length!==two.length)return!1;one.sort(),two.sort();for(var i=0,l=one.length;i<l;i++)if(one[i]!==two[i])return!1;return!0}function trimSlashes(text){return text.replace(/^\/+|\/+$/g,"")}function escapeForDumbFirefox36(value){return escape(value)}function strictEncodeURIComponent(string){return encodeURIComponent(string).replace(/[!'()*]/g,escapeForDumbFirefox36).replace(/\*/g,"%2A")}URI._parts=function(){return{protocol:null,username:null,password:null,hostname:null,urn:null,port:null,path:null,query:null,fragment:null,preventInvalidHostname:URI.preventInvalidHostname,duplicateQueryParameters:URI.duplicateQueryParameters,escapeQuerySpace:URI.escapeQuerySpace}},URI.preventInvalidHostname=!1,URI.duplicateQueryParameters=!1,URI.escapeQuerySpace=!0,URI.protocol_expression=/^[a-z][a-z0-9.+-]*$/i,URI.idn_expression=/[^a-z0-9\._-]/i,URI.punycode_expression=/(xn--)/i,URI.ip4_expression=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,URI.ip6_expression=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/,URI.find_uri_expression=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/gi,URI.findUri={start:/\b(?:([a-z][a-z0-9.+-]*:\/\/)|www\.)/gi,end:/[\s\r\n]|$/,trim:/[`!()\[\]{};:'".,<>?«»“”„‘’]+$/,parens:/(\([^\)]*\)|\[[^\]]*\]|\{[^}]*\}|<[^>]*>)/g},URI.defaultPorts={http:"80",https:"443",ftp:"21",gopher:"70",ws:"80",wss:"443"},URI.hostProtocols=["http","https"],URI.invalid_hostname_characters=/[^a-zA-Z0-9\.\-:_]/,URI.domAttributes={a:"href",blockquote:"cite",link:"href",base:"href",script:"src",form:"action",img:"src",area:"href",iframe:"src",embed:"src",source:"src",track:"src",input:"src",audio:"src",video:"src"},URI.getDomAttribute=function(node){if(node&&node.nodeName){var nodeName=node.nodeName.toLowerCase();if("input"!==nodeName||"image"===node.type)return URI.domAttributes[nodeName]}},URI.encode=strictEncodeURIComponent,URI.decode=decodeURIComponent,URI.iso8859=function(){URI.encode=escape,URI.decode=unescape},URI.unicode=function(){URI.encode=strictEncodeURIComponent,URI.decode=decodeURIComponent},URI.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/gi,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/gi,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}},urnpath:{encode:{expression:/%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/gi,map:{"%21":"!","%24":"$","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"=","%40":"@"}},decode:{expression:/[\/\?#:]/g,map:{"/":"%2F","?":"%3F","#":"%23",":":"%3A"}}}},URI.encodeQuery=function(string,escapeQuerySpace){var escaped=URI.encode(string+"");return void 0===escapeQuerySpace&&(escapeQuerySpace=URI.escapeQuerySpace),escapeQuerySpace?escaped.replace(/%20/g,"+"):escaped},URI.decodeQuery=function(string,escapeQuerySpace){string+="",void 0===escapeQuerySpace&&(escapeQuerySpace=URI.escapeQuerySpace);try{return URI.decode(escapeQuerySpace?string.replace(/\+/g,"%20"):string)}catch(e){return string}};var _part,_parts={encode:"encode",decode:"decode"},generateAccessor=function(_group,_part){return function(string){try{return URI[_part](string+"").replace(URI.characters[_group][_part].expression,function(c){return URI.characters[_group][_part].map[c]})}catch(e){return string}}};for(_part in _parts)URI[_part+"PathSegment"]=generateAccessor("pathname",_parts[_part]),URI[_part+"UrnPathSegment"]=generateAccessor("urnpath",_parts[_part]);var generateSegmentedPathFunction=function(_sep,_codingFuncName,_innerCodingFuncName){return function(string){var actualCodingFunc;actualCodingFunc=_innerCodingFuncName?function(string){return URI[_codingFuncName](URI[_innerCodingFuncName](string))}:URI[_codingFuncName];for(var segments=(string+"").split(_sep),i=0,length=segments.length;i<length;i++)segments[i]=actualCodingFunc(segments[i]);return segments.join(_sep)}};function generateSimpleAccessor(_part){return function(v,build){return void 0===v?this._parts[_part]||"":(this._parts[_part]=v||null,this.build(!build),this)}}function generatePrefixAccessor(_part,_key){return function(v,build){return void 0===v?this._parts[_part]||"":(null!==v&&(v+="").charAt(0)===_key&&(v=v.substring(1)),this._parts[_part]=v,this.build(!build),this)}}URI.decodePath=generateSegmentedPathFunction("/","decodePathSegment"),URI.decodeUrnPath=generateSegmentedPathFunction(":","decodeUrnPathSegment"),URI.recodePath=generateSegmentedPathFunction("/","encodePathSegment","decode"),URI.recodeUrnPath=generateSegmentedPathFunction(":","encodeUrnPathSegment","decode"),URI.encodeReserved=generateAccessor("reserved","encode"),URI.parse=function(string,parts){var pos;return parts||(parts={preventInvalidHostname:URI.preventInvalidHostname}),(pos=string.indexOf("#"))>-1&&(parts.fragment=string.substring(pos+1)||null,string=string.substring(0,pos)),(pos=string.indexOf("?"))>-1&&(parts.query=string.substring(pos+1)||null,string=string.substring(0,pos)),"//"===string.substring(0,2)?(parts.protocol=null,string=string.substring(2),string=URI.parseAuthority(string,parts)):(pos=string.indexOf(":"))>-1&&(parts.protocol=string.substring(0,pos)||null,parts.protocol&&!parts.protocol.match(URI.protocol_expression)?parts.protocol=void 0:"//"===string.substring(pos+1,pos+3)?(string=string.substring(pos+3),string=URI.parseAuthority(string,parts)):(string=string.substring(pos+1),parts.urn=!0)),parts.path=string,parts},URI.parseHost=function(string,parts){string||(string="");var bracketPos,t,pos=(string=string.replace(/\\/g,"/")).indexOf("/");if(-1===pos&&(pos=string.length),"["===string.charAt(0))bracketPos=string.indexOf("]"),parts.hostname=string.substring(1,bracketPos)||null,parts.port=string.substring(bracketPos+2,pos)||null,"/"===parts.port&&(parts.port=null);else{var firstColon=string.indexOf(":"),firstSlash=string.indexOf("/"),nextColon=string.indexOf(":",firstColon+1);-1!==nextColon&&(-1===firstSlash||nextColon<firstSlash)?(parts.hostname=string.substring(0,pos)||null,parts.port=null):(t=string.substring(0,pos).split(":"),parts.hostname=t[0]||null,parts.port=t[1]||null)}return parts.hostname&&"/"!==string.substring(pos).charAt(0)&&(pos++,string="/"+string),parts.preventInvalidHostname&&URI.ensureValidHostname(parts.hostname,parts.protocol),parts.port&&URI.ensureValidPort(parts.port),string.substring(pos)||"/"},URI.parseAuthority=function(string,parts){return string=URI.parseUserinfo(string,parts),URI.parseHost(string,parts)},URI.parseUserinfo=function(string,parts){var t,firstSlash=string.indexOf("/"),pos=string.lastIndexOf("@",firstSlash>-1?firstSlash:string.length-1);return pos>-1&&(-1===firstSlash||pos<firstSlash)?(t=string.substring(0,pos).split(":"),parts.username=t[0]?URI.decode(t[0]):null,t.shift(),parts.password=t[0]?URI.decode(t.join(":")):null,string=string.substring(pos+1)):(parts.username=null,parts.password=null),string},URI.parseQuery=function(string,escapeQuerySpace){if(!string)return{};if(!(string=string.replace(/&+/g,"&").replace(/^\?*&*|&+$/g,"")))return{};for(var v,name,value,items={},splits=string.split("&"),length=splits.length,i=0;i<length;i++)v=splits[i].split("="),name=URI.decodeQuery(v.shift(),escapeQuerySpace),value=v.length?URI.decodeQuery(v.join("="),escapeQuerySpace):null,hasOwn.call(items,name)?("string"!=typeof items[name]&&null!==items[name]||(items[name]=[items[name]]),items[name].push(value)):items[name]=value;return items},URI.build=function(parts){var t="";return parts.protocol&&(t+=parts.protocol+":"),parts.urn||!t&&!parts.hostname||(t+="//"),t+=URI.buildAuthority(parts)||"","string"==typeof parts.path&&("/"!==parts.path.charAt(0)&&"string"==typeof parts.hostname&&(t+="/"),t+=parts.path),"string"==typeof parts.query&&parts.query&&(t+="?"+parts.query),"string"==typeof parts.fragment&&parts.fragment&&(t+="#"+parts.fragment),t},URI.buildHost=function(parts){var t="";return parts.hostname?(URI.ip6_expression.test(parts.hostname)?t+="["+parts.hostname+"]":t+=parts.hostname,parts.port&&(t+=":"+parts.port),t):""},URI.buildAuthority=function(parts){return URI.buildUserinfo(parts)+URI.buildHost(parts)},URI.buildUserinfo=function(parts){var t="";return parts.username&&(t+=URI.encode(parts.username)),parts.password&&(t+=":"+URI.encode(parts.password)),t&&(t+="@"),t},URI.buildQuery=function(data,duplicateQueryParameters,escapeQuerySpace){var unique,key,i,length,t="";for(key in data)if(hasOwn.call(data,key)&&key)if(isArray(data[key]))for(unique={},i=0,length=data[key].length;i<length;i++)void 0!==data[key][i]&&void 0===unique[data[key][i]+""]&&(t+="&"+URI.buildQueryParameter(key,data[key][i],escapeQuerySpace),!0!==duplicateQueryParameters&&(unique[data[key][i]+""]=!0));else void 0!==data[key]&&(t+="&"+URI.buildQueryParameter(key,data[key],escapeQuerySpace));return t.substring(1)},URI.buildQueryParameter=function(name,value,escapeQuerySpace){return URI.encodeQuery(name,escapeQuerySpace)+(null!==value?"="+URI.encodeQuery(value,escapeQuerySpace):"")},URI.addQuery=function(data,name,value){if("object"==typeof name)for(var key in name)hasOwn.call(name,key)&&URI.addQuery(data,key,name[key]);else{if("string"!=typeof name)throw new TypeError("URI.addQuery() accepts an object, string as the name parameter");if(void 0===data[name])return void(data[name]=value);"string"==typeof data[name]&&(data[name]=[data[name]]),isArray(value)||(value=[value]),data[name]=(data[name]||[]).concat(value)}},URI.setQuery=function(data,name,value){if("object"==typeof name)for(var key in name)hasOwn.call(name,key)&&URI.setQuery(data,key,name[key]);else{if("string"!=typeof name)throw new TypeError("URI.setQuery() accepts an object, string as the name parameter");data[name]=void 0===value?null:value}},URI.removeQuery=function(data,name,value){var i,length,key;if(isArray(name))for(i=0,length=name.length;i<length;i++)data[name[i]]=void 0;else if("RegExp"===getType(name))for(key in data)name.test(key)&&(data[key]=void 0);else if("object"==typeof name)for(key in name)hasOwn.call(name,key)&&URI.removeQuery(data,key,name[key]);else{if("string"!=typeof name)throw new TypeError("URI.removeQuery() accepts an object, string, RegExp as the first parameter");void 0!==value?"RegExp"===getType(value)?!isArray(data[name])&&value.test(data[name])?data[name]=void 0:data[name]=filterArrayValues(data[name],value):data[name]!==String(value)||isArray(value)&&1!==value.length?isArray(data[name])&&(data[name]=filterArrayValues(data[name],value)):data[name]=void 0:data[name]=void 0}},URI.hasQuery=function(data,name,value,withinArray){switch(getType(name)){case"String":break;case"RegExp":for(var key in data)if(hasOwn.call(data,key)&&name.test(key)&&(void 0===value||URI.hasQuery(data,key,value)))return!0;return!1;case"Object":for(var _key in name)if(hasOwn.call(name,_key)&&!URI.hasQuery(data,_key,name[_key]))return!1;return!0;default:throw new TypeError("URI.hasQuery() accepts a string, regular expression or object as the name parameter")}switch(getType(value)){case"Undefined":return name in data;case"Boolean":return value===Boolean(isArray(data[name])?data[name].length:data[name]);case"Function":return!!value(data[name],name,data);case"Array":return!!isArray(data[name])&&(withinArray?arrayContains:arraysEqual)(data[name],value);case"RegExp":return isArray(data[name])?!!withinArray&&arrayContains(data[name],value):Boolean(data[name]&&data[name].match(value));case"Number":value=String(value);case"String":return isArray(data[name])?!!withinArray&&arrayContains(data[name],value):data[name]===value;default:throw new TypeError("URI.hasQuery() accepts undefined, boolean, string, number, RegExp, Function as the value parameter")}},URI.joinPaths=function(){for(var input=[],segments=[],nonEmptySegments=0,i=0;i<arguments.length;i++){var url=new URI(arguments[i]);input.push(url);for(var _segments=url.segment(),s=0;s<_segments.length;s++)"string"==typeof _segments[s]&&segments.push(_segments[s]),_segments[s]&&nonEmptySegments++}if(!segments.length||!nonEmptySegments)return new URI("");var uri=new URI("").segment(segments);return""!==input[0].path()&&"/"!==input[0].path().slice(0,1)||uri.path("/"+uri.path()),uri.normalize()},URI.commonPath=function(one,two){var pos,length=Math.min(one.length,two.length);for(pos=0;pos<length;pos++)if(one.charAt(pos)!==two.charAt(pos)){pos--;break}return pos<1?one.charAt(0)===two.charAt(0)&&"/"===one.charAt(0)?"/":"":("/"===one.charAt(pos)&&"/"===two.charAt(pos)||(pos=one.substring(0,pos).lastIndexOf("/")),one.substring(0,pos+1))},URI.withinString=function(string,callback,options){options||(options={});var _start=options.start||URI.findUri.start,_end=options.end||URI.findUri.end,_trim=options.trim||URI.findUri.trim,_parens=options.parens||URI.findUri.parens,_attributeOpen=/[a-z0-9-]=["']?$/i;for(_start.lastIndex=0;;){var match=_start.exec(string);if(!match)break;var start=match.index;if(options.ignoreHtml){var attributeOpen=string.slice(Math.max(start-3,0),start);if(attributeOpen&&_attributeOpen.test(attributeOpen))continue}for(var end=start+string.slice(start).search(_end),slice=string.slice(start,end),parensEnd=-1;;){var parensMatch=_parens.exec(slice);if(!parensMatch)break;var parensMatchEnd=parensMatch.index+parensMatch[0].length;parensEnd=Math.max(parensEnd,parensMatchEnd)}if(!((slice=parensEnd>-1?slice.slice(0,parensEnd)+slice.slice(parensEnd).replace(_trim,""):slice.replace(_trim,"")).length<=match[0].length||options.ignore&&options.ignore.test(slice))){var result=callback(slice,start,end=start+slice.length,string);void 0!==result?(result=String(result),string=string.slice(0,start)+result+string.slice(end),_start.lastIndex=start+result.length):_start.lastIndex=end}}return _start.lastIndex=0,string},URI.ensureValidHostname=function(v,protocol){var hasHostname=!!v,rejectEmptyHostname=!1;if(!!protocol&&(rejectEmptyHostname=arrayContains(URI.hostProtocols,protocol)),rejectEmptyHostname&&!hasHostname)throw new TypeError("Hostname cannot be empty, if protocol is "+protocol);if(v&&v.match(URI.invalid_hostname_characters)){if(!punycode)throw new TypeError('Hostname "'+v+'" contains characters other than [A-Z0-9.-:_] and Punycode.js is not available');if(punycode.toASCII(v).match(URI.invalid_hostname_characters))throw new TypeError('Hostname "'+v+'" contains characters other than [A-Z0-9.-:_]')}},URI.ensureValidPort=function(v){if(v){var port=Number(v);if(!(/^[0-9]+$/.test(port)&&port>0&&port<65536))throw new TypeError('Port "'+v+'" is not a valid port')}},URI.noConflict=function(removeAll){if(removeAll){var unconflicted={URI:this.noConflict()};return root.URITemplate&&"function"==typeof root.URITemplate.noConflict&&(unconflicted.URITemplate=root.URITemplate.noConflict()),root.IPv6&&"function"==typeof root.IPv6.noConflict&&(unconflicted.IPv6=root.IPv6.noConflict()),root.SecondLevelDomains&&"function"==typeof root.SecondLevelDomains.noConflict&&(unconflicted.SecondLevelDomains=root.SecondLevelDomains.noConflict()),unconflicted}return root.URI===this&&(root.URI=_URI),this},p.build=function(deferBuild){return!0===deferBuild?this._deferred_build=!0:(void 0===deferBuild||this._deferred_build)&&(this._string=URI.build(this._parts),this._deferred_build=!1),this},p.clone=function(){return new URI(this)},p.valueOf=p.toString=function(){return this.build(!1)._string},p.protocol=generateSimpleAccessor("protocol"),p.username=generateSimpleAccessor("username"),p.password=generateSimpleAccessor("password"),p.hostname=generateSimpleAccessor("hostname"),p.port=generateSimpleAccessor("port"),p.query=generatePrefixAccessor("query","?"),p.fragment=generatePrefixAccessor("fragment","#"),p.search=function(v,build){var t=this.query(v,build);return"string"==typeof t&&t.length?"?"+t:t},p.hash=function(v,build){var t=this.fragment(v,build);return"string"==typeof t&&t.length?"#"+t:t},p.pathname=function(v,build){if(void 0===v||!0===v){var res=this._parts.path||(this._parts.hostname?"/":"");return v?(this._parts.urn?URI.decodeUrnPath:URI.decodePath)(res):res}return this._parts.urn?this._parts.path=v?URI.recodeUrnPath(v):"":this._parts.path=v?URI.recodePath(v):"/",this.build(!build),this},p.path=p.pathname,p.href=function(href,build){var key;if(void 0===href)return this.toString();this._string="",this._parts=URI._parts();var _URI=href instanceof URI,_object="object"==typeof href&&(href.hostname||href.path||href.pathname);href.nodeName&&(href=href[URI.getDomAttribute(href)]||"",_object=!1);if(!_URI&&_object&&void 0!==href.pathname&&(href=href.toString()),"string"==typeof href||href instanceof String)this._parts=URI.parse(String(href),this._parts);else{if(!_URI&&!_object)throw new TypeError("invalid input");var src=_URI?href._parts:href;for(key in src)"query"!==key&&hasOwn.call(this._parts,key)&&(this._parts[key]=src[key]);src.query&&this.query(src.query,!1)}return this.build(!build),this},p.is=function(what){var ip=!1,ip4=!1,ip6=!1,name=!1,sld=!1,idn=!1,punycode=!1,relative=!this._parts.urn;switch(this._parts.hostname&&(relative=!1,ip4=URI.ip4_expression.test(this._parts.hostname),ip6=URI.ip6_expression.test(this._parts.hostname),sld=(name=!(ip=ip4||ip6))&&SLD&&SLD.has(this._parts.hostname),idn=name&&URI.idn_expression.test(this._parts.hostname),punycode=name&&URI.punycode_expression.test(this._parts.hostname)),what.toLowerCase()){case"relative":return relative;case"absolute":return!relative;case"domain":case"name":return name;case"sld":return sld;case"ip":return ip;case"ip4":case"ipv4":case"inet4":return ip4;case"ip6":case"ipv6":case"inet6":return ip6;case"idn":return idn;case"url":return!this._parts.urn;case"urn":return!!this._parts.urn;case"punycode":return punycode}return null};var _protocol=p.protocol,_port=p.port,_hostname=p.hostname;p.protocol=function(v,build){if(v&&!(v=v.replace(/:(\/\/)?$/,"")).match(URI.protocol_expression))throw new TypeError('Protocol "'+v+"\" contains characters other than [A-Z0-9.+-] or doesn't start with [A-Z]");return _protocol.call(this,v,build)},p.scheme=p.protocol,p.port=function(v,build){return this._parts.urn?void 0===v?"":this:(void 0!==v&&(0===v&&(v=null),v&&(":"===(v+="").charAt(0)&&(v=v.substring(1)),URI.ensureValidPort(v))),_port.call(this,v,build))},p.hostname=function(v,build){if(this._parts.urn)return void 0===v?"":this;if(void 0!==v){var x={preventInvalidHostname:this._parts.preventInvalidHostname};if("/"!==URI.parseHost(v,x))throw new TypeError('Hostname "'+v+'" contains characters other than [A-Z0-9.-]');v=x.hostname,this._parts.preventInvalidHostname&&URI.ensureValidHostname(v,this._parts.protocol)}return _hostname.call(this,v,build)},p.origin=function(v,build){if(this._parts.urn)return void 0===v?"":this;if(void 0===v){var protocol=this.protocol();return this.authority()?(protocol?protocol+"://":"")+this.authority():""}var origin=URI(v);return this.protocol(origin.protocol()).authority(origin.authority()).build(!build),this},p.host=function(v,build){if(this._parts.urn)return void 0===v?"":this;if(void 0===v)return this._parts.hostname?URI.buildHost(this._parts):"";if("/"!==URI.parseHost(v,this._parts))throw new TypeError('Hostname "'+v+'" contains characters other than [A-Z0-9.-]');return this.build(!build),this},p.authority=function(v,build){if(this._parts.urn)return void 0===v?"":this;if(void 0===v)return this._parts.hostname?URI.buildAuthority(this._parts):"";if("/"!==URI.parseAuthority(v,this._parts))throw new TypeError('Hostname "'+v+'" contains characters other than [A-Z0-9.-]');return this.build(!build),this},p.userinfo=function(v,build){if(this._parts.urn)return void 0===v?"":this;if(void 0===v){var t=URI.buildUserinfo(this._parts);return t?t.substring(0,t.length-1):t}return"@"!==v[v.length-1]&&(v+="@"),URI.parseUserinfo(v,this._parts),this.build(!build),this},p.resource=function(v,build){var parts;return void 0===v?this.path()+this.search()+this.hash():(parts=URI.parse(v),this._parts.path=parts.path,this._parts.query=parts.query,this._parts.fragment=parts.fragment,this.build(!build),this)},p.subdomain=function(v,build){if(this._parts.urn)return void 0===v?"":this;if(void 0===v){if(!this._parts.hostname||this.is("IP"))return"";var end=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0,end)||""}var e=this._parts.hostname.length-this.domain().length,sub=this._parts.hostname.substring(0,e),replace=new RegExp("^"+escapeRegEx(sub));if(v&&"."!==v.charAt(v.length-1)&&(v+="."),-1!==v.indexOf(":"))throw new TypeError("Domains cannot contain colons");return v&&URI.ensureValidHostname(v,this._parts.protocol),this._parts.hostname=this._parts.hostname.replace(replace,v),this.build(!build),this},p.domain=function(v,build){if(this._parts.urn)return void 0===v?"":this;if("boolean"==typeof v&&(build=v,v=void 0),void 0===v){if(!this._parts.hostname||this.is("IP"))return"";var t=this._parts.hostname.match(/\./g);if(t&&t.length<2)return this._parts.hostname;var end=this._parts.hostname.length-this.tld(build).length-1;return end=this._parts.hostname.lastIndexOf(".",end-1)+1,this._parts.hostname.substring(end)||""}if(!v)throw new TypeError("cannot set domain empty");if(-1!==v.indexOf(":"))throw new TypeError("Domains cannot contain colons");if(URI.ensureValidHostname(v,this._parts.protocol),!this._parts.hostname||this.is("IP"))this._parts.hostname=v;else{var replace=new RegExp(escapeRegEx(this.domain())+"$");this._parts.hostname=this._parts.hostname.replace(replace,v)}return this.build(!build),this},p.tld=function(v,build){if(this._parts.urn)return void 0===v?"":this;if("boolean"==typeof v&&(build=v,v=void 0),void 0===v){if(!this._parts.hostname||this.is("IP"))return"";var pos=this._parts.hostname.lastIndexOf("."),tld=this._parts.hostname.substring(pos+1);return!0!==build&&SLD&&SLD.list[tld.toLowerCase()]&&SLD.get(this._parts.hostname)||tld}var replace;if(!v)throw new TypeError("cannot set TLD empty");if(v.match(/[^a-zA-Z0-9-]/)){if(!SLD||!SLD.is(v))throw new TypeError('TLD "'+v+'" contains characters other than [A-Z0-9]');replace=new RegExp(escapeRegEx(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(replace,v)}else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");replace=new RegExp(escapeRegEx(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(replace,v)}return this.build(!build),this},p.directory=function(v,build){if(this._parts.urn)return void 0===v?"":this;if(void 0===v||!0===v){if(!this._parts.path&&!this._parts.hostname)return"";if("/"===this._parts.path)return"/";var end=this._parts.path.length-this.filename().length-1,res=this._parts.path.substring(0,end)||(this._parts.hostname?"/":"");return v?URI.decodePath(res):res}var e=this._parts.path.length-this.filename().length,directory=this._parts.path.substring(0,e),replace=new RegExp("^"+escapeRegEx(directory));return this.is("relative")||(v||(v="/"),"/"!==v.charAt(0)&&(v="/"+v)),v&&"/"!==v.charAt(v.length-1)&&(v+="/"),v=URI.recodePath(v),this._parts.path=this._parts.path.replace(replace,v),this.build(!build),this},p.filename=function(v,build){if(this._parts.urn)return void 0===v?"":this;if("string"!=typeof v){if(!this._parts.path||"/"===this._parts.path)return"";var pos=this._parts.path.lastIndexOf("/"),res=this._parts.path.substring(pos+1);return v?URI.decodePathSegment(res):res}var mutatedDirectory=!1;"/"===v.charAt(0)&&(v=v.substring(1)),v.match(/\.?\//)&&(mutatedDirectory=!0);var replace=new RegExp(escapeRegEx(this.filename())+"$");return v=URI.recodePath(v),this._parts.path=this._parts.path.replace(replace,v),mutatedDirectory?this.normalizePath(build):this.build(!build),this},p.suffix=function(v,build){if(this._parts.urn)return void 0===v?"":this;if(void 0===v||!0===v){if(!this._parts.path||"/"===this._parts.path)return"";var s,res,filename=this.filename(),pos=filename.lastIndexOf(".");return-1===pos?"":(s=filename.substring(pos+1),res=/^[a-z0-9%]+$/i.test(s)?s:"",v?URI.decodePathSegment(res):res)}"."===v.charAt(0)&&(v=v.substring(1));var replace,suffix=this.suffix();if(suffix)replace=v?new RegExp(escapeRegEx(suffix)+"$"):new RegExp(escapeRegEx("."+suffix)+"$");else{if(!v)return this;this._parts.path+="."+URI.recodePath(v)}return replace&&(v=URI.recodePath(v),this._parts.path=this._parts.path.replace(replace,v)),this.build(!build),this},p.segment=function(segment,v,build){var separator=this._parts.urn?":":"/",path=this.path(),absolute="/"===path.substring(0,1),segments=path.split(separator);if(void 0!==segment&&"number"!=typeof segment&&(build=v,v=segment,segment=void 0),void 0!==segment&&"number"!=typeof segment)throw new Error('Bad segment "'+segment+'", must be 0-based integer');if(absolute&&segments.shift(),segment<0&&(segment=Math.max(segments.length+segment,0)),void 0===v)return void 0===segment?segments:segments[segment];if(null===segment||void 0===segments[segment])if(isArray(v)){segments=[];for(var i=0,l=v.length;i<l;i++)(v[i].length||segments.length&&segments[segments.length-1].length)&&(segments.length&&!segments[segments.length-1].length&&segments.pop(),segments.push(trimSlashes(v[i])))}else(v||"string"==typeof v)&&(v=trimSlashes(v),""===segments[segments.length-1]?segments[segments.length-1]=v:segments.push(v));else v?segments[segment]=trimSlashes(v):segments.splice(segment,1);return absolute&&segments.unshift(""),this.path(segments.join(separator),build)},p.segmentCoded=function(segment,v,build){var segments,i,l;if("number"!=typeof segment&&(build=v,v=segment,segment=void 0),void 0===v){if(isArray(segments=this.segment(segment,v,build)))for(i=0,l=segments.length;i<l;i++)segments[i]=URI.decode(segments[i]);else segments=void 0!==segments?URI.decode(segments):void 0;return segments}if(isArray(v))for(i=0,l=v.length;i<l;i++)v[i]=URI.encode(v[i]);else v="string"==typeof v||v instanceof String?URI.encode(v):v;return this.segment(segment,v,build)};var q=p.query;return p.query=function(v,build){if(!0===v)return URI.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if("function"==typeof v){var data=URI.parseQuery(this._parts.query,this._parts.escapeQuerySpace),result=v.call(this,data);return this._parts.query=URI.buildQuery(result||data,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!build),this}return void 0!==v&&"string"!=typeof v?(this._parts.query=URI.buildQuery(v,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!build),this):q.call(this,v,build)},p.setQuery=function(name,value,build){var data=URI.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if("string"==typeof name||name instanceof String)data[name]=void 0!==value?value:null;else{if("object"!=typeof name)throw new TypeError("URI.addQuery() accepts an object, string as the name parameter");for(var key in name)hasOwn.call(name,key)&&(data[key]=name[key])}return this._parts.query=URI.buildQuery(data,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),"string"!=typeof name&&(build=value),this.build(!build),this},p.addQuery=function(name,value,build){var data=URI.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return URI.addQuery(data,name,void 0===value?null:value),this._parts.query=URI.buildQuery(data,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),"string"!=typeof name&&(build=value),this.build(!build),this},p.removeQuery=function(name,value,build){var data=URI.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return URI.removeQuery(data,name,value),this._parts.query=URI.buildQuery(data,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),"string"!=typeof name&&(build=value),this.build(!build),this},p.hasQuery=function(name,value,withinArray){var data=URI.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return URI.hasQuery(data,name,value,withinArray)},p.setSearch=p.setQuery,p.addSearch=p.addQuery,p.removeSearch=p.removeQuery,p.hasSearch=p.hasQuery,p.normalize=function(){return this._parts.urn?this.normalizeProtocol(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build():this.normalizeProtocol(!1).normalizeHostname(!1).normalizePort(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build()},p.normalizeProtocol=function(build){return"string"==typeof this._parts.protocol&&(this._parts.protocol=this._parts.protocol.toLowerCase(),this.build(!build)),this},p.normalizeHostname=function(build){return this._parts.hostname&&(this.is("IDN")&&punycode?this._parts.hostname=punycode.toASCII(this._parts.hostname):this.is("IPv6")&&IPv6&&(this._parts.hostname=IPv6.best(this._parts.hostname)),this._parts.hostname=this._parts.hostname.toLowerCase(),this.build(!build)),this},p.normalizePort=function(build){return"string"==typeof this._parts.protocol&&this._parts.port===URI.defaultPorts[this._parts.protocol]&&(this._parts.port=null,this.build(!build)),this},p.normalizePath=function(build){var _was_relative,_path=this._parts.path;if(!_path)return this;if(this._parts.urn)return this._parts.path=URI.recodeUrnPath(this._parts.path),this.build(!build),this;if("/"===this._parts.path)return this;var _parent,_pos,_leadingParents="";for("/"!==(_path=URI.recodePath(_path)).charAt(0)&&(_was_relative=!0,_path="/"+_path),"/.."!==_path.slice(-3)&&"/."!==_path.slice(-2)||(_path+="/"),_path=_path.replace(/(\/(\.\/)+)|(\/\.$)/g,"/").replace(/\/{2,}/g,"/"),_was_relative&&(_leadingParents=_path.substring(1).match(/^(\.\.\/)+/)||"")&&(_leadingParents=_leadingParents[0]);-1!==(_parent=_path.search(/\/\.\.(\/|$)/));)0!==_parent?(-1===(_pos=_path.substring(0,_parent).lastIndexOf("/"))&&(_pos=_parent),_path=_path.substring(0,_pos)+_path.substring(_parent+3)):_path=_path.substring(3);return _was_relative&&this.is("relative")&&(_path=_leadingParents+_path.substring(1)),this._parts.path=_path,this.build(!build),this},p.normalizePathname=p.normalizePath,p.normalizeQuery=function(build){return"string"==typeof this._parts.query&&(this._parts.query.length?this.query(URI.parseQuery(this._parts.query,this._parts.escapeQuerySpace)):this._parts.query=null,this.build(!build)),this},p.normalizeFragment=function(build){return this._parts.fragment||(this._parts.fragment=null,this.build(!build)),this},p.normalizeSearch=p.normalizeQuery,p.normalizeHash=p.normalizeFragment,p.iso8859=function(){var e=URI.encode,d=URI.decode;URI.encode=escape,URI.decode=decodeURIComponent;try{this.normalize()}finally{URI.encode=e,URI.decode=d}return this},p.unicode=function(){var e=URI.encode,d=URI.decode;URI.encode=strictEncodeURIComponent,URI.decode=unescape;try{this.normalize()}finally{URI.encode=e,URI.decode=d}return this},p.readable=function(){var uri=this.clone();uri.username("").password("").normalize();var t="";if(uri._parts.protocol&&(t+=uri._parts.protocol+"://"),uri._parts.hostname&&(uri.is("punycode")&&punycode?(t+=punycode.toUnicode(uri._parts.hostname),uri._parts.port&&(t+=":"+uri._parts.port)):t+=uri.host()),uri._parts.hostname&&uri._parts.path&&"/"!==uri._parts.path.charAt(0)&&(t+="/"),t+=uri.path(!0),uri._parts.query){for(var q="",i=0,qp=uri._parts.query.split("&"),l=qp.length;i<l;i++){var kv=(qp[i]||"").split("=");q+="&"+URI.decodeQuery(kv[0],this._parts.escapeQuerySpace).replace(/&/g,"%26"),void 0!==kv[1]&&(q+="="+URI.decodeQuery(kv[1],this._parts.escapeQuerySpace).replace(/&/g,"%26"))}t+="?"+q.substring(1)}return t+=URI.decodeQuery(uri.hash(),!0)},p.absoluteTo=function(base){var basedir,i,p,resolved=this.clone(),properties=["protocol","username","password","hostname","port"];if(base instanceof URI||(base=new URI(base)),"filesystem"==this._parts.protocol)return resolved;if("filesystem"==base._parts.protocol){var uri=this.absoluteTo(base._parts.path);return-1!==base._parts.path.indexOf("chrome-extension:")||-1!==base._parts.path.indexOf("http:")||-1!==base._parts.path.indexOf("https:")?new URI("filesystem:"+uri.toString()):uri}if(this._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(resolved._parts.protocol)return resolved;if(resolved._parts.protocol=base._parts.protocol,this._parts.hostname)return resolved;for(i=0;p=properties[i];i++)resolved._parts[p]=base._parts[p];return resolved._parts.path?(".."===resolved._parts.path.substring(-2)&&(resolved._parts.path+="/"),"/"!==resolved.path().charAt(0)&&(basedir=(basedir=base.directory())||(0===base.path().indexOf("/")?"/":""),resolved._parts.path=(basedir?basedir+"/":"")+resolved._parts.path,resolved.normalizePath())):(resolved._parts.path=base._parts.path,resolved._parts.query||(resolved._parts.query=base._parts.query)),resolved.build(),resolved},p.relativeTo=function(base){var relativeParts,baseParts,common,relativePath,basePath,relative=this.clone().normalize();if(relative._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(base=new URI(base).normalize(),relativeParts=relative._parts,baseParts=base._parts,relativePath=relative.path(),basePath=base.path(),"/"!==relativePath.charAt(0))throw new Error("URI is already relative");if("/"!==basePath.charAt(0))throw new Error("Cannot calculate a URI relative to another relative URI");if(relativeParts.protocol===baseParts.protocol&&(relativeParts.protocol=null),relativeParts.username!==baseParts.username||relativeParts.password!==baseParts.password)return relative.build();if(null!==relativeParts.protocol||null!==relativeParts.username||null!==relativeParts.password)return relative.build();if(relativeParts.hostname!==baseParts.hostname||relativeParts.port!==baseParts.port)return relative.build();if(relativeParts.hostname=null,relativeParts.port=null,relativePath===basePath)return relativeParts.path="",relative.build();if(!(common=URI.commonPath(relativePath,basePath)))return relative.build();var parents=baseParts.path.substring(common.length).replace(/[^\/]*$/,"").replace(/.*?\//g,"../");return relativeParts.path=parents+relativeParts.path.substring(common.length)||"./",relative.build()},p.equals=function(uri){var one_map,two_map,one_query,two_query,key,one=this.clone(),two=new URI(uri),checked={};if(one.normalize(),two.normalize(),one.toString()===two.toString())return!0;if(one_query=one.query(),two_query=two.query(),one.query(""),two.query(""),one.toString()!==two.toString())return!1;if(one_query.length!==two_query.length)return!1;for(key in one_map=URI.parseQuery(one_query,this._parts.escapeQuerySpace),two_map=URI.parseQuery(two_query,this._parts.escapeQuerySpace),one_map)if(hasOwn.call(one_map,key)){if(isArray(one_map[key])){if(!arraysEqual(one_map[key],two_map[key]))return!1}else if(one_map[key]!==two_map[key])return!1;checked[key]=!0}for(key in two_map)if(hasOwn.call(two_map,key)&&!checked[key])return!1;return!0},p.preventInvalidHostname=function(v){return this._parts.preventInvalidHostname=!!v,this},p.duplicateQueryParameters=function(v){return this._parts.duplicateQueryParameters=!!v,this},p.escapeQuerySpace=function(v){return this._parts.escapeQuerySpace=!!v,this},URI}),function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?factory(exports):"function"==typeof define&&define.amd?define("readium_cfi_js",["exports"],factory):factory(global.EPUBcfi={})}(this,function(exports){"use strict";var commonjsGlobal="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var module,jquery=(function(module){var global,factory;global="undefined"!=typeof window?window:commonjsGlobal,factory=function(window,noGlobal){var arr=[],document=window.document,getProto=Object.getPrototypeOf,slice=arr.slice,concat=arr.concat,push=arr.push,indexOf=arr.indexOf,class2type={},toString=class2type.toString,hasOwn=class2type.hasOwnProperty,fnToString=hasOwn.toString,ObjectFunctionString=fnToString.call(Object),support={},isFunction=function(obj){return"function"==typeof obj&&"number"!=typeof obj.nodeType},isWindow=function(obj){return null!=obj&&obj===obj.window},preservedScriptAttributes={type:!0,src:!0,noModule:!0};function DOMEval(code,doc,node){var i,script=(doc=doc||document).createElement("script");if(script.text=code,node)for(i in preservedScriptAttributes)node[i]&&(script[i]=node[i]);doc.head.appendChild(script).parentNode.removeChild(script)}function toType(obj){return null==obj?obj+"":"object"==typeof obj||"function"==typeof obj?class2type[toString.call(obj)]||"object":typeof obj}var jQuery=function(selector,context){return new jQuery.fn.init(selector,context)},rtrim=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function isArrayLike(obj){var length=!!obj&&"length"in obj&&obj.length,type=toType(obj);return!isFunction(obj)&&!isWindow(obj)&&("array"===type||0===length||"number"==typeof length&&length>0&&length-1 in obj)}jQuery.fn=jQuery.prototype={jquery:"3.3.1",constructor:jQuery,length:0,toArray:function(){return slice.call(this)},get:function(num){return null==num?slice.call(this):num<0?this[num+this.length]:this[num]},pushStack:function(elems){var ret=jQuery.merge(this.constructor(),elems);return ret.prevObject=this,ret},each:function(callback){return jQuery.each(this,callback)},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem)}))},slice:function(){return this.pushStack(slice.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(i){var len=this.length,j=+i+(i<0?len:0);return this.pushStack(j>=0&&j<len?[this[j]]:[])},end:function(){return this.prevObject||this.constructor()},push:push,sort:arr.sort,splice:arr.splice},jQuery.extend=jQuery.fn.extend=function(){var options,name,src,copy,copyIsArray,clone,target=arguments[0]||{},i=1,length=arguments.length,deep=!1;for("boolean"==typeof target&&(deep=target,target=arguments[i]||{},i++),"object"==typeof target||isFunction(target)||(target={}),i===length&&(target=this,i--);i<length;i++)if(null!=(options=arguments[i]))for(name in options)src=target[name],target!==(copy=options[name])&&(deep&©&&(jQuery.isPlainObject(copy)||(copyIsArray=Array.isArray(copy)))?(copyIsArray?(copyIsArray=!1,clone=src&&Array.isArray(src)?src:[]):clone=src&&jQuery.isPlainObject(src)?src:{},target[name]=jQuery.extend(deep,clone,copy)):void 0!==copy&&(target[name]=copy));return target},jQuery.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(msg){throw new Error(msg)},noop:function(){},isPlainObject:function(obj){var proto,Ctor;return!(!obj||"[object Object]"!==toString.call(obj))&&(!(proto=getProto(obj))||"function"==typeof(Ctor=hasOwn.call(proto,"constructor")&&proto.constructor)&&fnToString.call(Ctor)===ObjectFunctionString)},isEmptyObject:function(obj){var name;for(name in obj)return!1;return!0},globalEval:function(code){DOMEval(code)},each:function(obj,callback){var length,i=0;if(isArrayLike(obj))for(length=obj.length;i<length&&!1!==callback.call(obj[i],i,obj[i]);i++);else for(i in obj)if(!1===callback.call(obj[i],i,obj[i]))break;return obj},trim:function(text){return null==text?"":(text+"").replace(rtrim,"")},makeArray:function(arr,results){var ret=results||[];return null!=arr&&(isArrayLike(Object(arr))?jQuery.merge(ret,"string"==typeof arr?[arr]:arr):push.call(ret,arr)),ret},inArray:function(elem,arr,i){return null==arr?-1:indexOf.call(arr,elem,i)},merge:function(first,second){for(var len=+second.length,j=0,i=first.length;j<len;j++)first[i++]=second[j];return first.length=i,first},grep:function(elems,callback,invert){for(var matches=[],i=0,length=elems.length,callbackExpect=!invert;i<length;i++)!callback(elems[i],i)!==callbackExpect&&matches.push(elems[i]);return matches},map:function(elems,callback,arg){var length,value,i=0,ret=[];if(isArrayLike(elems))for(length=elems.length;i<length;i++)null!=(value=callback(elems[i],i,arg))&&ret.push(value);else for(i in elems)null!=(value=callback(elems[i],i,arg))&&ret.push(value);return concat.apply([],ret)},guid:1,support:support}),"function"==typeof Symbol&&(jQuery.fn[Symbol.iterator]=arr[Symbol.iterator]),jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(i,name){class2type["[object "+name+"]"]=name.toLowerCase()});var Sizzle=function(window){var i,support,Expr,getText,isXML,tokenize,compile,select,outermostContext,sortInput,hasDuplicate,setDocument,document,docElem,documentIsHTML,rbuggyQSA,rbuggyMatches,matches,contains,expando="sizzle"+1*new Date,preferredDoc=window.document,dirruns=0,done=0,classCache=createCache(),tokenCache=createCache(),compilerCache=createCache(),sortOrder=function(a,b){return a===b&&(hasDuplicate=!0),0},hasOwn={}.hasOwnProperty,arr=[],pop=arr.pop,push_native=arr.push,push=arr.push,slice=arr.slice,indexOf=function(list,elem){for(var i=0,len=list.length;i<len;i++)if(list[i]===elem)return i;return-1},booleans="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",whitespace="[\\x20\\t\\r\\n\\f]",identifier="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",attributes="\\["+whitespace+"*("+identifier+")(?:"+whitespace+"*([*^$|!~]?=)"+whitespace+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+identifier+"))|)"+whitespace+"*\\]",pseudos=":("+identifier+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+attributes+")*)|.*)\\)|)",rwhitespace=new RegExp(whitespace+"+","g"),rtrim=new RegExp("^"+whitespace+"+|((?:^|[^\\\\])(?:\\\\.)*)"+whitespace+"+$","g"),rcomma=new RegExp("^"+whitespace+"*,"+whitespace+"*"),rcombinators=new RegExp("^"+whitespace+"*([>+~]|"+whitespace+")"+whitespace+"*"),rattributeQuotes=new RegExp("="+whitespace+"*([^\\]'\"]*?)"+whitespace+"*\\]","g"),rpseudo=new RegExp(pseudos),ridentifier=new RegExp("^"+identifier+"$"),matchExpr={ID:new RegExp("^#("+identifier+")"),CLASS:new RegExp("^\\.("+identifier+")"),TAG:new RegExp("^("+identifier+"|[*])"),ATTR:new RegExp("^"+attributes),PSEUDO:new RegExp("^"+pseudos),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+whitespace+"*(even|odd|(([+-]|)(\\d*)n|)"+whitespace+"*(?:([+-]|)"+whitespace+"*(\\d+)|))"+whitespace+"*\\)|)","i"),bool:new RegExp("^(?:"+booleans+")$","i"),needsContext:new RegExp("^"+whitespace+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+whitespace+"*((?:-\\d)?\\d*)"+whitespace+"*\\)|)(?=[^-]|$)","i")},rinputs=/^(?:input|select|textarea|button)$/i,rheader=/^h\d$/i,rnative=/^[^{]+\{\s*\[native \w/,rquickExpr=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,rsibling=/[+~]/,runescape=new RegExp("\\\\([\\da-f]{1,6}"+whitespace+"?|("+whitespace+")|.)","ig"),funescape=function(_,escaped,escapedWhitespace){var high="0x"+escaped-65536;return high!=high||escapedWhitespace?escaped:high<0?String.fromCharCode(high+65536):String.fromCharCode(high>>10|55296,1023&high|56320)},rcssescape=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,fcssescape=function(ch,asCodePoint){return asCodePoint?"\0"===ch?"�":ch.slice(0,-1)+"\\"+ch.charCodeAt(ch.length-1).toString(16)+" ":"\\"+ch},unloadHandler=function(){setDocument()},disabledAncestor=addCombinator(function(elem){return!0===elem.disabled&&("form"in elem||"label"in elem)},{dir:"parentNode",next:"legend"});try{push.apply(arr=slice.call(preferredDoc.childNodes),preferredDoc.childNodes),arr[preferredDoc.childNodes.length].nodeType}catch(e){push={apply:arr.length?function(target,els){push_native.apply(target,slice.call(els))}:function(target,els){for(var j=target.length,i=0;target[j++]=els[i++];);target.length=j-1}}}function Sizzle(selector,context,results,seed){var m,i,elem,nid,match,groups,newSelector,newContext=context&&context.ownerDocument,nodeType=context?context.nodeType:9;if(results=results||[],"string"!=typeof selector||!selector||1!==nodeType&&9!==nodeType&&11!==nodeType)return results;if(!seed&&((context?context.ownerDocument||context:preferredDoc)!==document&&setDocument(context),context=context||document,documentIsHTML)){if(11!==nodeType&&(match=rquickExpr.exec(selector)))if(m=match[1]){if(9===nodeType){if(!(elem=context.getElementById(m)))return results;if(elem.id===m)return results.push(elem),results}else if(newContext&&(elem=newContext.getElementById(m))&&contains(context,elem)&&elem.id===m)return results.push(elem),results}else{if(match[2])return push.apply(results,context.getElementsByTagName(selector)),results;if((m=match[3])&&support.getElementsByClassName&&context.getElementsByClassName)return push.apply(results,context.getElementsByClassName(m)),results}if(support.qsa&&!compilerCache[selector+" "]&&(!rbuggyQSA||!rbuggyQSA.test(selector))){if(1!==nodeType)newContext=context,newSelector=selector;else if("object"!==context.nodeName.toLowerCase()){for((nid=context.getAttribute("id"))?nid=nid.replace(rcssescape,fcssescape):context.setAttribute("id",nid=expando),i=(groups=tokenize(selector)).length;i--;)groups[i]="#"+nid+" "+toSelector(groups[i]);newSelector=groups.join(","),newContext=rsibling.test(selector)&&testContext(context.parentNode)||context}if(newSelector)try{return push.apply(results,newContext.querySelectorAll(newSelector)),results}catch(qsaError){}finally{nid===expando&&context.removeAttribute("id")}}}return select(selector.replace(rtrim,"$1"),context,results,seed)}function createCache(){var keys=[];return function cache(key,value){return keys.push(key+" ")>Expr.cacheLength&&delete cache[keys.shift()],cache[key+" "]=value}}function markFunction(fn){return fn[expando]=!0,fn}function assert(fn){var el=document.createElement("fieldset");try{return!!fn(el)}catch(e){return!1}finally{el.parentNode&&el.parentNode.removeChild(el),el=null}}function addHandle(attrs,handler){for(var arr=attrs.split("|"),i=arr.length;i--;)Expr.attrHandle[arr[i]]=handler}function siblingCheck(a,b){var cur=b&&a,diff=cur&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(diff)return diff;if(cur)for(;cur=cur.nextSibling;)if(cur===b)return-1;return a?1:-1}function createInputPseudo(type){return function(elem){return"input"===elem.nodeName.toLowerCase()&&elem.type===type}}function createButtonPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return("input"===name||"button"===name)&&elem.type===type}}function createDisabledPseudo(disabled){return function(elem){return"form"in elem?elem.parentNode&&!1===elem.disabled?"label"in elem?"label"in elem.parentNode?elem.parentNode.disabled===disabled:elem.disabled===disabled:elem.isDisabled===disabled||elem.isDisabled!==!disabled&&disabledAncestor(elem)===disabled:elem.disabled===disabled:"label"in elem&&elem.disabled===disabled}}function createPositionalPseudo(fn){return markFunction(function(argument){return argument=+argument,markFunction(function(seed,matches){for(var j,matchIndexes=fn([],seed.length,argument),i=matchIndexes.length;i--;)seed[j=matchIndexes[i]]&&(seed[j]=!(matches[j]=seed[j]))})})}function testContext(context){return context&&void 0!==context.getElementsByTagName&&context}for(i in support=Sizzle.support={},isXML=Sizzle.isXML=function(elem){var documentElement=elem&&(elem.ownerDocument||elem).documentElement;return!!documentElement&&"HTML"!==documentElement.nodeName},setDocument=Sizzle.setDocument=function(node){var hasCompare,subWindow,doc=node?node.ownerDocument||node:preferredDoc;return doc!==document&&9===doc.nodeType&&doc.documentElement?(docElem=(document=doc).documentElement,documentIsHTML=!isXML(document),preferredDoc!==document&&(subWindow=document.defaultView)&&subWindow.top!==subWindow&&(subWindow.addEventListener?subWindow.addEventListener("unload",unloadHandler,!1):subWindow.attachEvent&&subWindow.attachEvent("onunload",unloadHandler)),support.attributes=assert(function(el){return el.className="i",!el.getAttribute("className")}),support.getElementsByTagName=assert(function(el){return el.appendChild(document.createComment("")),!el.getElementsByTagName("*").length}),support.getElementsByClassName=rnative.test(document.getElementsByClassName),support.getById=assert(function(el){return docElem.appendChild(el).id=expando,!document.getElementsByName||!document.getElementsByName(expando).length}),support.getById?(Expr.filter.ID=function(id){var attrId=id.replace(runescape,funescape);return function(elem){return elem.getAttribute("id")===attrId}},Expr.find.ID=function(id,context){if(void 0!==context.getElementById&&documentIsHTML){var elem=context.getElementById(id);return elem?[elem]:[]}}):(Expr.filter.ID=function(id){var attrId=id.replace(runescape,funescape);return function(elem){var node=void 0!==elem.getAttributeNode&&elem.getAttributeNode("id");return node&&node.value===attrId}},Expr.find.ID=function(id,context){if(void 0!==context.getElementById&&documentIsHTML){var node,i,elems,elem=context.getElementById(id);if(elem){if((node=elem.getAttributeNode("id"))&&node.value===id)return[elem];for(elems=context.getElementsByName(id),i=0;elem=elems[i++];)if((node=elem.getAttributeNode("id"))&&node.value===id)return[elem]}return[]}}),Expr.find.TAG=support.getElementsByTagName?function(tag,context){return void 0!==context.getElementsByTagName?context.getElementsByTagName(tag):support.qsa?context.querySelectorAll(tag):void 0}:function(tag,context){var elem,tmp=[],i=0,results=context.getElementsByTagName(tag);if("*"===tag){for(;elem=results[i++];)1===elem.nodeType&&tmp.push(elem);return tmp}return results},Expr.find.CLASS=support.getElementsByClassName&&function(className,context){if(void 0!==context.getElementsByClassName&&documentIsHTML)return context.getElementsByClassName(className)},rbuggyMatches=[],rbuggyQSA=[],(support.qsa=rnative.test(document.querySelectorAll))&&(assert(function(el){docElem.appendChild(el).innerHTML="<a id='"+expando+"'></a><select id='"+expando+"-\r\\' msallowcapture=''><option selected=''></option></select>",el.querySelectorAll("[msallowcapture^='']").length&&rbuggyQSA.push("[*^$]="+whitespace+"*(?:''|\"\")"),el.querySelectorAll("[selected]").length||rbuggyQSA.push("\\["+whitespace+"*(?:value|"+booleans+")"),el.querySelectorAll("[id~="+expando+"-]").length||rbuggyQSA.push("~="),el.querySelectorAll(":checked").length||rbuggyQSA.push(":checked"),el.querySelectorAll("a#"+expando+"+*").length||rbuggyQSA.push(".#.+[+~]")}),assert(function(el){el.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var input=document.createElement("input");input.setAttribute("type","hidden"),el.appendChild(input).setAttribute("name","D"),el.querySelectorAll("[name=d]").length&&rbuggyQSA.push("name"+whitespace+"*[*^$|!~]?="),2!==el.querySelectorAll(":enabled").length&&rbuggyQSA.push(":enabled",":disabled"),docElem.appendChild(el).disabled=!0,2!==el.querySelectorAll(":disabled").length&&rbuggyQSA.push(":enabled",":disabled"),el.querySelectorAll("*,:x"),rbuggyQSA.push(",.*:")})),(support.matchesSelector=rnative.test(matches=docElem.matches||docElem.webkitMatchesSelector||docElem.mozMatchesSelector||docElem.oMatchesSelector||docElem.msMatchesSelector))&&assert(function(el){support.disconnectedMatch=matches.call(el,"*"),matches.call(el,"[s!='']:x"),rbuggyMatches.push("!=",pseudos)}),rbuggyQSA=rbuggyQSA.length&&new RegExp(rbuggyQSA.join("|")),rbuggyMatches=rbuggyMatches.length&&new RegExp(rbuggyMatches.join("|")),hasCompare=rnative.test(docElem.compareDocumentPosition),contains=hasCompare||rnative.test(docElem.contains)?function(a,b){var adown=9===a.nodeType?a.documentElement:a,bup=b&&b.parentNode;return a===bup||!(!bup||1!==bup.nodeType||!(adown.contains?adown.contains(bup):a.compareDocumentPosition&&16&a.compareDocumentPosition(bup)))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1},sortOrder=hasCompare?function(a,b){if(a===b)return hasDuplicate=!0,0;var compare=!a.compareDocumentPosition-!b.compareDocumentPosition;return compare||(1&(compare=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1)||!support.sortDetached&&b.compareDocumentPosition(a)===compare?a===document||a.ownerDocument===preferredDoc&&contains(preferredDoc,a)?-1:b===document||b.ownerDocument===preferredDoc&&contains(preferredDoc,b)?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0:4&compare?-1:1)}:function(a,b){if(a===b)return hasDuplicate=!0,0;var cur,i=0,aup=a.parentNode,bup=b.parentNode,ap=[a],bp=[b];if(!aup||!bup)return a===document?-1:b===document?1:aup?-1:bup?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0;if(aup===bup)return siblingCheck(a,b);for(cur=a;cur=cur.parentNode;)ap.unshift(cur);for(cur=b;cur=cur.parentNode;)bp.unshift(cur);for(;ap[i]===bp[i];)i++;return i?siblingCheck(ap[i],bp[i]):ap[i]===preferredDoc?-1:bp[i]===preferredDoc?1:0},document):document},Sizzle.matches=function(expr,elements){return Sizzle(expr,null,null,elements)},Sizzle.matchesSelector=function(elem,expr){if((elem.ownerDocument||elem)!==document&&setDocument(elem),expr=expr.replace(rattributeQuotes,"='$1']"),support.matchesSelector&&documentIsHTML&&!compilerCache[expr+" "]&&(!rbuggyMatches||!rbuggyMatches.test(expr))&&(!rbuggyQSA||!rbuggyQSA.test(expr)))try{var ret=matches.call(elem,expr);if(ret||support.disconnectedMatch||elem.document&&11!==elem.document.nodeType)return ret}catch(e){}return Sizzle(expr,document,null,[elem]).length>0},Sizzle.contains=function(context,elem){return(context.ownerDocument||context)!==document&&setDocument(context),contains(context,elem)},Sizzle.attr=function(elem,name){(elem.ownerDocument||elem)!==document&&setDocument(elem);var fn=Expr.attrHandle[name.toLowerCase()],val=fn&&hasOwn.call(Expr.attrHandle,name.toLowerCase())?fn(elem,name,!documentIsHTML):void 0;return void 0!==val?val:support.attributes||!documentIsHTML?elem.getAttribute(name):(val=elem.getAttributeNode(name))&&val.specified?val.value:null},Sizzle.escape=function(sel){return(sel+"").replace(rcssescape,fcssescape)},Sizzle.error=function(msg){throw new Error("Syntax error, unrecognized expression: "+msg)},Sizzle.uniqueSort=function(results){var elem,duplicates=[],j=0,i=0;if(hasDuplicate=!support.detectDuplicates,sortInput=!support.sortStable&&results.slice(0),results.sort(sortOrder),hasDuplicate){for(;elem=results[i++];)elem===results[i]&&(j=duplicates.push(i));for(;j--;)results.splice(duplicates[j],1)}return sortInput=null,results},getText=Sizzle.getText=function(elem){var node,ret="",i=0,nodeType=elem.nodeType;if(nodeType){if(1===nodeType||9===nodeType||11===nodeType){if("string"==typeof elem.textContent)return elem.textContent;for(elem=elem.firstChild;elem;elem=elem.nextSibling)ret+=getText(elem)}else if(3===nodeType||4===nodeType)return elem.nodeValue}else for(;node=elem[i++];)ret+=getText(node);return ret},(Expr=Sizzle.selectors={cacheLength:50,createPseudo:markFunction,match:matchExpr,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(match){return match[1]=match[1].replace(runescape,funescape),match[3]=(match[3]||match[4]||match[5]||"").replace(runescape,funescape),"~="===match[2]&&(match[3]=" "+match[3]+" "),match.slice(0,4)},CHILD:function(match){return match[1]=match[1].toLowerCase(),"nth"===match[1].slice(0,3)?(match[3]||Sizzle.error(match[0]),match[4]=+(match[4]?match[5]+(match[6]||1):2*("even"===match[3]||"odd"===match[3])),match[5]=+(match[7]+match[8]||"odd"===match[3])):match[3]&&Sizzle.error(match[0]),match},PSEUDO:function(match){var excess,unquoted=!match[6]&&match[2];return matchExpr.CHILD.test(match[0])?null:(match[3]?match[2]=match[4]||match[5]||"":unquoted&&rpseudo.test(unquoted)&&(excess=tokenize(unquoted,!0))&&(excess=unquoted.indexOf(")",unquoted.length-excess)-unquoted.length)&&(match[0]=match[0].slice(0,excess),match[2]=unquoted.slice(0,excess)),match.slice(0,3))}},filter:{TAG:function(nodeNameSelector){var nodeName=nodeNameSelector.replace(runescape,funescape).toLowerCase();return"*"===nodeNameSelector?function(){return!0}:function(elem){return elem.nodeName&&elem.nodeName.toLowerCase()===nodeName}},CLASS:function(className){var pattern=classCache[className+" "];return pattern||(pattern=new RegExp("(^|"+whitespace+")"+className+"("+whitespace+"|$)"))&&classCache(className,function(elem){return pattern.test("string"==typeof elem.className&&elem.className||void 0!==elem.getAttribute&&elem.getAttribute("class")||"")})},ATTR:function(name,operator,check){return function(elem){var result=Sizzle.attr(elem,name);return null==result?"!="===operator:!operator||(result+="","="===operator?result===check:"!="===operator?result!==check:"^="===operator?check&&0===result.indexOf(check):"*="===operator?check&&result.indexOf(check)>-1:"$="===operator?check&&result.slice(-check.length)===check:"~="===operator?(" "+result.replace(rwhitespace," ")+" ").indexOf(check)>-1:"|="===operator&&(result===check||result.slice(0,check.length+1)===check+"-"))}},CHILD:function(type,what,argument,first,last){var simple="nth"!==type.slice(0,3),forward="last"!==type.slice(-4),ofType="of-type"===what;return 1===first&&0===last?function(elem){return!!elem.parentNode}:function(elem,context,xml){var cache,uniqueCache,outerCache,node,nodeIndex,start,dir=simple!==forward?"nextSibling":"previousSibling",parent=elem.parentNode,name=ofType&&elem.nodeName.toLowerCase(),useCache=!xml&&!ofType,diff=!1;if(parent){if(simple){for(;dir;){for(node=elem;node=node[dir];)if(ofType?node.nodeName.toLowerCase()===name:1===node.nodeType)return!1;start=dir="only"===type&&!start&&"nextSibling"}return!0}if(start=[forward?parent.firstChild:parent.lastChild],forward&&useCache){for(diff=(nodeIndex=(cache=(uniqueCache=(outerCache=(node=parent)[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]||[])[0]===dirruns&&cache[1])&&cache[2],node=nodeIndex&&parent.childNodes[nodeIndex];node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop();)if(1===node.nodeType&&++diff&&node===elem){uniqueCache[type]=[dirruns,nodeIndex,diff];break}}else if(useCache&&(diff=nodeIndex=(cache=(uniqueCache=(outerCache=(node=elem)[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]||[])[0]===dirruns&&cache[1]),!1===diff)for(;(node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop())&&((ofType?node.nodeName.toLowerCase()!==name:1!==node.nodeType)||!++diff||(useCache&&((uniqueCache=(outerCache=node[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]=[dirruns,diff]),node!==elem)););return(diff-=last)===first||diff%first==0&&diff/first>=0}}},PSEUDO:function(pseudo,argument){var args,fn=Expr.pseudos[pseudo]||Expr.setFilters[pseudo.toLowerCase()]||Sizzle.error("unsupported pseudo: "+pseudo);return fn[expando]?fn(argument):fn.length>1?(args=[pseudo,pseudo,"",argument],Expr.setFilters.hasOwnProperty(pseudo.toLowerCase())?markFunction(function(seed,matches){for(var idx,matched=fn(seed,argument),i=matched.length;i--;)seed[idx=indexOf(seed,matched[i])]=!(matches[idx]=matched[i])}):function(elem){return fn(elem,0,args)}):fn}},pseudos:{not:markFunction(function(selector){var input=[],results=[],matcher=compile(selector.replace(rtrim,"$1"));return matcher[expando]?markFunction(function(seed,matches,context,xml){for(var elem,unmatched=matcher(seed,null,xml,[]),i=seed.length;i--;)(elem=unmatched[i])&&(seed[i]=!(matches[i]=elem))}):function(elem,context,xml){return input[0]=elem,matcher(input,null,xml,results),input[0]=null,!results.pop()}}),has:markFunction(function(selector){return function(elem){return Sizzle(selector,elem).length>0}}),contains:markFunction(function(text){return text=text.replace(runescape,funescape),function(elem){return(elem.textContent||elem.innerText||getText(elem)).indexOf(text)>-1}}),lang:markFunction(function(lang){return ridentifier.test(lang||"")||Sizzle.error("unsupported lang: "+lang),lang=lang.replace(runescape,funescape).toLowerCase(),function(elem){var elemLang;do{if(elemLang=documentIsHTML?elem.lang:elem.getAttribute("xml:lang")||elem.getAttribute("lang"))return(elemLang=elemLang.toLowerCase())===lang||0===elemLang.indexOf(lang+"-")}while((elem=elem.parentNode)&&1===elem.nodeType);return!1}}),target:function(elem){var hash=window.location&&window.location.hash;return hash&&hash.slice(1)===elem.id},root:function(elem){return elem===docElem},focus:function(elem){return elem===document.activeElement&&(!document.hasFocus||document.hasFocus())&&!!(elem.type||elem.href||~elem.tabIndex)},enabled:createDisabledPseudo(!1),disabled:createDisabledPseudo(!0),checked:function(elem){var nodeName=elem.nodeName.toLowerCase();return"input"===nodeName&&!!elem.checked||"option"===nodeName&&!!elem.selected},selected:function(elem){return elem.parentNode&&elem.parentNode.selectedIndex,!0===elem.selected},empty:function(elem){for(elem=elem.firstChild;elem;elem=elem.nextSibling)if(elem.nodeType<6)return!1;return!0},parent:function(elem){return!Expr.pseudos.empty(elem)},header:function(elem){return rheader.test(elem.nodeName)},input:function(elem){return rinputs.test(elem.nodeName)},button:function(elem){var name=elem.nodeName.toLowerCase();return"input"===name&&"button"===elem.type||"button"===name},text:function(elem){var attr;return"input"===elem.nodeName.toLowerCase()&&"text"===elem.type&&(null==(attr=elem.getAttribute("type"))||"text"===attr.toLowerCase())},first:createPositionalPseudo(function(){return[0]}),last:createPositionalPseudo(function(matchIndexes,length){return[length-1]}),eq:createPositionalPseudo(function(matchIndexes,length,argument){return[argument<0?argument+length:argument]}),even:createPositionalPseudo(function(matchIndexes,length){for(var i=0;i<length;i+=2)matchIndexes.push(i);return matchIndexes}),odd:createPositionalPseudo(function(matchIndexes,length){for(var i=1;i<length;i+=2)matchIndexes.push(i);return matchIndexes}),lt:createPositionalPseudo(function(matchIndexes,length,argument){for(var i=argument<0?argument+length:argument;--i>=0;)matchIndexes.push(i);return matchIndexes}),gt:createPositionalPseudo(function(matchIndexes,length,argument){for(var i=argument<0?argument+length:argument;++i<length;)matchIndexes.push(i);return matchIndexes})}}).pseudos.nth=Expr.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})Expr.pseudos[i]=createInputPseudo(i);for(i in{submit:!0,reset:!0})Expr.pseudos[i]=createButtonPseudo(i);function setFilters(){}function toSelector(tokens){for(var i=0,len=tokens.length,selector="";i<len;i++)selector+=tokens[i].value;return selector}function addCombinator(matcher,combinator,base){var dir=combinator.dir,skip=combinator.next,key=skip||dir,checkNonElements=base&&"parentNode"===key,doneName=done++;return combinator.first?function(elem,context,xml){for(;elem=elem[dir];)if(1===elem.nodeType||checkNonElements)return matcher(elem,context,xml);return!1}:function(elem,context,xml){var oldCache,uniqueCache,outerCache,newCache=[dirruns,doneName];if(xml){for(;elem=elem[dir];)if((1===elem.nodeType||checkNonElements)&&matcher(elem,context,xml))return!0}else for(;elem=elem[dir];)if(1===elem.nodeType||checkNonElements)if(uniqueCache=(outerCache=elem[expando]||(elem[expando]={}))[elem.uniqueID]||(outerCache[elem.uniqueID]={}),skip&&skip===elem.nodeName.toLowerCase())elem=elem[dir]||elem;else{if((oldCache=uniqueCache[key])&&oldCache[0]===dirruns&&oldCache[1]===doneName)return newCache[2]=oldCache[2];if(uniqueCache[key]=newCache,newCache[2]=matcher(elem,context,xml))return!0}return!1}}function elementMatcher(matchers){return matchers.length>1?function(elem,context,xml){for(var i=matchers.length;i--;)if(!matchers[i](elem,context,xml))return!1;return!0}:matchers[0]}function condense(unmatched,map,filter,context,xml){for(var elem,newUnmatched=[],i=0,len=unmatched.length,mapped=null!=map;i<len;i++)(elem=unmatched[i])&&(filter&&!filter(elem,context,xml)||(newUnmatched.push(elem),mapped&&map.push(i)));return newUnmatched}function setMatcher(preFilter,selector,matcher,postFilter,postFinder,postSelector){return postFilter&&!postFilter[expando]&&(postFilter=setMatcher(postFilter)),postFinder&&!postFinder[expando]&&(postFinder=setMatcher(postFinder,postSelector)),markFunction(function(seed,results,context,xml){var temp,i,elem,preMap=[],postMap=[],preexisting=results.length,elems=seed||function(selector,contexts,results){for(var i=0,len=contexts.length;i<len;i++)Sizzle(selector,contexts[i],results);return results}(selector||"*",context.nodeType?[context]:context,[]),matcherIn=!preFilter||!seed&&selector?elems:condense(elems,preMap,preFilter,context,xml),matcherOut=matcher?postFinder||(seed?preFilter:preexisting||postFilter)?[]:results:matcherIn;if(matcher&&matcher(matcherIn,matcherOut,context,xml),postFilter)for(temp=condense(matcherOut,postMap),postFilter(temp,[],context,xml),i=temp.length;i--;)(elem=temp[i])&&(matcherOut[postMap[i]]=!(matcherIn[postMap[i]]=elem));if(seed){if(postFinder||preFilter){if(postFinder){for(temp=[],i=matcherOut.length;i--;)(elem=matcherOut[i])&&temp.push(matcherIn[i]=elem);postFinder(null,matcherOut=[],temp,xml)}for(i=matcherOut.length;i--;)(elem=matcherOut[i])&&(temp=postFinder?indexOf(seed,elem):preMap[i])>-1&&(seed[temp]=!(results[temp]=elem))}}else matcherOut=condense(matcherOut===results?matcherOut.splice(preexisting,matcherOut.length):matcherOut),postFinder?postFinder(null,results,matcherOut,xml):push.apply(results,matcherOut)})}function matcherFromTokens(tokens){for(var checkContext,matcher,j,len=tokens.length,leadingRelative=Expr.relative[tokens[0].type],implicitRelative=leadingRelative||Expr.relative[" "],i=leadingRelative?1:0,matchContext=addCombinator(function(elem){return elem===checkContext},implicitRelative,!0),matchAnyContext=addCombinator(function(elem){return indexOf(checkContext,elem)>-1},implicitRelative,!0),matchers=[function(elem,context,xml){var ret=!leadingRelative&&(xml||context!==outermostContext)||((checkContext=context).nodeType?matchContext(elem,context,xml):matchAnyContext(elem,context,xml));return checkContext=null,ret}];i<len;i++)if(matcher=Expr.relative[tokens[i].type])matchers=[addCombinator(elementMatcher(matchers),matcher)];else{if((matcher=Expr.filter[tokens[i].type].apply(null,tokens[i].matches))[expando]){for(j=++i;j<len&&!Expr.relative[tokens[j].type];j++);return setMatcher(i>1&&elementMatcher(matchers),i>1&&toSelector(tokens.slice(0,i-1).concat({value:" "===tokens[i-2].type?"*":""})).replace(rtrim,"$1"),matcher,i<j&&matcherFromTokens(tokens.slice(i,j)),j<len&&matcherFromTokens(tokens=tokens.slice(j)),j<len&&toSelector(tokens))}matchers.push(matcher)}return elementMatcher(matchers)}return setFilters.prototype=Expr.filters=Expr.pseudos,Expr.setFilters=new setFilters,tokenize=Sizzle.tokenize=function(selector,parseOnly){var matched,match,tokens,type,soFar,groups,preFilters,cached=tokenCache[selector+" "];if(cached)return parseOnly?0:cached.slice(0);for(soFar=selector,groups=[],preFilters=Expr.preFilter;soFar;){for(type in matched&&!(match=rcomma.exec(soFar))||(match&&(soFar=soFar.slice(match[0].length)||soFar),groups.push(tokens=[])),matched=!1,(match=rcombinators.exec(soFar))&&(matched=match.shift(),tokens.push({value:matched,type:match[0].replace(rtrim," ")}),soFar=soFar.slice(matched.length)),Expr.filter)!(match=matchExpr[type].exec(soFar))||preFilters[type]&&!(match=preFilters[type](match))||(matched=match.shift(),tokens.push({value:matched,type:type,matches:match}),soFar=soFar.slice(matched.length));if(!matched)break}return parseOnly?soFar.length:soFar?Sizzle.error(selector):tokenCache(selector,groups).slice(0)},compile=Sizzle.compile=function(selector,match){var i,setMatchers=[],elementMatchers=[],cached=compilerCache[selector+" "];if(!cached){for(match||(match=tokenize(selector)),i=match.length;i--;)(cached=matcherFromTokens(match[i]))[expando]?setMatchers.push(cached):elementMatchers.push(cached);(cached=compilerCache(selector,function(elementMatchers,setMatchers){var bySet=setMatchers.length>0,byElement=elementMatchers.length>0,superMatcher=function(seed,context,xml,results,outermost){var elem,j,matcher,matchedCount=0,i="0",unmatched=seed&&[],setMatched=[],contextBackup=outermostContext,elems=seed||byElement&&Expr.find.TAG("*",outermost),dirrunsUnique=dirruns+=null==contextBackup?1:Math.random()||.1,len=elems.length;for(outermost&&(outermostContext=context===document||context||outermost);i!==len&&null!=(elem=elems[i]);i++){if(byElement&&elem){for(j=0,context||elem.ownerDocument===document||(setDocument(elem),xml=!documentIsHTML);matcher=elementMatchers[j++];)if(matcher(elem,context||document,xml)){results.push(elem);break}outermost&&(dirruns=dirrunsUnique)}bySet&&((elem=!matcher&&elem)&&matchedCount--,seed&&unmatched.push(elem))}if(matchedCount+=i,bySet&&i!==matchedCount){for(j=0;matcher=setMatchers[j++];)matcher(unmatched,setMatched,context,xml);if(seed){if(matchedCount>0)for(;i--;)unmatched[i]||setMatched[i]||(setMatched[i]=pop.call(results));setMatched=condense(setMatched)}push.apply(results,setMatched),outermost&&!seed&&setMatched.length>0&&matchedCount+setMatchers.length>1&&Sizzle.uniqueSort(results)}return outermost&&(dirruns=dirrunsUnique,outermostContext=contextBackup),unmatched};return bySet?markFunction(superMatcher):superMatcher}(elementMatchers,setMatchers))).selector=selector}return cached},select=Sizzle.select=function(selector,context,results,seed){var i,tokens,token,type,find,compiled="function"==typeof selector&&selector,match=!seed&&tokenize(selector=compiled.selector||selector);if(results=results||[],1===match.length){if((tokens=match[0]=match[0].slice(0)).length>2&&"ID"===(token=tokens[0]).type&&9===context.nodeType&&documentIsHTML&&Expr.relative[tokens[1].type]){if(!(context=(Expr.find.ID(token.matches[0].replace(runescape,funescape),context)||[])[0]))return results;compiled&&(context=context.parentNode),selector=selector.slice(tokens.shift().value.length)}for(i=matchExpr.needsContext.test(selector)?0:tokens.length;i--&&(token=tokens[i],!Expr.relative[type=token.type]);)if((find=Expr.find[type])&&(seed=find(token.matches[0].replace(runescape,funescape),rsibling.test(tokens[0].type)&&testContext(context.parentNode)||context))){if(tokens.splice(i,1),!(selector=seed.length&&toSelector(tokens)))return push.apply(results,seed),results;break}}return(compiled||compile(selector,match))(seed,context,!documentIsHTML,results,!context||rsibling.test(selector)&&testContext(context.parentNode)||context),results},support.sortStable=expando.split("").sort(sortOrder).join("")===expando,support.detectDuplicates=!!hasDuplicate,setDocument(),support.sortDetached=assert(function(el){return 1&el.compareDocumentPosition(document.createElement("fieldset"))}),assert(function(el){return el.innerHTML="<a href='#'></a>","#"===el.firstChild.getAttribute("href")})||addHandle("type|href|height|width",function(elem,name,isXML){if(!isXML)return elem.getAttribute(name,"type"===name.toLowerCase()?1:2)}),support.attributes&&assert(function(el){return el.innerHTML="<input/>",el.firstChild.setAttribute("value",""),""===el.firstChild.getAttribute("value")})||addHandle("value",function(elem,name,isXML){if(!isXML&&"input"===elem.nodeName.toLowerCase())return elem.defaultValue}),assert(function(el){return null==el.getAttribute("disabled")})||addHandle(booleans,function(elem,name,isXML){var val;if(!isXML)return!0===elem[name]?name.toLowerCase():(val=elem.getAttributeNode(name))&&val.specified?val.value:null}),Sizzle}(window);jQuery.find=Sizzle,jQuery.expr=Sizzle.selectors,jQuery.expr[":"]=jQuery.expr.pseudos,jQuery.uniqueSort=jQuery.unique=Sizzle.uniqueSort,jQuery.text=Sizzle.getText,jQuery.isXMLDoc=Sizzle.isXML,jQuery.contains=Sizzle.contains,jQuery.escapeSelector=Sizzle.escape;var dir=function(elem,dir,until){for(var matched=[],truncate=void 0!==until;(elem=elem[dir])&&9!==elem.nodeType;)if(1===elem.nodeType){if(truncate&&jQuery(elem).is(until))break;matched.push(elem)}return matched},siblings=function(n,elem){for(var matched=[];n;n=n.nextSibling)1===n.nodeType&&n!==elem&&matched.push(n);return matched},rneedsContext=jQuery.expr.match.needsContext;function nodeName(elem,name){return elem.nodeName&&elem.nodeName.toLowerCase()===name.toLowerCase()}var rsingleTag=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function winnow(elements,qualifier,not){return isFunction(qualifier)?jQuery.grep(elements,function(elem,i){return!!qualifier.call(elem,i,elem)!==not}):qualifier.nodeType?jQuery.grep(elements,function(elem){return elem===qualifier!==not}):"string"!=typeof qualifier?jQuery.grep(elements,function(elem){return indexOf.call(qualifier,elem)>-1!==not}):jQuery.filter(qualifier,elements,not)}jQuery.filter=function(expr,elems,not){var elem=elems[0];return not&&(expr=":not("+expr+")"),1===elems.length&&1===elem.nodeType?jQuery.find.matchesSelector(elem,expr)?[elem]:[]:jQuery.find.matches(expr,jQuery.grep(elems,function(elem){return 1===elem.nodeType}))},jQuery.fn.extend({find:function(selector){var i,ret,len=this.length,self=this;if("string"!=typeof selector)return this.pushStack(jQuery(selector).filter(function(){for(i=0;i<len;i++)if(jQuery.contains(self[i],this))return!0}));for(ret=this.pushStack([]),i=0;i<len;i++)jQuery.find(selector,self[i],ret);return len>1?jQuery.uniqueSort(ret):ret},filter:function(selector){return this.pushStack(winnow(this,selector||[],!1))},not:function(selector){return this.pushStack(winnow(this,selector||[],!0))},is:function(selector){return!!winnow(this,"string"==typeof selector&&rneedsContext.test(selector)?jQuery(selector):selector||[],!1).length}});var rootjQuery,rquickExpr=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(jQuery.fn.init=function(selector,context,root){var match,elem;if(!selector)return this;if(root=root||rootjQuery,"string"==typeof selector){if(!(match="<"===selector[0]&&">"===selector[selector.length-1]&&selector.length>=3?[null,selector,null]:rquickExpr.exec(selector))||!match[1]&&context)return!context||context.jquery?(context||root).find(selector):this.constructor(context).find(selector);if(match[1]){if(context=context instanceof jQuery?context[0]:context,jQuery.merge(this,jQuery.parseHTML(match[1],context&&context.nodeType?context.ownerDocument||context:document,!0)),rsingleTag.test(match[1])&&jQuery.isPlainObject(context))for(match in context)isFunction(this[match])?this[match](context[match]):this.attr(match,context[match]);return this}return(elem=document.getElementById(match[2]))&&(this[0]=elem,this.length=1),this}return selector.nodeType?(this[0]=selector,this.length=1,this):isFunction(selector)?void 0!==root.ready?root.ready(selector):selector(jQuery):jQuery.makeArray(selector,this)}).prototype=jQuery.fn,rootjQuery=jQuery(document);var rparentsprev=/^(?:parents|prev(?:Until|All))/,guaranteedUnique={children:!0,contents:!0,next:!0,prev:!0};function sibling(cur,dir){for(;(cur=cur[dir])&&1!==cur.nodeType;);return cur}jQuery.fn.extend({has:function(target){var targets=jQuery(target,this),l=targets.length;return this.filter(function(){for(var i=0;i<l;i++)if(jQuery.contains(this,targets[i]))return!0})},closest:function(selectors,context){var cur,i=0,l=this.length,matched=[],targets="string"!=typeof selectors&&jQuery(selectors);if(!rneedsContext.test(selectors))for(;i<l;i++)for(cur=this[i];cur&&cur!==context;cur=cur.parentNode)if(cur.nodeType<11&&(targets?targets.index(cur)>-1:1===cur.nodeType&&jQuery.find.matchesSelector(cur,selectors))){matched.push(cur);break}return this.pushStack(matched.length>1?jQuery.uniqueSort(matched):matched)},index:function(elem){return elem?"string"==typeof elem?indexOf.call(jQuery(elem),this[0]):indexOf.call(this,elem.jquery?elem[0]:elem):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(selector,context){return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(),jQuery(selector,context))))},addBack:function(selector){return this.add(null==selector?this.prevObject:this.prevObject.filter(selector))}}),jQuery.each({parent:function(elem){var parent=elem.parentNode;return parent&&11!==parent.nodeType?parent:null},parents:function(elem){return dir(elem,"parentNode")},parentsUntil:function(elem,i,until){return dir(elem,"parentNode",until)},next:function(elem){return sibling(elem,"nextSibling")},prev:function(elem){return sibling(elem,"previousSibling")},nextAll:function(elem){return dir(elem,"nextSibling")},prevAll:function(elem){return dir(elem,"previousSibling")},nextUntil:function(elem,i,until){return dir(elem,"nextSibling",until)},prevUntil:function(elem,i,until){return dir(elem,"previousSibling",until)},siblings:function(elem){return siblings((elem.parentNode||{}).firstChild,elem)},children:function(elem){return siblings(elem.firstChild)},contents:function(elem){return nodeName(elem,"iframe")?elem.contentDocument:(nodeName(elem,"template")&&(elem=elem.content||elem),jQuery.merge([],elem.childNodes))}},function(name,fn){jQuery.fn[name]=function(until,selector){var matched=jQuery.map(this,fn,until);return"Until"!==name.slice(-5)&&(selector=until),selector&&"string"==typeof selector&&(matched=jQuery.filter(selector,matched)),this.length>1&&(guaranteedUnique[name]||jQuery.uniqueSort(matched),rparentsprev.test(name)&&matched.reverse()),this.pushStack(matched)}});var rnothtmlwhite=/[^\x20\t\r\n\f]+/g;function Identity(v){return v}function Thrower(ex){throw ex}function adoptValue(value,resolve,reject,noValue){var method;try{value&&isFunction(method=value.promise)?method.call(value).done(resolve).fail(reject):value&&isFunction(method=value.then)?method.call(value,resolve,reject):resolve.apply(void 0,[value].slice(noValue))}catch(value){reject.apply(void 0,[value])}}jQuery.Callbacks=function(options){options="string"==typeof options?function(options){var object={};return jQuery.each(options.match(rnothtmlwhite)||[],function(_,flag){object[flag]=!0}),object}(options):jQuery.extend({},options);var firing,memory,fired,locked,list=[],queue=[],firingIndex=-1,fire=function(){for(locked=locked||options.once,fired=firing=!0;queue.length;firingIndex=-1)for(memory=queue.shift();++firingIndex<list.length;)!1===list[firingIndex].apply(memory[0],memory[1])&&options.stopOnFalse&&(firingIndex=list.length,memory=!1);options.memory||(memory=!1),firing=!1,locked&&(list=memory?[]:"")},self={add:function(){return list&&(memory&&!firing&&(firingIndex=list.length-1,queue.push(memory)),function add(args){jQuery.each(args,function(_,arg){isFunction(arg)?options.unique&&self.has(arg)||list.push(arg):arg&&arg.length&&"string"!==toType(arg)&&add(arg)})}(arguments),memory&&!firing&&fire()),this},remove:function(){return jQuery.each(arguments,function(_,arg){for(var index;(index=jQuery.inArray(arg,list,index))>-1;)list.splice(index,1),index<=firingIndex&&firingIndex--}),this},has:function(fn){return fn?jQuery.inArray(fn,list)>-1:list.length>0},empty:function(){return list&&(list=[]),this},disable:function(){return locked=queue=[],list=memory="",this},disabled:function(){return!list},lock:function(){return locked=queue=[],memory||firing||(list=memory=""),this},locked:function(){return!!locked},fireWith:function(context,args){return locked||(args=[context,(args=args||[]).slice?args.slice():args],queue.push(args),firing||fire()),this},fire:function(){return self.fireWith(this,arguments),this},fired:function(){return!!fired}};return self},jQuery.extend({Deferred:function(func){var tuples=[["notify","progress",jQuery.Callbacks("memory"),jQuery.Callbacks("memory"),2],["resolve","done",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),0,"resolved"],["reject","fail",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),1,"rejected"]],state="pending",promise={state:function(){return state},always:function(){return deferred.done(arguments).fail(arguments),this},catch:function(fn){return promise.then(null,fn)},pipe:function(){var fns=arguments;return jQuery.Deferred(function(newDefer){jQuery.each(tuples,function(i,tuple){var fn=isFunction(fns[tuple[4]])&&fns[tuple[4]];deferred[tuple[1]](function(){var returned=fn&&fn.apply(this,arguments);returned&&isFunction(returned.promise)?returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject):newDefer[tuple[0]+"With"](this,fn?[returned]:arguments)})}),fns=null}).promise()},then:function(onFulfilled,onRejected,onProgress){var maxDepth=0;function resolve(depth,deferred,handler,special){return function(){var that=this,args=arguments,mightThrow=function(){var returned,then;if(!(depth<maxDepth)){if((returned=handler.apply(that,args))===deferred.promise())throw new TypeError("Thenable self-resolution");then=returned&&("object"==typeof returned||"function"==typeof returned)&&returned.then,isFunction(then)?special?then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special)):(maxDepth++,then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special),resolve(maxDepth,deferred,Identity,deferred.notifyWith))):(handler!==Identity&&(that=void 0,args=[returned]),(special||deferred.resolveWith)(that,args))}},process=special?mightThrow:function(){try{mightThrow()}catch(e){jQuery.Deferred.exceptionHook&&jQuery.Deferred.exceptionHook(e,process.stackTrace),depth+1>=maxDepth&&(handler!==Thrower&&(that=void 0,args=[e]),deferred.rejectWith(that,args))}};depth?process():(jQuery.Deferred.getStackHook&&(process.stackTrace=jQuery.Deferred.getStackHook()),window.setTimeout(process))}}return jQuery.Deferred(function(newDefer){tuples[0][3].add(resolve(0,newDefer,isFunction(onProgress)?onProgress:Identity,newDefer.notifyWith)),tuples[1][3].add(resolve(0,newDefer,isFunction(onFulfilled)?onFulfilled:Identity)),tuples[2][3].add(resolve(0,newDefer,isFunction(onRejected)?onRejected:Thrower))}).promise()},promise:function(obj){return null!=obj?jQuery.extend(obj,promise):promise}},deferred={};return jQuery.each(tuples,function(i,tuple){var list=tuple[2],stateString=tuple[5];promise[tuple[1]]=list.add,stateString&&list.add(function(){state=stateString},tuples[3-i][2].disable,tuples[3-i][3].disable,tuples[0][2].lock,tuples[0][3].lock),list.add(tuple[3].fire),deferred[tuple[0]]=function(){return deferred[tuple[0]+"With"](this===deferred?void 0:this,arguments),this},deferred[tuple[0]+"With"]=list.fireWith}),promise.promise(deferred),func&&func.call(deferred,deferred),deferred},when:function(singleValue){var remaining=arguments.length,i=remaining,resolveContexts=Array(i),resolveValues=slice.call(arguments),master=jQuery.Deferred(),updateFunc=function(i){return function(value){resolveContexts[i]=this,resolveValues[i]=arguments.length>1?slice.call(arguments):value,--remaining||master.resolveWith(resolveContexts,resolveValues)}};if(remaining<=1&&(adoptValue(singleValue,master.done(updateFunc(i)).resolve,master.reject,!remaining),"pending"===master.state()||isFunction(resolveValues[i]&&resolveValues[i].then)))return master.then();for(;i--;)adoptValue(resolveValues[i],updateFunc(i),master.reject);return master.promise()}});var rerrorNames=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;jQuery.Deferred.exceptionHook=function(error,stack){window.console&&window.console.warn&&error&&rerrorNames.test(error.name)&&window.console.warn("jQuery.Deferred exception: "+error.message,error.stack,stack)},jQuery.readyException=function(error){window.setTimeout(function(){throw error})};var readyList=jQuery.Deferred();function completed(){document.removeEventListener("DOMContentLoaded",completed),window.removeEventListener("load",completed),jQuery.ready()}jQuery.fn.ready=function(fn){return readyList.then(fn).catch(function(error){jQuery.readyException(error)}),this},jQuery.extend({isReady:!1,readyWait:1,ready:function(wait){(!0===wait?--jQuery.readyWait:jQuery.isReady)||(jQuery.isReady=!0,!0!==wait&&--jQuery.readyWait>0||readyList.resolveWith(document,[jQuery]))}}),jQuery.ready.then=readyList.then,"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?window.setTimeout(jQuery.ready):(document.addEventListener("DOMContentLoaded",completed),window.addEventListener("load",completed));var access=function(elems,fn,key,value,chainable,emptyGet,raw){var i=0,len=elems.length,bulk=null==key;if("object"===toType(key))for(i in chainable=!0,key)access(elems,fn,i,key[i],!0,emptyGet,raw);else if(void 0!==value&&(chainable=!0,isFunction(value)||(raw=!0),bulk&&(raw?(fn.call(elems,value),fn=null):(bulk=fn,fn=function(elem,key,value){return bulk.call(jQuery(elem),value)})),fn))for(;i<len;i++)fn(elems[i],key,raw?value:value.call(elems[i],i,fn(elems[i],key)));return chainable?elems:bulk?fn.call(elems):len?fn(elems[0],key):emptyGet},rmsPrefix=/^-ms-/,rdashAlpha=/-([a-z])/g;function fcamelCase(all,letter){return letter.toUpperCase()}function camelCase(string){return string.replace(rmsPrefix,"ms-").replace(rdashAlpha,fcamelCase)}var acceptData=function(owner){return 1===owner.nodeType||9===owner.nodeType||!+owner.nodeType};function Data(){this.expando=jQuery.expando+Data.uid++}Data.uid=1,Data.prototype={cache:function(owner){var value=owner[this.expando];return value||(value={},acceptData(owner)&&(owner.nodeType?owner[this.expando]=value:Object.defineProperty(owner,this.expando,{value:value,configurable:!0}))),value},set:function(owner,data,value){var prop,cache=this.cache(owner);if("string"==typeof data)cache[camelCase(data)]=value;else for(prop in data)cache[camelCase(prop)]=data[prop];return cache},get:function(owner,key){return void 0===key?this.cache(owner):owner[this.expando]&&owner[this.expando][camelCase(key)]},access:function(owner,key,value){return void 0===key||key&&"string"==typeof key&&void 0===value?this.get(owner,key):(this.set(owner,key,value),void 0!==value?value:key)},remove:function(owner,key){var i,cache=owner[this.expando];if(void 0!==cache){if(void 0!==key){i=(key=Array.isArray(key)?key.map(camelCase):(key=camelCase(key))in cache?[key]:key.match(rnothtmlwhite)||[]).length;for(;i--;)delete cache[key[i]]}(void 0===key||jQuery.isEmptyObject(cache))&&(owner.nodeType?owner[this.expando]=void 0:delete owner[this.expando])}},hasData:function(owner){var cache=owner[this.expando];return void 0!==cache&&!jQuery.isEmptyObject(cache)}};var dataPriv=new Data,dataUser=new Data,rbrace=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,rmultiDash=/[A-Z]/g;function dataAttr(elem,key,data){var name;if(void 0===data&&1===elem.nodeType)if(name="data-"+key.replace(rmultiDash,"-$&").toLowerCase(),"string"==typeof(data=elem.getAttribute(name))){try{data=function(data){return"true"===data||"false"!==data&&("null"===data?null:data===+data+""?+data:rbrace.test(data)?JSON.parse(data):data)}(data)}catch(e){}dataUser.set(elem,key,data)}else data=void 0;return data}jQuery.extend({hasData:function(elem){return dataUser.hasData(elem)||dataPriv.hasData(elem)},data:function(elem,name,data){return dataUser.access(elem,name,data)},removeData:function(elem,name){dataUser.remove(elem,name)},_data:function(elem,name,data){return dataPriv.access(elem,name,data)},_removeData:function(elem,name){dataPriv.remove(elem,name)}}),jQuery.fn.extend({data:function(key,value){var i,name,data,elem=this[0],attrs=elem&&elem.attributes;if(void 0===key){if(this.length&&(data=dataUser.get(elem),1===elem.nodeType&&!dataPriv.get(elem,"hasDataAttrs"))){for(i=attrs.length;i--;)attrs[i]&&0===(name=attrs[i].name).indexOf("data-")&&(name=camelCase(name.slice(5)),dataAttr(elem,name,data[name]));dataPriv.set(elem,"hasDataAttrs",!0)}return data}return"object"==typeof key?this.each(function(){dataUser.set(this,key)}):access(this,function(value){var data;if(elem&&void 0===value)return void 0!==(data=dataUser.get(elem,key))?data:void 0!==(data=dataAttr(elem,key))?data:void 0;this.each(function(){dataUser.set(this,key,value)})},null,value,arguments.length>1,null,!0)},removeData:function(key){return this.each(function(){dataUser.remove(this,key)})}}),jQuery.extend({queue:function(elem,type,data){var queue;if(elem)return type=(type||"fx")+"queue",queue=dataPriv.get(elem,type),data&&(!queue||Array.isArray(data)?queue=dataPriv.access(elem,type,jQuery.makeArray(data)):queue.push(data)),queue||[]},dequeue:function(elem,type){type=type||"fx";var queue=jQuery.queue(elem,type),startLength=queue.length,fn=queue.shift(),hooks=jQuery._queueHooks(elem,type);"inprogress"===fn&&(fn=queue.shift(),startLength--),fn&&("fx"===type&&queue.unshift("inprogress"),delete hooks.stop,fn.call(elem,function(){jQuery.dequeue(elem,type)},hooks)),!startLength&&hooks&&hooks.empty.fire()},_queueHooks:function(elem,type){var key=type+"queueHooks";return dataPriv.get(elem,key)||dataPriv.access(elem,key,{empty:jQuery.Callbacks("once memory").add(function(){dataPriv.remove(elem,[type+"queue",key])})})}}),jQuery.fn.extend({queue:function(type,data){var setter=2;return"string"!=typeof type&&(data=type,type="fx",setter--),arguments.length<setter?jQuery.queue(this[0],type):void 0===data?this:this.each(function(){var queue=jQuery.queue(this,type,data);jQuery._queueHooks(this,type),"fx"===type&&"inprogress"!==queue[0]&&jQuery.dequeue(this,type)})},dequeue:function(type){return this.each(function(){jQuery.dequeue(this,type)})},clearQueue:function(type){return this.queue(type||"fx",[])},promise:function(type,obj){var tmp,count=1,defer=jQuery.Deferred(),elements=this,i=this.length,resolve=function(){--count||defer.resolveWith(elements,[elements])};for("string"!=typeof type&&(obj=type,type=void 0),type=type||"fx";i--;)(tmp=dataPriv.get(elements[i],type+"queueHooks"))&&tmp.empty&&(count++,tmp.empty.add(resolve));return resolve(),defer.promise(obj)}});var pnum=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,rcssNum=new RegExp("^(?:([+-])=|)("+pnum+")([a-z%]*)$","i"),cssExpand=["Top","Right","Bottom","Left"],isHiddenWithinTree=function(elem,el){return"none"===(elem=el||elem).style.display||""===elem.style.display&&jQuery.contains(elem.ownerDocument,elem)&&"none"===jQuery.css(elem,"display")},swap=function(elem,options,callback,args){var ret,name,old={};for(name in options)old[name]=elem.style[name],elem.style[name]=options[name];for(name in ret=callback.apply(elem,args||[]),options)elem.style[name]=old[name];return ret};function adjustCSS(elem,prop,valueParts,tween){var adjusted,scale,maxIterations=20,currentValue=tween?function(){return tween.cur()}:function(){return jQuery.css(elem,prop,"")},initial=currentValue(),unit=valueParts&&valueParts[3]||(jQuery.cssNumber[prop]?"":"px"),initialInUnit=(jQuery.cssNumber[prop]||"px"!==unit&&+initial)&&rcssNum.exec(jQuery.css(elem,prop));if(initialInUnit&&initialInUnit[3]!==unit){for(initial/=2,unit=unit||initialInUnit[3],initialInUnit=+initial||1;maxIterations--;)jQuery.style(elem,prop,initialInUnit+unit),(1-scale)*(1-(scale=currentValue()/initial||.5))<=0&&(maxIterations=0),initialInUnit/=scale;initialInUnit*=2,jQuery.style(elem,prop,initialInUnit+unit),valueParts=valueParts||[]}return valueParts&&(initialInUnit=+initialInUnit||+initial||0,adjusted=valueParts[1]?initialInUnit+(valueParts[1]+1)*valueParts[2]:+valueParts[2],tween&&(tween.unit=unit,tween.start=initialInUnit,tween.end=adjusted)),adjusted}var defaultDisplayMap={};function getDefaultDisplay(elem){var temp,doc=elem.ownerDocument,nodeName=elem.nodeName,display=defaultDisplayMap[nodeName];return display||(temp=doc.body.appendChild(doc.createElement(nodeName)),display=jQuery.css(temp,"display"),temp.parentNode.removeChild(temp),"none"===display&&(display="block"),defaultDisplayMap[nodeName]=display,display)}function showHide(elements,show){for(var display,elem,values=[],index=0,length=elements.length;index<length;index++)(elem=elements[index]).style&&(display=elem.style.display,show?("none"===display&&(values[index]=dataPriv.get(elem,"display")||null,values[index]||(elem.style.display="")),""===elem.style.display&&isHiddenWithinTree(elem)&&(values[index]=getDefaultDisplay(elem))):"none"!==display&&(values[index]="none",dataPriv.set(elem,"display",display)));for(index=0;index<length;index++)null!=values[index]&&(elements[index].style.display=values[index]);return elements}jQuery.fn.extend({show:function(){return showHide(this,!0)},hide:function(){return showHide(this)},toggle:function(state){return"boolean"==typeof state?state?this.show():this.hide():this.each(function(){isHiddenWithinTree(this)?jQuery(this).show():jQuery(this).hide()})}});var rcheckableType=/^(?:checkbox|radio)$/i,rtagName=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,rscriptType=/^$|^module$|\/(?:java|ecma)script/i,wrapMap={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function getAll(context,tag){var ret;return ret=void 0!==context.getElementsByTagName?context.getElementsByTagName(tag||"*"):void 0!==context.querySelectorAll?context.querySelectorAll(tag||"*"):[],void 0===tag||tag&&nodeName(context,tag)?jQuery.merge([context],ret):ret}function setGlobalEval(elems,refElements){for(var i=0,l=elems.length;i<l;i++)dataPriv.set(elems[i],"globalEval",!refElements||dataPriv.get(refElements[i],"globalEval"))}wrapMap.optgroup=wrapMap.option,wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead,wrapMap.th=wrapMap.td;var div,input,rhtml=/<|&#?\w+;/;function buildFragment(elems,context,scripts,selection,ignored){for(var elem,tmp,tag,wrap,contains,j,fragment=context.createDocumentFragment(),nodes=[],i=0,l=elems.length;i<l;i++)if((elem=elems[i])||0===elem)if("object"===toType(elem))jQuery.merge(nodes,elem.nodeType?[elem]:elem);else if(rhtml.test(elem)){for(tmp=tmp||fragment.appendChild(context.createElement("div")),tag=(rtagName.exec(elem)||["",""])[1].toLowerCase(),wrap=wrapMap[tag]||wrapMap._default,tmp.innerHTML=wrap[1]+jQuery.htmlPrefilter(elem)+wrap[2],j=wrap[0];j--;)tmp=tmp.lastChild;jQuery.merge(nodes,tmp.childNodes),(tmp=fragment.firstChild).textContent=""}else nodes.push(context.createTextNode(elem));for(fragment.textContent="",i=0;elem=nodes[i++];)if(selection&&jQuery.inArray(elem,selection)>-1)ignored&&ignored.push(elem);else if(contains=jQuery.contains(elem.ownerDocument,elem),tmp=getAll(fragment.appendChild(elem),"script"),contains&&setGlobalEval(tmp),scripts)for(j=0;elem=tmp[j++];)rscriptType.test(elem.type||"")&&scripts.push(elem);return fragment}div=document.createDocumentFragment().appendChild(document.createElement("div")),(input=document.createElement("input")).setAttribute("type","radio"),input.setAttribute("checked","checked"),input.setAttribute("name","t"),div.appendChild(input),support.checkClone=div.cloneNode(!0).cloneNode(!0).lastChild.checked,div.innerHTML="<textarea>x</textarea>",support.noCloneChecked=!!div.cloneNode(!0).lastChild.defaultValue;var documentElement=document.documentElement,rkeyEvent=/^key/,rmouseEvent=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,rtypenamespace=/^([^.]*)(?:\.(.+)|)/;function returnTrue(){return!0}function returnFalse(){return!1}function safeActiveElement(){try{return document.activeElement}catch(err){}}function on(elem,types,selector,data,fn,one){var origFn,type;if("object"==typeof types){for(type in"string"!=typeof selector&&(data=data||selector,selector=void 0),types)on(elem,type,selector,data,types[type],one);return elem}if(null==data&&null==fn?(fn=selector,data=selector=void 0):null==fn&&("string"==typeof selector?(fn=data,data=void 0):(fn=data,data=selector,selector=void 0)),!1===fn)fn=returnFalse;else if(!fn)return elem;return 1===one&&(origFn=fn,(fn=function(event){return jQuery().off(event),origFn.apply(this,arguments)}).guid=origFn.guid||(origFn.guid=jQuery.guid++)),elem.each(function(){jQuery.event.add(this,types,fn,data,selector)})}jQuery.event={global:{},add:function(elem,types,handler,data,selector){var handleObjIn,eventHandle,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.get(elem);if(elemData)for(handler.handler&&(handler=(handleObjIn=handler).handler,selector=handleObjIn.selector),selector&&jQuery.find.matchesSelector(documentElement,selector),handler.guid||(handler.guid=jQuery.guid++),(events=elemData.events)||(events=elemData.events={}),(eventHandle=elemData.handle)||(eventHandle=elemData.handle=function(e){return void 0!==jQuery&&jQuery.event.triggered!==e.type?jQuery.event.dispatch.apply(elem,arguments):void 0}),t=(types=(types||"").match(rnothtmlwhite)||[""]).length;t--;)type=origType=(tmp=rtypenamespace.exec(types[t])||[])[1],namespaces=(tmp[2]||"").split(".").sort(),type&&(special=jQuery.event.special[type]||{},type=(selector?special.delegateType:special.bindType)||type,special=jQuery.event.special[type]||{},handleObj=jQuery.extend({type:type,origType:origType,data:data,handler:handler,guid:handler.guid,selector:selector,needsContext:selector&&jQuery.expr.match.needsContext.test(selector),namespace:namespaces.join(".")},handleObjIn),(handlers=events[type])||((handlers=events[type]=[]).delegateCount=0,special.setup&&!1!==special.setup.call(elem,data,namespaces,eventHandle)||elem.addEventListener&&elem.addEventListener(type,eventHandle)),special.add&&(special.add.call(elem,handleObj),handleObj.handler.guid||(handleObj.handler.guid=handler.guid)),selector?handlers.splice(handlers.delegateCount++,0,handleObj):handlers.push(handleObj),jQuery.event.global[type]=!0)},remove:function(elem,types,handler,selector,mappedTypes){var j,origCount,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.hasData(elem)&&dataPriv.get(elem);if(elemData&&(events=elemData.events)){for(t=(types=(types||"").match(rnothtmlwhite)||[""]).length;t--;)if(type=origType=(tmp=rtypenamespace.exec(types[t])||[])[1],namespaces=(tmp[2]||"").split(".").sort(),type){for(special=jQuery.event.special[type]||{},handlers=events[type=(selector?special.delegateType:special.bindType)||type]||[],tmp=tmp[2]&&new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"),origCount=j=handlers.length;j--;)handleObj=handlers[j],!mappedTypes&&origType!==handleObj.origType||handler&&handler.guid!==handleObj.guid||tmp&&!tmp.test(handleObj.namespace)||selector&&selector!==handleObj.selector&&("**"!==selector||!handleObj.selector)||(handlers.splice(j,1),handleObj.selector&&handlers.delegateCount--,special.remove&&special.remove.call(elem,handleObj));origCount&&!handlers.length&&(special.teardown&&!1!==special.teardown.call(elem,namespaces,elemData.handle)||jQuery.removeEvent(elem,type,elemData.handle),delete events[type])}else for(type in events)jQuery.event.remove(elem,type+types[t],handler,selector,!0);jQuery.isEmptyObject(events)&&dataPriv.remove(elem,"handle events")}},dispatch:function(nativeEvent){var i,j,ret,matched,handleObj,handlerQueue,event=jQuery.event.fix(nativeEvent),args=new Array(arguments.length),handlers=(dataPriv.get(this,"events")||{})[event.type]||[],special=jQuery.event.special[event.type]||{};for(args[0]=event,i=1;i<arguments.length;i++)args[i]=arguments[i];if(event.delegateTarget=this,!special.preDispatch||!1!==special.preDispatch.call(this,event)){for(handlerQueue=jQuery.event.handlers.call(this,event,handlers),i=0;(matched=handlerQueue[i++])&&!event.isPropagationStopped();)for(event.currentTarget=matched.elem,j=0;(handleObj=matched.handlers[j++])&&!event.isImmediatePropagationStopped();)event.rnamespace&&!event.rnamespace.test(handleObj.namespace)||(event.handleObj=handleObj,event.data=handleObj.data,void 0!==(ret=((jQuery.event.special[handleObj.origType]||{}).handle||handleObj.handler).apply(matched.elem,args))&&!1===(event.result=ret)&&(event.preventDefault(),event.stopPropagation()));return special.postDispatch&&special.postDispatch.call(this,event),event.result}},handlers:function(event,handlers){var i,handleObj,sel,matchedHandlers,matchedSelectors,handlerQueue=[],delegateCount=handlers.delegateCount,cur=event.target;if(delegateCount&&cur.nodeType&&!("click"===event.type&&event.button>=1))for(;cur!==this;cur=cur.parentNode||this)if(1===cur.nodeType&&("click"!==event.type||!0!==cur.disabled)){for(matchedHandlers=[],matchedSelectors={},i=0;i<delegateCount;i++)void 0===matchedSelectors[sel=(handleObj=handlers[i]).selector+" "]&&(matchedSelectors[sel]=handleObj.needsContext?jQuery(sel,this).index(cur)>-1:jQuery.find(sel,this,null,[cur]).length),matchedSelectors[sel]&&matchedHandlers.push(handleObj);matchedHandlers.length&&handlerQueue.push({elem:cur,handlers:matchedHandlers})}return cur=this,delegateCount<handlers.length&&handlerQueue.push({elem:cur,handlers:handlers.slice(delegateCount)}),handlerQueue},addProp:function(name,hook){Object.defineProperty(jQuery.Event.prototype,name,{enumerable:!0,configurable:!0,get:isFunction(hook)?function(){if(this.originalEvent)return hook(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[name]},set:function(value){Object.defineProperty(this,name,{enumerable:!0,configurable:!0,writable:!0,value:value})}})},fix:function(originalEvent){return originalEvent[jQuery.expando]?originalEvent:new jQuery.Event(originalEvent)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==safeActiveElement()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===safeActiveElement()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&nodeName(this,"input"))return this.click(),!1},_default:function(event){return nodeName(event.target,"a")}},beforeunload:{postDispatch:function(event){void 0!==event.result&&event.originalEvent&&(event.originalEvent.returnValue=event.result)}}}},jQuery.removeEvent=function(elem,type,handle){elem.removeEventListener&&elem.removeEventListener(type,handle)},jQuery.Event=function(src,props){if(!(this instanceof jQuery.Event))return new jQuery.Event(src,props);src&&src.type?(this.originalEvent=src,this.type=src.type,this.isDefaultPrevented=src.defaultPrevented||void 0===src.defaultPrevented&&!1===src.returnValue?returnTrue:returnFalse,this.target=src.target&&3===src.target.nodeType?src.target.parentNode:src.target,this.currentTarget=src.currentTarget,this.relatedTarget=src.relatedTarget):this.type=src,props&&jQuery.extend(this,props),this.timeStamp=src&&src.timeStamp||Date.now(),this[jQuery.expando]=!0},jQuery.Event.prototype={constructor:jQuery.Event,isDefaultPrevented:returnFalse,isPropagationStopped:returnFalse,isImmediatePropagationStopped:returnFalse,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=returnTrue,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=returnTrue,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=returnTrue,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},jQuery.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(event){var button=event.button;return null==event.which&&rkeyEvent.test(event.type)?null!=event.charCode?event.charCode:event.keyCode:!event.which&&void 0!==button&&rmouseEvent.test(event.type)?1&button?1:2&button?3:4&button?2:0:event.which}},jQuery.event.addProp),jQuery.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(orig,fix){jQuery.event.special[orig]={delegateType:fix,bindType:fix,handle:function(event){var ret,related=event.relatedTarget,handleObj=event.handleObj;return related&&(related===this||jQuery.contains(this,related))||(event.type=handleObj.origType,ret=handleObj.handler.apply(this,arguments),event.type=fix),ret}}}),jQuery.fn.extend({on:function(types,selector,data,fn){return on(this,types,selector,data,fn)},one:function(types,selector,data,fn){return on(this,types,selector,data,fn,1)},off:function(types,selector,fn){var handleObj,type;if(types&&types.preventDefault&&types.handleObj)return handleObj=types.handleObj,jQuery(types.delegateTarget).off(handleObj.namespace?handleObj.origType+"."+handleObj.namespace:handleObj.origType,handleObj.selector,handleObj.handler),this;if("object"==typeof types){for(type in types)this.off(type,selector,types[type]);return this}return!1!==selector&&"function"!=typeof selector||(fn=selector,selector=void 0),!1===fn&&(fn=returnFalse),this.each(function(){jQuery.event.remove(this,types,fn,selector)})}});var rxhtmlTag=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,rnoInnerhtml=/<script|<style|<link/i,rchecked=/checked\s*(?:[^=]|=\s*.checked.)/i,rcleanScript=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function manipulationTarget(elem,content){return nodeName(elem,"table")&&nodeName(11!==content.nodeType?content:content.firstChild,"tr")&&jQuery(elem).children("tbody")[0]||elem}function disableScript(elem){return elem.type=(null!==elem.getAttribute("type"))+"/"+elem.type,elem}function restoreScript(elem){return"true/"===(elem.type||"").slice(0,5)?elem.type=elem.type.slice(5):elem.removeAttribute("type"),elem}function cloneCopyEvent(src,dest){var i,l,type,pdataOld,pdataCur,udataOld,udataCur,events;if(1===dest.nodeType){if(dataPriv.hasData(src)&&(pdataOld=dataPriv.access(src),pdataCur=dataPriv.set(dest,pdataOld),events=pdataOld.events))for(type in delete pdataCur.handle,pdataCur.events={},events)for(i=0,l=events[type].length;i<l;i++)jQuery.event.add(dest,type,events[type][i]);dataUser.hasData(src)&&(udataOld=dataUser.access(src),udataCur=jQuery.extend({},udataOld),dataUser.set(dest,udataCur))}}function domManip(collection,args,callback,ignored){args=concat.apply([],args);var fragment,first,scripts,hasScripts,node,doc,i=0,l=collection.length,iNoClone=l-1,value=args[0],valueIsFunction=isFunction(value);if(valueIsFunction||l>1&&"string"==typeof value&&!support.checkClone&&rchecked.test(value))return collection.each(function(index){var self=collection.eq(index);valueIsFunction&&(args[0]=value.call(this,index,self.html())),domManip(self,args,callback,ignored)});if(l&&(first=(fragment=buildFragment(args,collection[0].ownerDocument,!1,collection,ignored)).firstChild,1===fragment.childNodes.length&&(fragment=first),first||ignored)){for(hasScripts=(scripts=jQuery.map(getAll(fragment,"script"),disableScript)).length;i<l;i++)node=fragment,i!==iNoClone&&(node=jQuery.clone(node,!0,!0),hasScripts&&jQuery.merge(scripts,getAll(node,"script"))),callback.call(collection[i],node,i);if(hasScripts)for(doc=scripts[scripts.length-1].ownerDocument,jQuery.map(scripts,restoreScript),i=0;i<hasScripts;i++)node=scripts[i],rscriptType.test(node.type||"")&&!dataPriv.access(node,"globalEval")&&jQuery.contains(doc,node)&&(node.src&&"module"!==(node.type||"").toLowerCase()?jQuery._evalUrl&&jQuery._evalUrl(node.src):DOMEval(node.textContent.replace(rcleanScript,""),doc,node))}return collection}function remove(elem,selector,keepData){for(var node,nodes=selector?jQuery.filter(selector,elem):elem,i=0;null!=(node=nodes[i]);i++)keepData||1!==node.nodeType||jQuery.cleanData(getAll(node)),node.parentNode&&(keepData&&jQuery.contains(node.ownerDocument,node)&&setGlobalEval(getAll(node,"script")),node.parentNode.removeChild(node));return elem}jQuery.extend({htmlPrefilter:function(html){return html.replace(rxhtmlTag,"<$1></$2>")},clone:function(elem,dataAndEvents,deepDataAndEvents){var i,l,srcElements,destElements,src,dest,nodeName,clone=elem.cloneNode(!0),inPage=jQuery.contains(elem.ownerDocument,elem);if(!(support.noCloneChecked||1!==elem.nodeType&&11!==elem.nodeType||jQuery.isXMLDoc(elem)))for(destElements=getAll(clone),i=0,l=(srcElements=getAll(elem)).length;i<l;i++)src=srcElements[i],dest=destElements[i],void 0,"input"===(nodeName=dest.nodeName.toLowerCase())&&rcheckableType.test(src.type)?dest.checked=src.checked:"input"!==nodeName&&"textarea"!==nodeName||(dest.defaultValue=src.defaultValue);if(dataAndEvents)if(deepDataAndEvents)for(srcElements=srcElements||getAll(elem),destElements=destElements||getAll(clone),i=0,l=srcElements.length;i<l;i++)cloneCopyEvent(srcElements[i],destElements[i]);else cloneCopyEvent(elem,clone);return(destElements=getAll(clone,"script")).length>0&&setGlobalEval(destElements,!inPage&&getAll(elem,"script")),clone},cleanData:function(elems){for(var data,elem,type,special=jQuery.event.special,i=0;void 0!==(elem=elems[i]);i++)if(acceptData(elem)){if(data=elem[dataPriv.expando]){if(data.events)for(type in data.events)special[type]?jQuery.event.remove(elem,type):jQuery.removeEvent(elem,type,data.handle);elem[dataPriv.expando]=void 0}elem[dataUser.expando]&&(elem[dataUser.expando]=void 0)}}}),jQuery.fn.extend({detach:function(selector){return remove(this,selector,!0)},remove:function(selector){return remove(this,selector)},text:function(value){return access(this,function(value){return void 0===value?jQuery.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=value)})},null,value,arguments.length)},append:function(){return domManip(this,arguments,function(elem){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||manipulationTarget(this,elem).appendChild(elem)})},prepend:function(){return domManip(this,arguments,function(elem){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var target=manipulationTarget(this,elem);target.insertBefore(elem,target.firstChild)}})},before:function(){return domManip(this,arguments,function(elem){this.parentNode&&this.parentNode.insertBefore(elem,this)})},after:function(){return domManip(this,arguments,function(elem){this.parentNode&&this.parentNode.insertBefore(elem,this.nextSibling)})},empty:function(){for(var elem,i=0;null!=(elem=this[i]);i++)1===elem.nodeType&&(jQuery.cleanData(getAll(elem,!1)),elem.textContent="");return this},clone:function(dataAndEvents,deepDataAndEvents){return dataAndEvents=null!=dataAndEvents&&dataAndEvents,deepDataAndEvents=null==deepDataAndEvents?dataAndEvents:deepDataAndEvents,this.map(function(){return jQuery.clone(this,dataAndEvents,deepDataAndEvents)})},html:function(value){return access(this,function(value){var elem=this[0]||{},i=0,l=this.length;if(void 0===value&&1===elem.nodeType)return elem.innerHTML;if("string"==typeof value&&!rnoInnerhtml.test(value)&&!wrapMap[(rtagName.exec(value)||["",""])[1].toLowerCase()]){value=jQuery.htmlPrefilter(value);try{for(;i<l;i++)1===(elem=this[i]||{}).nodeType&&(jQuery.cleanData(getAll(elem,!1)),elem.innerHTML=value);elem=0}catch(e){}}elem&&this.empty().append(value)},null,value,arguments.length)},replaceWith:function(){var ignored=[];return domManip(this,arguments,function(elem){var parent=this.parentNode;jQuery.inArray(this,ignored)<0&&(jQuery.cleanData(getAll(this)),parent&&parent.replaceChild(elem,this))},ignored)}}),jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(selector){for(var elems,ret=[],insert=jQuery(selector),last=insert.length-1,i=0;i<=last;i++)elems=i===last?this:this.clone(!0),jQuery(insert[i])[original](elems),push.apply(ret,elems.get());return this.pushStack(ret)}});var rnumnonpx=new RegExp("^("+pnum+")(?!px)[a-z%]+$","i"),getStyles=function(elem){var view=elem.ownerDocument.defaultView;return view&&view.opener||(view=window),view.getComputedStyle(elem)},rboxStyle=new RegExp(cssExpand.join("|"),"i");function curCSS(elem,name,computed){var width,minWidth,maxWidth,ret,style=elem.style;return(computed=computed||getStyles(elem))&&(""!==(ret=computed.getPropertyValue(name)||computed[name])||jQuery.contains(elem.ownerDocument,elem)||(ret=jQuery.style(elem,name)),!support.pixelBoxStyles()&&rnumnonpx.test(ret)&&rboxStyle.test(name)&&(width=style.width,minWidth=style.minWidth,maxWidth=style.maxWidth,style.minWidth=style.maxWidth=style.width=ret,ret=computed.width,style.width=width,style.minWidth=minWidth,style.maxWidth=maxWidth)),void 0!==ret?ret+"":ret}function addGetHookIf(conditionFn,hookFn){return{get:function(){if(!conditionFn())return(this.get=hookFn).apply(this,arguments);delete this.get}}}!function(){function computeStyleTests(){if(div){container.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",div.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",documentElement.appendChild(container).appendChild(div);var divStyle=window.getComputedStyle(div);pixelPositionVal="1%"!==divStyle.top,reliableMarginLeftVal=12===roundPixelMeasures(divStyle.marginLeft),div.style.right="60%",pixelBoxStylesVal=36===roundPixelMeasures(divStyle.right),boxSizingReliableVal=36===roundPixelMeasures(divStyle.width),div.style.position="absolute",scrollboxSizeVal=36===div.offsetWidth||"absolute",documentElement.removeChild(container),div=null}}function roundPixelMeasures(measure){return Math.round(parseFloat(measure))}var pixelPositionVal,boxSizingReliableVal,scrollboxSizeVal,pixelBoxStylesVal,reliableMarginLeftVal,container=document.createElement("div"),div=document.createElement("div");div.style&&(div.style.backgroundClip="content-box",div.cloneNode(!0).style.backgroundClip="",support.clearCloneStyle="content-box"===div.style.backgroundClip,jQuery.extend(support,{boxSizingReliable:function(){return computeStyleTests(),boxSizingReliableVal},pixelBoxStyles:function(){return computeStyleTests(),pixelBoxStylesVal},pixelPosition:function(){return computeStyleTests(),pixelPositionVal},reliableMarginLeft:function(){return computeStyleTests(),reliableMarginLeftVal},scrollboxSize:function(){return computeStyleTests(),scrollboxSizeVal}}))}();var rdisplayswap=/^(none|table(?!-c[ea]).+)/,rcustomProp=/^--/,cssShow={position:"absolute",visibility:"hidden",display:"block"},cssNormalTransform={letterSpacing:"0",fontWeight:"400"},cssPrefixes=["Webkit","Moz","ms"],emptyStyle=document.createElement("div").style;function finalPropName(name){var ret=jQuery.cssProps[name];return ret||(ret=jQuery.cssProps[name]=function(name){if(name in emptyStyle)return name;for(var capName=name[0].toUpperCase()+name.slice(1),i=cssPrefixes.length;i--;)if((name=cssPrefixes[i]+capName)in emptyStyle)return name}(name)||name),ret}function setPositiveNumber(elem,value,subtract){var matches=rcssNum.exec(value);return matches?Math.max(0,matches[2]-(subtract||0))+(matches[3]||"px"):value}function boxModelAdjustment(elem,dimension,box,isBorderBox,styles,computedVal){var i="width"===dimension?1:0,extra=0,delta=0;if(box===(isBorderBox?"border":"content"))return 0;for(;i<4;i+=2)"margin"===box&&(delta+=jQuery.css(elem,box+cssExpand[i],!0,styles)),isBorderBox?("content"===box&&(delta-=jQuery.css(elem,"padding"+cssExpand[i],!0,styles)),"margin"!==box&&(delta-=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles))):(delta+=jQuery.css(elem,"padding"+cssExpand[i],!0,styles),"padding"!==box?delta+=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles):extra+=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles));return!isBorderBox&&computedVal>=0&&(delta+=Math.max(0,Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]-computedVal-delta-extra-.5))),delta}function getWidthOrHeight(elem,dimension,extra){var styles=getStyles(elem),val=curCSS(elem,dimension,styles),isBorderBox="border-box"===jQuery.css(elem,"boxSizing",!1,styles),valueIsBorderBox=isBorderBox;if(rnumnonpx.test(val)){if(!extra)return val;val="auto"}return valueIsBorderBox=valueIsBorderBox&&(support.boxSizingReliable()||val===elem.style[dimension]),("auto"===val||!parseFloat(val)&&"inline"===jQuery.css(elem,"display",!1,styles))&&(val=elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)],valueIsBorderBox=!0),(val=parseFloat(val)||0)+boxModelAdjustment(elem,dimension,extra||(isBorderBox?"border":"content"),valueIsBorderBox,styles,val)+"px"}function Tween(elem,options,prop,end,easing){return new Tween.prototype.init(elem,options,prop,end,easing)}jQuery.extend({cssHooks:{opacity:{get:function(elem,computed){if(computed){var ret=curCSS(elem,"opacity");return""===ret?"1":ret}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(elem,name,value,extra){if(elem&&3!==elem.nodeType&&8!==elem.nodeType&&elem.style){var ret,type,hooks,origName=camelCase(name),isCustomProp=rcustomProp.test(name),style=elem.style;if(isCustomProp||(name=finalPropName(origName)),hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName],void 0===value)return hooks&&"get"in hooks&&void 0!==(ret=hooks.get(elem,!1,extra))?ret:style[name];"string"===(type=typeof value)&&(ret=rcssNum.exec(value))&&ret[1]&&(value=adjustCSS(elem,name,ret),type="number"),null!=value&&value==value&&("number"===type&&(value+=ret&&ret[3]||(jQuery.cssNumber[origName]?"":"px")),support.clearCloneStyle||""!==value||0!==name.indexOf("background")||(style[name]="inherit"),hooks&&"set"in hooks&&void 0===(value=hooks.set(elem,value,extra))||(isCustomProp?style.setProperty(name,value):style[name]=value))}},css:function(elem,name,extra,styles){var val,num,hooks,origName=camelCase(name);return rcustomProp.test(name)||(name=finalPropName(origName)),(hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName])&&"get"in hooks&&(val=hooks.get(elem,!0,extra)),void 0===val&&(val=curCSS(elem,name,styles)),"normal"===val&&name in cssNormalTransform&&(val=cssNormalTransform[name]),""===extra||extra?(num=parseFloat(val),!0===extra||isFinite(num)?num||0:val):val}}),jQuery.each(["height","width"],function(i,dimension){jQuery.cssHooks[dimension]={get:function(elem,computed,extra){if(computed)return!rdisplayswap.test(jQuery.css(elem,"display"))||elem.getClientRects().length&&elem.getBoundingClientRect().width?getWidthOrHeight(elem,dimension,extra):swap(elem,cssShow,function(){return getWidthOrHeight(elem,dimension,extra)})},set:function(elem,value,extra){var matches,styles=getStyles(elem),isBorderBox="border-box"===jQuery.css(elem,"boxSizing",!1,styles),subtract=extra&&boxModelAdjustment(elem,dimension,extra,isBorderBox,styles);return isBorderBox&&support.scrollboxSize()===styles.position&&(subtract-=Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]-parseFloat(styles[dimension])-boxModelAdjustment(elem,dimension,"border",!1,styles)-.5)),subtract&&(matches=rcssNum.exec(value))&&"px"!==(matches[3]||"px")&&(elem.style[dimension]=value,value=jQuery.css(elem,dimension)),setPositiveNumber(0,value,subtract)}}}),jQuery.cssHooks.marginLeft=addGetHookIf(support.reliableMarginLeft,function(elem,computed){if(computed)return(parseFloat(curCSS(elem,"marginLeft"))||elem.getBoundingClientRect().left-swap(elem,{marginLeft:0},function(){return elem.getBoundingClientRect().left}))+"px"}),jQuery.each({margin:"",padding:"",border:"Width"},function(prefix,suffix){jQuery.cssHooks[prefix+suffix]={expand:function(value){for(var i=0,expanded={},parts="string"==typeof value?value.split(" "):[value];i<4;i++)expanded[prefix+cssExpand[i]+suffix]=parts[i]||parts[i-2]||parts[0];return expanded}},"margin"!==prefix&&(jQuery.cssHooks[prefix+suffix].set=setPositiveNumber)}),jQuery.fn.extend({css:function(name,value){return access(this,function(elem,name,value){var styles,len,map={},i=0;if(Array.isArray(name)){for(styles=getStyles(elem),len=name.length;i<len;i++)map[name[i]]=jQuery.css(elem,name[i],!1,styles);return map}return void 0!==value?jQuery.style(elem,name,value):jQuery.css(elem,name)},name,value,arguments.length>1)}}),jQuery.Tween=Tween,Tween.prototype={constructor:Tween,init:function(elem,options,prop,end,easing,unit){this.elem=elem,this.prop=prop,this.easing=easing||jQuery.easing._default,this.options=options,this.start=this.now=this.cur(),this.end=end,this.unit=unit||(jQuery.cssNumber[prop]?"":"px")},cur:function(){var hooks=Tween.propHooks[this.prop];return hooks&&hooks.get?hooks.get(this):Tween.propHooks._default.get(this)},run:function(percent){var eased,hooks=Tween.propHooks[this.prop];return this.options.duration?this.pos=eased=jQuery.easing[this.easing](percent,this.options.duration*percent,0,1,this.options.duration):this.pos=eased=percent,this.now=(this.end-this.start)*eased+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),hooks&&hooks.set?hooks.set(this):Tween.propHooks._default.set(this),this}},Tween.prototype.init.prototype=Tween.prototype,Tween.propHooks={_default:{get:function(tween){var result;return 1!==tween.elem.nodeType||null!=tween.elem[tween.prop]&&null==tween.elem.style[tween.prop]?tween.elem[tween.prop]:(result=jQuery.css(tween.elem,tween.prop,""))&&"auto"!==result?result:0},set:function(tween){jQuery.fx.step[tween.prop]?jQuery.fx.step[tween.prop](tween):1!==tween.elem.nodeType||null==tween.elem.style[jQuery.cssProps[tween.prop]]&&!jQuery.cssHooks[tween.prop]?tween.elem[tween.prop]=tween.now:jQuery.style(tween.elem,tween.prop,tween.now+tween.unit)}}},Tween.propHooks.scrollTop=Tween.propHooks.scrollLeft={set:function(tween){tween.elem.nodeType&&tween.elem.parentNode&&(tween.elem[tween.prop]=tween.now)}},jQuery.easing={linear:function(p){return p},swing:function(p){return.5-Math.cos(p*Math.PI)/2},_default:"swing"},jQuery.fx=Tween.prototype.init,jQuery.fx.step={};var fxNow,inProgress,rfxtypes=/^(?:toggle|show|hide)$/,rrun=/queueHooks$/;function schedule(){inProgress&&(!1===document.hidden&&window.requestAnimationFrame?window.requestAnimationFrame(schedule):window.setTimeout(schedule,jQuery.fx.interval),jQuery.fx.tick())}function createFxNow(){return window.setTimeout(function(){fxNow=void 0}),fxNow=Date.now()}function genFx(type,includeWidth){var which,i=0,attrs={height:type};for(includeWidth=includeWidth?1:0;i<4;i+=2-includeWidth)attrs["margin"+(which=cssExpand[i])]=attrs["padding"+which]=type;return includeWidth&&(attrs.opacity=attrs.width=type),attrs}function createTween(value,prop,animation){for(var tween,collection=(Animation.tweeners[prop]||[]).concat(Animation.tweeners["*"]),index=0,length=collection.length;index<length;index++)if(tween=collection[index].call(animation,prop,value))return tween}function Animation(elem,properties,options){var result,stopped,index=0,length=Animation.prefilters.length,deferred=jQuery.Deferred().always(function(){delete tick.elem}),tick=function(){if(stopped)return!1;for(var currentTime=fxNow||createFxNow(),remaining=Math.max(0,animation.startTime+animation.duration-currentTime),percent=1-(remaining/animation.duration||0),index=0,length=animation.tweens.length;index<length;index++)animation.tweens[index].run(percent);return deferred.notifyWith(elem,[animation,percent,remaining]),percent<1&&length?remaining:(length||deferred.notifyWith(elem,[animation,1,0]),deferred.resolveWith(elem,[animation]),!1)},animation=deferred.promise({elem:elem,props:jQuery.extend({},properties),opts:jQuery.extend(!0,{specialEasing:{},easing:jQuery.easing._default},options),originalProperties:properties,originalOptions:options,startTime:fxNow||createFxNow(),duration:options.duration,tweens:[],createTween:function(prop,end){var tween=jQuery.Tween(elem,animation.opts,prop,end,animation.opts.specialEasing[prop]||animation.opts.easing);return animation.tweens.push(tween),tween},stop:function(gotoEnd){var index=0,length=gotoEnd?animation.tweens.length:0;if(stopped)return this;for(stopped=!0;index<length;index++)animation.tweens[index].run(1);return gotoEnd?(deferred.notifyWith(elem,[animation,1,0]),deferred.resolveWith(elem,[animation,gotoEnd])):deferred.rejectWith(elem,[animation,gotoEnd]),this}}),props=animation.props;for(!function(props,specialEasing){var index,name,easing,value,hooks;for(index in props)if(easing=specialEasing[name=camelCase(index)],value=props[index],Array.isArray(value)&&(easing=value[1],value=props[index]=value[0]),index!==name&&(props[name]=value,delete props[index]),(hooks=jQuery.cssHooks[name])&&"expand"in hooks)for(index in value=hooks.expand(value),delete props[name],value)index in props||(props[index]=value[index],specialEasing[index]=easing);else specialEasing[name]=easing}(props,animation.opts.specialEasing);index<length;index++)if(result=Animation.prefilters[index].call(animation,elem,props,animation.opts))return isFunction(result.stop)&&(jQuery._queueHooks(animation.elem,animation.opts.queue).stop=result.stop.bind(result)),result;return jQuery.map(props,createTween,animation),isFunction(animation.opts.start)&&animation.opts.start.call(elem,animation),animation.progress(animation.opts.progress).done(animation.opts.done,animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always),jQuery.fx.timer(jQuery.extend(tick,{elem:elem,anim:animation,queue:animation.opts.queue})),animation}jQuery.Animation=jQuery.extend(Animation,{tweeners:{"*":[function(prop,value){var tween=this.createTween(prop,value);return adjustCSS(tween.elem,prop,rcssNum.exec(value),tween),tween}]},tweener:function(props,callback){isFunction(props)?(callback=props,props=["*"]):props=props.match(rnothtmlwhite);for(var prop,index=0,length=props.length;index<length;index++)prop=props[index],Animation.tweeners[prop]=Animation.tweeners[prop]||[],Animation.tweeners[prop].unshift(callback)},prefilters:[function(elem,props,opts){var prop,value,toggle,hooks,oldfire,propTween,restoreDisplay,display,isBox="width"in props||"height"in props,anim=this,orig={},style=elem.style,hidden=elem.nodeType&&isHiddenWithinTree(elem),dataShow=dataPriv.get(elem,"fxshow");for(prop in opts.queue||(null==(hooks=jQuery._queueHooks(elem,"fx")).unqueued&&(hooks.unqueued=0,oldfire=hooks.empty.fire,hooks.empty.fire=function(){hooks.unqueued||oldfire()}),hooks.unqueued++,anim.always(function(){anim.always(function(){hooks.unqueued--,jQuery.queue(elem,"fx").length||hooks.empty.fire()})})),props)if(value=props[prop],rfxtypes.test(value)){if(delete props[prop],toggle=toggle||"toggle"===value,value===(hidden?"hide":"show")){if("show"!==value||!dataShow||void 0===dataShow[prop])continue;hidden=!0}orig[prop]=dataShow&&dataShow[prop]||jQuery.style(elem,prop)}if((propTween=!jQuery.isEmptyObject(props))||!jQuery.isEmptyObject(orig))for(prop in isBox&&1===elem.nodeType&&(opts.overflow=[style.overflow,style.overflowX,style.overflowY],null==(restoreDisplay=dataShow&&dataShow.display)&&(restoreDisplay=dataPriv.get(elem,"display")),"none"===(display=jQuery.css(elem,"display"))&&(restoreDisplay?display=restoreDisplay:(showHide([elem],!0),restoreDisplay=elem.style.display||restoreDisplay,display=jQuery.css(elem,"display"),showHide([elem]))),("inline"===display||"inline-block"===display&&null!=restoreDisplay)&&"none"===jQuery.css(elem,"float")&&(propTween||(anim.done(function(){style.display=restoreDisplay}),null==restoreDisplay&&(display=style.display,restoreDisplay="none"===display?"":display)),style.display="inline-block")),opts.overflow&&(style.overflow="hidden",anim.always(function(){style.overflow=opts.overflow[0],style.overflowX=opts.overflow[1],style.overflowY=opts.overflow[2]})),propTween=!1,orig)propTween||(dataShow?"hidden"in dataShow&&(hidden=dataShow.hidden):dataShow=dataPriv.access(elem,"fxshow",{display:restoreDisplay}),toggle&&(dataShow.hidden=!hidden),hidden&&showHide([elem],!0),anim.done(function(){for(prop in hidden||showHide([elem]),dataPriv.remove(elem,"fxshow"),orig)jQuery.style(elem,prop,orig[prop])})),propTween=createTween(hidden?dataShow[prop]:0,prop,anim),prop in dataShow||(dataShow[prop]=propTween.start,hidden&&(propTween.end=propTween.start,propTween.start=0))}],prefilter:function(callback,prepend){prepend?Animation.prefilters.unshift(callback):Animation.prefilters.push(callback)}}),jQuery.speed=function(speed,easing,fn){var opt=speed&&"object"==typeof speed?jQuery.extend({},speed):{complete:fn||!fn&&easing||isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&!isFunction(easing)&&easing};return jQuery.fx.off?opt.duration=0:"number"!=typeof opt.duration&&(opt.duration in jQuery.fx.speeds?opt.duration=jQuery.fx.speeds[opt.duration]:opt.duration=jQuery.fx.speeds._default),null!=opt.queue&&!0!==opt.queue||(opt.queue="fx"),opt.old=opt.complete,opt.complete=function(){isFunction(opt.old)&&opt.old.call(this),opt.queue&&jQuery.dequeue(this,opt.queue)},opt},jQuery.fn.extend({fadeTo:function(speed,to,easing,callback){return this.filter(isHiddenWithinTree).css("opacity",0).show().end().animate({opacity:to},speed,easing,callback)},animate:function(prop,speed,easing,callback){var empty=jQuery.isEmptyObject(prop),optall=jQuery.speed(speed,easing,callback),doAnimation=function(){var anim=Animation(this,jQuery.extend({},prop),optall);(empty||dataPriv.get(this,"finish"))&&anim.stop(!0)};return doAnimation.finish=doAnimation,empty||!1===optall.queue?this.each(doAnimation):this.queue(optall.queue,doAnimation)},stop:function(type,clearQueue,gotoEnd){var stopQueue=function(hooks){var stop=hooks.stop;delete hooks.stop,stop(gotoEnd)};return"string"!=typeof type&&(gotoEnd=clearQueue,clearQueue=type,type=void 0),clearQueue&&!1!==type&&this.queue(type||"fx",[]),this.each(function(){var dequeue=!0,index=null!=type&&type+"queueHooks",timers=jQuery.timers,data=dataPriv.get(this);if(index)data[index]&&data[index].stop&&stopQueue(data[index]);else for(index in data)data[index]&&data[index].stop&&rrun.test(index)&&stopQueue(data[index]);for(index=timers.length;index--;)timers[index].elem!==this||null!=type&&timers[index].queue!==type||(timers[index].anim.stop(gotoEnd),dequeue=!1,timers.splice(index,1));!dequeue&&gotoEnd||jQuery.dequeue(this,type)})},finish:function(type){return!1!==type&&(type=type||"fx"),this.each(function(){var index,data=dataPriv.get(this),queue=data[type+"queue"],hooks=data[type+"queueHooks"],timers=jQuery.timers,length=queue?queue.length:0;for(data.finish=!0,jQuery.queue(this,type,[]),hooks&&hooks.stop&&hooks.stop.call(this,!0),index=timers.length;index--;)timers[index].elem===this&&timers[index].queue===type&&(timers[index].anim.stop(!0),timers.splice(index,1));for(index=0;index<length;index++)queue[index]&&queue[index].finish&&queue[index].finish.call(this);delete data.finish})}}),jQuery.each(["toggle","show","hide"],function(i,name){var cssFn=jQuery.fn[name];jQuery.fn[name]=function(speed,easing,callback){return null==speed||"boolean"==typeof speed?cssFn.apply(this,arguments):this.animate(genFx(name,!0),speed,easing,callback)}}),jQuery.each({slideDown:genFx("show"),slideUp:genFx("hide"),slideToggle:genFx("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(name,props){jQuery.fn[name]=function(speed,easing,callback){return this.animate(props,speed,easing,callback)}}),jQuery.timers=[],jQuery.fx.tick=function(){var timer,i=0,timers=jQuery.timers;for(fxNow=Date.now();i<timers.length;i++)(timer=timers[i])()||timers[i]!==timer||timers.splice(i--,1);timers.length||jQuery.fx.stop(),fxNow=void 0},jQuery.fx.timer=function(timer){jQuery.timers.push(timer),jQuery.fx.start()},jQuery.fx.interval=13,jQuery.fx.start=function(){inProgress||(inProgress=!0,schedule())},jQuery.fx.stop=function(){inProgress=null},jQuery.fx.speeds={slow:600,fast:200,_default:400},jQuery.fn.delay=function(time,type){return time=jQuery.fx&&jQuery.fx.speeds[time]||time,type=type||"fx",this.queue(type,function(next,hooks){var timeout=window.setTimeout(next,time);hooks.stop=function(){window.clearTimeout(timeout)}})},function(){var input=document.createElement("input"),opt=document.createElement("select").appendChild(document.createElement("option"));input.type="checkbox",support.checkOn=""!==input.value,support.optSelected=opt.selected,(input=document.createElement("input")).value="t",input.type="radio",support.radioValue="t"===input.value}();var boolHook,attrHandle=jQuery.expr.attrHandle;jQuery.fn.extend({attr:function(name,value){return access(this,jQuery.attr,name,value,arguments.length>1)},removeAttr:function(name){return this.each(function(){jQuery.removeAttr(this,name)})}}),jQuery.extend({attr:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(3!==nType&&8!==nType&&2!==nType)return void 0===elem.getAttribute?jQuery.prop(elem,name,value):(1===nType&&jQuery.isXMLDoc(elem)||(hooks=jQuery.attrHooks[name.toLowerCase()]||(jQuery.expr.match.bool.test(name)?boolHook:void 0)),void 0!==value?null===value?void jQuery.removeAttr(elem,name):hooks&&"set"in hooks&&void 0!==(ret=hooks.set(elem,value,name))?ret:(elem.setAttribute(name,value+""),value):hooks&&"get"in hooks&&null!==(ret=hooks.get(elem,name))?ret:null==(ret=jQuery.find.attr(elem,name))?void 0:ret)},attrHooks:{type:{set:function(elem,value){if(!support.radioValue&&"radio"===value&&nodeName(elem,"input")){var val=elem.value;return elem.setAttribute("type",value),val&&(elem.value=val),value}}}},removeAttr:function(elem,value){var name,i=0,attrNames=value&&value.match(rnothtmlwhite);if(attrNames&&1===elem.nodeType)for(;name=attrNames[i++];)elem.removeAttribute(name)}}),boolHook={set:function(elem,value,name){return!1===value?jQuery.removeAttr(elem,name):elem.setAttribute(name,name),name}},jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g),function(i,name){var getter=attrHandle[name]||jQuery.find.attr;attrHandle[name]=function(elem,name,isXML){var ret,handle,lowercaseName=name.toLowerCase();return isXML||(handle=attrHandle[lowercaseName],attrHandle[lowercaseName]=ret,ret=null!=getter(elem,name,isXML)?lowercaseName:null,attrHandle[lowercaseName]=handle),ret}});var rfocusable=/^(?:input|select|textarea|button)$/i,rclickable=/^(?:a|area)$/i;function stripAndCollapse(value){return(value.match(rnothtmlwhite)||[]).join(" ")}function getClass(elem){return elem.getAttribute&&elem.getAttribute("class")||""}function classesToArray(value){return Array.isArray(value)?value:"string"==typeof value&&value.match(rnothtmlwhite)||[]}jQuery.fn.extend({prop:function(name,value){return access(this,jQuery.prop,name,value,arguments.length>1)},removeProp:function(name){return this.each(function(){delete this[jQuery.propFix[name]||name]})}}),jQuery.extend({prop:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(3!==nType&&8!==nType&&2!==nType)return 1===nType&&jQuery.isXMLDoc(elem)||(name=jQuery.propFix[name]||name,hooks=jQuery.propHooks[name]),void 0!==value?hooks&&"set"in hooks&&void 0!==(ret=hooks.set(elem,value,name))?ret:elem[name]=value:hooks&&"get"in hooks&&null!==(ret=hooks.get(elem,name))?ret:elem[name]},propHooks:{tabIndex:{get:function(elem){var tabindex=jQuery.find.attr(elem,"tabindex");return tabindex?parseInt(tabindex,10):rfocusable.test(elem.nodeName)||rclickable.test(elem.nodeName)&&elem.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),support.optSelected||(jQuery.propHooks.selected={get:function(elem){var parent=elem.parentNode;return parent&&parent.parentNode&&parent.parentNode.selectedIndex,null},set:function(elem){var parent=elem.parentNode;parent&&(parent.selectedIndex,parent.parentNode&&parent.parentNode.selectedIndex)}}),jQuery.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){jQuery.propFix[this.toLowerCase()]=this}),jQuery.fn.extend({addClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(isFunction(value))return this.each(function(j){jQuery(this).addClass(value.call(this,j,getClass(this)))});if((classes=classesToArray(value)).length)for(;elem=this[i++];)if(curValue=getClass(elem),cur=1===elem.nodeType&&" "+stripAndCollapse(curValue)+" "){for(j=0;clazz=classes[j++];)cur.indexOf(" "+clazz+" ")<0&&(cur+=clazz+" ");curValue!==(finalValue=stripAndCollapse(cur))&&elem.setAttribute("class",finalValue)}return this},removeClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(isFunction(value))return this.each(function(j){jQuery(this).removeClass(value.call(this,j,getClass(this)))});if(!arguments.length)return this.attr("class","");if((classes=classesToArray(value)).length)for(;elem=this[i++];)if(curValue=getClass(elem),cur=1===elem.nodeType&&" "+stripAndCollapse(curValue)+" "){for(j=0;clazz=classes[j++];)for(;cur.indexOf(" "+clazz+" ")>-1;)cur=cur.replace(" "+clazz+" "," ");curValue!==(finalValue=stripAndCollapse(cur))&&elem.setAttribute("class",finalValue)}return this},toggleClass:function(value,stateVal){var type=typeof value,isValidValue="string"===type||Array.isArray(value);return"boolean"==typeof stateVal&&isValidValue?stateVal?this.addClass(value):this.removeClass(value):isFunction(value)?this.each(function(i){jQuery(this).toggleClass(value.call(this,i,getClass(this),stateVal),stateVal)}):this.each(function(){var className,i,self,classNames;if(isValidValue)for(i=0,self=jQuery(this),classNames=classesToArray(value);className=classNames[i++];)self.hasClass(className)?self.removeClass(className):self.addClass(className);else void 0!==value&&"boolean"!==type||((className=getClass(this))&&dataPriv.set(this,"__className__",className),this.setAttribute&&this.setAttribute("class",className||!1===value?"":dataPriv.get(this,"__className__")||""))})},hasClass:function(selector){var className,elem,i=0;for(className=" "+selector+" ";elem=this[i++];)if(1===elem.nodeType&&(" "+stripAndCollapse(getClass(elem))+" ").indexOf(className)>-1)return!0;return!1}});var rreturn=/\r/g;jQuery.fn.extend({val:function(value){var hooks,ret,valueIsFunction,elem=this[0];return arguments.length?(valueIsFunction=isFunction(value),this.each(function(i){var val;1===this.nodeType&&(null==(val=valueIsFunction?value.call(this,i,jQuery(this).val()):value)?val="":"number"==typeof val?val+="":Array.isArray(val)&&(val=jQuery.map(val,function(value){return null==value?"":value+""})),(hooks=jQuery.valHooks[this.type]||jQuery.valHooks[this.nodeName.toLowerCase()])&&"set"in hooks&&void 0!==hooks.set(this,val,"value")||(this.value=val))})):elem?(hooks=jQuery.valHooks[elem.type]||jQuery.valHooks[elem.nodeName.toLowerCase()])&&"get"in hooks&&void 0!==(ret=hooks.get(elem,"value"))?ret:"string"==typeof(ret=elem.value)?ret.replace(rreturn,""):null==ret?"":ret:void 0}}),jQuery.extend({valHooks:{option:{get:function(elem){var val=jQuery.find.attr(elem,"value");return null!=val?val:stripAndCollapse(jQuery.text(elem))}},select:{get:function(elem){var value,option,i,options=elem.options,index=elem.selectedIndex,one="select-one"===elem.type,values=one?null:[],max=one?index+1:options.length;for(i=index<0?max:one?index:0;i<max;i++)if(((option=options[i]).selected||i===index)&&!option.disabled&&(!option.parentNode.disabled||!nodeName(option.parentNode,"optgroup"))){if(value=jQuery(option).val(),one)return value;values.push(value)}return values},set:function(elem,value){for(var optionSet,option,options=elem.options,values=jQuery.makeArray(value),i=options.length;i--;)((option=options[i]).selected=jQuery.inArray(jQuery.valHooks.option.get(option),values)>-1)&&(optionSet=!0);return optionSet||(elem.selectedIndex=-1),values}}}}),jQuery.each(["radio","checkbox"],function(){jQuery.valHooks[this]={set:function(elem,value){if(Array.isArray(value))return elem.checked=jQuery.inArray(jQuery(elem).val(),value)>-1}},support.checkOn||(jQuery.valHooks[this].get=function(elem){return null===elem.getAttribute("value")?"on":elem.value})}),support.focusin="onfocusin"in window;var rfocusMorph=/^(?:focusinfocus|focusoutblur)$/,stopPropagationCallback=function(e){e.stopPropagation()};jQuery.extend(jQuery.event,{trigger:function(event,data,elem,onlyHandlers){var i,cur,tmp,bubbleType,ontype,handle,special,lastElement,eventPath=[elem||document],type=hasOwn.call(event,"type")?event.type:event,namespaces=hasOwn.call(event,"namespace")?event.namespace.split("."):[];if(cur=lastElement=tmp=elem=elem||document,3!==elem.nodeType&&8!==elem.nodeType&&!rfocusMorph.test(type+jQuery.event.triggered)&&(type.indexOf(".")>-1&&(type=(namespaces=type.split(".")).shift(),namespaces.sort()),ontype=type.indexOf(":")<0&&"on"+type,(event=event[jQuery.expando]?event:new jQuery.Event(type,"object"==typeof event&&event)).isTrigger=onlyHandlers?2:3,event.namespace=namespaces.join("."),event.rnamespace=event.namespace?new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,event.result=void 0,event.target||(event.target=elem),data=null==data?[event]:jQuery.makeArray(data,[event]),special=jQuery.event.special[type]||{},onlyHandlers||!special.trigger||!1!==special.trigger.apply(elem,data))){if(!onlyHandlers&&!special.noBubble&&!isWindow(elem)){for(bubbleType=special.delegateType||type,rfocusMorph.test(bubbleType+type)||(cur=cur.parentNode);cur;cur=cur.parentNode)eventPath.push(cur),tmp=cur;tmp===(elem.ownerDocument||document)&&eventPath.push(tmp.defaultView||tmp.parentWindow||window)}for(i=0;(cur=eventPath[i++])&&!event.isPropagationStopped();)lastElement=cur,event.type=i>1?bubbleType:special.bindType||type,(handle=(dataPriv.get(cur,"events")||{})[event.type]&&dataPriv.get(cur,"handle"))&&handle.apply(cur,data),(handle=ontype&&cur[ontype])&&handle.apply&&acceptData(cur)&&(event.result=handle.apply(cur,data),!1===event.result&&event.preventDefault());return event.type=type,onlyHandlers||event.isDefaultPrevented()||special._default&&!1!==special._default.apply(eventPath.pop(),data)||!acceptData(elem)||ontype&&isFunction(elem[type])&&!isWindow(elem)&&((tmp=elem[ontype])&&(elem[ontype]=null),jQuery.event.triggered=type,event.isPropagationStopped()&&lastElement.addEventListener(type,stopPropagationCallback),elem[type](),event.isPropagationStopped()&&lastElement.removeEventListener(type,stopPropagationCallback),jQuery.event.triggered=void 0,tmp&&(elem[ontype]=tmp)),event.result}},simulate:function(type,elem,event){var e=jQuery.extend(new jQuery.Event,event,{type:type,isSimulated:!0});jQuery.event.trigger(e,null,elem)}}),jQuery.fn.extend({trigger:function(type,data){return this.each(function(){jQuery.event.trigger(type,data,this)})},triggerHandler:function(type,data){var elem=this[0];if(elem)return jQuery.event.trigger(type,data,elem,!0)}}),support.focusin||jQuery.each({focus:"focusin",blur:"focusout"},function(orig,fix){var handler=function(event){jQuery.event.simulate(fix,event.target,jQuery.event.fix(event))};jQuery.event.special[fix]={setup:function(){var doc=this.ownerDocument||this,attaches=dataPriv.access(doc,fix);attaches||doc.addEventListener(orig,handler,!0),dataPriv.access(doc,fix,(attaches||0)+1)},teardown:function(){var doc=this.ownerDocument||this,attaches=dataPriv.access(doc,fix)-1;attaches?dataPriv.access(doc,fix,attaches):(doc.removeEventListener(orig,handler,!0),dataPriv.remove(doc,fix))}}});var location=window.location,nonce=Date.now(),rquery=/\?/;jQuery.parseXML=function(data){var xml;if(!data||"string"!=typeof data)return null;try{xml=(new window.DOMParser).parseFromString(data,"text/xml")}catch(e){xml=void 0}return xml&&!xml.getElementsByTagName("parsererror").length||jQuery.error("Invalid XML: "+data),xml};var rbracket=/\[\]$/,rCRLF=/\r?\n/g,rsubmitterTypes=/^(?:submit|button|image|reset|file)$/i,rsubmittable=/^(?:input|select|textarea|keygen)/i;function buildParams(prefix,obj,traditional,add){var name;if(Array.isArray(obj))jQuery.each(obj,function(i,v){traditional||rbracket.test(prefix)?add(prefix,v):buildParams(prefix+"["+("object"==typeof v&&null!=v?i:"")+"]",v,traditional,add)});else if(traditional||"object"!==toType(obj))add(prefix,obj);else for(name in obj)buildParams(prefix+"["+name+"]",obj[name],traditional,add)}jQuery.param=function(a,traditional){var prefix,s=[],add=function(key,valueOrFunction){var value=isFunction(valueOrFunction)?valueOrFunction():valueOrFunction;s[s.length]=encodeURIComponent(key)+"="+encodeURIComponent(null==value?"":value)};if(Array.isArray(a)||a.jquery&&!jQuery.isPlainObject(a))jQuery.each(a,function(){add(this.name,this.value)});else for(prefix in a)buildParams(prefix,a[prefix],traditional,add);return s.join("&")},jQuery.fn.extend({serialize:function(){return jQuery.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var elements=jQuery.prop(this,"elements");return elements?jQuery.makeArray(elements):this}).filter(function(){var type=this.type;return this.name&&!jQuery(this).is(":disabled")&&rsubmittable.test(this.nodeName)&&!rsubmitterTypes.test(type)&&(this.checked||!rcheckableType.test(type))}).map(function(i,elem){var val=jQuery(this).val();return null==val?null:Array.isArray(val)?jQuery.map(val,function(val){return{name:elem.name,value:val.replace(rCRLF,"\r\n")}}):{name:elem.name,value:val.replace(rCRLF,"\r\n")}}).get()}});var r20=/%20/g,rhash=/#.*$/,rantiCache=/([?&])_=[^&]*/,rheaders=/^(.*?):[ \t]*([^\r\n]*)$/gm,rnoContent=/^(?:GET|HEAD)$/,rprotocol=/^\/\//,prefilters={},transports={},allTypes="*/".concat("*"),originAnchor=document.createElement("a");function addToPrefiltersOrTransports(structure){return function(dataTypeExpression,func){"string"!=typeof dataTypeExpression&&(func=dataTypeExpression,dataTypeExpression="*");var dataType,i=0,dataTypes=dataTypeExpression.toLowerCase().match(rnothtmlwhite)||[];if(isFunction(func))for(;dataType=dataTypes[i++];)"+"===dataType[0]?(dataType=dataType.slice(1)||"*",(structure[dataType]=structure[dataType]||[]).unshift(func)):(structure[dataType]=structure[dataType]||[]).push(func)}}function inspectPrefiltersOrTransports(structure,options,originalOptions,jqXHR){var inspected={},seekingTransport=structure===transports;function inspect(dataType){var selected;return inspected[dataType]=!0,jQuery.each(structure[dataType]||[],function(_,prefilterOrFactory){var dataTypeOrTransport=prefilterOrFactory(options,originalOptions,jqXHR);return"string"!=typeof dataTypeOrTransport||seekingTransport||inspected[dataTypeOrTransport]?seekingTransport?!(selected=dataTypeOrTransport):void 0:(options.dataTypes.unshift(dataTypeOrTransport),inspect(dataTypeOrTransport),!1)}),selected}return inspect(options.dataTypes[0])||!inspected["*"]&&inspect("*")}function ajaxExtend(target,src){var key,deep,flatOptions=jQuery.ajaxSettings.flatOptions||{};for(key in src)void 0!==src[key]&&((flatOptions[key]?target:deep||(deep={}))[key]=src[key]);return deep&&jQuery.extend(!0,target,deep),target}originAnchor.href=location.href,jQuery.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:location.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(location.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":allTypes,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":jQuery.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(target,settings){return settings?ajaxExtend(ajaxExtend(target,jQuery.ajaxSettings),settings):ajaxExtend(jQuery.ajaxSettings,target)},ajaxPrefilter:addToPrefiltersOrTransports(prefilters),ajaxTransport:addToPrefiltersOrTransports(transports),ajax:function(url,options){"object"==typeof url&&(options=url,url=void 0),options=options||{};var transport,cacheURL,responseHeadersString,responseHeaders,timeoutTimer,urlAnchor,completed,fireGlobals,i,uncached,s=jQuery.ajaxSetup({},options),callbackContext=s.context||s,globalEventContext=s.context&&(callbackContext.nodeType||callbackContext.jquery)?jQuery(callbackContext):jQuery.event,deferred=jQuery.Deferred(),completeDeferred=jQuery.Callbacks("once memory"),statusCode=s.statusCode||{},requestHeaders={},requestHeadersNames={},strAbort="canceled",jqXHR={readyState:0,getResponseHeader:function(key){var match;if(completed){if(!responseHeaders)for(responseHeaders={};match=rheaders.exec(responseHeadersString);)responseHeaders[match[1].toLowerCase()]=match[2];match=responseHeaders[key.toLowerCase()]}return null==match?null:match},getAllResponseHeaders:function(){return completed?responseHeadersString:null},setRequestHeader:function(name,value){return null==completed&&(name=requestHeadersNames[name.toLowerCase()]=requestHeadersNames[name.toLowerCase()]||name,requestHeaders[name]=value),this},overrideMimeType:function(type){return null==completed&&(s.mimeType=type),this},statusCode:function(map){var code;if(map)if(completed)jqXHR.always(map[jqXHR.status]);else for(code in map)statusCode[code]=[statusCode[code],map[code]];return this},abort:function(statusText){var finalText=statusText||strAbort;return transport&&transport.abort(finalText),done(0,finalText),this}};if(deferred.promise(jqXHR),s.url=((url||s.url||location.href)+"").replace(rprotocol,location.protocol+"//"),s.type=options.method||options.type||s.method||s.type,s.dataTypes=(s.dataType||"*").toLowerCase().match(rnothtmlwhite)||[""],null==s.crossDomain){urlAnchor=document.createElement("a");try{urlAnchor.href=s.url,urlAnchor.href=urlAnchor.href,s.crossDomain=originAnchor.protocol+"//"+originAnchor.host!=urlAnchor.protocol+"//"+urlAnchor.host}catch(e){s.crossDomain=!0}}if(s.data&&s.processData&&"string"!=typeof s.data&&(s.data=jQuery.param(s.data,s.traditional)),inspectPrefiltersOrTransports(prefilters,s,options,jqXHR),completed)return jqXHR;for(i in(fireGlobals=jQuery.event&&s.global)&&0==jQuery.active++&&jQuery.event.trigger("ajaxStart"),s.type=s.type.toUpperCase(),s.hasContent=!rnoContent.test(s.type),cacheURL=s.url.replace(rhash,""),s.hasContent?s.data&&s.processData&&0===(s.contentType||"").indexOf("application/x-www-form-urlencoded")&&(s.data=s.data.replace(r20,"+")):(uncached=s.url.slice(cacheURL.length),s.data&&(s.processData||"string"==typeof s.data)&&(cacheURL+=(rquery.test(cacheURL)?"&":"?")+s.data,delete s.data),!1===s.cache&&(cacheURL=cacheURL.replace(rantiCache,"$1"),uncached=(rquery.test(cacheURL)?"&":"?")+"_="+nonce+++uncached),s.url=cacheURL+uncached),s.ifModified&&(jQuery.lastModified[cacheURL]&&jqXHR.setRequestHeader("If-Modified-Since",jQuery.lastModified[cacheURL]),jQuery.etag[cacheURL]&&jqXHR.setRequestHeader("If-None-Match",jQuery.etag[cacheURL])),(s.data&&s.hasContent&&!1!==s.contentType||options.contentType)&&jqXHR.setRequestHeader("Content-Type",s.contentType),jqXHR.setRequestHeader("Accept",s.dataTypes[0]&&s.accepts[s.dataTypes[0]]?s.accepts[s.dataTypes[0]]+("*"!==s.dataTypes[0]?", "+allTypes+"; q=0.01":""):s.accepts["*"]),s.headers)jqXHR.setRequestHeader(i,s.headers[i]);if(s.beforeSend&&(!1===s.beforeSend.call(callbackContext,jqXHR,s)||completed))return jqXHR.abort();if(strAbort="abort",completeDeferred.add(s.complete),jqXHR.done(s.success),jqXHR.fail(s.error),transport=inspectPrefiltersOrTransports(transports,s,options,jqXHR)){if(jqXHR.readyState=1,fireGlobals&&globalEventContext.trigger("ajaxSend",[jqXHR,s]),completed)return jqXHR;s.async&&s.timeout>0&&(timeoutTimer=window.setTimeout(function(){jqXHR.abort("timeout")},s.timeout));try{completed=!1,transport.send(requestHeaders,done)}catch(e){if(completed)throw e;done(-1,e)}}else done(-1,"No Transport");function done(status,nativeStatusText,responses,headers){var isSuccess,success,error,response,modified,statusText=nativeStatusText;completed||(completed=!0,timeoutTimer&&window.clearTimeout(timeoutTimer),transport=void 0,responseHeadersString=headers||"",jqXHR.readyState=status>0?4:0,isSuccess=status>=200&&status<300||304===status,responses&&(response=function(s,jqXHR,responses){for(var ct,type,finalDataType,firstDataType,contents=s.contents,dataTypes=s.dataTypes;"*"===dataTypes[0];)dataTypes.shift(),void 0===ct&&(ct=s.mimeType||jqXHR.getResponseHeader("Content-Type"));if(ct)for(type in contents)if(contents[type]&&contents[type].test(ct)){dataTypes.unshift(type);break}if(dataTypes[0]in responses)finalDataType=dataTypes[0];else{for(type in responses){if(!dataTypes[0]||s.converters[type+" "+dataTypes[0]]){finalDataType=type;break}firstDataType||(firstDataType=type)}finalDataType=finalDataType||firstDataType}if(finalDataType)return finalDataType!==dataTypes[0]&&dataTypes.unshift(finalDataType),responses[finalDataType]}(s,jqXHR,responses)),response=function(s,response,jqXHR,isSuccess){var conv2,current,conv,tmp,prev,converters={},dataTypes=s.dataTypes.slice();if(dataTypes[1])for(conv in s.converters)converters[conv.toLowerCase()]=s.converters[conv];for(current=dataTypes.shift();current;)if(s.responseFields[current]&&(jqXHR[s.responseFields[current]]=response),!prev&&isSuccess&&s.dataFilter&&(response=s.dataFilter(response,s.dataType)),prev=current,current=dataTypes.shift())if("*"===current)current=prev;else if("*"!==prev&&prev!==current){if(!(conv=converters[prev+" "+current]||converters["* "+current]))for(conv2 in converters)if((tmp=conv2.split(" "))[1]===current&&(conv=converters[prev+" "+tmp[0]]||converters["* "+tmp[0]])){!0===conv?conv=converters[conv2]:!0!==converters[conv2]&&(current=tmp[0],dataTypes.unshift(tmp[1]));break}if(!0!==conv)if(conv&&s.throws)response=conv(response);else try{response=conv(response)}catch(e){return{state:"parsererror",error:conv?e:"No conversion from "+prev+" to "+current}}}return{state:"success",data:response}}(s,response,jqXHR,isSuccess),isSuccess?(s.ifModified&&((modified=jqXHR.getResponseHeader("Last-Modified"))&&(jQuery.lastModified[cacheURL]=modified),(modified=jqXHR.getResponseHeader("etag"))&&(jQuery.etag[cacheURL]=modified)),204===status||"HEAD"===s.type?statusText="nocontent":304===status?statusText="notmodified":(statusText=response.state,success=response.data,isSuccess=!(error=response.error))):(error=statusText,!status&&statusText||(statusText="error",status<0&&(status=0))),jqXHR.status=status,jqXHR.statusText=(nativeStatusText||statusText)+"",isSuccess?deferred.resolveWith(callbackContext,[success,statusText,jqXHR]):deferred.rejectWith(callbackContext,[jqXHR,statusText,error]),jqXHR.statusCode(statusCode),statusCode=void 0,fireGlobals&&globalEventContext.trigger(isSuccess?"ajaxSuccess":"ajaxError",[jqXHR,s,isSuccess?success:error]),completeDeferred.fireWith(callbackContext,[jqXHR,statusText]),fireGlobals&&(globalEventContext.trigger("ajaxComplete",[jqXHR,s]),--jQuery.active||jQuery.event.trigger("ajaxStop")))}return jqXHR},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json")},getScript:function(url,callback){return jQuery.get(url,void 0,callback,"script")}}),jQuery.each(["get","post"],function(i,method){jQuery[method]=function(url,data,callback,type){return isFunction(data)&&(type=type||callback,callback=data,data=void 0),jQuery.ajax(jQuery.extend({url:url,type:method,dataType:type,data:data,success:callback},jQuery.isPlainObject(url)&&url))}}),jQuery._evalUrl=function(url){return jQuery.ajax({url:url,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},jQuery.fn.extend({wrapAll:function(html){var wrap;return this[0]&&(isFunction(html)&&(html=html.call(this[0])),wrap=jQuery(html,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&wrap.insertBefore(this[0]),wrap.map(function(){for(var elem=this;elem.firstElementChild;)elem=elem.firstElementChild;return elem}).append(this)),this},wrapInner:function(html){return isFunction(html)?this.each(function(i){jQuery(this).wrapInner(html.call(this,i))}):this.each(function(){var self=jQuery(this),contents=self.contents();contents.length?contents.wrapAll(html):self.append(html)})},wrap:function(html){var htmlIsFunction=isFunction(html);return this.each(function(i){jQuery(this).wrapAll(htmlIsFunction?html.call(this,i):html)})},unwrap:function(selector){return this.parent(selector).not("body").each(function(){jQuery(this).replaceWith(this.childNodes)}),this}}),jQuery.expr.pseudos.hidden=function(elem){return!jQuery.expr.pseudos.visible(elem)},jQuery.expr.pseudos.visible=function(elem){return!!(elem.offsetWidth||elem.offsetHeight||elem.getClientRects().length)},jQuery.ajaxSettings.xhr=function(){try{return new window.XMLHttpRequest}catch(e){}};var xhrSuccessStatus={0:200,1223:204},xhrSupported=jQuery.ajaxSettings.xhr();support.cors=!!xhrSupported&&"withCredentials"in xhrSupported,support.ajax=xhrSupported=!!xhrSupported,jQuery.ajaxTransport(function(options){var callback,errorCallback;if(support.cors||xhrSupported&&!options.crossDomain)return{send:function(headers,complete){var i,xhr=options.xhr();if(xhr.open(options.type,options.url,options.async,options.username,options.password),options.xhrFields)for(i in options.xhrFields)xhr[i]=options.xhrFields[i];for(i in options.mimeType&&xhr.overrideMimeType&&xhr.overrideMimeType(options.mimeType),options.crossDomain||headers["X-Requested-With"]||(headers["X-Requested-With"]="XMLHttpRequest"),headers)xhr.setRequestHeader(i,headers[i]);callback=function(type){return function(){callback&&(callback=errorCallback=xhr.onload=xhr.onerror=xhr.onabort=xhr.ontimeout=xhr.onreadystatechange=null,"abort"===type?xhr.abort():"error"===type?"number"!=typeof xhr.status?complete(0,"error"):complete(xhr.status,xhr.statusText):complete(xhrSuccessStatus[xhr.status]||xhr.status,xhr.statusText,"text"!==(xhr.responseType||"text")||"string"!=typeof xhr.responseText?{binary:xhr.response}:{text:xhr.responseText},xhr.getAllResponseHeaders()))}},xhr.onload=callback(),errorCallback=xhr.onerror=xhr.ontimeout=callback("error"),void 0!==xhr.onabort?xhr.onabort=errorCallback:xhr.onreadystatechange=function(){4===xhr.readyState&&window.setTimeout(function(){callback&&errorCallback()})},callback=callback("abort");try{xhr.send(options.hasContent&&options.data||null)}catch(e){if(callback)throw e}},abort:function(){callback&&callback()}}}),jQuery.ajaxPrefilter(function(s){s.crossDomain&&(s.contents.script=!1)}),jQuery.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(text){return jQuery.globalEval(text),text}}}),jQuery.ajaxPrefilter("script",function(s){void 0===s.cache&&(s.cache=!1),s.crossDomain&&(s.type="GET")}),jQuery.ajaxTransport("script",function(s){var script,callback;if(s.crossDomain)return{send:function(_,complete){script=jQuery("<script>").prop({charset:s.scriptCharset,src:s.url}).on("load error",callback=function(evt){script.remove(),callback=null,evt&&complete("error"===evt.type?404:200,evt.type)}),document.head.appendChild(script[0])},abort:function(){callback&&callback()}}});var body,oldCallbacks=[],rjsonp=/(=)\?(?=&|$)|\?\?/;jQuery.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var callback=oldCallbacks.pop()||jQuery.expando+"_"+nonce++;return this[callback]=!0,callback}}),jQuery.ajaxPrefilter("json jsonp",function(s,originalSettings,jqXHR){var callbackName,overwritten,responseContainer,jsonProp=!1!==s.jsonp&&(rjsonp.test(s.url)?"url":"string"==typeof s.data&&0===(s.contentType||"").indexOf("application/x-www-form-urlencoded")&&rjsonp.test(s.data)&&"data");if(jsonProp||"jsonp"===s.dataTypes[0])return callbackName=s.jsonpCallback=isFunction(s.jsonpCallback)?s.jsonpCallback():s.jsonpCallback,jsonProp?s[jsonProp]=s[jsonProp].replace(rjsonp,"$1"+callbackName):!1!==s.jsonp&&(s.url+=(rquery.test(s.url)?"&":"?")+s.jsonp+"="+callbackName),s.converters["script json"]=function(){return responseContainer||jQuery.error(callbackName+" was not called"),responseContainer[0]},s.dataTypes[0]="json",overwritten=window[callbackName],window[callbackName]=function(){responseContainer=arguments},jqXHR.always(function(){void 0===overwritten?jQuery(window).removeProp(callbackName):window[callbackName]=overwritten,s[callbackName]&&(s.jsonpCallback=originalSettings.jsonpCallback,oldCallbacks.push(callbackName)),responseContainer&&isFunction(overwritten)&&overwritten(responseContainer[0]),responseContainer=overwritten=void 0}),"script"}),support.createHTMLDocument=((body=document.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===body.childNodes.length),jQuery.parseHTML=function(data,context,keepScripts){return"string"!=typeof data?[]:("boolean"==typeof context&&(keepScripts=context,context=!1),context||(support.createHTMLDocument?((base=(context=document.implementation.createHTMLDocument("")).createElement("base")).href=document.location.href,context.head.appendChild(base)):context=document),parsed=rsingleTag.exec(data),scripts=!keepScripts&&[],parsed?[context.createElement(parsed[1])]:(parsed=buildFragment([data],context,scripts),scripts&&scripts.length&&jQuery(scripts).remove(),jQuery.merge([],parsed.childNodes)));var base,parsed,scripts},jQuery.fn.load=function(url,params,callback){var selector,type,response,self=this,off=url.indexOf(" ");return off>-1&&(selector=stripAndCollapse(url.slice(off)),url=url.slice(0,off)),isFunction(params)?(callback=params,params=void 0):params&&"object"==typeof params&&(type="POST"),self.length>0&&jQuery.ajax({url:url,type:type||"GET",dataType:"html",data:params}).done(function(responseText){response=arguments,self.html(selector?jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector):responseText)}).always(callback&&function(jqXHR,status){self.each(function(){callback.apply(this,response||[jqXHR.responseText,status,jqXHR])})}),this},jQuery.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(i,type){jQuery.fn[type]=function(fn){return this.on(type,fn)}}),jQuery.expr.pseudos.animated=function(elem){return jQuery.grep(jQuery.timers,function(fn){return elem===fn.elem}).length},jQuery.offset={setOffset:function(elem,options,i){var curPosition,curLeft,curCSSTop,curTop,curOffset,curCSSLeft,position=jQuery.css(elem,"position"),curElem=jQuery(elem),props={};"static"===position&&(elem.style.position="relative"),curOffset=curElem.offset(),curCSSTop=jQuery.css(elem,"top"),curCSSLeft=jQuery.css(elem,"left"),("absolute"===position||"fixed"===position)&&(curCSSTop+curCSSLeft).indexOf("auto")>-1?(curTop=(curPosition=curElem.position()).top,curLeft=curPosition.left):(curTop=parseFloat(curCSSTop)||0,curLeft=parseFloat(curCSSLeft)||0),isFunction(options)&&(options=options.call(elem,i,jQuery.extend({},curOffset))),null!=options.top&&(props.top=options.top-curOffset.top+curTop),null!=options.left&&(props.left=options.left-curOffset.left+curLeft),"using"in options?options.using.call(elem,props):curElem.css(props)}},jQuery.fn.extend({offset:function(options){if(arguments.length)return void 0===options?this:this.each(function(i){jQuery.offset.setOffset(this,options,i)});var rect,win,elem=this[0];return elem?elem.getClientRects().length?(rect=elem.getBoundingClientRect(),win=elem.ownerDocument.defaultView,{top:rect.top+win.pageYOffset,left:rect.left+win.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var offsetParent,offset,doc,elem=this[0],parentOffset={top:0,left:0};if("fixed"===jQuery.css(elem,"position"))offset=elem.getBoundingClientRect();else{for(offset=this.offset(),doc=elem.ownerDocument,offsetParent=elem.offsetParent||doc.documentElement;offsetParent&&(offsetParent===doc.body||offsetParent===doc.documentElement)&&"static"===jQuery.css(offsetParent,"position");)offsetParent=offsetParent.parentNode;offsetParent&&offsetParent!==elem&&1===offsetParent.nodeType&&((parentOffset=jQuery(offsetParent).offset()).top+=jQuery.css(offsetParent,"borderTopWidth",!0),parentOffset.left+=jQuery.css(offsetParent,"borderLeftWidth",!0))}return{top:offset.top-parentOffset.top-jQuery.css(elem,"marginTop",!0),left:offset.left-parentOffset.left-jQuery.css(elem,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var offsetParent=this.offsetParent;offsetParent&&"static"===jQuery.css(offsetParent,"position");)offsetParent=offsetParent.offsetParent;return offsetParent||documentElement})}}),jQuery.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(method,prop){var top="pageYOffset"===prop;jQuery.fn[method]=function(val){return access(this,function(elem,method,val){var win;if(isWindow(elem)?win=elem:9===elem.nodeType&&(win=elem.defaultView),void 0===val)return win?win[prop]:elem[method];win?win.scrollTo(top?win.pageXOffset:val,top?val:win.pageYOffset):elem[method]=val},method,val,arguments.length)}}),jQuery.each(["top","left"],function(i,prop){jQuery.cssHooks[prop]=addGetHookIf(support.pixelPosition,function(elem,computed){if(computed)return computed=curCSS(elem,prop),rnumnonpx.test(computed)?jQuery(elem).position()[prop]+"px":computed})}),jQuery.each({Height:"height",Width:"width"},function(name,type){jQuery.each({padding:"inner"+name,content:type,"":"outer"+name},function(defaultExtra,funcName){jQuery.fn[funcName]=function(margin,value){var chainable=arguments.length&&(defaultExtra||"boolean"!=typeof margin),extra=defaultExtra||(!0===margin||!0===value?"margin":"border");return access(this,function(elem,type,value){var doc;return isWindow(elem)?0===funcName.indexOf("outer")?elem["inner"+name]:elem.document.documentElement["client"+name]:9===elem.nodeType?(doc=elem.documentElement,Math.max(elem.body["scroll"+name],doc["scroll"+name],elem.body["offset"+name],doc["offset"+name],doc["client"+name])):void 0===value?jQuery.css(elem,type,extra):jQuery.style(elem,type,value,extra)},type,chainable?margin:void 0,chainable)}})}),jQuery.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(i,name){jQuery.fn[name]=function(data,fn){return arguments.length>0?this.on(name,null,data,fn):this.trigger(name)}}),jQuery.fn.extend({hover:function(fnOver,fnOut){return this.mouseenter(fnOver).mouseleave(fnOut||fnOver)}}),jQuery.fn.extend({bind:function(types,data,fn){return this.on(types,null,data,fn)},unbind:function(types,fn){return this.off(types,null,fn)},delegate:function(selector,types,data,fn){return this.on(types,selector,data,fn)},undelegate:function(selector,types,fn){return 1===arguments.length?this.off(selector,"**"):this.off(types,selector||"**",fn)}}),jQuery.proxy=function(fn,context){var tmp,args,proxy;if("string"==typeof context&&(tmp=fn[context],context=fn,fn=tmp),isFunction(fn))return args=slice.call(arguments,2),(proxy=function(){return fn.apply(context||this,args.concat(slice.call(arguments)))}).guid=fn.guid=fn.guid||jQuery.guid++,proxy},jQuery.holdReady=function(hold){hold?jQuery.readyWait++:jQuery.ready(!0)},jQuery.isArray=Array.isArray,jQuery.parseJSON=JSON.parse,jQuery.nodeName=nodeName,jQuery.isFunction=isFunction,jQuery.isWindow=isWindow,jQuery.camelCase=camelCase,jQuery.type=toType,jQuery.now=Date.now,jQuery.isNumeric=function(obj){var type=jQuery.type(obj);return("number"===type||"string"===type)&&!isNaN(obj-parseFloat(obj))};var _jQuery=window.jQuery,_$=window.$;return jQuery.noConflict=function(deep){return window.$===jQuery&&(window.$=_$),deep&&window.jQuery===jQuery&&(window.jQuery=_jQuery),jQuery},noGlobal||(window.jQuery=window.$=jQuery),jQuery},module.exports=global.document?factory(global,!0):function(w){if(!w.document)throw new Error("jQuery requires a window with a document");return factory(w)}}(module={exports:{}},module.exports),module.exports),_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass)},possibleConstructorReturn=function(self,call){if(!self)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!call||"object"!=typeof call&&"function"!=typeof call?self:call},slicedToArray=function(){return function(arr,i){if(Array.isArray(arr))return arr;if(Symbol.iterator in Object(arr))return function(arr,i){var _arr=[],_n=!0,_d=!1,_e=void 0;try{for(var _s,_i=arr[Symbol.iterator]();!(_n=(_s=_i.next()).done)&&(_arr.push(_s.value),!i||_arr.length!==i);_n=!0);}catch(err){_d=!0,_e=err}finally{try{!_n&&_i.return&&_i.return()}finally{if(_d)throw _e}}return _arr}(arr,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),toConsumableArray=function(arr){if(Array.isArray(arr)){for(var i=0,arr2=Array(arr.length);i<arr.length;i++)arr2[i]=arr[i];return arr2}return Array.from(arr)},NodeTypeError=function(_Error){function NodeTypeError(node,message){classCallCheck(this,NodeTypeError);var _this=possibleConstructorReturn(this,(NodeTypeError.__proto__||Object.getPrototypeOf(NodeTypeError)).call(this,message));return _this.node=node,_this}return inherits(NodeTypeError,_Error),NodeTypeError}(Error),OutOfRangeError=function(_Error2){function OutOfRangeError(targetIndex,maxIndex,message){classCallCheck(this,OutOfRangeError);var _this2=possibleConstructorReturn(this,(OutOfRangeError.__proto__||Object.getPrototypeOf(OutOfRangeError)).call(this,message));return _this2.targetIndex=targetIndex,_this2.maxIndex=maxIndex,_this2}return inherits(OutOfRangeError,_Error2),OutOfRangeError}(Error),TerminusError=function(_Error3){function TerminusError(terminusType,terminusCondition,message){classCallCheck(this,TerminusError);var _this3=possibleConstructorReturn(this,(TerminusError.__proto__||Object.getPrototypeOf(TerminusError)).call(this,message));return _this3.terminusType=terminusType,_this3.terminusCondition=terminusCondition,_this3}return inherits(TerminusError,_Error3),TerminusError}(Error),CFIAssertionError=function(_Error4){function CFIAssertionError(expectedAssertion,targetElementAssertion,message){classCallCheck(this,CFIAssertionError);var _this4=possibleConstructorReturn(this,(CFIAssertionError.__proto__||Object.getPrototypeOf(CFIAssertionError)).call(this,message));return _this4.expectedAssertion=expectedAssertion,_this4.targetElementAssertion=targetElementAssertion,_this4}return inherits(CFIAssertionError,_Error4),CFIAssertionError}(Error);function arrayMap(array,iteratee){for(var index=-1,length=null==array?0:array.length,result=Array(length);++index<length;)result[index]=iteratee(array[index],index,array);return result}var freeGlobal="object"==typeof global&&global&&global.Object===Object&&global,freeSelf="object"==typeof self&&self&&self.Object===Object&&self,root=freeGlobal||freeSelf||Function("return this")(),Symbol$1=root.Symbol,objectProto=Object.prototype,hasOwnProperty=objectProto.hasOwnProperty,nativeObjectToString=objectProto.toString,symToStringTag=Symbol$1?Symbol$1.toStringTag:void 0;var nativeObjectToString$1=Object.prototype.toString;var nullTag="[object Null]",undefinedTag="[object Undefined]",symToStringTag$1=Symbol$1?Symbol$1.toStringTag:void 0;function baseGetTag(value){return null==value?void 0===value?undefinedTag:nullTag:symToStringTag$1&&symToStringTag$1 in Object(value)?function(value){var isOwn=hasOwnProperty.call(value,symToStringTag),tag=value[symToStringTag];try{value[symToStringTag]=void 0;var unmasked=!0}catch(e){}var result=nativeObjectToString.call(value);return unmasked&&(isOwn?value[symToStringTag]=tag:delete value[symToStringTag]),result}(value):function(value){return nativeObjectToString$1.call(value)}(value)}function isObject(value){var type=typeof value;return null!=value&&("object"==type||"function"==type)}var asyncTag="[object AsyncFunction]",funcTag="[object Function]",genTag="[object GeneratorFunction]",proxyTag="[object Proxy]";function isFunction(value){if(!isObject(value))return!1;var tag=baseGetTag(value);return tag==funcTag||tag==genTag||tag==asyncTag||tag==proxyTag}var uid,coreJsData=root["__core-js_shared__"],maskSrcKey=(uid=/[^.]+$/.exec(coreJsData&&coreJsData.keys&&coreJsData.keys.IE_PROTO||""))?"Symbol(src)_1."+uid:"";var funcToString=Function.prototype.toString;var reIsHostCtor=/^\[object .+?Constructor\]$/,funcProto$1=Function.prototype,objectProto$2=Object.prototype,funcToString$1=funcProto$1.toString,hasOwnProperty$1=objectProto$2.hasOwnProperty,reIsNative=RegExp("^"+funcToString$1.call(hasOwnProperty$1).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function baseIsNative(value){return!(!isObject(value)||maskSrcKey&&maskSrcKey in value)&&(isFunction(value)?reIsNative:reIsHostCtor).test(function(func){if(null!=func){try{return funcToString.call(func)}catch(e){}try{return func+""}catch(e){}}return""}(value))}function getNative(object,key){var value=function(object,key){return null==object?void 0:object[key]}(object,key);return baseIsNative(value)?value:void 0}var nativeCreate=getNative(Object,"create");var HASH_UNDEFINED="__lodash_hash_undefined__",hasOwnProperty$2=Object.prototype.hasOwnProperty;var hasOwnProperty$3=Object.prototype.hasOwnProperty;var HASH_UNDEFINED$1="__lodash_hash_undefined__";function Hash(entries){var index=-1,length=null==entries?0:entries.length;for(this.clear();++index<length;){var entry=entries[index];this.set(entry[0],entry[1])}}function assocIndexOf(array,key){for(var value,other,length=array.length;length--;)if((value=array[length][0])===(other=key)||value!=value&&other!=other)return length;return-1}Hash.prototype.clear=function(){this.__data__=nativeCreate?nativeCreate(null):{},this.size=0},Hash.prototype.delete=function(key){var result=this.has(key)&&delete this.__data__[key];return this.size-=result?1:0,result},Hash.prototype.get=function(key){var data=this.__data__;if(nativeCreate){var result=data[key];return result===HASH_UNDEFINED?void 0:result}return hasOwnProperty$2.call(data,key)?data[key]:void 0},Hash.prototype.has=function(key){var data=this.__data__;return nativeCreate?void 0!==data[key]:hasOwnProperty$3.call(data,key)},Hash.prototype.set=function(key,value){var data=this.__data__;return this.size+=this.has(key)?0:1,data[key]=nativeCreate&&void 0===value?HASH_UNDEFINED$1:value,this};var splice=Array.prototype.splice;function ListCache(entries){var index=-1,length=null==entries?0:entries.length;for(this.clear();++index<length;){var entry=entries[index];this.set(entry[0],entry[1])}}ListCache.prototype.clear=function(){this.__data__=[],this.size=0},ListCache.prototype.delete=function(key){var data=this.__data__,index=assocIndexOf(data,key);return!(index<0||(index==data.length-1?data.pop():splice.call(data,index,1),--this.size,0))},ListCache.prototype.get=function(key){var data=this.__data__,index=assocIndexOf(data,key);return index<0?void 0:data[index][1]},ListCache.prototype.has=function(key){return assocIndexOf(this.__data__,key)>-1},ListCache.prototype.set=function(key,value){var data=this.__data__,index=assocIndexOf(data,key);return index<0?(++this.size,data.push([key,value])):data[index][1]=value,this};var Map=getNative(root,"Map");function getMapData(map,key){var value,type,data=map.__data__;return("string"==(type=typeof(value=key))||"number"==type||"symbol"==type||"boolean"==type?"__proto__"!==value:null===value)?data["string"==typeof key?"string":"hash"]:data.map}function MapCache(entries){var index=-1,length=null==entries?0:entries.length;for(this.clear();++index<length;){var entry=entries[index];this.set(entry[0],entry[1])}}MapCache.prototype.clear=function(){this.size=0,this.__data__={hash:new Hash,map:new(Map||ListCache),string:new Hash}},MapCache.prototype.delete=function(key){var result=getMapData(this,key).delete(key);return this.size-=result?1:0,result},MapCache.prototype.get=function(key){return getMapData(this,key).get(key)},MapCache.prototype.has=function(key){return getMapData(this,key).has(key)},MapCache.prototype.set=function(key,value){var data=getMapData(this,key),size=data.size;return data.set(key,value),this.size+=data.size==size?0:1,this};var HASH_UNDEFINED$2="__lodash_hash_undefined__";function SetCache(values){var index=-1,length=null==values?0:values.length;for(this.__data__=new MapCache;++index<length;)this.add(values[index])}function baseIsNaN(value){return value!=value}function arrayIncludes(array,value){return!!(null==array?0:array.length)&&function(array,value,fromIndex){return value==value?function(array,value,fromIndex){for(var index=fromIndex-1,length=array.length;++index<length;)if(array[index]===value)return index;return-1}(array,value,fromIndex):function(array,predicate,fromIndex,fromRight){for(var length=array.length,index=fromIndex+(fromRight?1:-1);fromRight?index--:++index<length;)if(predicate(array[index],index,array))return index;return-1}(array,baseIsNaN,fromIndex)}(array,value,0)>-1}function arrayIncludesWith(array,value,comparator){for(var index=-1,length=null==array?0:array.length;++index<length;)if(comparator(value,array[index]))return!0;return!1}function baseUnary(func){return function(value){return func(value)}}function cacheHas(cache,key){return cache.has(key)}SetCache.prototype.add=SetCache.prototype.push=function(value){return this.__data__.set(value,HASH_UNDEFINED$2),this},SetCache.prototype.has=function(value){return this.__data__.has(value)};var nativeMin=Math.min;function identity(value){return value}var nativeMax=Math.max;var defineProperty$1=function(){try{var func=getNative(Object,"defineProperty");return func({},"",{}),func}catch(e){}}(),baseSetToString=defineProperty$1?function(func,string){return defineProperty$1(func,"toString",{configurable:!0,enumerable:!1,value:(value=string,function(){return value}),writable:!0});var value}:identity,HOT_COUNT=800,HOT_SPAN=16,nativeNow=Date.now;var func,count,lastCalled,setToString=(func=baseSetToString,count=0,lastCalled=0,function(){var stamp=nativeNow(),remaining=HOT_SPAN-(stamp-lastCalled);if(lastCalled=stamp,remaining>0){if(++count>=HOT_COUNT)return arguments[0]}else count=0;return func.apply(void 0,arguments)});var MAX_SAFE_INTEGER=9007199254740991;function isArrayLike(value){return null!=value&&function(value){return"number"==typeof value&&value>-1&&value%1==0&&value<=MAX_SAFE_INTEGER}(value.length)&&!isFunction(value)}function castArrayLikeObject(value){return function(value){return function(value){return null!=value&&"object"==typeof value}(value)&&isArrayLike(value)}(value)?value:[]}var intersection=function(func,start){return setToString(function(func,start,transform){return start=nativeMax(void 0===start?func.length-1:start,0),function(){for(var args=arguments,index=-1,length=nativeMax(args.length-start,0),array=Array(length);++index<length;)array[index]=args[start+index];index=-1;for(var otherArgs=Array(start+1);++index<start;)otherArgs[index]=args[index];return otherArgs[start]=transform(array),function(func,thisArg,args){switch(args.length){case 0:return func.call(thisArg);case 1:return func.call(thisArg,args[0]);case 2:return func.call(thisArg,args[0],args[1]);case 3:return func.call(thisArg,args[0],args[1],args[2])}return func.apply(thisArg,args)}(func,this,otherArgs)}}(func,start,identity),func+"")}(function(arrays){var mapped=arrayMap(arrays,castArrayLikeObject);return mapped.length&&mapped[0]===arrays[0]?function(arrays,iteratee,comparator){for(var includes=comparator?arrayIncludesWith:arrayIncludes,length=arrays[0].length,othLength=arrays.length,othIndex=othLength,caches=Array(othLength),maxLength=1/0,result=[];othIndex--;){var array=arrays[othIndex];othIndex&&iteratee&&(array=arrayMap(array,baseUnary(iteratee))),maxLength=nativeMin(array.length,maxLength),caches[othIndex]=!comparator&&(iteratee||length>=120&&array.length>=120)?new SetCache(othIndex&&array):void 0}array=arrays[0];var index=-1,seen=caches[0];outer:for(;++index<length&&result.length<maxLength;){var value=array[index],computed=iteratee?iteratee(value):value;if(value=comparator||0!==value?value:0,!(seen?cacheHas(seen,computed):includes(result,computed,comparator))){for(othIndex=othLength;--othIndex;){var cache=caches[othIndex];if(!(cache?cacheHas(cache,computed):includes(arrays[othIndex],computed,comparator)))continue outer}seen&&seen.push(computed),result.push(value)}}return result}(mapped):[]});function matchesLocalNameOrElement(element,otherNameOrElement){return"string"==typeof otherNameOrElement?(element.localName||element.nodeName)===otherNameOrElement:element===otherNameOrElement}function isElementBlacklisted(element,classBlacklist,elementBlacklist,idBlacklist){if(classBlacklist&&classBlacklist.length){var classList=function(element){var className=element.className;return"string"==typeof className?className.split(/\s/):"object"===(void 0===className?"undefined":_typeof(className))&&"baseVal"in className?className.baseVal.split(/\s/):[]}(element);if(1===classList.length&&classBlacklist.includes(classList[0]))return!1;if(classList.length&&intersection(classBlacklist,classList).length)return!1}if(elementBlacklist&&elementBlacklist.length&&(element.tagName&&elementBlacklist.find(function(blacklistedTag){return matchesLocalNameOrElement(element,blacklistedTag.toLowerCase())})))return!1;if(idBlacklist&&idBlacklist.length){var id=element.id;if(id&&id.length&&idBlacklist.includes(id))return!1}return!0}function applyBlacklist(elements,classBlacklist,elementBlacklist,idBlacklist){return[].concat(toConsumableArray(elements)).filter(function(element){return isElementBlacklisted(element,classBlacklist,elementBlacklist,idBlacklist)})}function retrieveItemRefHref(itemRefElement,packageDocument){var idref=itemRefElement.getAttribute("idref");if(idref){var node=packageDocument.querySelector("[id="+idref+"]");if(node)return node.getAttribute("href")}}var util=Object.freeze({matchesLocalNameOrElement:matchesLocalNameOrElement,applyBlacklist:applyBlacklist,retrieveItemRefHref:retrieveItemRefHref});function injectCFIMarkerIntoText($textNodeList,textOffset,elementToInject){for(var $textNodeListToMutate=$textNodeList,ownerDocument=$textNodeList[0].ownerDocument,currTextPosition=0,nodeNum=0;nodeNum<=$textNodeList.length;nodeNum+=1)if($textNodeList[nodeNum].nodeType===Node.TEXT_NODE){var $injectedNode=void 0,currNodeMaxIndex=$textNodeList[nodeNum].nodeValue.length+currTextPosition,nodeOffset=textOffset-currTextPosition;if(currNodeMaxIndex>textOffset){var originalText=$textNodeList[nodeNum].nodeValue;$textNodeListToMutate[nodeNum].nodeValue=originalText.slice(0,nodeOffset),$injectedNode=jquery(elementToInject).insertAfter($textNodeList.eq(nodeNum));var newText=originalText.slice(nodeOffset,originalText.length),newTextNode=ownerDocument.createTextNode(newText);return jquery(newTextNode).insertAfter($injectedNode),$injectedNode}if(currNodeMaxIndex===textOffset)return $injectedNode=jquery(elementToInject).insertAfter($textNodeList.eq(nodeNum));currTextPosition=currNodeMaxIndex}else $textNodeList[nodeNum].nodeType===Node.COMMENT_NODE?currTextPosition=$textNodeList[nodeNum].nodeValue.length+7+currTextPosition:$textNodeList[nodeNum].nodeType===Node.PROCESSING_INSTRUCTION_NODE&&(currTextPosition=$textNodeList[nodeNum].nodeValue.length+$textNodeList[nodeNum].target.length+5);throw new TerminusError("Text","Text offset:"+textOffset,"The offset exceeded the length of the text")}function followIndexStep(CFIStepValue,$currNode,classBlacklist,elementBlacklist,idBlacklist){return CFIStepValue%2==0?function(CFIStepValue,$currNode,classBlacklist,elementBlacklist,idBlacklist){var jqueryTargetNodeIndex=CFIStepValue/2-1,$blacklistExcluded=jquery(applyBlacklist($currNode.children().toArray(),classBlacklist,elementBlacklist,idBlacklist)),numElements=$blacklistExcluded.length;if(jqueryTargetNodeIndex>numElements-1)throw new OutOfRangeError(jqueryTargetNodeIndex,numElements-1,"");return jquery($blacklistExcluded[jqueryTargetNodeIndex])}(CFIStepValue,$currNode,classBlacklist,elementBlacklist,idBlacklist):function(CFIStepValue,$currNode,classBlacklist,elementBlacklist,idBlacklist){var currLogicalTextNodeIndex=void 0,prevNodeWasTextNode=void 0,$elementsWithoutMarkers=jquery(applyBlacklist($currNode.contents().toArray(),classBlacklist,elementBlacklist,idBlacklist)),targetLogicalTextNodeIndex=(parseInt(CFIStepValue,10)+1)/2-1;currLogicalTextNodeIndex=0,prevNodeWasTextNode=!1;var $targetTextNodeList=$elementsWithoutMarkers.filter(function(){return currLogicalTextNodeIndex===targetLogicalTextNodeIndex?this.nodeType===Node.TEXT_NODE||this.nodeType===Node.COMMENT_NODE||this.nodeType===Node.PROCESSING_INSTRUCTION_NODE?(prevNodeWasTextNode=!0,!0):!(!prevNodeWasTextNode||this.nodeType===Node.TEXT_NODE||(currLogicalTextNodeIndex+=1,prevNodeWasTextNode=!1,1)):(this.nodeType===Node.TEXT_NODE||this.nodeType===Node.COMMENT_NODE||this.nodeType===Node.PROCESSING_INSTRUCTION_NODE?prevNodeWasTextNode=!0:prevNodeWasTextNode||this.nodeType!==Node.ELEMENT_NODE?prevNodeWasTextNode&&this.nodeType!==Node.TEXT_NODE&&this!==$elementsWithoutMarkers.lastChild&&(currLogicalTextNodeIndex+=1,prevNodeWasTextNode=!1):(currLogicalTextNodeIndex+=1,prevNodeWasTextNode=!0),!1)});if(0===$targetTextNodeList.length)throw new OutOfRangeError(targetLogicalTextNodeIndex,currLogicalTextNodeIndex,"Index out of range");return $targetTextNodeList}(CFIStepValue,$currNode,classBlacklist,elementBlacklist,idBlacklist)}function followIndirectionStep(CFIStepValue,$currNode,classBlacklist,elementBlacklist,idBlacklist){var $contentDocument=void 0,$blacklistExcluded=void 0;if(void 0===$currNode||!matchesLocalNameOrElement($currNode[0],"iframe"))throw new NodeTypeError($currNode,"expected an iframe element");if(matchesLocalNameOrElement($currNode[0],"iframe"))return $contentDocument=$currNode.contents(),$blacklistExcluded=jquery(applyBlacklist($contentDocument.children().toArray(),classBlacklist,elementBlacklist,idBlacklist)),followIndexStep(CFIStepValue,jquery($blacklistExcluded[0]),classBlacklist,elementBlacklist,idBlacklist)}function textTermination($currNode,textOffset,elementToInject){if(void 0===$currNode)throw new NodeTypeError($currNode,"expected a terminating node, or node list");if(0===$currNode.length)throw new TerminusError("Text","Text offset:"+textOffset,"no nodes found for termination condition");return injectCFIMarkerIntoText($currNode,textOffset,elementToInject)}function targetIdMatchesIdAssertion($foundNode,idAssertion){return $foundNode.attr("id")===idAssertion}var instructions=Object.freeze({injectCFIMarkerIntoText:injectCFIMarkerIntoText,followIndexStep:followIndexStep,getNextNode:followIndexStep,followIndirectionStep:followIndirectionStep,textTermination:textTermination,targetIdMatchesIdAssertion:targetIdMatchesIdAssertion,applyBlacklist:applyBlacklist});function peg$SyntaxError(message,expected,found,location){this.message=message,this.expected=expected,this.found=found,this.location=location,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,peg$SyntaxError)}!function(child,parent){function ctor(){this.constructor=child}ctor.prototype=parent.prototype,child.prototype=new ctor}(peg$SyntaxError,Error),peg$SyntaxError.buildMessage=function(expected,found){var DESCRIBE_EXPECTATION_FNS={literal:function(expectation){return'"'+literalEscape(expectation.text)+'"'},class:function(expectation){var i,escapedParts="";for(i=0;i<expectation.parts.length;i++)escapedParts+=expectation.parts[i]instanceof Array?classEscape(expectation.parts[i][0])+"-"+classEscape(expectation.parts[i][1]):classEscape(expectation.parts[i]);return"["+(expectation.inverted?"^":"")+escapedParts+"]"},any:function(expectation){return"any character"},end:function(expectation){return"end of input"},other:function(expectation){return expectation.description}};function hex(ch){return ch.charCodeAt(0).toString(16).toUpperCase()}function literalEscape(s){return s.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(ch){return"\\x0"+hex(ch)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(ch){return"\\x"+hex(ch)})}function classEscape(s){return s.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(ch){return"\\x0"+hex(ch)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(ch){return"\\x"+hex(ch)})}return"Expected "+function(expected){var i,j,expectation,descriptions=new Array(expected.length);for(i=0;i<expected.length;i++)descriptions[i]=(expectation=expected[i],DESCRIBE_EXPECTATION_FNS[expectation.type](expectation));if(descriptions.sort(),descriptions.length>0){for(i=1,j=1;i<descriptions.length;i++)descriptions[i-1]!==descriptions[i]&&(descriptions[j]=descriptions[i],j++);descriptions.length=j}switch(descriptions.length){case 1:return descriptions[0];case 2:return descriptions[0]+" or "+descriptions[1];default:return descriptions.slice(0,-1).join(", ")+", or "+descriptions[descriptions.length-1]}}(expected)+" but "+function(found){return found?'"'+literalEscape(found)+'"':"end of input"}(found)+" found."};var SyntaxError=peg$SyntaxError,parse=function(input,options){options=void 0!==options?options:{};var peg$result,expected,found,location,peg$FAILED={},peg$startRuleFunctions={fragment:peg$parsefragment},peg$startRuleFunction=peg$parsefragment,peg$c0="epubcfi(",peg$c1=peg$literalExpectation("epubcfi(",!1),peg$c2=")",peg$c3=peg$literalExpectation(")",!1),peg$c4=function(fragmentVal){return{type:"CFIAST",cfiString:fragmentVal}},peg$c5=",",peg$c6=peg$literalExpectation(",",!1),peg$c7=function(stepVal,localPathVal,rangeLocalPath1Val,rangeLocalPath2Val){return{type:"range",path:stepVal,localPath:localPathVal||"",range1:rangeLocalPath1Val,range2:rangeLocalPath2Val}},peg$c8=function(stepVal,localPathVal){return{type:"path",path:stepVal,localPath:localPathVal}},peg$c9=function(localPathStepVal,termStepVal){return{steps:localPathStepVal,termStep:termStepVal||""}},peg$c10="/",peg$c11=peg$literalExpectation("/",!1),peg$c12="[",peg$c13=peg$literalExpectation("[",!1),peg$c14="]",peg$c15=peg$literalExpectation("]",!1),peg$c16=function(stepLengthVal,assertVal){return{type:"indexStep",stepLength:stepLengthVal,idAssertion:assertVal?assertVal[1]:void 0}},peg$c17="!/",peg$c18=peg$literalExpectation("!/",!1),peg$c19=function(stepLengthVal,assertVal){return{type:"indirectionStep",stepLength:stepLengthVal,idAssertion:assertVal?assertVal[1]:void 0}},peg$c20=":",peg$c21=peg$literalExpectation(":",!1),peg$c22=function(textOffsetValue,textLocAssertVal){return{type:"textTerminus",offsetValue:textOffsetValue,textAssertion:textLocAssertVal?textLocAssertVal[1]:void 0}},peg$c23=function(idVal){return idVal},peg$c24=function(csvVal,paramVal){return{type:"textLocationAssertion",csv:csvVal||"",parameter:paramVal||""}},peg$c25=";",peg$c26=peg$literalExpectation(";",!1),peg$c27="=",peg$c28=peg$literalExpectation("=",!1),peg$c29=function(paramLHSVal,paramRHSVal){return{type:"parameter",LHSValue:paramLHSVal||"",RHSValue:paramRHSVal||""}},peg$c30=function(preAssertionVal,postAssertionVal){return{type:"csv",preAssertion:preAssertionVal||"",postAssertion:postAssertionVal||""}},peg$c31=function(stringVal){return stringVal.join("")},peg$c32=function(escSpecCharVal){return escSpecCharVal[1]},peg$c33=/^[1-9]/,peg$c34=peg$classExpectation([["1","9"]],!1,!1),peg$c35=/^[0-9]/,peg$c36=peg$classExpectation([["0","9"]],!1,!1),peg$c37=".",peg$c38=peg$literalExpectation(".",!1),peg$c40="0",peg$c41=peg$literalExpectation("0",!1),peg$c42=function(integerVal){return"0"===integerVal?"0":integerVal[0].concat(integerVal[1].join(""))},peg$c43=" ",peg$c44=peg$literalExpectation(" ",!1),peg$c45=function(){return" "},peg$c46="^",peg$c47=peg$literalExpectation("^",!1),peg$c48=function(){return"^"},peg$c52=function(bracketVal){return bracketVal},peg$c53="(",peg$c54=peg$literalExpectation("(",!1),peg$c55=function(paraVal){return paraVal},peg$c56=function(){return","},peg$c57=function(){return";"},peg$c58=function(){return"="},peg$c59=/^[a-z]/,peg$c60=peg$classExpectation([["a","z"]],!1,!1),peg$c61=/^[A-Z]/,peg$c62=peg$classExpectation([["A","Z"]],!1,!1),peg$c63="-",peg$c64=peg$literalExpectation("-",!1),peg$c65="_",peg$c66=peg$literalExpectation("_",!1),peg$c67="%",peg$c68=peg$literalExpectation("%",!1),peg$c69=function(charVal){return charVal},peg$currPos=0,peg$posDetailsCache=[{line:1,column:1}],peg$maxFailPos=0,peg$maxFailExpected=[],peg$silentFails=0;if("startRule"in options){if(!(options.startRule in peg$startRuleFunctions))throw new Error("Can't start parsing from rule \""+options.startRule+'".');peg$startRuleFunction=peg$startRuleFunctions[options.startRule]}function peg$literalExpectation(text,ignoreCase){return{type:"literal",text:text,ignoreCase:ignoreCase}}function peg$classExpectation(parts,inverted,ignoreCase){return{type:"class",parts:parts,inverted:inverted,ignoreCase:ignoreCase}}function peg$computePosDetails(pos){var p,details=peg$posDetailsCache[pos];if(details)return details;for(p=pos-1;!peg$posDetailsCache[p];)p--;for(details={line:(details=peg$posDetailsCache[p]).line,column:details.column};p<pos;)10===input.charCodeAt(p)?(details.line++,details.column=1):details.column++,p++;return peg$posDetailsCache[pos]=details,details}function peg$computeLocation(startPos,endPos){var startPosDetails=peg$computePosDetails(startPos),endPosDetails=peg$computePosDetails(endPos);return{start:{offset:startPos,line:startPosDetails.line,column:startPosDetails.column},end:{offset:endPos,line:endPosDetails.line,column:endPosDetails.column}}}function peg$fail(expected){peg$currPos<peg$maxFailPos||(peg$currPos>peg$maxFailPos&&(peg$maxFailPos=peg$currPos,peg$maxFailExpected=[]),peg$maxFailExpected.push(expected))}function peg$parsefragment(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,8)===peg$c0?(s1=peg$c0,peg$currPos+=8):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c1)),s1!==peg$FAILED?((s2=function(){var s0,s1,s2,s3,s4,s5,s6;return s0=peg$currPos,(s1=peg$parseindexStep())!==peg$FAILED?((s2=peg$parselocal_path())===peg$FAILED&&(s2=null),s2!==peg$FAILED?(44===input.charCodeAt(peg$currPos)?(s3=peg$c5,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c6)),s3!==peg$FAILED&&(s4=peg$parselocal_path())!==peg$FAILED?(44===input.charCodeAt(peg$currPos)?(s5=peg$c5,peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c6)),s5!==peg$FAILED&&(s6=peg$parselocal_path())!==peg$FAILED?(s1=peg$c7(s1,s2,s4,s6),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}())===peg$FAILED&&(s2=function(){var s0,s1,s2;return s0=peg$currPos,(s1=peg$parseindexStep())!==peg$FAILED&&(s2=peg$parselocal_path())!==peg$FAILED?(s1=peg$c8(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED),s0}()),s2!==peg$FAILED?(41===input.charCodeAt(peg$currPos)?(s3=peg$c2,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c3)),s3!==peg$FAILED?s0=s1=peg$c4(s2):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parselocal_path(){var s0,s1,s2;if(s0=peg$currPos,s1=[],(s2=peg$parseindexStep())===peg$FAILED&&(s2=peg$parseindirectionStep()),s2!==peg$FAILED)for(;s2!==peg$FAILED;)s1.push(s2),(s2=peg$parseindexStep())===peg$FAILED&&(s2=peg$parseindirectionStep());else s1=peg$FAILED;return s1!==peg$FAILED?((s2=function(){var s0,s1,s2,s3,s4,s5,s6;return s0=peg$currPos,58===input.charCodeAt(peg$currPos)?(s1=peg$c20,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c21)),s1!==peg$FAILED&&(s2=peg$parseinteger())!==peg$FAILED?(s3=peg$currPos,91===input.charCodeAt(peg$currPos)?(s4=peg$c12,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c13)),s4!==peg$FAILED&&(s5=function(){var s0,s1,s2;return s0=peg$currPos,(s1=function(){var s0,s1,s2,s3;return s0=peg$currPos,(s1=peg$parsevalue())===peg$FAILED&&(s1=null),s1!==peg$FAILED?(44===input.charCodeAt(peg$currPos)?(s2=peg$c5,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c6)),s2!==peg$FAILED?((s3=peg$parsevalue())===peg$FAILED&&(s3=null),s3!==peg$FAILED?(s1=peg$c30(s1,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}())===peg$FAILED&&(s1=null),s1!==peg$FAILED?((s2=function(){var s0,s1,s2,s3,s4;return s0=peg$currPos,59===input.charCodeAt(peg$currPos)?(s1=peg$c25,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c26)),s1!==peg$FAILED&&(s2=peg$parsevalueNoSpace())!==peg$FAILED?(61===input.charCodeAt(peg$currPos)?(s3=peg$c27,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c28)),s3!==peg$FAILED&&(s4=peg$parsevalueNoSpace())!==peg$FAILED?(s1=peg$c29(s2,s4),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}())===peg$FAILED&&(s2=null),s2!==peg$FAILED?(s1=peg$c24(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}())!==peg$FAILED?(93===input.charCodeAt(peg$currPos)?(s6=peg$c14,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c15)),s6!==peg$FAILED?s3=s4=[s4,s5,s6]:(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED),s3===peg$FAILED&&(s3=null),s3!==peg$FAILED?(s1=peg$c22(s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}())===peg$FAILED&&(s2=null),s2!==peg$FAILED?s0=s1=peg$c9(s1,s2):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseindexStep(){var s0,s1,s2,s3,s4,s5,s6;return s0=peg$currPos,47===input.charCodeAt(peg$currPos)?(s1=peg$c10,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c11)),s1!==peg$FAILED&&(s2=peg$parseinteger())!==peg$FAILED?(s3=peg$currPos,91===input.charCodeAt(peg$currPos)?(s4=peg$c12,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c13)),s4!==peg$FAILED&&(s5=peg$parseidAssertion())!==peg$FAILED?(93===input.charCodeAt(peg$currPos)?(s6=peg$c14,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c15)),s6!==peg$FAILED?s3=s4=[s4,s5,s6]:(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED),s3===peg$FAILED&&(s3=null),s3!==peg$FAILED?s0=s1=peg$c16(s2,s3):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseindirectionStep(){var s0,s1,s2,s3,s4,s5,s6;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c17?(s1=peg$c17,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c18)),s1!==peg$FAILED&&(s2=peg$parseinteger())!==peg$FAILED?(s3=peg$currPos,91===input.charCodeAt(peg$currPos)?(s4=peg$c12,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c13)),s4!==peg$FAILED&&(s5=peg$parseidAssertion())!==peg$FAILED?(93===input.charCodeAt(peg$currPos)?(s6=peg$c14,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c15)),s6!==peg$FAILED?s3=s4=[s4,s5,s6]:(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED),s3===peg$FAILED&&(s3=null),s3!==peg$FAILED?s0=s1=peg$c19(s2,s3):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseidAssertion(){var s1;return(s1=peg$parsevalue())!==peg$FAILED&&(s1=peg$c23(s1)),s1}function peg$parsevalueNoSpace(){var s1,s2;if(s1=[],(s2=peg$parseescapedSpecialChars())===peg$FAILED&&(s2=peg$parsecharacter()),s2!==peg$FAILED)for(;s2!==peg$FAILED;)s1.push(s2),(s2=peg$parseescapedSpecialChars())===peg$FAILED&&(s2=peg$parsecharacter());else s1=peg$FAILED;return s1!==peg$FAILED&&(s1=peg$c31(s1)),s1}function peg$parsevalue(){var s1,s2;if(s1=[],(s2=peg$parseescapedSpecialChars())===peg$FAILED&&(s2=peg$parsecharacter())===peg$FAILED&&(s2=peg$parsespace()),s2!==peg$FAILED)for(;s2!==peg$FAILED;)s1.push(s2),(s2=peg$parseescapedSpecialChars())===peg$FAILED&&(s2=peg$parsecharacter())===peg$FAILED&&(s2=peg$parsespace());else s1=peg$FAILED;return s1!==peg$FAILED&&(s1=peg$c31(s1)),s1}function peg$parseescapedSpecialChars(){var s1,s2,s3;return s1=peg$currPos,(s2=peg$parsecircumflex())!==peg$FAILED&&(s3=peg$parsecircumflex())!==peg$FAILED?s1=s2=[s2,s3]:(peg$currPos=s1,s1=peg$FAILED),s1===peg$FAILED&&(s1=peg$currPos,(s2=peg$parsecircumflex())!==peg$FAILED&&(s3=function(){var s1;return 91===input.charCodeAt(peg$currPos)?(s1=peg$c12,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c13)),s1===peg$FAILED&&(93===input.charCodeAt(peg$currPos)?(s1=peg$c14,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c15))),s1!==peg$FAILED&&(s1=peg$c52(s1)),s1}())!==peg$FAILED?s1=s2=[s2,s3]:(peg$currPos=s1,s1=peg$FAILED),s1===peg$FAILED&&(s1=peg$currPos,(s2=peg$parsecircumflex())!==peg$FAILED&&(s3=function(){var s1;return 40===input.charCodeAt(peg$currPos)?(s1=peg$c53,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c54)),s1===peg$FAILED&&(41===input.charCodeAt(peg$currPos)?(s1=peg$c2,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c3))),s1!==peg$FAILED&&(s1=peg$c55(s1)),s1}())!==peg$FAILED?s1=s2=[s2,s3]:(peg$currPos=s1,s1=peg$FAILED),s1===peg$FAILED&&(s1=peg$currPos,(s2=peg$parsecircumflex())!==peg$FAILED&&(s3=function(){var s1;return 44===input.charCodeAt(peg$currPos)?(s1=peg$c5,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c6)),s1!==peg$FAILED&&(s1=peg$c56()),s1}())!==peg$FAILED?s1=s2=[s2,s3]:(peg$currPos=s1,s1=peg$FAILED),s1===peg$FAILED&&(s1=peg$currPos,(s2=peg$parsecircumflex())!==peg$FAILED&&(s3=function(){var s1;return 59===input.charCodeAt(peg$currPos)?(s1=peg$c25,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c26)),s1!==peg$FAILED&&(s1=peg$c57()),s1}())!==peg$FAILED?s1=s2=[s2,s3]:(peg$currPos=s1,s1=peg$FAILED),s1===peg$FAILED&&(s1=peg$currPos,(s2=peg$parsecircumflex())!==peg$FAILED&&(s3=function(){var s1;return 61===input.charCodeAt(peg$currPos)?(s1=peg$c27,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c28)),s1!==peg$FAILED&&(s1=peg$c58()),s1}())!==peg$FAILED?s1=s2=[s2,s3]:(peg$currPos=s1,s1=peg$FAILED)))))),s1!==peg$FAILED&&(s1=peg$c32(s1)),s1}function peg$parseinteger(){var s1,s2,s3,s4;if(48===input.charCodeAt(peg$currPos)?(s1=peg$c40,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c41)),s1===peg$FAILED)if(s1=peg$currPos,peg$c33.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c34)),s2!==peg$FAILED){for(s3=[],peg$c35.test(input.charAt(peg$currPos))?(s4=input.charAt(peg$currPos),peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c36));s4!==peg$FAILED;)s3.push(s4),peg$c35.test(input.charAt(peg$currPos))?(s4=input.charAt(peg$currPos),peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c36));s3!==peg$FAILED?s1=s2=[s2,s3]:(peg$currPos=s1,s1=peg$FAILED)}else peg$currPos=s1,s1=peg$FAILED;return s1!==peg$FAILED&&(s1=peg$c42(s1)),s1}function peg$parsespace(){var s1;return 32===input.charCodeAt(peg$currPos)?(s1=peg$c43,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c44)),s1!==peg$FAILED&&(s1=peg$c45()),s1}function peg$parsecircumflex(){var s1;return 94===input.charCodeAt(peg$currPos)?(s1=peg$c46,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c47)),s1!==peg$FAILED&&(s1=peg$c48()),s1}function peg$parsecharacter(){var s1;return peg$c59.test(input.charAt(peg$currPos))?(s1=input.charAt(peg$currPos),peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c60)),s1===peg$FAILED&&(peg$c61.test(input.charAt(peg$currPos))?(s1=input.charAt(peg$currPos),peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c62)),s1===peg$FAILED&&(peg$c35.test(input.charAt(peg$currPos))?(s1=input.charAt(peg$currPos),peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c36)),s1===peg$FAILED&&(45===input.charCodeAt(peg$currPos)?(s1=peg$c63,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c64)),s1===peg$FAILED&&(95===input.charCodeAt(peg$currPos)?(s1=peg$c65,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c66)),s1===peg$FAILED&&(46===input.charCodeAt(peg$currPos)?(s1=peg$c37,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c38)),s1===peg$FAILED&&(37===input.charCodeAt(peg$currPos)?(s1=peg$c67,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c68)))))))),s1!==peg$FAILED&&(s1=peg$c69(s1)),s1}if((peg$result=peg$startRuleFunction())!==peg$FAILED&&peg$currPos===input.length)return peg$result;throw peg$result!==peg$FAILED&&peg$currPos<input.length&&peg$fail({type:"end"}),expected=peg$maxFailExpected,found=peg$maxFailPos<input.length?input.charAt(peg$maxFailPos):null,location=peg$maxFailPos<input.length?peg$computeLocation(peg$maxFailPos,peg$maxFailPos+1):peg$computeLocation(peg$maxFailPos,peg$maxFailPos),new peg$SyntaxError(peg$SyntaxError.buildMessage(expected,found),expected,found,location)},parser$1=Object.freeze({SyntaxError:SyntaxError,parse:parse});function getFirstIndirectionStepNum(CFIAST){for(var stepNum=0;stepNum<=CFIAST.cfiString.localPath.steps.length-1;stepNum+=1){if("indirectionStep"===CFIAST.cfiString.localPath.steps[stepNum].type)return stepNum}}function splitRangeCFIAST(CFIAST,firstRange){var outCFIAST=jquery.extend(!0,{},CFIAST),targetRange=firstRange?CFIAST.cfiString.range1:CFIAST.cfiString.range2;return delete outCFIAST.cfiString.range1,delete outCFIAST.cfiString.range2,outCFIAST.cfiString.type="path",outCFIAST.cfiString.localPath.steps=outCFIAST.cfiString.localPath.steps.concat(targetRange.steps),outCFIAST.cfiString.localPath.termStep=targetRange.termStep,outCFIAST}function decomposeCFI(CFI){var decodedCFI=decodeURI(CFI),CFIAST=parse(decodedCFI);if(!CFIAST||"CFIAST"!==CFIAST.type)throw new NodeTypeError(CFIAST,"expected CFI AST root node");var decomposedASTs=[];return"range"===CFIAST.cfiString.type?(decomposedASTs.push(splitRangeCFIAST(CFIAST,!0)),decomposedASTs.push(splitRangeCFIAST(CFIAST,!1))):decomposedASTs.push(CFIAST),decomposedASTs}function concatStepsFromCFIAST(CFIAST){return CFIAST.cfiString.localPath.steps.map(function(o){return parseInt(o.stepLength,10)})}function compareCFIASTs(CFIAST1,CFIAST2){for(var result=null,index=0,steps1=concatStepsFromCFIAST(CFIAST1),steps2=concatStepsFromCFIAST(CFIAST2),term1=CFIAST1.cfiString.localPath.termStep,term2=CFIAST2.cfiString.localPath.termStep;;){var L=steps1[index],R=steps2[index];if(!L||!R){if(0===result&&(term1.offsetValue||term2.offsetValue)){var tL=parseInt(term1.offsetValue,10)||0,tR=parseInt(term2.offsetValue,10)||0;result=tL>tR?1:tL<tR?-1:0}break}if(L>R){result=1;break}if(L<R){result=-1;break}result=0,index+=1}return result}function interpretIndexStepNode(indexStepNode,$currElement,classBlacklist,elementBlacklist,idBlacklist){if(void 0===indexStepNode||"indexStep"!==indexStepNode.type)throw new NodeTypeError(indexStepNode,"expected index step node");var $stepTarget=followIndexStep(indexStepNode.stepLength,$currElement,classBlacklist,elementBlacklist,idBlacklist);if(indexStepNode.idAssertion&&!targetIdMatchesIdAssertion($stepTarget,indexStepNode.idAssertion))throw new CFIAssertionError(indexStepNode.idAssertion,$stepTarget.attr("id"),"Id assertion failed");return $stepTarget}function interpretIndirectionStepNode(indirectionStepNode,$currElement,classBlacklist,elementBlacklist,idBlacklist){if(void 0===indirectionStepNode||"indirectionStep"!==indirectionStepNode.type)throw new NodeTypeError(indirectionStepNode,"expected indirection step node");var $stepTarget=followIndirectionStep(indirectionStepNode.stepLength,$currElement,classBlacklist,elementBlacklist,idBlacklist);if(indirectionStepNode.idAssertion&&!targetIdMatchesIdAssertion($stepTarget,indirectionStepNode.idAssertion))throw new CFIAssertionError(indirectionStepNode.idAssertion,$stepTarget.attr("id"),"Id assertion failed");return $stepTarget}function interpretLocalPath(localPathNode,startStepNum,$currElement,classBlacklist,elementBlacklist,idBlacklist){for(var nextStepNode=void 0,stepNum=startStepNum;stepNum<=localPathNode.steps.length-1;stepNum+=1)"indexStep"===(nextStepNode=localPathNode.steps[stepNum]).type?$currElement=interpretIndexStepNode(nextStepNode,$currElement,classBlacklist,elementBlacklist,idBlacklist):"indirectionStep"===nextStepNode.type&&($currElement=interpretIndirectionStepNode(nextStepNode,$currElement,classBlacklist,elementBlacklist,idBlacklist));return $currElement}function interpretTextTerminusNode(terminusNode,$currElement,elementToInject){if(void 0===terminusNode||"textTerminus"!==terminusNode.type)throw new NodeTypeError(terminusNode,"expected text terminus node");return textTermination($currElement,terminusNode.offsetValue,elementToInject)}function getContentDocHref(CFI,packageDocument,classBlacklist,elementBlacklist,idBlacklist){var decodedCFI=decodeURI(CFI),CFIAST=parse(decodedCFI);if(!CFIAST||"CFIAST"!==CFIAST.type)throw new NodeTypeError(CFIAST,"expected CFI AST root node");var $packageElement=jquery(packageDocument.getElementsByTagNameNS("*","package")),foundHref=function($currElement,packageDocument,localPathNode,classBlacklist,elementBlacklist,idBlacklist){for(var nextStepNode=void 0,$foundElement=void 0,stepNum=0;stepNum<=localPathNode.steps.length-1;stepNum+=1){"indexStep"===(nextStepNode=localPathNode.steps[stepNum]).type?$foundElement=interpretIndexStepNode(nextStepNode,$currElement,classBlacklist,elementBlacklist,idBlacklist):"indirectionStep"===nextStepNode.type&&($foundElement=interpretIndirectionStepNode(nextStepNode,$currElement,classBlacklist,elementBlacklist,idBlacklist));var foundElement=slicedToArray($foundElement,1)[0];if(matchesLocalNameOrElement(foundElement,"itemref"))return retrieveItemRefHref(foundElement,packageDocument)}}(interpretIndexStepNode(CFIAST.cfiString.path,$packageElement,classBlacklist,elementBlacklist,idBlacklist),packageDocument,CFIAST.cfiString.localPath,classBlacklist,elementBlacklist,idBlacklist);if(foundHref)return foundHref}function compareCFIs(cfiA,cfiB){var decomposedCFI1=decomposeCFI(cfiA),decomposedCFI2=decomposeCFI(cfiB);if(decomposedCFI1.length>1&&decomposedCFI2.length>1)return[compareCFIASTs(decomposedCFI1[0],decomposedCFI2[0]),compareCFIASTs(decomposedCFI1[1],decomposedCFI2[1])];if(decomposedCFI1.length>1&&1===decomposedCFI2.length)return[compareCFIASTs(decomposedCFI1[0],decomposedCFI2[0]),compareCFIASTs(decomposedCFI1[1],decomposedCFI2[0])];if(1===decomposedCFI1.length&&decomposedCFI2.length>1)return[compareCFIASTs(decomposedCFI1[0],decomposedCFI2[0]),compareCFIASTs(decomposedCFI1[0],decomposedCFI2[1])];var result=compareCFIASTs(decomposedCFI1[0],decomposedCFI2[0]);return[result,result]}function injectElement(CFI,contentDocument,elementToInject,classBlacklist,elementBlacklist,idBlacklist){var decodedCFI=decodeURI(CFI),CFIAST=parse(decodedCFI),$currElement=void 0,indirectionStepNum=getFirstIndirectionStepNum(CFIAST);return CFIAST.cfiString.localPath.steps[indirectionStepNum].type="indexStep",$currElement=interpretLocalPath(CFIAST.cfiString.localPath,indirectionStepNum,jquery(contentDocument.documentElement,contentDocument),classBlacklist,elementBlacklist,idBlacklist),$currElement=interpretTextTerminusNode(CFIAST.cfiString.localPath.termStep,$currElement,elementToInject)}function injectRangeElements(rangeCFI,contentDocument,startElementToInject,endElementToInject,classBlacklist,elementBlacklist,idBlacklist){var decodedCFI=decodeURI(rangeCFI),CFIAST=parse(decodedCFI),$range1TargetElement=void 0,$range2TargetElement=void 0,indirectionStepNum=getFirstIndirectionStepNum(CFIAST);CFIAST.cfiString.localPath.steps[indirectionStepNum].type="indexStep";var $currElement=interpretLocalPath(CFIAST.cfiString.localPath,indirectionStepNum,jquery(contentDocument.documentElement,contentDocument),classBlacklist,elementBlacklist,idBlacklist);return $range1TargetElement=interpretLocalPath(CFIAST.cfiString.range1,0,$currElement,classBlacklist,elementBlacklist,idBlacklist),$range1TargetElement=interpretTextTerminusNode(CFIAST.cfiString.range1.termStep,$range1TargetElement,startElementToInject),$range2TargetElement=interpretLocalPath(CFIAST.cfiString.range2,0,$currElement,classBlacklist,elementBlacklist,idBlacklist),$range2TargetElement=interpretTextTerminusNode(CFIAST.cfiString.range2.termStep,$range2TargetElement,endElementToInject),{startElement:$range1TargetElement[0],endElement:$range2TargetElement[0]}}function getTargetElement(CFI,contentDocument,classBlacklist,elementBlacklist,idBlacklist){var decodedCFI=decodeURI(CFI),CFIAST=parse(decodedCFI),indirectionStepNum=getFirstIndirectionStepNum(CFIAST);return CFIAST.cfiString.localPath.steps[indirectionStepNum].type="indexStep",interpretLocalPath(CFIAST.cfiString.localPath,indirectionStepNum,jquery(contentDocument.documentElement,contentDocument),classBlacklist,elementBlacklist,idBlacklist)}function getRangeTargetElements(rangeCFI,contentDocument,classBlacklist,elementBlacklist,idBlacklist){var decodedCFI=decodeURI(rangeCFI),CFIAST=parse(decodedCFI),indirectionStepNum=getFirstIndirectionStepNum(CFIAST);CFIAST.cfiString.localPath.steps[indirectionStepNum].type="indexStep";var $currElement=interpretLocalPath(CFIAST.cfiString.localPath,indirectionStepNum,jquery(contentDocument.documentElement,contentDocument),classBlacklist,elementBlacklist,idBlacklist),$range1TargetElement=interpretLocalPath(CFIAST.cfiString.range1,0,$currElement,classBlacklist,elementBlacklist,idBlacklist),$range2TargetElement=interpretLocalPath(CFIAST.cfiString.range2,0,$currElement,classBlacklist,elementBlacklist,idBlacklist),startOffset=parseInt(CFIAST.cfiString.range1.termStep.offsetValue,10)||void 0,endOffset=parseInt(CFIAST.cfiString.range2.termStep.offsetValue,10)||void 0;return{startElement:$range1TargetElement[0],startOffset:startOffset,endElement:$range2TargetElement[0],endOffset:endOffset}}function getTargetElementWithPartialCFI(contentDocumentCFI,contentDocument,classBlacklist,elementBlacklist,idBlacklist){var decodedCFI=decodeURI(contentDocumentCFI),CFIAST=parse(decodedCFI),$currElement=interpretIndexStepNode(CFIAST.cfiString.path,jquery(contentDocument.documentElement,contentDocument),classBlacklist,elementBlacklist,idBlacklist);return $currElement=interpretLocalPath(CFIAST.cfiString.localPath,0,$currElement,classBlacklist,elementBlacklist,idBlacklist)}function getTextTerminusInfoWithPartialCFI(contentDocumentCFI,contentDocument,classBlacklist,elementBlacklist,idBlacklist){var decodedCFI=decodeURI(contentDocumentCFI),CFIAST=parse(decodedCFI),$currElement=interpretIndexStepNode(CFIAST.cfiString.path,jquery(contentDocument.documentElement,contentDocument),classBlacklist,elementBlacklist,idBlacklist);$currElement=interpretLocalPath(CFIAST.cfiString.localPath,0,$currElement,classBlacklist,elementBlacklist,idBlacklist);var textOffset=parseInt(CFIAST.cfiString.localPath.termStep.offsetValue,10);return{textNode:$currElement[0],textOffset:textOffset}}function getTextTerminusInfo(CFI,contentDocument,classBlacklist,elementBlacklist,idBlacklist){var decodedCFI=decodeURI(CFI),CFIAST=parse(decodedCFI),indirectionStepNum=getFirstIndirectionStepNum(CFIAST);CFIAST.cfiString.localPath.steps[indirectionStepNum].type="indexStep";var $currElement=interpretLocalPath(CFIAST.cfiString.localPath,indirectionStepNum,jquery(contentDocument.documentElement,contentDocument),classBlacklist,elementBlacklist,idBlacklist),textOffset=parseInt(CFIAST.cfiString.localPath.termStep.offsetValue,10);return{textNode:$currElement[0],textOffset:textOffset}}function isRangeCfi(CFI){var decodedCFI=CFI?decodeURI(CFI):void 0,CFIAST=parse(decodedCFI);if(!CFIAST||"CFIAST"!==CFIAST.type)throw new NodeTypeError(CFIAST,"expected CFI AST root node");return"range"===CFIAST.cfiString.type}function hasTextTerminus(CFI){var decodedCFI=CFI?decodeURI(CFI):void 0,CFIAST=parse(decodedCFI);if(!CFIAST||"CFIAST"!==CFIAST.type)throw new NodeTypeError(CFIAST,"expected CFI AST root node");return!!CFIAST.cfiString.localPath.termStep}var interpreter=Object.freeze({interpretIndexStepNode:interpretIndexStepNode,interpretIndirectionStepNode:interpretIndirectionStepNode,interpretTextTerminusNode:interpretTextTerminusNode,getContentDocHref:getContentDocHref,compareCFIs:compareCFIs,injectElement:injectElement,injectRangeElements:injectRangeElements,getTargetElement:getTargetElement,getRangeTargetElements:getRangeTargetElements,getTargetElementWithPartialCFI:getTargetElementWithPartialCFI,getTextTerminusInfoWithPartialCFI:getTextTerminusInfoWithPartialCFI,getTextTerminusInfo:getTextTerminusInfo,isRangeCfi:isRangeCfi,hasTextTerminus:hasTextTerminus});function validateStartTextNode(startTextNode,characterOffset){if(!startTextNode)throw new NodeTypeError(startTextNode,"Cannot generate a character offset from a starting point that is not a text node");if(3!==startTextNode.nodeType)throw new NodeTypeError(startTextNode,"Cannot generate a character offset from a starting point that is not a text node");if(characterOffset<0)throw new OutOfRangeError(characterOffset,0,"Character offset cannot be less than 0");if(characterOffset>startTextNode.nodeValue.length)throw new OutOfRangeError(characterOffset,startTextNode.nodeValue.length-1,"character offset cannot be greater than the length of the text node")}function validateStartElement(startElement){if(function(startElement){if(!startElement)throw new NodeTypeError(startElement,"CFI target element is undefined")}(startElement),!startElement.nodeType||1!==startElement.nodeType)throw new NodeTypeError(startElement,"CFI target element is not an HTML element")}function findSpineItemNode(packageDocument,idref){return[].concat(toConsumableArray(packageDocument.getElementsByTagNameNS("*","itemref"))).find(function(element){return element.getAttribute("idref")===idref})}function validNodeTypesFilter(node){return node.nodeType===Node.TEXT_NODE||node.nodeType===Node.ELEMENT_NODE}function createCFITextNodeStep($startTextNode,characterOffset,classBlacklist,elementBlacklist,idBlacklist){var indexOfTextNode=-1,$parentNode=$startTextNode.parent(),$contentsExcludingMarkers=jquery(applyBlacklist($parentNode.contents().toArray(),classBlacklist,elementBlacklist,idBlacklist)),prevNodeWasTextNode=void 0,indexOfFirstInSequence=void 0,textNodeOnlyIndex=0,characterOffsetSinceUnsplit=0,finalCharacterOffsetInSequence=0;return jquery.each($contentsExcludingMarkers,function(){if(this.nodeType!==Node.TEXT_NODE&&prevNodeWasTextNode)this.nodeType===Node.ELEMENT_NODE?(prevNodeWasTextNode=!1,indexOfFirstInSequence=void 0,characterOffsetSinceUnsplit=0):this.nodeType===Node.COMMENT_NODE?characterOffsetSinceUnsplit=characterOffsetSinceUnsplit+this.length+7:this.nodeType===Node.PROCESSING_INSTRUCTION_NODE&&(characterOffsetSinceUnsplit=characterOffsetSinceUnsplit+this.data.length+this.target.length+5);else if(this.nodeType===Node.TEXT_NODE){if(this===$startTextNode[0])return prevNodeWasTextNode?(indexOfTextNode=indexOfFirstInSequence,finalCharacterOffsetInSequence=characterOffsetSinceUnsplit):indexOfTextNode=textNodeOnlyIndex,!1;prevNodeWasTextNode=!0,characterOffsetSinceUnsplit+=this.length,void 0===indexOfFirstInSequence&&(indexOfFirstInSequence=textNodeOnlyIndex,textNodeOnlyIndex+=1)}else this.nodeType===Node.ELEMENT_NODE?textNodeOnlyIndex+=1:this.nodeType===Node.COMMENT_NODE?(prevNodeWasTextNode=!0,characterOffsetSinceUnsplit=characterOffsetSinceUnsplit+this.length+7,void 0===indexOfFirstInSequence&&(indexOfFirstInSequence=textNodeOnlyIndex)):this.nodeType===Node.PROCESSING_INSTRUCTION_NODE&&(prevNodeWasTextNode=!0,characterOffsetSinceUnsplit=characterOffsetSinceUnsplit+this.data.length+this.target.length+5,void 0===indexOfFirstInSequence&&(indexOfFirstInSequence=textNodeOnlyIndex));return!0}),"/"+(2*indexOfTextNode+1)+":"+(finalCharacterOffsetInSequence+characterOffset)}function createCFIElementSteps($currNode,topLevelElement,classBlacklist,elementBlacklist,idBlacklist){var currNodePosition=-1,elementStep=void 0,$blacklistExcluded=jquery(applyBlacklist($currNode.parent().children().toArray(),classBlacklist,elementBlacklist,idBlacklist));jquery.each($blacklistExcluded,function(index){return this!==$currNode[0]||(currNodePosition=index,!1)});var CFIPosition=2*(currNodePosition+1);elementStep=$currNode.attr("id")?"/"+CFIPosition+"["+$currNode.attr("id")+"]":"/"+CFIPosition;var $parentNode=$currNode.parent();return"string"==typeof topLevelElement&&matchesLocalNameOrElement($parentNode[0],topLevelElement)||matchesLocalNameOrElement($currNode[0],topLevelElement)?elementStep:$parentNode[0]===topLevelElement||$currNode[0]===topLevelElement?elementStep:createCFIElementSteps($parentNode,topLevelElement,classBlacklist,elementBlacklist,idBlacklist)+elementStep}function generateDocumentRangeComponent(domRange,classBlacklist,elementBlacklist,idBlacklist){!function(domRange){var startContainer=domRange.startContainer,endContainer=domRange.endContainer,commonAncestorContainer=domRange.commonAncestorContainer;if(commonAncestorContainer.nodeType===Node.ELEMENT_NODE&&(startContainer.nodeType===Node.TEXT_NODE||endContainer.nodeType===Node.TEXT_NODE)){if(startContainer===commonAncestorContainer){var _filter=[].concat(toConsumableArray(startContainer.childNodes)).filter(validNodeTypesFilter),firstChildNode=slicedToArray(_filter,1)[0];firstChildNode&&domRange.setStart(firstChildNode,0)}if(endContainer===commonAncestorContainer){var _filter$slice=[].concat(toConsumableArray(endContainer.childNodes)).filter(validNodeTypesFilter).slice(-1),lastChildNode=slicedToArray(_filter$slice,1)[0];lastChildNode&&(lastChildNode.length?domRange.setEnd(lastChildNode,lastChildNode.length):lastChildNode.hasChildNodes()?domRange.setEnd(lastChildNode,lastChildNode.childNodes.length):domRange.setEnd(lastChildNode,1))}}}(domRange);var startContainer=domRange.startContainer,endContainer=domRange.endContainer,startOffset=domRange.startOffset,endOffset=domRange.endOffset,commonAncestorContainer=domRange.commonAncestorContainer,ownerDocument=startContainer.ownerDocument,range1CFI=void 0,range1OffsetStep=void 0,range2CFI=void 0,range2OffsetStep=void 0,commonCFIComponent=void 0;if(startContainer.nodeType===Node.TEXT_NODE&&endContainer.nodeType===Node.TEXT_NODE&&jquery(startContainer).parent()[0]===jquery(endContainer).parent()[0])return range1OffsetStep=createCFITextNodeStep(jquery(startContainer),startOffset,classBlacklist,elementBlacklist,idBlacklist),range2OffsetStep=createCFITextNodeStep(jquery(endContainer),endOffset,classBlacklist,elementBlacklist,idBlacklist),(commonCFIComponent=createCFIElementSteps(jquery(startContainer).parent(),ownerDocument.documentElement,classBlacklist,elementBlacklist,idBlacklist))+","+range1OffsetStep+","+range2OffsetStep;if(startContainer.nodeType===Node.ELEMENT_NODE&&endContainer.nodeType===Node.ELEMENT_NODE&&startContainer===endContainer&&commonAncestorContainer===startContainer){var startElement=commonAncestorContainer.childNodes[startOffset],endElement=void 0;return endElement=endOffset===commonAncestorContainer.childNodes.length?commonAncestorContainer.childNodes[endOffset-1]:commonAncestorContainer.childNodes[endOffset].previousSibling,commonCFIComponent=createCFIElementSteps(jquery(commonAncestorContainer),ownerDocument.documentElement,classBlacklist,elementBlacklist,idBlacklist),range1CFI=createCFIElementSteps(jquery(startElement),commonAncestorContainer,classBlacklist,elementBlacklist,idBlacklist),startElement===endElement?commonCFIComponent+range1CFI:commonCFIComponent+","+range1CFI+","+(range2CFI=createCFIElementSteps(jquery(endElement),commonAncestorContainer,classBlacklist,elementBlacklist,idBlacklist))}return startContainer.nodeType===Node.ELEMENT_NODE?(validateStartElement(startContainer),range1CFI=createCFIElementSteps(jquery(startContainer),commonAncestorContainer,classBlacklist,elementBlacklist,idBlacklist)):(validateStartTextNode(startContainer),range1OffsetStep=createCFITextNodeStep(jquery(startContainer),startOffset,classBlacklist,elementBlacklist,idBlacklist),range1CFI=jquery(startContainer).parent()[0]===commonAncestorContainer?range1OffsetStep:createCFIElementSteps(jquery(startContainer).parent(),commonAncestorContainer,classBlacklist,elementBlacklist,idBlacklist)+range1OffsetStep),endContainer.nodeType===Node.ELEMENT_NODE?(validateStartElement(endContainer),range2CFI=createCFIElementSteps(jquery(endContainer),commonAncestorContainer,classBlacklist,elementBlacklist,idBlacklist)):(validateStartTextNode(endContainer),range2OffsetStep=createCFITextNodeStep(jquery(endContainer),endOffset,classBlacklist,elementBlacklist,idBlacklist),range2CFI=jquery(endContainer).parent()[0]===commonAncestorContainer?range2OffsetStep:createCFIElementSteps(jquery(endContainer).parent(),commonAncestorContainer,classBlacklist,elementBlacklist,idBlacklist)+range2OffsetStep),(commonCFIComponent=createCFIElementSteps(jquery(commonAncestorContainer),ownerDocument.documentElement,classBlacklist,elementBlacklist,idBlacklist))+","+range1CFI+","+range2CFI}function generateRangeComponent(rangeStartElement,startOffset,rangeEndElement,endOffset,classBlacklist,elementBlacklist,idBlacklist){var docRange=rangeStartElement.ownerDocument.createRange();return docRange.setStart(rangeStartElement,startOffset),docRange.setEnd(rangeEndElement,endOffset),generateDocumentRangeComponent(docRange,classBlacklist,elementBlacklist,idBlacklist)}function generateCharOffsetRangeComponent(rangeStartElement,startOffset,rangeEndElement,endOffset,classBlacklist,elementBlacklist,idBlacklist){var ownerDocument=rangeStartElement.ownerDocument;validateStartTextNode(rangeStartElement),validateStartTextNode(rangeEndElement);var docRange=ownerDocument.createRange();return docRange.setStart(rangeStartElement,startOffset),docRange.setEnd(rangeEndElement,endOffset),generateDocumentRangeComponent(docRange,classBlacklist,elementBlacklist,idBlacklist)}function generateElementRangeComponent(rangeStartElement,rangeEndElement,classBlacklist,elementBlacklist,idBlacklist){var docRange=rangeStartElement.ownerDocument.createRange();return docRange.setStartBefore(rangeStartElement),docRange.setEndAfter(rangeEndElement),generateDocumentRangeComponent(docRange,classBlacklist,elementBlacklist,idBlacklist)}function generateCharacterOffsetCFIComponent(startTextNode,characterOffset,classBlacklist,elementBlacklist,idBlacklist){validateStartTextNode(startTextNode,characterOffset);var textNodeStep=createCFITextNodeStep(jquery(startTextNode),characterOffset,classBlacklist,elementBlacklist,idBlacklist);return createCFIElementSteps(jquery(startTextNode).parent(),startTextNode.ownerDocument.documentElement,classBlacklist,elementBlacklist,idBlacklist)+textNodeStep}function generateElementCFIComponent(startElement,classBlacklist,elementBlacklist,idBlacklist){return validateStartElement(startElement),createCFIElementSteps(jquery(startElement),startElement.ownerDocument.documentElement,classBlacklist,elementBlacklist,idBlacklist)}function generatePackageDocumentCFIComponent(contentDocumentName,packageDocument,classBlacklist,elementBlacklist,idBlacklist){return function(contentDocumentName){if(!contentDocumentName)throw new Error("The idref for the content document, as found in the spine, must be supplied")}(contentDocumentName),function(packageDocument,contentDocumentName){if(!packageDocument)throw new Error("A package document must be supplied to generate a CFI");if(!findSpineItemNode(packageDocument,contentDocumentName))throw new Error("The idref of the content document could not be found in the spine")}(packageDocument,contentDocumentName),createCFIElementSteps(jquery(findSpineItemNode(packageDocument,contentDocumentName)),"package",classBlacklist,elementBlacklist,idBlacklist)+"!"}function generatePackageDocumentCFIComponentWithSpineIndex(spineIndex,packageDocument,classBlacklist,elementBlacklist,idBlacklist){var spineItemNode=packageDocument.getElementsByTagNameNS("*","spine");return createCFIElementSteps(jquery(jquery(spineItemNode).children()[spineIndex]),"package",classBlacklist,elementBlacklist,idBlacklist)+"!"}function generateCompleteCFI(packageDocumentCFIComponent,contentDocumentCFIComponent){return"epubcfi("+packageDocumentCFIComponent+contentDocumentCFIComponent+")"}var generator=Object.freeze({validateStartElement:validateStartElement,createCFITextNodeStep:createCFITextNodeStep,createCFIElementSteps:createCFIElementSteps,generateDocumentRangeComponent:generateDocumentRangeComponent,generateRangeComponent:generateRangeComponent,generateCharOffsetRangeComponent:generateCharOffsetRangeComponent,generateElementRangeComponent:generateElementRangeComponent,generateCharacterOffsetCFIComponent:generateCharacterOffsetCFIComponent,generateElementCFIComponent:generateElementCFIComponent,generatePackageDocumentCFIComponent:generatePackageDocumentCFIComponent,generatePackageDocumentCFIComponentWithSpineIndex:generatePackageDocumentCFIComponentWithSpineIndex,generateCompleteCFI:generateCompleteCFI});exports.CFIInstructions=instructions,exports.Instructions=instructions,exports.Interpreter=interpreter,exports.Generator=generator,exports.Parser=parser$1,exports.Util=util,exports.injectCFIMarkerIntoText=injectCFIMarkerIntoText,exports.followIndexStep=followIndexStep,exports.getNextNode=followIndexStep,exports.followIndirectionStep=followIndirectionStep,exports.textTermination=textTermination,exports.targetIdMatchesIdAssertion=targetIdMatchesIdAssertion,exports.applyBlacklist=applyBlacklist,exports.interpretIndexStepNode=interpretIndexStepNode,exports.interpretIndirectionStepNode=interpretIndirectionStepNode,exports.interpretTextTerminusNode=interpretTextTerminusNode,exports.getContentDocHref=getContentDocHref,exports.compareCFIs=compareCFIs,exports.injectElement=injectElement,exports.injectRangeElements=injectRangeElements,exports.getTargetElement=getTargetElement,exports.getRangeTargetElements=getRangeTargetElements,exports.getTargetElementWithPartialCFI=getTargetElementWithPartialCFI,exports.getTextTerminusInfoWithPartialCFI=getTextTerminusInfoWithPartialCFI,exports.getTextTerminusInfo=getTextTerminusInfo,exports.isRangeCfi=isRangeCfi,exports.hasTextTerminus=hasTextTerminus,exports.validateStartElement=validateStartElement,exports.createCFITextNodeStep=createCFITextNodeStep,exports.createCFIElementSteps=createCFIElementSteps,exports.generateDocumentRangeComponent=generateDocumentRangeComponent,exports.generateRangeComponent=generateRangeComponent,exports.generateCharOffsetRangeComponent=generateCharOffsetRangeComponent,exports.generateElementRangeComponent=generateElementRangeComponent,exports.generateCharacterOffsetCFIComponent=generateCharacterOffsetCFIComponent,exports.generateElementCFIComponent=generateElementCFIComponent,exports.generatePackageDocumentCFIComponent=generatePackageDocumentCFIComponent,exports.generatePackageDocumentCFIComponentWithSpineIndex=generatePackageDocumentCFIComponentWithSpineIndex,exports.generateCompleteCFI=generateCompleteCFI,exports.NodeTypeError=NodeTypeError,exports.OutOfRangeError=OutOfRangeError,exports.TerminusError=TerminusError,exports.CFIAssertionError=CFIAssertionError,Object.defineProperty(exports,"__esModule",{value:!0})}),function(){var root="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global||this||{},previousUnderscore=root._,ArrayProto=Array.prototype,ObjProto=Object.prototype,SymbolProto="undefined"!=typeof Symbol?Symbol.prototype:null,push=ArrayProto.push,slice=ArrayProto.slice,toString=ObjProto.toString,hasOwnProperty=ObjProto.hasOwnProperty,nativeIsArray=Array.isArray,nativeKeys=Object.keys,nativeCreate=Object.create,Ctor=function(){},_=function(obj){return obj instanceof _?obj:this instanceof _?void(this._wrapped=obj):new _(obj)};"undefined"==typeof exports||exports.nodeType?root._=_:("undefined"!=typeof module&&!module.nodeType&&module.exports&&(exports=module.exports=_),exports._=_),_.VERSION="1.9.1";var builtinIteratee,optimizeCb=function(func,context,argCount){if(void 0===context)return func;switch(null==argCount?3:argCount){case 1:return function(value){return func.call(context,value)};case 3:return function(value,index,collection){return func.call(context,value,index,collection)};case 4:return function(accumulator,value,index,collection){return func.call(context,accumulator,value,index,collection)}}return function(){return func.apply(context,arguments)}},cb=function(value,context,argCount){return _.iteratee!==builtinIteratee?_.iteratee(value,context):null==value?_.identity:_.isFunction(value)?optimizeCb(value,context,argCount):_.isObject(value)&&!_.isArray(value)?_.matcher(value):_.property(value)};_.iteratee=builtinIteratee=function(value,context){return cb(value,context,1/0)};var restArguments=function(func,startIndex){return startIndex=null==startIndex?func.length-1:+startIndex,function(){for(var length=Math.max(arguments.length-startIndex,0),rest=Array(length),index=0;index<length;index++)rest[index]=arguments[index+startIndex];switch(startIndex){case 0:return func.call(this,rest);case 1:return func.call(this,arguments[0],rest);case 2:return func.call(this,arguments[0],arguments[1],rest)}var args=Array(startIndex+1);for(index=0;index<startIndex;index++)args[index]=arguments[index];return args[startIndex]=rest,func.apply(this,args)}},baseCreate=function(prototype){if(!_.isObject(prototype))return{};if(nativeCreate)return nativeCreate(prototype);Ctor.prototype=prototype;var result=new Ctor;return Ctor.prototype=null,result},shallowProperty=function(key){return function(obj){return null==obj?void 0:obj[key]}},has=function(obj,path){return null!=obj&&hasOwnProperty.call(obj,path)},deepGet=function(obj,path){for(var length=path.length,i=0;i<length;i++){if(null==obj)return;obj=obj[path[i]]}return length?obj:void 0},MAX_ARRAY_INDEX=Math.pow(2,53)-1,getLength=shallowProperty("length"),isArrayLike=function(collection){var length=getLength(collection);return"number"==typeof length&&length>=0&&length<=MAX_ARRAY_INDEX};_.each=_.forEach=function(obj,iteratee,context){var i,length;if(iteratee=optimizeCb(iteratee,context),isArrayLike(obj))for(i=0,length=obj.length;i<length;i++)iteratee(obj[i],i,obj);else{var keys=_.keys(obj);for(i=0,length=keys.length;i<length;i++)iteratee(obj[keys[i]],keys[i],obj)}return obj},_.map=_.collect=function(obj,iteratee,context){iteratee=cb(iteratee,context);for(var keys=!isArrayLike(obj)&&_.keys(obj),length=(keys||obj).length,results=Array(length),index=0;index<length;index++){var currentKey=keys?keys[index]:index;results[index]=iteratee(obj[currentKey],currentKey,obj)}return results};var createReduce=function(dir){return function(obj,iteratee,memo,context){var initial=arguments.length>=3;return function(obj,iteratee,memo,initial){var keys=!isArrayLike(obj)&&_.keys(obj),length=(keys||obj).length,index=dir>0?0:length-1;for(initial||(memo=obj[keys?keys[index]:index],index+=dir);index>=0&&index<length;index+=dir){var currentKey=keys?keys[index]:index;memo=iteratee(memo,obj[currentKey],currentKey,obj)}return memo}(obj,optimizeCb(iteratee,context,4),memo,initial)}};_.reduce=_.foldl=_.inject=createReduce(1),_.reduceRight=_.foldr=createReduce(-1),_.find=_.detect=function(obj,predicate,context){var key=(isArrayLike(obj)?_.findIndex:_.findKey)(obj,predicate,context);if(void 0!==key&&-1!==key)return obj[key]},_.filter=_.select=function(obj,predicate,context){var results=[];return predicate=cb(predicate,context),_.each(obj,function(value,index,list){predicate(value,index,list)&&results.push(value)}),results},_.reject=function(obj,predicate,context){return _.filter(obj,_.negate(cb(predicate)),context)},_.every=_.all=function(obj,predicate,context){predicate=cb(predicate,context);for(var keys=!isArrayLike(obj)&&_.keys(obj),length=(keys||obj).length,index=0;index<length;index++){var currentKey=keys?keys[index]:index;if(!predicate(obj[currentKey],currentKey,obj))return!1}return!0},_.some=_.any=function(obj,predicate,context){predicate=cb(predicate,context);for(var keys=!isArrayLike(obj)&&_.keys(obj),length=(keys||obj).length,index=0;index<length;index++){var currentKey=keys?keys[index]:index;if(predicate(obj[currentKey],currentKey,obj))return!0}return!1},_.contains=_.includes=_.include=function(obj,item,fromIndex,guard){return isArrayLike(obj)||(obj=_.values(obj)),("number"!=typeof fromIndex||guard)&&(fromIndex=0),_.indexOf(obj,item,fromIndex)>=0},_.invoke=restArguments(function(obj,path,args){var contextPath,func;return _.isFunction(path)?func=path:_.isArray(path)&&(contextPath=path.slice(0,-1),path=path[path.length-1]),_.map(obj,function(context){var method=func;if(!method){if(contextPath&&contextPath.length&&(context=deepGet(context,contextPath)),null==context)return;method=context[path]}return null==method?method:method.apply(context,args)})}),_.pluck=function(obj,key){return _.map(obj,_.property(key))},_.where=function(obj,attrs){return _.filter(obj,_.matcher(attrs))},_.findWhere=function(obj,attrs){return _.find(obj,_.matcher(attrs))},_.max=function(obj,iteratee,context){var value,computed,result=-1/0,lastComputed=-1/0;if(null==iteratee||"number"==typeof iteratee&&"object"!=typeof obj[0]&&null!=obj)for(var i=0,length=(obj=isArrayLike(obj)?obj:_.values(obj)).length;i<length;i++)null!=(value=obj[i])&&value>result&&(result=value);else iteratee=cb(iteratee,context),_.each(obj,function(v,index,list){((computed=iteratee(v,index,list))>lastComputed||computed===-1/0&&result===-1/0)&&(result=v,lastComputed=computed)});return result},_.min=function(obj,iteratee,context){var value,computed,result=1/0,lastComputed=1/0;if(null==iteratee||"number"==typeof iteratee&&"object"!=typeof obj[0]&&null!=obj)for(var i=0,length=(obj=isArrayLike(obj)?obj:_.values(obj)).length;i<length;i++)null!=(value=obj[i])&&value<result&&(result=value);else iteratee=cb(iteratee,context),_.each(obj,function(v,index,list){((computed=iteratee(v,index,list))<lastComputed||computed===1/0&&result===1/0)&&(result=v,lastComputed=computed)});return result},_.shuffle=function(obj){return _.sample(obj,1/0)},_.sample=function(obj,n,guard){if(null==n||guard)return isArrayLike(obj)||(obj=_.values(obj)),obj[_.random(obj.length-1)];var sample=isArrayLike(obj)?_.clone(obj):_.values(obj),length=getLength(sample);n=Math.max(Math.min(n,length),0);for(var last=length-1,index=0;index<n;index++){var rand=_.random(index,last),temp=sample[index];sample[index]=sample[rand],sample[rand]=temp}return sample.slice(0,n)},_.sortBy=function(obj,iteratee,context){var index=0;return iteratee=cb(iteratee,context),_.pluck(_.map(obj,function(value,key,list){return{value:value,index:index++,criteria:iteratee(value,key,list)}}).sort(function(left,right){var a=left.criteria,b=right.criteria;if(a!==b){if(a>b||void 0===a)return 1;if(a<b||void 0===b)return-1}return left.index-right.index}),"value")};var group=function(behavior,partition){return function(obj,iteratee,context){var result=partition?[[],[]]:{};return iteratee=cb(iteratee,context),_.each(obj,function(value,index){var key=iteratee(value,index,obj);behavior(result,value,key)}),result}};_.groupBy=group(function(result,value,key){has(result,key)?result[key].push(value):result[key]=[value]}),_.indexBy=group(function(result,value,key){result[key]=value}),_.countBy=group(function(result,value,key){has(result,key)?result[key]++:result[key]=1});var reStrSymbol=/[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;_.toArray=function(obj){return obj?_.isArray(obj)?slice.call(obj):_.isString(obj)?obj.match(reStrSymbol):isArrayLike(obj)?_.map(obj,_.identity):_.values(obj):[]},_.size=function(obj){return null==obj?0:isArrayLike(obj)?obj.length:_.keys(obj).length},_.partition=group(function(result,value,pass){result[pass?0:1].push(value)},!0),_.first=_.head=_.take=function(array,n,guard){return null==array||array.length<1?null==n?void 0:[]:null==n||guard?array[0]:_.initial(array,array.length-n)},_.initial=function(array,n,guard){return slice.call(array,0,Math.max(0,array.length-(null==n||guard?1:n)))},_.last=function(array,n,guard){return null==array||array.length<1?null==n?void 0:[]:null==n||guard?array[array.length-1]:_.rest(array,Math.max(0,array.length-n))},_.rest=_.tail=_.drop=function(array,n,guard){return slice.call(array,null==n||guard?1:n)},_.compact=function(array){return _.filter(array,Boolean)};var flatten=function(input,shallow,strict,output){for(var idx=(output=output||[]).length,i=0,length=getLength(input);i<length;i++){var value=input[i];if(isArrayLike(value)&&(_.isArray(value)||_.isArguments(value)))if(shallow)for(var j=0,len=value.length;j<len;)output[idx++]=value[j++];else flatten(value,shallow,strict,output),idx=output.length;else strict||(output[idx++]=value)}return output};_.flatten=function(array,shallow){return flatten(array,shallow,!1)},_.without=restArguments(function(array,otherArrays){return _.difference(array,otherArrays)}),_.uniq=_.unique=function(array,isSorted,iteratee,context){_.isBoolean(isSorted)||(context=iteratee,iteratee=isSorted,isSorted=!1),null!=iteratee&&(iteratee=cb(iteratee,context));for(var result=[],seen=[],i=0,length=getLength(array);i<length;i++){var value=array[i],computed=iteratee?iteratee(value,i,array):value;isSorted&&!iteratee?(i&&seen===computed||result.push(value),seen=computed):iteratee?_.contains(seen,computed)||(seen.push(computed),result.push(value)):_.contains(result,value)||result.push(value)}return result},_.union=restArguments(function(arrays){return _.uniq(flatten(arrays,!0,!0))}),_.intersection=function(array){for(var result=[],argsLength=arguments.length,i=0,length=getLength(array);i<length;i++){var item=array[i];if(!_.contains(result,item)){var j;for(j=1;j<argsLength&&_.contains(arguments[j],item);j++);j===argsLength&&result.push(item)}}return result},_.difference=restArguments(function(array,rest){return rest=flatten(rest,!0,!0),_.filter(array,function(value){return!_.contains(rest,value)})}),_.unzip=function(array){for(var length=array&&_.max(array,getLength).length||0,result=Array(length),index=0;index<length;index++)result[index]=_.pluck(array,index);return result},_.zip=restArguments(_.unzip),_.object=function(list,values){for(var result={},i=0,length=getLength(list);i<length;i++)values?result[list[i]]=values[i]:result[list[i][0]]=list[i][1];return result};var createPredicateIndexFinder=function(dir){return function(array,predicate,context){predicate=cb(predicate,context);for(var length=getLength(array),index=dir>0?0:length-1;index>=0&&index<length;index+=dir)if(predicate(array[index],index,array))return index;return-1}};_.findIndex=createPredicateIndexFinder(1),_.findLastIndex=createPredicateIndexFinder(-1),_.sortedIndex=function(array,obj,iteratee,context){for(var value=(iteratee=cb(iteratee,context,1))(obj),low=0,high=getLength(array);low<high;){var mid=Math.floor((low+high)/2);iteratee(array[mid])<value?low=mid+1:high=mid}return low};var createIndexFinder=function(dir,predicateFind,sortedIndex){return function(array,item,idx){var i=0,length=getLength(array);if("number"==typeof idx)dir>0?i=idx>=0?idx:Math.max(idx+length,i):length=idx>=0?Math.min(idx+1,length):idx+length+1;else if(sortedIndex&&idx&&length)return array[idx=sortedIndex(array,item)]===item?idx:-1;if(item!=item)return(idx=predicateFind(slice.call(array,i,length),_.isNaN))>=0?idx+i:-1;for(idx=dir>0?i:length-1;idx>=0&&idx<length;idx+=dir)if(array[idx]===item)return idx;return-1}};_.indexOf=createIndexFinder(1,_.findIndex,_.sortedIndex),_.lastIndexOf=createIndexFinder(-1,_.findLastIndex),_.range=function(start,stop,step){null==stop&&(stop=start||0,start=0),step||(step=stop<start?-1:1);for(var length=Math.max(Math.ceil((stop-start)/step),0),range=Array(length),idx=0;idx<length;idx++,start+=step)range[idx]=start;return range},_.chunk=function(array,count){if(null==count||count<1)return[];for(var result=[],i=0,length=array.length;i<length;)result.push(slice.call(array,i,i+=count));return result};var executeBound=function(sourceFunc,boundFunc,context,callingContext,args){if(!(callingContext instanceof boundFunc))return sourceFunc.apply(context,args);var self=baseCreate(sourceFunc.prototype),result=sourceFunc.apply(self,args);return _.isObject(result)?result:self};_.bind=restArguments(function(func,context,args){if(!_.isFunction(func))throw new TypeError("Bind must be called on a function");var bound=restArguments(function(callArgs){return executeBound(func,bound,context,this,args.concat(callArgs))});return bound}),_.partial=restArguments(function(func,boundArgs){var placeholder=_.partial.placeholder,bound=function(){for(var position=0,length=boundArgs.length,args=Array(length),i=0;i<length;i++)args[i]=boundArgs[i]===placeholder?arguments[position++]:boundArgs[i];for(;position<arguments.length;)args.push(arguments[position++]);return executeBound(func,bound,this,this,args)};return bound}),_.partial.placeholder=_,_.bindAll=restArguments(function(obj,keys){var index=(keys=flatten(keys,!1,!1)).length;if(index<1)throw new Error("bindAll must be passed function names");for(;index--;){var key=keys[index];obj[key]=_.bind(obj[key],obj)}}),_.memoize=function(func,hasher){var memoize=function(key){var cache=memoize.cache,address=""+(hasher?hasher.apply(this,arguments):key);return has(cache,address)||(cache[address]=func.apply(this,arguments)),cache[address]};return memoize.cache={},memoize},_.delay=restArguments(function(func,wait,args){return setTimeout(function(){return func.apply(null,args)},wait)}),_.defer=_.partial(_.delay,_,1),_.throttle=function(func,wait,options){var timeout,context,args,result,previous=0;options||(options={});var later=function(){previous=!1===options.leading?0:_.now(),timeout=null,result=func.apply(context,args),timeout||(context=args=null)},throttled=function(){var now=_.now();previous||!1!==options.leading||(previous=now);var remaining=wait-(now-previous);return context=this,args=arguments,remaining<=0||remaining>wait?(timeout&&(clearTimeout(timeout),timeout=null),previous=now,result=func.apply(context,args),timeout||(context=args=null)):timeout||!1===options.trailing||(timeout=setTimeout(later,remaining)),result};return throttled.cancel=function(){clearTimeout(timeout),previous=0,timeout=context=args=null},throttled},_.debounce=function(func,wait,immediate){var timeout,result,later=function(context,args){timeout=null,args&&(result=func.apply(context,args))},debounced=restArguments(function(args){if(timeout&&clearTimeout(timeout),immediate){var callNow=!timeout;timeout=setTimeout(later,wait),callNow&&(result=func.apply(this,args))}else timeout=_.delay(later,wait,this,args);return result});return debounced.cancel=function(){clearTimeout(timeout),timeout=null},debounced},_.wrap=function(func,wrapper){return _.partial(wrapper,func)},_.negate=function(predicate){return function(){return!predicate.apply(this,arguments)}},_.compose=function(){var args=arguments,start=args.length-1;return function(){for(var i=start,result=args[start].apply(this,arguments);i--;)result=args[i].call(this,result);return result}},_.after=function(times,func){return function(){if(--times<1)return func.apply(this,arguments)}},_.before=function(times,func){var memo;return function(){return--times>0&&(memo=func.apply(this,arguments)),times<=1&&(func=null),memo}},_.once=_.partial(_.before,2),_.restArguments=restArguments;var hasEnumBug=!{toString:null}.propertyIsEnumerable("toString"),nonEnumerableProps=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],collectNonEnumProps=function(obj,keys){var nonEnumIdx=nonEnumerableProps.length,constructor=obj.constructor,proto=_.isFunction(constructor)&&constructor.prototype||ObjProto,prop="constructor";for(has(obj,prop)&&!_.contains(keys,prop)&&keys.push(prop);nonEnumIdx--;)(prop=nonEnumerableProps[nonEnumIdx])in obj&&obj[prop]!==proto[prop]&&!_.contains(keys,prop)&&keys.push(prop)};_.keys=function(obj){if(!_.isObject(obj))return[];if(nativeKeys)return nativeKeys(obj);var keys=[];for(var key in obj)has(obj,key)&&keys.push(key);return hasEnumBug&&collectNonEnumProps(obj,keys),keys},_.allKeys=function(obj){if(!_.isObject(obj))return[];var keys=[];for(var key in obj)keys.push(key);return hasEnumBug&&collectNonEnumProps(obj,keys),keys},_.values=function(obj){for(var keys=_.keys(obj),length=keys.length,values=Array(length),i=0;i<length;i++)values[i]=obj[keys[i]];return values},_.mapObject=function(obj,iteratee,context){iteratee=cb(iteratee,context);for(var keys=_.keys(obj),length=keys.length,results={},index=0;index<length;index++){var currentKey=keys[index];results[currentKey]=iteratee(obj[currentKey],currentKey,obj)}return results},_.pairs=function(obj){for(var keys=_.keys(obj),length=keys.length,pairs=Array(length),i=0;i<length;i++)pairs[i]=[keys[i],obj[keys[i]]];return pairs},_.invert=function(obj){for(var result={},keys=_.keys(obj),i=0,length=keys.length;i<length;i++)result[obj[keys[i]]]=keys[i];return result},_.functions=_.methods=function(obj){var names=[];for(var key in obj)_.isFunction(obj[key])&&names.push(key);return names.sort()};var createAssigner=function(keysFunc,defaults){return function(obj){var length=arguments.length;if(defaults&&(obj=Object(obj)),length<2||null==obj)return obj;for(var index=1;index<length;index++)for(var source=arguments[index],keys=keysFunc(source),l=keys.length,i=0;i<l;i++){var key=keys[i];defaults&&void 0!==obj[key]||(obj[key]=source[key])}return obj}};_.extend=createAssigner(_.allKeys),_.extendOwn=_.assign=createAssigner(_.keys),_.findKey=function(obj,predicate,context){predicate=cb(predicate,context);for(var key,keys=_.keys(obj),i=0,length=keys.length;i<length;i++)if(predicate(obj[key=keys[i]],key,obj))return key};var eq,deepEq,keyInObj=function(value,key,obj){return key in obj};_.pick=restArguments(function(obj,keys){var result={},iteratee=keys[0];if(null==obj)return result;_.isFunction(iteratee)?(keys.length>1&&(iteratee=optimizeCb(iteratee,keys[1])),keys=_.allKeys(obj)):(iteratee=keyInObj,keys=flatten(keys,!1,!1),obj=Object(obj));for(var i=0,length=keys.length;i<length;i++){var key=keys[i],value=obj[key];iteratee(value,key,obj)&&(result[key]=value)}return result}),_.omit=restArguments(function(obj,keys){var context,iteratee=keys[0];return _.isFunction(iteratee)?(iteratee=_.negate(iteratee),keys.length>1&&(context=keys[1])):(keys=_.map(flatten(keys,!1,!1),String),iteratee=function(value,key){return!_.contains(keys,key)}),_.pick(obj,iteratee,context)}),_.defaults=createAssigner(_.allKeys,!0),_.create=function(prototype,props){var result=baseCreate(prototype);return props&&_.extendOwn(result,props),result},_.clone=function(obj){return _.isObject(obj)?_.isArray(obj)?obj.slice():_.extend({},obj):obj},_.tap=function(obj,interceptor){return interceptor(obj),obj},_.isMatch=function(object,attrs){var keys=_.keys(attrs),length=keys.length;if(null==object)return!length;for(var obj=Object(object),i=0;i<length;i++){var key=keys[i];if(attrs[key]!==obj[key]||!(key in obj))return!1}return!0},eq=function(a,b,aStack,bStack){if(a===b)return 0!==a||1/a==1/b;if(null==a||null==b)return!1;if(a!=a)return b!=b;var type=typeof a;return("function"===type||"object"===type||"object"==typeof b)&&deepEq(a,b,aStack,bStack)},deepEq=function(a,b,aStack,bStack){a instanceof _&&(a=a._wrapped),b instanceof _&&(b=b._wrapped);var className=toString.call(a);if(className!==toString.call(b))return!1;switch(className){case"[object RegExp]":case"[object String]":return""+a==""+b;case"[object Number]":return+a!=+a?+b!=+b:0==+a?1/+a==1/b:+a==+b;case"[object Date]":case"[object Boolean]":return+a==+b;case"[object Symbol]":return SymbolProto.valueOf.call(a)===SymbolProto.valueOf.call(b)}var areArrays="[object Array]"===className;if(!areArrays){if("object"!=typeof a||"object"!=typeof b)return!1;var aCtor=a.constructor,bCtor=b.constructor;if(aCtor!==bCtor&&!(_.isFunction(aCtor)&&aCtor instanceof aCtor&&_.isFunction(bCtor)&&bCtor instanceof bCtor)&&"constructor"in a&&"constructor"in b)return!1}aStack=aStack||[],bStack=bStack||[];for(var length=aStack.length;length--;)if(aStack[length]===a)return bStack[length]===b;if(aStack.push(a),bStack.push(b),areArrays){if((length=a.length)!==b.length)return!1;for(;length--;)if(!eq(a[length],b[length],aStack,bStack))return!1}else{var key,keys=_.keys(a);if(length=keys.length,_.keys(b).length!==length)return!1;for(;length--;)if(key=keys[length],!has(b,key)||!eq(a[key],b[key],aStack,bStack))return!1}return aStack.pop(),bStack.pop(),!0},_.isEqual=function(a,b){return eq(a,b)},_.isEmpty=function(obj){return null==obj||(isArrayLike(obj)&&(_.isArray(obj)||_.isString(obj)||_.isArguments(obj))?0===obj.length:0===_.keys(obj).length)},_.isElement=function(obj){return!(!obj||1!==obj.nodeType)},_.isArray=nativeIsArray||function(obj){return"[object Array]"===toString.call(obj)},_.isObject=function(obj){var type=typeof obj;return"function"===type||"object"===type&&!!obj},_.each(["Arguments","Function","String","Number","Date","RegExp","Error","Symbol","Map","WeakMap","Set","WeakSet"],function(name){_["is"+name]=function(obj){return toString.call(obj)==="[object "+name+"]"}}),_.isArguments(arguments)||(_.isArguments=function(obj){return has(obj,"callee")});var nodelist=root.document&&root.document.childNodes;"function"!=typeof/./&&"object"!=typeof Int8Array&&"function"!=typeof nodelist&&(_.isFunction=function(obj){return"function"==typeof obj||!1}),_.isFinite=function(obj){return!_.isSymbol(obj)&&isFinite(obj)&&!isNaN(parseFloat(obj))},_.isNaN=function(obj){return _.isNumber(obj)&&isNaN(obj)},_.isBoolean=function(obj){return!0===obj||!1===obj||"[object Boolean]"===toString.call(obj)},_.isNull=function(obj){return null===obj},_.isUndefined=function(obj){return void 0===obj},_.has=function(obj,path){if(!_.isArray(path))return has(obj,path);for(var length=path.length,i=0;i<length;i++){var key=path[i];if(null==obj||!hasOwnProperty.call(obj,key))return!1;obj=obj[key]}return!!length},_.noConflict=function(){return root._=previousUnderscore,this},_.identity=function(value){return value},_.constant=function(value){return function(){return value}},_.noop=function(){},_.property=function(path){return _.isArray(path)?function(obj){return deepGet(obj,path)}:shallowProperty(path)},_.propertyOf=function(obj){return null==obj?function(){}:function(path){return _.isArray(path)?deepGet(obj,path):obj[path]}},_.matcher=_.matches=function(attrs){return attrs=_.extendOwn({},attrs),function(obj){return _.isMatch(obj,attrs)}},_.times=function(n,iteratee,context){var accum=Array(Math.max(0,n));iteratee=optimizeCb(iteratee,context,1);for(var i=0;i<n;i++)accum[i]=iteratee(i);return accum},_.random=function(min,max){return null==max&&(max=min,min=0),min+Math.floor(Math.random()*(max-min+1))},_.now=Date.now||function(){return(new Date).getTime()};var escapeMap={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},unescapeMap=_.invert(escapeMap),createEscaper=function(map){var escaper=function(match){return map[match]},source="(?:"+_.keys(map).join("|")+")",testRegexp=RegExp(source),replaceRegexp=RegExp(source,"g");return function(string){return string=null==string?"":""+string,testRegexp.test(string)?string.replace(replaceRegexp,escaper):string}};_.escape=createEscaper(escapeMap),_.unescape=createEscaper(unescapeMap),_.result=function(obj,path,fallback){_.isArray(path)||(path=[path]);var length=path.length;if(!length)return _.isFunction(fallback)?fallback.call(obj):fallback;for(var i=0;i<length;i++){var prop=null==obj?void 0:obj[path[i]];void 0===prop&&(prop=fallback,i=length),obj=_.isFunction(prop)?prop.call(obj):prop}return obj};var idCounter=0;_.uniqueId=function(prefix){var id=++idCounter+"";return prefix?prefix+id:id},_.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var noMatch=/(.)^/,escapes={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},escapeRegExp=/\\|'|\r|\n|\u2028|\u2029/g,escapeChar=function(match){return"\\"+escapes[match]};_.template=function(text,settings,oldSettings){!settings&&oldSettings&&(settings=oldSettings),settings=_.defaults({},settings,_.templateSettings);var render,matcher=RegExp([(settings.escape||noMatch).source,(settings.interpolate||noMatch).source,(settings.evaluate||noMatch).source].join("|")+"|$","g"),index=0,source="__p+='";text.replace(matcher,function(match,escape,interpolate,evaluate,offset){return source+=text.slice(index,offset).replace(escapeRegExp,escapeChar),index=offset+match.length,escape?source+="'+\n((__t=("+escape+"))==null?'':_.escape(__t))+\n'":interpolate?source+="'+\n((__t=("+interpolate+"))==null?'':__t)+\n'":evaluate&&(source+="';\n"+evaluate+"\n__p+='"),match}),source+="';\n",settings.variable||(source="with(obj||{}){\n"+source+"}\n"),source="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+source+"return __p;\n";try{render=new Function(settings.variable||"obj","_",source)}catch(e){throw e.source=source,e}var template=function(data){return render.call(this,data,_)},argument=settings.variable||"obj";return template.source="function("+argument+"){\n"+source+"}",template},_.chain=function(obj){var instance=_(obj);return instance._chain=!0,instance};var chainResult=function(instance,obj){return instance._chain?_(obj).chain():obj};_.mixin=function(obj){return _.each(_.functions(obj),function(name){var func=_[name]=obj[name];_.prototype[name]=function(){var args=[this._wrapped];return push.apply(args,arguments),chainResult(this,func.apply(_,args))}}),_},_.mixin(_),_.each(["pop","push","reverse","shift","sort","splice","unshift"],function(name){var method=ArrayProto[name];_.prototype[name]=function(){var obj=this._wrapped;return method.apply(obj,arguments),"shift"!==name&&"splice"!==name||0!==obj.length||delete obj[0],chainResult(this,obj)}}),_.each(["concat","join","slice"],function(name){var method=ArrayProto[name];_.prototype[name]=function(){return chainResult(this,method.apply(this._wrapped,arguments))}}),_.prototype.value=function(){return this._wrapped},_.prototype.valueOf=_.prototype.toJSON=_.prototype.value,_.prototype.toString=function(){return String(this._wrapped)},"function"==typeof define&&define.amd&&define("underscore",[],function(){return _})}(),define("readium_js_plugins",["jquery","underscore","eventEmitter"],function($,_,EventEmitter){var _registeredPlugins={};function Plugin(name,dependencies,initializer){this.name=name,this.dependencies=dependencies,this.initialized=!1,this.supported=!1,this.initializer=initializer}return Plugin.prototype={init:function(apiFactory){for(var requiredPlugin,PluginName,requiredPluginNames=this.dependencies||[],i=0,len=requiredPluginNames.length;i<len;++i){if(PluginName=requiredPluginNames[i],!((requiredPlugin=_registeredPlugins[PluginName])&&requiredPlugin instanceof Plugin))throw new Error("required Plugin '"+PluginName+"' not found");if(requiredPlugin.init(apiFactory),!requiredPlugin.supported)throw new Error("required Plugin '"+PluginName+"' not supported")}this.initializer(this,apiFactory.create(this))},fail:function(reason){throw this.initialized=!0,this.supported=!1,new Error("Plugin '"+this.name+"' failed to load: "+reason)},warn:function(msg){console.warn("Plugin "+this.name+": "+msg)},deprecationNotice:function(deprecated,replacement){console.warn("DEPRECATED: "+deprecated+" in Plugin "+this.name+"is deprecated. Please use "+replacement+" instead")},createError:function(msg){return new Error("Error in "+this.name+" Plugin: "+msg)}},new function(){this.initialize=function(reader){var apiFactory=new function(reader){this.create=function(plugin){return{host:reader,instance:new function(reader,plugin){this.reader=reader,this.plugin=plugin}(reader,plugin)}}}(reader);if(reader.plugins)throw new Error("Already initialized on reader!");reader.plugins={},_.each(_registeredPlugins,function(plugin){plugin.init(apiFactory)})},this.getLoadedPlugins=function(){return _registeredPlugins},this.register=function(name,optDependencies,initFunc){if(_registeredPlugins[name])throw new Error("Duplicate registration for plugin with name: "+name);var dependencies;"function"==typeof optDependencies?initFunc=optDependencies:dependencies=optDependencies,_registeredPlugins[name]=new Plugin(name,dependencies,function(plugin,api){if(!plugin.initialized||!api.host.plugins[plugin.name]){plugin.initialized=!0;try{var pluginContext={};$.extend(pluginContext,new EventEmitter),initFunc.call(pluginContext,api.instance),plugin.supported=!0,api.host.plugins[plugin.name]=pluginContext}catch(ex){plugin.fail(ex)}}})}}}),define("readium_shared_js/globalsSetup",["./globals","jquery","console_shim","es6-shim","eventEmitter","URIjs","readium_cfi_js","readium_js_plugins"],function(Globals,$,console_shim,es6Shim,EventEmitter,URI,EPUBcfi,PluginsController){if(console.log("Globals..."),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(searchElement,fromIndex){if(null==this)throw new TypeError('"this" is null or not defined');var o=Object(this),len=o.length>>>0;if(0===len)return!1;var x,y,n=0|fromIndex,k=Math.max(n>=0?n:len-Math.abs(n),0);for(;k<len;){if((x=o[k])===(y=searchElement)||"number"==typeof x&&"number"==typeof y&&isNaN(x)&&isNaN(y))return!0;k++}return!1}}),window.ReadiumSDK?(console.log("ReadiumSDK extend."),$.extend(Globals,window.ReadiumSDK)):console.log("ReadiumSDK set."),window.ReadiumSDK=Globals,EventEmitter.prototype.trigger=EventEmitter.prototype.emit,window.EventEmitter=EventEmitter,window.URI=URI,"URL"in window==!1){if("webkitURL"in window==!1)throw Error("Browser does not support window.URL");window.URL=window.webkitURL}if(Globals.Plugins=PluginsController,Globals.on(Globals.Events.READER_INITIALIZED,function(reader){Globals.logEvent("READER_INITIALIZED","ON","globalsSetup.js");try{PluginsController.initialize(reader)}catch(ex){console.error("Plugins failed to initialize:",ex)}_.defer(function(){Globals.logEvent("PLUGINS_LOADED","EMIT","globalsSetup.js"),Globals.emit(Globals.Events.PLUGINS_LOADED,reader)})}),window._RJS_isBrowser){var pluginsList=window._RJS_pluginsList;console.log("Plugins included: ",pluginsList.map(function(v){return v.replace("readium_plugin_","")})),require(pluginsList)}else setTimeout(function(){var pluginsList=Object.keys(PluginsController.getLoadedPlugins());console.log("Plugins included: ",pluginsList)},0)}),define("readium_shared_js",["readium_shared_js/globalsSetup"],function(main){return main}),define("readium_shared_js/models/bookmark_data",[],function(){var BookmarkData=function(idref,contentCFI){var self=this;this.idref=idref,this.contentCFI=contentCFI,this.toString=function(){return JSON.stringify(self)}};return BookmarkData.fromString=function(str){var obj=JSON.parse(str);return new BookmarkData(obj.idref,obj.contentCFI)},BookmarkData}),define("readium_shared_js/models/current_pages_info",[],function(){return function(spine,isFixedLayout){this.isRightToLeft=spine.isRightToLeft(),this.isFixedLayout=isFixedLayout,this.spineItemCount=spine.items.length,this.openPages=[],this.addOpenPage=function(spineItemPageIndex,spineItemPageCount,idref,spineItemIndex){this.openPages.push({spineItemPageIndex:spineItemPageIndex,spineItemPageCount:spineItemPageCount,idref:idref,spineItemIndex:spineItemIndex}),this.sort()},this.canGoLeft=function(){return this.isRightToLeft?this.canGoNext():this.canGoPrev()},this.canGoRight=function(){return this.isRightToLeft?this.canGoPrev():this.canGoNext()},this.canGoNext=function(){if(0==this.openPages.length)return!1;var lastOpenPage=this.openPages[this.openPages.length-1];return lastOpenPage.spineItemIndex<spine.last().index||lastOpenPage.spineItemPageIndex<lastOpenPage.spineItemPageCount-1},this.canGoPrev=function(){if(0==this.openPages.length)return!1;var firstOpenPage=this.openPages[0];return spine.first().index<firstOpenPage.spineItemIndex||0<firstOpenPage.spineItemPageIndex},this.sort=function(){this.openPages.sort(function(a,b){return a.spineItemIndex!=b.spineItemIndex?a.spineItemIndex-b.spineItemIndex:a.spineItemPageIndex-b.spineItemPageIndex})}}}),define("readium_shared_js/models/fixed_page_spread",[],function(){var Spread=function(spine,isSyntheticSpread){var self=this;this.spine=spine,this.leftItem=void 0,this.rightItem=void 0,this.centerItem=void 0;var _isSyntheticSpread=isSyntheticSpread;function resetItems(){self.leftItem=void 0,self.rightItem=void 0,self.centerItem=void 0}function setItemToPosition(item,position){position==Spread.POSITION_LEFT?self.leftItem=item:position==Spread.POSITION_RIGHT?self.rightItem=item:(position!=Spread.POSITION_CENTER&&console.error("Unrecognized position value"),self.centerItem=item)}function getItemPosition(item){return _isSyntheticSpread?item.isLeftPage()?Spread.POSITION_LEFT:item.isRightPage()?Spread.POSITION_RIGHT:Spread.POSITION_CENTER:Spread.POSITION_CENTER}this.setSyntheticSpread=function(isSyntheticSpread){_isSyntheticSpread=isSyntheticSpread},this.isSyntheticSpread=function(){return _isSyntheticSpread},this.openFirst=function(){0==this.spine.items.length?resetItems():this.openItem(this.spine.first())},this.openLast=function(){0==this.spine.items.length?resetItems():this.openItem(this.spine.last())},this.openItem=function(item){resetItems();var position=getItemPosition(item);if(setItemToPosition(item,position),position!=Spread.POSITION_CENTER&&this.spine.isValidLinearItem(item.index)){var neighbour=function(item){if(item.isLeftPage())return self.spine.isRightToLeft()?self.spine.prevItem(item):self.spine.nextItem(item);if(item.isRightPage())return self.spine.isRightToLeft()?self.spine.nextItem(item):self.spine.prevItem(item);return}(item);if(neighbour){var neighbourPos=getItemPosition(neighbour);neighbourPos!=position&&neighbourPos!=Spread.POSITION_CENTER&&!neighbour.isReflowable()&&neighbour.isRenditionSpreadAllowed()&&setItemToPosition(neighbour,neighbourPos)}}},this.openNext=function(){var items=this.validItems();if(0==items.length)this.openFirst();else{var nextItem=this.spine.nextItem(items[items.length-1]);nextItem&&this.openItem(nextItem)}},this.openPrev=function(){var items=this.validItems();if(0==items.length)this.openLast();else{var prevItem=this.spine.prevItem(items[0]);prevItem&&this.openItem(prevItem)}},this.validItems=function(){var arr=[];return this.leftItem&&arr.push(this.leftItem),this.rightItem&&arr.push(this.rightItem),this.centerItem&&arr.push(this.centerItem),arr.sort(function(a,b){return a.index-b.index}),arr}};return Spread.POSITION_LEFT="left",Spread.POSITION_RIGHT="right",Spread.POSITION_CENTER="center",Spread}),function(factory){"function"==typeof define&&define.amd?define("jquerySizes",["jquery"],factory):"object"==typeof module&&module.exports?module.exports=function(root,jQuery){return void 0===jQuery&&(jQuery="undefined"!=typeof window?require("jquery"):require("jquery")(root)),factory(jQuery),jQuery}:factory(jQuery)}(function($){"use strict";var num=function(value){return parseInt(value,10)||0};$.each(["min","max"],function(i,name){$.fn[name+"Size"]=function(value){var width,height;return value?(void 0!==value.width&&this.css(name+"-width",value.width),void 0!==value.height&&this.css(name+"-height",value.height),this):(width=this.css(name+"-width"),height=this.css(name+"-height"),{width:"max"===name&&(void 0===width||"none"===width||-1===num(width))&&Number.MAX_VALUE||num(width),height:"max"===name&&(void 0===height||"none"===height||-1===num(height))&&Number.MAX_VALUE||num(height)})}}),$.fn.isVisible=function(){return this.is(":visible")},$.each(["border","margin","padding"],function(i,name){$.fn[name]=function(value){return value?(void 0!==value.top&&this.css(name+"-top"+("border"===name?"-width":""),value.top),void 0!==value.bottom&&this.css(name+"-bottom"+("border"===name?"-width":""),value.bottom),void 0!==value.left&&this.css(name+"-left"+("border"===name?"-width":""),value.left),void 0!==value.right&&this.css(name+"-right"+("border"===name?"-width":""),value.right),this):{top:num(this.css(name+"-top"+("border"===name?"-width":""))),bottom:num(this.css(name+"-bottom"+("border"===name?"-width":""))),left:num(this.css(name+"-left"+("border"===name?"-width":""))),right:num(this.css(name+"-right"+("border"===name?"-width":"")))}}})}),define("readium_shared_js/models/spine_item",[],function(){var SpineItem=function(itemData,index,spine){var self=this;function validateSpread(){self.page_spread&&self.page_spread!=SpineItem.SPREAD_LEFT&&self.page_spread!=SpineItem.SPREAD_RIGHT&&self.page_spread!=SpineItem.SPREAD_CENTER&&console.error(self.page_spread+" is not a recognized spread type")}function isPropertyValueSetForItemOrPackage(propName,propValue){return self[propName]?self[propName]===propValue:!!self.spine.package[propName]&&self.spine.package[propName]===propValue}this.idref=itemData.idref,this.href=itemData.href,this.cfi=itemData.cfi,this.linear=itemData.linear?itemData.linear.toLowerCase():itemData.linear,this.page_spread=itemData.page_spread,this.rendition_viewport=itemData.rendition_viewport,this.rendition_spread=itemData.rendition_spread,this.rendition_orientation=itemData.rendition_orientation,this.rendition_layout=itemData.rendition_layout,this.rendition_flow=itemData.rendition_flow,this.media_overlay_id=itemData.media_overlay_id,this.media_type=itemData.media_type,this.index=index,this.spine=spine,validateSpread(),this.setSpread=function(spread){this.page_spread=spread,validateSpread()},this.isRenditionSpreadAllowed=function(){var rendition_spread=self.getRenditionSpread();return!rendition_spread||rendition_spread!=SpineItem.RENDITION_SPREAD_NONE},this.isLeftPage=function(){return self.page_spread==SpineItem.SPREAD_LEFT},this.isRightPage=function(){return self.page_spread==SpineItem.SPREAD_RIGHT},this.isCenterPage=function(){return self.page_spread==SpineItem.SPREAD_CENTER},this.isReflowable=function(){return!self.isFixedLayout()},this.isFixedLayout=function(){if(self.getRenditionLayout()){if(self.rendition_layout){if(self.rendition_layout===SpineItem.RENDITION_LAYOUT_PREPAGINATED)return!0;if(self.rendition_layout===SpineItem.RENDITION_LAYOUT_REFLOWABLE)return!1}return self.spine.package.isFixedLayout()}return self.media_type.indexOf("image/")>=0},this.getRenditionFlow=function(){return self.rendition_flow?self.rendition_flow:self.spine.package.rendition_flow},this.getRenditionViewport=function(){return self.rendition_viewport?self.rendition_viewport:self.spine.package.rendition_viewport},this.getRenditionSpread=function(){return self.rendition_spread?self.rendition_spread:self.spine.package.rendition_spread},this.getRenditionOrientation=function(){return self.rendition_orientation?self.rendition_orientation:self.spine.package.rendition_orientation},this.getRenditionLayout=function(){return self.rendition_layout?self.rendition_layout:self.spine.package.rendition_layout},this.isFlowScrolledContinuous=function(){return isPropertyValueSetForItemOrPackage("rendition_flow",SpineItem.RENDITION_FLOW_SCROLLED_CONTINUOUS)},this.isFlowScrolledDoc=function(){return isPropertyValueSetForItemOrPackage("rendition_flow",SpineItem.RENDITION_FLOW_SCROLLED_DOC)}};return SpineItem.RENDITION_LAYOUT_REFLOWABLE="reflowable",SpineItem.RENDITION_LAYOUT_PREPAGINATED="pre-paginated",SpineItem.RENDITION_ORIENTATION_LANDSCAPE="landscape",SpineItem.RENDITION_ORIENTATION_PORTRAIT="portrait",SpineItem.RENDITION_ORIENTATION_AUTO="auto",SpineItem.SPREAD_LEFT="page-spread-left",SpineItem.SPREAD_RIGHT="page-spread-right",SpineItem.SPREAD_CENTER="page-spread-center",SpineItem.RENDITION_SPREAD_NONE="none",SpineItem.RENDITION_SPREAD_LANDSCAPE="landscape",SpineItem.RENDITION_SPREAD_PORTRAIT="portrait",SpineItem.RENDITION_SPREAD_BOTH="both",SpineItem.RENDITION_SPREAD_AUTO="auto",SpineItem.RENDITION_FLOW_PAGINATED="paginated",SpineItem.RENDITION_FLOW_SCROLLED_CONTINUOUS="scrolled-continuous",SpineItem.RENDITION_FLOW_SCROLLED_DOC="scrolled-doc",SpineItem.RENDITION_FLOW_AUTO="auto",SpineItem.alternateSpread=function(spread){return spread===SpineItem.SPREAD_LEFT?SpineItem.SPREAD_RIGHT:spread===SpineItem.SPREAD_RIGHT?SpineItem.SPREAD_LEFT:spread},SpineItem}),define("readium_shared_js/helpers",["./globals","underscore","jquery","jquerySizes","./models/spine_item","URIjs"],function(Globals,_,$,JQuerySizes,SpineItem,URI){!function(){"use strict";if(window.performance){if(window.performance.now)return;for(var vendors=["webkitNow","mozNow","msNow","oNow"],i=0;i<vendors.length;i++)if(vendors[i]in window.performance)return void(window.performance.now=window.performance[vendors[i]])}else window.performance={};Date.now?window.performance.now=function(){return Date.now()}:window.performance.now=function(){return+new Date}}();var Helpers={getEbookUrlFilePath:function(ebookURL){return window.Blob&&window.File?ebookURL instanceof File?ebookURL.name:ebookURL instanceof Blob?"readium-ebook.epub":ebookURL:ebookURL},getURLQueryParams:function(initialQuery){var params={},query=initialQuery||window.location.search;if(query&&query.length)for(var keyParams=(query=query.substring(1)).split("&"),x=0;x<keyParams.length;x++){var keyVal=keyParams[x].split("=");keyVal.length>1&&(params[keyVal[0]]=decodeURIComponent(keyVal[1]))}return params},buildUrlQueryParameters:function(initialUrl,queryStringOverrides){var uriInstance=new URI(initialUrl||window.location),startingQueryString=uriInstance.search(),urlFragment=uriInstance.hash(),urlPath=uriInstance.search("").hash("").toString(),newQueryString="";for(var overrideKey in queryStringOverrides)if(queryStringOverrides.hasOwnProperty(overrideKey)&&queryStringOverrides[overrideKey]){var overrideEntry=queryStringOverrides[overrideKey];_.isString(overrideEntry)&&(overrideEntry=overrideEntry.trim()),overrideEntry&&(overrideEntry=overrideEntry.verbatim?overrideEntry.value:encodeURIComponent(overrideEntry),console.debug("URL QUERY PARAM OVERRIDE: "+overrideKey+" = "+overrideEntry),newQueryString+=overrideKey+"="+overrideEntry,newQueryString+="&")}var parsedQueryString=Helpers.getURLQueryParams(startingQueryString);for(var parsedKey in parsedQueryString)if(parsedQueryString.hasOwnProperty(parsedKey)&&parsedQueryString[parsedKey]&&!queryStringOverrides[parsedKey]){var parsedValue=parsedQueryString[parsedKey].trim();parsedValue&&(console.debug("URL QUERY PARAM PRESERVED: "+parsedKey+" = "+parsedValue),newQueryString+=parsedKey+"="+encodeURIComponent(parsedValue),newQueryString+="&")}return urlPath+"?"+(newQueryString=newQueryString.slice(0,-1))+urlFragment},Rect:function(left,top,width,height){this.left=left,this.top=top,this.width=width,this.height=height,this.right=function(){return this.left+this.width},this.bottom=function(){return this.top+this.height},this.isOverlap=function(rect,tolerance){return void 0==tolerance&&(tolerance=0),!(rect.right()<this.left+tolerance||rect.left>this.right()-tolerance||rect.bottom()<this.top+tolerance||rect.top>this.bottom()-tolerance)}}};return Helpers.Rect.fromElement=function($element){var e;3===(e=_.isArray($element)||$element instanceof jQuery?$element[0]:$element).nodeType&&(e=$element.parent()[0]);for(var offsetLeft=e.offsetLeft,offsetTop=e.offsetTop,offsetWidth=e.offsetWidth,offsetHeight=e.offsetHeight;e=e.offsetParent;)offsetLeft+=e.offsetLeft,offsetTop+=e.offsetTop;return new Helpers.Rect(offsetLeft,offsetTop,offsetWidth,offsetHeight)},Helpers.UpdateHtmlFontAttributes=function($epubHtml,fontSize,fontObj,callback){var docHead=$("head",$epubHtml),link=$("#readium_font_family_link",docHead);var changeFontFamily=0,fontLoadCallback_=_.once(function(){if(0!=changeFontFamily){var fontFamilyStyle=$("style#readium-fontFamily",docHead);fontFamilyStyle&&fontFamilyStyle[0]&&docHead[0].removeChild(fontFamilyStyle[0]),1==changeFontFamily&&((style=$epubHtml[0].ownerDocument.createElement("style")).setAttribute("id","readium-fontFamily"),style.appendChild($epubHtml[0].ownerDocument.createTextNode('html * { font-family: "'+fontObj.fontFamily+'" !important; }')),docHead[0].appendChild(style))}var factor=fontSize/100,win=$epubHtml[0].ownerDocument.defaultView;if(win){for(var $textblocks=$("p, div, span, h1, h2, h3, h4, h5, h6, li, blockquote, td, pre, dt, dd, code, a",$epubHtml),i=0;i<$textblocks.length&&!(fontSizeAttr=(ele=$textblocks[i]).getAttribute("data-original-font-size"));i++){var style=win.getComputedStyle(ele),originalFontSize=parseInt(style.fontSize);ele.setAttribute("data-original-font-size",originalFontSize),(originalLineHeight=parseInt(style.lineHeight))&&ele.setAttribute("data-original-line-height",originalLineHeight)}for(i=0;i<$textblocks.length;i++){var ele,fontSizeAttr;(originalFontSize=(fontSizeAttr=(ele=$textblocks[i]).getAttribute("data-original-font-size"))?Number(fontSizeAttr):0)&&$(ele).css("font-size",originalFontSize*factor+"px");var originalLineHeight,lineHeightAttr=ele.getAttribute("data-original-line-height");(originalLineHeight=lineHeightAttr?Number(lineHeightAttr):0)&&$(ele).css("line-height",originalLineHeight*factor+"px")}$epubHtml.css("font-size",fontSize+"%"),callback()}else console.log("NIL $epubHtml[0].ownerDocument.defaultView")});if(fontObj.fontFamily&&fontObj.url){var dataFontFamily=link.length?link.attr("data-fontfamily"):void 0;link.length?dataFontFamily!=fontObj.fontFamily?(changeFontFamily=1,link.attr({"data-fontfamily":fontObj.fontFamily,href:fontObj.url})):changeFontFamily=0:(changeFontFamily=1,setTimeout(function(){link=$("<link/>",{id:"readium_font_family_link","data-fontfamily":fontObj.fontFamily,rel:"stylesheet",type:"text/css"}),docHead.append(link),link.attr({href:fontObj.url})},0))}else changeFontFamily=2,link.length&&link.remove();1==changeFontFamily?setTimeout(function(){fontLoadCallback_()},100):fontLoadCallback_()},Helpers.ResolveContentRef=function(contentRef,sourceFileHref){if(!sourceFileHref)return contentRef;var sourceParts=sourceFileHref.split("/");sourceParts.pop();for(var pathComponents=contentRef.split("/");sourceParts.length>0&&".."===pathComponents[0];)sourceParts.pop(),pathComponents.splice(0,1);return sourceParts.concat(pathComponents).join("/")},Helpers.EndsWith=function(str,suffix){return-1!==str.indexOf(suffix,str.length-suffix.length)},Helpers.BeginsWith=function(str,suffix){return 0===str.indexOf(suffix)},Helpers.RemoveFromString=function(str,toRemove){var startIx=str.indexOf(toRemove);return-1==startIx?str:str.substring(0,startIx)+str.substring(startIx+toRemove.length)},Helpers.Margins=function(margin,border,padding){this.margin=margin,this.border=border,this.padding=padding,this.left=this.margin.left+this.border.left+this.padding.left,this.right=this.margin.right+this.border.right+this.padding.right,this.top=this.margin.top+this.border.top+this.padding.top,this.bottom=this.margin.bottom+this.border.bottom+this.padding.bottom,this.width=function(){return this.left+this.right},this.height=function(){return this.top+this.bottom}},Helpers.triggerLayout=function($iframe){var doc=$iframe[0].contentDocument;if(doc){var ss=void 0;try{if(!(ss=doc.styleSheets&&doc.styleSheets.length?doc.styleSheets[0]:void 0)){var style=doc.createElement("style");doc.head.appendChild(style),style.appendChild(doc.createTextNode("")),ss=style.sheet}if(ss){var cssRule="body:first-child::before {content:'READIUM';color: red;font-weight: bold;}";ss.cssRules?ss.insertRule(cssRule,ss.cssRules.length):ss.insertRule(cssRule,0)}}catch(ex){console.error(ex)}try{var el=doc.createElementNS("http://www.w3.org/1999/xhtml","style");el.appendChild(doc.createTextNode("*{}")),doc.body.appendChild(el),doc.body.removeChild(el),ss&&(ss.cssRules?ss.deleteRule(ss.cssRules.length-1):ss.deleteRule(0))}catch(ex){console.error(ex)}if(doc.body)doc.body.offsetTop}},Helpers.deduceSyntheticSpread=function($viewport,spineItem,settings){if(!$viewport||0==$viewport.length)return 0;var rendition_spread=spineItem?spineItem.getRenditionSpread():void 0;if(rendition_spread===SpineItem.RENDITION_SPREAD_NONE)return!1;if("double"==settings.syntheticSpread)return!0;if("single"==settings.syntheticSpread)return!1;if(!spineItem)return 0;if(rendition_spread===SpineItem.RENDITION_SPREAD_BOTH)return!0;var orientation=Helpers.getOrientation($viewport);return rendition_spread===SpineItem.RENDITION_SPREAD_LANDSCAPE?orientation===Globals.Views.ORIENTATION_LANDSCAPE:rendition_spread===SpineItem.RENDITION_SPREAD_PORTRAIT?orientation===Globals.Views.ORIENTATION_PORTRAIT:rendition_spread&&rendition_spread!==SpineItem.RENDITION_SPREAD_AUTO?(console.warn("Helpers.deduceSyntheticSpread: spread properties?!"),0):orientation===Globals.Views.ORIENTATION_LANDSCAPE?1:0},Helpers.Margins.fromElement=function($element){return new this($element.margin(),$element.border(),$element.padding())},Helpers.Margins.empty=function(){return new this({left:0,right:0,top:0,bottom:0},{left:0,right:0,top:0,bottom:0},{left:0,right:0,top:0,bottom:0})},Helpers.loadTemplate=function(name,params){return Helpers.loadTemplate.cache[name]},Helpers.loadTemplate.cache={fixed_book_frame:'<div id="fixed-book-frame" class="clearfix book-frame fixed-book-frame"></div>',single_page_frame:'<div><div id="scaler"><iframe enable-annotation="enable-annotation" allowfullscreen="allowfullscreen" scrolling="no" class="iframe-fixed"></iframe></div></div>',scrolled_book_frame:'<div id="reflowable-book-frame" class="clearfix book-frame reflowable-book-frame"><div id="scrolled-content-frame"></div></div>',reflowable_book_frame:'<div id="reflowable-book-frame" class="clearfix book-frame reflowable-book-frame"></div>',reflowable_book_page_frame:'<div id="reflowable-content-frame" class="reflowable-content-frame"><iframe enable-annotation="enable-annotation" allowfullscreen="allowfullscreen" scrolling="no" id="epubContentIframe"></iframe></div>'},Helpers.setStyles=function(styles,$element){var count=styles.length;if(count){for(var stylingGlobal="",stylings=[],elementIsDocument=!(!$element||!$element.createTextNode),i=0;i<count;i++){var style=styles[i];if(elementIsDocument)if(style.selector&&""!=style.selector&&"html"!=style.selector&&"body"!=style.selector&&"*"!=style.selector){var cssProperties="";for(var prop in style.declarations){if(style.declarations.hasOwnProperty(prop))cssProperties+=prop.replace(/[A-Z]/g,function(a){return"-"+a.toLowerCase()})+": "+style.declarations[prop]+" !important; "}stylings.push({selector:style.selector,cssProps:cssProperties})}else for(var prop in style.declarations){if(style.declarations.hasOwnProperty(prop))stylingGlobal+=prop.replace(/[A-Z]/g,function(a){return"-"+a.toLowerCase()})+": "+style.declarations[prop]+" !important; "}else style.selector?$(style.selector,$element).css(style.declarations):$element.css(style.declarations)}if(elementIsDocument){var doc=$element,bookStyleElement=$("style#readium-bookStyles",doc.head);bookStyleElement&&bookStyleElement[0]&&doc.head.removeChild(bookStyleElement[0]);var cssStylesheet="";if(stylingGlobal.length>0&&(cssStylesheet+=" body, body::after, body::before, body *, body *::after, body *::before { "+stylingGlobal+" } "),stylings.length>0)for(i=0;i<stylings.length;i++){var styling=stylings[i];cssStylesheet+=" "+styling.selector+" { "+styling.cssProps+" } "}if(cssStylesheet.length>0){var styleElement=doc.createElement("style");styleElement.setAttribute("id","readium-bookStyles"),styleElement.appendChild(doc.createTextNode(cssStylesheet)),doc.head.appendChild(styleElement)}}}},Helpers.isIframeAlive=function(iframe){var w=void 0,d=void 0;try{w=iframe.contentWindow,d=iframe.contentDocument}catch(ex){return console.error(ex),!1}return w&&d},Helpers.getOrientation=function($viewport){var viewportWidth=$viewport.width(),viewportHeight=$viewport.height();if(viewportWidth&&viewportHeight)return viewportWidth>=viewportHeight?Globals.Views.ORIENTATION_LANDSCAPE:Globals.Views.ORIENTATION_PORTRAIT},Helpers.isRenditionSpreadPermittedForItem=function(item,orientation){var rendition_spread=item.getRenditionSpread();return!rendition_spread||rendition_spread==SpineItem.RENDITION_SPREAD_BOTH||rendition_spread==SpineItem.RENDITION_SPREAD_AUTO||rendition_spread==SpineItem.RENDITION_SPREAD_LANDSCAPE&&orientation==Globals.Views.ORIENTATION_LANDSCAPE||rendition_spread==SpineItem.RENDITION_SPREAD_PORTRAIT&&orientation==Globals.Views.ORIENTATION_PORTRAIT},Helpers.CSSTransition=function($el,trans){var css={};_.each(["","-webkit-","-moz-","-ms-"],function(prefix){css[prefix+"transition"]=prefix+trans}),$el.css(css)},Helpers.CSSTransformString=function(options){var translate,scale,rotation,enable3D=!!options.enable3D,origin=options.origin;if(options.left||options.top){var left=options.left||0,top=options.top||0;translate=enable3D?"translate3D("+left+"px, "+top+"px, 0)":"translate("+left+"px, "+top+"px)"}if(options.scale&&(scale=enable3D?"scale3D("+options.scale+", "+options.scale+", 0)":"scale("+options.scale+")"),options.angle&&(rotation=enable3D?"rotate3D(0,0,"+options.angle+"deg)":"rotate("+options.angle+"deg)"),!(translate||scale||rotation))return{};var transformString=translate&&scale?translate+" "+scale:translate||scale;rotation&&(transformString=transformString+" "+rotation);var css={};return css.transform=transformString,css["transform-origin"]=origin||(enable3D?"0 0 0":"0 0"),css},Helpers.extendedThrottle=function(startCb,tickCb,endCb,tickRate,waitThreshold,context){tickRate||(tickRate=250),waitThreshold||(waitThreshold=tickRate);var last,deferTimer,first=!0;return function(){var ctx=context||this,now=Date.now&&Date.now()||(new Date).getTime(),args=arguments;last&&now<last+tickRate||(last=now,first?(startCb.apply(ctx,args),first=!1):tickCb.apply(ctx,args)),clearTimeout(deferTimer),deferTimer=setTimeout(function(){last=now,first=!0,endCb.apply(ctx,args)},waitThreshold)}},Helpers.escapeJQuerySelector=function(sel){if(sel)return sel.replace(/([;&,\.\+\*\~\?':"\!\^#$%@\[\]\(\)<=>\|\/\\{}`])/g,"\\$1")},Helpers.polyfillCaretRangeFromPoint=function(document){if(!document.caretRangeFromPoint)if(document.caretPositionFromPoint)document.caretRangeFromPoint=function(x,y){var r=document.createRange(),p=document.caretPositionFromPoint(x,y);return p?(p.offsetNode&&(r.setStart(p.offsetNode,p.offset),r.setEnd(p.offsetNode,p.offset)),r):null};else if((document.body||document.createElement("body")).createTextRange){var TextRangeUtils={convertToDOMRange:function(textRange,document){var adoptBoundary=function(domRange,textRangeInner,bStart){var cursorNode=document.createElement("a"),cursor=textRangeInner.duplicate();cursor.collapse(bStart);var parent=cursor.parentElement();do{parent.insertBefore(cursorNode,cursorNode.previousSibling),cursor.moveToElementText(cursorNode)}while(cursor.compareEndPoints(bStart?"StartToStart":"StartToEnd",textRangeInner)>0&&cursorNode.previousSibling);-1==cursor.compareEndPoints(bStart?"StartToStart":"StartToEnd",textRangeInner)&&cursorNode.nextSibling?(cursor.setEndPoint(bStart?"EndToStart":"EndToEnd",textRangeInner),domRange[bStart?"setStart":"setEnd"](cursorNode.nextSibling,cursor.text.length)):domRange[bStart?"setStartBefore":"setEndBefore"](cursorNode),cursorNode.parentNode.removeChild(cursorNode)},domRange=document.createRange();return adoptBoundary(domRange,textRange,!0),adoptBoundary(domRange,textRange,!1),domRange}};document.caretRangeFromPoint=function(x,y){for(var tr=document.body.createTextRange(),iy=40;iy;iy-=4)try{return tr.moveToPoint(x,iy+y-40),TextRangeUtils.convertToDOMRange(tr,document)}catch(ex){}try{var elem=document.elementFromPoint(x-1,y-1),r=document.createRange();return r.setStartAfter(elem),r}catch(ex){return null}}}},Helpers}),define("readium_shared_js/views/cfi_navigation_logic",["jquery","underscore","../helpers","readium_cfi_js"],function($,_,Helpers,EPUBcfi){return function(options){var self=this;options=options||{};var _DEBUG=ReadiumSDK.DEBUG_MODE;function createRange(){return self.getRootDocument().createRange()}function getNodeRangeClientRect(startNode,startOffset,endNode,endOffset){var range=createRange();return range.setStart(startNode,startOffset||0),endNode.nodeType===Node.ELEMENT_NODE?range.setEnd(endNode,endOffset||endNode.childNodes.length):endNode.nodeType===Node.TEXT_NODE&&range.setEnd(endNode,endOffset||0),range.collapsed?normalizeRectangle(range.getClientRects()[0],0,0):normalizeRectangle(range.getBoundingClientRect(),0,0)}function getRangeClientRectList(range,visibleContentOffsets){return visibleContentOffsets=visibleContentOffsets||getVisibleContentOffsets(),_.map(range.getClientRects(),function(rect){return normalizeRectangle(rect,visibleContentOffsets.left,visibleContentOffsets.top)})}function getFrameDimensions(){return options.frameDimensionsGetter?options.frameDimensionsGetter():(console.error("CfiNavigationLogic: No frame dimensions specified!"),null)}function getCaretRangeFromPoint(x,y,document){return document=document||self.getRootDocument(),Helpers.polyfillCaretRangeFromPoint(document),document.caretRangeFromPoint(x,y)}function isPaginatedView(){return!!options.paginationInfo}function isPageProgressionRightToLeft(){return options.paginationInfo&&!!options.paginationInfo.rightToLeft}function isVerticalWritingMode(){return options.paginationInfo&&!!options.paginationInfo.isVerticalWritingMode}function isRectVisible(rect,ignorePartiallyVisible,frameDimensions){return frameDimensions=frameDimensions||getFrameDimensions(),!!rect&&(0!=rect.left||0!=rect.right||0!=rect.top||0!=rect.bottom)&&(isPaginatedView()&&!isVerticalWritingMode()?rect.left>=0&&rect.left<frameDimensions.width||!ignorePartiallyVisible&&rect.left<0&&rect.right>0:rect.top>=0&&rect.top<frameDimensions.height||!ignorePartiallyVisible&&rect.top<0&&rect.bottom>0)}function getColumnFullWidth(){return!options.paginationInfo||isVerticalWritingMode()?options.$iframe.width():options.paginationInfo.columnWidth+options.paginationInfo.columnGap}function getVisibleContentOffsets(){return options.visibleContentOffsetsGetter?options.visibleContentOffsetsGetter():isVerticalWritingMode()&&options.paginationOffsetsGetter?options.paginationOffsetsGetter():{top:0,left:0}}function checkVisibilityByRectangles($element,shouldCalculateVisibilityPercentage,visibleContentOffsets,frameDimensions){visibleContentOffsets=visibleContentOffsets||getVisibleContentOffsets(),frameDimensions=frameDimensions||getFrameDimensions();var clientRectangles=getNormalizedRectangles($element,visibleContentOffsets);if(0===clientRectangles.length)return null;var visibilityPercentage=0;if(1===clientRectangles.length){var adjustedRect=clientRectangles[0];isPaginatedView()&&(adjustedRect.bottom>frameDimensions.height||adjustedRect.top<0)&&adjustRectangle(adjustedRect,!0,frameDimensions),isRectVisible(adjustedRect,!1,frameDimensions)&&(visibilityPercentage=shouldCalculateVisibilityPercentage&&adjustedRect.top<0?Math.floor(100*(adjustedRect.height+adjustedRect.top)/adjustedRect.height):shouldCalculateVisibilityPercentage&&adjustedRect.bottom>frameDimensions.height?Math.floor(100*(frameDimensions.height-adjustedRect.top)/adjustedRect.height):shouldCalculateVisibilityPercentage&&adjustedRect.left<0&&adjustedRect.right>0?Math.floor(100*adjustedRect.right/adjustedRect.width):shouldCalculateVisibilityPercentage&&adjustedRect.left<0&&adjustedRect.right>0?Math.floor(100*adjustedRect.right/adjustedRect.width):100)}else for(var i=0,l=clientRectangles.length;i<l;++i)if(isRectVisible(clientRectangles[i],!1,frameDimensions)){visibilityPercentage=shouldCalculateVisibilityPercentage?measureVisibilityPercentageByRectangles(clientRectangles,i):100;break}return visibilityPercentage}function findPageIndexDeltaByRectangles($element){var clientRectangles=getNormalizedRectangles($element,getVisibleContentOffsets());return 0===clientRectangles.length?null:calculatePageIndexDeltaByRectangles(clientRectangles)}function calculatePageIndexDeltaByRectangles(clientRectangles,frameDimensions,columnFullWidth){var isRtl=isPageProgressionRightToLeft(),isVwm=isVerticalWritingMode();columnFullWidth=columnFullWidth||getColumnFullWidth(),frameDimensions=frameDimensions||getFrameDimensions();var pageIndex,firstRectangle=_.first(clientRectangles);if(1===clientRectangles.length&&adjustRectangle(firstRectangle,!1,frameDimensions,columnFullWidth,isRtl,isVwm),isVwm){var topOffset=firstRectangle.top;pageIndex=Math.floor(topOffset/frameDimensions.height)}else{var leftOffset=firstRectangle.left;isRtl&&(leftOffset=columnFullWidth*(options.paginationInfo?options.paginationInfo.visibleColumnCount:1)-leftOffset),pageIndex=Math.floor(leftOffset/columnFullWidth)}return pageIndex}function measureVisibilityPercentageByRectangles(clientRectangles,firstVisibleRectIndex){var heightTotal=0,heightVisible=0;return clientRectangles.length>1?_.each(clientRectangles,function(rect,index){heightTotal+=rect.height,index>=firstVisibleRectIndex&&(heightVisible+=rect.height)}):(heightTotal=clientRectangles[0].height,heightVisible=clientRectangles[0].height-Math.max(0,-clientRectangles[0].top)),heightVisible===heightTotal?100:Math.floor(100*heightVisible/heightTotal)}function getNormalizedRectangles($el,visibleContentOffsets){var clientRectList,leftOffset=(visibleContentOffsets=visibleContentOffsets||{}).left||0,topOffset=visibleContentOffsets.top||0;if($el[0].nodeType===Node.TEXT_NODE){var range=createRange();range.selectNode($el[0]),clientRectList=range.getClientRects()}else clientRectList=$el[0].getClientRects();for(var clientRectangles=[],i=0,l=clientRectList.length;i<l;++i)(clientRectList[i].height>0||1===clientRectList.length)&&clientRectangles.push(normalizeRectangle(clientRectList[i],leftOffset,topOffset));return clientRectangles}function normalizeRectangle(textRect,leftOffset,topOffset){var plainRectObject={left:textRect.left,right:textRect.right,top:textRect.top,bottom:textRect.bottom,width:textRect.right-textRect.left,height:textRect.bottom-textRect.top};return offsetRectangle(plainRectObject,leftOffset=leftOffset||0,topOffset=topOffset||0),plainRectObject}function offsetRectangle(rect,leftOffset,topOffset){rect.left+=leftOffset,rect.right+=leftOffset,rect.top+=topOffset,rect.bottom+=topOffset}function adjustRectangle(rect,shouldLookForFirstVisibleColumn,frameDimensions,columnFullWidth,isRtl,isVwm){if(frameDimensions=frameDimensions||getFrameDimensions(),columnFullWidth=columnFullWidth||getColumnFullWidth(),isRtl=isRtl||isPageProgressionRightToLeft(),!(isVwm=isVwm||isVerticalWritingMode())){for(isRtl&&(columnFullWidth*=-1);rect.top<0;)offsetRectangle(rect,-columnFullWidth,frameDimensions.height);if(shouldLookForFirstVisibleColumn)for(;rect.bottom>=frameDimensions.height&&!isRectVisible(rect,!1,frameDimensions);)offsetRectangle(rect,columnFullWidth,-frameDimensions.height)}}function splitRange(range,division){if(range.endOffset-range.startOffset==1)return[range];var length=function(range,division){var percent=division/100;return Math.round((range.endOffset-range.startOffset)*percent)}(range,division),textNode=range.startContainer,leftNodeRange=range.cloneRange();leftNodeRange.setStart(textNode,range.startOffset),leftNodeRange.setEnd(textNode,range.startOffset+length);var rightNodeRange=range.cloneRange();return rightNodeRange.setStart(textNode,range.startOffset+length),rightNodeRange.setEnd(textNode,range.endOffset),[leftNodeRange,rightNodeRange]}function getVisibleTextRangeOffsets(textNode,pickerFunc,visibleContentOffsets,frameDimensions){visibleContentOffsets=visibleContentOffsets||getVisibleContentOffsets();var textnode,documentRange,rectList,directionBit,split,visibleRectHeight,invisibleRectHeight,totalHeight,nodeRange=(textnode=textNode,(documentRange=createRange()).selectNodeContents(textnode),documentRange),nodeClientRects=getRangeClientRectList(nodeRange,visibleContentOffsets),splitRatio=(rectList=nodeClientRects,directionBit=pickerFunc([0,1]),split=0,visibleRectHeight=calculateCumulativeHeight(_.filter(rectList,function(rect){return(isVerticalWritingMode()?rect.height:rect.width)&&isRectVisible(rect,!1,getFrameDimensions())})),invisibleRectHeight=totalHeight-visibleRectHeight,totalHeight=calculateCumulativeHeight(rectList),visibleRectHeight===totalHeight?directionBit?55:45:(split=visibleRectHeight/totalHeight*100,invisibleRectHeight>visibleRectHeight?split+5:split-5));return function(startingSet,visibleContentOffsets,directionBit,splitRatio,filterFunc){for(var runCount=0,currRange=startingSet;1!==currRange.length;){runCount++;var currTextNodeFragments=getRangeClientRectList(currRange[directionBit],visibleContentOffsets);currRange=hasVisibleFragments(currTextNodeFragments,filterFunc)?splitRange(currRange[directionBit],splitRatio):splitRange(currRange[directionBit?0:1],splitRatio)}_DEBUG&&(console.debug("getVisibleTextRangeOffsets:getTextRangeOffset:runCount",runCount),window.top._DEBUG_visibleTextRangeOffsetsRuns.push(runCount));var resultRange=currRange[0];return resultRange&&resultRange.collapse(!directionBit),resultRange}(splitRange(nodeRange,splitRatio),visibleContentOffsets,pickerFunc([0,1]),splitRatio,function(rect){return(isVerticalWritingMode()?rect.height:rect.width)&&isRectVisible(rect,!1,frameDimensions)})}function calculateCumulativeHeight(rectList){var lineMap=function(rectList){var sortedList=rectList.sort(function(a,b){return a.top<b.top}),lineMap=[];_.each(sortedList,function(rect){var key=rect.top;if(lineMap[key]){var currentLine=lineMap[key];currentLine.push(rect.height),lineMap[key]=currentLine}else lineMap[key]=[rect.height]})}(rectList),height=0;return _.each(lineMap,function(line){height+=Math.max.apply(null,line)}),height}function hasVisibleFragments(fragments,filterFunc){return!!_.filter(fragments,filterFunc).length}function findVisibleLeafNodeCfi(visibleLeafNode,pickerFunc,visibleContentOffsets,frameDimensions){if(!visibleLeafNode)return null;var element=visibleLeafNode.element,textNode=visibleLeafNode.textNode;if(textNode&&isValidTextNode(textNode)){var visibleRange=getVisibleTextRangeOffsets(textNode,pickerFunc,visibleContentOffsets,frameDimensions);return visibleRange?generateCfiFromDomRange(visibleRange):(_DEBUG&&console.warn("findVisibleLeafNodeCfi: failed to find text range offset"),null)}return self.getCfiForElement(element)}function generateCfiFromDomRange(range){return range.collapsed&&range.startContainer.nodeType===Node.TEXT_NODE?EPUBcfi.generateCharacterOffsetCFIComponent(range.startContainer,range.startOffset,["cfi-marker"],[],["MathJax_Message","MathJax_SVG_Hidden"]):range.collapsed?self.getCfiForElement(range.startContainer):EPUBcfi.generateRangeComponent(range.startContainer,range.startOffset,range.endContainer,range.endOffset,self.getClassBlacklist(),self.getElementBlacklist(),self.getIdBlacklist())}function getWrappedCfi(partialCfi){return"epubcfi(/99!"+partialCfi+")"}function _isRangeCfi(partialCfi){return EPUBcfi.Interpreter.isRangeCfi(getWrappedCfi(partialCfi))}function _hasTextTerminus(partialCfi){return EPUBcfi.Interpreter.hasTextTerminus(getWrappedCfi(partialCfi))}function getElementByPartialCfi(cfi,classBlacklist,elementBlacklist,idBlacklist){var contentDoc=self.getRootDocument(),wrappedCfi=getWrappedCfi(cfi);try{var $element=EPUBcfi.getTargetElement(wrappedCfi,contentDoc,classBlacklist,elementBlacklist,idBlacklist)}catch(ex){}if($element&&0!=$element.length)return $element;console.log("Can't find element for CFI: "+cfi)}function getBaseCfiSelectedByFunc(pickerFunc){var $selectedNode=pickerFunc(self.getLeafNodeElements($(self.getBodyElement()))),collapseToStart=pickerFunc([!0,!1]),range=createRange();return range.selectNodeContents($selectedNode[0]),range.collapse(collapseToStart),generateCfiFromDomRange(range)}function isElementBlacklisted(element){var classAttribute=element.className;classAttribute&&void 0!==classAttribute.animVal?classAttribute=classAttribute.animVal:classAttribute&&void 0!==classAttribute.baseVal&&(classAttribute=classAttribute.baseVal);var classList=classAttribute?classAttribute.split(" "):[],id=element.id,classBlacklist=self.getClassBlacklist();return!!(1===classList.length&&_.contains(classBlacklist,classList[0])||classList.length&&_.intersection(classBlacklist,classList).length||id&&id.length&&_.contains(self.getIdBlacklist(),id)||_.contains(self.getElementBlacklist(),element.tagName.toLowerCase()))}function isElementNode(node){return!!node&&node.nodeType===Node.ELEMENT_NODE}function isValidTextNode(node){return!!node&&node.nodeType===Node.TEXT_NODE&&isValidTextNodeContent(node.nodeValue)}function isValidTextNodeContent(text){return!!text.trim().length}_DEBUG&&(window.top._DEBUG_visibleTextRangeOffsetsRuns=window.top._DEBUG_visibleTextRangeOffsetsRuns||[]),this.getRootElement=function(){return options.$iframe?options.$iframe[0].contentDocument.documentElement:null},this.getBodyElement=function(){var rootDocument=this.getRootDocument();return rootDocument&&rootDocument.body?rootDocument.body:this.getRootElement()},this.getClassBlacklist=function(){return options.classBlacklist||[]},this.getIdBlacklist=function(){return options.idBlacklist||[]},this.getElementBlacklist=function(){return options.elementBlacklist||[]},this.getRootDocument=function(){return options.$iframe?options.$iframe[0].contentDocument:null},this.getCfiForElement=function(element){var cfi=EPUBcfi.Generator.generateElementCFIComponent(element,this.getClassBlacklist(),this.getElementBlacklist(),this.getIdBlacklist());return"!"==cfi[0]&&(cfi=cfi.substring(1)),cfi},this.getVisibleCfiFromPoint=function(x,y,precisePoint){var document=self.getRootDocument(),firstVisibleCaretRange=getCaretRangeFromPoint(x,y,document),elementFromPoint=document.elementFromPoint(x,y),invalidElementFromPoint=!elementFromPoint||elementFromPoint===document.documentElement;if(precisePoint){if(!elementFromPoint||invalidElementFromPoint)return null;var testRect=function(node){var range=createRange();return range.selectNodeContents(node),normalizeRectangle(range.getBoundingClientRect(),0,0)}(elementFromPoint);if(!isRectVisible(testRect,!1))return null;if(x<testRect.left||x>testRect.right||y<testRect.top||y>testRect.bottom)return null}if(!firstVisibleCaretRange){if(invalidElementFromPoint)return console.error("Could not generate CFI no visible element on page"),null;(firstVisibleCaretRange=createRange()).selectNode(elementFromPoint)}var cfi,startOffset,endOffset,range=firstVisibleCaretRange,node=range.startContainer;if(node.nodeType===Node.TEXT_NODE){if(precisePoint&&node.parentNode!==elementFromPoint)return null;1===node.length&&1===range.startOffset?(startOffset=0,endOffset=1):range.startOffset===node.length?(startOffset=range.startOffset-1,endOffset=range.startOffset):(startOffset=range.startOffset,endOffset=range.startOffset+1);var wrappedRange={startContainer:node,endContainer:node,startOffset:startOffset,endOffset:endOffset,commonAncestorContainer:range.commonAncestorContainer};_DEBUG&&drawDebugOverlayFromDomRange(wrappedRange),cfi=generateCfiFromDomRange(wrappedRange)}else if(node.nodeType===Node.ELEMENT_NODE){if(node=range.startContainer.childNodes[range.startOffset]||range.startContainer.childNodes[0]||range.startContainer,precisePoint&&node!==elementFromPoint)return null;cfi=node.nodeType!==Node.ELEMENT_NODE?generateCfiFromDomRange(range):self.getCfiForElement(node)}else{if(precisePoint&&node!==elementFromPoint)return null;cfi=self.getCfiForElement(elementFromPoint)}if(!cfi||-1===cfi.indexOf("NaN"))return cfi;console.log("Did not generate a valid CFI:"+cfi)},this.getRangeCfiFromPoints=function(startX,startY,endX,endY){var document=self.getRootDocument(),start=getCaretRangeFromPoint(startX,startY,document),end=getCaretRangeFromPoint(endX,endY,document),range=createRange();return range.setStart(start.startContainer,start.startOffset),range.setEnd(end.startContainer,end.startOffset),start.startContainer===start.endContainer&&start.startContainer.nodeType===Node.TEXT_NODE&&end.startContainer.length>end.startOffset+1&&range.setEnd(end.startContainer,end.startOffset+1),generateCfiFromDomRange(range)},this.getFirstVisibleCfi=function(visibleContentOffsets,frameDimensions){return function(visibleContentOffsets,frameDimensions){return findVisibleLeafNodeCfi(self.findFirstVisibleElement(visibleContentOffsets,frameDimensions),_.first,visibleContentOffsets,frameDimensions)}(visibleContentOffsets,frameDimensions)},this.getLastVisibleCfi=function(visibleContentOffsets,frameDimensions){return function(visibleContentOffsets,frameDimensions){return findVisibleLeafNodeCfi(self.findLastVisibleElement(visibleContentOffsets,frameDimensions),_.last,visibleContentOffsets,frameDimensions)}(visibleContentOffsets,frameDimensions)},this.getDomRangeFromRangeCfi=function(rangeCfi,rangeCfi2,inclusive){var range=createRange();if(rangeCfi2){if(self.isRangeCfi(rangeCfi)){var rangeInfo1=self.getNodeRangeInfoFromCfi(rangeCfi);range.setStart(rangeInfo1.startInfo.node,rangeInfo1.startInfo.offset)}else{var startElement=self.getElementByCfi(rangeCfi,this.getClassBlacklist(),this.getElementBlacklist(),this.getIdBlacklist())[0];range.setStart(startElement,0)}if(self.isRangeCfi(rangeCfi2)){var rangeInfo2=self.getNodeRangeInfoFromCfi(rangeCfi2);inclusive?range.setEnd(rangeInfo2.endInfo.node,rangeInfo2.endInfo.offset):range.setEnd(rangeInfo2.startInfo.node,rangeInfo2.startInfo.offset)}else{var endElement=self.getElementByCfi(rangeCfi2,this.getClassBlacklist(),this.getElementBlacklist(),this.getIdBlacklist())[0];range.setEnd(endElement,endElement.childNodes.length)}}else if(self.isRangeCfi(rangeCfi)){var rangeInfo=self.getNodeRangeInfoFromCfi(rangeCfi);range.setStart(rangeInfo.startInfo.node,rangeInfo.startInfo.offset),range.setEnd(rangeInfo.endInfo.node,rangeInfo.endInfo.offset)}else{var element=self.getElementByCfi(rangeCfi,this.getClassBlacklist(),this.getElementBlacklist(),this.getIdBlacklist())[0];range.selectNode(element)}return range},this.getRangeCfiFromDomRange=function(domRange){return generateCfiFromDomRange(domRange)},this.isRangeCfi=function(partialCfi){return _isRangeCfi(partialCfi)||_hasTextTerminus(partialCfi)},this.getPageIndexDeltaForCfi=function(partialCfi,classBlacklist,elementBlacklist,idBlacklist){if(this.isRangeCfi(partialCfi)){var nodeRangeInfoFromCfi=this.getNodeRangeInfoFromCfi(partialCfi);return clientRectangle=nodeRangeInfoFromCfi.clientRect,visibleContentOffsets=visibleContentOffsets||getVisibleContentOffsets(),frameDimensions=frameDimensions||getFrameDimensions(),calculatePageIndexDeltaByRectangles([normalizeRectangle(clientRectangle,visibleContentOffsets.left,visibleContentOffsets.top)],frameDimensions)}var clientRectangle,visibleContentOffsets,frameDimensions,$element=getElementByPartialCfi(partialCfi,classBlacklist,elementBlacklist,idBlacklist);return $element?this.getPageIndexDeltaForElement($element):-1},this.getElementFromPoint=function(x,y){return self.getRootDocument().elementFromPoint(x,y)},this.getNodeRangeInfoFromCfi=function(cfi){var contentDoc=self.getRootDocument(),wrappedCfi=getWrappedCfi(cfi);if(_isRangeCfi(cfi)){try{var nodeResult=EPUBcfi.Interpreter.getRangeTargetElements(wrappedCfi,contentDoc,this.getClassBlacklist(),this.getElementBlacklist(),this.getIdBlacklist());_DEBUG&&console.log(nodeResult)}catch(ex){}if(!nodeResult)return void console.log("Can't find nodes for range CFI: "+cfi);var startRangeInfo={node:nodeResult.startElement,offset:nodeResult.startOffset},endRangeInfo={node:nodeResult.endElement,offset:nodeResult.endOffset},nodeRangeClientRect=startRangeInfo&&endRangeInfo?getNodeRangeClientRect(startRangeInfo.node,startRangeInfo.offset,endRangeInfo.node,endRangeInfo.offset):null;return _DEBUG&&(console.log(nodeRangeClientRect),addOverlayRect(nodeRangeClientRect,"purple",contentDoc)),{startInfo:startRangeInfo,endInfo:endRangeInfo,clientRect:nodeRangeClientRect}}if(_hasTextTerminus(cfi)){try{var textTerminusResult=EPUBcfi.Interpreter.getTextTerminusInfo(wrappedCfi,contentDoc,this.getClassBlacklist(),this.getElementBlacklist(),this.getIdBlacklist());_DEBUG&&console.log(textTerminusResult)}catch(ex){}if(!textTerminusResult)return void console.log("Can't find node for text term CFI: "+cfi);var textTermRangeInfo={node:textTerminusResult.textNode,offset:textTerminusResult.textOffset},textTermClientRect=getNodeRangeClientRect(textTermRangeInfo.node,textTermRangeInfo.offset,textTermRangeInfo.node,textTermRangeInfo.offset);return _DEBUG&&(console.log(textTermClientRect),addOverlayRect(textTermClientRect,"purple",contentDoc)),{startInfo:textTermRangeInfo,endInfo:textTermRangeInfo,clientRect:textTermClientRect}}return{startInfo:null,endInfo:null,clientRect:function($el,visibleContentOffsets){var boundingClientRect,leftOffset=(visibleContentOffsets=visibleContentOffsets||{}).left||0,topOffset=visibleContentOffsets.top||0;if($el[0].nodeType===Node.TEXT_NODE){var range=createRange();range.selectNode($el[0]),boundingClientRect=range.getBoundingClientRect()}else boundingClientRect=$el[0].getBoundingClientRect();return normalizeRectangle(boundingClientRect,leftOffset,topOffset)}(self.getElementByCfi(cfi,this.getClassBlacklist(),this.getElementBlacklist(),this.getIdBlacklist()),getVisibleContentOffsets())}},this.isNodeFromRangeCfiVisible=function(cfi){var nodeRangeInfo=this.getNodeRangeInfoFromCfi(cfi);return nodeRangeInfo?isRectVisible(nodeRangeInfo.clientRect,!1):void 0},this.getNearestCfiFromElement=function(element){var collapseToStart,chosenNode,isTextNode,siblingTextNodesAndSelf=_.filter(element.parentNode.childNodes,function(n){return n===element||isValidTextNode(n)}),indexOfSelf=siblingTextNodesAndSelf.indexOf(element),nearestNode=siblingTextNodesAndSelf[indexOfSelf-1];if(nearestNode||(nearestNode=siblingTextNodesAndSelf[indexOfSelf+1],collapseToStart=!0),nearestNode||(nearestNode=_.last(this.getLeafNodeElements($(element.previousElementSibling))))||(collapseToStart=!0,nearestNode=_.first(this.getLeafNodeElements($(element.nextElementSibling)))),isValidTextNode(nearestNode)?(chosenNode=nearestNode,isTextNode=!0):chosenNode=isElementNode(nearestNode)?nearestNode:isElementNode(element.previousElementSibling)?element.previousElementSibling:isElementNode(element.nextElementSibling)?element.nextElementSibling:element.parentNode,isTextNode){var range=chosenNode.ownerDocument.createRange();return range.selectNodeContents(chosenNode),range.collapse(collapseToStart),this.getRangeCfiFromDomRange(range)}return this.getCfiForElement(chosenNode)},this.getElementByCfi=function(partialCfi,classBlacklist,elementBlacklist,idBlacklist){return getElementByPartialCfi(partialCfi,classBlacklist,elementBlacklist,idBlacklist)},this.getPageIndexDeltaForElement=function($element){var pageIndex=findPageIndexDeltaByRectangles($element);return null===pageIndex?findPageIndexDeltaByRectangles(this.getElementByCfi(this.getNearestCfiFromElement($element[0]))):pageIndex},this.getElementById=function(id){var contentDoc=this.getRootDocument(),$element=$(contentDoc.getElementById(id));if(0!=$element.length)return $element},this.getPageIndexDeltaForElementId=function(id){var $element=this.getElementById(id);return $element?this.getPageIndexDeltaForElement($element):-1},this.getFirstVisibleMediaOverlayElement=function(visibleContentOffsets){var $root=$(this.getBodyElement());if($root&&$root.length&&$root[0]){var that=this,firstPartial=void 0,el=function traverseArray(arr){if(arr&&arr.length)for(var i=0,count=arr.length;i<count;i++){var item=arr[i];if(item){var $item=$(item);if($item.data("mediaOverlayData")){var visible=that.getElementVisibility($item,visibleContentOffsets);if(visible&&(firstPartial||(firstPartial=item),100==visible))return item}else{var elem=traverseArray(item.children);if(elem)return elem}}}}([$root[0]]);return el||(el=firstPartial),el}},this.getElementVisibility=function($element,visibleContentOffsets){return checkVisibilityByRectangles($element,!0,visibleContentOffsets)},this.isElementVisible=this.getElementVisibility,this.getVisibleElementsWithFilter=function(visibleContentOffsets,filterFunction){var $elements=this.getElementsWithFilter($(this.getBodyElement()),filterFunction);return this.getVisibleElements($elements,visibleContentOffsets)},this.getAllElementsWithFilter=function(filterFunction){return this.getElementsWithFilter($(this.getBodyElement()),filterFunction)},this.getAllVisibleElementsWithSelector=function(selector,visibleContentOffset){var elements=$(selector,this.getRootElement()),$newElements=[];return $.each(elements,function(){$newElements.push($(this))}),this.getVisibleElements($newElements,visibleContentOffset)},this.getVisibleElements=function($elements,visibleContentOffsets,frameDimensions){var visibleElements=[];return _.each($elements,function($node){var isTextNode=$node[0].nodeType===Node.TEXT_NODE,$element=isTextNode?$node.parent():$node,visibilityPercentage=checkVisibilityByRectangles($node,!0,visibleContentOffsets,frameDimensions);visibilityPercentage&&visibleElements.push({element:$element[0],textNode:isTextNode?$node[0]:null,percentVisible:visibilityPercentage})}),visibleElements},this.getVisibleLeafNodes=function(visibleContentOffsets,frameDimensions){if(_cacheEnabled){var cacheKey=(options.paginationInfo||{}).currentSpreadIndex||0,fromCache=_cache.visibleLeafNodes.get(cacheKey);if(fromCache)return fromCache}var $elements=this.getLeafNodeElements($(this.getBodyElement())),visibleElements=this.getVisibleElements($elements,visibleContentOffsets,frameDimensions);return _cacheEnabled&&_cache.visibleLeafNodes.set(cacheKey,visibleElements),visibleElements},this.getStartCfi=function(){return getBaseCfiSelectedByFunc(_.first)},this.getEndCfi=function(){return getBaseCfiSelectedByFunc(_.last)},this.getElementsWithFilter=function($root,filterFunction){var $elements=[];return function traverseCollection(elements){if(void 0!=elements)for(var i=0,count=elements.length;i<count;i++){var $element=$(elements[i]);filterFunction($element)?$elements.push($element):traverseCollection($element[0].children)}}([$root[0]]),$elements},this.getLeafNodeElements=function($root){if(_cacheEnabled){var fromCache=_cache.leafNodeElements.get($root);if(fromCache)return fromCache}for(var node,nodeIterator=document.createNodeIterator($root[0],NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT,function(){return NodeFilter.FILTER_ACCEPT},!1),$leafNodeElements=[];node=nodeIterator.nextNode();)(node.nodeType===Node.ELEMENT_NODE&&!node.childElementCount&&!isValidTextNodeContent(node.textContent)||isValidTextNode(node))&&(isElementBlacklisted(node.nodeType===Node.TEXT_NODE?node.parentNode:node)||$leafNodeElements.push($(node)));return _cacheEnabled&&_cache.leafNodeElements.set($root,$leafNodeElements),$leafNodeElements},this.getElements=function(selector){return selector?$(selector,this.getRootElement()):$(this.getRootElement()).children()},this.getElement=function(selector){var $element=this.getElements(selector);if($element.length>0)return $element};var _cache=new function(){var that=this,props={leafNodeElements:!0,visibleLeafNodes:!1};_.each(props,function(val,key){that[key]=new Map}),this._invalidate=function(){_.each(props,function(val,key){val||(that[key]=new Map)})}},_cacheEnabled=!1;this.invalidateCache=function(){_cache._invalidate()};var $debugOverlays=[];function addOverlayRect(rects,color,doc){var random=function(){for(var letters="0123456789ABCDEF".split(""),color="#",i=0;i<6;i++)color+=letters[Math.round(15*Math.random())];return color}();rects instanceof Array||(rects=[rects]);for(var i=0;i!=rects.length;i++){var rect=rects[i],overlayDiv=doc.createElement("div");overlayDiv.style.position="absolute",$(overlayDiv).css("z-index","1000"),$(overlayDiv).css("pointer-events","none"),$(overlayDiv).css("opacity","0.4"),overlayDiv.style.border="1px solid white",color||random?random&&!color?overlayDiv.style.background=random:(!0===color&&(color="red"),overlayDiv.style.border="1px dashed "+color,overlayDiv.style.background="yellow"):overlayDiv.style.background="purple",overlayDiv.style.margin=overlayDiv.style.padding="0",overlayDiv.style.top=rect.top+"px",overlayDiv.style.left=rect.left+"px",overlayDiv.style.width=rect.width-2+"px",overlayDiv.style.height=rect.height-2+"px",doc.documentElement.appendChild(overlayDiv),$debugOverlays.push($(overlayDiv))}}function drawDebugOverlayFromRect(rect){var offsets=options.paginationOffsetsGetter?options.paginationOffsetsGetter():{top:0,left:0};addOverlayRect({left:rect.left+offsets.left,top:rect.top+offsets.top,width:rect.width,height:rect.height},!0,self.getRootDocument())}function drawDebugOverlayFromDomRange(range){var rect=getNodeRangeClientRect(range.startContainer,range.startOffset,range.endContainer,range.endOffset);return drawDebugOverlayFromRect(rect),rect}ReadiumSDK._DEBUG_CfiNavigationLogic={clearDebugOverlays:function(){_.each($debugOverlays,function($el){$el.remove()}),$debugOverlays=[]},drawDebugOverlayFromRect:drawDebugOverlayFromRect,drawDebugOverlayFromDomRange:drawDebugOverlayFromDomRange,drawDebugOverlayFromNode:function(node){drawDebugOverlayFromRect(function(node){var range=createRange();return range.selectNode(node),normalizeRectangle(range.getBoundingClientRect(),0,0)}(node))},debugVisibleCfis:function(){console.log(JSON.stringify(ReadiumSDK.reader.getPaginationInfo().openPages));var cfi1=ReadiumSDK.reader.getFirstVisibleCfi(),range1=ReadiumSDK.reader.getDomRangeFromRangeCfi(cfi1);console.log(cfi1,range1,drawDebugOverlayFromDomRange(range1));var cfi2=ReadiumSDK.reader.getLastVisibleCfi(),range2=ReadiumSDK.reader.getDomRangeFromRangeCfi(cfi2);console.log(cfi2,range2,drawDebugOverlayFromDomRange(range2))},visibleTextRangeOffsetsRunsAvg:function(){var arr=window.top._DEBUG_visibleTextRangeOffsetsRuns;return arr.reduce(function(a,b){return a+b})/arr.length}},this.findFirstVisibleElement=function(visibleContentOffsets,frameDimensions){var firstVisibleElement,bodyElement=this.getBodyElement();if(!bodyElement)return null;for(var textNode,percentVisible=0,treeWalker=document.createTreeWalker(bodyElement,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT,function(node){return node.nodeType===Node.ELEMENT_NODE&&isElementBlacklisted(node)?NodeFilter.FILTER_REJECT:(node.nodeType!==Node.TEXT_NODE||isValidTextNode(node))&&checkVisibilityByRectangles($(node),!0,visibleContentOffsets,frameDimensions)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT},!1);treeWalker.nextNode();){var node=treeWalker.currentNode;if(node.nodeType===Node.TEXT_NODE){firstVisibleElement=node.parentNode,textNode=node,percentVisible=100;break}for(var hasChildElements=!1,hasChildTextNodes=!1,i=node.childNodes.length-1;i>=0;i--){if((childNode=node.childNodes[i]).nodeType===Node.ELEMENT_NODE){hasChildElements=!0;break}childNode.nodeType===Node.TEXT_NODE&&(hasChildTextNodes=!0)}if(!hasChildElements&&hasChildTextNodes)for(i=node.childNodes.length-1;i>=0;i--){var childNode;if((childNode=node.childNodes[i]).nodeType===Node.TEXT_NODE&&isValidTextNode(childNode)){var visibilityResult=checkVisibilityByRectangles($(childNode),!0,visibleContentOffsets,frameDimensions);if(visibilityResult){firstVisibleElement=node,textNode=childNode,percentVisible=visibilityResult;break}}}else if(!hasChildElements){firstVisibleElement=node,percentVisible=100,textNode=null;break}}return firstVisibleElement?{element:firstVisibleElement,textNode:textNode,percentVisible:percentVisible}:null},this.findLastVisibleElement=function(visibleContentOffsets,frameDimensions){var firstVisibleElement,bodyElement=this.getBodyElement();if(!bodyElement)return null;for(var textNode,percentVisible=0,treeWalker=document.createTreeWalker(bodyElement,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT,function(node){return node.nodeType===Node.ELEMENT_NODE&&isElementBlacklisted(node)?NodeFilter.FILTER_REJECT:(node.nodeType!==Node.TEXT_NODE||isValidTextNode(node))&&checkVisibilityByRectangles($(node),!0,visibleContentOffsets,frameDimensions)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT},!1);treeWalker.lastChild(););do{var node=treeWalker.currentNode;if(node.nodeType===Node.TEXT_NODE){firstVisibleElement=node.parentNode,textNode=node,percentVisible=100;break}for(var hasChildElements=!1,hasChildTextNodes=!1,i=node.childNodes.length-1;i>=0;i--){if((childNode=node.childNodes[i]).nodeType===Node.ELEMENT_NODE){hasChildElements=!0;break}childNode.nodeType===Node.TEXT_NODE&&(hasChildTextNodes=!0)}if(!hasChildElements&&hasChildTextNodes)for(i=node.childNodes.length-1;i>=0;i--){var childNode;if((childNode=node.childNodes[i]).nodeType===Node.TEXT_NODE&&isValidTextNode(childNode)){var visibilityResult=checkVisibilityByRectangles($(childNode),!0,visibleContentOffsets,frameDimensions);if(visibilityResult){firstVisibleElement=node,textNode=childNode,percentVisible=visibilityResult;break}}}else if(!hasChildElements){firstVisibleElement=node,percentVisible=100,textNode=null;break}}while(treeWalker.previousNode());return firstVisibleElement?{element:firstVisibleElement,textNode:textNode,percentVisible:percentVisible}:null}}}),define("readium_shared_js/models/viewer_settings",[],function(){return function(settingsData){var self=this;function buildArray(str){for(var retArr=[],arr=str.split(/[\s,;]+/),i=0;i<arr.length;i++){var item=arr[i].trim();""!==item&&retArr.push(item)}return retArr}function mapProperty(propName,settingsData,functionToApply){void 0!==settingsData[propName]&&(self[propName]=functionToApply?functionToApply(settingsData[propName]):settingsData[propName])}this.syntheticSpread="auto",this.fontSelection=0,this.fontSize=100,this.columnGap=20,this.columnMaxWidth=700,this.columnMinWidth=400,this.mediaOverlaysPreservePlaybackWhenScroll=!1,this.mediaOverlaysSkipSkippables=!1,this.mediaOverlaysEscapeEscapables=!0,this.mediaOverlaysSkippables=[],this.mediaOverlaysEscapables=[],this.mediaOverlaysEnableClick=!0,this.mediaOverlaysRate=1,this.mediaOverlaysVolume=100,this.mediaOverlaysSynchronizationGranularity="",this.mediaOverlaysAutomaticPageTurn=!0,this.enableGPUHardwareAccelerationCSS3D=!1,this.pageTransition=-1,this.scroll="auto",this.update=function(settingsData){mapProperty("columnGap",settingsData),mapProperty("columnMaxWidth",settingsData),mapProperty("columnMinWidth",settingsData),mapProperty("fontSize",settingsData),mapProperty("fontSelection",settingsData),mapProperty("mediaOverlaysPreservePlaybackWhenScroll",settingsData),mapProperty("mediaOverlaysSkipSkippables",settingsData),mapProperty("mediaOverlaysEscapeEscapables",settingsData),mapProperty("mediaOverlaysSkippables",settingsData,buildArray),mapProperty("mediaOverlaysEscapables",settingsData,buildArray),mapProperty("mediaOverlaysEnableClick",settingsData),mapProperty("mediaOverlaysRate",settingsData),mapProperty("mediaOverlaysVolume",settingsData),mapProperty("mediaOverlaysSynchronizationGranularity",settingsData),mapProperty("mediaOverlaysAutomaticPageTurn",settingsData),mapProperty("scroll",settingsData),mapProperty("syntheticSpread",settingsData),mapProperty("pageTransition",settingsData),mapProperty("enableGPUHardwareAccelerationCSS3D",settingsData)},this.update(settingsData)}}),function(root,factory){"function"==typeof define&&define.amd?define("ResizeSensor",factory):"object"==typeof exports?module.exports=factory():root.ResizeSensor=factory()}("undefined"!=typeof window?window:this,function(){if("undefined"==typeof window)return null;var requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(fn){return window.setTimeout(fn,20)};function forEachElement(elements,callback){var elementsType=Object.prototype.toString.call(elements),isCollectionTyped="[object Array]"===elementsType||"[object NodeList]"===elementsType||"[object HTMLCollection]"===elementsType||"[object Object]"===elementsType||"undefined"!=typeof jQuery&&elements instanceof jQuery||"undefined"!=typeof Elements&&elements instanceof Elements,i=0,j=elements.length;if(isCollectionTyped)for(;i<j;i++)callback(elements[i]);else callback(elements)}function getElementSize(element){if(!element.getBoundingClientRect)return{width:element.offsetWidth,height:element.offsetHeight};var rect=element.getBoundingClientRect();return{width:Math.round(rect.width),height:Math.round(rect.height)}}var ResizeSensor=function(element,callback){var observer;"undefined"!=typeof ResizeObserver?(observer=new ResizeObserver(function(element){forEachElement(element,function(elem){callback.call(this,{width:elem.contentRect.width,height:elem.contentRect.height})})}),void 0!==element&&forEachElement(element,function(elem){observer.observe(elem)})):forEachElement(element,function(elem){!function(element,resized){if(element)if(element.resizedAttached)element.resizedAttached.add(resized);else{element.resizedAttached=new function(){var i,j,q=[];this.add=function(ev){q.push(ev)},this.call=function(sizeInfo){for(i=0,j=q.length;i<j;i++)q[i].call(this,sizeInfo)},this.remove=function(ev){var newQueue=[];for(i=0,j=q.length;i<j;i++)q[i]!==ev&&newQueue.push(q[i]);q=newQueue},this.length=function(){return q.length}},element.resizedAttached.add(resized),element.resizeSensor=document.createElement("div"),element.resizeSensor.dir="ltr",element.resizeSensor.className="resize-sensor";var style="position: absolute; left: -10px; top: -10px; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden; max-width: 100%",styleChild="position: absolute; left: 0; top: 0; transition: 0s;";element.resizeSensor.style.cssText=style,element.resizeSensor.innerHTML='<div class="resize-sensor-expand" style="'+style+'"><div style="'+styleChild+'" class="resize-sensor-inner"></div></div><div class="resize-sensor-shrink" style="'+style+'"><div style="'+styleChild+' width: 200%; height: 200%" class="resize-sensor-inner"></div></div>',element.appendChild(element.resizeSensor);var computedStyle=window.getComputedStyle(element),position=computedStyle?computedStyle.getPropertyValue("position"):null;"absolute"!==position&&"relative"!==position&&"fixed"!==position&&(element.style.position="relative");var dirty,rafId,resetRAF_id,expand=element.resizeSensor.childNodes[0],expandChild=expand.childNodes[0],shrink=element.resizeSensor.childNodes[1],size=getElementSize(element),lastWidth=size.width,lastHeight=size.height,initialHiddenCheck=!0,resetExpandShrink=function(){expandChild.style.width="100000px",expandChild.style.height="100000px",expand.scrollLeft=1e5,expand.scrollTop=1e5,shrink.scrollLeft=1e5,shrink.scrollTop=1e5},reset=function(){if(initialHiddenCheck){if(!expand.scrollTop&&!expand.scrollLeft)return resetExpandShrink(),void(resetRAF_id||(resetRAF_id=requestAnimationFrame(function(){resetRAF_id=0,reset()})));initialHiddenCheck=!1}resetExpandShrink()};element.resizeSensor.resetSensor=reset;var onResized=function(){rafId=0,dirty&&(lastWidth=size.width,lastHeight=size.height,element.resizedAttached&&element.resizedAttached.call(size))},onScroll=function(){size=getElementSize(element),(dirty=size.width!==lastWidth||size.height!==lastHeight)&&!rafId&&(rafId=requestAnimationFrame(onResized)),reset()},addEvent=function(el,name,cb){el.attachEvent?el.attachEvent("on"+name,cb):el.addEventListener(name,cb)};addEvent(expand,"scroll",onScroll),addEvent(shrink,"scroll",onScroll),requestAnimationFrame(reset)}}(elem,callback)}),this.detach=function(ev){"undefined"!=typeof ResizeObserver?forEachElement(element,function(elem){observer.unobserve(elem)}):ResizeSensor.detach(element,ev)},this.reset=function(){element.resizeSensor.resetSensor()}};return ResizeSensor.reset=function(element,ev){forEachElement(element,function(elem){elem.resizeSensor.resetSensor()})},ResizeSensor.detach=function(element,ev){forEachElement(element,function(elem){elem&&(elem.resizedAttached&&"function"==typeof ev&&(elem.resizedAttached.remove(ev),elem.resizedAttached.length())||elem.resizeSensor&&(elem.contains(elem.resizeSensor)&&elem.removeChild(elem.resizeSensor),delete elem.resizeSensor,delete elem.resizedAttached))})},ResizeSensor}),define("readium_shared_js/views/one_page_view",["../globals","jquery","underscore","eventEmitter","./cfi_navigation_logic","../helpers","../models/viewer_settings","../models/bookmark_data","ResizeSensor"],function(Globals,$,_,EventEmitter,CfiNavigationLogic,Helpers,ViewerSettings,BookmarkData,ResizeSensor){var OnePageView=function(options,classes,enableBookStyleOverrides,reader){$.extend(this,new EventEmitter);var _$epubHtml,_$epubBody,_$el,_$iframe,_currentSpineItem,_$scaler,self=this,_spine=options.spine,_iframeLoader=options.iframeLoader,_bookStyles=options.bookStyles,_$viewport=options.$viewport,_isIframeLoaded=!1,_lastBodySize={width:void 0,height:void 0},_pageTransitionHandler=new function(opts){var PageTransition=function(begin,end){this.begin=begin,this.end=end},_pageTransition_OPACITY=new PageTransition(function(scale,left,top,$el,meta_width,meta_height,pageSwitchDir){$el.css("opacity","0")},function(scale,left,top,$el,meta_width,meta_height,pageSwitchDir){$el.css("transform","none"),Helpers.CSSTransition($el,"opacity 150ms ease-out"),$el.css("opacity","1")}),_pageTransition_TRANSLATE=new PageTransition(function(scale,left,top,$el,meta_width,meta_height,pageSwitchDir){$el.css("opacity","0");var initialLeft=.8*Math.ceil(meta_width*scale)*(2===pageSwitchDir?1:-1),move=Helpers.CSSTransformString({left:Math.round(initialLeft),origin:"50% 50% 0",enable3D:_enable3D});$el.css(move)},function(scale,left,top,$el,meta_width,meta_height,pageSwitchDir){$el.css("opacity","1"),Helpers.CSSTransition($el,"transform 150ms ease-out"),$el.css("transform","none")}),_pageTransition_ROTATE=new PageTransition(function(scale,left,top,$el,meta_width,meta_height,pageSwitchDir){$el.css("opacity","0");var initialLeft=1.7*Math.ceil(meta_width*scale)*(2===pageSwitchDir?1:-1),trans=Helpers.CSSTransformString({left:Math.round(initialLeft),angle:30*(2===pageSwitchDir?-1:1),origin:"50% 50% 0",enable3D:_enable3D});$el.css(trans)},function(scale,left,top,$el,meta_width,meta_height,pageSwitchDir){$el.css("opacity","1"),Helpers.CSSTransition($el,"transform 300ms ease-in-out"),$el.css("transform","none")}),_pageTransition_SWING=new PageTransition(function(scale,left,top,$el,meta_width,meta_height,pageSwitchDir){$el.css("opacity","0");for(var isLeft=!1,isCenter=!1,i=0;i<classes.length;i++){var c=classes[i].toLowerCase();if(c.indexOf("left")>=0){isLeft=!0;break}if(c.indexOf("right")>=0)break;if(c.indexOf("center")>=0){isCenter=!0;break}}var initialLeft=.5*Math.ceil(meta_width*scale)*(isLeft||isCenter&&1===pageSwitchDir?1:-1),trans=Helpers.CSSTransformString({scale:.2,left:Math.round(initialLeft),angle:30*(isLeft||isCenter&&1===pageSwitchDir?1:-1),origin:"50% 50% 0",enable3D:_enable3D});$el.css(trans)},function(scale,left,top,$el,meta_width,meta_height,pageSwitchDir){$el.css("opacity","1"),Helpers.CSSTransition($el,"transform 400ms ease-out"),$el.css("transform","none")}),_pageTransitions=[];_pageTransitions.push(_pageTransition_OPACITY),_pageTransitions.push(_pageTransition_TRANSLATE),_pageTransitions.push(_pageTransition_ROTATE),_pageTransitions.push(_pageTransition_SWING);opts.disablePageTransitions;var _enable3D=new ViewerSettings({}).enableGPUHardwareAccelerationCSS3D;this.updateOptions=function(o){var settings=o;settings&&void 0!==settings.enableGPUHardwareAccelerationCSS3D||(settings=new ViewerSettings({})),settings.enableGPUHardwareAccelerationCSS3D&&(_enable3D=!0),null!==o.pageTransition&&void 0!==o.pageTransition&&o.pageTransition},this.updateOptions(opts);this.updatePageSwitchDir=function(dir,hasChanged){},this.onIFrameLoad=function(){!0},this.transformContentImmediate_BEGIN=function($el,scale,left,top){!1},this.transformContentImmediate_END=function($el,scale,left,top){$el.css("transform","none")}}(options),_enableBookStyleOverrides=enableBookStyleOverrides||!1,_meta_size={width:0,height:0};function onIFrameLoad(success){if(success){_isIframeLoaded=!0;var epubContentDocument=_$iframe[0].contentDocument;(_$epubHtml=$("html",epubContentDocument))&&0!=_$epubHtml.length?(_$epubBody=$("body",_$epubHtml),_enableBookStyleOverrides||_$epubBody.css("margin","0")):(_$epubHtml=$("svg",epubContentDocument),_$epubBody=void 0),_enableBookStyleOverrides&&self.applyBookStyles(),updateMetaSize(),function(){if(_$epubBody&&_enableBookStyleOverrides){var bodyElement=_$epubBody[0];if(bodyElement.resizeSensor)return;_lastBodySize.width=$(bodyElement).width(),_lastBodySize.height=$(bodyElement).height(),bodyElement.resizeSensor=new ResizeSensor(bodyElement,function(){var newBodySize={width:$(bodyElement).width(),height:$(bodyElement).height()};if(console.debug("OnePageView content resized ...",newBodySize.width,newBodySize.height,_currentSpineItem.idref),newBodySize.width!=_lastBodySize.width||newBodySize.height!=_lastBodySize.height){_lastBodySize.width=newBodySize.width,_lastBodySize.height=newBodySize.height,console.debug("... updating pagination.");var src=_spine.package.resolveRelativeUrl(_currentSpineItem.href);Globals.logEvent("OnePageView.Events.CONTENT_SIZE_CHANGED","EMIT","one_page_view.js [ "+_currentSpineItem.href+" -- "+src+" ]"),self.emit(OnePageView.Events.CONTENT_SIZE_CHANGED,_$iframe,_currentSpineItem)}else console.debug("... ignored (identical dimensions).")})}}(),_pageTransitionHandler.onIFrameLoad()}}this.element=function(){return _$el},this.meta_height=function(){return _meta_size.height},this.meta_width=function(){return _meta_size.width},this.isDisplaying=function(){return _isIframeLoaded},this.render=function(){var template=Helpers.loadTemplate("single_page_frame",{});_$el=$(template),_$scaler=$("#scaler",_$el),Helpers.CSSTransition(_$el,"all 0 ease 0"),_$el.css("transform","none");var settings=reader.viewerSettings();settings&&void 0!==settings.enableGPUHardwareAccelerationCSS3D||(settings=new ViewerSettings({})),settings.enableGPUHardwareAccelerationCSS3D&&_$el.css("transform","translateZ(0)"),_$el.css("height","100%"),_$el.css("width","100%");for(var i=0,count=classes.length;i<count;i++)_$el.addClass(classes[i]);return _$iframe=$("iframe",_$el),this},this.decorateIframe=function(){_$iframe&&_$iframe.length},this.remove=function(){this.clear(),_currentSpineItem=void 0,_$el&&_$el[0]&&_$el.remove(),_$el=void 0,_$scaler=void 0,_$iframe=void 0},this.clear=function(){_isIframeLoaded=!1,_$iframe&&_$iframe[0]&&(_$iframe[0].src="")},this.currentSpineItem=function(){return _currentSpineItem};var _viewSettings=void 0;this.setViewSettings=function(settings,docWillChange){_viewSettings=settings,_enableBookStyleOverrides&&!docWillChange&&self.applyBookStyles(),updateMetaSize(),_pageTransitionHandler.updateOptions(settings)},this.applyBookStyles=function(){_enableBookStyleOverrides&&_$epubHtml&&(Helpers.setStyles(_bookStyles.getStyles(),_$epubHtml),function(){if(_enableBookStyleOverrides&&_$epubHtml&&_viewSettings){var i=_viewSettings.fontSelection,font=!reader.fonts||!reader.fonts.length||i<=0||i-1>=reader.fonts.length?{}:reader.fonts[i-1];Helpers.UpdateHtmlFontAttributes(_$epubHtml,_viewSettings.fontSize,font,function(){})}}())},this.scaleToWidth=function(width){if(!(_enableBookStyleOverrides||_meta_size.width<=0)){var scale=width/_meta_size.width;self.transformContentImmediate(scale,0,0)}},this.resizeIFrameToContent=function(){var contHeight=function(){if(!_$iframe||!_$iframe.length)return 0;if(Helpers.isIframeAlive(_$iframe[0])){var win=_$iframe[0].contentWindow,doc=_$iframe[0].contentDocument,height=Math.round(parseFloat(win.getComputedStyle(doc.documentElement).height));return height}if(_$epubHtml){console.error("getContentDocHeight ??");var jqueryHeight=_$epubHtml.height();return jqueryHeight}return 0}();self.setHeight(contHeight),self.showIFrame()},this.setHeight=function(height){_$scaler.css("height",height+"px"),_$el.css("height",height+"px")};function updateMetaSize(){if(_meta_size.width=0,_meta_size.height=0,!_enableBookStyleOverrides){var size=void 0,widthPercent=void 0,heightPercent=void 0,contentDocument=_$iframe[0].contentDocument,content=$("meta[name=viewport]",contentDocument).attr("content");if(content||(content=$("meta[name=viewbox]",contentDocument).attr("content")),content&&(size=parseMetaSize(content)),!size&&contentDocument&&contentDocument.documentElement&&contentDocument.documentElement.nodeName&&"svg"==contentDocument.documentElement.nodeName.toLowerCase()){var width=void 0,height=void 0,isWidthPercent=(wAttr=contentDocument.documentElement.getAttribute("width"))&&wAttr.length>=1&&"%"==wAttr[wAttr.length-1];if(wAttr)try{width=parseInt(wAttr,10)}catch(err){}width&&isWidthPercent&&(widthPercent=width,width=void 0);var isHeightPercent=(hAttr=contentDocument.documentElement.getAttribute("height"))&&hAttr.length>=1&&"%"==hAttr[hAttr.length-1];if(hAttr)try{height=parseInt(hAttr,10)}catch(err){}height&&isHeightPercent&&(heightPercent=height,height=void 0),width&&height&&(size={width:width,height:height})}if(!size&&_currentSpineItem&&(content=_currentSpineItem.getRenditionViewport())&&(size=parseMetaSize(content))&&console.log("Viewport: using rendition:viewport dimensions"),!size){var $img=$(contentDocument).find("img");if($img.length>0)size={width:$img.width(),height:$img.height()},_currentSpineItem&&_currentSpineItem.media_type&&_currentSpineItem.media_type.length&&0==_currentSpineItem.media_type.indexOf("image/")||console.warn("Viewport: using img dimensions!");else if(($img=$(contentDocument).find("image")).length>0){var wAttr,hAttr;width=void 0,height=void 0;if(wAttr=$img[0].getAttribute("width"))try{width=parseInt(wAttr,10)}catch(err){}if(hAttr=$img[0].getAttribute("height"))try{height=parseInt(hAttr,10)}catch(err){}width&&height&&(size={width:width,height:height},!0,console.warn("Viewport: using image dimensions!"))}}if(!size)width=_$viewport.width(),height=_$viewport.height(),$("iframe.iframe-fixed",_$viewport).length>1&&(width*=.5),widthPercent&&(width*=widthPercent/100),heightPercent&&(height*=heightPercent/100),size={width:width,height:height},!0,console.warn("Viewport: using browser / e-reader viewport dimensions!");size&&(_meta_size.width=size.width,_meta_size.height=size.height)}}function onUnload(spineItem){spineItem&&(Globals.logEvent("CONTENT_DOCUMENT_UNLOADED","EMIT","one_page_view.js [ "+spineItem.href+" ]"),self.emit(Globals.Events.CONTENT_DOCUMENT_UNLOADED,_$iframe,spineItem))}function parseMetaSize(content){for(var pairs=content.replace(/\s/g,"").split(","),dict={},i=0;i<pairs.length;i++){var nameVal=pairs[i].split("=");2==nameVal.length&&(dict[nameVal[0]]=nameVal[1])}var width=Number.NaN,height=Number.NaN;if(dict.width&&(width=parseInt(dict.width)),dict.height&&(height=parseInt(dict.height)),!isNaN(width)&&!isNaN(height))return{width:width,height:height}}function getVisibleContentOffsets(){return{top:-_$el.parent().scrollTop(),left:0}}function getFrameDimensions(){if(reader.needsFixedLayoutScalerWorkAround()){var parentEl=_$el.parent()[0];return{width:parentEl.clientWidth,height:parentEl.clientHeight}}return{width:_meta_size.width,height:_meta_size.height}}function createBookmarkFromCfi(cfi){return _currentSpineItem?new BookmarkData(_currentSpineItem.idref,cfi):null}this.showIFrame=function(){_$iframe.css("visibility","visible"),_$iframe.css("transform","none");var settings=_viewSettings;settings&&void 0!==settings.enableGPUHardwareAccelerationCSS3D||(settings=new ViewerSettings({})),settings.enableGPUHardwareAccelerationCSS3D&&(!0,_$iframe.css("transform","translateZ(0)"))},this.hideIFrame=function(){_$iframe.css("visibility","hidden");var enable3D=!1,settings=_viewSettings;settings&&void 0!==settings.enableGPUHardwareAccelerationCSS3D||(settings=new ViewerSettings({})),settings.enableGPUHardwareAccelerationCSS3D&&(enable3D=!0);var css=Helpers.CSSTransformString({left:"10000",top:"10000",enable3D:enable3D});_$iframe.css(css)},this.updatePageSwitchDir=function(dir,hasChanged){_pageTransitionHandler.updatePageSwitchDir(dir,hasChanged)},this.transformContentImmediate=function(scale,left,top){if(!_enableBookStyleOverrides){var elWidth=Math.ceil(_meta_size.width*scale),elHeight=Math.floor(_meta_size.height*scale);if(_pageTransitionHandler.transformContentImmediate_BEGIN(_$el,scale,left,top),_$el.css("left",left+"px"),_$el.css("top",top+"px"),_$el.css("width",elWidth+"px"),_$el.css("height",elHeight+"px"),_$epubHtml){var enable3D=!1,settings=_viewSettings;if(settings&&void 0!==settings.enableGPUHardwareAccelerationCSS3D||(settings=new ViewerSettings({})),settings.enableGPUHardwareAccelerationCSS3D&&(enable3D=!0),_$epubBody&&reader.needsFixedLayoutScalerWorkAround()){var css1=Helpers.CSSTransformString({scale:scale,enable3D:enable3D});css1["min-width"]=_meta_size.width,css1["min-height"]=_meta_size.height,_$epubHtml.css(css1),_$epubBody&&_$epubBody.length&&_$epubBody.css({width:_meta_size.width,height:_meta_size.height});var css2=Helpers.CSSTransformString({scale:1,enable3D:enable3D});css2.width=_meta_size.width*scale,css2.height=_meta_size.height*scale,_$scaler.css(css2)}else{var css=Helpers.CSSTransformString({scale:scale,enable3D:enable3D});css.width=_meta_size.width,css.height=_meta_size.height,_$scaler.css(css)}_$epubHtml.css("opacity","0.999"),self.showIFrame(),setTimeout(function(){_$epubHtml.css("opacity","1")},0),_pageTransitionHandler.transformContentImmediate_END(_$el,scale,left,top)}}},this.getCalculatedPageHeight=function(){return _$el.height()},this.transformContent=_.bind(_.debounce(this.transformContentImmediate,50),self),this.onUnload=function(){onUnload(_currentSpineItem)},this.loadSpineItem=function(spineItem,callback,context){if(_currentSpineItem!=spineItem){var prevSpineItem=_currentSpineItem;_currentSpineItem=spineItem;var src=_spine.package.resolveRelativeUrl(spineItem.href);self.hideIFrame(),onUnload(prevSpineItem),Globals.logEvent("OnePageView.Events.SPINE_ITEM_OPEN_START","EMIT","one_page_view.js [ "+spineItem.href+" -- "+src+" ]"),self.emit(OnePageView.Events.SPINE_ITEM_OPEN_START,_$iframe,_currentSpineItem),_iframeLoader.loadIframe(_$iframe[0],src,function(success){if(success&&callback){var func=function(){callback(success,_$iframe,_currentSpineItem,!0,context)};Helpers.isIframeAlive(_$iframe[0])?(onIFrameLoad(success),func()):(console.error("onIFrameLoad !! doc && win + TIMEOUT"),console.debug(spineItem.href),onIFrameLoad(success),setTimeout(func,500))}else onIFrameLoad(success)},self,{spineItem:_currentSpineItem})}else callback&&callback(!0,_$iframe,_currentSpineItem,!1,context)},this.getNavigator=function(){return new CfiNavigationLogic({$iframe:_$iframe,frameDimensionsGetter:getFrameDimensions,visibleContentOffsetsGetter:getVisibleContentOffsets,classBlacklist:["cfi-marker","mo-cfi-highlight","resize-sensor","resize-sensor-expand","resize-sensor-shrink","resize-sensor-inner","js-hypothesis-config","js-hypothesis-embed"],elementBlacklist:["hypothesis-adder"],idBlacklist:["MathJax_Message","MathJax_SVG_Hidden"]})},this.getElementByCfi=function(spineItemIdref,cfi,classBlacklist,elementBlacklist,idBlacklist){if(spineItemIdref==_currentSpineItem.idref)return self.getNavigator().getElementByCfi(cfi,classBlacklist,elementBlacklist,idBlacklist);console.error("spine item is not loaded")},this.getElementById=function(spineItemIdref,id){if(spineItemIdref==_currentSpineItem.idref)return self.getNavigator().getElementById(id);console.error("spine item is not loaded")},this.getElement=function(spineItemIdref,selector){if(spineItemIdref==_currentSpineItem.idref)return self.getNavigator().getElement(selector);console.error("spine item is not loaded")},this.getFirstVisibleMediaOverlayElement=function(){return self.getNavigator().getFirstVisibleMediaOverlayElement()},this.offset=function(){if(_$iframe)return _$iframe.offset()},this.getVisibleElementsWithFilter=function(filterFunction){return self.getNavigator().getVisibleElementsWithFilter(null,filterFunction)},this.getVisibleElements=function(selector){return self.getNavigator().getAllVisibleElementsWithSelector(selector)},this.getAllElementsWithFilter=function(filterFunction,outsideBody){return self.getNavigator().getAllElementsWithFilter(filterFunction,outsideBody)},this.getElements=function(spineItemIdref,selector){if(spineItemIdref==_currentSpineItem.idref)return self.getNavigator().getElements(selector);console.error("spine item is not loaded")},this.getNodeRangeInfoFromCfi=function(spineIdRef,partialCfi){if(spineIdRef==_currentSpineItem.idref)return self.getNavigator().getNodeRangeInfoFromCfi(partialCfi);console.warn("spine item is not loaded")},this.getLoadedContentFrames=function(){return[{spineItem:_currentSpineItem,$iframe:_$iframe}]},this.getFirstVisibleCfi=function(visibleContentOffsets,frameDimensions){return createBookmarkFromCfi(self.getNavigator().getFirstVisibleCfi(visibleContentOffsets,frameDimensions))},this.getLastVisibleCfi=function(visibleContentOffsets,frameDimensions){return createBookmarkFromCfi(self.getNavigator().getLastVisibleCfi(visibleContentOffsets,frameDimensions))},this.getDomRangeFromRangeCfi=function(rangeCfi,rangeCfi2,inclusive){return self.getNavigator().getDomRangeFromRangeCfi(rangeCfi,rangeCfi2,inclusive)},this.getRangeCfiFromDomRange=function(domRange){return createBookmarkFromCfi(self.getNavigator().getRangeCfiFromDomRange(domRange))},this.getVisibleCfiFromPoint=function(x,y,precisePoint){return createBookmarkFromCfi(self.getNavigator().getVisibleCfiFromPoint(x,y,precisePoint))},this.getRangeCfiFromPoints=function(startX,startY,endX,endY){return createBookmarkFromCfi(self.getNavigator().getRangeCfiFromPoints(startX,startY,endX,endY))},this.getCfiForElement=function(element){return createBookmarkFromCfi(self.getNavigator().getCfiForElement(element))},this.getElementFromPoint=function(x,y){return self.getNavigator().getElementFromPoint(x,y)},this.getStartCfi=function(){return createBookmarkFromCfi(self.getNavigator().getStartCfi())},this.getEndCfi=function(){return createBookmarkFromCfi(self.getNavigator().getEndCfi())},this.getNearestCfiFromElement=function(element){return createBookmarkFromCfi(self.getNavigator().getNearestCfiFromElement(element))}};return OnePageView.Events={SPINE_ITEM_OPEN_START:"SpineItemOpenStart",CONTENT_SIZE_CHANGED:"ContentSizeChanged"},OnePageView}),define("readium_shared_js/models/page_open_request",[],function(){return function(spineItem,initiator){this.spineItem=spineItem,this.spineItemPageIndex=void 0,this.elementId=void 0,this.elementCfi=void 0,this.firstVisibleCfi=void 0,this.lastVisibleCfi=void 0,this.firstPage=!1,this.lastPage=!1,this.initiator=initiator,this.reset=function(){this.spineItemPageIndex=void 0,this.elementId=void 0,this.elementCfi=void 0,this.firstPage=!1,this.lastPage=!1},this.setFirstPage=function(){this.reset(),this.firstPage=!0},this.setLastPage=function(){this.reset(),this.lastPage=!0},this.setPageIndex=function(pageIndex){this.reset(),this.spineItemPageIndex=pageIndex},this.setElementId=function(elementId){this.reset(),this.elementId=elementId},this.setElementCfi=function(elementCfi){this.reset(),this.elementCfi=elementCfi},this.setFirstAndLastVisibleCfi=function(firstVisibleCfi,lastVisibleCfi){this.reset(),this.firstVisibleCfi=firstVisibleCfi,this.lastVisibleCfi=lastVisibleCfi}}}),define("readium_shared_js/views/fixed_view",["../globals","jquery","underscore","eventEmitter","../models/bookmark_data","../models/current_pages_info","../models/fixed_page_spread","./one_page_view","../models/page_open_request","../helpers"],function(Globals,$,_,EventEmitter,BookmarkData,CurrentPagesInfo,Spread,OnePageView,PageOpenRequest,Helpers){return function(options,reader){$.extend(this,new EventEmitter);var _$el,_currentScale,self=this,_$viewport=$(options.$viewport),_spine=options.spine,_userStyles=options.userStyles,_zoom=(options.bookStyles,options.zoom||{style:"default"}),_viewSettings=void options.iframeLoader,_leftPageView=createOnePageView("fixed-page-frame-left"),_rightPageView=createOnePageView("fixed-page-frame-right"),_centerPageView=createOnePageView("fixed-page-frame-center"),_pageViews=[];_pageViews.push(_leftPageView),_pageViews.push(_rightPageView),_pageViews.push(_centerPageView);var _bookMargins,_contentMetaSize,_spread=new Spread(_spine,!1),_isRedrowing=!1,_redrawRequest=!1;function createOnePageView(elementClass){var pageView=new OnePageView(options,[elementClass],!1,reader);return pageView.on(OnePageView.Events.SPINE_ITEM_OPEN_START,function($iframe,spineItem){Globals.logEvent("OnePageView.Events.SPINE_ITEM_OPEN_START","ON","fixed_view.js [ "+spineItem.href+" ]"),Globals.logEvent("CONTENT_DOCUMENT_LOAD_START","EMIT","fixed_view.js [ "+spineItem.href+" ]"),self.emit(Globals.Events.CONTENT_DOCUMENT_LOAD_START,$iframe,spineItem)}),pageView.on(Globals.Events.CONTENT_DOCUMENT_UNLOADED,function($iframe,spineItem){Globals.logEvent("CONTENT_DOCUMENT_UNLOADED","ON","fixed_view.js [ "+spineItem.href+" ]"),Globals.logEvent("CONTENT_DOCUMENT_UNLOADED","EMIT","fixed_view.js [ "+spineItem.href+" ]"),self.emit(Globals.Events.CONTENT_DOCUMENT_UNLOADED,$iframe,spineItem)}),pageView}function getFirstVisibleItem(){return _spread.validItems()[0]}function redraw(initiator,paginationRequest){if(_isRedrowing)_redrawRequest={initiator:initiator,paginationRequest:paginationRequest};else{_isRedrowing=!0;var context={isElementAdded:!1},pageLoadDeferrals=function(viewItemPairs){for(var pageLoadDeferrals=[],i=0;i<viewItemPairs.length;i++){var dfd=updatePageViewForItem(viewItemPairs[i].pageView,viewItemPairs[i].spineItem,viewItemPairs[i].context);pageLoadDeferrals.push(dfd)}return pageLoadDeferrals}([{pageView:_leftPageView,spineItem:_spread.leftItem,context:context},{pageView:_rightPageView,spineItem:_spread.rightItem,context:context},{pageView:_centerPageView,spineItem:_spread.centerItem,context:context}]);$.when.apply($,pageLoadDeferrals).done(function(){if(_isRedrowing=!1,_redrawRequest){var p1=_redrawRequest.initiator,p2=_redrawRequest.paginationRequest;_redrawRequest=void 0,redraw(p1,p2)}else context.isElementAdded&&(Helpers.setStyles(_userStyles.getStyles(),_$el.parent()),updateBookMargins()),paginationRequest?onPagesLoaded(initiator,paginationRequest.spineItem,paginationRequest.elementId):onPagesLoaded(initiator)})}}this.isReflowable=function(){return!1},this.setZoom=function(zoom){_zoom=zoom,resizeBook(!1)},this.render=function(){var template=Helpers.loadTemplate("fixed_book_frame",{});return _$el=$(template),Helpers.CSSTransition(_$el,"all 0 ease 0"),_$el.css("overflow","hidden"),_$viewport.append(_$el),self.applyStyles(),this},this.remove=function(){_$el.remove()},this.setViewSettings=function(settings,docWillChange){_viewSettings=settings,_spread.setSyntheticSpread(1==Helpers.deduceSyntheticSpread(_$viewport,getFirstVisibleItem(),_viewSettings));for(var views=getDisplayingViews(),i=0,count=views.length;i<count;i++)views[i].setViewSettings(settings,docWillChange)};var updatePageSwitchDir=function(dir,hasChanged){_leftPageView&&_leftPageView.updatePageSwitchDir(dir,hasChanged),_rightPageView&&_rightPageView.updatePageSwitchDir(dir,hasChanged),_centerPageView&&_centerPageView.updatePageSwitchDir(dir,hasChanged)};function onPagesLoaded(initiator,paginationRequest_spineItem,paginationRequest_elementId){updateContentMetaSize(),resizeBook(),window.setTimeout(function(){Globals.logEvent("InternalEvents.CURRENT_VIEW_PAGINATION_CHANGED","EMIT","fixed_view.js"),self.emit(Globals.InternalEvents.CURRENT_VIEW_PAGINATION_CHANGED,{paginationInfo:self.getPaginationInfo(),initiator:initiator,spineItem:paginationRequest_spineItem,elementId:paginationRequest_elementId})},60)}function resizeBook(viewportIsResizing){if(updatePageSwitchDir(0,!1),function(){if(!_contentMetaSize||!_bookMargins)return!1;var viewportWidth=_$viewport.width(),viewportHeight=_$viewport.height();return viewportWidth&&viewportHeight}()){var viewportWidth=_$viewport.width(),viewportHeight=_$viewport.height(),leftPageMargins=_leftPageView.isDisplaying()?Helpers.Margins.fromElement(_leftPageView.element()):Helpers.Margins.empty(),pageMargins=function(leftPageMargins,rightPageMargins,centerPageMargins){var sumMargin={left:Math.max(leftPageMargins.margin.left,rightPageMargins.margin.left,centerPageMargins.margin.left),right:Math.max(leftPageMargins.margin.right,rightPageMargins.margin.right,centerPageMargins.margin.right),top:Math.max(leftPageMargins.margin.top,rightPageMargins.margin.top,centerPageMargins.margin.top),bottom:Math.max(leftPageMargins.margin.bottom,rightPageMargins.margin.bottom,centerPageMargins.margin.bottom)},sumBorder={left:Math.max(leftPageMargins.border.left,rightPageMargins.border.left,centerPageMargins.border.left),right:Math.max(leftPageMargins.border.right,rightPageMargins.border.right,centerPageMargins.border.right),top:Math.max(leftPageMargins.border.top,rightPageMargins.border.top,centerPageMargins.border.top),bottom:Math.max(leftPageMargins.border.bottom,rightPageMargins.border.bottom,centerPageMargins.border.bottom)},sumPAdding={left:Math.max(leftPageMargins.padding.left,rightPageMargins.padding.left,centerPageMargins.padding.left),right:Math.max(leftPageMargins.padding.right,rightPageMargins.padding.right,centerPageMargins.padding.right),top:Math.max(leftPageMargins.padding.top,rightPageMargins.padding.top,centerPageMargins.padding.top),bottom:Math.max(leftPageMargins.padding.bottom,rightPageMargins.padding.bottom,centerPageMargins.padding.bottom)};return new Helpers.Margins(sumMargin,sumBorder,sumPAdding)}(leftPageMargins,_rightPageView.isDisplaying()?Helpers.Margins.fromElement(_rightPageView.element()):Helpers.Margins.empty(),_centerPageView.isDisplaying()?Helpers.Margins.fromElement(_centerPageView.element()):Helpers.Margins.empty()),potentialTargetElementSize_width=viewportWidth-_bookMargins.width(),potentialTargetElementSize_height=viewportHeight-_bookMargins.height(),potentialContentSize_width=potentialTargetElementSize_width-pageMargins.width(),potentialContentSize_height=potentialTargetElementSize_height-pageMargins.height();if(!(potentialTargetElementSize_width<=0||potentialTargetElementSize_height<=0)){var scale,horScale=potentialContentSize_width/_contentMetaSize.width,verScale=potentialContentSize_height/_contentMetaSize.height;_$viewport.css("overflow","auto"),"fit-width"==_zoom.style?scale=horScale:"fit-height"==_zoom.style?scale=verScale:"user"==_zoom.style?scale=_zoom.scale:(scale=Math.min(horScale,verScale),_$viewport.css("overflow","hidden")),_currentScale=scale;var contentSize_width=_contentMetaSize.width*scale,contentSize_height=_contentMetaSize.height*scale,targetElementSize_width=contentSize_width+pageMargins.width(),targetElementSize_height=contentSize_height+pageMargins.height(),bookSize_width=targetElementSize_width+_bookMargins.width(),bookSize_height=targetElementSize_height+_bookMargins.height(),bookLeft=Math.floor((viewportWidth-bookSize_width)/2),bookTop=Math.floor((viewportHeight-bookSize_height)/2);bookLeft<0&&(bookLeft=0),bookTop<0&&(bookTop=0),_$el.css("left",bookLeft+"px"),_$el.css("top",bookTop+"px"),_$el.css("width",targetElementSize_width+"px"),_$el.css("height",targetElementSize_height+"px");var left=_bookMargins.padding.left,top=_bookMargins.padding.top,transFunc=viewportIsResizing?"transformContentImmediate":"transformContent";_leftPageView.isDisplaying()&&_leftPageView[transFunc](scale,left,top),_rightPageView.isDisplaying()&&(left+=_contentMetaSize.separatorPosition*scale,_leftPageView.isDisplaying()&&(left+=leftPageMargins.left),_rightPageView[transFunc](scale,left,top)),_centerPageView.isDisplaying()&&_centerPageView[transFunc](scale,left,top),Globals.logEvent("FXL_VIEW_RESIZED","EMIT","fixed_view.js"),self.emit(Globals.Events.FXL_VIEW_RESIZED)}}}function updateContentMetaSize(){_contentMetaSize={},_centerPageView.isDisplaying()?(_contentMetaSize.width=_centerPageView.meta_width(),_contentMetaSize.height=_centerPageView.meta_height(),_contentMetaSize.separatorPosition=0):_leftPageView.isDisplaying()&&_rightPageView.isDisplaying()?_leftPageView.meta_height()==_rightPageView.meta_height()?(_contentMetaSize.width=_leftPageView.meta_width()+_rightPageView.meta_width(),_contentMetaSize.height=_leftPageView.meta_height(),_contentMetaSize.separatorPosition=_leftPageView.meta_width()):(_contentMetaSize.width=_leftPageView.meta_width()+_rightPageView.meta_width()*(_leftPageView.meta_height()/_rightPageView.meta_height()),_contentMetaSize.height=_leftPageView.meta_height(),_contentMetaSize.separatorPosition=_leftPageView.meta_width()):_leftPageView.isDisplaying()?(_contentMetaSize.width=2*_leftPageView.meta_width(),_contentMetaSize.height=_leftPageView.meta_height(),_contentMetaSize.separatorPosition=_leftPageView.meta_width()):_rightPageView.isDisplaying()?(_contentMetaSize.width=2*_rightPageView.meta_width(),_contentMetaSize.height=_rightPageView.meta_height(),_contentMetaSize.separatorPosition=_rightPageView.meta_width()):_contentMetaSize=void 0}function updateBookMargins(){_bookMargins=Helpers.Margins.fromElement(_$el)}function updatePageViewForItem(pageView,item,context){var dfd=$.Deferred();return item?(pageView.remove(),_$el.append(pageView.render().element()),context.isElementAdded=!0,pageView.loadSpineItem(item,function(success,$iframe,spineItem,isNewContentDocumentLoaded,context){success&&isNewContentDocumentLoaded&&(pageView.meta_height()&&pageView.meta_width()||console.error("Invalid document "+spineItem.href+": viewport is not specified!"),Globals.logEvent("CONTENT_DOCUMENT_LOADED","EMIT","fixed_view.js [ "+spineItem.href+" ]"),self.emit(Globals.Events.CONTENT_DOCUMENT_LOADED,$iframe,spineItem)),dfd.resolve()},context)):(pageView.isDisplaying()&&pageView.remove(),dfd.resolve()),dfd.promise()}function getDisplayingViews(){for(var viewsToCheck=[],views=[],i=0,count=(viewsToCheck=_spine.isLeftToRight()?[_leftPageView,_centerPageView,_rightPageView]:[_rightPageView,_centerPageView,_leftPageView]).length;i<count;i++)viewsToCheck[i].isDisplaying()&&views.push(viewsToCheck[i]);return views}function callOnPageView(spineItemIdref,fn){for(var views=getDisplayingViews(),i=0,count=views.length;i<count;i++){var view=views[i];if(view.currentSpineItem().idref==spineItemIdref)return fn(view)}console.error("spine item is not loaded")}this.applyStyles=function(){Helpers.setStyles(_userStyles.getStyles(),_$el.parent()),updateBookMargins(),updateContentMetaSize(),resizeBook()},this.applyBookStyles=function(){for(var views=getDisplayingViews(),i=0,count=views.length;i<count;i++)views[i].applyBookStyles()},this.onViewportResize=function(){var firstVisibleItem=getFirstVisibleItem();if(firstVisibleItem){var isSyntheticSpread=1==Helpers.deduceSyntheticSpread(_$viewport,firstVisibleItem,_viewSettings);if(function(firstVisibleItem,isSyntheticSpread){var tmpSpread=new Spread(_spine,isSyntheticSpread);return tmpSpread.openItem(firstVisibleItem),_spread.leftItem!=tmpSpread.leftItem||_spread.rightItem!=tmpSpread.rightItem||_spread.centerItem!=tmpSpread.centerItem}(firstVisibleItem,isSyntheticSpread)){_spread.setSyntheticSpread(isSyntheticSpread);var paginationRequest=new PageOpenRequest(firstVisibleItem,self);self.openPage(paginationRequest)}else resizeBook(!0)}},this.getViewScale=function(){return _currentScale},this.openPage=function(paginationRequest,dir){if(paginationRequest.spineItem){var leftItem=_spread.leftItem,rightItem=_spread.rightItem,centerItem=_spread.centerItem,isSyntheticSpread=1==Helpers.deduceSyntheticSpread(_$viewport,paginationRequest.spineItem,_viewSettings);_spread.setSyntheticSpread(isSyntheticSpread),_spread.openItem(paginationRequest.spineItem);var hasChanged=leftItem!==_spread.leftItem||rightItem!==_spread.rightItem||centerItem!==_spread.centerItem;null!==dir&&void 0!==dir||(dir=0),updatePageSwitchDir(0===dir?0:_spread.spine.isRightToLeft()?1===dir?2:1:dir,hasChanged),redraw(paginationRequest.initiator,paginationRequest)}},this.openPagePrev=function(initiator){_spread.openPrev(),updatePageSwitchDir(_spread.spine.isRightToLeft()?2:1,!0),redraw(initiator,void 0)},this.openPageNext=function(initiator){_spread.openNext(),updatePageSwitchDir(_spread.spine.isRightToLeft()?1:2,!0),redraw(initiator,void 0)},this.getPaginationInfo=function(){for(var paginationInfo=new CurrentPagesInfo(_spine,!0),spreadItems=[_spread.leftItem,_spread.rightItem,_spread.centerItem],i=0;i<spreadItems.length;i++){var spreadItem=spreadItems[i];spreadItem&&paginationInfo.addOpenPage(0,1,spreadItem.idref,spreadItem.index)}return paginationInfo},this.bookmarkCurrentPage=function(){var views=getDisplayingViews(),loadedSpineItems=this.getLoadedSpineItems();return views.length>0?views[0].getFirstVisibleCfi():loadedSpineItems.length>0?new BookmarkData(this.getLoadedSpineItems()[0].idref,null):void 0},this.getLoadedSpineItems=function(){return _spread.validItems()},this.getElement=function(spineItemIdref,selector){return callOnPageView(spineItemIdref,function(view){return view.getElement(spineItemIdref,selector)})},this.getElementById=function(spineItemIdref,id){return callOnPageView(spineItemIdref,function(view){return view.getElementById(spineItemIdref,id)})},this.getElementByCfi=function(spineItemIdref,cfi,classBlacklist,elementBlacklist,idBlacklist){return callOnPageView(spineItemIdref,function(view){return view.getElementByCfi(spineItemIdref,cfi,classBlacklist,elementBlacklist,idBlacklist)})},this.getFirstVisibleMediaOverlayElement=function(){for(var views=getDisplayingViews(),i=0,count=views.length;i<count;i++){var el=views[i].getFirstVisibleMediaOverlayElement();if(el)return el}},this.insureElementVisibility=function(spineItemId,element,initiator){},this.getElements=function(spineItemIdref,selector){return callOnPageView(spineItemIdref,function(view){return view.getElements(spineItemIdref,selector)})},this.isElementVisible=function($element){return!0},this.getVisibleElementsWithFilter=function(filterFunction,includeSpineItems){for(var elements=[],views=getDisplayingViews(),i=0,count=views.length;i<count;i++)elements.push(views[i].getAllElementsWithFilter(filterFunction,includeSpineItems));return elements},this.getVisibleElements=function(selector,includeSpineItems){for(var elements=[],views=getDisplayingViews(),i=0,count=views.length;i<count;i++)includeSpineItems?elements.push({elements:views[i].getElements(views[i].currentSpineItem().idref,selector),spineItem:views[i].currentSpineItem()}):elements.push(views[i].getElements(views[i].currentSpineItem().idref,selector));return elements},this.isElementVisible=function($element){return!0},this.isVisibleSpineItemElementCfi=function(spineItemIdref,partialCfi){return callOnPageView(spineItemIdref,function(view){return!0})},this.getNodeRangeInfoFromCfi=function(spineItemIdref,partialCfi){return callOnPageView(spineItemIdref,function(view){return view.getNodeRangeInfoFromCfi(spineItemIdref,partialCfi)})},this.getFirstVisibleCfi=function(){var views=getDisplayingViews();if(views.length>0)return views[0].getFirstVisibleCfi()},this.getLastVisibleCfi=function(){var views=getDisplayingViews();if(views.length>0)return views[views.length-1].getLastVisibleCfi()},this.getDomRangesFromRangeCfi=function(rangeCfi,rangeCfi2,inclusive){var views=getDisplayingViews();if(rangeCfi2&&rangeCfi.idref!==rangeCfi2.idref){for(var ranges=[],i=0,count=views.length;i<count;i++){var view=views[i];if(view.currentSpineItem().idref===rangeCfi.idref){var last=view.getLastVisibleCfi();ranges.push(view.getDomRangeFromRangeCfi(rangeCfi.contentCFI,last.contentCFI,inclusive))}else if(view.currentSpineItem().idref===rangeCfi2.idref){var first=view.getFirstVisibleCfi();ranges.push(view.getDomRangeFromRangeCfi(first.contentCFI,rangeCfi2.contentCFI,inclusive))}}return ranges}return[this.getDomRangeFromRangeCfi(rangeCfi,rangeCfi2,inclusive)]},this.getDomRangeFromRangeCfi=function(rangeCfi,rangeCfi2,inclusive){var views=getDisplayingViews();if(rangeCfi2&&rangeCfi.idref!==rangeCfi2.idref)console.error("getDomRangeFromRangeCfi: both CFIs must be scoped under the same spineitem idref");else for(var i=0,count=views.length;i<count;i++){var view=views[i];if(view.currentSpineItem().idref===rangeCfi.idref)return view.getDomRangeFromRangeCfi(rangeCfi.contentCFI,rangeCfi2?rangeCfi2.contentCFI:null,inclusive)}},this.getRangeCfiFromDomRange=function(domRange){for(var views=getDisplayingViews(),i=0,count=views.length;i<count;i++){var view=views[i];if(view.getLoadedContentFrames()[0].$iframe[0].contentDocument===domRange.startContainer.ownerDocument)return view.getRangeCfiFromDomRange(domRange)}},this.getVisibleCfiFromPoint=function(x,y,precisePoint,spineItemIdref){if(!spineItemIdref)throw new Error("getVisibleCfiFromPoint: Spine item idref must be specified for this fixed layout view.");return callOnPageView(spineItemIdref,function(view){return view.getVisibleCfiFromPoint(x,y,precisePoint)})},this.getRangeCfiFromPoints=function(startX,startY,endX,endY,spineItemIdref){if(!spineItemIdref)throw new Error("getRangeCfiFromPoints: Spine item idref must be specified for this fixed layout view.");return callOnPageView(spineItemIdref,function(view){return view.getRangeCfiFromPoints(startX,startY,endX,endY)})},this.getCfiForElement=function(element){for(var views=getDisplayingViews(),i=0,count=views.length;i<count;i++){var view=views[i];if(view.getLoadedContentFrames()[0].$iframe[0].contentDocument===element.ownerDocument)return view.getCfiForElement(element)}},this.getElementFromPoint=function(x,y,spineItemIdref){if(!spineItemIdref)throw new Error("getElementFromPoint: Spine item idref must be specified for this fixed layout view.");return callOnPageView(spineItemIdref,function(view){return view.getElementFromPoint(x,y)})},this.getStartCfi=function(){return getDisplayingViews()[0].getStartCfi()},this.getEndCfi=function(){return getDisplayingViews()[0].getEndCfi()},this.getNearestCfiFromElement=function(element){for(var views=getDisplayingViews(),i=0,count=views.length;i<count;i++){var view=views[i];if(view.getLoadedContentFrames()[0].$iframe[0].contentDocument===element.ownerDocument)return view.getNearestCfiFromElement(element)}}}}),define("readium_shared_js/views/iframe_loader",["jquery","underscore","URIjs"],function($,_,URI){return function(){var self=this,eventListeners={};this.addIFrameEventListener=function(eventName,callback,context){void 0==eventListeners[eventName]&&(eventListeners[eventName]=[]),eventListeners[eventName].push({callback:callback,context:context})},this.updateIframeEvents=function(iframe){_.each(eventListeners,function(value,key){$(iframe.contentWindow).off(key);for(var i=0,count=value.length;i<count;i++)$(iframe.contentWindow).on(key,value[i].callback,value[i].context)})},this.loadIframe=function(iframe,src,callback,context,attachedData){iframe.baseURI||("undefined"!=typeof location&&(iframe.baseURI=location.href+""),console.error("!iframe.baseURI => "+iframe.baseURI)),console.log("EPUB doc iframe src:"),console.log(src),console.log("EPUB doc iframe base URI:"),console.log(iframe.baseURI),iframe.setAttribute("data-baseUri",iframe.baseURI),iframe.setAttribute("data-src",src);var loadedDocumentUri=new URI(src).absoluteTo(iframe.baseURI).search("").hash("").toString();self._loadIframeWithUri(iframe,attachedData,loadedDocumentUri,function(){callback.call(context,!0,attachedData)})},this._loadIframeWithUri=function(iframe,attachedData,contentUri,callback){iframe.onload=function(){var doc=iframe.contentDocument||iframe.contentWindow.document;$("svg",doc).on("load",function(){console.log("SVG loaded")}),self.updateIframeEvents(iframe);var mathJax=iframe.contentWindow.MathJax;if(mathJax){console.log("MathJax VERSION: "+mathJax.cdnVersion+" // "+mathJax.fileversion+" // "+mathJax.version);var useFontCache=!0;mathJax.Hub.Browser.isFirefox&&(useFontCache=!1),mathJax.Hub.Browser.isChrome&&(useFontCache=!1),window.navigator.userAgent.indexOf("Edge")>0&&(useFontCache=!1),mathJax.Hub.Config({showMathMenu:!1,messageStyle:"none",showProcessingMessages:!0,SVG:{useFontCache:useFontCache}});var mathJaxCallback=_.once(callback);try{mathJax.Hub.Queue(mathJaxCallback)}catch(err){console.error("MathJax fail!"),callback()}}else callback()},iframe.setAttribute("src",contentUri)}}}),define("readium_shared_js/views/internal_links_support",["jquery","../helpers","readium_cfi_js","URIjs"],function($,Helpers,EPUBcfi,URI){return function(reader){var self=this;function processDeepLink(hrefUri,spineItem){var absoluteOpfUri=function(hrefUri,spineItem){var fullPath=reader.package().resolveRelativeUrl(spineItem.href);return hrefUri.absoluteTo(fullPath)}(hrefUri,spineItem);if(absoluteOpfUri){var path,callback,fullCfi=hrefUri.fragment(),absPath=absoluteOpfUri.toString();absPath=Helpers.RemoveFromString(absPath,"#"+fullCfi),path=absPath,callback=function(opfText){if(opfText){var packageDom=(new window.DOMParser).parseFromString(opfText,"text/xml"),cfi=function(fullCfi){var startIx=fullCfi.indexOf("("),bungIx=fullCfi.indexOf("!"),endIx=fullCfi.indexOf(")");if(-1!=bungIx)return-1==endIx&&(endIx=fullCfi.length),{spineItemCfi:fullCfi.substring(startIx+1,bungIx),elementCfi:fullCfi.substring(bungIx+1,endIx)}}(fullCfi);if(cfi){var contentDocRef=EPUBcfi.Interpreter.getContentDocHref("epubcfi("+cfi.spineItemCfi+")",packageDom);if(contentDocRef){var newSpineItem=reader.spine().getItemByHref(contentDocRef);newSpineItem?reader.openSpineItemElementCfi(newSpineItem.idref,cfi.elementCfi,self):console.warn("Unable to find spineItem with href="+contentDocRef)}else console.warn("Unable to find document ref from "+fullCfi+" cfi")}else console.warn("Unable to split cfi:"+fullCfi)}},$.ajax({isLocal:0!==path.indexOf("http"),url:path,dataType:"text",async:!0,success:function(result){callback(result)},error:function(xhr,status,errorThrown){console.error("Error when AJAX fetching "+path),console.error(status),console.error(errorThrown),callback()}})}else console.error("Unable to resolve "+hrefUri.href())}this.processLinkElements=function($iframe,spineItem){var epubContentDocument=$iframe[0].contentDocument;$("a",epubContentDocument).click(function(clickEvent){var href;href=clickEvent.currentTarget.attributes["xlink:href"]?clickEvent.currentTarget.attributes["xlink:href"].value:clickEvent.currentTarget.attributes.href.value;var fileName,overrideClickEvent=!1,hrefUri=new URI(href);hrefUri.is("relative")?(fileName=hrefUri.filename())&&Helpers.EndsWith(fileName,".opf")?(processDeepLink(hrefUri,spineItem),overrideClickEvent=!0):(function(hrefUri,spineItem){var idref;if(hrefUri.filename()){var normalizedUri=new URI(hrefUri,spineItem.href),pathname=decodeURIComponent(normalizedUri.pathname()),newSpineItem=reader.spine().getItemByHref(pathname);if(!newSpineItem)return void console.error("spine item with href="+pathname+" not found");idref=newSpineItem.idref}else idref=spineItem.idref;var hashFrag=hrefUri.fragment();reader.openSpineItemElementId(idref,hashFrag,self)}(hrefUri,spineItem),overrideClickEvent=!0):(window.open(href,"_blank"),overrideClickEvent=!0),overrideClickEvent&&(clickEvent.preventDefault(),clickEvent.stopPropagation())})}}}),define("readium_shared_js/models/smil_iterator",["jquery","../helpers"],function($,Helpers){return function(smil){function findParNode(startIndex,container,previous){for(var i=startIndex,count=container.children.length;i>=0&&i<count;i+=previous?-1:1){var node=container.children[i];if("par"==node.nodeType)return node;if(node=findParNode(previous?node.children.length-1:0,node,previous))return node}if(container.parent)return findParNode(container.index+(previous?-1:1),container.parent,previous)}this.smil=smil,this.currentPar=void 0,this.reset=function(){this.currentPar=findParNode(0,this.smil,!1)},this.findTextId=function(id){if(this.currentPar){if(!id)return!1;for(;this.currentPar;){if(this.currentPar.element){if(id===this.currentPar.text.srcFragmentId)return!0;for(var parent=this.currentPar.element.parentNode;parent;){if(parent.id&&parent.id==id)return!0;parent=parent.parentNode}var inside=$("#"+Helpers.escapeJQuerySelector(id),this.currentPar.element);if(inside&&inside.length&&inside[0])return!0}this.next()}return!1}console.debug("Par iterator is out of range")},this.next=function(){this.currentPar?this.currentPar=findParNode(this.currentPar.index+1,this.currentPar.parent,!1):console.debug("Par iterator is out of range")},this.previous=function(){this.currentPar?this.currentPar=findParNode(this.currentPar.index-1,this.currentPar.parent,!0):console.debug("Par iterator is out of range")},this.isLast=function(){if(this.currentPar)return!findParNode(this.currentPar.index+1,this.currentPar.parent,!1);console.debug("Par iterator is out of range")},this.goToPar=function(par){for(;this.currentPar&&this.currentPar!=par;)this.next()},this.reset()}}),define("readium_shared_js/views/media_overlay_data_injector",["jquery","underscore","../helpers","../models/smil_iterator","readium_cfi_js"],function($,_,Helpers,SmilIterator,EPUBcfi){return function(mediaOverlay,mediaOverlayPlayer){this.attachMediaOverlayData=function($iframe,spineItem,mediaOverlaySettings){var contentDocElement=$iframe[0].contentDocument.documentElement;if(spineItem.media_overlay_id||0!==mediaOverlay.smil_models.length){var $body=$("body",contentDocElement);if(0==$body.length)console.error("! BODY ???");else if($body.data("mediaOverlayClick"))console.error("[WARN] already mediaOverlayClick");else{$body.data("mediaOverlayClick",{ping:"pong"});var touchClickMOEventHandler_=_.debounce(function(event){var elem=$(this)[0];if(!(elem=event.target))return mediaOverlayPlayer.touchInit(),!0;var data=void 0,el=elem,inLink=!1;for("a"===el.nodeName.toLowerCase()&&(inLink=!0);!(data=$(el).data("mediaOverlayData"))&&("a"===el.nodeName.toLowerCase()&&(inLink=!0),el=el.parentNode););if(data&&(data.par||data.pars)){if(!mediaOverlaySettings.mediaOverlaysEnableClick)return console.log("MO CLICK DISABLED"),mediaOverlayPlayer.touchInit(),!0;if(inLink)return console.log("MO CLICKED LINK"),mediaOverlayPlayer.touchInit(),!0;var par=data.par?data.par:data.pars[0];return el&&el!=elem&&"body"===el.nodeName.toLowerCase()&&par&&!par.getSmil().id?(mediaOverlayPlayer.touchInit(),!0):(mediaOverlayPlayer.playUserPar(par),!0)}var readaloud=$(elem).attr("ibooks:readaloud");if(readaloud||(readaloud=$(elem).attr("epub:readaloud")),readaloud){console.debug("MO readaloud attr: "+readaloud);var isPlaying=mediaOverlayPlayer.isPlaying();if("start"===readaloud&&!isPlaying||"stop"===readaloud&&isPlaying||"startstop"===readaloud)return mediaOverlayPlayer.toggleMediaOverlay(),!0}return mediaOverlayPlayer.touchInit(),!0},200);"ontouchstart"in document.documentElement&&$body[0].addEventListener("touchstart",touchClickMOEventHandler_,!1),$body[0].addEventListener("mousedown",touchClickMOEventHandler_,!1)}var smil=mediaOverlay.getSmilBySpineItem(spineItem);if(smil){var traverseSmilSeqs=function(root){if(root){if(root.nodeType&&"seq"===root.nodeType&&root.textref){var parts=root.textref.split("#"),file=parts[0],fragmentId=2===parts.length?parts[1]:"";file&&fragmentId&&Helpers.ResolveContentRef(file,smil.href)===spineItem.href&&(root.element=$iframe[0].contentDocument.getElementById(fragmentId),root.element||console.error("seq.textref !element? "+root.textref))}if(root.children&&root.children.length)for(var i=0;i<root.children.length;i++){var child=root.children[i];traverseSmilSeqs(child)}}};traverseSmilSeqs(smil);for(var iter=new SmilIterator(smil);iter.currentPar;){if(iter.currentPar.element=void 0,iter.currentPar.cfi=void 0,Helpers.ResolveContentRef(iter.currentPar.text.srcFile,iter.smil.href)===spineItem.href){var selectBody=!iter.currentPar.text.srcFragmentId||0==iter.currentPar.text.srcFragmentId.length,selectId=0==iter.currentPar.text.srcFragmentId.indexOf("epubcfi")?void 0:iter.currentPar.text.srcFragmentId,$element=void 0,isCfiTextRange=!1;if(selectBody||selectId)$element=selectBody?$body:$($iframe[0].contentDocument.getElementById(selectId));else if(0===iter.currentPar.text.srcFragmentId.indexOf("epubcfi")){var partial=iter.currentPar.text.srcFragmentId.substr("epubcfi".length+1,iter.currentPar.text.srcFragmentId.length-"epubcfi".length-2);0===partial.indexOf("/99!")&&(partial=partial.substr("/99!".length,partial.length-"/99!".length));var parts=partial.split(",");if(parts&&3===parts.length)try{var partialStartCfi=parts[0]+parts[1],startCFI="epubcfi("+partialStartCfi+")",infoStart=EPUBcfi.getTextTerminusInfoWithPartialCFI(startCFI,$iframe[0].contentDocument,["cfi-marker","mo-cfi-highlight"],[],["MathJax_Message"]),partialEndCfi=parts[0]+parts[2],endCFI="epubcfi("+partialEndCfi+")",cfiTextParent=(EPUBcfi.getTextTerminusInfoWithPartialCFI(endCFI,$iframe[0].contentDocument,["cfi-marker","mo-cfi-highlight"],[],["MathJax_Message"]),infoStart.textNode.parentNode);if(iter.currentPar.cfi={smilTextSrcCfi:iter.currentPar.text.srcFragmentId,partialRangeCfi:partial,partialStartCfi:partialStartCfi,partialEndCfi:partialEndCfi,cfiTextParent:cfiTextParent},isCfiTextRange=!0,modata=($element=$(cfiTextParent)).data("mediaOverlayData")){modata.par&&(console.error("[WARN] non-CFI MO DATA already exists!"),modata.par=void 0);var found=!1;if(modata.pars)for(var iPars=0;iPars<modata.pars.length;iPars++)modata.pars[iPars]===iter.currentPar&&(found=!0,console.error("[WARN] mediaOverlayData CFI PAR already registered!"));else modata.pars=[];found||modata.pars.push(iter.currentPar)}else modata={pars:[iter.currentPar]},$element.data("mediaOverlayData",modata)}catch(error){console.error(error)}else try{var cfi="epubcfi("+partial+")";$element=EPUBcfi.getTargetElementWithPartialCFI(cfi,$iframe[0].contentDocument,["cfi-marker","mo-cfi-highlight"],[],["MathJax_Message"])}catch(error){console.error(error)}}else console.error("SMIL text@src CFI fragment identifier scheme not supported: "+iter.currentPar.text.srcFragmentId);if($element&&$element.length>0){if(!isCfiTextRange){iter.currentPar.element&&iter.currentPar.element!==$element[0]&&console.error("DIFFERENT ELEMENTS??! "+iter.currentPar.text.srcFragmentId+" /// "+iter.currentPar.element.id);var modata,name=$element[0].nodeName?$element[0].nodeName.toLowerCase():void 0;"audio"!==name&&"video"!==name||$element.attr("preload","auto"),iter.currentPar.element=$element[0],(modata=$element.data("mediaOverlayData"))&&(console.error("[WARN] MO DATA already exists."),modata.par&&modata.par!==iter.currentPar&&console.error("DIFFERENT PARS??!")),$element.data("mediaOverlayData",{par:iter.currentPar})}}else console.error("!! CANNOT FIND ELEMENT: "+iter.currentPar.text.srcFragmentId+" == "+iter.currentPar.text.srcFile+" /// "+spineItem.href)}iter.next()}}else console.error("NO SMIL?? "+spineItem.idref+" /// "+spineItem.media_overlay_id)}}}}),define("readium_shared_js/views/audio_player",["jquery"],function($){return function(onStatusChanged,onPositionChanged,onAudioEnded,onAudioPlay,onAudioPause){var _iOS=!!navigator.userAgent.match(/(iPad|iPhone|iPod)/g),_Android=navigator.userAgent.toLowerCase().indexOf("android")>-1,DEBUG=!1,_audioElement=new Audio;DEBUG&&(_audioElement.addEventListener("load",function(){console.debug("0) load")}),_audioElement.addEventListener("loadstart",function(){console.debug("1) loadstart")}),_audioElement.addEventListener("durationchange",function(){console.debug("2) durationchange")}),_audioElement.addEventListener("loadedmetadata",function(){console.debug("3) loadedmetadata")}),_audioElement.addEventListener("loadeddata",function(){console.debug("4) loadeddata")}),_audioElement.addEventListener("progress",function(){console.debug("5) progress")}),_audioElement.addEventListener("canplay",function(){console.debug("6) canplay")}),_audioElement.addEventListener("canplaythrough",function(){console.debug("7) canplaythrough")}),_audioElement.addEventListener("play",function(){console.debug("8) play")}),_audioElement.addEventListener("pause",function(){console.debug("9) pause")}),_audioElement.addEventListener("ended",function(){console.debug("10) ended")}),_audioElement.addEventListener("seeked",function(){console.debug("X) seeked")}),_audioElement.addEventListener("timeupdate",function(){console.debug("Y) timeupdate")}),_audioElement.addEventListener("seeking",function(){console.debug("Z) seeking")}));var self=this,_currentEpubSrc=void 0,_currentSmilSrc=void 0;this.currentSmilSrc=function(){return _currentSmilSrc};var _rate=1;this.setRate=function(rate){(_rate=rate)<.5&&(_rate=.5),_rate>4&&(_rate=4),_audioElement.playbackRate=_rate},self.setRate(_rate),this.getRate=function(){return _rate};var _volume=1;this.setVolume=function(volume){(_volume=volume)<0&&(_volume=0),_volume>1&&(_volume=1),_audioElement.volume=_volume},self.setVolume(_volume),this.getVolume=function(){return _volume},this.play=function(){return DEBUG&&console.error("this.play()"),!!_currentEpubSrc&&(_intervalTimer||(_intervalTimer=setInterval(function(){if(_audioElement.moSeeking)++_intervalTimerSkips>1e3&&(_intervalTimerSkips=0,stopTimer());else{var currentTime=void 0;try{currentTime=_audioElement.currentTime}catch(ex){console.error(ex.message)}currentTime&&onPositionChanged(currentTime,1)}},20)),self.setVolume(_volume),self.setRate(_rate),_audioElement.play(),!0)},this.pause=function(){DEBUG&&console.error("this.pause()"),stopTimer(),_audioElement.pause()},_audioElement.addEventListener("play",function(){onStatusChanged({isPlaying:!0}),onAudioPlay()},!1),_audioElement.addEventListener("pause",function(){onAudioPause(),onStatusChanged({isPlaying:!1})},!1),_audioElement.addEventListener("ended",function(){_audioElement.moSeeking?DEBUG&&console.debug("onEnded() skipped (still seeking...)"):(stopTimer(),onAudioEnded(),onStatusChanged({isPlaying:!1}))},!1);var _intervalTimerSkips=0,_intervalTimer=void 0;function stopTimer(){_intervalTimer&&clearInterval(_intervalTimer),_intervalTimer=void 0}this.isPlaying=function(){return void 0!==_intervalTimer},this.reset=function(){DEBUG&&console.error("this.reset()"),this.pause(),_audioElement.moSeeking=void 0,_currentSmilSrc=void 0,_currentEpubSrc=void 0,setTimeout(function(){_audioElement.setAttribute("src","")},1)},_audioElement.addEventListener("loadstart",function(){_touchInited=!0});var _touchInited=!1;this.touchInit=function(){return!!_iOS&&!_touchInited&&(_touchInited=!0,_audioElement.setAttribute("src","touch/init/html5/audio.mp3"),_audioElement.load(),!0)};var _playId=0,_seekQueuing=0;this.playFile=function(smilSrc,epubSrc,seekBegin){++_playId>99999&&(_playId=0);var playId=_playId;return _audioElement.moSeeking?++_seekQueuing>MAX_SEEK_RETRIES?void(_seekQueuing=0):(DEBUG&&console.debug("this.playFile("+epubSrc+") @"+seekBegin+" (POSTPONE, SEEKING...)"),void setTimeout(function(){self.playFile(smilSrc,epubSrc,seekBegin)},20)):(_audioElement.moSeeking={},DEBUG&&console.debug("this.playFile("+epubSrc+") @"+seekBegin+" #"+playId),_currentEpubSrc&&_currentEpubSrc===epubSrc?(DEBUG&&console.debug("this.playFile() SAME SRC"),this.pause(),_currentSmilSrc=smilSrc,_currentEpubSrc=epubSrc,void playSeekCurrentTime(seekBegin,playId,!1)):(DEBUG&&(console.debug("this.playFile() NEW SRC"),console.debug("_currentEpubSrc: "+_currentEpubSrc),console.debug("epubSrc: "+epubSrc)),this.reset(),_audioElement.moSeeking={},_currentSmilSrc=smilSrc,_currentEpubSrc=epubSrc,_Android||_audioElement.addEventListener("play",onPlayToForcePreload,!1),$(_audioElement).on(_readyEvent,{seekBegin:seekBegin,playId:playId},onReadyToSeek),void setTimeout(function(){_audioElement.setAttribute("src",_currentEpubSrc),_audioElement.load(),_Android||playToForcePreload()},1)))};var playToForcePreload=function(){DEBUG&&console.debug("playToForcePreload");var vol=_volume;_volume=0,self.play(),_volume=vol},onPlayToForcePreload=function(){_audioElement.removeEventListener("play",onPlayToForcePreload,!1),DEBUG&&console.debug("onPlayToForcePreload"),_audioElement.pause()},_readyEvent=_Android?"canplaythrough":"canplay";function onReadyToSeek_(event){DEBUG&&console.debug("onReadyToSeek #"+event.data.playId),playSeekCurrentTime(event.data.seekBegin,event.data.playId,!0)}function onReadyToSeek(event){$(_audioElement).off(_readyEvent,onReadyToSeek),_Android?(DEBUG&&console.debug("onReadyToSeek ANDROID ... waiting a bit ... #"+event.data.playId),playToForcePreload(),setTimeout(function(){onReadyToSeek_(event)},1e3)):onReadyToSeek_(event)}function playSeekCurrentTime(newCurrentTime,playId,isNewSrc){if(DEBUG&&console.debug("playSeekCurrentTime() #"+playId),0==newCurrentTime&&(newCurrentTime=.01),Math.abs(newCurrentTime-_audioElement.currentTime)<.3)return DEBUG&&console.debug("playSeekCurrentTime() CONTINUE"),_audioElement.moSeeking=void 0,void self.play();var ev=isNewSrc?_seekedEvent1:_seekedEvent2;DEBUG&&console.debug("playSeekCurrentTime() NEED SEEK, EV: "+ev),self.pause(),$(_audioElement).on(ev,{newCurrentTime:newCurrentTime,playId:playId,isNewSrc:isNewSrc},onSeeked);try{_audioElement.currentTime=newCurrentTime}catch(ex){console.error(ex.message),setTimeout(function(){try{_audioElement.currentTime=newCurrentTime}catch(ex){console.error(ex.message)}},5)}}var MAX_SEEK_RETRIES=10,_seekedEvent1=_iOS?"canplaythrough":"seeked",_seekedEvent2=_iOS?"timeupdate":"seeked";function onSeeked(event){var ev=event.data.isNewSrc?_seekedEvent1:_seekedEvent2,notRetry=void 0==event.data.seekRetries;(notRetry||event.data.seekRetries==MAX_SEEK_RETRIES)&&$(_audioElement).off(ev,onSeeked),DEBUG&&console.debug("onSeeked() #"+event.data.playId+" FIRST? "+notRetry+" EV: "+ev);var curTime=_audioElement.currentTime,diff=Math.abs(event.data.newCurrentTime-curTime);if((notRetry||event.data.seekRetries>=0)&&diff>=1)DEBUG&&console.debug("onSeeked() time diff: "+event.data.newCurrentTime+" vs. "+curTime+" ("+diff+")"),notRetry&&(event.data.seekRetries=MAX_SEEK_RETRIES,event.data.isNewSrc=!1),event.data.seekRetries--,DEBUG&&console.debug("onSeeked() FAIL => retry again (timeout)"),setTimeout(function(){onSeeked(event)},_Android?1e3:200),setTimeout(function(){_audioElement.pause();try{_audioElement.currentTime=event.data.newCurrentTime}catch(ex){console.error(ex.message),setTimeout(function(){try{_audioElement.currentTime=event.data.newCurrentTime}catch(ex){console.error(ex.message)}},4)}},5);else{if(DEBUG&&(console.debug("onSeeked() STATE:"),console.debug(notRetry),console.debug(event.data.seekRetries),console.debug(diff)),diff>=1){DEBUG&&console.debug("onSeeked() ABORT, TRY AGAIN FROM SCRATCH!");var smilSrc=_currentSmilSrc,epubSrc=_currentEpubSrc,seekBegin=event.data.newCurrentTime;return self.reset(),void setTimeout(function(){self.playFile(smilSrc,epubSrc,seekBegin)},10)}DEBUG&&console.debug("onSeeked() OKAY => play!"),event.data.seekRetries=void 0,self.play(),_audioElement.moSeeking=void 0}}}}),define("readium_shared_js/views/media_overlay_element_highlighter",["jquery","readium_cfi_js"],function($,EPUBcfi){return function(reader){this.includeParWhenAdjustingToSeqSyncGranularity=!0;var DEFAULT_MO_ACTIVE_CLASS="mo-active-default",_highlightedElementPar=void 0;this.isElementHighlighted=function(par){return _highlightedElementPar&&par===_highlightedElementPar};var _highlightedCfiPar=void 0;this.isCfiHighlighted=function(par){return _highlightedCfiPar&&par===_highlightedCfiPar};var _activeClass="",_playbackActiveClass="",_reader=reader,$userStyle=void 0;function ensureUserStyle($element,hasAuthorStyle,overrideWithUserStyle){if($userStyle)try{if($userStyle[0].ownerDocument===$element[0].ownerDocument)return}catch(e){}$head=$("head",$element[0].ownerDocument.documentElement),($userStyle=$("<style type='text/css'> </style>")).append("."+DEFAULT_MO_ACTIVE_CLASS+" {");var fallbackUserStyle="background-color: yellow !important; color: black !important; border-radius: 0.4em;",style=overrideWithUserStyle;if(style){var atLeastOne=!1;for(var prop in style.declarations)style.declarations.hasOwnProperty(prop)&&(atLeastOne=!0,$userStyle.append(prop+": "+style.declarations[prop]+"; "));atLeastOne||hasAuthorStyle||$userStyle.append(fallbackUserStyle)}else hasAuthorStyle||$userStyle.append(fallbackUserStyle);$userStyle.append("}"),$userStyle.appendTo($head)}this.reDo=function(){$userStyle&&$userStyle.remove(),$userStyle=void 0;var he=_highlightedElementPar,hc=_highlightedCfiPar,c1=_activeClass,c2=_playbackActiveClass;_highlightedElementPar?(this.reset(),this.highlightElement(he,c1,c2)):_highlightedCfiPar&&(this.reset(),this.highlightCfi(hc,c1,c2))},this.highlightElement=function(par,activeClass,playbackActiveClass){if(par&&par!==_highlightedElementPar){this.reset(),_highlightedElementPar=par,_highlightedCfiPar=void 0,_activeClass=activeClass,_playbackActiveClass=playbackActiveClass;var seq=this.adjustParToSeqSyncGranularity(_highlightedElementPar),element=seq.element;_playbackActiveClass&&""!==_playbackActiveClass&&$(element.ownerDocument.documentElement).addClass(_playbackActiveClass);var $hel=$(element),hasAuthorStyle=_activeClass&&""!==_activeClass,overrideWithUserStyle=_reader.userStyles().findStyle("."+DEFAULT_MO_ACTIVE_CLASS);ensureUserStyle($hel,hasAuthorStyle,overrideWithUserStyle),overrideWithUserStyle||!hasAuthorStyle?(hasAuthorStyle&&$hel.addClass(_activeClass),$hel.addClass(DEFAULT_MO_ACTIVE_CLASS)):$hel.addClass(_activeClass),(this.includeParWhenAdjustingToSeqSyncGranularity||_highlightedElementPar!==seq)&&$(_highlightedElementPar.element).addClass("mo-sub-sync")}},this.highlightCfi=function(par,activeClass,playbackActiveClass){if(par&&par!==_highlightedCfiPar){this.reset(),_highlightedElementPar=void 0,_activeClass=activeClass,_playbackActiveClass=playbackActiveClass;var $hel=$((_highlightedCfiPar=par).cfi.cfiTextParent),hasAuthorStyle=_activeClass&&""!==_activeClass,overrideWithUserStyle=_reader.userStyles().findStyle("."+DEFAULT_MO_ACTIVE_CLASS);if(ensureUserStyle($hel,hasAuthorStyle,overrideWithUserStyle),_reader.plugins.highlights)try{var id=par.getSmil().spineItemId;_reader.plugins.highlights.addHighlight(id,par.cfi.partialRangeCfi,"MO_SPEAK","highlight",void 0)}catch(error){console.error(error)}else if(_reader.plugins.annotations)try{id=par.getSmil().spineItemId,_reader.plugins.annotations.addHighlight(id,par.cfi.partialRangeCfi,"MO_SPEAK","highlight",void 0)}catch(error){console.error(error)}}},this.reset=function(){if(_highlightedCfiPar){var doc=_highlightedCfiPar.cfi.cfiTextParent.ownerDocument;if(_reader.plugins.highlights)try{_reader.plugins.highlights.removeHighlight("MO_SPEAK");for(var toRemove=void 0;null!==(toRemove=doc.getElementById("start-MO_SPEAK"));)console.log("toRemove START"),console.log(toRemove),toRemove.parentNode.removeChild(toRemove);for(;null!==(toRemove=doc.getElementById("end-MO_SPEAK"));)console.log("toRemove END"),console.log(toRemove),toRemove.parentNode.removeChild(toRemove)}catch(error){console.error(error)}else if(_reader.plugins.annotations)try{for(_reader.plugins.annotations.removeHighlight("MO_SPEAK"),toRemove=void 0;null!==(toRemove=doc.getElementById("start-MO_SPEAK"));)console.log("toRemove START"),console.log(toRemove),toRemove.parentNode.removeChild(toRemove);for(;null!==(toRemove=doc.getElementById("end-MO_SPEAK"));)console.log("toRemove END"),console.log(toRemove),toRemove.parentNode.removeChild(toRemove)}catch(error){console.error(error)}_highlightedCfiPar=void 0}if(_highlightedElementPar){var seq=this.adjustParToSeqSyncGranularity(_highlightedElementPar),element=seq.element;(this.includeParWhenAdjustingToSeqSyncGranularity||_highlightedElementPar!==seq)&&$(_highlightedElementPar.element).removeClass("mo-sub-sync"),_playbackActiveClass&&""!==_playbackActiveClass&&$(element.ownerDocument.documentElement).removeClass(_playbackActiveClass),_activeClass&&""!==_activeClass&&$(element).removeClass(_activeClass),$(element).removeClass(DEFAULT_MO_ACTIVE_CLASS),_highlightedElementPar=void 0}_activeClass="",_playbackActiveClass=""},this.adjustParToSeqSyncGranularity=function(par){if(par){var sync=_reader.viewerSettings().mediaOverlaysSynchronizationGranularity;if(sync&&sync.length>0){if(!(par.element||(par.cfi?par.cfi.cfiTextParent:void 0)))return console.error("adjustParToSeqSyncGranularity !element ???"),par;var seq=par.getFirstSeqAncestorWithEpubType(sync,this.includeParWhenAdjustingToSeqSyncGranularity);if(seq&&seq.element)return seq}return par}}}}),define("readium_shared_js/views/scroll_view",["../globals","jquery","underscore","eventEmitter","../models/bookmark_data","../models/current_pages_info","../helpers","./one_page_view","../models/page_open_request","../models/viewer_settings"],function(Globals,$,_,EventEmitter,BookmarkData,CurrentPagesInfo,Helpers,OnePageView,PageOpenRequest,ViewerSettings){return function(options,isContinuousScroll,reader){var _DEBUG=!1,_jQueryPositionNeedsFix=!1;try{var vs=$.fn.jquery.split(".");2==parseInt(vs[0])&&2==parseInt(vs[1])&&0==parseInt(vs[2])&&(_jQueryPositionNeedsFix=!0)}catch(err){console.error(err)}$.extend(this,new EventEmitter);var _deferredPageRequest,_currentPageRequest,_$contentFrame,_$el,SCROLL_MARGIN_TO_SHOW_LAST_VISBLE_LINE=5,ITEM_LOAD_SCROLL_BUFFER=2e3,ON_SCROLL_TIME_DALAY=300,self=this,_$viewport=$(options.$viewport),_spine=options.spine,_userStyles=options.userStyles,_stopTransientViewUpdate=!1,_isPerformingLayoutModifications=!1,_isSettingScrollPosition=!1,_isLoadingNewSpineItemOnPageRequest=!1;function updateLoadedViewsTop(callback,assertScrollPosition){if(_stopTransientViewUpdate)callback();else{var firstView,viewPage=(firstView=void 0,forEachItemView(function(pageView){return firstView=pageView,!1},!1),firstView);if(viewPage){var viewPortRange=getVisibleRange(0),firstViewRange=getPageViewRange(viewPage);if(viewPortRange.top-firstViewRange.bottom>ITEM_LOAD_SCROLL_BUFFER){var scrollPos=scrollTop();removePageView(viewPage),scrollTo(scrollPos-(firstViewRange.bottom-firstViewRange.top),void 0),assertScrollPosition("updateLoadedViewsTop 1"),updateLoadedViewsTop(callback,assertScrollPosition)}else viewPortRange.top-firstViewRange.top<ITEM_LOAD_SCROLL_BUFFER?function(topView,callback){var prevSpineItem=_spine.prevItem(topView.currentSpineItem(),!0);if(prevSpineItem){var tmpView=createPageViewForSpineItem(prevSpineItem,!0),lastView=lastLoadedView();tmpView.element().insertAfter(lastView.element()),tmpView.loadSpineItem(prevSpineItem,function(success,$iframe,spineItem,isNewlyLoaded,context){if(success){updatePageViewSize(tmpView);var range=getPageViewRange(tmpView);removePageView(tmpView);var scrollPos=scrollTop(),newView=createPageViewForSpineItem(prevSpineItem),originalHeight=range.bottom-range.top;newView.setHeight(originalHeight),newView.element().insertBefore(topView.element()),scrollTo(scrollPos+=originalHeight,void 0),newView.loadSpineItem(prevSpineItem,function(success,$iframe,spineItem,isNewlyLoaded,context){success?(function(pageView){var scrollPos=scrollTop(),rangeBeforeResize=getPageViewRange(pageView);updatePageViewSize(pageView);var rangeAfterResize=getPageViewRange(pageView),heightAfter=rangeAfterResize.bottom-rangeAfterResize.top,heightBefore=rangeBeforeResize.bottom-rangeBeforeResize.top,delta=heightAfter-heightBefore;Math.abs(delta)>0&&(_DEBUG&&console.debug("IMMEDIATE SCROLL ADJUST: "+pageView.currentSpineItem().href+" == "+delta),scrollTo(scrollPos+delta))}(newView),onPageViewLoaded(0,success,$iframe,spineItem,isNewlyLoaded),callback(success)):(console.error("Unable to open 2 "+prevSpineItem.href),removePageView(newView),callback(!1))})}else console.error("Unable to open 1 "+prevSpineItem.href),removePageView(tmpView),callback(!1)})}else callback(!1)}(viewPage,function(isElementAdded){isElementAdded?(assertScrollPosition("updateLoadedViewsTop 2"),updateLoadedViewsTop(callback,assertScrollPosition)):callback()}):callback()}else callback()}}function updateLoadedViewsBottom(callback,assertScrollPosition){if(_stopTransientViewUpdate)callback();else{var viewPage=lastLoadedView();if(viewPage){var viewPortRange=getVisibleRange(0),lastViewRange=getPageViewRange(viewPage);lastViewRange.top-viewPortRange.bottom>ITEM_LOAD_SCROLL_BUFFER?(removePageView(viewPage),assertScrollPosition("updateLoadedViewsBottom 1"),updateLoadedViewsBottom(callback,assertScrollPosition)):lastViewRange.bottom-viewPortRange.bottom<ITEM_LOAD_SCROLL_BUFFER?function(bottomView,callback){var nexSpineItem=_spine.nextItem(bottomView.currentSpineItem(),!0);if(nexSpineItem){scrollTop();var newView=createPageViewForSpineItem(nexSpineItem);newView.element().insertAfter(bottomView.element()),newView.loadSpineItem(nexSpineItem,function(success,$iframe,spineItem,isNewlyLoaded,context){success?(updatePageViewSize(newView),onPageViewLoaded(0,success,$iframe,spineItem,isNewlyLoaded),callback(success)):(console.error("Unable to load "+nexSpineItem.href),callback(!1))})}else callback(!1)}(viewPage,function(newPageLoaded){assertScrollPosition("updateLoadedViewsBottom 2"),newPageLoaded?updateLoadedViewsBottom(callback,assertScrollPosition):callback()}):callback()}else callback()}}function updateTransientViews(pageView){if(isContinuousScroll){var scrollPosBefore=void 0;if(_DEBUG&&pageView){var offset=pageView.offset();offset&&(scrollPosBefore=offset.top)}var assertScrollPosition=function(msg){if(_DEBUG){if(!scrollPosBefore)return;var scrollPosAfter=void 0,offset=pageView.offset();if(offset&&(scrollPosAfter=offset.top),!scrollPosAfter)return;var diff=scrollPosAfter-scrollPosBefore;Math.abs(diff)>1&&console.debug("@@@@@@@@@@@@@@@ SCROLL ADJUST ("+msg+") "+diff+" -- "+pageView.currentSpineItem().href)}};_isPerformingLayoutModifications=!0,updateLoadedViewsBottom(function(){updateLoadedViewsTop(function(){setTimeout(function(){_isPerformingLayoutModifications=!1},ON_SCROLL_TIME_DALAY+100)},assertScrollPosition)},assertScrollPosition)}}this.isContinuousScroll=function(){return isContinuousScroll},this.render=function(){var template=Helpers.loadTemplate("scrolled_book_frame",{});_$el=$(template),_$viewport.append(_$el),(_$contentFrame=$("#scrolled-content-frame",_$el)).css("overflow",""),_$contentFrame.css("overflow-y","auto"),_$contentFrame.css("overflow-x","hidden"),_$contentFrame.css("-webkit-overflow-scrolling","touch"),_$contentFrame.css("width","100%"),_$contentFrame.css("height","100%"),_$contentFrame.css("position","relative");var settings=reader.viewerSettings();settings&&void 0!==settings.enableGPUHardwareAccelerationCSS3D||(settings=new ViewerSettings({})),settings.enableGPUHardwareAccelerationCSS3D&&_$contentFrame.css("transform","translateZ(0)"),self.applyStyles();var lazyScroll=_.debounce(onScroll,ON_SCROLL_TIME_DALAY);return _$contentFrame.on("scroll",function(e){lazyScroll(e),reader.viewerSettings().mediaOverlaysPreservePlaybackWhenScroll||!_mediaOverlaysWasPlayingLastTimeScrollStarted&&reader.isMediaOverlayAvailable()&&(_mediaOverlaysWasPlayingLastTimeScrollStarted=reader.isPlayingMediaOverlay())&&reader.pauseMediaOverlay()}),self};var _mediaOverlaysWasPlayingLastTimeScrollStarted=!1;function onScroll(e){_isPerformingLayoutModifications||_isSettingScrollPosition||_isLoadingNewSpineItemOnPageRequest||(self.resetCurrentPosition(),updateTransientViews(),onPaginationChanged(self),_.defer(function(){_currentPageRequest||self.saveCurrentPosition()}),reader.viewerSettings().mediaOverlaysPreservePlaybackWhenScroll||_mediaOverlaysWasPlayingLastTimeScrollStarted&&setTimeout(function(){reader.playMediaOverlay(),_mediaOverlaysWasPlayingLastTimeScrollStarted=!1},100))}function scrollTo(offset,pageRequest){_$contentFrame[0].scrollTop=offset,pageRequest&&onPaginationChanged(pageRequest.initiator,pageRequest.spineItem,pageRequest.elementId)}function updatePageViewSize(pageView){pageView.currentSpineItem().isFixedLayout()?pageView.scaleToWidth(_$contentFrame.width()):pageView.resizeIFrameToContent()}function removePageView(pageView){pageView.onUnload(),pageView.element().remove()}this.remove=function(){_$el.remove()},this.onViewportResize=function(){},this.resetCurrentPosition=function(){_currentPageRequest=void 0},this.saveCurrentPosition=function(){if(!_deferredPageRequest){var _firstVisibleCfi=self.getFirstVisibleCfi(),spineItem=_spine.getItemById(_firstVisibleCfi.idref);spineItem&&(_currentPageRequest=new PageOpenRequest(spineItem,self)).setElementCfi(_firstVisibleCfi.contentCFI)}},this.restoreCurrentPosition=function(){_currentPageRequest&&this.openPageInternal(_currentPageRequest)};var _viewSettings=void 0;function createPageViewForSpineItem(aSpineItem,isTemporaryView){options.disablePageTransitions=!0;var enableBookStyleOverrides=!0;aSpineItem.isFixedLayout()&&(enableBookStyleOverrides=!1);var pageView=new OnePageView(options,["content-doc-frame"],enableBookStyleOverrides,reader);pageView.on(OnePageView.Events.SPINE_ITEM_OPEN_START,function($iframe,spineItem){Globals.logEvent("OnePageView.Events.SPINE_ITEM_OPEN_START","ON","scroll_view.js [ "+spineItem.href+" ]"),Globals.logEvent("CONTENT_DOCUMENT_LOAD_START","EMIT","scroll_view.js [ "+spineItem.href+" ]"),self.emit(Globals.Events.CONTENT_DOCUMENT_LOAD_START,$iframe,spineItem)}),pageView.on(Globals.Events.CONTENT_DOCUMENT_UNLOADED,function($iframe,spineItem){Globals.logEvent("CONTENT_DOCUMENT_UNLOADED","ON","scroll_view.js [ "+spineItem.href+" ]"),self.emit(Globals.Events.CONTENT_DOCUMENT_UNLOADED,$iframe,spineItem)});var updatePageViewSizeAndPagination=_.debounce(function(){updatePageViewSize(pageView),onPaginationChanged(self),updateTransientViews(),_currentPageRequest&&!_deferredPageRequest&&self.restoreCurrentPosition()},100);return pageView.on(OnePageView.Events.CONTENT_SIZE_CHANGED,function($iframe,spineItem){Globals.logEvent("OnePageView.Events.CONTENT_SIZE_CHANGED","ON","scroll_view.js [ "+spineItem.href+" ]"),updatePageViewSizeAndPagination()}),pageView.render(),_viewSettings&&pageView.setViewSettings(_viewSettings,!0),isTemporaryView||pageView.element().data("pageView",pageView),isContinuousScroll&&pageView.decorateIframe(),pageView}function findPageViewForSpineItem(spineItem,reverse){var retView=void 0;return forEachItemView(function(pageView){return pageView.currentSpineItem()!=spineItem||(retView=pageView,!1)},reverse),retView}function forEachItemView(func,reverse){for(var pageNodes=_$contentFrame.children(),count=pageNodes.length,iter=reverse?function(ix){return ix-1}:function(ix){return ix+1},compare=reverse?function(ix){return ix>=0}:function(ix){return ix<count},i=reverse?count-1:0;compare(i);i=iter(i)){var curView=pageNodes.eq(i).data("pageView");if(curView&&!1===func(curView))return}}function lastLoadedView(){var lastView=void 0;return forEachItemView(function(pageView){return lastView=pageView,!1},!0),lastView}function onPageViewLoaded(pageView,success,$iframe,spineItem,isNewlyLoaded,context){success&&isNewlyLoaded&&(Globals.logEvent("CONTENT_DOCUMENT_LOADED","EMIT","scroll_view.js [ "+spineItem.href+" ]"),self.emit(Globals.Events.CONTENT_DOCUMENT_LOADED,$iframe,spineItem))}function loadSpineItem(spineItem,callback){!function(){var loadedPageViews=[];forEachItemView(function(pageView){loadedPageViews.push(pageView)},!1);for(var i=0,count=loadedPageViews.length;i<count;i++)removePageView(loadedPageViews[i])}(),scrollTop();var loadedView=createPageViewForSpineItem(spineItem);_$contentFrame.append(loadedView.element()),loadedView.loadSpineItem(spineItem,function(success,$iframe,spineItem,isNewlyLoaded,context){success?(updatePageViewSize(loadedView),onPageViewLoaded(0,success,$iframe,spineItem,isNewlyLoaded)):(console.error("Unable to load "+spineItem.href),removePageView(loadedView),loadedView=void 0),callback(loadedView)})}function openPageViewElement(pageView,pageRequest){var pageCount,$element,pageRange,topOffset=0;if(void 0!==pageRequest.scrollTop)topOffset=pageRequest.scrollTop;else if(void 0!==pageRequest.spineItemPageIndex)pageCount=calculatePageCount(),topOffset=(pageRequest.spineItemPageIndex<0?0:pageRequest.spineItemPageIndex>=pageCount?pageCount-1:pageRequest.spineItemPageIndex)*viewHeight();else if(pageView&&pageRequest.elementId){if(pageRange=getPageViewRange(pageView),!($element=pageView.getNavigator().getElementById(pageRequest.elementId))||!$element.length)return void console.warn("Element id="+pageRequest.elementId+" not found!");if(function(pageView,$element,percentVisible){return isRangeIsVisibleOnScreen(getElementRange(pageView,$element),percentVisible)}(pageView,$element,60))return void onPaginationChanged(pageRequest.initiator,pageRequest.spineItem,pageRequest.elementId);topOffset=getElementRange(pageView,$element).top+pageRange.top}else if(pageView&&pageRequest.elementCfi){pageRange=getPageViewRange(pageView);var domRange=pageView.getNavigator().getDomRangeFromRangeCfi(pageRequest.elementCfi);if(!domRange)return void console.warn("Range for cfi="+pageRequest.elementCfi+" not found!");var domRangeAsRange=function(pageView,domRange){var pageRange=getPageViewRange(pageView),elementRange={top:0,bottom:0},boundingClientRect=domRange.getBoundingClientRect();return elementRange.top=boundingClientRect.top+pageRange.top,elementRange.bottom=elementRange.top+boundingClientRect.height,elementRange}(pageView,domRange);if(isRangeIsVisibleOnScreen(domRangeAsRange,60))return void onPaginationChanged(pageRequest.initiator,pageRequest.spineItem,pageRequest.elementId);topOffset=domRangeAsRange.top}else if(pageRequest.firstPage)topOffset=0;else if(pageRequest.lastPage){if(0===(pageCount=calculatePageCount()))return;topOffset=scrollHeight()-viewHeight()-5}else topOffset=pageView?(pageRange=getPageViewRange(pageView)).top:0;scrollTop()!=topOffset?(_isSettingScrollPosition=!0,scrollTo(topOffset,pageRequest),setTimeout(function(){_isSettingScrollPosition=!1},ON_SCROLL_TIME_DALAY+100)):onPaginationChanged(pageRequest.initiator,pageRequest.spineItem,pageRequest.elementId)}function calculatePageCount(){return Math.ceil(scrollHeight()/viewHeight())}function onPaginationChanged(initiator,paginationRequest_spineItem,paginationRequest_elementId){Globals.logEvent("InternalEvents.CURRENT_VIEW_PAGINATION_CHANGED","EMIT","scroll_view.js"),self.emit(Globals.InternalEvents.CURRENT_VIEW_PAGINATION_CHANGED,{paginationInfo:self.getPaginationInfo(),initiator:initiator,spineItem:paginationRequest_spineItem,elementId:paginationRequest_elementId})}function scrollTop(){return _$contentFrame[0].scrollTop}function scrollBottom(){return scrollHeight()-(scrollTop()+viewHeight())}function viewHeight(){return _$contentFrame.height()}function scrollHeight(){return _$contentFrame[0].scrollHeight}function getVisiblePageViews(){var views=[],range=getVisibleRange(-SCROLL_MARGIN_TO_SHOW_LAST_VISBLE_LINE);return forEachItemView(function(pageView){if(function(pageView,range){return rangeLength(intersectRanges(getPageViewRange(pageView),range))>0}(pageView,range))views.push(pageView);else if(views.length>0)return!1;return!0},!1),views}function getPageViewRange(pageView){var range={top:0,bottom:0},el=pageView.element(),pos=el.position();if(_jQueryPositionNeedsFix){var offsetParent=el.offsetParent();pos.top-=offsetParent.scrollTop(),pos.left-=offsetParent.scrollLeft()}return range.top=pos.top+scrollTop(),range.bottom=range.top+pageView.getCalculatedPageHeight(),range}function callOnVisiblePageView(iterator){var pageViewRange,viewPortRange=getVisibleRange(),result=void 0,normalizedRange={top:0,bottom:0},steppedToVisiblePage=!1;return forEachItemView(function(pageView){if(pageViewRange=getPageViewRange(pageView),normalizedRange.top=Math.max(pageViewRange.top,viewPortRange.top)-pageViewRange.top,normalizedRange.bottom=Math.min(pageViewRange.bottom,viewPortRange.bottom)-pageViewRange.top,rangeLength(normalizedRange)>0){if(steppedToVisiblePage=!0,result=iterator(pageView,normalizedRange))return!1}else if(steppedToVisiblePage)return!1;return!0},!1),result}function getVisibleRange(expand){0===expand||expand||(expand=0);var range={top:scrollTop()-expand,bottom:scrollTop()+viewHeight()+expand};return range.top<0&&(range.top=0),range.bottom>scrollHeight()&&(range.bottom=scrollHeight()),range}function intersectRanges(r1,r2){return{top:Math.max(r1.top,r2.top),bottom:Math.min(r1.bottom,r2.bottom)}}function rangeLength(range){return range.bottom<range.top?0:range.bottom-range.top}function isRangeIsVisibleOnScreen(range,percentVisible){var visibleRange=getVisibleRange(),smallestVisibleLength=Math.min(rangeLength(visibleRange),rangeLength(range));return 0===smallestVisibleLength&&(smallestVisibleLength=5),rangeLength(intersectRanges(visibleRange,range))/smallestVisibleLength*100>=percentVisible}function getElementRange(pageView,$element){var pageRange=getPageViewRange(pageView),elementRange={top:0,bottom:0};return elementRange.top=$element.offset().top+pageRange.top,elementRange.bottom=elementRange.top+$element.height(),elementRange}function getFirstOrLastVisibleCfi(pickerFunc){var visibleContentOffsets,frameDimensions,selectedPageView=pickerFunc(getVisiblePageViews()),pageViewTopOffset=selectedPageView?selectedPageView.element().position().top:0;visibleContentOffsets={top:Math.min(0,pageViewTopOffset),left:0};var height=Math.min(selectedPageView?selectedPageView.element().height():0,viewHeight());return pageViewTopOffset>=0&&(height-=pageViewTopOffset),frameDimensions={width:selectedPageView?selectedPageView.element().width():0,height:height},pickerFunc([selectedPageView.getFirstVisibleCfi,selectedPageView.getLastVisibleCfi])(visibleContentOffsets,frameDimensions)}function createBookmarkFromCfi(currentSpineItem,cfi){return new BookmarkData(currentSpineItem.idref,cfi)}this.setViewSettings=function(settings,docWillChange){_viewSettings=settings,forEachItemView(function(pageView){pageView.setViewSettings(settings,docWillChange)},!1)},this.applyStyles=function(){Helpers.setStyles(_userStyles.getStyles(),_$el.parent());var rectangle,elementMargins=Helpers.Margins.fromElement(_$el);rectangle=elementMargins.padding,_$contentFrame.css("left",rectangle.left),_$contentFrame.css("top",rectangle.top),_$contentFrame.css("right",rectangle.right),_$contentFrame.css("bottom",rectangle.bottom)},this.applyBookStyles=function(){forEachItemView(function(pageView){pageView.applyBookStyles()},!1)},this.openPageInternal=function(pageRequest){_stopTransientViewUpdate=!0;var doneLoadingSpineItem=function(pageView,pageRequest){_deferredPageRequest=void 0,openPageViewElement(pageView,pageRequest),_stopTransientViewUpdate=!1,updateTransientViews(pageView)};if(pageRequest.spineItem){var pageView=findPageViewForSpineItem(pageRequest.spineItem);pageView?doneLoadingSpineItem(pageView,pageRequest):(_deferredPageRequest=pageRequest,_isLoadingNewSpineItemOnPageRequest=!0,loadSpineItem(pageRequest.spineItem,function(pageView){setTimeout(function(){_isLoadingNewSpineItemOnPageRequest=!1},ON_SCROLL_TIME_DALAY+100),pageView&&_deferredPageRequest?pageView.currentSpineItem()===_deferredPageRequest.spineItem?doneLoadingSpineItem(pageView,_deferredPageRequest):self.openPage(_deferredPageRequest):onPaginationChanged(pageRequest.initiator,pageRequest.spineItem,pageRequest.elementId)}))}else doneLoadingSpineItem(void 0,pageRequest)},this.openPage=function(pageRequest){this.resetCurrentPosition(),_currentPageRequest=pageRequest,this.openPageInternal(pageRequest)},this.openPageNext=function(initiator){var pageRequest;scrollBottom()>0&&((pageRequest=new PageOpenRequest(void 0,initiator)).scrollTop=scrollTop()+Math.min(scrollBottom(),viewHeight()-SCROLL_MARGIN_TO_SHOW_LAST_VISBLE_LINE),openPageViewElement(void 0,pageRequest))},this.openPagePrev=function(initiator){var pageRequest;scrollTop()>0&&((pageRequest=new PageOpenRequest(void 0,initiator)).scrollTop=scrollTop()-(viewHeight()-SCROLL_MARGIN_TO_SHOW_LAST_VISBLE_LINE),pageRequest.scrollTop<0&&(pageRequest.scrollTop=0),openPageViewElement(void 0,pageRequest))},this.getPaginationInfo=function(){for(var spineItem,pageCount,pageView,pageViewRange,heightAboveViewport,heightBelowViewport,pageCountAbove,viewPortRange=getVisibleRange(),viewPortHeight=viewPortRange.bottom-viewPortRange.top,paginationInfo=new CurrentPagesInfo(_spine,!1),visibleViews=getVisiblePageViews(),i=0,count=visibleViews.length;i<count;i++)spineItem=(pageView=visibleViews[i]).currentSpineItem(),pageViewRange=getPageViewRange(pageView),heightAboveViewport=Math.max(viewPortRange.top-pageViewRange.top,0),heightBelowViewport=Math.max(pageViewRange.bottom-viewPortRange.bottom,0),pageCount=(pageCountAbove=Math.ceil(heightAboveViewport/viewPortHeight))+Math.ceil(heightBelowViewport/viewPortHeight)+1,paginationInfo.addOpenPage(pageCountAbove,pageCount,spineItem.idref,spineItem.index);return paginationInfo},this.bookmarkCurrentPage=function(){return self.getFirstVisibleCfi()},this.getLoadedSpineItems=function(){var spineItems=[];return forEachItemView(function(pageView){spineItems.push(pageView.currentSpineItem())},!1),spineItems},this.getElement=function(spineItemIdref,selector){var element=void 0;return forEachItemView(function(pageView){return pageView.currentSpineItem().idref!=spineItemIdref||(element=pageView.getNavigator().getElement(selector),!1)},!1),element},this.getElementById=function(spineItemIdref,id){var found=void 0;if(forEachItemView(function(pageView){return pageView.currentSpineItem().idref!=spineItemIdref||(found=pageView.getNavigator().getElementById(id),!1)},!1),found)return found;console.error("spine item is not loaded")},this.getElementByCfi=function(spineItemIdref,cfi,classBlacklist,elementBlacklist,idBlacklist){var found=void 0;if(forEachItemView(function(pageView){return pageView.currentSpineItem().idref!=spineItemIdref||(found=pageView.getNavigator().getElementByCfi(cfi,classBlacklist,elementBlacklist,idBlacklist),!1)},!1),found)return found;console.error("spine item is not loaded")},this.getFirstVisibleMediaOverlayElement=function(){return callOnVisiblePageView(function(pageView,pageRange){return pageView.getNavigator().getFirstVisibleMediaOverlayElement(pageRange)})},this.insureElementVisibility=function(spineItemId,element,initiator){var pageView=void 0;if(forEachItemView(function(pv){return pv.currentSpineItem().idref!==spineItemId||(pageView=pv,!1)},!1),pageView){var $element=$(element),elementRange=getElementRange(pageView,$element);if(!isRangeIsVisibleOnScreen(elementRange,60)){var spineItem=_spine.getItemById(spineItemId),openPageRequest=new PageOpenRequest(spineItem,initiator);openPageRequest.scrollTop=elementRange.top,self.openPage(openPageRequest)}}else console.warn("Page for element "+element+" not found")},this.getVisibleElements=function(selector,includeSpineItem){var elements=[];return forEachItemView(function(pageView){includeSpineItem?elements.push({elements:pageView.getVisibleElements(selector),spineItem:pageView.currentSpineItem()}):elements=_.flatten([elements,pageView.getVisibleElements(selector)],!0)}),elements},this.getVisibleElementsWithFilter=function(filterFunction){console.warn("getVisibleElementsWithFilter: Not implemented yet for scroll_view")},this.isElementVisible=function($element){console.warn("isElementVisible: Not implemented yet for scroll_view")},this.getElements=function(spineItemIdref,selector){var pageView=findPageViewForSpineItem(spineItemIdref);if(pageView)return pageView.getElements(spineItemIdref,selector)},this.isNodeFromRangeCfiVisible=function(spineIdref,partialCfi){var pageView=findPageViewForSpineItem(spineIdRef);if(pageView)return pageView.isNodeFromRangeCfiVisible(spineIdRef,partialCfi)},this.isVisibleSpineItemElementCfi=function(spineIdRef,partialCfi){var pageView=findPageViewForSpineItem(spineIdRef);if(pageView)return pageView.isVisibleSpineItemElementCfi(spineIdRef,partialCfi)},this.getNodeRangeInfoFromCfi=function(spineIdRef,partialCfi){var pageView=findPageViewForSpineItem(spineIdRef);if(pageView)return pageView.isVisibleSpineItemElementCfi(spineIdRef,partialCfi)},this.getFirstVisibleCfi=function(){return getFirstOrLastVisibleCfi(_.first)},this.getLastVisibleCfi=function(){return getFirstOrLastVisibleCfi(_.last)},this.getDomRangeFromRangeCfi=function(rangeCfi,rangeCfi2,inclusive){if(!rangeCfi2||rangeCfi.idref===rangeCfi2.idref)return rangeCfi=rangeCfi||{},rangeCfi2=rangeCfi2||{},callOnVisiblePageView(function(pageView){if(pageView.currentSpineItem().idref===rangeCfi.idref)return pageView.getDomRangeFromRangeCfi(rangeCfi.contentCFI,rangeCfi2.contentCFI,inclusive)});console.error("getDomRangeFromRangeCfi: both CFIs must be scoped under the same spineitem idref")},this.getRangeCfiFromDomRange=function(domRange){return callOnVisiblePageView(function(pageView){return pageView.getRangeCfiFromDomRange(domRange)})},this.getVisibleCfiFromPoint=function(x,y,precisePoint){return callOnVisiblePageView(function(pageView){return createBookmarkFromCfi(pageView.currentSpineItem(),pageView.getVisibleCfiFromPoint(x,y,precisePoint))})},this.getRangeCfiFromPoints=function(startX,startY,endX,endY){return callOnVisiblePageView(function(pageView){return createBookmarkFromCfi(pageView.currentSpineItem(),pageView.getRangeCfiFromPoints(startX,startY,endX,endY))})},this.getCfiForElement=function(element){return callOnVisiblePageView(function(pageView){return createBookmarkFromCfi(pageView.currentSpineItem(),pageView.getCfiForElement(element).contentCFI)})},this.getElementFromPoint=function(x,y){return callOnVisiblePageView(function(pageView){return pageView.getElementFromPoint(x,y)})},this.getStartCfi=function(){return callOnVisiblePageView(function(pageView){return pageView.getStartCfi()})},this.getEndCfi=function(){return callOnVisiblePageView(function(pageView){return pageView.getEndCfi()})},this.getNearestCfiFromElement=function(element){return callOnVisiblePageView(function(pageView){return pageView.getNearestCfiFromElement(element)})}}}),define("readium_shared_js/views/media_overlay_player",["../globals","jquery","../helpers","./audio_player","./media_overlay_element_highlighter","../models/smil_iterator","readium_cfi_js","./scroll_view"],function(Globals,$,Helpers,AudioPlayer,MediaOverlayElementHighlighter,SmilIterator,EPUBcfi,ScrollView){return function(reader,onStatusChanged){var _smilIterator=void 0,_audioPlayer=new AudioPlayer(onStatusChanged,onAudioPositionChanged,function(){onPause(),_skipAudioEnded?_skipAudioEnded=!1:_smilIterator&&_smilIterator.currentPar?onAudioPositionChanged(_smilIterator.currentPar.audio.clipEnd+.1,5):self.reset()},function(){onPause();var func=function(){if(_smilIterator&&_smilIterator.currentPar){var smil=_smilIterator.smil;if(smil.mo){var playPosition=audioCurrentTime-_smilIterator.currentPar.audio.clipBegin;if(!(playPosition<=0)){for(var smilIndex=smil.mo.smil_models.indexOf(smil),smilIterator=new SmilIterator(smil),parIndex=-1;smilIterator.currentPar&&(parIndex++,smilIterator.currentPar!=_smilIterator.currentPar);)smilIterator.next();onStatusChanged({playPosition:playPosition,smilIndex:smilIndex,parIndex:parIndex})}}}};setTimeout(func,500),_timerTick=setInterval(func,1500)},onPause),_ttsIsPlaying=!1,_currentTTS=void 0,_enableHTMLSpeech=void 0!==window.speechSynthesis&&null!=speechSynthesis,_SpeechSynthesisUtterance=void 0,TOKENIZE_TTS=!1,_embeddedIsPlaying=!1,_currentEmbedded=void 0;this.isPlaying=function(){return _audioPlayer.isPlaying()||_ttsIsPlaying||_embeddedIsPlaying||_blankPagePlayer};var _package=reader.package(),_settings=reader.viewerSettings(),self=this,_elementHighlighter=new MediaOverlayElementHighlighter(reader);reader.on(Globals.Events.READER_VIEW_DESTROYED,function(){Globals.logEvent("READER_VIEW_DESTROYED","ON","media_overlay_player.js"),self.reset()}),this.applyStyles=function(){_elementHighlighter.reDo()},this.onSettingsApplied=function(){_audioPlayer.setRate(_settings.mediaOverlaysRate),_audioPlayer.setVolume(_settings.mediaOverlaysVolume/100)},self.onSettingsApplied(),reader.on(Globals.Events.SETTINGS_APPLIED,function(){Globals.logEvent("SETTINGS_APPLIED","ON","media_overlay_player.js"),this.onSettingsApplied()},this);var _wasPlayingAtDocLoadStart=!1;this.onDocLoadStart=function(){self.isPlaying()&&(_wasPlayingAtDocLoadStart=!0,self.pause())};var _lastPaginationData=void 0;function playPar(par){var parSmil=par.getSmil();_smilIterator&&_smilIterator.smil==parSmil?_smilIterator.reset():_smilIterator=new SmilIterator(parSmil),_smilIterator.goToPar(par),_smilIterator.currentPar?playCurrentPar():console.error("playPar !_smilIterator.currentPar")}this.onPageChanged=function(paginationData){_lastPaginationData=paginationData;var wasPausedBecauseNoAutoNextSmil=_wasPausedBecauseNoAutoNextSmil;_wasPausedBecauseNoAutoNextSmil=!1;var wasPlayingAtDocLoadStart=_wasPlayingAtDocLoadStart;if(_wasPlayingAtDocLoadStart=!1,paginationData){var element=void 0;if(paginationData.elementId||paginationData.initiator==self){for(var spineItems=reader.getLoadedSpineItems(),rtl=reader.spine().isRightToLeft(),i=rtl?spineItems.length-1:0;rtl&&i>=0||!rtl&&i<spineItems.length;i+=rtl?-1:1){var spineItem=spineItems[i];if(!paginationData.spineItem||paginationData.spineItem==spineItem){if(paginationData.elementId&&0===paginationData.elementId.indexOf("epubcfi")){_elementHighlighter.reset();var partial=paginationData.elementId.substr("epubcfi".length+1,paginationData.elementId.length-"epubcfi".length-2);0===partial.indexOf("/99!")&&(partial=partial.substr("/99!".length,partial.length-"/99!".length));var parts=partial.split(",");if(parts&&3===parts.length)try{var cfi=parts[0]+parts[1];if(element=($element=reader.getElementByCfi(spineItem.idref,cfi,["cfi-marker","mo-cfi-highlight"],[],["MathJax_Message"]))&&$element.length>0?$element[0]:void 0){element.nodeType===Node.TEXT_NODE&&(element=element.parentNode);break}}catch(error){console.error(error)}else try{if(element=($element=reader.getElementByCfi(spineItem.idref,partial,["cfi-marker","mo-cfi-highlight"],[],["MathJax_Message"]))&&$element.length>0?$element[0]:void 0){element.nodeType===Node.TEXT_NODE&&(element=element.parentNode);break}}catch(error){console.error(error)}}var $element;if(!element)if(element=paginationData.initiator!=self||paginationData.elementId?($element=reader.getElementById(spineItem.idref,paginationData.elementId))&&$element.length>0?$element[0]:void 0:($element=reader.getElement(spineItem.idref,"body"))&&$element.length>0?$element[0]:void 0)break}}element||console.error("paginationData.elementId BUT !element: "+paginationData.elementId)}var wasPlaying=self.isPlaying()||wasPlayingAtDocLoadStart;if(_smilIterator&&_smilIterator.currentPar){var noReverseData=!_smilIterator.currentPar.element&&!_smilIterator.currentPar.cfi;if(noReverseData&&console.error("!! _smilIterator.currentPar.element ??"),paginationData.initiator==self){var notSameTargetID=paginationData.elementId&&paginationData.elementId!==_smilIterator.currentPar.text.srcFragmentId;if(notSameTargetID&&console.error("!! paginationData.elementId !== _smilIterator.currentPar.text.srcFragmentId"),notSameTargetID||noReverseData)return void(clipBeginOffset=0);wasPlaying?highlightCurrentElement():playCurrentPar()}else{if(!wasPlaying&&!wasPausedBecauseNoAutoNextSmil)return void self.reset();if(paginationData.elementId,paginationData.elementId&&!element)return;paginationData.elementId&&(paginationData.elementIdResolved=element),self.toggleMediaOverlayRefresh(paginationData)}}else{if(paginationData.initiator!==self)return clipBeginOffset=0,self.reset(),void(paginationData.elementId&&element?(wasPlaying||wasPausedBecauseNoAutoNextSmil)&&(paginationData.elementIdResolved=element,self.toggleMediaOverlayRefresh(paginationData)):(wasPlaying||wasPausedBecauseNoAutoNextSmil)&&self.toggleMediaOverlay());if(!element)return console.error("!element: "+paginationData.elementId),void(clipBeginOffset=0);var moData=$(element).data("mediaOverlayData");if(!moData)return console.error("!moData: "+paginationData.elementId),void(clipBeginOffset=0);var parToPlay=moData.par?moData.par:moData.pars[0];if(moData.pars)for(var iPar=0;iPar<moData.pars.length;iPar++){var p=moData.pars[iPar];if(paginationData.elementId===p.cfi.smilTextSrcCfi){parToPlay=p;break}}playPar(parToPlay)}}else self.reset()};var clipBeginOffset=0,_blankPagePlayer=void 0;function initBlankPagePlayer(){self.resetBlankPage(),_blankPagePlayer=setTimeout(function(){_blankPagePlayer&&(self.resetBlankPage(),_smilIterator&&_smilIterator.currentPar?(audioCurrentTime=0,onAudioPositionChanged(_smilIterator.currentPar.audio.clipEnd+.1,2)):self.reset())},2e3),onStatusChanged({isPlaying:!0})}function playCurrentPar(){if(_wasPlayingScrolling=!1,_smilIterator&&_smilIterator.currentPar){if(!_smilIterator.smil.id)return _audioPlayer.reset(),self.resetTTS(),self.resetEmbedded(),void setTimeout(function(){initBlankPagePlayer()},100);if(_smilIterator.currentPar.audio.src){self.resetTTS(),self.resetEmbedded(),self.resetBlankPage();var dur=_smilIterator.currentPar.audio.clipEnd-_smilIterator.currentPar.audio.clipBegin;(dur<=0||clipBeginOffset>dur)&&(console.error("### MO XXX PAR OFFSET: "+clipBeginOffset+" / "+dur),clipBeginOffset=0);var audioContentRef=Helpers.ResolveContentRef(_smilIterator.currentPar.audio.src,_smilIterator.smil.href),audioSource=_package.resolveRelativeUrlMO(audioContentRef),startTime=_smilIterator.currentPar.audio.clipBegin+clipBeginOffset;_audioPlayer.playFile(_smilIterator.currentPar.audio.src,audioSource,startTime)}else{clipBeginOffset=0,_audioPlayer.reset();var element=_smilIterator.currentPar.element;if(element){audioCurrentTime=0;var name=element.nodeName?element.nodeName.toLowerCase():void 0;"audio"===name||"video"===name?(self.resetTTS(),self.resetBlankPage(),_currentEmbedded&&self.resetEmbedded(),(_currentEmbedded=element).pause(),_currentEmbedded.currentTime=0,_currentEmbedded.play(),$(_currentEmbedded).on("ended",self.onEmbeddedEnd),_embeddedIsPlaying=!0,setTimeout(function(){onStatusChanged({isPlaying:!0})},80)):(self.resetEmbedded(),self.resetBlankPage(),(_currentTTS=element.textContent)&&""!=_currentTTS?speakStart(_currentTTS):_currentTTS=void 0)}var cfi=_smilIterator.currentPar.cfi;if(cfi){audioCurrentTime=0,self.resetEmbedded(),self.resetBlankPage(),_elementHighlighter.reset();var doc=cfi.cfiTextParent.ownerDocument,startCFI="epubcfi("+cfi.partialStartCfi+")",endCFI=(EPUBcfi.getTextTerminusInfoWithPartialCFI(startCFI,doc,["cfi-marker","mo-cfi-highlight"],[],["MathJax_Message"]),"epubcfi("+cfi.partialEndCfi+")");EPUBcfi.getTextTerminusInfoWithPartialCFI(endCFI,doc,["cfi-marker","mo-cfi-highlight"],[],["MathJax_Message"]),(_currentTTS=void 0)&&""!=_currentTTS?speakStart(_currentTTS):_currentTTS=void 0}}clipBeginOffset=0,highlightCurrentElement()}else console.error("playCurrentPar !_smilIterator || !_smilIterator.currentPar ???")}function nextSmil(goNext){self.pause();var nextSmil=goNext?_package.media_overlay.getNextSmil(_smilIterator.smil):_package.media_overlay.getPreviousSmil(_smilIterator.smil);if(nextSmil){if((_smilIterator=new SmilIterator(nextSmil)).currentPar){if(!goNext)for(;!_smilIterator.isLast();)_smilIterator.next();reader.openContentUrl(_smilIterator.currentPar.text.src,_smilIterator.smil.href,self)}}else console.log("No more SMIL"),self.reset()}var _skipAudioEnded=!1,audioCurrentTime=0,DIRECTION_MARK=-999;function onAudioPositionChanged(position,from,skipping){if(audioCurrentTime=position,_skipAudioEnded=!1,_smilIterator&&_smilIterator.currentPar){var parFrom=_smilIterator.currentPar,audio=_smilIterator.currentPar.audio;if(!(position>DIRECTION_MARK&&position<=audio.clipEnd)){_skipAudioEnded=!0;var isPlaying=_audioPlayer.isPlaying();isPlaying&&6===from&&console.debug("from userNav _audioPlayer.isPlaying() ???");var goNext=position>audio.clipEnd,doNotNextSmil=!_autoNextSmil&&6!==from&&goNext,spineItemIdRef=_smilIterator&&_smilIterator.smil&&_smilIterator.smil.spineItemId?_smilIterator.smil.spineItemId:_lastPaginationData&&_lastPaginationData.spineItem&&_lastPaginationData.spineItem.idref?_lastPaginationData.spineItem.idref:void 0;if(doNotNextSmil&&spineItemIdRef&&_lastPaginationData&&_lastPaginationData.paginationInfo&&_lastPaginationData.paginationInfo.openPages&&_lastPaginationData.paginationInfo.openPages.length>1&&spineItemIdRef===_lastPaginationData.paginationInfo.openPages[0].idref&&(doNotNextSmil=!1),goNext?_smilIterator.next():_smilIterator.previous(),_smilIterator.currentPar)if(_smilIterator.currentPar.audio){if(_settings.mediaOverlaysSkipSkippables){for(var skip=!1,parent=_smilIterator.currentPar;parent;){if(parent.isSkippable&&parent.isSkippable(_settings.mediaOverlaysSkippables)){skip=!0;break}parent=parent.parent}if(skip)return console.log("MO SKIP: "+parent.epubtype),self.pause(),void onAudioPositionChanged(goNext?_smilIterator.currentPar.audio.clipEnd+.1:DIRECTION_MARK-1,from)}if(!isPlaying&&(_smilIterator.currentPar.element||_smilIterator.currentPar.cfi&&_smilIterator.currentPar.cfi.cfiTextParent)){var scopeTo=_elementHighlighter.adjustParToSeqSyncGranularity(_smilIterator.currentPar);if(scopeTo&&scopeTo!==_smilIterator.currentPar){var scopeFrom=_elementHighlighter.adjustParToSeqSyncGranularity(parFrom);if(scopeFrom&&(scopeFrom===scopeTo||!goNext)){if(scopeFrom===scopeTo){do{goNext?_smilIterator.next():_smilIterator.previous()}while(_smilIterator.currentPar&&_smilIterator.currentPar.hasAncestor(scopeFrom));if(!_smilIterator.currentPar)return void(doNotNextSmil?(_wasPausedBecauseNoAutoNextSmil=!0,self.reset()):nextSmil(goNext))}if(!goNext){var landed=_elementHighlighter.adjustParToSeqSyncGranularity(_smilIterator.currentPar);if(landed&&landed!==_smilIterator.currentPar){var backup=_smilIterator.currentPar,innerPar=void 0;do{innerPar=_smilIterator.currentPar,_smilIterator.previous()}while(_smilIterator.currentPar&&_smilIterator.currentPar.hasAncestor(landed));_smilIterator.currentPar?(_smilIterator.next(),_smilIterator.currentPar.hasAncestor(landed)||console.error("adjustParToSeqSyncGranularity !_smilIterator.currentPar.hasAncestor(landed) ???")):(_smilIterator.reset(),_smilIterator.currentPar!==innerPar&&console.error("adjustParToSeqSyncGranularity _smilIterator.currentPar !=== innerPar???")),_smilIterator.currentPar||(console.error("adjustParToSeqSyncGranularity !_smilIterator.currentPar ?????"),_smilIterator.goToPar(backup))}}}}}_audioPlayer.isPlaying()&&_smilIterator.currentPar.audio.src&&_smilIterator.currentPar.audio.src==_audioPlayer.currentSmilSrc()&&position>=_smilIterator.currentPar.audio.clipBegin&&position<=_smilIterator.currentPar.audio.clipEnd?highlightCurrentElement():playCurrentPar()}else self.pause();else doNotNextSmil?(_wasPausedBecauseNoAutoNextSmil=!0,self.reset()):nextSmil(goNext)}}}this.touchInit=function(){return _audioPlayer.touchInit()};var $ttsStyle=void 0;var speakStart=function(txt,volume){var $element,tokenData=void 0,curPar=_smilIterator&&_smilIterator.currentPar?_smilIterator.currentPar:void 0,element=curPar?curPar.element:void 0;if(curPar&&curPar.cfi,(!volume||volume>0)&&(setTimeout(function(){onStatusChanged({isPlaying:!0})},80),_ttsIsPlaying=!0,TOKENIZE_TTS&&element)){var $el=$(element);$element=$el,$ttsStyle&&$ttsStyle[0].ownerDocument===$element[0].ownerDocument||($head=$("head",$element[0].ownerDocument.documentElement),($ttsStyle=$("<style type='text/css'> </style>").appendTo($head)).append(".tts_on{background-color:red;color:white;} .tts_off{}")),element.innerHTML_original&&(element.innerHTML=element.innerHTML_original,element.innerHTML_original=void 0),tokenData=function(element){var BLOCK_DELIMITERS=["p","div","pagenum","td","table","li","ul","ol"],BOUNDARY_PUNCTUATION=[",",";",".","-","??","??","?","!"],flush=function(t,r){if(!(t.word.length<=0)){var pos=t.text.length;r.spanMap[pos]=t.counter,t.text+=t.word,t.markup+=t.html.substring(0,t.wordStart)+'<span class="tts_off" id="tts_'+t.counter+'">'+t.html.substring(t.wordStart,t.wordEnd)+"</span>"+t.html.substring(t.wordEnd,t.html.length),t.word="",t.html="",t.wordStart=-1,t.wordEnd=-1,t.counter++}},r={element:element,innerHTML_tts:"",spanMap:{},text:"",lastCharIndex:void 0};r.element.innerHTML_original=element.innerHTML;for(var t={inTag:!1,counter:0,wordStart:-1,wordEnd:-1,text:"",markup:"",word:"",html:""},limit=r.element.innerHTML_original.length,i=0;i<=limit;){if(t.inTag){if(t.html+=r.element.innerHTML_original[i],">"==r.element.innerHTML_original[i]){t.inTag=!1;var blockCheck=t.html.match(/<\/(.*?)>$/);blockCheck&&BLOCK_DELIMITERS.indexOf(blockCheck[1])>-1&&(flush(t,r),t.text+=" ")}}else i==limit||r.element.innerHTML_original[i].match(/\s/)?(flush(t,r),i<limit&&(t.text+=r.element.innerHTML_original[i],t.markup+=r.element.innerHTML_original[i])):BOUNDARY_PUNCTUATION.indexOf(r.element.innerHTML_original[i])>-1?(flush(t,r),t.wordStart=t.html.length,t.wordEnd=t.html.length+1,t.word+=r.element.innerHTML_original[i],t.html+=r.element.innerHTML_original[i],flush(t,r)):"<"==r.element.innerHTML_original[i]?(t.inTag=!0,t.html+=r.element.innerHTML_original[i]):(0==t.word.length&&(t.wordStart=t.html.length),t.wordEnd=t.html.length+1,t.word+=r.element.innerHTML_original[i],t.html+=r.element.innerHTML_original[i]);i++}return r.text=t.text,r.innerHTML_tts=t.markup,r.element.innerHTML=r.innerHTML_tts,r}(element)}if(!_enableHTMLSpeech)return Globals.logEvent("MEDIA_OVERLAY_TTS_SPEAK","EMIT","media_overlay_player.js"),void reader.emit(Globals.Events.MEDIA_OVERLAY_TTS_SPEAK,{tts:txt});if(txt||!window.speechSynthesis.paused){var text=txt||_currentTTS;text&&(_SpeechSynthesisUtterance&&(TOKENIZE_TTS&&(_SpeechSynthesisUtterance.onend&&_SpeechSynthesisUtterance.onend({forceSkipEnd:!0,target:_SpeechSynthesisUtterance}),_SpeechSynthesisUtterance.tokenData=void 0,_SpeechSynthesisUtterance.onboundary=void 0),_SpeechSynthesisUtterance.onend=void 0,_SpeechSynthesisUtterance.onerror=void 0,_SpeechSynthesisUtterance=void 0),console.debug("paused: "+window.speechSynthesis.paused),console.debug("speaking: "+window.speechSynthesis.speaking),console.debug("pending: "+window.speechSynthesis.pending),function cancelTTS(first){first||window.speechSynthesis.pending?(console.debug("TTS cancel before speak"),window.speechSynthesis.cancel(),setTimeout(function(){cancelTTS(!1)},5)):function(){_SpeechSynthesisUtterance=new SpeechSynthesisUtterance,TOKENIZE_TTS&&tokenData&&(_SpeechSynthesisUtterance.tokenData=tokenData,_SpeechSynthesisUtterance.onboundary=function(event){if(_SpeechSynthesisUtterance){console.debug("TTS boundary: "+event.name+" / "+event.charIndex);var tokenised=event.target.tokenData;if(tokenised&&tokenised.spanMap.hasOwnProperty(event.charIndex)){[].forEach.call(tokenised.element.querySelectorAll(".tts_on"),function(el){console.debug("TTS OFF "+el.id),el.className="tts_off"});var id="tts_"+tokenised.spanMap[event.charIndex];console.debug("TTS charIndex ID: "+id);var spanNew=tokenised.element.querySelector("#"+id);spanNew&&(console.debug("TTS ON"),spanNew.className="tts_on"),tokenised.lastCharIndex=event.charIndex}}}),_SpeechSynthesisUtterance.onend=function(event){if(_SpeechSynthesisUtterance)if(console.debug("TTS ended"),TOKENIZE_TTS){var tokenised=event.target.tokenData,doEnd=!event.forceSkipEnd&&_SpeechSynthesisUtterance===event.target&&(!tokenised||tokenised.element.innerHTML_original);tokenised&&(tokenised.element.innerHTML_original?tokenised.element.innerHTML=tokenised.element.innerHTML_original:[].forEach.call(tokenised.element.querySelectorAll(".tts_on"),function(el){console.debug("TTS OFF (end)"+el.id),el.className="tts_off"}),tokenised.element.innerHTML_original=void 0),doEnd?self.onTTSEnd():console.debug("TTS end SKIPPED")}else self.onTTSEnd()},_SpeechSynthesisUtterance.onerror=function(event){if(_SpeechSynthesisUtterance&&(console.error("TTS error"),console.debug(_SpeechSynthesisUtterance.text),console.debug(window.speechSynthesis.paused),console.debug(window.speechSynthesis.pending),console.debug(window.speechSynthesis.speaking),TOKENIZE_TTS)){var tokenised=event.target.tokenData;tokenised&&(tokenised.element.innerHTML_original?tokenised.element.innerHTML=tokenised.element.innerHTML_original:[].forEach.call(tokenised.element.ownerDocument.querySelectorAll(".tts_on"),function(el){console.debug("TTS OFF (error)"+el.id),el.className="tts_off"}),tokenised.element.innerHTML_original=void 0)}};var vol=volume||_audioPlayer.getVolume();_SpeechSynthesisUtterance.volume=vol,_SpeechSynthesisUtterance.rate=_audioPlayer.getRate(),_SpeechSynthesisUtterance.pitch=1,_SpeechSynthesisUtterance.text=text,window.speechSynthesis.speak(_SpeechSynthesisUtterance),window.speechSynthesis.paused&&(console.debug("TTS resume"),window.speechSynthesis.resume())}()}(!0))}else window.speechSynthesis.resume()},speakStop=function(){var wasPlaying=_ttsIsPlaying;wasPlaying&&onStatusChanged({isPlaying:!1}),_ttsIsPlaying=!1,_enableHTMLSpeech?window.speechSynthesis.pause():wasPlaying&&(Globals.logEvent("MEDIA_OVERLAY_TTS_STOP","EMIT","media_overlay_player.js"),reader.emit(Globals.Events.MEDIA_OVERLAY_TTS_STOP,void 0))},_timerTick=void 0;function onPause(){audioCurrentTime=0,void 0!==_timerTick&&clearInterval(_timerTick),_timerTick=void 0}function highlightCurrentElement(){if(_smilIterator&&_smilIterator.currentPar){if(_smilIterator.currentPar.text.srcFragmentId&&_smilIterator.currentPar.text.srcFragmentId.length>0){if(_smilIterator.currentPar.element)return void(_elementHighlighter.isElementHighlighted(_smilIterator.currentPar)||(_elementHighlighter.highlightElement(_smilIterator.currentPar,_package.media_overlay.activeClass,_package.media_overlay.playbackActiveClass),_wasPlayingScrolling||reader.insureElementVisibility(_smilIterator.currentPar.getSmil().spineItemId,_smilIterator.currentPar.element,self)));if(_smilIterator.currentPar.cfi)return void(_elementHighlighter.isCfiHighlighted(_smilIterator.currentPar)||(_elementHighlighter.highlightCfi(_smilIterator.currentPar,_package.media_overlay.activeClass,_package.media_overlay.playbackActiveClass),_wasPlayingScrolling||reader.insureElementVisibility(_smilIterator.currentPar.getSmil().spineItemId,_smilIterator.currentPar.cfi.cfiTextParent,self)))}if(!_smilIterator.currentPar.element){var src=_smilIterator.currentPar.text.src,base=_smilIterator.smil.href;_smilIterator=void 0,reader.openContentUrl(src,base,self)}}}this.onEmbeddedEnd=function(){audioCurrentTime=0,_embeddedIsPlaying=!1,_smilIterator&&_smilIterator.currentPar?onAudioPositionChanged(_smilIterator.currentPar.audio.clipEnd+.1,3):self.reset()},this.onTTSEnd=function(){audioCurrentTime=0,_ttsIsPlaying=!1,_smilIterator&&_smilIterator.currentPar?onAudioPositionChanged(_smilIterator.currentPar.audio.clipEnd+.1,4):self.reset()},this.escape=function(){if(_smilIterator&&_smilIterator.currentPar)if(self.isPlaying()){if(_settings.mediaOverlaysEscapeEscapables)for(var parent=_smilIterator.currentPar;parent;){if(parent.isEscapable&&parent.isEscapable(_settings.mediaOverlaysEscapables)){do{_smilIterator.next()}while(_smilIterator.currentPar&&_smilIterator.currentPar.hasAncestor(parent));return _smilIterator.currentPar?void playCurrentPar():void nextSmil(!0)}parent=parent.parent}this.nextMediaOverlay(!0)}else self.play();else this.toggleMediaOverlay()},this.playUserPar=function(par){if(self.isPlaying()&&self.pause(),par.element||par.cfi&&par.cfi.cfiTextParent){var seq=_elementHighlighter.adjustParToSeqSyncGranularity(par);if(seq&&seq!==par){var findFirstPar=function(smilNode){if(smilNode.nodeType&&"par"===smilNode.nodeType)return smilNode;if(smilNode.children&&!(smilNode.children.length<=0))for(var i=0;i<smilNode.children.length;i++){var child=smilNode.children[i],inPar=findFirstPar(child);if(inPar)return inPar}},firstPar=findFirstPar(seq);firstPar&&(par=firstPar)}}playPar(par)},this.resetTTS=function(){_currentTTS=void 0,speakStop()},this.resetBlankPage=function(){var wasPlaying=!1;if(_blankPagePlayer){wasPlaying=!0;var timer=_blankPagePlayer;_blankPagePlayer=void 0,clearTimeout(timer)}_blankPagePlayer=void 0,wasPlaying&&onStatusChanged({isPlaying:!1})},this.resetEmbedded=function(){var wasPlaying=_embeddedIsPlaying;_currentEmbedded&&($(_currentEmbedded).off("ended",self.onEmbeddedEnd),_currentEmbedded.pause()),_currentEmbedded=void 0,wasPlaying&&onStatusChanged({isPlaying:!1}),_embeddedIsPlaying=!1},this.reset=function(){clipBeginOffset=0,_audioPlayer.reset(),self.resetTTS(),self.resetEmbedded(),self.resetBlankPage(),_elementHighlighter.reset(),_smilIterator=void 0,_skipAudioEnded=!1},this.play=function(){if(_smilIterator&&_smilIterator.smil&&!_smilIterator.smil.id)initBlankPagePlayer();else{if(_currentEmbedded)_embeddedIsPlaying=!0,_currentEmbedded.play(),onStatusChanged({isPlaying:!0});else if(_currentTTS)speakStart(void 0);else if(!_audioPlayer.play())return console.log("Audio player was dead, reactivating..."),this.reset(),void this.toggleMediaOverlay();highlightCurrentElement()}},this.pause=function(){_wasPlayingScrolling=!1,_blankPagePlayer?this.resetBlankPage():_embeddedIsPlaying?(_embeddedIsPlaying=!1,_currentEmbedded&&_currentEmbedded.pause(),onStatusChanged({isPlaying:!1})):_ttsIsPlaying?speakStop():_audioPlayer.pause(),_elementHighlighter.reset()},this.isMediaOverlayAvailable=function(){return void 0!==reader.getFirstVisibleMediaOverlayElement()},this.nextOrPreviousMediaOverlay=function(previous){if(self.isPlaying())self.pause();else if(_smilIterator&&_smilIterator.currentPar)return void self.play();_smilIterator?onAudioPositionChanged(previous?DIRECTION_MARK-1:_smilIterator.currentPar.audio.clipEnd+.1,6):this.toggleMediaOverlay()},this.nextMediaOverlay=function(){this.nextOrPreviousMediaOverlay(!1)},this.previousMediaOverlay=function(){this.nextOrPreviousMediaOverlay(!0)},this.mediaOverlaysOpenContentUrl=function(contentRefUrl,sourceFileHref,offset){clipBeginOffset=offset,_smilIterator=void 0,reader.openContentUrl(contentRefUrl,sourceFileHref,self)},this.toggleMediaOverlay=function(){self.isPlaying()?self.pause():_smilIterator?self.play():this.toggleMediaOverlayRefresh(void 0)};var _wasPlayingScrolling=!1;this.toggleMediaOverlayRefresh=function(paginationData){var spineItems=reader.getLoadedSpineItems(),rtl=reader.spine().isRightToLeft(),playingPar=void 0,wasPlaying=self.isPlaying();if(wasPlaying&&_smilIterator){if(paginationData.initiator&&paginationData.initiator instanceof ScrollView&&_settings.mediaOverlaysPreservePlaybackWhenScroll)return void(_wasPlayingScrolling=!0);playingPar=_smilIterator.currentPar,self.pause()}_wasPlayingScrolling=!1;var element=paginationData&&paginationData.elementIdResolved?paginationData.elementIdResolved:void 0,id=paginationData&&paginationData.elementId?paginationData.elementId:void 0;if(!element){id&&console.error("[WARN] id did not resolve to element?");for(var i=rtl?spineItems.length-1:0;rtl&&i>=0||!rtl&&i<spineItems.length;i+=rtl?-1:1){var spineItem=spineItems[i];if(spineItem){if(!paginationData||!paginationData.spineItem||paginationData.spineItem==spineItem){if(id){var $element=reader.getElementById(spineItem.idref,id);element=$element&&$element.length>0?$element[0]:void 0}else spineItem.isFixedLayout()&&paginationData&&paginationData.paginationInfo&&paginationData.paginationInfo.openPages&&paginationData.paginationInfo.openPages[0]&&paginationData.paginationInfo.openPages[0].idref&&paginationData.paginationInfo.openPages[0].idref===spineItem.idref&&($element=reader.getElement(spineItem.idref,"body"),element=$element&&$element.length>0?$element[0]:void 0);if(element)break}}else console.error("spineItems[i] is undefined??")}}if(element||(element=reader.getFirstVisibleMediaOverlayElement()),element){var moData=$(element).data("mediaOverlayData");if(!moData){for(var foundMe=!1,depthFirstTraversal=function(elements){if(!elements)return!1;for(var i=0;i<elements.length;i++){if(element===elements[i]&&(foundMe=!0),foundMe){var d=$(elements[i]).data("mediaOverlayData");if(d)return moData=d,!0}if(depthFirstTraversal(elements[i].children))return!0}return!1},root=element;root&&"body"!==root.nodeName.toLowerCase();)root=root.parentNode;if(!root)return void self.reset();depthFirstTraversal([root])}if(moData){var zPar=moData.par?moData.par:moData.pars[0],parSmil=zPar.getSmil();_smilIterator&&_smilIterator.smil==parSmil?_smilIterator.reset():_smilIterator=new SmilIterator(parSmil),_smilIterator.goToPar(zPar),!_smilIterator.currentPar&&id&&(_smilIterator.reset(),_smilIterator.findTextId(id)),_smilIterator.currentPar?wasPlaying&&playingPar&&playingPar===_smilIterator.currentPar?self.play():playCurrentPar():self.reset()}else self.reset()}else self.reset()},this.isPlayingCfi=function(){return _smilIterator&&_smilIterator.currentPar&&_smilIterator.currentPar.cfi};var _wasPausedBecauseNoAutoNextSmil=!1,_autoNextSmil=!0;this.setAutomaticNextSmil=function(autoNext){_autoNextSmil=autoNext}}}),define("readium_shared_js/models/spine",["./spine_item","../helpers","URIjs"],function(SpineItem,Helpers,URI){return function(epubPackage,spineDTO){var self=this;this.items=[],this.direction="ltr",this.package=epubPackage;var _handleLinear=!1;function isValidLinearItem(item){return!_handleLinear||"no"!==item.linear}function isValidIndex(index){return index>=0&&index<self.items.length}function lookForPrevValidItem(ix){if(isValidIndex(ix)){var item=self.items[ix];return isValidLinearItem(item)?item:lookForPrevValidItem(item.index-1)}}function lookForNextValidItem(ix){if(isValidIndex(ix)){var item=self.items[ix];return isValidLinearItem(item)?item:lookForNextValidItem(item.index+1)}}if(this.handleLinear=function(handleLinear){_handleLinear=handleLinear},this.isValidLinearItem=function(index){if(isValidIndex(index))return isValidLinearItem(this.item(index))},this.isRightToLeft=function(){return"rtl"==self.direction},this.isLeftToRight=function(){return!self.isRightToLeft()},this.prevItem=function(item){return lookForPrevValidItem(item.index-1)},this.nextItem=function(item){return lookForNextValidItem(item.index+1)},this.getItemUrl=function(item){return self.package.resolveRelativeUrl(item.href)},this.first=function(){return lookForNextValidItem(0)},this.last=function(){return lookForPrevValidItem(this.items.length-1)},this.isFirstItem=function(item){return self.first()===item},this.isLastItem=function(item){return self.last()===item},this.item=function(index){if(isValidIndex(index))return self.items[index]},this.getItemById=function(idref){for(var length=self.items.length,i=0;i<length;i++)if(self.items[i].idref==idref)return self.items[i]},this.getItemByHref=function(href){var href1_=self.package.resolveRelativeUrl(href);href1_=href1_.replace("filesystem:chrome-extension://","filesystem-chrome-extension://");for(var href1=new URI(href1_).normalizePathname().pathname(),length=self.items.length,i=0;i<length;i++){var href2_=self.package.resolveRelativeUrl(self.items[i].href);if(href2_=href2_.replace("filesystem:chrome-extension://","filesystem-chrome-extension://"),href1==new URI(href2_).normalizePathname().pathname())return self.items[i]}},spineDTO){spineDTO.direction&&(this.direction=spineDTO.direction);for(var length=spineDTO.items.length,i=0;i<length;i++){var item=new SpineItem(spineDTO.items[i],i,this);this.items.push(item)}!function(){for(var len=self.items.length,isFirstPageInSpread=!1,baseSide=self.isLeftToRight()?SpineItem.SPREAD_LEFT:SpineItem.SPREAD_RIGHT,i=0;i<len;i++){var spineItem=self.items[i];if(!spineItem.page_spread){var spread=spineItem.isRenditionSpreadAllowed()?isFirstPageInSpread?baseSide:SpineItem.alternateSpread(baseSide):SpineItem.SPREAD_CENTER;spineItem.setSpread(spread)}isFirstPageInSpread=!spineItem.isRenditionSpreadAllowed()||spineItem.page_spread!=baseSide}}()}}}),define("readium_shared_js/models/smil_model",["../helpers"],function(Helpers){var Smil={SmilNode:function(parent){this.parent=parent,this.id="",this.getSmil=function(){for(var node=this;node.parent;)node=node.parent;return node},this.hasAncestor=function(node){for(var parent=this.parent;parent;){if(parent==node)return!0;parent=parent.parent}return!1}},TimeContainerNode:function(parent){this.parent=parent,this.children=void 0,this.index=void 0,this.epubtype="",this.isEscapable=function(userEscapables){if(""===this.epubtype)return!1;var smilModel=this.getSmil();if(!smilModel.mo)return!1;var arr=smilModel.mo.escapables;userEscapables.length>0&&(arr=userEscapables);for(var i=0;i<arr.length;i++)if(this.epubtype.indexOf(arr[i])>=0)return!0;return!1},this.isSkippable=function(userSkippables){if(""===this.epubtype)return!1;var smilModel=this.getSmil();if(!smilModel.mo)return!1;var arr=smilModel.mo.skippables;userSkippables.length>0&&(arr=userSkippables);for(var i=0;i<arr.length;i++)if(this.epubtype.indexOf(arr[i])>=0)return!0;return!1}}};Smil.TimeContainerNode.prototype=new Smil.SmilNode,Smil.MediaNode=function(parent){this.parent=parent,this.src=""},Smil.MediaNode.prototype=new Smil.SmilNode,Smil.SeqNode=function(parent){this.parent=parent,this.children=[],this.nodeType="seq",this.textref="",this.durationMilliseconds=function(){for(var smilData=this.getSmil(),total=0,i=0;i<this.children.length;i++){var container=this.children[i];if("par"===container.nodeType){if(!container.audio)continue;if(container.text&&(!container.text.manifestItemId||container.text.manifestItemId!=smilData.spineItemId))continue;total+=container.audio.clipDurationMilliseconds()}else"seq"===container.nodeType&&(total+=container.durationMilliseconds())}return total},this.clipOffset=function(offset,par){for(var smilData=this.getSmil(),i=0;i<this.children.length;i++){var container=this.children[i];if("par"===container.nodeType){if(container==par)return!0;if(!container.audio)continue;if(container.text&&(!container.text.manifestItemId||container.text.manifestItemId!=smilData.spineItemId))continue;var clipDur=container.audio.clipDurationMilliseconds();offset.offset+=clipDur}else if("seq"===container.nodeType){if(container.clipOffset(offset,par))return!0}}return!1},this.parallelAt=function(timeMilliseconds){for(var smilData=this.getSmil(),offset=0,i=0;i<this.children.length;i++){var timeAdjusted=timeMilliseconds-offset,container=this.children[i];if("par"===container.nodeType){if(!container.audio)continue;if(container.text&&(!container.text.manifestItemId||container.text.manifestItemId!=smilData.spineItemId))continue;var clipDur=container.audio.clipDurationMilliseconds();if(clipDur>0&&timeAdjusted<=clipDur)return container;offset+=clipDur}else if("seq"===container.nodeType){var para=container.parallelAt(timeAdjusted);if(para)return para;offset+=container.durationMilliseconds()}}},this.nthParallel=function(index,count){for(var i=0;i<this.children.length;i++){var container=this.children[i];if("par"===container.nodeType){if(count.count++,count.count==index)return container}else if("seq"===container.nodeType){var para=container.nthParallel(index,count);if(para)return para}}}},Smil.SeqNode.prototype=new Smil.TimeContainerNode,Smil.ParNode=function(parent){this.parent=parent,this.children=[],this.nodeType="par",this.text=void 0,this.audio=void 0,this.element=void 0,this.getFirstSeqAncestorWithEpubType=function(epubtype,includeSelf){if(epubtype)for(var parent=includeSelf?this:this.parent;parent;){if(parent.epubtype&&parent.epubtype.indexOf(epubtype)>=0)return parent;parent=parent.parent}}},Smil.ParNode.prototype=new Smil.TimeContainerNode,Smil.TextNode=function(parent){this.parent=parent,this.nodeType="text",this.srcFile="",this.srcFragmentId="",this.manifestItemId=void 0,this.updateMediaManifestItemId=function(){var smilData=this.getSmil();if(smilData.href&&smilData.href.length){for(var src=this.srcFile?this.srcFile:this.src,ref=Helpers.ResolveContentRef(src,smilData.href),full=smilData.mo.package.resolveRelativeUrlMO(ref),j=0;j<smilData.mo.package.spine.items.length;j++){var item=smilData.mo.package.spine.items[j];if(smilData.mo.package.resolveRelativeUrl(item.href)===full)return void(this.manifestItemId=item.idref)}console.error("Cannot set the Media ManifestItemId? "+this.src+" && "+smilData.href)}}},Smil.TextNode.prototype=new Smil.MediaNode,Smil.AudioNode=function(parent){this.parent=parent,this.nodeType="audio",this.clipBegin=0,this.MAX=1234567890.1,this.clipEnd=this.MAX,this.clipDurationMilliseconds=function(){var _clipBeginMilliseconds=1e3*this.clipBegin,_clipEndMilliseconds=1e3*this.clipEnd;return this.clipEnd>=this.MAX||_clipEndMilliseconds<=_clipBeginMilliseconds?0:_clipEndMilliseconds-_clipBeginMilliseconds}},Smil.AudioNode.prototype=new Smil.MediaNode;var SmilModel=function(){this.parent=void 0,this.children=[],this.id=void 0,this.href=void 0,this.duration=void 0,this.mo=void 0,this.parallelAt=function(timeMilliseconds){return this.children[0].parallelAt(timeMilliseconds)},this.nthParallel=function(index){return this.children[0].nthParallel(index,{count:-1})},this.clipOffset=function(par){var offset={offset:0};return this.children[0].clipOffset(offset,par)?offset.offset:0},this.durationMilliseconds_Calculated=function(){return this.children[0].durationMilliseconds()};var _epubtypeSyncs=[];this.hasSync=function(epubtype){for(var i=0;i<_epubtypeSyncs.length;i++)if(_epubtypeSyncs[i]===epubtype)return!0;return!1},this.addSync=function(epubtypes){if(epubtypes)for(var parts=epubtypes.split(" "),i=0;i<parts.length;i++){var epubtype=parts[i].trim();epubtype.length>0&&!this.hasSync(epubtype)&&_epubtypeSyncs.push(epubtype)}}};return SmilModel.fromSmilDTO=function(smilDTO,mo){mo.DEBUG&&console.debug("Media Overlay DTO import...");var indent=0,getIndent=function(){for(var str="",i=0;i<indent;i++)str+=" ";return str},smilModel=new SmilModel;smilModel.id=smilDTO.id,smilModel.spineItemId=smilDTO.spineItemId,smilModel.href=smilDTO.href,smilModel.smilVersion=smilDTO.smilVersion,smilModel.duration=smilDTO.duration,smilModel.duration&&smilModel.duration.length&&smilModel.duration.length>0&&(console.error("SMIL duration is string, parsing float... ("+smilModel.duration+")"),smilModel.duration=parseFloat(smilModel.duration)),smilModel.mo=mo,smilModel.mo.DEBUG&&(console.log("JS MO smilVersion="+smilModel.smilVersion),console.log("JS MO id="+smilModel.id),console.log("JS MO spineItemId="+smilModel.spineItemId),console.log("JS MO href="+smilModel.href),console.log("JS MO duration="+smilModel.duration));var safeCopyProperty=function(property,from,to,isRequired){property in from?(property in to||console.debug("property "+property+" not declared in smil node "+to.nodeType),to[property]=from[property],smilModel.mo.DEBUG&&console.log(getIndent()+"JS MO: ["+property+"="+to[property]+"]")):isRequired&&console.log("Required property "+property+" not found in smil node "+from.nodeType)},createNodeFromDTO=function(nodeDTO,parent){var node;if("seq"==nodeDTO.nodeType)smilModel.mo.DEBUG&&console.log(getIndent()+"JS MO seq"),node=new Smil.SeqNode(parent),safeCopyProperty("textref",nodeDTO,node,!(!parent||!parent.parent)),safeCopyProperty("id",nodeDTO,node),safeCopyProperty("epubtype",nodeDTO,node),node.epubtype&&node.getSmil().addSync(node.epubtype),indent++,copyChildren(nodeDTO,node),indent--;else if("par"==nodeDTO.nodeType){smilModel.mo.DEBUG&&console.log(getIndent()+"JS MO par"),node=new Smil.ParNode(parent),safeCopyProperty("id",nodeDTO,node),safeCopyProperty("epubtype",nodeDTO,node),node.epubtype&&node.getSmil().addSync(node.epubtype),indent++,copyChildren(nodeDTO,node),indent--;for(var i=0,count=node.children.length;i<count;i++){var child=node.children[i];"text"==child.nodeType?node.text=child:"audio"==child.nodeType?node.audio=child:console.error("Unexpected smil node type: "+child.nodeType)}if(!node.audio){var fakeAudio=new Smil.AudioNode(node);fakeAudio.clipBegin=0,fakeAudio.clipEnd=fakeAudio.MAX,fakeAudio.src=void 0,node.audio=fakeAudio}}else if("text"==nodeDTO.nodeType)smilModel.mo.DEBUG&&console.log(getIndent()+"JS MO text"),node=new Smil.TextNode(parent),safeCopyProperty("src",nodeDTO,node,!0),safeCopyProperty("srcFile",nodeDTO,node,!0),safeCopyProperty("srcFragmentId",nodeDTO,node,!1),safeCopyProperty("id",nodeDTO,node),node.updateMediaManifestItemId();else{if("audio"!=nodeDTO.nodeType)return void console.error("Unexpected smil node type: "+nodeDTO.nodeType);smilModel.mo.DEBUG&&console.log(getIndent()+"JS MO audio"),node=new Smil.AudioNode(parent),safeCopyProperty("src",nodeDTO,node,!0),safeCopyProperty("id",nodeDTO,node),safeCopyProperty("clipBegin",nodeDTO,node),node.clipBegin&&node.clipBegin.length&&node.clipBegin.length>0&&(console.error("SMIL clipBegin is string, parsing float... ("+node.clipBegin+")"),node.clipBegin=parseFloat(node.clipBegin)),node.clipBegin<0&&(smilModel.mo.DEBUG&&console.log(getIndent()+"JS MO clipBegin adjusted to ZERO"),node.clipBegin=0),safeCopyProperty("clipEnd",nodeDTO,node),node.clipEnd&&node.clipEnd.length&&node.clipEnd.length>0&&(console.error("SMIL clipEnd is string, parsing float... ("+node.clipEnd+")"),node.clipEnd=parseFloat(node.clipEnd)),node.clipEnd<=node.clipBegin&&(smilModel.mo.DEBUG&&console.log(getIndent()+"JS MO clipEnd adjusted to MAX"),node.clipEnd=node.MAX)}return node},copyChildren=function(from,to){for(var count=from.children.length,i=0;i<count;i++){var node=createNodeFromDTO(from.children[i],to);node.index=i,to.children.push(node)}};return copyChildren(smilDTO,smilModel),smilModel},SmilModel}),define("readium_shared_js/models/media_overlay",["./smil_model"],function(SmilModel){var MediaOverlay=function(packageModel){this.package=packageModel,this.parallelAt=function(timeMilliseconds){for(var offset=0,i=0;i<this.smil_models.length;i++){var smilData=this.smil_models[i],timeAdjusted=timeMilliseconds-offset,para=smilData.parallelAt(timeAdjusted);if(para)return para;offset+=smilData.durationMilliseconds_Calculated()}},this.percentToPosition=function(percent,smilData,par,milliseconds){(percent<0||percent>100)&&(percent=0);var timeMs=this.durationMilliseconds_Calculated()*(percent/100);if(par.par=this.parallelAt(timeMs),par.par){var smilDataPar=par.par.getSmil();if(smilDataPar){for(var smilDataOffset=0,i=0;i<this.smil_models.length&&(smilData.smilData=this.smil_models[i],smilData.smilData!=smilDataPar);i++)smilDataOffset+=smilData.smilData.durationMilliseconds_Calculated();milliseconds.milliseconds=timeMs-(smilDataOffset+smilData.smilData.clipOffset(par.par))}}},this.durationMilliseconds_Calculated=function(){for(var total=0,i=0;i<this.smil_models.length;i++){total+=this.smil_models[i].durationMilliseconds_Calculated()}return total},this.smilAt=function(smilIndex){if(!(smilIndex<0||smilIndex>=this.smil_models.length))return this.smil_models[smilIndex]},this.positionToPercent=function(smilIndex,parIndex,milliseconds){if(smilIndex>=this.smil_models.length)return-1;for(var smilDataOffset=0,i=0;i<smilIndex;i++){smilDataOffset+=this.smil_models[i].durationMilliseconds_Calculated()}var smilData=this.smil_models[smilIndex],par=smilData.nthParallel(parIndex);return par?(smilDataOffset+smilData.clipOffset(par)+milliseconds)/this.durationMilliseconds_Calculated()*100:-1},this.smil_models=[],this.skippables=[],this.escapables=[],this.duration=void 0,this.narrator=void 0,this.activeClass=void 0,this.playbackActiveClass=void 0,this.DEBUG=!1,this.getSmilBySpineItem=function(spineItem){if(spineItem)for(var i=0,count=this.smil_models.length;i<count;i++){var smil=this.smil_models[i];if(smil.spineItemId===spineItem.idref)return spineItem.media_overlay_id!==smil.id&&console.error("SMIL INCORRECT ID?? "+spineItem.media_overlay_id+" /// "+smil.id),smil}},this.getNextSmil=function(smil){var index=this.smil_models.indexOf(smil);if(-1!=index&&index!=this.smil_models.length-1)return this.smil_models[index+1]},this.getPreviousSmil=function(smil){var index=this.smil_models.indexOf(smil);if(-1!=index&&0!=index)return this.smil_models[index-1]}};return MediaOverlay.fromDTO=function(moDTO,packageModel){var mo=new MediaOverlay(packageModel);if(!moDTO)return mo;mo.duration=moDTO.duration,mo.duration&&mo.duration.length&&mo.duration.length>0&&(console.error("SMIL total duration is string, parsing float... ("+mo.duration+")"),mo.duration=parseFloat(mo.duration)),mo.DEBUG&&console.debug("Media Overlay Duration (TOTAL): "+mo.duration),mo.narrator=moDTO.narrator,mo.DEBUG&&console.debug("Media Overlay Narrator: "+mo.narrator),mo.activeClass=moDTO.activeClass,mo.DEBUG&&console.debug("Media Overlay Active-Class: "+mo.activeClass),mo.playbackActiveClass=moDTO.playbackActiveClass,mo.DEBUG&&console.debug("Media Overlay Playback-Active-Class: "+mo.playbackActiveClass);var count=moDTO.smil_models.length;mo.DEBUG&&console.debug("Media Overlay SMIL count: "+count);for(var i=0;i<count;i++){var smilModel=SmilModel.fromSmilDTO(moDTO.smil_models[i],mo);mo.smil_models.push(smilModel),mo.DEBUG&&console.debug("Media Overlay Duration (SPINE ITEM): "+smilModel.duration)}count=moDTO.skippables.length,mo.DEBUG&&console.debug("Media Overlay SKIPPABLES count: "+count);for(i=0;i<count;i++)mo.skippables.push(moDTO.skippables[i]);count=moDTO.escapables.length,mo.DEBUG&&console.debug("Media Overlay ESCAPABLES count: "+count);for(i=0;i<count;i++)mo.escapables.push(moDTO.escapables[i]);return mo},MediaOverlay}),define("readium_shared_js/models/package_data",[],function(){return{rootUrl:"",rootUrlMO:"",rendering_layout:"",spine:{direction:"ltr",items:[{href:"",idref:"",page_spread:"",rendering_layout:""}]}}}),define("readium_shared_js/models/package",["../helpers","./spine_item","./spine","./media_overlay","./package_data","URIjs"],function(Helpers,SpineItem,Spine,MediaOverlay,PackageData,URI){return function(packageData){var self=this;this.spine=void 0,this.rootUrl=void 0,this.rootUrlMO=void 0,this.media_overlay=void 0,this.rendition_viewport=void 0,this.rendition_flow=void 0,this.rendition_layout=void 0,this.rendition_spread=void 0,this.rendition_orientation=void 0,this.resolveRelativeUrlMO=function(relativeUrl){var relativeUrlUri=void 0;try{relativeUrlUri=new URI(relativeUrl)}catch(err){console.error(err),console.log(relativeUrl)}if(relativeUrlUri&&relativeUrlUri.is("absolute"))return relativeUrl;if(self.rootUrlMO&&self.rootUrlMO.length>0){var url=self.rootUrlMO;try{url=new URI(url).search("").hash("").toString()}catch(err){console.error(err),console.log(url)}return Helpers.EndsWith(url,"/")?url+relativeUrl:url+"/"+relativeUrl}return self.resolveRelativeUrl(relativeUrl)},this.resolveRelativeUrl=function(relativeUrl){var relativeUrlUri=void 0;try{relativeUrlUri=new URI(relativeUrl)}catch(err){console.error(err),console.log(relativeUrl)}if(relativeUrlUri&&relativeUrlUri.is("absolute"))return relativeUrl;if(self.rootUrl){var url=self.rootUrl;try{url=new URI(url).search("").hash("").toString()}catch(err){console.error(err),console.log(url)}return Helpers.EndsWith(url,"/")?url+relativeUrl:url+"/"+relativeUrl}return relativeUrl},this.isFixedLayout=function(){return self.rendition_layout===SpineItem.RENDITION_LAYOUT_PREPAGINATED},this.isReflowable=function(){return!self.isFixedLayout()},packageData&&(this.rootUrl=packageData.rootUrl,this.rootUrlMO=packageData.rootUrlMO,this.rendition_viewport=packageData.rendition_viewport,this.rendition_layout=packageData.rendition_layout,this.rendition_flow=packageData.rendition_flow,this.rendition_orientation=packageData.rendition_orientation,this.rendition_spread=packageData.rendition_spread,this.spine=new Spine(this,packageData.spine),this.media_overlay=MediaOverlay.fromDTO(packageData.media_overlay,this))}}),define("readium_shared_js/models/metadata",[],function(){return function(packageMetadata){this.identifier=void 0,this.title=void 0,this.author=void 0,this.description=void 0,this.publisher=void 0,this.language=void 0,this.rights=void 0,this.modifiedDate=void 0,this.publishedDate=void 0,this.epubVersion=void 0,packageMetadata&&(this.identifier=packageMetadata.id,this.title=packageMetadata.title,this.author=packageMetadata.author,this.description=packageMetadata.description,this.language=packageMetadata.language,this.publisher=packageMetadata.publisher,this.rights=packageMetadata.rights,this.modifiedDate=packageMetadata.modified_date,this.publishedDate=packageMetadata.pubdate,this.epubVersion=packageMetadata.epub_version)}}),define("readium_shared_js/views/reflowable_view",["../globals","jquery","underscore","eventEmitter","../models/bookmark_data","./cfi_navigation_logic","../models/current_pages_info","../helpers","../models/page_open_request","../models/viewer_settings","ResizeSensor"],function(Globals,$,_,EventEmitter,BookmarkData,CfiNavigationLogic,CurrentPagesInfo,Helpers,PageOpenRequest,ViewerSettings,ResizeSensor){return function(options,reader){$.extend(this,new EventEmitter);var _currentSpineItem,_deferredPageRequest,_$contentFrame,_navigationLogic,_$el,_$iframe,_$epubHtml,_$htmlBody,_htmlBodyIsVerticalWritingMode,_htmlBodyIsLTRDirection,_htmlBodyIsLTRWritingMode,self=this,_$viewport=$(options.$viewport),_spine=options.spine,_userStyles=options.userStyles,_bookStyles=options.bookStyles,_iframeLoader=options.iframeLoader,_isWaitingFrameRender=!1,_fontSize=100,_fontSelection=0,_lastPageRequest=void 0,_cfiClassBlacklist=["cfi-marker","mo-cfi-highlight","resize-sensor","resize-sensor-expand","resize-sensor-shrink","resize-sensor-inner","js-hypothesis-config","js-hypothesis-embed"],_cfiElementBlacklist=["hypothesis-adder"],_cfiIdBlacklist=["MathJax_Message","MathJax_SVG_Hidden"],_currentOpacity=-1,_lastViewPortSize={width:void 0,height:void 0},_lastBodySize={width:void 0,height:void 0},_paginationInfo={visibleColumnCount:2,columnGap:20,columnMaxWidth:550,columnMinWidth:400,spreadCount:0,currentSpreadIndex:0,currentPageIndex:0,columnWidth:void 0,pageOffset:0,columnCount:0};this.render=function(){var template=Helpers.loadTemplate("reflowable_book_frame",{});_$el=$(template),_$viewport.append(_$el);var settings=reader.viewerSettings();return settings&&void 0!==settings.enableGPUHardwareAccelerationCSS3D||(settings=new ViewerSettings({})),settings.enableGPUHardwareAccelerationCSS3D&&_$el.css("transform","translateZ(0)"),renderIframe(),self},this.remove=function(){_$el.remove()},this.isReflowable=function(){return!0},this.onViewportResize=function(){updateViewportSize()&&updatePagination()};var _viewSettings=void 0;function getFrameDimensions(){return{width:_$iframe[0].clientWidth,height:_$iframe[0].clientHeight}}function getPaginationOffsets(){var offset=_paginationInfo.rightToLeft&&!_paginationInfo.isVerticalWritingMode?-_paginationInfo.pageOffset:_paginationInfo.pageOffset;return _paginationInfo.isVerticalWritingMode?{top:offset,left:0}:{top:0,left:offset}}function renderIframe(){_$contentFrame&&_$contentFrame.remove();var template=Helpers.loadTemplate("reflowable_book_page_frame",{}),$bookFrame=$(template);$bookFrame=_$el.append($bookFrame),_$contentFrame=$("#reflowable-content-frame",$bookFrame),(_$iframe=$("#epubContentIframe",$bookFrame)).css("left",""),_$iframe.css("right",""),_$iframe.css("position","relative"),_$iframe.css("overflow","hidden"),_navigationLogic=new CfiNavigationLogic({$iframe:_$iframe,frameDimensionsGetter:getFrameDimensions,paginationInfo:_paginationInfo,paginationOffsetsGetter:getPaginationOffsets,classBlacklist:_cfiClassBlacklist,elementBlacklist:_cfiElementBlacklist,idBlacklist:_cfiIdBlacklist})}function loadSpineItem(spineItem){if(_currentSpineItem!=spineItem){renderIframe(),_currentSpineItem&&(Globals.logEvent("CONTENT_DOCUMENT_UNLOADED","EMIT","reflowable_view.js [ "+_currentSpineItem.href+" ]"),self.emit(Globals.Events.CONTENT_DOCUMENT_UNLOADED,_$iframe,_currentSpineItem)),self.resetCurrentPosition(),_paginationInfo.pageOffset=0,_paginationInfo.currentSpreadIndex=0,_paginationInfo.currentPageIndex=0,(_currentSpineItem=spineItem).paginationInfo=_paginationInfo,_isWaitingFrameRender=!0;var src=_spine.package.resolveRelativeUrl(spineItem.href);Globals.logEvent("CONTENT_DOCUMENT_LOAD_START","EMIT","reflowable_view.js [ "+spineItem.href+" -- "+src+" ]"),self.emit(Globals.Events.CONTENT_DOCUMENT_LOAD_START,_$iframe,spineItem),_$iframe.css("opacity","0.01"),_iframeLoader.loadIframe(_$iframe[0],src,onIFrameLoad,self,{spineItem:spineItem})}}function updateHtmlFontInfo(){if(_$epubHtml){var i=_fontSelection,font=!reader.fonts||!reader.fonts.length||i<=0||i-1>=reader.fonts.length?{}:reader.fonts[i-1];Helpers.UpdateHtmlFontAttributes(_$epubHtml,_fontSize,font,function(){self.applyStyles()})}}function updateColumnGap(){_$epubHtml&&_$epubHtml.css("column-gap",_paginationInfo.columnGap+"px")}function onIFrameLoad(success){if(_isWaitingFrameRender=!1,_deferredPageRequest&&_deferredPageRequest.spineItem!=_currentSpineItem)loadSpineItem(_deferredPageRequest.spineItem);else{if(!success)return _$iframe.css("opacity","1"),void(_deferredPageRequest=void 0);Globals.logEvent("CONTENT_DOCUMENT_LOADED","EMIT","reflowable_view.js [ "+_currentSpineItem.href+" ]"),self.emit(Globals.Events.CONTENT_DOCUMENT_LOADED,_$iframe,_currentSpineItem);var epubContentDocument=_$iframe[0].contentDocument;_$epubHtml=$("html",epubContentDocument),_$htmlBody=$("body",_$epubHtml),_htmlBodyIsVerticalWritingMode=!1,_htmlBodyIsLTRDirection=!0,_htmlBodyIsLTRWritingMode=void 0;var htmlBodyComputedStyle=(_$iframe[0].contentDocument.defaultView||_$iframe[0].contentWindow).getComputedStyle(_$htmlBody[0],null);if(htmlBodyComputedStyle){_htmlBodyIsLTRDirection="ltr"===htmlBodyComputedStyle.direction;var writingMode=void 0;(writingMode=htmlBodyComputedStyle.getPropertyValue?htmlBodyComputedStyle.getPropertyValue("-webkit-writing-mode")||htmlBodyComputedStyle.getPropertyValue("-moz-writing-mode")||htmlBodyComputedStyle.getPropertyValue("-ms-writing-mode")||htmlBodyComputedStyle.getPropertyValue("-o-writing-mode")||htmlBodyComputedStyle.getPropertyValue("-epub-writing-mode")||htmlBodyComputedStyle.getPropertyValue("writing-mode"):htmlBodyComputedStyle.webkitWritingMode||htmlBodyComputedStyle.mozWritingMode||htmlBodyComputedStyle.msWritingMode||htmlBodyComputedStyle.oWritingMode||htmlBodyComputedStyle.epubWritingMode||htmlBodyComputedStyle.writingMode)&&(_htmlBodyIsLTRWritingMode=writingMode.indexOf("-lr")>=0,(writingMode.indexOf("vertical")>=0||writingMode.indexOf("tb-")>=0||writingMode.indexOf("bt-")>=0)&&(_htmlBodyIsVerticalWritingMode=!0))}_htmlBodyIsLTRDirection&&("rtl"!==_$htmlBody[0].getAttribute("dir")&&"rtl"!==_$epubHtml[0].getAttribute("dir")||(_htmlBodyIsLTRDirection=!1)),_spine.isLeftToRight()||!_htmlBodyIsLTRDirection||_htmlBodyIsVerticalWritingMode||(_$htmlBody[0].setAttribute("dir","rtl"),_htmlBodyIsLTRDirection=!1,_htmlBodyIsLTRWritingMode=!1),_paginationInfo.isVerticalWritingMode=_htmlBodyIsVerticalWritingMode,hideBook(),_$iframe.css("opacity","1"),updateViewportSize(),_$epubHtml.css("height",_lastViewPortSize.height+"px"),_$epubHtml.css("position","relative"),_$epubHtml.css("margin","0"),_$epubHtml.css("padding","0"),_$epubHtml.css("column-axis",_htmlBodyIsVerticalWritingMode?"vertical":"horizontal"),self.applyBookStyles(),_$epubHtml&&$("img, svg",_$epubHtml).each(function(){($elem=$(this)).css("max-width","98%"),$elem.css("max-height","98%"),$elem.css("height")||$elem.css("height","auto"),$elem.css("width")||$elem.css("width","auto")}),updateColumnGap(),updateHtmlFontInfo()}var $elem}function _openPageInternal(pageRequest){if(_isWaitingFrameRender)return _deferredPageRequest=pageRequest,!1;if(pageRequest.spineItem&&pageRequest.spineItem!=_currentSpineItem)return _deferredPageRequest=pageRequest,loadSpineItem(pageRequest.spineItem),!0;var pageIndex=void 0;if(void 0!==pageRequest.spineItemPageIndex)pageIndex=pageRequest.spineItemPageIndex;else if(pageRequest.elementId)pageIndex=_paginationInfo.currentPageIndex+_navigationLogic.getPageIndexDeltaForElementId(pageRequest.elementId);else if(pageRequest.firstVisibleCfi&&pageRequest.lastVisibleCfi){var firstPageIndex,lastPageIndex;try{firstPageIndex=_navigationLogic.getPageIndexDeltaForCfi(pageRequest.firstVisibleCfi,_cfiClassBlacklist,_cfiElementBlacklist,_cfiIdBlacklist)}catch(e){firstPageIndex=0,console.error(e)}try{lastPageIndex=_navigationLogic.getPageIndexDeltaForCfi(pageRequest.lastVisibleCfi,_cfiClassBlacklist,_cfiElementBlacklist,_cfiIdBlacklist)}catch(e){lastPageIndex=0,console.error(e)}pageIndex=_paginationInfo.currentPageIndex+Math.round((firstPageIndex+lastPageIndex)/2)}else if(pageRequest.elementCfi)try{pageIndex=_paginationInfo.currentPageIndex+_navigationLogic.getPageIndexDeltaForCfi(pageRequest.elementCfi,_cfiClassBlacklist,_cfiElementBlacklist,_cfiIdBlacklist)}catch(e){pageIndex=0,console.error(e)}else pageRequest.firstPage?pageIndex=0:pageRequest.lastPage?pageIndex=_paginationInfo.columnCount-1:(console.debug("No criteria in pageRequest"),pageIndex=0);return(pageIndex<0||pageIndex>_paginationInfo.columnCount)&&(console.log("Illegal pageIndex value: ",pageIndex,"column count is ",_paginationInfo.columnCount),pageIndex=pageIndex<0?0:_paginationInfo.columnCount),_paginationInfo.currentPageIndex=pageIndex,_paginationInfo.currentSpreadIndex=Math.floor(pageIndex/_paginationInfo.visibleColumnCount),onPaginationChanged(pageRequest.initiator,pageRequest.spineItem,pageRequest.elementId),!0}function redraw(){var offsetVal=-_paginationInfo.pageOffset+"px";if(_htmlBodyIsVerticalWritingMode)_$epubHtml.css("top",offsetVal);else{var ltr=_htmlBodyIsLTRDirection||_htmlBodyIsLTRWritingMode;_$epubHtml.css("left",ltr?offsetVal:""),_$epubHtml.css("right",ltr?"":offsetVal)}-1!=_currentOpacity&&_$epubHtml.css("opacity",_currentOpacity),_currentOpacity=-1}function updateViewportSize(){var newWidth=_$contentFrame.width();newWidth-=newWidth%2;var newHeight=_$contentFrame.height();return(_lastViewPortSize.width!==newWidth||_lastViewPortSize.height!==newHeight)&&(_lastViewPortSize.width=newWidth,_lastViewPortSize.height=newHeight,!0)}this.setViewSettings=function(settings,docWillChange){_viewSettings=settings,_paginationInfo.columnGap=settings.columnGap,_paginationInfo.columnMaxWidth=settings.columnMaxWidth,_paginationInfo.columnMinWidth=settings.columnMinWidth,_fontSize=settings.fontSize,_fontSelection=settings.fontSelection,updateViewportSize(),docWillChange||(updateColumnGap(),updateHtmlFontInfo())},this.applyStyles=function(){Helpers.setStyles(_userStyles.getStyles(),_$el.parent());var rectangle,elementMargins=Helpers.Margins.fromElement(_$el);rectangle=elementMargins.padding,_$contentFrame.css("left",rectangle.left+"px"),_$contentFrame.css("top",rectangle.top+"px"),_$contentFrame.css("right",rectangle.right+"px"),_$contentFrame.css("bottom",rectangle.bottom+"px"),updateViewportSize(),updatePagination()},this.applyBookStyles=function(){_$epubHtml&&Helpers.setStyles(_bookStyles.getStyles(),_$iframe[0].contentDocument)},this.openPage=function(pageRequest){_openPageInternal(pageRequest),_lastPageRequest=pageRequest},this.resetCurrentPosition=function(){_lastPageRequest=void 0},this.saveCurrentPosition=function(){if(!_deferredPageRequest){var _firstVisibleCfi=self.getFirstVisibleCfi(),_lastVisibleCfi=self.getLastVisibleCfi();(_lastPageRequest=new PageOpenRequest(_currentSpineItem,self)).setFirstAndLastVisibleCfi(_firstVisibleCfi.contentCFI,_lastVisibleCfi.contentCFI)}},this.restoreCurrentPosition=function(){_lastPageRequest&&_openPageInternal(_lastPageRequest)};var onPaginationChanged=_.debounce(function(initiator,paginationRequest_spineItem,paginationRequest_elementId){_paginationInfo.currentPageIndex=_paginationInfo.currentSpreadIndex*_paginationInfo.visibleColumnCount,_paginationInfo.pageOffset=(_paginationInfo.columnWidth+_paginationInfo.columnGap)*_paginationInfo.visibleColumnCount*_paginationInfo.currentSpreadIndex,redraw(),_.defer(function(){void 0==_lastPageRequest&&self.saveCurrentPosition(),Globals.logEvent("InternalEvents.CURRENT_VIEW_PAGINATION_CHANGED","EMIT","reflowable_view.js"),self.emit(Globals.InternalEvents.CURRENT_VIEW_PAGINATION_CHANGED,{paginationInfo:self.getPaginationInfo(),initiator:initiator,spineItem:paginationRequest_spineItem,elementId:paginationRequest_elementId})})},100);this.openPagePrev=function(initiator){if(_currentSpineItem)if(_paginationInfo.currentSpreadIndex>0)this.resetCurrentPosition(),_paginationInfo.currentSpreadIndex--,onPaginationChanged(initiator,_currentSpineItem);else{var prevSpineItem=_spine.prevItem(_currentSpineItem,!0);if(prevSpineItem){var pageRequest=new PageOpenRequest(prevSpineItem,initiator);pageRequest.setLastPage(),self.openPage(pageRequest)}}},this.openPageNext=function(initiator){if(_currentSpineItem)if(_paginationInfo.currentSpreadIndex<_paginationInfo.spreadCount-1)this.resetCurrentPosition(),_paginationInfo.currentSpreadIndex++,onPaginationChanged(initiator,_currentSpineItem);else{var nextSpineItem=_spine.nextItem(_currentSpineItem,!0);if(nextSpineItem){var pageRequest=new PageOpenRequest(nextSpineItem,initiator);pageRequest.setFirstPage(),self.openPage(pageRequest)}}};var updatePagination=_.debounce(function(){var bodyElement,MAXW=_paginationInfo.columnMaxWidth,MINW=_paginationInfo.columnMinWidth,isDoublePageSyntheticSpread=Helpers.deduceSyntheticSpread(_$viewport,_currentSpineItem,_viewSettings),forced=!1===isDoublePageSyntheticSpread||!0===isDoublePageSyntheticSpread;if(0===isDoublePageSyntheticSpread&&(isDoublePageSyntheticSpread=1),_paginationInfo.visibleColumnCount=isDoublePageSyntheticSpread?2:1,_htmlBodyIsVerticalWritingMode&&(MAXW*=2,isDoublePageSyntheticSpread=!1,forced=!0,_paginationInfo.visibleColumnCount=1),_$epubHtml){hideBook();var borderLeft=parseInt(_$viewport.css("border-left-width")),adjustedGapLeft=_paginationInfo.columnGap/2;adjustedGapLeft=Math.max(0,adjustedGapLeft-borderLeft);var borderRight=parseInt(_$viewport.css("border-right-width")),adjustedGapRight=_paginationInfo.columnGap/2;adjustedGapRight=Math.max(0,adjustedGapRight-borderRight);var availableWidth=_$viewport.width(),textWidth=availableWidth-adjustedGapLeft-adjustedGapRight;isDoublePageSyntheticSpread&&(textWidth=.5*(textWidth-_paginationInfo.columnGap));var filler=0;if(textWidth>MAXW){var eachPageColumnReduction=textWidth-MAXW;filler=Math.floor(eachPageColumnReduction*(isDoublePageSyntheticSpread?1:.5))}else!forced&&textWidth<MINW&&isDoublePageSyntheticSpread&&(isDoublePageSyntheticSpread=!1,_paginationInfo.visibleColumnCount=1,(textWidth=availableWidth-adjustedGapLeft-adjustedGapRight)>MAXW&&(filler=Math.floor(.5*(textWidth-MAXW))));_$el.css({left:filler+adjustedGapLeft+"px",right:filler+adjustedGapRight+"px"}),updateViewportSize();var resultingColumnWidth=_$el.width();isDoublePageSyntheticSpread&&(resultingColumnWidth=(resultingColumnWidth-_paginationInfo.columnGap)/2),(resultingColumnWidth=Math.floor(resultingColumnWidth))-1>MAXW&&console.debug("resultingColumnWidth > MAXW ! "+resultingColumnWidth+" > "+MAXW),_$iframe.css("width",_lastViewPortSize.width+"px"),_$iframe.css("height",_lastViewPortSize.height+"px"),_$epubHtml.css("height",_lastViewPortSize.height+"px"),_$epubHtml.css("min-height",_lastViewPortSize.height+"px"),_$epubHtml.css("max-height",_lastViewPortSize.height+"px"),_$epubHtml.css("margin",0),_$epubHtml.css("padding",0),_$epubHtml.css("border",0),_$htmlBody.css("position","relative"),_$htmlBody.css("margin",0),_$htmlBody.css("padding",0),_paginationInfo.rightToLeft=_spine.isRightToLeft(),_paginationInfo.columnWidth=Math.round(((_htmlBodyIsVerticalWritingMode?_lastViewPortSize.height:_lastViewPortSize.width)-_paginationInfo.columnGap*(_paginationInfo.visibleColumnCount-1))/_paginationInfo.visibleColumnCount),_paginationInfo.visibleColumnCount>1?(_$epubHtml.css("width",_lastViewPortSize.width+"px"),_$epubHtml.css("column-width","auto"),_$epubHtml.css("column-count",_paginationInfo.visibleColumnCount)):(_$epubHtml.css("width",(_htmlBodyIsVerticalWritingMode?_lastViewPortSize.width:_paginationInfo.columnWidth)+"px"),_$epubHtml.css("column-count","auto"),_$epubHtml.css("column-width",_paginationInfo.columnWidth+"px")),_$epubHtml.css("column-fill","auto"),_$epubHtml.css({left:"0",right:"0",top:"0"}),Helpers.triggerLayout(_$iframe);var dim=_htmlBodyIsVerticalWritingMode?_$epubHtml[0].scrollHeight:_$epubHtml[0].scrollWidth;0==dim&&console.error("Document dimensions zero?!"),_paginationInfo.columnCount=(dim+_paginationInfo.columnGap)/(_paginationInfo.columnWidth+_paginationInfo.columnGap),_paginationInfo.columnCount=Math.round(_paginationInfo.columnCount),0==_paginationInfo.columnCount&&console.error("Column count zero?!");var colWidthCheck=(dim-(_paginationInfo.columnCount-1)*_paginationInfo.columnGap)/_paginationInfo.columnCount;(colWidthCheck=Math.round(colWidthCheck))>_paginationInfo.columnWidth&&(console.debug("ADJUST COLUMN"),console.log(_paginationInfo.columnWidth),console.log(colWidthCheck),_paginationInfo.columnWidth=colWidthCheck),_paginationInfo.spreadCount=Math.ceil(_paginationInfo.columnCount/_paginationInfo.visibleColumnCount),_paginationInfo.currentSpreadIndex>=_paginationInfo.spreadCount&&(_paginationInfo.currentSpreadIndex=_paginationInfo.spreadCount-1),_deferredPageRequest?function(){if(_deferredPageRequest){var deferredData=_deferredPageRequest;_deferredPageRequest=void 0,self.openPage(deferredData)}}():_lastPageRequest?(_paginationInfo.currentPageIndex=0,self.restoreCurrentPosition()):onPaginationChanged(self,_currentSpineItem),(bodyElement=_$htmlBody[0]).resizeSensor||(_lastBodySize.width=$(bodyElement).width(),_lastBodySize.height=$(bodyElement).height(),bodyElement.resizeSensor=new ResizeSensor(bodyElement,function(){var newBodySize={width:$(bodyElement).width(),height:$(bodyElement).height()};console.debug("ReflowableView content resized ...",newBodySize.width,newBodySize.height,_currentSpineItem.idref),newBodySize.width!=_lastBodySize.width||newBodySize.height!=_lastBodySize.height?(_lastBodySize.width=newBodySize.width,_lastBodySize.height=newBodySize.height,console.debug("... updating pagination."),updatePagination()):console.debug("... ignored (identical dimensions).")}))}},100);function hideBook(){-1==_currentOpacity&&(_currentOpacity=_$epubHtml[0].style.opacity)}function createBookmarkFromCfi(cfi){return new BookmarkData(_currentSpineItem.idref,cfi)}this.getPaginationInfo=function(){var paginationInfo=new CurrentPagesInfo(_spine,!1);if(!_currentSpineItem)return paginationInfo;for(var pageIndexes=function(){for(var indexes=[],currentPage=_paginationInfo.currentSpreadIndex*_paginationInfo.visibleColumnCount,i=0;i<_paginationInfo.visibleColumnCount&¤tPage+i<_paginationInfo.columnCount;i++)indexes.push(currentPage+i);return indexes}(),i=0,count=pageIndexes.length;i<count;i++)paginationInfo.addOpenPage(pageIndexes[i],_paginationInfo.columnCount,_currentSpineItem.idref,_currentSpineItem.index);return paginationInfo},this.bookmarkCurrentPage=function(){if(_currentSpineItem)return self.getFirstVisibleCfi()},this.getLoadedSpineItems=function(){return[_currentSpineItem]},this.getElementByCfi=function(spineItemIdref,cfi,classBlacklist,elementBlacklist,idBlacklist){if(spineItemIdref==_currentSpineItem.idref)return _navigationLogic.getElementByCfi(cfi,classBlacklist,elementBlacklist,idBlacklist);console.warn("spine item is not loaded")},this.getElementById=function(spineItemIdref,id){if(spineItemIdref==_currentSpineItem.idref)return _navigationLogic.getElementById(id);console.error("spine item is not loaded")},this.getElement=function(spineItemIdref,selector){if(spineItemIdref==_currentSpineItem.idref)return _navigationLogic.getElement(selector);console.warn("spine item is not loaded")},this.getFirstVisibleMediaOverlayElement=function(){return _navigationLogic.getFirstVisibleMediaOverlayElement()},this.insureElementVisibility=function(spineItemId,element,initiator){var $element=$(element);if(!_navigationLogic.isElementVisible($element)){var elementCfi=_navigationLogic.getCfiForElement(element);if(elementCfi){var openPageRequest=new PageOpenRequest(_currentSpineItem,initiator);openPageRequest.setElementCfi(elementCfi);var id=element.id;id||(id=element.getAttribute("id")),id&&openPageRequest.setElementId(id),self.openPage(openPageRequest)}}},this.getVisibleElementsWithFilter=function(filterFunction,includeSpineItem){var elements=_navigationLogic.getVisibleElementsWithFilter(null,filterFunction);return includeSpineItem?[{elements:elements,spineItem:_currentSpineItem}]:elements},this.getVisibleElements=function(selector,includeSpineItem){var elements=_navigationLogic.getAllVisibleElementsWithSelector(selector);return includeSpineItem?[{elements:elements,spineItem:_currentSpineItem}]:elements},this.isElementVisible=function($element){return _navigationLogic.isElementVisible($element)},this.getElements=function(spineItemIdref,selector){if(spineItemIdref==_currentSpineItem.idref)return _navigationLogic.getElements(selector);console.warn("spine item is not loaded")},this.isNodeFromRangeCfiVisible=function(spineIdref,partialCfi){if(_currentSpineItem.idref===spineIdref)return _navigationLogic.isNodeFromRangeCfiVisible(partialCfi)},this.isVisibleSpineItemElementCfi=function(spineIdRef,partialCfi){if(_navigationLogic.isRangeCfi(partialCfi))return this.isNodeFromRangeCfiVisible(spineIdRef,partialCfi);var $elementFromCfi=this.getElementByCfi(spineIdRef,partialCfi);return $elementFromCfi&&this.isElementVisible($elementFromCfi)},this.getNodeRangeInfoFromCfi=function(spineIdRef,partialCfi){if(spineIdRef==_currentSpineItem.idref)return _navigationLogic.getNodeRangeInfoFromCfi(partialCfi);console.warn("spine item is not loaded")},this.getFirstVisibleCfi=function(){return createBookmarkFromCfi(_navigationLogic.getFirstVisibleCfi())},this.getLastVisibleCfi=function(){return createBookmarkFromCfi(_navigationLogic.getLastVisibleCfi())},this.getStartCfi=function(){return createBookmarkFromCfi(_navigationLogic.getStartCfi())},this.getEndCfi=function(){return createBookmarkFromCfi(_navigationLogic.getEndCfi())},this.getDomRangeFromRangeCfi=function(rangeCfi,rangeCfi2,inclusive){if(!rangeCfi2||rangeCfi.idref===rangeCfi2.idref)return _navigationLogic.getDomRangeFromRangeCfi(rangeCfi.contentCFI,rangeCfi2?rangeCfi2.contentCFI:null,inclusive);console.error("getDomRangeFromRangeCfi: both CFIs must be scoped under the same spineitem idref")},this.getRangeCfiFromDomRange=function(domRange){return createBookmarkFromCfi(_navigationLogic.getRangeCfiFromDomRange(domRange))},this.getVisibleCfiFromPoint=function(x,y,precisePoint){return createBookmarkFromCfi(_navigationLogic.getVisibleCfiFromPoint(x,y,precisePoint))},this.getRangeCfiFromPoints=function(startX,startY,endX,endY){return createBookmarkFromCfi(_navigationLogic.getRangeCfiFromPoints(startX,startY,endX,endY))},this.getCfiForElement=function(element){return createBookmarkFromCfi(_navigationLogic.getCfiForElement(element))},this.getElementFromPoint=function(x,y){return _navigationLogic.getElementFromPoint(x,y)},this.getNearestCfiFromElement=function(element){return createBookmarkFromCfi(_navigationLogic.getNearestCfiFromElement(element))}}}),define("readium_shared_js/models/style",[],function(){return function(selector,declarations){this.selector=selector,this.declarations=declarations,this.setDeclarations=function(declarations){for(var prop in declarations)declarations.hasOwnProperty(prop)&&(this.declarations[prop]=declarations[prop])}}}),define("readium_shared_js/models/style_collection",["./style"],function(Style){return function(){var _styles=[];this.clear=function(){_styles.length=0},this.findStyle=function(selector){for(var count=_styles.length,i=0;i<count;i++)if(_styles[i].selector===selector)return _styles[i]},this.addStyle=function(selector,declarations){var style=this.findStyle(selector);return style?style.setDeclarations(declarations):(style=new Style(selector,declarations),_styles.push(style)),style},this.removeStyle=function(selector){for(var count=_styles.length,i=0;i<count;i++)if(_styles[i].selector===selector)return void _styles.splice(i,1)},this.getStyles=function(){return _styles},this.resetStyleValues=function(){for(var count=_styles.length,i=0;i<count;i++){var declarations=_styles[i].declarations;for(var prop in declarations)declarations.hasOwnProperty(prop)&&(declarations[prop]="")}}}}),define("readium_shared_js/models/switches",["jquery","underscore"],function($,_){var Switches=function(){};return Switches.apply=function(dom){var getQuery=window.navigator.userAgent.indexOf("Trident")>0||window.navigator.userAgent.indexOf("Edge")>0?function(elementName){return"epub\\:"+elementName}:function(elementName){return elementName};_.each(dom.querySelectorAll(getQuery("switch")),function(switchNode){var found=!1;_.each(switchNode.querySelectorAll(getQuery("case")),function(caseNode){!found&&function(caseNode){var ns=caseNode.attributes["required-namespace"];return ns?_.include(["http://www.w3.org/1998/Math/MathML"],ns.value):(console.log("Encountered a case statement with no required-namespace"),!1)}(caseNode)?found=!0:$(caseNode).remove()}),found&&_.each(switchNode.querySelectorAll(getQuery("default")),function(defaultNode){$(defaultNode).remove()})})},Switches}),define("readium_shared_js/models/trigger",["jquery","../helpers"],function($,Helpers){var Trigger=function(domNode){var $el=$(domNode);this.action=$el.attr("action"),this.ref=$el.attr("ref"),this.event=$el.attr("ev:event"),this.observer=$el.attr("ev:observer"),this.ref=$el.attr("ref")};return Trigger.register=function(dom){$("trigger",dom).each(function(){new Trigger(this).subscribe(dom)})},Trigger.prototype.subscribe=function(dom){var selector="#"+this.observer,that=this;$(selector,dom).on(this.event,function(){return that.execute(dom)})},Trigger.prototype.execute=function(dom){var $target=$("#"+Helpers.escapeJQuerySelector(this.ref),dom);switch(this.action){case"show":$target.css("visibility","visible");break;case"hide":$target.css("visibility","hidden");break;case"play":$target[0].currentTime=0,$target[0].play();break;case"pause":$target[0].pause();break;case"resume":$target[0].play();break;case"mute":$target[0].muted=!0;break;case"unmute":$target[0].muted=!1;break;default:return console.log("do not no how to handle trigger "+this.action),null}return!1},Trigger}),define("readium_shared_js/models/node_range_info",[],function(){var NodeRangePositionInfo=function(node,offset){this.node=node,this.offset=offset};return function(clientRect,startInfo,endInfo){var self=this;this.clientRect=clientRect,this.startInfo=startInfo,this.endInfo=endInfo,this.setStartInfo=function(info){return self.startInfo=new NodeRangePositionInfo(info),self},this.setEndInfo=function(info){return self.endInfo=new NodeRangePositionInfo(info),self}}}),define("readium_shared_js/views/external_agent_support",["../globals","underscore"],function(Globals,_){return function(reader){var contentDocumentStates={},contentDocuments={};function appendMetaTag(_document,property,content){var tag=_document.createElement("meta");tag.setAttribute("name",property),tag.setAttribute("content",content),_document.head.appendChild(tag)}function determineCanonicalLinkHref(contentWindow){if(-1!==Object.keys(contentWindow).indexOf("document")&&contentWindow.location.search.match(/goto=.*cfi/i))return contentWindow.location.href.split("#")[0]}function getContentDocumentCanonicalLink(contentDocument){var contentDocWindow=contentDocument.defaultView;if(contentDocWindow&&(contentDocWindow.parent||contentDocWindow.top)){var parentWindowCanonicalHref=determineCanonicalLinkHref(contentDocWindow.parent);return determineCanonicalLinkHref(contentDocWindow.top)||parentWindowCanonicalHref}}Globals.on(Globals.Events.PLUGINS_LOADED,function(){window.define&&window.define.amd&&delete window.define.amd});var bringIntoViewDebounced=_.debounce(function(range){var target=reader.getRangeCfiFromDomRange(range),contentDocumentState=contentDocumentStates[target.idref];contentDocumentState&&contentDocumentState.isUpdated?reader.openSpineItemElementCfi(target.idref,target.contentCFI):contentDocumentState.pendingNavRequest={idref:target.idref,contentCFI:target.contentCFI}},100);this.bindToContentDocument=function(contentDocument,spineItem){contentDocuments[spineItem.idref]=contentDocument,contentDocumentStates[spineItem.idref]={},function(contentDocument,spineItem){var renditionIdentifier=reader.metadata().identifier,spineItemIdentifier=spineItem.idref;renditionIdentifier&&spineItemIdentifier&&(appendMetaTag(contentDocument,"dc.relation.ispartof",renditionIdentifier),appendMetaTag(contentDocument,"dc.identifier",spineItemIdentifier))}(contentDocument,spineItem),function(contentDocument,spineItem){if(contentDocument.defaultView&&contentDocument.defaultView.parent){var canonicalLinkHref=getContentDocumentCanonicalLink(contentDocument);if(canonicalLinkHref){var link=contentDocument.createElement("link");link.setAttribute("rel","canonical"),link.setAttribute("href",canonicalLinkHref),contentDocument.head.appendChild(link),contentDocumentStates[spineItem.idref].canonicalLinkElement=link}}}(contentDocument,spineItem),function(contentDocument){contentDocument.addEventListener("scrolltorange",function(event){event.preventDefault();var range=event.detail;bringIntoViewDebounced(range)})}(contentDocument),spineItem.isReflowable()&&function(contentDocument){contentDocument.addEventListener("selectionchange",function(){var selection=contentDocument.getSelection();selection&&selection.isCollapsed?contentDocument.body.style.position="relative":contentDocument.body.style.position=""})}(contentDocument)},this.updateContentDocument=function(spineItem){var contentDocument=contentDocuments[spineItem.idref],state=contentDocumentStates[spineItem.idref];if(contentDocument&&state){if(state.canonicalLinkElement){var canonicalLinkHref=getContentDocumentCanonicalLink(contentDocument);canonicalLinkHref&&state.canonicalLinkElement.setAttribute("href",canonicalLinkHref)}state.isUpdated=!0;var pendingNavRequest=state.pendingNavRequest;pendingNavRequest&&(reader.openSpineItemElementCfi(pendingNavRequest.idref,pendingNavRequest.contentCFI),state.pendingNavRequest=null)}}}}),define("readium_shared_js/views/reader_view",["../globals","jquery","underscore","eventEmitter","./fixed_view","../helpers","./iframe_loader","./internal_links_support","./media_overlay_data_injector","./media_overlay_player","../models/package","../models/metadata","../models/page_open_request","./reflowable_view","./scroll_view","../models/style_collection","../models/switches","../models/trigger","../models/viewer_settings","../models/bookmark_data","../models/node_range_info","./external_agent_support"],function(Globals,$,_,EventEmitter,FixedView,Helpers,IFrameLoader,InternalLinksSupport,MediaOverlayDataInjector,MediaOverlayPlayer,Package,Metadata,PageOpenRequest,ReflowableView,ScrollView,StyleCollection,Switches,Trigger,ViewerSettings,BookmarkData,NodeRangeInfo,ExternalAgentSupport){var ReaderView=function(options){$.extend(this,new EventEmitter);var _mediaOverlayPlayer,_mediaOverlayDataInjector,_iframeLoader,_$el,self=this,_currentView=void 0,_package=void 0,_metadata=void 0,_spine=void 0,_viewerSettings=new ViewerSettings({}),_userStyles=new StyleCollection,_bookStyles=new StyleCollection,_internalLinksSupport=new InternalLinksSupport(this),_externalAgentSupport=new ExternalAgentSupport(this),lazyResize=Helpers.extendedThrottle(function(){_resizeBookmark=null,_resizeMOWasPlaying=!1,_currentView&&(_currentView.isReflowable&&_currentView.isReflowable()&&(_resizeMOWasPlaying=self.isPlayingMediaOverlay())&&self.pauseMediaOverlay(),_resizeBookmark=_currentView.bookmarkCurrentPage())},handleViewportResizeTick,function(){handleViewportResizeTick(),_resizeMOWasPlaying&&self.playMediaOverlay()},250,1e3,self);function initViewForItem(spineItem,callback){var desiredViewType=function(spineItem){return"scroll-doc"==_viewerSettings.scroll?ReaderView.VIEW_TYPE_SCROLLED_DOC:"scroll-continuous"==_viewerSettings.scroll?ReaderView.VIEW_TYPE_SCROLLED_CONTINUOUS:spineItem.isFixedLayout()?ReaderView.VIEW_TYPE_FIXED:spineItem.isFlowScrolledDoc()?ReaderView.VIEW_TYPE_SCROLLED_DOC:spineItem.isFlowScrolledContinuous()?ReaderView.VIEW_TYPE_SCROLLED_CONTINUOUS:ReaderView.VIEW_TYPE_COLUMNIZED}(spineItem);if(_currentView){if(self.getCurrentViewType()==desiredViewType)return void callback(!1);resetCurrentView()}var viewCreationParams={$viewport:_$el,spine:_spine,userStyles:_userStyles,bookStyles:_bookStyles,iframeLoader:_iframeLoader};_currentView=self.createViewForType(desiredViewType,viewCreationParams),Globals.logEvent("READER_VIEW_CREATED","EMIT","reader_view.js"),self.emit(Globals.Events.READER_VIEW_CREATED,desiredViewType),_currentView.on(Globals.Events.CONTENT_DOCUMENT_LOADED,function($iframe,spineItem){var contentDoc=$iframe[0].contentDocument;Globals.logEvent("CONTENT_DOCUMENT_LOADED","ON","reader_view.js (current view) [ "+spineItem.href+" ]"),Helpers.isIframeAlive($iframe[0])&&(_mediaOverlayDataInjector.attachMediaOverlayData($iframe,spineItem,_viewerSettings),_internalLinksSupport.processLinkElements($iframe,spineItem),_externalAgentSupport.bindToContentDocument(contentDoc,spineItem),Trigger.register(contentDoc),Switches.apply(contentDoc),Globals.logEvent("CONTENT_DOCUMENT_LOADED","EMIT","reader_view.js [ "+spineItem.href+" ]"),self.emit(Globals.Events.CONTENT_DOCUMENT_LOADED,$iframe,spineItem))}),_currentView.on(Globals.Events.CONTENT_DOCUMENT_LOAD_START,function($iframe,spineItem){Globals.logEvent("CONTENT_DOCUMENT_LOAD_START","EMIT","reader_view.js [ "+spineItem.href+" ]"),self.emit(Globals.Events.CONTENT_DOCUMENT_LOAD_START,$iframe,spineItem)}),_currentView.on(Globals.Events.CONTENT_DOCUMENT_UNLOADED,function($iframe,spineItem){Globals.logEvent("CONTENT_DOCUMENT_UNLOADED","EMIT","reader_view.js [ "+spineItem.href+" ]"),self.emit(Globals.Events.CONTENT_DOCUMENT_UNLOADED,$iframe,spineItem)}),_currentView.on(Globals.InternalEvents.CURRENT_VIEW_PAGINATION_CHANGED,function(pageChangeData){Globals.logEvent("InternalEvents.CURRENT_VIEW_PAGINATION_CHANGED","ON","reader_view.js"),_mediaOverlayPlayer.onPageChanged(pageChangeData),_.defer(function(){Globals.logEvent("PAGINATION_CHANGED","EMIT","reader_view.js"),self.emit(Globals.Events.PAGINATION_CHANGED,pageChangeData),pageChangeData.spineItem&&_.defer(function(){_externalAgentSupport.updateContentDocument(pageChangeData.spineItem)})})}),_currentView.on(Globals.Events.FXL_VIEW_RESIZED,function(){Globals.logEvent("FXL_VIEW_RESIZED","EMIT","reader_view.js"),self.emit(Globals.Events.FXL_VIEW_RESIZED)}),_currentView.render();_currentView.setViewSettings(_viewerSettings,!0),setTimeout(function(){callback(!0)},50)}function resetCurrentView(){_currentView&&(Globals.logEvent("READER_VIEW_DESTROYED","EMIT","reader_view.js"),self.emit(Globals.Events.READER_VIEW_DESTROYED),Globals.logEvent("InternalEvents.CURRENT_VIEW_PAGINATION_CHANGED","OFF","reader_view.js"),_currentView.off(Globals.InternalEvents.CURRENT_VIEW_PAGINATION_CHANGED),_currentView.remove(),_currentView=void 0)}function onMediaPlayerStatusChanged(status){Globals.logEvent("MEDIA_OVERLAY_STATUS_CHANGED","EMIT","reader_view.js (via MediaOverlayPlayer + AudioPlayer)"),self.emit(Globals.Events.MEDIA_OVERLAY_STATUS_CHANGED,status)}function getSpineItem(idref){if(idref){var spineItem=_spine.getItemById(idref);if(spineItem)return spineItem;console.log("Spine item with id "+idref+" not found!")}else console.log("idref parameter value missing!")}function openPage(pageRequest,dir){initViewForItem(pageRequest.spineItem,function(isViewChanged){if(!isViewChanged){_currentView.setViewSettings(_viewerSettings,!0)}_currentView.openPage(pageRequest,dir)})}function applyStyles(doNotUpdateView){Helpers.setStyles(_userStyles.getStyles(),_$el),_mediaOverlayPlayer&&_mediaOverlayPlayer.applyStyles(),doNotUpdateView||_currentView&&_currentView.applyStyles()}$(window).on("resize.ReadiumSDK.readerView",lazyResize),this.fonts=options.fonts,options.el instanceof $?(_$el=options.el,console.log("** EL is a jQuery selector:"+options.el.attr("id"))):(_$el=$(options.el),console.log("** EL is a string:"+_$el.attr("id"))),_iframeLoader=options.iframeLoader?options.iframeLoader:new IFrameLoader({mathJaxUrl:options.mathJaxUrl}),_needsFixedLayoutScalerWorkAround=options.needsFixedLayoutScalerWorkAround,this.needsFixedLayoutScalerWorkAround=function(){return _needsFixedLayoutScalerWorkAround},this.createViewForType=function(viewType,options){var createdView;switch(_$el.css("overflow","hidden"),viewType){case ReaderView.VIEW_TYPE_FIXED:_$el.css("overflow","auto"),createdView=new FixedView(options,self);break;case ReaderView.VIEW_TYPE_SCROLLED_DOC:createdView=new ScrollView(options,!1,self);break;case ReaderView.VIEW_TYPE_SCROLLED_CONTINUOUS:createdView=new ScrollView(options,!0,self);break;default:createdView=new ReflowableView(options,self)}return createdView},this.getCurrentViewType=function(){if(_currentView)return _currentView instanceof ReflowableView?ReaderView.VIEW_TYPE_COLUMNIZED:_currentView instanceof FixedView?ReaderView.VIEW_TYPE_FIXED:_currentView instanceof ScrollView?_currentView.isContinuousScroll()?ReaderView.VIEW_TYPE_SCROLLED_CONTINUOUS:ReaderView.VIEW_TYPE_SCROLLED_DOC:void console.error("Unrecognized view type")},this.getCurrentView=function(){return _currentView},this.getLoadedSpineItems=function(){return _currentView?_currentView.getLoadedSpineItems():[]},this.viewerSettings=function(){return _viewerSettings},this.package=function(){return _package},this.metadata=function(){return _metadata},this.spine=function(){return _spine},this.userStyles=function(){return _userStyles},this.openBook=function(openBookData){var packageData=openBookData.package?openBookData.package:openBookData;_package=new Package(packageData),_metadata=new Metadata(packageData.metadata),(_spine=_package.spine).handleLinear(!0),_mediaOverlayPlayer&&_mediaOverlayPlayer.reset(),(_mediaOverlayPlayer=new MediaOverlayPlayer(self,$.proxy(onMediaPlayerStatusChanged,self))).setAutomaticNextSmil(!!_viewerSettings.mediaOverlaysAutomaticPageTurn),_mediaOverlayDataInjector=new MediaOverlayDataInjector(_package.media_overlay,_mediaOverlayPlayer),resetCurrentView(),openBookData.settings&&self.updateSettings(openBookData.settings),openBookData.styles&&self.setStyles(openBookData.styles);var pageRequestData=void 0;openBookData.openPageRequest&&"function"==typeof openBookData.openPageRequest&&(openBookData.openPageRequest=openBookData.openPageRequest()),openBookData.openPageRequest&&(openBookData.openPageRequest.idref||openBookData.openPageRequest.contentRefUrl&&openBookData.openPageRequest.sourceFileHref?pageRequestData=openBookData.openPageRequest:console.log("Invalid page request data: idref required!"));var fallback=!1;if(pageRequestData){pageRequestData=openBookData.openPageRequest;try{fallback=pageRequestData.idref?pageRequestData.spineItemPageIndex?!self.openSpineItemPage(pageRequestData.idref,pageRequestData.spineItemPageIndex,self):pageRequestData.elementCfi?!self.openSpineItemElementCfi(pageRequestData.idref,pageRequestData.elementCfi,self):!self.openSpineItemPage(pageRequestData.idref,0,self):!self.openContentUrl(pageRequestData.contentRefUrl,pageRequestData.sourceFileHref,self)}catch(err){console.error("openPageRequest fail: fallback to first page!"),console.log(err),fallback=!0}}else fallback=!0;if(fallback){var spineItem=_spine.first();if(spineItem){var pageOpenRequest=new PageOpenRequest(spineItem,self);pageOpenRequest.setFirstPage(),openPage(pageOpenRequest,0)}}},this.openPageLeft=function(){_package.spine.isLeftToRight()?self.openPagePrev():self.openPageNext()},this.openPageRight=function(){_package.spine.isLeftToRight()?self.openPageNext():self.openPagePrev()},this.isCurrentViewFixedLayout=function(){return _currentView instanceof FixedView},this.setZoom=function(zoom){self.isCurrentViewFixedLayout()&&_currentView.setZoom(zoom)},this.getViewScale=function(){return self.isCurrentViewFixedLayout()?100*_currentView.getViewScale():100},this.updateSettings=function(settingsData){if(_viewerSettings.update(settingsData),_mediaOverlayPlayer&&_mediaOverlayPlayer.setAutomaticNextSmil(!!_viewerSettings.mediaOverlaysAutomaticPageTurn),_currentView&&!settingsData.doNotUpdateView){var bookMark=_currentView.bookmarkCurrentPage();if(bookMark&&bookMark.idref){var wasPlaying=!1;return _currentView.isReflowable&&_currentView.isReflowable()&&(wasPlaying=self.isPlayingMediaOverlay())&&self.pauseMediaOverlay(),void initViewForItem(_spine.getItemById(bookMark.idref),function(isViewChanged){if(!isViewChanged){_currentView.setViewSettings(_viewerSettings,!1)}self.once(ReadiumSDK.Events.PAGINATION_CHANGED,function(pageChangeData){new BookmarkData(bookMark.idref,bookMark.contentCFI)}),self.openSpineItemElementCfi(bookMark.idref,bookMark.contentCFI,self),wasPlaying&&self.playMediaOverlay(),Globals.logEvent("SETTINGS_APPLIED 1 (view update)","EMIT","reader_view.js"),self.emit(Globals.Events.SETTINGS_APPLIED)})}}Globals.logEvent("SETTINGS_APPLIED 2 (no view update)","EMIT","reader_view.js"),self.emit(Globals.Events.SETTINGS_APPLIED)},this.openPageNext=function(){if(self.getCurrentViewType()!==ReaderView.VIEW_TYPE_SCROLLED_CONTINUOUS){var paginationInfo=_currentView.getPaginationInfo();if(0!=paginationInfo.openPages.length){var lastOpenPage=paginationInfo.openPages[paginationInfo.openPages.length-1];if(lastOpenPage.spineItemPageIndex<lastOpenPage.spineItemPageCount-1)_currentView.openPageNext(self);else{var currentSpineItem=_spine.getItemById(lastOpenPage.idref),nextSpineItem=_spine.nextItem(currentSpineItem);if(nextSpineItem){var openPageRequest=new PageOpenRequest(nextSpineItem,self);openPageRequest.setFirstPage(),openPage(openPageRequest,2)}}}}else _currentView.openPageNext(self)},this.openPagePrev=function(){if(self.getCurrentViewType()!==ReaderView.VIEW_TYPE_SCROLLED_CONTINUOUS){var paginationInfo=_currentView.getPaginationInfo();if(0!=paginationInfo.openPages.length){var firstOpenPage=paginationInfo.openPages[0];if(firstOpenPage.spineItemPageIndex>0)_currentView.openPagePrev(self);else{var currentSpineItem=_spine.getItemById(firstOpenPage.idref),prevSpineItem=_spine.prevItem(currentSpineItem);if(prevSpineItem){var openPageRequest=new PageOpenRequest(prevSpineItem,self);openPageRequest.setLastPage(),openPage(openPageRequest,1)}}}}else _currentView.openPagePrev(self)},this.openSpineItemElementCfi=function(idref,elementCfi,initiator){var spineItem=getSpineItem(idref);if(!spineItem)return!1;var pageData=new PageOpenRequest(spineItem,initiator);return elementCfi&&pageData.setElementCfi(elementCfi),openPage(pageData,0),!0},this.openPageIndex=function(pageIndex,initiator){if(!_currentView)return!1;var pageRequest;if(_package.isFixedLayout()){var spineItem=_spine.items[pageIndex];if(!spineItem)return!1;(pageRequest=new PageOpenRequest(spineItem,initiator)).setPageIndex(0)}else{var spineItems=this.getLoadedSpineItems();spineItems.length>0&&(pageRequest=new PageOpenRequest(spineItems[0],initiator)).setPageIndex(pageIndex)}return openPage(pageRequest,0),!0},this.openSpineItemPage=function(idref,pageIndex,initiator){var spineItem=getSpineItem(idref);if(!spineItem)return!1;var pageData=new PageOpenRequest(spineItem,initiator);return pageIndex&&pageData.setPageIndex(pageIndex),openPage(pageData,0),!0},this.setStyles=function(styles,doNotUpdateView){for(var count=styles.length,i=0;i<count;i++)styles[i].declarations?_userStyles.addStyle(styles[i].selector,styles[i].declarations):_userStyles.removeStyle(styles[i].selector);applyStyles(doNotUpdateView)},this.setBookStyles=function(styles){for(var count=styles.length,i=0;i<count;i++)styles[i].declarations?_bookStyles.addStyle(styles[i].selector,styles[i].declarations):_bookStyles.removeStyle(styles[i].selector);_currentView&&_currentView.applyBookStyles()},this.getElement=function(spineItemIdref,selector){if(_currentView)return _currentView.getElement(spineItemIdref,selector)},this.getElementById=function(spineItemIdref,id){if(_currentView)return _currentView.getElementById(spineItemIdref,id)},this.getElementByCfi=function(spineItemIdref,cfi,classBlacklist,elementBlacklist,idBlacklist){if(_currentView)return _currentView.getElementByCfi(spineItemIdref,cfi,classBlacklist,elementBlacklist,idBlacklist)},this.mediaOverlaysOpenContentUrl=function(contentRefUrl,sourceFileHref,offset){_mediaOverlayPlayer.mediaOverlaysOpenContentUrl(contentRefUrl,sourceFileHref,offset)},this.openContentUrl=function(contentRefUrl,sourceFileHref,initiator){var hrefPart,elementId,combinedPath=Helpers.ResolveContentRef(contentRefUrl,sourceFileHref),hashIndex=combinedPath.indexOf("#");hashIndex>=0?(hrefPart=combinedPath.substr(0,hashIndex),elementId=combinedPath.substr(hashIndex+1)):(hrefPart=combinedPath,elementId=void 0);var spineItem=_spine.getItemByHref(hrefPart);if(!spineItem){console.warn("spineItem "+hrefPart+" not found");var decodedHrefPart=decodeURIComponent(hrefPart);if(!(spineItem=_spine.getItemByHref(decodedHrefPart)))return console.warn("decoded spineItem "+decodedHrefPart+" missing as well"),!1}return self.openSpineItemElementId(spineItem.idref,elementId,initiator)},this.openSpineItemElementId=function(idref,elementId,initiator){var spineItem=_spine.getItemById(idref);if(!spineItem)return!1;var pageData=new PageOpenRequest(spineItem,initiator);return elementId&&pageData.setElementId(elementId),openPage(pageData,0),!0},this.debugBookmarkData=function(cfi){if(ReadiumSDK);},this.bookmarkCurrentPage=function(){var bookmark=_currentView.bookmarkCurrentPage();return bookmark?bookmark.toString():null},this.clearStyles=function(){_userStyles.resetStyleValues(),applyStyles(),_userStyles.clear()},this.clearBookStyles=function(){_currentView&&(_bookStyles.resetStyleValues(),_currentView.applyBookStyles()),_bookStyles.clear()},this.isMediaOverlayAvailable=function(){return!!_mediaOverlayPlayer&&_mediaOverlayPlayer.isMediaOverlayAvailable()},this.toggleMediaOverlay=function(){_mediaOverlayPlayer.toggleMediaOverlay()},this.nextMediaOverlay=function(){_mediaOverlayPlayer.nextMediaOverlay()},this.previousMediaOverlay=function(){_mediaOverlayPlayer.previousMediaOverlay()},this.escapeMediaOverlay=function(){_mediaOverlayPlayer.escape()},this.ttsEndedMediaOverlay=function(){_mediaOverlayPlayer.onTTSEnd()},this.pauseMediaOverlay=function(){_mediaOverlayPlayer.pause()},this.playMediaOverlay=function(){_mediaOverlayPlayer.play()},this.isPlayingMediaOverlay=function(){return _mediaOverlayPlayer.isPlaying()},this.getFirstVisibleMediaOverlayElement=function(){if(_currentView)return _currentView.getFirstVisibleMediaOverlayElement()},this.insureElementVisibility=function(spineItemId,element,initiator){_currentView&&_currentView.insureElementVisibility(spineItemId,element,initiator)};var _resizeBookmark=null,_resizeMOWasPlaying=!1;function handleViewportResizeTick(){_currentView&&self.handleViewportResize(_resizeBookmark)}this.handleViewportResize=function(bookmarkToRestore){_currentView&&_currentView.onViewportResize()},this.addIFrameEventListener=function(eventName,callback,context){_iframeLoader.addIFrameEventListener(eventName,callback,context)};this.backgroundAudioTrackManager=new function(readerView){var _spineItemIframeMap={},_wasPlaying=!1,_callback_playPause=void 0;this.setCallback_PlayPause=function(callback){_callback_playPause=callback};var _callback_isAvailable=void 0;this.setCallback_IsAvailable=function(callback){_callback_isAvailable=callback},this.playPause=function(doPlay){_playPause(doPlay)};var _playPause=function(doPlay){_callback_playPause&&_callback_playPause(doPlay);try{var $iframe=void 0;for(var prop in _spineItemIframeMap)if(_spineItemIframeMap.hasOwnProperty(prop)){var data=_spineItemIframeMap[prop];if(data&&data.active&&($iframe&&console.error("More than one active iframe?? (pagination)"),$iframe=data.$iframe)){var $audios=$("audio",$iframe[0].contentDocument);$.each($audios,function(){var attr=this.getAttribute("epub:type")||this.getAttribute("type");return!attr||attr.indexOf("ibooks:soundtrack")<0&&attr.indexOf("media:soundtrack")<0&&attr.indexOf("media:background")<0||(doPlay&&this.play?this.play():this.pause&&this.pause(),!0)})}}}catch(err){console.error(err)}};this.setPlayState=function(wasPlaying){_wasPlaying=wasPlaying},readerView.on(Globals.Events.CONTENT_DOCUMENT_LOADED,function($iframe,spineItem){Globals.logEvent("CONTENT_DOCUMENT_LOADED","ON","reader_view.js (via BackgroundAudioTrackManager) [ "+spineItem.href+" ]");try{spineItem&&spineItem.idref&&$iframe&&$iframe[0]&&(_spineItemIframeMap[spineItem.idref]={$iframe:$iframe,href:spineItem.href})}catch(err){console.error(err)}}),readerView.on(Globals.Events.PAGINATION_CHANGED,function(pageChangeData){Globals.logEvent("PAGINATION_CHANGED","ON","reader_view.js (via BackgroundAudioTrackManager)");var atLeastOne=!1;try{for(var prop in _spineItemIframeMap)if(_spineItemIframeMap.hasOwnProperty(prop)){var isActive=pageChangeData.spineItem&&pageChangeData.spineItem.idref===prop,isDisplayed=!1;if(pageChangeData.paginationInfo&&pageChangeData.paginationInfo.openPages.length){for(var allSame=!0,i=0;i<pageChangeData.paginationInfo.openPages.length;i++)pageChangeData.paginationInfo.openPages[i].idref===prop?isDisplayed=!0:allSame=!1;!isActive&&allSame&&(isActive=!0)}if(isActive||isDisplayed){var data=_spineItemIframeMap[prop];if(!data)continue;_spineItemIframeMap[prop].active=isActive;var $iframe=data.$iframe,$audios=(data.href,$("audio",$iframe[0].contentDocument));$.each($audios,function(){var attr=this.getAttribute("epub:type")||this.getAttribute("type");return!attr||attr.indexOf("ibooks:soundtrack")<0&&attr.indexOf("media:soundtrack")<0&&attr.indexOf("media:background")<0||(this.setAttribute("loop","loop"),this.removeAttribute("autoplay"),isActive||this.pause&&this.pause(),atLeastOne=!0,!0)})}else _spineItemIframeMap[prop]&&(_spineItemIframeMap[prop].$iframe=void 0),_spineItemIframeMap[prop]=void 0}}catch(err){console.error(err)}_callback_isAvailable&&_callback_isAvailable(atLeastOne),_playPause(!!atLeastOne&&!!_wasPlaying)}),readerView.on(Globals.Events.MEDIA_OVERLAY_STATUS_CHANGED,function(value){if(Globals.logEvent("MEDIA_OVERLAY_STATUS_CHANGED","ON","reader_view.js (via BackgroundAudioTrackManager)"),value.smilIndex){var smil=readerView.package().media_overlay.smilAt(value.smilIndex);if(smil&&smil.spineItemId){var needUpdate=!1;for(var prop in _spineItemIframeMap)_spineItemIframeMap.hasOwnProperty(prop)&&(data=_spineItemIframeMap[prop])&&data.active&&prop!==smil.spineItemId&&(_playPause(!1),data.active=!1,needUpdate=!0);if(needUpdate){for(var prop in _spineItemIframeMap){var data;_spineItemIframeMap.hasOwnProperty(prop)&&(data=_spineItemIframeMap[prop])&&(data.active||prop===smil.spineItemId&&(data.active=!0))}_wasPlaying&&_playPause(!0)}}}})}(self),this.isVisibleSpineItemElementCfi=function(spineIdRef,partialCfi){if(!getSpineItem(spineIdRef))return!1;if(_currentView){if(!partialCfi||partialCfi&&""===partialCfi)for(var spines=_currentView.getLoadedSpineItems(),i=0,count=spines.length;i<count;i++)if(spines[i].idref==spineIdRef)return!0;return _currentView.isVisibleSpineItemElementCfi(spineIdRef,partialCfi)}return!1},this.getElements=function(spineItemIdref,selector){if(_currentView)return _currentView.getElements(spineItemIdref,selector)},this.isElementVisible=function(element){return _currentView.isElementVisible($(element))},this.getNodeRangeInfoFromCfi=function(spineIdRef,partialCfi){if(_currentView&&spineIdRef&&partialCfi){var nodeRangeInfo=_currentView.getNodeRangeInfoFromCfi(spineIdRef,partialCfi);if(nodeRangeInfo)return new NodeRangeInfo(nodeRangeInfo.clientRect).setStartInfo(nodeRangeInfo.startInfo).setEndInfo(nodeRangeInfo.endInfo)}},this.getPaginationInfo=function(){return _currentView.getPaginationInfo()},this.getFirstVisibleCfi=function(){if(_currentView)return _currentView.getFirstVisibleCfi()},this.getLastVisibleCfi=function(){if(_currentView)return _currentView.getLastVisibleCfi()},this.getStartCfi=function(){if(_currentView)return _currentView.getStartCfi()},this.getEndCfi=function(){if(_currentView)return _currentView.getEndCfi()},this.getDomRangesFromRangeCfi=function(rangeCfi,rangeCfi2,inclusive){if(_currentView)return _currentView.getDomRangesFromRangeCfi?_currentView.getDomRangesFromRangeCfi(rangeCfi,rangeCfi2,inclusive):[_currentView.getDomRangeFromRangeCfi(rangeCfi,rangeCfi2,inclusive)]},this.getDomRangesFromRangeCfi=function(rangeCfi,rangeCfi2,inclusive){if(_currentView)return _currentView.getDomRangesFromRangeCfi?_currentView.getDomRangesFromRangeCfi(rangeCfi,rangeCfi2,inclusive):[_currentView.getDomRangeFromRangeCfi(rangeCfi,rangeCfi2,inclusive)]},this.getDomRangeFromRangeCfi=function(startCfi,endCfi,inclusive){if(_currentView)return _currentView.getDomRangeFromRangeCfi(startCfi,endCfi,inclusive)},this.getRangeCfiFromDomRange=function(domRange){if(_currentView)return _currentView.getRangeCfiFromDomRange(domRange)},this.getVisibleCfiFromPoint=function(x,y,precisePoint,spineItemIdref){if(_currentView)return _currentView.getVisibleCfiFromPoint(x,y,precisePoint,spineItemIdref)},this.getRangeCfiFromPoints=function(startX,startY,endX,endY,spineItemIdref){if(_currentView)return _currentView.getRangeCfiFromPoints(startX,startY,endX,endY,spineItemIdref)},this.getCfiForElement=function(element){if(_currentView)return _currentView.getCfiForElement(element)},this.getNearestCfiFromElement=function(element){if(_currentView)return _currentView.getNearestCfiFromElement(element)}};return ReaderView.VIEW_TYPE_COLUMNIZED=1,ReaderView.VIEW_TYPE_FIXED=2,ReaderView.VIEW_TYPE_SCROLLED_DOC=3,ReaderView.VIEW_TYPE_SCROLLED_CONTINUOUS=4,ReaderView}),define("text",["module"],function(module){"use strict";var text,fs,Cc,Ci,xpcIsWindows,progIds=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"],xmlRegExp=/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,bodyRegExp=/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im,hasLocation="undefined"!=typeof location&&location.href,defaultProtocol=hasLocation&&location.protocol&&location.protocol.replace(/\:/,""),defaultHostName=hasLocation&&location.hostname,defaultPort=hasLocation&&(location.port||void 0),buildMap={},masterConfig=module.config&&module.config()||{};function useDefault(value,defaultValue){return void 0===value||""===value?defaultValue:value}return text={version:"2.0.15",strip:function(content){if(content){var matches=(content=content.replace(xmlRegExp,"")).match(bodyRegExp);matches&&(content=matches[1])}else content="";return content},jsEscape:function(content){return content.replace(/(['\\])/g,"\\$1").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r").replace(/[\u2028]/g,"\\u2028").replace(/[\u2029]/g,"\\u2029")},createXhr:masterConfig.createXhr||function(){var xhr,i,progId;if("undefined"!=typeof XMLHttpRequest)return new XMLHttpRequest;if("undefined"!=typeof ActiveXObject)for(i=0;i<3;i+=1){progId=progIds[i];try{xhr=new ActiveXObject(progId)}catch(e){}if(xhr){progIds=[progId];break}}return xhr},parseName:function(name){var modName,ext,temp,strip=!1,index=name.lastIndexOf("."),isRelative=0===name.indexOf("./")||0===name.indexOf("../");return-1!==index&&(!isRelative||index>1)?(modName=name.substring(0,index),ext=name.substring(index+1)):modName=name,-1!==(index=(temp=ext||modName).indexOf("!"))&&(strip="strip"===temp.substring(index+1),temp=temp.substring(0,index),ext?ext=temp:modName=temp),{moduleName:modName,ext:ext,strip:strip}},xdRegExp:/^((\w+)\:)?\/\/([^\/\\]+)/,useXhr:function(url,protocol,hostname,port){var uProtocol,uHostName,uPort,match=text.xdRegExp.exec(url);return!match||(uProtocol=match[2],uPort=(uHostName=(uHostName=match[3]).split(":"))[1],uHostName=uHostName[0],(!uProtocol||uProtocol===protocol)&&(!uHostName||uHostName.toLowerCase()===hostname.toLowerCase())&&(!uPort&&!uHostName||function(protocol1,port1,protocol2,port2){if(port1===port2)return!0;if(protocol1===protocol2){if("http"===protocol1)return useDefault(port1,"80")===useDefault(port2,"80");if("https"===protocol1)return useDefault(port1,"443")===useDefault(port2,"443")}return!1}(uProtocol,uPort,protocol,port)))},finishLoad:function(name,strip,content,onLoad){content=strip?text.strip(content):content,masterConfig.isBuild&&(buildMap[name]=content),onLoad(content)},load:function(name,req,onLoad,config){if(config&&config.isBuild&&!config.inlineText)onLoad();else{masterConfig.isBuild=config&&config.isBuild;var parsed=text.parseName(name),nonStripName=parsed.moduleName+(parsed.ext?"."+parsed.ext:""),url=req.toUrl(nonStripName),useXhr=masterConfig.useXhr||text.useXhr;0!==url.indexOf("empty:")?!hasLocation||useXhr(url,defaultProtocol,defaultHostName,defaultPort)?text.get(url,function(content){text.finishLoad(name,parsed.strip,content,onLoad)},function(err){onLoad.error&&onLoad.error(err)}):req([nonStripName],function(content){text.finishLoad(parsed.moduleName+"."+parsed.ext,parsed.strip,content,onLoad)}):onLoad()}},write:function(pluginName,moduleName,write,config){if(buildMap.hasOwnProperty(moduleName)){var content=text.jsEscape(buildMap[moduleName]);write.asModule(pluginName+"!"+moduleName,"define(function () { return '"+content+"';});\n")}},writeFile:function(pluginName,moduleName,req,write,config){var parsed=text.parseName(moduleName),extPart=parsed.ext?"."+parsed.ext:"",nonStripName=parsed.moduleName+extPart,fileName=req.toUrl(parsed.moduleName+extPart)+".js";text.load(nonStripName,req,function(value){var textWrite=function(contents){return write(fileName,contents)};textWrite.asModule=function(moduleName,contents){return write.asModule(moduleName,fileName,contents)},text.write(pluginName,nonStripName,textWrite,config)},config)}},"node"===masterConfig.env||!masterConfig.env&&"undefined"!=typeof process&&process.versions&&process.versions.node&&!process.versions["node-webkit"]&&!process.versions["atom-shell"]?(fs=require.nodeRequire("fs"),text.get=function(url,callback,errback){try{var file=fs.readFileSync(url,"utf8");"\ufeff"===file[0]&&(file=file.substring(1)),callback(file)}catch(e){errback&&errback(e)}}):"xhr"===masterConfig.env||!masterConfig.env&&text.createXhr()?text.get=function(url,callback,errback,headers){var header,xhr=text.createXhr();if(xhr.open("GET",url,!0),headers)for(header in headers)headers.hasOwnProperty(header)&&xhr.setRequestHeader(header.toLowerCase(),headers[header]);masterConfig.onXhr&&masterConfig.onXhr(xhr,url),xhr.onreadystatechange=function(evt){var status,err;4===xhr.readyState&&((status=xhr.status||0)>399&&status<600?((err=new Error(url+" HTTP status: "+status)).xhr=xhr,errback&&errback(err)):callback(xhr.responseText),masterConfig.onXhrComplete&&masterConfig.onXhrComplete(xhr,url))},xhr.send(null)}:"rhino"===masterConfig.env||!masterConfig.env&&"undefined"!=typeof Packages&&"undefined"!=typeof java?text.get=function(url,callback){var stringBuffer,line,file=new java.io.File(url),lineSeparator=java.lang.System.getProperty("line.separator"),input=new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(file),"utf-8")),content="";try{for(stringBuffer=new java.lang.StringBuffer,(line=input.readLine())&&line.length()&&65279===line.charAt(0)&&(line=line.substring(1)),null!==line&&stringBuffer.append(line);null!==(line=input.readLine());)stringBuffer.append(lineSeparator),stringBuffer.append(line);content=String(stringBuffer.toString())}finally{input.close()}callback(content)}:("xpconnect"===masterConfig.env||!masterConfig.env&&"undefined"!=typeof Components&&Components.classes&&Components.interfaces)&&(Cc=Components.classes,Ci=Components.interfaces,Components.utils.import("resource://gre/modules/FileUtils.jsm"),xpcIsWindows="@mozilla.org/windows-registry-key;1"in Cc,text.get=function(url,callback){var inStream,convertStream,fileObj,readData={};xpcIsWindows&&(url=url.replace(/\//g,"\\")),fileObj=new FileUtils.File(url);try{(inStream=Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream)).init(fileObj,1,0,!1),(convertStream=Cc["@mozilla.org/intl/converter-input-stream;1"].createInstance(Ci.nsIConverterInputStream)).init(inStream,"utf-8",inStream.available(),Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER),convertStream.readString(inStream.available(),readData),convertStream.close(),inStream.close(),callback(readData.value)}catch(e){throw new Error((fileObj&&fileObj.path||"")+": "+e)}}),text}),define("text!version.json",[],function(){return'{"readiumJsViewer":{"sha":"2c011d8c61a05db7bf0ce2a060a92ccad710ba97","clean":false,"version":"1.3.2","chromeVersion":"2.3.2","tag":"v2.1.0-3-g2c011d8","branch":"custom-loader","release":false,"timestamp":1573233468993},"readiumJs":{"sha":"5400ba0dd2c82cab58a25362d6c223f7b6239343","clean":false,"version":"0.31.1","tag":"0.31.1-8-g5400ba0","branch":"development","release":false,"timestamp":1573233469196},"readiumSharedJs":{"sha":"3042d11031bd3dd6d1c154606c0217e02d7f9280","clean":false,"version":"0.31.1","tag":"0.31.1-10-g3042d11","branch":"development","release":false,"timestamp":1573233469377}}'}),define("readium_js/epub-fetch/markup_parser",[],function(){return function(){var self=this;this.parseXml=function(xmlString){return self.parseMarkup(xmlString,"text/xml")},this.parseMarkup=function(markupString,contentType){return(new window.DOMParser).parseFromString(markupString,contentType)}}}),define("readium_js/epub-fetch/discover_content_type",["jquery","URIjs"],function($,URI){var _instance=void 0,ContentTypeDiscovery=function(){var self=this;ContentTypeDiscovery.suffixContentTypeMap={css:"text/css",epub:"application/epub+zip",gif:"image/gif",html:"text/html",jpg:"image/jpeg",jpeg:"image/jpeg",ncx:"application/x-dtbncx+xml",opf:"application/oebps-package+xml",png:"image/png",svg:"image/svg+xml",xhtml:"application/xhtml+xml"},this.identifyContentTypeFromFileName=function(contentUrl){var contentUrlSuffix=URI(contentUrl).suffix(),contentType="application/octet-stream";return void 0!==ContentTypeDiscovery.suffixContentTypeMap[contentUrlSuffix]&&(contentType=ContentTypeDiscovery.suffixContentTypeMap[contentUrlSuffix]),contentType},this.identifyContentType=function(contentUrl){var contentType=$.ajax({type:"HEAD",url:contentUrl,async:!1}).getResponseHeader("Content-Type");return null===contentType&&(contentType=self.identifyContentTypeFromFileName(contentUrl),console.log("guessed contentType ["+contentType+"] from URI ["+contentUrl+"]. Configuring the web server to provide the content type is recommended.")),contentType}};return _instance||(_instance=new ContentTypeDiscovery),_instance}),define("readium_js/epub-fetch/plain_resource_fetcher",["jquery","URIjs","./discover_content_type"],function($,URI,ContentTypeDiscovery){return function(parentFetcher){parentFetcher.getEbookURL();var ebookURL_filepath=parentFetcher.getEbookURL_FilePath(),self=this;this.resolveURI=function(pathRelativeToPackageRoot){var pathRelativeToPackageRootUri=void 0;try{pathRelativeToPackageRootUri=new URI(pathRelativeToPackageRoot)}catch(err){console.error(err),console.log(pathRelativeToPackageRoot)}if(pathRelativeToPackageRootUri&&pathRelativeToPackageRootUri.is("absolute"))return pathRelativeToPackageRoot;var url=ebookURL_filepath;try{url=new URI(url).search("").hash("").toString()}catch(err){console.error(err),console.log(url)}return url+("/"==url.charAt(url.length-1)?"":"/")+pathRelativeToPackageRoot},this.fetchFileContentsText=function(pathRelativeToPackageRoot,fetchCallback,onerror){var fileUrl=self.resolveURI(pathRelativeToPackageRoot);if(void 0===fileUrl)throw"Fetched file URL is undefined!";$.ajax({isLocal:0!==fileUrl.indexOf("http"),url:fileUrl,dataType:"text",async:!0,success:function(result){fetchCallback(result)},error:function(xhr,status,errorThrown){onerror(new Error(errorThrown))}})},this.fetchFileContentsBlob=function(pathRelativeToPackageRoot,fetchCallback,onerror){var decryptionFunction=parentFetcher.getDecryptionFunctionForRelativePath(pathRelativeToPackageRoot);if(decryptionFunction){var origFetchCallback=fetchCallback;fetchCallback=function(unencryptedBlob){decryptionFunction(unencryptedBlob,function(decryptedBlob){origFetchCallback(decryptedBlob)})}}!function(pathRelativeToPackageRoot,readCallback,onerror){var fileUrl=self.resolveURI(pathRelativeToPackageRoot);if(void 0===pathRelativeToPackageRoot)throw"Fetched file relative path is undefined!";var xhr=new XMLHttpRequest;xhr.open("GET",fileUrl,!0),xhr.responseType="arraybuffer",xhr.onerror=onerror,xhr.onload=function(loadEvent){readCallback(xhr.response)},xhr.send()}(pathRelativeToPackageRoot,function(contentsArrayBuffer){var blob=new Blob([contentsArrayBuffer],{type:ContentTypeDiscovery.identifyContentTypeFromFileName(pathRelativeToPackageRoot)});fetchCallback(blob)},onerror)}}}),function(obj){"use strict";var appendABViewSupported,ERR_BAD_FORMAT="File format is not recognized.",ERR_CRC="CRC failed.",ERR_ENCRYPTED="File contains encrypted entry.",ERR_ZIP64="File is using Zip64 (4gb+ file size).",ERR_READ="Error while reading zip file.",ERR_WRITE="Error while writing zip file.",ERR_WRITE_DATA="Error while writing file data.",ERR_READ_DATA="Error while reading file data.",ERR_DUPLICATED_NAME="File already exists.",CHUNK_SIZE=524288,TEXT_PLAIN="text/plain";try{appendABViewSupported=0===new Blob([new DataView(new ArrayBuffer(0))]).size}catch(e){}function Crc32(){this.crc=-1}function NOOP(){}function getDataHelper(byteLength,bytes){var dataBuffer,dataArray;return dataBuffer=new ArrayBuffer(byteLength),dataArray=new Uint8Array(dataBuffer),bytes&&dataArray.set(bytes,0),{buffer:dataBuffer,array:dataArray,view:new DataView(dataBuffer)}}function Reader(){}function TextReader(text){var blobReader,that=this;that.size=0,that.init=function(callback,onerror){var blob=new Blob([text],{type:TEXT_PLAIN});(blobReader=new BlobReader(blob)).init(function(){that.size=blobReader.size,callback()},onerror)},that.readUint8Array=function(index,length,callback,onerror){blobReader.readUint8Array(index,length,callback,onerror)}}function Data64URIReader(dataURI){var dataStart,that=this;that.size=0,that.init=function(callback){for(var dataEnd=dataURI.length;"="==dataURI.charAt(dataEnd-1);)dataEnd--;dataStart=dataURI.indexOf(",")+1,that.size=Math.floor(.75*(dataEnd-dataStart)),callback()},that.readUint8Array=function(index,length,callback){var i,data=getDataHelper(length),start=4*Math.floor(index/3),end=4*Math.ceil((index+length)/3),bytes=obj.atob(dataURI.substring(start+dataStart,end+dataStart)),delta=index-3*Math.floor(start/4);for(i=delta;i<delta+length;i++)data.array[i-delta]=bytes.charCodeAt(i);callback(data.array)}}function BlobReader(blob){var that=this;that.size=0,that.init=function(callback){that.size=blob.size,callback()},that.readUint8Array=function(index,length,callback,onerror){var reader=new FileReader;reader.onload=function(e){callback(new Uint8Array(e.target.result))},reader.onerror=onerror;try{reader.readAsArrayBuffer(function(blob,index,length){if(index<0||length<0||index+length>blob.size)throw new RangeError("offset:"+index+", length:"+length+", size:"+blob.size);return blob.slice?blob.slice(index,index+length):blob.webkitSlice?blob.webkitSlice(index,index+length):blob.mozSlice?blob.mozSlice(index,index+length):blob.msSlice?blob.msSlice(index,index+length):void 0}(blob,index,length))}catch(e){onerror(e)}}}function Writer(){}function TextWriter(encoding){var blob;this.init=function(callback){blob=new Blob([],{type:TEXT_PLAIN}),callback()},this.writeUint8Array=function(array,callback){blob=new Blob([blob,appendABViewSupported?array:array.buffer],{type:TEXT_PLAIN}),callback()},this.getData=function(callback,onerror){var reader=new FileReader;reader.onload=function(e){callback(e.target.result)},reader.onerror=onerror,reader.readAsText(blob,encoding)}}function Data64URIWriter(contentType){var data="",pending="";this.init=function(callback){data+="data:"+(contentType||"")+";base64,",callback()},this.writeUint8Array=function(array,callback){var i,delta=pending.length,dataString=pending;for(pending="",i=0;i<3*Math.floor((delta+array.length)/3)-delta;i++)dataString+=String.fromCharCode(array[i]);for(;i<array.length;i++)pending+=String.fromCharCode(array[i]);dataString.length>2?data+=obj.btoa(dataString):pending=dataString,callback()},this.getData=function(callback){callback(data+obj.btoa(pending))}}function BlobWriter(contentType){var data=[];this.init=function(callback){callback()},this.writeUint8Array=function(array,callback){data.push(appendABViewSupported?array:array.buffer),callback()},this.getData=function(callback){callback(new Blob(data,{type:contentType}))}}function launchWorkerProcess(worker,initialMessage,reader,writer,offset,size,onprogress,onend,onreaderror,onwriteerror){var index,outputSize,crc,chunkIndex=0,sn=initialMessage.sn;function onflush(){worker.removeEventListener("message",onmessage,!1),onend(outputSize,crc)}function onmessage(event){var message=event.data,data=message.data,err=message.error;if(err)return err.toString=function(){return"Error: "+this.message},void onreaderror(err);if(message.sn===sn)switch("number"==typeof message.codecTime&&(worker.codecTime+=message.codecTime),"number"==typeof message.crcTime&&(worker.crcTime+=message.crcTime),message.type){case"append":data?(outputSize+=data.length,writer.writeUint8Array(data,function(){step()},onwriteerror)):step();break;case"flush":crc=message.crc,data?(outputSize+=data.length,writer.writeUint8Array(data,function(){onflush()},onwriteerror)):onflush();break;case"progress":onprogress&&onprogress(index+message.loaded,size);break;case"importScripts":case"newTask":case"echo":break;default:console.warn("zip.js:launchWorkerProcess: unknown message: ",message)}}function step(){(index=chunkIndex*CHUNK_SIZE)<=size?reader.readUint8Array(offset+index,Math.min(CHUNK_SIZE,size-index),function(array){onprogress&&onprogress(index,size);var msg=0===index?initialMessage:{sn:sn};msg.type="append",msg.data=array;try{worker.postMessage(msg,[array.buffer])}catch(ex){worker.postMessage(msg)}chunkIndex++},onreaderror):worker.postMessage({sn:sn,type:"flush"})}outputSize=0,worker.addEventListener("message",onmessage,!1),step()}function launchProcess(process,reader,writer,offset,size,crcType,onprogress,onend,onreaderror,onwriteerror){var index,chunkIndex=0,outputSize=0,crcInput="input"===crcType,crcOutput="output"===crcType,crc=new Crc32;!function step(){var outputData;if((index=chunkIndex*CHUNK_SIZE)<size)reader.readUint8Array(offset+index,Math.min(CHUNK_SIZE,size-index),function(inputData){var outputData;try{outputData=process.append(inputData,function(loaded){onprogress&&onprogress(index+loaded,size)})}catch(e){return void onreaderror(e)}outputData?(outputSize+=outputData.length,writer.writeUint8Array(outputData,function(){chunkIndex++,setTimeout(step,1)},onwriteerror),crcOutput&&crc.append(outputData)):(chunkIndex++,setTimeout(step,1)),crcInput&&crc.append(inputData),onprogress&&onprogress(index,size)},onreaderror);else{try{outputData=process.flush()}catch(e){return void onreaderror(e)}outputData?(crcOutput&&crc.append(outputData),outputSize+=outputData.length,writer.writeUint8Array(outputData,function(){onend(outputSize,crc.get())},onwriteerror)):onend(outputSize,crc.get())}}()}function copy(worker,sn,reader,writer,offset,size,computeCrc32,onend,onprogress,onreaderror,onwriteerror){obj.zip.useWebWorkers&&computeCrc32?launchWorkerProcess(worker,{sn:sn,codecClass:"NOOP",crcType:"input"},reader,writer,offset,size,onprogress,onend,onreaderror,onwriteerror):launchProcess(new NOOP,reader,writer,offset,size,"input",onprogress,onend,onreaderror,onwriteerror)}function decodeASCII(str){var i,charCode,out="",extendedASCII=["Ç","ü","é","â","ä","à","å","ç","ê","ë","è","ï","î","ì","Ä","Å","É","æ","Æ","ô","ö","ò","û","ù","ÿ","Ö","Ü","ø","£","Ø","×","ƒ","á","í","ó","ú","ñ","Ñ","ª","º","¿","®","¬","½","¼","¡","«","»","_","_","_","¦","¦","Á","Â","À","©","¦","¦","+","+","¢","¥","+","+","-","-","+","-","+","ã","Ã","+","+","-","-","¦","-","+","¤","ð","Ð","Ê","Ë","È","i","Í","Î","Ï","+","+","_","_","¦","Ì","_","Ó","ß","Ô","Ò","õ","Õ","µ","þ","Þ","Ú","Û","Ù","ý","Ý","¯","´","","±","_","¾","¶","§","÷","¸","°","¨","·","¹","³","²","_"," "];for(i=0;i<str.length;i++)out+=(charCode=255&str.charCodeAt(i))>127?extendedASCII[charCode-128]:String.fromCharCode(charCode);return out}function decodeUTF8(string){return decodeURIComponent(escape(string))}function getString(bytes){var i,str="";for(i=0;i<bytes.length;i++)str+=String.fromCharCode(bytes[i]);return str}function readCommonHeader(entry,data,index,centralDirectory,onerror){entry.version=data.view.getUint16(index,!0),entry.bitFlag=data.view.getUint16(index+2,!0),entry.compressionMethod=data.view.getUint16(index+4,!0),entry.lastModDateRaw=data.view.getUint32(index+6,!0),entry.lastModDate=function(timeRaw){var date=(4294901760&timeRaw)>>16,time=65535&timeRaw;try{return new Date(1980+((65024&date)>>9),((480&date)>>5)-1,31&date,(63488&time)>>11,(2016&time)>>5,2*(31&time),0)}catch(e){}}(entry.lastModDateRaw),1!=(1&entry.bitFlag)?((centralDirectory||8!=(8&entry.bitFlag))&&(entry.crc32=data.view.getUint32(index+10,!0),entry.compressedSize=data.view.getUint32(index+14,!0),entry.uncompressedSize=data.view.getUint32(index+18,!0)),4294967295!==entry.compressedSize&&4294967295!==entry.uncompressedSize?(entry.filenameLength=data.view.getUint16(index+22,!0),entry.extraFieldLength=data.view.getUint16(index+24,!0)):onerror(ERR_ZIP64)):onerror(ERR_ENCRYPTED)}function createZipReader(reader,callback,onerror){var inflateSN=0;function Entry(){}Entry.prototype.getData=function(writer,onend,onprogress,checkCrc32){var that=this;function getWriterData(uncompressedSize,crc32){checkCrc32&&!function(crc32){var dataCrc32=getDataHelper(4);return dataCrc32.view.setUint32(0,crc32),that.crc32==dataCrc32.view.getUint32(0)}(crc32)?onerror(ERR_CRC):writer.getData(function(data){onend(data)})}function onreaderror(err){onerror(err||ERR_READ_DATA)}function onwriteerror(err){onerror(err||ERR_WRITE_DATA)}reader.readUint8Array(that.offset,30,function(bytes){var dataOffset,data=getDataHelper(bytes.length,bytes);1347093252==data.view.getUint32(0)?(readCommonHeader(that,data,4,!1,onerror),dataOffset=that.offset+30+that.filenameLength+that.extraFieldLength,writer.init(function(){0===that.compressionMethod?copy(that._worker,inflateSN++,reader,writer,dataOffset,that.compressedSize,checkCrc32,getWriterData,onprogress,onreaderror,onwriteerror):function(worker,sn,reader,writer,offset,size,computeCrc32,onend,onprogress,onreaderror,onwriteerror){var crcType=computeCrc32?"output":"none";obj.zip.useWebWorkers?launchWorkerProcess(worker,{sn:sn,codecClass:"Inflater",crcType:crcType},reader,writer,offset,size,onprogress,onend,onreaderror,onwriteerror):launchProcess(new obj.zip.Inflater,reader,writer,offset,size,crcType,onprogress,onend,onreaderror,onwriteerror)}(that._worker,inflateSN++,reader,writer,dataOffset,that.compressedSize,checkCrc32,getWriterData,onprogress,onreaderror,onwriteerror)},onwriteerror)):onerror(ERR_BAD_FORMAT)},onreaderror)};var zipReader={getEntries:function(callback){var worker=this._worker;!function(eocdrCallback){var EOCDR_MIN=22;if(reader.size<EOCDR_MIN)onerror(ERR_BAD_FORMAT);else{var EOCDR_MAX=EOCDR_MIN+65536;doSeek(EOCDR_MIN,function(){doSeek(Math.min(EOCDR_MAX,reader.size),function(){onerror(ERR_BAD_FORMAT)})})}function doSeek(length,eocdrNotFoundCallback){reader.readUint8Array(reader.size-length,length,function(bytes){for(var i=bytes.length-EOCDR_MIN;i>=0;i--)if(80===bytes[i]&&75===bytes[i+1]&&5===bytes[i+2]&&6===bytes[i+3])return void eocdrCallback(new DataView(bytes.buffer,i,EOCDR_MIN));eocdrNotFoundCallback()},function(){onerror(ERR_READ)})}}(function(dataView){var datalength,fileslength;datalength=dataView.getUint32(16,!0),fileslength=dataView.getUint16(8,!0),datalength<0||datalength>=reader.size?onerror(ERR_BAD_FORMAT):reader.readUint8Array(datalength,reader.size-datalength,function(bytes){var i,entry,filename,comment,index=0,entries=[],data=getDataHelper(bytes.length,bytes);for(i=0;i<fileslength;i++){if((entry=new Entry)._worker=worker,1347092738!=data.view.getUint32(index))return void onerror(ERR_BAD_FORMAT);readCommonHeader(entry,data,index+6,!0,onerror),entry.commentLength=data.view.getUint16(index+32,!0),entry.directory=16==(16&data.view.getUint8(index+38)),entry.offset=data.view.getUint32(index+42,!0),filename=getString(data.array.subarray(index+46,index+46+entry.filenameLength)),entry.filename=2048==(2048&entry.bitFlag)?decodeUTF8(filename):decodeASCII(filename),entry.directory||"/"!=entry.filename.charAt(entry.filename.length-1)||(entry.directory=!0),comment=getString(data.array.subarray(index+46+entry.filenameLength+entry.extraFieldLength,index+46+entry.filenameLength+entry.extraFieldLength+entry.commentLength)),entry.comment=2048==(2048&entry.bitFlag)?decodeUTF8(comment):decodeASCII(comment),entries.push(entry),index+=46+entry.filenameLength+entry.extraFieldLength+entry.commentLength}callback(entries)},function(){onerror(ERR_READ)})})},close:function(callback){this._worker&&(this._worker.terminate(),this._worker=null),callback&&callback()},_worker:null};obj.zip.useWebWorkers?createWorker("inflater",function(worker){zipReader._worker=worker,callback(zipReader)},function(err){onerror(err)}):callback(zipReader)}function encodeUTF8(string){return unescape(encodeURIComponent(string))}function getBytes(str){var i,array=[];for(i=0;i<str.length;i++)array.push(str.charCodeAt(i));return array}function createZipWriter(writer,callback,onerror,dontDeflate){var files={},filenames=[],datalength=0,deflateSN=0;function onwriteerror(err){onerror(err||ERR_WRITE)}function onreaderror(err){onerror(err||ERR_READ_DATA)}var zipWriter={add:function(name,reader,onend,onprogress,options){var header,filename,date,worker=this._worker;function writeFooter(compressedLength,crc32){var footer=getDataHelper(16);datalength+=compressedLength||0,footer.view.setUint32(0,1347094280),void 0!==crc32&&(header.view.setUint32(10,crc32,!0),footer.view.setUint32(4,crc32,!0)),reader&&(footer.view.setUint32(8,compressedLength,!0),header.view.setUint32(14,compressedLength,!0),footer.view.setUint32(12,reader.size,!0),header.view.setUint32(18,reader.size,!0)),writer.writeUint8Array(footer.array,function(){datalength+=16,onend()},onwriteerror)}function writeFile(){var callback,data;(options=options||{},name=name.trim(),options.directory&&"/"!=name.charAt(name.length-1)&&(name+="/"),files.hasOwnProperty(name))?onerror(ERR_DUPLICATED_NAME):(filename=getBytes(encodeUTF8(name)),filenames.push(name),callback=function(){reader?dontDeflate||0===options.level?copy(worker,deflateSN++,reader,writer,0,reader.size,!0,writeFooter,onprogress,onreaderror,onwriteerror):function(worker,sn,reader,writer,level,onend,onprogress,onreaderror,onwriteerror){obj.zip.useWebWorkers?launchWorkerProcess(worker,{sn:sn,options:{level:level},codecClass:"Deflater",crcType:"input"},reader,writer,0,reader.size,onprogress,onend,onreaderror,onwriteerror):launchProcess(new obj.zip.Deflater,reader,writer,0,reader.size,"input",onprogress,onend,onreaderror,onwriteerror)}(worker,deflateSN++,reader,writer,options.level,writeFooter,onprogress,onreaderror,onwriteerror):writeFooter()},date=options.lastModDate||new Date,header=getDataHelper(26),files[name]={headerArray:header.array,directory:options.directory,filename:filename,offset:datalength,comment:getBytes(encodeUTF8(options.comment||""))},header.view.setUint32(0,335546376),options.version&&header.view.setUint8(0,options.version),dontDeflate||0===options.level||options.directory||header.view.setUint16(4,2048),header.view.setUint16(6,(date.getHours()<<6|date.getMinutes())<<5|date.getSeconds()/2,!0),header.view.setUint16(8,(date.getFullYear()-1980<<4|date.getMonth()+1)<<5|date.getDate(),!0),header.view.setUint16(22,filename.length,!0),(data=getDataHelper(30+filename.length)).view.setUint32(0,1347093252),data.array.set(header.array,4),data.array.set(filename,30),datalength+=data.array.length,writer.writeUint8Array(data.array,callback,onwriteerror))}reader?reader.init(writeFile,onreaderror):writeFile()},close:function(callback){this._worker&&(this._worker.terminate(),this._worker=null);var data,indexFilename,file,length=0,index=0;for(indexFilename=0;indexFilename<filenames.length;indexFilename++)length+=46+(file=files[filenames[indexFilename]]).filename.length+file.comment.length;for(data=getDataHelper(length+22),indexFilename=0;indexFilename<filenames.length;indexFilename++)file=files[filenames[indexFilename]],data.view.setUint32(index,1347092738),data.view.setUint16(index+4,5120),data.array.set(file.headerArray,index+6),data.view.setUint16(index+32,file.comment.length,!0),file.directory&&data.view.setUint8(index+38,16),data.view.setUint32(index+42,file.offset,!0),data.array.set(file.filename,index+46),data.array.set(file.comment,index+46+file.filename.length),index+=46+file.filename.length+file.comment.length;data.view.setUint32(index,1347093766),data.view.setUint16(index+8,filenames.length,!0),data.view.setUint16(index+10,filenames.length,!0),data.view.setUint32(index+12,length,!0),data.view.setUint32(index+16,datalength,!0),writer.writeUint8Array(data.array,function(){writer.getData(callback)},onwriteerror)},_worker:null};obj.zip.useWebWorkers?createWorker("deflater",function(worker){zipWriter._worker=worker,callback(zipWriter)},function(err){onerror(err)}):callback(zipWriter)}Crc32.prototype.append=function(data){for(var crc=0|this.crc,table=this.table,offset=0,len=0|data.length;offset<len;offset++)crc=crc>>>8^table[255&(crc^data[offset])];this.crc=crc},Crc32.prototype.get=function(){return~this.crc},Crc32.prototype.table=function(){var i,j,t,table=[];for(i=0;i<256;i++){for(t=i,j=0;j<8;j++)1&t?t=t>>>1^3988292384:t>>>=1;table[i]=t}return table}(),NOOP.prototype.append=function(bytes,onprogress){return bytes},NOOP.prototype.flush=function(){},TextReader.prototype=new Reader,TextReader.prototype.constructor=TextReader,Data64URIReader.prototype=new Reader,Data64URIReader.prototype.constructor=Data64URIReader,BlobReader.prototype=new Reader,BlobReader.prototype.constructor=BlobReader,Writer.prototype.getData=function(callback){callback(this.data)},TextWriter.prototype=new Writer,TextWriter.prototype.constructor=TextWriter,Data64URIWriter.prototype=new Writer,Data64URIWriter.prototype.constructor=Data64URIWriter,BlobWriter.prototype=new Writer,BlobWriter.prototype.constructor=BlobWriter;var DEFAULT_WORKER_SCRIPTS={deflater:["z-worker.js","deflate.js"],inflater:["z-worker.js","inflate.js"]};function createWorker(type,callback,onerror){if(null===obj.zip.workerScripts||null===obj.zip.workerScriptsPath){var scripts,urls,a;if(obj.zip.workerScripts){if(scripts=obj.zip.workerScripts[type],!Array.isArray(scripts))return void onerror(new Error("zip.workerScripts."+type+" is not an array!"));urls=scripts,a=document.createElement("a"),scripts=urls.map(function(url){return a.href=url,a.href})}else(scripts=DEFAULT_WORKER_SCRIPTS[type].slice(0))[0]=(obj.zip.workerScriptsPath||"")+scripts[0];var worker=new Worker(scripts[0]);worker.codecTime=worker.crcTime=0,worker.postMessage({type:"importScripts",scripts:scripts.slice(1)}),worker.addEventListener("message",function onmessage(ev){var msg=ev.data;if(msg.error)return worker.terminate(),void onerror(msg.error);"importScripts"===msg.type&&(worker.removeEventListener("message",onmessage),worker.removeEventListener("error",errorHandler),callback(worker))}),worker.addEventListener("error",errorHandler)}else onerror(new Error("Either zip.workerScripts or zip.workerScriptsPath may be set, not both."));function errorHandler(err){worker.terminate(),onerror(err)}}function onerror_default(error){console.error(error)}obj.zip={Reader:Reader,Writer:Writer,BlobReader:BlobReader,Data64URIReader:Data64URIReader,TextReader:TextReader,BlobWriter:BlobWriter,Data64URIWriter:Data64URIWriter,TextWriter:TextWriter,createReader:function(reader,callback,onerror){onerror=onerror||onerror_default,reader.init(function(){createZipReader(reader,callback,onerror)},onerror)},createWriter:function(writer,callback,onerror,dontDeflate){onerror=onerror||onerror_default,dontDeflate=!!dontDeflate,writer.init(function(){createZipWriter(writer,callback,onerror,dontDeflate)},onerror)},useWebWorkers:!0,workerScriptsPath:null,workerScripts:null}}(this),define("zip",function(global){return function(){return global.zip}}(this)),function(){"use strict";var table={application:{"andrew-inset":"ez",annodex:"anx","atom+xml":"atom","atomcat+xml":"atomcat","atomserv+xml":"atomsrv",bbolin:"lin",cap:["cap","pcap"],"cu-seeme":"cu","davmount+xml":"davmount",dsptype:"tsp",ecmascript:["es","ecma"],futuresplash:"spl",hta:"hta","java-archive":"jar","java-serialized-object":"ser","java-vm":"class",javascript:"js",m3g:"m3g","mac-binhex40":"hqx",mathematica:["nb","ma","mb"],msaccess:"mdb",msword:["doc","dot"],mxf:"mxf",oda:"oda",ogg:"ogx",pdf:"pdf","pgp-keys":"key","pgp-signature":["asc","sig"],"pics-rules":"prf",postscript:["ps","ai","eps","epsi","epsf","eps2","eps3"],rar:"rar","rdf+xml":"rdf","rss+xml":"rss",rtf:"rtf",smil:["smi","smil"],"xhtml+xml":["xhtml","xht"],xml:["xml","xsl","xsd"],"xspf+xml":"xspf",zip:"zip","vnd.android.package-archive":"apk","vnd.cinderella":"cdy","vnd.google-earth.kml+xml":"kml","vnd.google-earth.kmz":"kmz","vnd.mozilla.xul+xml":"xul","vnd.ms-excel":["xls","xlb","xlt","xlm","xla","xlc","xlw"],"vnd.ms-pki.seccat":"cat","vnd.ms-pki.stl":"stl","vnd.ms-powerpoint":["ppt","pps","pot"],"vnd.oasis.opendocument.chart":"odc","vnd.oasis.opendocument.database":"odb","vnd.oasis.opendocument.formula":"odf","vnd.oasis.opendocument.graphics":"odg","vnd.oasis.opendocument.graphics-template":"otg","vnd.oasis.opendocument.image":"odi","vnd.oasis.opendocument.presentation":"odp","vnd.oasis.opendocument.presentation-template":"otp","vnd.oasis.opendocument.spreadsheet":"ods","vnd.oasis.opendocument.spreadsheet-template":"ots","vnd.oasis.opendocument.text":"odt","vnd.oasis.opendocument.text-master":"odm","vnd.oasis.opendocument.text-template":"ott","vnd.oasis.opendocument.text-web":"oth","vnd.openxmlformats-officedocument.spreadsheetml.sheet":"xlsx","vnd.openxmlformats-officedocument.spreadsheetml.template":"xltx","vnd.openxmlformats-officedocument.presentationml.presentation":"pptx","vnd.openxmlformats-officedocument.presentationml.slideshow":"ppsx","vnd.openxmlformats-officedocument.presentationml.template":"potx","vnd.openxmlformats-officedocument.wordprocessingml.document":"docx","vnd.openxmlformats-officedocument.wordprocessingml.template":"dotx","vnd.smaf":"mmf","vnd.stardivision.calc":"sdc","vnd.stardivision.chart":"sds","vnd.stardivision.draw":"sda","vnd.stardivision.impress":"sdd","vnd.stardivision.math":["sdf","smf"],"vnd.stardivision.writer":["sdw","vor"],"vnd.stardivision.writer-global":"sgl","vnd.sun.xml.calc":"sxc","vnd.sun.xml.calc.template":"stc","vnd.sun.xml.draw":"sxd","vnd.sun.xml.draw.template":"std","vnd.sun.xml.impress":"sxi","vnd.sun.xml.impress.template":"sti","vnd.sun.xml.math":"sxm","vnd.sun.xml.writer":"sxw","vnd.sun.xml.writer.global":"sxg","vnd.sun.xml.writer.template":"stw","vnd.symbian.install":["sis","sisx"],"vnd.visio":["vsd","vst","vss","vsw"],"vnd.wap.wbxml":"wbxml","vnd.wap.wmlc":"wmlc","vnd.wap.wmlscriptc":"wmlsc","vnd.wordperfect":"wpd","vnd.wordperfect5.1":"wp5","x-123":"wk","x-7z-compressed":"7z","x-abiword":"abw","x-apple-diskimage":"dmg","x-bcpio":"bcpio","x-bittorrent":"torrent","x-cbr":["cbr","cba","cbt","cb7"],"x-cbz":"cbz","x-cdf":["cdf","cda"],"x-cdlink":"vcd","x-chess-pgn":"pgn","x-cpio":"cpio","x-csh":"csh","x-debian-package":["deb","udeb"],"x-director":["dcr","dir","dxr","cst","cct","cxt","w3d","fgd","swa"],"x-dms":"dms","x-doom":"wad","x-dvi":"dvi","x-httpd-eruby":"rhtml","x-font":"pcf.Z","x-freemind":"mm","x-gnumeric":"gnumeric","x-go-sgf":"sgf","x-graphing-calculator":"gcf","x-gtar":["gtar","taz"],"x-hdf":"hdf","x-httpd-php":["phtml","pht","php"],"x-httpd-php-source":"phps","x-httpd-php3":"php3","x-httpd-php3-preprocessed":"php3p","x-httpd-php4":"php4","x-httpd-php5":"php5","x-ica":"ica","x-info":"info","x-internet-signup":["ins","isp"],"x-iphone":"iii","x-iso9660-image":"iso","x-java-jnlp-file":"jnlp","x-jmol":"jmz","x-killustrator":"kil","x-koan":["skp","skd","skt","skm"],"x-kpresenter":["kpr","kpt"],"x-kword":["kwd","kwt"],"x-latex":"latex","x-lha":"lha","x-lyx":"lyx","x-lzh":"lzh","x-lzx":"lzx","x-maker":["frm","maker","frame","fm","fb","book","fbdoc"],"x-ms-wmd":"wmd","x-ms-wmz":"wmz","x-msdos-program":["com","exe","bat","dll"],"x-msi":"msi","x-netcdf":["nc","cdf"],"x-ns-proxy-autoconfig":["pac","dat"],"x-nwc":"nwc","x-object":"o","x-oz-application":"oza","x-pkcs7-certreqresp":"p7r","x-python-code":["pyc","pyo"],"x-qgis":["qgs","shp","shx"],"x-quicktimeplayer":"qtl","x-redhat-package-manager":"rpm","x-ruby":"rb","x-sh":"sh","x-shar":"shar","x-shockwave-flash":["swf","swfl"],"x-silverlight":"scr","x-stuffit":"sit","x-sv4cpio":"sv4cpio","x-sv4crc":"sv4crc","x-tar":"tar","x-tcl":"tcl","x-tex-gf":"gf","x-tex-pk":"pk","x-texinfo":["texinfo","texi"],"x-trash":["~","%","bak","old","sik"],"x-troff":["t","tr","roff"],"x-troff-man":"man","x-troff-me":"me","x-troff-ms":"ms","x-ustar":"ustar","x-wais-source":"src","x-wingz":"wz","x-x509-ca-cert":["crt","der","cer"],"x-xcf":"xcf","x-xfig":"fig","x-xpinstall":"xpi",applixware:"aw","atomsvc+xml":"atomsvc","ccxml+xml":"ccxml","cdmi-capability":"cdmia","cdmi-container":"cdmic","cdmi-domain":"cdmid","cdmi-object":"cdmio","cdmi-queue":"cdmiq","docbook+xml":"dbk","dssc+der":"dssc","dssc+xml":"xdssc","emma+xml":"emma","epub+zip":"epub",exi:"exi","font-tdpfr":"pfr","gml+xml":"gml","gpx+xml":"gpx",gxf:"gxf",hyperstudio:"stk","inkml+xml":["ink","inkml"],ipfix:"ipfix",json:"json","jsonml+json":"jsonml","lost+xml":"lostxml","mads+xml":"mads",marc:"mrc","marcxml+xml":"mrcx","mathml+xml":"mathml",mbox:"mbox","mediaservercontrol+xml":"mscml","metalink+xml":"metalink","metalink4+xml":"meta4","mets+xml":"mets","mods+xml":"mods",mp21:["m21","mp21"],mp4:"mp4s","oebps-package+xml":"opf","omdoc+xml":"omdoc",onenote:["onetoc","onetoc2","onetmp","onepkg"],oxps:"oxps","patch-ops-error+xml":"xer","pgp-encrypted":"pgp",pkcs10:"p10","pkcs7-mime":["p7m","p7c"],"pkcs7-signature":"p7s",pkcs8:"p8","pkix-attr-cert":"ac","pkix-crl":"crl","pkix-pkipath":"pkipath",pkixcmp:"pki","pls+xml":"pls","prs.cww":"cww","pskc+xml":"pskcxml","reginfo+xml":"rif","relax-ng-compact-syntax":"rnc","resource-lists+xml":"rl","resource-lists-diff+xml":"rld","rls-services+xml":"rs","rpki-ghostbusters":"gbr","rpki-manifest":"mft","rpki-roa":"roa","rsd+xml":"rsd","sbml+xml":"sbml","scvp-cv-request":"scq","scvp-cv-response":"scs","scvp-vp-request":"spq","scvp-vp-response":"spp",sdp:"sdp","set-payment-initiation":"setpay","set-registration-initiation":"setreg","shf+xml":"shf","sparql-query":"rq","sparql-results+xml":"srx",srgs:"gram","srgs+xml":"grxml","sru+xml":"sru","ssdl+xml":"ssdl","ssml+xml":"ssml","tei+xml":["tei","teicorpus"],"thraud+xml":"tfi","timestamped-data":"tsd","vnd.3gpp.pic-bw-large":"plb","vnd.3gpp.pic-bw-small":"psb","vnd.3gpp.pic-bw-var":"pvb","vnd.3gpp2.tcap":"tcap","vnd.3m.post-it-notes":"pwn","vnd.accpac.simply.aso":"aso","vnd.accpac.simply.imp":"imp","vnd.acucobol":"acu","vnd.acucorp":["atc","acutc"],"vnd.adobe.air-application-installer-package+zip":"air","vnd.adobe.formscentral.fcdt":"fcdt","vnd.adobe.fxp":["fxp","fxpl"],"vnd.adobe.xdp+xml":"xdp","vnd.adobe.xfdf":"xfdf","vnd.ahead.space":"ahead","vnd.airzip.filesecure.azf":"azf","vnd.airzip.filesecure.azs":"azs","vnd.amazon.ebook":"azw","vnd.americandynamics.acc":"acc","vnd.amiga.ami":"ami","vnd.anser-web-certificate-issue-initiation":"cii","vnd.anser-web-funds-transfer-initiation":"fti","vnd.antix.game-component":"atx","vnd.apple.installer+xml":"mpkg","vnd.apple.mpegurl":"m3u8","vnd.aristanetworks.swi":"swi","vnd.astraea-software.iota":"iota","vnd.audiograph":"aep","vnd.blueice.multipass":"mpm","vnd.bmi":"bmi","vnd.businessobjects":"rep","vnd.chemdraw+xml":"cdxml","vnd.chipnuts.karaoke-mmd":"mmd","vnd.claymore":"cla","vnd.cloanto.rp9":"rp9","vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"vnd.cluetrust.cartomobile-config":"c11amc","vnd.cluetrust.cartomobile-config-pkg":"c11amz","vnd.commonspace":"csp","vnd.contact.cmsg":"cdbcmsg","vnd.cosmocaller":"cmc","vnd.crick.clicker":"clkx","vnd.crick.clicker.keyboard":"clkk","vnd.crick.clicker.palette":"clkp","vnd.crick.clicker.template":"clkt","vnd.crick.clicker.wordbank":"clkw","vnd.criticaltools.wbs+xml":"wbs","vnd.ctc-posml":"pml","vnd.cups-ppd":"ppd","vnd.curl.car":"car","vnd.curl.pcurl":"pcurl","vnd.dart":"dart","vnd.data-vision.rdz":"rdz","vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"vnd.dece.ttml+xml":["uvt","uvvt"],"vnd.dece.unspecified":["uvx","uvvx"],"vnd.dece.zip":["uvz","uvvz"],"vnd.denovo.fcselayout-link":"fe_launch","vnd.dna":"dna","vnd.dolby.mlp":"mlp","vnd.dpgraph":"dpg","vnd.dreamfactory":"dfac","vnd.ds-keypoint":"kpxx","vnd.dvb.ait":"ait","vnd.dvb.service":"svc","vnd.dynageo":"geo","vnd.ecowin.chart":"mag","vnd.enliven":"nml","vnd.epson.esf":"esf","vnd.epson.msf":"msf","vnd.epson.quickanime":"qam","vnd.epson.salt":"slt","vnd.epson.ssf":"ssf","vnd.eszigno3+xml":["es3","et3"],"vnd.ezpix-album":"ez2","vnd.ezpix-package":"ez3","vnd.fdf":"fdf","vnd.fdsn.mseed":"mseed","vnd.fdsn.seed":["seed","dataless"],"vnd.flographit":"gph","vnd.fluxtime.clip":"ftc","vnd.framemaker":["fm","frame","maker","book"],"vnd.frogans.fnc":"fnc","vnd.frogans.ltf":"ltf","vnd.fsc.weblaunch":"fsc","vnd.fujitsu.oasys":"oas","vnd.fujitsu.oasys2":"oa2","vnd.fujitsu.oasys3":"oa3","vnd.fujitsu.oasysgp":"fg5","vnd.fujitsu.oasysprs":"bh2","vnd.fujixerox.ddd":"ddd","vnd.fujixerox.docuworks":"xdw","vnd.fujixerox.docuworks.binder":"xbd","vnd.fuzzysheet":"fzs","vnd.genomatix.tuxedo":"txd","vnd.geogebra.file":"ggb","vnd.geogebra.tool":"ggt","vnd.geometry-explorer":["gex","gre"],"vnd.geonext":"gxt","vnd.geoplan":"g2w","vnd.geospace":"g3w","vnd.gmx":"gmx","vnd.grafeq":["gqf","gqs"],"vnd.groove-account":"gac","vnd.groove-help":"ghf","vnd.groove-identity-message":"gim","vnd.groove-injector":"grv","vnd.groove-tool-message":"gtm","vnd.groove-tool-template":"tpl","vnd.groove-vcard":"vcg","vnd.hal+xml":"hal","vnd.handheld-entertainment+xml":"zmm","vnd.hbci":"hbci","vnd.hhe.lesson-player":"les","vnd.hp-hpgl":"hpgl","vnd.hp-hpid":"hpid","vnd.hp-hps":"hps","vnd.hp-jlyt":"jlt","vnd.hp-pcl":"pcl","vnd.hp-pclxl":"pclxl","vnd.hydrostatix.sof-data":"sfd-hdstx","vnd.ibm.minipay":"mpy","vnd.ibm.modcap":["afp","listafp","list3820"],"vnd.ibm.rights-management":"irm","vnd.ibm.secure-container":"sc","vnd.iccprofile":["icc","icm"],"vnd.igloader":"igl","vnd.immervision-ivp":"ivp","vnd.immervision-ivu":"ivu","vnd.insors.igm":"igm","vnd.intercon.formnet":["xpw","xpx"],"vnd.intergeo":"i2g","vnd.intu.qbo":"qbo","vnd.intu.qfx":"qfx","vnd.ipunplugged.rcprofile":"rcprofile","vnd.irepository.package+xml":"irp","vnd.is-xpr":"xpr","vnd.isac.fcs":"fcs","vnd.jam":"jam","vnd.jcp.javame.midlet-rms":"rms","vnd.jisp":"jisp","vnd.joost.joda-archive":"joda","vnd.kahootz":["ktz","ktr"],"vnd.kde.karbon":"karbon","vnd.kde.kchart":"chrt","vnd.kde.kformula":"kfo","vnd.kde.kivio":"flw","vnd.kde.kontour":"kon","vnd.kde.kpresenter":["kpr","kpt"],"vnd.kde.kspread":"ksp","vnd.kde.kword":["kwd","kwt"],"vnd.kenameaapp":"htke","vnd.kidspiration":"kia","vnd.kinar":["kne","knp"],"vnd.koan":["skp","skd","skt","skm"],"vnd.kodak-descriptor":"sse","vnd.las.las+xml":"lasxml","vnd.llamagraphics.life-balance.desktop":"lbd","vnd.llamagraphics.life-balance.exchange+xml":"lbe","vnd.lotus-1-2-3":"123","vnd.lotus-approach":"apr","vnd.lotus-freelance":"pre","vnd.lotus-notes":"nsf","vnd.lotus-organizer":"org","vnd.lotus-screencam":"scm","vnd.lotus-wordpro":"lwp","vnd.macports.portpkg":"portpkg","vnd.mcd":"mcd","vnd.medcalcdata":"mc1","vnd.mediastation.cdkey":"cdkey","vnd.mfer":"mwf","vnd.mfmp":"mfm","vnd.micrografx.flo":"flo","vnd.micrografx.igx":"igx","vnd.mif":"mif","vnd.mobius.daf":"daf","vnd.mobius.dis":"dis","vnd.mobius.mbk":"mbk","vnd.mobius.mqy":"mqy","vnd.mobius.msl":"msl","vnd.mobius.plc":"plc","vnd.mobius.txf":"txf","vnd.mophun.application":"mpn","vnd.mophun.certificate":"mpc","vnd.ms-artgalry":"cil","vnd.ms-cab-compressed":"cab","vnd.ms-excel.addin.macroenabled.12":"xlam","vnd.ms-excel.sheet.binary.macroenabled.12":"xlsb","vnd.ms-excel.sheet.macroenabled.12":"xlsm","vnd.ms-excel.template.macroenabled.12":"xltm","vnd.ms-fontobject":"eot","vnd.ms-htmlhelp":"chm","vnd.ms-ims":"ims","vnd.ms-lrm":"lrm","vnd.ms-officetheme":"thmx","vnd.ms-powerpoint.addin.macroenabled.12":"ppam","vnd.ms-powerpoint.presentation.macroenabled.12":"pptm","vnd.ms-powerpoint.slide.macroenabled.12":"sldm","vnd.ms-powerpoint.slideshow.macroenabled.12":"ppsm","vnd.ms-powerpoint.template.macroenabled.12":"potm","vnd.ms-project":["mpp","mpt"],"vnd.ms-word.document.macroenabled.12":"docm","vnd.ms-word.template.macroenabled.12":"dotm","vnd.ms-works":["wps","wks","wcm","wdb"],"vnd.ms-wpl":"wpl","vnd.ms-xpsdocument":"xps","vnd.mseq":"mseq","vnd.musician":"mus","vnd.muvee.style":"msty","vnd.mynfc":"taglet","vnd.neurolanguage.nlu":"nlu","vnd.nitf":["ntf","nitf"],"vnd.noblenet-directory":"nnd","vnd.noblenet-sealer":"nns","vnd.noblenet-web":"nnw","vnd.nokia.n-gage.data":"ngdat","vnd.nokia.n-gage.symbian.install":"n-gage","vnd.nokia.radio-preset":"rpst","vnd.nokia.radio-presets":"rpss","vnd.novadigm.edm":"edm","vnd.novadigm.edx":"edx","vnd.novadigm.ext":"ext","vnd.oasis.opendocument.chart-template":"otc","vnd.oasis.opendocument.formula-template":"odft","vnd.oasis.opendocument.image-template":"oti","vnd.olpc-sugar":"xo","vnd.oma.dd2+xml":"dd2","vnd.openofficeorg.extension":"oxt","vnd.openxmlformats-officedocument.presentationml.slide":"sldx","vnd.osgeo.mapguide.package":"mgp","vnd.osgi.dp":"dp","vnd.osgi.subsystem":"esa","vnd.palm":["pdb","pqa","oprc"],"vnd.pawaafile":"paw","vnd.pg.format":"str","vnd.pg.osasli":"ei6","vnd.picsel":"efif","vnd.pmi.widget":"wg","vnd.pocketlearn":"plf","vnd.powerbuilder6":"pbd","vnd.previewsystems.box":"box","vnd.proteus.magazine":"mgz","vnd.publishare-delta-tree":"qps","vnd.pvi.ptid1":"ptid","vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"vnd.realvnc.bed":"bed","vnd.recordare.musicxml":"mxl","vnd.recordare.musicxml+xml":"musicxml","vnd.rig.cryptonote":"cryptonote","vnd.rn-realmedia":"rm","vnd.rn-realmedia-vbr":"rmvb","vnd.route66.link66+xml":"link66","vnd.sailingtracker.track":"st","vnd.seemail":"see","vnd.sema":"sema","vnd.semd":"semd","vnd.semf":"semf","vnd.shana.informed.formdata":"ifm","vnd.shana.informed.formtemplate":"itp","vnd.shana.informed.interchange":"iif","vnd.shana.informed.package":"ipk","vnd.simtech-mindmapper":["twd","twds"],"vnd.smart.teacher":"teacher","vnd.solent.sdkm+xml":["sdkm","sdkd"],"vnd.spotfire.dxp":"dxp","vnd.spotfire.sfs":"sfs","vnd.stepmania.package":"smzip","vnd.stepmania.stepchart":"sm","vnd.sus-calendar":["sus","susp"],"vnd.svd":"svd","vnd.syncml+xml":"xsm","vnd.syncml.dm+wbxml":"bdm","vnd.syncml.dm+xml":"xdm","vnd.tao.intent-module-archive":"tao","vnd.tcpdump.pcap":["pcap","cap","dmp"],"vnd.tmobile-livetv":"tmo","vnd.trid.tpt":"tpt","vnd.triscape.mxs":"mxs","vnd.trueapp":"tra","vnd.ufdl":["ufd","ufdl"],"vnd.uiq.theme":"utz","vnd.umajin":"umj","vnd.unity":"unityweb","vnd.uoml+xml":"uoml","vnd.vcx":"vcx","vnd.visionary":"vis","vnd.vsf":"vsf","vnd.webturbo":"wtb","vnd.wolfram.player":"nbp","vnd.wqd":"wqd","vnd.wt.stf":"stf","vnd.xara":"xar","vnd.xfdl":"xfdl","vnd.yamaha.hv-dic":"hvd","vnd.yamaha.hv-script":"hvs","vnd.yamaha.hv-voice":"hvp","vnd.yamaha.openscoreformat":"osf","vnd.yamaha.openscoreformat.osfpvg+xml":"osfpvg","vnd.yamaha.smaf-audio":"saf","vnd.yamaha.smaf-phrase":"spf","vnd.yellowriver-custom-menu":"cmp","vnd.zul":["zir","zirz"],"vnd.zzazz.deck+xml":"zaz","voicexml+xml":"vxml",widget:"wgt",winhlp:"hlp","wsdl+xml":"wsdl","wspolicy+xml":"wspolicy","x-ace-compressed":"ace","x-authorware-bin":["aab","x32","u32","vox"],"x-authorware-map":"aam","x-authorware-seg":"aas","x-blorb":["blb","blorb"],"x-bzip":"bz","x-bzip2":["bz2","boz"],"x-cfs-compressed":"cfs","x-chat":"chat","x-conference":"nsc","x-dgc-compressed":"dgc","x-dtbncx+xml":"ncx","x-dtbook+xml":"dtb","x-dtbresource+xml":"res","x-eva":"eva","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-freearc":"arc","x-gca-compressed":"gca","x-glulx":"ulx","x-gramps-xml":"gramps","x-install-instructions":"install","x-lzh-compressed":["lzh","lha"],"x-mie":"mie","x-mobipocket-ebook":["prc","mobi"],"x-ms-application":"application","x-ms-shortcut":"lnk","x-ms-xbap":"xbap","x-msbinder":"obd","x-mscardfile":"crd","x-msclip":"clp","x-msdownload":["exe","dll","com","bat","msi"],"x-msmediaview":["mvb","m13","m14"],"x-msmetafile":["wmf","wmz","emf","emz"],"x-msmoney":"mny","x-mspublisher":"pub","x-msschedule":"scd","x-msterminal":"trm","x-mswrite":"wri","x-nzb":"nzb","x-pkcs12":["p12","pfx"],"x-pkcs7-certificates":["p7b","spc"],"x-research-info-systems":"ris","x-silverlight-app":"xap","x-sql":"sql","x-stuffitx":"sitx","x-subrip":"srt","x-t3vm-image":"t3","x-tads":"gam","x-tex":"tex","x-tex-tfm":"tfm","x-tgif":"obj","x-xliff+xml":"xlf","x-xz":"xz","x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"xaml+xml":"xaml","xcap-diff+xml":"xdf","xenc+xml":"xenc","xml-dtd":"dtd","xop+xml":"xop","xproc+xml":"xpl","xslt+xml":"xslt","xv+xml":["mxml","xhvml","xvml","xvm"],yang:"yang","yin+xml":"yin",envoy:"evy",fractals:"fif","internet-property-stream":"acx",olescript:"axs","vnd.ms-outlook":"msg","vnd.ms-pkicertstore":"sst","x-compress":"z","x-compressed":"tgz","x-gzip":"gz","x-perfmon":["pma","pmc","pml","pmr","pmw"],"x-pkcs7-mime":["p7c","p7m"],"ynd.ms-pkipko":"pko"},audio:{amr:"amr","amr-wb":"awb",annodex:"axa",basic:["au","snd"],flac:"flac",midi:["mid","midi","kar","rmi"],mpeg:["mpga","mpega","mp2","mp3","m4a","mp2a","m2a","m3a"],mpegurl:"m3u",ogg:["oga","ogg","spx"],"prs.sid":"sid","x-aiff":["aif","aiff","aifc"],"x-gsm":"gsm","x-ms-wma":"wma","x-ms-wax":"wax","x-pn-realaudio":"ram","x-realaudio":"ra","x-sd2":"sd2","x-wav":"wav",adpcm:"adp",mp4:"mp4a",s3m:"s3m",silk:"sil","vnd.dece.audio":["uva","uvva"],"vnd.digital-winds":"eol","vnd.dra":"dra","vnd.dts":"dts","vnd.dts.hd":"dtshd","vnd.lucent.voice":"lvp","vnd.ms-playready.media.pya":"pya","vnd.nuera.ecelp4800":"ecelp4800","vnd.nuera.ecelp7470":"ecelp7470","vnd.nuera.ecelp9600":"ecelp9600","vnd.rip":"rip",webm:"weba","x-aac":"aac","x-caf":"caf","x-matroska":"mka","x-pn-realaudio-plugin":"rmp",xm:"xm",mid:["mid","rmi"]},chemical:{"x-alchemy":"alc","x-cache":["cac","cache"],"x-cache-csf":"csf","x-cactvs-binary":["cbin","cascii","ctab"],"x-cdx":"cdx","x-chem3d":"c3d","x-cif":"cif","x-cmdf":"cmdf","x-cml":"cml","x-compass":"cpa","x-crossfire":"bsd","x-csml":["csml","csm"],"x-ctx":"ctx","x-cxf":["cxf","cef"],"x-embl-dl-nucleotide":["emb","embl"],"x-gamess-input":["inp","gam","gamin"],"x-gaussian-checkpoint":["fch","fchk"],"x-gaussian-cube":"cub","x-gaussian-input":["gau","gjc","gjf"],"x-gaussian-log":"gal","x-gcg8-sequence":"gcg","x-genbank":"gen","x-hin":"hin","x-isostar":["istr","ist"],"x-jcamp-dx":["jdx","dx"],"x-kinemage":"kin","x-macmolecule":"mcm","x-macromodel-input":["mmd","mmod"],"x-mdl-molfile":"mol","x-mdl-rdfile":"rd","x-mdl-rxnfile":"rxn","x-mdl-sdfile":["sd","sdf"],"x-mdl-tgf":"tgf","x-mmcif":"mcif","x-mol2":"mol2","x-molconn-Z":"b","x-mopac-graph":"gpt","x-mopac-input":["mop","mopcrt","mpc","zmt"],"x-mopac-out":"moo","x-ncbi-asn1":"asn","x-ncbi-asn1-ascii":["prt","ent"],"x-ncbi-asn1-binary":["val","aso"],"x-pdb":["pdb","ent"],"x-rosdal":"ros","x-swissprot":"sw","x-vamas-iso14976":"vms","x-vmd":"vmd","x-xtel":"xtel","x-xyz":"xyz"},image:{gif:"gif",ief:"ief",jpeg:["jpeg","jpg","jpe"],pcx:"pcx",png:"png","svg+xml":["svg","svgz"],tiff:["tiff","tif"],"vnd.djvu":["djvu","djv"],"vnd.wap.wbmp":"wbmp","x-canon-cr2":"cr2","x-canon-crw":"crw","x-cmu-raster":"ras","x-coreldraw":"cdr","x-coreldrawpattern":"pat","x-coreldrawtemplate":"cdt","x-corelphotopaint":"cpt","x-epson-erf":"erf","x-icon":"ico","x-jg":"art","x-jng":"jng","x-nikon-nef":"nef","x-olympus-orf":"orf","x-photoshop":"psd","x-portable-anymap":"pnm","x-portable-bitmap":"pbm","x-portable-graymap":"pgm","x-portable-pixmap":"ppm","x-rgb":"rgb","x-xbitmap":"xbm","x-xpixmap":"xpm","x-xwindowdump":"xwd",bmp:"bmp",cgm:"cgm",g3fax:"g3",ktx:"ktx","prs.btif":"btif",sgi:"sgi","vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"vnd.dwg":"dwg","vnd.dxf":"dxf","vnd.fastbidsheet":"fbs","vnd.fpx":"fpx","vnd.fst":"fst","vnd.fujixerox.edmics-mmr":"mmr","vnd.fujixerox.edmics-rlc":"rlc","vnd.ms-modi":"mdi","vnd.ms-photo":"wdp","vnd.net-fpx":"npx","vnd.xiff":"xif",webp:"webp","x-3ds":"3ds","x-cmx":"cmx","x-freehand":["fh","fhc","fh4","fh5","fh7"],"x-pict":["pic","pct"],"x-tga":"tga","cis-cod":"cod",pipeg:"jfif"},message:{rfc822:["eml","mime","mht","mhtml","nws"]},model:{iges:["igs","iges"],mesh:["msh","mesh","silo"],vrml:["wrl","vrml"],"x3d+vrml":["x3dv","x3dvz"],"x3d+xml":["x3d","x3dz"],"x3d+binary":["x3db","x3dbz"],"vnd.collada+xml":"dae","vnd.dwf":"dwf","vnd.gdl":"gdl","vnd.gtw":"gtw","vnd.mts":"mts","vnd.vtu":"vtu"},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",scriptlet:["sct","wsc"],texmacs:["tm","ts"],"tab-separated-values":"tsv","vnd.sun.j2me.app-descriptor":"jad","vnd.wap.wml":"wml","vnd.wap.wmlscript":"wmls","x-bibtex":"bib","x-boo":"boo","x-c++hdr":["h++","hpp","hxx","hh"],"x-c++src":["c++","cpp","cxx","cc"],"x-component":"htc","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-vcalendar":"vcs","x-vcard":"vcf",n3:"n3","prs.lines.tag":"dsc",sgml:["sgml","sgm"],troff:["t","tr","roff","man","me","ms"],turtle:"ttl","uri-list":["uri","uris","urls"],vcard:"vcard","vnd.curl":"curl","vnd.curl.dcurl":"dcurl","vnd.curl.scurl":"scurl","vnd.curl.mcurl":"mcurl","vnd.dvb.subtitle":"sub","vnd.fly":"fly","vnd.fmi.flexstor":"flx","vnd.graphviz":"gv","vnd.in3d.3dml":"3dml","vnd.in3d.spot":"spot","x-asm":["s","asm"],"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:{"3gpp":"3gp",annodex:"axv",dl:"dl",dv:["dif","dv"],fli:"fli",gl:"gl",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.dece.hd":["uvh","uvvh"],"vnd.dece.mobile":["uvm","uvvm"],"vnd.dece.pd":["uvp","uvvp"],"vnd.dece.sd":["uvs","uvvs"],"vnd.dece.video":["uvv","uvvv"],"vnd.dvb.file":"dvb","vnd.fvt":"fvt","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"},"x-conference":{"x-cooltalk":"ice"},"x-world":{"x-vrml":["vrm","vrml","wrl","flr","wrz","xaf","xof"]}},mimeTypes=function(){var type,subtype,val,index,mimeTypes={};for(type in table)if(table.hasOwnProperty(type))for(subtype in table[type])if(table[type].hasOwnProperty(subtype))if("string"==typeof(val=table[type][subtype]))mimeTypes[val]=type+"/"+subtype;else for(index=0;index<val.length;index++)mimeTypes[val[index]]=type+"/"+subtype;return mimeTypes}();zip.getMimeType=function(filename){return filename&&mimeTypes[filename.split(".").pop().toLowerCase()]||"application/octet-stream"}}(),define("mime-types",["zip"],function(global){return function(){return global.zip}}(this)),function(){"use strict";var ZipFileEntryProto,ZipDirectoryEntryProto,CHUNK_SIZE=524288,TextWriter=zip.TextWriter,BlobWriter=zip.BlobWriter,Data64URIWriter=zip.Data64URIWriter,Reader=zip.Reader,TextReader=zip.TextReader,BlobReader=zip.BlobReader,Data64URIReader=zip.Data64URIReader,createReader=zip.createReader,createWriter=zip.createWriter;function ZipBlobReader(entry){var blobReader,that=this;that.size=0,that.init=function(callback){that.size=entry.uncompressedSize,callback()},that.readUint8Array=function(index,length,callback,onerror){!function(callback){that.data?callback():entry.getData(new BlobWriter,function(data){that.data=data,blobReader=new BlobReader(data),callback()},null,that.checkCrc32)}(function(){blobReader.readUint8Array(index,length,callback,onerror)})}}function getTotalSize(entry){var size=0;return function process(entry){size+=entry.uncompressedSize||0,entry.children.forEach(process)}(entry),size}function initReaders(entry,onend,onerror){var index=0;function next(){++index<entry.children.length?process(entry.children[index]):onend()}function process(child){child.directory?initReaders(child,next,onerror):(child.reader=new child.Reader(child.data,onerror),child.reader.init(function(){child.uncompressedSize=child.reader.size,next()}))}entry.children.length?process(entry.children[index]):onend()}function detach(entry){var children=entry.parent.children;children.forEach(function(child,index){child.id==entry.id&&children.splice(index,1)})}function addFileEntry(zipEntry,fileEntry,onend,onerror){fileEntry.isDirectory?function process(zipEntry,fileEntry,onend){!function(fileEntry,callback){var entries=[];if(fileEntry.isDirectory){var directoryReader=fileEntry.createReader();!function readEntries(){directoryReader.readEntries(function(temporaryEntries){temporaryEntries.length?(entries=entries.concat(temporaryEntries),readEntries()):callback(entries)},onerror)}()}fileEntry.isFile&&callback(entries)}(fileEntry,function(children){var childIndex=0;function processChild(){var child=children[childIndex];child?function(child){function nextChild(childFileEntry){process(childFileEntry,child,function(){childIndex++,processChild()})}child.isDirectory&&nextChild(zipEntry.addDirectory(child.name)),child.isFile&&child.file(function(file){var childZipEntry=zipEntry.addBlob(child.name,file);childZipEntry.uncompressedSize=file.size,nextChild(childZipEntry)},onerror)}(child):onend()}processChild()})}(zipEntry,fileEntry,onend):fileEntry.file(function(file){zipEntry.addBlob(fileEntry.name,file),onend()},onerror)}function getFileEntry(fileEntry,entry,onend,onprogress,onerror,totalSize,checkCrc32){var currentIndex=0;entry.directory?function process(fileEntry,entry,onend,onprogress,onerror,totalSize){var childIndex=0;function processChild(){var child=entry.children[childIndex];child?function(child){function nextChild(childFileEntry){currentIndex+=child.uncompressedSize||0,process(childFileEntry,child,function(){childIndex++,processChild()},onprogress,onerror,totalSize)}child.directory?fileEntry.getDirectory(child.name,{create:!0},nextChild,onerror):fileEntry.getFile(child.name,{create:!0},function(file){child.getData(new zip.FileWriter(file,zip.getMimeType(child.name)),nextChild,function(index){onprogress&&onprogress(currentIndex+index,totalSize)},checkCrc32)},onerror)}(child):onend()}processChild()}(fileEntry,entry,onend,onprogress,onerror,totalSize):entry.getData(new zip.FileWriter(fileEntry,zip.getMimeType(entry.name)),onend,onprogress,checkCrc32)}function resetFS(fs){fs.entries=[],fs.root=new ZipDirectoryEntry(fs)}function addChild(parent,name,params,directory){if(parent.directory)return directory?new ZipDirectoryEntry(parent.fs,name,params,parent):new ZipFileEntry(parent.fs,name,params,parent);throw"Parent entry is not a directory."}function ZipEntry(){}function ZipFileEntry(fs,name,params,parent){ZipEntry.prototype.init.call(this,fs,name,params,parent),this.Reader=params.Reader,this.Writer=params.Writer,this.data=params.data,params.getData&&(this.getData=params.getData)}function ZipDirectoryEntry(fs,name,params,parent){ZipEntry.prototype.init.call(this,fs,name,params,parent),this.directory=!0}function FS(){resetFS(this)}ZipBlobReader.prototype=new Reader,ZipBlobReader.prototype.constructor=ZipBlobReader,ZipBlobReader.prototype.checkCrc32=!1,ZipEntry.prototype={init:function(fs,name,params,parent){if(fs.root&&parent&&parent.getChildByName(name))throw"Entry filename already exists.";params||(params={}),this.fs=fs,this.name=name,this.id=fs.entries.length,this.parent=parent,this.children=[],this.zipVersion=params.zipVersion||20,this.uncompressedSize=0,fs.entries.push(this),parent&&this.parent.children.push(this)},getFileEntry:function(fileEntry,onend,onprogress,onerror,checkCrc32){var that=this;initReaders(that,function(){getFileEntry(fileEntry,that,onend,onprogress,onerror,getTotalSize(that),checkCrc32)},onerror)},moveTo:function(target){if(!target.directory)throw"Target entry is not a directory.";if(target.isDescendantOf(this))throw"Entry is a ancestor of target entry.";if(this!=target){if(target.getChildByName(this.name))throw"Entry filename already exists.";detach(this),this.parent=target,target.children.push(this)}},getFullname:function(){for(var fullname=this.name,entry=this.parent;entry;)fullname=(entry.name?entry.name+"/":"")+fullname,entry=entry.parent;return fullname},isDescendantOf:function(ancestor){for(var entry=this.parent;entry&&entry.id!=ancestor.id;)entry=entry.parent;return!!entry}},ZipEntry.prototype.constructor=ZipEntry,ZipFileEntry.prototype=ZipFileEntryProto=new ZipEntry,ZipFileEntryProto.constructor=ZipFileEntry,ZipFileEntryProto.getData=function(writer,onend,onprogress,onerror){var that=this;!writer||writer.constructor==that.Writer&&that.data?onend(that.data):(that.reader||(that.reader=new that.Reader(that.data,onerror)),that.reader.init(function(){writer.init(function(){!function(reader,writer,onend,onprogress,onerror){var chunkIndex=0;!function stepCopy(){var index=chunkIndex*CHUNK_SIZE;onprogress&&onprogress(index,reader.size),index<reader.size?reader.readUint8Array(index,Math.min(CHUNK_SIZE,reader.size-index),function(array){writer.writeUint8Array(new Uint8Array(array),function(){chunkIndex++,stepCopy()})},onerror):writer.getData(onend)}()}(that.reader,writer,onend,onprogress,onerror)},onerror)}))},ZipFileEntryProto.getText=function(onend,onprogress,checkCrc32,encoding){this.getData(new TextWriter(encoding),onend,onprogress,checkCrc32)},ZipFileEntryProto.getBlob=function(mimeType,onend,onprogress,checkCrc32){this.getData(new BlobWriter(mimeType),onend,onprogress,checkCrc32)},ZipFileEntryProto.getData64URI=function(mimeType,onend,onprogress,checkCrc32){this.getData(new Data64URIWriter(mimeType),onend,onprogress,checkCrc32)},ZipDirectoryEntry.prototype=ZipDirectoryEntryProto=new ZipEntry,ZipDirectoryEntryProto.constructor=ZipDirectoryEntry,ZipDirectoryEntryProto.addDirectory=function(name){return addChild(this,name,null,!0)},ZipDirectoryEntryProto.addText=function(name,text){return addChild(this,name,{data:text,Reader:TextReader,Writer:TextWriter})},ZipDirectoryEntryProto.addBlob=function(name,blob){return addChild(this,name,{data:blob,Reader:BlobReader,Writer:BlobWriter})},ZipDirectoryEntryProto.addData64URI=function(name,dataURI){return addChild(this,name,{data:dataURI,Reader:Data64URIReader,Writer:Data64URIWriter})},ZipDirectoryEntryProto.addFileEntry=function(fileEntry,onend,onerror){addFileEntry(this,fileEntry,onend,onerror)},ZipDirectoryEntryProto.addData=function(name,params){return addChild(this,name,params)},ZipDirectoryEntryProto.importBlob=function(blob,onend,onerror){this.importZip(new BlobReader(blob),onend,onerror)},ZipDirectoryEntryProto.importText=function(text,onend,onerror){this.importZip(new TextReader(text),onend,onerror)},ZipDirectoryEntryProto.importData64URI=function(dataURI,onend,onerror){this.importZip(new Data64URIReader(dataURI),onend,onerror)},ZipDirectoryEntryProto.exportBlob=function(onend,onprogress,onerror){this.exportZip(new BlobWriter("application/zip"),onend,onprogress,onerror)},ZipDirectoryEntryProto.exportText=function(onend,onprogress,onerror){this.exportZip(new TextWriter,onend,onprogress,onerror)},ZipDirectoryEntryProto.exportFileEntry=function(fileEntry,onend,onprogress,onerror){this.exportZip(new zip.FileWriter(fileEntry,"application/zip"),onend,onprogress,onerror)},ZipDirectoryEntryProto.exportData64URI=function(onend,onprogress,onerror){this.exportZip(new Data64URIWriter("application/zip"),onend,onprogress,onerror)},ZipDirectoryEntryProto.importZip=function(reader,onend,onerror){var that=this;createReader(reader,function(zipReader){zipReader.getEntries(function(entries){entries.forEach(function(entry){var parent=that,path=entry.filename.split("/"),name=path.pop();path.forEach(function(pathPart){parent=parent.getChildByName(pathPart)||new ZipDirectoryEntry(that.fs,pathPart,null,parent)}),entry.directory||addChild(parent,name,{data:entry,Reader:ZipBlobReader})}),onend()})},onerror)},ZipDirectoryEntryProto.exportZip=function(writer,onend,onprogress,onerror){var that=this;initReaders(that,function(){createWriter(writer,function(zipWriter){!function(zipWriter,entry,onend,onprogress,totalSize){var currentIndex=0;!function process(zipWriter,entry,onend,onprogress,totalSize){var childIndex=0;!function exportChild(){var child=entry.children[childIndex];child?zipWriter.add(child.getFullname(),child.reader,function(){currentIndex+=child.uncompressedSize||0,process(zipWriter,child,function(){childIndex++,exportChild()},onprogress,totalSize)},function(index){onprogress&&onprogress(currentIndex+index,totalSize)},{directory:child.directory,version:child.zipVersion}):onend()}()}(zipWriter,entry,onend,onprogress,totalSize)}(zipWriter,that,function(){zipWriter.close(onend)},onprogress,getTotalSize(that))},onerror)},onerror)},ZipDirectoryEntryProto.getChildByName=function(name){var childIndex,child;for(childIndex=0;childIndex<this.children.length;childIndex++)if((child=this.children[childIndex]).name==name)return child},FS.prototype={remove:function(entry){detach(entry),this.entries[entry.id]=null},find:function(fullname){var index,path=fullname.split("/"),node=this.root;for(index=0;node&&index<path.length;index++)node=node.getChildByName(path[index]);return node},getById:function(id){return this.entries[id]},importBlob:function(blob,onend,onerror){resetFS(this),this.root.importBlob(blob,onend,onerror)},importText:function(text,onend,onerror){resetFS(this),this.root.importText(text,onend,onerror)},importData64URI:function(dataURI,onend,onerror){resetFS(this),this.root.importData64URI(dataURI,onend,onerror)},exportBlob:function(onend,onprogress,onerror){this.root.exportBlob(onend,onprogress,onerror)},exportText:function(onend,onprogress,onerror){this.root.exportText(onend,onprogress,onerror)},exportFileEntry:function(fileEntry,onend,onprogress,onerror){this.root.exportFileEntry(fileEntry,onend,onprogress,onerror)},exportData64URI:function(onend,onprogress,onerror){this.root.exportData64URI(onend,onprogress,onerror)}},zip.fs={FS:FS,ZipDirectoryEntry:ZipDirectoryEntry,ZipFileEntry:ZipFileEntry},zip.getMimeType=function(){return"application/octet-stream"}}(),define("zip-fs",["mime-types"],function(global){return function(){return global.zip}}(this)),function(){"use strict";var ZipDirectoryEntry,appendABViewSupported,Reader=zip.Reader,Writer=zip.Writer;try{appendABViewSupported=0===new Blob([new DataView(new ArrayBuffer(0))]).size}catch(e){}function HttpReader(url){var that=this;function getData(callback,onerror){var request;that.data?callback():((request=new XMLHttpRequest).addEventListener("load",function(){that.size||(that.size=Number(request.getResponseHeader("Content-Length"))||Number(request.response.byteLength)),that.data=new Uint8Array(request.response),callback()},!1),request.addEventListener("error",onerror,!1),request.open("GET",url),request.responseType="arraybuffer",request.send())}that.size=0,that.init=function(callback,onerror){if(function(url){var a=document.createElement("a");return a.href=url,"http:"===a.protocol||"https:"===a.protocol}(url)){var request=new XMLHttpRequest;request.addEventListener("load",function(){that.size=Number(request.getResponseHeader("Content-Length")),that.size?callback():getData(callback,onerror)},!1),request.addEventListener("error",onerror,!1),request.open("HEAD",url),request.send()}else getData(callback,onerror)},that.readUint8Array=function(index,length,callback,onerror){getData(function(){callback(new Uint8Array(that.data.subarray(index,index+length)))},onerror)}}function HttpRangeReader(url){var that=this;that.size=0,that.init=function(callback,onerror){var request=new XMLHttpRequest;request.addEventListener("load",function(){that.size=Number(request.getResponseHeader("Content-Length")),callback()},!1),request.addEventListener("error",onerror,!1),request.open("HEAD",url),request.send()},that.readUint8Array=function(index,length,callback,onerror){!function(index,length,callback,onerror){var request=new XMLHttpRequest;request.open("GET",url),request.responseType="arraybuffer",request.setRequestHeader("Range","bytes="+index+"-"+(index+length-1)),request.addEventListener("load",function(){callback(request.response)},!1),request.addEventListener("error",onerror,!1),request.send()}(index,length,function(arraybuffer){callback(new Uint8Array(arraybuffer))},onerror)}}function ArrayBufferReader(arrayBuffer){var that=this;that.size=0,that.init=function(callback,onerror){that.size=arrayBuffer.byteLength,callback()},that.readUint8Array=function(index,length,callback,onerror){callback(new Uint8Array(arrayBuffer.slice(index,index+length)))}}function ArrayBufferWriter(){var array;this.init=function(callback,onerror){array=new Uint8Array,callback()},this.writeUint8Array=function(arr,callback,onerror){var tmpArray=new Uint8Array(array.length+arr.length);tmpArray.set(array),tmpArray.set(arr,array.length),array=tmpArray,callback()},this.getData=function(callback){callback(array.buffer)}}function FileWriter(fileEntry,contentType){var writer;this.init=function(callback,onerror){fileEntry.createWriter(function(fileWriter){writer=fileWriter,callback()},onerror)},this.writeUint8Array=function(array,callback,onerror){var blob=new Blob([appendABViewSupported?array:array.buffer],{type:contentType});writer.onwrite=function(){writer.onwrite=null,callback()},writer.onerror=onerror,writer.write(blob)},this.getData=function(callback){fileEntry.file(callback)}}HttpReader.prototype=new Reader,HttpReader.prototype.constructor=HttpReader,HttpRangeReader.prototype=new Reader,HttpRangeReader.prototype.constructor=HttpRangeReader,ArrayBufferReader.prototype=new Reader,ArrayBufferReader.prototype.constructor=ArrayBufferReader,ArrayBufferWriter.prototype=new Writer,ArrayBufferWriter.prototype.constructor=ArrayBufferWriter,FileWriter.prototype=new Writer,FileWriter.prototype.constructor=FileWriter,zip.FileWriter=FileWriter,zip.HttpReader=HttpReader,zip.HttpRangeReader=HttpRangeReader,zip.ArrayBufferReader=ArrayBufferReader,zip.ArrayBufferWriter=ArrayBufferWriter,zip.fs&&((ZipDirectoryEntry=zip.fs.ZipDirectoryEntry).prototype.addHttpContent=function(name,URL,useRangeHeader){return function(parent,name,params,directory){if(parent.directory)return directory?new ZipDirectoryEntry(parent.fs,name,params,parent):new zip.fs.ZipFileEntry(parent.fs,name,params,parent);throw"Parent entry is not a directory."}(this,name,{data:URL,Reader:useRangeHeader?HttpRangeReader:HttpReader})},ZipDirectoryEntry.prototype.importHttpContent=function(URL,useRangeHeader,onend,onerror){this.importZip(useRangeHeader?new HttpRangeReader(URL):new HttpReader(URL),onend,onerror)},zip.fs.FS.prototype.importHttpContent=function(URL,useRangeHeader,onend,onerror){this.entries=[],this.root=new ZipDirectoryEntry(this),this.root.importHttpContent(URL,useRangeHeader,onend,onerror)})}(),define("zip-ext",["zip-fs"],function(global){return function(){return global.zip}}(this)),define("readium_js/epub-fetch/zip_resource_fetcher",["jquery","URIjs","./discover_content_type","zip-ext","readium_shared_js/helpers"],function($,URI,ContentTypeDiscovery,zip,Helpers){return function(parentFetcher,libDir){var _zipFs,ebookURL=parentFetcher.getEbookURL(),ebookURL_filepath=parentFetcher.getEbookURL_FilePath(),READIUM_ERROR_PREFIX="READIUM -- ";function fetchFileContents(relativePathRelativeToPackageRoot,readCallback,onerror){if(void 0===relativePathRelativeToPackageRoot)throw"Fetched file relative path is undefined!";!function(callback,onerror){_zipFs?callback(_zipFs,onerror):(libDir?(zip.useWebWorkers=!0,zip.workerScriptsPath=libDir):zip.useWebWorkers=!1,_zipFs=new zip.fs.FS,ebookURL instanceof Blob||ebookURL instanceof File?_zipFs.importBlob(ebookURL,function(){callback(_zipFs,onerror)},function(){console.error("ZIP ERROR"),onerror.apply(this,arguments)}):_zipFs.importHttpContent(ebookURL,!0,function(){callback(_zipFs,onerror)},function(){console.error("ZIP ERROR"),onerror.apply(this,arguments)}))}(function(zipFs,onerror){var entry=zipFs.find(relativePathRelativeToPackageRoot);void 0===entry||null===entry?onerror(new Error(READIUM_ERROR_PREFIX+"Entry "+relativePathRelativeToPackageRoot+" not found in zip "+ebookURL_filepath)):entry.directory?onerror(new Error(READIUM_ERROR_PREFIX+"Entry "+relativePathRelativeToPackageRoot+" is a directory while a file has been expected")):readCallback(entry)},function(){var error=arguments?arguments.length&&arguments[0]instanceof Error?arguments[0]:arguments instanceof Error?arguments:void 0:void 0;if(error&&0==error.message.indexOf(READIUM_ERROR_PREFIX)||ebookURL instanceof Blob||ebookURL instanceof File)onerror.apply(this,arguments);else{console.log("Zip lib failed to load zipped EPUB via HTTP, trying alternative HTTP fetch... ("+ebookURL+")");var xhr=new XMLHttpRequest;xhr.onreadystatechange=function(){if(4==this.readyState){if(xhr.status>=200&&xhr.status<300||304===xhr.status)return ebookURL=this.response,_zipFs=void 0,void(ebookURL instanceof Blob||ebookURL instanceof File?fetchFileContents(relativePathRelativeToPackageRoot,readCallback,onerror):onerror(new Error("XMLHttpRequest response not Blob!?")));onerror(xhr.statusText)}},xhr.open("GET",ebookURL,!0),xhr.responseType="blob",xhr.send(null)}})}this.resolveURI=function(pathRelativeToPackageRoot){var pathRelativeToPackageRootUri=void 0;try{pathRelativeToPackageRootUri=new URI(pathRelativeToPackageRoot)}catch(err){console.error(err),console.log(pathRelativeToPackageRoot)}if(pathRelativeToPackageRootUri&&pathRelativeToPackageRootUri.is("absolute"))return pathRelativeToPackageRoot;var url=ebookURL_filepath;try{url=new URI(url).search("").hash("").toString()}catch(err){console.error(err),console.log(url)}return url+("/"==url.charAt(url.length-1)?"":"/")+pathRelativeToPackageRoot},this.fetchFileContentsText=function(relativePathRelativeToPackageRoot,fetchCallback,onerror){fetchFileContents(relativePathRelativeToPackageRoot,function(entry){entry.getText(fetchCallback,void 0,!1)},onerror)},this.fetchFileContentsData64Uri=function(relativePathRelativeToPackageRoot,fetchCallback,onerror){fetchFileContents(relativePathRelativeToPackageRoot,function(entry){entry.getData64URI(ContentTypeDiscovery.identifyContentTypeFromFileName(relativePathRelativeToPackageRoot),fetchCallback,void 0,!1)},onerror)},this.fetchFileContentsBlob=function(relativePathRelativeToPackageRoot,fetchCallback,onerror){var decryptionFunction=parentFetcher.getDecryptionFunctionForRelativePath(relativePathRelativeToPackageRoot);if(decryptionFunction){var origFetchCallback=fetchCallback;fetchCallback=function(unencryptedBlob){decryptionFunction(unencryptedBlob,function(decryptedBlob){origFetchCallback(decryptedBlob)})}}fetchFileContents(relativePathRelativeToPackageRoot,function(entry){entry.getBlob(ContentTypeDiscovery.identifyContentTypeFromFileName(relativePathRelativeToPackageRoot),fetchCallback,void 0,!1)},onerror)}}}),define("readium_js/epub-fetch/content_document_fetcher",["jquery","underscore","URIjs","./discover_content_type"],function($,_,URI,ContentTypeDiscovery){return function(publicationFetcher,spineItem,loadedDocumentUri,publicationResourcesCache,contentDocumentTextPreprocessor){var _contentDocumentText,_contentDocumentDom,self=this,_contentDocumentPathRelativeToPackage=spineItem.href,_publicationFetcher=publicationFetcher,_srcMediaType=spineItem.media_type,_publicationResourcesCache=publicationResourcesCache,_contentDocumentTextPreprocessor=contentDocumentTextPreprocessor;function fetchResourceForCssUrlMatch(cssUrlMatch,cssResourceDownloadDeferreds,styleSheetUriRelativeToPackageDocument,stylesheetCssResourceUrlsMap,isStyleSheetResource){var origMatchedUrlString=cssUrlMatch[0],extractedUrlCandidates=cssUrlMatch.slice(2),extractedUrl=_.find(extractedUrlCandidates,function(matchGroup){return void 0!==matchGroup});if(""===new URI(extractedUrl).scheme()){var styleSheetUriRelativeToBase=_publicationFetcher.convertPathRelativeToPackageToRelativeToBase(styleSheetUriRelativeToPackageDocument);"/"===styleSheetUriRelativeToBase.charAt(0)&&(styleSheetUriRelativeToBase=styleSheetUriRelativeToBase.substr(1));var resourceUriRelativeToBase="/"+new URI(extractedUrl).absoluteTo(styleSheetUriRelativeToBase).toString(),cachedResourceURL=_publicationResourcesCache.getResourceURL(resourceUriRelativeToBase);if(cachedResourceURL)stylesheetCssResourceUrlsMap[origMatchedUrlString]={isStyleSheetResource:isStyleSheetResource,resourceObjectURL:cachedResourceURL};else{var cssUrlFetchDeferred=$.Deferred();cssResourceDownloadDeferreds.push(cssUrlFetchDeferred);var fetchMode,fetchCallback,processedBlobCallback=function(resourceDataBlob){var resourceObjectURL=window.URL.createObjectURL(resourceDataBlob);stylesheetCssResourceUrlsMap[origMatchedUrlString]={isStyleSheetResource:isStyleSheetResource,resourceObjectURL:resourceObjectURL},_publicationResourcesCache.putResource(resourceUriRelativeToBase,resourceObjectURL,resourceDataBlob),cssUrlFetchDeferred.resolve()};isStyleSheetResource?(fetchMode="text",fetchCallback=function(styleSheetResourceData){preprocessCssStyleSheetData(styleSheetResourceData,resourceUriRelativeToBase,function(preprocessedStyleSheetData){var resourceDataBlob=new Blob([preprocessedStyleSheetData],{type:"text/css"});processedBlobCallback(resourceDataBlob)})}):(fetchMode="blob",fetchCallback=processedBlobCallback),_publicationFetcher.relativeToPackageFetchFileContents(resourceUriRelativeToBase,fetchMode,fetchCallback,function(error){cssUrlFetchDeferred.resolve()})}}}function preprocessCssStyleSheetData(styleSheetResourceData,styleSheetUriRelativeToPackageDocument,callback){var nonUrlCssImportRegexp=/@[Ii][Mm][Pp][Oo][Rr][Tt]\s*('([^']+)'|"([^"]+)")/g,stylesheetCssResourceUrlsMap={},cssResourceDownloadDeferreds=[];[nonUrlCssImportRegexp,/[Uu][Rr][Ll]\(\s*([']([^']+)[']|["]([^"]+)["]|([^)]+))\s*\)/g].forEach(function(processingRegexp){for(var cssUrlMatch=processingRegexp.exec(styleSheetResourceData);null!=cssUrlMatch;){var isStyleSheetResource=!1;processingRegexp==nonUrlCssImportRegexp&&(isStyleSheetResource=!0),fetchResourceForCssUrlMatch(cssUrlMatch,cssResourceDownloadDeferreds,styleSheetUriRelativeToPackageDocument,stylesheetCssResourceUrlsMap,isStyleSheetResource),cssUrlMatch=processingRegexp.exec(styleSheetResourceData)}}),cssResourceDownloadDeferreds.length>0?$.when.apply($,cssResourceDownloadDeferreds).done(function(){for(var origMatchedUrlString in stylesheetCssResourceUrlsMap){var processedUrlString,processedResourceDescriptor=stylesheetCssResourceUrlsMap[origMatchedUrlString];processedUrlString=processedResourceDescriptor.isStyleSheetResource?'@import "'+processedResourceDescriptor.resourceObjectURL+'"':"url('"+processedResourceDescriptor.resourceObjectURL+"')";var origMatchedUrlStringEscaped=origMatchedUrlString.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),origMatchedUrlStringRegExp=new RegExp(origMatchedUrlStringEscaped,"g");styleSheetResourceData=styleSheetResourceData.replace(origMatchedUrlStringRegExp,processedUrlString,"g")}callback(styleSheetResourceData)}):callback(styleSheetResourceData)}function resolveResourceElements(elemName,refAttr,fetchMode,resolutionDeferreds,onerror,resourceDataPreprocessing){$(elemName+"["+refAttr.replace(":","\\:")+"]",_contentDocumentDom).each(function(index,resolvedElem){!function(resolvedElem,refAttrOrigVal,refAttr,fetchMode,resolutionDeferreds,onerror,resourceDataPreprocessing){function replaceRefAttrInElem(newResourceUrl){$(resolvedElem).attr("data-epubZipOrigHref",refAttrOrigVal),$(resolvedElem).attr(refAttr,newResourceUrl)}if(""===new URI(refAttrOrigVal).scheme()){if(0==refAttrOrigVal.indexOf("/"))return console.log("Absolute path res: "+refAttrOrigVal),void replaceRefAttrInElem((window.location?window.location.protocol+"//"+window.location.hostname+(window.location.port?":"+window.location.port:""):"")+refAttrOrigVal);var contentDocumentPathRelativeToBase=_publicationFetcher.convertPathRelativeToPackageToRelativeToBase(_contentDocumentPathRelativeToPackage),resourceUriRelativeToBase="/"+new URI(refAttrOrigVal).absoluteTo(contentDocumentPathRelativeToBase).toString(),cachedResourceUrl=_publicationResourcesCache.getResourceURL(resourceUriRelativeToBase);if(cachedResourceUrl)replaceRefAttrInElem(cachedResourceUrl);else{var resolutionDeferred=$.Deferred();resolutionDeferreds.push(resolutionDeferred),_publicationFetcher.relativeToPackageFetchFileContents(resourceUriRelativeToBase,fetchMode,function(resourceData){var replaceResourceURL=function(finalResourceData){if("text"===fetchMode){var textResourceContentType=ContentTypeDiscovery.identifyContentTypeFromFileName(resourceUriRelativeToBase),declaredType=$(resolvedElem).attr("type");declaredType&&(textResourceContentType=declaredType),finalResourceData=new Blob([finalResourceData],{type:textResourceContentType})}var resourceObjectURL=window.URL.createObjectURL(finalResourceData);_publicationResourcesCache.putResource(resourceUriRelativeToBase,resourceObjectURL,finalResourceData),replaceRefAttrInElem(resourceObjectURL),resolutionDeferred.resolve()};resourceDataPreprocessing?resourceDataPreprocessing(resourceData,resourceUriRelativeToBase,replaceResourceURL):replaceResourceURL(resourceData)},function(){resolutionDeferred.resolve(),onerror.apply(this,arguments)})}}else console.log("HTTP / absolute scheme res: "+refAttrOrigVal)}(resolvedElem,$(resolvedElem).attr(refAttr),refAttr,fetchMode,resolutionDeferreds,onerror,resourceDataPreprocessing)})}this.fetchContentDocumentAndResolveDom=function(contentDocumentResolvedCallback,errorCallback){_publicationFetcher.relativeToPackageFetchFileContents(_contentDocumentPathRelativeToPackage,"text",function(contentDocumentText){_contentDocumentText=contentDocumentText,_contentDocumentTextPreprocessor&&(_contentDocumentText=_contentDocumentTextPreprocessor(loadedDocumentUri,_contentDocumentText)),self.resolveInternalPackageResources(contentDocumentResolvedCallback,errorCallback)},errorCallback)},this.resolveInternalPackageResources=function(resolvedDocumentCallback,onerror){!function(documentDom,baseURI){var baseElem=documentDom.getElementsByTagName("base")[0];if(!baseElem){baseElem=documentDom.createElement("base");var anchor=documentDom.getElementsByTagName("head")[0];anchor&&anchor.insertBefore(baseElem,anchor.childNodes[0])}baseElem.setAttribute("href",baseURI)}(_contentDocumentDom=_publicationFetcher.markupParser.parseMarkup(_contentDocumentText,_srcMediaType),loadedDocumentUri);var resolutionDeferreds=[];_publicationFetcher.shouldFetchMediaAssetsProgrammatically()&&(console.log("fetchMediaAssetsProgrammatically ..."),function(resolutionDeferreds,onerror){resolveResourceElements("img","src","blob",resolutionDeferreds,onerror),resolveResourceElements("image","xlink:href","blob",resolutionDeferreds,onerror)}(resolutionDeferreds,onerror),function(resolutionDeferreds,onerror){resolveResourceElements("audio","src","blob",resolutionDeferreds,onerror)}(resolutionDeferreds,onerror),function(resolutionDeferreds,onerror){resolveResourceElements("video","src","blob",resolutionDeferreds,onerror),resolveResourceElements("video","poster","blob",resolutionDeferreds,onerror)}(resolutionDeferreds,onerror),resolveResourceElements("source","src","blob",resolutionDeferreds,onerror),resolveResourceElements("object","data","blob",resolutionDeferreds,onerror)),function(resolutionDeferreds,onerror){resolveResourceElements("script","src","blob",resolutionDeferreds,onerror)}(resolutionDeferreds,onerror),function(resolutionDeferreds,onerror){resolveResourceElements("link","href","text",resolutionDeferreds,onerror,preprocessCssStyleSheetData)}(resolutionDeferreds,onerror),function(resolutionDeferreds,onerror){$("style",_contentDocumentDom).each(function(index,resolvedElem){var resolutionDeferred=$.Deferred();resolutionDeferreds.push(resolutionDeferred);var styleSheetData=$(resolvedElem).text();preprocessCssStyleSheetData(styleSheetData,_contentDocumentPathRelativeToPackage,function(resolvedStylesheetData){$(resolvedElem).text(resolvedStylesheetData),resolutionDeferred.resolve()})})}(resolutionDeferreds),$.when.apply($,resolutionDeferreds).done(function(){console.log("DOM BLOB URi DONE: "+loadedDocumentUri),resolvedDocumentCallback(_contentDocumentDom)})}}}),define("readium_js/epub-fetch/resource_cache",["underscore"],function(_){return function(sourceWindow,configuredCacheSizeEvictThreshold){var _resourcesHash={},_orderingByLastUseTimestamp=[],_cacheSize=0,CACHE_SIZE_EVICT_THRESHOLD_DEFAULT=1e8,cacheSizeEvictThreshold=function(){if(configuredCacheSizeEvictThreshold)return configuredCacheSizeEvictThreshold;var browserHeapLimitInBytes=window.performance&&window.performance.memory&&window.performance.memory.jsHeapSizeLimit?window.performance.memory.jsHeapSizeLimit:null;return browserHeapLimitInBytes&&browserHeapLimitInBytes/10>CACHE_SIZE_EVICT_THRESHOLD_DEFAULT?browserHeapLimitInBytes/10:CACHE_SIZE_EVICT_THRESHOLD_DEFAULT}();function getTimestamp(){return(new Date).getTime()}function removeCacheEntryFromOrderedIndex(cacheEntry){if(void 0!==cacheEntry.orderingByLastUseTimestampIdx){var orderingByLastUseTimestampIdx=cacheEntry.orderingByLastUseTimestampIdx;_orderingByLastUseTimestamp.splice(orderingByLastUseTimestampIdx,1);for(var i=orderingByLastUseTimestampIdx;i<_orderingByLastUseTimestamp.length;i++){var downshiftedEntry=_orderingByLastUseTimestamp[i];downshiftedEntry.orderingByLastUseTimestampIdx-1!=i&&console.error("algorithm incorrect: downshiftedEntry.orderingByLastUseTimestampIdx: "+downshiftedEntry.orderingByLastUseTimestampIdx+", i: "+i+" -- "+cacheEntry.absoluteHref),downshiftedEntry.orderingByLastUseTimestampIdx=i}}}function updateOrderedIndex(cacheEntry){removeCacheEntryFromOrderedIndex(cacheEntry);var insertIdx=_.sortedIndex(_orderingByLastUseTimestamp,cacheEntry,"lastUseTimestamp");_orderingByLastUseTimestamp.splice(insertIdx,0,cacheEntry),cacheEntry.orderingByLastUseTimestampIdx=insertIdx}this.getResourceURL=function(resourceAbsoluteHref){var resourceObjectUrl=null,resourceData=_resourcesHash[resourceAbsoluteHref];return resourceData&&(resourceObjectUrl=resourceData.url,resourceData.lastUseTimestamp=getTimestamp(),updateOrderedIndex(resourceData)),resourceObjectUrl},this.putResource=function(resourceAbsoluteHref,resourceObjectUrl,resourceDataBlob){this.trimCache();var currentTimestamp=getTimestamp(),cacheEntry={url:resourceObjectUrl,absoluteHref:resourceAbsoluteHref,blob:resourceDataBlob,blobSize:resourceDataBlob.size,creationTimestamp:currentTimestamp,lastUseTimestamp:currentTimestamp,pinned:!0};_resourcesHash[resourceAbsoluteHref]=cacheEntry,updateOrderedIndex(cacheEntry),_cacheSize+=resourceDataBlob.size},this.evictResource=function(resourceAbsoluteHref){var resourceData=_resourcesHash[resourceAbsoluteHref];resourceData&&(sourceWindow.URL.revokeObjectURL(resourceData.url),_cacheSize-=resourceData.blobSize,removeCacheEntryFromOrderedIndex(resourceData),delete _resourcesHash[resourceAbsoluteHref])},this.flushCache=function(){for(var resourceAbsoluteHref in _resourcesHash)this.evictResource(resourceAbsoluteHref);0!=_cacheSize&&(console.error("cacheSize accounting error! cacheSize: "+_cacheSize+", _resourcesHash:"),console.error(_resourcesHash)),_orderingByLastUseTimestamp=[]},this.unPinResources=function(){for(var resourceAbsoluteHref in _resourcesHash)_resourcesHash[resourceAbsoluteHref].pinned=!1},this.trimCache=function(){if(!(_cacheSize<cacheSizeEvictThreshold)){console.log("Trimming cache. Current cache size: "+_cacheSize);for(var i=0;i<_orderingByLastUseTimestamp.length&&!(_cacheSize<cacheSizeEvictThreshold);i++){var cacheEntry=_orderingByLastUseTimestamp[i];if(!cacheEntry.pinned){var resourceAbsoluteHref=cacheEntry.absoluteHref;this.evictResource(resourceAbsoluteHref),i--}}console.log("Cache size after trimming: "+_cacheSize)}}}}),function(root,factory){"object"==typeof exports?module.exports=exports=factory():"function"==typeof define&&define.amd?define("cryptoJs/core",[],factory):root.CryptoJS=factory()}(this,function(){var CryptoJS=CryptoJS||function(Math,undefined){var create=Object.create||function(){function F(){}return function(obj){var subtype;return F.prototype=obj,subtype=new F,F.prototype=null,subtype}}(),C={},C_lib=C.lib={},Base=C_lib.Base={extend:function(overrides){var subtype=create(this);return overrides&&subtype.mixIn(overrides),subtype.hasOwnProperty("init")&&this.init!==subtype.init||(subtype.init=function(){subtype.$super.init.apply(this,arguments)}),subtype.init.prototype=subtype,subtype.$super=this,subtype},create:function(){var instance=this.extend();return instance.init.apply(instance,arguments),instance},init:function(){},mixIn:function(properties){for(var propertyName in properties)properties.hasOwnProperty(propertyName)&&(this[propertyName]=properties[propertyName]);properties.hasOwnProperty("toString")&&(this.toString=properties.toString)},clone:function(){return this.init.prototype.extend(this)}},WordArray=C_lib.WordArray=Base.extend({init:function(words,sigBytes){words=this.words=words||[],this.sigBytes=void 0!=sigBytes?sigBytes:4*words.length},toString:function(encoder){return(encoder||Hex).stringify(this)},concat:function(wordArray){var thisWords=this.words,thatWords=wordArray.words,thisSigBytes=this.sigBytes,thatSigBytes=wordArray.sigBytes;if(this.clamp(),thisSigBytes%4)for(var i=0;i<thatSigBytes;i++){var thatByte=thatWords[i>>>2]>>>24-i%4*8&255;thisWords[thisSigBytes+i>>>2]|=thatByte<<24-(thisSigBytes+i)%4*8}else for(i=0;i<thatSigBytes;i+=4)thisWords[thisSigBytes+i>>>2]=thatWords[i>>>2];return this.sigBytes+=thatSigBytes,this},clamp:function(){var words=this.words,sigBytes=this.sigBytes;words[sigBytes>>>2]&=4294967295<<32-sigBytes%4*8,words.length=Math.ceil(sigBytes/4)},clone:function(){var clone=Base.clone.call(this);return clone.words=this.words.slice(0),clone},random:function(nBytes){for(var rcache,words=[],r=function(m_w){m_w=m_w;var m_z=987654321,mask=4294967295;return function(){var result=((m_z=36969*(65535&m_z)+(m_z>>16)&mask)<<16)+(m_w=18e3*(65535&m_w)+(m_w>>16)&mask)&mask;return result/=4294967296,(result+=.5)*(Math.random()>.5?1:-1)}},i=0;i<nBytes;i+=4){var _r=r(4294967296*(rcache||Math.random()));rcache=987654071*_r(),words.push(4294967296*_r()|0)}return new WordArray.init(words,nBytes)}}),C_enc=C.enc={},Hex=C_enc.Hex={stringify:function(wordArray){for(var words=wordArray.words,sigBytes=wordArray.sigBytes,hexChars=[],i=0;i<sigBytes;i++){var bite=words[i>>>2]>>>24-i%4*8&255;hexChars.push((bite>>>4).toString(16)),hexChars.push((15&bite).toString(16))}return hexChars.join("")},parse:function(hexStr){for(var hexStrLength=hexStr.length,words=[],i=0;i<hexStrLength;i+=2)words[i>>>3]|=parseInt(hexStr.substr(i,2),16)<<24-i%8*4;return new WordArray.init(words,hexStrLength/2)}},Latin1=C_enc.Latin1={stringify:function(wordArray){for(var words=wordArray.words,sigBytes=wordArray.sigBytes,latin1Chars=[],i=0;i<sigBytes;i++){var bite=words[i>>>2]>>>24-i%4*8&255;latin1Chars.push(String.fromCharCode(bite))}return latin1Chars.join("")},parse:function(latin1Str){for(var latin1StrLength=latin1Str.length,words=[],i=0;i<latin1StrLength;i++)words[i>>>2]|=(255&latin1Str.charCodeAt(i))<<24-i%4*8;return new WordArray.init(words,latin1StrLength)}},Utf8=C_enc.Utf8={stringify:function(wordArray){try{return decodeURIComponent(escape(Latin1.stringify(wordArray)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(utf8Str){return Latin1.parse(unescape(encodeURIComponent(utf8Str)))}},BufferedBlockAlgorithm=C_lib.BufferedBlockAlgorithm=Base.extend({reset:function(){this._data=new WordArray.init,this._nDataBytes=0},_append:function(data){"string"==typeof data&&(data=Utf8.parse(data)),this._data.concat(data),this._nDataBytes+=data.sigBytes},_process:function(doFlush){var data=this._data,dataWords=data.words,dataSigBytes=data.sigBytes,blockSize=this.blockSize,nBlocksReady=dataSigBytes/(4*blockSize),nWordsReady=(nBlocksReady=doFlush?Math.ceil(nBlocksReady):Math.max((0|nBlocksReady)-this._minBufferSize,0))*blockSize,nBytesReady=Math.min(4*nWordsReady,dataSigBytes);if(nWordsReady){for(var offset=0;offset<nWordsReady;offset+=blockSize)this._doProcessBlock(dataWords,offset);var processedWords=dataWords.splice(0,nWordsReady);data.sigBytes-=nBytesReady}return new WordArray.init(processedWords,nBytesReady)},clone:function(){var clone=Base.clone.call(this);return clone._data=this._data.clone(),clone},_minBufferSize:0}),C_algo=(C_lib.Hasher=BufferedBlockAlgorithm.extend({cfg:Base.extend(),init:function(cfg){this.cfg=this.cfg.extend(cfg),this.reset()},reset:function(){BufferedBlockAlgorithm.reset.call(this),this._doReset()},update:function(messageUpdate){return this._append(messageUpdate),this._process(),this},finalize:function(messageUpdate){return messageUpdate&&this._append(messageUpdate),this._doFinalize()},blockSize:16,_createHelper:function(hasher){return function(message,cfg){return new hasher.init(cfg).finalize(message)}},_createHmacHelper:function(hasher){return function(message,key){return new C_algo.HMAC.init(hasher,key).finalize(message)}}}),C.algo={});return C}(Math);return CryptoJS}),define("cryptoJs",["cryptoJs/core"],function(main){return main}),function(root,factory){"object"==typeof exports?module.exports=exports=factory(require("./core")):"function"==typeof define&&define.amd?define("cryptoJs/sha1",["./core"],factory):factory(root.CryptoJS)}(this,function(CryptoJS){var C,C_lib,WordArray,Hasher,W,SHA1;return C_lib=(C=CryptoJS).lib,WordArray=C_lib.WordArray,Hasher=C_lib.Hasher,W=[],SHA1=C.algo.SHA1=Hasher.extend({_doReset:function(){this._hash=new WordArray.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(M,offset){for(var H=this._hash.words,a=H[0],b=H[1],c=H[2],d=H[3],e=H[4],i=0;i<80;i++){if(i<16)W[i]=0|M[offset+i];else{var n=W[i-3]^W[i-8]^W[i-14]^W[i-16];W[i]=n<<1|n>>>31}var t=(a<<5|a>>>27)+e+W[i];t+=i<20?1518500249+(b&c|~b&d):i<40?1859775393+(b^c^d):i<60?(b&c|b&d|c&d)-1894007588:(b^c^d)-899497514,e=d,d=c,c=b<<30|b>>>2,b=a,a=t}H[0]=H[0]+a|0,H[1]=H[1]+b|0,H[2]=H[2]+c|0,H[3]=H[3]+d|0,H[4]=H[4]+e|0},_doFinalize:function(){var data=this._data,dataWords=data.words,nBitsTotal=8*this._nDataBytes,nBitsLeft=8*data.sigBytes;return dataWords[nBitsLeft>>>5]|=128<<24-nBitsLeft%32,dataWords[14+(nBitsLeft+64>>>9<<4)]=Math.floor(nBitsTotal/4294967296),dataWords[15+(nBitsLeft+64>>>9<<4)]=nBitsTotal,data.sigBytes=4*dataWords.length,this._process(),this._hash},clone:function(){var clone=Hasher.clone.call(this);return clone._hash=this._hash.clone(),clone}}),C.SHA1=Hasher._createHelper(SHA1),C.HmacSHA1=Hasher._createHmacHelper(SHA1),CryptoJS.SHA1}),define("readium_js/epub-fetch/encryption_handler",["cryptoJs/sha1"],function(CryptoJS_SHA1){var EncryptionHandler=function(encryptionData){var self=this,ENCRYPTION_METHODS={"http://www.idpf.org/2008/embedding":function(obfuscatedResourceBlob,callback){xorObfuscatedBlob(obfuscatedResourceBlob,1040,encryptionData.uidHash,callback)},"http://ns.adobe.com/pdf/enc#RC":function(obfuscatedResourceBlob,callback){var uidWordArray=function(id){var matchResults=/(urn:uuid:)?([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})/i.exec(id),rawUuid=matchResults[2]+matchResults[3]+matchResults[4]+matchResults[5]+matchResults[6];rawUuid&&32==rawUuid.length||console.error("Bad UUID format for ID :"+id);for(var byteArray=[],i=0;i<16;i++){var byteHex=rawUuid.substr(2*i,2),byteNumber=parseInt(byteHex,16);byteArray.push(byteNumber)}return byteArray}(encryptionData.uid);xorObfuscatedBlob(obfuscatedResourceBlob,1024,uidWordArray,callback)}};function xorObfuscatedBlob(obfuscatedResourceBlob,prefixLength,xorKey,callback){!function(blob,callback){var fileReader=new FileReader;fileReader.onload=function(){var arrayBuffer=this.result;callback(new Uint8Array(arrayBuffer))},fileReader.readAsArrayBuffer(blob)}(obfuscatedResourceBlob.slice(0,prefixLength),function(bytes){for(var masklen=xorKey.length,i=0;i<prefixLength;i++)bytes[i]=bytes[i]^xorKey[i%masklen];var deobfuscatedPrefixBlob=new Blob([bytes],{type:obfuscatedResourceBlob.type}),remainderBlob=obfuscatedResourceBlob.slice(prefixLength),deobfuscatedBlob=new Blob([deobfuscatedPrefixBlob,remainderBlob],{type:obfuscatedResourceBlob.type});callback(deobfuscatedBlob)})}this.isEncryptionSpecified=function(){return encryptionData&&encryptionData.encryptions},this.getEncryptionMethodForRelativePath=function(pathRelativeToRoot){return self.isEncryptionSpecified()?encryptionData.encryptions[pathRelativeToRoot]:void 0},this.getDecryptionFunctionForRelativePath=function(pathRelativeToRoot){var encryptionMethod=self.getEncryptionMethodForRelativePath(pathRelativeToRoot);return encryptionMethod&&ENCRYPTION_METHODS[encryptionMethod]?ENCRYPTION_METHODS[encryptionMethod]:void 0}};return EncryptionHandler.CreateEncryptionData=function(id,encryptionDom){for(var txt=unescape(encodeURIComponent(id.trim())),sha=CryptoJS_SHA1(txt),byteArray=[],i=0;i<sha.sigBytes;i++)byteArray.push(sha.words[i>>>2]>>>24-i%4*8&255);var encryptionData={uid:id,uidHash:byteArray,encryptions:void 0};return $("EncryptedData",encryptionDom).each(function(index,encryptedData){var encryptionAlgorithm=$("EncryptionMethod",encryptedData).first().attr("Algorithm");$("CipherReference",encryptedData).each(function(index,CipherReference){var cipherReferenceURI=$(CipherReference).attr("URI");console.log("Encryption/obfuscation algorithm "+encryptionAlgorithm+" specified for "+cipherReferenceURI),encryptionData.encryptions||(encryptionData.encryptions={}),encryptionData.encryptions[cipherReferenceURI]=encryptionAlgorithm})}),encryptionData},EncryptionHandler}),define("readium_js/epub-fetch/publication_fetcher",["jquery","URIjs","./markup_parser","./plain_resource_fetcher","./zip_resource_fetcher","./content_document_fetcher","./resource_cache","./encryption_handler","./discover_content_type","readium_shared_js/helpers"],function($,URI,MarkupParser,PlainResourceFetcher,ZipResourceFetcher,ContentDocumentFetcher,ResourceCache,EncryptionHandler,ContentTypeDiscovery,Helpers){return function(ebookURL,jsLibRoot,sourceWindow,cacheSizeEvictThreshold,contentDocumentTextPreprocessor,contentType){var _shouldConstructDomProgrammatically,_resourceFetcher,_encryptionHandler,_packageFullPath,_packageDocumentAbsoluteUrl,_packageDom,_packageDomInitializationDeferred,self=this;self.contentTypePackageReadStrategyMap={"application/oebps-package+xml":"exploded","application/epub+zip":"zipped","application/zip":"zipped"};var _publicationResourcesCache=new ResourceCache(sourceWindow,cacheSizeEvictThreshold),_contentDocumentTextPreprocessor=contentDocumentTextPreprocessor,_contentType=contentType;function isExploded(){if(ebookURL instanceof Blob||ebookURL instanceof File)return!1;if(_contentType&&(_contentType.indexOf("application/epub+zip")>=0||_contentType.indexOf("application/zip")>=0||_contentType.indexOf("application/octet-stream")>=0))return!1;var uriTrimmed=ebookURL;try{uriTrimmed=new URI(uriTrimmed).search("").hash("").toString()}catch(err){console.error(err),console.log(ebookURL)}return!/\.epub[3?]$/.test(uriTrimmed)}this.markupParser=new MarkupParser,this.initialize=function(callback){var isEpubExploded=isExploded();_shouldConstructDomProgrammatically=!isEpubExploded,console.log("_shouldConstructDomProgrammatically INIT: "+_shouldConstructDomProgrammatically),function(isExploded,callback){isExploded?(console.log(" --- using PlainResourceFetcher"),_resourceFetcher=new PlainResourceFetcher(self),callback(_resourceFetcher)):(console.log(" --- using ZipResourceFetcher"),_resourceFetcher=new ZipResourceFetcher(self,jsLibRoot),callback(_resourceFetcher))}(isEpubExploded,function(resourceFetcher){self.getPackageDom(function(){callback(resourceFetcher)},function(error){console.error("unable to find package document: "+error),callback(void 0)})})},this.shouldConstructDomProgrammatically=function(){return _shouldConstructDomProgrammatically},this.shouldFetchMediaAssetsProgrammatically=function(){return _shouldConstructDomProgrammatically&&!isExploded()},this.getEbookURL=function(){return ebookURL},this.getEbookURL_FilePath=function(){return Helpers.getEbookUrlFilePath(ebookURL)},this.getJsLibRoot=function(){return jsLibRoot},this.flushCache=function(){_publicationResourcesCache.flushCache()},this.getPackageUrl=function(){return _packageDocumentAbsoluteUrl},this.getPackageFullPathRelativeToBase=function(){return _packageFullPath},this.fetchContentDocument=function(attachedData,loadedDocumentUri,contentDocumentResolvedCallback,errorCallback){_publicationResourcesCache.unPinResources(),new ContentDocumentFetcher(self,attachedData.spineItem,loadedDocumentUri,_publicationResourcesCache,_contentDocumentTextPreprocessor).fetchContentDocumentAndResolveDom(contentDocumentResolvedCallback,errorCallback)},this.getFileContentsFromPackage=function(filePathRelativeToPackageRoot,callback,onerror){_packageFullPath?self.relativeToPackageFetchFileContents(filePathRelativeToPackageRoot,"text",function(fileContents){callback(fileContents)},onerror):(console.debug("FETCHING (INIT) ... "+filePathRelativeToPackageRoot),filePathRelativeToPackageRoot&&"/"==filePathRelativeToPackageRoot.charAt(0)&&(filePathRelativeToPackageRoot=filePathRelativeToPackageRoot.substr(1)),_resourceFetcher.fetchFileContentsText(filePathRelativeToPackageRoot,function(fileContents){callback(fileContents)},onerror))},this.getXmlFileDom=function(xmlFilePathRelativeToPackageRoot,callback,onerror){self.getFileContentsFromPackage(xmlFilePathRelativeToPackageRoot,function(xmlFileContents){var fileDom=self.markupParser.parseXml(xmlFileContents);callback(fileDom)},onerror)},this.getPackageFullPath=function(callback,onerror){self.getXmlFileDom("/META-INF/container.xml",function(containerXmlDom){var packageFullPath=self.getRootFile(containerXmlDom);callback(packageFullPath)},onerror)},this.getRootFile=function(containerXmlDom){return $("rootfile",containerXmlDom).attr("full-path")},this.getPackageDom=function(callback,onerror){_packageDom?callback(_packageDom):_packageDomInitializationDeferred?_packageDomInitializationDeferred.done(callback):((_packageDomInitializationDeferred=$.Deferred()).done(callback),self.getPackageFullPath(function(packageFullPath){_packageFullPath=packageFullPath,_packageDocumentAbsoluteUrl=_resourceFetcher.resolveURI(_packageFullPath),console.debug("PACKAGE: "),console.log(_packageFullPath),console.log(_packageDocumentAbsoluteUrl),packageFullPath&&"/"!=packageFullPath.charAt(0)&&(packageFullPath="/"+packageFullPath),self.getXmlFileDom(packageFullPath,function(packageDom){_packageDom=packageDom,_packageDomInitializationDeferred.resolve(packageDom),_packageDomInitializationDeferred=void 0})},onerror))},this.convertPathRelativeToPackageToRelativeToBase=function(relativeToPackagePath){return new URI(relativeToPackagePath).absoluteTo(_packageFullPath).toString()},this.relativeToPackageFetchFileContents=function(relativeToPackagePath,fetchMode,fetchCallback,errorCallback){var pathRelativeToEpubRoot=decodeURIComponent(self.convertPathRelativeToPackageToRelativeToBase(relativeToPackagePath));console.debug("FETCHING ... "+pathRelativeToEpubRoot),"/"===pathRelativeToEpubRoot.charAt(0)&&(pathRelativeToEpubRoot=pathRelativeToEpubRoot.substr(1));var onerror=function(){var err=arguments?arguments.length&&arguments[0]instanceof Error?arguments[0]:arguments instanceof Error?arguments:void 0:void 0,optionalFetch=0==pathRelativeToEpubRoot.indexOf("META-INF/com.apple.ibooks.display-options.xml")||0==pathRelativeToEpubRoot.indexOf("META-INF/encryption.xml");console.log("MISSING: "+pathRelativeToEpubRoot),optionalFetch||err&&(console.error(err),err.message&&console.debug(err.message),err.stack&&console.log(err.stack)),errorCallback&&errorCallback.apply(this,arguments)};if(_shouldConstructDomProgrammatically&&""!==new URI(relativeToPackagePath).scheme())if(console.log("shouldConstructDomProgrammatically EXTERNAL RESOURCE ..."),"blob"===fetchMode){var xhr=new XMLHttpRequest;xhr.open("GET",relativeToPackagePath,!0),xhr.responseType="arraybuffer",xhr.onerror=onerror,xhr.onload=function(loadEvent){var blob=new Blob([xhr.response],{type:ContentTypeDiscovery.identifyContentTypeFromFileName(relativeToPackagePath)});fetchCallback(blob)},xhr.send()}else"data64uri"===fetchMode?console.error("data64uri??"):$.ajax({isLocal:!1,url:relativeToPackagePath,dataType:"text",async:!0,success:function(result){fetchCallback(result)},error:function(xhr,status,errorThrown){onerror(new Error(errorThrown))}});else{var fetchFunction=_resourceFetcher.fetchFileContentsText;"blob"===fetchMode?fetchFunction=_resourceFetcher.fetchFileContentsBlob:"data64uri"===fetchMode&&(console.error("data64uri??"),fetchFunction=_resourceFetcher.fetchFileContentsData64Uri),fetchFunction.call(_resourceFetcher,pathRelativeToEpubRoot,fetchCallback,onerror)}},this.getRelativeXmlFileDom=function(filePath,callback,errorCallback){self.getXmlFileDom(self.convertPathRelativeToPackageToRelativeToBase(filePath),callback,errorCallback)},this.setPackageMetadata=function(packageMetadata,settingFinishedCallback){self.getXmlFileDom("/META-INF/encryption.xml",function(encryptionDom){var encryptionData=EncryptionHandler.CreateEncryptionData(packageMetadata.id,encryptionDom);(_encryptionHandler=new EncryptionHandler(encryptionData)).isEncryptionSpecified()&&(_shouldConstructDomProgrammatically=!0,console.log("_shouldConstructDomProgrammatically ENCRYPTION ACTIVE: "+_shouldConstructDomProgrammatically)),settingFinishedCallback()},function(error){_encryptionHandler=new EncryptionHandler(void 0),settingFinishedCallback()})},this.getDecryptionFunctionForRelativePath=function(pathRelativeToRoot){return _encryptionHandler.getDecryptionFunctionForRelativePath(pathRelativeToRoot)}}}),define("readium_js/epub-model/package_document",["jquery","underscore","URIjs","readium_cfi_js"],function($,_,URI,epubCFI){return function(packageDocumentURL,packageDocumentDOM,resourceFetcher,metadata,spine,manifest){var _page_prog_dir;this.manifest=manifest,this.getSharedJsPackageData=function(){return{rootUrl:packageDocumentURL.substr(0,packageDocumentURL.lastIndexOf("/")),rendition_viewport:metadata.rendition_viewport,rendition_layout:metadata.rendition_layout,rendition_orientation:metadata.rendition_orientation,rendition_flow:metadata.rendition_flow,rendition_spread:metadata.rendition_spread,media_overlay:metadata.media_overlay,spine:{direction:this.getPageProgressionDirection(),items:spine},metadata:metadata}},this.getSpineItem=function(spineIndex){return spine[spineIndex]},this.getSpineItemIdrefFromCFI=function(packageCFI){var $spineItemElement=epubCFI.getTargetElementWithPartialCFI("epubcfi("+packageCFI+")",packageDocumentDOM);if($spineItemElement.length)return $spineItemElement[0].getAttribute("idref")},this.setPageProgressionDirection=function(page_prog_dir){_page_prog_dir=page_prog_dir},this.getPageProgressionDirection=function(){return"rtl"===_page_prog_dir?"rtl":"default"===_page_prog_dir?"default":"ltr"},this.spineLength=function(){return spine.length},this.getMetadata=function(){return metadata},this.getTocItem=function(){var item=manifest.getNavItem();if(item)return item;var spine_id=metadata.ncx;return spine_id&&spine_id.length>0?manifest.getManifestItemByIdref(spine_id):null},this.getToc=function(){var item=this.getTocItem();return item?item.href:null},this.getTocText=function(callback){var toc=this.getToc();if(!toc)return console.error("No TOC?!"),void callback(void 0);resourceFetcher.relativeToPackageFetchFileContents(toc,"text",function(tocDocumentText){callback(tocDocumentText)},function(err){console.error("ERROR fetching TOC from ["+toc+"]:"),console.error(err),callback(void 0)})},this.getTocDom=function(callback){this.getTocText(function(tocText){if("string"==typeof tocText){var tocDom=(new DOMParser).parseFromString(tocText,"text/xml");callback(tocDom)}else callback(void 0)})},this.generateTocListDOM=function(callback){var that=this;this.getTocDom(function(tocDom){if(tocDom)if(that.tocIsNcx())$navMapDOM=$("navMap",tocDom),$ol=$("<ol></ol>"),$.each($navMapDOM.children("navPoint"),function(index,navPoint){!function addNavPointElements($navPointDOM,$ol){var navText=$navPointDOM.children("navLabel").text().trim(),navHref=$navPointDOM.children("content").attr("src"),$navPointLi=$('<li class="nav-elem"></li>').append($("<a></a>",{href:navHref,text:navText}));if($ol.append($navPointLi),$navPointDOM.children("navPoint").length>0){var $newLi=$("<li></li>"),$newOl=$("<ol></ol>");$.each($navPointDOM.children("navPoint"),function(navIndex,navPoint){$newOl.append(addNavPointElements($(navPoint),$newOl))}),$newLi.append($newOl),$ol.append($newLi)}}($(navPoint),$ol)}),callback($ol[0]);else{var packageDocumentAbsoluteURL=new URI(packageDocumentURL).absoluteTo(document.URL),tocDocumentAbsoluteURL=new URI(that.getToc()).absoluteTo(packageDocumentAbsoluteURL),newBaseTag=($(tocDom).remove("base"),$("<base></base>"));$(newBaseTag).attr("href",tocDocumentAbsoluteURL),$(tocDom).find("head").append(newBaseTag),callback(tocDom)}else callback(void 0);var $navMapDOM,$ol})},this.tocIsNcx=function(){var contentDocURI=this.getTocItem().href;return"ncx"===contentDocURI.substr(contentDocURI.lastIndexOf(".")+1).trim().toLowerCase()}}}),define("readium_js/epub-model/smil_document_parser",["jquery","underscore"],function($,_){var SmilDocumentParser=function(packageDocument,publicationFetcher){this.parse=function(spineItem,manifestItemSMIL,smilJson,deferred,callback,errorCallback){var that=this,href=publicationFetcher.convertPathRelativeToPackageToRelativeToBase(manifestItemSMIL.href);"/"!=href.charAt(0)&&(href="/"+href),publicationFetcher.getXmlFileDom(href,function(xmlDom){var smil=$("smil",xmlDom)[0];smilJson.smilVersion=smil.getAttribute("version"),smilJson.children=that.getChildren(smil),smilJson.href=manifestItemSMIL.href,smilJson.id=manifestItemSMIL.id,smilJson.spineItemId=spineItem.idref;var mediaItem=packageDocument.getMetadata().getMediaItemByRefinesId(manifestItemSMIL.id);mediaItem&&(smilJson.duration=mediaItem.duration),callback(deferred,smilJson)},function(fetchError){errorCallback(deferred,fetchError)})};var safeCopyProperty=function(property,fromNode,toItem,isRequired,defaultValue){var propParse=property.split(":"),destProperty=propParse[propParse.length-1];"type"===destProperty&&(destProperty="epubtype"),void 0!=fromNode.getAttribute(property)?toItem[destProperty]=fromNode.getAttribute(property):isRequired&&(void 0!==defaultValue?toItem[destProperty]=defaultValue:console.log("Required property "+property+" not found in smil node "+fromNode.nodeName))};function makeFakeSmilJson(spineItem){return{id:"",href:"",spineItemId:spineItem.idref,children:[{nodeType:"seq",textref:spineItem.href,children:[{nodeType:"par",children:[{nodeType:"text",src:spineItem.href,srcFile:spineItem.href,srcFragmentId:""}]}]}]}}this.getChildren=function(element){var that=this,children=[];return $.each(element.childNodes,function(elementIndex,currElement){if(1===currElement.nodeType){var item=that.createItemFromElement(currElement);item&&children.push(item)}}),children},this.createItemFromElement=function(element){var item={};item.nodeType=element.nodeName;var isBody=!1;if("body"===item.nodeType&&(isBody=!0,item.nodeType="seq"),"seq"===item.nodeType)safeCopyProperty("epub:textref",element,item,!isBody),safeCopyProperty("id",element,item),safeCopyProperty("epub:type",element,item),item.children=this.getChildren(element);else if("par"===item.nodeType)safeCopyProperty("id",element,item),safeCopyProperty("epub:type",element,item),item.children=this.getChildren(element);else if("text"===item.nodeType){safeCopyProperty("src",element,item,!0);var srcParts=item.src.split("#");item.srcFile=srcParts[0],item.srcFragmentId=2===srcParts.length?srcParts[1]:"",safeCopyProperty("id",element,item)}else{if("audio"!==item.nodeType)return;safeCopyProperty("src",element,item,!0),safeCopyProperty("id",element,item),item.clipBegin=SmilDocumentParser.resolveClockValue(element.getAttribute("clipBegin")),item.clipEnd=SmilDocumentParser.resolveClockValue(element.getAttribute("clipEnd"))}return item},this.fillSmilData=function(callback){if(packageDocument.spineLength()<=0)callback();else{for(var allFakeSmil=!0,mo_map=[],parsingDeferreds=[],spineIdx=0;spineIdx<packageDocument.spineLength();spineIdx++){var spineItem=packageDocument.getSpineItem(spineIdx);if(spineItem.media_overlay_id){var manifestItemSMIL=packageDocument.manifest.getManifestItemByIdref(spineItem.media_overlay_id);if(!manifestItemSMIL){console.error("Cannot find SMIL manifest item for spine/manifest item?! "+spineItem.media_overlay_id);continue}var parsingDeferred=$.Deferred();parsingDeferred.media_overlay_id=spineItem.media_overlay_id,parsingDeferreds.push(parsingDeferred);var smilJson={};mo_map.push(smilJson),this.parse(spineItem,manifestItemSMIL,smilJson,parsingDeferred,function(myDeferred,smilJson){allFakeSmil=!1,myDeferred.resolve()},function(myDeferred,parseError){console.log("Error when parsing SMIL manifest item "+manifestItemSMIL.href+":"),console.log(parseError),myDeferred.resolve()})}else mo_map.push(makeFakeSmilJson(spineItem))}$.when.apply($,parsingDeferreds).done(function(){packageDocument.getMetadata().setMoMap(mo_map),allFakeSmil&&packageDocument.getMetadata().setMoMap([]),callback()})}}};return SmilDocumentParser.resolveClockValue=function(value){if(!value)return 0;var hours=0,mins=0,secs=0;if(-1!=value.indexOf("min"))mins=parseFloat(value.substr(0,value.indexOf("min")));else if(-1!=value.indexOf("ms")){secs=parseFloat(value.substr(0,value.indexOf("ms")))/1e3}else if(-1!=value.indexOf("s"))secs=parseFloat(value.substr(0,value.indexOf("s")));else if(-1!=value.indexOf("h"))hours=parseFloat(value.substr(0,value.indexOf("h")));else{var arr=value.split(":");secs=parseFloat(arr.pop()),arr.length>0&&(mins=parseFloat(arr.pop()),arr.length>0&&(hours=parseFloat(arr.pop())))}return 3600*hours+60*mins+secs},SmilDocumentParser}),define("readium_js/epub-model/metadata",["underscore"],function(_){return function(){var that=this,_mediaItemIndexByRefinesId={};this.eachMediaItem=function(iteratorCallback){return that.mediaItems&&_.each(that.mediaItems,iteratorCallback),this},this.getMediaItemByRefinesId=function(id){return _mediaItemIndexByRefinesId[id]},this.setMoMap=function(mediaOverlaysMap){that.media_overlay.smil_models=mediaOverlaysMap},this.eachMediaItem(function(item){var id=item.refines,hash=id.indexOf("#");if(hash>=0){var start=hash+1,end=id.length-1;id=id.substr(start,end)}id=id.trim(),_mediaItemIndexByRefinesId[id]=item})}}),define("readium_js/epub-model/manifest",["underscore"],function(_){return function(manifestJson){var _navItem,_manifestIndexById={};this.manifestLength=function(){return manifestJson.length},this.getManifestItemByIdref=function(idref){return _manifestIndexById[idref]},this.each=function(iteratorCallback){return _.each(manifestJson,iteratorCallback),this},this.getNavItem=function(){return _navItem},this.each(function(manifestItem){_manifestIndexById[manifestItem.id]=manifestItem,manifestItem.properties&&-1!==manifestItem.properties.indexOf("nav")&&(_navItem=manifestItem)})}}),define("readium_js/epub-model/package_document_parser",["jquery","underscore","../epub-fetch/markup_parser","URIjs","./package_document","./smil_document_parser","./metadata","./manifest","readium_cfi_js"],function($,_,MarkupParser,URI,PackageDocument,SmilDocumentParser,Metadata,Manifest,epubCFI){return function(publicationFetcher){var _packageFetcher=publicationFetcher,_deferredXmlDom=$.Deferred();function findXmlElemByLocalNameAnyNS(rootElement,localName,predicate){var elements=rootElement.getElementsByTagNameNS("*",localName);return predicate?_.find(elements,predicate):elements[0]}function filterXmlElemsByLocalNameAnyNS(rootElement,localName,predicate){var elements=rootElement.getElementsByTagNameNS("*",localName);return _.filter(elements,predicate)}function getElemText(rootElement,localName,predicate){var foundElement=findXmlElemByLocalNameAnyNS(rootElement,localName,predicate);return foundElement?foundElement.textContent:""}function getMetaElemPropertyText(rootElement,attrPropertyValue){var foundElement=findXmlElemByLocalNameAnyNS(rootElement,"meta",function(element){return element.getAttribute("property")===attrPropertyValue});return foundElement?foundElement.textContent:""}publicationFetcher.getPackageDom(function(packageDom){_deferredXmlDom.resolve(packageDom)},function(){_deferredXmlDom.resolve(void 0)}),this.parse=function(callback){_deferredXmlDom.done(function(xmlDom){if(xmlDom){var attrName,predicate,foundElement,metadata=function(xmlDom){var metadata=new Metadata,metadataElem=findXmlElemByLocalNameAnyNS(xmlDom,"metadata"),packageElem=findXmlElemByLocalNameAnyNS(xmlDom,"package"),spineElem=findXmlElemByLocalNameAnyNS(xmlDom,"spine");metadata.author=getElemText(metadataElem,"creator"),metadata.description=getElemText(metadataElem,"description"),metadata.epub_version=packageElem.getAttribute("version")?packageElem.getAttribute("version"):"",metadata.id=getElemText(metadataElem,"identifier"),metadata.language=getElemText(metadataElem,"language"),metadata.modified_date=getMetaElemPropertyText(metadataElem,"dcterms:modified"),metadata.ncx=spineElem.getAttribute("toc")?spineElem.getAttribute("toc"):"",metadata.pubdate=getElemText(metadataElem,"date"),metadata.publisher=getElemText(metadataElem,"publisher"),metadata.rights=getElemText(metadataElem,"rights"),metadata.title=getElemText(metadataElem,"title"),metadata.rendition_orientation=getMetaElemPropertyText(metadataElem,"rendition:orientation"),metadata.rendition_layout=getMetaElemPropertyText(metadataElem,"rendition:layout"),metadata.rendition_spread=getMetaElemPropertyText(metadataElem,"rendition:spread"),metadata.rendition_flow=getMetaElemPropertyText(metadataElem,"rendition:flow"),metadata.rendition_viewport=getElemText(metadataElem,"meta",function(element){return"rendition:viewport"===element.getAttribute("property")&&!element.hasAttribute("refines")});var viewports=[],viewportMetaElems=filterXmlElemsByLocalNameAnyNS(metadataElem,"meta",function(element){return"rendition:viewport"===element.getAttribute("property")&&element.hasAttribute("refines")});_.each(viewportMetaElems,function(currItem){var id=currItem.getAttribute("refines");if(id){var hash=id.indexOf("#");if(hash>=0){var start=hash+1,end=id.length-1;id=id.substr(start,end)}id=id.trim()}var vp={refines:id,viewport:currItem.textContent};viewports.push(vp)}),metadata.rendition_viewports=viewports,metadata.mediaItems=[];var overlayElems=filterXmlElemsByLocalNameAnyNS(metadataElem,"meta",function(element){return"media:duration"===element.getAttribute("property")&&element.hasAttribute("refines")});return _.each(overlayElems,function(currItem){metadata.mediaItems.push({refines:currItem.getAttribute("refines"),duration:SmilDocumentParser.resolveClockValue(currItem.textContent)})}),metadata.media_overlay={duration:SmilDocumentParser.resolveClockValue(getElemText(metadataElem,"meta",function(element){return"media:duration"===element.getAttribute("property")&&!element.hasAttribute("refines")})),narrator:getMetaElemPropertyText(metadataElem,"media:narrator"),activeClass:getMetaElemPropertyText(metadataElem,"media:active-class"),playbackActiveClass:getMetaElemPropertyText(metadataElem,"media:playback-active-class"),smil_models:[],skippables:["sidebar","practice","marginalia","annotation","help","note","footnote","rearnote","table","table-row","table-cell","list","list-item","pagebreak"],escapables:["sidebar","bibliography","toc","loi","appendix","landmarks","lot","index","colophon","epigraph","conclusion","afterword","warning","epilogue","foreword","introduction","prologue","preface","preamble","notice","errata","copyright-page","acknowledgments","other-credits","titlepage","imprimatur","contributors","halftitlepage","dedication","help","annotation","marginalia","practice","note","footnote","rearnote","footnotes","rearnotes","bridgehead","page-list","table","table-row","table-cell","list","list-item","glossary"]},metadata}(xmlDom),page_prog_dir=(xmlDom.getElementsByTagNameNS("*","spine")[0],attrName="page-progression-direction",(foundElement=findXmlElemByLocalNameAnyNS(xmlDom,"spine",predicate))?foundElement.getAttribute(attrName):""),manifest=(function(xmlDom){var $bindings=$(findXmlElemByLocalNameAnyNS(xmlDom,"bindings")).children(),jsonBindings=[];$.each($bindings,function(bindingElementIndex,currBindingElement){var $currBindingElement=$(currBindingElement),binding={handler:$currBindingElement.attr("handler")?$currBindingElement.attr("handler"):"",media_type:$currBindingElement.attr("media-type")?$currBindingElement.attr("media-type"):""};jsonBindings.push(binding)})}(xmlDom),new Manifest(function(xmlDom){var $manifestItems=$(findXmlElemByLocalNameAnyNS(xmlDom,"manifest")).children(),jsonManifest=[];return $.each($manifestItems,function(manifestElementIndex,currManifestElement){var $currManifestElement=$(currManifestElement),manifestItem={href:$currManifestElement.attr("href")?$currManifestElement.attr("href"):"",id:$currManifestElement.attr("id")?$currManifestElement.attr("id"):"",media_overlay_id:$currManifestElement.attr("media-overlay")?$currManifestElement.attr("media-overlay"):"",media_type:$currManifestElement.attr("media-type")?$currManifestElement.attr("media-type"):"",properties:$currManifestElement.attr("properties")?$currManifestElement.attr("properties"):""};jsonManifest.push(manifestItem)}),jsonManifest}(xmlDom))),spine=function(xmlDom,manifest,metadata){var $spineElements,jsonSpine=[];return $spineElements=$(findXmlElemByLocalNameAnyNS(xmlDom,"spine")).children(),$.each($spineElements,function(spineElementIndex,currSpineElement){var $currSpineElement=$(currSpineElement),idref=$currSpineElement.attr("idref")?$currSpineElement.attr("idref"):"",manifestItem=manifest.getManifestItemByIdref(idref),id=$currSpineElement.attr("id"),viewport=void 0;_.each(metadata.rendition_viewports,function(vp){if(vp.refines==id)return viewport=vp.viewport,!0});var spineItem={rendition_viewport:viewport,idref:idref,href:manifestItem.href,manifest_id:manifestItem.id,media_type:manifestItem.media_type,media_overlay_id:manifestItem.media_overlay_id,linear:$currSpineElement.attr("linear")?$currSpineElement.attr("linear"):"",properties:$currSpineElement.attr("properties")?$currSpineElement.attr("properties"):"",cfi:epubCFI.generatePackageDocumentCFIComponentWithSpineIndex(spineElementIndex,xmlDom)},parsedProperties=function(str){for(var properties={},allPropStrs=str.split(" "),i=0;i<allPropStrs.length;i++)"rendition:orientation-landscape"===allPropStrs[i]&&(properties.rendition_orientation="landscape"),"rendition:orientation-portrait"===allPropStrs[i]&&(properties.rendition_orientation="portrait"),"rendition:orientation-auto"===allPropStrs[i]&&(properties.rendition_orientation="auto"),"rendition:spread-none"===allPropStrs[i]&&(properties.rendition_spread="none"),"rendition:spread-landscape"===allPropStrs[i]&&(properties.rendition_spread="landscape"),"rendition:spread-portrait"===allPropStrs[i]&&(properties.rendition_spread="portrait"),"rendition:spread-both"===allPropStrs[i]&&(properties.rendition_spread="both"),"rendition:spread-auto"===allPropStrs[i]&&(properties.rendition_spread="auto"),"rendition:flow-paginated"===allPropStrs[i]&&(properties.rendition_flow="paginated"),"rendition:flow-scrolled-continuous"===allPropStrs[i]&&(properties.rendition_flow="scrolled-continuous"),"rendition:flow-scrolled-doc"===allPropStrs[i]&&(properties.rendition_flow="scrolled-doc"),"rendition:flow-auto"===allPropStrs[i]&&(properties.rendition_flow="auto"),"rendition:page-spread-center"===allPropStrs[i]&&(properties.page_spread="page-spread-center"),"page-spread-left"===allPropStrs[i]&&(properties.page_spread="page-spread-left"),"page-spread-right"===allPropStrs[i]&&(properties.page_spread="page-spread-right"),"rendition:layout-reflowable"===allPropStrs[i]&&(properties.fixed_flow=!1,properties.rendition_layout="reflowable"),"rendition:layout-pre-paginated"===allPropStrs[i]&&(properties.fixed_flow=!0,properties.rendition_layout="pre-paginated");return properties}(spineItem.properties);$.extend(spineItem,parsedProperties),jsonSpine.push(spineItem)}),jsonSpine}(xmlDom,manifest,metadata),cover=function(xmlDom){var manifest,$imageNode;if(manifest=findXmlElemByLocalNameAnyNS(xmlDom,"manifest"),1===($imageNode=$(findXmlElemByLocalNameAnyNS(manifest,"item",function(element){var attr=element.getAttribute("properties");return attr&&_.contains(attr.split(" "),"cover-image")}))).length&&$imageNode.attr("href"))return $imageNode.attr("href");var metaNode=$(findXmlElemByLocalNameAnyNS(xmlDom,"meta",function(element){return"cover"===element.getAttribute("name")})),contentAttr=metaNode.attr("content");return 1===metaNode.length&&contentAttr&&1===($imageNode=$(findXmlElemByLocalNameAnyNS(manifest,"item",function(element){return element.getAttribute("id")===contentAttr}))).length&&$imageNode.attr("href")?$imageNode.attr("href"):1===($imageNode=$(findXmlElemByLocalNameAnyNS(manifest,"item",function(element){return"cover"===element.getAttribute("id")}))).length&&$imageNode.attr("href")?$imageNode.attr("href"):null}(xmlDom);cover&&(metadata.cover_href=cover),$.when(function(metadata){var dff=$.Deferred();return metadata.rendition_layout?dff.resolve():publicationFetcher.relativeToPackageFetchFileContents("/META-INF/com.apple.ibooks.display-options.xml","text",function(ibookPropText){if(ibookPropText){var parser=new MarkupParser,propModel=parser.parseXml(ibookPropText),fixLayoutProp=$("option[name=fixed-layout]",propModel)[0];if(fixLayoutProp){var fixLayoutVal=$(fixLayoutProp).text();"true"===fixLayoutVal&&(metadata.rendition_layout="pre-paginated",console.log("using com.apple.ibooks.display-options.xml fixed-layout property"))}}dff.resolve()},function(err){dff.resolve()}),dff.promise()}(metadata)).then(function(){_packageFetcher.setPackageMetadata(metadata,function(){var packageDocument=new PackageDocument(publicationFetcher.getPackageUrl(),xmlDom,publicationFetcher,metadata,spine,manifest);packageDocument.setPageProgressionDirection(page_prog_dir),function(packageDocument,callback){new SmilDocumentParser(packageDocument,publicationFetcher).fillSmilData(function(){callback(packageDocument)})}(packageDocument,callback)})})}else callback(void 0)})}}}),function(root,name,definition){"undefined"!=typeof module&&module.exports?module.exports=definition():"function"==typeof define&&define.amd?define("bowser",definition):root.bowser=definition()}(this,0,function(){var t=!0;function detect(ua){function getFirstMatch(regex){var match=ua.match(regex);return match&&match.length>1&&match[1]||""}function getSecondMatch(regex){var match=ua.match(regex);return match&&match.length>1&&match[2]||""}var result,iosdevice=getFirstMatch(/(ipod|iphone|ipad)/i).toLowerCase(),android=!/like android/i.test(ua)&&/android/i.test(ua),nexusMobile=/nexus\s*[0-6]\s*/i.test(ua),nexusTablet=!nexusMobile&&/nexus\s*[0-9]+/i.test(ua),chromeos=/CrOS/.test(ua),silk=/silk/i.test(ua),sailfish=/sailfish/i.test(ua),tizen=/tizen/i.test(ua),webos=/(web|hpw)(o|0)s/i.test(ua),windowsphone=/windows phone/i.test(ua),windows=(/SamsungBrowser/i.test(ua),!windowsphone&&/windows/i.test(ua)),mac=!iosdevice&&!silk&&/macintosh/i.test(ua),linux=!android&&!sailfish&&!tizen&&!webos&&/linux/i.test(ua),edgeVersion=getSecondMatch(/edg([ea]|ios)\/(\d+(\.\d+)?)/i),versionIdentifier=getFirstMatch(/version\/(\d+(\.\d+)?)/i),tablet=/tablet/i.test(ua)&&!/tablet pc/i.test(ua),mobile=!tablet&&/[^-]mobi/i.test(ua),xbox=/xbox/i.test(ua);/opera/i.test(ua)?result={name:"Opera",opera:t,version:versionIdentifier||getFirstMatch(/(?:opera|opr|opios)[\s\/](\d+(\.\d+)?)/i)}:/opr\/|opios/i.test(ua)?result={name:"Opera",opera:t,version:getFirstMatch(/(?:opr|opios)[\s\/](\d+(\.\d+)?)/i)||versionIdentifier}:/SamsungBrowser/i.test(ua)?result={name:"Samsung Internet for Android",samsungBrowser:t,version:versionIdentifier||getFirstMatch(/(?:SamsungBrowser)[\s\/](\d+(\.\d+)?)/i)}:/Whale/i.test(ua)?result={name:"NAVER Whale browser",whale:t,version:getFirstMatch(/(?:whale)[\s\/](\d+(?:\.\d+)+)/i)}:/MZBrowser/i.test(ua)?result={name:"MZ Browser",mzbrowser:t,version:getFirstMatch(/(?:MZBrowser)[\s\/](\d+(?:\.\d+)+)/i)}:/coast/i.test(ua)?result={name:"Opera Coast",coast:t,version:versionIdentifier||getFirstMatch(/(?:coast)[\s\/](\d+(\.\d+)?)/i)}:/focus/i.test(ua)?result={name:"Focus",focus:t,version:getFirstMatch(/(?:focus)[\s\/](\d+(?:\.\d+)+)/i)}:/yabrowser/i.test(ua)?result={name:"Yandex Browser",yandexbrowser:t,version:versionIdentifier||getFirstMatch(/(?:yabrowser)[\s\/](\d+(\.\d+)?)/i)}:/ucbrowser/i.test(ua)?result={name:"UC Browser",ucbrowser:t,version:getFirstMatch(/(?:ucbrowser)[\s\/](\d+(?:\.\d+)+)/i)}:/mxios/i.test(ua)?result={name:"Maxthon",maxthon:t,version:getFirstMatch(/(?:mxios)[\s\/](\d+(?:\.\d+)+)/i)}:/epiphany/i.test(ua)?result={name:"Epiphany",epiphany:t,version:getFirstMatch(/(?:epiphany)[\s\/](\d+(?:\.\d+)+)/i)}:/puffin/i.test(ua)?result={name:"Puffin",puffin:t,version:getFirstMatch(/(?:puffin)[\s\/](\d+(?:\.\d+)?)/i)}:/sleipnir/i.test(ua)?result={name:"Sleipnir",sleipnir:t,version:getFirstMatch(/(?:sleipnir)[\s\/](\d+(?:\.\d+)+)/i)}:/k-meleon/i.test(ua)?result={name:"K-Meleon",kMeleon:t,version:getFirstMatch(/(?:k-meleon)[\s\/](\d+(?:\.\d+)+)/i)}:windowsphone?(result={name:"Windows Phone",osname:"Windows Phone",windowsphone:t},edgeVersion?(result.msedge=t,result.version=edgeVersion):(result.msie=t,result.version=getFirstMatch(/iemobile\/(\d+(\.\d+)?)/i))):/msie|trident/i.test(ua)?result={name:"Internet Explorer",msie:t,version:getFirstMatch(/(?:msie |rv:)(\d+(\.\d+)?)/i)}:chromeos?result={name:"Chrome",osname:"Chrome OS",chromeos:t,chromeBook:t,chrome:t,version:getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)}:/edg([ea]|ios)/i.test(ua)?result={name:"Microsoft Edge",msedge:t,version:edgeVersion}:/vivaldi/i.test(ua)?result={name:"Vivaldi",vivaldi:t,version:getFirstMatch(/vivaldi\/(\d+(\.\d+)?)/i)||versionIdentifier}:sailfish?result={name:"Sailfish",osname:"Sailfish OS",sailfish:t,version:getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i)}:/seamonkey\//i.test(ua)?result={name:"SeaMonkey",seamonkey:t,version:getFirstMatch(/seamonkey\/(\d+(\.\d+)?)/i)}:/firefox|iceweasel|fxios/i.test(ua)?(result={name:"Firefox",firefox:t,version:getFirstMatch(/(?:firefox|iceweasel|fxios)[ \/](\d+(\.\d+)?)/i)},/\((mobile|tablet);[^\)]*rv:[\d\.]+\)/i.test(ua)&&(result.firefoxos=t,result.osname="Firefox OS")):silk?result={name:"Amazon Silk",silk:t,version:getFirstMatch(/silk\/(\d+(\.\d+)?)/i)}:/phantom/i.test(ua)?result={name:"PhantomJS",phantom:t,version:getFirstMatch(/phantomjs\/(\d+(\.\d+)?)/i)}:/slimerjs/i.test(ua)?result={name:"SlimerJS",slimer:t,version:getFirstMatch(/slimerjs\/(\d+(\.\d+)?)/i)}:/blackberry|\bbb\d+/i.test(ua)||/rim\stablet/i.test(ua)?result={name:"BlackBerry",osname:"BlackBerry OS",blackberry:t,version:versionIdentifier||getFirstMatch(/blackberry[\d]+\/(\d+(\.\d+)?)/i)}:webos?(result={name:"WebOS",osname:"WebOS",webos:t,version:versionIdentifier||getFirstMatch(/w(?:eb)?osbrowser\/(\d+(\.\d+)?)/i)},/touchpad\//i.test(ua)&&(result.touchpad=t)):/bada/i.test(ua)?result={name:"Bada",osname:"Bada",bada:t,version:getFirstMatch(/dolfin\/(\d+(\.\d+)?)/i)}:tizen?result={name:"Tizen",osname:"Tizen",tizen:t,version:getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.\d+)?)/i)||versionIdentifier}:/qupzilla/i.test(ua)?result={name:"QupZilla",qupzilla:t,version:getFirstMatch(/(?:qupzilla)[\s\/](\d+(?:\.\d+)+)/i)||versionIdentifier}:/chromium/i.test(ua)?result={name:"Chromium",chromium:t,version:getFirstMatch(/(?:chromium)[\s\/](\d+(?:\.\d+)?)/i)||versionIdentifier}:/chrome|crios|crmo/i.test(ua)?result={name:"Chrome",chrome:t,version:getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)}:android?result={name:"Android",version:versionIdentifier}:/safari|applewebkit/i.test(ua)?(result={name:"Safari",safari:t},versionIdentifier&&(result.version=versionIdentifier)):iosdevice?(result={name:"iphone"==iosdevice?"iPhone":"ipad"==iosdevice?"iPad":"iPod"},versionIdentifier&&(result.version=versionIdentifier)):result=/googlebot/i.test(ua)?{name:"Googlebot",googlebot:t,version:getFirstMatch(/googlebot\/(\d+(\.\d+))/i)||versionIdentifier}:{name:getFirstMatch(/^(.*)\/(.*) /),version:getSecondMatch(/^(.*)\/(.*) /)},!result.msedge&&/(apple)?webkit/i.test(ua)?(/(apple)?webkit\/537\.36/i.test(ua)?(result.name=result.name||"Blink",result.blink=t):(result.name=result.name||"Webkit",result.webkit=t),!result.version&&versionIdentifier&&(result.version=versionIdentifier)):!result.opera&&/gecko\//i.test(ua)&&(result.name=result.name||"Gecko",result.gecko=t,result.version=result.version||getFirstMatch(/gecko\/(\d+(\.\d+)?)/i)),result.windowsphone||!android&&!result.silk?!result.windowsphone&&iosdevice?(result[iosdevice]=t,result.ios=t,result.osname="iOS"):mac?(result.mac=t,result.osname="macOS"):xbox?(result.xbox=t,result.osname="Xbox"):windows?(result.windows=t,result.osname="Windows"):linux&&(result.linux=t,result.osname="Linux"):(result.android=t,result.osname="Android");var osVersion="";result.windows?osVersion=function(s){switch(s){case"NT":return"NT";case"XP":return"XP";case"NT 5.0":return"2000";case"NT 5.1":return"XP";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}}(getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i)):result.windowsphone?osVersion=getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i):result.mac?osVersion=(osVersion=getFirstMatch(/Mac OS X (\d+([_\.\s]\d+)*)/i)).replace(/[_\s]/g,"."):iosdevice?osVersion=(osVersion=getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i)).replace(/[_\s]/g,"."):android?osVersion=getFirstMatch(/android[ \/-](\d+(\.\d+)*)/i):result.webos?osVersion=getFirstMatch(/(?:web|hpw)os\/(\d+(\.\d+)*)/i):result.blackberry?osVersion=getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i):result.bada?osVersion=getFirstMatch(/bada\/(\d+(\.\d+)*)/i):result.tizen&&(osVersion=getFirstMatch(/tizen[\/\s](\d+(\.\d+)*)/i)),osVersion&&(result.osversion=osVersion);var osMajorVersion=!result.windows&&osVersion.split(".")[0];return tablet||nexusTablet||"ipad"==iosdevice||android&&(3==osMajorVersion||osMajorVersion>=4&&!mobile)||result.silk?result.tablet=t:(mobile||"iphone"==iosdevice||"ipod"==iosdevice||android||nexusMobile||result.blackberry||result.webos||result.bada)&&(result.mobile=t),result.msedge||result.msie&&result.version>=10||result.yandexbrowser&&result.version>=15||result.vivaldi&&result.version>=1||result.chrome&&result.version>=20||result.samsungBrowser&&result.version>=4||result.whale&&1===compareVersions([result.version,"1.0"])||result.mzbrowser&&1===compareVersions([result.version,"6.0"])||result.focus&&1===compareVersions([result.version,"1.0"])||result.firefox&&result.version>=20||result.safari&&result.version>=6||result.opera&&result.version>=10||result.ios&&result.osversion&&result.osversion.split(".")[0]>=6||result.blackberry&&result.version>=10.1||result.chromium&&result.version>=20?result.a=t:result.msie&&result.version<10||result.chrome&&result.version<20||result.firefox&&result.version<20||result.safari&&result.version<6||result.opera&&result.version<10||result.ios&&result.osversion&&result.osversion.split(".")[0]<6||result.chromium&&result.version<20?result.c=t:result.x=t,result}var bowser=detect("undefined"!=typeof navigator&&navigator.userAgent||"");function getVersionPrecision(version){return version.split(".").length}function map(arr,iterator){var i,result=[];if(Array.prototype.map)return Array.prototype.map.call(arr,iterator);for(i=0;i<arr.length;i++)result.push(iterator(arr[i]));return result}function compareVersions(versions){for(var precision=Math.max(getVersionPrecision(versions[0]),getVersionPrecision(versions[1])),chunks=map(versions,function(version){var delta=precision-getVersionPrecision(version);return map((version+=new Array(delta+1).join(".0")).split("."),function(chunk){return new Array(20-chunk.length).join("0")+chunk}).reverse()});--precision>=0;){if(chunks[0][precision]>chunks[1][precision])return 1;if(chunks[0][precision]!==chunks[1][precision])return-1;if(0===precision)return 0}}function isUnsupportedBrowser(minVersions,strictMode,ua){var _bowser=bowser;"string"==typeof strictMode&&(ua=strictMode,strictMode=void 0),void 0===strictMode&&(strictMode=!1),ua&&(_bowser=detect(ua));var version=""+_bowser.version;for(var browser in minVersions)if(minVersions.hasOwnProperty(browser)&&_bowser[browser]){if("string"!=typeof minVersions[browser])throw new Error("Browser version in the minVersion map should be a string: "+browser+": "+String(minVersions));return compareVersions([version,minVersions[browser]])<0}return strictMode}return bowser.test=function(browserList){for(var i=0;i<browserList.length;++i){var browserItem=browserList[i];if("string"==typeof browserItem&&browserItem in bowser)return!0}return!1},bowser.isUnsupportedBrowser=isUnsupportedBrowser,bowser.compareVersions=compareVersions,bowser.check=function(minVersions,strictMode,ua){return!isUnsupportedBrowser(minVersions,strictMode,ua)},bowser._detect=detect,bowser.detect=detect,bowser}),define("bowser",function(global){return function(){return global.bowser}}(this)),define("readium_js/epub-fetch/iframe_zip_loader",["URIjs","readium_shared_js/views/iframe_loader","underscore","./discover_content_type","bowser"],function(URI,IFrameLoader,_,ContentTypeDiscovery,bowser){var zipIframeLoader=function(getCurrentResourceFetcher,contentDocumentTextPreprocessor){var isIE=window.navigator.userAgent.indexOf("Trident")>0||window.navigator.userAgent.indexOf("Edge")>0,basicIframeLoader=new IFrameLoader,self=this,_contentDocumentTextPreprocessor=contentDocumentTextPreprocessor;this.addIFrameEventListener=function(eventName,callback,context){basicIframeLoader.addIFrameEventListener(eventName,callback,context)},this.updateIframeEvents=function(iframe){basicIframeLoader.updateIframeEvents(iframe)},this.loadIframe=function(iframe,src,callback,caller,attachedData){iframe.baseURI||(isIE&&iframe.ownerDocument.defaultView.frameElement?(iframe.baseURI=iframe.ownerDocument.defaultView.frameElement.getAttribute("data-loadUri"),console.log("EPUB doc iframe src (BEFORE):"),console.log(src),src=new URI(src).absoluteTo(iframe.baseURI).search("").hash("").toString()):"undefined"!=typeof location&&(iframe.baseURI=location.href+""),console.error("!iframe.baseURI => "+iframe.baseURI)),console.log("EPUB doc iframe src:"),console.log(src),iframe.setAttribute("data-src",src),console.log("EPUB doc iframe base URI:"),console.log(iframe.baseURI),iframe.setAttribute("data-baseUri",iframe.baseURI);var loadedDocumentUri=new URI(src).absoluteTo(iframe.baseURI).search("").hash("").toString();console.log("EPUB doc iframe LOAD URI:"),console.log(loadedDocumentUri),iframe.setAttribute("data-loadUri",loadedDocumentUri),getCurrentResourceFetcher().shouldConstructDomProgrammatically()?(console.log("shouldConstructDomProgrammatically..."),getCurrentResourceFetcher().fetchContentDocument(attachedData,loadedDocumentUri,function(resolvedContentDocumentDom){self._loadIframeWithDocument(iframe,attachedData,resolvedContentDocumentDom.documentElement.outerHTML,function(){callback.call(caller,!0,attachedData)})},function(err){callback.call(caller,!1,attachedData)})):function(src,callback){!function(path,callback){$.ajax({url:path,dataType:"html",async:!0,success:function(result){callback(result)},error:function(xhr,status,errorThrown){console.error("Error when AJAX fetching "+path),console.error(status),console.error(errorThrown),callback()}})}(src,function(contentDocumentHtml){contentDocumentHtml?(_contentDocumentTextPreprocessor&&(contentDocumentHtml=_contentDocumentTextPreprocessor(src,contentDocumentHtml)),callback(contentDocumentHtml)):callback()})}(loadedDocumentUri,function(contentDocumentHtml){contentDocumentHtml?self._loadIframeWithDocument(iframe,attachedData,contentDocumentHtml,function(){callback.call(caller,!0,attachedData)}):callback.call(caller,!1,attachedData)})},this._loadIframeWithDocument=function(iframe,attachedData,contentDocumentData,callback){var documentDataUri,blob,chromeIOS=bowser.ios&&bowser.chrome,isBlobHandled=!(chromeIOS||bowser.msie||bowser.ios&&parseInt(bowser.version,10)<7||bowser.samsungBrowser);if(isBlobHandled){var contentType="text/html";if(attachedData.spineItem.media_type&&attachedData.spineItem.media_type.length&&(contentType=attachedData.spineItem.media_type),window.BlobBuilder){var builder=new BlobBuilder;builder.append(contentDocumentData),blob=builder.getBlob(contentType)}else blob=new Blob([contentDocumentData],{type:contentType});documentDataUri=window.URL.createObjectURL(blob)}else chromeIOS||(iframe.contentWindow.document.open(),window.MSApp&&window.MSApp.execUnsafeLocalFunction?window.MSApp.execUnsafeLocalFunction(function(){iframe.contentWindow.document.write(contentDocumentData)}):iframe.contentWindow.document.write(contentDocumentData));iframe.onload=function(){var doc=iframe.contentDocument||iframe.contentWindow.document;if(iframe.contentWindow.frames)for(var i=0;i<iframe.contentWindow.frames.length;i++){var child_iframe=iframe.contentWindow.frames[i],childSrc=void 0;try{childSrc=child_iframe.frameElement.getAttribute("data-src")}catch(err){console.warn(err);continue}if(childSrc){var contentDocumentPathRelativeToPackage=attachedData.spineItem.href,publicationFetcher=getCurrentResourceFetcher(),contentDocumentPathRelativeToBase=publicationFetcher.convertPathRelativeToPackageToRelativeToBase(contentDocumentPathRelativeToPackage),refAttrOrigVal_RelativeToBase=new URI(childSrc).absoluteTo(contentDocumentPathRelativeToBase).toString(),packageFullPath=publicationFetcher.getPackageFullPathRelativeToBase(),refAttrOrigVal_RelativeToPackage=new URI("/"+refAttrOrigVal_RelativeToBase).relativeTo("/"+packageFullPath).toString(),mimetype=ContentTypeDiscovery.identifyContentTypeFromFileName(refAttrOrigVal_RelativeToPackage);new zipIframeLoader(getCurrentResourceFetcher,contentDocumentTextPreprocessor).loadIframe(child_iframe.frameElement,childSrc,function(){console.log("CHILD IFRAME LOADED.")},self,{spineItem:{media_type:mimetype,href:refAttrOrigVal_RelativeToPackage}})}else"iframe"==child_iframe.frameElement.localName&&console.error("IFRAME data-src missing?!")}$("svg",doc).on("load",function(){console.log("SVG loaded")}),self.updateIframeEvents(iframe);var mathJax=iframe.contentWindow.MathJax;if(mathJax){console.log("MathJax VERSION: "+mathJax.cdnVersion+" // "+mathJax.fileversion+" // "+mathJax.version);var useFontCache=!0;mathJax.Hub.Browser.isFirefox&&(useFontCache=!1),mathJax.Hub.Browser.isChrome&&(useFontCache=!1),window.navigator.userAgent.indexOf("Edge")>0&&(useFontCache=!1),mathJax.Hub.Config({showMathMenu:!1,messageStyle:"none",showProcessingMessages:!0,SVG:{useFontCache:useFontCache}});var mathJaxCallback=_.once(callback);try{mathJax.Hub.Queue(mathJaxCallback)}catch(err){console.error("MathJax fail!"),callback()}}else callback();isBlobHandled&&window.URL.revokeObjectURL(documentDataUri)},isBlobHandled?iframe.setAttribute("src",documentDataUri):chromeIOS?iframe.setAttribute("srcdoc",contentDocumentData):iframe.contentWindow.document.close()}};return zipIframeLoader}),define("readium_js/Readium",["readium_shared_js/globals","text!version.json","jquery","underscore","readium_shared_js/views/reader_view","readium_js/epub-fetch/publication_fetcher","readium_js/epub-model/package_document_parser","readium_js/epub-fetch/iframe_zip_loader","readium_shared_js/views/iframe_loader"],function(Globals,versionText,$,_,ReaderView,PublicationFetcher,PackageParser,IframeZipLoader,IframeLoader){window.BlobBuilder=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder;var Readium=function(readiumOptions,readerOptions){var _options={mathJaxUrl:readerOptions.mathJaxUrl},_contentDocumentTextPreprocessor=function(src,contentDocumentHtml){var baseHref=src.split("/").join("/");console.log("EPUB doc base href:"),console.log(baseHref);var base='<base href="'+encodeURI(baseHref.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"))+'"/>',scripts='<script type="text/javascript">('+function(){navigator.epubReadingSystem=window.parent.navigator.epubReadingSystem}.toString()+")()<\/script>";return _options&&_options.mathJaxUrl&&contentDocumentHtml.search(/<(\w+:|)(?=math)/)>=0&&(scripts+='<script type="text/javascript" src="'+_options.mathJaxUrl+'"> <\/script>'),contentDocumentHtml=(contentDocumentHtml=(contentDocumentHtml=(contentDocumentHtml=(contentDocumentHtml=contentDocumentHtml.replace(/(<head[\s\S]*?>)/,"$1"+base+scripts)).replace(/(<iframe[\s\S]+?)src[\s]*=[\s]*(["'])[\s]*(.*)[\s]*(["'])([\s\S]*?>)/g,"$1data-src=$2$3$4$5")).replace(/(<iframe[\s\S]+?)data-src[\s]*=[\s]*(["'])[\s]*(http[s]?:\/\/.*)[\s]*(["'])([\s\S]*?>)/g,"$1src=$2$3$4$5")).replace(/<title>[\s]*<\/title>/g,"<title>TITLE</title>")).replace(/<title[\s]*\/>/g,"<title>TITLE</title>")},self=this,_currentPublicationFetcher=void 0;this.getCurrentPublicationFetcher=function(){return _currentPublicationFetcher};var jsLibRoot=readiumOptions.jsLibRoot;readiumOptions.useSimpleLoader?readerOptions.iframeLoader=new IframeLoader:readerOptions.iframeLoader=new IframeZipLoader(function(){return _currentPublicationFetcher},_contentDocumentTextPreprocessor),readerOptions.needsFixedLayoutScalerWorkAround=!0,this.reader=new ReaderView(readerOptions),ReadiumSDK.reader=this.reader;var openPackageDocument_=function(ebookURL,callback,openPageRequest,contentType){_currentPublicationFetcher&&_currentPublicationFetcher.flushCache();var cacheSizeEvictThreshold=null;readiumOptions.cacheSizeEvictThreshold&&(cacheSizeEvictThreshold=readiumOptions.cacheSizeEvictThreshold),(_currentPublicationFetcher=new PublicationFetcher(ebookURL,jsLibRoot,window,cacheSizeEvictThreshold,_contentDocumentTextPreprocessor,contentType)).initialize(function(resourceFetcher){resourceFetcher?new PackageParser(_currentPublicationFetcher).parse(function(packageDocument){if(packageDocument){var openBookOptions=readiumOptions.openBookOptions||{},openBookData=$.extend(packageDocument.getSharedJsPackageData(),openBookOptions);openPageRequest&&(openPageRequest.spineItemCfi&&(openPageRequest.idref=packageDocument.getSpineItemIdrefFromCFI(openPageRequest.spineItemCfi)),openBookData.openPageRequest=openPageRequest),self.reader.openBook(openBookData);var options={metadata:packageDocument.getMetadata()};callback(packageDocument,options)}else callback(void 0)}):callback(void 0)})};this.openPackageDocument=function(ebookURL,callback,openPageRequest){if(!(ebookURL instanceof Blob||ebookURL instanceof File)){console.debug("-------------------------------");var origin=window.location.origin;origin||(origin=window.location.protocol+"//"+window.location.host);var thisRootUrl=origin+window.location.pathname;console.debug("BASE URL: "+thisRootUrl),console.debug("RELATIVE URL: "+ebookURL);try{ebookURL=new URI(ebookURL).absoluteTo(thisRootUrl).toString()}catch(err){console.error(err),console.log(ebookURL)}if(console.debug("==>"),console.debug("ABSOLUTE URL: "+ebookURL),console.debug("-------------------------------"),0==ebookURL.indexOf("http://")||0==ebookURL.indexOf("https://")){var xhr=new XMLHttpRequest;return xhr.onreadystatechange=function(){if(4==this.readyState){var contentType=void 0;if(xhr.status>=200&&xhr.status<300||304===xhr.status){var allResponseHeaders="";xhr.getAllResponseHeaders&&(allResponseHeaders=(allResponseHeaders=xhr.getAllResponseHeaders())?allResponseHeaders.toLowerCase():""),allResponseHeaders.indexOf("content-type")>=0&&((contentType=xhr.getResponseHeader("Content-Type")||xhr.getResponseHeader("content-type"))||(contentType=void 0),console.debug("CONTENT-TYPE: "+ebookURL+" ==> "+contentType));var responseURL=xhr.responseURL;responseURL||allResponseHeaders.indexOf("location")>=0&&(responseURL=xhr.getResponseHeader("Location")||xhr.getResponseHeader("location")),responseURL&&responseURL!==ebookURL&&(console.debug("REDIRECT: "+ebookURL+" ==> "+responseURL),ebookURL=responseURL)}openPackageDocument_(ebookURL,callback,openPageRequest,contentType)}},xhr.open("HEAD",ebookURL,!0),void xhr.send(null)}}openPackageDocument_(ebookURL,callback,openPageRequest)},this.closePackageDocument=function(){_currentPublicationFetcher&&_currentPublicationFetcher.flushCache()},Globals.logEvent("READER_INITIALIZED","EMIT","Readium.js"),ReadiumSDK.emit(ReadiumSDK.Events.READER_INITIALIZED,ReadiumSDK.reader)};return Readium.version=JSON.parse(versionText),Readium.getVersion=function(callback){var version=Readium.version;if(version.needsPopulating){0;var nextRepo=function(i){if(i>=version.repos.length)return delete version.needsPopulating,delete version.repos,Readium.version=version,void callback(version);var repo=version.repos[i];version[repo.name]={},version[repo.name].timestamp=(new Date).getTime(),$.getJSON(repo.path+"/package.json",function(data){version[repo.name].version=data.version,version[repo.name].chromeVersion="2."+data.version.substring(2);var getHead=function(gitFolder,repo,first){var url=gitFolder+"/HEAD";$.get(url,function(data){var ref=data.substring(5,data.length-1);!function(gitFolder,repo,ref){var url=gitFolder+"/"+ref;$.get(url,function(data){version[repo.name].branch=ref;var sha=data.substring(0,data.length-1);version[repo.name].sha=sha,nextRepo(++i)}).fail(function(err){nextRepo(++i)})}(gitFolder,repo,ref)}).fail(function(err){first?function(repo){var url=repo.path+"/.git";$.get(url,function(data){if(0==data.indexOf("gitdir: ")){var gitDir=repo.path+"/"+data.substring("gitdir: ".length).trim();getHead(gitDir,repo)}else nextRepo(++i)}).fail(function(err){nextRepo(++i)})}(repo):nextRepo(++i)})};getHead(repo.path+"/.git",repo,!0)}).fail(function(err){nextRepo(++i)})};nextRepo(0)}else callback(version)},Readium}),define("readium_js",["readium_js/Readium"],function(main){return main}),define("readium_js_viewer/ModuleConfig",["module"],function(module){var config=module.config();return{imagePathPrefix:config.imagePathPrefix||"",epubLibraryPath:config.epubLibraryPath||"",canHandleUrl:config.canHandleUrl||!1,canHandleDirectory:config.canHandleDirectory||!1,epubReadingSystemUrl:config.epubReadingSystemUrl||"/EPUBREADINGSYSTEM.js",workerUrl:config.workerUrl||"/READIUMWORKER.js",annotationCSSUrl:config.annotationCSSUrl||"/ANNOTATIONS.css",mathJaxUrl:config.mathJaxUrl||"/MATHJAX.js",jsLibRoot:config.jsLibRoot||"/ZIPJS/",fonts:config.fonts||[],useSimpleLoader:config.useSimpleLoader||!1,loader:config.loaderType||null}}),function(root,factory){"object"==typeof module&&module.exports?module.exports=factory():"function"==typeof define&&define.amd?define("spin",factory):root.Spinner=factory()}(this,function(){"use strict";var useCssAnimations,sheet,prefixes=["webkit","Moz","ms","O"],animations={};function createEl(tag,prop){var n,el=document.createElement(tag||"div");for(n in prop)el[n]=prop[n];return el}function ins(parent){for(var i=1,n=arguments.length;i<n;i++)parent.appendChild(arguments[i]);return parent}function addAnimation(alpha,trail,i,lines){var name=["opacity",trail,~~(100*alpha),i,lines].join("-"),start=.01+i/lines*100,z=Math.max(1-(1-alpha)/trail*(100-start),alpha),prefix=useCssAnimations.substring(0,useCssAnimations.indexOf("Animation")).toLowerCase(),pre=prefix&&"-"+prefix+"-"||"";return animations[name]||(sheet.insertRule("@"+pre+"keyframes "+name+"{0%{opacity:"+z+"}"+start+"%{opacity:"+alpha+"}"+(start+.01)+"%{opacity:1}"+(start+trail)%100+"%{opacity:"+alpha+"}100%{opacity:"+z+"}}",sheet.cssRules.length),animations[name]=1),name}function vendor(el,prop){var pp,i,s=el.style;if(void 0!==s[prop=prop.charAt(0).toUpperCase()+prop.slice(1)])return prop;for(i=0;i<prefixes.length;i++)if(void 0!==s[pp=prefixes[i]+prop])return pp}function css(el,prop){for(var n in prop)el.style[vendor(el,n)||n]=prop[n];return el}function merge(obj){for(var i=1;i<arguments.length;i++){var def=arguments[i];for(var n in def)void 0===obj[n]&&(obj[n]=def[n])}return obj}function getColor(color,idx){return"string"==typeof color?color:color[idx%color.length]}var el,defaults={lines:12,length:7,width:5,radius:10,scale:1,corners:1,color:"#000",opacity:.25,rotate:0,direction:1,speed:1,trail:100,fps:20,zIndex:2e9,className:"spinner",top:"50%",left:"50%",shadow:!1,hwaccel:!1,position:"absolute"};function Spinner(o){this.opts=merge(o||{},Spinner.defaults,defaults)}if(Spinner.defaults={},merge(Spinner.prototype,{spin:function(target){this.stop();var self=this,o=self.opts,el=self.el=createEl(null,{className:o.className});if(css(el,{position:o.position,width:0,zIndex:o.zIndex,left:o.left,top:o.top}),target&&target.insertBefore(el,target.firstChild||null),el.setAttribute("role","progressbar"),self.lines(el,self.opts),!useCssAnimations){var alpha,i=0,start=(o.lines-1)*(1-o.direction)/2,fps=o.fps,f=fps/o.speed,ostep=(1-o.opacity)/(f*o.trail/100),astep=f/o.lines;!function anim(){i++;for(var j=0;j<o.lines;j++)alpha=Math.max(1-(i+(o.lines-j)*astep)%f*ostep,o.opacity),self.opacity(el,j*o.direction+start,alpha,o);self.timeout=self.el&&setTimeout(anim,~~(1e3/fps))}()}return self},stop:function(){var el=this.el;return el&&(clearTimeout(this.timeout),el.parentNode&&el.parentNode.removeChild(el),this.el=void 0),this},lines:function(el,o){var seg,i=0,start=(o.lines-1)*(1-o.direction)/2;function fill(color,shadow){return css(createEl(),{position:"absolute",width:o.scale*(o.length+o.width)+"px",height:o.scale*o.width+"px",background:color,boxShadow:shadow,transformOrigin:"left",transform:"rotate("+~~(360/o.lines*i+o.rotate)+"deg) translate("+o.scale*o.radius+"px,0)",borderRadius:(o.corners*o.scale*o.width>>1)+"px"})}for(;i<o.lines;i++)seg=css(createEl(),{position:"absolute",top:1+~(o.scale*o.width/2)+"px",transform:o.hwaccel?"translate3d(0,0,0)":"",opacity:o.opacity,animation:useCssAnimations&&addAnimation(o.opacity,o.trail,start+i*o.direction,o.lines)+" "+1/o.speed+"s linear infinite"}),o.shadow&&ins(seg,css(fill("#000","0 0 4px #000"),{top:"2px"})),ins(el,ins(seg,fill(getColor(o.color,i),"0 0 1px rgba(0,0,0,.1)")));return el},opacity:function(el,i,val){i<el.childNodes.length&&(el.childNodes[i].style.opacity=val)}}),"undefined"!=typeof document){el=createEl("style",{type:"text/css"}),ins(document.getElementsByTagName("head")[0],el),sheet=el.sheet||el.styleSheet;var probe=css(createEl("group"),{behavior:"url(#default#VML)"});!vendor(probe,"transform")&&probe.adj?function(){function vml(tag,attr){return createEl("<"+tag+' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">',attr)}sheet.addRule(".spin-vml","behavior:url(#default#VML)"),Spinner.prototype.lines=function(el,o){var r=o.scale*(o.length+o.width),s=2*o.scale*r;function grp(){return css(vml("group",{coordsize:s+" "+s,coordorigin:-r+" "+-r}),{width:s,height:s})}var i,margin=-(o.width+o.length)*o.scale*2+"px",g=css(grp(),{position:"absolute",top:margin,left:margin});function seg(i,dx,filter){ins(g,ins(css(grp(),{rotation:360/o.lines*i+"deg",left:~~dx}),ins(css(vml("roundrect",{arcsize:o.corners}),{width:r,height:o.scale*o.width,left:o.scale*o.radius,top:-o.scale*o.width>>1,filter:filter}),vml("fill",{color:getColor(o.color,i),opacity:o.opacity}),vml("stroke",{opacity:0}))))}if(o.shadow)for(i=1;i<=o.lines;i++)seg(i,-2,"progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");for(i=1;i<=o.lines;i++)seg(i);return ins(el,g)},Spinner.prototype.opacity=function(el,i,val,o){var c=el.firstChild;o=o.shadow&&o.lines||0,c&&i+o<c.childNodes.length&&(c=(c=(c=c.childNodes[i+o])&&c.firstChild)&&c.firstChild)&&(c.opacity=val)}}():useCssAnimations=vendor(probe,"animation")}return Spinner}),define("readium_js_viewer/Spinner",["spin"],function(Spinner){var opts={lines:17,length:0,width:10,radius:48,corners:1,rotate:0,direction:1,color:"#000",speed:1,trail:66,shadow:!1,hwaccel:!1,className:"spinner",zIndex:2e9,top:"50%",left:"50%"},spinner=function(type){this.type=type};return spinner.prototype.spin=function(){var holder=$("#epub-reader-frame .spinner-holder");if(0===holder.length){$("#epub-reader-frame").append('<div class="spinner-holder" ></div>');var spin=function(type){switch(type){case"one":return'<svg version="1.1" id="loader-1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\n width="40px" height="40px" viewBox="0 0 40 40" enable-background="new 0 0 40 40" xml:space="preserve">\n <path opacity="0.2" fill="#000" d="M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946\n s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634\n c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z"/>\n <path fill="#000" d="M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0\n C22.32,8.481,24.301,9.057,26.013,10.047z">\n <animateTransform attributeType="xml"\n attributeName="transform"\n type="rotate"\n from="0 20 20"\n to="360 20 20"\n dur="0.5s"\n repeatCount="indefinite"/>\n </path>\n </svg>';case"two":return'<svg version="1.1" id="loader-1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\n width="40px" height="40px" viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">\n <path fill="#000" d="M25.251,6.461c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615V6.461z">\n <animateTransform attributeType="xml"\n attributeName="transform"\n type="rotate"\n from="0 25 25"\n to="360 25 25"\n dur="0.6s"\n repeatCount="indefinite"/>\n </path>\n </svg>';case"three":return'<svg version="1.1" id="loader-1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\n width="40px" height="40px" viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">\n <path fill="#000" d="M43.935,25.145c0-10.318-8.364-18.683-18.683-18.683c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615c8.072,0,14.615,6.543,14.615,14.615H43.935z">\n <animateTransform attributeType="xml"\n attributeName="transform"\n type="rotate"\n from="0 25 25"\n to="360 25 25"\n dur="0.6s"\n repeatCount="indefinite"/>\n </path>\n </svg>';case"four":return'<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\n width="24px" height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 50 50;" xml:space="preserve">\n <rect x="0" y="0" width="4" height="7" fill="#333">\n <animateTransform attributeType="xml"\n attributeName="transform" type="scale"\n values="1,1; 1,3; 1,1"\n begin="0s" dur="0.6s" repeatCount="indefinite" /> \n </rect>\n \n <rect x="10" y="0" width="4" height="7" fill="#333">\n <animateTransform attributeType="xml"\n attributeName="transform" type="scale"\n values="1,1; 1,3; 1,1"\n begin="0.2s" dur="0.6s" repeatCount="indefinite" /> \n </rect>\n <rect x="20" y="0" width="4" height="7" fill="#333">\n <animateTransform attributeType="xml"\n attributeName="transform" type="scale"\n values="1,1; 1,3; 1,1"\n begin="0.4s" dur="0.6s" repeatCount="indefinite" /> \n </rect>\n </svg>';case"five":return'<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\n width="24px" height="30px" viewBox="0 0 24 30" style="enable-background:new 0 0 50 50;" xml:space="preserve">\n <rect x="0" y="0" width="4" height="10" fill="#333">\n <animateTransform attributeType="xml"\n attributeName="transform" type="translate"\n values="0 0; 0 20; 0 0"\n begin="0" dur="0.6s" repeatCount="indefinite" />\n </rect>\n <rect x="10" y="0" width="4" height="10" fill="#333">\n <animateTransform attributeType="xml"\n attributeName="transform" type="translate"\n values="0 0; 0 20; 0 0"\n begin="0.2s" dur="0.6s" repeatCount="indefinite" />\n </rect>\n <rect x="20" y="0" width="4" height="10" fill="#333">\n <animateTransform attributeType="xml"\n attributeName="transform" type="translate"\n values="0 0; 0 20; 0 0"\n begin="0.4s" dur="0.6s" repeatCount="indefinite" />\n </rect>\n </svg>';case"six":return'<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\n width="24px" height="30px" viewBox="0 0 24 30" style="enable-background:new 0 0 50 50;" xml:space="preserve">\n <rect x="0" y="13" width="4" height="5" fill="#333">\n <animate attributeName="height" attributeType="XML"\n values="5;21;5" \n begin="0s" dur="0.6s" repeatCount="indefinite" />\n <animate attributeName="y" attributeType="XML"\n values="13; 5; 13"\n begin="0s" dur="0.6s" repeatCount="indefinite" />\n </rect>\n <rect x="10" y="13" width="4" height="5" fill="#333">\n <animate attributeName="height" attributeType="XML"\n values="5;21;5" \n begin="0.15s" dur="0.6s" repeatCount="indefinite" />\n <animate attributeName="y" attributeType="XML"\n values="13; 5; 13"\n begin="0.15s" dur="0.6s" repeatCount="indefinite" />\n </rect>\n <rect x="20" y="13" width="4" height="5" fill="#333">\n <animate attributeName="height" attributeType="XML"\n values="5;21;5" \n begin="0.3s" dur="0.6s" repeatCount="indefinite" />\n <animate attributeName="y" attributeType="XML"\n values="13; 5; 13"\n begin="0.3s" dur="0.6s" repeatCount="indefinite" />\n </rect>\n </svg>';case"seven":return'<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\n width="24px" height="30px" viewBox="0 0 24 30" style="enable-background:new 0 0 50 50;" xml:space="preserve">\n <rect x="0" y="0" width="4" height="20" fill="#333">\n <animate attributeName="opacity" attributeType="XML"\n values="1; .2; 1" \n begin="0s" dur="0.6s" repeatCount="indefinite" />\n </rect>\n <rect x="7" y="0" width="4" height="20" fill="#333">\n <animate attributeName="opacity" attributeType="XML"\n values="1; .2; 1" \n begin="0.2s" dur="0.6s" repeatCount="indefinite" />\n </rect>\n <rect x="14" y="0" width="4" height="20" fill="#333">\n <animate attributeName="opacity" attributeType="XML"\n values="1; .2; 1" \n begin="0.4s" dur="0.6s" repeatCount="indefinite" />\n </rect>\n </svg>';case"eight":return'<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\n width="24px" height="30px" viewBox="0 0 24 30" style="enable-background:new 0 0 50 50;" xml:space="preserve">\n <rect x="0" y="10" width="4" height="10" fill="#333" opacity="0.2">\n <animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0s" dur="0.6s" repeatCount="indefinite" />\n <animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0s" dur="0.6s" repeatCount="indefinite" />\n <animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0s" dur="0.6s" repeatCount="indefinite" />\n </rect>\n <rect x="8" y="10" width="4" height="10" fill="#333" opacity="0.2">\n <animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0.15s" dur="0.6s" repeatCount="indefinite" />\n <animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0.15s" dur="0.6s" repeatCount="indefinite" />\n <animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0.15s" dur="0.6s" repeatCount="indefinite" />\n </rect>\n <rect x="16" y="10" width="4" height="10" fill="#333" opacity="0.2">\n <animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0.3s" dur="0.6s" repeatCount="indefinite" />\n <animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0.3s" dur="0.6s" repeatCount="indefinite" />\n <animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0.3s" dur="0.6s" repeatCount="indefinite" />\n </rect>\n </svg>'}}(this.type);(holder=$("#epub-reader-frame .spinner-holder")).append($(spin))}holder.show()},spinner.prototype.stop=function(){var holder=$("#epub-reader-frame .spinner-holder");holder.length>0&&holder.hide()},{createSpinner:function(sptype){return sptype?new spinner(sptype):new Spinner(opts)}}}),define("Settings",[],function(){var _isLocalStorageEnabled=void 0,isLocalStorageEnabled=function(){if(_isLocalStorageEnabled)return!0;if(void 0===_isLocalStorageEnabled){if(_isLocalStorageEnabled=!1,localStorage)try{localStorage.setItem("_isLocalStorageEnabled","?"),localStorage.removeItem("_isLocalStorageEnabled"),_isLocalStorageEnabled=!0}catch(e){}return _isLocalStorageEnabled}return!1};return Settings={put:function(key,val,callback){if(isLocalStorageEnabled()){val=JSON.stringify(val);localStorage[key]=val,callback&&callback()}else callback&&callback()},get:function(key,callback){if(isLocalStorageEnabled()){var val=localStorage[key];callback(val?JSON.parse(val):null)}else callback&&callback(null)},getMultiple:function(keys,callback){if(isLocalStorageEnabled()){for(var retVal={},i=0;i<keys.length;i++)localStorage[keys[i]]&&(retVal[keys[i]]=localStorage[keys[i]]);callback(retVal)}else callback&&callback({})}},Settings}),define("readium_js_viewer/TOCJsonCreator",[],function(){var _ob={};return getRootOL=function(dom){var root=$("<div></div>").append(dom);return root.find("ol[xmlns]").length?root.find("ol[xmlns]"):root.find("ol").first()},createTOCItem=function(a){return{Id_link:a.attr("href"),name:a.html(),sub:[]}},_ob.createTOCJson=function(toc){return toc?function findRecursively(ol){var ob=[];return ol.find("> li").each(function(i,item){var anchor=$(item).find("> a"),tocItem=createTOCItem(anchor);ob.push(tocItem),$(item).find("> ol").length>0&&(tocItem.sub=findRecursively($(item).find("> ol")))}),ob}(getRootOL(toc)):[]},_ob.getFixedTocElement=function(dom){var tocNav;$("script",dom).remove();var $navs=$("nav",dom);Array.prototype.every.call($navs,function(nav){return"toc"!=nav.getAttributeNS("http://www.idpf.org/2007/ops","type")||(tocNav=nav,!1)});var toc=tocNav&&$(tocNav).html()||$("body",dom).html()||$(dom).html();return toc&&toc.length?$(toc):null},_ob}),define("readium_js_viewer/TreineticHelpers",[],function(){function getPropertyFromThemeClass(classOrId,property){"author-theme"===classOrId&&(classOrId="default-theme");return{"night-theme":{"background-color":"#141414",color:"white"},"default-theme":{"background-color":"white",color:"black"},"parchment-theme":{"background-color":"#f7f1cf",color:"#774c27"},"ballard-theme":{"background-color":"#576b96",color:"#DDD"},"vancouver-theme":{"background-color":"#DDD",color:"#576b96"}}[classOrId][property]}return{updateReader:function(reader,readerSettings){if(reader.updateSettings(readerSettings),readerSettings.theme){$("html").attr("data-theme",readerSettings.theme);var bookStyles=(theme=readerSettings.theme,isAuthorTheme="author-theme"===theme,bgColor=getPropertyFromThemeClass(theme,"background-color"),color=getPropertyFromThemeClass(theme,"color"),[{selector:":not(a):not(hypothesis-highlight)",declarations:{backgroundColor:isAuthorTheme?"":bgColor,color:isAuthorTheme?"":color}},{selector:"a",declarations:{backgroundColor:isAuthorTheme?"":bgColor,color:isAuthorTheme?"":color}}]);reader.setBookStyles(bookStyles),$(".tr-epub-reader-element").css(bookStyles[0].declarations)}var theme,isAuthorTheme,bgColor,color;Settings.put("reader",readerSettings)}}}),define("readium_js_viewer/ExternalControls",["./TOCJsonCreator","Settings","./TreineticHelpers"],function(TOCJsonCreator,Settings,TreineticHelpers){var externalcontrols=null,ExternalControls=function(){this.metadata=null,this.reader=null,this.channel=null,this.auto_bookmark=!0,this.TocJsonObject=null,this.currentPackageDocument=null,this.readerSettings=null,this.callbackFunctions={}};function cloneUpdate(object,attr,value){var newObject=JSON.parse(JSON.stringify(object));return newObject[attr]=value,newObject}return ExternalControls.prototype.epubLoaded=function(metadata,currentPackageDocument,reader){var self=this;this.metadata=metadata,this.reader=reader,this.currentPackageDocument=currentPackageDocument,Settings.get("reader",function(readerSettings){readerSettings=readerSettings||self.readerSettings;self.readerSettings=readerSettings}),this.callbackFunctions.onEpubLoadSuccess&&this.callbackFunctions.onEpubLoadSuccess()},ExternalControls.prototype.registerEvent=function(eventName,func){this.callbackFunctions[eventName]=func},ExternalControls.prototype.epubFailed=function(error){this.callbackFunctions.onEpubLoadFail&&this.callbackFunctions.onEpubLoadFail(error)},ExternalControls.prototype.registerChannel=function(func){this.channel=func},ExternalControls.prototype.onTOCLoad=function(tocJson){this.TocJsonObject=tocJson,this.callbackFunctions.onTOCLoaded&&this.callbackFunctions.onTOCLoaded(this.TocJsonObject)},ExternalControls.prototype.getReaderHeight=function(){return this.callbackFunctions.onReaderHeightRequest?this.callbackFunctions.onReaderHeightRequest():null},ExternalControls.prototype.nextPage=function(){this.reader.openPageRight()},ExternalControls.prototype.prevPage=function(){this.reader.openPageLeft()},ExternalControls.prototype.hasNextPage=function(){return this.reader.getPaginationInfo().canGoRight()},ExternalControls.prototype.hasPrevPage=function(){return this.reader.getPaginationInfo().canGoPrev()},ExternalControls.prototype.makeBookMark=function(){this.channel("BOOKMARK_CURRENT_PAGE")},ExternalControls.prototype.setAutoBookmark=function($boolean){this.auto_bookmark=$boolean},ExternalControls.prototype.isAutoBookmark=function(){return this.auto_bookmark},ExternalControls.prototype.getTOCJson=function(){return JSON.stringify(this.TocJsonObject?this.TocJsonObject:[])},ExternalControls.prototype.hasTOC=function(){return null!=this.TocJsonObject},ExternalControls.prototype.goToPage=function(href){var tocUrl=this.currentPackageDocument.getToc();this.reader.openContentUrl(href,tocUrl,void 0)},ExternalControls.prototype.changeFontSize=function(size){this.readerSettings=cloneUpdate(this.readerSettings,"fontSize",size),TreineticHelpers.updateReader(this.reader,this.readerSettings)},ExternalControls.prototype.getRecommendedFontSizeRange=function(){return{min:60,max:170}},ExternalControls.prototype.getAvailableThemes=function(){return[{name:"Author Style",id:"author-theme"},{name:"Black & White",id:"default-theme"},{name:"Night Mode",id:"night-theme"},{name:"Old Theame",id:"parchment-theme"},{name:"Blue Theme",id:"ballard-theme"},{name:"Vancouver Theme",id:"vancouver-theme"}]},ExternalControls.prototype.setTheme=function(theme_id){this.readerSettings=cloneUpdate(this.readerSettings,"theme",theme_id),TreineticHelpers.updateReader(this.reader,this.readerSettings)},ExternalControls.prototype.getAvailableScrollModes=function(){return[{name:"Automatic",id:"auto"},{name:"Scroll Document",id:"scroll-doc"},{name:"Scroll Continuous",id:"scroll-continuous"}]},ExternalControls.prototype.setScrollOption=function(option_id){this.readerSettings=cloneUpdate(this.readerSettings,"scroll",option_id),TreineticHelpers.updateReader(this.reader,this.readerSettings)},ExternalControls.prototype.getAvailableDisplayFormats=function(){return[{name:"Automatic",id:"auto"},{name:"Double Page",id:"double"},{name:"Single Page",id:"single"}]},ExternalControls.prototype.setDisplayFormat=function(option_id){this.readerSettings=cloneUpdate(this.readerSettings,"syntheticSpread",option_id),TreineticHelpers.updateReader(this.reader,this.readerSettings)},ExternalControls.prototype.getRecommendedColumnWidthRange=function(){return{min:500,max:2e3}},ExternalControls.prototype.changeColumnMaxWidth=function(int_size){this.readerSettings=cloneUpdate(this.readerSettings,"columnMaxWidth",int_size),TreineticHelpers.updateReader(this.reader,this.readerSettings)},ExternalControls.prototype.getCurrentReaderSettings=function(){return this.readerSettings},{getInstance:function(){return null===externalcontrols&&(externalcontrols=new ExternalControls),externalcontrols},createInstance:function(){externalcontrols=new ExternalControls}}});var Hogan={};return function(Hogan){function findInScope(key,scope,doModelGet){var val;return scope&&"object"==typeof scope&&(void 0!==scope[key]?val=scope[key]:doModelGet&&scope.get&&"function"==typeof scope.get&&(val=scope.get(key))),val}Hogan.Template=function(codeObj,text,compiler,options){codeObj=codeObj||{},this.r=codeObj.code||this.r,this.c=compiler,this.options=options||{},this.text=text||"",this.partials=codeObj.partials||{},this.subs=codeObj.subs||{},this.buf=""},Hogan.Template.prototype={r:function(context,partials,indent){return""},v:function(str){return str=coerceToString(str),hChars.test(str)?str.replace(rAmp,"&").replace(rLt,"<").replace(rGt,">").replace(rApos,"'").replace(rQuot,"""):str},t:coerceToString,render:function(context,partials,indent){return this.ri([context],partials||{},indent)},ri:function(context,partials,indent){return this.r(context,partials,indent)},ep:function(symbol,partials){var partial=this.partials[symbol],template=partials[partial.name];if(partial.instance&&partial.base==template)return partial.instance;if("string"==typeof template){if(!this.c)throw new Error("No compiler available.");template=this.c.compile(template,this.options)}if(!template)return null;if(this.partials[symbol].base=template,partial.subs){for(key in partials.stackText||(partials.stackText={}),partial.subs)partials.stackText[key]||(partials.stackText[key]=void 0!==this.activeSub&&partials.stackText[this.activeSub]?partials.stackText[this.activeSub]:this.text);template=function(instance,subs,partials,stackSubs,stackPartials,stackText){function PartialTemplate(){}function Substitutions(){}var key;PartialTemplate.prototype=instance,Substitutions.prototype=instance.subs;var partial=new PartialTemplate;for(key in partial.subs=new Substitutions,partial.subsText={},partial.buf="",stackSubs=stackSubs||{},partial.stackSubs=stackSubs,partial.subsText=stackText,subs)stackSubs[key]||(stackSubs[key]=subs[key]);for(key in stackSubs)partial.subs[key]=stackSubs[key];for(key in stackPartials=stackPartials||{},partial.stackPartials=stackPartials,partials)stackPartials[key]||(stackPartials[key]=partials[key]);for(key in stackPartials)partial.partials[key]=stackPartials[key];return partial}(template,partial.subs,partial.partials,this.stackSubs,this.stackPartials,partials.stackText)}return this.partials[symbol].instance=template,template},rp:function(symbol,context,partials,indent){var partial=this.ep(symbol,partials);return partial?partial.ri(context,partials,indent):""},rs:function(context,partials,section){var tail=context[context.length-1];if(isArray(tail))for(var i=0;i<tail.length;i++)context.push(tail[i]),section(context,partials,this),context.pop();else section(context,partials,this)},s:function(val,ctx,partials,inverted,start,end,tags){var pass;return(!isArray(val)||0!==val.length)&&("function"==typeof val&&(val=this.ms(val,ctx,partials,inverted,start,end,tags)),pass=!!val,!inverted&&pass&&ctx&&ctx.push("object"==typeof val?val:ctx[ctx.length-1]),pass)},d:function(key,ctx,partials,returnFound){var found,names=key.split("."),val=this.f(names[0],ctx,partials,returnFound),doModelGet=this.options.modelGet,cx=null;if("."===key&&isArray(ctx[ctx.length-2]))val=ctx[ctx.length-1];else for(var i=1;i<names.length;i++)void 0!==(found=findInScope(names[i],val,doModelGet))?(cx=val,val=found):val="";return!(returnFound&&!val)&&(returnFound||"function"!=typeof val||(ctx.push(cx),val=this.mv(val,ctx,partials),ctx.pop()),val)},f:function(key,ctx,partials,returnFound){for(var val=!1,found=!1,doModelGet=this.options.modelGet,i=ctx.length-1;i>=0;i--)if(void 0!==(val=findInScope(key,ctx[i],doModelGet))){found=!0;break}return found?(returnFound||"function"!=typeof val||(val=this.mv(val,ctx,partials)),val):!returnFound&&""},ls:function(func,cx,partials,text,tags){var oldTags=this.options.delimiters;return this.options.delimiters=tags,this.b(this.ct(coerceToString(func.call(cx,text)),cx,partials)),this.options.delimiters=oldTags,!1},ct:function(text,cx,partials){if(this.options.disableLambda)throw new Error("Lambda features disabled.");return this.c.compile(text,this.options).render(cx,partials)},b:function(s){this.buf+=s},fl:function(){var r=this.buf;return this.buf="",r},ms:function(func,ctx,partials,inverted,start,end,tags){var textSource,cx=ctx[ctx.length-1],result=func.call(cx);return"function"==typeof result?!!inverted||(textSource=this.activeSub&&this.subsText&&this.subsText[this.activeSub]?this.subsText[this.activeSub]:this.text,this.ls(result,cx,partials,textSource.substring(start,end),tags)):result},mv:function(func,ctx,partials){var cx=ctx[ctx.length-1],result=func.call(cx);return"function"==typeof result?this.ct(coerceToString(result.call(cx)),cx,partials):result},sub:function(name,context,partials,indent){var f=this.subs[name];f&&(this.activeSub=name,f(context,partials,this,indent),this.activeSub=!1)}};var rAmp=/&/g,rLt=/</g,rGt=/>/g,rApos=/\'/g,rQuot=/\"/g,hChars=/[&<>\"\']/;function coerceToString(val){return String(null===val||void 0===val?"":val)}var isArray=Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)}}("undefined"!=typeof exports?exports:Hogan),function(Hogan){var rIsWhitespace=/\S/,rQuot=/\"/g,rNewline=/\n/g,rCr=/\r/g,rSlash=/\\/g,rLineSep=/\u2028/,rParagraphSep=/\u2029/;function cleanTripleStache(token){"}"===token.n.substr(token.n.length-1)&&(token.n=token.n.substring(0,token.n.length-1))}function trim(s){return s.trim?s.trim():s.replace(/^\s*|\s*$/g,"")}function tagChange(tag,text,index){if(text.charAt(index)!=tag.charAt(0))return!1;for(var i=1,l=tag.length;i<l;i++)if(text.charAt(index+i)!=tag.charAt(i))return!1;return!0}Hogan.tags={"#":1,"^":2,"<":3,$:4,"/":5,"!":6,">":7,"=":8,_v:9,"{":10,"&":11,_t:12},Hogan.scan=function(text,delimiters){var len=text.length,state=0,tagType=null,tag=null,buf="",tokens=[],seenTag=!1,i=0,lineStart=0,otag="{{",ctag="}}";function addBuf(){buf.length>0&&(tokens.push({tag:"_t",text:new String(buf)}),buf="")}function filterLine(haveSeenTag,noNewLine){if(addBuf(),haveSeenTag&&function(){for(var isAllWhitespace=!0,j=lineStart;j<tokens.length;j++)if(!(isAllWhitespace=Hogan.tags[tokens[j].tag]<Hogan.tags._v||"_t"==tokens[j].tag&&null===tokens[j].text.match(rIsWhitespace)))return!1;return isAllWhitespace}())for(var next,j=lineStart;j<tokens.length;j++)tokens[j].text&&((next=tokens[j+1])&&">"==next.tag&&(next.indent=tokens[j].text.toString()),tokens.splice(j,1));else noNewLine||tokens.push({tag:"\n"});seenTag=!1,lineStart=tokens.length}function changeDelimiters(text,index){var close="="+ctag,closeIndex=text.indexOf(close,index),delimiters=trim(text.substring(text.indexOf("=",index)+1,closeIndex)).split(" ");return otag=delimiters[0],ctag=delimiters[delimiters.length-1],closeIndex+close.length-1}for(delimiters&&(delimiters=delimiters.split(" "),otag=delimiters[0],ctag=delimiters[1]),i=0;i<len;i++)0==state?tagChange(otag,text,i)?(--i,addBuf(),state=1):"\n"==text.charAt(i)?filterLine(seenTag):buf+=text.charAt(i):1==state?(i+=otag.length-1,"="==(tagType=(tag=Hogan.tags[text.charAt(i+1)])?text.charAt(i+1):"_v")?(i=changeDelimiters(text,i),state=0):(tag&&i++,state=2),seenTag=i):tagChange(ctag,text,i)?(tokens.push({tag:tagType,n:trim(buf),otag:otag,ctag:ctag,i:"/"==tagType?seenTag-otag.length:i+ctag.length}),buf="",i+=ctag.length-1,state=0,"{"==tagType&&("}}"==ctag?i++:cleanTripleStache(tokens[tokens.length-1]))):buf+=text.charAt(i);return filterLine(seenTag,!0),tokens};var allowedInSuper={_t:!0,"\n":!0,$:!0,"/":!0};function isOpener(token,tags){for(var i=0,l=tags.length;i<l;i++)if(tags[i].o==token.n)return token.tag="#",!0}function isCloser(close,open,tags){for(var i=0,l=tags.length;i<l;i++)if(tags[i].c==close&&tags[i].o==open)return!0}function stringifyPartials(codeObj){var partials=[];for(var key in codeObj.partials)partials.push('"'+esc(key)+'":{name:"'+esc(codeObj.partials[key].name)+'", '+stringifyPartials(codeObj.partials[key])+"}");return"partials: {"+partials.join(",")+"}, subs: "+function(obj){var items=[];for(var key in obj)items.push('"'+esc(key)+'": function(c,p,t,i) {'+obj[key]+"}");return"{ "+items.join(",")+" }"}(codeObj.subs)}Hogan.stringify=function(codeObj,text,options){return"{code: function (c,p,i) { "+Hogan.wrapMain(codeObj.code)+" },"+stringifyPartials(codeObj)+"}"};var serialNo=0;function esc(s){return s.replace(rSlash,"\\\\").replace(rQuot,'\\"').replace(rNewline,"\\n").replace(rCr,"\\r").replace(rLineSep,"\\u2028").replace(rParagraphSep,"\\u2029")}function chooseMethod(s){return~s.indexOf(".")?"d":"f"}function createPartial(node,context){var sym="<"+(context.prefix||"")+node.n+serialNo++;return context.partials[sym]={name:node.n,partials:{}},context.code+='t.b(t.rp("'+esc(sym)+'",c,p,"'+(node.indent||"")+'"));',sym}function tripleStache(node,context){context.code+="t.b(t.t(t."+chooseMethod(node.n)+'("'+esc(node.n)+'",c,p,0)));'}function write(s){return"t.b("+s+");"}Hogan.generate=function(tree,text,options){serialNo=0;var context={code:"",subs:{},partials:{}};return Hogan.walk(tree,context),options.asString?this.stringify(context,text,options):this.makeTemplate(context,text,options)},Hogan.wrapMain=function(code){return'var t=this;t.b(i=i||"");'+code+"return t.fl();"},Hogan.template=Hogan.Template,Hogan.makeTemplate=function(codeObj,text,options){var template=this.makePartials(codeObj);return template.code=new Function("c","p","i",this.wrapMain(codeObj.code)),new this.template(template,text,this,options)},Hogan.makePartials=function(codeObj){var key,template={subs:{},partials:codeObj.partials,name:codeObj.name};for(key in template.partials)template.partials[key]=this.makePartials(template.partials[key]);for(key in codeObj.subs)template.subs[key]=new Function("c","p","t","i",codeObj.subs[key]);return template},Hogan.codegen={"#":function(node,context){context.code+="if(t.s(t."+chooseMethod(node.n)+'("'+esc(node.n)+'",c,p,1),c,p,0,'+node.i+","+node.end+',"'+node.otag+" "+node.ctag+'")){t.rs(c,p,function(c,p,t){',Hogan.walk(node.nodes,context),context.code+="});c.pop();}"},"^":function(node,context){context.code+="if(!t.s(t."+chooseMethod(node.n)+'("'+esc(node.n)+'",c,p,1),c,p,1,0,0,"")){',Hogan.walk(node.nodes,context),context.code+="};"},">":createPartial,"<":function(node,context){var ctx={partials:{},code:"",subs:{},inPartial:!0};Hogan.walk(node.nodes,ctx);var template=context.partials[createPartial(node,context)];template.subs=ctx.subs,template.partials=ctx.partials},$:function(node,context){var ctx={subs:{},code:"",partials:context.partials,prefix:node.n};Hogan.walk(node.nodes,ctx),context.subs[node.n]=ctx.code,context.inPartial||(context.code+='t.sub("'+esc(node.n)+'",c,p,i);')},"\n":function(node,context){context.code+=write('"\\n"'+(node.last?"":" + i"))},_v:function(node,context){context.code+="t.b(t.v(t."+chooseMethod(node.n)+'("'+esc(node.n)+'",c,p,0)));'},_t:function(node,context){context.code+=write('"'+esc(node.text)+'"')},"{":tripleStache,"&":tripleStache},Hogan.walk=function(nodelist,context){for(var func,i=0,l=nodelist.length;i<l;i++)(func=Hogan.codegen[nodelist[i].tag])&&func(nodelist[i],context);return context},Hogan.parse=function(tokens,text,options){return function buildTree(tokens,kind,stack,customTags){var tail,instructions=[],opener=null,token=null;for(tail=stack[stack.length-1];tokens.length>0;){if(token=tokens.shift(),tail&&"<"==tail.tag&&!(token.tag in allowedInSuper))throw new Error("Illegal content in < super tag.");if(Hogan.tags[token.tag]<=Hogan.tags.$||isOpener(token,customTags))stack.push(token),token.nodes=buildTree(tokens,token.tag,stack,customTags);else{if("/"==token.tag){if(0===stack.length)throw new Error("Closing tag without opener: /"+token.n);if(opener=stack.pop(),token.n!=opener.n&&!isCloser(token.n,opener.n,customTags))throw new Error("Nesting error: "+opener.n+" vs. "+token.n);return opener.end=token.i,instructions}"\n"==token.tag&&(token.last=0==tokens.length||"\n"==tokens[0].tag)}instructions.push(token)}if(stack.length>0)throw new Error("missing closing tag: "+stack.pop().n);return instructions}(tokens,0,[],(options=options||{}).sectionTags||[])},Hogan.cache={},Hogan.cacheKey=function(text,options){return[text,!!options.asString,!!options.disableLambda,options.delimiters,!!options.modelGet].join("||")},Hogan.compile=function(text,options){options=options||{};var key=Hogan.cacheKey(text,options),template=this.cache[key];if(template){var partials=template.partials;for(var name in partials)delete partials[name].instance;return template}return template=this.generate(this.parse(this.scan(text,options.delimiters),text,options),text,options),this.cache[key]=template}}("undefined"!=typeof exports?exports:Hogan),"function"==typeof define&&define.amd&&define("hogan",Hogan),define("hgn",["hogan","text"],function(hogan,text){var _buildTemplate,DEFAULT_EXTENSION=".mustache",_buildMap={},_buildTemplateText='define("{{pluginName}}!{{moduleName}}", ["hogan"], function(hogan){ var tmpl = new hogan.Template({{{fn}}}, "", hogan); function render(){ return tmpl.render.apply(tmpl, arguments); } render.template = tmpl; return render;});\n';return{load:function(name,req,onLoad,config){var hgnConfig=config.hgn||{},fileName=name;fileName+=hgnConfig&&null!=hgnConfig.templateExtension?hgnConfig.templateExtension:DEFAULT_EXTENSION,text.get(req.toUrl(fileName),function(data){var compilationOptions=hgnConfig.compilationOptions?function(target,source){var key;for(key in source)Object.prototype.hasOwnProperty.call(source,key)&&(target[key]=source[key]);return target}({},hgnConfig.compilationOptions):{};config.isBuild&&(compilationOptions.asString=!0,_buildMap[name]=hogan.compile(data,compilationOptions));var fn,context,template=hogan.compile(data,compilationOptions),render=(fn=template.render,context=template,function(){return fn.apply(context,arguments)});render.text=template.text,render.template=template,onLoad(render)})},write:function(pluginName,moduleName,writeModule){if(moduleName in _buildMap){_buildTemplate||(_buildTemplate=hogan.compile(_buildTemplateText));var fn=_buildMap[moduleName];writeModule(_buildTemplate.render({pluginName:pluginName,moduleName:moduleName,fn:fn}))}}}}),define("hgn!readium_js_viewer_html_templates/settings-dialog.html",["hogan"],function(hogan){var tmpl=new hogan.Template({code:function(c,p,i){var t=this;return t.b(i=i||""),t.b('<div tabindex="-1" class="modal fade" id="settings-dialog" role="dialog" aria-label="'),t.b(t.v(t.d("strings.settings",c,p,0))),t.b('">'),t.b("\n"+i),t.b(' <div class="modal-dialog">'),t.b("\n"+i),t.b(' <div class="modal-content">'),t.b("\n"),t.b("\n"+i),t.b(' \x3c!-- div class="modal-header">'),t.b("\n"+i),t.b(' <h4 class="modal-title" id="settings-label">'),t.b(t.v(t.d("strings.settings",c,p,0))),t.b("</h4>"),t.b("\n"+i),t.b(" </div --\x3e"),t.b("\n"),t.b("\n"+i),t.b(' <div class="modal-body">'),t.b("\n"+i),t.b(' <button type="button" class="close" id="closeSettingsCross" data-dismiss="modal" title="'),t.b(t.v(t.d("strings.i18n_close",c,p,0))),t.b(" "),t.b(t.v(t.d("strings.settings",c,p,0))),t.b('" aria-label="'),t.b(t.v(t.d("strings.i18n_close",c,p,0))),t.b(" "),t.b(t.v(t.d("strings.settings",c,p,0))),t.b('"><span aria-hidden="true">×</span></button>'),t.b("\n"),t.b("\n"+i),t.b(' <ul class="nav nav-tabs" role="tablist" aria-owns="tab-butt-style tab-butt-layout tab-butt-keys">'),t.b("\n"+i),t.b(' <li class="active" role="presentation"><button id="tab-butt-style" title="'),t.b(t.v(t.d("strings.style",c,p,0))),t.b('" aria-label="'),t.b(t.v(t.d("strings.style",c,p,0))),t.b('" role=\'tab\' aria-controls="tab-style" data-toggle="tab" data-target="#tab-style" tabindex="0">'),t.b(t.v(t.d("strings.style",c,p,0))),t.b("</button></li>"),t.b("\n"+i),t.b(' <li role="presentation"><button id="tab-butt-layout" title="'),t.b(t.v(t.d("strings.layout",c,p,0))),t.b('" aria-label="'),t.b(t.v(t.d("strings.layout",c,p,0))),t.b('" role=\'tab\' aria-controls="tab-layout" data-toggle="tab" data-target="#tab-layout" tabindex="-1">'),t.b(t.v(t.d("strings.layout",c,p,0))),t.b("</button></li>"),t.b("\n"+i),t.b(' <li role="presentation"><button id="tab-butt-keys" title="'),t.b(t.v(t.d("strings.i18n_keyboard_shortcuts",c,p,0))),t.b('" aria-label="'),t.b(t.v(t.d("strings.i18n_keyboard_shortcuts",c,p,0))),t.b('" role=\'tab\' aria-controls="tab-keyboard" data-toggle="tab" data-target="#tab-keyboard" tabindex="-1">'),t.b(t.v(t.d("strings.i18n_keyboard_shortcuts",c,p,0))),t.b("</button></li>"),t.b("\n"+i),t.b(" </ul>"),t.b("\n"),t.b("\n"),t.b("\n"+i),t.b(' <div class="tab-content">'),t.b("\n"+i),t.b(' <div id="tab-style" class="tab-pane active" role="tabpanel" aria-expanded="true">'),t.b("\n"+i),t.b(' <h5 aria-hidden="true">'),t.b(t.v(t.d("strings.preview",c,p,0))),t.b("</h5>"),t.b("\n"+i),t.b(' <div aria-hidden="true" class="row">'),t.b("\n"+i),t.b(' <div data-theme="author-theme" class="col-xs-10 col-xs-offset-1 preview-text author-theme">'),t.b("\n"+i),t.b(" Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus neque dui, congue a suscipit non, feugiat eu urna. Cras in felis sed orci aliquam sagittis."),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"),t.b("\n"+i),t.b('\x3c!-- button type="button" title="TESTING" aria-label="TESTING">TESTING DANIEL</button --\x3e'),t.b("\n"),t.b("\n"+i),t.b(' <h5 id="setting-header-font-size" class="setting-header">'),t.b(t.v(t.d("strings.i18n_font_size",c,p,0))),t.b("</h5>"),t.b("\n"+i),t.b(' <div class="row">'),t.b("\n"+i),t.b(' <div class="col-xs-2 icon-scale-down">'),t.b("\n"+i),t.b(' <img src="'),t.b(t.t(t.f("imagePathPrefix",c,p,0))),t.b('images/glyphicons_115_text_smaller.png" alt="" aria-hidden="true">'),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(' <div class="col-xs-8">'),t.b("\n"+i),t.b(' <input type="range" aria-labelledby="setting-header-font-size" id="font-size-input" min="60" aria-value-min="60" aria-valuemin="60" step="10" max="170" aria-value-max="170" aria-valuemax="170" value="100" aria-valuenow="100" aria-value-now="100" aria-valuetext="1em" aria-value-text="1em" title="'),t.b(t.v(t.d("strings.i18n_font_size",c,p,0))),t.b('" aria-label="'),t.b(t.v(t.d("strings.i18n_font_size",c,p,0))),t.b('" />'),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(' <div class="col-xs-2">'),t.b("\n"+i),t.b(' <img src="'),t.b(t.t(t.f("imagePathPrefix",c,p,0))),t.b('images/glyphicons_116_text_bigger.png" alt="" aria-hidden="true">'),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"),t.b("\n"+i),t.b(' <h5 id="setting-header-font-selection" class="setting-header">'),t.b(t.v(t.d("strings.i18n_font_selection",c,p,0))),t.b("</h5>"),t.b("\n"+i),t.b(' <div class="row">'),t.b("\n"+i),t.b(' <div class="col-xs-8 col-xs-offset-2">'),t.b("\n"+i),t.b(' <select style="width: 100%; padding: 0.5em;" aria-labelledby="setting-header-font-selection" id="font-selection-input" title="'),t.b(t.v(t.d("strings.i18n_font_selection",c,p,0))),t.b('" aria-label="'),t.b(t.v(t.d("strings.i18n_font_selection",c,p,0))),t.b('">'),t.b("\n"+i),t.b(' <option value="0" aria-label="'),t.b(t.v(t.d("strings.i18n_fonttype_default",c,p,0))),t.b('" title="'),t.b(t.v(t.d("strings.i18n_fonttype_default",c,p,0))),t.b('">'),t.b(t.v(t.d("strings.i18n_fonttype_default",c,p,0))),t.b("</option>"),t.b("\n"+i),t.b("\t\t\t\t\t\t\t</select>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"),t.b("\n"),t.b("\n"+i),t.b(' <h5 id="setting-header-color-legend" class="setting-header">'),t.b(t.v(t.d("strings.i18n_text_and_background_color",c,p,0))),t.b("</h5>"),t.b("\n"+i),t.b(' <div role="group" aria-labelledby="setting-header-color-legend" id="theme-radio-group" class="row">'),t.b("\n"),t.b("\n"+i),t.b(' <button role="button" data-theme="author-theme" title="'),t.b(t.v(t.d("strings.i18n_author_theme",c,p,0))),t.b('" aria-label="'),t.b(t.v(t.d("strings.i18n_author_theme",c,p,0))),t.b('" class="col-xs-8 col-xs-offset-2 theme-option author-theme clickable">'),t.b(t.v(t.d("strings.i18n_author_theme",c,p,0))),t.b("</button>"),t.b("\n"),t.b("\n"+i),t.b(' <button role="button" data-theme="default-theme" title="'),t.b(t.v(t.d("strings.i18n_black_and_white",c,p,0))),t.b('" aria-label="'),t.b(t.v(t.d("strings.i18n_black_and_white",c,p,0))),t.b('" class="col-xs-8 col-xs-offset-2 theme-option default-theme clickable">'),t.b(t.v(t.d("strings.i18n_black_and_white",c,p,0))),t.b("</button>"),t.b("\n"),t.b("\n"+i),t.b(' <button role="button" data-theme="night-theme" title="'),t.b(t.v(t.d("strings.i18n_arabian_nights",c,p,0))),t.b(" ["),t.b(t.v(t.d("keyboard.NightTheme",c,p,0))),t.b(']" aria-label="'),t.b(t.v(t.d("strings.i18n_arabian_nights",c,p,0))),t.b(" ["),t.b(t.v(t.d("keyboard.NightTheme",c,p,0))),t.b(']" class="col-xs-8 col-xs-offset-2 theme-option night-theme clickable" >'),t.b(t.v(t.d("strings.i18n_arabian_nights",c,p,0))),t.b('</button> \x3c!-- accesskey="'),t.b(t.v(t.d("keyboard.accesskeys.NightTheme",c,p,0))),t.b('" --\x3e'),t.b("\n"),t.b("\n"+i),t.b(' <button role="button" data-theme="parchment-theme" title="'),t.b(t.v(t.d("strings.i18n_sands_of_dune",c,p,0))),t.b('" aria-label="'),t.b(t.v(t.d("strings.i18n_sands_of_dune",c,p,0))),t.b('" class="col-xs-8 col-xs-offset-2 theme-option parchment-theme clickable">'),t.b(t.v(t.d("strings.i18n_sands_of_dune",c,p,0))),t.b("</button>"),t.b("\n"),t.b("\n"+i),t.b(' <button role="button" data-theme="ballard-theme" title="'),t.b(t.v(t.d("strings.i18n_ballard_blues",c,p,0))),t.b('" aria-label="'),t.b(t.v(t.d("strings.i18n_ballard_blues",c,p,0))),t.b('" class="col-xs-8 col-xs-offset-2 theme-option ballard-theme clickable">'),t.b(t.v(t.d("strings.i18n_ballard_blues",c,p,0))),t.b("</button>"),t.b("\n"),t.b("\n"+i),t.b(' <button role="button" data-theme="vancouver-theme" title="'),t.b(t.v(t.d("strings.i18n_vancouver_mist",c,p,0))),t.b('" aria-label="'),t.b(t.v(t.d("strings.i18n_vancouver_mist",c,p,0))),t.b('" class="col-xs-8 col-xs-offset-2 theme-option vancouver-theme clickable">'),t.b(t.v(t.d("strings.i18n_vancouver_mist",c,p,0))),t.b("</button>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(' <div id="tab-layout" class="tab-pane" role="tabpanel">'),t.b("\n"),t.b("\n"+i),t.b(" \x3c!-- disabled: replaced with setting-header-column-max-width-legend (see below) --\x3e"),t.b("\n"+i),t.b(' <h5 style="display:none;" id="setting-header-margins-legend" class="setting-header">'),t.b(t.v(t.d("strings.i18n_margins",c,p,0))),t.b("</h5>"),t.b("\n"+i),t.b(' <div style="display:none;" class="row">'),t.b("\n"+i),t.b(' <div class="col-xs-2 icon-scale-down">'),t.b("\n"+i),t.b(' <img style="height: 32px;" src="'),t.b(t.t(t.f("imagePathPrefix",c,p,0))),t.b('images/margin1_off.png" alt="" aria-hidden="true">'),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(' <div class="col-xs-8">'),t.b("\n"+i),t.b(' <input type="range" role="slider" aria-labelledby="setting-header-margins-legend" id="margin-size-input" min="20" aria-value-min="20" aria-valuemin="20" step="20" max="100" aria-value-max="100" aria-valuemax="100" value="20" aria-valuenow="20" aria-value-now="20" aria-valuetext="20" aria-value-text="20" title="'),t.b(t.v(t.d("strings.i18n_margins",c,p,0))),t.b('" aria-label="'),t.b(t.v(t.d("strings.i18n_margins",c,p,0))),t.b('"/>'),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(' <div class="col-xs-2">'),t.b("\n"+i),t.b(' <img style="height: 32px;" src="'),t.b(t.t(t.f("imagePathPrefix",c,p,0))),t.b('images/margin4_off.png" alt="" aria-hidden="true">'),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(" "),t.b("\n"+i),t.b(' <h5 id="setting-header-column-max-width-legend" class="setting-header">'),t.b(t.v(t.d("strings.i18n_pageMaxWidth",c,p,0))),t.b("</h5>"),t.b("\n"+i),t.b(' <div class="row">'),t.b("\n"+i),t.b(' <div class="col-xs-2">'),t.b("\n"+i),t.b(' <img style="height: 32px;" src="'),t.b(t.t(t.f("imagePathPrefix",c,p,0))),t.b('images/margin4_off.png" alt="" aria-hidden="true">'),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(' <div class="col-xs-8">'),t.b("\n"+i),t.b(' <input type="range" role="slider" aria-labelledby="setting-header-column-max-width-legend" id="column-max-width-input" min="500" aria-value-min="500" aria-valuemin="500" step="50" max="2000" aria-value-max="2000" aria-valuemax="2000" value="700" aria-valuenow="700" aria-value-now="700" aria-valuetext="700" aria-value-text="700" title="'),t.b(t.v(t.d("strings.i18n_pageMaxWidth",c,p,0))),t.b('" aria-label="'),t.b(t.v(t.d("strings.i18n_pageMaxWidth",c,p,0))),t.b('"/>'),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(' <div class="col-xs-2 icon-scale-down">'),t.b("\n"+i),t.b(' <img style="height: 32px;" src="'),t.b(t.t(t.f("imagePathPrefix",c,p,0))),t.b('images/margin1_off.png" alt="" aria-hidden="true">'),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"),t.b("\n"+i),t.b(' <h5 id="setting-header-display-legend" class="setting-header">'),t.b(t.v(t.d("strings.i18n_display_format",c,p,0))),t.b("</h5>"),t.b("\n"),t.b("\n"+i),t.b(' <div role="radiogroup" class="row" style="width:100%;text-align:center;" aria-labelledby="setting-header-display-legend">'),t.b("\n"),t.b("\n"+i),t.b(' <div role="radio" id="spread-default-option"'),t.b("\n"+i),t.b(' style="vertical-align:middle;width:30%;display:inline-block;position:relative;">'),t.b("\n"+i),t.b(' <input style="" name="display-format" value="single" type="radio" id="spread-default-radio"/>'),t.b("\n"+i),t.b(' <label style="" for="spread-default-radio" class="underlinedLabel">'),t.b("\n"+i),t.b(" "),t.b(t.v(t.d("strings.i18n_spread_auto",c,p,0))),t.b("\n"+i),t.b(" </label>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"),t.b("\n"),t.b("\n"+i),t.b(' <div role="radio" id="one-up-option"'),t.b("\n"+i),t.b(' style="vertical-align:middle;width:30%;display:inline-block;position:relative;">'),t.b("\n"),t.b("\n"+i),t.b(' <input name="display-format" value="single" type="radio" id="single-page-radio" />'),t.b("\n"+i),t.b(' <label for="single-page-radio" class="underlinedLabel">'),t.b("\n"+i),t.b(' <img src="'),t.b(t.t(t.f("imagePathPrefix",c,p,0))),t.b('images/ico_singlepage_up.png" alt="'),t.b(t.v(t.d("strings.i18n_display_format",c,p,0))),t.b(" "),t.b(t.v(t.d("strings.i18n_single_pages",c,p,0))),t.b('"/>'),t.b("\n"+i),t.b(" </label>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(' <div role="radio" id="two-up-option"'),t.b("\n"+i),t.b(' style="vertical-align:middle;width:30%;display:inline-block;position:relative;">'),t.b("\n"),t.b("\n"+i),t.b(' <input name="display-format" value="double" type="radio" id="double-page-radio" />'),t.b("\n"+i),t.b(' <label for="double-page-radio" class="underlinedLabel">'),t.b("\n"+i),t.b(' <img src="'),t.b(t.t(t.f("imagePathPrefix",c,p,0))),t.b('images/ico_doublepage_up.png" alt="'),t.b(t.v(t.d("strings.i18n_display_format",c,p,0))),t.b(" "),t.b(t.v(t.d("strings.i18n_double_pages",c,p,0))),t.b('">'),t.b("\n"+i),t.b(" </label>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"),t.b("\n"+i),t.b(' <h5 id="setting-header-scroll-legend" class="setting-header">'),t.b(t.v(t.d("strings.i18n_scroll_mode",c,p,0))),t.b("</h5>"),t.b("\n"),t.b("\n"+i),t.b(' <div role="radiogroup" class="row" style="width:100%;text-align:center;" aria-labelledby="setting-header-scroll-legend">'),t.b("\n"),t.b("\n"+i),t.b(' <div role="radio" id="scroll-default-option" style="vertical-align:middle;width:30%;display:inline-block;position:relative;">'),t.b("\n"+i),t.b(' <input style="" name="scrolling" value="single" type="radio" id="scroll-default-radio"/>'),t.b("\n"+i),t.b(' <label style="" for="scroll-default-radio" class="underlinedLabel">'),t.b("\n"+i),t.b(" "),t.b(t.v(t.d("strings.i18n_scroll_mode_auto",c,p,0))),t.b("\n"+i),t.b(" </label>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"),t.b("\n"+i),t.b(' <div role="radio" id="scroll-doc-option" style="vertical-align:middle;width:30%;display:inline-block;position:relative;">'),t.b("\n"+i),t.b(' <input style="" name="scrolling" value="single" type="radio" id="scroll-doc-radio"/>'),t.b("\n"+i),t.b(' <label style="" for="scroll-doc-radio" class="underlinedLabel">'),t.b("\n"+i),t.b(' <span style="font-size:150%;color:#888888;" class="glyphicon glyphicon-file" aria-hidden="true"></span> '),t.b(t.v(t.d("strings.i18n_scroll_mode_doc",c,p,0))),t.b("\n"+i),t.b(" </label>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"),t.b("\n"+i),t.b(' <div role="radio" id="scroll-continuous-option" style="vertical-align:middle;width:30%;display:inline-block;position:relative;">'),t.b("\n"+i),t.b(' <input style="" name="scrolling" value="single" type="radio" id="scroll-continuous-radio"/>'),t.b("\n"+i),t.b(' <label style="" for="scroll-continuous-radio" class="underlinedLabel">'),t.b("\n"+i),t.b(' <span style="font-size:150%;color:#888888;" class="glyphicon glyphicon-road" aria-hidden="true"></span> '),t.b(t.v(t.d("strings.i18n_scroll_mode_continuous",c,p,0))),t.b("\n"+i),t.b(" </label>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"),t.b("\n"+i),t.b(" </div>"),t.b("\n"),t.b("\n"+i),t.b(" \x3c!-- Page transitions are seriously broken (see readium-shared-js one_page_view.js disablePageTransitions boolean), so we hide the UI config options --\x3e"),t.b("\n"+i),t.b(' <h5 style="display:none;" hiddenx="hidden" id="setting-header-pageTransition-legend" class="setting-header">'),t.b(t.v(t.d("strings.i18n_page_transition",c,p,0))),t.b("</h5>"),t.b("\n"),t.b("\n"+i),t.b(' <div style="display:none; width:100%;text-align:center;" hiddenx="hidden" role="radiogroup" class="row" aria-labelledby="setting-header-pageTransition-legend">'),t.b("\n"),t.b("\n"+i),t.b(' <div role="radio" id="pageTransition-none-option" style="vertical-align:middle;width:15%;display:inline-block;position:relative;">'),t.b("\n"+i),t.b(' <input style="" name="pageTransition" value="single" type="radio" id="pageTransition-none-radio"/>'),t.b("\n"+i),t.b(' <label style="" for="pageTransition-none-radio" class="underlinedLabel">'),t.b("\n"+i),t.b(" "),t.b(t.v(t.d("strings.i18n_page_transition_none",c,p,0))),t.b("\n"+i),t.b(" </label>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"),t.b("\n"+i),t.b(' <div role="radio" id="pageTransition-1-option" style="vertical-align:middle;width:15%;display:inline-block;position:relative;">'),t.b("\n"+i),t.b(' <input style="" name="pageTransition" value="single" type="radio" id="pageTransition-1-radio"/>'),t.b("\n"+i),t.b(' <label style="" for="pageTransition-1-radio" class="underlinedLabel">'),t.b("\n"+i),t.b(" "),t.b(t.v(t.d("strings.i18n_page_transition_fade",c,p,0))),t.b("\n"+i),t.b(" </label>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"),t.b("\n"+i),t.b(' <div role="radio" id="pageTransition-2-option" style="vertical-align:middle;width:15%;display:inline-block;position:relative;">'),t.b("\n"+i),t.b(' <input style="" name="pageTransition" value="single" type="radio" id="pageTransition-2-radio"/>'),t.b("\n"+i),t.b(' <label style="" for="pageTransition-2-radio" class="underlinedLabel">'),t.b("\n"+i),t.b(" "),t.b(t.v(t.d("strings.i18n_page_transition_slide",c,p,0))),t.b("\n"+i),t.b(" </label>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"),t.b("\n"+i),t.b(' <div role="radio" id="pageTransition-3-option" style="vertical-align:middle;width:15%;display:inline-block;position:relative;">'),t.b("\n"+i),t.b(' <input style="" name="pageTransition" value="single" type="radio" id="pageTransition-3-radio"/>'),t.b("\n"+i),t.b(' <label style="" for="pageTransition-3-radio" class="underlinedLabel">'),t.b("\n"+i),t.b(" "),t.b(t.v(t.d("strings.i18n_page_transition_swoosh",c,p,0))),t.b("\n"+i),t.b(" </label>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"),t.b("\n"+i),t.b(' <div role="radio" id="pageTransition-4-option" style="vertical-align:middle;width:15%;display:inline-block;position:relative;">'),t.b("\n"+i),t.b(' <input style="" name="pageTransition" value="single" type="radio" id="pageTransition-4-radio"/>'),t.b("\n"+i),t.b(' <label style="" for="pageTransition-4-radio" class="underlinedLabel">'),t.b("\n"+i),t.b(" "),t.b(t.v(t.d("strings.i18n_page_transition_butterfly",c,p,0))),t.b("\n"+i),t.b(" </label>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"),t.b("\n"),t.b("\n"+i),t.b(" </div>"),t.b("\n"),t.b("\n"),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(' <div id="tab-keyboard" class="tab-pane" role="tabpanel">'),t.b("\n"),t.b("\n"+i),t.b(' <div class="row" style="position:relative;">'),t.b("\n"),t.b("\n"+i),t.b(' <div id="invalid_keyboard_shortcut_ALERT"></div>'),t.b("\n"),t.b("\n"+i),t.b(' <ul id="keyboard-list">'),t.b("\n"+i),t.b(" </ul>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(' <div class="modal-footer">'),t.b("\n"+i),t.b(' <button id="buttClose" type="button" class="btn btn-default" data-dismiss="modal" title="'),t.b(t.v(t.d("strings.i18n_close",c,p,0))),t.b(" ["),t.b(t.v(t.d("keyboard.SettingsModalClose",c,p,0))),t.b(']" aria-label="'),t.b(t.v(t.d("strings.i18n_close",c,p,0))),t.b(" ["),t.b(t.v(t.d("keyboard.SettingsModalClose",c,p,0))),t.b(']">'),t.b(t.v(t.d("strings.i18n_close",c,p,0))),t.b("</button>"),t.b("\n"+i),t.b(' <button id="buttSave" type="button" class="btn btn-primary" data-dismiss="modal" title="'),t.b(t.v(t.d("strings.i18n_save_changes",c,p,0))),t.b(" ["),t.b(t.v(t.d("keyboard.SettingsModalSave",c,p,0))),t.b(']" aria-label="'),t.b(t.v(t.d("strings.i18n_save_changes",c,p,0))),t.b(" ["),t.b(t.v(t.d("keyboard.SettingsModalSave",c,p,0))),t.b(']">'),t.b(t.v(t.d("strings.i18n_save_changes",c,p,0))),t.b("</button>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(" \x3c!-- /.modal-content --\x3e"),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(" \x3c!-- /.modal-dialog --\x3e"),t.b("\n"+i),t.b("</div>"),t.b("\n"),t.fl()},partials:{},subs:{}},"",hogan);function render(){return tmpl.render.apply(tmpl,arguments)}return render.template=tmpl,render}),define("hgn!readium_js_viewer_html_templates/settings-keyboard-item.html",["hogan"],function(hogan){var tmpl=new hogan.Template({code:function(c,p,i){var t=this;return t.b(i=i||""),t.s(t.f("name",c,p,1),c,p,0,9,739,"{{ }}")&&(t.rs(c,p,function(c,p,t){t.b("<li>"),t.b("\n"+i),t.b('<label id="label_'),t.b(t.v(t.f("name",c,p,0))),t.b('">'),t.b(t.v(t.f("i18n",c,p,0))),t.b("<br/><span>"),t.b(t.v(t.f("name",c,p,0))),t.b("</span></label>"),t.b("\n"+i),t.b('<input id="'),t.b(t.v(t.f("name",c,p,0))),t.b('" name="'),t.b(t.v(t.f("name",c,p,0))),t.b('" class="keyboardInput" type="text" placeholder="'),t.b(t.v(t.f("shortcut",c,p,0))),t.b('" value="'),t.b(t.v(t.f("shortcut",c,p,0))),t.b('" aria-labelledbyxxx="label_'),t.b(t.v(t.f("name",c,p,0))),t.b('" aria-label="'),t.b(t.v(t.f("i18n",c,p,0))),t.b('" title="'),t.b(t.v(t.f("i18n",c,p,0))),t.b('"></input>'),t.b("\n"+i),t.b('<button class="resetKey captureKeyboardShortcut" role="button" data-key="'),t.b(t.v(t.f("name",c,p,0))),t.b('" title="'),t.b(t.v(t.d("strings.i18n_reset_key",c,p,0))),t.b(" ("),t.b(t.v(t.f("def",c,p,0))),t.b(')" aria-label="'),t.b(t.v(t.d("strings.i18n_reset_key",c,p,0))),t.b(" ("),t.b(t.v(t.f("def",c,p,0))),t.b(')"><span aria-hidden="true">⊗</span></button>'),t.b("\n"+i),t.b('<span id="duplicate_keyboard_shortcut" aria-hidden="true">'),t.b(t.v(t.d("strings.i18n_duplicate_keyboard_shortcut",c,p,0))),t.b("</span>"),t.b("\n"+i),t.b('<span id="invalid_keyboard_shortcut" aria-hidden="true">'),t.b(t.v(t.d("strings.i18n_invalid_keyboard_shortcut",c,p,0))),t.b("</span>"),t.b("\n"+i),t.b("</li>"),t.b("\n"+i)}),c.pop()),t.s(t.f("name",c,p,1),c,p,1,0,0,"")||(t.b('<li id="resetAllKeys'),t.b(t.v(t.f("id",c,p,0))),t.b('" class="resetAllKeys">'),t.b("\n"+i),t.b('<button class="resetKey" role="button" title="'),t.b(t.v(t.d("strings.i18n_reset_key_all",c,p,0))),t.b('" aria-label="'),t.b(t.v(t.d("strings.i18n_reset_key_all",c,p,0))),t.b('"><span aria-hidden="true">'),t.b(t.v(t.d("strings.i18n_reset_key_all",c,p,0))),t.b(" ⊗</span></button>"),t.b("\n"+i),t.b("</li>"),t.b("\n"+i)),t.fl()},partials:{},subs:{}},"",hogan);function render(){return tmpl.render.apply(tmpl,arguments)}return render.template=tmpl,render}),define("text!readium_js_viewer_i18n/_locales/de/messages.json",[],function(){return'{ "about": {\n "message": "Über Readium"\n },\n "preview": {\n "message": "Vorschau"\n },\n "list_view": {\n "message": "Listenansicht"\n },\n "thumbnail_view": {\n "message": "Kachelansicht"\n },\n "view_library": {\n "message": "Bibliothek"\n },\n "highlight_selection": {\n "message": "Ausgewählten Text hervorheben"\n },\n "toc": {\n "message": "Inhaltsverzeichnis"\n },\n "settings": {\n "message": "Einstellungen"\n },\n "enter_fullscreen": {\n "message": "Vollbildmodus"\n },\n "exit_fullscreen": {\n "message": "Vollbildmodus verlassen"\n },\n "chrome_extension_name": {\n "message": "Readium"\n },\n "chrome_extension_description": {\n "message": "Ein Leseprogramm für EPUB3 Bücher."\n },\n "ok" : {\n "message" : "Ok"\n },\n "i18n_readium_library": {\n "message": "Readium Bibliothek"\n },\n "i18n_loading": {\n "message": "Bibliothek wird geladen"\n },\n "i18n_readium_options": {\n "message": "Readium Einstellungen:"\n },\n "i18n_save_changes": {\n "message": "Änderungen speichern"\n },\n "i18n_close": {\n "message": "Schließen"\n },\n "i18n_keyboard_shortcuts": {\n "message": "Funktionstasten"\n },\n "i18n_keyboard_reload": {\n "message": "Bitte laden Sie die Seite im Browser neu, damit die Änderungen der Tastaturkürzel wirksam werden."\n },\n "i18n_reset_key": {\n "message": "Taste zurücksetzen"\n },\n "i18n_reset_key_all": {\n "message": "Alle Funktionstasten auf Standard zurücksetzen"\n },\n "i18n_duplicate_keyboard_shortcut": {\n "message": "Doppelbelegung"\n },\n "i18n_invalid_keyboard_shortcut": {\n "message": "Nicht zulässig"\n },\n "i18n_paginate_all": {\n "message": "Fließtext des EPUB Inhalts paginieren"\n },\n "i18n_automatically": {\n "message": "*.epub URLs automatisch in Readium öffnen"\n },\n "i18n_show_warning": {\n "message": "Warnhinweise beim Entpacken von EPUB Dateien anzeigen"\n },\n "i18n_details": {\n "message": "Details"\n },\n "i18n_read": {\n "message": "Lesen"\n },\n "i18n_delete": {\n "message": "Löschen"\n },\n "i18n_are_you_sure": {\n "message": "Möchten Sie diese Datei wirklich unwiderruflich löschen?"\n },\n "delete_dlg_title": {\n "message": "Löschen bestätigen"\n },\n\n "i18n_auto_page_turn_enable": {\n "message": "Automatisches Umblättern einschalten"\n },\n "i18n_auto_page_turn_disable": {\n "message": "Automatisches Umblättern ausschalten"\n },\n\n "i18n_playback_scroll_enable": {\n "message": "Scrollen während der Wiedergabe"\n },\n "i18n_playback_scroll_disable": {\n "message": "Kein Scrollen während der Wiedergabe"\n },\n "i18n_audio_touch_enable": {\n "message": "Touch-to-play einschalten"\n },\n "i18n_audio_touch_disable": {\n "message": "Touch-to-play ausschalten"\n },\n "i18n_audio_highlight_default": {\n "message": "Standard"\n },\n "i18n_audio_highlight": {\n "message": "Hervorhebungsfarbe"\n },\n\n "delete_progress_title": {\n "message": "Löschen wird ausgeführt"\n },\n "delete_progress_message": {\n "message": "Löschen"\n },\n "migrate_dlg_title": {\n "message": "Bücher migrieren"\n },\n "migrate_dlg_message": {\n "message": "Daten werden geladen..."\n },\n "migrating": {\n "message": "Migrieren..."\n },\n "replace_dlg_title": {\n "message": "Konflikt festgestellt"\n },\n "replace_dlg_message": {\n "message": "Soll das bestehende EPUB wirklich ersetzt werden?"\n },\n "import_dlg_title": {\n "message": "EPUB importieren"\n },\n "import_dlg_message": {\n "message": "EPUB Inhalt überprüfen..."\n },\n "storing_file": {\n "message": "Datei speichern"\n },\n "err_unknown": {\n "message": "Unbekannter Fehler. Für Details öffnen Sie die Konsole."\n },\n "err_storage": {\n "message": "Zugriff auf Dateispeicher nicht möglich."\n },\n "err_epub_corrupt": {\n "message": "Ungültiges oder beschädigtes EPUB Paket"\n },\n "err_dlg_title": {\n "message": "Unerwarteter Fehler"\n },\n "replace" : {\n "message": "Ersetzen"\n },\n "i18n_author": {\n "message": "Autor: "\n },\n "i18n_publisher": {\n "message": "Verlag: "\n },\n "i18n_source": {\n "message": "Quelle: "\n },\n "i18n_pub_date": {\n "message": "Veröffentlicht am: "\n },\n "i18n_modified_date": {\n "message": "Zuletzt geändert am: "\n },\n "i18n_id": {\n "message": "ID: "\n },\n "i18n_epub_version": {\n "message": "EPUB Version: "\n },\n "i18n_created_at": {\n "message": "Erstellt am: "\n },\n "i18n_format": {\n "message": "Format: "\n },\n "i18n_added": {\n "message": "Hinzugefügt am: "\n },\n "i18n_unknown": {\n "message": "Unbekannt"\n },\n "i18n_sorry": {\n "message": "Das aktuelle EPUB enthält für diesen Inhalt keine Media Overlays."\n },\n "i18n_add_items": {\n "message": "Füge Werke zur Bibliothek hinzu."\n },\n "i18n_extracting": {\n "message": "Entpacke: "\n },\n "i18n_add_book_to_readium_library": {\n "message": "Buch zur Readium Bibliothek hinzufügen:"\n },\n "i18n_add_book": {\n "message": "Buch hinzufügen"\n },\n "i18n_cancel": {\n "message": "Abbrechen"\n },\n "i18n_from_the_web": {\n "message": "Internet:"\n },\n "i18n_from_local_file": {\n "message": "Lokale Datei:"\n },\n "i18n_enter_a_url": {\n "message": "URL einer .epub Datei eingeben"\n },\n "i18n_unpacked_directory": {\n "message": "Entpacktes Verzeichnis:"\n },\n "i18n_validate": {\n "message": "Prüfe:"\n },\n "i18n_confirm_that_this_book": {\n "message": "Bestätigung, dass dieses Buch mit EPUB Standards übereinstimmt"\n },\n "i18n_single_pages": {\n "message": "Einzelseiten"\n },\n "i18n_double_pages": {\n "message": "Doppelseiten"\n },\n "i18n_save_settings": {\n "message": "Einstellungen speichern"\n },\n "i18n_font_size": {\n "message": "Schriftgröße"\n },\n "i18n_margins": {\n "message": "Rand"\n },\n "i18n_text_and_background_color": {\n "message": "Text- und Hintergrundfarbe"\n },\n "i18n_author_theme": {\n "message": "Vorgabe des Autors"\n },\n "i18n_black_and_white": {\n "message": "Schwarzweiss"\n },\n "i18n_arabian_nights": {\n "message": "Arabian Nights"\n },\n "i18n_sands_of_dune": {\n "message": "Sands of Dune"\n },\n "i18n_ballard_blues": {\n "message": "Ballard Blues"\n },\n "i18n_vancouver_mist": {\n "message": "Vancouver Mist"\n },\n "i18n_display_format": {\n "message": "Anzeigeformat"\n },\n "i18n_spread_auto": {\n "message": "Automatisch"\n },\n "i18n_scroll_mode": {\n "message": "Scroll Modus"\n },\n "i18n_scroll_mode_auto": {\n "message": "Automatisch"\n },\n "i18n_scroll_mode_doc": {\n "message": "Dokument"\n },\n "i18n_scroll_mode_continuous": {\n "message": "Kontinuierlich"\n },\n\n "i18n_page_transition": {\n "message": "Umblätter-Effekt"\n },\n "i18n_page_transition_none": {\n "message": "Keiner"\n },\n "i18n_page_transition_fade": {\n "message": "Fade"\n },\n "i18n_page_transition_slide": {\n "message": "Slide"\n },\n "i18n_page_transition_swoosh": {\n "message": "Swoosh"\n },\n "i18n_page_transition_butterfly": {\n "message": "Butterfly"\n },\n "i18n_html_readium_tm_a_project": {\n "message": "Readium für Chrome ist die Chrome Browser Erweiterung basierend auf ReadiumJS, einem Open-Source Lesesystem und einer JavaScript Bibliothek zur Darstellung von EPUB® Veröffentlichungen in Web-Browsern. ReadiumJS ist ein Projekt der Readium Foundation (Readium.org). Wenn Sie mehr darüber erfahren möchten oder das Projekt unterstützen wollen, besuchen Sie bitte die <a href=\\"http://readium.org/\\">Projekt Homepage</a>."\n\n },\n "gethelp": {\n "message": "Falls Sie auf Probleme stoßen, Fragen haben oder \\"Hallo\\" sagen möchten, besuchen Sie <a href=\\"http://idpf.org/forums/readium\\">unser Forum</a>."\n },\n "i18n_toolbar": {\n "message": "Werkzeugleiste"\n },\n "i18n_toolbar_show": {\n "message": "Werkzeugleiste anzeigen"\n },\n "i18n_toolbar_hide": {\n "message": "Werkzeugleiste ausblenden"\n },\n "i18n_audio_play": {\n "message": "Audio - Abspielen"\n },\n "i18n_audio_pause": {\n "message": "Audio - Pause"\n },\n "i18n_audio_play_background": {\n "message": "Hintergrundaudio ein"\n },\n "i18n_audio_pause_background": {\n "message": "Hintergrundaudio aus"\n },\n "i18n_audio_previous": {\n "message": "Vorige Audiophrase"\n },\n "i18n_audio_next": {\n "message": "Nächste Audiophrase"\n },\n "i18n_audio_volume": {\n "message": "Lautstärke"\n },\n "i18n_audio_volume_increase": {\n "message": "Lautstärke erhöhen"\n },\n "i18n_audio_volume_decrease": {\n "message": "Lautstärke verringern"\n },\n "i18n_audio_time": {\n "message": "Audio - Zeitmarke"\n },\n "i18n_audio_mute": {\n "message": "Audio ausschalten"\n },\n "i18n_audio_unmute": {\n "message": "Audio einschalten"\n },\n "i18n_audio_expand": {\n "message": "Erweiterte Audio-Steuerung anzeigen"\n },\n "i18n_audio_collapse": {\n "message": "Erweiterte Audio-Steuerung ausblenden"\n },\n "i18n_audio_esc": {\n "message": "Aktuellen Audio-Bereich verlassen"\n },\n "i18n_audio_rate": {\n "message": "Audio - Wiedergabegeschwindigkeit"\n },\n "i18n_audio_rate_increase": {\n "message": "Audio - Wiedergabegeschwindigkeit erhöhen"\n },\n "i18n_audio_rate_decrease": {\n "message": "Audio - Wiedergabegeschwindigkeit verringern"\n },\n "i18n_audio_rate_reset": {\n "message": "Audio - Wiedergabegeschwindigkeit zurücksetzen"\n },\n "i18n_audio_skip_disable": {\n "message": "Audio - Überspringen unterbinden "\n },\n "i18n_audio_skip_enable": {\n "message": "Audio - Überspringen ermöglichen"\n },\n "i18n_audio_sync": {\n "message": "Text-Audio-Synchronisation"\n },\n "i18n_audio_sync_default": {\n "message": "Nach Vorgabe"\n },\n "i18n_audio_sync_word": {\n "message": "Wort"\n },\n "i18n_audio_sync_sentence": {\n "message": "Satz"\n },\n "i18n_audio_sync_paragraph": {\n "message": "Absatz"\n },\n "i18n_page_previous": {\n "message": "Vorige Seite"\n },\n "i18n_page_next": {\n "message": "Nächste Seite"\n },\n "chrome_accept_languages": {\n "message": "$CHROME$ akzeptiert $languages$ Sprachen",\n "placeholders": {\n "chrome": {\n "content": "Chrome",\n "example": "Chrome"\n },\n "languages": {\n "content": "$1",\n "example": "en-US,ja,sr,de,zh_CN"\n }\n }\n }\n}'}),define("text!readium_js_viewer_i18n/_locales/es/messages.json",[],function(){return'{\n\n "chrome_extension_name": {\n "message": "Readium"\n },\n "about" : {\n "message" : "Acerca de"\n },\n "preview" : {\n "message" : "Vista previa"\n },\n "list_view" : {\n "message" : "Vista en lista"\n },\n "thumbnail_view" : {\n "message" : "Vista en miniaturas"\n },\n "view_library": {\n "message" : "Biblioteca"\n },\n "highlight_selection" : {\n "message" : "Subrayar texto seleccionado"\n },\n "toc" : {\n "message" : "Tabla de contenidos"\n },\n "settings" : {\n "message" : "Preferencias"\n },\n "enter_fullscreen" : {\n "message" : "Abrir modo de pantalla completa"\n },\n "exit_fullscreen" : {\n "message" : "Cerrar modo de pantalla completa"\n },\n "chrome_extension_description": {\n "message": "Lector de libros EPUB3."\n },\n "ok" : {\n "message" : "Ok"\n },\n "delete_dlg_title" : {\n "message" : "Confirmar eliminación"\n },\n "delete_progress_title" : {\n "message" : "Eliminación en progreso"\n },\n "delete_progress_message" : {\n "message" : "Eliminando"\n },\n "migrate_dlg_title" : {\n "message" : "Migrando libros"\n },\n "migrate_dlg_message" : {\n "message" : "Cargando datos..."\n },\n "migrating" : {\n "message" : "Migrando"\n },\n "replace_dlg_title" : {\n "message": "Se ha detectado un conflicto"\n },\n "replace_dlg_message": {\n "message": "Si decide continuar, el siguiente epub será reemplazado por el que está siendo importado"\n },\n "import_dlg_title" : {\n "message": "Importando EPUB"\n },\n "import_dlg_message" : {\n "message": "Examinando contenido del EPUB..."\n },\n "storing_file" : {\n "message": "Guardando archivo"\n },\n "err_unknown" : {\n "message": "Error desconocido. Chequear la consola para conocer más detalles."\n },\n "err_storage" : {\n "message": "No es posible acceder al dispositvo"\n },\n "err_epub_corrupt" : {\n "message": "Paquete EPUB inválido o corrupto"\n },\n "err_dlg_title" : {\n "message": "Error inesperado"\n },\n "replace" : {\n "message": "Reemplazar"\n },\n "gethelp" : {\n "message" : "Si encuentra algún problema, tiene preguntas, o le gustaría decir hola, visite <a href=\\"http://idpf.org/forums/readium\\">nuestro foro</a>"\n },\n "i18n_readium_library" : {\n "message" : "Biblioteca Readium"\n },\n "i18n_loading" : {\n "message" : "Cargando biblioteca"\n },\n "i18n_readium_options" : {\n "message" : "Readium Opciones:"\n },\n "i18n_save_changes" : {\n "message" : "Guardar cambios"\n },\n "i18n_close" : {\n "message" : "Cerrar"\n },\n "i18n_keyboard_shortcuts" : {\n "message" : "Teclas de acceso rápido"\n },\n "i18n_keyboard_reload" : {\n "message" : "Por favor, actualiza la página para que las teclas de acceso rápido tengan efecto."\n },\n "i18n_reset_key" : {\n "message" : "Reestablecer tecla"\n },\n "i18n_reset_key_all" : {\n "message" : "Reestablecer todos las teclas de acceso rápido"\n },\n "i18n_duplicate_keyboard_shortcut" : {\n "message" : "DUPLICADO"\n },\n "i18n_invalid_keyboard_shortcut" : {\n "message" : "INVALIDO"\n },\n "i18n_paginate_all" : {\n "message" : "Paginar todo el contenido ePUB repaginable"\n },\n "i18n_automatically" : {\n "message" : "Abrir automáticamente urls *.epub en readium"\n },\n "i18n_show_warning" : {\n "message" : "Mostrar advertencias al desempaquetar archivos EPUB"\n },\n "i18n_details" : {\n "message" : "Detalles"\n },\n "i18n_read" : {\n "message" : "Leer"\n },\n "i18n_delete" : {\n "message" : "Eliminar"\n },\n "i18n_author" : {\n "message" : "Autor: "\n },\n "i18n_publisher" : {\n "message" : "Editor: "\n },\n "i18n_source" : {\n "message" : "Fuente: "\n },\n "i18n_pub_date" : {\n "message" : "Fecha de publicación: "\n },\n "i18n_modified_date" : {\n "message" : "Fecha de modificación: "\n },\n "i18n_id" : {\n "message" : "ID: "\n },\n "i18n_epub_version" : {\n "message" : "Versión EPUB: "\n },\n "i18n_created_at" : {\n "message" : "Creado en: "\n },\n "i18n_format" : {\n "message" : "Formato: "\n },\n "i18n_added" : {\n "message" : "Añadido: "\n },\n "i18n_unknown" : {\n "message" : "Desconocido"\n },\n "i18n_sorry" : {\n "message" : "Disculpa, el EPUB actual no contiene superposición multimedia para este contenido"\n },\n "i18n_add_items" : {\n "message" : "¡Añade aquí elementos a tu biblioteca!"\n },\n "i18n_extracting" : {\n "message" : "extrayendo: "\n },\n "i18n_are_you_sure" : {\n "message" : "¿Está seguro que desea eliminar de forma permanente"\n },\n "i18n_add_book_to_readium_library" : {\n "message" : "Añadir libro a biblioteca Readium:"\n },\n "i18n_add_book" : {\n "message" : "Añadir a la biblioteca"\n },\n "i18n_cancel" : {\n "message" : "Cancelar"\n },\n "i18n_from_the_web" : {\n "message" : "Desde la web:"\n },\n "i18n_from_local_file" : {\n "message" : "Desde un archivo local:"\n },\n "i18n_enter_a_url" : {\n "message" : "Ingresa una URL a un archivo .epub"\n },\n "i18n_unpacked_directory" : {\n "message" : "Carpeta descomprimida:"\n },\n "i18n_validate" : {\n "message" : "Validar:"\n },\n "i18n_confirm_that_this_book" : {\n "message" : "Confirmar que este libro cumple con los estándares ePUB"\n },\n "i18n_single_pages" : {\n "message" : "Páginas simple"\n },\n "i18n_double_pages" : {\n "message" : "Páginas doble"\n },\n "i18n_save_settings" : {\n "message" : "Guardar preferencias"\n },\n "i18n_font_size" : {\n "message" : "TAMAÑO DE FUENTE"\n },\n "i18n_margins" : {\n "message" : "MARGENES"\n },\n "i18n_text_and_background_color" : {\n "message" : "COLOR DE FUENTE Y FONDO"\n },\n "i18n_black_and_white" : {\n "message" : "Blanco y negro"\n },\n "i18n_arabian_nights" : {\n "message" : "Las mil y una noches"\n },\n "i18n_sands_of_dune" : {\n "message" : "Arenas de duna"\n },\n "i18n_ballard_blues" : {\n "message" : "Ballard Blues"\n },\n "i18n_vancouver_mist" : {\n "message" : "Bruma de Vancouver"\n },\n "i18n_display_format" : {\n "message" : "MOSTRAR FORMATO"\n },\n "i18n_scroll_mode" : {\n "message" : "MODO DE DESPLAZAMIENTO"\n },\n "i18n_scroll_mode_default" : {\n "message" : "Por defecto"\n },\n "i18n_scroll_mode_doc" : {\n "message" : "Documento"\n },\n "i18n_scroll_mode_continuous" : {\n "message" : "Continuo"\n },\n "i18n_html_readium_tm_a_project" : {\n "message" : "Readium para Chrome es la extensión para Chrome de ReadiumJS, un sistema de lectura de código abierto y librería JavaScript para renderizar publicaciones EPUB® en navegadores web. ReadiumJS es un proyecto de Readium Foundation (Readium.org). Para saber más o contribuir, visita el <a href=\\"http://readium.org/projects/readiumjs\\">sitio del proyecto</a>"\n },\n "i18n_toolbar_show" : {\n "message" : "Mostrar barra de herramientas"\n },\n "i18n_toolbar_hide" : {\n "message" : "Ocultar barra de herramientas"\n },\n "i18n_audio_play" : {\n "message" : "Reproducir"\n },\n "i18n_audio_pause" : {\n "message" : "Pausa"\n },\n "i18n_audio_previous" : {\n "message" : "Frase de audio anterior"\n },\n "i18n_audio_next" : {\n "message" : "Frase de audio siguiente"\n },\n "i18n_audio_volume" : {\n "message" : "Volumen de audio"\n },\n "i18n_audio_volume_increase" : {\n "message" : "Incrementar volumen de audio"\n },\n "i18n_audio_volume_decrease" : {\n "message" : "Reducir volumen de audio"\n },\n "i18n_audio_time" : {\n "message" : "Cursor de tiempo de audio"\n },\n "i18n_audio_mute" : {\n "message" : "Desactivar audio"\n },\n "i18n_audio_unmute" : {\n "message" : "Activar audio"\n },\n "i18n_audio_expand" : {\n "message" : "Mostrar controles avanzados de audio"\n },\n "i18n_audio_collapse" : {\n "message" : "Cerrar controles avanzados de audio"\n },\n "i18n_audio_esc" : {\n "message" : "Salir de contexto actual de audio"\n },\n "i18n_audio_rate" : {\n "message" : "Velocidad de reproducción de audio"\n },\n "i18n_audio_rate_increase" : {\n "message" : "Incrementar velocidad de reproducción de audio"\n },\n "i18n_audio_rate_decrease" : {\n "message" : "Reducir velocidad de reproducción de audio"\n },\n "i18n_audio_rate_reset" : {\n "message" : "Reestablecer reproducción de audio a velocidad normal"\n },\n "i18n_audio_skip_disable" : {\n "message" : "Desactivar capacidad de omisión"\n },\n "i18n_audio_skip_enable" : {\n "message" : "Activar capacidad de omisión"\n },\n "i18n_audio_touch_enable" : {\n "message" : "Activar touch-to-play"\n },\n "i18n_audio_touch_disable" : {\n "message" : "Desactivar touch-to-play"\n },\n "i18n_audio_highlight_default" : {\n "message" : "por defecto"\n },\n "i18n_audio_highlight" : {\n "message" : "Color de audio"\n },\n "i18n_audio_sync" : {\n "message" : "Granularidad de sincronización texto/audio"\n },\n "i18n_audio_sync_default" : {\n "message" : "Por defecto"\n },\n "i18n_audio_sync_word" : {\n "message" : "Palabra"\n },\n "i18n_audio_sync_sentence" : {\n "message" : "Oración"\n },\n "i18n_audio_sync_paragraph" : {\n "message" : "Párrafo"\n },\n "i18n_page_previous" : {\n "message" : "Página previa"\n },\n "i18n_page_next" : {\n "message" : "Página siguiente"\n },\n "i18n_author_theme" : {\n "message" : "Por defecto (estilos de autor)"\n },\n\n "i18n_spread_auto" : {\n "message" : "Automático"\n },\n\n "i18n_scroll_mode_auto" : {\n "message" : "Automático"\n },\n\n "i18n_page_transition" : {\n "message" : "EFECTOS DE PÁGINA"\n },\n "i18n_page_transition_none" : {\n "message" : "Desactivado"\n },\n "i18n_page_transition_fade" : {\n "message" : "Apagarse"\n },\n "i18n_page_transition_slide" : {\n "message" : "Deslizar"\n },\n "i18n_page_transition_swoosh" : {\n "message" : "Swoosh"\n },\n "i18n_page_transition_butterfly" : {\n "message" : "Mariposa"\n },\n\n "i18n_toolbar" : {\n "message" : "Barra de herramientas"\n },\n\n "i18n_audio_play_background" : {\n "message" : "Reproducir pista en segundo plano"\n },\n "i18n_audio_pause_background" : {\n "message" : "Pausar pista en segundo plano"\n},\n\n "i18n_auto_page_turn_enable" : {\n "message" : "Activar vuelta de página automática"\n },\n "i18n_auto_page_turn_disable" : {\n "message" : "Desactivar vuelta de página automática"\n },\n\n "i18n_playback_scroll_enable" : {\n "message" : "Activar desplazamiento durante la reproducción"\n },\n\n "i18n_playback_scroll_disable" : {\n "message" : "Desactivar desplazamiento durante la reproducción"\n },\n\n "chrome_accept_languages": {\n "message": "$CHROME$ acepta idiomas $languages$",\n "placeholders": {\n "chrome": {\n "content": "Chrome",\n "example": "Chrome"\n },\n "languages": {\n "content": "$1",\n "example": "en-US,ja,sr,de,zh_CN"\n }\n }\n }\n}'}),define("text!readium_js_viewer_i18n/_locales/en_US/messages.json",[],function(){return'{\n "gitHasLocalChanges": {\n "message": "with local changes"\n },\n\n "chrome_extension_name": {\n "message": "Readium"\n },\n "about" : {\n "message" : "About"\n },\n "preview" : {\n "message" : "PREVIEW"\n },\n "list_view" : {\n "message" : "List View"\n },\n "thumbnail_view" : {\n "message" : "Thumbnail View"\n },\n "view_library": {\n "message" : "Library"\n },\n "highlight_selection" : {\n "message" : "Highlight Selected Text"\n },\n "share_url" : {\n "message" : "Share reader bookmark..."\n },\n "share_url_label" : {\n "message" : "Use your clipboard to copy/paste this shareable link:"\n },\n "toc" : {\n "message" : "Table of Contents"\n },\n "settings" : {\n "message" : "Settings"\n },\n "layout" : {\n "message" : "Layout"\n },\n "style" : {\n "message" : "Style"\n },\n "enter_fullscreen" : {\n "message" : "Enter Fullscreen"\n },\n "exit_fullscreen" : {\n "message" : "Exit Fullscreen"\n },\n "chrome_extension_description": {\n "message": "A reader for EPUB3 books."\n },\n "ok" : {\n "message" : "Ok"\n },\n "delete_dlg_title" : {\n "message" : "Confirm Delete"\n },\n "delete_progress_title" : {\n "message" : "Delete in Progress"\n },\n "delete_progress_message" : {\n "message" : "Deleting"\n },\n "migrate_dlg_title" : {\n "message" : "Migrating Books"\n },\n "migrate_dlg_message" : {\n "message" : "Loading data..."\n },\n "migrating" : {\n "message" : "Migrating"\n },\n "replace_dlg_title" : {\n "message": "Conflict Detected"\n },\n "replace_dlg_message": {\n "message": "If you continue, the following epub will be replaced with the one you are importing"\n },\n "import_dlg_title" : {\n "message": "Importing EPUB"\n },\n "import_dlg_message" : {\n "message": "Examining EPUB content..."\n },\n "storing_file" : {\n "message": "Storing file"\n },\n "err_unknown" : {\n "message": "Unknown error. Check console for more details."\n },\n "err_storage" : {\n "message": "Unable to access storage"\n },\n "err_epub_corrupt" : {\n "message": "Invalid or corrupted EPUB package"\n },\n "err_ajax": {\n "message": "Error in ajax request"\n },\n "err_dlg_title" : {\n "message": "Unexpected Error"\n },\n "replace" : {\n "message": "Replace"\n },\n "gethelp" : {\n "message" : "If you encounter any problems, have questions, or would like to say hello, visit <a href=\\"http://idpf.org/forums/readium\\">our forum</a>"\n },\n "i18n_readium_library" : {\n "message" : "Readium Library"\n },\n "i18n_loading" : {\n "message" : "Loading Library"\n },\n "i18n_readium_options" : {\n "message" : "Readium Options:"\n },\n "i18n_save_changes" : {\n "message" : "Save changes"\n },\n "i18n_close" : {\n "message" : "Close"\n },\n "i18n_keyboard_shortcuts" : {\n "message" : "Keyboard shortcuts"\n },\n "i18n_keyboard_reload" : {\n "message" : "Please reload the page for keyboard shortcuts to take effect."\n },\n "i18n_keyboard_onerror_reset" : {\n "message" : "Please note: Any shortcuts marked INVALID or DUPLICATE have been reset to original values."\n },\n "i18n_reset_key" : {\n "message" : "Reset key"\n },\n "i18n_reset_key_all" : {\n "message" : "Reset all keyboard shortcuts"\n },\n "i18n_duplicate_keyboard_shortcut" : {\n "message" : "DUPLICATE"\n },\n "i18n_invalid_keyboard_shortcut" : {\n "message" : "INVALID"\n },\n "i18n_paginate_all" : {\n "message" : "Paginate all reflowable ePUB content"\n },\n "i18n_automatically" : {\n "message" : "Automatically open *.epub urls in readium"\n },\n "i18n_show_warning" : {\n "message" : "Show warning messages when unpacking EPUB files"\n },\n "i18n_details" : {\n "message" : "Details"\n },\n "i18n_read" : {\n "message" : "Read"\n },\n "i18n_delete" : {\n "message" : "Delete"\n },\n "i18n_author" : {\n "message" : "Author: "\n },\n "i18n_publisher" : {\n "message" : "Publisher: "\n },\n "i18n_source" : {\n "message" : "Source: "\n },\n "i18n_pub_date" : {\n "message" : "Pub Date: "\n },\n "i18n_modified_date" : {\n "message" : "Modified Date: "\n },\n "i18n_id" : {\n "message" : "ID: "\n },\n "i18n_epub_version" : {\n "message" : "EPUB version: "\n },\n "i18n_created_at" : {\n "message" : "Created at: "\n },\n "i18n_format" : {\n "message" : "Format: "\n },\n "i18n_added" : {\n "message" : "Added: "\n },\n "i18n_unknown" : {\n "message" : "Unknown"\n },\n "i18n_sorry" : {\n "message" : "Sorry, the current EPUB does not contain a media overlay for this content"\n },\n "i18n_add_items" : {\n "message" : "Add items to your library here!"\n },\n "i18n_extracting" : {\n "message" : "extracting: "\n },\n "i18n_are_you_sure" : {\n "message" : "Are you sure you want to permanently delete "\n },\n "i18n_add_book_to_readium_library" : {\n "message" : "Add Book To Readium Library:"\n },\n "i18n_add_book" : {\n "message" : "Add to Library"\n },\n "i18n_cancel" : {\n "message" : "Cancel"\n },\n "i18n_from_the_web" : {\n "message" : "From the web:"\n },\n "i18n_from_local_file" : {\n "message" : "From Local File:"\n },\n "i18n_enter_a_url" : {\n "message" : "Enter a URL to a .epub file"\n },\n "i18n_unpacked_directory" : {\n "message" : "Unpacked Directory:"\n },\n "i18n_validate" : {\n "message" : "Validate:"\n },\n "i18n_confirm_that_this_book" : {\n "message" : "Confirm that this book complies with ePUB standards"\n },\n "i18n_single_pages" : {\n "message" : "Single Pages"\n },\n "i18n_double_pages" : {\n "message" : "Double Pages"\n },\n "i18n_save_settings" : {\n "message" : "Save Settings"\n },\n "i18n_font_size" : {\n "message" : "FONT SIZE"\n },\n "i18n_font_selection" : {\n "message" : "FONT FACE"\n },\n "i18n_fonttype_default" : {\n "message" : "Default"\n },\n\n "i18n_margins" : {\n "message" : "MARGINS"\n },\n "i18n_pageMaxWidth" : {\n "message" : "PAGE WIDTH"\n },\n "i18n_pageMaxWidth_Disabled" : {\n "message" : "Disabled (no maximum)"\n },\n "i18n_text_and_background_color" : {\n "message" : "TEXT AND BACKGROUND COLOR"\n },\n "i18n_author_theme" : {\n "message" : "Default (author styles)"\n },\n "i18n_black_and_white" : {\n "message" : "Black and White"\n },\n "i18n_arabian_nights" : {\n "message" : "Arabian Nights"\n },\n "i18n_sands_of_dune" : {\n "message" : "Sands of Dune"\n },\n "i18n_ballard_blues" : {\n "message" : "Ballard Blues"\n },\n "i18n_vancouver_mist" : {\n "message" : "Vancouver Mist"\n },\n "i18n_display_format" : {\n "message" : "DISPLAY FORMAT"\n },\n "i18n_spread_auto" : {\n "message" : "Auto"\n },\n "i18n_scroll_mode" : {\n "message" : "SCROLL MODE"\n },\n "i18n_scroll_mode_auto" : {\n "message" : "Auto"\n },\n "i18n_scroll_mode_doc" : {\n "message" : "Document"\n },\n "i18n_scroll_mode_continuous" : {\n "message" : "Continuous"\n },\n\n "i18n_page_transition" : {\n "message" : "PAGE EFFECTS"\n },\n "i18n_page_transition_none" : {\n "message" : "Disabled"\n },\n "i18n_page_transition_fade" : {\n "message" : "Fade"\n },\n "i18n_page_transition_slide" : {\n "message" : "Slide"\n },\n "i18n_page_transition_swoosh" : {\n "message" : "Swoosh"\n },\n "i18n_page_transition_butterfly" : {\n "message" : "Butterfly"\n },\n\n "i18n_html_readium_tm_a_project" : {\n "message" : "Readium for Chrome is the Chrome browser extension configuration of ReadiumJS, an open source reading system and JavaScript library for displaying EPUB® publications in web browsers. ReadiumJS is a project of the Readium Foundation (Readium.org). To learn more or to contribute, visit the <a id=\\"aboutFirst Focusable\\" href=\\"http://readium.org/projects/readiumjs\\">project homepage</a>"\n },\n "i18n_alt_about_logos" : {\n "message" : "HTML5, i d p f, ePUB"\n },\n "i18n_toolbar" : {\n "message" : "Toolbar"\n },\n "i18n_toolbar_show" : {\n "message" : "Show toolbar"\n },\n "i18n_toolbar_hide" : {\n "message" : "Hide toolbar"\n },\n "i18n_audio_play" : {\n "message" : "Play"\n },\n "i18n_audio_pause" : {\n "message" : "Pause"\n },\n "i18n_audio_play_background" : {\n "message" : "Play background track"\n },\n "i18n_audio_pause_background" : {\n "message" : "Pause background track"\n },\n "i18n_audio_previous" : {\n "message" : "Previous audio phrase"\n },\n "i18n_audio_next" : {\n "message" : "Next audio phrase"\n },\n "i18n_audio_volume" : {\n "message" : "Audio volume"\n },\n "i18n_audio_volume_increase" : {\n "message" : "Increase audio volume"\n },\n "i18n_audio_volume_decrease" : {\n "message" : "Decrease audio volume"\n },\n "i18n_audio_time" : {\n "message" : "Audio time cursor"\n },\n "i18n_audio_mute" : {\n "message" : "Mute audio"\n },\n "i18n_audio_unmute" : {\n "message" : "Unmute audio"\n },\n "i18n_audio_expand" : {\n "message" : "Show advanced audio controls"\n },\n "i18n_audio_collapse" : {\n "message" : "Close advanced audio controls"\n },\n "i18n_audio_esc" : {\n "message" : "Escape current audio context"\n },\n "i18n_audio_rate" : {\n "message" : "Audio playback rate"\n },\n "i18n_audio_rate_increase" : {\n "message" : "Increase audio playback rate"\n },\n "i18n_audio_rate_decrease" : {\n "message" : "Decrease audio playback rate"\n },\n "i18n_audio_rate_reset" : {\n "message" : "Reset audio playback to normal speed"\n },\n "i18n_audio_skip_disable" : {\n "message" : "Disable skippability"\n },\n "i18n_audio_skip_enable" : {\n "message" : "Enable skippability"\n },\n\n "i18n_auto_page_turn_enable" : {\n "message" : "Enable automatic page turn"\n },\n "i18n_auto_page_turn_disable" : {\n "message" : "Disable automatic page turn"\n },\n\n "i18n_playback_scroll_enable" : {\n "message" : "Enable scroll during playback"\n },\n "i18n_playback_scroll_disable" : {\n "message" : "Disable scroll during playback"\n },\n\n "i18n_audio_touch_enable" : {\n "message" : "Enable touch-to-play"\n },\n "i18n_audio_touch_disable" : {\n "message" : "Disable touch-to-play"\n },\n "i18n_audio_highlight_default" : {\n "message" : "default"\n },\n "i18n_audio_highlight" : {\n "message" : "Audio color"\n },\n "i18n_audio_sync" : {\n "message" : "Text/audio synchronization granularity"\n },\n "i18n_audio_sync_default" : {\n "message" : "Default"\n },\n "i18n_audio_sync_word" : {\n "message" : "Word"\n },\n "i18n_audio_sync_sentence" : {\n "message" : "Sentence"\n },\n "i18n_audio_sync_paragraph" : {\n "message" : "Paragraph"\n },\n "i18n_page_previous" : {\n "message" : "Previous Page"\n },\n "i18n_page_next" : {\n "message" : "Next Page"\n },\n "i18n_page_navigation" : {\n "message" : "Page Navigation"\n },\n "i18n_ChromeApp_deprecated_dialog_title" : {\n "message" : "Readium Chrome App - WARNING"\n },\n "i18n_ChromeApp_deprecated_dialog_HTML" : {\n "message" : "<p><strong><u>IMPORTANT:</u></strong></p><p>This is the final release of the Readium Chrome App. Google decided to remove support for \\"apps\\" in the Chrome Web Browser, as <a href=\\"https://developer.chrome.com/apps/migration\\" target=\\"_blank\\">explained here</a>.</p> <p>At some point, Google will completely disable existing Chrome apps. This is unfortunately outside of Readium\'s control.</p> <p>Consequently, please consider using alternative software to read EPUB files. Visit the <a href=\\"https://readium.org/about/applications.html/\\" target=\\"_blank\\">Readium website</a> for suggestions.</p>"\n },\n "chrome_accept_languages": {\n "message": "$CHROME$ accepts $languages$ languages",\n "placeholders": {\n "chrome": {\n "content": "Chrome",\n "example": "Chrome"\n },\n "languages": {\n "content": "$1",\n "example": "en-US,ja,sr,de,zh_CN"\n }\n }\n }\n}\n'}),define("text!readium_js_viewer_i18n/_locales/fr/messages.json",[],function(){return'{\n "chrome_extension_name": {\n "message": "Readium"\n },\n "chrome_extension_description": {\n "message": "Un lecteur de livres numériques EPUB3."\n },\n "i18n_readium_library" : {\n "message" : "Bibliothèque Readium"\n },\n "i18n_loading" : {\n "message" : "Chargement de la bibliothèque"\n },\n "i18n_readium_options" : {\n "message" : "Options de Readium :"\n },\n "i18n_save_changes" : {\n "message" : "Enregistrer les changements"\n },\n "i18n_close" : {\n "message" : "Fermer"\n },\n "i18n_keyboard_shortcuts" : {\n "message" : "Raccourcis clavier"\n },\n "i18n_keyboard_reload" : {\n "message" : "Veuillez recharger la page pour que les raccourcis clavier prennent effet."\n },\n "i18n_reset_key" : {\n "message" : "Réinitialiser le raccourci clavier par défaut"\n },\n "i18n_reset_key_all" : {\n "message" : "Réinitialiser tous les raccourcis clavier par défaut"\n },\n "i18n_duplicate_keyboard_shortcut" : {\n "message" : "DUPLIQUE"\n },\n "i18n_invalid_keyboard_shortcut" : {\n "message" : "INVALIDE"\n },\n "i18n_paginate_all" : {\n "message" : "Paginer tout le contenu des EPUB recomposables"\n },\n "i18n_automatically" : {\n "message" : "Ouvrir automatiquement les urls *.epub dans Readium"\n },\n "i18n_show_warning" : {\n "message" : "Montrer les messages d\'avertissement pendant la décompression des fichiers EPUB"\n },\n "i18n_details" : {\n "message" : "Détails"\n },\n "i18n_read" : {\n "message" : "Lire"\n },\n "i18n_delete" : {\n "message" : "Supprimer"\n },\n "i18n_author" : {\n "message" : "Auteur : "\n },\n "i18n_publisher" : {\n "message" : "Éditeur : "\n },\n "i18n_source" : {\n "message" : "Source : "\n },\n "i18n_pub_date" : {\n "message" : "Date de publication : "\n },\n "i18n_modified_date" : {\n "message" : "Date de modification : "\n },\n "i18n_id" : {\n "message" : "ID: "\n },\n "i18n_epub_version" : {\n "message" : "version de l\'EPUB : "\n },\n "i18n_created_at" : {\n "message" : "Ajouté le : "\n },\n "i18n_format" : {\n "message" : "Format : "\n },\n "i18n_added" : {\n "message" : "Ajouté le : "\n },\n "i18n_unknown" : {\n "message" : "Inconnu"\n },\n "i18n_sorry" : {\n "message" : "Désolé, l\'EPUB actuel ne contient pas de média associé (media overlay) pour ce contenu"\n },\n "i18n_add_items" : {\n "message" : "Ajoutez des articles à votre bibliothèque ici !"\n },\n "i18n_extracting" : {\n "message" : "extraction : "\n },\n "i18n_are_you_sure" : {\n "message" : "Voulez-vous vraiment supprimer "\n },\n "i18n_add_book_to_readium_library" : {\n "message" : "Ajoutez un livre à la bibliothèque de Readium :"\n },\n "i18n_add_book" : {\n "message" : "Ajouter un livre"\n },\n "i18n_cancel" : {\n "message" : "Annuler"\n },\n "i18n_from_the_web" : {\n "message" : "À partir du Web :"\n },\n "i18n_from_local_file" : {\n "message" : "À partir d\'un fichier local :"\n },\n "i18n_enter_a_url" : {\n "message" : "Entrez l\'URL d\'un fichier .epub"\n },\n "i18n_unpacked_directory" : {\n "message" : "Répertoire non-compressé :"\n },\n "i18n_validate" : {\n "message" : "Valider :"\n },\n "i18n_confirm_that_this_book" : {\n "message" : "Confirmer que ce livre est conforme aux standards EPUB"\n },\n "i18n_single_pages" : {\n "message" : "Pages simples"\n },\n "i18n_double_pages" : {\n "message" : "Doubles-pages"\n },\n "i18n_save_settings" : {\n "message" : "Enregistrer"\n },\n "i18n_font_size" : {\n "message" : "TAILLE DE LA POLICE"\n },\n "i18n_margins" : {\n "message" : "MARGES"\n },\n "i18n_text_and_background_color" : {\n "message" : "COULEUR DU TEXTE ET DU FOND"\n },\n "i18n_black_and_white" : {\n "message" : "Noir et Blanc"\n },\n "i18n_arabian_nights" : {\n "message" : "Mille et une Nuits"\n },\n "i18n_sands_of_dune" : {\n "message" : "Sables de Dune"\n },\n "i18n_ballard_blues" : {\n "message" : "Le Blues de Ballard"\n },\n "i18n_vancouver_mist" : {\n "message" : "Le Brouillard de Vancouver"\n },\n "i18n_display_format" : {\n "message" : "FORMAT D\'AFFICHAGE"\n },\n "i18n_scroll_mode" : {\n "message" : "MODE DE DÉFILEMENT"\n },\n "i18n_scroll_mode_auto" : {\n "message" : "Auto"\n },\n "i18n_scroll_mode_doc" : {\n "message" : "Document"\n },\n "i18n_scroll_mode_continuous" : {\n "message" : "Continu"\n },\n "i18n_html_readium_tm_a_project" : {\n "message" : "Readium pour Chrome est l\'extension du navigateur Chrome de ReadiumJS, un système de lecture open-source et une librairie JavaScript pour afficher des documents EPUB® dans les navigateurs web. ReadiumJS est un projet de la fondation Readium (Readium.org). Pour en savoir plus ou pour contribuer, visiter la <a href=\\"http://readium.org/projects/readiumjs\\">page d\'accueil du projet</a>."\n },\n "i18n_audio_play" : {\n "message" : "Jouer"\n },\n "i18n_audio_pause" : {\n "message" : "Pauser"\n },\n "i18n_audio_previous" : {\n "message" : "Phrase audio précédente"\n },\n "i18n_audio_next" : {\n "message" : "Phrase audio suivante"\n },\n "i18n_audio_volume" : {\n "message" : "Ajustement du volume audio"\n },\n "i18n_audio_time" : {\n "message" : "Contrôle du curseur temporel audio"\n },\n "i18n_audio_mute" : {\n "message" : "Silence audio"\n },\n "i18n_audio_unmute" : {\n "message" : "Restaurer le volume audio"\n },\n "i18n_audio_expand" : {\n "message" : "Afficher les contrôles audio avancés"\n },\n "i18n_audio_collapse" : {\n "message" : "Fermer les contrôles audio avancés"\n },\n "i18n_audio_esc" : {\n "message" : "Échapper le contexte audio actuel"\n },\n "i18n_audio_rate" : {\n "message" : "Vitesse de lecture audio"\n },\n "i18n_audio_rate_reset" : {\n "message" : "Retour à la vitesse normale de lecture audio"\n },\n "i18n_audio_skip_disable" : {\n "message" : "Désactiver la \'skippabilité\'"\n },\n "i18n_audio_skip_enable" : {\n "message" : "Activer la \'skippabilité\'"\n },\n "i18n_audio_touch_enable" : {\n "message" : "Activer la fonction \'toucher pour jouer\'"\n },\n "i18n_audio_touch_disable" : {\n "message" : "Désactiver la fonction \'toucher pour jouer\'"\n },\n "i18n_audio_highlight_default" : {\n "message" : "défaut"\n },\n "i18n_audio_highlight" : {\n "message" : "Couleur audio"\n },\n "i18n_audio_sync" : {\n "message" : "Granularité de synchronisation texte / audio"\n },\n "i18n_audio_sync_default" : {\n "message" : "Défaut"\n },\n "i18n_audio_sync_word" : {\n "message" : "Mot"\n },\n "i18n_audio_sync_sentence" : {\n "message" : "Phrase"\n },\n "i18n_audio_sync_paragraph" : {\n "message" : "Paragraphe"\n },\n "i18n_page_previous" : {\n "message" : "Page précédente"\n },\n "i18n_page_next" : {\n "message" : "Page suivante"\n },\n "chrome_accept_languages": {\n "message": "$CHROME$ accepts $languages$ languages",\n "placeholders": {\n "chrome": {\n "content": "Chrome",\n "example": "Chrome"\n },\n "languages": {\n "content": "$1",\n "example": "en-US,fr,ja,de"\n }\n }\n }\n}\n'}),define("text!readium_js_viewer_i18n/_locales/it/messages.json",[],function(){return'{\n "chrome_extension_name": {\n "message": "Readium"\n },\n "chrome_extension_description": {\n "message": "Un visualizzatore di documenti EPUB3"\n },\n "i18n_readium_library" : {\n "message" : "Biblioteca di Readium"\n },\n "i18n_loading" : {\n "message" : "Caricamento biblioteca"\n },\n "i18n_readium_options" : {\n "message" : "Opzioni di Readium"\n },\n "i18n_save_changes" : {\n "message" : "Applica"\n },\n "i18n_close" : {\n "message" : "Chiudi"\n },\n "i18n_paginate_all" : {\n "message" : "Impagina anche i file EPUB reflowable"\n },\n "i18n_automatically" : {\n "message" : "Apri in Readium gli URL che terminano in .epub"\n },\n "i18n_show_warning" : {\n "message" : "Mostra errori e avvisi relativi ai file EPUB"\n },\n "i18n_details" : {\n "message" : "Dettagli"\n },\n "i18n_read" : {\n "message" : "Leggi"\n },\n "i18n_delete" : {\n "message" : "Elimina"\n },\n "i18n_author" : {\n "message" : "Autore: "\n },\n "i18n_publisher" : {\n "message" : "Editore: "\n },\n "i18n_source" : {\n "message" : "Origine: "\n },\n "i18n_pub_date" : {\n "message" : "Data pubblicazione: "\n },\n "i18n_modified_date" : {\n "message" : "Data ultima modifica: "\n },\n "i18n_id" : {\n "message" : "ID: "\n },\n "i18n_epub_version" : {\n "message" : "Versione EPUB: "\n },\n "i18n_created_at" : {\n "message" : "Data importazione: "\n },\n "i18n_format" : {\n "message" : "Formato: "\n },\n "i18n_added" : {\n "message" : "Aggiunto: "\n },\n "i18n_unknown" : {\n "message" : "Sconosciuto"\n },\n "i18n_sorry" : {\n "message" : "Spiacente, non ci sono risorse Media Overlays associate a questo elemento."\n },\n "i18n_add_items" : {\n "message" : "Aggiungi libri alla tua biblioteca!"\n },\n "i18n_extracting" : {\n "message" : "Decomprimendo: "\n },\n "i18n_are_you_sure" : {\n "message" : "Sei sicuro di voler cancellare definitivamente "\n },\n "i18n_add_book_to_readium_library" : {\n "message" : "Aggiungi libro alla Biblioteca di Readium"\n },\n "i18n_add_book" : {\n "message" : "Aggiungi libro"\n },\n "i18n_cancel" : {\n "message" : "Annulla"\n },\n "i18n_from_the_web" : {\n "message" : "Scarica dal Web:"\n },\n "i18n_from_local_file" : {\n "message" : "Importa file EPUB dal tuo computer:"\n },\n "i18n_enter_a_url" : {\n "message" : "Indirizzo Web del file EPUB che vuoi aggiungere:"\n },\n "i18n_unpacked_directory" : {\n "message" : "Importa directory decompressa:"\n },\n "i18n_validate" : {\n "message" : "Convalida:"\n },\n "i18n_confirm_that_this_book" : {\n "message" : "Controlla che i file siano conformi allo standard EPUB prima di aprirli"\n },\n "i18n_single_pages" : {\n "message" : "Singole"\n },\n "i18n_double_pages" : {\n "message" : "Affiancate"\n },\n "i18n_save_settings" : {\n "message" : "Applica"\n },\n "i18n_font_size" : {\n "message" : "DIMENSIONE CARATTERE"\n },\n "i18n_margins" : {\n "message" : "MARGINI"\n },\n "i18n_text_and_background_color" : {\n "message" : "COMBINAZIONE COLORE TESTO/SFONDO"\n },\n "i18n_black_and_white" : {\n "message" : "Bianco su nero"\n },\n "i18n_arabian_nights" : {\n "message" : "Notturno"\n },\n "i18n_sands_of_dune" : {\n "message" : "Deserto"\n },\n "i18n_ballard_blues" : {\n "message" : "Mediterraneo"\n },\n "i18n_vancouver_mist" : {\n "message" : "Nebbia"\n },\n "i18n_display_format" : {\n "message" : "VISUALIZZAZIONE PAGINE"\n },\n "i18n_html_readium_tm_a_project" : {\n "message" : "Readium<sup>TM</sup>, progetto dell\'International Digital Publishing Forum (IDPF) e dei suoi sostenitori, è una piattaforma open source di lettura e un motore di rendering per documenti in formato EPUB®. Per saperne di più, visita la <a href=\\"http://readium.org/\\">pagina principale del progetto</a>. Lo sviluppo del progetto è stato guidato da <a href=\\"http://evidentpoint.com/\\">Evident Point</a> e <a href=\\"http://www.bluefirereader.com/\\">Bluefire Productions</a>. Per contribuire, visita il <a href=\\"https://github.com/Treinetic/readium-js-viewer\\">repository github</a>."\n },\n "chrome_accept_languages": {\n "message": "$CHROME$ accetta le seguenti lingue: $languages$",\n "placeholders": {\n "chrome": {\n "content": "Chrome",\n "example": "Chrome"\n },\n "languages": {\n "content": "$1",\n "example": "en-US,it,ja,sr,de,zh_CN"\n }\n }\n }\n}\n'}),define("text!readium_js_viewer_i18n/_locales/id/messages.json",[],function(){return'{\n "chrome_extension_name": {\n "message": "Readium"\n },\n "chrome_extension_description": {\n "message": "reader untuk buku-buku EPUB3 ."\n },\n "i18n_readium_library" : {\n "message" : "Perpustakaan Readium"\n },\n "i18n_loading" : {\n "message" : "Loading Library"\n },\n "i18n_readium_options" : {\n "message" : "Pilihan Readium :"\n },\n "i18n_save_changes" : {\n "message" : "Simpan perubahan"\n },\n "i18n_close" : {\n "message" : "Tutup"\n },\n "i18n_paginate_all" : {\n "message" : "Paginate all reflowable ePUB content"\n },\n "i18n_automatically" : {\n "message" : "Secara otomatis buka *.epub urls di readium"\n },\n "i18n_show_warning" : {\n "message" : "Tampilkan pesan peringatan ketika unpacking file EPUB"\n },\n "i18n_details" : {\n "message" : "Detail"\n },\n "i18n_read" : {\n "message" : "Baca"\n },\n "i18n_delete" : {\n "message" : "Hapus"\n },\n "i18n_author" : {\n "message" : "Penulis: "\n },\n "i18n_publisher" : {\n "message" : "Penerbit: "\n },\n "i18n_source" : {\n "message" : "Sumber: "\n },\n "i18n_pub_date" : {\n "message" : "Tgl Terbit: "\n },\n "i18n_modified_date" : {\n "message" : "Tgl Modifikasi: "\n },\n "i18n_id" : {\n "message" : "ID: "\n },\n "i18n_epub_version" : {\n "message" : "Versi EPUB: "\n },\n "i18n_created_at" : {\n "message" : "Dibuat di: "\n },\n "i18n_format" : {\n "message" : "Format: "\n },\n "i18n_added" : {\n "message" : "Menambahkan: "\n },\n "i18n_unknown" : {\n "message" : "Tidak dikenal"\n },\n "i18n_sorry" : {\n "message" : "Maaf, EPUB saat ini tidak berisi overlay media untuk konten ini "\n },\n "i18n_add_items" : {\n "message" : "Masukkan item r Library disini!"\n },\n "i18n_extracting" : {\n "message" : "extracting: "\n },\n "i18n_are_you_sure" : {\n "message" : "Apakah and yakin ingin menghapus secara permanen "\n },\n "i18n_add_book_to_readium_library" : {\n "message" : "Masukkan Buku ke Readium Library:"\n },\n "i18n_add_book" : {\n "message" : "Add Book"\n },\n "i18n_cancel" : {\n "message" : "Batal"\n },\n "i18n_from_the_web" : {\n "message" : "Dari Web:"\n },\n "i18n_from_local_file" : {\n "message" : "Dari File local:"\n },\n "i18n_enter_a_url" : {\n "message" : "Masukkan URL ke file .epub "\n },\n "i18n_unpacked_directory" : {\n "message" : "Unpacked Directory:"\n },\n "i18n_validate" : {\n "message" : "Validasi:"\n },\n "i18n_confirm_that_this_book" : {\n "message" : "Konfirmasikan bahwa buku ini sesuai dengan standar EPUB"\n },\n "i18n_single_pages" : {\n "message" : "Single Pages"\n },\n "i18n_double_pages" : {\n "message" : "Double Pages"\n },\n "i18n_save_settings" : {\n "message" : "Save Settings"\n },\n "i18n_font_size" : {\n "message" : "FONT SIZE"\n },\n "i18n_margins" : {\n "message" : "MARGINS"\n },\n "i18n_text_and_background_color" : {\n "message" : "TEKS DAN WARNA LATAR"\n },\n "i18n_black_and_white" : {\n "message" : "Black and White"\n },\n "i18n_arabian_nights" : {\n "message" : "Arabian Nights"\n },\n "i18n_sands_of_dune" : {\n "message" : "Sands of Dune"\n },\n "i18n_ballard_blues" : {\n "message" : "Ballard Blues"\n },\n "i18n_vancouver_mist" : {\n "message" : "Vancouver Mist"\n },\n "i18n_display_format" : {\n "message" : "DISPLAY FORMAT"\n },\n "i18n_html_readium_tm_a_project" : {\n "message" : "Readium<sup>TM</sup>, a project of the International Digital Publishing Forum (IDPF) and supporters, adalah sistem referensi open source DAN rendering engine untuk EPUB® publikasi. Untuk mengetahui lebih lanjut, kunjungi <a href=\\"http://readium.org/\\">project homepage</a>. Sampai saat ini, pengembangan project telah dipimpin oleh <a href=\\"http://evidentpoint.com/\\">Evident Point</a> and <a href=\\"http://www.bluefirereader.com/\\">Bluefire Productions</a>. Untuk kontribusi, kunjungi <a href=\\"https://github.com/Treinetic/readium-js-viewer\\">github repository</a>"\n },\n "chrome_accept_languages": {\n "message": "$CHROME$ accepts $languages$ languages",\n "placeholders": {\n "chrome": {\n "content": "Chrome",\n "example": "Chrome"\n },\n "languages": {\n "content": "$1",\n "example": "en-US,ja,sr,de,zh_CN"\n }\n }\n }\n}\n'}),define("text!readium_js_viewer_i18n/_locales/ja/messages.json",[],function(){return'{\n "chrome_extension_name": {\n "message": "Readium"\n },\n "chrome_extension_description": {\n "message": "EPUB3ブックリーダ"\n },\n "i18n_readium_library" : {\n "message" : "Readiumライブラリ"\n },\n "i18n_loading" : {\n "message" : "Loading Library"\n },\n "i18n_readium_options" : {\n "message" : "Readiumオプション:"\n },\n "i18n_save_changes" : {\n "message" : "変更を保存"\n },\n "i18n_close" : {\n "message" : "閉じる"\n },\n "i18n_paginate_all" : {\n "message" : "リフロー可能なEPUBコンテンツをすべてページネートする"\n },\n "i18n_automatically" : {\n "message" : "URLが*.epubなら自動でReadiumで開く"\n },\n "i18n_show_warning" : {\n "message" : "EPUBファイルを展開する際には警告メッセージを表示する"\n },\n "i18n_details" : {\n "message" : "詳細"\n },\n "i18n_read" : {\n "message" : "読む"\n },\n "i18n_delete" : {\n "message" : "削除"\n },\n "i18n_author" : {\n "message" : "著者: "\n },\n "i18n_publisher" : {\n "message" : "出版社: "\n },\n "i18n_source" : {\n "message" : "ソース: "\n },\n "i18n_pub_date" : {\n "message" : "出版日時: "\n },\n "i18n_modified_date" : {\n "message" : "更新日時: "\n },\n "i18n_id" : {\n "message" : "ID: "\n },\n "i18n_epub_version" : {\n "message" : "EPUBバージョン: "\n },\n "i18n_created_at" : {\n "message" : "追加日時: "\n },\n "i18n_format" : {\n "message" : "フォーマット: "\n },\n "i18n_added" : {\n "message" : "追加日時: "\n },\n "i18n_unknown" : {\n "message" : "不明"\n },\n "i18n_sorry" : {\n "message" : "現在のEPUBにはこのコンテンツのメディアオーバーレイが含まれていません"\n },\n "i18n_add_items" : {\n "message" : "ここをクリックして本を登録します!"\n },\n "i18n_extracting" : {\n "message" : "展開しています: "\n },\n "i18n_are_you_sure" : {\n "message" : "本を削除します: "\n },\n "i18n_add_book_to_readium_library" : {\n "message" : "Readiumライブラリに本を追加します:"\n },\n "i18n_add_book" : {\n "message" : "本の追加"\n },\n "i18n_cancel" : {\n "message" : "キャンセル"\n },\n "i18n_from_the_web" : {\n "message" : "Webから:"\n },\n "i18n_from_local_file" : {\n "message" : "ローカルファイルから:"\n },\n "i18n_enter_a_url" : {\n "message" : ".epubファイルのURLを入力してください"\n },\n "i18n_unpacked_directory" : {\n "message" : "パッケージ化されていないフォルダ:"\n },\n "i18n_validate" : {\n "message" : "検証(バリデート):"\n },\n "i18n_confirm_that_this_book" : {\n "message" : "この本がEPUB仕様に準拠していることを確認する"\n },\n "i18n_single_pages" : {\n "message" : "単ページ"\n },\n "i18n_double_pages" : {\n "message" : "ダブル"\n },\n "i18n_save_settings" : {\n "message" : "設定を保存する"\n },\n "i18n_font_size" : {\n "message" : "文字サイズ"\n },\n "i18n_margins" : {\n "message" : "マージン"\n },\n "i18n_text_and_background_color" : {\n "message" : "文字色と背景色"\n },\n "i18n_black_and_white" : {\n "message" : "白背景に黒文字"\n },\n "i18n_arabian_nights" : {\n "message" : "アラビアンナイト"\n },\n "i18n_sands_of_dune" : {\n "message" : "砂丘の砂"\n },\n "i18n_ballard_blues" : {\n "message" : "バラード ブルース"\n },\n "i18n_vancouver_mist" : {\n "message" : "バンクーバーの霧"\n },\n "i18n_display_format" : {\n "message" : "表示形式"\n },\n "i18n_html_readium_tm_a_project" : {\n "message" : "Readium<sup>TM</sup>とは, International Digital Publishing Forum (IDPF) と支援企業によるプロジェクトで, EPUB® 出版のためのシステムとレンダリングエンジンのオープンソースリファレンスです。詳しくは、<a href=\\"http://readium.org/\\">プロジェクトホームページ</a>をご覧ください。これまでは<a href=\\"http://evidentpoint.com/\\">Evident Point</a>と<a href=\\"http://www.bluefirereader.com/\\">Bluefire Productions</a>がプロジェクト開発をリードしてきました。 コントリビュートするには<a href=\\"https://github.com/Treinetic/readium-js-viewer\\">githubレポジトリ</a>をご覧ください。"\n },\n "chrome_accept_languages": {\n "message": "$CHROME$ accepts $languages$ languages",\n "placeholders": {\n "chrome": {\n "content": "Chrome",\n "example": "Chrome"\n },\n "languages": {\n "content": "$1",\n "example": "en-US,ja,sr,de"\n }\n }\n }\n}\n'}),define("text!readium_js_viewer_i18n/_locales/ko/messages.json",[],function(){return'{\n "chrome_extension_name": {\n "message": "Readium"\n },\n "chrome_extension_description": {\n "message": "EPUB3책 리더."\n },\n "i18n_readium_library" : {\n "message" : "Readium 라이브러리"\n },\n "i18n_loading" : {\n "message" : "Loading Library"\n },\n "i18n_readium_options" : {\n "message" : "Readium 옵션:"\n },\n "i18n_save_changes" : {\n "message" : "변경사항 저장"\n },\n "i18n_close" : {\n "message" : "닫기"\n },\n "i18n_paginate_all" : {\n "message" : "모든 리플로우 컨텐츠의 페이지네이션"\n },\n "i18n_automatically" : {\n "message" : "*.epub url들을 radium에서 자동으로 열기"\n },\n "i18n_show_warning" : {\n "message" : "EPUB파일들을 열 때 경고메시지 표시"\n },\n "i18n_details" : {\n "message" : "세부항목"\n },\n "i18n_read" : {\n "message" : "읽기"\n },\n "i18n_delete" : {\n "message" : "삭제"\n },\n "i18n_author" : {\n "message" : "저자: "\n },\n "i18n_publisher" : {\n "message" : "출판사: "\n },\n "i18n_source" : {\n "message" : "소스: "\n },\n "i18n_pub_date" : {\n "message" : "출판일: "\n },\n "i18n_modified_date" : {\n "message" : "개정일: "\n },\n "i18n_id" : {\n "message" : "ID: "\n },\n "i18n_epub_version" : {\n "message" : "EPUB 버전: "\n },\n "i18n_created_at" : {\n "message" : "생성: "\n },\n "i18n_format" : {\n "message" : "포맷: "\n },\n "i18n_added" : {\n "message" : "추가일시: "\n },\n "i18n_unknown" : {\n "message" : "미상"\n },\n "i18n_sorry" : {\n "message" : "현재 EPUB은 이 컨텐츠를 위한 미디어 오버레이가 포함되어 있지 않습니다."\n },\n "i18n_add_items" : {\n "message" : "책을 등록하기 위하여 여기를 클릭하세요!"\n },\n "i18n_extracting" : {\n "message" : "정보 추출 중: "\n },\n "i18n_are_you_sure" : {\n "message" : "영구히 삭제하시길 원하십니까? "\n },\n "i18n_add_book_to_readium_library" : {\n "message" : "Readium 라이브러리에 책 추가:"\n },\n "i18n_add_book" : {\n "message" : "책 추가"\n },\n "i18n_cancel" : {\n "message" : "취소"\n },\n "i18n_from_the_web" : {\n "message" : "웹에서:"\n },\n "i18n_from_local_file" : {\n "message" : "로컬 파일에서:"\n },\n "i18n_enter_a_url" : {\n "message" : ".epub 파일의 URL을 입력하세요"\n },\n "i18n_unpacked_directory" : {\n "message" : "추출된 디렉토리:"\n },\n "i18n_validate" : {\n "message" : "승인:"\n },\n "i18n_confirm_that_this_book" : {\n "message" : "이 책이 ePUB표준을 따르는지 확인"\n },\n "i18n_single_pages" : {\n "message" : "단일 페이지"\n },\n "i18n_double_pages" : {\n "message" : "더블 페이지"\n },\n "i18n_save_settings" : {\n "message" : "설정 저장"\n },\n "i18n_font_size" : {\n "message" : "폰트 크기"\n },\n "i18n_margins" : {\n "message" : "여백"\n },\n "i18n_text_and_background_color" : {\n "message" : "글자와 배경 색"\n },\n "i18n_black_and_white" : {\n "message" : "흑백"\n },\n "i18n_arabian_nights" : {\n "message" : "아라비안 나이트"\n },\n "i18n_sands_of_dune" : {\n "message" : "샌즈 오브 듄"\n },\n "i18n_ballard_blues" : {\n "message" : "발라드 블루스"\n },\n "i18n_vancouver_mist" : {\n "message" : "밴쿠버 안개"\n },\n "i18n_display_format" : {\n "message" : "디스플레이 포맷"\n },\n "i18n_html_readium_tm_a_project" : {\n "message" : "Readium<sup>TM</sup>는 EPUB®컨텐츠의 출판을 위한 국제디지털출판포럼(IDPF, International Digital Publishing Forum)과 지원 기업들의 오픈소스 시스템 및 렌더링 엔진 프로젝트입니다. 자세한 내용은 <a href=\\"http://readium.org/\\">프로젝트 홈페이지</a>를 참조하세요. 지금까지, 프로젝트 개발은 <a href=\\"http://evidentpoint.com/\\">Evident Point</a>와 <a href=\\"http://www.bluefirereader.com/\\">Bluefire Productions</a>에 의해서 주도 되었습니다. 프로젝트에 기여하시기 위해서는 <a href=\\"https://github.com/Treinetic/readium-js-viewer\\">github 저장소</a>를 확인하시기 바랍니다."\n },\n "chrome_accept_languages": {\n "message": "$CHROME$ accepts $languages$ languages",\n "placeholders": {\n "chrome": {\n "content": "Chrome",\n "example": "Chrome"\n },\n "languages": {\n "content": "$1",\n "example": "en-US,ja,sr,de,zh_CN"\n }\n }\n }\n}\n\n'}),define("text!readium_js_viewer_i18n/_locales/pt_BR/messages.json",[],function(){return'{\n "chrome_extension_name": {\n "message": "Readium"\n },\n "chrome_extension_description" : {\n "message": "Um leitor para livros para EPUB3."\n },\n "i18n_readium_library" : {\n "message" : "Biblioteca Readium"\n },\n "i18n_loading" : {\n "message" : "Loading Library"\n },\n "i18n_readium_options" : {\n "message" : "Opções do Readium:"\n },\n "i18n_save_changes" : {\n "message" : "Salvar mudanças"\n },\n "i18n_close" : {\n "message" : "Fechar"\n },\n "i18n_paginate_all" : {\n "message" : "Paginar todo o conteúdo ePUB fluído"\n },\n "i18n_automatically" : {\n "message" : "Abrir automaticamente urls *.epub no readium"\n },\n "i18n_show_warning" : {\n "message" : "Exibir mensagem de alerta quando extraindo arquivos EPUB"\n },\n "i18n_details" : {\n "message" : "Detalhes"\n },\n "i18n_read" : {\n "message" : "Ler"\n },\n "i18n_delete" : {\n "message" : "Excluir"\n },\n "i18n_author" : {\n "message" : "Autor: "\n },\n "i18n_publisher" : {\n "message" : "Editora: "\n },\n "i18n_source" : {\n "message" : "Origem: "\n },\n "i18n_pub_date" : {\n "message" : "Publicação: "\n },\n "i18n_modified_date" : {\n "message" : "Data de Modificação: "\n },\n "i18n_id" : {\n "message" : "ID: "\n },\n "i18n_epub_version" : {\n "message" : "Versão do EPUB: "\n },\n "i18n_created_at" : {\n "message" : "Criado aos: "\n },\n "i18n_format" : {\n "message" : "Formato: "\n },\n "i18n_added" : {\n "message" : "Adicionado: "\n },\n "i18n_unknown" : {\n "message" : "Desconhecido"\n },\n "i18n_sorry" : {\n "message" : "Desculpe, o atual EPUB não contém uma mídia de sobreposição para este conteúdo"\n },\n "i18n_add_items" : {\n "message" : "Adicione itens para sua biblioteca aqui!"\n },\n "i18n_extracting" : {\n "message" : "extraindo: "\n },\n "i18n_are_you_sure" : {\n "message" : "Você tem certeza de que deseja excluir permanentemente "\n },\n "i18n_add_book_to_readium_library" : {\n "message" : "Adicionar Livro à Biblioteca Readium:"\n },\n "i18n_add_book" : {\n "message" : "Adicionar Livro"\n },\n "i18n_cancel" : {\n "message" : "Cancelar"\n },\n "i18n_from_the_web" : {\n "message" : "Da Rede:"\n },\n "i18n_from_local_file" : {\n "message" : "De Arquivo Local:"\n },\n "i18n_enter_a_url" : {\n "message" : "Insira uma URL para um arquivo .epub"\n },\n "i18n_unpacked_directory" : {\n "message" : "Diretório Extraido:"\n },\n "i18n_validate" : {\n "message" : "Validar:"\n },\n "i18n_confirm_that_this_book" : {\n "message" : "Confirmar que este livro obedece aos padrões ePUB"\n },\n "i18n_single_pages" : {\n "message" : "Pág. Simples"\n },\n "i18n_double_pages" : {\n "message" : "Pág. Duplas"\n },\n "i18n_save_settings" : {\n "message" : "Salvar Configurações"\n },\n "i18n_font_size" : {\n "message" : "TAMANHO DA FONTE"\n },\n "i18n_margins" : {\n "message" : "MARGENS"\n },\n "i18n_text_and_background_color" : {\n "message" : "COR DO TEXTO E PLANO DE FUNDO"\n },\n "i18n_black_and_white" : {\n "message" : "Preto e Branco"\n },\n "i18n_arabian_nights" : {\n "message" : "Noites Árabes"\n },\n "i18n_sands_of_dune" : {\n "message" : "Areias de Duna"\n },\n "i18n_ballard_blues" : {\n "message" : "Ballard Blues"\n },\n "i18n_vancouver_mist" : {\n "message" : "Névoa de Vancouver"\n },\n "i18n_display_format" : {\n "message" : "FORMATO DE EXIBIÇÃO"\n },\n "i18n_html_readium_tm_a_project" : {\n "message" : "Readium<sup>TM</sup>, a project of the International Digital Publishing Forum (IDPF) and supporters, is an open source reference system and rendering engine for EPUB® publications. To learn more, visit the <a href=\\"http://readium.org/\\">project homepage</a>. To date, the project development has been lead by <a href=\\"http://evidentpoint.com/\\">Evident Point</a> and <a href=\\"http://www.bluefirereader.com/\\">Bluefire Productions</a>. To contribute visit the <a href=\\"https://github.com/Treinetic/readium-js-viewer\\">github repository</a>"\n },\n "chrome_accept_languages": {\n "message": "$CHROME$ accepts $languages$ languages",\n "placeholders": {\n "chrome": {\n "content": "Chrome",\n "example": "Chrome"\n },\n "languages": {\n "content": "$1",\n "example": "en-US,pt-BR,ja,sr,de,zh_CN"\n }\n }\n }\n}\n'}),define("text!readium_js_viewer_i18n/_locales/zh_CN/messages.json",[],function(){return'{\n "chrome_extension_name": {\n "message": "Readium"\n },\n "chrome_extension_description": {\n "message": "EPUB3电子书阅览器"\n },\n "i18n_readium_library" : {\n "message" : "Readium书库"\n },\n "i18n_loading" : {\n "message" : "Loading Library"\n },\n "i18n_readium_options" : {\n "message" : "Readium选项:"\n },\n "i18n_save_changes" : {\n "message" : "保存更改"\n },\n "i18n_close" : {\n "message" : "关闭"\n },\n "i18n_paginate_all" : {\n "message" : "分页显示所有可重排版EPUB文件"\n },\n "i18n_automatically" : {\n "message" : "自动用Readium打开*.epub网址"\n },\n "i18n_show_warning" : {\n "message" : "解压缩EPUB文件时显示警告消息"\n },\n "i18n_details" : {\n "message" : "详细信息"\n },\n "i18n_read" : {\n "message" : "阅读"\n },\n "i18n_delete" : {\n "message" : "删除"\n },\n "i18n_author" : {\n "message" : "作者: "\n },\n "i18n_publisher" : {\n "message" : "出版社: "\n },\n "i18n_source" : {\n "message" : "源自: "\n },\n "i18n_pub_date" : {\n "message" : "出版日期: "\n },\n "i18n_modified_date" : {\n "message" : "更新日期: "\n },\n "i18n_id" : {\n "message" : "ID: "\n },\n "i18n_epub_version" : {\n "message" : "EPUB版本: "\n },\n "i18n_created_at" : {\n "message" : "创建日期: "\n },\n "i18n_format" : {\n "message" : "格式: "\n },\n "i18n_added" : {\n "message" : "添加: "\n },\n "i18n_unknown" : {\n "message" : "未知"\n },\n "i18n_sorry" : {\n "message" : "目前EPUB不支持此内容的媒体格式"\n },\n "i18n_add_items" : {\n "message" : "点击这里添加新书"\n },\n "i18n_extracting" : {\n "message" : "解压中: "\n },\n "i18n_are_you_sure" : {\n "message" : "确定永久删除 "\n },\n "i18n_add_book_to_readium_library" : {\n "message" : "添加新书到Readium书库:"\n },\n "i18n_add_book" : {\n "message" : "添加"\n },\n "i18n_cancel" : {\n "message" : "取消"\n },\n "i18n_from_the_web" : {\n "message" : "从网络:"\n },\n "i18n_from_local_file" : {\n "message" : "从本地文件:"\n },\n "i18n_enter_a_url" : {\n "message" : "请输入一个.EPUB文件的URL"\n },\n "i18n_unpacked_directory" : {\n "message" : "未打包目录:"\n },\n "i18n_validate" : {\n "message" : "验证:"\n },\n "i18n_confirm_that_this_book" : {\n "message" : "确认这本书是否符合EPUB标准"\n },\n "i18n_single_pages" : {\n "message" : "单页"\n },\n "i18n_double_pages" : {\n "message" : "双页"\n },\n "i18n_save_settings" : {\n "message" : "保存设置"\n },\n "i18n_font_size" : {\n "message" : "字体大小"\n },\n "i18n_margins" : {\n "message" : "页边距"\n },\n "i18n_text_and_background_color" : {\n "message" : "字体和背景颜色"\n },\n "i18n_black_and_white" : {\n "message" : "Black and White"\n },\n "i18n_arabian_nights" : {\n "message" : "Arabian Nights"\n },\n "i18n_sands_of_dune" : {\n "message" : "Sands of Dune"\n },\n "i18n_ballard_blues" : {\n "message" : "Ballard Blues"\n },\n "i18n_vancouver_mist" : {\n "message" : "Vancouver Mist"\n },\n "i18n_display_format" : {\n "message" : "显示格式"\n },\n "i18n_html_readium_tm_a_project" : {\n "message" : "Readium<sup>TM</sup>,是一个International Digital Publishing Forum (IDPF)和技术支持者们共同开发的项目,也是一个开放源代码的EPUB格式出版物的渲染引擎。要了解更多信息,请访问<a href=\\"http://readium.org/\\">项目主页</a>。迄今为止,该项目的开发一直由<a href=\\"http://evidentpoint.com/\\">Evident Point</a>和<a href=\\"http://www.bluefirereader.com/\\">Bluefire Productions</a>来领导。要贡献请访问<a href=\\"https://github.com/Treinetic/readium-js-viewer\\">GitHub资料库</a>"\n },\n "chrome_accept_languages": {\n "message": "$CHROME$ accepts $languages$ languages",\n "placeholders": {\n "chrome": {\n "content": "Chrome",\n "example": "Chrome"\n },\n "languages": {\n "content": "$1",\n "example": "en-US,ja,sr,de,zh_CN"\n }\n }\n }\n}\n'}),define("text!readium_js_viewer_i18n/_locales/zh_TW/messages.json",[],function(){return'{\n "chrome_extension_name": {\n "message": "Readium"\n },\n "chrome_extension_description": {\n "message": "EPUB3電子書閱讀器"\n },\n "i18n_readium_library" : {\n "message" : "Readium書櫃"\n },\n "i18n_loading" : {\n "message" : "Loading Library"\n },\n "i18n_readium_options" : {\n "message" : "Readium設定:"\n },\n "i18n_save_changes" : {\n "message" : "儲存變更"\n },\n "i18n_close" : {\n "message" : "關閉"\n },\n "i18n_paginate_all" : {\n "message" : "分頁呈現所有文字順走型的EPUB內容"\n },\n "i18n_automatically" : {\n "message" : "自動以Readium開啟任何以.epub結尾的網址"\n },\n "i18n_show_warning" : {\n "message" : "解壓縮EPUB檔案時顯示警告訊息"\n },\n "i18n_details" : {\n "message" : "詳細"\n },\n "i18n_read" : {\n "message" : "閱讀"\n },\n "i18n_delete" : {\n "message" : "刪除"\n },\n "i18n_author" : {\n "message" : "作者:"\n },\n "i18n_publisher" : {\n "message" : "出版社:"\n },\n "i18n_source" : {\n "message" : "來源:"\n },\n "i18n_pub_date" : {\n "message" : "出版日期:"\n },\n "i18n_modified_date" : {\n "message" : "更新日期:"\n },\n "i18n_id" : {\n "message" : "ID:"\n },\n "i18n_epub_version" : {\n "message" : "EPUB版本:"\n },\n "i18n_created_at" : {\n "message" : "建立日期:"\n },\n "i18n_format" : {\n "message" : "格式:"\n },\n "i18n_added" : {\n "message" : "加入日期:"\n },\n "i18n_unknown" : {\n "message" : "未知"\n },\n "i18n_sorry" : {\n "message" : "目前的EPUB內容並不包含朗讀聲音"\n },\n "i18n_add_items" : {\n "message" : "按下這裡加入新書"\n },\n "i18n_extracting" : {\n "message" : "解壓縮中:"\n },\n "i18n_are_you_sure" : {\n "message" : "你確定要永久刪除 "\n },\n "i18n_add_book_to_readium_library" : {\n "message" : "將書籍加入Readium書櫃:"\n },\n "i18n_add_book" : {\n "message" : "加入書籍"\n },\n "i18n_cancel" : {\n "message" : "取消"\n },\n "i18n_from_the_web" : {\n "message" : "從網站加入:"\n },\n "i18n_from_local_file" : {\n "message" : "從檔案加入:"\n },\n "i18n_enter_a_url" : {\n "message" : "請輸入 .epub 檔案所在網址"\n },\n "i18n_unpacked_directory" : {\n "message" : "未壓縮目錄:"\n },\n "i18n_validate" : {\n "message" : "檢證:"\n },\n "i18n_confirm_that_this_book" : {\n "message" : "確認這本書是否符合EPUB標準"\n },\n "i18n_single_pages" : {\n "message" : "單頁呈現"\n },\n "i18n_double_pages" : {\n "message" : "跨頁呈現"\n },\n "i18n_save_settings" : {\n "message" : "儲存設定"\n },\n "i18n_font_size" : {\n "message" : "文字尺寸"\n },\n "i18n_margins" : {\n "message" : "頁緣餘白"\n },\n "i18n_text_and_background_color" : {\n "message" : "文字與背景色彩"\n },\n "i18n_black_and_white" : {\n "message" : "黑底與白字"\n },\n "i18n_arabian_nights" : {\n "message" : "阿拉伯之夜"\n },\n "i18n_sands_of_dune" : {\n "message" : "砂丘之黃砂"\n },\n "i18n_ballard_blues" : {\n "message" : "抒情曲藍調"\n },\n "i18n_vancouver_mist" : {\n "message" : "溫哥華之霧"\n },\n "i18n_display_format" : {\n "message" : "顯示格式"\n },\n "i18n_html_readium_tm_a_project" : {\n "message" : "Readium<sup>TM</sup>是由是International Digital Publishing Forum (IDPF)與技術協助者們共同開發的專案,是供EPUB® 出版品使用的開放原始碼參考系統與排版引擎。要了解更多訊息,請前往<a href=\\"http://readium.org/\\">專案網頁</a>。迄今為止,本專案持續由<a href=\\"http://evidentpoint.com/\\">Evident Point</a>和<a href=\\"http://www.bluefirereader.com/\\">Bluefire Productions</a>所主導。若想協助開發,請前往<a href=\\"https://github.com/Treinetic/readium-js-viewer\\">GitHub專案</a>"\n },\n "chrome_accept_languages": {\n "message": "$CHROME$ accepts $languages$ languages",\n "placeholders": {\n "chrome": {\n "content": "Chrome",\n "example": "Chrome"\n },\n "languages": {\n "content": "$1",\n "example": "en-US,zh-TW,zh-HK,ja,sr,de"\n }\n }\n }\n}\n'}),define("i18nStrings",["text!readium_js_viewer_i18n/_locales/de/messages.json","text!readium_js_viewer_i18n/_locales/es/messages.json","text!readium_js_viewer_i18n/_locales/en_US/messages.json","text!readium_js_viewer_i18n/_locales/fr/messages.json","text!readium_js_viewer_i18n/_locales/it/messages.json","text!readium_js_viewer_i18n/_locales/id/messages.json","text!readium_js_viewer_i18n/_locales/ja/messages.json","text!readium_js_viewer_i18n/_locales/ko/messages.json","text!readium_js_viewer_i18n/_locales/pt_BR/messages.json","text!readium_js_viewer_i18n/_locales/zh_CN/messages.json","text!readium_js_viewer_i18n/_locales/zh_TW/messages.json"],function(de,es,en_US,fr,it,id,ja,ko,pt_BR,zh_CN,zh_TW){var Strings={};Strings.de=de,Strings.es=es,Strings.en_US=en_US,Strings.fr=fr,Strings.id=id,Strings.it=it,Strings.ja=ja,Strings.ko=ko,Strings.pt_BR=pt_BR,Strings.zh_CN=zh_CN,Strings.zh_TW=zh_TW;var language=navigator.userLanguage||navigator.language;console.log("Language: ["+language+"]");var i18nStr=Strings[language]||en_US,i18nObj=JSON.parse(i18nStr),i18nObj_en=i18nStr===en_US?i18nObj:JSON.parse(en_US);for(var prop in i18nObj_en){var okay=prop in i18nObj;okay||console.log("Language ["+language+"], missing string: ["+prop+"]"),i18nObj[prop]=okay?i18nObj[prop].message:"*"+i18nObj_en[prop].message}return i18nObj}),define("hgn!readium_js_viewer_html_templates/managed-dialog.html",["hogan"],function(hogan){var tmpl=new hogan.Template({code:function(c,p,i){var t=this;return t.b(i=i||""),t.b('<div class="modal fade" id="managed-dialog" tabindex="-1" role="dialog" aria-labelledby="managed-label">'),t.b("\n"+i),t.b(' <div class="modal-dialog">'),t.b("\n"+i),t.b(' <div class="modal-content">'),t.b("\n"+i),t.b(' <div class="modal-header">'),t.b("\n"+i),t.b(' <button type="button" class="close" data-dismiss="modal" aria-label="close" title="close"><span aria-hidden="true">×<span></button>'),t.b("\n"+i),t.b(' <h4 class="modal-title" id="managed-label"></h4>'),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(' <div class="modal-body">'),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(' <div class="modal-footer">'),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b(" \x3c!-- /.modal-content --\x3e "),t.b("\n"+i),t.b(" </div>\x3c!-- /.modal-dialog --\x3e"),t.b("\n"+i),t.b("</div>"),t.b("\n"+i),t.b("\x3c!-- /.modal --\x3e"),t.fl()},partials:{},subs:{}},"",hogan);function render(){return tmpl.render.apply(tmpl,arguments)}return render.template=tmpl,render}),define("hgn!readium_js_viewer_html_templates/progress-dialog.html",["hogan"],function(hogan){var tmpl=new hogan.Template({code:function(c,p,i){var t=this;return t.b(i=i||""),t.b('<div class="progress progress-striped active">'),t.b("\n"+i),t.b(' <div class="progress-bar" role="progressbar" aria-valuenow="1" aria-valuemin="1" aria-valuemax="100" style="width: 1%">'),t.b("\n"+i),t.b(' \x3c!-- <span class="progress-message sr-only">'),t.b(t.v(t.f("message",c,p,0))),t.b("</span> --\x3e"),t.b("\n"+i),t.b(" </div>"),t.b("\n"+i),t.b("</div>"),t.b("\n"+i),t.b('<div class="progress-message">'),t.b(t.v(t.f("message",c,p,0))),t.b("</div>"),t.b("\n"),t.fl()},partials:{},subs:{}},"",hogan);function render(){return tmpl.render.apply(tmpl,arguments)}return render.template=tmpl,render}),define("hgn!readium_js_viewer_html_templates/managed-buttons.html",["hogan"],function(hogan){var tmpl=new hogan.Template({code:function(c,p,i){var t=this;return t.b(i=i||""),t.s(t.f("buttons",c,p,1),c,p,0,12,155,"{{ }}")&&(t.rs(c,p,function(c,p,t){t.b('<button type="button" class="btn btn-default '),t.s(t.f("classes",c,p,1),c,p,0,70,76,"{{ }}")&&(t.rs(c,p,function(c,p,t){t.b(t.v(t.d(".",c,p,0))),t.b(" ")}),c.pop()),t.b('" '),t.s(t.f("dismiss",c,p,1),c,p,0,102,124,"{{ }}")&&(t.rs(c,p,function(c,p,t){t.b(' data-dismiss="modal" ')}),c.pop()),t.b(">"),t.b(t.v(t.f("text",c,p,0))),t.b("</button>"),t.b("\n"+i)}),c.pop()),t.fl()},partials:{},subs:{}},"",hogan);function render(){return tmpl.render.apply(tmpl,arguments)}return render.template=tmpl,render}),define("readium_js_viewer/workers/Messages",[],function(){return{IMPORT_ZIP:0,OVERWRITE_CONTINUE:1,FIND_PACKAGE_RESPONSE:2,PARSE_PACKAGE_RESPONSE:3,DELETE_EPUB:4,IMPORT_DIR:5,IMPORT_URL:6,MIGRATE:7,OVERWRITE_SIDE_BY_SIDE:8,CONTINUE_IMPORT_ZIP:9,SUCCESS:100,PROGRESS:101,ERROR:102,OVERWRITE:103,FIND_PACKAGE:104,PARSE_PACKAGE:105,PROGRESS_EXTRACTING:200,PROGRESS_WRITING:201,PROGRESS_DELETING:202,PROGRESS_MIGRATING:203,ERROR_STORAGE:300,ERROR_EPUB:301,ERROR_AJAX:302,ERROR_PACKAGE_PARSE:303,READY:400}}),define("readium_js_viewer/Dialogs",["hgn!readium_js_viewer_html_templates/managed-dialog.html","hgn!readium_js_viewer_html_templates/progress-dialog.html","hgn!readium_js_viewer_html_templates/managed-buttons.html","i18nStrings","./workers/Messages"],function(ManagedDialog,ProgressDialog,ButtonTemplate,Strings,Messages){var $currentModal,showModalDialog=function(dismissable,title,body,buttons){$currentModal||($currentModal=$(ManagedDialog({})),$("#app-container").append($currentModal)),$("#managed-label").text(title),$("#managed-dialog .modal-body").empty().append(body),$("#managed-dialog .modal-footer").empty().append(buttons),dismissable?$("#managed-dialog .close").show():$("#managed-dialog .close").hide(),$currentModal.is(":hidden")&&(dismissable?$("#managed-dialog").modal({backdrop:!0,keyboard:!0,show:!0}):$("#managed-dialog").modal({backdrop:"static",keyboard:!1,show:!0}))};return Dialogs={showError:function(type,data){var msg=Strings.err_unknown;switch(type){case Messages.ERROR_PACKAGE_PARSE:return void Dialogs.showErrorWithDetails(Strings.err_epub_corrupt,data);case Messages.ERROR_STORAGE:msg=Strings.err_storage;break;case Messages.ERROR_EPUB:msg=Strings.err_epub_corrupt;break;case Messages.ERROR_AJAX:msg=Strings.err_ajax;break;default:msg=Strings.err_unknown,console.trace()}Dialogs.showModalMessage(Strings.err_dlg_title,msg)},showErrorWithDetails:function(title,details){var body=$("<pre></pre>").text(details||"Unknown Error"),buttons=ButtonTemplate({buttons:[{dismiss:!0,text:Strings.ok}]});showModalDialog(!0,title,body,buttons)},showModalMessage:function(title,message){var body=$("<p></p>").text(message),buttons=ButtonTemplate({buttons:[{dismiss:!0,text:Strings.ok}]});showModalDialog(!0,title,body,buttons)},showModalHTML:function(title,html){var body=$(html),buttons=ButtonTemplate({buttons:[{dismiss:!0,text:Strings.ok}]});showModalDialog(!0,title,body,buttons)},showModalMessageEx:function(title,body){var buttons=ButtonTemplate({buttons:[{dismiss:!0,text:Strings.ok}]});showModalDialog(!0,title,body,buttons)},showModalPromptEx:function(title,message,buttons,handlers){var body=$("<p></p>").text(message),buttonsStr=ButtonTemplate({buttons:buttons});showModalDialog(!1,title,body,buttonsStr);for(var i=0;i<handlers.length;i++)handlers[i]&&$("#managed-dialog ."+buttons[i].classes[0]).on("click",handlers[i])},showModalPrompt:function(title,message,okLabel,cancelLabel,onOk,onCancel){var buttons=[{dismiss:!0,text:cancelLabel,classes:["no-button"]},{dismiss:!0,text:okLabel,classes:["yes-button","btn-primary"]}];handlers=[onCancel,onOk],Dialogs.showModalPromptEx(title,message,buttons,handlers)},showReplaceConfirm:function(title,message,okLabel,cancelLabel,keepBothLabel,onOk,onCancel,onKeepBoth){var buttons=[{dismiss:!0,text:cancelLabel,classes:["no-button"]},{dismiss:!0,text:okLabel,classes:["yes-button","btn-danger"]},{dismiss:!0,text:keepBothLabel,classes:["keep-both-button","btn-primary"]}];handlers=[onCancel,onOk,onKeepBoth],Dialogs.showModalPromptEx(title,message,buttons,handlers)},showModalProgress:function(title,message,onCancel){var data={message:message};title;var buttons=ButtonTemplate({buttons:[{text:Strings.i18n_cancel,classes:["cancel-button","btn-primary"]}]});showModalDialog(!1,title,ProgressDialog(data),onCancel?buttons:""),onCancel&&$("#managed-dialog .cancel-button").on("click",onCancel)},updateModalProgressTitle:function(title){$("#managed-label").text(title)},updateProgress:function(percent,type,data,noForce){var msg="";switch(type){case Messages.PROGRESS_MIGRATING:msg=Strings.migrating+" "+data;break;case Messages.PROGRESS_EXTRACTING:msg=Strings.i18n_extracting+" "+data;break;case Messages.PROGRESS_WRITING:msg=Strings.storing_file+" "+data;break;case Messages.PROGRESS_DELETING:msg=Strings.delete_progress_message+" "+data}$("#managed-dialog .progress-bar").attr("aria-valuenow",percent).css("width",percent+"%"),$("#managed-dialog .progress-message").text(msg)},closeModal:function(){$currentModal&&$currentModal.modal("hide")},reset:function(){$currentModal&&($currentModal.remove(),$currentModal=null)}},Dialogs}),function(global){var k,_handlers={},_mods={16:!1,18:!1,17:!1,91:!1},_scope="all",_MODIFIERS={"⇧":16,shift:16,"⌥":18,alt:18,option:18,"⌃":17,ctrl:17,control:17,"⌘":91,command:91},_MAP={backspace:8,tab:9,clear:12,enter:13,return:13,esc:27,escape:27,space:32,left:37,up:38,right:39,down:40,del:46,delete:46,home:36,end:35,pageup:33,pagedown:34,",":188,".":190,"/":191,"`":192,"-":189,"=":187,";":186,"'":222,"[":219,"]":221,"\\":220},code=function(x){return x.toUpperCase?_MAP[x]||x.toUpperCase().charCodeAt(0):x},_downKeys=[];for(k=1;k<20;k++)_MAP["f"+k]=111+k;function index(array,item){for(var i=array.length;i--;)if(array[i]===item)return i;return-1}function compareArray(a1,a2){if(a1.length!=a2.length)return!1;for(var i=0;i<a1.length;i++)if(a1[i]!==a2[i])return!1;return!0}var modifierMap={16:"shiftKey",18:"altKey",17:"ctrlKey",91:"metaKey"};function updateModifierKey(event){for(k in _mods)_mods[k]=event[modifierMap[k]]}function getKeyCode(event){return event.keyCode||event.charCode||event.which||event.key||0}function assignKey(key,scope,method){var keys,mods;keys=getKeys(key),void 0===method&&(method=scope,scope="all");for(var i=0;i<keys.length;i++)mods=[],(key=keys[i].split("+")).length>1&&(mods=getMods(key),key=[key[key.length-1]]),key=key[0],(key=code(key))in _handlers||(_handlers[key]=[]),_handlers[key].push({shortcut:keys[i],scope:scope,method:method,key:keys[i],mods:mods})}for(k in _MODIFIERS)assignKey[k]=!1;function getScope(){return _scope||"all"}function getKeys(key){var keys;return""==(keys=(key=key.replace(/\s/g,"")).split(","))[keys.length-1]&&(keys[keys.length-2]+=","),keys}function getMods(key){for(var mods=key.slice(0,key.length-1),mi=0;mi<mods.length;mi++)mods[mi]=_MODIFIERS[mods[mi]];return mods}function addEvent(object,event,method){object.addEventListener?object.addEventListener(event,method,!1):object.attachEvent&&object.attachEvent("on"+event,function(){method(window.event)})}addEvent(document,"keydown",function(event){!function(event){var key,handler,k,i,modifiersMatch,scope;if(key=getKeyCode(event),-1==index(_downKeys,key)&&_downKeys.push(key),93!=key&&224!=key||(key=91),key in _mods)for(k in _mods[key]=!0,_MODIFIERS)_MODIFIERS[k]==key&&(assignKey[k]=!0);else if(updateModifierKey(event),assignKey.filter.call(this,event)&&key in _handlers)for(scope=getScope(),i=0;i<_handlers[key].length;i++)if((handler=_handlers[key][i]).scope==scope||"all"==handler.scope){for(k in modifiersMatch=handler.mods.length>0,_mods)(!_mods[k]&&index(handler.mods,+k)>-1||_mods[k]&&-1==index(handler.mods,+k))&&(modifiersMatch=!1);(0!=handler.mods.length||_mods[16]||_mods[18]||_mods[17]||_mods[91])&&!modifiersMatch||!1===handler.method(event,handler)&&(event.preventDefault?event.preventDefault():event.returnValue=!1,event.stopPropagation&&event.stopPropagation(),event.cancelBubble&&(event.cancelBubble=!0))}}(event)}),addEvent(document,"keyup",function(event){var k,key=getKeyCode(event),i=index(_downKeys,key);if(i>=0&&_downKeys.splice(i,1),93!=key&&224!=key||(key=91),key in _mods)for(k in _mods[key]=!1,_MODIFIERS)_MODIFIERS[k]==key&&(assignKey[k]=!1)}),addEvent(window,"focus",function(){for(k in _mods)_mods[k]=!1;for(k in _MODIFIERS)assignKey[k]=!1});var previousKey=global.key;global.key=assignKey,global.key.setScope=function(scope){_scope=scope||"all"},global.key.getScope=getScope,global.key.deleteScope=function(scope){var key,handlers,i;for(key in _handlers)for(handlers=_handlers[key],i=0;i<handlers.length;)handlers[i].scope===scope?handlers.splice(i,1):i++},global.key.filter=function(event){var tagName=(event.target||event.srcElement).tagName;return!("INPUT"==tagName||"SELECT"==tagName||"TEXTAREA"==tagName)},global.key.isPressed=function(keyCode){return"string"==typeof keyCode&&(keyCode=code(keyCode)),-1!=index(_downKeys,keyCode)},global.key.getPressedKeyCodes=function(){return _downKeys.slice(0)},global.key.noConflict=function(){var k=global.key;return global.key=previousKey,k},global.key.unbind=function(key,scope){var multipleKeys,keys,i,j,obj,mods=[];for(multipleKeys=getKeys(key),j=0;j<multipleKeys.length;j++){if((keys=multipleKeys[j].split("+")).length>1&&(mods=getMods(keys)),key=keys[keys.length-1],key=code(key),void 0===scope&&(scope=getScope()),!_handlers[key])return;for(i=0;i<_handlers[key].length;i++)(obj=_handlers[key][i]).scope===scope&&compareArray(obj.mods,mods)&&(_handlers[key][i]={})}},"undefined"!=typeof module&&(module.exports=assignKey)}(this),define("keymaster",function(global){return function(){return global.key}}(this)),define("readium_js_viewer/Keyboard",["i18nStrings","keymaster","Settings"],function(Strings,key,Settings){var keyBindings={};(function(){var global=this,_initKeyboardEvent_type=function(e){try{return e.initKeyboardEvent("keyup",!1,!1,global,"+",3,!0,!1,!0,!1,!1),"+"==(e.keyIdentifier||e.key)&&3==(e.keyLocation||e.location)&&(e.ctrlKey?e.altKey?1:3:e.shiftKey?2:4)||9}catch(__e__){_initKeyboardEvent_type=0}}(document.createEvent("KeyboardEvent")),_keyboardEvent_properties_dictionary={char:"",key:"",location:0,ctrlKey:!1,shiftKey:!1,altKey:!1,metaKey:!1,repeat:!1,locale:"",detail:0,bubbles:!1,cancelable:!1,keyCode:0,charCode:0,which:0},own=Function.prototype.call.bind(Object.prototype.hasOwnProperty),_Object_defineProperty=Object.defineProperty||function(obj,prop,val){"value"in val&&(obj[prop]=val.value)};global.crossBrowser_initKeyboardEvent=function(type,dict){var e;e=_initKeyboardEvent_type?document.createEvent("KeyboardEvent"):document.createEvent("Event");var _prop_name,localDict={};for(_prop_name in _keyboardEvent_properties_dictionary)own(_keyboardEvent_properties_dictionary,_prop_name)&&(localDict[_prop_name]=(own(dict,_prop_name)&&dict||_keyboardEvent_properties_dictionary)[_prop_name]);var _ctrlKey=localDict.ctrlKey,_shiftKey=localDict.shiftKey,_altKey=localDict.altKey,_metaKey=localDict.metaKey,_altGraphKey=localDict.altGraphKey,_modifiersListArg=_initKeyboardEvent_type>3?((_ctrlKey?"Control":"")+(_shiftKey?" Shift":"")+(_altKey?" Alt":"")+(_metaKey?" Meta":"")+(_altGraphKey?" AltGraph":"")).trim():null,_key=localDict.key+"",_char=localDict.char+"",_location=localDict.location,_keyCode=localDict.keyCode||(localDict.keyCode=_key&&_key.charCodeAt(0)||0),_charCode=localDict.charCode||(localDict.charCode=_char&&_char.charCodeAt(0)||0),_bubbles=localDict.bubbles,_cancelable=localDict.cancelable,_repeat=localDict.repeat,_locale=localDict.locale,_view=global;for(_prop_name in localDict.which||(localDict.which=localDict.keyCode),"initKeyEvent"in e?e.initKeyEvent(type,_bubbles,_cancelable,_view,_ctrlKey,_altKey,_shiftKey,_metaKey,_keyCode,_charCode):_initKeyboardEvent_type&&"initKeyboardEvent"in e?1==_initKeyboardEvent_type?e.initKeyboardEvent(type,_bubbles,_cancelable,_view,_key,_location,_ctrlKey,_shiftKey,_altKey,_metaKey,_altGraphKey):2==_initKeyboardEvent_type?e.initKeyboardEvent(type,_bubbles,_cancelable,_view,_ctrlKey,_altKey,_shiftKey,_metaKey,_keyCode,_charCode):3==_initKeyboardEvent_type?e.initKeyboardEvent(type,_bubbles,_cancelable,_view,_key,_location,_ctrlKey,_altKey,_shiftKey,_metaKey,_altGraphKey):4==_initKeyboardEvent_type?e.initKeyboardEvent(type,_bubbles,_cancelable,_view,_key,_location,_modifiersListArg,_repeat,_locale):e.initKeyboardEvent(type,_bubbles,_cancelable,_view,_char,_key,_location,_modifiersListArg,_repeat,_locale):e.initEvent(type,_bubbles,_cancelable),_keyboardEvent_properties_dictionary)if(own(_keyboardEvent_properties_dictionary,_prop_name)&&e[_prop_name]!=localDict[_prop_name])try{delete e[_prop_name],_Object_defineProperty(e,_prop_name,{writable:!0,value:localDict[_prop_name]})}catch(ex){}return e}}).call(window),Keyboard={resetToDefaults:function(){for(prop in Keyboard.defaultOptions)Keyboard.defaultOptions.hasOwnProperty(prop)&&"string"==typeof Keyboard.defaultOptions[prop]&&(Keyboard[prop]=Keyboard.defaultOptions[prop])},resetAccessKeys:function(){var extractAccessKey=function(keyboardShortcut){if(!keyboardShortcut||!keyboardShortcut.length)return"";var char=keyboardShortcut[keyboardShortcut.length-1];return/^[a-z0-9]+$/i.test(char)?char:""};for(prop in Keyboard.accesskeys={},Keyboard)if(Keyboard.hasOwnProperty(prop)){var str=Keyboard[prop];"string"==typeof str&&(Keyboard.accesskeys[prop]=extractAccessKey(str))}},applySettings:function(json){if(this.resetToDefaults(),json&&json.keyboard)for(prop in Keyboard)Keyboard.hasOwnProperty(prop)&&"string"==typeof Keyboard[prop]&&"string"==typeof json.keyboard[prop]&&(Keyboard[prop]=json.keyboard[prop]);this.resetAccessKeys()},dispatch:function(target,e){if(!e.cancelBubble&&!e.defaultPrevented&&(void 0===e.returnValue||e.returnValue)){var source=e.srcElement||e.target;if(source)for(var parent=source;parent;){var name=parent.nodeName;if("input"===name||"textarea"===name)return;if(parent.getAttribute){var ce=parent.getAttribute("contenteditable");if("true"===ce||"contenteditable"===ce)return}if(parent.classList&&parent.classList.contains("keyboard-input"))return;parent=parent.parentNode}var ev=crossBrowser_initKeyboardEvent(e.type,{bubbles:!0,cancelable:!1,keyCode:e.keyCode,charCode:e.charCode,which:e.which,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,metaKey:e.metaKey,char:e.char?e.char:String.fromCharCode(e.charCode),key:e.key?e.key:e.keyCode});target.dispatchEvent(ev)}},scope:function(scope){scope||alert("!SCOPE ACTIVATE!"),key.setScope(scope)},on:function(keys,scope,callback){keys||console.error("!KEYS!"),keyBindings.hasOwnProperty(scope)||(keyBindings[scope]=[]),keyBindings[scope].push(keys),key.unbind(keys,scope),key(keys,scope,function(){$(document.body).addClass("keyboard"),callback()})},off:function(scope){if(scope||alert("!SCOPE OFF!"),keyBindings.hasOwnProperty(scope))for(k in keyBindings[scope])key.unbind(k,scope)},i18n:{ShowSettingsModal:Strings.settings,SettingsModalSave:Strings.settings+" - "+Strings.i18n_save_changes,SettingsModalClose:Strings.settings+" - "+Strings.i18n_close,PagePrevious:Strings.i18n_page_previous,PageNext:Strings.i18n_page_next,PagePreviousAlt:Strings.i18n_page_previous+" (access key)",PageNextAlt:Strings.i18n_page_next+" (access key)",ToolbarShow:Strings.i18n_toolbar_show,ToolbarHide:Strings.i18n_toolbar_hide,FullScreenToggle:Strings.enter_fullscreen+" / "+Strings.exit_fullscreen,SwitchToLibrary:Strings.view_library,TocShowHideToggle:Strings.toc,NightTheme:Strings.i18n_arabian_nights,MediaOverlaysPlayPause:Strings.i18n_audio_play+" / "+Strings.i18n_audio_pause,MediaOverlaysPrevious:Strings.i18n_audio_previous,MediaOverlaysNext:Strings.i18n_audio_next,MediaOverlaysEscape:Strings.i18n_audio_esc,MediaOverlaysRateIncrease:Strings.i18n_audio_rate_increase,MediaOverlaysRateDecrease:Strings.i18n_audio_rate_decrease,MediaOverlaysRateReset:Strings.i18n_audio_rate_reset,MediaOverlaysVolumeIncrease:Strings.i18n_audio_volume_increase,MediaOverlaysVolumeDecrease:Strings.i18n_audio_volume_decrease,MediaOverlaysVolumeMuteToggle:Strings.i18n_audio_mute+" / "+Strings.i18n_audio_unmute,MediaOverlaysAdvancedPanelShowHide:Strings.i18n_audio_expand,BackgroundAudioPlayPause:Strings.i18n_audio_play_background+" / "+Strings.i18n_audio_pause_background},defaultOptions:{},accesskeys:{},ShowSettingsModal:"o",SettingsModalSave:"s",SettingsModalClose:"c",PagePrevious:"left",PageNext:"right",PagePreviousAlt:"1",PageNextAlt:"2",ToolbarShow:"v",ToolbarHide:"x",FullScreenToggle:"h",SwitchToLibrary:"b",TocShowHideToggle:"t",NightTheme:"n",MediaOverlaysEscape:"r",MediaOverlaysPlayPause:"m",MediaOverlaysRateIncrease:"l",MediaOverlaysRateDecrease:"j",MediaOverlaysRateReset:"k",MediaOverlaysVolumeIncrease:"w",MediaOverlaysVolumeDecrease:"q",MediaOverlaysVolumeMuteToggle:"a",MediaOverlaysPrevious:"y",MediaOverlaysNext:"u",MediaOverlaysAdvancedPanelShowHide:"g",BackgroundAudioPlayPause:"d"};try{for(prop in Keyboard.defaultOptions={},Keyboard)Keyboard.hasOwnProperty(prop)&&"string"==typeof Keyboard[prop]&&(Keyboard.defaultOptions[prop]=Keyboard[prop]);Keyboard.resetAccessKeys()}catch(e){console.error(e)}return Keyboard}),define("readium_js_viewer/ReaderSettingsDialog_Keyboard",["hgn!readium_js_viewer_html_templates/settings-keyboard-item.html","i18nStrings","./Dialogs","Settings","./Keyboard","underscore"],function(KeyboardItem,Strings,Dialogs,Settings,Keyboard,_){var checkKeyboardShortcuts=function($focusedInput,typing){var duplicate=!1,invalid=!1,$keyboardList=$("#keyboard-list"),wasAlert=$keyboardList.hasClass("atLeastOneInvalidOrDuplicateShortcut");$keyboardList.removeClass("atLeastOneInvalidOrDuplicateShortcut");var alertInvalidKeyboard=$("#invalid_keyboard_shortcut_ALERT")[0];for(alertInvalidKeyboard.removeAttribute("role"),alertInvalidKeyboard.removeAttribute("aria-live"),alertInvalidKeyboard.removeAttribute("aria-atomic");alertInvalidKeyboard.firstChild;)alertInvalidKeyboard.removeChild(alertInvalidKeyboard.firstChild);var focusedInputIsInvalid=!1,$inputs=$(".keyboardInput");$inputs.each(function(){var $that=$(this);$that.parent().removeClass("duplicateShortcut"),$that[0].removeAttribute("aria-invalid"),checkKeyboardShortcut($that,typing),$that.parent().hasClass("invalidShortcut")&&($that[0].setAttribute("aria-invalid","true"),invalid=!0,$focusedInput&&$focusedInput.length&&$focusedInput[0]===$that[0]&&(focusedInputIsInvalid=!0))});for(var focusedInputIsDuplicate=!1,i=0;i<2;i++)$inputs.each(function(){var $that=$(this),thatInvalid=$that.parent().hasClass("invalidShortcut"),thatDuplicate=$that.parent().hasClass("duplicateShortcut"),thatOriginal=$that.attr("placeholder"),thatVal=thatInvalid||thatDuplicate?thatOriginal:$that.attr("data-val");if(thatDuplicate)return!0;$inputs.each(function(){var $self=$(this);if($self[0]===$that[0])return!0;var selfOriginal=$self.attr("placeholder"),selfInvalid=$self.parent().hasClass("invalidShortcut"),selfDuplicate=$self.parent().hasClass("duplicateShortcut"),selfVal=selfInvalid||selfDuplicate?selfOriginal:$self.attr("data-val");thatVal===selfVal&&(duplicate=!0,$focusedInput&&$focusedInput.length&&($focusedInput[0]===$that[0]||$focusedInput[0]===$self[0])&&(focusedInputIsDuplicate=!0),$that[0].setAttribute("aria-invalid","true"),$self[0].setAttribute("aria-invalid","true"),$self.parent().hasClass("duplicateShortcut")||$self.parent().addClass("duplicateShortcut"),$that.parent().hasClass("duplicateShortcut")||$that.parent().addClass("duplicateShortcut"))})});if((duplicate||invalid)&&($keyboardList.addClass("atLeastOneInvalidOrDuplicateShortcut"),focusedInputIsInvalid||focusedInputIsDuplicate)){wasAlert?alertInvalidKeyboard.setAttribute("aria-live","polite"):alertInvalidKeyboard.setAttribute("role","alert"),alertInvalidKeyboard.setAttribute("aria-atomic","true");var txt=document.createTextNode(focusedInputIsInvalid?Strings.i18n_invalid_keyboard_shortcut:Strings.i18n_duplicate_keyboard_shortcut);alertInvalidKeyboard.appendChild(txt),alertInvalidKeyboard.style.visibility="hidden",alertInvalidKeyboard.style.visibility="visible"}},checkKeyboardShortcut=function($input,typing){$input.parent().removeClass("invalidShortcut"),$input.attr("data-val",$input.val());var current=$input.val().toLowerCase().trim(),shift=!1,ctrl=!1,alt=!1;current.indexOf("shift")>=0&&(shift=!0),current.indexOf("ctrl")>=0&&(ctrl=!0),current.indexOf("alt")>=0&&(alt=!0);var hasPlus=current.lastIndexOf("+")===current.length-1;if(current=(current=(current=(current=(current=(current=current.replace(/shift/g,"")).replace(/ctrl/g,"")).replace(/alt/g,"")).replace(/\+/g,"")).replace(/\s/g,"")).trim(),hasPlus&&(current+="+"),current.match(/^[0-9A-Za-z]$/)||current.match(/^backspace$/)||current.match(/^space$/)||current.match(/^return$/)||current.match(/^enter$/)||current.match(/^left$/)||current.match(/^right$/)||current.match(/^up$/)||current.match(/^down$/)){var normalised=(shift?"shift + ":"")+(ctrl?"ctrl + ":"")+(alt?"alt + ":"")+current;$input.attr("data-val",normalised),typing||$input.val(normalised)}else $input.parent().addClass("invalidShortcut")};return{initKeyboardList:function(){var $keyboardList=$("#keyboard-list");for(prop in $keyboardList.empty(),$keyboardList.append(KeyboardItem({strings:Strings,id:"TOP"})),Keyboard)Keyboard.hasOwnProperty(prop)&&"string"==typeof Keyboard[prop]&&$keyboardList.append(KeyboardItem({strings:Strings,keyboard:Keyboard,name:prop,shortcut:Keyboard[prop],i18n:Keyboard.i18n[prop],def:Keyboard.defaultOptions[prop]}));$keyboardList.append(KeyboardItem({strings:Strings,id:"BOTTOM"})),checkKeyboardShortcuts();var _previousInputVal=void 0;$(".keyboardInput").on("blur",function(e){$(this),_previousInputVal=void 0,checkKeyboardShortcuts()}),$(".keyboardInput").on("focus",function(e){var $that=$(this);checkKeyboardShortcuts($that,!0)});var debouncedKeyboardValidator=_.bind(_.debounce(checkKeyboardShortcuts,700),this);$(".keyboardInput").on("keyup",function(){var $that=$(this),val=$that.val();val!==_previousInputVal&&debouncedKeyboardValidator($that,!0),_previousInputVal=val}),$(".resetKey").on("click",function(){$that=$(this);var id=$that.attr("data-key");id?$("input#"+id).val(Keyboard.defaultOptions[id]):$(".resetKey[data-key]").each(function(){var id=$(this).attr("data-key");id&&$("input#"+id).val(Keyboard.defaultOptions[id])}),checkKeyboardShortcuts()})},saveKeys:function(){var atLeastOneChanged=!1,atLeastOneInvalidOrDuplicate=!1,keys={};if(checkKeyboardShortcuts(),$(".keyboardInput").each(function(){var $that=$(this),original=$that.attr("placeholder"),id=$that.attr("id"),val=$that.attr("data-val");if(($that.parent().hasClass("invalidShortcut")||$that.parent().hasClass("duplicateShortcut"))&&(val=original,atLeastOneInvalidOrDuplicate=!0),!val.length)return!0;original!==(val=val.toLowerCase())&&(atLeastOneChanged=!0),val!==Keyboard.defaultOptions[id]&&(keys[id]=val)}),atLeastOneChanged||atLeastOneInvalidOrDuplicate){var body="";atLeastOneChanged&&(body="<p>"+Strings.i18n_keyboard_reload+"</p>"),atLeastOneInvalidOrDuplicate&&(body+="<p>"+Strings.i18n_keyboard_onerror_reset+"</p>"),Dialogs.showModalMessageEx("Readium - "+Strings.i18n_keyboard_shortcuts,body)}return keys}}}),define("readium_js_viewer/ReaderSettingsDialog",["./ModuleConfig","hgn!readium_js_viewer_html_templates/settings-dialog.html","./ReaderSettingsDialog_Keyboard","i18nStrings","./Dialogs","Settings","./Keyboard"],function(moduleConfig,SettingsDialog,KeyboardSettings,Strings,Dialogs,Settings,Keyboard){var defaultSettings={fontSize:100,fontSelection:0,syntheticSpread:"auto",scroll:"auto",columnGap:60,columnMaxWidth:550,columnMinWidth:400},setPreviewTheme=function($previewText,newTheme){var previewTheme=$previewText.attr("data-theme");$previewText.removeClass(previewTheme),$previewText.addClass(newTheme),$previewText.attr("data-theme",newTheme)},updateReader=function(reader,readerSettings){if(reader.updateSettings(readerSettings),readerSettings.theme){$("html").attr("data-theme",readerSettings.theme);var bookStyles=function(theme){var isAuthorTheme="author-theme"===theme,$previewText=$(".preview-text");setPreviewTheme($previewText,theme);var previewStyle=window.getComputedStyle($previewText[0]);return[{selector:":not(a):not(hypothesis-highlight)",declarations:{backgroundColor:isAuthorTheme?"":previewStyle.backgroundColor,color:isAuthorTheme?"":previewStyle.color}},{selector:"a",declarations:{backgroundColor:isAuthorTheme?"":previewStyle.color,color:isAuthorTheme?"":previewStyle.backgroundColor}}]}(readerSettings.theme);reader.setBookStyles(bookStyles),$("#reading-area").css(bookStyles[0].declarations)}},updateSliderLabels=function($slider,val,txt,label){$slider.attr("aria-valuenow",val+""),$slider.attr("aria-value-now",val+""),$slider.attr("aria-valuetext",txt+""),$slider.attr("aria-value-text",txt+""),$slider.attr("title",label+" "+txt),$slider.attr("aria-label",label+" "+txt)};return{initDialog:function(reader){$("#app-container").append(SettingsDialog({imagePathPrefix:moduleConfig.imagePathPrefix,strings:Strings,dialogs:Dialogs,keyboard:Keyboard})),$previewText=$(".preview-text"),$(".theme-option").on("click",function(){var newTheme=$(this).attr("data-theme");setPreviewTheme($previewText,newTheme)});var $marginSlider=$("#margin-size-input");$marginSlider.on("change",function(){var val=$marginSlider.val();updateSliderLabels($marginSlider,val,val+"px",Strings.i18n_margins)});var $columnMaxWidthSlider=$("#column-max-width-input");$columnMaxWidthSlider.on("change",function(){var val=$columnMaxWidthSlider.val(),columnMaxWidth_text=val>=Number($columnMaxWidthSlider.attr("max"))?Strings.i18n_pageMaxWidth_Disabled:val+"px";updateSliderLabels($columnMaxWidthSlider,val,columnMaxWidth_text,Strings.i18n_pageMaxWidth)});var $fontSizeSlider=$("#font-size-input");$fontSizeSlider.on("change",function(){var fontSize=$fontSizeSlider.val();$previewText.css({fontSize:fontSize/100+"em"}),updateSliderLabels($fontSizeSlider,fontSize,fontSize+"%",Strings.i18n_font_size)});var $fontSelectionList=$("#font-selection-input");$fontSelectionList.change(function(){var fontSelection=Number($fontSelectionList.find("option:selected").val());if(0===fontSelection)$previewText.css({fontFamily:""});else{var font=moduleConfig.fonts[fontSelection-1].fontFamily;$previewText.css({fontFamily:font})}}),$("#tab-butt-main").on("click",function(){$("#tab-keyboard").attr("aria-expanded","false"),$("#tab-main").attr("aria-expanded","true")}),$("#tab-butt-keys").on("click",function(){$("#tab-main").attr("aria-expanded","false"),$("#tab-keyboard").attr("aria-expanded","true")}),$("#settings-dialog").on("hide.bs.modal",function(){setTimeout(function(){$("#keyboard-list").empty()},500)}),$("#settings-dialog").on("show.bs.modal",function(){$("#tab-butt-main").trigger("click"),KeyboardSettings.initKeyboardList(),setTimeout(function(){$("#closeSettingsCross")[0].focus()},1e3),Settings.get("reader",function(readerSettings){for(prop in readerSettings=readerSettings||defaultSettings,defaultSettings)!defaultSettings.hasOwnProperty(prop)||readerSettings.hasOwnProperty(prop)&&void 0!==readerSettings[prop]||(readerSettings[prop]=defaultSettings[prop]);$fontSizeSlider.val(readerSettings.fontSize),updateSliderLabels($fontSizeSlider,readerSettings.fontSize,readerSettings.fontSize+"%",Strings.i18n_font_size);var loadedUrls=[];1==$fontSelectionList[0].childElementCount&&$.each(moduleConfig.fonts,function(index,fontObj){index++;var curName=fontObj.displayName;if(fontObj.url){var fontPayload='<link id="fontStyle_'+index+'" rel="stylesheet" type="text/css" href="'+fontObj.url+'"/>';loadedUrls.indexOf(fontObj.url)<0&&($("head").append(fontPayload),loadedUrls.push(fontObj.url))}var isSelected=readerSettings.fontSelection===index?"selected":"",curOption="<option "+isSelected+' value="'+index+'" aria-label="'+curName+'" title="'+curName+'">'+curName+"</option>";$fontSelectionList.append(curOption),isSelected&&$previewText.css({fontFamily:fontObj.fontFamily})}),readerSettings.columnGap=defaultSettings.columnGap,$marginSlider.val(readerSettings.columnGap),updateSliderLabels($marginSlider,readerSettings.columnGap,readerSettings.columnGap+"px",Strings.i18n_margins);var maxVal=Number($columnMaxWidthSlider.attr("max")),columnMaxWidth=readerSettings.columnMaxWidth;columnMaxWidth>=maxVal&&(columnMaxWidth=maxVal);var columnMaxWidth_text=columnMaxWidth>=maxVal?Strings.i18n_pageMaxWidth_Disabled:columnMaxWidth+"px";$columnMaxWidthSlider.val(columnMaxWidth),updateSliderLabels($columnMaxWidthSlider,columnMaxWidth,columnMaxWidth_text,Strings.i18n_pageMaxWidth),"double"==readerSettings.syntheticSpread?$("#two-up-option input").prop("checked",!0):"single"==readerSettings.syntheticSpread?$("#one-up-option input").prop("checked",!0):$("#spread-default-option input").prop("checked",!0),"scroll-doc"==readerSettings.scroll?$("#scroll-doc-option input").prop("checked",!0):"scroll-continuous"==readerSettings.scroll?$("#scroll-continuous-option input").prop("checked",!0):$("#scroll-default-option input").prop("checked",!0),0===readerSettings.pageTransition?$("#pageTransition-1-option input").prop("checked",!0):1===readerSettings.pageTransition?$("#pageTransition-2-option input").prop("checked",!0):2===readerSettings.pageTransition?$("#pageTransition-3-option input").prop("checked",!0):3===readerSettings.pageTransition?$("#pageTransition-4-option input").prop("checked",!0):$("#pageTransition-none-option input").prop("checked",!0),readerSettings.theme&&setPreviewTheme($previewText,readerSettings.theme),$previewText.css({fontSize:readerSettings.fontSize/100+"em"})})});var save=function(){var maxVal=Number($columnMaxWidthSlider.attr("max")),columnMaxWidth=Number($columnMaxWidthSlider.val());columnMaxWidth>=maxVal&&(columnMaxWidth=99999);var readerSettings={fontSize:Number($fontSizeSlider.val()),fontSelection:Number($fontSelectionList.val()),syntheticSpread:"auto",columnGap:Number($marginSlider.val()),columnMaxWidth:columnMaxWidth,scroll:"auto"};$("#scroll-doc-option input").prop("checked")?readerSettings.scroll="scroll-doc":$("#scroll-continuous-option input").prop("checked")&&(readerSettings.scroll="scroll-continuous"),$("#two-up-option input").prop("checked")?readerSettings.syntheticSpread="double":$("#one-up-option input").prop("checked")&&(readerSettings.syntheticSpread="single"),$("#pageTransition-1-option input").prop("checked")?readerSettings.pageTransition=0:$("#pageTransition-2-option input").prop("checked")?readerSettings.pageTransition=1:$("#pageTransition-3-option input").prop("checked")?readerSettings.pageTransition=2:$("#pageTransition-4-option input").prop("checked")?readerSettings.pageTransition=3:readerSettings.pageTransition=-1,readerSettings.theme=$previewText.attr("data-theme"),reader&&updateReader(reader,readerSettings);var keys=KeyboardSettings.saveKeys();Settings.get("reader",function(json){for(prop in json||(json={}),readerSettings)readerSettings.hasOwnProperty(prop)&&(json[prop]=readerSettings[prop]);json.keyboard=keys,Settings.put("reader",json),setTimeout(function(){Keyboard.applySettings(json)},100)})};Keyboard.on(Keyboard.NightTheme,"settings",function(){Settings.get("reader",function(json){json||(json={});var isNight="night-theme"===json.theme;json.theme=isNight?"author-theme":"night-theme",Settings.put("reader",json),reader&&updateReader(reader,json)})}),Keyboard.on(Keyboard.SettingsModalSave,"settings",function(){save(),$("#settings-dialog").modal("hide")}),Keyboard.on(Keyboard.SettingsModalClose,"settings",function(){$("#settings-dialog").modal("hide")}),$("#settings-dialog .btn-primary").on("click",save)},updateReader:updateReader,defaultSettings:defaultSettings}}),function(window,document,exportName,undefined){"use strict";var assign,VENDOR_PREFIXES=["","webkit","Moz","MS","ms","o"],TEST_ELEMENT=document.createElement("div"),TYPE_FUNCTION="function",round=Math.round,abs=Math.abs,now=Date.now;function setTimeoutContext(fn,timeout,context){return setTimeout(bindFn(fn,context),timeout)}function invokeArrayArg(arg,fn,context){return!!Array.isArray(arg)&&(each(arg,context[fn],context),!0)}function each(obj,iterator,context){var i;if(obj)if(obj.forEach)obj.forEach(iterator,context);else if(obj.length!==undefined)for(i=0;i<obj.length;)iterator.call(context,obj[i],i,obj),i++;else for(i in obj)obj.hasOwnProperty(i)&&iterator.call(context,obj[i],i,obj)}function deprecate(method,name,message){var deprecationMessage="DEPRECATED METHOD: "+name+"\n"+message+" AT \n";return function(){var e=new Error("get-stack-trace"),stack=e&&e.stack?e.stack.replace(/^[^\(]+?[\n$]/gm,"").replace(/^\s+at\s+/gm,"").replace(/^Object.<anonymous>\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",log=window.console&&(window.console.warn||window.console.log);return log&&log.call(window.console,deprecationMessage,stack),method.apply(this,arguments)}}assign="function"!=typeof Object.assign?function(target){if(target===undefined||null===target)throw new TypeError("Cannot convert undefined or null to object");for(var output=Object(target),index=1;index<arguments.length;index++){var source=arguments[index];if(source!==undefined&&null!==source)for(var nextKey in source)source.hasOwnProperty(nextKey)&&(output[nextKey]=source[nextKey])}return output}:Object.assign;var extend=deprecate(function(dest,src,merge){for(var keys=Object.keys(src),i=0;i<keys.length;)(!merge||merge&&dest[keys[i]]===undefined)&&(dest[keys[i]]=src[keys[i]]),i++;return dest},"extend","Use `assign`."),merge=deprecate(function(dest,src){return extend(dest,src,!0)},"merge","Use `assign`.");function inherit(child,base,properties){var childP,baseP=base.prototype;(childP=child.prototype=Object.create(baseP)).constructor=child,childP._super=baseP,properties&&assign(childP,properties)}function bindFn(fn,context){return function(){return fn.apply(context,arguments)}}function boolOrFn(val,args){return typeof val==TYPE_FUNCTION?val.apply(args&&args[0]||undefined,args):val}function ifUndefined(val1,val2){return val1===undefined?val2:val1}function addEventListeners(target,types,handler){each(splitStr(types),function(type){target.addEventListener(type,handler,!1)})}function removeEventListeners(target,types,handler){each(splitStr(types),function(type){target.removeEventListener(type,handler,!1)})}function hasParent(node,parent){for(;node;){if(node==parent)return!0;node=node.parentNode}return!1}function inStr(str,find){return str.indexOf(find)>-1}function splitStr(str){return str.trim().split(/\s+/g)}function inArray(src,find,findByKey){if(src.indexOf&&!findByKey)return src.indexOf(find);for(var i=0;i<src.length;){if(findByKey&&src[i][findByKey]==find||!findByKey&&src[i]===find)return i;i++}return-1}function toArray(obj){return Array.prototype.slice.call(obj,0)}function uniqueArray(src,key,sort){for(var results=[],values=[],i=0;i<src.length;){var val=key?src[i][key]:src[i];inArray(values,val)<0&&results.push(src[i]),values[i]=val,i++}return sort&&(results=key?results.sort(function(a,b){return a[key]>b[key]}):results.sort()),results}function prefixed(obj,property){for(var prefix,prop,camelProp=property[0].toUpperCase()+property.slice(1),i=0;i<VENDOR_PREFIXES.length;){if((prop=(prefix=VENDOR_PREFIXES[i])?prefix+camelProp:property)in obj)return prop;i++}return undefined}var _uniqueId=1;function getWindowForElement(element){var doc=element.ownerDocument||element;return doc.defaultView||doc.parentWindow||window}var SUPPORT_TOUCH="ontouchstart"in window,SUPPORT_POINTER_EVENTS=prefixed(window,"PointerEvent")!==undefined,SUPPORT_ONLY_TOUCH=SUPPORT_TOUCH&&/mobile|tablet|ip(ad|hone|od)|android/i.test(navigator.userAgent),COMPUTE_INTERVAL=25,INPUT_START=1,INPUT_MOVE=2,INPUT_END=4,INPUT_CANCEL=8,DIRECTION_NONE=1,DIRECTION_LEFT=2,DIRECTION_RIGHT=4,DIRECTION_UP=8,DIRECTION_DOWN=16,DIRECTION_HORIZONTAL=DIRECTION_LEFT|DIRECTION_RIGHT,DIRECTION_VERTICAL=DIRECTION_UP|DIRECTION_DOWN,DIRECTION_ALL=DIRECTION_HORIZONTAL|DIRECTION_VERTICAL,PROPS_XY=["x","y"],PROPS_CLIENT_XY=["clientX","clientY"];function Input(manager,callback){var self=this;this.manager=manager,this.callback=callback,this.element=manager.element,this.target=manager.options.inputTarget,this.domHandler=function(ev){boolOrFn(manager.options.enable,[manager])&&self.handler(ev)},this.init()}function inputHandler(manager,eventType,input){var pointersLen=input.pointers.length,changedPointersLen=input.changedPointers.length,isFirst=eventType&INPUT_START&&pointersLen-changedPointersLen==0,isFinal=eventType&(INPUT_END|INPUT_CANCEL)&&pointersLen-changedPointersLen==0;input.isFirst=!!isFirst,input.isFinal=!!isFinal,isFirst&&(manager.session={}),input.eventType=eventType,function(manager,input){var session=manager.session,pointers=input.pointers,pointersLength=pointers.length;session.firstInput||(session.firstInput=simpleCloneInputData(input));pointersLength>1&&!session.firstMultiple?session.firstMultiple=simpleCloneInputData(input):1===pointersLength&&(session.firstMultiple=!1);var firstInput=session.firstInput,firstMultiple=session.firstMultiple,offsetCenter=firstMultiple?firstMultiple.center:firstInput.center,center=input.center=getCenter(pointers);input.timeStamp=now(),input.deltaTime=input.timeStamp-firstInput.timeStamp,input.angle=getAngle(offsetCenter,center),input.distance=getDistance(offsetCenter,center),function(session,input){var center=input.center,offset=session.offsetDelta||{},prevDelta=session.prevDelta||{},prevInput=session.prevInput||{};input.eventType!==INPUT_START&&prevInput.eventType!==INPUT_END||(prevDelta=session.prevDelta={x:prevInput.deltaX||0,y:prevInput.deltaY||0},offset=session.offsetDelta={x:center.x,y:center.y});input.deltaX=prevDelta.x+(center.x-offset.x),input.deltaY=prevDelta.y+(center.y-offset.y)}(session,input),input.offsetDirection=getDirection(input.deltaX,input.deltaY);var overallVelocity=getVelocity(input.deltaTime,input.deltaX,input.deltaY);input.overallVelocityX=overallVelocity.x,input.overallVelocityY=overallVelocity.y,input.overallVelocity=abs(overallVelocity.x)>abs(overallVelocity.y)?overallVelocity.x:overallVelocity.y,input.scale=firstMultiple?(start=firstMultiple.pointers,end=pointers,getDistance(end[0],end[1],PROPS_CLIENT_XY)/getDistance(start[0],start[1],PROPS_CLIENT_XY)):1,input.rotation=firstMultiple?function(start,end){return getAngle(end[1],end[0],PROPS_CLIENT_XY)+getAngle(start[1],start[0],PROPS_CLIENT_XY)}(firstMultiple.pointers,pointers):0,input.maxPointers=session.prevInput?input.pointers.length>session.prevInput.maxPointers?input.pointers.length:session.prevInput.maxPointers:input.pointers.length,function(session,input){var velocity,velocityX,velocityY,direction,last=session.lastInterval||input,deltaTime=input.timeStamp-last.timeStamp;if(input.eventType!=INPUT_CANCEL&&(deltaTime>COMPUTE_INTERVAL||last.velocity===undefined)){var deltaX=input.deltaX-last.deltaX,deltaY=input.deltaY-last.deltaY,v=getVelocity(deltaTime,deltaX,deltaY);velocityX=v.x,velocityY=v.y,velocity=abs(v.x)>abs(v.y)?v.x:v.y,direction=getDirection(deltaX,deltaY),session.lastInterval=input}else velocity=last.velocity,velocityX=last.velocityX,velocityY=last.velocityY,direction=last.direction;input.velocity=velocity,input.velocityX=velocityX,input.velocityY=velocityY,input.direction=direction}(session,input);var start,end;var target=manager.element;hasParent(input.srcEvent.target,target)&&(target=input.srcEvent.target);input.target=target}(manager,input),manager.emit("hammer.input",input),manager.recognize(input),manager.session.prevInput=input}function simpleCloneInputData(input){for(var pointers=[],i=0;i<input.pointers.length;)pointers[i]={clientX:round(input.pointers[i].clientX),clientY:round(input.pointers[i].clientY)},i++;return{timeStamp:now(),pointers:pointers,center:getCenter(pointers),deltaX:input.deltaX,deltaY:input.deltaY}}function getCenter(pointers){var pointersLength=pointers.length;if(1===pointersLength)return{x:round(pointers[0].clientX),y:round(pointers[0].clientY)};for(var x=0,y=0,i=0;i<pointersLength;)x+=pointers[i].clientX,y+=pointers[i].clientY,i++;return{x:round(x/pointersLength),y:round(y/pointersLength)}}function getVelocity(deltaTime,x,y){return{x:x/deltaTime||0,y:y/deltaTime||0}}function getDirection(x,y){return x===y?DIRECTION_NONE:abs(x)>=abs(y)?x<0?DIRECTION_LEFT:DIRECTION_RIGHT:y<0?DIRECTION_UP:DIRECTION_DOWN}function getDistance(p1,p2,props){props||(props=PROPS_XY);var x=p2[props[0]]-p1[props[0]],y=p2[props[1]]-p1[props[1]];return Math.sqrt(x*x+y*y)}function getAngle(p1,p2,props){props||(props=PROPS_XY);var x=p2[props[0]]-p1[props[0]],y=p2[props[1]]-p1[props[1]];return 180*Math.atan2(y,x)/Math.PI}Input.prototype={handler:function(){},init:function(){this.evEl&&addEventListeners(this.element,this.evEl,this.domHandler),this.evTarget&&addEventListeners(this.target,this.evTarget,this.domHandler),this.evWin&&addEventListeners(getWindowForElement(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&removeEventListeners(this.element,this.evEl,this.domHandler),this.evTarget&&removeEventListeners(this.target,this.evTarget,this.domHandler),this.evWin&&removeEventListeners(getWindowForElement(this.element),this.evWin,this.domHandler)}};var MOUSE_INPUT_MAP={mousedown:INPUT_START,mousemove:INPUT_MOVE,mouseup:INPUT_END},MOUSE_ELEMENT_EVENTS="mousedown",MOUSE_WINDOW_EVENTS="mousemove mouseup";function MouseInput(){this.evEl=MOUSE_ELEMENT_EVENTS,this.evWin=MOUSE_WINDOW_EVENTS,this.pressed=!1,Input.apply(this,arguments)}inherit(MouseInput,Input,{handler:function(ev){var eventType=MOUSE_INPUT_MAP[ev.type];eventType&INPUT_START&&0===ev.button&&(this.pressed=!0),eventType&INPUT_MOVE&&1!==ev.which&&(eventType=INPUT_END),this.pressed&&(eventType&INPUT_END&&(this.pressed=!1),this.callback(this.manager,eventType,{pointers:[ev],changedPointers:[ev],pointerType:"mouse",srcEvent:ev}))}});var POINTER_INPUT_MAP={pointerdown:INPUT_START,pointermove:INPUT_MOVE,pointerup:INPUT_END,pointercancel:INPUT_CANCEL,pointerout:INPUT_CANCEL},IE10_POINTER_TYPE_ENUM={2:"touch",3:"pen",4:"mouse",5:"kinect"},POINTER_ELEMENT_EVENTS="pointerdown",POINTER_WINDOW_EVENTS="pointermove pointerup pointercancel";function PointerEventInput(){this.evEl=POINTER_ELEMENT_EVENTS,this.evWin=POINTER_WINDOW_EVENTS,Input.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}window.MSPointerEvent&&!window.PointerEvent&&(POINTER_ELEMENT_EVENTS="MSPointerDown",POINTER_WINDOW_EVENTS="MSPointerMove MSPointerUp MSPointerCancel"),inherit(PointerEventInput,Input,{handler:function(ev){var store=this.store,removePointer=!1,eventTypeNormalized=ev.type.toLowerCase().replace("ms",""),eventType=POINTER_INPUT_MAP[eventTypeNormalized],pointerType=IE10_POINTER_TYPE_ENUM[ev.pointerType]||ev.pointerType,isTouch="touch"==pointerType,storeIndex=inArray(store,ev.pointerId,"pointerId");eventType&INPUT_START&&(0===ev.button||isTouch)?storeIndex<0&&(store.push(ev),storeIndex=store.length-1):eventType&(INPUT_END|INPUT_CANCEL)&&(removePointer=!0),storeIndex<0||(store[storeIndex]=ev,this.callback(this.manager,eventType,{pointers:store,changedPointers:[ev],pointerType:pointerType,srcEvent:ev}),removePointer&&store.splice(storeIndex,1))}});var SINGLE_TOUCH_INPUT_MAP={touchstart:INPUT_START,touchmove:INPUT_MOVE,touchend:INPUT_END,touchcancel:INPUT_CANCEL},SINGLE_TOUCH_TARGET_EVENTS="touchstart",SINGLE_TOUCH_WINDOW_EVENTS="touchstart touchmove touchend touchcancel";function SingleTouchInput(){this.evTarget=SINGLE_TOUCH_TARGET_EVENTS,this.evWin=SINGLE_TOUCH_WINDOW_EVENTS,this.started=!1,Input.apply(this,arguments)}inherit(SingleTouchInput,Input,{handler:function(ev){var type=SINGLE_TOUCH_INPUT_MAP[ev.type];if(type===INPUT_START&&(this.started=!0),this.started){var touches=function(ev,type){var all=toArray(ev.touches),changed=toArray(ev.changedTouches);type&(INPUT_END|INPUT_CANCEL)&&(all=uniqueArray(all.concat(changed),"identifier",!0));return[all,changed]}.call(this,ev,type);type&(INPUT_END|INPUT_CANCEL)&&touches[0].length-touches[1].length==0&&(this.started=!1),this.callback(this.manager,type,{pointers:touches[0],changedPointers:touches[1],pointerType:"touch",srcEvent:ev})}}});var TOUCH_INPUT_MAP={touchstart:INPUT_START,touchmove:INPUT_MOVE,touchend:INPUT_END,touchcancel:INPUT_CANCEL},TOUCH_TARGET_EVENTS="touchstart touchmove touchend touchcancel";function TouchInput(){this.evTarget=TOUCH_TARGET_EVENTS,this.targetIds={},Input.apply(this,arguments)}inherit(TouchInput,Input,{handler:function(ev){var type=TOUCH_INPUT_MAP[ev.type],touches=function(ev,type){var allTouches=toArray(ev.touches),targetIds=this.targetIds;if(type&(INPUT_START|INPUT_MOVE)&&1===allTouches.length)return targetIds[allTouches[0].identifier]=!0,[allTouches,allTouches];var i,targetTouches,changedTouches=toArray(ev.changedTouches),changedTargetTouches=[],target=this.target;if(targetTouches=allTouches.filter(function(touch){return hasParent(touch.target,target)}),type===INPUT_START)for(i=0;i<targetTouches.length;)targetIds[targetTouches[i].identifier]=!0,i++;i=0;for(;i<changedTouches.length;)targetIds[changedTouches[i].identifier]&&changedTargetTouches.push(changedTouches[i]),type&(INPUT_END|INPUT_CANCEL)&&delete targetIds[changedTouches[i].identifier],i++;if(!changedTargetTouches.length)return;return[uniqueArray(targetTouches.concat(changedTargetTouches),"identifier",!0),changedTargetTouches]}.call(this,ev,type);touches&&this.callback(this.manager,type,{pointers:touches[0],changedPointers:touches[1],pointerType:"touch",srcEvent:ev})}});var DEDUP_TIMEOUT=2500,DEDUP_DISTANCE=25;function TouchMouseInput(){Input.apply(this,arguments);var handler=bindFn(this.handler,this);this.touch=new TouchInput(this.manager,handler),this.mouse=new MouseInput(this.manager,handler),this.primaryTouch=null,this.lastTouches=[]}function setLastTouch(eventData){var touch=eventData.changedPointers[0];if(touch.identifier===this.primaryTouch){var lastTouch={x:touch.clientX,y:touch.clientY};this.lastTouches.push(lastTouch);var lts=this.lastTouches;setTimeout(function(){var i=lts.indexOf(lastTouch);i>-1&<s.splice(i,1)},DEDUP_TIMEOUT)}}inherit(TouchMouseInput,Input,{handler:function(manager,inputEvent,inputData){var isTouch="touch"==inputData.pointerType,isMouse="mouse"==inputData.pointerType;if(!(isMouse&&inputData.sourceCapabilities&&inputData.sourceCapabilities.firesTouchEvents)){if(isTouch)(function(eventType,eventData){eventType&INPUT_START?(this.primaryTouch=eventData.changedPointers[0].identifier,setLastTouch.call(this,eventData)):eventType&(INPUT_END|INPUT_CANCEL)&&setLastTouch.call(this,eventData)}).call(this,inputEvent,inputData);else if(isMouse&&function(eventData){for(var x=eventData.srcEvent.clientX,y=eventData.srcEvent.clientY,i=0;i<this.lastTouches.length;i++){var t=this.lastTouches[i],dx=Math.abs(x-t.x),dy=Math.abs(y-t.y);if(dx<=DEDUP_DISTANCE&&dy<=DEDUP_DISTANCE)return!0}return!1}.call(this,inputData))return;this.callback(manager,inputEvent,inputData)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var PREFIXED_TOUCH_ACTION=prefixed(TEST_ELEMENT.style,"touchAction"),NATIVE_TOUCH_ACTION=PREFIXED_TOUCH_ACTION!==undefined,TOUCH_ACTION_AUTO="auto",TOUCH_ACTION_MANIPULATION="manipulation",TOUCH_ACTION_NONE="none",TOUCH_ACTION_PAN_X="pan-x",TOUCH_ACTION_PAN_Y="pan-y",TOUCH_ACTION_MAP=function(){if(!NATIVE_TOUCH_ACTION)return!1;var touchMap={},cssSupports=window.CSS&&window.CSS.supports;return["auto","manipulation","pan-y","pan-x","pan-x pan-y","none"].forEach(function(val){touchMap[val]=!cssSupports||window.CSS.supports("touch-action",val)}),touchMap}();function TouchAction(manager,value){this.manager=manager,this.set(value)}TouchAction.prototype={set:function(value){"compute"==value&&(value=this.compute()),NATIVE_TOUCH_ACTION&&this.manager.element.style&&TOUCH_ACTION_MAP[value]&&(this.manager.element.style[PREFIXED_TOUCH_ACTION]=value),this.actions=value.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var actions=[];return each(this.manager.recognizers,function(recognizer){boolOrFn(recognizer.options.enable,[recognizer])&&(actions=actions.concat(recognizer.getTouchAction()))}),function(actions){if(inStr(actions,TOUCH_ACTION_NONE))return TOUCH_ACTION_NONE;var hasPanX=inStr(actions,TOUCH_ACTION_PAN_X),hasPanY=inStr(actions,TOUCH_ACTION_PAN_Y);if(hasPanX&&hasPanY)return TOUCH_ACTION_NONE;if(hasPanX||hasPanY)return hasPanX?TOUCH_ACTION_PAN_X:TOUCH_ACTION_PAN_Y;if(inStr(actions,TOUCH_ACTION_MANIPULATION))return TOUCH_ACTION_MANIPULATION;return TOUCH_ACTION_AUTO}(actions.join(" "))},preventDefaults:function(input){var srcEvent=input.srcEvent,direction=input.offsetDirection;if(this.manager.session.prevented)srcEvent.preventDefault();else{var actions=this.actions,hasNone=inStr(actions,TOUCH_ACTION_NONE)&&!TOUCH_ACTION_MAP[TOUCH_ACTION_NONE],hasPanY=inStr(actions,TOUCH_ACTION_PAN_Y)&&!TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y],hasPanX=inStr(actions,TOUCH_ACTION_PAN_X)&&!TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];if(hasNone){var isTapPointer=1===input.pointers.length,isTapMovement=input.distance<2,isTapTouchTime=input.deltaTime<250;if(isTapPointer&&isTapMovement&&isTapTouchTime)return}if(!hasPanX||!hasPanY)return hasNone||hasPanY&&direction&DIRECTION_HORIZONTAL||hasPanX&&direction&DIRECTION_VERTICAL?this.preventSrc(srcEvent):void 0}},preventSrc:function(srcEvent){this.manager.session.prevented=!0,srcEvent.preventDefault()}};var STATE_POSSIBLE=1,STATE_BEGAN=2,STATE_CHANGED=4,STATE_ENDED=8,STATE_RECOGNIZED=STATE_ENDED,STATE_CANCELLED=16;function Recognizer(options){this.options=assign({},this.defaults,options||{}),this.id=_uniqueId++,this.manager=null,this.options.enable=ifUndefined(this.options.enable,!0),this.state=STATE_POSSIBLE,this.simultaneous={},this.requireFail=[]}function stateStr(state){return state&STATE_CANCELLED?"cancel":state&STATE_ENDED?"end":state&STATE_CHANGED?"move":state&STATE_BEGAN?"start":""}function directionStr(direction){return direction==DIRECTION_DOWN?"down":direction==DIRECTION_UP?"up":direction==DIRECTION_LEFT?"left":direction==DIRECTION_RIGHT?"right":""}function getRecognizerByNameIfManager(otherRecognizer,recognizer){var manager=recognizer.manager;return manager?manager.get(otherRecognizer):otherRecognizer}function AttrRecognizer(){Recognizer.apply(this,arguments)}function PanRecognizer(){AttrRecognizer.apply(this,arguments),this.pX=null,this.pY=null}function PinchRecognizer(){AttrRecognizer.apply(this,arguments)}function PressRecognizer(){Recognizer.apply(this,arguments),this._timer=null,this._input=null}function RotateRecognizer(){AttrRecognizer.apply(this,arguments)}function SwipeRecognizer(){AttrRecognizer.apply(this,arguments)}function TapRecognizer(){Recognizer.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function Hammer(element,options){return(options=options||{}).recognizers=ifUndefined(options.recognizers,Hammer.defaults.preset),new Manager(element,options)}Recognizer.prototype={defaults:{},set:function(options){return assign(this.options,options),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(otherRecognizer){if(invokeArrayArg(otherRecognizer,"recognizeWith",this))return this;var simultaneous=this.simultaneous;return simultaneous[(otherRecognizer=getRecognizerByNameIfManager(otherRecognizer,this)).id]||(simultaneous[otherRecognizer.id]=otherRecognizer,otherRecognizer.recognizeWith(this)),this},dropRecognizeWith:function(otherRecognizer){return invokeArrayArg(otherRecognizer,"dropRecognizeWith",this)?this:(otherRecognizer=getRecognizerByNameIfManager(otherRecognizer,this),delete this.simultaneous[otherRecognizer.id],this)},requireFailure:function(otherRecognizer){if(invokeArrayArg(otherRecognizer,"requireFailure",this))return this;var requireFail=this.requireFail;return-1===inArray(requireFail,otherRecognizer=getRecognizerByNameIfManager(otherRecognizer,this))&&(requireFail.push(otherRecognizer),otherRecognizer.requireFailure(this)),this},dropRequireFailure:function(otherRecognizer){if(invokeArrayArg(otherRecognizer,"dropRequireFailure",this))return this;otherRecognizer=getRecognizerByNameIfManager(otherRecognizer,this);var index=inArray(this.requireFail,otherRecognizer);return index>-1&&this.requireFail.splice(index,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(otherRecognizer){return!!this.simultaneous[otherRecognizer.id]},emit:function(input){var self=this,state=this.state;function emit(event){self.manager.emit(event,input)}state<STATE_ENDED&&emit(self.options.event+stateStr(state)),emit(self.options.event),input.additionalEvent&&emit(input.additionalEvent),state>=STATE_ENDED&&emit(self.options.event+stateStr(state))},tryEmit:function(input){if(this.canEmit())return this.emit(input);this.state=32},canEmit:function(){for(var i=0;i<this.requireFail.length;){if(!(this.requireFail[i].state&(32|STATE_POSSIBLE)))return!1;i++}return!0},recognize:function(inputData){var inputDataClone=assign({},inputData);if(!boolOrFn(this.options.enable,[this,inputDataClone]))return this.reset(),void(this.state=32);this.state&(STATE_RECOGNIZED|STATE_CANCELLED|32)&&(this.state=STATE_POSSIBLE),this.state=this.process(inputDataClone),this.state&(STATE_BEGAN|STATE_CHANGED|STATE_ENDED|STATE_CANCELLED)&&this.tryEmit(inputDataClone)},process:function(inputData){},getTouchAction:function(){},reset:function(){}},inherit(AttrRecognizer,Recognizer,{defaults:{pointers:1},attrTest:function(input){var optionPointers=this.options.pointers;return 0===optionPointers||input.pointers.length===optionPointers},process:function(input){var state=this.state,eventType=input.eventType,isRecognized=state&(STATE_BEGAN|STATE_CHANGED),isValid=this.attrTest(input);return isRecognized&&(eventType&INPUT_CANCEL||!isValid)?state|STATE_CANCELLED:isRecognized||isValid?eventType&INPUT_END?state|STATE_ENDED:state&STATE_BEGAN?state|STATE_CHANGED:STATE_BEGAN:32}}),inherit(PanRecognizer,AttrRecognizer,{defaults:{event:"pan",threshold:10,pointers:1,direction:DIRECTION_ALL},getTouchAction:function(){var direction=this.options.direction,actions=[];return direction&DIRECTION_HORIZONTAL&&actions.push(TOUCH_ACTION_PAN_Y),direction&DIRECTION_VERTICAL&&actions.push(TOUCH_ACTION_PAN_X),actions},directionTest:function(input){var options=this.options,hasMoved=!0,distance=input.distance,direction=input.direction,x=input.deltaX,y=input.deltaY;return direction&options.direction||(options.direction&DIRECTION_HORIZONTAL?(direction=0===x?DIRECTION_NONE:x<0?DIRECTION_LEFT:DIRECTION_RIGHT,hasMoved=x!=this.pX,distance=Math.abs(input.deltaX)):(direction=0===y?DIRECTION_NONE:y<0?DIRECTION_UP:DIRECTION_DOWN,hasMoved=y!=this.pY,distance=Math.abs(input.deltaY))),input.direction=direction,hasMoved&&distance>options.threshold&&direction&options.direction},attrTest:function(input){return AttrRecognizer.prototype.attrTest.call(this,input)&&(this.state&STATE_BEGAN||!(this.state&STATE_BEGAN)&&this.directionTest(input))},emit:function(input){this.pX=input.deltaX,this.pY=input.deltaY;var direction=directionStr(input.direction);direction&&(input.additionalEvent=this.options.event+direction),this._super.emit.call(this,input)}}),inherit(PinchRecognizer,AttrRecognizer,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[TOUCH_ACTION_NONE]},attrTest:function(input){return this._super.attrTest.call(this,input)&&(Math.abs(input.scale-1)>this.options.threshold||this.state&STATE_BEGAN)},emit:function(input){if(1!==input.scale){var inOut=input.scale<1?"in":"out";input.additionalEvent=this.options.event+inOut}this._super.emit.call(this,input)}}),inherit(PressRecognizer,Recognizer,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[TOUCH_ACTION_AUTO]},process:function(input){var options=this.options,validPointers=input.pointers.length===options.pointers,validMovement=input.distance<options.threshold,validTime=input.deltaTime>options.time;if(this._input=input,!validMovement||!validPointers||input.eventType&(INPUT_END|INPUT_CANCEL)&&!validTime)this.reset();else if(input.eventType&INPUT_START)this.reset(),this._timer=setTimeoutContext(function(){this.state=STATE_RECOGNIZED,this.tryEmit()},options.time,this);else if(input.eventType&INPUT_END)return STATE_RECOGNIZED;return 32},reset:function(){clearTimeout(this._timer)},emit:function(input){this.state===STATE_RECOGNIZED&&(input&&input.eventType&INPUT_END?this.manager.emit(this.options.event+"up",input):(this._input.timeStamp=now(),this.manager.emit(this.options.event,this._input)))}}),inherit(RotateRecognizer,AttrRecognizer,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[TOUCH_ACTION_NONE]},attrTest:function(input){return this._super.attrTest.call(this,input)&&(Math.abs(input.rotation)>this.options.threshold||this.state&STATE_BEGAN)}}),inherit(SwipeRecognizer,AttrRecognizer,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:DIRECTION_HORIZONTAL|DIRECTION_VERTICAL,pointers:1},getTouchAction:function(){return PanRecognizer.prototype.getTouchAction.call(this)},attrTest:function(input){var velocity,direction=this.options.direction;return direction&(DIRECTION_HORIZONTAL|DIRECTION_VERTICAL)?velocity=input.overallVelocity:direction&DIRECTION_HORIZONTAL?velocity=input.overallVelocityX:direction&DIRECTION_VERTICAL&&(velocity=input.overallVelocityY),this._super.attrTest.call(this,input)&&direction&input.offsetDirection&&input.distance>this.options.threshold&&input.maxPointers==this.options.pointers&&abs(velocity)>this.options.velocity&&input.eventType&INPUT_END},emit:function(input){var direction=directionStr(input.offsetDirection);direction&&this.manager.emit(this.options.event+direction,input),this.manager.emit(this.options.event,input)}}),inherit(TapRecognizer,Recognizer,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[TOUCH_ACTION_MANIPULATION]},process:function(input){var options=this.options,validPointers=input.pointers.length===options.pointers,validMovement=input.distance<options.threshold,validTouchTime=input.deltaTime<options.time;if(this.reset(),input.eventType&INPUT_START&&0===this.count)return this.failTimeout();if(validMovement&&validTouchTime&&validPointers){if(input.eventType!=INPUT_END)return this.failTimeout();var validInterval=!this.pTime||input.timeStamp-this.pTime<options.interval,validMultiTap=!this.pCenter||getDistance(this.pCenter,input.center)<options.posThreshold;if(this.pTime=input.timeStamp,this.pCenter=input.center,validMultiTap&&validInterval?this.count+=1:this.count=1,this._input=input,0===this.count%options.taps)return this.hasRequireFailures()?(this._timer=setTimeoutContext(function(){this.state=STATE_RECOGNIZED,this.tryEmit()},options.interval,this),STATE_BEGAN):STATE_RECOGNIZED}return 32},failTimeout:function(){return this._timer=setTimeoutContext(function(){this.state=32},this.options.interval,this),32},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==STATE_RECOGNIZED&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),Hammer.VERSION="2.0.7",Hammer.defaults={domEvents:!1,touchAction:"compute",enable:!0,inputTarget:null,inputClass:null,preset:[[RotateRecognizer,{enable:!1}],[PinchRecognizer,{enable:!1},["rotate"]],[SwipeRecognizer,{direction:DIRECTION_HORIZONTAL}],[PanRecognizer,{direction:DIRECTION_HORIZONTAL},["swipe"]],[TapRecognizer],[TapRecognizer,{event:"doubletap",taps:2},["tap"]],[PressRecognizer]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};function Manager(element,options){var manager;this.options=assign({},Hammer.defaults,options||{}),this.options.inputTarget=this.options.inputTarget||element,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=element,this.input=new((manager=this).options.inputClass||(SUPPORT_POINTER_EVENTS?PointerEventInput:SUPPORT_ONLY_TOUCH?TouchInput:SUPPORT_TOUCH?TouchMouseInput:MouseInput))(manager,inputHandler),this.touchAction=new TouchAction(this,this.options.touchAction),toggleCssProps(this,!0),each(this.options.recognizers,function(item){var recognizer=this.add(new item[0](item[1]));item[2]&&recognizer.recognizeWith(item[2]),item[3]&&recognizer.requireFailure(item[3])},this)}function toggleCssProps(manager,add){var prop,element=manager.element;element.style&&(each(manager.options.cssProps,function(value,name){prop=prefixed(element.style,name),add?(manager.oldCssProps[prop]=element.style[prop],element.style[prop]=value):element.style[prop]=manager.oldCssProps[prop]||""}),add||(manager.oldCssProps={}))}Manager.prototype={set:function(options){return assign(this.options,options),options.touchAction&&this.touchAction.update(),options.inputTarget&&(this.input.destroy(),this.input.target=options.inputTarget,this.input.init()),this},stop:function(force){this.session.stopped=force?2:1},recognize:function(inputData){var session=this.session;if(!session.stopped){var recognizer;this.touchAction.preventDefaults(inputData);var recognizers=this.recognizers,curRecognizer=session.curRecognizer;(!curRecognizer||curRecognizer&&curRecognizer.state&STATE_RECOGNIZED)&&(curRecognizer=session.curRecognizer=null);for(var i=0;i<recognizers.length;)recognizer=recognizers[i],2===session.stopped||curRecognizer&&recognizer!=curRecognizer&&!recognizer.canRecognizeWith(curRecognizer)?recognizer.reset():recognizer.recognize(inputData),!curRecognizer&&recognizer.state&(STATE_BEGAN|STATE_CHANGED|STATE_ENDED)&&(curRecognizer=session.curRecognizer=recognizer),i++}},get:function(recognizer){if(recognizer instanceof Recognizer)return recognizer;for(var recognizers=this.recognizers,i=0;i<recognizers.length;i++)if(recognizers[i].options.event==recognizer)return recognizers[i];return null},add:function(recognizer){if(invokeArrayArg(recognizer,"add",this))return this;var existing=this.get(recognizer.options.event);return existing&&this.remove(existing),this.recognizers.push(recognizer),recognizer.manager=this,this.touchAction.update(),recognizer},remove:function(recognizer){if(invokeArrayArg(recognizer,"remove",this))return this;if(recognizer=this.get(recognizer)){var recognizers=this.recognizers,index=inArray(recognizers,recognizer);-1!==index&&(recognizers.splice(index,1),this.touchAction.update())}return this},on:function(events,handler){if(events!==undefined&&handler!==undefined){var handlers=this.handlers;return each(splitStr(events),function(event){handlers[event]=handlers[event]||[],handlers[event].push(handler)}),this}},off:function(events,handler){if(events!==undefined){var handlers=this.handlers;return each(splitStr(events),function(event){handler?handlers[event]&&handlers[event].splice(inArray(handlers[event],handler),1):delete handlers[event]}),this}},emit:function(event,data){this.options.domEvents&&function(event,data){var gestureEvent=document.createEvent("Event");gestureEvent.initEvent(event,!0,!0),gestureEvent.gesture=data,data.target.dispatchEvent(gestureEvent)}(event,data);var handlers=this.handlers[event]&&this.handlers[event].slice();if(handlers&&handlers.length){data.type=event,data.preventDefault=function(){data.srcEvent.preventDefault()};for(var i=0;i<handlers.length;)handlers[i](data),i++}},destroy:function(){this.element&&toggleCssProps(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},assign(Hammer,{INPUT_START:INPUT_START,INPUT_MOVE:INPUT_MOVE,INPUT_END:INPUT_END,INPUT_CANCEL:INPUT_CANCEL,STATE_POSSIBLE:STATE_POSSIBLE,STATE_BEGAN:STATE_BEGAN,STATE_CHANGED:STATE_CHANGED,STATE_ENDED:STATE_ENDED,STATE_RECOGNIZED:STATE_RECOGNIZED,STATE_CANCELLED:STATE_CANCELLED,STATE_FAILED:32,DIRECTION_NONE:DIRECTION_NONE,DIRECTION_LEFT:DIRECTION_LEFT,DIRECTION_RIGHT:DIRECTION_RIGHT,DIRECTION_UP:DIRECTION_UP,DIRECTION_DOWN:DIRECTION_DOWN,DIRECTION_HORIZONTAL:DIRECTION_HORIZONTAL,DIRECTION_VERTICAL:DIRECTION_VERTICAL,DIRECTION_ALL:DIRECTION_ALL,Manager:Manager,Input:Input,TouchAction:TouchAction,TouchInput:TouchInput,MouseInput:MouseInput,PointerEventInput:PointerEventInput,TouchMouseInput:TouchMouseInput,SingleTouchInput:SingleTouchInput,Recognizer:Recognizer,AttrRecognizer:AttrRecognizer,Tap:TapRecognizer,Pan:PanRecognizer,Swipe:SwipeRecognizer,Pinch:PinchRecognizer,Rotate:RotateRecognizer,Press:PressRecognizer,on:addEventListeners,off:removeEventListeners,each:each,merge:merge,extend:extend,assign:assign,inherit:inherit,bindFn:bindFn,prefixed:prefixed}),(void 0!==window?window:"undefined"!=typeof self?self:{}).Hammer=Hammer,"function"==typeof define&&define.amd?define("hammerjs",[],function(){return Hammer}):"undefined"!=typeof module&&module.exports?module.exports=Hammer:window.Hammer=Hammer}(window,document),function(factory){"function"==typeof define&&define.amd?define("jquery_hammer",["jquery","hammerjs"],factory):"object"==typeof exports?factory(require("jquery"),require("hammerjs")):factory(jQuery,Hammer)}(function($,Hammer){var originalEmit;$.fn.hammer=function(options){return this.each(function(){!function(el,options){var $el=$(el);$el.data("hammer")||$el.data("hammer",new Hammer($el[0],options))}(this,options)})},Hammer.Manager.prototype.emit=(originalEmit=Hammer.Manager.prototype.emit,function(type,data){originalEmit.call(this,type,data),$(this.element).trigger({type:type,gesture:data})})}),define("readium_js_viewer/gestures",["readium_shared_js/globals","jquery","jquery_hammer","hammerjs"],function(Globals,$,jqueryHammer,Hammer){return function(reader,viewport){this.initialize=function(){}}}),define("readium_js_viewer/TreineticEpubReader",["readium_shared_js/globals","./ModuleConfig","jquery","./Spinner","Settings","./TOCJsonCreator","./ExternalControls","./TreineticHelpers","./ReaderSettingsDialog","./Keyboard","./gestures","readium_js/Readium","readium_shared_js/helpers","readium_shared_js/models/bookmark_data"],function(Globals,moduleConfig,$,spinner,Settings,TOCJsonCreator,ExternalControls,TreineticHelpers,SettingsDialog,Keyboard,GesturesHandler,Readium,Helpers,BookmarkData){var KEYS_READER_STORAGE_KEY="reader",ebookURL_filepath=null,readium=null,embeded=!0,customSpinner=null;function init(element){return setUserKeyboardPreferences(),Keyboard.scope("reader"),unsubscribeFromReaderEvents(),function(reader_frame_element){var settings=setReaderPreferences();$(reader_frame_element).addClass("tr-epub-reader-element");var readerOptions={el:reader_frame_element,annotationCSSUrl:moduleConfig.annotationCSSUrl,mathJaxUrl:moduleConfig.mathJaxUrl,fonts:moduleConfig.fonts},readiumOptions={jsLibRoot:moduleConfig.jsLibRoot,openBookOptions:{}};customSpinner=spinner.createSpinner(moduleConfig.loader),moduleConfig.useSimpleLoader&&(readiumOptions.useSimpleLoader=!0);readium=new Readium(readiumOptions,readerOptions),window.READIUM=readium,loadPluginsWithReadiumSDK(readerOptions),setupKeyEvents(!0,$(reader_frame_element));var readerSettings={syntheticSpread:"auto",scroll:"auto"};embeded&&(readerSettings=settings.reader||SettingsDialog.defaultSettings);handleReaderEvents(),TreineticHelpers.updateReader(readium.reader,readerSettings)}(element),ExternalControls.getInstance()}function open(epubUrlOrFolder){var settings=setReaderPreferences();ebookURL_filepath=getEpubURLFilePath(epubUrlOrFolder);var openPageRequest=getOpenPageRequest(settings,ebookURL_filepath),goto=Helpers.getURLQueryParams().goto;openPageRequest=goto?getPageUrlWithSavedParams(goto):openPageRequest;var readerSettings={syntheticSpread:"auto",scroll:"auto"};embeded&&(readerSettings=settings.reader||SettingsDialog.defaultSettings),loadEpub(readerSettings,epubUrlOrFolder,openPageRequest)}var loadEpub=function(readerSettings,ebookURL,openPageRequest){readium.openPackageDocument(ebookURL,function(packageDocument,options){if(!packageDocument)return spin(!1),void ExternalControls.getInstance().epubFailed("epubfailed");packageDocument.generateTocListDOM(function(dom){var tocjson=TOCJsonCreator.createTOCJson(TOCJsonCreator.getFixedTocElement(dom));ExternalControls.getInstance().onTOCLoad(tocjson)}),readium.reader.isCurrentViewFixedLayout(),ExternalControls.getInstance().epubLoaded(options.metadata,packageDocument,readium.reader),ExternalControls.getInstance().registerChannel(function(message){"BOOKMARK_CURRENT_PAGE"===message&&savePlace()})},openPageRequest)},handleReaderEvents=function(){readium.reader.on(ReadiumSDK.Events.CONTENT_DOCUMENT_LOAD_START,function($iframe,spineItem){Globals.logEvent("CONTENT_DOCUMENT_LOAD_START","ON","EpubReader.js [ "+spineItem.href+" ]"),spin(!0),ExternalControls.getInstance().isAutoBookmark()&&savePlace()}),readium.reader.on(ReadiumSDK.Events.FXL_VIEW_RESIZED,function(){Globals.logEvent("FXL_VIEW_RESIZED","ON","EpubReader.js")}),readium.reader.on(ReadiumSDK.Events.CONTENT_DOCUMENT_LOADED,function($iframe,spineItem){spin(!1)}),readium.reader.on(ReadiumSDK.Events.PAGINATION_CHANGED,function(pageChangeData){Globals.logEvent("PAGINATION_CHANGED","ON","EpubReader.js"),ExternalControls.getInstance().isAutoBookmark()&&savePlace(),spin(!1)})},setupKeyEvents=function(embedded,$element){readium.reader.addIFrameEventListener("keydown",function(e){Keyboard.dispatch(document.documentElement,e.originalEvent)}),readium.reader.addIFrameEventListener("keyup",function(e){Keyboard.dispatch(document.documentElement,e.originalEvent)}),readium.reader.addIFrameEventListener("focus",function(e){$(window).trigger("focus")}),readium.reader.addIFrameEventListener("blur",function(e){}),Keyboard.on(Keyboard.NightTheme,"reader",function(){embedded&&Settings.get("reader",function(json){var isNight="night-theme"===(json=json||{}).theme;json.theme=isNight?"author-theme":"night-theme",Settings.put("reader",json),TreineticHelpers.updateReader(readium.reader,json)})}),Keyboard.on(Keyboard.ToolbarHide,"reader",function(){}),Keyboard.on(Keyboard.ToolbarShow,"reader",function(){}),Keyboard.on(Keyboard.PagePrevious,"reader",function(){isWithinForbiddenNavKeysArea()||prevPage()}),Keyboard.on(Keyboard.PagePreviousAlt,"reader",prevPage),Keyboard.on(Keyboard.PageNextAlt,"reader",nextPage),Keyboard.on(Keyboard.PageNext,"reader",function(){isWithinForbiddenNavKeysArea()||nextPage()});var setTocSize=function(){var height=ExternalControls.getInstance().getReaderHeight();if(height)$element.height(height);else if($element.length>0){var appHeight=$(document.body).height()-$element[0].offsetTop;$element.height(appHeight)}};$(window).on("resize",setTocSize),setTocSize()},nextPage=function(){readium.reader&&readium.reader.getPaginationInfo().canGoRight()&&readium.reader.openPageRight()},prevPage=function(){readium.reader&&readium.reader.getPaginationInfo().canGoPrev()&&readium.reader.openPageLeft()},loadPluginsWithReadiumSDK=function(readerOptions){ReadiumSDK.on(ReadiumSDK.Events.PLUGINS_LOADED,function(){Globals.logEvent("PLUGINS_LOADED","ON","EpubReader.js"),readium.reader.plugins.highlights?(readium.reader.plugins.highlights.initialize({annotationCSSUrl:readerOptions.annotationCSSUrl}),readium.reader.plugins.highlights.on("annotationClicked",function(type,idref,cfi,id){readium.reader.plugins.highlights.removeHighlight(id)})):$(".icon-annotations").css("display","none"),readium.reader.plugins.hypothesis&&(readium.reader.plugins.hypothesis.on("offsetPageButton",function(offset){0===offset?$("#right-page-btn").css("right",offset):$("#right-page-btn").css("right",offset-$("#right-page-btn").width())}),readium.reader.plugins.hypothesis.on("offsetNavBar",function(offset){$("#app-navbar").css("margin-right",offset),$("#reading-area").css("right",offset)}))}),new GesturesHandler(readium.reader,readerOptions.el).initialize()},getPageUrlWithSavedParams=function(goto){try{var gotoObj,openPageRequest_=void 0;if(goto.match(/^epubcfi\(.*?\)$/)){var gotoCfiComponents=goto.slice(8,-1).split("!");gotoObj={spineItemCfi:gotoCfiComponents[0],elementCfi:gotoCfiComponents[1]}}else gotoObj=JSON.parse(goto);if(gotoObj.idref?gotoObj.spineItemPageIndex?openPageRequest_={idref:gotoObj.idref,spineItemPageIndex:gotoObj.spineItemPageIndex}:gotoObj.elementCfi?(_debugBookmarkData_goto=new BookmarkData(gotoObj.idref,gotoObj.elementCfi),openPageRequest_={idref:gotoObj.idref,elementCfi:gotoObj.elementCfi}):openPageRequest_={idref:gotoObj.idref}:gotoObj.contentRefUrl&&gotoObj.sourceFileHref?openPageRequest_={contentRefUrl:gotoObj.contentRefUrl,sourceFileHref:gotoObj.sourceFileHref}:gotoObj.spineItemCfi&&(openPageRequest_={spineItemCfi:gotoObj.spineItemCfi,elementCfi:gotoObj.elementCfi}),openPageRequest_)return openPageRequest_}catch(err){Readerlog(err)}return null},getOpenPageRequest=function(settings,ebookURL_filepath){if(settings[ebookURL_filepath]){var bookmark=JSON.parse(settings[ebookURL_filepath]);if((bookmark=JSON.parse(bookmark))&&bookmark.idref)return{idref:bookmark.idref,elementCfi:bookmark.contentCFI}}return null},setUserKeyboardPreferences=function(){Settings.get(KEYS_READER_STORAGE_KEY,function(json){Keyboard.applySettings(json)})},setReaderPreferences=function(){var set=null;return Settings.getMultiple(["reader",ebookURL_filepath],function(settings){for(var prop in set=settings,settings.reader?settings.reader=JSON.parse(settings.reader):settings.reader={},SettingsDialog.defaultSettings)SettingsDialog.defaultSettings.hasOwnProperty(prop)&&(settings.reader.hasOwnProperty(prop)&&void 0!==settings.reader[prop]||(settings.reader[prop]=SettingsDialog.defaultSettings[prop]));Settings.put("reader",settings.reader)}),set},getEpubURLFilePath=function(ebookURL){return Helpers.getEbookUrlFilePath(ebookURL)},unsubscribeFromReaderEvents=function(){readium&&readium.reader&&(Globals.logEvent("__ALL__","OFF","ReaderWithControls.js"),readium.reader.off()),window.ReadiumSDK&&(Globals.logEvent("PLUGINS_LOADED","OFF","EReaderWithControls.js"),ReadiumSDK.off(ReadiumSDK.Events.PLUGINS_LOADED))},savePlace=function(){var bookmarkString=readium.reader.bookmarkCurrentPage();if(Settings.put(ebookURL_filepath,bookmarkString,$.noop),window.history&&window.history.replaceState){var urlParams=Helpers.getURLQueryParams(),ebookURL=urlParams.epub;if(!ebookURL)return;ebookURL=ensureUrlIsRelativeToApp(ebookURL);var bookmark=JSON.parse(bookmarkString)||{},epubs=urlParams.epubs,gotoParam=generateQueryParamCFI(bookmark),url=Helpers.buildUrlQueryParameters(void 0,{epub:ebookURL,epubs:epubs||" ",embedded:" ",goto:{value:gotoParam||" ",verbatim:!0}});history.replaceState({epub:ebookURL,epubs:epubs||void 0},"Readium Viewer",url)}},ensureUrlIsRelativeToApp=function(ebookURL){if(!ebookURL||0!==ebookURL.indexOf("http"))return ebookURL;var isHTTPS=0===ebookURL.indexOf("https"),regex_CORS_PROXY_HTTPs_TOKEN_ESCAPED=new RegExp("/(http[s]?):%2F%2F","gi"),appUrl=window.location?window.location.protocol+"//"+window.location.hostname+(window.location.port?":"+window.location.port:"")+window.location.pathname:void 0;return appUrl&&(Readerlog("EPUB URL absolute: "+ebookURL),Readerlog("App URL: "+appUrl),ebookURL=(ebookURL=ebookURL.replace("/http://","/http%3A%2F%2F")).replace("/https://","/https%3A%2F%2F"),0===(ebookURL=new URI(ebookURL).relativeTo(appUrl).toString()).indexOf("//")&&(ebookURL=(isHTTPS?"https:":"http:")+ebookURL),Readerlog("EPUB URL relative to app: "+(ebookURL=ebookURL.replace(regex_CORS_PROXY_HTTPs_TOKEN_ESCAPED,"/$1://")))),ebookURL},generateQueryParamCFI=function(bookmark){if(bookmark.idref){var contentCFI=bookmark.contentCFI?bookmark.contentCFI:"/0",spineItemPackageCFI=readium.reader.spine().getItemById(bookmark.idref).cfi;return encodeURI("epubcfi("+spineItemPackageCFI+contentCFI+")")}},isWithinForbiddenNavKeysArea=function(){return document.activeElement&&(document.activeElement===document.getElementById("volume-range-slider")||document.activeElement===document.getElementById("time-range-slider")||document.activeElement===document.getElementById("rate-range-slider")||jQuery.contains(document.getElementById("mo-sync-form"),document.activeElement)||jQuery.contains(document.getElementById("mo-highlighters"),document.activeElement))},spin=function(on){if(on){if(customSpinner.willSpin||customSpinner.isSpinning)return;customSpinner.willSpin=!0,setTimeout(function(){if(customSpinner.stopRequested)return customSpinner.willSpin=!1,void(customSpinner.stopRequested=!1);customSpinner.isSpinning=!0,customSpinner.spin($(".tr-epub-reader-element")[0]),customSpinner.willSpin=!1},100)}else customSpinner.isSpinning?(customSpinner.stop(),customSpinner.isSpinning=!1):customSpinner.willSpin&&(customSpinner.stopRequested=!0)};function Readerlog(obj){console.log(obj)}return{create:init,open:open,loadUI:function(data){init("#epub-reader-frame"),open(data.epub)},handler:function(){return ExternalControls.getInstance()},config:function(){return moduleConfig},ensureUrlIsRelativeToApp:ensureUrlIsRelativeToApp}}),require(["readium_shared_js/globalsSetup","readium_js_viewer/TreineticEpubReader"]),define("jquery",function(){return $}),require("readium_js_viewer/TreineticEpubReader")});
|
|
2
|
-
//# sourceMappingURL=TreineticEpubReader.min.js.map
|