| (function (w) { | 
|   "use strict"; | 
|   | 
|   function findBest(atobNative) { | 
|     // normal window | 
|     if ('function' === typeof atobNative) { return atobNative; } | 
|   | 
|   | 
|     // browserify (web worker) | 
|     if ('function' === typeof Buffer) { | 
|       return function atobBrowserify(a) { | 
|         //!! Deliberately using an API that's deprecated in node.js because | 
|         //!! this file is for browsers and we expect them to cope with it. | 
|         //!! Discussion: github.com/node-browser-compat/atob/pull/9 | 
|         return new Buffer(a, 'base64').toString('binary'); | 
|       }; | 
|     } | 
|   | 
|     // ios web worker with base64js | 
|     if ('object' === typeof w.base64js) { | 
|       // bufferToBinaryString | 
|       // https://git.coolaj86.com/coolaj86/unibabel.js/blob/master/index.js#L50 | 
|       return function atobWebWorker_iOS(a) { | 
|         var buf = w.base64js.b64ToByteArray(a); | 
|         return Array.prototype.map.call(buf, function (ch) { | 
|           return String.fromCharCode(ch); | 
|         }).join(''); | 
|       }; | 
|     } | 
|   | 
|         return function () { | 
|             // ios web worker without base64js | 
|             throw new Error("You're probably in an old browser or an iOS webworker." + | 
|                 " It might help to include beatgammit's base64-js."); | 
|     }; | 
|   } | 
|   | 
|   var atobBest = findBest(w.atob); | 
|   w.atob = atobBest; | 
|   | 
|   if ((typeof module === 'object') && module && module.exports) { | 
|     module.exports = atobBest; | 
|   } | 
| }(window)); |