diff --git a/dist/files_opds-0.6.2.tar.gz b/dist/files_opds-0.6.2.tar.gz new file mode 100644 index 0000000..660b72f Binary files /dev/null and b/dist/files_opds-0.6.2.tar.gz differ diff --git a/dist/files_reader-0.6.0.tar.gz b/dist/files_reader-0.6.0.tar.gz new file mode 100644 index 0000000..9d776e9 Binary files /dev/null and b/dist/files_reader-0.6.0.tar.gz differ diff --git a/files_opds/appinfo/info.xml b/files_opds/appinfo/info.xml index 6ad7f88..36048cb 100644 --- a/files_opds/appinfo/info.xml +++ b/files_opds/appinfo/info.xml @@ -2,9 +2,21 @@ files_opds OPDS catalog - Personal OPDS catalog + + The OPDS catalog app enables Owncloud users to publish a sub-tree of their personal filesystem as an OPDS feed. As of v0.3 OPDS catalog can extract all relevant metadata from EPUB documents. v0.5 introduced ISBN-based metadata retrieval, while Calibre-generated metadata.opf files are parsed since v0.6. + + If the directory in which the file is found contains a valid metadata.opf file, this file is parsed and all relevant Dublin Core metadata is applied to all files in the directory. If a cover is specified in this file, and the relevant file is found in the directory, this cover is used as preview and thumbnail for all files in the directory. If the metadata is invalid (ie. one or more of title, author and language are not defined) the files themselves are parsed for metadata in the 'normal' way. + + If an ISBN is found in either existing metadata or in the first 10 pages of the publication, metadata is retrieved from ISBNdb (key required, http://isbndb.com/account/logincreate, max. 500 queries/day) and Google Books (no key required). + + Documents for which no metadata is found will appear with sparse entries for now: only title (as in 'filename'), file size, cover image (where available), modification time and content links are provided. The first visit to a new (or updated) directory will take a bit longer while OPDS catalog scans for metadata, subsequent visits will be faster due to the use of cached metadata. + + The OPDS root feed links to a hierarchical navigation feed mirroring the directory structure as well as a 'personal bookshelf' containing links to all downloaded books (most recent download listed first). This 'personal bookshelf' will be empty (0 books) at first. Use the 'Browse catalog' link to download a book and it'll appear on the 'personal bookshelf'. Download another, and it will appear above the one you previously downloaded. This makes it possible to get at books you are in the process of reading from different devices, or to easily re-visit a book you downloaded earlier. + + The feed is in compliance with the OPDS 1.1 specification according to the online OPDS validator (http://opds-validator.appspot.com/). + AGPL - 0.6.1 + 0.6.2 Frank de Lange 7.0 true diff --git a/files_opds/appinfo/remote.php b/files_opds/appinfo/remote.php deleted file mode 100644 index a4abe2d..0000000 --- a/files_opds/appinfo/remote.php +++ /dev/null @@ -1,2 +0,0 @@ -create('opds_catalog', '/') ->actionInclude('files_opds/index.php'); $this->create('opds_catalog_admin_settings', 'ajax/admin.php') diff --git a/files_opds/img/app.svg b/files_opds/img/app.svg new file mode 100644 index 0000000..6dba3b4 --- /dev/null +++ b/files_opds/img/app.svg @@ -0,0 +1,55 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/files_opds/index.php b/files_opds/index.php index 0d065c0..963d2f9 100644 --- a/files_opds/index.php +++ b/files_opds/index.php @@ -58,7 +58,7 @@ $dirInfo = \OC\Files\Filesystem::getFileInfo($dir); /* If requested resource is a file, serve it, otherwise produce opds feed */ switch ($dirInfo->getType()) { case 'file': - if (isset($type)) { + if ($type) { Feed::servePreview($dir,$type); } else { Feed::serveFile($dir,$id); diff --git a/files_opds/lib/epub-preview.php b/files_opds/lib/epub-preview.php index 1bd0164..69e4f8b 100644 --- a/files_opds/lib/epub-preview.php +++ b/files_opds/lib/epub-preview.php @@ -35,7 +35,6 @@ class Epub extends Provider { $cover = $epub->Cover(); if ($cover) { - $image = new \OC_Image(); $image->loadFromData($cover['data']); diff --git a/files_reader/appinfo/app.php b/files_reader/appinfo/app.php index ba7ae50..34ccfca 100644 --- a/files_reader/appinfo/app.php +++ b/files_reader/appinfo/app.php @@ -1,5 +1,17 @@ files_reader Reader (ebook reader) - Online ePub file reader - 0.5.0 + + Reader is an ebook reader based on a pure javascript epub renderer. It only works for books formatted according to the epub standard. + + Using the futurepress epub.js renderer (https://github.com/futurepress/epub.js) it provides near-native looks, especially when used full-screen. Turn pages by pressing the left/right hand side of the screen/window or using the cursor keys (if you have those), use the sidebar to browse through chapters or bookmarks and add annotations. + + Reader has a night mode (toggled by clicking or pressing the book title/author on top of the viewer) to read in the dark without waking up the neighbours. This is obviously most effective when used full-screen. The colours used for night mode are configurable in the Settings dialog. + + Also in Settings you'll find the option to use ignore any internal formatting in the book by forcing a given font style and size. + + 0.6.0 LGPL - Frank de Lange, (taken clues from Thomas Müller/files_pdfviewer, using slightly modified Futurepress/epub.js) + Frank de Lange 7.0 false diff --git a/files_reader/appinfo/routes.php b/files_reader/appinfo/routes.php index 5a3b930..bf5901f 100644 --- a/files_reader/appinfo/routes.php +++ b/files_reader/appinfo/routes.php @@ -10,6 +10,9 @@ * later. */ -$this->create('files_reader', '/') - ->actionInclude('files_reader/viewer.php'); +namespace OCA\Files_Reader\AppInfo; + +return ['routes' => [ + ['name' => 'display#showReader', 'url' => '/', 'verb' => 'GET'], +]]; diff --git a/files_reader/controller/displaycontroller.php b/files_reader/controller/displaycontroller.php new file mode 100644 index 0000000..980931d --- /dev/null +++ b/files_reader/controller/displaycontroller.php @@ -0,0 +1,47 @@ +urlGenerator = $urlGenerator; + } + + /** + * @PublicPage + * @NoCSRFRequired + * + * @return TemplateResponse + */ + public function showReader() { + $params = [ + 'urlGenerator' => $this->urlGenerator + ]; + + return new TemplateResponse($this->appName, 'reader', $params, 'blank'); + } + +} diff --git a/files_reader/img/app.svg b/files_reader/img/app.svg new file mode 100644 index 0000000..6dba3b4 --- /dev/null +++ b/files_reader/img/app.svg @@ -0,0 +1,55 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/files_reader/js/epub.js.map b/files_reader/js/epub.js.map deleted file mode 100644 index a4a6e6c..0000000 --- a/files_reader/js/epub.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"epub.min.js","sources":["epub.js"],"names":["n","this","t","_","r","e","Array","prototype","u","Object","i","Function","a","push","o","slice","c","concat","l","toString","f","hasOwnProperty","s","forEach","p","map","h","reduce","v","reduceRight","d","filter","g","every","m","some","y","indexOf","b","lastIndexOf","x","isArray","keys","j","bind","w","_wrapped","exports","module","VERSION","A","each","length","call","has","collect","O","foldl","inject","arguments","TypeError","foldr","find","detect","E","select","reject","all","identity","any","contains","include","invoke","isFunction","apply","pluck","where","isEmpty","findWhere","max","Math","computed","value","min","shuffle","random","k","sortBy","index","criteria","sort","F","groupBy","countBy","sortedIndex","toArray","values","size","first","head","take","initial","last","rest","tail","drop","compact","R","flatten","without","difference","uniq","unique","union","intersection","zip","object","range","ceil","partial","bindAll","functions","memoize","delay","setTimeout","defer","throttle","Date","clearTimeout","debounce","once","wrap","compose","after","pairs","invert","methods","extend","pick","omit","defaults","clone","isObject","tap","I","source","global","multiline","ignoreCase","constructor","pop","isEqual","isString","isElement","nodeType","isArguments","isFinite","isNaN","parseFloat","isNumber","isBoolean","isNull","isUndefined","noConflict","times","floor","M","escape","&","<",">","\"","'","/","unescape","S","RegExp","join","replace","result","mixin","D","N","uniqueId","templateSettings","evaluate","interpolate","T","q","\\","\r","\n","\t","
","
","B","template","variable","chain","_chain","define","requireModule","require","requirejs","registry","seen","name","deps","callback","resolve","child","charAt","parts","split","parentBase","part","_eak_seen","Error","mod","reified","__dependency1__","__exports__","Promise","array","label","__dependency2__","fulfilled","state","rejected","reason","isNonThenable","entries","fulfilledResolver","resolveAll","rejectedResolver","results","remaining","entry","cast","then","useNextTick","process","nextTick","flush","useMutationObserver","iterations","observer","BrowserMutationObserver","node","document","createTextNode","observe","characterData","data","useSetTimeout","queue","tuple","arg","scheduleFlush","browserGlobal","window","MutationObserver","WebKitMutationObserver","configure","config","on","EventTarget","instrument","deferred","promise","callbacks","callbacksFor","_promiseCallbacks","off","trigger","undefined","eventName","allCallbacks","splice","options","__dependency3__","promises","filterFn","filterResults","valuesLen","filtered","keysOf","fulfilledTo","property","onRejection","now","guid","_guidKey","_id","detail","_detail","childGuid","_label","timeStamp","stack","error","mapFn","resultLen","mappedResults","makeNodeCallbackFor","nodeFunc","binding","nodeArgs","thisArg","__dependency4__","__dependency5__","__dependency6__","__dependency7__","__dependency8__","__dependency9__","noop","resolver","counter","_subscribers","invokeResolver","resolvePromise","rejectPromise","subscribe","parent","onFulfillment","subscribers","FULFILLED","REJECTED","publish","settled","invokeCallback","succeeded","failed","hasCallback","handleThenable","resolved","objectOrFunction","val","fulfill","_state","PENDING","SEALED","async","publishFulfillment","publishRejection","_onerror","race","Resolve","Reject","guidKey","thenPromise","catch","finally","Constructor","fulfillmentAt","pending","getTime","prop","__dependency10__","__dependency11__","__dependency12__","__dependency13__","__dependency14__","__dependency15__","denodeify","allSettled","hash","rethrow","asap","__PROMISE_INSTRUMENTATION__","RSVP","EPUBJS","plugins","filePath","Render","root","previousEpub","ePub","bookPath","Book","amd","settings","bookKey","packageUrl","storage","fromStorage","saved","online","contained","width","height","layoutOveride","orientation","minSpreadWidth","gap","version","restore","reload","goto","styles","headTags","withCredentials","render_method","EPUBJSVERSION","spinePos","stored","navigator","onLine","networkListeners","store","fileStorage","ready","manifest","spine","metadata","cover","toc","pageList","readyPromises","pagination","Pagination","pageListReady","_ready","isRendered","_q","core","_rendering","_displayQ","_moving","_gotoQ","renderer","Renderer","setMinSpreadWidth","setGap","listenToRenderer","defer_opened","opened","open","addEventListener","unload","forceReload","epubpackage","book","bookUrl","urlFrom","isContained","unarchive","loadPackage","localStorage","packageXml","identifier","packageIdentifier","restored","unpack","storeOffline","_registerReplacements","_containerPath","parse","Parser","containerPath","loadXml","containerXml","container","paths","contentsPath","basePath","packagePath","encoding","console","contents","packageContents","spineIndexByURL","generateBookKey","globalLayoutProperties","parseLayoutProperties","coverPath","spineNodeIndex","navPath","navUrl","navHtml","nav","epubcfi","EpubCFI","wait","pg","cfi","generateCfiFromHref","href","tocPath","tocUrl","tocXml","createHiddenRender","_width","_height","hiddenContainer","hiddenEl","box","element","getBoundingClientRect","forceSingle","createElement","style","visibility","overflow","appendChild","initialize","generatePageList","pager","spineLength","currentPage","nextChapter","chapter","next","done","Chapter","displayChapter","pageMap","item","start","page","spreads","end","remove","removeChild","generatePagination","defered","loadPagination","pagelistJSON","JSON","getPageList","getMetadata","getToc","Events","startPage","endPage","percent","pageRange","pageFromCfi","percentageFromPage","anchorPage","percentage","loadChange","url","uri","currentChapter","absolute","path","warn","filename","unlistenToRenderer","getXml","request","base","protocol","fromRoot","location","origin","host","baseTag","getElementsByTagName","resolveUrl","pathname","Unarchiver","openZip","extension","isSaved","storedSettings","getItem","saveContents","setItem","stringify","removeSavedContents","removeItem","renderTo","elem","rendered","getEl","direction","setDirection","_rendered","startDisplay","display","previousLocationCfi","gotoCfi","fetch","fromStore","len","clearSaved","chap","render","pos","enqueue","lastPage","preloadNextChapter","dequeue","message","nextPage","prevPage","prev","prevChapter","linear","getCurrentLocationCfi","currentLocationCfi","target","gotoPercentage","parseInt","substring","gotoPage","gotoHref","cfiString","spineItem","section","relativeURL","firstPage","cfiFromPage","pageFromPercentage","assets","batch","availableOffline","setStyle","prefixed","noreflow","reformat","removeStyle","addHeadTag","tag","attrs","useSpreads","use","_use","force","load","destroy","removeEventListener","applyStyles","applyHeadTags","registerHook","hrefs","_needsAssetReplacement","resources","svg","getStorageType","layout","spread","event","spineObject","id","cfiBase","properties","manifestProperties","pages","loaded","_store","get","xml","setDocument","doc","serializer","XMLSerializer","setAttribute","insertBefore","firstChild","serializeToString","tempUrl","getUrl","setPages","num","getPages","getID","ID","revokeUrl","_document","namespaceURI","doctype","implementation","createDocument","importNode","documentElement","cfiFromRange","_range","startXpath","endXpath","startContainer","endContainer","cleanEndTextContent","getElementXPath","nsResolver","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","collapsed","createRange","setStart","startOffset","setEnd","endOffset","log","cleanStartTextContent","cleanStringForXpath","textContent","generateCfiFromRange","_query","matches","query","toLowerCase","excerpt","text","limit","textSprint","func","treeWalker","createTreeWalker","NodeFilter","SHOW_TEXT","acceptNode","test","FILTER_ACCEPT","FILTER_REJECT","nextNode","getElementById","getEls","classes","getElementsByClassName","type","handler","readyState","DONE","status","responseXML","response","supportsURL","Blob","URL","BLOB_RESPONSE","xhr","XMLHttpRequest","xhrPrototype","defineProperty","onreadystatechange","responseType","setRequestHeader","overrideMimeType","send","obj","arr","member","newitm","ident","withoutProtocol","dot","firstSlash","directory","fragment","blob","doubleSlash","search","folder","lastSlash","dataURLToBlob","dataURL","contentType","raw","rawLength","uInt8Array","BASE64_MARKER","atob","Uint8Array","charCodeAt","addScript","src","onload","body","addScripts","srcArr","total","curr","cb","addCss","rel","unprefixed","vendors","upper","toUpperCase","segments","folders","uuid","insert","compareFunction","locationOf","_start","_end","compared","pivot","indexOfSorted","_scope","scope","funcName","args","context","inwait","shift","clear","getElementTreeXPath","nodeName","tagName","pathIndex","isXhtml","ownerDocument","getAttribute","Node","TEXT_NODE","indexOfTextNode","parentNode","sibling","previousSibling","DOCUMENT_TYPE_NODE","prefix","ns","xhtml","epub","str","match","textNode","sib","children","childNodes","cfiStr","generateChapterComponent","_spineNodeIndex","_pos","generatePathComponent","steps","segment","generateCfiFromElement","pathTo","unshift","getChapterComponent","splitStr","getPathComponent","pathComponent","getCharecterOffsetComponent","chapSegment","chapterComponent","charecterOffsetComponent","assertion","chapId","endInt","parseStep","has_brackets","spineId","step","characterOffset","textLocationAssertion","addMarker","_doc","_marker","lastStep","marker","createMarker","findParent","splitText","classList","add","removeMarker","nextSib","nextSibling","prevSib","sections","compare","cfiOne","cfiTwo","generateCfiFromTextNode","anchor","offset","generateCfiFromRangeAnchor","anchorNode","anchorOffset","startElement","startSteps","startPath","startIndex","endElement","endSteps","endPath","endIndex","generateXpathFromSteps","xpath","position","generateRangeFromCfi","textLength","debug","selectNode","el","events","createEvent","tell","listen","deafen","listenUntil","evt","CustomEvent","msg","dispatchEvent","bindto","OnEvt","OffEvt","unlisten","hooks","Hooks","getHooks","plugs","plugType","hook","toAdd","toFront","triggerHooks","passed","countdown","count","register","Layout","Reflowable","spreadWidth","format","_gap","columnAxis","columnGap","columnWidth","columnFill","colWidth","pageWidth","pageHeight","calculatePages","totalWidth","displayedPages","scrollWidth","pageCount","ReflowableSpreads","divisor","fullWidth","Fixed","content","viewport","querySelector","hasAttribute","locations","totalPages","round","percentageFromCfi","baseUrl","rootfile","fullpath","xmlEncoding","metadataNode","getElementText","manifestNode","spineNode","findNavPath","findTocPath","findCoverPath","tocId","bookTitle","creator","description","pubdate","publisher","language","rights","modified_date","querySelectorText","found","getElementsByTagNameNS","nodeValue","manifestXml","selected","querySelectorAll","items","spineXml","Id","props","propArray","manifestProps","manifestPropArray","vert","bookSpine","findListItems","findAnchorOrSpan","getTOC","list","nodes","subitems","idCounter","navEl","snapshot","ORDERED_NODE_SNAPSHOT_TYPE","snapshotLength","snapshotItem","navLabel","navMap","isCfi","Iframe","iframe","docEl","bodyEl","leftPos","create","scrolling","seamless","border","contentDocument","headEl","contentWindow","resized","margin","dir","right","onerror","resize","totalHeight","scrollHeight","setPageDimensions","setLeft","defaultView","scrollTo","tagEl","attr","getPageNumberByElement","left","getPageNumberByRect","boundingClientRect","getBaseElement","getDocumentElement","isElementVisible","rect","scroll","bool","renderMethod","hidden","listenedEvents","upEvent","downEvent","caches","isForcedSingle","onResized","layoutSettings","initWidth","initHeight","clientWidth","clientHeight","globalLayout","removeEventListeners","removeSelectionListeners","chapterPos","currentChapterCfiBase","reconcileLayoutSettings","layoutMethod","determineLayout","visible","formated","addEventListeners","addSelectionListeners","beforeDisplay","queued","updatePages","visibleRangeCfi","getVisibleRangeCfi","rendition","determineSpreads","mapPage","headTag","pageByElement","firstElementisTextNode","leng","trim","walk","prevNode","startNode","STOP","ITER","containsPoint","childElementCount","sprint","SHOW_ELEMENT","prevRange","elLimit","check","elPos","elRange","ELEMENT_NODE","selectNodeContents","checkText","ranges","splitTextNodeIntoWordsRanges","collapse","indexOfBreakableChar","startPosition","whiteCharacters","rangePosition","getClientRects","getPageCfi","startRange","getRange","forceElement","caretPositionFromPoint","caretRangeFromPoint","visibileEl","findElementAfter","offsetNode","pagesInCurrentChapter","pgs","currentRenderedPage","getRenderedPagesLeft","pagesLeft","endRange","findFirstVisible","startEl","setSize","triggerEvent","onSelectionChange","selectionEndTimeout","selectedRange","getSelection","cutoff","finished","progress","called","full","replaceWithStored","_oldUrls","_newUrls","_cache","_uri","_chapterBase","_attr","_wait","link","replaceUrl","timeout","replacments","relative","isRelative","onclick","links","srcs","stylesheets","getText","cssUrls","newText","_URL","webkitURL","mozURL","createObjectURL","replaced","loadLib","urlCache","zipUrl","JSZip","parser","DOMParser","parseFromString","mime","unarchiver","decodededUrl","decodeURIComponent","file","asUint8Array","getMimeType","asText","fromCache","revokeObjectURL","afterSaved","toStorage","that","saveEntryFileToStorage"],"mappings":"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"} \ No newline at end of file diff --git a/files_reader/js/epub.min.map b/files_reader/js/epub.min.map deleted file mode 100644 index a4a6e6c..0000000 --- a/files_reader/js/epub.min.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"epub.min.js","sources":["epub.js"],"names":["n","this","t","_","r","e","Array","prototype","u","Object","i","Function","a","push","o","slice","c","concat","l","toString","f","hasOwnProperty","s","forEach","p","map","h","reduce","v","reduceRight","d","filter","g","every","m","some","y","indexOf","b","lastIndexOf","x","isArray","keys","j","bind","w","_wrapped","exports","module","VERSION","A","each","length","call","has","collect","O","foldl","inject","arguments","TypeError","foldr","find","detect","E","select","reject","all","identity","any","contains","include","invoke","isFunction","apply","pluck","where","isEmpty","findWhere","max","Math","computed","value","min","shuffle","random","k","sortBy","index","criteria","sort","F","groupBy","countBy","sortedIndex","toArray","values","size","first","head","take","initial","last","rest","tail","drop","compact","R","flatten","without","difference","uniq","unique","union","intersection","zip","object","range","ceil","partial","bindAll","functions","memoize","delay","setTimeout","defer","throttle","Date","clearTimeout","debounce","once","wrap","compose","after","pairs","invert","methods","extend","pick","omit","defaults","clone","isObject","tap","I","source","global","multiline","ignoreCase","constructor","pop","isEqual","isString","isElement","nodeType","isArguments","isFinite","isNaN","parseFloat","isNumber","isBoolean","isNull","isUndefined","noConflict","times","floor","M","escape","&","<",">","\"","'","/","unescape","S","RegExp","join","replace","result","mixin","D","N","uniqueId","templateSettings","evaluate","interpolate","T","q","\\","\r","\n","\t","
","
","B","template","variable","chain","_chain","define","requireModule","require","requirejs","registry","seen","name","deps","callback","resolve","child","charAt","parts","split","parentBase","part","_eak_seen","Error","mod","reified","__dependency1__","__exports__","Promise","array","label","__dependency2__","fulfilled","state","rejected","reason","isNonThenable","entries","fulfilledResolver","resolveAll","rejectedResolver","results","remaining","entry","cast","then","useNextTick","process","nextTick","flush","useMutationObserver","iterations","observer","BrowserMutationObserver","node","document","createTextNode","observe","characterData","data","useSetTimeout","queue","tuple","arg","scheduleFlush","browserGlobal","window","MutationObserver","WebKitMutationObserver","configure","config","on","EventTarget","instrument","deferred","promise","callbacks","callbacksFor","_promiseCallbacks","off","trigger","undefined","eventName","allCallbacks","splice","options","__dependency3__","promises","filterFn","filterResults","valuesLen","filtered","keysOf","fulfilledTo","property","onRejection","now","guid","_guidKey","_id","detail","_detail","childGuid","_label","timeStamp","stack","error","mapFn","resultLen","mappedResults","makeNodeCallbackFor","nodeFunc","binding","nodeArgs","thisArg","__dependency4__","__dependency5__","__dependency6__","__dependency7__","__dependency8__","__dependency9__","noop","resolver","counter","_subscribers","invokeResolver","resolvePromise","rejectPromise","subscribe","parent","onFulfillment","subscribers","FULFILLED","REJECTED","publish","settled","invokeCallback","succeeded","failed","hasCallback","handleThenable","resolved","objectOrFunction","val","fulfill","_state","PENDING","SEALED","async","publishFulfillment","publishRejection","_onerror","race","Resolve","Reject","guidKey","thenPromise","catch","finally","Constructor","fulfillmentAt","pending","getTime","prop","__dependency10__","__dependency11__","__dependency12__","__dependency13__","__dependency14__","__dependency15__","denodeify","allSettled","hash","rethrow","asap","__PROMISE_INSTRUMENTATION__","RSVP","EPUBJS","plugins","filePath","Render","root","previousEpub","ePub","bookPath","Book","amd","settings","bookKey","packageUrl","storage","fromStorage","saved","online","contained","width","height","layoutOveride","orientation","minSpreadWidth","gap","version","restore","reload","goto","styles","headTags","withCredentials","render_method","EPUBJSVERSION","spinePos","stored","navigator","onLine","networkListeners","store","fileStorage","ready","manifest","spine","metadata","cover","toc","pageList","readyPromises","pagination","Pagination","pageListReady","_ready","isRendered","_q","core","_rendering","_displayQ","_moving","_gotoQ","renderer","Renderer","setMinSpreadWidth","setGap","listenToRenderer","defer_opened","opened","open","addEventListener","unload","forceReload","epubpackage","book","bookUrl","urlFrom","isContained","unarchive","loadPackage","localStorage","packageXml","identifier","packageIdentifier","restored","unpack","storeOffline","_registerReplacements","_containerPath","parse","Parser","containerPath","loadXml","containerXml","container","paths","contentsPath","basePath","packagePath","encoding","console","contents","packageContents","spineIndexByURL","generateBookKey","globalLayoutProperties","parseLayoutProperties","coverPath","spineNodeIndex","navPath","navUrl","navHtml","nav","epubcfi","EpubCFI","wait","pg","cfi","generateCfiFromHref","href","tocPath","tocUrl","tocXml","createHiddenRender","_width","_height","hiddenContainer","hiddenEl","box","element","getBoundingClientRect","forceSingle","createElement","style","visibility","overflow","appendChild","initialize","generatePageList","pager","spineLength","currentPage","nextChapter","chapter","next","done","Chapter","displayChapter","pageMap","item","start","page","spreads","end","remove","removeChild","generatePagination","defered","loadPagination","pagelistJSON","JSON","getPageList","getMetadata","getToc","Events","startPage","endPage","percent","pageRange","pageFromCfi","percentageFromPage","anchorPage","percentage","loadChange","url","uri","currentChapter","absolute","path","warn","filename","unlistenToRenderer","getXml","request","base","protocol","fromRoot","location","origin","host","baseTag","getElementsByTagName","resolveUrl","pathname","Unarchiver","openZip","extension","isSaved","storedSettings","getItem","saveContents","setItem","stringify","removeSavedContents","removeItem","renderTo","elem","rendered","getEl","direction","setDirection","_rendered","startDisplay","display","previousLocationCfi","gotoCfi","fetch","fromStore","len","clearSaved","chap","render","pos","enqueue","lastPage","preloadNextChapter","dequeue","message","nextPage","prevPage","prev","prevChapter","linear","getCurrentLocationCfi","currentLocationCfi","target","gotoPercentage","parseInt","substring","gotoPage","gotoHref","cfiString","spineItem","section","relativeURL","firstPage","cfiFromPage","pageFromPercentage","assets","batch","availableOffline","setStyle","prefixed","noreflow","reformat","removeStyle","addHeadTag","tag","attrs","useSpreads","use","_use","force","load","destroy","removeEventListener","applyStyles","applyHeadTags","registerHook","hrefs","_needsAssetReplacement","resources","svg","getStorageType","layout","spread","event","spineObject","id","cfiBase","properties","manifestProperties","pages","loaded","_store","get","xml","setDocument","doc","serializer","XMLSerializer","setAttribute","insertBefore","firstChild","serializeToString","tempUrl","getUrl","setPages","num","getPages","getID","ID","revokeUrl","_document","namespaceURI","doctype","implementation","createDocument","importNode","documentElement","cfiFromRange","_range","startXpath","endXpath","startContainer","endContainer","cleanEndTextContent","getElementXPath","nsResolver","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","collapsed","createRange","setStart","startOffset","setEnd","endOffset","log","cleanStartTextContent","cleanStringForXpath","textContent","generateCfiFromRange","_query","matches","query","toLowerCase","excerpt","text","limit","textSprint","func","treeWalker","createTreeWalker","NodeFilter","SHOW_TEXT","acceptNode","test","FILTER_ACCEPT","FILTER_REJECT","nextNode","getElementById","getEls","classes","getElementsByClassName","type","handler","readyState","DONE","status","responseXML","response","supportsURL","Blob","URL","BLOB_RESPONSE","xhr","XMLHttpRequest","xhrPrototype","defineProperty","onreadystatechange","responseType","setRequestHeader","overrideMimeType","send","obj","arr","member","newitm","ident","withoutProtocol","dot","firstSlash","directory","fragment","blob","doubleSlash","search","folder","lastSlash","dataURLToBlob","dataURL","contentType","raw","rawLength","uInt8Array","BASE64_MARKER","atob","Uint8Array","charCodeAt","addScript","src","onload","body","addScripts","srcArr","total","curr","cb","addCss","rel","unprefixed","vendors","upper","toUpperCase","segments","folders","uuid","insert","compareFunction","locationOf","_start","_end","compared","pivot","indexOfSorted","_scope","scope","funcName","args","context","inwait","shift","clear","getElementTreeXPath","nodeName","tagName","pathIndex","isXhtml","ownerDocument","getAttribute","Node","TEXT_NODE","indexOfTextNode","parentNode","sibling","previousSibling","DOCUMENT_TYPE_NODE","prefix","ns","xhtml","epub","str","match","textNode","sib","children","childNodes","cfiStr","generateChapterComponent","_spineNodeIndex","_pos","generatePathComponent","steps","segment","generateCfiFromElement","pathTo","unshift","getChapterComponent","splitStr","getPathComponent","pathComponent","getCharecterOffsetComponent","chapSegment","chapterComponent","charecterOffsetComponent","assertion","chapId","endInt","parseStep","has_brackets","spineId","step","characterOffset","textLocationAssertion","addMarker","_doc","_marker","lastStep","marker","createMarker","findParent","splitText","classList","add","removeMarker","nextSib","nextSibling","prevSib","sections","compare","cfiOne","cfiTwo","generateCfiFromTextNode","anchor","offset","generateCfiFromRangeAnchor","anchorNode","anchorOffset","startElement","startSteps","startPath","startIndex","endElement","endSteps","endPath","endIndex","generateXpathFromSteps","xpath","position","generateRangeFromCfi","textLength","debug","selectNode","el","events","createEvent","tell","listen","deafen","listenUntil","evt","CustomEvent","msg","dispatchEvent","bindto","OnEvt","OffEvt","unlisten","hooks","Hooks","getHooks","plugs","plugType","hook","toAdd","toFront","triggerHooks","passed","countdown","count","register","Layout","Reflowable","spreadWidth","format","_gap","columnAxis","columnGap","columnWidth","columnFill","colWidth","pageWidth","pageHeight","calculatePages","totalWidth","displayedPages","scrollWidth","pageCount","ReflowableSpreads","divisor","fullWidth","Fixed","content","viewport","querySelector","hasAttribute","locations","totalPages","round","percentageFromCfi","baseUrl","rootfile","fullpath","xmlEncoding","metadataNode","getElementText","manifestNode","spineNode","findNavPath","findTocPath","findCoverPath","tocId","bookTitle","creator","description","pubdate","publisher","language","rights","modified_date","querySelectorText","found","getElementsByTagNameNS","nodeValue","manifestXml","selected","querySelectorAll","items","spineXml","Id","props","propArray","manifestProps","manifestPropArray","vert","bookSpine","findListItems","findAnchorOrSpan","getTOC","list","nodes","subitems","idCounter","navEl","snapshot","ORDERED_NODE_SNAPSHOT_TYPE","snapshotLength","snapshotItem","navLabel","navMap","isCfi","Iframe","iframe","docEl","bodyEl","leftPos","create","scrolling","seamless","border","contentDocument","headEl","contentWindow","resized","margin","dir","right","onerror","resize","totalHeight","scrollHeight","setPageDimensions","setLeft","defaultView","scrollTo","tagEl","attr","getPageNumberByElement","left","getPageNumberByRect","boundingClientRect","getBaseElement","getDocumentElement","isElementVisible","rect","scroll","bool","renderMethod","hidden","listenedEvents","upEvent","downEvent","caches","isForcedSingle","onResized","layoutSettings","initWidth","initHeight","clientWidth","clientHeight","globalLayout","removeEventListeners","removeSelectionListeners","chapterPos","currentChapterCfiBase","reconcileLayoutSettings","layoutMethod","determineLayout","visible","formated","addEventListeners","addSelectionListeners","beforeDisplay","queued","updatePages","visibleRangeCfi","getVisibleRangeCfi","rendition","determineSpreads","mapPage","headTag","pageByElement","firstElementisTextNode","leng","trim","walk","prevNode","startNode","STOP","ITER","containsPoint","childElementCount","sprint","SHOW_ELEMENT","prevRange","elLimit","check","elPos","elRange","ELEMENT_NODE","selectNodeContents","checkText","ranges","splitTextNodeIntoWordsRanges","collapse","indexOfBreakableChar","startPosition","whiteCharacters","rangePosition","getClientRects","getPageCfi","startRange","getRange","forceElement","caretPositionFromPoint","caretRangeFromPoint","visibileEl","findElementAfter","offsetNode","pagesInCurrentChapter","pgs","currentRenderedPage","getRenderedPagesLeft","pagesLeft","endRange","findFirstVisible","startEl","setSize","triggerEvent","onSelectionChange","selectionEndTimeout","selectedRange","getSelection","cutoff","finished","progress","called","full","replaceWithStored","_oldUrls","_newUrls","_cache","_uri","_chapterBase","_attr","_wait","link","replaceUrl","timeout","replacments","relative","isRelative","onclick","links","srcs","stylesheets","getText","cssUrls","newText","_URL","webkitURL","mozURL","createObjectURL","replaced","loadLib","urlCache","zipUrl","JSZip","parser","DOMParser","parseFromString","mime","unarchiver","decodededUrl","decodeURIComponent","file","asUint8Array","getMimeType","asText","fromCache","revokeObjectURL","afterSaved","toStorage","that","saveEntryFileToStorage"],"mappings":"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"} \ No newline at end of file diff --git a/files_reader/js/lib/Blob.js b/files_reader/js/lib/Blob.js new file mode 100644 index 0000000..3b44c65 --- /dev/null +++ b/files_reader/js/lib/Blob.js @@ -0,0 +1,197 @@ +/* Blob.js + * A Blob implementation. + * 2014-07-24 + * + * By Eli Grey, http://eligrey.com + * By Devin Samarin, https://github.com/dsamarin + * License: X11/MIT + * See https://github.com/eligrey/Blob.js/blob/master/LICENSE.md + */ + +/*global self, unescape */ +/*jslint bitwise: true, regexp: true, confusion: true, es5: true, vars: true, white: true, + plusplus: true */ + +/*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */ + +(function (view) { + "use strict"; + + view.URL = view.URL || view.webkitURL; + + if (view.Blob && view.URL) { + try { + new Blob; + return; + } catch (e) {} + } + + // Internally we use a BlobBuilder implementation to base Blob off of + // in order to support older browsers that only have BlobBuilder + var BlobBuilder = view.BlobBuilder || view.WebKitBlobBuilder || view.MozBlobBuilder || (function(view) { + var + get_class = function(object) { + return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]$/)[1]; + } + , FakeBlobBuilder = function BlobBuilder() { + this.data = []; + } + , FakeBlob = function Blob(data, type, encoding) { + this.data = data; + this.size = data.length; + this.type = type; + this.encoding = encoding; + } + , FBB_proto = FakeBlobBuilder.prototype + , FB_proto = FakeBlob.prototype + , FileReaderSync = view.FileReaderSync + , FileException = function(type) { + this.code = this[this.name = type]; + } + , file_ex_codes = ( + "NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR " + + "NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR" + ).split(" ") + , file_ex_code = file_ex_codes.length + , real_URL = view.URL || view.webkitURL || view + , real_create_object_URL = real_URL.createObjectURL + , real_revoke_object_URL = real_URL.revokeObjectURL + , URL = real_URL + , btoa = view.btoa + , atob = view.atob + + , ArrayBuffer = view.ArrayBuffer + , Uint8Array = view.Uint8Array + + , origin = /^[\w-]+:\/*\[?[\w\.:-]+\]?(?::[0-9]+)?/ + ; + FakeBlob.fake = FB_proto.fake = true; + while (file_ex_code--) { + FileException.prototype[file_ex_codes[file_ex_code]] = file_ex_code + 1; + } + // Polyfill URL + if (!real_URL.createObjectURL) { + URL = view.URL = function(uri) { + var + uri_info = document.createElementNS("http://www.w3.org/1999/xhtml", "a") + , uri_origin + ; + uri_info.href = uri; + if (!("origin" in uri_info)) { + if (uri_info.protocol.toLowerCase() === "data:") { + uri_info.origin = null; + } else { + uri_origin = uri.match(origin); + uri_info.origin = uri_origin && uri_origin[1]; + } + } + return uri_info; + }; + } + URL.createObjectURL = function(blob) { + var + type = blob.type + , data_URI_header + ; + if (type === null) { + type = "application/octet-stream"; + } + if (blob instanceof FakeBlob) { + data_URI_header = "data:" + type; + if (blob.encoding === "base64") { + return data_URI_header + ";base64," + blob.data; + } else if (blob.encoding === "URI") { + return data_URI_header + "," + decodeURIComponent(blob.data); + } if (btoa) { + return data_URI_header + ";base64," + btoa(blob.data); + } else { + return data_URI_header + "," + encodeURIComponent(blob.data); + } + } else if (real_create_object_URL) { + return real_create_object_URL.call(real_URL, blob); + } + }; + URL.revokeObjectURL = function(object_URL) { + if (object_URL.substring(0, 5) !== "data:" && real_revoke_object_URL) { + real_revoke_object_URL.call(real_URL, object_URL); + } + }; + FBB_proto.append = function(data/*, endings*/) { + var bb = this.data; + // decode data to a binary string + if (Uint8Array && (data instanceof ArrayBuffer || data instanceof Uint8Array)) { + var + str = "" + , buf = new Uint8Array(data) + , i = 0 + , buf_len = buf.length + ; + for (; i < buf_len; i++) { + str += String.fromCharCode(buf[i]); + } + bb.push(str); + } else if (get_class(data) === "Blob" || get_class(data) === "File") { + if (FileReaderSync) { + var fr = new FileReaderSync; + bb.push(fr.readAsBinaryString(data)); + } else { + // async FileReader won't work as BlobBuilder is sync + throw new FileException("NOT_READABLE_ERR"); + } + } else if (data instanceof FakeBlob) { + if (data.encoding === "base64" && atob) { + bb.push(atob(data.data)); + } else if (data.encoding === "URI") { + bb.push(decodeURIComponent(data.data)); + } else if (data.encoding === "raw") { + bb.push(data.data); + } + } else { + if (typeof data !== "string") { + data += ""; // convert unsupported types to strings + } + // decode UTF-16 to binary string + bb.push(unescape(encodeURIComponent(data))); + } + }; + FBB_proto.getBlob = function(type) { + if (!arguments.length) { + type = null; + } + return new FakeBlob(this.data.join(""), type, "raw"); + }; + FBB_proto.toString = function() { + return "[object BlobBuilder]"; + }; + FB_proto.slice = function(start, end, type) { + var args = arguments.length; + if (args < 3) { + type = null; + } + return new FakeBlob( + this.data.slice(start, args > 1 ? end : this.data.length) + , type + , this.encoding + ); + }; + FB_proto.toString = function() { + return "[object Blob]"; + }; + FB_proto.close = function() { + this.size = 0; + delete this.data; + }; + return FakeBlobBuilder; + }(view)); + + view.Blob = function(blobParts, options) { + var type = options ? (options.type || "") : ""; + var builder = new BlobBuilder(); + if (blobParts) { + for (var i = 0, len = blobParts.length; i < len; i++) { + builder.append(blobParts[i]); + } + } + return builder.getBlob(type); + }; +}(typeof self !== "undefined" && self || typeof window !== "undefined" && window || this.content || this)); diff --git a/files_reader/js/libs/blob.js b/files_reader/js/lib/blob.js similarity index 100% rename from files_reader/js/libs/blob.js rename to files_reader/js/lib/blob.js diff --git a/files_reader/js/libs/typedarray.js b/files_reader/js/lib/typedarray.js similarity index 100% rename from files_reader/js/libs/typedarray.js rename to files_reader/js/lib/typedarray.js diff --git a/files_reader/js/libs/typedarray.min.js b/files_reader/js/lib/typedarray.min.js similarity index 100% rename from files_reader/js/libs/typedarray.min.js rename to files_reader/js/lib/typedarray.min.js diff --git a/files_reader/js/libs/inflate.js b/files_reader/js/libs/inflate.js deleted file mode 100644 index cc0e012..0000000 --- a/files_reader/js/libs/inflate.js +++ /dev/null @@ -1,2163 +0,0 @@ -/* - Copyright (c) 2013 Gildas Lormeau. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the distribution. - - 3. The names of the authors may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT, - INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * This program is based on JZlib 1.0.2 ymnk, JCraft,Inc. - * JZlib is based on zlib-1.1.3, so all credit should go authors - * Jean-loup Gailly(jloup@gzip.org) and Mark Adler(madler@alumni.caltech.edu) - * and contributors of zlib. - */ - -(function(obj) { - - // Global - var MAX_BITS = 15; - - var Z_OK = 0; - var Z_STREAM_END = 1; - var Z_NEED_DICT = 2; - var Z_STREAM_ERROR = -2; - var Z_DATA_ERROR = -3; - var Z_MEM_ERROR = -4; - var Z_BUF_ERROR = -5; - - var inflate_mask = [ 0x00000000, 0x00000001, 0x00000003, 0x00000007, 0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f, 0x000000ff, 0x000001ff, 0x000003ff, - 0x000007ff, 0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff, 0x0000ffff ]; - - var MANY = 1440; - - // JZlib version : "1.0.2" - var Z_NO_FLUSH = 0; - var Z_FINISH = 4; - - // InfTree - var fixed_bl = 9; - var fixed_bd = 5; - - var fixed_tl = [ 96, 7, 256, 0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0, 8, 48, 0, 9, 192, 80, 7, 10, 0, 8, 96, 0, 8, 32, 0, 9, 160, 0, 8, 0, - 0, 8, 128, 0, 8, 64, 0, 9, 224, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9, 144, 83, 7, 59, 0, 8, 120, 0, 8, 56, 0, 9, 208, 81, 7, 17, 0, 8, 104, 0, 8, 40, - 0, 9, 176, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 240, 80, 7, 4, 0, 8, 84, 0, 8, 20, 85, 8, 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0, 9, 200, 81, 7, 13, - 0, 8, 100, 0, 8, 36, 0, 9, 168, 0, 8, 4, 0, 8, 132, 0, 8, 68, 0, 9, 232, 80, 7, 8, 0, 8, 92, 0, 8, 28, 0, 9, 152, 84, 7, 83, 0, 8, 124, 0, 8, 60, - 0, 9, 216, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0, 9, 184, 0, 8, 12, 0, 8, 140, 0, 8, 76, 0, 9, 248, 80, 7, 3, 0, 8, 82, 0, 8, 18, 85, 8, 163, 83, 7, - 35, 0, 8, 114, 0, 8, 50, 0, 9, 196, 81, 7, 11, 0, 8, 98, 0, 8, 34, 0, 9, 164, 0, 8, 2, 0, 8, 130, 0, 8, 66, 0, 9, 228, 80, 7, 7, 0, 8, 90, 0, 8, - 26, 0, 9, 148, 84, 7, 67, 0, 8, 122, 0, 8, 58, 0, 9, 212, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, 180, 0, 8, 10, 0, 8, 138, 0, 8, 74, 0, 9, 244, 80, - 7, 5, 0, 8, 86, 0, 8, 22, 192, 8, 0, 83, 7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 204, 81, 7, 15, 0, 8, 102, 0, 8, 38, 0, 9, 172, 0, 8, 6, 0, 8, 134, 0, - 8, 70, 0, 9, 236, 80, 7, 9, 0, 8, 94, 0, 8, 30, 0, 9, 156, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0, 9, 220, 82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 188, 0, - 8, 14, 0, 8, 142, 0, 8, 78, 0, 9, 252, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131, 82, 7, 31, 0, 8, 113, 0, 8, 49, 0, 9, 194, 80, 7, 10, 0, 8, 97, - 0, 8, 33, 0, 9, 162, 0, 8, 1, 0, 8, 129, 0, 8, 65, 0, 9, 226, 80, 7, 6, 0, 8, 89, 0, 8, 25, 0, 9, 146, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 210, - 81, 7, 17, 0, 8, 105, 0, 8, 41, 0, 9, 178, 0, 8, 9, 0, 8, 137, 0, 8, 73, 0, 9, 242, 80, 7, 4, 0, 8, 85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0, 8, 117, - 0, 8, 53, 0, 9, 202, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9, 170, 0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9, 234, 80, 7, 8, 0, 8, 93, 0, 8, 29, 0, 9, 154, - 84, 7, 83, 0, 8, 125, 0, 8, 61, 0, 9, 218, 82, 7, 23, 0, 8, 109, 0, 8, 45, 0, 9, 186, 0, 8, 13, 0, 8, 141, 0, 8, 77, 0, 9, 250, 80, 7, 3, 0, 8, 83, - 0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8, 115, 0, 8, 51, 0, 9, 198, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, 166, 0, 8, 3, 0, 8, 131, 0, 8, 67, 0, 9, 230, - 80, 7, 7, 0, 8, 91, 0, 8, 27, 0, 9, 150, 84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 214, 82, 7, 19, 0, 8, 107, 0, 8, 43, 0, 9, 182, 0, 8, 11, 0, 8, 139, - 0, 8, 75, 0, 9, 246, 80, 7, 5, 0, 8, 87, 0, 8, 23, 192, 8, 0, 83, 7, 51, 0, 8, 119, 0, 8, 55, 0, 9, 206, 81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 174, - 0, 8, 7, 0, 8, 135, 0, 8, 71, 0, 9, 238, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 158, 84, 7, 99, 0, 8, 127, 0, 8, 63, 0, 9, 222, 82, 7, 27, 0, 8, 111, - 0, 8, 47, 0, 9, 190, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 254, 96, 7, 256, 0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0, 8, 48, 0, 9, - 193, 80, 7, 10, 0, 8, 96, 0, 8, 32, 0, 9, 161, 0, 8, 0, 0, 8, 128, 0, 8, 64, 0, 9, 225, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9, 145, 83, 7, 59, 0, 8, - 120, 0, 8, 56, 0, 9, 209, 81, 7, 17, 0, 8, 104, 0, 8, 40, 0, 9, 177, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 241, 80, 7, 4, 0, 8, 84, 0, 8, 20, 85, 8, - 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0, 9, 201, 81, 7, 13, 0, 8, 100, 0, 8, 36, 0, 9, 169, 0, 8, 4, 0, 8, 132, 0, 8, 68, 0, 9, 233, 80, 7, 8, 0, 8, - 92, 0, 8, 28, 0, 9, 153, 84, 7, 83, 0, 8, 124, 0, 8, 60, 0, 9, 217, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0, 9, 185, 0, 8, 12, 0, 8, 140, 0, 8, 76, 0, 9, - 249, 80, 7, 3, 0, 8, 82, 0, 8, 18, 85, 8, 163, 83, 7, 35, 0, 8, 114, 0, 8, 50, 0, 9, 197, 81, 7, 11, 0, 8, 98, 0, 8, 34, 0, 9, 165, 0, 8, 2, 0, 8, - 130, 0, 8, 66, 0, 9, 229, 80, 7, 7, 0, 8, 90, 0, 8, 26, 0, 9, 149, 84, 7, 67, 0, 8, 122, 0, 8, 58, 0, 9, 213, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, - 181, 0, 8, 10, 0, 8, 138, 0, 8, 74, 0, 9, 245, 80, 7, 5, 0, 8, 86, 0, 8, 22, 192, 8, 0, 83, 7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 205, 81, 7, 15, 0, 8, - 102, 0, 8, 38, 0, 9, 173, 0, 8, 6, 0, 8, 134, 0, 8, 70, 0, 9, 237, 80, 7, 9, 0, 8, 94, 0, 8, 30, 0, 9, 157, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0, 9, - 221, 82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 189, 0, 8, 14, 0, 8, 142, 0, 8, 78, 0, 9, 253, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131, 82, 7, 31, 0, - 8, 113, 0, 8, 49, 0, 9, 195, 80, 7, 10, 0, 8, 97, 0, 8, 33, 0, 9, 163, 0, 8, 1, 0, 8, 129, 0, 8, 65, 0, 9, 227, 80, 7, 6, 0, 8, 89, 0, 8, 25, 0, 9, - 147, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 211, 81, 7, 17, 0, 8, 105, 0, 8, 41, 0, 9, 179, 0, 8, 9, 0, 8, 137, 0, 8, 73, 0, 9, 243, 80, 7, 4, 0, 8, - 85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0, 8, 117, 0, 8, 53, 0, 9, 203, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9, 171, 0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9, - 235, 80, 7, 8, 0, 8, 93, 0, 8, 29, 0, 9, 155, 84, 7, 83, 0, 8, 125, 0, 8, 61, 0, 9, 219, 82, 7, 23, 0, 8, 109, 0, 8, 45, 0, 9, 187, 0, 8, 13, 0, 8, - 141, 0, 8, 77, 0, 9, 251, 80, 7, 3, 0, 8, 83, 0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8, 115, 0, 8, 51, 0, 9, 199, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, - 167, 0, 8, 3, 0, 8, 131, 0, 8, 67, 0, 9, 231, 80, 7, 7, 0, 8, 91, 0, 8, 27, 0, 9, 151, 84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 215, 82, 7, 19, 0, 8, - 107, 0, 8, 43, 0, 9, 183, 0, 8, 11, 0, 8, 139, 0, 8, 75, 0, 9, 247, 80, 7, 5, 0, 8, 87, 0, 8, 23, 192, 8, 0, 83, 7, 51, 0, 8, 119, 0, 8, 55, 0, 9, - 207, 81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 175, 0, 8, 7, 0, 8, 135, 0, 8, 71, 0, 9, 239, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 159, 84, 7, 99, 0, 8, - 127, 0, 8, 63, 0, 9, 223, 82, 7, 27, 0, 8, 111, 0, 8, 47, 0, 9, 191, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 255 ]; - var fixed_td = [ 80, 5, 1, 87, 5, 257, 83, 5, 17, 91, 5, 4097, 81, 5, 5, 89, 5, 1025, 85, 5, 65, 93, 5, 16385, 80, 5, 3, 88, 5, 513, 84, 5, 33, 92, 5, - 8193, 82, 5, 9, 90, 5, 2049, 86, 5, 129, 192, 5, 24577, 80, 5, 2, 87, 5, 385, 83, 5, 25, 91, 5, 6145, 81, 5, 7, 89, 5, 1537, 85, 5, 97, 93, 5, - 24577, 80, 5, 4, 88, 5, 769, 84, 5, 49, 92, 5, 12289, 82, 5, 13, 90, 5, 3073, 86, 5, 193, 192, 5, 24577 ]; - - // Tables for deflate from PKZIP's appnote.txt. - var cplens = [ // Copy lengths for literal codes 257..285 - 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 ]; - - // see note #13 above about 258 - var cplext = [ // Extra bits for literal codes 257..285 - 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 112, 112 // 112==invalid - ]; - - var cpdist = [ // Copy offsets for distance codes 0..29 - 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ]; - - var cpdext = [ // Extra bits for distance codes - 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 ]; - - // If BMAX needs to be larger than 16, then h and x[] should be uLong. - var BMAX = 15; // maximum bit length of any code - - function InfTree() { - var that = this; - - var hn; // hufts used in space - var v; // work area for huft_build - var c; // bit length count table - var r; // table entry for structure assignment - var u; // table stack - var x; // bit offsets, then code stack - - function huft_build(b, // code lengths in bits (all assumed <= - // BMAX) - bindex, n, // number of codes (assumed <= 288) - s, // number of simple-valued codes (0..s-1) - d, // list of base values for non-simple codes - e, // list of extra bits for non-simple codes - t, // result: starting table - m, // maximum lookup bits, returns actual - hp,// space for trees - hn,// hufts used in space - v // working area: values in order of bit length - ) { - // Given a list of code lengths and a maximum table size, make a set of - // tables to decode that set of codes. Return Z_OK on success, - // Z_BUF_ERROR - // if the given code set is incomplete (the tables are still built in - // this - // case), Z_DATA_ERROR if the input is invalid (an over-subscribed set - // of - // lengths), or Z_MEM_ERROR if not enough memory. - - var a; // counter for codes of length k - var f; // i repeats in table every f entries - var g; // maximum code length - var h; // table level - var i; // counter, current code - var j; // counter - var k; // number of bits in current code - var l; // bits per table (returned in m) - var mask; // (1 << w) - 1, to avoid cc -O bug on HP - var p; // pointer into c[], b[], or v[] - var q; // points to current table - var w; // bits before this table == (l * h) - var xp; // pointer into x - var y; // number of dummy codes added - var z; // number of entries in current table - - // Generate counts for each bit length - - p = 0; - i = n; - do { - c[b[bindex + p]]++; - p++; - i--; // assume all entries <= BMAX - } while (i !== 0); - - if (c[0] == n) { // null input--all zero length codes - t[0] = -1; - m[0] = 0; - return Z_OK; - } - - // Find minimum and maximum length, bound *m by those - l = m[0]; - for (j = 1; j <= BMAX; j++) - if (c[j] !== 0) - break; - k = j; // minimum code length - if (l < j) { - l = j; - } - for (i = BMAX; i !== 0; i--) { - if (c[i] !== 0) - break; - } - g = i; // maximum code length - if (l > i) { - l = i; - } - m[0] = l; - - // Adjust last length count to fill out codes, if needed - for (y = 1 << j; j < i; j++, y <<= 1) { - if ((y -= c[j]) < 0) { - return Z_DATA_ERROR; - } - } - if ((y -= c[i]) < 0) { - return Z_DATA_ERROR; - } - c[i] += y; - - // Generate starting offsets into the value table for each length - x[1] = j = 0; - p = 1; - xp = 2; - while (--i !== 0) { // note that i == g from above - x[xp] = (j += c[p]); - xp++; - p++; - } - - // Make a table of values in order of bit lengths - i = 0; - p = 0; - do { - if ((j = b[bindex + p]) !== 0) { - v[x[j]++] = i; - } - p++; - } while (++i < n); - n = x[g]; // set n to length of v - - // Generate the Huffman codes and for each, make the table entries - x[0] = i = 0; // first Huffman code is zero - p = 0; // grab values in bit order - h = -1; // no tables yet--level -1 - w = -l; // bits decoded == (l * h) - u[0] = 0; // just to keep compilers happy - q = 0; // ditto - z = 0; // ditto - - // go through the bit lengths (k already is bits in shortest code) - for (; k <= g; k++) { - a = c[k]; - while (a-- !== 0) { - // here i is the Huffman code of length k bits for value *p - // make tables up to required level - while (k > w + l) { - h++; - w += l; // previous table always l bits - // compute minimum size table less than or equal to l bits - z = g - w; - z = (z > l) ? l : z; // table size upper limit - if ((f = 1 << (j = k - w)) > a + 1) { // try a k-w bit table - // too few codes for - // k-w bit table - f -= a + 1; // deduct codes from patterns left - xp = k; - if (j < z) { - while (++j < z) { // try smaller tables up to z bits - if ((f <<= 1) <= c[++xp]) - break; // enough codes to use up j bits - f -= c[xp]; // else deduct codes from patterns - } - } - } - z = 1 << j; // table entries for j-bit table - - // allocate new table - if (hn[0] + z > MANY) { // (note: doesn't matter for fixed) - return Z_DATA_ERROR; // overflow of MANY - } - u[h] = q = /* hp+ */hn[0]; // DEBUG - hn[0] += z; - - // connect to last table, if there is one - if (h !== 0) { - x[h] = i; // save pattern for backing up - r[0] = /* (byte) */j; // bits in this table - r[1] = /* (byte) */l; // bits to dump before this table - j = i >>> (w - l); - r[2] = /* (int) */(q - u[h - 1] - j); // offset to this table - hp.set(r, (u[h - 1] + j) * 3); - // to - // last - // table - } else { - t[0] = q; // first table is returned result - } - } - - // set up table entry in r - r[1] = /* (byte) */(k - w); - if (p >= n) { - r[0] = 128 + 64; // out of values--invalid code - } else if (v[p] < s) { - r[0] = /* (byte) */(v[p] < 256 ? 0 : 32 + 64); // 256 is - // end-of-block - r[2] = v[p++]; // simple code is just the value - } else { - r[0] = /* (byte) */(e[v[p] - s] + 16 + 64); // non-simple--look - // up in lists - r[2] = d[v[p++] - s]; - } - - // fill code-like entries with r - f = 1 << (k - w); - for (j = i >>> w; j < z; j += f) { - hp.set(r, (q + j) * 3); - } - - // backwards increment the k-bit code i - for (j = 1 << (k - 1); (i & j) !== 0; j >>>= 1) { - i ^= j; - } - i ^= j; - - // backup over finished tables - mask = (1 << w) - 1; // needed on HP, cc -O bug - while ((i & mask) != x[h]) { - h--; // don't need to update q - w -= l; - mask = (1 << w) - 1; - } - } - } - // Return Z_BUF_ERROR if we were given an incomplete table - return y !== 0 && g != 1 ? Z_BUF_ERROR : Z_OK; - } - - function initWorkArea(vsize) { - var i; - if (!hn) { - hn = []; // []; //new Array(1); - v = []; // new Array(vsize); - c = new Int32Array(BMAX + 1); // new Array(BMAX + 1); - r = []; // new Array(3); - u = new Int32Array(BMAX); // new Array(BMAX); - x = new Int32Array(BMAX + 1); // new Array(BMAX + 1); - } - if (v.length < vsize) { - v = []; // new Array(vsize); - } - for (i = 0; i < vsize; i++) { - v[i] = 0; - } - for (i = 0; i < BMAX + 1; i++) { - c[i] = 0; - } - for (i = 0; i < 3; i++) { - r[i] = 0; - } - // for(int i=0; i 257)) { - if (result == Z_DATA_ERROR) { - z.msg = "oversubscribed distance tree"; - } else if (result == Z_BUF_ERROR) { - z.msg = "incomplete distance tree"; - result = Z_DATA_ERROR; - } else if (result != Z_MEM_ERROR) { - z.msg = "empty distance tree with lengths"; - result = Z_DATA_ERROR; - } - return result; - } - - return Z_OK; - }; - - } - - InfTree.inflate_trees_fixed = function(bl, // literal desired/actual bit depth - bd, // distance desired/actual bit depth - tl,// literal/length tree result - td// distance tree result - ) { - bl[0] = fixed_bl; - bd[0] = fixed_bd; - tl[0] = fixed_tl; - td[0] = fixed_td; - return Z_OK; - }; - - // InfCodes - - // waiting for "i:"=input, - // "o:"=output, - // "x:"=nothing - var START = 0; // x: set up for LEN - var LEN = 1; // i: get length/literal/eob next - var LENEXT = 2; // i: getting length extra (have base) - var DIST = 3; // i: get distance next - var DISTEXT = 4;// i: getting distance extra - var COPY = 5; // o: copying bytes in window, waiting - // for space - var LIT = 6; // o: got literal, waiting for output - // space - var WASH = 7; // o: got eob, possibly still output - // waiting - var END = 8; // x: got eob and all data flushed - var BADCODE = 9;// x: got error - - function InfCodes() { - var that = this; - - var mode; // current inflate_codes mode - - // mode dependent information - var len = 0; - - var tree; // pointer into tree - var tree_index = 0; - var need = 0; // bits needed - - var lit = 0; - - // if EXT or COPY, where and how much - var get = 0; // bits to get for extra - var dist = 0; // distance back to copy from - - var lbits = 0; // ltree bits decoded per branch - var dbits = 0; // dtree bits decoder per branch - var ltree; // literal/length/eob tree - var ltree_index = 0; // literal/length/eob tree - var dtree; // distance tree - var dtree_index = 0; // distance tree - - // Called with number of bytes left to write in window at least 258 - // (the maximum string length) and number of input bytes available - // at least ten. The ten bytes are six bytes for the longest length/ - // distance pair plus four bytes for overloading the bit buffer. - - function inflate_fast(bl, bd, tl, tl_index, td, td_index, s, z) { - var t; // temporary pointer - var tp; // temporary pointer - var tp_index; // temporary pointer - var e; // extra bits or operation - var b; // bit buffer - var k; // bits in bit buffer - var p; // input data pointer - var n; // bytes available there - var q; // output window write pointer - var m; // bytes to end of window or read pointer - var ml; // mask for literal/length tree - var md; // mask for distance tree - var c; // bytes to copy - var d; // distance back to copy from - var r; // copy source pointer - - var tp_index_t_3; // (tp_index+t)*3 - - // load input, output, bit values - p = z.next_in_index; - n = z.avail_in; - b = s.bitb; - k = s.bitk; - q = s.write; - m = q < s.read ? s.read - q - 1 : s.end - q; - - // initialize masks - ml = inflate_mask[bl]; - md = inflate_mask[bd]; - - // do until not enough input or output space for fast loop - do { // assume called with m >= 258 && n >= 10 - // get literal/length code - while (k < (20)) { // max bits for literal/length code - n--; - b |= (z.read_byte(p++) & 0xff) << k; - k += 8; - } - - t = b & ml; - tp = tl; - tp_index = tl_index; - tp_index_t_3 = (tp_index + t) * 3; - if ((e = tp[tp_index_t_3]) === 0) { - b >>= (tp[tp_index_t_3 + 1]); - k -= (tp[tp_index_t_3 + 1]); - - s.window[q++] = /* (byte) */tp[tp_index_t_3 + 2]; - m--; - continue; - } - do { - - b >>= (tp[tp_index_t_3 + 1]); - k -= (tp[tp_index_t_3 + 1]); - - if ((e & 16) !== 0) { - e &= 15; - c = tp[tp_index_t_3 + 2] + (/* (int) */b & inflate_mask[e]); - - b >>= e; - k -= e; - - // decode distance base of block to copy - while (k < (15)) { // max bits for distance code - n--; - b |= (z.read_byte(p++) & 0xff) << k; - k += 8; - } - - t = b & md; - tp = td; - tp_index = td_index; - tp_index_t_3 = (tp_index + t) * 3; - e = tp[tp_index_t_3]; - - do { - - b >>= (tp[tp_index_t_3 + 1]); - k -= (tp[tp_index_t_3 + 1]); - - if ((e & 16) !== 0) { - // get extra bits to add to distance base - e &= 15; - while (k < (e)) { // get extra bits (up to 13) - n--; - b |= (z.read_byte(p++) & 0xff) << k; - k += 8; - } - - d = tp[tp_index_t_3 + 2] + (b & inflate_mask[e]); - - b >>= (e); - k -= (e); - - // do the copy - m -= c; - if (q >= d) { // offset before dest - // just copy - r = q - d; - if (q - r > 0 && 2 > (q - r)) { - s.window[q++] = s.window[r++]; // minimum - // count is - // three, - s.window[q++] = s.window[r++]; // so unroll - // loop a - // little - c -= 2; - } else { - s.window.set(s.window.subarray(r, r + 2), q); - q += 2; - r += 2; - c -= 2; - } - } else { // else offset after destination - r = q - d; - do { - r += s.end; // force pointer in window - } while (r < 0); // covers invalid distances - e = s.end - r; - if (c > e) { // if source crosses, - c -= e; // wrapped copy - if (q - r > 0 && e > (q - r)) { - do { - s.window[q++] = s.window[r++]; - } while (--e !== 0); - } else { - s.window.set(s.window.subarray(r, r + e), q); - q += e; - r += e; - e = 0; - } - r = 0; // copy rest from start of window - } - - } - - // copy all or what's left - if (q - r > 0 && c > (q - r)) { - do { - s.window[q++] = s.window[r++]; - } while (--c !== 0); - } else { - s.window.set(s.window.subarray(r, r + c), q); - q += c; - r += c; - c = 0; - } - break; - } else if ((e & 64) === 0) { - t += tp[tp_index_t_3 + 2]; - t += (b & inflate_mask[e]); - tp_index_t_3 = (tp_index + t) * 3; - e = tp[tp_index_t_3]; - } else { - z.msg = "invalid distance code"; - - c = z.avail_in - n; - c = (k >> 3) < c ? k >> 3 : c; - n += c; - p -= c; - k -= c << 3; - - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - - return Z_DATA_ERROR; - } - } while (true); - break; - } - - if ((e & 64) === 0) { - t += tp[tp_index_t_3 + 2]; - t += (b & inflate_mask[e]); - tp_index_t_3 = (tp_index + t) * 3; - if ((e = tp[tp_index_t_3]) === 0) { - - b >>= (tp[tp_index_t_3 + 1]); - k -= (tp[tp_index_t_3 + 1]); - - s.window[q++] = /* (byte) */tp[tp_index_t_3 + 2]; - m--; - break; - } - } else if ((e & 32) !== 0) { - - c = z.avail_in - n; - c = (k >> 3) < c ? k >> 3 : c; - n += c; - p -= c; - k -= c << 3; - - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - - return Z_STREAM_END; - } else { - z.msg = "invalid literal/length code"; - - c = z.avail_in - n; - c = (k >> 3) < c ? k >> 3 : c; - n += c; - p -= c; - k -= c << 3; - - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - - return Z_DATA_ERROR; - } - } while (true); - } while (m >= 258 && n >= 10); - - // not enough input or output--restore pointers and return - c = z.avail_in - n; - c = (k >> 3) < c ? k >> 3 : c; - n += c; - p -= c; - k -= c << 3; - - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - - return Z_OK; - } - - that.init = function(bl, bd, tl, tl_index, td, td_index) { - mode = START; - lbits = /* (byte) */bl; - dbits = /* (byte) */bd; - ltree = tl; - ltree_index = tl_index; - dtree = td; - dtree_index = td_index; - tree = null; - }; - - that.proc = function(s, z, r) { - var j; // temporary storage - var tindex; // temporary pointer - var e; // extra bits or operation - var b = 0; // bit buffer - var k = 0; // bits in bit buffer - var p = 0; // input data pointer - var n; // bytes available there - var q; // output window write pointer - var m; // bytes to end of window or read pointer - var f; // pointer to copy strings from - - // copy input/output information to locals (UPDATE macro restores) - p = z.next_in_index; - n = z.avail_in; - b = s.bitb; - k = s.bitk; - q = s.write; - m = q < s.read ? s.read - q - 1 : s.end - q; - - // process input and output based on current state - while (true) { - switch (mode) { - // waiting for "i:"=input, "o:"=output, "x:"=nothing - case START: // x: set up for LEN - if (m >= 258 && n >= 10) { - - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - r = inflate_fast(lbits, dbits, ltree, ltree_index, dtree, dtree_index, s, z); - - p = z.next_in_index; - n = z.avail_in; - b = s.bitb; - k = s.bitk; - q = s.write; - m = q < s.read ? s.read - q - 1 : s.end - q; - - if (r != Z_OK) { - mode = r == Z_STREAM_END ? WASH : BADCODE; - break; - } - } - need = lbits; - tree = ltree; - tree_index = ltree_index; - - mode = LEN; - case LEN: // i: get length/literal/eob next - j = need; - - while (k < (j)) { - if (n !== 0) - r = Z_OK; - else { - - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - } - n--; - b |= (z.read_byte(p++) & 0xff) << k; - k += 8; - } - - tindex = (tree_index + (b & inflate_mask[j])) * 3; - - b >>>= (tree[tindex + 1]); - k -= (tree[tindex + 1]); - - e = tree[tindex]; - - if (e === 0) { // literal - lit = tree[tindex + 2]; - mode = LIT; - break; - } - if ((e & 16) !== 0) { // length - get = e & 15; - len = tree[tindex + 2]; - mode = LENEXT; - break; - } - if ((e & 64) === 0) { // next table - need = e; - tree_index = tindex / 3 + tree[tindex + 2]; - break; - } - if ((e & 32) !== 0) { // end of block - mode = WASH; - break; - } - mode = BADCODE; // invalid code - z.msg = "invalid literal/length code"; - r = Z_DATA_ERROR; - - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - - case LENEXT: // i: getting length extra (have base) - j = get; - - while (k < (j)) { - if (n !== 0) - r = Z_OK; - else { - - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - } - n--; - b |= (z.read_byte(p++) & 0xff) << k; - k += 8; - } - - len += (b & inflate_mask[j]); - - b >>= j; - k -= j; - - need = dbits; - tree = dtree; - tree_index = dtree_index; - mode = DIST; - case DIST: // i: get distance next - j = need; - - while (k < (j)) { - if (n !== 0) - r = Z_OK; - else { - - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - } - n--; - b |= (z.read_byte(p++) & 0xff) << k; - k += 8; - } - - tindex = (tree_index + (b & inflate_mask[j])) * 3; - - b >>= tree[tindex + 1]; - k -= tree[tindex + 1]; - - e = (tree[tindex]); - if ((e & 16) !== 0) { // distance - get = e & 15; - dist = tree[tindex + 2]; - mode = DISTEXT; - break; - } - if ((e & 64) === 0) { // next table - need = e; - tree_index = tindex / 3 + tree[tindex + 2]; - break; - } - mode = BADCODE; // invalid code - z.msg = "invalid distance code"; - r = Z_DATA_ERROR; - - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - - case DISTEXT: // i: getting distance extra - j = get; - - while (k < (j)) { - if (n !== 0) - r = Z_OK; - else { - - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - } - n--; - b |= (z.read_byte(p++) & 0xff) << k; - k += 8; - } - - dist += (b & inflate_mask[j]); - - b >>= j; - k -= j; - - mode = COPY; - case COPY: // o: copying bytes in window, waiting for space - f = q - dist; - while (f < 0) { // modulo window size-"while" instead - f += s.end; // of "if" handles invalid distances - } - while (len !== 0) { - - if (m === 0) { - if (q == s.end && s.read !== 0) { - q = 0; - m = q < s.read ? s.read - q - 1 : s.end - q; - } - if (m === 0) { - s.write = q; - r = s.inflate_flush(z, r); - q = s.write; - m = q < s.read ? s.read - q - 1 : s.end - q; - - if (q == s.end && s.read !== 0) { - q = 0; - m = q < s.read ? s.read - q - 1 : s.end - q; - } - - if (m === 0) { - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - } - } - } - - s.window[q++] = s.window[f++]; - m--; - - if (f == s.end) - f = 0; - len--; - } - mode = START; - break; - case LIT: // o: got literal, waiting for output space - if (m === 0) { - if (q == s.end && s.read !== 0) { - q = 0; - m = q < s.read ? s.read - q - 1 : s.end - q; - } - if (m === 0) { - s.write = q; - r = s.inflate_flush(z, r); - q = s.write; - m = q < s.read ? s.read - q - 1 : s.end - q; - - if (q == s.end && s.read !== 0) { - q = 0; - m = q < s.read ? s.read - q - 1 : s.end - q; - } - if (m === 0) { - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - } - } - } - r = Z_OK; - - s.window[q++] = /* (byte) */lit; - m--; - - mode = START; - break; - case WASH: // o: got eob, possibly more output - if (k > 7) { // return unused byte, if any - k -= 8; - n++; - p--; // can always return one - } - - s.write = q; - r = s.inflate_flush(z, r); - q = s.write; - m = q < s.read ? s.read - q - 1 : s.end - q; - - if (s.read != s.write) { - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - } - mode = END; - case END: - r = Z_STREAM_END; - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - - case BADCODE: // x: got error - - r = Z_DATA_ERROR; - - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - - default: - r = Z_STREAM_ERROR; - - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - } - } - }; - - that.free = function() { - // ZFREE(z, c); - }; - - } - - // InfBlocks - - // Table for deflate from PKZIP's appnote.txt. - var border = [ // Order of the bit length code lengths - 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]; - - var TYPE = 0; // get type bits (3, including end bit) - var LENS = 1; // get lengths for stored - var STORED = 2;// processing stored block - var TABLE = 3; // get table lengths - var BTREE = 4; // get bit lengths tree for a dynamic - // block - var DTREE = 5; // get length, distance trees for a - // dynamic block - var CODES = 6; // processing fixed or dynamic block - var DRY = 7; // output remaining window bytes - var DONELOCKS = 8; // finished last block, done - var BADBLOCKS = 9; // ot a data error--stuck here - - function InfBlocks(z, w) { - var that = this; - - var mode = TYPE; // current inflate_block mode - - var left = 0; // if STORED, bytes left to copy - - var table = 0; // table lengths (14 bits) - var index = 0; // index into blens (or border) - var blens; // bit lengths of codes - var bb = [ 0 ]; // bit length tree depth - var tb = [ 0 ]; // bit length decoding tree - - var codes = new InfCodes(); // if CODES, current state - - var last = 0; // true if this block is the last block - - var hufts = new Int32Array(MANY * 3); // single malloc for tree space - var check = 0; // check on output - var inftree = new InfTree(); - - that.bitk = 0; // bits in bit buffer - that.bitb = 0; // bit buffer - that.window = new Uint8Array(w); // sliding window - that.end = w; // one byte after sliding window - that.read = 0; // window read pointer - that.write = 0; // window write pointer - - that.reset = function(z, c) { - if (c) - c[0] = check; - // if (mode == BTREE || mode == DTREE) { - // } - if (mode == CODES) { - codes.free(z); - } - mode = TYPE; - that.bitk = 0; - that.bitb = 0; - that.read = that.write = 0; - }; - - that.reset(z, null); - - // copy as much as possible from the sliding window to the output area - that.inflate_flush = function(z, r) { - var n; - var p; - var q; - - // local copies of source and destination pointers - p = z.next_out_index; - q = that.read; - - // compute number of bytes to copy as far as end of window - n = /* (int) */((q <= that.write ? that.write : that.end) - q); - if (n > z.avail_out) - n = z.avail_out; - if (n !== 0 && r == Z_BUF_ERROR) - r = Z_OK; - - // update counters - z.avail_out -= n; - z.total_out += n; - - // copy as far as end of window - z.next_out.set(that.window.subarray(q, q + n), p); - p += n; - q += n; - - // see if more to copy at beginning of window - if (q == that.end) { - // wrap pointers - q = 0; - if (that.write == that.end) - that.write = 0; - - // compute bytes to copy - n = that.write - q; - if (n > z.avail_out) - n = z.avail_out; - if (n !== 0 && r == Z_BUF_ERROR) - r = Z_OK; - - // update counters - z.avail_out -= n; - z.total_out += n; - - // copy - z.next_out.set(that.window.subarray(q, q + n), p); - p += n; - q += n; - } - - // update pointers - z.next_out_index = p; - that.read = q; - - // done - return r; - }; - - that.proc = function(z, r) { - var t; // temporary storage - var b; // bit buffer - var k; // bits in bit buffer - var p; // input data pointer - var n; // bytes available there - var q; // output window write pointer - var m; // bytes to end of window or read pointer - - var i; - - // copy input/output information to locals (UPDATE macro restores) - // { - p = z.next_in_index; - n = z.avail_in; - b = that.bitb; - k = that.bitk; - // } - // { - q = that.write; - m = /* (int) */(q < that.read ? that.read - q - 1 : that.end - q); - // } - - // process input based on current state - // DEBUG dtree - while (true) { - switch (mode) { - case TYPE: - - while (k < (3)) { - if (n !== 0) { - r = Z_OK; - } else { - that.bitb = b; - that.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - that.write = q; - return that.inflate_flush(z, r); - } - n--; - b |= (z.read_byte(p++) & 0xff) << k; - k += 8; - } - t = /* (int) */(b & 7); - last = t & 1; - - switch (t >>> 1) { - case 0: // stored - // { - b >>>= (3); - k -= (3); - // } - t = k & 7; // go to byte boundary - - // { - b >>>= (t); - k -= (t); - // } - mode = LENS; // get length of stored block - break; - case 1: // fixed - // { - var bl = []; // new Array(1); - var bd = []; // new Array(1); - var tl = [ [] ]; // new Array(1); - var td = [ [] ]; // new Array(1); - - InfTree.inflate_trees_fixed(bl, bd, tl, td); - codes.init(bl[0], bd[0], tl[0], 0, td[0], 0); - // } - - // { - b >>>= (3); - k -= (3); - // } - - mode = CODES; - break; - case 2: // dynamic - - // { - b >>>= (3); - k -= (3); - // } - - mode = TABLE; - break; - case 3: // illegal - - // { - b >>>= (3); - k -= (3); - // } - mode = BADBLOCKS; - z.msg = "invalid block type"; - r = Z_DATA_ERROR; - - that.bitb = b; - that.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - that.write = q; - return that.inflate_flush(z, r); - } - break; - case LENS: - - while (k < (32)) { - if (n !== 0) { - r = Z_OK; - } else { - that.bitb = b; - that.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - that.write = q; - return that.inflate_flush(z, r); - } - n--; - b |= (z.read_byte(p++) & 0xff) << k; - k += 8; - } - - if ((((~b) >>> 16) & 0xffff) != (b & 0xffff)) { - mode = BADBLOCKS; - z.msg = "invalid stored block lengths"; - r = Z_DATA_ERROR; - - that.bitb = b; - that.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - that.write = q; - return that.inflate_flush(z, r); - } - left = (b & 0xffff); - b = k = 0; // dump bits - mode = left !== 0 ? STORED : (last !== 0 ? DRY : TYPE); - break; - case STORED: - if (n === 0) { - that.bitb = b; - that.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - that.write = q; - return that.inflate_flush(z, r); - } - - if (m === 0) { - if (q == that.end && that.read !== 0) { - q = 0; - m = /* (int) */(q < that.read ? that.read - q - 1 : that.end - q); - } - if (m === 0) { - that.write = q; - r = that.inflate_flush(z, r); - q = that.write; - m = /* (int) */(q < that.read ? that.read - q - 1 : that.end - q); - if (q == that.end && that.read !== 0) { - q = 0; - m = /* (int) */(q < that.read ? that.read - q - 1 : that.end - q); - } - if (m === 0) { - that.bitb = b; - that.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - that.write = q; - return that.inflate_flush(z, r); - } - } - } - r = Z_OK; - - t = left; - if (t > n) - t = n; - if (t > m) - t = m; - that.window.set(z.read_buf(p, t), q); - p += t; - n -= t; - q += t; - m -= t; - if ((left -= t) !== 0) - break; - mode = last !== 0 ? DRY : TYPE; - break; - case TABLE: - - while (k < (14)) { - if (n !== 0) { - r = Z_OK; - } else { - that.bitb = b; - that.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - that.write = q; - return that.inflate_flush(z, r); - } - - n--; - b |= (z.read_byte(p++) & 0xff) << k; - k += 8; - } - - table = t = (b & 0x3fff); - if ((t & 0x1f) > 29 || ((t >> 5) & 0x1f) > 29) { - mode = BADBLOCKS; - z.msg = "too many length or distance symbols"; - r = Z_DATA_ERROR; - - that.bitb = b; - that.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - that.write = q; - return that.inflate_flush(z, r); - } - t = 258 + (t & 0x1f) + ((t >> 5) & 0x1f); - if (!blens || blens.length < t) { - blens = []; // new Array(t); - } else { - for (i = 0; i < t; i++) { - blens[i] = 0; - } - } - - // { - b >>>= (14); - k -= (14); - // } - - index = 0; - mode = BTREE; - case BTREE: - while (index < 4 + (table >>> 10)) { - while (k < (3)) { - if (n !== 0) { - r = Z_OK; - } else { - that.bitb = b; - that.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - that.write = q; - return that.inflate_flush(z, r); - } - n--; - b |= (z.read_byte(p++) & 0xff) << k; - k += 8; - } - - blens[border[index++]] = b & 7; - - // { - b >>>= (3); - k -= (3); - // } - } - - while (index < 19) { - blens[border[index++]] = 0; - } - - bb[0] = 7; - t = inftree.inflate_trees_bits(blens, bb, tb, hufts, z); - if (t != Z_OK) { - r = t; - if (r == Z_DATA_ERROR) { - blens = null; - mode = BADBLOCKS; - } - - that.bitb = b; - that.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - that.write = q; - return that.inflate_flush(z, r); - } - - index = 0; - mode = DTREE; - case DTREE: - while (true) { - t = table; - if (!(index < 258 + (t & 0x1f) + ((t >> 5) & 0x1f))) { - break; - } - - var j, c; - - t = bb[0]; - - while (k < (t)) { - if (n !== 0) { - r = Z_OK; - } else { - that.bitb = b; - that.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - that.write = q; - return that.inflate_flush(z, r); - } - n--; - b |= (z.read_byte(p++) & 0xff) << k; - k += 8; - } - - // if (tb[0] == -1) { - // System.err.println("null..."); - // } - - t = hufts[(tb[0] + (b & inflate_mask[t])) * 3 + 1]; - c = hufts[(tb[0] + (b & inflate_mask[t])) * 3 + 2]; - - if (c < 16) { - b >>>= (t); - k -= (t); - blens[index++] = c; - } else { // c == 16..18 - i = c == 18 ? 7 : c - 14; - j = c == 18 ? 11 : 3; - - while (k < (t + i)) { - if (n !== 0) { - r = Z_OK; - } else { - that.bitb = b; - that.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - that.write = q; - return that.inflate_flush(z, r); - } - n--; - b |= (z.read_byte(p++) & 0xff) << k; - k += 8; - } - - b >>>= (t); - k -= (t); - - j += (b & inflate_mask[i]); - - b >>>= (i); - k -= (i); - - i = index; - t = table; - if (i + j > 258 + (t & 0x1f) + ((t >> 5) & 0x1f) || (c == 16 && i < 1)) { - blens = null; - mode = BADBLOCKS; - z.msg = "invalid bit length repeat"; - r = Z_DATA_ERROR; - - that.bitb = b; - that.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - that.write = q; - return that.inflate_flush(z, r); - } - - c = c == 16 ? blens[i - 1] : 0; - do { - blens[i++] = c; - } while (--j !== 0); - index = i; - } - } - - tb[0] = -1; - // { - var bl_ = []; // new Array(1); - var bd_ = []; // new Array(1); - var tl_ = []; // new Array(1); - var td_ = []; // new Array(1); - bl_[0] = 9; // must be <= 9 for lookahead assumptions - bd_[0] = 6; // must be <= 9 for lookahead assumptions - - t = table; - t = inftree.inflate_trees_dynamic(257 + (t & 0x1f), 1 + ((t >> 5) & 0x1f), blens, bl_, bd_, tl_, td_, hufts, z); - - if (t != Z_OK) { - if (t == Z_DATA_ERROR) { - blens = null; - mode = BADBLOCKS; - } - r = t; - - that.bitb = b; - that.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - that.write = q; - return that.inflate_flush(z, r); - } - codes.init(bl_[0], bd_[0], hufts, tl_[0], hufts, td_[0]); - // } - mode = CODES; - case CODES: - that.bitb = b; - that.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - that.write = q; - - if ((r = codes.proc(that, z, r)) != Z_STREAM_END) { - return that.inflate_flush(z, r); - } - r = Z_OK; - codes.free(z); - - p = z.next_in_index; - n = z.avail_in; - b = that.bitb; - k = that.bitk; - q = that.write; - m = /* (int) */(q < that.read ? that.read - q - 1 : that.end - q); - - if (last === 0) { - mode = TYPE; - break; - } - mode = DRY; - case DRY: - that.write = q; - r = that.inflate_flush(z, r); - q = that.write; - m = /* (int) */(q < that.read ? that.read - q - 1 : that.end - q); - if (that.read != that.write) { - that.bitb = b; - that.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - that.write = q; - return that.inflate_flush(z, r); - } - mode = DONELOCKS; - case DONELOCKS: - r = Z_STREAM_END; - - that.bitb = b; - that.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - that.write = q; - return that.inflate_flush(z, r); - case BADBLOCKS: - r = Z_DATA_ERROR; - - that.bitb = b; - that.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - that.write = q; - return that.inflate_flush(z, r); - - default: - r = Z_STREAM_ERROR; - - that.bitb = b; - that.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - that.write = q; - return that.inflate_flush(z, r); - } - } - }; - - that.free = function(z) { - that.reset(z, null); - that.window = null; - hufts = null; - // ZFREE(z, s); - }; - - that.set_dictionary = function(d, start, n) { - that.window.set(d.subarray(start, start + n), 0); - that.read = that.write = n; - }; - - // Returns true if inflate is currently at the end of a block generated - // by Z_SYNC_FLUSH or Z_FULL_FLUSH. - that.sync_point = function() { - return mode == LENS ? 1 : 0; - }; - - } - - // Inflate - - // preset dictionary flag in zlib header - var PRESET_DICT = 0x20; - - var Z_DEFLATED = 8; - - var METHOD = 0; // waiting for method byte - var FLAG = 1; // waiting for flag byte - var DICT4 = 2; // four dictionary check bytes to go - var DICT3 = 3; // three dictionary check bytes to go - var DICT2 = 4; // two dictionary check bytes to go - var DICT1 = 5; // one dictionary check byte to go - var DICT0 = 6; // waiting for inflateSetDictionary - var BLOCKS = 7; // decompressing blocks - var DONE = 12; // finished check, done - var BAD = 13; // got an error--stay here - - var mark = [ 0, 0, 0xff, 0xff ]; - - function Inflate() { - var that = this; - - that.mode = 0; // current inflate mode - - // mode dependent information - that.method = 0; // if FLAGS, method byte - - // if CHECK, check values to compare - that.was = [ 0 ]; // new Array(1); // computed check value - that.need = 0; // stream check value - - // if BAD, inflateSync's marker bytes count - that.marker = 0; - - // mode independent information - that.wbits = 0; // log2(window size) (8..15, defaults to 15) - - // this.blocks; // current inflate_blocks state - - function inflateReset(z) { - if (!z || !z.istate) - return Z_STREAM_ERROR; - - z.total_in = z.total_out = 0; - z.msg = null; - z.istate.mode = BLOCKS; - z.istate.blocks.reset(z, null); - return Z_OK; - } - - that.inflateEnd = function(z) { - if (that.blocks) - that.blocks.free(z); - that.blocks = null; - // ZFREE(z, z->state); - return Z_OK; - }; - - that.inflateInit = function(z, w) { - z.msg = null; - that.blocks = null; - - // set window size - if (w < 8 || w > 15) { - that.inflateEnd(z); - return Z_STREAM_ERROR; - } - that.wbits = w; - - z.istate.blocks = new InfBlocks(z, 1 << w); - - // reset state - inflateReset(z); - return Z_OK; - }; - - that.inflate = function(z, f) { - var r; - var b; - - if (!z || !z.istate || !z.next_in) - return Z_STREAM_ERROR; - f = f == Z_FINISH ? Z_BUF_ERROR : Z_OK; - r = Z_BUF_ERROR; - while (true) { - // System.out.println("mode: "+z.istate.mode); - switch (z.istate.mode) { - case METHOD: - - if (z.avail_in === 0) - return r; - r = f; - - z.avail_in--; - z.total_in++; - if (((z.istate.method = z.read_byte(z.next_in_index++)) & 0xf) != Z_DEFLATED) { - z.istate.mode = BAD; - z.msg = "unknown compression method"; - z.istate.marker = 5; // can't try inflateSync - break; - } - if ((z.istate.method >> 4) + 8 > z.istate.wbits) { - z.istate.mode = BAD; - z.msg = "invalid window size"; - z.istate.marker = 5; // can't try inflateSync - break; - } - z.istate.mode = FLAG; - case FLAG: - - if (z.avail_in === 0) - return r; - r = f; - - z.avail_in--; - z.total_in++; - b = (z.read_byte(z.next_in_index++)) & 0xff; - - if ((((z.istate.method << 8) + b) % 31) !== 0) { - z.istate.mode = BAD; - z.msg = "incorrect header check"; - z.istate.marker = 5; // can't try inflateSync - break; - } - - if ((b & PRESET_DICT) === 0) { - z.istate.mode = BLOCKS; - break; - } - z.istate.mode = DICT4; - case DICT4: - - if (z.avail_in === 0) - return r; - r = f; - - z.avail_in--; - z.total_in++; - z.istate.need = ((z.read_byte(z.next_in_index++) & 0xff) << 24) & 0xff000000; - z.istate.mode = DICT3; - case DICT3: - - if (z.avail_in === 0) - return r; - r = f; - - z.avail_in--; - z.total_in++; - z.istate.need += ((z.read_byte(z.next_in_index++) & 0xff) << 16) & 0xff0000; - z.istate.mode = DICT2; - case DICT2: - - if (z.avail_in === 0) - return r; - r = f; - - z.avail_in--; - z.total_in++; - z.istate.need += ((z.read_byte(z.next_in_index++) & 0xff) << 8) & 0xff00; - z.istate.mode = DICT1; - case DICT1: - - if (z.avail_in === 0) - return r; - r = f; - - z.avail_in--; - z.total_in++; - z.istate.need += (z.read_byte(z.next_in_index++) & 0xff); - z.istate.mode = DICT0; - return Z_NEED_DICT; - case DICT0: - z.istate.mode = BAD; - z.msg = "need dictionary"; - z.istate.marker = 0; // can try inflateSync - return Z_STREAM_ERROR; - case BLOCKS: - - r = z.istate.blocks.proc(z, r); - if (r == Z_DATA_ERROR) { - z.istate.mode = BAD; - z.istate.marker = 0; // can try inflateSync - break; - } - if (r == Z_OK) { - r = f; - } - if (r != Z_STREAM_END) { - return r; - } - r = f; - z.istate.blocks.reset(z, z.istate.was); - z.istate.mode = DONE; - case DONE: - return Z_STREAM_END; - case BAD: - return Z_DATA_ERROR; - default: - return Z_STREAM_ERROR; - } - } - }; - - that.inflateSetDictionary = function(z, dictionary, dictLength) { - var index = 0; - var length = dictLength; - if (!z || !z.istate || z.istate.mode != DICT0) - return Z_STREAM_ERROR; - - if (length >= (1 << z.istate.wbits)) { - length = (1 << z.istate.wbits) - 1; - index = dictLength - length; - } - z.istate.blocks.set_dictionary(dictionary, index, length); - z.istate.mode = BLOCKS; - return Z_OK; - }; - - that.inflateSync = function(z) { - var n; // number of bytes to look at - var p; // pointer to bytes - var m; // number of marker bytes found in a row - var r, w; // temporaries to save total_in and total_out - - // set up - if (!z || !z.istate) - return Z_STREAM_ERROR; - if (z.istate.mode != BAD) { - z.istate.mode = BAD; - z.istate.marker = 0; - } - if ((n = z.avail_in) === 0) - return Z_BUF_ERROR; - p = z.next_in_index; - m = z.istate.marker; - - // search - while (n !== 0 && m < 4) { - if (z.read_byte(p) == mark[m]) { - m++; - } else if (z.read_byte(p) !== 0) { - m = 0; - } else { - m = 4 - m; - } - p++; - n--; - } - - // restore - z.total_in += p - z.next_in_index; - z.next_in_index = p; - z.avail_in = n; - z.istate.marker = m; - - // return no joy or set up to restart on a new block - if (m != 4) { - return Z_DATA_ERROR; - } - r = z.total_in; - w = z.total_out; - inflateReset(z); - z.total_in = r; - z.total_out = w; - z.istate.mode = BLOCKS; - return Z_OK; - }; - - // Returns true if inflate is currently at the end of a block generated - // by Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP - // implementation to provide an additional safety check. PPP uses - // Z_SYNC_FLUSH - // but removes the length bytes of the resulting empty stored block. When - // decompressing, PPP checks that at the end of input packet, inflate is - // waiting for these length bytes. - that.inflateSyncPoint = function(z) { - if (!z || !z.istate || !z.istate.blocks) - return Z_STREAM_ERROR; - return z.istate.blocks.sync_point(); - }; - } - - // ZStream - - function ZStream() { - } - - ZStream.prototype = { - inflateInit : function(bits) { - var that = this; - that.istate = new Inflate(); - if (!bits) - bits = MAX_BITS; - return that.istate.inflateInit(that, bits); - }, - - inflate : function(f) { - var that = this; - if (!that.istate) - return Z_STREAM_ERROR; - return that.istate.inflate(that, f); - }, - - inflateEnd : function() { - var that = this; - if (!that.istate) - return Z_STREAM_ERROR; - var ret = that.istate.inflateEnd(that); - that.istate = null; - return ret; - }, - - inflateSync : function() { - var that = this; - if (!that.istate) - return Z_STREAM_ERROR; - return that.istate.inflateSync(that); - }, - inflateSetDictionary : function(dictionary, dictLength) { - var that = this; - if (!that.istate) - return Z_STREAM_ERROR; - return that.istate.inflateSetDictionary(that, dictionary, dictLength); - }, - read_byte : function(start) { - var that = this; - return that.next_in.subarray(start, start + 1)[0]; - }, - read_buf : function(start, size) { - var that = this; - return that.next_in.subarray(start, start + size); - } - }; - - // Inflater - - function Inflater() { - var that = this; - var z = new ZStream(); - var bufsize = 512; - var flush = Z_NO_FLUSH; - var buf = new Uint8Array(bufsize); - var nomoreinput = false; - - z.inflateInit(); - z.next_out = buf; - - that.append = function(data, onprogress) { - var err, buffers = [], lastIndex = 0, bufferIndex = 0, bufferSize = 0, array; - if (data.length === 0) - return; - z.next_in_index = 0; - z.next_in = data; - z.avail_in = data.length; - do { - z.next_out_index = 0; - z.avail_out = bufsize; - if ((z.avail_in === 0) && (!nomoreinput)) { // if buffer is empty and more input is available, refill it - z.next_in_index = 0; - nomoreinput = true; - } - err = z.inflate(flush); - if (nomoreinput && (err == Z_BUF_ERROR)) - return -1; - if (err != Z_OK && err != Z_STREAM_END) - throw "inflating: " + z.msg; - if ((nomoreinput || err == Z_STREAM_END) && (z.avail_in == data.length)) - return -1; - if (z.next_out_index) - if (z.next_out_index == bufsize) - buffers.push(new Uint8Array(buf)); - else - buffers.push(new Uint8Array(buf.subarray(0, z.next_out_index))); - bufferSize += z.next_out_index; - if (onprogress && z.next_in_index > 0 && z.next_in_index != lastIndex) { - onprogress(z.next_in_index); - lastIndex = z.next_in_index; - } - } while (z.avail_in > 0 || z.avail_out === 0); - array = new Uint8Array(bufferSize); - buffers.forEach(function(chunk) { - array.set(chunk, bufferIndex); - bufferIndex += chunk.length; - }); - return array; - }; - that.flush = function() { - z.inflateEnd(); - }; - } - - var inflater; - - if (obj.zip) - obj.zip.Inflater = Inflater; - else { - inflater = new Inflater(); - obj.addEventListener("message", function(event) { - var message = event.data; - - if (message.append) - obj.postMessage({ - onappend : true, - data : inflater.append(message.data, function(current) { - obj.postMessage({ - progress : true, - current : current - }); - }) - }); - if (message.flush) { - inflater.flush(); - obj.postMessage({ - onflush : true - }); - } - }, false); - } - -})(this); diff --git a/files_reader/js/libs/jquery.finger.0.1.2.js b/files_reader/js/libs/jquery.finger.0.1.2.js deleted file mode 100644 index b7048e2..0000000 --- a/files_reader/js/libs/jquery.finger.0.1.2.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jquery.finger - v0.1.2 - 2014-10-01 -* https://github.com/ngryman/jquery.finger -* Copyright (c) 2014 Nicolas Gryman; Licensed MIT */ -(function(e,t){function a(t){t.preventDefault(),e.event.remove(T,"click",a)}function n(e,t){return(p?t.originalEvent.touches[0]:t)["page"+e.toUpperCase()]}function r(t,n,r){var o=e.Event(n,b);e.event.trigger(o,{originalEvent:t},t.target),o.isDefaultPrevented()&&(~n.indexOf("tap")&&!p?e.event.add(T,"click",a):t.preventDefault()),r&&(e.event.remove(T,y+"."+D,i),e.event.remove(T,x+"."+D,d))}function o(t){var o=t.timeStamp||+new Date;v!=o&&(v=o,k.x=b.x=n("x",t),k.y=b.y=n("y",t),k.time=o,k.target=t.target,b.orientation=null,b.end=!1,u=!1,l=!1,c=setTimeout(function(){l=!0,r(t,"press")},e.Finger.pressDuration),e.event.add(T,y+"."+D,i),e.event.add(T,x+"."+D,d),w.preventDefault&&(t.preventDefault(),e.event.add(T,"click",a)))}function i(t){if(b.x=n("x",t),b.y=n("y",t),b.dx=b.x-k.x,b.dy=b.y-k.y,b.adx=Math.abs(b.dx),b.ady=Math.abs(b.dy),u=b.adx>w.motionThreshold||b.ady>w.motionThreshold){for(clearTimeout(c),b.orientation||(b.adx>b.ady?(b.orientation="horizontal",b.direction=b.dx>0?1:-1):(b.orientation="vertical",b.direction=b.dy>0?1:-1));t.target&&t.target!==k.target;)t.target=t.target.parentNode;return t.target!==k.target?(t.target=k.target,d.call(this,e.Event(x+"."+D,t)),void 0):(r(t,"drag"),void 0)}}function d(e){var t,a=e.timeStamp||+new Date,n=a-k.time;if(clearTimeout(c),u||l||e.target!==k.target)e.target=k.target,w.flickDuration>n&&r(e,"flick"),b.end=!0,t="drag";else{var o=g===e.target&&w.doubleTapInterval>a-s;t=o?"doubletap":"tap",g=o?null:k.target,s=a}r(e,t,!0)}var u,l,v,c,g,s,m=/chrome/i.exec(t),f=/android/i.exec(t),p="ontouchstart"in window&&!(m&&!f),h=p?"touchstart":"mousedown",x=p?"touchend touchcancel":"mouseup mouseleave",y=p?"touchmove":"mousemove",D="finger",T=e("html")[0],k={},b={},w=e.Finger={pressDuration:300,doubleTapInterval:300,flickDuration:150,motionThreshold:5};e.event.add(T,h+"."+D,o)})(jQuery,navigator.userAgent); diff --git a/files_reader/js/libs/mime-types.js b/files_reader/js/libs/mime-types.js deleted file mode 100644 index 382dfc4..0000000 --- a/files_reader/js/libs/mime-types.js +++ /dev/null @@ -1,1001 +0,0 @@ -/* - Copyright (c) 2013 Gildas Lormeau. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the distribution. - - 3. The names of the authors may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT, - INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -(function() { - 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" ] - } - }; - - var 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)) { - val = table[type][subtype]; - if (typeof val == "string") { - mimeTypes[val] = type + "/" + subtype; - } else { - for (index = 0; index < val.length; index++) { - mimeTypes[val[index]] = type + "/" + subtype; - } - } - } - } - } - } - return mimeTypes; - })(); - - zip.getMimeType = function(filename) { - var defaultValue = "application/octet-stream"; - return filename && mimeTypes[filename.split(".").pop().toLowerCase()] || defaultValue; - }; - -})(); diff --git a/files_reader/js/libs/zip-ext.js b/files_reader/js/libs/zip-ext.js deleted file mode 100644 index f0bacac..0000000 --- a/files_reader/js/libs/zip-ext.js +++ /dev/null @@ -1,241 +0,0 @@ -/* - Copyright (c) 2013 Gildas Lormeau. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the distribution. - - 3. The names of the authors may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT, - INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -(function() { - - var ERR_HTTP_RANGE = "HTTP Range not supported."; - - var Reader = zip.Reader; - var Writer = zip.Writer; - - var ZipDirectoryEntry; - - var appendABViewSupported; - try { - appendABViewSupported = new Blob([ new DataView(new ArrayBuffer(0)) ]).size === 0; - } catch (e) { - } - - function HttpReader(url) { - var that = this; - - function getData(callback, onerror) { - var request; - if (!that.data) { - request = new XMLHttpRequest(); - request.addEventListener("load", function() { - if (!that.size) - that.size = Number(request.getResponseHeader("Content-Length")); - that.data = new Uint8Array(request.response); - callback(); - }, false); - request.addEventListener("error", onerror, false); - request.open("GET", url); - request.responseType = "arraybuffer"; - request.send(); - } else - callback(); - } - - function init(callback, onerror) { - var request = new XMLHttpRequest(); - request.addEventListener("load", function() { - that.size = Number(request.getResponseHeader("Content-Length")); - callback(); - }, false); - request.addEventListener("error", onerror, false); - request.open("HEAD", url); - request.send(); - } - - function readUint8Array(index, length, callback, onerror) { - getData(function() { - callback(new Uint8Array(that.data.subarray(index, index + length))); - }, onerror); - } - - that.size = 0; - that.init = init; - that.readUint8Array = readUint8Array; - } - HttpReader.prototype = new Reader(); - HttpReader.prototype.constructor = HttpReader; - - function HttpRangeReader(url) { - var that = this; - - function init(callback, onerror) { - var request = new XMLHttpRequest(); - request.addEventListener("load", function() { - that.size = Number(request.getResponseHeader("Content-Length")); - if (request.getResponseHeader("Accept-Ranges") == "bytes") - callback(); - else - onerror(ERR_HTTP_RANGE); - }, false); - request.addEventListener("error", onerror, false); - request.open("HEAD", url); - request.send(); - } - - function readArrayBuffer(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); - }, false); - request.addEventListener("error", onerror, false); - request.send(); - } - - function readUint8Array(index, length, callback, onerror) { - readArrayBuffer(index, length, function(arraybuffer) { - callback(new Uint8Array(arraybuffer)); - }, onerror); - } - - that.size = 0; - that.init = init; - that.readUint8Array = readUint8Array; - } - HttpRangeReader.prototype = new Reader(); - HttpRangeReader.prototype.constructor = HttpRangeReader; - - function ArrayBufferReader(arrayBuffer) { - var that = this; - - function init(callback, onerror) { - that.size = arrayBuffer.byteLength; - callback(); - } - - function readUint8Array(index, length, callback, onerror) { - callback(new Uint8Array(arrayBuffer.slice(index, index + length))); - } - - that.size = 0; - that.init = init; - that.readUint8Array = readUint8Array; - } - ArrayBufferReader.prototype = new Reader(); - ArrayBufferReader.prototype.constructor = ArrayBufferReader; - - function ArrayBufferWriter() { - var array, that = this; - - function init(callback, onerror) { - array = new Uint8Array(); - callback(); - } - - function writeUint8Array(arr, callback, onerror) { - var tmpArray = new Uint8Array(array.length + arr.length); - tmpArray.set(array); - tmpArray.set(arr, array.length); - array = tmpArray; - callback(); - } - - function getData(callback) { - callback(array.buffer); - } - - that.init = init; - that.writeUint8Array = writeUint8Array; - that.getData = getData; - } - ArrayBufferWriter.prototype = new Writer(); - ArrayBufferWriter.prototype.constructor = ArrayBufferWriter; - - function FileWriter(fileEntry, contentType) { - var writer, that = this; - - function init(callback, onerror) { - fileEntry.createWriter(function(fileWriter) { - writer = fileWriter; - callback(); - }, onerror); - } - - function writeUint8Array(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); - } - - function getData(callback) { - fileEntry.file(callback); - } - - that.init = init; - that.writeUint8Array = writeUint8Array; - that.getData = getData; - } - FileWriter.prototype = new Writer(); - FileWriter.prototype.constructor = FileWriter; - - zip.FileWriter = FileWriter; - zip.HttpReader = HttpReader; - zip.HttpRangeReader = HttpRangeReader; - zip.ArrayBufferReader = ArrayBufferReader; - zip.ArrayBufferWriter = ArrayBufferWriter; - - if (zip.fs) { - ZipDirectoryEntry = zip.fs.ZipDirectoryEntry; - ZipDirectoryEntry.prototype.addHttpContent = function(name, URL, useRangeHeader) { - function addChild(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); - else - throw "Parent entry is not a directory."; - } - - return addChild(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); - }; - } - -})(); diff --git a/files_reader/js/libs/zip-fs.js b/files_reader/js/libs/zip-fs.js deleted file mode 100644 index 339bf66..0000000 --- a/files_reader/js/libs/zip-fs.js +++ /dev/null @@ -1,538 +0,0 @@ -/* - Copyright (c) 2013 Gildas Lormeau. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the distribution. - - 3. The names of the authors may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT, - INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -(function() { - - var CHUNK_SIZE = 512 * 1024; - - var 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 that = this, blobReader; - - function init(callback) { - this.size = entry.uncompressedSize; - callback(); - } - - function getData(callback) { - if (that.data) - callback(); - else - entry.getData(new BlobWriter(), function(data) { - that.data = data; - blobReader = new BlobReader(data); - callback(); - }, null, that.checkCrc32); - } - - function readUint8Array(index, length, callback, onerror) { - getData(function() { - blobReader.readUint8Array(index, length, callback, onerror); - }, onerror); - } - - that.size = 0; - that.init = init; - that.readUint8Array = readUint8Array; - } - ZipBlobReader.prototype = new Reader(); - ZipBlobReader.prototype.constructor = ZipBlobReader; - ZipBlobReader.prototype.checkCrc32 = false; - - function getTotalSize(entry) { - var size = 0; - - function process(entry) { - size += entry.uncompressedSize || 0; - entry.children.forEach(process); - } - - process(entry); - return size; - } - - function initReaders(entry, onend, onerror) { - var index = 0; - - function next() { - index++; - if (index < entry.children.length) - process(entry.children[index]); - else - onend(); - } - - function process(child) { - if (child.directory) - initReaders(child, next, onerror); - else { - child.reader = new child.Reader(child.data, onerror); - child.reader.init(function() { - child.uncompressedSize = child.reader.size; - next(); - }); - } - } - - if (entry.children.length) - process(entry.children[index]); - else - onend(); - } - - function detach(entry) { - var children = entry.parent.children; - children.forEach(function(child, index) { - if (child.id == entry.id) - children.splice(index, 1); - }); - } - - function exportZip(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]; - if (child) - zipWriter.add(child.getFullname(), child.reader, function() { - currentIndex += child.uncompressedSize || 0; - process(zipWriter, child, function() { - childIndex++; - exportChild(); - }, onprogress, totalSize); - }, function(index) { - if (onprogress) - onprogress(currentIndex + index, totalSize); - }, { - directory : child.directory, - version : child.zipVersion - }); - else - onend(); - } - - exportChild(); - } - - process(zipWriter, entry, onend, onprogress, totalSize); - } - - function addFileEntry(zipEntry, fileEntry, onend, onerror) { - function getChildren(fileEntry, callback) { - if (fileEntry.isDirectory) - fileEntry.createReader().readEntries(callback); - if (fileEntry.isFile) - callback([]); - } - - function process(zipEntry, fileEntry, onend) { - getChildren(fileEntry, function(children) { - var childIndex = 0; - - function addChild(child) { - function nextChild(childFileEntry) { - process(childFileEntry, child, function() { - childIndex++; - processChild(); - }); - } - - if (child.isDirectory) - nextChild(zipEntry.addDirectory(child.name)); - if (child.isFile) - child.file(function(file) { - var childZipEntry = zipEntry.addBlob(child.name, file); - childZipEntry.uncompressedSize = file.size; - nextChild(childZipEntry); - }, onerror); - } - - function processChild() { - var child = children[childIndex]; - if (child) - addChild(child); - else - onend(); - } - - processChild(); - }); - } - - if (fileEntry.isDirectory) - process(zipEntry, fileEntry, onend); - else - fileEntry.file(function(file) { - zipEntry.addBlob(fileEntry.name, file); - onend(); - }, onerror); - } - - function getFileEntry(fileEntry, entry, onend, onprogress, onerror, totalSize, checkCrc32) { - var currentIndex = 0; - - function process(fileEntry, entry, onend, onprogress, onerror, totalSize) { - var childIndex = 0; - - function addChild(child) { - function nextChild(childFileEntry) { - currentIndex += child.uncompressedSize || 0; - process(childFileEntry, child, function() { - childIndex++; - processChild(); - }, onprogress, onerror, totalSize); - } - - if (child.directory) - fileEntry.getDirectory(child.name, { - create : true - }, nextChild, onerror); - else - fileEntry.getFile(child.name, { - create : true - }, function(file) { - child.getData(new zip.FileWriter(file, zip.getMimeType(child.name)), nextChild, function(index) { - if (onprogress) - onprogress(currentIndex + index, totalSize); - }, checkCrc32); - }, onerror); - } - - function processChild() { - var child = entry.children[childIndex]; - if (child) - addChild(child); - else - onend(); - } - - processChild(); - } - - if (entry.directory) - process(fileEntry, entry, onend, onprogress, onerror, totalSize); - else - entry.getData(new zip.FileWriter(fileEntry, zip.getMimeType(entry.name)), onend, onprogress, checkCrc32); - } - - function resetFS(fs) { - fs.entries = []; - fs.root = new ZipDirectoryEntry(fs); - } - - function bufferedCopy(reader, writer, onend, onprogress, onerror) { - var chunkIndex = 0; - - function stepCopy() { - var index = chunkIndex * CHUNK_SIZE; - if (onprogress) - onprogress(index, reader.size); - if (index < reader.size) - reader.readUint8Array(index, Math.min(CHUNK_SIZE, reader.size - index), function(array) { - writer.writeUint8Array(new Uint8Array(array), function() { - chunkIndex++; - stepCopy(); - }); - }, onerror); - else - writer.getData(onend); - } - - stepCopy(); - } - - function getEntryData(writer, onend, onprogress, onerror) { - var that = this; - if (!writer || (writer.constructor == that.Writer && that.data)) - onend(that.data); - else { - if (!that.reader) - that.reader = new that.Reader(that.data, onerror); - that.reader.init(function() { - writer.init(function() { - bufferedCopy(that.reader, writer, onend, onprogress, onerror); - }, onerror); - }); - } - } - - 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); - else - throw "Parent entry is not a directory."; - } - - function ZipEntry() { - } - - ZipEntry.prototype = { - init : function(fs, name, params, parent) { - var that = this; - if (fs.root && parent && parent.getChildByName(name)) - throw "Entry filename already exists."; - if (!params) - params = {}; - that.fs = fs; - that.name = name; - that.id = fs.entries.length; - that.parent = parent; - that.children = []; - that.zipVersion = params.zipVersion || 0x14; - that.uncompressedSize = 0; - fs.entries.push(that); - if (parent) - that.parent.children.push(that); - }, - 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) { - var that = this; - if (target.directory) { - if (!target.isDescendantOf(that)) { - if (that != target) { - if (target.getChildByName(that.name)) - throw "Entry filename already exists."; - detach(that); - that.parent = target; - target.children.push(that); - } - } else - throw "Entry is a ancestor of target entry."; - } else - throw "Target entry is not a directory."; - }, - getFullname : function() { - var that = this, fullname = that.name, entry = that.parent; - while (entry) { - fullname = (entry.name ? entry.name + "/" : "") + fullname; - entry = entry.parent; - } - return fullname; - }, - isDescendantOf : function(ancestor) { - var entry = this.parent; - while (entry && entry.id != ancestor.id) - entry = entry.parent; - return !!entry; - } - }; - ZipEntry.prototype.constructor = ZipEntry; - - var ZipFileEntryProto; - - function ZipFileEntry(fs, name, params, parent) { - var that = this; - ZipEntry.prototype.init.call(that, fs, name, params, parent); - that.Reader = params.Reader; - that.Writer = params.Writer; - that.data = params.data; - that.getData = params.getData || getEntryData; - } - - ZipFileEntry.prototype = ZipFileEntryProto = new ZipEntry(); - ZipFileEntryProto.constructor = ZipFileEntry; - 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); - }; - - var ZipDirectoryEntryProto; - - function ZipDirectoryEntry(fs, name, params, parent) { - var that = this; - ZipEntry.prototype.init.call(that, fs, name, params, parent); - that.directory = true; - } - - ZipDirectoryEntry.prototype = ZipDirectoryEntryProto = new ZipEntry(); - ZipDirectoryEntryProto.constructor = ZipDirectoryEntry; - ZipDirectoryEntryProto.addDirectory = function(name) { - return addChild(this, name, null, true); - }; - 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); - }); - if (!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) { - exportZip(zipWriter, that, function() { - zipWriter.close(onend); - }, onprogress, getTotalSize(that)); - }, onerror); - }, onerror); - }; - ZipDirectoryEntryProto.getChildByName = function(name) { - var childIndex, child, that = this; - for (childIndex = 0; childIndex < that.children.length; childIndex++) { - child = that.children[childIndex]; - if (child.name == name) - return child; - } - }; - - function FS() { - resetFS(this); - } - 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"; - }; - -})(); diff --git a/files_reader/js/libs/zip.js b/files_reader/js/libs/zip.js deleted file mode 100644 index 655b0b9..0000000 --- a/files_reader/js/libs/zip.js +++ /dev/null @@ -1,801 +0,0 @@ -/* - Copyright (c) 2013 Gildas Lormeau. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the distribution. - - 3. The names of the authors may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT, - INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -(function(obj) { - - var ERR_BAD_FORMAT = "File format is not recognized."; - var ERR_ENCRYPTED = "File contains encrypted entry."; - var ERR_ZIP64 = "File is using Zip64 (4gb+ file size)."; - var ERR_READ = "Error while reading zip file."; - var ERR_WRITE = "Error while writing zip file."; - var ERR_WRITE_DATA = "Error while writing file data."; - var ERR_READ_DATA = "Error while reading file data."; - var ERR_DUPLICATED_NAME = "File already exists."; - var CHUNK_SIZE = 512 * 1024; - - var INFLATE_JS = "inflate.js"; - var DEFLATE_JS = "deflate.js"; - - var TEXT_PLAIN = "text/plain"; - - var MESSAGE_EVENT = "message"; - - var appendABViewSupported; - try { - appendABViewSupported = new Blob([ new DataView(new ArrayBuffer(0)) ]).size === 0; - } catch (e) { - } - - function Crc32() { - var crc = -1, that = this; - that.append = function(data) { - var offset, table = that.table; - for (offset = 0; offset < data.length; offset++) - crc = (crc >>> 8) ^ table[(crc ^ data[offset]) & 0xFF]; - }; - that.get = function() { - return ~crc; - }; - } - Crc32.prototype.table = (function() { - var i, j, t, table = []; - for (i = 0; i < 256; i++) { - t = i; - for (j = 0; j < 8; j++) - if (t & 1) - t = (t >>> 1) ^ 0xEDB88320; - else - t = t >>> 1; - table[i] = t; - } - return table; - })(); - - function blobSlice(blob, index, length) { - if (blob.slice) - return blob.slice(index, index + length); - else if (blob.webkitSlice) - return blob.webkitSlice(index, index + length); - else if (blob.mozSlice) - return blob.mozSlice(index, index + length); - else if (blob.msSlice) - return blob.msSlice(index, index + length); - } - - function getDataHelper(byteLength, bytes) { - var dataBuffer, dataArray; - dataBuffer = new ArrayBuffer(byteLength); - dataArray = new Uint8Array(dataBuffer); - if (bytes) - dataArray.set(bytes, 0); - return { - buffer : dataBuffer, - array : dataArray, - view : new DataView(dataBuffer) - }; - } - - // Readers - function Reader() { - } - - function TextReader(text) { - var that = this, blobReader; - - function init(callback, onerror) { - var blob = new Blob([ text ], { - type : TEXT_PLAIN - }); - blobReader = new BlobReader(blob); - blobReader.init(function() { - that.size = blobReader.size; - callback(); - }, onerror); - } - - function readUint8Array(index, length, callback, onerror) { - blobReader.readUint8Array(index, length, callback, onerror); - } - - that.size = 0; - that.init = init; - that.readUint8Array = readUint8Array; - } - TextReader.prototype = new Reader(); - TextReader.prototype.constructor = TextReader; - - function Data64URIReader(dataURI) { - var that = this, dataStart; - - function init(callback) { - var dataEnd = dataURI.length; - while (dataURI.charAt(dataEnd - 1) == "=") - dataEnd--; - dataStart = dataURI.indexOf(",") + 1; - that.size = Math.floor((dataEnd - dataStart) * 0.75); - callback(); - } - - function readUint8Array(index, length, callback) { - var i, data = getDataHelper(length); - var start = Math.floor(index / 3) * 4; - var end = Math.ceil((index + length) / 3) * 4; - var bytes = obj.atob(dataURI.substring(start + dataStart, end + dataStart)); - var delta = index - Math.floor(start / 4) * 3; - for (i = delta; i < delta + length; i++) - data.array[i - delta] = bytes.charCodeAt(i); - callback(data.array); - } - - that.size = 0; - that.init = init; - that.readUint8Array = readUint8Array; - } - Data64URIReader.prototype = new Reader(); - Data64URIReader.prototype.constructor = Data64URIReader; - - function BlobReader(blob) { - var that = this; - - function init(callback) { - this.size = blob.size; - callback(); - } - - function readUint8Array(index, length, callback, onerror) { - var reader = new FileReader(); - reader.onload = function(e) { - callback(new Uint8Array(e.target.result)); - }; - reader.onerror = onerror; - reader.readAsArrayBuffer(blobSlice(blob, index, length)); - } - - that.size = 0; - that.init = init; - that.readUint8Array = readUint8Array; - } - BlobReader.prototype = new Reader(); - BlobReader.prototype.constructor = BlobReader; - - // Writers - - function Writer() { - } - Writer.prototype.getData = function(callback) { - callback(this.data); - }; - - function TextWriter(encoding) { - var that = this, blob; - - function init(callback) { - blob = new Blob([], { - type : TEXT_PLAIN - }); - callback(); - } - - function writeUint8Array(array, callback) { - blob = new Blob([ blob, appendABViewSupported ? array : array.buffer ], { - type : TEXT_PLAIN - }); - callback(); - } - - function getData(callback, onerror) { - var reader = new FileReader(); - reader.onload = function(e) { - callback(e.target.result); - }; - reader.onerror = onerror; - reader.readAsText(blob, encoding); - } - - that.init = init; - that.writeUint8Array = writeUint8Array; - that.getData = getData; - } - TextWriter.prototype = new Writer(); - TextWriter.prototype.constructor = TextWriter; - - function Data64URIWriter(contentType) { - var that = this, data = "", pending = ""; - - function init(callback) { - data += "data:" + (contentType || "") + ";base64,"; - callback(); - } - - function writeUint8Array(array, callback) { - var i, delta = pending.length, dataString = pending; - pending = ""; - for (i = 0; i < (Math.floor((delta + array.length) / 3) * 3) - delta; i++) - dataString += String.fromCharCode(array[i]); - for (; i < array.length; i++) - pending += String.fromCharCode(array[i]); - if (dataString.length > 2) - data += obj.btoa(dataString); - else - pending = dataString; - callback(); - } - - function getData(callback) { - callback(data + obj.btoa(pending)); - } - - that.init = init; - that.writeUint8Array = writeUint8Array; - that.getData = getData; - } - Data64URIWriter.prototype = new Writer(); - Data64URIWriter.prototype.constructor = Data64URIWriter; - - function BlobWriter(contentType) { - var blob, that = this; - - function init(callback) { - blob = new Blob([], { - type : contentType - }); - callback(); - } - - function writeUint8Array(array, callback) { - blob = new Blob([ blob, appendABViewSupported ? array : array.buffer ], { - type : contentType - }); - callback(); - } - - function getData(callback) { - callback(blob); - } - - that.init = init; - that.writeUint8Array = writeUint8Array; - that.getData = getData; - } - BlobWriter.prototype = new Writer(); - BlobWriter.prototype.constructor = BlobWriter; - - // inflate/deflate core functions - - function launchWorkerProcess(worker, reader, writer, offset, size, onappend, onprogress, onend, onreaderror, onwriteerror) { - var chunkIndex = 0, index, outputSize; - - function onflush() { - worker.removeEventListener(MESSAGE_EVENT, onmessage, false); - onend(outputSize); - } - - function onmessage(event) { - var message = event.data, data = message.data; - - if (message.onappend) { - outputSize += data.length; - writer.writeUint8Array(data, function() { - onappend(false, data); - step(); - }, onwriteerror); - } - if (message.onflush) - if (data) { - outputSize += data.length; - writer.writeUint8Array(data, function() { - onappend(false, data); - onflush(); - }, onwriteerror); - } else - onflush(); - if (message.progress && onprogress) - onprogress(index + message.current, size); - } - - function step() { - index = chunkIndex * CHUNK_SIZE; - if (index < size) - reader.readUint8Array(offset + index, Math.min(CHUNK_SIZE, size - index), function(array) { - worker.postMessage({ - append : true, - data : array - }); - chunkIndex++; - if (onprogress) - onprogress(index, size); - onappend(true, array); - }, onreaderror); - else - worker.postMessage({ - flush : true - }); - } - - outputSize = 0; - worker.addEventListener(MESSAGE_EVENT, onmessage, false); - step(); - } - - function launchProcess(process, reader, writer, offset, size, onappend, onprogress, onend, onreaderror, onwriteerror) { - var chunkIndex = 0, index, outputSize = 0; - - function step() { - var outputData; - index = chunkIndex * CHUNK_SIZE; - if (index < size) - reader.readUint8Array(offset + index, Math.min(CHUNK_SIZE, size - index), function(inputData) { - var outputData = process.append(inputData, function() { - if (onprogress) - onprogress(offset + index, size); - }); - outputSize += outputData.length; - onappend(true, inputData); - writer.writeUint8Array(outputData, function() { - onappend(false, outputData); - chunkIndex++; - setTimeout(step, 1); - }, onwriteerror); - if (onprogress) - onprogress(index, size); - }, onreaderror); - else { - outputData = process.flush(); - if (outputData) { - outputSize += outputData.length; - writer.writeUint8Array(outputData, function() { - onappend(false, outputData); - onend(outputSize); - }, onwriteerror); - } else - onend(outputSize); - } - } - - step(); - } - - function inflate(reader, writer, offset, size, computeCrc32, onend, onprogress, onreaderror, onwriteerror) { - var worker, crc32 = new Crc32(); - - function oninflateappend(sending, array) { - if (computeCrc32 && !sending) - crc32.append(array); - } - - function oninflateend(outputSize) { - onend(outputSize, crc32.get()); - } - - if (obj.zip.useWebWorkers) { - worker = new Worker(obj.zip.workerScriptsPath + INFLATE_JS); - launchWorkerProcess(worker, reader, writer, offset, size, oninflateappend, onprogress, oninflateend, onreaderror, onwriteerror); - } else - launchProcess(new obj.zip.Inflater(), reader, writer, offset, size, oninflateappend, onprogress, oninflateend, onreaderror, onwriteerror); - return worker; - } - - function deflate(reader, writer, level, onend, onprogress, onreaderror, onwriteerror) { - var worker, crc32 = new Crc32(); - - function ondeflateappend(sending, array) { - if (sending) - crc32.append(array); - } - - function ondeflateend(outputSize) { - onend(outputSize, crc32.get()); - } - - function onmessage() { - worker.removeEventListener(MESSAGE_EVENT, onmessage, false); - launchWorkerProcess(worker, reader, writer, 0, reader.size, ondeflateappend, onprogress, ondeflateend, onreaderror, onwriteerror); - } - - if (obj.zip.useWebWorkers) { - worker = new Worker(obj.zip.workerScriptsPath + DEFLATE_JS); - worker.addEventListener(MESSAGE_EVENT, onmessage, false); - worker.postMessage({ - init : true, - level : level - }); - } else - launchProcess(new obj.zip.Deflater(), reader, writer, 0, reader.size, ondeflateappend, onprogress, ondeflateend, onreaderror, onwriteerror); - return worker; - } - - function copy(reader, writer, offset, size, computeCrc32, onend, onprogress, onreaderror, onwriteerror) { - var chunkIndex = 0, crc32 = new Crc32(); - - function step() { - var index = chunkIndex * CHUNK_SIZE; - if (index < size) - reader.readUint8Array(offset + index, Math.min(CHUNK_SIZE, size - index), function(array) { - if (computeCrc32) - crc32.append(array); - if (onprogress) - onprogress(index, size, array); - writer.writeUint8Array(array, function() { - chunkIndex++; - step(); - }, onwriteerror); - }, onreaderror); - else - onend(size, crc32.get()); - } - - step(); - } - - // ZipReader - - function decodeASCII(str) { - var i, out = "", charCode, extendedASCII = [ '\u00C7', '\u00FC', '\u00E9', '\u00E2', '\u00E4', '\u00E0', '\u00E5', '\u00E7', '\u00EA', '\u00EB', - '\u00E8', '\u00EF', '\u00EE', '\u00EC', '\u00C4', '\u00C5', '\u00C9', '\u00E6', '\u00C6', '\u00F4', '\u00F6', '\u00F2', '\u00FB', '\u00F9', - '\u00FF', '\u00D6', '\u00DC', '\u00F8', '\u00A3', '\u00D8', '\u00D7', '\u0192', '\u00E1', '\u00ED', '\u00F3', '\u00FA', '\u00F1', '\u00D1', - '\u00AA', '\u00BA', '\u00BF', '\u00AE', '\u00AC', '\u00BD', '\u00BC', '\u00A1', '\u00AB', '\u00BB', '_', '_', '_', '\u00A6', '\u00A6', - '\u00C1', '\u00C2', '\u00C0', '\u00A9', '\u00A6', '\u00A6', '+', '+', '\u00A2', '\u00A5', '+', '+', '-', '-', '+', '-', '+', '\u00E3', - '\u00C3', '+', '+', '-', '-', '\u00A6', '-', '+', '\u00A4', '\u00F0', '\u00D0', '\u00CA', '\u00CB', '\u00C8', 'i', '\u00CD', '\u00CE', - '\u00CF', '+', '+', '_', '_', '\u00A6', '\u00CC', '_', '\u00D3', '\u00DF', '\u00D4', '\u00D2', '\u00F5', '\u00D5', '\u00B5', '\u00FE', - '\u00DE', '\u00DA', '\u00DB', '\u00D9', '\u00FD', '\u00DD', '\u00AF', '\u00B4', '\u00AD', '\u00B1', '_', '\u00BE', '\u00B6', '\u00A7', - '\u00F7', '\u00B8', '\u00B0', '\u00A8', '\u00B7', '\u00B9', '\u00B3', '\u00B2', '_', ' ' ]; - for (i = 0; i < str.length; i++) { - charCode = str.charCodeAt(i) & 0xFF; - if (charCode > 127) - out += extendedASCII[charCode - 128]; - else - out += 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 getDate(timeRaw) { - var date = (timeRaw & 0xffff0000) >> 16, time = timeRaw & 0x0000ffff; - try { - return new Date(1980 + ((date & 0xFE00) >> 9), ((date & 0x01E0) >> 5) - 1, date & 0x001F, (time & 0xF800) >> 11, (time & 0x07E0) >> 5, - (time & 0x001F) * 2, 0); - } catch (e) { - } - } - - function readCommonHeader(entry, data, index, centralDirectory, onerror) { - entry.version = data.view.getUint16(index, true); - entry.bitFlag = data.view.getUint16(index + 2, true); - entry.compressionMethod = data.view.getUint16(index + 4, true); - entry.lastModDateRaw = data.view.getUint32(index + 6, true); - entry.lastModDate = getDate(entry.lastModDateRaw); - if ((entry.bitFlag & 0x01) === 0x01) { - onerror(ERR_ENCRYPTED); - return; - } - if (centralDirectory || (entry.bitFlag & 0x0008) != 0x0008) { - entry.crc32 = data.view.getUint32(index + 10, true); - entry.compressedSize = data.view.getUint32(index + 14, true); - entry.uncompressedSize = data.view.getUint32(index + 18, true); - } - if (entry.compressedSize === 0xFFFFFFFF || entry.uncompressedSize === 0xFFFFFFFF) { - onerror(ERR_ZIP64); - return; - } - entry.filenameLength = data.view.getUint16(index + 22, true); - entry.extraFieldLength = data.view.getUint16(index + 24, true); - } - - function createZipReader(reader, onerror) { - function Entry() { - } - - Entry.prototype.getData = function(writer, onend, onprogress, checkCrc32) { - var that = this, worker; - - function terminate(callback, param) { - if (worker) - worker.terminate(); - worker = null; - if (callback) - callback(param); - } - - function testCrc32(crc32) { - var dataCrc32 = getDataHelper(4); - dataCrc32.view.setUint32(0, crc32); - return that.crc32 == dataCrc32.view.getUint32(0); - } - - function getWriterData(uncompressedSize, crc32) { - if (checkCrc32 && !testCrc32(crc32)) - onreaderror(); - else - writer.getData(function(data) { - terminate(onend, data); - }); - } - - function onreaderror() { - terminate(onerror, ERR_READ_DATA); - } - - function onwriteerror() { - terminate(onerror, ERR_WRITE_DATA); - } - - reader.readUint8Array(that.offset, 30, function(bytes) { - var data = getDataHelper(bytes.length, bytes), dataOffset; - if (data.view.getUint32(0) != 0x504b0304) { - onerror(ERR_BAD_FORMAT); - return; - } - readCommonHeader(that, data, 4, false, onerror); - dataOffset = that.offset + 30 + that.filenameLength + that.extraFieldLength; - writer.init(function() { - if (that.compressionMethod === 0) - copy(reader, writer, dataOffset, that.compressedSize, checkCrc32, getWriterData, onprogress, onreaderror, onwriteerror); - else - worker = inflate(reader, writer, dataOffset, that.compressedSize, checkCrc32, getWriterData, onprogress, onreaderror, onwriteerror); - }, onwriteerror); - }, onreaderror); - }; - - function seekEOCDR(offset, entriesCallback) { - reader.readUint8Array(reader.size - offset, offset, function(bytes) { - var dataView = getDataHelper(bytes.length, bytes).view; - if (dataView.getUint32(0) != 0x504b0506) { - seekEOCDR(offset + 1, entriesCallback); - } else { - entriesCallback(dataView); - } - }, function() { - onerror(ERR_READ); - }); - } - - return { - getEntries : function(callback) { - if (reader.size < 22) { - onerror(ERR_BAD_FORMAT); - return; - } - // look for End of central directory record - seekEOCDR(22, function(dataView) { - var datalength, fileslength; - datalength = dataView.getUint32(16, true); - fileslength = dataView.getUint16(8, true); - reader.readUint8Array(datalength, reader.size - datalength, function(bytes) { - var i, index = 0, entries = [], entry, filename, comment, data = getDataHelper(bytes.length, bytes); - for (i = 0; i < fileslength; i++) { - entry = new Entry(); - if (data.view.getUint32(index) != 0x504b0102) { - onerror(ERR_BAD_FORMAT); - return; - } - readCommonHeader(entry, data, index + 6, true, onerror); - entry.commentLength = data.view.getUint16(index + 32, true); - entry.directory = ((data.view.getUint8(index + 38) & 0x10) == 0x10); - entry.offset = data.view.getUint32(index + 42, true); - filename = getString(data.array.subarray(index + 46, index + 46 + entry.filenameLength)); - entry.filename = ((entry.bitFlag & 0x0800) === 0x0800) ? decodeUTF8(filename) : decodeASCII(filename); - if (!entry.directory && entry.filename.charAt(entry.filename.length - 1) == "/") - entry.directory = true; - comment = getString(data.array.subarray(index + 46 + entry.filenameLength + entry.extraFieldLength, index + 46 - + entry.filenameLength + entry.extraFieldLength + entry.commentLength)); - entry.comment = ((entry.bitFlag & 0x0800) === 0x0800) ? decodeUTF8(comment) : decodeASCII(comment); - entries.push(entry); - index += 46 + entry.filenameLength + entry.extraFieldLength + entry.commentLength; - } - callback(entries); - }, function() { - onerror(ERR_READ); - }); - }); - }, - close : function(callback) { - if (callback) - callback(); - } - }; - } - - // ZipWriter - - 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, onerror, dontDeflate) { - var worker, files = {}, filenames = [], datalength = 0; - - function terminate(callback, message) { - if (worker) - worker.terminate(); - worker = null; - if (callback) - callback(message); - } - - function onwriteerror() { - terminate(onerror, ERR_WRITE); - } - - function onreaderror() { - terminate(onerror, ERR_READ_DATA); - } - - return { - add : function(name, reader, onend, onprogress, options) { - var header, filename, date; - - function writeHeader(callback) { - var data; - 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, 0x14000808); - if (options.version) - header.view.setUint8(0, options.version); - if (!dontDeflate && options.level !== 0 && !options.directory) - header.view.setUint16(4, 0x0800); - header.view.setUint16(6, (((date.getHours() << 6) | date.getMinutes()) << 5) | date.getSeconds() / 2, true); - header.view.setUint16(8, ((((date.getFullYear() - 1980) << 4) | (date.getMonth() + 1)) << 5) | date.getDate(), true); - header.view.setUint16(22, filename.length, true); - data = getDataHelper(30 + filename.length); - data.view.setUint32(0, 0x504b0304); - data.array.set(header.array, 4); - data.array.set(filename, 30); - datalength += data.array.length; - writer.writeUint8Array(data.array, callback, onwriteerror); - } - - function writeFooter(compressedLength, crc32) { - var footer = getDataHelper(16); - datalength += compressedLength || 0; - footer.view.setUint32(0, 0x504b0708); - if (typeof crc32 != "undefined") { - header.view.setUint32(10, crc32, true); - footer.view.setUint32(4, crc32, true); - } - if (reader) { - footer.view.setUint32(8, compressedLength, true); - header.view.setUint32(14, compressedLength, true); - footer.view.setUint32(12, reader.size, true); - header.view.setUint32(18, reader.size, true); - } - writer.writeUint8Array(footer.array, function() { - datalength += 16; - terminate(onend); - }, onwriteerror); - } - - function writeFile() { - options = options || {}; - name = name.trim(); - if (options.directory && name.charAt(name.length - 1) != "/") - name += "/"; - if (files.hasOwnProperty(name)) { - onerror(ERR_DUPLICATED_NAME); - return; - } - filename = getBytes(encodeUTF8(name)); - filenames.push(name); - writeHeader(function() { - if (reader) - if (dontDeflate || options.level === 0) - copy(reader, writer, 0, reader.size, true, writeFooter, onprogress, onreaderror, onwriteerror); - else - worker = deflate(reader, writer, options.level, writeFooter, onprogress, onreaderror, onwriteerror); - else - writeFooter(); - }, onwriteerror); - } - - if (reader) - reader.init(writeFile, onreaderror); - else - writeFile(); - }, - close : function(callback) { - var data, length = 0, index = 0, indexFilename, file; - for (indexFilename = 0; indexFilename < filenames.length; indexFilename++) { - file = files[filenames[indexFilename]]; - length += 46 + file.filename.length + file.comment.length; - } - data = getDataHelper(length + 22); - for (indexFilename = 0; indexFilename < filenames.length; indexFilename++) { - file = files[filenames[indexFilename]]; - data.view.setUint32(index, 0x504b0102); - data.view.setUint16(index + 4, 0x1400); - data.array.set(file.headerArray, index + 6); - data.view.setUint16(index + 32, file.comment.length, true); - if (file.directory) - data.view.setUint8(index + 38, 0x10); - data.view.setUint32(index + 42, file.offset, true); - 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, 0x504b0506); - data.view.setUint16(index + 8, filenames.length, true); - data.view.setUint16(index + 10, filenames.length, true); - data.view.setUint32(index + 12, length, true); - data.view.setUint32(index + 16, datalength, true); - writer.writeUint8Array(data.array, function() { - terminate(function() { - writer.getData(callback); - }); - }, onwriteerror); - } - }; - } - - obj.zip = { - Reader : Reader, - Writer : Writer, - BlobReader : BlobReader, - Data64URIReader : Data64URIReader, - TextReader : TextReader, - BlobWriter : BlobWriter, - Data64URIWriter : Data64URIWriter, - TextWriter : TextWriter, - createReader : function(reader, callback, onerror) { - reader.init(function() { - callback(createZipReader(reader, onerror)); - }, onerror); - }, - createWriter : function(writer, callback, onerror, dontDeflate) { - writer.init(function() { - callback(createZipWriter(writer, onerror, dontDeflate)); - }, onerror); - }, - workerScriptsPath : "", - useWebWorkers : true - }; - -})(this); diff --git a/files_reader/js/loader.js b/files_reader/js/loader.js deleted file mode 100644 index beca92b..0000000 --- a/files_reader/js/loader.js +++ /dev/null @@ -1,85 +0,0 @@ -var READER = function() { - - var isMobile = navigator.userAgent.match(/Mobi/i); - var hasTouch = 'ontouchstart' in document.documentElement; - - var sharingToken = null; - - function hideReader() { - FileList.setViewerMode(false); - $("#controls").show(); - $('#app-content #controls').removeClass('hidden'); - $('iframe').remove(); - } - - function hideControls() { - $('#app-content #controls').hide(); - } - - function showReader(dir, filename, share) { - if (!showReader.shown) { - if (share === 'undefined') - share = ''; - var viewer = OC.linkTo('files_reader', 'viewer.php') + '?dir=' + encodeURIComponent(dir).replace(/%2F/g, '/') + '&file=' + encodeURIComponent(filename.replace('&', '%26')) + '&share=' + encodeURIComponent(share); - if (isMobile || hasTouch) - window.open(viewer, dir + '/' + filename); - else { - $iframe = '